summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Cowering <cowering@users.noreply.github.com>2014-10-27 14:19:44 -0500
committer Cowering <cowering@users.noreply.github.com>2014-10-27 14:19:44 -0500
commit4339d70e9c3fe3ee3f4a58fdfdc69bcd1ee31cc5 (patch)
treea4cac4269d724318a9b8d474ceafcd2bd4e2add3
parent10053c0b01382c84d4bdc8339362a8147ef3c1c6 (diff)
parentf13b94d7c68919c3815d9f69fa2f13fc1f34a943 (diff)
Merge branch 'master' of https://github.com/mamedev/mame
-rw-r--r--hash/intv.xml357
-rw-r--r--hash/intvecs.xml19
-rw-r--r--hash/pet_cass.xml1201
-rw-r--r--src/emu/bus/isa/hdc.c16
-rw-r--r--src/emu/bus/isa/hdc.h14
-rw-r--r--src/emu/bus/isa/xsu_cards.c2
-rw-r--r--src/emu/cpu/i386/i386.c20
-rw-r--r--src/emu/cpu/i386/i386.h4
-rw-r--r--src/emu/cpu/i386/i386ops.h1008
-rw-r--r--src/emu/cpu/i386/i386ops.inc2
-rw-r--r--src/mame/drivers/jackie.c2
-rw-r--r--src/mame/drivers/konamigx.c215
-rw-r--r--src/mame/drivers/mystwarr.c2
-rw-r--r--src/mame/drivers/peplus.c152
-rw-r--r--src/mame/includes/konamigx.h118
-rw-r--r--src/mame/machine/konamigx.c84
-rw-r--r--src/mame/video/konamigx.c437
17 files changed, 2558 insertions, 1095 deletions
diff --git a/hash/intv.xml b/hash/intv.xml
index 0fdfe80fb07..6dd05d4c996 100644
--- a/hash/intv.xml
+++ b/hash/intv.xml
@@ -26,8 +26,8 @@
</part>
</software>
- <software name="addc">
- <description>Advanced Dungeons &amp; Dragons Cartridge</description>
+ <software name="add">
+ <description>Advanced Dungeons &amp; Dragons</description>
<year>1982</year>
<publisher>Mattel Electronics</publisher>
<info name="serial" value="3410"/>
@@ -40,7 +40,7 @@
</software>
<software name="addtot">
- <description>Advanced Dungeons &amp; Dragons: Treasure of Tarmin</description>
+ <description>Advanced Dungeons &amp; Dragons - Treasure of Tarmin</description>
<year>1982</year>
<publisher>Mattel Electronics</publisher>
<info name="serial" value="5300"/>
@@ -65,8 +65,8 @@
</part>
</software>
- <software name="astrosm">
- <description>Astro Smash</description>
+ <software name="astrosms">
+ <description>AstroSmash</description>
<year>1981</year>
<publisher>Mattel Electronics</publisher>
<info name="serial" value="3605"/>
@@ -78,6 +78,18 @@
</part>
</software>
+ <software name="astrosmsc" cloneof="astrosms">
+ <description>AstroSmash Competition</description>
+ <year>1981</year>
+ <publisher>Mattel Electronics</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="8192">
+ <rom name="astrosmash competition.50" size="8192" crc="d0f83698" sha1="fbb2df69cfda87976cf279be6ad028e00c47ce9d" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
<software name="atlantis">
<description>Atlantis</description>
<year>1982</year>
@@ -1756,7 +1768,7 @@
<software name="voice">
<description>Intellivoice</description>
<year>19??</year>
- <publisher>Mattel</publisher>
+ <publisher>Mattel Electronics</publisher>
<part name="cart" interface="intv_cart">
<feature name="slot" value="intv_voice" />
<dataarea name="5000" size="0x4000">
@@ -1769,7 +1781,7 @@
<software name="ecs">
<description>Entertainment Computer System</description>
<year>19??</year>
- <publisher>Mattel</publisher>
+ <publisher>Mattel Electronics</publisher>
<part name="cart" interface="intv_cart">
<feature name="slot" value="intv_ecs" />
<dataarea name="2000" size="0x2000">
@@ -1790,17 +1802,35 @@
<!-- Unreleased / Prototypes / Homebrew -->
- <software name="allstar">
- <description>All Star Major League Baseball (Prototype)</description>
+ <software name="addtom">
+ <description>Advanced Dungeons &amp; Dragons - Tower of Mystery (Unreleased)</description>
<year>1983</year>
<publisher>Mattel Electronics</publisher>
<part name="cart" interface="intv_cart">
<feature name="slot" value="intv_rom" />
- <dataarea name="5000" size="0x4000">
- <rom name="all star major league baseball.50" size="0x4000" crc="4a7e080a" sha1="ee2edd084c371d39dfcd725ed4aa5679e0c34a27" offset="0x0000"/>
+ <dataarea name="5000" size="16384">
+ <rom name="ad&amp;d tower of mystery.50" size="16384" crc="4d7022c4" sha1="968875dbb5c9af72b746cde4f9a6dc4677d8aceb" offset="0x0000" />
</dataarea>
- <dataarea name="D000" size="0x2000">
- <rom name="all star major league baseball.d0" size="0x2000" crc="31325854" sha1="fe7b5f3969e214ac23d20c5c137dc23f4515108d" offset="0x0000"/>
+ <dataarea name="9000" size="16384">
+ <rom name="ad&amp;d tower of mystery.90" size="16384" crc="69ea443d" sha1="5348845531a326cf66991697c55efd9287b4874b" offset="0x0000" />
+ </dataarea>
+ <dataarea name="D000" size="8192">
+ <rom name="ad&amp;d tower of mystery.d0" size="8192" crc="35f27a1e" sha1="2cfdee85347c1226c48d15cdfd6b8819136db130" offset="0x0000" />
+ </dataarea>
+ <dataarea name="F000" size="8192">
+ <rom name="ad&amp;d tower of mystery.f0" size="8192" crc="c60bb7f6" sha1="9f53d330453807c18dcb4c0ed37ad0e77251213a" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="advtron">
+ <description>Adventures of TRON (Unreleased)</description>
+ <year>1982</year>
+ <publisher>Mattel Electronics</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="16384">
+ <rom name="adventures of tron.50" size="16384" crc="5a144835" sha1="c2125776338cbce61aabce80fbdb911a9814e564" offset="0x0000" />
</dataarea>
</part>
</software>
@@ -1817,6 +1847,21 @@
</part>
</software>
+ <software name="allstar">
+ <description>All Star Major League Baseball (Prototype)</description>
+ <year>1983</year>
+ <publisher>Mattel Electronics</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="0x4000">
+ <rom name="all star major league baseball.50" size="0x4000" crc="4a7e080a" sha1="ee2edd084c371d39dfcd725ed4aa5679e0c34a27" offset="0x0000"/>
+ </dataarea>
+ <dataarea name="D000" size="0x2000">
+ <rom name="all star major league baseball.d0" size="0x2000" crc="31325854" sha1="fe7b5f3969e214ac23d20c5c137dc23f4515108d" offset="0x0000"/>
+ </dataarea>
+ </part>
+ </software>
+
<software name="brickout">
<description>Brickout! (Unreleased)</description>
<year>1981</year>
@@ -1919,6 +1964,24 @@
</part>
</software>
+ <software name="hvrfor3d">
+ <description>Hover Force 3D (Unreleased)</description>
+ <year>1984</year>
+ <publisher>Mattel Electronics</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="16384">
+ <rom name="hover force_3d.50" size="16384" crc="37772f79" sha1="fa8f02330397fc47665e727fb7f214b551130b29" offset="0x0000" />
+ </dataarea>
+ <dataarea name="9000" size="24576">
+ <rom name="hover force_3d.90" size="24576" crc="1cf011ef" sha1="5cfc7a9bb09937d499b3cdfd5e84a3e975f543a6" offset="0x0000" />
+ </dataarea>
+ <dataarea name="D000" size="8192">
+ <rom name="hover force_3d.d0" size="8192" crc="d6e96ddc" sha1="2833c891028772d2a3acf23dce67e3cd597d486f" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
<software name="hlights">
<description>Hypnotic Lights (Prototype)</description>
<year>1981</year>
@@ -1931,6 +1994,18 @@
</part>
</software>
+ <software name="illusion">
+ <description>Illusions (Unreleased)</description>
+ <year>1983</year>
+ <publisher>Mattel Electronics</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="16384">
+ <rom name="illusions.50" size="16384" crc="851f3ccb" sha1="fd7bb50812e207b03295ff2abf973b935a0d28de" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
<software name="kingotm">
<description>King of the Mountain (Unreleased)</description>
<year>1982</year>
@@ -2000,6 +2075,21 @@
</part>
</software>
+ <software name="mycastle" cloneof="thcastle">
+ <description>Mystic Castle (Prototype)</description>
+ <year>1982</year>
+ <publisher>Mattel Electronics</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="16384">
+ <rom name="mystic castle.50" size="16384" crc="7751256b" sha1="73f61c7dce233a605c8cecd49aec13b1d5985315" offset="0x0000" />
+ </dataarea>
+ <dataarea name="9000" size="16384">
+ <rom name="mystic castle.90" size="16384" crc="4acbeb19" sha1="65c2ec11e5d1a9d8d8f2e044428cbf5bf2022532" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
<software name="blowout">
<description>Party Line: Blow Out (Unreleased)</description>
<year>1983</year>
@@ -2015,6 +2105,21 @@
</part>
</software>
+ <software name="blowouta" cloneof="blowout">
+ <description>Party Line: Blow Out (Unreleased, Alt)</description>
+ <year>1983</year>
+ <publisher>Mattel Electronics</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="0x2000">
+ <rom name="blowouta.50" size="0x2000" crc="25b7aa92" sha1="a232a43407bfa5781b30c5afded8df4af75e1788" offset="0x0000"/>
+ </dataarea>
+ <dataarea name="D000" size="0x2000">
+ <rom name="blowouta.d0" size="0x2000" crc="b7e29589" sha1="4e1b1c2bf93952d52827b13752e61584a66672ea" offset="0x0000"/>
+ </dataarea>
+ </part>
+ </software>
+
<software name="hardhat">
<description>Party Line: Hard Hat (Unreleased)</description>
<year>1983</year>
@@ -2027,6 +2132,18 @@
</part>
</software>
+ <software name="spacecad">
+ <description>Party Line: Space Cadet (Unreleased)</description>
+ <year>1983</year>
+ <publisher>Mattel Electronics</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="0x4000">
+ <rom name="space cadet.50" size="0x4000" crc="f8ef3e5a" sha1="f3cfbe285a12194ef2f6087fc70d0ed887c4ec91" offset="0x0000"/>
+ </dataarea>
+ </part>
+ </software>
+
<software name="rrubble">
<description>Robot Rubble (Prototype)</description>
<year>1983</year>
@@ -2039,14 +2156,44 @@
</part>
</software>
- <software name="spacecad">
- <description>Party Line: Space Cadet (Unreleased)</description>
+ <software name="rockybw">
+ <description>Rocky &amp; Bullwinckle (Unreleased)</description>
<year>1983</year>
<publisher>Mattel Electronics</publisher>
<part name="cart" interface="intv_cart">
<feature name="slot" value="intv_rom" />
- <dataarea name="5000" size="0x4000">
- <rom name="space cadet.50" size="0x4000" crc="f8ef3e5a" sha1="f3cfbe285a12194ef2f6087fc70d0ed887c4ec91" offset="0x0000"/>
+ <dataarea name="5000" size="16384">
+ <rom name="rockey &amp; bullwinckle.50" size="16384" crc="867f1941" sha1="86053c388dbee82216159fa7f4d95756ffd9d37d" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="scarfing">
+ <description>Scarfinger (Unfinished)</description>
+ <year>1982</year>
+ <publisher>Mattel Electronics</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="16384">
+ <rom name="scarfinger.50" size="16384" crc="a57862f7" sha1="a691ad56285526738760f18b8d86b07195039df0" offset="0x0000" />
+ </dataarea>
+ <dataarea name="9000" size="16384">
+ <rom name="scarfinger.90" size="16384" crc="d3d5e5af" sha1="3a4dddbcb04aeacea15a03267dc55d8a913434a6" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="soccer2" cloneof="worldcup">
+ <description>Soccer 2 (Prototype)</description>
+ <year>198?</year>
+ <publisher>Mattel Electronics</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="16384">
+ <rom name="soccer_2.50" size="16384" crc="4d4af24e" sha1="dd08e16ba509cd1761e1007f616267e5f96f9127" offset="0x0000" />
+ </dataarea>
+ <dataarea name="9000" size="16384">
+ <rom name="soccer_2.90" size="16384" crc="c6889d72" sha1="4507d0159b1fc2c18d44330eaa70d677629b5d82" offset="0x0000" />
</dataarea>
</part>
</software>
@@ -2096,6 +2243,25 @@
</part>
</software>
+ <software name="yogi">
+ <description>Yogi's Frustration (Unreleased)</description>
+ <year>1983</year>
+ <publisher>Mattel Electronics</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="16384">
+ <rom name="yogi's frustration.50" size="16384" crc="7f4ba6ad" sha1="277a3ad0bdbad4fa8086655bb7508ff4bb0dde5c" offset="0x0000" />
+ </dataarea>
+ <dataarea name="D000" size="8192">
+ <rom name="yogi's frustration.d0" size="8192" crc="cf15e8c5" sha1="bbc103a8fc3d979a05dc42aa5b773355ab11df60" offset="0x0000" />
+ </dataarea>
+ <dataarea name="F000" size="8192">
+ <rom name="yogi's frustration.f0" size="8192" crc="2bc63759" sha1="463b7a8f2e139fcb8434c565b2b275b313a9d52e" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+
<software name="imitc">
<description>IMI Test Cartridge</description>
<year>1978</year>
@@ -2123,6 +2289,7 @@
</part>
</software>
+
<software name="4tris">
<description>4-Tris (Download Version)</description>
<year>2000</year>
@@ -2136,7 +2303,40 @@
</part>
</software>
- <software name="minehntr">
+ <software name="dkongarc" supported="partial">
+ <description>Donkey Kong Arcade</description>
+ <year>200?</year>
+ <publisher>IntelligentVision</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="16384">
+ <rom name="dkinty.50" size="16384" crc="93a9826c" sha1="477ab844aaea8fd18fc8b8c846dbfb78280b924d" offset="0x0000" />
+ </dataarea>
+ <dataarea name="9000" size="16384">
+ <rom name="dkinty.90" size="16384" crc="a927412f" sha1="acb7359db142c1b77c3a17d1547ecc8a259d3f02" offset="0x0000" />
+ </dataarea>
+ <dataarea name="D000" size="8192">
+ <rom name="dkinty.d0" size="8192" crc="642d6557" sha1="5a2fa6bd9a6c173581da5d08699a44198da0231c" offset="0x0000" />
+ </dataarea>
+ <dataarea name="F000" size="8192">
+ <rom name="dkinty.f0" size="8192" crc="3e39ee68" sha1="c266e320a9b2266c7db44bc0965e2b68ffa18e27" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="istar">
+ <description>Istar</description>
+ <year>2010?</year>
+ <publisher>IntelligentVision</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="12288">
+ <rom name="istar.50" size="12288" crc="7899e5ba" sha1="997d1b679768296fc2db120a93cc1880318637cf" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="minehunt">
<description>Minehunter (Download Version)</description>
<year>2004</year>
<publisher>IntelligentVision</publisher>
@@ -2144,11 +2344,24 @@
<part name="cart" interface="intv_cart">
<feature name="slot" value="intv_rom" />
<dataarea name="5000" size="0x4000">
+ <!-- cutting this at 0x3e00 gives crc32 594c230e -->
<rom name="minehunter.50" size="0x4000" crc="a9f1d874" sha1="4bbac2b5264f4d357e7223b2373b078c622c08a9" offset="0x0000"/>
</dataarea>
</part>
</software>
+ <software name="minehunta" cloneof="minehunt">
+ <description>Minehunter (Download Version, Alt?)</description>
+ <year>2004</year>
+ <publisher>IntelligentVision</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="16384">
+ <rom name="minehunta.50" size="15872" crc="94096229" sha1="a351edd058431ed2aeccc0554041a17258c01c28" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
<software name="sgr">
<description>SameGame &amp; Robots (Download Version)</description>
<year>2005</year>
@@ -2168,6 +2381,49 @@
</part>
</software>
+ <software name="spina">
+ <description>ZZZZZ! Spina the Bee</description>
+ <year>200?</year>
+ <publisher>IntelligentVision</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="16384">
+ <rom name="zzzzz! spina the bee.50" size="16384" crc="01efa214" sha1="1a70d73512da0f78957bbd74b14077303e4fb905" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="spacecnt">
+ <description>Space Cunt</description>
+ <year>200?</year>
+ <publisher>IntelligentVision</publisher>
+ <info name="usage" value="Uses Intellivoice"/>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="16384">
+ <rom name="space cunt.50" size="16384" crc="4542d593" sha1="c946b40ba51c48d8fedc4cdb40c27e3779e2b84b" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="spatrol">
+ <description>Space Patrol Teaser Edition</description>
+ <year>2007?</year>
+ <publisher>IntelligentVision</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="16384">
+ <rom name="space patrol teaser edition.50" size="16384" crc="3c3d75bf" sha1="761e379d43ba1551198dab8199764356fc615b1b" offset="0x0000" />
+ </dataarea>
+ <dataarea name="D000" size="8192">
+ <rom name="space patrol teaser edition.d0" size="8192" crc="04101767" sha1="54f8dfe0d5413097c280f72b45f6684bc9e1a3d5" offset="0x0000" />
+ </dataarea>
+ <dataarea name="F000" size="8192">
+ <rom name="space patrol teaser edition.f0" size="8192" crc="a6950b88" sha1="27891c3026f0a1fb34a13438502960485d33b24f" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
<software name="stonix">
<description>Stonix (Download Version)</description>
<year>2005</year>
@@ -2186,4 +2442,69 @@
</dataarea>
</part>
</software>
+
+ <software name="suprchef">
+ <description>Super Chef BT</description>
+ <year>2013?</year>
+ <publisher>IntelligentVision</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="16384">
+ <rom name="burgrtm2.50" size="16384" crc="54848723" sha1="e791fe7ae0af267689fc831e60c407c02c5ee280" offset="0x0000" />
+ </dataarea>
+ <dataarea name="D000" size="24576">
+ <rom name="burgrtm2.d0" size="24576" crc="53feb216" sha1="d462c44ddbe91fdbfad8ef26658dc07cea4a6dbc" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="todd">
+ <description>Tag Along Todd (Unfinished)</description>
+ <year>200?</year>
+ <publisher>IntelligentVision</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="16384">
+ <rom name="tag-along-todd.50" size="10752" crc="1ecdd51b" sha1="9e1666a68d50bb4a1f618cc2f9bcd7dfbadc8188" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+
+
+<!-- TODO: Investigate these files -->
+
+ <software name="kingotmf" cloneof="kingotm" supported="no">
+ <description>King of the Mountain (Fixed?)</description>
+ <year>200?</year>
+ <publisher>IntelligentVision</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="16384">
+ <rom name="king of the mountain (alt).50" size="16384" crc="3634697b" sha1="c20c17bd68e92b7f81a522c4c1d0dd4ae8926bdd" offset="0x0000" />
+ </dataarea>
+ <dataarea name="D000" size="16896">
+ <rom name="king of the mountain (alt).d0" size="16896" crc="2c7f5de1" sha1="c86a04a969542a08b46ef50dd30c649ad6ef5b47" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="quest" supported="no">
+ <description>Quest</description>
+ <year>19??</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="0000" size="16384">
+ <rom name="quest.00" size="16384" crc="540281d5" sha1="30a3c0d4cf1d939f8a1b4e6ff3fc18a2e13f3e7e" offset="0x0000" />
+ </dataarea>
+ <dataarea name="5000" size="16384">
+ <rom name="quest.50" size="16384" crc="6d5013df" sha1="c1535a9dd54d621ca3d44fd9ca1b5d5c745eb3ad" offset="0x0000" />
+ </dataarea>
+ <dataarea name="D000" size="16384">
+ <rom name="quest.d0" size="16384" crc="869ce44f" sha1="43196b47bde3fccf281c355f2966c71099a6a436" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
+
</softwarelist>
diff --git a/hash/intvecs.xml b/hash/intvecs.xml
index b8663df873e..ef321fcd1f3 100644
--- a/hash/intvecs.xml
+++ b/hash/intvecs.xml
@@ -1,7 +1,5 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
-
-
<softwarelist name="intvecs" description="Intellivision ECS cartridges">
<software name="jetsons">
@@ -150,4 +148,21 @@
</dataarea>
</part>
</software>
+
+
+ <software name="flintkf">
+ <description>Flintstones Keyboard Fun (Unreleased)</description>
+ <year>200?</year>
+ <publisher>IntelligentVision</publisher>
+ <info name="usage" value="Requires ECS and Keyboard"/>
+ <part name="cart" interface="intv_cart">
+ <feature name="slot" value="intv_rom" />
+ <dataarea name="5000" size="16384">
+ <rom name="flintstones keyboard fun.50" size="16384" crc="87996f3a" sha1="ffc8986782a461e1c99de24f92578295216e7b5f" offset="0x0000" />
+ </dataarea>
+ <dataarea name="D000" size="8192">
+ <rom name="flintstones keyboard fun.d0" size="8192" crc="e813510b" sha1="fa6203172faf46d89fd3a9276f642cbaf6b6f2ab" offset="0x0000" />
+ </dataarea>
+ </part>
+ </software>
</softwarelist>
diff --git a/hash/pet_cass.xml b/hash/pet_cass.xml
index 223307ca56d..8fce47a0149 100644
--- a/hash/pet_cass.xml
+++ b/hash/pet_cass.xml
@@ -1,15 +1,1204 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
+
<softwarelist name="pet_cass" description="Commodore PET cassettes">
- <software name="lunarlnd">
- <description>Lunar Lander</description>
- <year>197?</year>
- <publisher>&lt;unknown&gt;</publisher>
+ <software name="acquire">
+ <description>Acquire</description>
+ <year>1982</year>
+ <publisher>Microcomputer Games</publisher>
+
+ <!-- pet2001n16 Side A: Acquire -->
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="24368704">
+ <rom name="acquire (1982)(avalon hill).wav" size="24368704" crc="65ceaa57" sha1="e8b1d072356526c31a509a267507e9aaa74f17fa" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="androm">
+ <description>Andromeda Conquest</description>
+ <year>1982</year>
+
+ <!-- pet2001n16 Side A: Andromeda -->
+ <publisher>Microcomputer Games</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="22685838">
+ <rom name="andromeda conquest (1982)(avalon hill).wav" size="22685838" crc="8716b6d9" sha1="7d21e69fe5c1831b3f3244d1236b7e7ed57a2fb4" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="b1bomb">
+ <description>B-1 Bomber Game</description>
+ <year>1982</year>
+
+ <!-- pet2001n16 Side A: B-1 Bomber -->
+ <publisher>Microcomputer Games</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="15154010">
+ <rom name="b-1 nuclear bomber (1981)(avalon hill).wav" size="15154010" crc="69fcf587" sha1="de3cb18e63a45943e7357af16d4b3994c3dbae46" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="bbstrat">
+ <description>Baseball Strategy</description>
+ <year>1982</year>
+
+ <!-- pet4032 Side A: Baseball Strateg -->
+ <publisher>Microcomputer Games</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="30735222">
+ <rom name="baseball strategy (1982)(avalon hill).wav" size="30735222" crc="1d50607d" sha1="dcb6571346f8da9777d6a4654413303d6320f55e" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="bjack">
+ <!-- 321009 -->
+ <description>Blackjack</description>
+ <year>1978</year>
+
+ <!-- pet20018 Side A: Blackjack -->
+ <publisher>Commodore Business Machines, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11284678">
+ <rom name="blackjack (1978)(commodore business machines).wav" size="11284678" crc="b65acc8b" sha1="a5a3261a04bde04309e539b72ddaadd462e21c70" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="bomba">
+ <description>Arcade Pak #3 Bomber Attack</description>
+ <year>1982</year>
+
+ <!-- pet2001n Side A: Bomber Attack -->
+ <publisher>Avalon Hill</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="10001002">
+ <rom name="Bomber Attack (1982)(avalon hill).wav" size="10001002" crc="4ff57e9c" sha1="b795a4d8c2f7891088ee6cf7147d785948d7b887" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="bullb">
+ <description>Bulls and Bears</description>
+ <year>1978</year>
+
+ <!-- pet20018 Side A: Bulls and Bears -->
+ <publisher>Speakeasy Software</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="10926558">
+ <rom name="bulls and bears (1978)(speakeasy software).wav" size="10926558" crc="8fbd037f" sha1="20527ee4b6528c0daf31994bfed028583faa049f" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="bjack1">
+ <description>Casino Blackjack 5.7</description>
+ <year>1979</year>
+
+ <!-- pet20018 Side A: Blackjack -->
+ <publisher>Speakeasy Software</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11929950">
+ <rom name="casino blackjack 5.7 (1979)(cms software systems).wav" size="11929950" crc="de4f4383" sha1="2ac7ee53dc74a4696bf9dd72103e4ef569d94ec4" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="conflict">
+ <description>Conflict 2500</description>
+ <year>1981</year>
+
+ <!-- pet2001n16 Side A: Conflict 2500 -->
+ <publisher>Microcomputer Games</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="23419766">
+ <rom name="conflict 2500 (1981)(avalon hill).wav" size="23419766" crc="872b73d6" sha1="c3941f3ce51bff8d0571ce2b43b7ccdd9a212733" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur1">
+ <description>Cursor 1</description>
+ <year>1978</year>
+
+ <!-- pet20018 Side A: Cover, Brick, Wander, Shark, Plot, Typer -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="34540096">
+ <rom name="cursor 1 (1978)(code works).wav" size="34540096" crc="c2a429f0" sha1="f732bdd48c4a7764352355098d01de3e950c2d9c" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur2">
+ <description>Cursor 2</description>
+ <year>1978</year>
+
+ <!-- pet20018 Side A: Cover, Race, Zap, Est, Guess, Mad -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="38802738">
+ <rom name="cursor 2 (1978)(code works).wav" size="38802738" crc="9925f292" sha1="a0f553dc3e052fe3556183bfd82318b92dd72642" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur3">
+ <description>Cursor 3</description>
+ <year>1978</year>
+
+ <!-- pet20018 Side A: Cover, Bar, Dots, Quix!, Flash, Cards -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="47849882">
+ <rom name="cursor 3 (1978)(code works).wav" size="47849882" crc="95283cb2" sha1="604f61d0f209aaef32e82bceaa67530511ef60c1" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur4">
+ <description>Cursor 4</description>
+ <year>1978</year>
+
+ <!-- pet20018 Side A: Cover!, Bop, Calc, Clock!, Inp, Ced -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="55455514">
+ <rom name="cursor 4 (1978)(code works).wav" size="55455514" crc="df747916" sha1="16640a5223a644dca3ef713cac6e70d1348cd6ef" offset="0" />
+ </dataarea>
+ </part>
+
+ </software>
+
+ <software name="cur5">
+ <description>Cursor 5</description>
+ <year>1978</year>
+
+ <!-- pet20018 Side A: Cover, Hanoi, Shoot, Bship, Face, Hman -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="46403528">
+ <rom name="cursor 5 (1978)(code works).wav" size="46403528" crc="c0c8f3ff" sha1="3f888f080e59853e5f89b0f3d565e125d1e5e852" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur6">
+ <description>Cursor 6</description>
+ <year>1979</year>
+
+ <!-- pet2001n Side A: Cover, Box, Bjack, pet20018: Pack, List, Cedpr -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="46753010">
+ <rom name="cursor 6 (1979)(code works).wav" size="46753010" crc="2f6ef813" sha1="750cd291f2653c03b6e2fd707cc1ededf97d5477" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur7">
+ <description>Cursor 7</description>
+ <year>1979</year>
+
+ <!-- pet2001n Side A: Cover, Pricer, Sound!, Mind, Fball, Paper -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="54620302">
+ <rom name="cursor 7 (1979)(code works).wav" size="54620302" crc="6f2bf0a4" sha1="44f13108e3945abbc432ed4cce166848661adf1d" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur8">
+ <description>Cursor 8</description>
+ <year>1979</year>
+
+ <!-- pet2001n Side A: Cover, Revers!, Dbook, Space!, Maze, Add, X -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="58017788">
+ <rom name="cursor 8 (1979)(code works).wav" size="58017788" crc="f6118fbf" sha1="e415cb0d26702836a44a798546960c21bcd96299" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur9">
+ <description>Cursor 9</description>
+ <year>1979</year>
+
+ <!-- pet2001n16 Side A: pet2001n: Cover, Yahtzee, Slot!, Flip, Circle, pet2001n16: Gammon -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="69494314">
+ <rom name="cursor 9 (1979)(code works).wav" size="69494314" crc="8abf8e8c" sha1="98e0b0f9d16a055cb2d11f2aff84a6c1884f7acf" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur10">
+ <description>Cursor 10</description>
+ <year>1979</year>
+
+ <!-- pet2001n Side A: Cover!, pet20018: Titrate, pet2001n: Finance, Course, pet20018: Asm, Reader -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="52635502">
+ <rom name="cursor 10 (1979)(code works).wav" size="52635502" crc="e64a1066" sha1="0559d40f259cf149f0bc88dfe19d64caeae7902b" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur11">
+ <description>Cursor 11</description>
+ <year>1979</year>
+
+ <!-- pet2001n Side A: Cover, Demon!, Hi calc, Wipeout, Peg, States -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="52073122">
+ <rom name="cursor 11 (1979)(code works).wav" size="52073122" crc="b4a6843a" sha1="1ef4ff08f02e140d5c74fed7fdcce4b332f933a4" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur12">
+ <description>Cursor 12</description>
+ <year>1979</year>
+
+ <!-- pet2001n Side A: Cover12, Canyon!, Gauss!, Pickup, Piegram, Flight! -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="60014980">
+ <rom name="cursor 12 (1979)(code works).wav" size="60014980" crc="6ceecff0" sha1="391e5c114dc60beec739908666e04b4f82000ce8" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur13">
+ <description>Cursor 13</description>
+ <year>1979</year>
+
+ <!-- pet2001n Side A: Cover13, Ratrun, Cars, Ferry!, Leap, Tcard -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="57500730">
+ <rom name="cursor 13 (1979)(code works).wav" size="57500730" crc="fd7dd623" sha1="779a6b763de8efd69942e5a89e220c4d670d63f0" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur14">
+ <description>Cursor 14</description>
+ <year>1979</year>
+
+ <!-- pet2001n Side A: Cover14, Match, Search, Bat!, Morse!, Cops, Coming -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="56915420">
+ <rom name="cursor 14 (1979)(code works).wav" size="56915420" crc="43442da6" sha1="e6b31659181da8bebe2b7e2d66b982030014192e" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur15">
+ <description>Cursor 15</description>
+ <year>1979</year>
+
+ <!-- pet2001n Side A: Cover15!, Dungeon, Fifteen, Gomoku, Everest, Hawaii! -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="54585328">
+ <rom name="cursor 15 (1979)(code works).wav" size="54585328" crc="3e176c08" sha1="9b133685dac34826b9505407aefa27c1affa3427" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur16">
+ <description>Cursor 16</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Cover16, Nab!, Fire!, Aliens!, Bonzo!, Catch! -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="45885486">
+ <rom name="cursor 16 (1980)(code works).wav" size="45885486" crc="53903b5a" sha1="db92181ea1c4cf65b93bda621b2d7a7c32c3bc7e" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur17">
+ <description>Cursor 17</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Cover17, Police!, Spot, Ruler, Letter, Merge, Npack -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="54618936">
+ <rom name="cursor 17 (1980)(code works).wav" size="54618936" crc="c8492708" sha1="2638641d44437b595d17fc9ca8f91a1432b78164" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur18">
+ <description>Cursor 18</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Cover18, Dromeda!, Joust, Weather, Hi-res, Sheep -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="56023512">
+ <rom name="cursor 18 (1980)(code works).wav" size="56023512" crc="399cee6b" sha1="3930f54ffc12e09dc3e651642ee8f0bac6d9dde8" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur19">
+ <description>Cursor 19</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Cover19, Frog!, Godzilla!, Miner!, Rail, Gbooka, Gbookb -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="66518600">
+ <rom name="cursor 19 (1980)(code works).wav" size="66518600" crc="9a1386b2" sha1="5c98728358ac6167f7e7e3c07b2362eedc1b0161" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur20">
+ <description>Cursor 20</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Cover20, Music!, Bets, Checkers!, Curves, Equip -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="53527416">
+ <rom name="cursor 20 (1980)(code works).wav" size="53527416" crc="2401c9e9" sha1="c2be524ba8a66b4c0a7541a09f29a839acadac8f" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur21">
+ <description>Cursor 21</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Cover21, Capture!, Dance!, Boswain, Ouranos!, Drag -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="58273484">
+ <rom name="cursor 21 (1980)(code works).wav" size="58273484" crc="7d2f858a" sha1="49cab5acfc20c7d86d25aaf4c8790cc2b2ffd32c" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur22">
+ <description>Cursor 22</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Cover22, Kalah, Poker, Match, Thunt!, Compare -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="53405634">
+ <rom name="cursor 22 (1980)(code works).wav" size="53405634" crc="c6e434ad" sha1="dfb03ed9a3cc51a0e75b884519d26f15e4e0de4b" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur23">
+ <description>Cursor 23</description>
+ <year>1980</year>
+
+ <!-- pet2001n16 Side A: pet2001n: Cover23, Recipe, Ambush!, pet2001n16: Orrey, pet2001n: Enigma, Mwhiz! -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="52482130">
+ <rom name="cursor 23 (1980)(code works).wav" size="52482130" crc="aace87f0" sha1="e8f566cbfdb28b3fbd508f806a09b57081830a78" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur24">
+ <description>Cursor 24</description>
+ <year>1981</year>
+
+ <!-- pet2001n Side A: Cover24, Defend!, G-word, Racer!, Printsit, Re-num -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="45591486">
+ <rom name="cursor 24 (1981)(code works).wav" size="45591486" crc="413fe583" sha1="7ac7333db71a6c6f363f26437961e50fb443dd12" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur25">
+ <description>Cursor 25</description>
+ <year>1981</year>
+
+ <!-- pet2001n16 Side A: pet2001n: Cover25, Maxit, pet2001n16: Mail, pet2001n: Rescue!, pet2001n16: Repair, pet2001n: Xref -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="58594030">
+ <rom name="cursor 25 (1981)(code works).wav" size="58594030" crc="ff3aa594" sha1="db60a8b2c751aeeffe5fcd9c7fc2ac1965e4ccc2" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur26">
+ <description>Cursor 26</description>
+ <year>1981</year>
+
+ <!-- pet2001n16 Side A: pet2001n: Cover26, Lawn!, Tank!, Ram, Safe!, pet2001n16: Test -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="59355380">
+ <rom name="cursor 26 (1981)(code works).wav" size="59355380" crc="5dbb9096" sha1="4ad21ed698ff0162b12615276daf2ebca14d5c97" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur27">
+ <description>Cursor 27</description>
+ <year>1981</year>
+
+ <!-- pet2001n Side A: Cover27!, Attack!, Emaze!, Duel!, Miser, Prochar -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="68273716">
+ <rom name="cursor 27 (1981)(code works).wav" size="68273716" crc="b87e72c4" sha1="3ca92d7de8cdb085759388cb7cb4a72b1d5438a9" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur28">
+ <description>Cursor 28</description>
+ <year>1981</year>
+
+ <!-- pet2001n Side A: Cover28!, Skeet!, Blasto!, Stop!, Voz, Flags -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="51620292">
+ <rom name="cursor 28 (1981)(code works).wav" size="51620292" crc="3cceca70" sha1="9430875aa6370e940c7b88351bccba7e27be5640" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur29">
+ <description>Cursor 29</description>
+ <year>1982</year>
+
+ <!-- pet2001n16 Side A: pet2001n: Cover29, Pong!, Clone!, pet2001n16: Drone!, pet2001n: Contact, Krypto -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="72864822">
+ <rom name="cursor 29 (1982)(code works).wav" size="72864822" crc="16fa7e17" sha1="d1f88d1e696b7b1c6488104a70ef372969521de6" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cur30">
+ <description>Cursor 30</description>
+ <year>1982</year>
+
+ <!-- pet2001n Side A: Cover30, Dive, Slide, Break, Rebound, Zip -->
+ <publisher>The Code Works</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="44679544">
+ <rom name="cursor 30 (1982)(code works).wav" size="44679544" crc="bdb20dfb" sha1="12be82c0122f53718bfb2b634c85663c47a6a7e6" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="dpoker">
+ <!-- 321008 -->
+ <description>Draw Poker</description>
+ <year>1978</year>
+ <publisher>Commodore Business Machines, Inc.</publisher>
+
+ <!-- pet20018 -->
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="10220420">
+ <rom name="draw poker (1978)(commodore busines machines).wav" size="10220420" crc="82f7871d" sha1="973cdc5d8ede2dffa6fb25abfadf8b5daabe6949" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eaadj1n">
+ <description>Adjectives 1</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Adjectives 1 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11189514">
+ <rom name="adjectives 1 (1980)(activity records, inc.).wav" size="11189514" crc="5cd88b03" sha1="2976ab72d36a8654a33c1f8220d9c862ae4849f7" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eaadj2n">
+ <description>Adjectives 2</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Adjectives 2 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11398034">
+ <rom name="adjectives 2 (1980)(activity records, inc.).wav" size="11398034" crc="beb939fa" sha1="3b3b7ef2118263a8bb7fa85bb0010ae2d1ed89d8" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eaadj3n">
+ <description>Adjectives 3</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Adjectives 3 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="10179592">
+ <rom name="adjectives 3 (1980)(activity records, inc.).wav" size="10179592" crc="7019b74f" sha1="36ed0aac8f1c8ae9de7fc01c29d73d841a398d80" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eaadj4n">
+ <description>Adjectives 4</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Adjectives 4 -->
+ <publisher>Activity rRecords, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11520634">
+ <rom name="adjectives 4 (1980)(activity records, inc.).wav" size="11520634" crc="5a564aa4" sha1="2d7dad3d450158331ecfdc7289e70b3f0cfd68a5" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eaadv1n">
+ <description>Adverbs 1</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Adverbs 1 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11171990">
+ <rom name="adverbs 1 (1980)(activity records, inc.).wav" size="11171990" crc="4a264aa0" sha1="021f1f264130a46509c46ae46cefafda819deeb7" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eaadv2n">
+ <description>Adverbs 2</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Adverbs 2 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="10775102">
+ <rom name="adverbs 2 (1980)(activity records, inc.).wav" size="10775102" crc="b52be4be" sha1="806da1c924aebf856a5d6236700d91b3b29a0b6f" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eaadv3n">
+ <description>Adverbs 3</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Adverbs 3 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="7315782">
+ <rom name="adverbs 3 (1980)(activity records, inc.).wav" size="7315782" crc="5e2de1e4" sha1="12608f5ead991e9eb46705ff14f6a5c974c0c504" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eaadv4n">
+ <description>Adverbs 4</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Adverbs 4 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="8865608">
+ <rom name="adverbs 4 (1980)(activity records, inc.).wav" size="8865608" crc="ecfddb13" sha1="f79db1d8fa625252f6c7dea8ae4556e5ce722e33" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eacon1n">
+ <description>Contractions 1</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Contractions 1 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="8741664">
+ <rom name="contractions 1 (1980)(activity records, inc.).wav" size="8741664" crc="b05cebce" sha1="c38311bf71973d7bbc89754d46feb48e738f0cb4" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eacon2n">
+ <description>Contractions 2</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Contractions 2 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="7618740">
+ <rom name="contractions 2 (1980)(activity records, inc.).wav" size="7618740" crc="10107694" sha1="fc27866f351a18f41e4c4528b53495a908694061" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eacon3n">
+ <description>Contractions 3</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Contractions 3 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="8523464">
+ <rom name="contractions 3 (1980)(activity records, inc.).wav" size="8523464" crc="ab728b0b" sha1="f4e8e1c4745e40fe133e5c20104c929b4b693b56" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eacon4n">
+ <description>Contractions 4</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Contractions 4 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11211668">
+ <rom name="contractions 4 (1980)(activity records, inc.).wav" size="11211668" crc="707797e8" sha1="4b70d42f40037b707f5c56956cc5e2dd01b9b663" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eaflasn">
+ <description>Flash Spelling</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Flash Spelling -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="10924002">
+ <rom name="flash spelling (1980)(activity records, inc.).wav" size="10924002" crc="c848cf8d" sha1="274ed732a2878d61751558f601c1d47b6f62a027" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eahom1n">
+ <description>Homonyms 1</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Homonyms 1 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11327432">
+ <rom name="homonyms 1 (1980)(activity records, inc.).wav" size="11327432" crc="b7b4b906" sha1="b4e17fe21d43e4ad951bdfa93ea9963b714f4f40" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eahom2n">
+ <description>Homonyms 2</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Homonyms 2 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11861540">
+ <rom name="homonyms 2 (1980)(activity records, inc.).wav" size="11861540" crc="0975d654" sha1="eb16abd7711449966ad7517fd21afec0e629b7cd" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eahom3n">
+ <description>Homonyms 3</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Homonyms 3 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11615978">
+ <rom name="homonyms 3 (1980)(activity records, inc.).wav" size="11615978" crc="29ee6920" sha1="7f73f30e0403356a89a1febf8ff89deff7068fa6" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eahom4n">
+ <description>Homonyms 4</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Homonyms 4 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11683890">
+ <rom name="homonyms 4 (1980)(activity records, inc.).wav" size="11683890" crc="37dc7bc2" sha1="4337c812232055e81488a8fc9a56db374fa12147" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eanou1n">
+ <description>Nouns 1</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Nouns 1 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="9658096">
+ <rom name="nouns 1 (1980)(activity records, inc.).wav" size="9658096" crc="c1f58189" sha1="0d99300bdecbc7b3e0dc88dec92e0904d3730636" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eanou2n">
+ <description>Nouns 2</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Nouns 2 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="8256024">
+ <rom name="nouns 2 (1980)(activity records, inc.).wav" size="8256024" crc="9fd2c09e" sha1="12dfd01ed34811d35bda22049814521b694bdd1e" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eanou3n">
+ <description>Nouns 3</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Nouns 3 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="10382360">
+ <rom name="nouns 3 (1980)(activity records, inc.).wav" size="10382360" crc="526391fd" sha1="7c9b6d8c8c07415e06d89188cf4abd06131f9c05" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eanou4n">
+ <description>Nouns 4</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Nouns 4 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="10670724">
+ <rom name="nouns 4 (1980)(activity records, inc.).wav" size="10670724" crc="19f240f3" sha1="dfc672a27119b070440dacd9bdfe45fca36c49e6" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eapro1n">
+ <description>Pronouns 1</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Pronouns 1 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="8304786">
+ <rom name="pronouns 1 (1980)(activity records, inc.).wav" size="8304786" crc="f19b0449" sha1="df5877f923b89a65619692e3bbda60540eac225f" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eapro2n">
+ <description>Pronouns 2</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Pronouns 2 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="8766592">
+ <rom name="pronouns 2 (1980)(activity records, inc.).wav" size="8766592" crc="369ebd25" sha1="c21773b0807136aa48852b21f6395069a9daa38e" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eapro3n">
+ <description>Pronouns 3</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Pronouns 3 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11746820">
+ <rom name="pronouns 3 (1980)(activity records, inc.).wav" size="11746820" crc="32331088" sha1="dd8b94cef82c34fab6802a4962c6089c13d2003f" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eapro4n">
+ <description>Pronouns 4</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Pronouns 4 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11164358">
+ <rom name="pronouns 4 (1980)(activity records, inc.).wav" size="11164358" crc="3e59fc0a" sha1="9c7f23385261ebee93ea0cef13145683af0119eb" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eascrln">
+ <description>Scrambled Letters</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Scrambled Letter -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="10495222">
+ <rom name="scrambled letters (1980)(activity records, inc.).wav" size="10495222" crc="1d22b476" sha1="47b5c68929acc4542442a065a13d4de6bbfbd8dc" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="easyn1n">
+ <description>Synonyms 1</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Synonyms 1 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="10756002">
+ <rom name="synonyms 1 (1980)(activity records, inc.).wav" size="10756002" crc="84775373" sha1="7056dd8f4114b6da432ba60238e1c25577e03a56" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="easyn2n">
+ <description>Synonyms 2</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Synonyms 2 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11090060">
+ <rom name="synonyms 2 (1980)(activity records, inc.).wav" size="11090060" crc="97b76ece" sha1="58b5180d0a4bc1ea7660f177b2ef474c83213f75" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="easyn3n">
+ <description>Synonyms 3</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Synonyms 3 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11520754">
+ <rom name="synonyms 3 (1980)(activity records, inc.).wav" size="11520754" crc="b03171be" sha1="39dc6de8545160656b306d4b767140b055bbc426" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="easyn4n">
+ <description>Synonyms 4</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Synonyms 4 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11056074">
+ <rom name="synonyms 4 (1980)(activity records, inc.).wav" size="11056074" crc="221953dc" sha1="0d9914a7f01ebbd5c3397f5dbc31b39daf3954c6" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eaver1n">
+ <description>Verbs 1</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Verbs 1 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11064470">
+ <rom name="verbs 1 (1980)(activity records, inc.).wav" size="11064470" crc="e0374a46" sha1="605b1965f4e801942674ad9dc809e753157d0144" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eaver2n">
+ <description>Verbs 2</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Verbs 2 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11635338">
+ <rom name="verbs 2 (1980)(activity records, inc.).wav" size="11635338" crc="0935674a" sha1="ecab049a8f243d669f000e2782621fb6b98443e9" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eaver3n">
+ <description>Verbs 3</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Verbs 3 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="11407390">
+ <rom name="verbs 3 (1980)(activity records, inc.).wav" size="11407390" crc="0564d783" sha1="41e30fa7b480714f735fb6ad8933cd4a187d227a" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="eaver4n">
+ <description>Verbs 4</description>
+ <year>1980</year>
+
+ <!-- pet2001n Side A: Verbs 4 -->
+ <publisher>Activity Records, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="12043578">
+ <rom name="verbs 4 (1980)(activity records, inc.).wav" size="12043578" crc="84f2e68f" sha1="ba1a92a613cbaf1db870ee864d097c90c7842fc7" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="galaxy">
+ <description>GALAXY!</description>
+ <year>1982</year>
+
+ <!-- pet2001n16 Side A: Galaxy! -->
+ <publisher>Microcomputer Games</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="21505180">
+ <rom name="galaxy! (1982)(avalon hill).wav" size="21505180" crc="d9475975" sha1="56532c57ebf8935212c410eebc7d9192c3c6578c" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+
+ <software name="galxyg">
+ <!-- 321006 -->
+ <description>Galaxy Games</description>
+ <year>1978</year>
+
+ <!-- pet20018 Side A: Galaxy Games -->
+ <publisher>Commodore Business Machines, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="10910060">
+ <rom name="galaxy games (1978)(commodore business machines).wav" size="10910060" crc="42d61509" sha1="50111ae9ff9384c07f4abce2bb9630409673c96b" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="gunsfd">
+ <description>The Guns of Fort Defiance</description>
+ <year>1981</year>
+
+ <!-- pet2001n16 Side A: Guns of Fort D -->
+ <publisher>Commodore Business Machines, Inc.</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="23077818">
+ <rom name="guns of fort defiance (1981)(avalon hill).wav" size="23077818" crc="cfd4e5fc" sha1="7a63c28e46ebd6893d7ea02aef0b9665b6e9dc8f" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="mchess2">
+ <description>Microchess 2.0</description>
+ <year>1978</year>
+
+ <!-- pet2001n Side A: Microchess 2.0 -->
+ <publisher>Micro-ware</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="12645082">
+ <rom name="microchess 2.0 (1978)(micro-ware).wav" size="12645082" crc="8b93c40b" sha1="9863092ba8e435749d98ad69e395c577dfc3cadf" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="midway">
+ <description>Midway Campaign</description>
+ <year>1980</year>
+ <publisher>Microcomputer Games</publisher>
+
+ <!-- pet2001n16 Side A: Midway -->
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="23443232">
+ <rom name="midway campaign (1980)(avalon hill).wav" size="23443232" crc="7aa50725" sha1="420fadf2b52613860e5496284e97da229d67447e" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="nacr">
+ <description>North Atlantic Convoy Raider</description>
+ <year>1980</year>
+
+ <!-- pet2001n16 Side A: North Atlant.c.r -->
+ <publisher>Microcomputer Games</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="12074650">
+ <rom name="north atlantic convoy raider (1980)(avalon hill).wav" size="12074650" crc="fe5dc36a" sha1="8fb15474102d5cc3ce133f3688adb8ffa15704a7" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="oserev">
+ <!-- 321001 -->
+ <description>Osero / Reverse</description>
+ <year>1978</year>
+ <publisher>Commodore Business Machines, Inc.</publisher>
+ <!-- pet20018 Side A: Osero -->
<part name="cass1" interface="cbm_cass">
- <dataarea name="cass" size="342602">
- <rom name="lunar-lander.tap" size="342602" crc="b4a77f48" sha1="28e2d8d4adce42968173996fac92365dcfc67b07" offset="0" />
+ <dataarea name="cass" size="9777552">
+ <rom name="osero (1978)(commodore business machines).wav" size="9777552" crc="f52d600f" sha1="57b0e42a4eb3dd7587f5a248bb549be752109f24" offset="0" />
+ </dataarea>
+ </part>
+
+ <!-- pet20018 Side B: Reverse -->
+ <part name="cass2" interface="cbm_cass">
+ <dataarea name="cass" size="5270380">
+ <rom name="reverse (1978)(commodore business machines).wav" size="5270380" crc="890a53ec" sha1="a2280df2113b2aa250850eadb9247ca1a0d06079" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="checkers">
+ <description>PET Checkers</description>
+ <year>1980</year>
+
+ <!-- pet20018 Side A: Checkers -->
+ <publisher>CMS Software Systems</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="10467148">
+ <rom name="pet checkers (1980)(cms software systems).wav" size="10467148" crc="e3529a46" sha1="3fa8de3a8374e14f0d2b3bd97ff2d8393b3797f0" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="planet">
+ <description>The Planet Miners</description>
+ <year>1979</year>
+
+ <!-- pet2001n16 Side A: Planet Miners -->
+ <publisher>Microcomputer Games</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="22746580">
+ <rom name="planet miners (1979)(avalon hill).wav" size="22746580" crc="0f09b3ac" sha1="6914d25f928fa3f6a1f185744ada904eadea06ac" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="santap">
+ <description>Santa Paravia and Fiumaccio</description>
+ <year>1978</year>
+
+ <!-- pet2001n16 Side A: Santa Paravia -->
+ <publisher>Folklife Terminal Club</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="22263674">
+ <rom name="santa paravia and fiumaccio (1978)(folklife terminal club).wav" size="22263674" crc="4081b629" sha1="a46eac2ef42904d2b9778c697b36e23dbdcecf31" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="spacef">
+ <!-- 321010 -->
+ <description>Space Fight</description>
+ <year>1978</year>
+ <publisher>Commodore Business Machines, Inc.</publisher>
+
+ <!-- pet20018 Side A: Space Fight -->
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="6234532">
+ <rom name="space fight (1978)(commodore business machines).wav" size="6234532" crc="38618c0a" sha1="f100e751f41899ed6e157ed7a0d1d7d569676c7f" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="tankt">
+ <description>Tanktics</description>
+ <year>1981</year>
+
+ <!-- pet2001n16 Side A: Tanktics -->
+ <publisher>Microcomputer Games</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="22165844">
+ <rom name="tanktics (1981)(avalon hill).wav" size="22165844" crc="3a332c04" sha1="95bb207109f08e2cf95e12aa50b9d5840fc54656" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="targoff">
+ <!-- 321002 -->
+ <description>Target Pong/Off-The-Wall</description>
+ <year>1978</year>
+ <publisher>Commodore Business Machines, Inc.</publisher>
+
+ <!-- pet20018 Side A: Target Pong -->
+ <part name="cass1" interface="cbm_cass">
+ <dataarea name="cass" size="6928406">
+ <rom name="target pong (1978)(commodore business machines).wav" size="6928406" crc="a9b1fc5b" sha1="449149f0e5312b66b7296535e5b4840b0fd28556" offset="0" />
+ </dataarea>
+ </part>
+
+ <!-- pet20018 Side B: Off-The-Wall -->
+ <part name="cass2" interface="cbm_cass">
+ <dataarea name="cass" size="7515688">
+ <rom name="off-the-wall (1978)(commodore business machines).wav" size="7515688" crc="afd30b2d" sha1="cc0c4c10fc6ad1dda4012740a20406693c1aa271" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="telng">
+ <description>Telengard</description>
+ <year>1982</year>
+
+ <!-- pet2001n32 Side A: Telengard -->
+ <publisher>Microcomputer Games</publisher>
+ <part name="cass" interface="cbm_cass">
+ <dataarea name="cass" size="49824646">
+ <rom name="telengard (1982)(avalon hill).wav" size="49824646" crc="b6a459cb" sha1="1db22543cab974b7efa36134ee608d31511e06a1" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="apshai">
+ <description>Temple of Apshai</description>
+ <year>1979</year>
+ <publisher>Automated Simulations</publisher>
+
+ <!-- pet2001n32 Side A: Apshai, level 1.seq, level 2.seq, level 3.seq, level 4.seq -->
+ <part name="cass1" interface="cbm_cass">
+ <dataarea name="cass" size="76924190">
+ <rom name="temple of apshai (1979)(automated simulations).wav" size="76924190" crc="faecb03c" sha1="be38fb082fa74c33f280bda401b215001670d54f" offset="0" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="ttgames">
+ <!-- 321004 -->
+ <description>A Treasure Trove of Games</description>
+ <year>1978</year>
+ <publisher>Commodore Business Machines, Inc.</publisher>
+
+ <!-- pet20018 Side A: Lunar Lander, Rotate -->
+ <part name="cass1" interface="cbm_cass">
+ <dataarea name="cass" size="14443032">
+ <rom name="lunar lander, rotate (1978)(commodore business machines).wav" size="14443032" crc="9ec18354" sha1="5099624623d83a38bc211be86213d493e672291d" offset="0" />
+ </dataarea>
+ </part>
+
+ <!-- pet20018 Side B: Wumpus, Tic Tac Toe -->
+ <part name="cass2" interface="cbm_cass">
+ <dataarea name="cass" size="16588594">
+ <rom name="wumpus, tic-tac-toe (1978)(commodore business machines).wav" size="16588594" crc="5345b9be" sha1="2c9ec6f68468b608f68926285f4367b6677e76e0" offset="0" />
</dataarea>
</part>
</software>
diff --git a/src/emu/bus/isa/hdc.c b/src/emu/bus/isa/hdc.c
index 0d866e4580b..79dc7185d00 100644
--- a/src/emu/bus/isa/hdc.c
+++ b/src/emu/bus/isa/hdc.c
@@ -149,6 +149,7 @@ INPUT_PORTS_END
//**************************************************************************
const device_type ISA8_HDC = &device_creator<isa8_hdc_device>;
+const device_type ISA8_HDC_EC1841 = &device_creator<isa8_hdc_ec1841_device>;
//-------------------------------------------------
// machine_config_additions - device-specific
@@ -190,6 +191,19 @@ isa8_hdc_device::isa8_hdc_device(const machine_config &mconfig, const char *tag,
device_t(mconfig, ISA8_HDC, "Fixed Disk Controller Card", tag, owner, clock, "hdc", __FILE__),
device_isa8_card_interface(mconfig, *this)
{
+ m_type = STANDARD;
+}
+
+isa8_hdc_device::isa8_hdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) :
+ device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ device_isa8_card_interface(mconfig, *this)
+{
+}
+
+isa8_hdc_ec1841_device::isa8_hdc_ec1841_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ isa8_hdc_device( mconfig, ISA8_HDC_EC1841, "EC1841 HDC", tag, owner, clock, "hdc_ec1841", __FILE__)
+{
+ m_type = EC1841;
}
//-------------------------------------------------
@@ -750,7 +764,7 @@ void isa8_hdc_device::pc_hdc_data_w(int data)
*buffer_ptr++ = data;
// XXX ec1841 wants this
- if (buffer[0] == CMD_SETPARAM && data_cnt == 9) {
+ if (buffer[0] == CMD_SETPARAM && data_cnt == 9 && (m_type == EC1841)) {
status &= ~STA_READY;
} else {
status |= STA_READY;
diff --git a/src/emu/bus/isa/hdc.h b/src/emu/bus/isa/hdc.h
index 7aadb51ea32..7fdf067bc96 100644
--- a/src/emu/bus/isa/hdc.h
+++ b/src/emu/bus/isa/hdc.h
@@ -25,6 +25,7 @@ class isa8_hdc_device :
public:
// construction/destruction
isa8_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ isa8_hdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const;
@@ -89,6 +90,12 @@ protected:
void get_drive();
void get_chsn();
int test_ready();
+
+ enum {
+ STANDARD,
+ EC1841
+ };
+ int m_type;
public:
void hdc_command();
void pc_hdc_data_w(int data);
@@ -101,7 +108,14 @@ public:
};
+class isa8_hdc_ec1841_device : public isa8_hdc_device
+{
+public:
+ isa8_hdc_ec1841_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
// device type definition
extern const device_type ISA8_HDC;
+extern const device_type ISA8_HDC_EC1841;
#endif /* ISA_HDC_H */
diff --git a/src/emu/bus/isa/xsu_cards.c b/src/emu/bus/isa/xsu_cards.c
index f32a21ce907..992eaf222d6 100644
--- a/src/emu/bus/isa/xsu_cards.c
+++ b/src/emu/bus/isa/xsu_cards.c
@@ -48,7 +48,7 @@ SLOT_INTERFACE_START( ec184x_isa8_cards )
SLOT_INTERFACE("ec1841.0004", ISA8_EC1841_0004) // BSC-like serial ports + parallel port
*/
SLOT_INTERFACE("mda", ISA8_MDA)
- SLOT_INTERFACE("hdc", ISA8_HDC)
+ SLOT_INTERFACE("hdc", ISA8_HDC_EC1841)
SLOT_INTERFACE("pccom", ISA8_COM)
SLOT_INTERFACE("pclpt", ISA8_LPT)
SLOT_INTERFACE("xtide", ISA8_XTIDE)
diff --git a/src/emu/cpu/i386/i386.c b/src/emu/cpu/i386/i386.c
index 4f08e8eca96..bbd83a7aa93 100644
--- a/src/emu/cpu/i386/i386.c
+++ b/src/emu/cpu/i386/i386.c
@@ -687,6 +687,7 @@ void i386_device::i386_trap(int irq, int irq_gate, int trap_level)
UINT16 segment;
int entry = irq * (PROTECTED_MODE ? 8 : 4);
int SetRPL = 0;
+ m_lock = false;
if( !(PROTECTED_MODE) )
{
@@ -2811,7 +2812,7 @@ void i386_device::build_cycle_table()
void i386_device::report_invalid_opcode()
{
#ifndef DEBUG_MISSING_OPCODE
- logerror("i386: Invalid opcode %02X at %08X\n", m_opcode, m_pc - 1);
+ logerror("i386: Invalid opcode %02X at %08X %s\n", m_opcode, m_pc - 1, m_lock ? "with lock" : "");
#else
logerror("i386: Invalid opcode");
for (int a = 0; a < m_opcode_bytes_length; a++)
@@ -2845,6 +2846,10 @@ void i386_device::report_invalid_modrm(const char* opcode, UINT8 modrm)
void i386_device::i386_decode_opcode()
{
m_opcode = FETCH();
+
+ if(m_lock && !m_lock_table[0][m_opcode])
+ return i386_invalid();
+
if( m_operand_size )
(this->*m_opcode_table1_32[m_opcode])();
else
@@ -2855,6 +2860,10 @@ void i386_device::i386_decode_opcode()
void i386_device::i386_decode_two_byte()
{
m_opcode = FETCH();
+
+ if(m_lock && !m_lock_table[1][m_opcode])
+ return i386_invalid();
+
if( m_operand_size )
(this->*m_opcode_table2_32[m_opcode])();
else
@@ -3178,6 +3187,7 @@ void i386_device::i386_common_init(int tlbsize)
save_item(NAME(m_nmi_masked));
save_item(NAME(m_nmi_latched));
save_item(NAME(m_smbase));
+ save_item(NAME(m_lock));
machine().save().register_postload(save_prepost_delegate(FUNC(i386_device::i386_postload), this));
m_smiact.resolve_safe();
@@ -3392,6 +3402,8 @@ void i386_device::build_opcode_table(UINT32 features)
m_opcode_table3f2_32[i] = &i386_device::i386_invalid;
m_opcode_table3f3_16[i] = &i386_device::i386_invalid;
m_opcode_table3f3_32[i] = &i386_device::i386_invalid;
+ m_lock_table[0][i] = false;
+ m_lock_table[1][i] = false;
}
for (i=0; i < sizeof(s_x86_opcode_table)/sizeof(X86_OPCODE); i++)
@@ -3406,6 +3418,7 @@ void i386_device::build_opcode_table(UINT32 features)
m_opcode_table2_16[op->opcode] = op->handler16;
m_opcode_table366_32[op->opcode] = op->handler32;
m_opcode_table366_16[op->opcode] = op->handler16;
+ m_lock_table[1][op->opcode] = op->lockable;
}
else if (op->flags & OP_3BYTE66)
{
@@ -3426,6 +3439,7 @@ void i386_device::build_opcode_table(UINT32 features)
{
m_opcode_table1_32[op->opcode] = op->handler32;
m_opcode_table1_16[op->opcode] = op->handler16;
+ m_lock_table[0][op->opcode] = op->lockable;
}
}
}
@@ -3531,6 +3545,7 @@ void i386_device::device_reset()
m_smi_latched = false;
m_nmi_masked = false;
m_nmi_latched = false;
+ m_lock = false;
m_a20_mask = ~0;
@@ -3754,7 +3769,8 @@ void i386_device::execute_run()
m_ext = 1;
i386_trap(1,0,0);
}
-
+ if(m_lock && (m_opcode != 0xf0))
+ m_lock = false;
}
catch(UINT64 e)
{
diff --git a/src/emu/cpu/i386/i386.h b/src/emu/cpu/i386/i386.h
index 7d6ebb07e1f..235d6e898d5 100644
--- a/src/emu/cpu/i386/i386.h
+++ b/src/emu/cpu/i386/i386.h
@@ -138,6 +138,7 @@ struct I386_CALL_GATE
UINT32 flags;
i386_op_func handler16;
i386_op_func handler32;
+ bool lockable;
};
static const X86_OPCODE s_x86_opcode_table[];
@@ -244,6 +245,8 @@ struct I386_CALL_GATE
i386_op_func m_opcode_table3f3_16[256];
i386_op_func m_opcode_table3f3_32[256];
+ bool m_lock_table[2][256];
+
UINT8 *m_cycle_table_pm;
UINT8 *m_cycle_table_rm;
@@ -256,6 +259,7 @@ struct I386_CALL_GATE
bool m_nmi_latched;
UINT32 m_smbase;
devcb_write_line m_smiact;
+ bool m_lock;
// bytes in current opcode, debug only
UINT8 m_opcode_bytes[16];
diff --git a/src/emu/cpu/i386/i386ops.h b/src/emu/cpu/i386/i386ops.h
index 4928363e2d2..b84d188835f 100644
--- a/src/emu/cpu/i386/i386ops.h
+++ b/src/emu/cpu/i386/i386ops.h
@@ -18,510 +18,510 @@
const i386_device::X86_OPCODE i386_device::s_x86_opcode_table[] =
{
// Opcode Flags 16-bit handler 32-bit handler
- { 0x00, OP_I386, &i386_device::i386_add_rm8_r8, &i386_device::i386_add_rm8_r8, },
- { 0x01, OP_I386, &i386_device::i386_add_rm16_r16, &i386_device::i386_add_rm32_r32, },
- { 0x02, OP_I386, &i386_device::i386_add_r8_rm8, &i386_device::i386_add_r8_rm8, },
- { 0x03, OP_I386, &i386_device::i386_add_r16_rm16, &i386_device::i386_add_r32_rm32, },
- { 0x04, OP_I386, &i386_device::i386_add_al_i8, &i386_device::i386_add_al_i8, },
- { 0x05, OP_I386, &i386_device::i386_add_ax_i16, &i386_device::i386_add_eax_i32, },
- { 0x06, OP_I386, &i386_device::i386_push_es16, &i386_device::i386_push_es32, },
- { 0x07, OP_I386, &i386_device::i386_pop_es16, &i386_device::i386_pop_es32, },
- { 0x08, OP_I386, &i386_device::i386_or_rm8_r8, &i386_device::i386_or_rm8_r8, },
- { 0x09, OP_I386, &i386_device::i386_or_rm16_r16, &i386_device::i386_or_rm32_r32, },
- { 0x0A, OP_I386, &i386_device::i386_or_r8_rm8, &i386_device::i386_or_r8_rm8, },
- { 0x0B, OP_I386, &i386_device::i386_or_r16_rm16, &i386_device::i386_or_r32_rm32, },
- { 0x0C, OP_I386, &i386_device::i386_or_al_i8, &i386_device::i386_or_al_i8, },
- { 0x0D, OP_I386, &i386_device::i386_or_ax_i16, &i386_device::i386_or_eax_i32, },
- { 0x0E, OP_I386, &i386_device::i386_push_cs16, &i386_device::i386_push_cs32, },
- { 0x0F, OP_I386, &i386_device::i386_decode_two_byte, &i386_device::i386_decode_two_byte, },
- { 0x10, OP_I386, &i386_device::i386_adc_rm8_r8, &i386_device::i386_adc_rm8_r8, },
- { 0x11, OP_I386, &i386_device::i386_adc_rm16_r16, &i386_device::i386_adc_rm32_r32, },
- { 0x12, OP_I386, &i386_device::i386_adc_r8_rm8, &i386_device::i386_adc_r8_rm8, },
- { 0x13, OP_I386, &i386_device::i386_adc_r16_rm16, &i386_device::i386_adc_r32_rm32, },
- { 0x14, OP_I386, &i386_device::i386_adc_al_i8, &i386_device::i386_adc_al_i8, },
- { 0x15, OP_I386, &i386_device::i386_adc_ax_i16, &i386_device::i386_adc_eax_i32, },
- { 0x16, OP_I386, &i386_device::i386_push_ss16, &i386_device::i386_push_ss32, },
- { 0x17, OP_I386, &i386_device::i386_pop_ss16, &i386_device::i386_pop_ss32, },
- { 0x18, OP_I386, &i386_device::i386_sbb_rm8_r8, &i386_device::i386_sbb_rm8_r8, },
- { 0x19, OP_I386, &i386_device::i386_sbb_rm16_r16, &i386_device::i386_sbb_rm32_r32, },
- { 0x1A, OP_I386, &i386_device::i386_sbb_r8_rm8, &i386_device::i386_sbb_r8_rm8, },
- { 0x1B, OP_I386, &i386_device::i386_sbb_r16_rm16, &i386_device::i386_sbb_r32_rm32, },
- { 0x1C, OP_I386, &i386_device::i386_sbb_al_i8, &i386_device::i386_sbb_al_i8, },
- { 0x1D, OP_I386, &i386_device::i386_sbb_ax_i16, &i386_device::i386_sbb_eax_i32, },
- { 0x1E, OP_I386, &i386_device::i386_push_ds16, &i386_device::i386_push_ds32, },
- { 0x1F, OP_I386, &i386_device::i386_pop_ds16, &i386_device::i386_pop_ds32, },
- { 0x20, OP_I386, &i386_device::i386_and_rm8_r8, &i386_device::i386_and_rm8_r8, },
- { 0x21, OP_I386, &i386_device::i386_and_rm16_r16, &i386_device::i386_and_rm32_r32, },
- { 0x22, OP_I386, &i386_device::i386_and_r8_rm8, &i386_device::i386_and_r8_rm8, },
- { 0x23, OP_I386, &i386_device::i386_and_r16_rm16, &i386_device::i386_and_r32_rm32, },
- { 0x24, OP_I386, &i386_device::i386_and_al_i8, &i386_device::i386_and_al_i8, },
- { 0x25, OP_I386, &i386_device::i386_and_ax_i16, &i386_device::i386_and_eax_i32, },
- { 0x26, OP_I386, &i386_device::i386_segment_ES, &i386_device::i386_segment_ES, },
- { 0x27, OP_I386, &i386_device::i386_daa, &i386_device::i386_daa, },
- { 0x28, OP_I386, &i386_device::i386_sub_rm8_r8, &i386_device::i386_sub_rm8_r8, },
- { 0x29, OP_I386, &i386_device::i386_sub_rm16_r16, &i386_device::i386_sub_rm32_r32, },
- { 0x2A, OP_I386, &i386_device::i386_sub_r8_rm8, &i386_device::i386_sub_r8_rm8, },
- { 0x2B, OP_I386, &i386_device::i386_sub_r16_rm16, &i386_device::i386_sub_r32_rm32, },
- { 0x2C, OP_I386, &i386_device::i386_sub_al_i8, &i386_device::i386_sub_al_i8, },
- { 0x2D, OP_I386, &i386_device::i386_sub_ax_i16, &i386_device::i386_sub_eax_i32, },
- { 0x2E, OP_I386, &i386_device::i386_segment_CS, &i386_device::i386_segment_CS, },
- { 0x2F, OP_I386, &i386_device::i386_das, &i386_device::i386_das, },
- { 0x30, OP_I386, &i386_device::i386_xor_rm8_r8, &i386_device::i386_xor_rm8_r8, },
- { 0x31, OP_I386, &i386_device::i386_xor_rm16_r16, &i386_device::i386_xor_rm32_r32, },
- { 0x32, OP_I386, &i386_device::i386_xor_r8_rm8, &i386_device::i386_xor_r8_rm8, },
- { 0x33, OP_I386, &i386_device::i386_xor_r16_rm16, &i386_device::i386_xor_r32_rm32, },
- { 0x34, OP_I386, &i386_device::i386_xor_al_i8, &i386_device::i386_xor_al_i8, },
- { 0x35, OP_I386, &i386_device::i386_xor_ax_i16, &i386_device::i386_xor_eax_i32, },
- { 0x36, OP_I386, &i386_device::i386_segment_SS, &i386_device::i386_segment_SS, },
- { 0x37, OP_I386, &i386_device::i386_aaa, &i386_device::i386_aaa, },
- { 0x38, OP_I386, &i386_device::i386_cmp_rm8_r8, &i386_device::i386_cmp_rm8_r8, },
- { 0x39, OP_I386, &i386_device::i386_cmp_rm16_r16, &i386_device::i386_cmp_rm32_r32, },
- { 0x3A, OP_I386, &i386_device::i386_cmp_r8_rm8, &i386_device::i386_cmp_r8_rm8, },
- { 0x3B, OP_I386, &i386_device::i386_cmp_r16_rm16, &i386_device::i386_cmp_r32_rm32, },
- { 0x3C, OP_I386, &i386_device::i386_cmp_al_i8, &i386_device::i386_cmp_al_i8, },
- { 0x3D, OP_I386, &i386_device::i386_cmp_ax_i16, &i386_device::i386_cmp_eax_i32, },
- { 0x3E, OP_I386, &i386_device::i386_segment_DS, &i386_device::i386_segment_DS, },
- { 0x3F, OP_I386, &i386_device::i386_aas, &i386_device::i386_aas, },
- { 0x40, OP_I386, &i386_device::i386_inc_ax, &i386_device::i386_inc_eax, },
- { 0x41, OP_I386, &i386_device::i386_inc_cx, &i386_device::i386_inc_ecx, },
- { 0x42, OP_I386, &i386_device::i386_inc_dx, &i386_device::i386_inc_edx, },
- { 0x43, OP_I386, &i386_device::i386_inc_bx, &i386_device::i386_inc_ebx, },
- { 0x44, OP_I386, &i386_device::i386_inc_sp, &i386_device::i386_inc_esp, },
- { 0x45, OP_I386, &i386_device::i386_inc_bp, &i386_device::i386_inc_ebp, },
- { 0x46, OP_I386, &i386_device::i386_inc_si, &i386_device::i386_inc_esi, },
- { 0x47, OP_I386, &i386_device::i386_inc_di, &i386_device::i386_inc_edi, },
- { 0x48, OP_I386, &i386_device::i386_dec_ax, &i386_device::i386_dec_eax, },
- { 0x49, OP_I386, &i386_device::i386_dec_cx, &i386_device::i386_dec_ecx, },
- { 0x4A, OP_I386, &i386_device::i386_dec_dx, &i386_device::i386_dec_edx, },
- { 0x4B, OP_I386, &i386_device::i386_dec_bx, &i386_device::i386_dec_ebx, },
- { 0x4C, OP_I386, &i386_device::i386_dec_sp, &i386_device::i386_dec_esp, },
- { 0x4D, OP_I386, &i386_device::i386_dec_bp, &i386_device::i386_dec_ebp, },
- { 0x4E, OP_I386, &i386_device::i386_dec_si, &i386_device::i386_dec_esi, },
- { 0x4F, OP_I386, &i386_device::i386_dec_di, &i386_device::i386_dec_edi, },
- { 0x50, OP_I386, &i386_device::i386_push_ax, &i386_device::i386_push_eax, },
- { 0x51, OP_I386, &i386_device::i386_push_cx, &i386_device::i386_push_ecx, },
- { 0x52, OP_I386, &i386_device::i386_push_dx, &i386_device::i386_push_edx, },
- { 0x53, OP_I386, &i386_device::i386_push_bx, &i386_device::i386_push_ebx, },
- { 0x54, OP_I386, &i386_device::i386_push_sp, &i386_device::i386_push_esp, },
- { 0x55, OP_I386, &i386_device::i386_push_bp, &i386_device::i386_push_ebp, },
- { 0x56, OP_I386, &i386_device::i386_push_si, &i386_device::i386_push_esi, },
- { 0x57, OP_I386, &i386_device::i386_push_di, &i386_device::i386_push_edi, },
- { 0x58, OP_I386, &i386_device::i386_pop_ax, &i386_device::i386_pop_eax, },
- { 0x59, OP_I386, &i386_device::i386_pop_cx, &i386_device::i386_pop_ecx, },
- { 0x5A, OP_I386, &i386_device::i386_pop_dx, &i386_device::i386_pop_edx, },
- { 0x5B, OP_I386, &i386_device::i386_pop_bx, &i386_device::i386_pop_ebx, },
- { 0x5C, OP_I386, &i386_device::i386_pop_sp, &i386_device::i386_pop_esp, },
- { 0x5D, OP_I386, &i386_device::i386_pop_bp, &i386_device::i386_pop_ebp, },
- { 0x5E, OP_I386, &i386_device::i386_pop_si, &i386_device::i386_pop_esi, },
- { 0x5F, OP_I386, &i386_device::i386_pop_di, &i386_device::i386_pop_edi, },
- { 0x60, OP_I386, &i386_device::i386_pusha, &i386_device::i386_pushad, },
- { 0x61, OP_I386, &i386_device::i386_popa, &i386_device::i386_popad, },
- { 0x62, OP_I386, &i386_device::i386_bound_r16_m16_m16, &i386_device::i386_bound_r32_m32_m32, },
- { 0x63, OP_I386, &i386_device::i386_arpl, &i386_device::i386_arpl, },
- { 0x64, OP_I386, &i386_device::i386_segment_FS, &i386_device::i386_segment_FS, },
- { 0x65, OP_I386, &i386_device::i386_segment_GS, &i386_device::i386_segment_GS, },
- { 0x66, OP_I386, &i386_device::i386_operand_size, &i386_device::i386_operand_size, },
- { 0x67, OP_I386, &i386_device::i386_address_size, &i386_device::i386_address_size, },
- { 0x68, OP_I386, &i386_device::i386_push_i16, &i386_device::i386_push_i32, },
- { 0x69, OP_I386, &i386_device::i386_imul_r16_rm16_i16, &i386_device::i386_imul_r32_rm32_i32, },
- { 0x6A, OP_I386, &i386_device::i386_push_i8, &i386_device::i386_push_i8, },
- { 0x6B, OP_I386, &i386_device::i386_imul_r16_rm16_i8, &i386_device::i386_imul_r32_rm32_i8, },
- { 0x6C, OP_I386, &i386_device::i386_insb, &i386_device::i386_insb, },
- { 0x6D, OP_I386, &i386_device::i386_insw, &i386_device::i386_insd, },
- { 0x6E, OP_I386, &i386_device::i386_outsb, &i386_device::i386_outsb, },
- { 0x6F, OP_I386, &i386_device::i386_outsw, &i386_device::i386_outsd, },
- { 0x70, OP_I386, &i386_device::i386_jo_rel8, &i386_device::i386_jo_rel8, },
- { 0x71, OP_I386, &i386_device::i386_jno_rel8, &i386_device::i386_jno_rel8, },
- { 0x72, OP_I386, &i386_device::i386_jc_rel8, &i386_device::i386_jc_rel8, },
- { 0x73, OP_I386, &i386_device::i386_jnc_rel8, &i386_device::i386_jnc_rel8, },
- { 0x74, OP_I386, &i386_device::i386_jz_rel8, &i386_device::i386_jz_rel8, },
- { 0x75, OP_I386, &i386_device::i386_jnz_rel8, &i386_device::i386_jnz_rel8, },
- { 0x76, OP_I386, &i386_device::i386_jbe_rel8, &i386_device::i386_jbe_rel8, },
- { 0x77, OP_I386, &i386_device::i386_ja_rel8, &i386_device::i386_ja_rel8, },
- { 0x78, OP_I386, &i386_device::i386_js_rel8, &i386_device::i386_js_rel8, },
- { 0x79, OP_I386, &i386_device::i386_jns_rel8, &i386_device::i386_jns_rel8, },
- { 0x7A, OP_I386, &i386_device::i386_jp_rel8, &i386_device::i386_jp_rel8, },
- { 0x7B, OP_I386, &i386_device::i386_jnp_rel8, &i386_device::i386_jnp_rel8, },
- { 0x7C, OP_I386, &i386_device::i386_jl_rel8, &i386_device::i386_jl_rel8, },
- { 0x7D, OP_I386, &i386_device::i386_jge_rel8, &i386_device::i386_jge_rel8, },
- { 0x7E, OP_I386, &i386_device::i386_jle_rel8, &i386_device::i386_jle_rel8, },
- { 0x7F, OP_I386, &i386_device::i386_jg_rel8, &i386_device::i386_jg_rel8, },
- { 0x80, OP_I386, &i386_device::i386_group80_8, &i386_device::i386_group80_8, },
- { 0x81, OP_I386, &i386_device::i386_group81_16, &i386_device::i386_group81_32, },
- { 0x82, OP_I386, &i386_device::i386_group80_8, &i386_device::i386_group80_8, },
- { 0x83, OP_I386, &i386_device::i386_group83_16, &i386_device::i386_group83_32, },
- { 0x84, OP_I386, &i386_device::i386_test_rm8_r8, &i386_device::i386_test_rm8_r8, },
- { 0x85, OP_I386, &i386_device::i386_test_rm16_r16, &i386_device::i386_test_rm32_r32, },
- { 0x86, OP_I386, &i386_device::i386_xchg_r8_rm8, &i386_device::i386_xchg_r8_rm8, },
- { 0x87, OP_I386, &i386_device::i386_xchg_r16_rm16, &i386_device::i386_xchg_r32_rm32, },
- { 0x88, OP_I386, &i386_device::i386_mov_rm8_r8, &i386_device::i386_mov_rm8_r8, },
- { 0x89, OP_I386, &i386_device::i386_mov_rm16_r16, &i386_device::i386_mov_rm32_r32, },
- { 0x8A, OP_I386, &i386_device::i386_mov_r8_rm8, &i386_device::i386_mov_r8_rm8, },
- { 0x8B, OP_I386, &i386_device::i386_mov_r16_rm16, &i386_device::i386_mov_r32_rm32, },
- { 0x8C, OP_I386, &i386_device::i386_mov_rm16_sreg, &i386_device::i386_mov_rm16_sreg, },
- { 0x8D, OP_I386, &i386_device::i386_lea16, &i386_device::i386_lea32, },
- { 0x8E, OP_I386, &i386_device::i386_mov_sreg_rm16, &i386_device::i386_mov_sreg_rm16, },
- { 0x8F, OP_I386, &i386_device::i386_pop_rm16, &i386_device::i386_pop_rm32, },
- { 0x90, OP_I386, &i386_device::i386_nop, &i386_device::i386_nop, },
- { 0x91, OP_I386, &i386_device::i386_xchg_ax_cx, &i386_device::i386_xchg_eax_ecx, },
- { 0x92, OP_I386, &i386_device::i386_xchg_ax_dx, &i386_device::i386_xchg_eax_edx, },
- { 0x93, OP_I386, &i386_device::i386_xchg_ax_bx, &i386_device::i386_xchg_eax_ebx, },
- { 0x94, OP_I386, &i386_device::i386_xchg_ax_sp, &i386_device::i386_xchg_eax_esp, },
- { 0x95, OP_I386, &i386_device::i386_xchg_ax_bp, &i386_device::i386_xchg_eax_ebp, },
- { 0x96, OP_I386, &i386_device::i386_xchg_ax_si, &i386_device::i386_xchg_eax_esi, },
- { 0x97, OP_I386, &i386_device::i386_xchg_ax_di, &i386_device::i386_xchg_eax_edi, },
- { 0x98, OP_I386, &i386_device::i386_cbw, &i386_device::i386_cwde, },
- { 0x99, OP_I386, &i386_device::i386_cwd, &i386_device::i386_cdq, },
- { 0x9A, OP_I386, &i386_device::i386_call_abs16, &i386_device::i386_call_abs32, },
- { 0x9B, OP_I386, &i386_device::i386_wait, &i386_device::i386_wait, },
- { 0x9C, OP_I386, &i386_device::i386_pushf, &i386_device::i386_pushfd, },
- { 0x9D, OP_I386, &i386_device::i386_popf, &i386_device::i386_popfd, },
- { 0x9E, OP_I386, &i386_device::i386_sahf, &i386_device::i386_sahf, },
- { 0x9F, OP_I386, &i386_device::i386_lahf, &i386_device::i386_lahf, },
- { 0xA0, OP_I386, &i386_device::i386_mov_al_m8, &i386_device::i386_mov_al_m8, },
- { 0xA1, OP_I386, &i386_device::i386_mov_ax_m16, &i386_device::i386_mov_eax_m32, },
- { 0xA2, OP_I386, &i386_device::i386_mov_m8_al, &i386_device::i386_mov_m8_al, },
- { 0xA3, OP_I386, &i386_device::i386_mov_m16_ax, &i386_device::i386_mov_m32_eax, },
- { 0xA4, OP_I386, &i386_device::i386_movsb, &i386_device::i386_movsb, },
- { 0xA5, OP_I386, &i386_device::i386_movsw, &i386_device::i386_movsd, },
- { 0xA6, OP_I386, &i386_device::i386_cmpsb, &i386_device::i386_cmpsb, },
- { 0xA7, OP_I386, &i386_device::i386_cmpsw, &i386_device::i386_cmpsd, },
- { 0xA8, OP_I386, &i386_device::i386_test_al_i8, &i386_device::i386_test_al_i8, },
- { 0xA9, OP_I386, &i386_device::i386_test_ax_i16, &i386_device::i386_test_eax_i32, },
- { 0xAA, OP_I386, &i386_device::i386_stosb, &i386_device::i386_stosb, },
- { 0xAB, OP_I386, &i386_device::i386_stosw, &i386_device::i386_stosd, },
- { 0xAC, OP_I386, &i386_device::i386_lodsb, &i386_device::i386_lodsb, },
- { 0xAD, OP_I386, &i386_device::i386_lodsw, &i386_device::i386_lodsd, },
- { 0xAE, OP_I386, &i386_device::i386_scasb, &i386_device::i386_scasb, },
- { 0xAF, OP_I386, &i386_device::i386_scasw, &i386_device::i386_scasd, },
- { 0xB0, OP_I386, &i386_device::i386_mov_al_i8, &i386_device::i386_mov_al_i8, },
- { 0xB1, OP_I386, &i386_device::i386_mov_cl_i8, &i386_device::i386_mov_cl_i8, },
- { 0xB2, OP_I386, &i386_device::i386_mov_dl_i8, &i386_device::i386_mov_dl_i8, },
- { 0xB3, OP_I386, &i386_device::i386_mov_bl_i8, &i386_device::i386_mov_bl_i8, },
- { 0xB4, OP_I386, &i386_device::i386_mov_ah_i8, &i386_device::i386_mov_ah_i8, },
- { 0xB5, OP_I386, &i386_device::i386_mov_ch_i8, &i386_device::i386_mov_ch_i8, },
- { 0xB6, OP_I386, &i386_device::i386_mov_dh_i8, &i386_device::i386_mov_dh_i8, },
- { 0xB7, OP_I386, &i386_device::i386_mov_bh_i8, &i386_device::i386_mov_bh_i8, },
- { 0xB8, OP_I386, &i386_device::i386_mov_ax_i16, &i386_device::i386_mov_eax_i32, },
- { 0xB9, OP_I386, &i386_device::i386_mov_cx_i16, &i386_device::i386_mov_ecx_i32, },
- { 0xBA, OP_I386, &i386_device::i386_mov_dx_i16, &i386_device::i386_mov_edx_i32, },
- { 0xBB, OP_I386, &i386_device::i386_mov_bx_i16, &i386_device::i386_mov_ebx_i32, },
- { 0xBC, OP_I386, &i386_device::i386_mov_sp_i16, &i386_device::i386_mov_esp_i32, },
- { 0xBD, OP_I386, &i386_device::i386_mov_bp_i16, &i386_device::i386_mov_ebp_i32, },
- { 0xBE, OP_I386, &i386_device::i386_mov_si_i16, &i386_device::i386_mov_esi_i32, },
- { 0xBF, OP_I386, &i386_device::i386_mov_di_i16, &i386_device::i386_mov_edi_i32, },
- { 0xC0, OP_I386, &i386_device::i386_groupC0_8, &i386_device::i386_groupC0_8, },
- { 0xC1, OP_I386, &i386_device::i386_groupC1_16, &i386_device::i386_groupC1_32, },
- { 0xC2, OP_I386, &i386_device::i386_ret_near16_i16, &i386_device::i386_ret_near32_i16, },
- { 0xC3, OP_I386, &i386_device::i386_ret_near16, &i386_device::i386_ret_near32, },
- { 0xC4, OP_I386, &i386_device::i386_les16, &i386_device::i386_les32, },
- { 0xC5, OP_I386, &i386_device::i386_lds16, &i386_device::i386_lds32, },
- { 0xC6, OP_I386, &i386_device::i386_mov_rm8_i8, &i386_device::i386_mov_rm8_i8, },
- { 0xC7, OP_I386, &i386_device::i386_mov_rm16_i16, &i386_device::i386_mov_rm32_i32, },
- { 0xC8, OP_I386, &i386_device::i386_enter16, &i386_device::i386_enter32, },
- { 0xC9, OP_I386, &i386_device::i386_leave16, &i386_device::i386_leave32, },
- { 0xCA, OP_I386, &i386_device::i386_retf_i16, &i386_device::i386_retf_i32, },
- { 0xCB, OP_I386, &i386_device::i386_retf16, &i386_device::i386_retf32, },
- { 0xCC, OP_I386, &i386_device::i386_int3, &i386_device::i386_int3, },
- { 0xCD, OP_I386, &i386_device::i386_int, &i386_device::i386_int, },
- { 0xCE, OP_I386, &i386_device::i386_into, &i386_device::i386_into, },
- { 0xCF, OP_I386, &i386_device::i386_iret16, &i386_device::i386_iret32, },
- { 0xD0, OP_I386, &i386_device::i386_groupD0_8, &i386_device::i386_groupD0_8, },
- { 0xD1, OP_I386, &i386_device::i386_groupD1_16, &i386_device::i386_groupD1_32, },
- { 0xD2, OP_I386, &i386_device::i386_groupD2_8, &i386_device::i386_groupD2_8, },
- { 0xD3, OP_I386, &i386_device::i386_groupD3_16, &i386_device::i386_groupD3_32, },
- { 0xD4, OP_I386, &i386_device::i386_aam, &i386_device::i386_aam, },
- { 0xD5, OP_I386, &i386_device::i386_aad, &i386_device::i386_aad, },
- { 0xD6, OP_I386, &i386_device::i386_setalc, &i386_device::i386_setalc, },
- { 0xD7, OP_I386, &i386_device::i386_xlat, &i386_device::i386_xlat, },
- { 0xD8, OP_I386, &i386_device::i386_escape, &i386_device::i386_escape, },
- { 0xD9, OP_I386, &i386_device::i386_escape, &i386_device::i386_escape, },
- { 0xDA, OP_I386, &i386_device::i386_escape, &i386_device::i386_escape, },
- { 0xDB, OP_I386, &i386_device::i386_escape, &i386_device::i386_escape, },
- { 0xDC, OP_I386, &i386_device::i386_escape, &i386_device::i386_escape, },
- { 0xDD, OP_I386, &i386_device::i386_escape, &i386_device::i386_escape, },
- { 0xDE, OP_I386, &i386_device::i386_escape, &i386_device::i386_escape, },
- { 0xDF, OP_I386, &i386_device::i386_escape, &i386_device::i386_escape, },
- { 0xD8, OP_FPU, &i386_device::i386_x87_group_d8, &i386_device::i386_x87_group_d8, },
- { 0xD9, OP_FPU, &i386_device::i386_x87_group_d9, &i386_device::i386_x87_group_d9, },
- { 0xDA, OP_FPU, &i386_device::i386_x87_group_da, &i386_device::i386_x87_group_da, },
- { 0xDB, OP_FPU, &i386_device::i386_x87_group_db, &i386_device::i386_x87_group_db, },
- { 0xDC, OP_FPU, &i386_device::i386_x87_group_dc, &i386_device::i386_x87_group_dc, },
- { 0xDD, OP_FPU, &i386_device::i386_x87_group_dd, &i386_device::i386_x87_group_dd, },
- { 0xDE, OP_FPU, &i386_device::i386_x87_group_de, &i386_device::i386_x87_group_de, },
- { 0xDF, OP_FPU, &i386_device::i386_x87_group_df, &i386_device::i386_x87_group_df, },
- { 0xE0, OP_I386, &i386_device::i386_loopne16, &i386_device::i386_loopne32, },
- { 0xE1, OP_I386, &i386_device::i386_loopz16, &i386_device::i386_loopz32, },
- { 0xE2, OP_I386, &i386_device::i386_loop16, &i386_device::i386_loop32, },
- { 0xE3, OP_I386, &i386_device::i386_jcxz16, &i386_device::i386_jcxz32, },
- { 0xE4, OP_I386, &i386_device::i386_in_al_i8, &i386_device::i386_in_al_i8, },
- { 0xE5, OP_I386, &i386_device::i386_in_ax_i8, &i386_device::i386_in_eax_i8, },
- { 0xE6, OP_I386, &i386_device::i386_out_al_i8, &i386_device::i386_out_al_i8, },
- { 0xE7, OP_I386, &i386_device::i386_out_ax_i8, &i386_device::i386_out_eax_i8, },
- { 0xE8, OP_I386, &i386_device::i386_call_rel16, &i386_device::i386_call_rel32, },
- { 0xE9, OP_I386, &i386_device::i386_jmp_rel16, &i386_device::i386_jmp_rel32, },
- { 0xEA, OP_I386, &i386_device::i386_jmp_abs16, &i386_device::i386_jmp_abs32, },
- { 0xEB, OP_I386, &i386_device::i386_jmp_rel8, &i386_device::i386_jmp_rel8, },
- { 0xEC, OP_I386, &i386_device::i386_in_al_dx, &i386_device::i386_in_al_dx, },
- { 0xED, OP_I386, &i386_device::i386_in_ax_dx, &i386_device::i386_in_eax_dx, },
- { 0xEE, OP_I386, &i386_device::i386_out_al_dx, &i386_device::i386_out_al_dx, },
- { 0xEF, OP_I386, &i386_device::i386_out_ax_dx, &i386_device::i386_out_eax_dx, },
- { 0xF0, OP_I386, &i386_device::i386_lock, &i386_device::i386_lock, },
- { 0xF1, OP_I386, &i386_device::i386_invalid, &i386_device::i386_invalid, },
- { 0xF2, OP_I386, &i386_device::i386_repne, &i386_device::i386_repne, },
- { 0xF3, OP_I386, &i386_device::i386_rep, &i386_device::i386_rep, },
- { 0xF4, OP_I386, &i386_device::i386_hlt, &i386_device::i386_hlt, },
- { 0xF5, OP_I386, &i386_device::i386_cmc, &i386_device::i386_cmc, },
- { 0xF6, OP_I386, &i386_device::i386_groupF6_8, &i386_device::i386_groupF6_8, },
- { 0xF7, OP_I386, &i386_device::i386_groupF7_16, &i386_device::i386_groupF7_32, },
- { 0xF8, OP_I386, &i386_device::i386_clc, &i386_device::i386_clc, },
- { 0xF9, OP_I386, &i386_device::i386_stc, &i386_device::i386_stc, },
- { 0xFA, OP_I386, &i386_device::i386_cli, &i386_device::i386_cli, },
- { 0xFB, OP_I386, &i386_device::i386_sti, &i386_device::i386_sti, },
- { 0xFC, OP_I386, &i386_device::i386_cld, &i386_device::i386_cld, },
- { 0xFD, OP_I386, &i386_device::i386_std, &i386_device::i386_std, },
- { 0xFE, OP_I386, &i386_device::i386_groupFE_8, &i386_device::i386_groupFE_8, },
- { 0xFF, OP_I386, &i386_device::i386_groupFF_16, &i386_device::i386_groupFF_32, },
+ { 0x00, OP_I386, &i386_device::i386_add_rm8_r8, &i386_device::i386_add_rm8_r8, true },
+ { 0x01, OP_I386, &i386_device::i386_add_rm16_r16, &i386_device::i386_add_rm32_r32, true },
+ { 0x02, OP_I386, &i386_device::i386_add_r8_rm8, &i386_device::i386_add_r8_rm8, false},
+ { 0x03, OP_I386, &i386_device::i386_add_r16_rm16, &i386_device::i386_add_r32_rm32, false},
+ { 0x04, OP_I386, &i386_device::i386_add_al_i8, &i386_device::i386_add_al_i8, false},
+ { 0x05, OP_I386, &i386_device::i386_add_ax_i16, &i386_device::i386_add_eax_i32, false},
+ { 0x06, OP_I386, &i386_device::i386_push_es16, &i386_device::i386_push_es32, false},
+ { 0x07, OP_I386, &i386_device::i386_pop_es16, &i386_device::i386_pop_es32, false},
+ { 0x08, OP_I386, &i386_device::i386_or_rm8_r8, &i386_device::i386_or_rm8_r8, true },
+ { 0x09, OP_I386, &i386_device::i386_or_rm16_r16, &i386_device::i386_or_rm32_r32, true },
+ { 0x0A, OP_I386, &i386_device::i386_or_r8_rm8, &i386_device::i386_or_r8_rm8, false},
+ { 0x0B, OP_I386, &i386_device::i386_or_r16_rm16, &i386_device::i386_or_r32_rm32, false},
+ { 0x0C, OP_I386, &i386_device::i386_or_al_i8, &i386_device::i386_or_al_i8, false},
+ { 0x0D, OP_I386, &i386_device::i386_or_ax_i16, &i386_device::i386_or_eax_i32, false},
+ { 0x0E, OP_I386, &i386_device::i386_push_cs16, &i386_device::i386_push_cs32, false},
+ { 0x0F, OP_I386, &i386_device::i386_decode_two_byte, &i386_device::i386_decode_two_byte, true },
+ { 0x10, OP_I386, &i386_device::i386_adc_rm8_r8, &i386_device::i386_adc_rm8_r8, true },
+ { 0x11, OP_I386, &i386_device::i386_adc_rm16_r16, &i386_device::i386_adc_rm32_r32, true },
+ { 0x12, OP_I386, &i386_device::i386_adc_r8_rm8, &i386_device::i386_adc_r8_rm8, false},
+ { 0x13, OP_I386, &i386_device::i386_adc_r16_rm16, &i386_device::i386_adc_r32_rm32, false},
+ { 0x14, OP_I386, &i386_device::i386_adc_al_i8, &i386_device::i386_adc_al_i8, false},
+ { 0x15, OP_I386, &i386_device::i386_adc_ax_i16, &i386_device::i386_adc_eax_i32, false},
+ { 0x16, OP_I386, &i386_device::i386_push_ss16, &i386_device::i386_push_ss32, false},
+ { 0x17, OP_I386, &i386_device::i386_pop_ss16, &i386_device::i386_pop_ss32, false},
+ { 0x18, OP_I386, &i386_device::i386_sbb_rm8_r8, &i386_device::i386_sbb_rm8_r8, true },
+ { 0x19, OP_I386, &i386_device::i386_sbb_rm16_r16, &i386_device::i386_sbb_rm32_r32, true },
+ { 0x1A, OP_I386, &i386_device::i386_sbb_r8_rm8, &i386_device::i386_sbb_r8_rm8, false},
+ { 0x1B, OP_I386, &i386_device::i386_sbb_r16_rm16, &i386_device::i386_sbb_r32_rm32, false},
+ { 0x1C, OP_I386, &i386_device::i386_sbb_al_i8, &i386_device::i386_sbb_al_i8, false},
+ { 0x1D, OP_I386, &i386_device::i386_sbb_ax_i16, &i386_device::i386_sbb_eax_i32, false},
+ { 0x1E, OP_I386, &i386_device::i386_push_ds16, &i386_device::i386_push_ds32, false},
+ { 0x1F, OP_I386, &i386_device::i386_pop_ds16, &i386_device::i386_pop_ds32, false},
+ { 0x20, OP_I386, &i386_device::i386_and_rm8_r8, &i386_device::i386_and_rm8_r8, true },
+ { 0x21, OP_I386, &i386_device::i386_and_rm16_r16, &i386_device::i386_and_rm32_r32, true },
+ { 0x22, OP_I386, &i386_device::i386_and_r8_rm8, &i386_device::i386_and_r8_rm8, false},
+ { 0x23, OP_I386, &i386_device::i386_and_r16_rm16, &i386_device::i386_and_r32_rm32, false},
+ { 0x24, OP_I386, &i386_device::i386_and_al_i8, &i386_device::i386_and_al_i8, false},
+ { 0x25, OP_I386, &i386_device::i386_and_ax_i16, &i386_device::i386_and_eax_i32, false},
+ { 0x26, OP_I386, &i386_device::i386_segment_ES, &i386_device::i386_segment_ES, false},
+ { 0x27, OP_I386, &i386_device::i386_daa, &i386_device::i386_daa, false},
+ { 0x28, OP_I386, &i386_device::i386_sub_rm8_r8, &i386_device::i386_sub_rm8_r8, true },
+ { 0x29, OP_I386, &i386_device::i386_sub_rm16_r16, &i386_device::i386_sub_rm32_r32, true },
+ { 0x2A, OP_I386, &i386_device::i386_sub_r8_rm8, &i386_device::i386_sub_r8_rm8, false},
+ { 0x2B, OP_I386, &i386_device::i386_sub_r16_rm16, &i386_device::i386_sub_r32_rm32, false},
+ { 0x2C, OP_I386, &i386_device::i386_sub_al_i8, &i386_device::i386_sub_al_i8, false},
+ { 0x2D, OP_I386, &i386_device::i386_sub_ax_i16, &i386_device::i386_sub_eax_i32, false},
+ { 0x2E, OP_I386, &i386_device::i386_segment_CS, &i386_device::i386_segment_CS, false},
+ { 0x2F, OP_I386, &i386_device::i386_das, &i386_device::i386_das, false},
+ { 0x30, OP_I386, &i386_device::i386_xor_rm8_r8, &i386_device::i386_xor_rm8_r8, true },
+ { 0x31, OP_I386, &i386_device::i386_xor_rm16_r16, &i386_device::i386_xor_rm32_r32, true },
+ { 0x32, OP_I386, &i386_device::i386_xor_r8_rm8, &i386_device::i386_xor_r8_rm8, false},
+ { 0x33, OP_I386, &i386_device::i386_xor_r16_rm16, &i386_device::i386_xor_r32_rm32, false},
+ { 0x34, OP_I386, &i386_device::i386_xor_al_i8, &i386_device::i386_xor_al_i8, false},
+ { 0x35, OP_I386, &i386_device::i386_xor_ax_i16, &i386_device::i386_xor_eax_i32, false},
+ { 0x36, OP_I386, &i386_device::i386_segment_SS, &i386_device::i386_segment_SS, false},
+ { 0x37, OP_I386, &i386_device::i386_aaa, &i386_device::i386_aaa, false},
+ { 0x38, OP_I386, &i386_device::i386_cmp_rm8_r8, &i386_device::i386_cmp_rm8_r8, false},
+ { 0x39, OP_I386, &i386_device::i386_cmp_rm16_r16, &i386_device::i386_cmp_rm32_r32, false},
+ { 0x3A, OP_I386, &i386_device::i386_cmp_r8_rm8, &i386_device::i386_cmp_r8_rm8, false},
+ { 0x3B, OP_I386, &i386_device::i386_cmp_r16_rm16, &i386_device::i386_cmp_r32_rm32, false},
+ { 0x3C, OP_I386, &i386_device::i386_cmp_al_i8, &i386_device::i386_cmp_al_i8, false},
+ { 0x3D, OP_I386, &i386_device::i386_cmp_ax_i16, &i386_device::i386_cmp_eax_i32, false},
+ { 0x3E, OP_I386, &i386_device::i386_segment_DS, &i386_device::i386_segment_DS, false},
+ { 0x3F, OP_I386, &i386_device::i386_aas, &i386_device::i386_aas, false},
+ { 0x40, OP_I386, &i386_device::i386_inc_ax, &i386_device::i386_inc_eax, false},
+ { 0x41, OP_I386, &i386_device::i386_inc_cx, &i386_device::i386_inc_ecx, false},
+ { 0x42, OP_I386, &i386_device::i386_inc_dx, &i386_device::i386_inc_edx, false},
+ { 0x43, OP_I386, &i386_device::i386_inc_bx, &i386_device::i386_inc_ebx, false},
+ { 0x44, OP_I386, &i386_device::i386_inc_sp, &i386_device::i386_inc_esp, false},
+ { 0x45, OP_I386, &i386_device::i386_inc_bp, &i386_device::i386_inc_ebp, false},
+ { 0x46, OP_I386, &i386_device::i386_inc_si, &i386_device::i386_inc_esi, false},
+ { 0x47, OP_I386, &i386_device::i386_inc_di, &i386_device::i386_inc_edi, false},
+ { 0x48, OP_I386, &i386_device::i386_dec_ax, &i386_device::i386_dec_eax, false},
+ { 0x49, OP_I386, &i386_device::i386_dec_cx, &i386_device::i386_dec_ecx, false},
+ { 0x4A, OP_I386, &i386_device::i386_dec_dx, &i386_device::i386_dec_edx, false},
+ { 0x4B, OP_I386, &i386_device::i386_dec_bx, &i386_device::i386_dec_ebx, false},
+ { 0x4C, OP_I386, &i386_device::i386_dec_sp, &i386_device::i386_dec_esp, false},
+ { 0x4D, OP_I386, &i386_device::i386_dec_bp, &i386_device::i386_dec_ebp, false},
+ { 0x4E, OP_I386, &i386_device::i386_dec_si, &i386_device::i386_dec_esi, false},
+ { 0x4F, OP_I386, &i386_device::i386_dec_di, &i386_device::i386_dec_edi, false},
+ { 0x50, OP_I386, &i386_device::i386_push_ax, &i386_device::i386_push_eax, false},
+ { 0x51, OP_I386, &i386_device::i386_push_cx, &i386_device::i386_push_ecx, false},
+ { 0x52, OP_I386, &i386_device::i386_push_dx, &i386_device::i386_push_edx, false},
+ { 0x53, OP_I386, &i386_device::i386_push_bx, &i386_device::i386_push_ebx, false},
+ { 0x54, OP_I386, &i386_device::i386_push_sp, &i386_device::i386_push_esp, false},
+ { 0x55, OP_I386, &i386_device::i386_push_bp, &i386_device::i386_push_ebp, false},
+ { 0x56, OP_I386, &i386_device::i386_push_si, &i386_device::i386_push_esi, false},
+ { 0x57, OP_I386, &i386_device::i386_push_di, &i386_device::i386_push_edi, false},
+ { 0x58, OP_I386, &i386_device::i386_pop_ax, &i386_device::i386_pop_eax, false},
+ { 0x59, OP_I386, &i386_device::i386_pop_cx, &i386_device::i386_pop_ecx, false},
+ { 0x5A, OP_I386, &i386_device::i386_pop_dx, &i386_device::i386_pop_edx, false},
+ { 0x5B, OP_I386, &i386_device::i386_pop_bx, &i386_device::i386_pop_ebx, false},
+ { 0x5C, OP_I386, &i386_device::i386_pop_sp, &i386_device::i386_pop_esp, false},
+ { 0x5D, OP_I386, &i386_device::i386_pop_bp, &i386_device::i386_pop_ebp, false},
+ { 0x5E, OP_I386, &i386_device::i386_pop_si, &i386_device::i386_pop_esi, false},
+ { 0x5F, OP_I386, &i386_device::i386_pop_di, &i386_device::i386_pop_edi, false},
+ { 0x60, OP_I386, &i386_device::i386_pusha, &i386_device::i386_pushad, false},
+ { 0x61, OP_I386, &i386_device::i386_popa, &i386_device::i386_popad, false},
+ { 0x62, OP_I386, &i386_device::i386_bound_r16_m16_m16, &i386_device::i386_bound_r32_m32_m32, false},
+ { 0x63, OP_I386, &i386_device::i386_arpl, &i386_device::i386_arpl, false},
+ { 0x64, OP_I386, &i386_device::i386_segment_FS, &i386_device::i386_segment_FS, false},
+ { 0x65, OP_I386, &i386_device::i386_segment_GS, &i386_device::i386_segment_GS, false},
+ { 0x66, OP_I386, &i386_device::i386_operand_size, &i386_device::i386_operand_size, false},
+ { 0x67, OP_I386, &i386_device::i386_address_size, &i386_device::i386_address_size, false},
+ { 0x68, OP_I386, &i386_device::i386_push_i16, &i386_device::i386_push_i32, false},
+ { 0x69, OP_I386, &i386_device::i386_imul_r16_rm16_i16, &i386_device::i386_imul_r32_rm32_i32, false},
+ { 0x6A, OP_I386, &i386_device::i386_push_i8, &i386_device::i386_push_i8, false},
+ { 0x6B, OP_I386, &i386_device::i386_imul_r16_rm16_i8, &i386_device::i386_imul_r32_rm32_i8, false},
+ { 0x6C, OP_I386, &i386_device::i386_insb, &i386_device::i386_insb, false},
+ { 0x6D, OP_I386, &i386_device::i386_insw, &i386_device::i386_insd, false},
+ { 0x6E, OP_I386, &i386_device::i386_outsb, &i386_device::i386_outsb, false},
+ { 0x6F, OP_I386, &i386_device::i386_outsw, &i386_device::i386_outsd, false},
+ { 0x70, OP_I386, &i386_device::i386_jo_rel8, &i386_device::i386_jo_rel8, false},
+ { 0x71, OP_I386, &i386_device::i386_jno_rel8, &i386_device::i386_jno_rel8, false},
+ { 0x72, OP_I386, &i386_device::i386_jc_rel8, &i386_device::i386_jc_rel8, false},
+ { 0x73, OP_I386, &i386_device::i386_jnc_rel8, &i386_device::i386_jnc_rel8, false},
+ { 0x74, OP_I386, &i386_device::i386_jz_rel8, &i386_device::i386_jz_rel8, false},
+ { 0x75, OP_I386, &i386_device::i386_jnz_rel8, &i386_device::i386_jnz_rel8, false},
+ { 0x76, OP_I386, &i386_device::i386_jbe_rel8, &i386_device::i386_jbe_rel8, false},
+ { 0x77, OP_I386, &i386_device::i386_ja_rel8, &i386_device::i386_ja_rel8, false},
+ { 0x78, OP_I386, &i386_device::i386_js_rel8, &i386_device::i386_js_rel8, false},
+ { 0x79, OP_I386, &i386_device::i386_jns_rel8, &i386_device::i386_jns_rel8, false},
+ { 0x7A, OP_I386, &i386_device::i386_jp_rel8, &i386_device::i386_jp_rel8, false},
+ { 0x7B, OP_I386, &i386_device::i386_jnp_rel8, &i386_device::i386_jnp_rel8, false},
+ { 0x7C, OP_I386, &i386_device::i386_jl_rel8, &i386_device::i386_jl_rel8, false},
+ { 0x7D, OP_I386, &i386_device::i386_jge_rel8, &i386_device::i386_jge_rel8, false},
+ { 0x7E, OP_I386, &i386_device::i386_jle_rel8, &i386_device::i386_jle_rel8, false},
+ { 0x7F, OP_I386, &i386_device::i386_jg_rel8, &i386_device::i386_jg_rel8, false},
+ { 0x80, OP_I386, &i386_device::i386_group80_8, &i386_device::i386_group80_8, true },
+ { 0x81, OP_I386, &i386_device::i386_group81_16, &i386_device::i386_group81_32, true },
+ { 0x82, OP_I386, &i386_device::i386_group80_8, &i386_device::i386_group80_8, true },
+ { 0x83, OP_I386, &i386_device::i386_group83_16, &i386_device::i386_group83_32, true },
+ { 0x84, OP_I386, &i386_device::i386_test_rm8_r8, &i386_device::i386_test_rm8_r8, false},
+ { 0x85, OP_I386, &i386_device::i386_test_rm16_r16, &i386_device::i386_test_rm32_r32, false},
+ { 0x86, OP_I386, &i386_device::i386_xchg_r8_rm8, &i386_device::i386_xchg_r8_rm8, true },
+ { 0x87, OP_I386, &i386_device::i386_xchg_r16_rm16, &i386_device::i386_xchg_r32_rm32, true },
+ { 0x88, OP_I386, &i386_device::i386_mov_rm8_r8, &i386_device::i386_mov_rm8_r8, false},
+ { 0x89, OP_I386, &i386_device::i386_mov_rm16_r16, &i386_device::i386_mov_rm32_r32, false},
+ { 0x8A, OP_I386, &i386_device::i386_mov_r8_rm8, &i386_device::i386_mov_r8_rm8, false},
+ { 0x8B, OP_I386, &i386_device::i386_mov_r16_rm16, &i386_device::i386_mov_r32_rm32, false},
+ { 0x8C, OP_I386, &i386_device::i386_mov_rm16_sreg, &i386_device::i386_mov_rm16_sreg, false},
+ { 0x8D, OP_I386, &i386_device::i386_lea16, &i386_device::i386_lea32, false},
+ { 0x8E, OP_I386, &i386_device::i386_mov_sreg_rm16, &i386_device::i386_mov_sreg_rm16, false},
+ { 0x8F, OP_I386, &i386_device::i386_pop_rm16, &i386_device::i386_pop_rm32, false},
+ { 0x90, OP_I386, &i386_device::i386_nop, &i386_device::i386_nop, false},
+ { 0x91, OP_I386, &i386_device::i386_xchg_ax_cx, &i386_device::i386_xchg_eax_ecx, false},
+ { 0x92, OP_I386, &i386_device::i386_xchg_ax_dx, &i386_device::i386_xchg_eax_edx, false},
+ { 0x93, OP_I386, &i386_device::i386_xchg_ax_bx, &i386_device::i386_xchg_eax_ebx, false},
+ { 0x94, OP_I386, &i386_device::i386_xchg_ax_sp, &i386_device::i386_xchg_eax_esp, false},
+ { 0x95, OP_I386, &i386_device::i386_xchg_ax_bp, &i386_device::i386_xchg_eax_ebp, false},
+ { 0x96, OP_I386, &i386_device::i386_xchg_ax_si, &i386_device::i386_xchg_eax_esi, false},
+ { 0x97, OP_I386, &i386_device::i386_xchg_ax_di, &i386_device::i386_xchg_eax_edi, false},
+ { 0x98, OP_I386, &i386_device::i386_cbw, &i386_device::i386_cwde, false},
+ { 0x99, OP_I386, &i386_device::i386_cwd, &i386_device::i386_cdq, false},
+ { 0x9A, OP_I386, &i386_device::i386_call_abs16, &i386_device::i386_call_abs32, false},
+ { 0x9B, OP_I386, &i386_device::i386_wait, &i386_device::i386_wait, false},
+ { 0x9C, OP_I386, &i386_device::i386_pushf, &i386_device::i386_pushfd, false},
+ { 0x9D, OP_I386, &i386_device::i386_popf, &i386_device::i386_popfd, false},
+ { 0x9E, OP_I386, &i386_device::i386_sahf, &i386_device::i386_sahf, false},
+ { 0x9F, OP_I386, &i386_device::i386_lahf, &i386_device::i386_lahf, false},
+ { 0xA0, OP_I386, &i386_device::i386_mov_al_m8, &i386_device::i386_mov_al_m8, false},
+ { 0xA1, OP_I386, &i386_device::i386_mov_ax_m16, &i386_device::i386_mov_eax_m32, false},
+ { 0xA2, OP_I386, &i386_device::i386_mov_m8_al, &i386_device::i386_mov_m8_al, false},
+ { 0xA3, OP_I386, &i386_device::i386_mov_m16_ax, &i386_device::i386_mov_m32_eax, false},
+ { 0xA4, OP_I386, &i386_device::i386_movsb, &i386_device::i386_movsb, false},
+ { 0xA5, OP_I386, &i386_device::i386_movsw, &i386_device::i386_movsd, false},
+ { 0xA6, OP_I386, &i386_device::i386_cmpsb, &i386_device::i386_cmpsb, false},
+ { 0xA7, OP_I386, &i386_device::i386_cmpsw, &i386_device::i386_cmpsd, false},
+ { 0xA8, OP_I386, &i386_device::i386_test_al_i8, &i386_device::i386_test_al_i8, false},
+ { 0xA9, OP_I386, &i386_device::i386_test_ax_i16, &i386_device::i386_test_eax_i32, false},
+ { 0xAA, OP_I386, &i386_device::i386_stosb, &i386_device::i386_stosb, false},
+ { 0xAB, OP_I386, &i386_device::i386_stosw, &i386_device::i386_stosd, false},
+ { 0xAC, OP_I386, &i386_device::i386_lodsb, &i386_device::i386_lodsb, false},
+ { 0xAD, OP_I386, &i386_device::i386_lodsw, &i386_device::i386_lodsd, false},
+ { 0xAE, OP_I386, &i386_device::i386_scasb, &i386_device::i386_scasb, false},
+ { 0xAF, OP_I386, &i386_device::i386_scasw, &i386_device::i386_scasd, false},
+ { 0xB0, OP_I386, &i386_device::i386_mov_al_i8, &i386_device::i386_mov_al_i8, false},
+ { 0xB1, OP_I386, &i386_device::i386_mov_cl_i8, &i386_device::i386_mov_cl_i8, false},
+ { 0xB2, OP_I386, &i386_device::i386_mov_dl_i8, &i386_device::i386_mov_dl_i8, false},
+ { 0xB3, OP_I386, &i386_device::i386_mov_bl_i8, &i386_device::i386_mov_bl_i8, false},
+ { 0xB4, OP_I386, &i386_device::i386_mov_ah_i8, &i386_device::i386_mov_ah_i8, false},
+ { 0xB5, OP_I386, &i386_device::i386_mov_ch_i8, &i386_device::i386_mov_ch_i8, false},
+ { 0xB6, OP_I386, &i386_device::i386_mov_dh_i8, &i386_device::i386_mov_dh_i8, false},
+ { 0xB7, OP_I386, &i386_device::i386_mov_bh_i8, &i386_device::i386_mov_bh_i8, false},
+ { 0xB8, OP_I386, &i386_device::i386_mov_ax_i16, &i386_device::i386_mov_eax_i32, false},
+ { 0xB9, OP_I386, &i386_device::i386_mov_cx_i16, &i386_device::i386_mov_ecx_i32, false},
+ { 0xBA, OP_I386, &i386_device::i386_mov_dx_i16, &i386_device::i386_mov_edx_i32, false},
+ { 0xBB, OP_I386, &i386_device::i386_mov_bx_i16, &i386_device::i386_mov_ebx_i32, false},
+ { 0xBC, OP_I386, &i386_device::i386_mov_sp_i16, &i386_device::i386_mov_esp_i32, false},
+ { 0xBD, OP_I386, &i386_device::i386_mov_bp_i16, &i386_device::i386_mov_ebp_i32, false},
+ { 0xBE, OP_I386, &i386_device::i386_mov_si_i16, &i386_device::i386_mov_esi_i32, false},
+ { 0xBF, OP_I386, &i386_device::i386_mov_di_i16, &i386_device::i386_mov_edi_i32, false},
+ { 0xC0, OP_I386, &i386_device::i386_groupC0_8, &i386_device::i386_groupC0_8, false},
+ { 0xC1, OP_I386, &i386_device::i386_groupC1_16, &i386_device::i386_groupC1_32, false},
+ { 0xC2, OP_I386, &i386_device::i386_ret_near16_i16, &i386_device::i386_ret_near32_i16, false},
+ { 0xC3, OP_I386, &i386_device::i386_ret_near16, &i386_device::i386_ret_near32, false},
+ { 0xC4, OP_I386, &i386_device::i386_les16, &i386_device::i386_les32, false},
+ { 0xC5, OP_I386, &i386_device::i386_lds16, &i386_device::i386_lds32, false},
+ { 0xC6, OP_I386, &i386_device::i386_mov_rm8_i8, &i386_device::i386_mov_rm8_i8, false},
+ { 0xC7, OP_I386, &i386_device::i386_mov_rm16_i16, &i386_device::i386_mov_rm32_i32, false},
+ { 0xC8, OP_I386, &i386_device::i386_enter16, &i386_device::i386_enter32, false},
+ { 0xC9, OP_I386, &i386_device::i386_leave16, &i386_device::i386_leave32, false},
+ { 0xCA, OP_I386, &i386_device::i386_retf_i16, &i386_device::i386_retf_i32, false},
+ { 0xCB, OP_I386, &i386_device::i386_retf16, &i386_device::i386_retf32, false},
+ { 0xCC, OP_I386, &i386_device::i386_int3, &i386_device::i386_int3, false},
+ { 0xCD, OP_I386, &i386_device::i386_int, &i386_device::i386_int, false},
+ { 0xCE, OP_I386, &i386_device::i386_into, &i386_device::i386_into, false},
+ { 0xCF, OP_I386, &i386_device::i386_iret16, &i386_device::i386_iret32, false},
+ { 0xD0, OP_I386, &i386_device::i386_groupD0_8, &i386_device::i386_groupD0_8, false},
+ { 0xD1, OP_I386, &i386_device::i386_groupD1_16, &i386_device::i386_groupD1_32, false},
+ { 0xD2, OP_I386, &i386_device::i386_groupD2_8, &i386_device::i386_groupD2_8, false},
+ { 0xD3, OP_I386, &i386_device::i386_groupD3_16, &i386_device::i386_groupD3_32, false},
+ { 0xD4, OP_I386, &i386_device::i386_aam, &i386_device::i386_aam, false},
+ { 0xD5, OP_I386, &i386_device::i386_aad, &i386_device::i386_aad, false},
+ { 0xD6, OP_I386, &i386_device::i386_setalc, &i386_device::i386_setalc, false},
+ { 0xD7, OP_I386, &i386_device::i386_xlat, &i386_device::i386_xlat, false},
+ { 0xD8, OP_I386, &i386_device::i386_escape, &i386_device::i386_escape, false},
+ { 0xD9, OP_I386, &i386_device::i386_escape, &i386_device::i386_escape, false},
+ { 0xDA, OP_I386, &i386_device::i386_escape, &i386_device::i386_escape, false},
+ { 0xDB, OP_I386, &i386_device::i386_escape, &i386_device::i386_escape, false},
+ { 0xDC, OP_I386, &i386_device::i386_escape, &i386_device::i386_escape, false},
+ { 0xDD, OP_I386, &i386_device::i386_escape, &i386_device::i386_escape, false},
+ { 0xDE, OP_I386, &i386_device::i386_escape, &i386_device::i386_escape, false},
+ { 0xDF, OP_I386, &i386_device::i386_escape, &i386_device::i386_escape, false},
+ { 0xD8, OP_FPU, &i386_device::i386_x87_group_d8, &i386_device::i386_x87_group_d8, false},
+ { 0xD9, OP_FPU, &i386_device::i386_x87_group_d9, &i386_device::i386_x87_group_d9, false},
+ { 0xDA, OP_FPU, &i386_device::i386_x87_group_da, &i386_device::i386_x87_group_da, false},
+ { 0xDB, OP_FPU, &i386_device::i386_x87_group_db, &i386_device::i386_x87_group_db, false},
+ { 0xDC, OP_FPU, &i386_device::i386_x87_group_dc, &i386_device::i386_x87_group_dc, false},
+ { 0xDD, OP_FPU, &i386_device::i386_x87_group_dd, &i386_device::i386_x87_group_dd, false},
+ { 0xDE, OP_FPU, &i386_device::i386_x87_group_de, &i386_device::i386_x87_group_de, false},
+ { 0xDF, OP_FPU, &i386_device::i386_x87_group_df, &i386_device::i386_x87_group_df, false},
+ { 0xE0, OP_I386, &i386_device::i386_loopne16, &i386_device::i386_loopne32, false},
+ { 0xE1, OP_I386, &i386_device::i386_loopz16, &i386_device::i386_loopz32, false},
+ { 0xE2, OP_I386, &i386_device::i386_loop16, &i386_device::i386_loop32, false},
+ { 0xE3, OP_I386, &i386_device::i386_jcxz16, &i386_device::i386_jcxz32, false},
+ { 0xE4, OP_I386, &i386_device::i386_in_al_i8, &i386_device::i386_in_al_i8, false},
+ { 0xE5, OP_I386, &i386_device::i386_in_ax_i8, &i386_device::i386_in_eax_i8, false},
+ { 0xE6, OP_I386, &i386_device::i386_out_al_i8, &i386_device::i386_out_al_i8, false},
+ { 0xE7, OP_I386, &i386_device::i386_out_ax_i8, &i386_device::i386_out_eax_i8, false},
+ { 0xE8, OP_I386, &i386_device::i386_call_rel16, &i386_device::i386_call_rel32, false},
+ { 0xE9, OP_I386, &i386_device::i386_jmp_rel16, &i386_device::i386_jmp_rel32, false},
+ { 0xEA, OP_I386, &i386_device::i386_jmp_abs16, &i386_device::i386_jmp_abs32, false},
+ { 0xEB, OP_I386, &i386_device::i386_jmp_rel8, &i386_device::i386_jmp_rel8, false},
+ { 0xEC, OP_I386, &i386_device::i386_in_al_dx, &i386_device::i386_in_al_dx, false},
+ { 0xED, OP_I386, &i386_device::i386_in_ax_dx, &i386_device::i386_in_eax_dx, false},
+ { 0xEE, OP_I386, &i386_device::i386_out_al_dx, &i386_device::i386_out_al_dx, false},
+ { 0xEF, OP_I386, &i386_device::i386_out_ax_dx, &i386_device::i386_out_eax_dx, false},
+ { 0xF0, OP_I386, &i386_device::i386_lock, &i386_device::i386_lock, false},
+ { 0xF1, OP_I386, &i386_device::i386_invalid, &i386_device::i386_invalid, false},
+ { 0xF2, OP_I386, &i386_device::i386_repne, &i386_device::i386_repne, false},
+ { 0xF3, OP_I386, &i386_device::i386_rep, &i386_device::i386_rep, false},
+ { 0xF4, OP_I386, &i386_device::i386_hlt, &i386_device::i386_hlt, false},
+ { 0xF5, OP_I386, &i386_device::i386_cmc, &i386_device::i386_cmc, false},
+ { 0xF6, OP_I386, &i386_device::i386_groupF6_8, &i386_device::i386_groupF6_8, true },
+ { 0xF7, OP_I386, &i386_device::i386_groupF7_16, &i386_device::i386_groupF7_32, true },
+ { 0xF8, OP_I386, &i386_device::i386_clc, &i386_device::i386_clc, false},
+ { 0xF9, OP_I386, &i386_device::i386_stc, &i386_device::i386_stc, false},
+ { 0xFA, OP_I386, &i386_device::i386_cli, &i386_device::i386_cli, false},
+ { 0xFB, OP_I386, &i386_device::i386_sti, &i386_device::i386_sti, false},
+ { 0xFC, OP_I386, &i386_device::i386_cld, &i386_device::i386_cld, false},
+ { 0xFD, OP_I386, &i386_device::i386_std, &i386_device::i386_std, false},
+ { 0xFE, OP_I386, &i386_device::i386_groupFE_8, &i386_device::i386_groupFE_8, true },
+ { 0xFF, OP_I386, &i386_device::i386_groupFF_16, &i386_device::i386_groupFF_32, true },
/* 0F ?? */
- { 0x00, OP_2BYTE|OP_I386, &i386_device::i386_group0F00_16, &i386_device::i386_group0F00_32, },
- { 0x01, OP_2BYTE|OP_I386, &i386_device::i386_group0F01_16, &i386_device::i386_group0F01_32, },
- { 0x01, OP_2BYTE|OP_I486, &i386_device::i486_group0F01_16, &i386_device::i486_group0F01_32, },
- { 0x02, OP_2BYTE|OP_I386, &i386_device::i386_lar_r16_rm16, &i386_device::i386_lar_r32_rm32, },
- { 0x03, OP_2BYTE|OP_I386, &i386_device::i386_lsl_r16_rm16, &i386_device::i386_lsl_r32_rm32, },
- { 0x06, OP_2BYTE|OP_I386, &i386_device::i386_clts, &i386_device::i386_clts, },
- { 0x07, OP_2BYTE|OP_I386, &i386_device::i386_loadall, &i386_device::i386_loadall, },
- { 0x08, OP_2BYTE|OP_I486, &i386_device::i486_invd, &i386_device::i486_invd, },
- { 0x09, OP_2BYTE|OP_I486, &i386_device::i486_wbinvd, &i386_device::i486_wbinvd, },
- { 0x0B, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_ud2, &i386_device::pentium_ud2, },
- { 0x10, OP_2BYTE|OP_SSE, &i386_device::sse_movups_r128_rm128, &i386_device::sse_movups_r128_rm128, },
- { 0x11, OP_2BYTE|OP_SSE, &i386_device::sse_movups_rm128_r128, &i386_device::sse_movups_rm128_r128, },
- { 0x12, OP_2BYTE|OP_SSE, &i386_device::sse_movlps_r128_m64, &i386_device::sse_movlps_r128_m64, },
- { 0x13, OP_2BYTE|OP_SSE, &i386_device::sse_movlps_m64_r128, &i386_device::sse_movlps_m64_r128, },
- { 0x14, OP_2BYTE|OP_SSE, &i386_device::sse_unpcklps_r128_rm128, &i386_device::sse_unpcklps_r128_rm128, },
- { 0x15, OP_2BYTE|OP_SSE, &i386_device::sse_unpckhps_r128_rm128, &i386_device::sse_unpckhps_r128_rm128, },
- { 0x16, OP_2BYTE|OP_SSE, &i386_device::sse_movhps_r128_m64, &i386_device::sse_movhps_r128_m64, },
- { 0x17, OP_2BYTE|OP_SSE, &i386_device::sse_movhps_m64_r128, &i386_device::sse_movhps_m64_r128, },
- { 0x18, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_prefetch_m8, &i386_device::pentium_prefetch_m8, },
- { 0x20, OP_2BYTE|OP_I386, &i386_device::i386_mov_r32_cr, &i386_device::i386_mov_r32_cr, },
- { 0x21, OP_2BYTE|OP_I386, &i386_device::i386_mov_r32_dr, &i386_device::i386_mov_r32_dr, },
- { 0x22, OP_2BYTE|OP_I386, &i386_device::i386_mov_cr_r32, &i386_device::i386_mov_cr_r32, },
- { 0x22, OP_2BYTE|OP_I486, &i386_device::i486_mov_cr_r32, &i386_device::i486_mov_cr_r32, },
- { 0x23, OP_2BYTE|OP_I386, &i386_device::i386_mov_dr_r32, &i386_device::i386_mov_dr_r32, },
- { 0x24, OP_2BYTE|OP_I386, &i386_device::i386_mov_r32_tr, &i386_device::i386_mov_r32_tr, },
- { 0x26, OP_2BYTE|OP_I386, &i386_device::i386_mov_tr_r32, &i386_device::i386_mov_tr_r32, },
- { 0x28, OP_2BYTE|OP_SSE, &i386_device::sse_movaps_r128_rm128, &i386_device::sse_movaps_r128_rm128, },
- { 0x29, OP_2BYTE|OP_SSE, &i386_device::sse_movaps_rm128_r128, &i386_device::sse_movaps_rm128_r128, },
- { 0x2a, OP_2BYTE|OP_SSE, &i386_device::sse_cvtpi2ps_r128_rm64, &i386_device::sse_cvtpi2ps_r128_rm64, },
- { 0x2b, OP_2BYTE|OP_SSE, &i386_device::sse_movntps_m128_r128, &i386_device::sse_movntps_m128_r128, },
- { 0x2c, OP_2BYTE|OP_SSE, &i386_device::sse_cvttps2pi_r64_r128m64, &i386_device::sse_cvttps2pi_r64_r128m64,},
- { 0x2d, OP_2BYTE|OP_SSE, &i386_device::sse_cvtps2pi_r64_r128m64, &i386_device::sse_cvtps2pi_r64_r128m64,},
- { 0x2e, OP_2BYTE|OP_SSE, &i386_device::sse_ucomiss_r128_r128m32, &i386_device::sse_ucomiss_r128_r128m32,},
- { 0x2f, OP_2BYTE|OP_SSE, &i386_device::sse_comiss_r128_r128m32, &i386_device::sse_comiss_r128_r128m32, },
- { 0x30, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_wrmsr, &i386_device::pentium_wrmsr, },
- { 0x31, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_rdtsc, &i386_device::pentium_rdtsc, },
- { 0x32, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_rdmsr, &i386_device::pentium_rdmsr, },
- { 0x40, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovo_r16_rm16, &i386_device::pentium_cmovo_r32_rm32, },
- { 0x41, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovno_r16_rm16, &i386_device::pentium_cmovno_r32_rm32, },
- { 0x42, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovb_r16_rm16, &i386_device::pentium_cmovb_r32_rm32, },
- { 0x43, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovae_r16_rm16, &i386_device::pentium_cmovae_r32_rm32, },
- { 0x44, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmove_r16_rm16, &i386_device::pentium_cmove_r32_rm32, },
- { 0x45, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovne_r16_rm16, &i386_device::pentium_cmovne_r32_rm32, },
- { 0x46, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovbe_r16_rm16, &i386_device::pentium_cmovbe_r32_rm32, },
- { 0x47, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmova_r16_rm16, &i386_device::pentium_cmova_r32_rm32, },
- { 0x48, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovs_r16_rm16, &i386_device::pentium_cmovs_r32_rm32, },
- { 0x49, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovns_r16_rm16, &i386_device::pentium_cmovns_r32_rm32, },
- { 0x4a, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovp_r16_rm16, &i386_device::pentium_cmovp_r32_rm32, },
- { 0x4b, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovnp_r16_rm16, &i386_device::pentium_cmovnp_r32_rm32, },
- { 0x4c, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovl_r16_rm16, &i386_device::pentium_cmovl_r32_rm32, },
- { 0x4d, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovge_r16_rm16, &i386_device::pentium_cmovge_r32_rm32, },
- { 0x4e, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovle_r16_rm16, &i386_device::pentium_cmovle_r32_rm32, },
- { 0x4f, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovg_r16_rm16, &i386_device::pentium_cmovg_r32_rm32, },
- { 0x50, OP_2BYTE|OP_SSE, &i386_device::sse_movmskps_r16_r128, &i386_device::sse_movmskps_r32_r128, },
- { 0x51, OP_2BYTE|OP_SSE, &i386_device::sse_sqrtps_r128_rm128, &i386_device::sse_sqrtps_r128_rm128, },
- { 0x52, OP_2BYTE|OP_SSE, &i386_device::sse_rsqrtps_r128_rm128, &i386_device::sse_rsqrtps_r128_rm128, },
- { 0x53, OP_2BYTE|OP_SSE, &i386_device::sse_rcpps_r128_rm128, &i386_device::sse_rcpps_r128_rm128, },
- { 0x54, OP_2BYTE|OP_SSE, &i386_device::sse_andps_r128_rm128, &i386_device::sse_andps_r128_rm128, },
- { 0x55, OP_2BYTE|OP_SSE, &i386_device::sse_andnps_r128_rm128, &i386_device::sse_andnps_r128_rm128, },
- { 0x56, OP_2BYTE|OP_SSE, &i386_device::sse_orps_r128_rm128, &i386_device::sse_orps_r128_rm128, },
- { 0x57, OP_2BYTE|OP_SSE, &i386_device::sse_xorps, &i386_device::sse_xorps, },
- { 0x58, OP_2BYTE|OP_SSE, &i386_device::sse_addps, &i386_device::sse_addps, },
- { 0x59, OP_2BYTE|OP_SSE, &i386_device::sse_mulps, &i386_device::sse_mulps, },
- { 0x5a, OP_2BYTE|OP_SSE, &i386_device::sse_cvtps2pd_r128_r128m64, &i386_device::sse_cvtps2pd_r128_r128m64,},
- { 0x5b, OP_2BYTE|OP_SSE, &i386_device::sse_cvtdq2ps_r128_rm128, &i386_device::sse_cvtdq2ps_r128_rm128, },
- { 0x5c, OP_2BYTE|OP_SSE, &i386_device::sse_subps, &i386_device::sse_subps, },
- { 0x5d, OP_2BYTE|OP_SSE, &i386_device::sse_minps, &i386_device::sse_minps, },
- { 0x5e, OP_2BYTE|OP_SSE, &i386_device::sse_divps, &i386_device::sse_divps, },
- { 0x5f, OP_2BYTE|OP_SSE, &i386_device::sse_maxps, &i386_device::sse_maxps, },
- { 0x60, OP_2BYTE|OP_MMX, &i386_device::mmx_punpcklbw_r64_r64m32, &i386_device::mmx_punpcklbw_r64_r64m32,},
- { 0x61, OP_2BYTE|OP_MMX, &i386_device::mmx_punpcklwd_r64_r64m32, &i386_device::mmx_punpcklwd_r64_r64m32,},
- { 0x62, OP_2BYTE|OP_MMX, &i386_device::mmx_punpckldq_r64_r64m32, &i386_device::mmx_punpckldq_r64_r64m32,},
- { 0x63, OP_2BYTE|OP_MMX, &i386_device::mmx_packsswb_r64_rm64, &i386_device::mmx_packsswb_r64_rm64, },
- { 0x64, OP_2BYTE|OP_MMX, &i386_device::mmx_pcmpgtb_r64_rm64, &i386_device::mmx_pcmpgtb_r64_rm64, },
- { 0x65, OP_2BYTE|OP_MMX, &i386_device::mmx_pcmpgtw_r64_rm64, &i386_device::mmx_pcmpgtw_r64_rm64, },
- { 0x66, OP_2BYTE|OP_MMX, &i386_device::mmx_pcmpgtd_r64_rm64, &i386_device::mmx_pcmpgtd_r64_rm64, },
- { 0x67, OP_2BYTE|OP_MMX, &i386_device::mmx_packuswb_r64_rm64, &i386_device::mmx_packuswb_r64_rm64, },
- { 0x68, OP_2BYTE|OP_MMX, &i386_device::mmx_punpckhbw_r64_rm64, &i386_device::mmx_punpckhbw_r64_rm64, },
- { 0x69, OP_2BYTE|OP_MMX, &i386_device::mmx_punpckhwd_r64_rm64, &i386_device::mmx_punpckhwd_r64_rm64, },
- { 0x6a, OP_2BYTE|OP_MMX, &i386_device::mmx_punpckhdq_r64_rm64, &i386_device::mmx_punpckhdq_r64_rm64, },
- { 0x6b, OP_2BYTE|OP_MMX, &i386_device::mmx_packssdw_r64_rm64, &i386_device::mmx_packssdw_r64_rm64, },
- { 0x6e, OP_2BYTE|OP_MMX, &i386_device::mmx_movd_r64_rm32, &i386_device::mmx_movd_r64_rm32, },
- { 0x6f, OP_2BYTE|OP_MMX, &i386_device::mmx_movq_r64_rm64, &i386_device::mmx_movq_r64_rm64, },
- { 0x70, OP_2BYTE|OP_MMX, &i386_device::mmx_pshufw_r64_rm64_i8, &i386_device::mmx_pshufw_r64_rm64_i8, },
- { 0x71, OP_2BYTE|OP_MMX, &i386_device::mmx_group_0f71, &i386_device::mmx_group_0f71, },
- { 0x72, OP_2BYTE|OP_MMX, &i386_device::mmx_group_0f72, &i386_device::mmx_group_0f72, },
- { 0x73, OP_2BYTE|OP_MMX, &i386_device::mmx_group_0f73, &i386_device::mmx_group_0f73, },
- { 0x74, OP_2BYTE|OP_CYRIX, &i386_device::i386_cyrix_unknown, &i386_device::i386_cyrix_unknown, },
- { 0x74, OP_2BYTE|OP_MMX, &i386_device::mmx_pcmpeqb_r64_rm64, &i386_device::mmx_pcmpeqb_r64_rm64, },
- { 0x75, OP_2BYTE|OP_MMX, &i386_device::mmx_pcmpeqw_r64_rm64, &i386_device::mmx_pcmpeqw_r64_rm64, },
- { 0x76, OP_2BYTE|OP_MMX, &i386_device::mmx_pcmpeqd_r64_rm64, &i386_device::mmx_pcmpeqd_r64_rm64, },
- { 0x77, OP_2BYTE|OP_MMX, &i386_device::mmx_emms, &i386_device::mmx_emms, },
- { 0x7e, OP_2BYTE|OP_MMX, &i386_device::mmx_movd_rm32_r64, &i386_device::mmx_movd_rm32_r64, },
- { 0x7f, OP_2BYTE|OP_MMX, &i386_device::mmx_movq_rm64_r64, &i386_device::mmx_movq_rm64_r64, },
- { 0x80, OP_2BYTE|OP_I386, &i386_device::i386_jo_rel16, &i386_device::i386_jo_rel32, },
- { 0x81, OP_2BYTE|OP_I386, &i386_device::i386_jno_rel16, &i386_device::i386_jno_rel32, },
- { 0x82, OP_2BYTE|OP_I386, &i386_device::i386_jc_rel16, &i386_device::i386_jc_rel32, },
- { 0x83, OP_2BYTE|OP_I386, &i386_device::i386_jnc_rel16, &i386_device::i386_jnc_rel32, },
- { 0x84, OP_2BYTE|OP_I386, &i386_device::i386_jz_rel16, &i386_device::i386_jz_rel32, },
- { 0x85, OP_2BYTE|OP_I386, &i386_device::i386_jnz_rel16, &i386_device::i386_jnz_rel32, },
- { 0x86, OP_2BYTE|OP_I386, &i386_device::i386_jbe_rel16, &i386_device::i386_jbe_rel32, },
- { 0x87, OP_2BYTE|OP_I386, &i386_device::i386_ja_rel16, &i386_device::i386_ja_rel32, },
- { 0x88, OP_2BYTE|OP_I386, &i386_device::i386_js_rel16, &i386_device::i386_js_rel32, },
- { 0x89, OP_2BYTE|OP_I386, &i386_device::i386_jns_rel16, &i386_device::i386_jns_rel32, },
- { 0x8A, OP_2BYTE|OP_I386, &i386_device::i386_jp_rel16, &i386_device::i386_jp_rel32, },
- { 0x8B, OP_2BYTE|OP_I386, &i386_device::i386_jnp_rel16, &i386_device::i386_jnp_rel32, },
- { 0x8C, OP_2BYTE|OP_I386, &i386_device::i386_jl_rel16, &i386_device::i386_jl_rel32, },
- { 0x8D, OP_2BYTE|OP_I386, &i386_device::i386_jge_rel16, &i386_device::i386_jge_rel32, },
- { 0x8E, OP_2BYTE|OP_I386, &i386_device::i386_jle_rel16, &i386_device::i386_jle_rel32, },
- { 0x8F, OP_2BYTE|OP_I386, &i386_device::i386_jg_rel16, &i386_device::i386_jg_rel32, },
- { 0x90, OP_2BYTE|OP_I386, &i386_device::i386_seto_rm8, &i386_device::i386_seto_rm8, },
- { 0x91, OP_2BYTE|OP_I386, &i386_device::i386_setno_rm8, &i386_device::i386_setno_rm8, },
- { 0x92, OP_2BYTE|OP_I386, &i386_device::i386_setc_rm8, &i386_device::i386_setc_rm8, },
- { 0x93, OP_2BYTE|OP_I386, &i386_device::i386_setnc_rm8, &i386_device::i386_setnc_rm8, },
- { 0x94, OP_2BYTE|OP_I386, &i386_device::i386_setz_rm8, &i386_device::i386_setz_rm8, },
- { 0x95, OP_2BYTE|OP_I386, &i386_device::i386_setnz_rm8, &i386_device::i386_setnz_rm8, },
- { 0x96, OP_2BYTE|OP_I386, &i386_device::i386_setbe_rm8, &i386_device::i386_setbe_rm8, },
- { 0x97, OP_2BYTE|OP_I386, &i386_device::i386_seta_rm8, &i386_device::i386_seta_rm8, },
- { 0x98, OP_2BYTE|OP_I386, &i386_device::i386_sets_rm8, &i386_device::i386_sets_rm8, },
- { 0x99, OP_2BYTE|OP_I386, &i386_device::i386_setns_rm8, &i386_device::i386_setns_rm8, },
- { 0x9A, OP_2BYTE|OP_I386, &i386_device::i386_setp_rm8, &i386_device::i386_setp_rm8, },
- { 0x9B, OP_2BYTE|OP_I386, &i386_device::i386_setnp_rm8, &i386_device::i386_setnp_rm8, },
- { 0x9C, OP_2BYTE|OP_I386, &i386_device::i386_setl_rm8, &i386_device::i386_setl_rm8, },
- { 0x9D, OP_2BYTE|OP_I386, &i386_device::i386_setge_rm8, &i386_device::i386_setge_rm8, },
- { 0x9E, OP_2BYTE|OP_I386, &i386_device::i386_setle_rm8, &i386_device::i386_setle_rm8, },
- { 0x9F, OP_2BYTE|OP_I386, &i386_device::i386_setg_rm8, &i386_device::i386_setg_rm8, },
- { 0xA0, OP_2BYTE|OP_I386, &i386_device::i386_push_fs16, &i386_device::i386_push_fs32, },
- { 0xA1, OP_2BYTE|OP_I386, &i386_device::i386_pop_fs16, &i386_device::i386_pop_fs32, },
- { 0xA2, OP_2BYTE|OP_I486, &i386_device::i486_cpuid, &i386_device::i486_cpuid, },
- { 0xA3, OP_2BYTE|OP_I386, &i386_device::i386_bt_rm16_r16, &i386_device::i386_bt_rm32_r32, },
- { 0xA4, OP_2BYTE|OP_I386, &i386_device::i386_shld16_i8, &i386_device::i386_shld32_i8, },
- { 0xA5, OP_2BYTE|OP_I386, &i386_device::i386_shld16_cl, &i386_device::i386_shld32_cl, },
- { 0xA8, OP_2BYTE|OP_I386, &i386_device::i386_push_gs16, &i386_device::i386_push_gs32, },
- { 0xA9, OP_2BYTE|OP_I386, &i386_device::i386_pop_gs16, &i386_device::i386_pop_gs32, },
- { 0xAA, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_rsm, &i386_device::pentium_rsm, },
- { 0xAB, OP_2BYTE|OP_I386, &i386_device::i386_bts_rm16_r16, &i386_device::i386_bts_rm32_r32, },
- { 0xAC, OP_2BYTE|OP_I386, &i386_device::i386_shrd16_i8, &i386_device::i386_shrd32_i8, },
- { 0xAD, OP_2BYTE|OP_I386, &i386_device::i386_shrd16_cl, &i386_device::i386_shrd32_cl, },
- { 0xAE, OP_2BYTE|OP_SSE, &i386_device::sse_sse_group0fae, &i386_device::sse_sse_group0fae, },
- { 0xAF, OP_2BYTE|OP_I386, &i386_device::i386_imul_r16_rm16, &i386_device::i386_imul_r32_rm32, },
- { 0xB0, OP_2BYTE|OP_I486, &i386_device::i486_cmpxchg_rm8_r8, &i386_device::i486_cmpxchg_rm8_r8, },
- { 0xB1, OP_2BYTE|OP_I486, &i386_device::i486_cmpxchg_rm16_r16, &i386_device::i486_cmpxchg_rm32_r32, },
- { 0xB2, OP_2BYTE|OP_I386, &i386_device::i386_lss16, &i386_device::i386_lss32, },
- { 0xB3, OP_2BYTE|OP_I386, &i386_device::i386_btr_rm16_r16, &i386_device::i386_btr_rm32_r32, },
- { 0xB4, OP_2BYTE|OP_I386, &i386_device::i386_lfs16, &i386_device::i386_lfs32, },
- { 0xB5, OP_2BYTE|OP_I386, &i386_device::i386_lgs16, &i386_device::i386_lgs32, },
- { 0xB6, OP_2BYTE|OP_I386, &i386_device::i386_movzx_r16_rm8, &i386_device::i386_movzx_r32_rm8, },
- { 0xB7, OP_2BYTE|OP_I386, &i386_device::i386_invalid, &i386_device::i386_movzx_r32_rm16, },
- { 0xBA, OP_2BYTE|OP_I386, &i386_device::i386_group0FBA_16, &i386_device::i386_group0FBA_32, },
- { 0xBB, OP_2BYTE|OP_I386, &i386_device::i386_btc_rm16_r16, &i386_device::i386_btc_rm32_r32, },
- { 0xBC, OP_2BYTE|OP_I386, &i386_device::i386_bsf_r16_rm16, &i386_device::i386_bsf_r32_rm32, },
- { 0xBD, OP_2BYTE|OP_I386, &i386_device::i386_bsr_r16_rm16, &i386_device::i386_bsr_r32_rm32, },
- { 0xBE, OP_2BYTE|OP_I386, &i386_device::i386_movsx_r16_rm8, &i386_device::i386_movsx_r32_rm8, },
- { 0xBF, OP_2BYTE|OP_I386, &i386_device::i386_invalid, &i386_device::i386_movsx_r32_rm16, },
- { 0xC0, OP_2BYTE|OP_I486, &i386_device::i486_xadd_rm8_r8, &i386_device::i486_xadd_rm8_r8, },
- { 0xC1, OP_2BYTE|OP_I486, &i386_device::i486_xadd_rm16_r16, &i386_device::i486_xadd_rm32_r32, },
- { 0xC2, OP_2BYTE|OP_SSE, &i386_device::sse_cmpps_r128_rm128_i8, &i386_device::sse_cmpps_r128_rm128_i8, },
- { 0xC3, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_movnti_m16_r16, &i386_device::pentium_movnti_m32_r32, },
- { 0xC4, OP_2BYTE|OP_SSE, &i386_device::sse_pinsrw_r64_r16m16_i8, &i386_device::sse_pinsrw_r64_r32m16_i8,},
- { 0xC5, OP_2BYTE|OP_SSE, &i386_device::sse_pextrw_r16_r64_i8, &i386_device::sse_pextrw_r32_r64_i8, },
- { 0xC6, OP_2BYTE|OP_SSE, &i386_device::sse_shufps, &i386_device::sse_shufps, },
- { 0xC7, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmpxchg8b_m64, &i386_device::pentium_cmpxchg8b_m64, },
- { 0xC8, OP_2BYTE|OP_I486, &i386_device::i486_bswap_eax, &i386_device::i486_bswap_eax, },
- { 0xC9, OP_2BYTE|OP_I486, &i386_device::i486_bswap_ecx, &i386_device::i486_bswap_ecx, },
- { 0xCA, OP_2BYTE|OP_I486, &i386_device::i486_bswap_edx, &i386_device::i486_bswap_edx, },
- { 0xCB, OP_2BYTE|OP_I486, &i386_device::i486_bswap_ebx, &i386_device::i486_bswap_ebx, },
- { 0xCC, OP_2BYTE|OP_I486, &i386_device::i486_bswap_esp, &i386_device::i486_bswap_esp, },
- { 0xCD, OP_2BYTE|OP_I486, &i386_device::i486_bswap_ebp, &i386_device::i486_bswap_ebp, },
- { 0xCE, OP_2BYTE|OP_I486, &i386_device::i486_bswap_esi, &i386_device::i486_bswap_esi, },
- { 0xCF, OP_2BYTE|OP_I486, &i386_device::i486_bswap_edi, &i386_device::i486_bswap_edi, },
- { 0xD1, OP_2BYTE|OP_MMX, &i386_device::mmx_psrlw_r64_rm64, &i386_device::mmx_psrlw_r64_rm64, },
- { 0xD2, OP_2BYTE|OP_MMX, &i386_device::mmx_psrld_r64_rm64, &i386_device::mmx_psrld_r64_rm64, },
- { 0xD3, OP_2BYTE|OP_MMX, &i386_device::mmx_psrlq_r64_rm64, &i386_device::mmx_psrlq_r64_rm64, },
- { 0xD4, OP_2BYTE|OP_MMX, &i386_device::mmx_paddq_r64_rm64, &i386_device::mmx_paddq_r64_rm64, },
- { 0xD5, OP_2BYTE|OP_MMX, &i386_device::mmx_pmullw_r64_rm64, &i386_device::mmx_pmullw_r64_rm64, },
- { 0xD7, OP_2BYTE|OP_SSE, &i386_device::sse_pmovmskb_r16_r64, &i386_device::sse_pmovmskb_r32_r64, },
- { 0xD8, OP_2BYTE|OP_MMX, &i386_device::mmx_psubusb_r64_rm64, &i386_device::mmx_psubusb_r64_rm64, },
- { 0xD9, OP_2BYTE|OP_MMX, &i386_device::mmx_psubusw_r64_rm64, &i386_device::mmx_psubusw_r64_rm64, },
- { 0xDA, OP_2BYTE|OP_SSE, &i386_device::sse_pminub_r64_rm64, &i386_device::sse_pminub_r64_rm64, },
- { 0xDB, OP_2BYTE|OP_MMX, &i386_device::mmx_pand_r64_rm64, &i386_device::mmx_pand_r64_rm64, },
- { 0xDC, OP_2BYTE|OP_MMX, &i386_device::mmx_paddusb_r64_rm64, &i386_device::mmx_paddusb_r64_rm64, },
- { 0xDD, OP_2BYTE|OP_MMX, &i386_device::mmx_paddusw_r64_rm64, &i386_device::mmx_paddusw_r64_rm64, },
- { 0xDE, OP_2BYTE|OP_SSE, &i386_device::sse_pmaxub_r64_rm64, &i386_device::sse_pmaxub_r64_rm64, },
- { 0xDF, OP_2BYTE|OP_MMX, &i386_device::mmx_pandn_r64_rm64, &i386_device::mmx_pandn_r64_rm64, },
- { 0xE0, OP_2BYTE|OP_SSE, &i386_device::sse_pavgb_r64_rm64, &i386_device::sse_pavgb_r64_rm64, },
- { 0xE1, OP_2BYTE|OP_MMX, &i386_device::mmx_psraw_r64_rm64, &i386_device::mmx_psraw_r64_rm64, },
- { 0xE2, OP_2BYTE|OP_MMX, &i386_device::mmx_psrad_r64_rm64, &i386_device::mmx_psrad_r64_rm64, },
- { 0xE3, OP_2BYTE|OP_SSE, &i386_device::sse_pavgw_r64_rm64, &i386_device::sse_pavgw_r64_rm64, },
- { 0xE4, OP_2BYTE|OP_SSE, &i386_device::sse_pmulhuw_r64_rm64, &i386_device::sse_pmulhuw_r64_rm64, },
- { 0xE5, OP_2BYTE|OP_MMX, &i386_device::mmx_pmulhw_r64_rm64, &i386_device::mmx_pmulhw_r64_rm64, },
- { 0xE7, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_movntq_m64_r64, &i386_device::pentium_movntq_m64_r64, },
- { 0xE8, OP_2BYTE|OP_MMX, &i386_device::mmx_psubsb_r64_rm64, &i386_device::mmx_psubsb_r64_rm64, },
- { 0xE9, OP_2BYTE|OP_MMX, &i386_device::mmx_psubsw_r64_rm64, &i386_device::mmx_psubsw_r64_rm64, },
- { 0xEA, OP_2BYTE|OP_SSE, &i386_device::sse_pminsw_r64_rm64, &i386_device::sse_pminsw_r64_rm64, },
- { 0xEB, OP_2BYTE|OP_MMX, &i386_device::mmx_por_r64_rm64, &i386_device::mmx_por_r64_rm64, },
- { 0xEC, OP_2BYTE|OP_MMX, &i386_device::mmx_paddsb_r64_rm64, &i386_device::mmx_paddsb_r64_rm64, },
- { 0xED, OP_2BYTE|OP_MMX, &i386_device::mmx_paddsw_r64_rm64, &i386_device::mmx_paddsw_r64_rm64, },
- { 0xEE, OP_2BYTE|OP_SSE, &i386_device::sse_pmaxsw_r64_rm64, &i386_device::sse_pmaxsw_r64_rm64, },
- { 0xEF, OP_2BYTE|OP_MMX, &i386_device::mmx_pxor_r64_rm64, &i386_device::mmx_pxor_r64_rm64, },
- { 0xF1, OP_2BYTE|OP_MMX, &i386_device::mmx_psllw_r64_rm64, &i386_device::mmx_psllw_r64_rm64, },
- { 0xF2, OP_2BYTE|OP_MMX, &i386_device::mmx_pslld_r64_rm64, &i386_device::mmx_pslld_r64_rm64, },
- { 0xF3, OP_2BYTE|OP_MMX, &i386_device::mmx_psllq_r64_rm64, &i386_device::mmx_psllq_r64_rm64, },
- { 0xF4, OP_2BYTE|OP_SSE, &i386_device::sse_pmuludq_r64_rm64, &i386_device::sse_pmuludq_r64_rm64, },
- { 0xF5, OP_2BYTE|OP_MMX, &i386_device::mmx_pmaddwd_r64_rm64, &i386_device::mmx_pmaddwd_r64_rm64, },
- { 0xF6, OP_2BYTE|OP_SSE, &i386_device::sse_psadbw_r64_rm64, &i386_device::sse_psadbw_r64_rm64, },
- { 0xf7, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_maskmovq_r64_r64, &i386_device::pentium_maskmovq_r64_r64,},
- { 0xF8, OP_2BYTE|OP_MMX, &i386_device::mmx_psubb_r64_rm64, &i386_device::mmx_psubb_r64_rm64, },
- { 0xF9, OP_2BYTE|OP_MMX, &i386_device::mmx_psubw_r64_rm64, &i386_device::mmx_psubw_r64_rm64, },
- { 0xFA, OP_2BYTE|OP_MMX, &i386_device::mmx_psubd_r64_rm64, &i386_device::mmx_psubd_r64_rm64, },
- { 0xFB, OP_2BYTE|OP_SSE, &i386_device::sse_psubq_r64_rm64, &i386_device::sse_psubq_r64_rm64, },
- { 0xFC, OP_2BYTE|OP_MMX, &i386_device::mmx_paddb_r64_rm64, &i386_device::mmx_paddb_r64_rm64, },
- { 0xFD, OP_2BYTE|OP_MMX, &i386_device::mmx_paddw_r64_rm64, &i386_device::mmx_paddw_r64_rm64, },
- { 0xFE, OP_2BYTE|OP_MMX, &i386_device::mmx_paddd_r64_rm64, &i386_device::mmx_paddd_r64_rm64, },
+ { 0x00, OP_2BYTE|OP_I386, &i386_device::i386_group0F00_16, &i386_device::i386_group0F00_32, false},
+ { 0x01, OP_2BYTE|OP_I386, &i386_device::i386_group0F01_16, &i386_device::i386_group0F01_32, false},
+ { 0x01, OP_2BYTE|OP_I486, &i386_device::i486_group0F01_16, &i386_device::i486_group0F01_32, false},
+ { 0x02, OP_2BYTE|OP_I386, &i386_device::i386_lar_r16_rm16, &i386_device::i386_lar_r32_rm32, false},
+ { 0x03, OP_2BYTE|OP_I386, &i386_device::i386_lsl_r16_rm16, &i386_device::i386_lsl_r32_rm32, false},
+ { 0x06, OP_2BYTE|OP_I386, &i386_device::i386_clts, &i386_device::i386_clts, false},
+ { 0x07, OP_2BYTE|OP_I386, &i386_device::i386_loadall, &i386_device::i386_loadall, false},
+ { 0x08, OP_2BYTE|OP_I486, &i386_device::i486_invd, &i386_device::i486_invd, false},
+ { 0x09, OP_2BYTE|OP_I486, &i386_device::i486_wbinvd, &i386_device::i486_wbinvd, false},
+ { 0x0B, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_ud2, &i386_device::pentium_ud2, false},
+ { 0x10, OP_2BYTE|OP_SSE, &i386_device::sse_movups_r128_rm128, &i386_device::sse_movups_r128_rm128, false},
+ { 0x11, OP_2BYTE|OP_SSE, &i386_device::sse_movups_rm128_r128, &i386_device::sse_movups_rm128_r128, false},
+ { 0x12, OP_2BYTE|OP_SSE, &i386_device::sse_movlps_r128_m64, &i386_device::sse_movlps_r128_m64, false},
+ { 0x13, OP_2BYTE|OP_SSE, &i386_device::sse_movlps_m64_r128, &i386_device::sse_movlps_m64_r128, false},
+ { 0x14, OP_2BYTE|OP_SSE, &i386_device::sse_unpcklps_r128_rm128, &i386_device::sse_unpcklps_r128_rm128, false},
+ { 0x15, OP_2BYTE|OP_SSE, &i386_device::sse_unpckhps_r128_rm128, &i386_device::sse_unpckhps_r128_rm128, false},
+ { 0x16, OP_2BYTE|OP_SSE, &i386_device::sse_movhps_r128_m64, &i386_device::sse_movhps_r128_m64, false},
+ { 0x17, OP_2BYTE|OP_SSE, &i386_device::sse_movhps_m64_r128, &i386_device::sse_movhps_m64_r128, false},
+ { 0x18, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_prefetch_m8, &i386_device::pentium_prefetch_m8, false},
+ { 0x20, OP_2BYTE|OP_I386, &i386_device::i386_mov_r32_cr, &i386_device::i386_mov_r32_cr, false},
+ { 0x21, OP_2BYTE|OP_I386, &i386_device::i386_mov_r32_dr, &i386_device::i386_mov_r32_dr, false},
+ { 0x22, OP_2BYTE|OP_I386, &i386_device::i386_mov_cr_r32, &i386_device::i386_mov_cr_r32, false},
+ { 0x22, OP_2BYTE|OP_I486, &i386_device::i486_mov_cr_r32, &i386_device::i486_mov_cr_r32, false},
+ { 0x23, OP_2BYTE|OP_I386, &i386_device::i386_mov_dr_r32, &i386_device::i386_mov_dr_r32, false},
+ { 0x24, OP_2BYTE|OP_I386, &i386_device::i386_mov_r32_tr, &i386_device::i386_mov_r32_tr, false},
+ { 0x26, OP_2BYTE|OP_I386, &i386_device::i386_mov_tr_r32, &i386_device::i386_mov_tr_r32, false},
+ { 0x28, OP_2BYTE|OP_SSE, &i386_device::sse_movaps_r128_rm128, &i386_device::sse_movaps_r128_rm128, false},
+ { 0x29, OP_2BYTE|OP_SSE, &i386_device::sse_movaps_rm128_r128, &i386_device::sse_movaps_rm128_r128, false},
+ { 0x2a, OP_2BYTE|OP_SSE, &i386_device::sse_cvtpi2ps_r128_rm64, &i386_device::sse_cvtpi2ps_r128_rm64, false},
+ { 0x2b, OP_2BYTE|OP_SSE, &i386_device::sse_movntps_m128_r128, &i386_device::sse_movntps_m128_r128, false},
+ { 0x2c, OP_2BYTE|OP_SSE, &i386_device::sse_cvttps2pi_r64_r128m64, &i386_device::sse_cvttps2pi_r64_r128m64,false},
+ { 0x2d, OP_2BYTE|OP_SSE, &i386_device::sse_cvtps2pi_r64_r128m64, &i386_device::sse_cvtps2pi_r64_r128m64,false},
+ { 0x2e, OP_2BYTE|OP_SSE, &i386_device::sse_ucomiss_r128_r128m32, &i386_device::sse_ucomiss_r128_r128m32,false},
+ { 0x2f, OP_2BYTE|OP_SSE, &i386_device::sse_comiss_r128_r128m32, &i386_device::sse_comiss_r128_r128m32, false},
+ { 0x30, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_wrmsr, &i386_device::pentium_wrmsr, false},
+ { 0x31, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_rdtsc, &i386_device::pentium_rdtsc, false},
+ { 0x32, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_rdmsr, &i386_device::pentium_rdmsr, false},
+ { 0x40, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovo_r16_rm16, &i386_device::pentium_cmovo_r32_rm32, false},
+ { 0x41, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovno_r16_rm16, &i386_device::pentium_cmovno_r32_rm32, false},
+ { 0x42, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovb_r16_rm16, &i386_device::pentium_cmovb_r32_rm32, false},
+ { 0x43, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovae_r16_rm16, &i386_device::pentium_cmovae_r32_rm32, false},
+ { 0x44, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmove_r16_rm16, &i386_device::pentium_cmove_r32_rm32, false},
+ { 0x45, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovne_r16_rm16, &i386_device::pentium_cmovne_r32_rm32, false},
+ { 0x46, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovbe_r16_rm16, &i386_device::pentium_cmovbe_r32_rm32, false},
+ { 0x47, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmova_r16_rm16, &i386_device::pentium_cmova_r32_rm32, false},
+ { 0x48, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovs_r16_rm16, &i386_device::pentium_cmovs_r32_rm32, false},
+ { 0x49, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovns_r16_rm16, &i386_device::pentium_cmovns_r32_rm32, false},
+ { 0x4a, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovp_r16_rm16, &i386_device::pentium_cmovp_r32_rm32, false},
+ { 0x4b, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovnp_r16_rm16, &i386_device::pentium_cmovnp_r32_rm32, false},
+ { 0x4c, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovl_r16_rm16, &i386_device::pentium_cmovl_r32_rm32, false},
+ { 0x4d, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovge_r16_rm16, &i386_device::pentium_cmovge_r32_rm32, false},
+ { 0x4e, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovle_r16_rm16, &i386_device::pentium_cmovle_r32_rm32, false},
+ { 0x4f, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmovg_r16_rm16, &i386_device::pentium_cmovg_r32_rm32, false},
+ { 0x50, OP_2BYTE|OP_SSE, &i386_device::sse_movmskps_r16_r128, &i386_device::sse_movmskps_r32_r128, false},
+ { 0x51, OP_2BYTE|OP_SSE, &i386_device::sse_sqrtps_r128_rm128, &i386_device::sse_sqrtps_r128_rm128, false},
+ { 0x52, OP_2BYTE|OP_SSE, &i386_device::sse_rsqrtps_r128_rm128, &i386_device::sse_rsqrtps_r128_rm128, false},
+ { 0x53, OP_2BYTE|OP_SSE, &i386_device::sse_rcpps_r128_rm128, &i386_device::sse_rcpps_r128_rm128, false},
+ { 0x54, OP_2BYTE|OP_SSE, &i386_device::sse_andps_r128_rm128, &i386_device::sse_andps_r128_rm128, false},
+ { 0x55, OP_2BYTE|OP_SSE, &i386_device::sse_andnps_r128_rm128, &i386_device::sse_andnps_r128_rm128, false},
+ { 0x56, OP_2BYTE|OP_SSE, &i386_device::sse_orps_r128_rm128, &i386_device::sse_orps_r128_rm128, false},
+ { 0x57, OP_2BYTE|OP_SSE, &i386_device::sse_xorps, &i386_device::sse_xorps, false},
+ { 0x58, OP_2BYTE|OP_SSE, &i386_device::sse_addps, &i386_device::sse_addps, false},
+ { 0x59, OP_2BYTE|OP_SSE, &i386_device::sse_mulps, &i386_device::sse_mulps, false},
+ { 0x5a, OP_2BYTE|OP_SSE, &i386_device::sse_cvtps2pd_r128_r128m64, &i386_device::sse_cvtps2pd_r128_r128m64,false},
+ { 0x5b, OP_2BYTE|OP_SSE, &i386_device::sse_cvtdq2ps_r128_rm128, &i386_device::sse_cvtdq2ps_r128_rm128, false},
+ { 0x5c, OP_2BYTE|OP_SSE, &i386_device::sse_subps, &i386_device::sse_subps, false},
+ { 0x5d, OP_2BYTE|OP_SSE, &i386_device::sse_minps, &i386_device::sse_minps, false},
+ { 0x5e, OP_2BYTE|OP_SSE, &i386_device::sse_divps, &i386_device::sse_divps, false},
+ { 0x5f, OP_2BYTE|OP_SSE, &i386_device::sse_maxps, &i386_device::sse_maxps, false},
+ { 0x60, OP_2BYTE|OP_MMX, &i386_device::mmx_punpcklbw_r64_r64m32, &i386_device::mmx_punpcklbw_r64_r64m32,false},
+ { 0x61, OP_2BYTE|OP_MMX, &i386_device::mmx_punpcklwd_r64_r64m32, &i386_device::mmx_punpcklwd_r64_r64m32,false},
+ { 0x62, OP_2BYTE|OP_MMX, &i386_device::mmx_punpckldq_r64_r64m32, &i386_device::mmx_punpckldq_r64_r64m32,false},
+ { 0x63, OP_2BYTE|OP_MMX, &i386_device::mmx_packsswb_r64_rm64, &i386_device::mmx_packsswb_r64_rm64, false},
+ { 0x64, OP_2BYTE|OP_MMX, &i386_device::mmx_pcmpgtb_r64_rm64, &i386_device::mmx_pcmpgtb_r64_rm64, false},
+ { 0x65, OP_2BYTE|OP_MMX, &i386_device::mmx_pcmpgtw_r64_rm64, &i386_device::mmx_pcmpgtw_r64_rm64, false},
+ { 0x66, OP_2BYTE|OP_MMX, &i386_device::mmx_pcmpgtd_r64_rm64, &i386_device::mmx_pcmpgtd_r64_rm64, false},
+ { 0x67, OP_2BYTE|OP_MMX, &i386_device::mmx_packuswb_r64_rm64, &i386_device::mmx_packuswb_r64_rm64, false},
+ { 0x68, OP_2BYTE|OP_MMX, &i386_device::mmx_punpckhbw_r64_rm64, &i386_device::mmx_punpckhbw_r64_rm64, false},
+ { 0x69, OP_2BYTE|OP_MMX, &i386_device::mmx_punpckhwd_r64_rm64, &i386_device::mmx_punpckhwd_r64_rm64, false},
+ { 0x6a, OP_2BYTE|OP_MMX, &i386_device::mmx_punpckhdq_r64_rm64, &i386_device::mmx_punpckhdq_r64_rm64, false},
+ { 0x6b, OP_2BYTE|OP_MMX, &i386_device::mmx_packssdw_r64_rm64, &i386_device::mmx_packssdw_r64_rm64, false},
+ { 0x6e, OP_2BYTE|OP_MMX, &i386_device::mmx_movd_r64_rm32, &i386_device::mmx_movd_r64_rm32, false},
+ { 0x6f, OP_2BYTE|OP_MMX, &i386_device::mmx_movq_r64_rm64, &i386_device::mmx_movq_r64_rm64, false},
+ { 0x70, OP_2BYTE|OP_MMX, &i386_device::mmx_pshufw_r64_rm64_i8, &i386_device::mmx_pshufw_r64_rm64_i8, false},
+ { 0x71, OP_2BYTE|OP_MMX, &i386_device::mmx_group_0f71, &i386_device::mmx_group_0f71, false},
+ { 0x72, OP_2BYTE|OP_MMX, &i386_device::mmx_group_0f72, &i386_device::mmx_group_0f72, false},
+ { 0x73, OP_2BYTE|OP_MMX, &i386_device::mmx_group_0f73, &i386_device::mmx_group_0f73, false},
+ { 0x74, OP_2BYTE|OP_CYRIX, &i386_device::i386_cyrix_unknown, &i386_device::i386_cyrix_unknown, false},
+ { 0x74, OP_2BYTE|OP_MMX, &i386_device::mmx_pcmpeqb_r64_rm64, &i386_device::mmx_pcmpeqb_r64_rm64, false},
+ { 0x75, OP_2BYTE|OP_MMX, &i386_device::mmx_pcmpeqw_r64_rm64, &i386_device::mmx_pcmpeqw_r64_rm64, false},
+ { 0x76, OP_2BYTE|OP_MMX, &i386_device::mmx_pcmpeqd_r64_rm64, &i386_device::mmx_pcmpeqd_r64_rm64, false},
+ { 0x77, OP_2BYTE|OP_MMX, &i386_device::mmx_emms, &i386_device::mmx_emms, false},
+ { 0x7e, OP_2BYTE|OP_MMX, &i386_device::mmx_movd_rm32_r64, &i386_device::mmx_movd_rm32_r64, false},
+ { 0x7f, OP_2BYTE|OP_MMX, &i386_device::mmx_movq_rm64_r64, &i386_device::mmx_movq_rm64_r64, false},
+ { 0x80, OP_2BYTE|OP_I386, &i386_device::i386_jo_rel16, &i386_device::i386_jo_rel32, false},
+ { 0x81, OP_2BYTE|OP_I386, &i386_device::i386_jno_rel16, &i386_device::i386_jno_rel32, false},
+ { 0x82, OP_2BYTE|OP_I386, &i386_device::i386_jc_rel16, &i386_device::i386_jc_rel32, false},
+ { 0x83, OP_2BYTE|OP_I386, &i386_device::i386_jnc_rel16, &i386_device::i386_jnc_rel32, false},
+ { 0x84, OP_2BYTE|OP_I386, &i386_device::i386_jz_rel16, &i386_device::i386_jz_rel32, false},
+ { 0x85, OP_2BYTE|OP_I386, &i386_device::i386_jnz_rel16, &i386_device::i386_jnz_rel32, false},
+ { 0x86, OP_2BYTE|OP_I386, &i386_device::i386_jbe_rel16, &i386_device::i386_jbe_rel32, false},
+ { 0x87, OP_2BYTE|OP_I386, &i386_device::i386_ja_rel16, &i386_device::i386_ja_rel32, false},
+ { 0x88, OP_2BYTE|OP_I386, &i386_device::i386_js_rel16, &i386_device::i386_js_rel32, false},
+ { 0x89, OP_2BYTE|OP_I386, &i386_device::i386_jns_rel16, &i386_device::i386_jns_rel32, false},
+ { 0x8A, OP_2BYTE|OP_I386, &i386_device::i386_jp_rel16, &i386_device::i386_jp_rel32, false},
+ { 0x8B, OP_2BYTE|OP_I386, &i386_device::i386_jnp_rel16, &i386_device::i386_jnp_rel32, false},
+ { 0x8C, OP_2BYTE|OP_I386, &i386_device::i386_jl_rel16, &i386_device::i386_jl_rel32, false},
+ { 0x8D, OP_2BYTE|OP_I386, &i386_device::i386_jge_rel16, &i386_device::i386_jge_rel32, false},
+ { 0x8E, OP_2BYTE|OP_I386, &i386_device::i386_jle_rel16, &i386_device::i386_jle_rel32, false},
+ { 0x8F, OP_2BYTE|OP_I386, &i386_device::i386_jg_rel16, &i386_device::i386_jg_rel32, false},
+ { 0x90, OP_2BYTE|OP_I386, &i386_device::i386_seto_rm8, &i386_device::i386_seto_rm8, false},
+ { 0x91, OP_2BYTE|OP_I386, &i386_device::i386_setno_rm8, &i386_device::i386_setno_rm8, false},
+ { 0x92, OP_2BYTE|OP_I386, &i386_device::i386_setc_rm8, &i386_device::i386_setc_rm8, false},
+ { 0x93, OP_2BYTE|OP_I386, &i386_device::i386_setnc_rm8, &i386_device::i386_setnc_rm8, false},
+ { 0x94, OP_2BYTE|OP_I386, &i386_device::i386_setz_rm8, &i386_device::i386_setz_rm8, false},
+ { 0x95, OP_2BYTE|OP_I386, &i386_device::i386_setnz_rm8, &i386_device::i386_setnz_rm8, false},
+ { 0x96, OP_2BYTE|OP_I386, &i386_device::i386_setbe_rm8, &i386_device::i386_setbe_rm8, false},
+ { 0x97, OP_2BYTE|OP_I386, &i386_device::i386_seta_rm8, &i386_device::i386_seta_rm8, false},
+ { 0x98, OP_2BYTE|OP_I386, &i386_device::i386_sets_rm8, &i386_device::i386_sets_rm8, false},
+ { 0x99, OP_2BYTE|OP_I386, &i386_device::i386_setns_rm8, &i386_device::i386_setns_rm8, false},
+ { 0x9A, OP_2BYTE|OP_I386, &i386_device::i386_setp_rm8, &i386_device::i386_setp_rm8, false},
+ { 0x9B, OP_2BYTE|OP_I386, &i386_device::i386_setnp_rm8, &i386_device::i386_setnp_rm8, false},
+ { 0x9C, OP_2BYTE|OP_I386, &i386_device::i386_setl_rm8, &i386_device::i386_setl_rm8, false},
+ { 0x9D, OP_2BYTE|OP_I386, &i386_device::i386_setge_rm8, &i386_device::i386_setge_rm8, false},
+ { 0x9E, OP_2BYTE|OP_I386, &i386_device::i386_setle_rm8, &i386_device::i386_setle_rm8, false},
+ { 0x9F, OP_2BYTE|OP_I386, &i386_device::i386_setg_rm8, &i386_device::i386_setg_rm8, false},
+ { 0xA0, OP_2BYTE|OP_I386, &i386_device::i386_push_fs16, &i386_device::i386_push_fs32, false},
+ { 0xA1, OP_2BYTE|OP_I386, &i386_device::i386_pop_fs16, &i386_device::i386_pop_fs32, false},
+ { 0xA2, OP_2BYTE|OP_I486, &i386_device::i486_cpuid, &i386_device::i486_cpuid, false},
+ { 0xA3, OP_2BYTE|OP_I386, &i386_device::i386_bt_rm16_r16, &i386_device::i386_bt_rm32_r32, false},
+ { 0xA4, OP_2BYTE|OP_I386, &i386_device::i386_shld16_i8, &i386_device::i386_shld32_i8, false},
+ { 0xA5, OP_2BYTE|OP_I386, &i386_device::i386_shld16_cl, &i386_device::i386_shld32_cl, false},
+ { 0xA8, OP_2BYTE|OP_I386, &i386_device::i386_push_gs16, &i386_device::i386_push_gs32, false},
+ { 0xA9, OP_2BYTE|OP_I386, &i386_device::i386_pop_gs16, &i386_device::i386_pop_gs32, false},
+ { 0xAA, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_rsm, &i386_device::pentium_rsm, false},
+ { 0xAB, OP_2BYTE|OP_I386, &i386_device::i386_bts_rm16_r16, &i386_device::i386_bts_rm32_r32, true },
+ { 0xAC, OP_2BYTE|OP_I386, &i386_device::i386_shrd16_i8, &i386_device::i386_shrd32_i8, false},
+ { 0xAD, OP_2BYTE|OP_I386, &i386_device::i386_shrd16_cl, &i386_device::i386_shrd32_cl, false},
+ { 0xAE, OP_2BYTE|OP_SSE, &i386_device::sse_sse_group0fae, &i386_device::sse_sse_group0fae, false},
+ { 0xAF, OP_2BYTE|OP_I386, &i386_device::i386_imul_r16_rm16, &i386_device::i386_imul_r32_rm32, false},
+ { 0xB0, OP_2BYTE|OP_I486, &i386_device::i486_cmpxchg_rm8_r8, &i386_device::i486_cmpxchg_rm8_r8, true },
+ { 0xB1, OP_2BYTE|OP_I486, &i386_device::i486_cmpxchg_rm16_r16, &i386_device::i486_cmpxchg_rm32_r32, true },
+ { 0xB2, OP_2BYTE|OP_I386, &i386_device::i386_lss16, &i386_device::i386_lss32, false},
+ { 0xB3, OP_2BYTE|OP_I386, &i386_device::i386_btr_rm16_r16, &i386_device::i386_btr_rm32_r32, true },
+ { 0xB4, OP_2BYTE|OP_I386, &i386_device::i386_lfs16, &i386_device::i386_lfs32, false},
+ { 0xB5, OP_2BYTE|OP_I386, &i386_device::i386_lgs16, &i386_device::i386_lgs32, false},
+ { 0xB6, OP_2BYTE|OP_I386, &i386_device::i386_movzx_r16_rm8, &i386_device::i386_movzx_r32_rm8, false},
+ { 0xB7, OP_2BYTE|OP_I386, &i386_device::i386_invalid, &i386_device::i386_movzx_r32_rm16, false},
+ { 0xBA, OP_2BYTE|OP_I386, &i386_device::i386_group0FBA_16, &i386_device::i386_group0FBA_32, true },
+ { 0xBB, OP_2BYTE|OP_I386, &i386_device::i386_btc_rm16_r16, &i386_device::i386_btc_rm32_r32, true },
+ { 0xBC, OP_2BYTE|OP_I386, &i386_device::i386_bsf_r16_rm16, &i386_device::i386_bsf_r32_rm32, false},
+ { 0xBD, OP_2BYTE|OP_I386, &i386_device::i386_bsr_r16_rm16, &i386_device::i386_bsr_r32_rm32, false},
+ { 0xBE, OP_2BYTE|OP_I386, &i386_device::i386_movsx_r16_rm8, &i386_device::i386_movsx_r32_rm8, false},
+ { 0xBF, OP_2BYTE|OP_I386, &i386_device::i386_invalid, &i386_device::i386_movsx_r32_rm16, false},
+ { 0xC0, OP_2BYTE|OP_I486, &i386_device::i486_xadd_rm8_r8, &i386_device::i486_xadd_rm8_r8, true },
+ { 0xC1, OP_2BYTE|OP_I486, &i386_device::i486_xadd_rm16_r16, &i386_device::i486_xadd_rm32_r32, true },
+ { 0xC2, OP_2BYTE|OP_SSE, &i386_device::sse_cmpps_r128_rm128_i8, &i386_device::sse_cmpps_r128_rm128_i8, false},
+ { 0xC3, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_movnti_m16_r16, &i386_device::pentium_movnti_m32_r32, false},
+ { 0xC4, OP_2BYTE|OP_SSE, &i386_device::sse_pinsrw_r64_r16m16_i8, &i386_device::sse_pinsrw_r64_r32m16_i8,false},
+ { 0xC5, OP_2BYTE|OP_SSE, &i386_device::sse_pextrw_r16_r64_i8, &i386_device::sse_pextrw_r32_r64_i8, false},
+ { 0xC6, OP_2BYTE|OP_SSE, &i386_device::sse_shufps, &i386_device::sse_shufps, false},
+ { 0xC7, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_cmpxchg8b_m64, &i386_device::pentium_cmpxchg8b_m64, true },
+ { 0xC8, OP_2BYTE|OP_I486, &i386_device::i486_bswap_eax, &i386_device::i486_bswap_eax, false},
+ { 0xC9, OP_2BYTE|OP_I486, &i386_device::i486_bswap_ecx, &i386_device::i486_bswap_ecx, false},
+ { 0xCA, OP_2BYTE|OP_I486, &i386_device::i486_bswap_edx, &i386_device::i486_bswap_edx, false},
+ { 0xCB, OP_2BYTE|OP_I486, &i386_device::i486_bswap_ebx, &i386_device::i486_bswap_ebx, false},
+ { 0xCC, OP_2BYTE|OP_I486, &i386_device::i486_bswap_esp, &i386_device::i486_bswap_esp, false},
+ { 0xCD, OP_2BYTE|OP_I486, &i386_device::i486_bswap_ebp, &i386_device::i486_bswap_ebp, false},
+ { 0xCE, OP_2BYTE|OP_I486, &i386_device::i486_bswap_esi, &i386_device::i486_bswap_esi, false},
+ { 0xCF, OP_2BYTE|OP_I486, &i386_device::i486_bswap_edi, &i386_device::i486_bswap_edi, false},
+ { 0xD1, OP_2BYTE|OP_MMX, &i386_device::mmx_psrlw_r64_rm64, &i386_device::mmx_psrlw_r64_rm64, false},
+ { 0xD2, OP_2BYTE|OP_MMX, &i386_device::mmx_psrld_r64_rm64, &i386_device::mmx_psrld_r64_rm64, false},
+ { 0xD3, OP_2BYTE|OP_MMX, &i386_device::mmx_psrlq_r64_rm64, &i386_device::mmx_psrlq_r64_rm64, false},
+ { 0xD4, OP_2BYTE|OP_MMX, &i386_device::mmx_paddq_r64_rm64, &i386_device::mmx_paddq_r64_rm64, false},
+ { 0xD5, OP_2BYTE|OP_MMX, &i386_device::mmx_pmullw_r64_rm64, &i386_device::mmx_pmullw_r64_rm64, false},
+ { 0xD7, OP_2BYTE|OP_SSE, &i386_device::sse_pmovmskb_r16_r64, &i386_device::sse_pmovmskb_r32_r64, false},
+ { 0xD8, OP_2BYTE|OP_MMX, &i386_device::mmx_psubusb_r64_rm64, &i386_device::mmx_psubusb_r64_rm64, false},
+ { 0xD9, OP_2BYTE|OP_MMX, &i386_device::mmx_psubusw_r64_rm64, &i386_device::mmx_psubusw_r64_rm64, false},
+ { 0xDA, OP_2BYTE|OP_SSE, &i386_device::sse_pminub_r64_rm64, &i386_device::sse_pminub_r64_rm64, false},
+ { 0xDB, OP_2BYTE|OP_MMX, &i386_device::mmx_pand_r64_rm64, &i386_device::mmx_pand_r64_rm64, false},
+ { 0xDC, OP_2BYTE|OP_MMX, &i386_device::mmx_paddusb_r64_rm64, &i386_device::mmx_paddusb_r64_rm64, false},
+ { 0xDD, OP_2BYTE|OP_MMX, &i386_device::mmx_paddusw_r64_rm64, &i386_device::mmx_paddusw_r64_rm64, false},
+ { 0xDE, OP_2BYTE|OP_SSE, &i386_device::sse_pmaxub_r64_rm64, &i386_device::sse_pmaxub_r64_rm64, false},
+ { 0xDF, OP_2BYTE|OP_MMX, &i386_device::mmx_pandn_r64_rm64, &i386_device::mmx_pandn_r64_rm64, false},
+ { 0xE0, OP_2BYTE|OP_SSE, &i386_device::sse_pavgb_r64_rm64, &i386_device::sse_pavgb_r64_rm64, false},
+ { 0xE1, OP_2BYTE|OP_MMX, &i386_device::mmx_psraw_r64_rm64, &i386_device::mmx_psraw_r64_rm64, false},
+ { 0xE2, OP_2BYTE|OP_MMX, &i386_device::mmx_psrad_r64_rm64, &i386_device::mmx_psrad_r64_rm64, false},
+ { 0xE3, OP_2BYTE|OP_SSE, &i386_device::sse_pavgw_r64_rm64, &i386_device::sse_pavgw_r64_rm64, false},
+ { 0xE4, OP_2BYTE|OP_SSE, &i386_device::sse_pmulhuw_r64_rm64, &i386_device::sse_pmulhuw_r64_rm64, false},
+ { 0xE5, OP_2BYTE|OP_MMX, &i386_device::mmx_pmulhw_r64_rm64, &i386_device::mmx_pmulhw_r64_rm64, false},
+ { 0xE7, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_movntq_m64_r64, &i386_device::pentium_movntq_m64_r64, false},
+ { 0xE8, OP_2BYTE|OP_MMX, &i386_device::mmx_psubsb_r64_rm64, &i386_device::mmx_psubsb_r64_rm64, false},
+ { 0xE9, OP_2BYTE|OP_MMX, &i386_device::mmx_psubsw_r64_rm64, &i386_device::mmx_psubsw_r64_rm64, false},
+ { 0xEA, OP_2BYTE|OP_SSE, &i386_device::sse_pminsw_r64_rm64, &i386_device::sse_pminsw_r64_rm64, false},
+ { 0xEB, OP_2BYTE|OP_MMX, &i386_device::mmx_por_r64_rm64, &i386_device::mmx_por_r64_rm64, false},
+ { 0xEC, OP_2BYTE|OP_MMX, &i386_device::mmx_paddsb_r64_rm64, &i386_device::mmx_paddsb_r64_rm64, false},
+ { 0xED, OP_2BYTE|OP_MMX, &i386_device::mmx_paddsw_r64_rm64, &i386_device::mmx_paddsw_r64_rm64, false},
+ { 0xEE, OP_2BYTE|OP_SSE, &i386_device::sse_pmaxsw_r64_rm64, &i386_device::sse_pmaxsw_r64_rm64, false},
+ { 0xEF, OP_2BYTE|OP_MMX, &i386_device::mmx_pxor_r64_rm64, &i386_device::mmx_pxor_r64_rm64, false},
+ { 0xF1, OP_2BYTE|OP_MMX, &i386_device::mmx_psllw_r64_rm64, &i386_device::mmx_psllw_r64_rm64, false},
+ { 0xF2, OP_2BYTE|OP_MMX, &i386_device::mmx_pslld_r64_rm64, &i386_device::mmx_pslld_r64_rm64, false},
+ { 0xF3, OP_2BYTE|OP_MMX, &i386_device::mmx_psllq_r64_rm64, &i386_device::mmx_psllq_r64_rm64, false},
+ { 0xF4, OP_2BYTE|OP_SSE, &i386_device::sse_pmuludq_r64_rm64, &i386_device::sse_pmuludq_r64_rm64, false},
+ { 0xF5, OP_2BYTE|OP_MMX, &i386_device::mmx_pmaddwd_r64_rm64, &i386_device::mmx_pmaddwd_r64_rm64, false},
+ { 0xF6, OP_2BYTE|OP_SSE, &i386_device::sse_psadbw_r64_rm64, &i386_device::sse_psadbw_r64_rm64, false},
+ { 0xf7, OP_2BYTE|OP_PENTIUM, &i386_device::pentium_maskmovq_r64_r64, &i386_device::pentium_maskmovq_r64_r64,false},
+ { 0xF8, OP_2BYTE|OP_MMX, &i386_device::mmx_psubb_r64_rm64, &i386_device::mmx_psubb_r64_rm64, false},
+ { 0xF9, OP_2BYTE|OP_MMX, &i386_device::mmx_psubw_r64_rm64, &i386_device::mmx_psubw_r64_rm64, false},
+ { 0xFA, OP_2BYTE|OP_MMX, &i386_device::mmx_psubd_r64_rm64, &i386_device::mmx_psubd_r64_rm64, false},
+ { 0xFB, OP_2BYTE|OP_SSE, &i386_device::sse_psubq_r64_rm64, &i386_device::sse_psubq_r64_rm64, false},
+ { 0xFC, OP_2BYTE|OP_MMX, &i386_device::mmx_paddb_r64_rm64, &i386_device::mmx_paddb_r64_rm64, false},
+ { 0xFD, OP_2BYTE|OP_MMX, &i386_device::mmx_paddw_r64_rm64, &i386_device::mmx_paddw_r64_rm64, false},
+ { 0xFE, OP_2BYTE|OP_MMX, &i386_device::mmx_paddd_r64_rm64, &i386_device::mmx_paddd_r64_rm64, false},
/* F3 0F ?? */
- { 0x10, OP_3BYTEF3|OP_SSE, &i386_device::sse_movss_r128_rm128, &i386_device::sse_movss_r128_rm128, },
- { 0x11, OP_3BYTEF3|OP_SSE, &i386_device::sse_movss_rm128_r128, &i386_device::sse_movss_rm128_r128, },
- { 0x12, OP_3BYTEF3|OP_SSE, &i386_device::sse_movsldup_r128_rm128, &i386_device::sse_movsldup_r128_rm128, },
- { 0x16, OP_3BYTEF3|OP_SSE, &i386_device::sse_movshdup_r128_rm128, &i386_device::sse_movshdup_r128_rm128, },
- { 0x2A, OP_3BYTEF3|OP_SSE, &i386_device::sse_cvtsi2ss_r128_rm32, &i386_device::sse_cvtsi2ss_r128_rm32, },
- { 0x2C, OP_3BYTEF3|OP_SSE, &i386_device::sse_cvttss2si_r32_r128m32, &i386_device::sse_cvttss2si_r32_r128m32,},
- { 0x2D, OP_3BYTEF3|OP_SSE, &i386_device::sse_cvtss2si_r32_r128m32, &i386_device::sse_cvtss2si_r32_r128m32,},
- { 0x51, OP_3BYTEF3|OP_SSE, &i386_device::sse_sqrtss_r128_r128m32, &i386_device::sse_sqrtss_r128_r128m32, },
- { 0x52, OP_3BYTEF3|OP_SSE, &i386_device::sse_rsqrtss_r128_r128m32, &i386_device::sse_rsqrtss_r128_r128m32,},
- { 0x53, OP_3BYTEF3|OP_SSE, &i386_device::sse_rcpss_r128_r128m32, &i386_device::sse_rcpss_r128_r128m32, },
- { 0x58, OP_3BYTEF3|OP_SSE, &i386_device::sse_addss, &i386_device::sse_addss, },
- { 0x59, OP_3BYTEF3|OP_SSE, &i386_device::sse_mulss, &i386_device::sse_mulss, },
- { 0x5A, OP_3BYTEF3|OP_SSE, &i386_device::sse_cvtss2sd_r128_r128m32, &i386_device::sse_cvtss2sd_r128_r128m32,},
- { 0x5B, OP_3BYTEF3|OP_SSE, &i386_device::sse_cvttps2dq_r128_rm128, &i386_device::sse_cvttps2dq_r128_rm128,},
- { 0x5C, OP_3BYTEF3|OP_SSE, &i386_device::sse_subss, &i386_device::sse_subss, },
- { 0x5D, OP_3BYTEF3|OP_SSE, &i386_device::sse_minss_r128_r128m32, &i386_device::sse_minss_r128_r128m32, },
- { 0x5E, OP_3BYTEF3|OP_SSE, &i386_device::sse_divss, &i386_device::sse_divss, },
- { 0x5F, OP_3BYTEF3|OP_SSE, &i386_device::sse_maxss_r128_r128m32, &i386_device::sse_maxss_r128_r128m32, },
- { 0x6F, OP_3BYTEF3|OP_SSE, &i386_device::sse_movdqu_r128_rm128, &i386_device::sse_movdqu_r128_rm128, },
- { 0x70, OP_3BYTEF3|OP_SSE, &i386_device::sse_pshufhw_r128_rm128_i8, &i386_device::sse_pshufhw_r128_rm128_i8,},
- { 0x7E, OP_3BYTEF3|OP_SSE, &i386_device::sse_movq_r128_r128m64, &i386_device::sse_movq_r128_r128m64, },
- { 0x7F, OP_3BYTEF3|OP_SSE, &i386_device::sse_movdqu_rm128_r128, &i386_device::sse_movdqu_rm128_r128, },
- { 0xB8, OP_3BYTEF3|OP_PENTIUM, &i386_device::pentium_popcnt_r16_rm16, &i386_device::pentium_popcnt_r32_rm32, },
- { 0xBC, OP_3BYTEF3|OP_PENTIUM, &i386_device::pentium_tzcnt_r16_rm16, &i386_device::pentium_tzcnt_r32_rm32, },
- { 0xC2, OP_3BYTEF3|OP_SSE, &i386_device::sse_cmpss_r128_r128m32_i8, &i386_device::sse_cmpss_r128_r128m32_i8,},
- { 0xD6, OP_3BYTEF3|OP_SSE, &i386_device::sse_movq2dq_r128_r64, &i386_device::sse_movq2dq_r128_r64, },
- { 0xE6, OP_3BYTEF3|OP_SSE, &i386_device::sse_cvtdq2pd_r128_r128m64, &i386_device::sse_cvtdq2pd_r128_r128m64}
+ { 0x10, OP_3BYTEF3|OP_SSE, &i386_device::sse_movss_r128_rm128, &i386_device::sse_movss_r128_rm128, false},
+ { 0x11, OP_3BYTEF3|OP_SSE, &i386_device::sse_movss_rm128_r128, &i386_device::sse_movss_rm128_r128, false},
+ { 0x12, OP_3BYTEF3|OP_SSE, &i386_device::sse_movsldup_r128_rm128, &i386_device::sse_movsldup_r128_rm128, false},
+ { 0x16, OP_3BYTEF3|OP_SSE, &i386_device::sse_movshdup_r128_rm128, &i386_device::sse_movshdup_r128_rm128, false},
+ { 0x2A, OP_3BYTEF3|OP_SSE, &i386_device::sse_cvtsi2ss_r128_rm32, &i386_device::sse_cvtsi2ss_r128_rm32, false},
+ { 0x2C, OP_3BYTEF3|OP_SSE, &i386_device::sse_cvttss2si_r32_r128m32, &i386_device::sse_cvttss2si_r32_r128m32,false},
+ { 0x2D, OP_3BYTEF3|OP_SSE, &i386_device::sse_cvtss2si_r32_r128m32, &i386_device::sse_cvtss2si_r32_r128m32,false},
+ { 0x51, OP_3BYTEF3|OP_SSE, &i386_device::sse_sqrtss_r128_r128m32, &i386_device::sse_sqrtss_r128_r128m32, false},
+ { 0x52, OP_3BYTEF3|OP_SSE, &i386_device::sse_rsqrtss_r128_r128m32, &i386_device::sse_rsqrtss_r128_r128m32,false},
+ { 0x53, OP_3BYTEF3|OP_SSE, &i386_device::sse_rcpss_r128_r128m32, &i386_device::sse_rcpss_r128_r128m32, false},
+ { 0x58, OP_3BYTEF3|OP_SSE, &i386_device::sse_addss, &i386_device::sse_addss, false},
+ { 0x59, OP_3BYTEF3|OP_SSE, &i386_device::sse_mulss, &i386_device::sse_mulss, false},
+ { 0x5A, OP_3BYTEF3|OP_SSE, &i386_device::sse_cvtss2sd_r128_r128m32, &i386_device::sse_cvtss2sd_r128_r128m32,false},
+ { 0x5B, OP_3BYTEF3|OP_SSE, &i386_device::sse_cvttps2dq_r128_rm128, &i386_device::sse_cvttps2dq_r128_rm128,false},
+ { 0x5C, OP_3BYTEF3|OP_SSE, &i386_device::sse_subss, &i386_device::sse_subss, false},
+ { 0x5D, OP_3BYTEF3|OP_SSE, &i386_device::sse_minss_r128_r128m32, &i386_device::sse_minss_r128_r128m32, false},
+ { 0x5E, OP_3BYTEF3|OP_SSE, &i386_device::sse_divss, &i386_device::sse_divss, false},
+ { 0x5F, OP_3BYTEF3|OP_SSE, &i386_device::sse_maxss_r128_r128m32, &i386_device::sse_maxss_r128_r128m32, false},
+ { 0x6F, OP_3BYTEF3|OP_SSE, &i386_device::sse_movdqu_r128_rm128, &i386_device::sse_movdqu_r128_rm128, false},
+ { 0x70, OP_3BYTEF3|OP_SSE, &i386_device::sse_pshufhw_r128_rm128_i8, &i386_device::sse_pshufhw_r128_rm128_i8,false},
+ { 0x7E, OP_3BYTEF3|OP_SSE, &i386_device::sse_movq_r128_r128m64, &i386_device::sse_movq_r128_r128m64, false},
+ { 0x7F, OP_3BYTEF3|OP_SSE, &i386_device::sse_movdqu_rm128_r128, &i386_device::sse_movdqu_rm128_r128, false},
+ { 0xB8, OP_3BYTEF3|OP_PENTIUM, &i386_device::pentium_popcnt_r16_rm16, &i386_device::pentium_popcnt_r32_rm32, false},
+ { 0xBC, OP_3BYTEF3|OP_PENTIUM, &i386_device::pentium_tzcnt_r16_rm16, &i386_device::pentium_tzcnt_r32_rm32, false},
+ { 0xC2, OP_3BYTEF3|OP_SSE, &i386_device::sse_cmpss_r128_r128m32_i8, &i386_device::sse_cmpss_r128_r128m32_i8,false},
+ { 0xD6, OP_3BYTEF3|OP_SSE, &i386_device::sse_movq2dq_r128_r64, &i386_device::sse_movq2dq_r128_r64, false},
+ { 0xE6, OP_3BYTEF3|OP_SSE, &i386_device::sse_cvtdq2pd_r128_r128m64, &i386_device::sse_cvtdq2pd_r128_r128m64,false}
};
diff --git a/src/emu/cpu/i386/i386ops.inc b/src/emu/cpu/i386/i386ops.inc
index fa267b0c80a..8d4cc59b5b5 100644
--- a/src/emu/cpu/i386/i386ops.inc
+++ b/src/emu/cpu/i386/i386ops.inc
@@ -2483,7 +2483,7 @@ void i386_device::i386_wait() // Opcode 0x9B
void i386_device::i386_lock() // Opcode 0xf0
{
// lock doesn't depend on iopl on 386
- // TODO: lock causes UD on unlockable opcodes
+ m_lock = true;
CYCLES(CYCLES_LOCK); // TODO: Determine correct cycle count
i386_decode_opcode();
}
diff --git a/src/mame/drivers/jackie.c b/src/mame/drivers/jackie.c
index 6707dc4e02a..5f21d38be05 100644
--- a/src/mame/drivers/jackie.c
+++ b/src/mame/drivers/jackie.c
@@ -267,7 +267,7 @@ void jackie_state::machine_reset()
void jackie_state::show_out()
{
#ifdef MAME_DEBUG
-// popmessage("%02x %02x %02x", state->m_out[0], state->m_out[1], state->m_out[2]);
+// popmessage("%02x %02x %02x", m_out[0], m_out[1], m_out[2]);
popmessage("520: %04x %04x %04x %04x %04x\n560: %04x %04x %04x %04x %04x\n5A0: %04x %04x %04x %04x %04x",
m_unk_reg[0][0],m_unk_reg[0][1],m_unk_reg[0][2],m_unk_reg[0][3],m_unk_reg[0][4],
m_unk_reg[1][0],m_unk_reg[1][1],m_unk_reg[1][2],m_unk_reg[1][3],m_unk_reg[1][4],
diff --git a/src/mame/drivers/konamigx.c b/src/mame/drivers/konamigx.c
index 3d443af61d5..01903dae7eb 100644
--- a/src/mame/drivers/konamigx.c
+++ b/src/mame/drivers/konamigx.c
@@ -106,14 +106,6 @@
-
-static int konamigx_cfgport;
-
-static int gx_rdport1_3, gx_syncen;
-
-static emu_timer *dmadelay_timer;
-static emu_timer *boothack_timer;
-
/**********************************************************************************/
/*
Konami ESC (E Security Chip) protection chip found on:
@@ -179,13 +171,10 @@ static struct sprite_entry {
static void generate_sprites(address_space &space, UINT32 src, UINT32 spr, int count)
{
- int i;
- int scount;
- int ecount;
- scount = 0;
- ecount = 0;
+ int scount = 0;
+ int ecount = 0;
- for(i=0; i<count; i++) {
+ for(int i=0; i<count; i++) {
UINT32 adr = src + 0x100*i;
int pri;
if(!space.read_word(adr+2))
@@ -200,7 +189,7 @@ static void generate_sprites(address_space &space, UINT32 src, UINT32 spr, int c
}
//qsort(sprites, ecount, sizeof(struct sprite_entry), pri_comp);
- for(i=0; i<ecount; i++) {
+ for(int i=0; i<ecount; i++) {
UINT32 adr = sprites[i].adr;
if(adr) {
UINT32 set =(space.read_word(adr) << 16)|space.read_word(adr+2);
@@ -315,43 +304,37 @@ static void generate_sprites(address_space &space, UINT32 src, UINT32 spr, int c
}
}
-static void tkmmpzdm_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
+void konamigx_state::tkmmpzdm_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
{
- konamigx_state* state = space.machine().driver_data<konamigx_state>();
- state->konamigx_esc_alert(space.machine().driver_data<konamigx_state>()->m_workram, 0x0142, 0x100, 0);
+ konamigx_esc_alert(m_workram, 0x0142, 0x100, 0);
}
-static void dragoonj_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
+void konamigx_state::dragoonj_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
{
- konamigx_state* state = space.machine().driver_data<konamigx_state>();
- state->konamigx_esc_alert(space.machine().driver_data<konamigx_state>()->m_workram, 0x5c00, 0x100, 0);
+ konamigx_esc_alert(m_workram, 0x5c00, 0x100, 0);
}
-static void sal2_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
+void konamigx_state::sal2_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
{
- konamigx_state* state = space.machine().driver_data<konamigx_state>();
- state->konamigx_esc_alert(space.machine().driver_data<konamigx_state>()->m_workram, 0x1c8c, 0x172, 1);
+ konamigx_esc_alert(m_workram, 0x1c8c, 0x172, 1);
}
-static void sexyparo_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
+void konamigx_state::sexyparo_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
{
// The d20000 should probably be p3
generate_sprites(space, 0xc00604, 0xd20000, 0xfc);
}
-static void tbyahhoo_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
+void konamigx_state::tbyahhoo_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
{
generate_sprites(space, 0xc00000, 0xd20000, 0x100);
}
-static void daiskiss_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
+void konamigx_state::daiskiss_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
{
generate_sprites(space, 0xc00000, 0xd20000, 0x100);
}
-static UINT8 esc_program[4096];
-static void (*esc_cb)(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4);
-
WRITE32_MEMBER(konamigx_state::esc_w)
{
UINT32 opcode;
@@ -386,7 +369,7 @@ WRITE32_MEMBER(konamigx_state::esc_w)
break;
case 2: // Load program
for(i=0; i<4096; i++)
- esc_program[i] = space.read_byte(params+i);
+ m_esc_program[i] = space.read_byte(params+i);
/*
{
FILE *f;
@@ -400,12 +383,12 @@ WRITE32_MEMBER(konamigx_state::esc_w)
*/
break;
case 1: // Run program
- if(esc_cb) {
+ if(m_esc_cb) {
UINT32 p1 = (space.read_word(params+0)<<16) | space.read_word(params+2);
UINT32 p2 = (space.read_word(params+4)<<16) | space.read_word(params+6);
UINT32 p3 = (space.read_word(params+8)<<16) | space.read_word(params+10);
UINT32 p4 = (space.read_word(params+12)<<16) | space.read_word(params+14);
- esc_cb(space, p1, p2, p3, p4);
+ (this->*m_esc_cb)(space, p1, p2, p3, p4);
}
break;
default:
@@ -414,9 +397,9 @@ WRITE32_MEMBER(konamigx_state::esc_w)
}
space.write_byte(data+9, ESTATE_END);
- if (konamigx_wrport1_1 & 0x10)
+ if (m_gx_wrport1_1 & 0x10)
{
- gx_rdport1_3 &= ~8;
+ m_gx_rdport1_3 &= ~8;
m_maincpu->set_input_line(4, HOLD_LINE);
}
}
@@ -439,7 +422,7 @@ WRITE32_MEMBER(konamigx_state::esc_w)
CUSTOM_INPUT_MEMBER(konamigx_state::gx_rdport1_3_r)
{
- return (gx_rdport1_3 >> 1);
+ return (m_gx_rdport1_3 >> 1);
}
WRITE32_MEMBER(konamigx_state::eeprom_w)
@@ -462,7 +445,7 @@ WRITE32_MEMBER(konamigx_state::eeprom_w)
m_eepromout->write(odata, 0xff);
- konamigx_wrport1_0 = odata;
+ m_gx_wrport1_0 = odata;
}
if (ACCESSING_BITS_16_23)
@@ -478,12 +461,12 @@ WRITE32_MEMBER(konamigx_state::eeprom_w)
bit 0 = CCU1-INT1 enable
*/
- konamigx_wrport1_1 = (data>>16)&0xff;
-// logerror("write %x to IRQ register (PC=%x)\n", konamigx_wrport1_1, space.device().safe_pc());
+ m_gx_wrport1_1 = (data>>16)&0xff;
+// logerror("write %x to IRQ register (PC=%x)\n", m_gx_wrport1_1, space.device().safe_pc());
- // gx_syncen is to ensure each IRQ is trigger at least once after being enabled
- if (konamigx_wrport1_1 & 0x80)
- gx_syncen |= konamigx_wrport1_1 & 0x1f;
+ // m_gx_syncen is to ensure each IRQ is triggered at least once after being enabled
+ if (m_gx_wrport1_1 & 0x80)
+ m_gx_syncen |= m_gx_wrport1_1 & 0x1f;
}
}
@@ -526,7 +509,7 @@ WRITE32_MEMBER(konamigx_state::control_w)
m_k055673->k053246_set_objcha_line((data&0x100000) ? ASSERT_LINE : CLEAR_LINE);
- konamigx_wrport2 = (data>>16)&0xff;
+ m_gx_wrport2 = (data>>16)&0xff;
}
}
@@ -534,8 +517,6 @@ WRITE32_MEMBER(konamigx_state::control_w)
/**********************************************************************************/
/* IRQ controllers */
-static int suspension_active, resume_trigger;
-
READ32_MEMBER(konamigx_state::ccu_r)
{
// the routine at 204abe in opengolf polls to see if we're in vblank (it wants values between 0x111 and 0x1df)
@@ -559,14 +540,14 @@ WRITE32_MEMBER(konamigx_state::ccu_w)
if (ACCESSING_BITS_24_31)
{
m_maincpu->set_input_line(1, CLEAR_LINE);
- gx_syncen |= 0x20;
+ m_gx_syncen |= 0x20;
}
// hblank interrupt ACK
if (ACCESSING_BITS_8_15)
{
m_maincpu->set_input_line(2, CLEAR_LINE);
- gx_syncen |= 0x40;
+ m_gx_syncen |= 0x40;
}
}
}
@@ -588,22 +569,22 @@ TIMER_CALLBACK_MEMBER(konamigx_state::boothack_callback)
TIMER_CALLBACK_MEMBER(konamigx_state::dmaend_callback)
{
// foul-proof (CPU0 could be deactivated while we wait)
- if (resume_trigger && suspension_active)
+ if (m_resume_trigger && m_suspension_active)
{
- suspension_active = 0;
- machine().scheduler().trigger(resume_trigger);
+ m_suspension_active = 0;
+ machine().scheduler().trigger(m_resume_trigger);
}
// DMA busy flag must be cleared before triggering IRQ 3
- gx_rdport1_3 &= ~2;
+ m_gx_rdport1_3 &= ~2;
// IRQ 3 is the "object DMA end" IRQ also happens during vblank
- if ((konamigx_wrport1_1 & 0x84) == 0x84 || (gx_syncen & 4))
+ if ((m_gx_wrport1_1 & 0x84) == 0x84 || (m_gx_syncen & 4))
{
- gx_syncen &= ~4;
+ m_gx_syncen &= ~4;
// lower OBJINT-REQ flag and trigger interrupt
- gx_rdport1_3 &= ~0x80;
+ m_gx_rdport1_3 &= ~0x80;
m_maincpu->set_input_line(3, HOLD_LINE);
}
}
@@ -611,7 +592,7 @@ TIMER_CALLBACK_MEMBER(konamigx_state::dmaend_callback)
void konamigx_state::dmastart_callback(int data)
{
// raise the DMA busy flag
- gx_rdport1_3 |= 2;
+ m_gx_rdport1_3 |= 2;
// begin transfer if DMAEN(bit4 of OBJSET1) is set (see p.48)
if (m_k055673->k053246_read_register(5) & 0x10)
@@ -621,27 +602,27 @@ void konamigx_state::dmastart_callback(int data)
}
// simulate DMA delay
- dmadelay_timer->adjust(attotime::from_usec(120));
+ m_dmadelay_timer->adjust(attotime::from_usec(120));
}
INTERRUPT_GEN_MEMBER(konamigx_state::konamigx_vbinterrupt)
{
// lift idle suspension
- if (resume_trigger && suspension_active)
+ if (m_resume_trigger && m_suspension_active)
{
- suspension_active = 0;
- machine().scheduler().trigger(resume_trigger);
+ m_suspension_active = 0;
+ machine().scheduler().trigger(m_resume_trigger);
}
// IRQ 1 is the main 60hz vblank interrupt
- if (gx_syncen & 0x20)
+ if (m_gx_syncen & 0x20)
{
- gx_syncen &= ~0x20;
+ m_gx_syncen &= ~0x20;
- if ((konamigx_wrport1_1 & 0x81) == 0x81 || (gx_syncen & 1))
+ if ((m_gx_wrport1_1 & 0x81) == 0x81 || (m_gx_syncen & 1))
{
- gx_syncen &= ~1;
+ m_gx_syncen &= ~1;
device.execute().set_input_line(1, HOLD_LINE);
}
}
@@ -656,26 +637,26 @@ TIMER_DEVICE_CALLBACK_MEMBER(konamigx_state::konamigx_hbinterrupt)
if (scanline == 240)
{
// lift idle suspension
- if (resume_trigger && suspension_active)
+ if (m_resume_trigger && m_suspension_active)
{
- suspension_active = 0;
- machine().scheduler().trigger(resume_trigger);
+ m_suspension_active = 0;
+ machine().scheduler().trigger(m_resume_trigger);
}
// IRQ 1 is the main 60hz vblank interrupt
- // the gx_syncen & 0x20 test doesn't work on type 3 or 4 ROM boards, likely because the ROM board
+ // the m_gx_syncen & 0x20 test doesn't work on type 3 or 4 ROM boards, likely because the ROM board
// generates the timing in those cases. With this change, rushing heroes and rng2 boot :)
// maybe this interrupt should only be every 30fps, or maybe there are flags to prevent the game running too fast
// the real hardware should output the display for each screen on alternate frames
// if(device->m_screen->frame_number() & 1)
- if (1) // gx_syncen & 0x20)
+ if (1) // m_gx_syncen & 0x20)
{
- gx_syncen &= ~0x20;
+ m_gx_syncen &= ~0x20;
- if ((konamigx_wrport1_1 & 0x81) == 0x81 || (gx_syncen & 1))
+ if ((m_gx_wrport1_1 & 0x81) == 0x81 || (m_gx_syncen & 1))
{
- gx_syncen &= ~1;
+ m_gx_syncen &= ~1;
m_maincpu->set_input_line(1, HOLD_LINE);
}
@@ -686,13 +667,13 @@ TIMER_DEVICE_CALLBACK_MEMBER(konamigx_state::konamigx_hbinterrupt)
else if(scanline < 240) // hblank
{
// IRQ 2 is a programmable interrupt with scanline resolution
- if (gx_syncen & 0x40)
+ if (m_gx_syncen & 0x40)
{
- gx_syncen &= ~0x40;
+ m_gx_syncen &= ~0x40;
- if ((konamigx_wrport1_1 & 0x82) == 0x82 || (gx_syncen & 2))
+ if ((m_gx_wrport1_1 & 0x82) == 0x82 || (m_gx_syncen & 2))
{
- gx_syncen &= ~2;
+ m_gx_syncen &= ~2;
m_maincpu->set_input_line(2, HOLD_LINE);
}
}
@@ -759,8 +740,6 @@ READ32_MEMBER(konamigx_state::type1_roz_r2)
return ROM[offset];
}
-//static int sync_frame = 0;
-
READ32_MEMBER(konamigx_state::type3_sync_r)
{
if(m_konamigx_current_frame==0)
@@ -768,7 +747,7 @@ READ32_MEMBER(konamigx_state::type3_sync_r)
else
return 0;// return 0xfffffffe | 0;
}
-static int last_prot_op, last_prot_clk;
+
/*
Run and Gun 2, Rushing Heroes, Winning Spike, and Vs. Net Soccer contain a XILINX FPGA that serves as security.
@@ -844,8 +823,6 @@ static int last_prot_op, last_prot_clk;
move.l #$C10400,($C102EC).l move.l #$C10400,($C102EC).l
*/
-//static int cc=0;
-
WRITE32_MEMBER(konamigx_state::type4_prot_w)
{
int clk;
@@ -853,18 +830,18 @@ WRITE32_MEMBER(konamigx_state::type4_prot_w)
if (offset == 1)
{
- last_prot_op = data>>16;
+ m_last_prot_op = data>>16;
}
else
{
data >>= 16;
clk = data & 0x200;
- if ((clk == 0) && (last_prot_clk != 0))
+ if ((clk == 0) && (m_last_prot_clk != 0))
{
- if (last_prot_op != -1)
+ if (m_last_prot_op != -1)
{
-// osd_printf_debug("type 4 prot command: %x\n", last_prot_op);
+// osd_printf_debug("type 4 prot command: %x\n", m_last_prot_op);
/*
known commands:
rng2 rushhero vsnet winspike what
@@ -874,7 +851,7 @@ WRITE32_MEMBER(konamigx_state::type4_prot_w)
0d97 0515 parse big DMA list at c10200
57a copy 4 bytes from c00f10 to c10f00 and 4 bytes from c00f30 to c0fe00
*/
- if ((last_prot_op == 0xa56) || (last_prot_op == 0xd96) || (last_prot_op == 0xd14) || (last_prot_op == 0xd1c))
+ if ((m_last_prot_op == 0xa56) || (m_last_prot_op == 0xd96) || (m_last_prot_op == 0xd14) || (m_last_prot_op == 0xd1c))
{
// memcpy from c01000 to c01400 for 0x400 bytes (startup check for type 4 games)
for (i = 0; i < 0x400; i += 2)
@@ -882,7 +859,7 @@ WRITE32_MEMBER(konamigx_state::type4_prot_w)
space.write_word(0xc01400+i, space.read_word(0xc01000+i));
}
}
- else if(last_prot_op == 0x57a) // winspike
+ else if(m_last_prot_op == 0x57a) // winspike
{
/* player 1 input buffer protection */
space.write_dword(0xc10f00, space.read_dword(0xc00f10));
@@ -894,7 +871,7 @@ WRITE32_MEMBER(konamigx_state::type4_prot_w)
space.write_dword(0xc0fe00, space.read_dword(0xc00f30));
space.write_dword(0xc0fe04, space.read_dword(0xc00f34));
}
- else if(last_prot_op == 0xd97) // rushhero
+ else if(m_last_prot_op == 0xd97) // rushhero
{
int src = 0xc09ff0;
int dst = 0xd20000;
@@ -917,7 +894,7 @@ WRITE32_MEMBER(konamigx_state::type4_prot_w)
space.write_byte(0xc01cc4, ~space.read_byte(0xc00547));
space.write_byte(0xc01cc5, ~space.read_byte(0xc00567));
}
- else if(last_prot_op == 0xb16) // slamdnk2
+ else if(m_last_prot_op == 0xb16) // slamdnk2
{
int src = 0xc01000;
int dst = 0xd20000;
@@ -932,36 +909,36 @@ WRITE32_MEMBER(konamigx_state::type4_prot_w)
//maybe here there's a [$d8001f] <- 0x31 write too?
}
- else if(last_prot_op == 0x515) // vsnetscr screen 1
+ else if(m_last_prot_op == 0x515) // vsnetscr screen 1
{
int adr;
- //printf("GXT4: command %x %d (PC=%x)\n", last_prot_op, cc++, space.device().safe_pc());
+ //printf("GXT4: command %x %d (PC=%x)\n", m_last_prot_op, cc++, space.device().safe_pc());
for (adr = 0; adr < 0x400; adr += 2)
space.write_word(0xc01c00+adr, space.read_word(0xc01800+adr));
}
- else if(last_prot_op == 0x115d) // vsnetscr screen 2
+ else if(m_last_prot_op == 0x115d) // vsnetscr screen 2
{
int adr;
- //printf("GXT4: command %x %d (PC=%x)\n", last_prot_op, cc++, space.device().safe_pc());
+ //printf("GXT4: command %x %d (PC=%x)\n", m_last_prot_op, cc++, space.device().safe_pc());
for (adr = 0; adr < 0x400; adr += 2)
space.write_word(0xc18c00+adr, space.read_word(0xc18800+adr));
}
else
{
- printf("GXT4: unknown protection command %x (PC=%x)\n", last_prot_op, space.device().safe_pc());
+ printf("GXT4: unknown protection command %x (PC=%x)\n", m_last_prot_op, space.device().safe_pc());
}
- if (konamigx_wrport1_1 & 0x10)
+ if (m_gx_wrport1_1 & 0x10)
{
- gx_rdport1_3 &= ~8;
+ m_gx_rdport1_3 &= ~8;
m_maincpu->set_input_line(4, HOLD_LINE);
}
// don't accidentally do a phony command
- last_prot_op = -1;
+ m_last_prot_op = -1;
}
}
- last_prot_clk = clk;
+ m_last_prot_clk = clk;
}
}
@@ -1180,7 +1157,7 @@ static INPUT_PORTS_START( common )
// note: racin' force expects bit 1 of the eeprom port to toggle
PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
- PORT_BIT( 0x000000fe, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, konamigx_state,gx_rdport1_3_r, NULL)
+ PORT_BIT( 0x000000fe, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, konamigx_state, gx_rdport1_3_r, NULL)
PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -3578,22 +3555,22 @@ ROM_END
MACHINE_START_MEMBER(konamigx_state,konamigx)
{
- save_item(NAME(konamigx_wrport1_1));
+ save_item(NAME(m_gx_wrport1_1));
}
MACHINE_RESET_MEMBER(konamigx_state,konamigx)
{
- konamigx_wrport1_0 = konamigx_wrport1_1 = 0;
- konamigx_wrport2 = 0;
+ m_gx_wrport1_0 = m_gx_wrport1_1 = 0;
+ m_gx_wrport2 = 0;
/*
bit0 : EEPROM data(don't care)
bit1 : DMA busy (cleared)
bit2-7: IRQ ready (all set)
*/
- gx_rdport1_3 = 0xfc;
- gx_syncen = 0;
- suspension_active = 0;
+ m_gx_rdport1_3 = 0xfc;
+ m_gx_syncen = 0;
+ m_suspension_active = 0;
// Hold sound CPUs in reset
m_soundcpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
@@ -3633,7 +3610,7 @@ MACHINE_RESET_MEMBER(konamigx_state,konamigx)
// To hack around this, we underclock the 68020 for 10 seconds during POST
m_maincpu->set_clock_scale(0.66f);
- boothack_timer->adjust(attotime::from_seconds(10));
+ m_boothack_timer->adjust(attotime::from_seconds(10));
}
if (!strcmp(setname, "le2") ||
@@ -3708,15 +3685,15 @@ DRIVER_INIT_MEMBER(konamigx_state,konamigx)
int i, match;
int readback = 0;
- konamigx_cfgport = -1;
- last_prot_op = -1;
- last_prot_clk = 0;
+ m_gx_cfgport = -1;
+ m_last_prot_op = -1;
+ m_last_prot_clk = 0;
- esc_cb = 0;
- resume_trigger = 0;
+ m_esc_cb = NULL;
+ m_resume_trigger = 0;
- dmadelay_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(konamigx_state::dmaend_callback),this));
- boothack_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(konamigx_state::boothack_callback),this));
+ m_dmadelay_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(konamigx_state::dmaend_callback),this));
+ m_boothack_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(konamigx_state::boothack_callback),this));
i = match = 0;
while ((gameDefs[i].cfgport != -1) && (!match))
@@ -3724,7 +3701,7 @@ DRIVER_INIT_MEMBER(konamigx_state,konamigx)
if (!strcmp(machine().system().name, gameDefs[i].romname))
{
match = 1;
- konamigx_cfgport = gameDefs[i].cfgport;
+ m_gx_cfgport = gameDefs[i].cfgport;
readback = gameDefs[i].readback;
switch (gameDefs[i].special)
@@ -3745,24 +3722,24 @@ DRIVER_INIT_MEMBER(konamigx_state,konamigx)
rom[0x810f1] &= ~1; // fix checksum
rom[0x872ea] |= 0xe0000; // enable plane B,C,D
- esc_cb = tkmmpzdm_esc;
+ m_esc_cb = &konamigx_state::tkmmpzdm_esc;
break;
}
case 3: // dragoon might
- esc_cb = dragoonj_esc;
+ m_esc_cb = &konamigx_state::dragoonj_esc;
break;
case 4: // sexyparo
- esc_cb = sexyparo_esc;
+ m_esc_cb = &konamigx_state::sexyparo_esc;
break;
case 5: // daiskiss
- esc_cb = daiskiss_esc;
+ m_esc_cb = &konamigx_state::daiskiss_esc;
break;
case 6: // salamander 2
- esc_cb = sal2_esc;
+ m_esc_cb = &konamigx_state::sal2_esc;
break;
case 7: // install type 4 Xilinx protection for non-type 3/4 games
@@ -3770,7 +3747,7 @@ DRIVER_INIT_MEMBER(konamigx_state,konamigx)
break;
case 8: // tbyahhoo
- esc_cb = tbyahhoo_esc;
+ m_esc_cb = &konamigx_state::tbyahhoo_esc;
break;
case 9: // fantjour
diff --git a/src/mame/drivers/mystwarr.c b/src/mame/drivers/mystwarr.c
index 76502908844..a33298acf88 100644
--- a/src/mame/drivers/mystwarr.c
+++ b/src/mame/drivers/mystwarr.c
@@ -850,7 +850,7 @@ MACHINE_START_MEMBER(mystwarr_state,mystwarr)
m_mw_irq_control = 0;
/* konamigx_mixer uses this, so better initialize it */
- konamigx_wrport1_0 = 0;
+ m_gx_wrport1_0 = 0;
save_item(NAME(m_mw_irq_control));
save_item(NAME(m_sound_ctrl));
diff --git a/src/mame/drivers/peplus.c b/src/mame/drivers/peplus.c
index e82ffbb7c1c..f85142c8335 100644
--- a/src/mame/drivers/peplus.c
+++ b/src/mame/drivers/peplus.c
@@ -206,7 +206,13 @@ public:
peplus_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_cmos_ram(*this, "cmos") ,
+ m_maincpu(*this, "maincpu"),
+ m_crtc(*this, "crtc"),
+ m_i2cmem(*this, "i2cmem"),
+ m_screen(*this, "screen"),
+ m_gfxdecode(*this, "gfxdecode"),
+ m_palette(*this, "palette"),
+ m_cmos_ram(*this, "cmos"),
m_program_ram(*this, "prograram"),
m_s3000_ram(*this, "s3000_ram"),
m_s5000_ram(*this, "s5000_ram"),
@@ -215,14 +221,17 @@ public:
m_sb000_ram(*this, "sb000_ram"),
m_sd000_ram(*this, "sd000_ram"),
m_sf000_ram(*this, "sf000_ram"),
- m_io_port(*this, "io_port"),
- m_maincpu(*this, "maincpu"),
- m_i2cmem(*this, "i2cmem"),
- m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette")
+ m_io_port(*this, "io_port")
{
}
+ required_device<cpu_device> m_maincpu;
+ required_device<r6545_1_device> m_crtc;
+ required_device<i2cmem_device> m_i2cmem;
+ required_device<screen_device> m_screen;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
+
required_shared_ptr<UINT8> m_cmos_ram;
required_shared_ptr<UINT8> m_program_ram;
required_shared_ptr<UINT8> m_s3000_ram;
@@ -233,6 +242,7 @@ public:
required_shared_ptr<UINT8> m_sd000_ram;
required_shared_ptr<UINT8> m_sf000_ram;
required_shared_ptr<UINT8> m_io_port;
+
tilemap_t *m_bg_tilemap;
UINT8 m_wingboard;
UINT8 m_doorcycle;
@@ -260,29 +270,15 @@ public:
UINT8 m_bv_data_bit;
UINT8 m_bv_loop_count;
UINT16 id023_data;
+
DECLARE_WRITE8_MEMBER(peplus_bgcolor_w);
DECLARE_WRITE8_MEMBER(peplus_crtc_display_w);
- DECLARE_WRITE8_MEMBER(peplus_io_w);
DECLARE_WRITE8_MEMBER(peplus_duart_w);
DECLARE_WRITE8_MEMBER(peplus_cmos_w);
- DECLARE_WRITE8_MEMBER(peplus_s3000_w);
- DECLARE_WRITE8_MEMBER(peplus_s5000_w);
- DECLARE_WRITE8_MEMBER(peplus_s7000_w);
- DECLARE_WRITE8_MEMBER(peplus_sb000_w);
- DECLARE_WRITE8_MEMBER(peplus_sd000_w);
- DECLARE_WRITE8_MEMBER(peplus_sf000_w);
DECLARE_WRITE8_MEMBER(peplus_output_bank_a_w);
DECLARE_WRITE8_MEMBER(peplus_output_bank_b_w);
DECLARE_WRITE8_MEMBER(peplus_output_bank_c_w);
- DECLARE_READ8_MEMBER(peplus_io_r);
DECLARE_READ8_MEMBER(peplus_duart_r);
- DECLARE_READ8_MEMBER(peplus_cmos_r);
- DECLARE_READ8_MEMBER(peplus_s3000_r);
- DECLARE_READ8_MEMBER(peplus_s5000_r);
- DECLARE_READ8_MEMBER(peplus_s7000_r);
- DECLARE_READ8_MEMBER(peplus_sb000_r);
- DECLARE_READ8_MEMBER(peplus_sd000_r);
- DECLARE_READ8_MEMBER(peplus_sf000_r);
DECLARE_READ8_MEMBER(peplus_bgcolor_r);
DECLARE_READ8_MEMBER(peplus_dropdoor_r);
DECLARE_READ8_MEMBER(peplus_watchdog_r);
@@ -303,10 +299,7 @@ public:
UINT32 screen_update_peplus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void peplus_load_superdata(const char *bank_name);
DECLARE_PALETTE_INIT(peplus);
- required_device<cpu_device> m_maincpu;
- required_device<i2cmem_device> m_i2cmem;
- required_device<gfxdecode_device> m_gfxdecode;
- required_device<palette_device> m_palette;
+ void handle_lightpen();
protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
@@ -392,7 +385,7 @@ void peplus_state::device_timer(emu_timer &timer, device_timer_id id, int param,
switch (id)
{
case TIMER_ASSERT_LP:
- downcast<mc6845_device *>((device_t*)ptr)->assert_light_pen_input();
+ m_crtc->assert_light_pen_input();
break;
default:
assert_always(FALSE, "Unknown id in peplus_state::device_timer");
@@ -400,25 +393,23 @@ void peplus_state::device_timer(emu_timer &timer, device_timer_id id, int param,
}
-static void handle_lightpen( mc6845_device *device )
+void peplus_state::handle_lightpen()
{
- peplus_state *state = device->machine().driver_data<peplus_state>();
- int x_val = device->machine().root_device().ioport("TOUCH_X")->read_safe(0x00);
- int y_val = device->machine().root_device().ioport("TOUCH_Y")->read_safe(0x00);
- const rectangle &vis_area = device->screen().visible_area();
+ int x_val = ioport("TOUCH_X")->read_safe(0x00);
+ int y_val = ioport("TOUCH_Y")->read_safe(0x00);
+ const rectangle &vis_area = m_screen->visible_area();
int xt, yt;
xt = x_val * vis_area.width() / 1024 + vis_area.min_x;
yt = y_val * vis_area.height() / 1024 + vis_area.min_y;
- state->timer_set(device->screen().time_until_pos(yt, xt), peplus_state::TIMER_ASSERT_LP, 0, device);
+ timer_set(m_screen->time_until_pos(yt, xt), TIMER_ASSERT_LP, 0);
}
WRITE_LINE_MEMBER(peplus_state::crtc_vsync)
{
- mc6845_device *device = machine().device<mc6845_device>("crtc");
m_maincpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE);
- handle_lightpen(device);
+ handle_lightpen();
}
WRITE8_MEMBER(peplus_state::peplus_crtc_display_w)
@@ -431,12 +422,7 @@ WRITE8_MEMBER(peplus_state::peplus_crtc_display_w)
m_bg_tilemap->mark_tile_dirty(m_vid_address);
/* An access here triggers a device read !*/
- machine().device<mc6845_device>("crtc")->register_r(space, 0);
-}
-
-WRITE8_MEMBER(peplus_state::peplus_io_w)
-{
- m_io_port[offset] = data;
+ m_crtc->register_r(space, 0);
}
WRITE8_MEMBER(peplus_state::peplus_duart_w)
@@ -458,36 +444,6 @@ WRITE8_MEMBER(peplus_state::peplus_cmos_w)
m_cmos_ram[offset] = data;
}
-WRITE8_MEMBER(peplus_state::peplus_s3000_w)
-{
- m_s3000_ram[offset] = data;
-}
-
-WRITE8_MEMBER(peplus_state::peplus_s5000_w)
-{
- m_s5000_ram[offset] = data;
-}
-
-WRITE8_MEMBER(peplus_state::peplus_s7000_w)
-{
- m_s7000_ram[offset] = data;
-}
-
-WRITE8_MEMBER(peplus_state::peplus_sb000_w)
-{
- m_sb000_ram[offset] = data;
-}
-
-WRITE8_MEMBER(peplus_state::peplus_sd000_w)
-{
- m_sd000_ram[offset] = data;
-}
-
-WRITE8_MEMBER(peplus_state::peplus_sf000_w)
-{
- m_sf000_ram[offset] = data;
-}
-
WRITE8_MEMBER(peplus_state::peplus_output_bank_a_w)
{
output_set_value("pe_bnka0",(data >> 0) & 1); /* Coin Lockout */
@@ -542,52 +498,12 @@ WRITE8_MEMBER(peplus_state::i2c_nvram_w)
* Read Handlers *
****************/
-READ8_MEMBER(peplus_state::peplus_io_r)
-{
- return m_io_port[offset];
-}
-
READ8_MEMBER(peplus_state::peplus_duart_r)
{
// Used for Slot Accounting System Communication
return 0x00;
}
-READ8_MEMBER(peplus_state::peplus_cmos_r)
-{
- return m_cmos_ram[offset];
-}
-
-READ8_MEMBER(peplus_state::peplus_s3000_r)
-{
- return m_s3000_ram[offset];
-}
-
-READ8_MEMBER(peplus_state::peplus_s5000_r)
-{
- return m_s5000_ram[offset];
-}
-
-READ8_MEMBER(peplus_state::peplus_s7000_r)
-{
- return m_s7000_ram[offset];
-}
-
-READ8_MEMBER(peplus_state::peplus_sb000_r)
-{
- return m_sb000_ram[offset];
-}
-
-READ8_MEMBER(peplus_state::peplus_sd000_r)
-{
- return m_sd000_ram[offset];
-}
-
-READ8_MEMBER(peplus_state::peplus_sf000_r)
-{
- return m_sf000_ram[offset];
-}
-
/* Last Color in Every Palette is bgcolor */
READ8_MEMBER(peplus_state::peplus_bgcolor_r)
{
@@ -1056,7 +972,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( peplus_iomap, AS_IO, 8, peplus_state )
// Battery-backed RAM (0x1000-0x01fff Extended RAM for Superboards Only)
- AM_RANGE(0x0000, 0x1fff) AM_READWRITE(peplus_cmos_r, peplus_cmos_w) AM_SHARE("cmos")
+ AM_RANGE(0x0000, 0x1fff) AM_RAM_WRITE(peplus_cmos_w) AM_SHARE("cmos")
// CRT Controller
AM_RANGE(0x2008, 0x2008) AM_WRITE(peplus_crtc_mode_w)
@@ -1065,14 +981,14 @@ static ADDRESS_MAP_START( peplus_iomap, AS_IO, 8, peplus_state )
AM_RANGE(0x2083, 0x2083) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(peplus_crtc_display_w)
// Superboard Data
- AM_RANGE(0x3000, 0x3fff) AM_READWRITE(peplus_s3000_r, peplus_s3000_w) AM_SHARE("s3000_ram")
+ AM_RANGE(0x3000, 0x3fff) AM_RAM AM_SHARE("s3000_ram")
// Sound and Dipswitches
AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("aysnd", ay8910_device, address_w)
AM_RANGE(0x4004, 0x4004) AM_READ_PORT("SW1")/* likely ay8910 input port, not direct */ AM_DEVWRITE("aysnd", ay8910_device, data_w)
// Superboard Data
- AM_RANGE(0x5000, 0x5fff) AM_READWRITE(peplus_s5000_r, peplus_s5000_w) AM_SHARE("s5000_ram")
+ AM_RANGE(0x5000, 0x5fff) AM_RAM AM_SHARE("s5000_ram")
// Background Color Latch
AM_RANGE(0x6000, 0x6000) AM_READ(peplus_bgcolor_r) AM_WRITE(peplus_bgcolor_w)
@@ -1081,7 +997,7 @@ static ADDRESS_MAP_START( peplus_iomap, AS_IO, 8, peplus_state )
AM_RANGE(0x06001, 0x06400) AM_RAM AM_SHARE("videoram")
// Superboard Data
- AM_RANGE(0x7000, 0x7fff) AM_READWRITE(peplus_s7000_r, peplus_s7000_w) AM_SHARE("s7000_ram")
+ AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("s7000_ram")
// Input Bank A, Output Bank C
AM_RANGE(0x8000, 0x8000) AM_READ(peplus_input_bank_a_r) AM_WRITE(peplus_output_bank_c_w)
@@ -1093,22 +1009,22 @@ static ADDRESS_MAP_START( peplus_iomap, AS_IO, 8, peplus_state )
AM_RANGE(0xa000, 0xa000) AM_READ(peplus_input0_r) AM_WRITE(peplus_output_bank_b_w)
// Superboard Data
- AM_RANGE(0xb000, 0xbfff) AM_READWRITE(peplus_sb000_r, peplus_sb000_w) AM_SHARE("sb000_ram")
+ AM_RANGE(0xb000, 0xbfff) AM_RAM AM_SHARE("sb000_ram")
// Output Bank A
AM_RANGE(0xc000, 0xc000) AM_READ(peplus_watchdog_r) AM_WRITE(peplus_output_bank_a_w)
// Superboard Data
- AM_RANGE(0xd000, 0xdfff) AM_READWRITE(peplus_sd000_r, peplus_sd000_w) AM_SHARE("sd000_ram")
+ AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("sd000_ram")
// DUART
AM_RANGE(0xe000, 0xe00f) AM_READWRITE(peplus_duart_r, peplus_duart_w)
// Superboard Data
- AM_RANGE(0xf000, 0xffff) AM_READWRITE(peplus_sf000_r, peplus_sf000_w) AM_SHARE("sf000_ram")
+ AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("sf000_ram")
/* Ports start here */
- AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_READ(peplus_io_r) AM_WRITE(peplus_io_w) AM_SHARE("io_port")
+ AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_RAM AM_SHARE("io_port")
ADDRESS_MAP_END
diff --git a/src/mame/includes/konamigx.h b/src/mame/includes/konamigx.h
index 5921cabbb1f..0a4f1a497cd 100644
--- a/src/mame/includes/konamigx.h
+++ b/src/mame/includes/konamigx.h
@@ -16,58 +16,59 @@ public:
m_maincpu(*this,"maincpu"),
m_soundcpu(*this, "soundcpu"),
m_dasp(*this, "dasp"),
- m_workram(*this,"workram"),
- m_psacram(*this,"psacram"),
- m_subpaletteram32(*this,"subpaletteram"),
m_k055673(*this, "k055673"),
m_k055555(*this, "k055555"),
m_k056832(*this, "k056832"),
m_k054338(*this, "k054338"),
+ m_k056800(*this, "k056800"),
+ m_k054539_1(*this,"k054539_1"),
+ m_k054539_2(*this,"k054539_2"),
+ m_gfxdecode(*this, "gfxdecode"),
+ m_screen(*this, "screen"),
+ m_palette(*this, "palette"),
+ m_workram(*this,"workram"),
+ m_psacram(*this,"psacram"),
+ m_subpaletteram32(*this,"subpaletteram"),
m_k053936_0_ctrl(*this,"k053936_0_ctrl",32),
m_k053936_0_linectrl(*this,"k053936_0_line",32),
m_k053936_0_ctrl_16(*this,"k053936_0_ct16",16),
m_k053936_0_linectrl_16(*this,"k053936_0_li16",16),
m_konamigx_type3_psac2_bank(*this,"psac2_bank"),
- m_k056800(*this, "k056800"),
- m_k054539_1(*this,"k054539_1"),
- m_k054539_2(*this,"k054539_2"),
+ m_generic_paletteram_32(*this, "paletteram"),
m_an0(*this, "AN0"),
m_an1(*this, "AN1"),
m_light0_x(*this, "LIGHT0_X"),
m_light0_y(*this, "LIGHT0_Y"),
m_light1_x(*this, "LIGHT1_X"),
m_light1_y(*this, "LIGHT1_Y"),
- m_eepromout(*this, "EEPROMOUT"),
- m_gfxdecode(*this, "gfxdecode"),
- m_screen(*this, "screen"),
- m_palette(*this, "palette"),
- m_generic_paletteram_32(*this, "paletteram")
+ m_eepromout(*this, "EEPROMOUT")
{ }
required_device<cpu_device> m_maincpu;
optional_device<cpu_device> m_soundcpu;
optional_device<tms57002_device> m_dasp;
-
- optional_shared_ptr<UINT32> m_workram;
- optional_shared_ptr<UINT32> m_psacram;
- optional_shared_ptr<UINT32> m_subpaletteram32;
required_device<k055673_device> m_k055673;
required_device<k055555_device> m_k055555;
required_device<k056832_device> m_k056832;
optional_device<k054338_device> m_k054338;
- optional_shared_ptr<UINT16> m_k053936_0_ctrl;
- optional_shared_ptr<UINT16> m_k053936_0_linectrl;
- optional_shared_ptr<UINT16> m_k053936_0_ctrl_16;
- optional_shared_ptr<UINT16> m_k053936_0_linectrl_16;
- optional_shared_ptr<UINT32> m_konamigx_type3_psac2_bank;
optional_device<k056800_device> m_k056800;
optional_device<k054539_device> m_k054539_1;
optional_device<k054539_device> m_k054539_2;
- optional_ioport m_an0, m_an1, m_light0_x, m_light0_y, m_light1_x, m_light1_y, m_eepromout;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
+
+ optional_shared_ptr<UINT32> m_workram;
+ optional_shared_ptr<UINT32> m_psacram;
+ optional_shared_ptr<UINT32> m_subpaletteram32;
+ optional_shared_ptr<UINT16> m_k053936_0_ctrl;
+ optional_shared_ptr<UINT16> m_k053936_0_linectrl;
+ optional_shared_ptr<UINT16> m_k053936_0_ctrl_16;
+ optional_shared_ptr<UINT16> m_k053936_0_linectrl_16;
+ optional_shared_ptr<UINT32> m_konamigx_type3_psac2_bank;
optional_shared_ptr<UINT32> m_generic_paletteram_32;
+
+ optional_ioport m_an0, m_an1, m_light0_x, m_light0_y, m_light1_x, m_light1_y, m_eepromout;
DECLARE_WRITE32_MEMBER(esc_w);
DECLARE_WRITE32_MEMBER(eeprom_w);
@@ -166,23 +167,84 @@ public:
void fantjour_dma_install();
void konamigx_mixer_primode(int mode);
+
+ typedef void (konamigx_state::*esc_cb)(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4);
+
+ void tkmmpzdm_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4);
+ void dragoonj_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4);
+ void sal2_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4);
+ void sexyparo_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4);
+ void tbyahhoo_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4);
+ void daiskiss_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4);
+
+ inline int K053247GX_combine_c18(int attrib);
+ inline int K055555GX_decode_objcolor(int c18);
+ inline int K055555GX_decode_inpri(int c18);
+ int K055555GX_decode_vmixcolor(int layer, int *color);
UINT8 m_sound_ctrl;
UINT8 m_sound_intck;
UINT32 m_fantjour_dma[8];
int m_konamigx_current_frame;
int m_gx_objdma, m_gx_primode;
-};
-
+ emu_timer *m_dmadelay_timer;
+ emu_timer *m_boothack_timer;
+ int m_gx_rdport1_3, m_gx_syncen;
+ int m_gx_cfgport;
+ int m_suspension_active, m_resume_trigger;
+ int m_last_prot_op, m_last_prot_clk;
+
+ UINT8 m_esc_program[4096];
+ esc_cb m_esc_cb;
+
+ UINT16 m_prot_data[0x20];
+
+ // 1st-Tier GX/MW Variables
+ // frequently used registers
+ int m_k053247_vrcbk[4];
+ int m_k053247_coreg, m_k053247_coregshift, m_k053247_opset;
+ int m_opri, m_oinprion;
+ int m_vcblk[6], m_ocblk;
+ int m_vinmix, m_vmixon, m_osinmix, m_osmixon;
+ UINT8 m_gx_wrport1_0, m_gx_wrport1_1;
+ UINT16 m_gx_wrport2;
+
+ // 2nd-Tier GX/MW Graphics Variables
+ UINT8 *m_gx_objzbuf, *m_gx_shdzbuf;
+ int m_layer_colorbase[4];
+ INT32 m_gx_tilebanks[8], m_gx_oldbanks[8];
+ int m_gx_tilemode, m_gx_rozenable, m_psac_colorbase, m_last_psac_colorbase;
+ int m_gx_specialrozenable; // type 1 roz, with voxel height-map, rendered from 2 source tilemaps (which include height data) to temp bitmap for further processing
+ int m_gx_rushingheroes_hack;
+ int m_gx_le2_textcolour_hack;
+ tilemap_t *m_gx_psac_tilemap, *m_gx_psac_tilemap2;
+ bitmap_ind16 *m_type3_roz_temp_bitmap;
+ tilemap_t *m_gx_psac_tilemap_alt;
+ int m_konamigx_has_dual_screen;
+ int m_konamigx_palformat;
+ bitmap_rgb32 *m_dualscreen_left_tempbitmap;
+ bitmap_rgb32 *m_dualscreen_right_tempbitmap;
+
+ /* On Type-1 the K053936 output is rendered to these temporary bitmaps as raw data
+ the 'voxel' effect to give the pixels height is a post-process operation on the
+ output of the K053936 (this can clearly be seen in videos as large chunks of
+ scenary flicker when in the distance due to single pixels in the K053936 output
+ becoming visible / invisible due to drawing precision.
-/*----------- defined in video/konamigx.c -----------*/
+ -- however, progress on this has stalled as our K053936 doesn't seem to give
+ the right output for post processing, I suspect the game is using some
+ unsupported flipping modes (probably due to the way it's hooked up to the
+ rest of the chips) which is causing entirely the wrong output.
-
-// 1st-Tier GX/MW Variables and Functions
-extern UINT8 konamigx_wrport1_0, konamigx_wrport1_1;
-extern UINT16 konamigx_wrport2;
+ -- furthermore video/konamigx.c contains it's own implementation of
+ the K053936_zoom_draw named K053936GP_zoom_draw ...
+ */
+ bitmap_ind16 *m_gxtype1_roz_dstbitmap;
+ bitmap_ind16 *m_gxtype1_roz_dstbitmap2;
+ rectangle m_gxtype1_roz_dstbitmapclip;
+};
// Sprite Callbacks
diff --git a/src/mame/machine/konamigx.c b/src/mame/machine/konamigx.c
index f871c31257a..c88d08e90f3 100644
--- a/src/mame/machine/konamigx.c
+++ b/src/mame/machine/konamigx.c
@@ -41,13 +41,11 @@ Has word-wide registers as follows:
*/
// K055550/K053990 protection chips, perform simple memset() and other game logic operations
-static UINT16 prot_data[0x20];
-
READ16_MEMBER(konamigx_state::K055550_word_r)
{
- return(prot_data[offset]);
+ return(m_prot_data[offset]);
}
WRITE16_MEMBER(konamigx_state::K055550_word_w)
@@ -56,7 +54,7 @@ WRITE16_MEMBER(konamigx_state::K055550_word_w)
int src, tgt, srcend, tgtend, skip, cx1, sx1, wx1, cy1, sy1, wy1, cz1, sz1, wz1, c2, s2, w2;
int dx, dy, angle;
- COMBINE_DATA(prot_data+offset);
+ COMBINE_DATA(m_prot_data+offset);
if (offset == 0 && ACCESSING_BITS_8_15)
{
@@ -65,13 +63,13 @@ WRITE16_MEMBER(konamigx_state::K055550_word_w)
{
case 0x97: // memset() (Dadandarn at 0x639dc)
case 0x9f: // memset() (Violent Storm at 0x989c)
- adr = (prot_data[7] << 16) | prot_data[8];
- bsize = (prot_data[10] << 16) | prot_data[11];
- count = (prot_data[0] & 0xff) + 1;
+ adr = (m_prot_data[7] << 16) | m_prot_data[8];
+ bsize = (m_prot_data[10] << 16) | m_prot_data[11];
+ count = (m_prot_data[0] & 0xff) + 1;
lim = adr+bsize*count;
for(i=adr; i<lim; i+=2)
- space.write_word(i, prot_data[0x1a/2]);
+ space.write_word(i, m_prot_data[0x1a/2]);
break;
// WARNING: The following cases are speculation based with questionable accuracy!(AAT)
@@ -82,19 +80,19 @@ WRITE16_MEMBER(konamigx_state::K055550_word_w)
// gameplay. It refers to a 32x8-word list at 0x210e00 and seems to
// be tied with another 13x128-byte table at 0x205080.
// Both tables appear "check-only" and have little effect on gameplay.
- count =(prot_data[0] & 0xff) + 1; // unknown ( byte 0x00)
- i = prot_data[1]; // unknown ( byte 0x1f)
- adr = prot_data[7]<<16 | prot_data[8]; // address (dword 0x210e00)
- lim = prot_data[9]; // unknown ( word 0x0010)
- src = prot_data[10]<<16 | prot_data[11]; // unknown (dword zero)
- tgt = prot_data[12]<<16 | prot_data[13]; // unknown (dword zero)
+ count =(m_prot_data[0] & 0xff) + 1; // unknown ( byte 0x00)
+ i = m_prot_data[1]; // unknown ( byte 0x1f)
+ adr = m_prot_data[7]<<16 | m_prot_data[8]; // address (dword 0x210e00)
+ lim = m_prot_data[9]; // unknown ( word 0x0010)
+ src = m_prot_data[10]<<16 | m_prot_data[11]; // unknown (dword zero)
+ tgt = m_prot_data[12]<<16 | m_prot_data[13]; // unknown (dword zero)
break;
case 0xa0: // update collision detection table (Violent Storm at 0x018b42)
- count = prot_data[0] & 0xff; // number of objects - 1
- skip = prot_data[1]>>(8-1); // words to skip in each entry to reach the "hit list"
- adr = prot_data[2]<<16 | prot_data[3]; // where the table is located
- bsize = prot_data[5]<<16 | prot_data[6]; // object entry size in bytes
+ count = m_prot_data[0] & 0xff; // number of objects - 1
+ skip = m_prot_data[1]>>(8-1); // words to skip in each entry to reach the "hit list"
+ adr = m_prot_data[2]<<16 | m_prot_data[3]; // where the table is located
+ bsize = m_prot_data[5]<<16 | m_prot_data[6]; // object entry size in bytes
srcend = adr + bsize * count;
tgtend = srcend + bsize;
@@ -142,8 +140,8 @@ WRITE16_MEMBER(konamigx_state::K055550_word_w)
break;
case 0xc0: // calculate object "homes-in" vector (Violent Storm at 0x03da9e)
- dx = (short)prot_data[0xc];
- dy = (short)prot_data[0xd];
+ dx = (short)m_prot_data[0xc];
+ dy = (short)m_prot_data[0xd];
// it's not necessary to use lookup tables because Violent Storm
// only calls the service once per enemy per frame.
@@ -165,7 +163,7 @@ WRITE16_MEMBER(konamigx_state::K055550_word_w)
else
i = machine().rand() & 0xff; // vector direction indeterminate
- prot_data[0x10] = i;
+ m_prot_data[0x10] = i;
break;
default:
@@ -183,27 +181,27 @@ WRITE16_MEMBER(konamigx_state::K053990_martchmp_word_w)
int mode, i, element_size = 1;
UINT16 mod_val, mod_data;
- COMBINE_DATA(prot_data+offset);
+ COMBINE_DATA(m_prot_data+offset);
if (offset == 0x0c && ACCESSING_BITS_8_15)
{
- mode = (prot_data[0x0d]<<8 & 0xff00) | (prot_data[0x0f] & 0xff);
+ mode = (m_prot_data[0x0d]<<8 & 0xff00) | (m_prot_data[0x0f] & 0xff);
switch (mode)
{
case 0xffff: // word copy
element_size = 2;
case 0xff00: // byte copy
- src_addr = prot_data[0x0];
- src_addr |= prot_data[0x1]<<16 & 0xff0000;
- dst_addr = prot_data[0x2];
- dst_addr |= prot_data[0x3]<<16 & 0xff0000;
- src_count = prot_data[0x8]>>8;
- //dst_count = prot_data[0x9]>>8;
- src_skip = prot_data[0xa] & 0xff;
- dst_skip = prot_data[0xb] & 0xff;
-
- if ((prot_data[0x8] & 0xff) == 2) src_count <<= 1;
+ src_addr = m_prot_data[0x0];
+ src_addr |= m_prot_data[0x1]<<16 & 0xff0000;
+ dst_addr = m_prot_data[0x2];
+ dst_addr |= m_prot_data[0x3]<<16 & 0xff0000;
+ src_count = m_prot_data[0x8]>>8;
+ //dst_count = m_prot_data[0x9]>>8;
+ src_skip = m_prot_data[0xa] & 0xff;
+ dst_skip = m_prot_data[0xb] & 0xff;
+
+ if ((m_prot_data[0x8] & 0xff) == 2) src_count <<= 1;
src_skip += element_size;
dst_skip += element_size;
@@ -223,16 +221,16 @@ WRITE16_MEMBER(konamigx_state::K053990_martchmp_word_w)
break;
case 0x00ff: // sprite list modifier
- src_addr = prot_data[0x0];
- src_addr |= prot_data[0x1]<<16 & 0xff0000;
- src_skip = prot_data[0x1]>>8;
- dst_addr = prot_data[0x2];
- dst_addr |= prot_data[0x3]<<16 & 0xff0000;
- dst_skip = prot_data[0x3]>>8;
- mod_addr = prot_data[0x4];
- mod_addr |= prot_data[0x5]<<16 & 0xff0000;
- mod_skip = prot_data[0x5]>>8;
- mod_offs = prot_data[0x8] & 0xff;
+ src_addr = m_prot_data[0x0];
+ src_addr |= m_prot_data[0x1]<<16 & 0xff0000;
+ src_skip = m_prot_data[0x1]>>8;
+ dst_addr = m_prot_data[0x2];
+ dst_addr |= m_prot_data[0x3]<<16 & 0xff0000;
+ dst_skip = m_prot_data[0x3]>>8;
+ mod_addr = m_prot_data[0x4];
+ mod_addr |= m_prot_data[0x5]<<16 & 0xff0000;
+ mod_skip = m_prot_data[0x5]>>8;
+ mod_offs = m_prot_data[0x8] & 0xff;
mod_offs<<= 1;
mod_count = 0x100;
diff --git a/src/mame/video/konamigx.c b/src/mame/video/konamigx.c
index 1128d55655b..6886673f1d8 100644
--- a/src/mame/video/konamigx.c
+++ b/src/mame/video/konamigx.c
@@ -11,71 +11,8 @@
//#define GX_DEBUG
#define VERBOSE 0
-/***************************************************************************/
-/* */
-/* 2nd-Tier GX/MW Graphics Functions */
-/* */
-/***************************************************************************/
-
-
-static UINT8 *gx_objzbuf, *gx_shdzbuf;
-
-
-
-static int layer_colorbase[4];
-static INT32 gx_tilebanks[8], gx_oldbanks[8];
-static int gx_tilemode, gx_rozenable, psac_colorbase, last_psac_colorbase;
-static int gx_specialrozenable; // type 1 roz, with voxel height-map, rendered from 2 source tilemaps (which include height data) to temp bitmap for further processing
-static int gx_rushingheroes_hack;
-static int gx_le2_textcolour_hack;
-static tilemap_t *gx_psac_tilemap, *gx_psac_tilemap2;
-static bitmap_ind16* type3_roz_temp_bitmap;
-static tilemap_t* gx_psac_tilemap_alt;
-
-static int konamigx_has_dual_screen;
INLINE void set_color_555(palette_device &palette, pen_t color, int rshift, int gshift, int bshift, UINT16 data);
-static int konamigx_palformat;
-static bitmap_rgb32* dualscreen_left_tempbitmap;
-static bitmap_rgb32* dualscreen_right_tempbitmap;
-
-/* On Type-1 the K053936 output is rendered to these temporary bitmaps as raw data
- the 'voxel' effect to give the pixels height is a post-process operation on the
- output of the K053936 (this can clearly be seen in videos as large chunks of
- scenary flicker when in the distance due to single pixels in the K053936 output
- becoming visible / invisible due to drawing precision.
-
- -- however, progress on this has stalled as our K053936 doesn't seem to give
- the right output for post processing, I suspect the game is using some
- unsupported flipping modes (probably due to the way it's hooked up to the
- rest of the chips) which is causing entirely the wrong output.
-
- -- furthermore machine/konamigx.c (!) contains it's own implementation of
- the K053936_zoom_draw named K053936GP_zoom_draw ... It really shouldn't do,
- epsecially not in 'machine', which isn't meant to be video related.
-
-
- */
-static bitmap_ind16 *gxtype1_roz_dstbitmap;
-static bitmap_ind16 *gxtype1_roz_dstbitmap2;
-static rectangle gxtype1_roz_dstbitmapclip;
-
-/***************************************************************************/
-/* */
-/* 1st-Tier GX/MW Variables and Functions */
-/* */
-/***************************************************************************/
-
-// global system ports access
-UINT8 konamigx_wrport1_0, konamigx_wrport1_1;
-UINT16 konamigx_wrport2;
-
-// frequently used registers
-static int k053247_vrcbk[4];
-static int k053247_coreg, k053247_coregshift, k053247_opset;
-static int opri, oinprion;
-static int vcblk[6], ocblk;
-static int vinmix, vmixon, osinmix, osmixon;
void konamigx_state::konamigx_precache_registers(void)
@@ -86,68 +23,68 @@ void konamigx_state::konamigx_precache_registers(void)
int i;
i = m_k055673->k053247_read_register(0x8/2);
- k053247_vrcbk[0] = (i & 0x000f) << 14;
- k053247_vrcbk[1] = (i & 0x0f00) << 6;
+ m_k053247_vrcbk[0] = (i & 0x000f) << 14;
+ m_k053247_vrcbk[1] = (i & 0x0f00) << 6;
i = m_k055673->k053247_read_register(0xa/2);
- k053247_vrcbk[2] = (i & 0x000f) << 14;
- k053247_vrcbk[3] = (i & 0x0f00) << 6;
+ m_k053247_vrcbk[2] = (i & 0x000f) << 14;
+ m_k053247_vrcbk[3] = (i & 0x0f00) << 6;
// COREG == OBJSET2+1C == bit8-11 of OPSET ??? (see p.50 last table, needs p.49 to confirm)
- k053247_opset = m_k055673->k053247_read_register(0xc/2);
-
- i = k053247_opset & 7; if (i > 4) i = 4;
-
- k053247_coreg = m_k055673->k053247_read_register(0xc/2)>>8 & 0xf;
- k053247_coreg =(k053247_coreg & coregmasks[i]) << 12;
-
- k053247_coregshift = coregshifts[i];
-
- opri = m_k055555->K055555_read_register(K55_PRIINP_8);
- oinprion = m_k055555->K055555_read_register(K55_OINPRI_ON);
- vcblk[0] = m_k055555->K055555_read_register(K55_PALBASE_A);
- vcblk[1] = m_k055555->K055555_read_register(K55_PALBASE_B);
- vcblk[2] = m_k055555->K055555_read_register(K55_PALBASE_C);
- vcblk[3] = m_k055555->K055555_read_register(K55_PALBASE_D);
- vcblk[4] = m_k055555->K055555_read_register(K55_PALBASE_SUB1);
- vcblk[5] = m_k055555->K055555_read_register(K55_PALBASE_SUB2);
- ocblk = m_k055555->K055555_read_register(K55_PALBASE_OBJ);
- vinmix = m_k055555->K055555_read_register(K55_BLEND_ENABLES);
- vmixon = m_k055555->K055555_read_register(K55_VINMIX_ON);
- osinmix = m_k055555->K055555_read_register(K55_OSBLEND_ENABLES);
- osmixon = m_k055555->K055555_read_register(K55_OSBLEND_ON);
+ m_k053247_opset = m_k055673->k053247_read_register(0xc/2);
+
+ i = m_k053247_opset & 7; if (i > 4) i = 4;
+
+ m_k053247_coreg = m_k055673->k053247_read_register(0xc/2)>>8 & 0xf;
+ m_k053247_coreg =(m_k053247_coreg & coregmasks[i]) << 12;
+
+ m_k053247_coregshift = coregshifts[i];
+
+ m_opri = m_k055555->K055555_read_register(K55_PRIINP_8);
+ m_oinprion = m_k055555->K055555_read_register(K55_OINPRI_ON);
+ m_vcblk[0] = m_k055555->K055555_read_register(K55_PALBASE_A);
+ m_vcblk[1] = m_k055555->K055555_read_register(K55_PALBASE_B);
+ m_vcblk[2] = m_k055555->K055555_read_register(K55_PALBASE_C);
+ m_vcblk[3] = m_k055555->K055555_read_register(K55_PALBASE_D);
+ m_vcblk[4] = m_k055555->K055555_read_register(K55_PALBASE_SUB1);
+ m_vcblk[5] = m_k055555->K055555_read_register(K55_PALBASE_SUB2);
+ m_ocblk = m_k055555->K055555_read_register(K55_PALBASE_OBJ);
+ m_vinmix = m_k055555->K055555_read_register(K55_BLEND_ENABLES);
+ m_vmixon = m_k055555->K055555_read_register(K55_VINMIX_ON);
+ m_osinmix = m_k055555->K055555_read_register(K55_OSBLEND_ENABLES);
+ m_osmixon = m_k055555->K055555_read_register(K55_OSBLEND_ON);
}
-INLINE int K053247GX_combine_c18(int attrib) // (see p.46)
+inline int konamigx_state::K053247GX_combine_c18(int attrib) // (see p.46)
{
int c18;
- c18 = (attrib & 0xff)<<k053247_coregshift | k053247_coreg;
+ c18 = (attrib & 0xff)<<m_k053247_coregshift | m_k053247_coreg;
- if (konamigx_wrport2 & 4) c18 &= 0x3fff; else
- if (!(konamigx_wrport2 & 8)) c18 = (c18 & 0x3fff) | (attrib<<6 & 0xc000);
+ if (m_gx_wrport2 & 4) c18 &= 0x3fff; else
+ if (!(m_gx_wrport2 & 8)) c18 = (c18 & 0x3fff) | (attrib<<6 & 0xc000);
return(c18);
}
-INLINE int K055555GX_decode_objcolor(int c18) // (see p.59 7.2.2)
+inline int konamigx_state::K055555GX_decode_objcolor(int c18) // (see p.59 7.2.2)
{
int ocb, opon;
- opon = oinprion<<8 | 0xff;
- ocb = (ocblk & 7) << 10;
+ opon = m_oinprion<<8 | 0xff;
+ ocb = (m_ocblk & 7) << 10;
c18 &= opon;
ocb &=~opon;
- return((ocb | c18) >> k053247_coregshift);
+ return((ocb | c18) >> m_k053247_coregshift);
}
-INLINE int K055555GX_decode_inpri(int c18) // (see p.59 7.2.2)
+inline int konamigx_state::K055555GX_decode_inpri(int c18) // (see p.59 7.2.2)
{
- int op = opri;
+ int op = m_opri;
c18 >>= 8;
- op &= oinprion;
- c18 &=~oinprion;
+ op &= m_oinprion;
+ c18 &=~m_oinprion;
return(c18 | op);
}
@@ -157,7 +94,7 @@ K055673_CB_MEMBER(konamigx_state::type2_sprite_callback)
int num = *code;
int c18 = *color;
- *code = k053247_vrcbk[num>>14] | (num & 0x3fff);
+ *code = m_k053247_vrcbk[num>>14] | (num & 0x3fff);
c18 = K053247GX_combine_c18(c18);
*color = K055555GX_decode_objcolor(c18);
*priority_mask = K055555GX_decode_inpri(c18);
@@ -168,13 +105,13 @@ K055673_CB_MEMBER(konamigx_state::dragoonj_sprite_callback)
int num, op, pri, c18;
num = *code;
- *code = k053247_vrcbk[num>>14] | (num & 0x3fff);
+ *code = m_k053247_vrcbk[num>>14] | (num & 0x3fff);
c18 = pri = *color;
- op = opri;
+ op = m_opri;
pri = (pri & 0x200) ? 4 : pri>>4 & 0xf;
- op &= oinprion;
- pri &=~oinprion;
+ op &= m_oinprion;
+ pri &=~m_oinprion;
*priority_mask = pri | op;
c18 = K053247GX_combine_c18(c18);
@@ -186,13 +123,13 @@ K055673_CB_MEMBER(konamigx_state::salmndr2_sprite_callback)
int num, op, pri, c18;
num = *code;
- *code = k053247_vrcbk[num>>14] | (num & 0x3fff);
+ *code = m_k053247_vrcbk[num>>14] | (num & 0x3fff);
c18 = pri = *color;
- op = opri;
+ op = m_opri;
pri = pri>>4 & 0x3f;
- op &= oinprion;
- pri &=~oinprion;
+ op &= m_oinprion;
+ pri &=~m_oinprion;
*priority_mask = pri | op;
c18 = K053247GX_combine_c18(c18);
@@ -204,27 +141,27 @@ K055673_CB_MEMBER(konamigx_state::le2_sprite_callback)
int num, op, pri;
num = *code;
- *code = k053247_vrcbk[num>>14] | (num & 0x3fff);
+ *code = m_k053247_vrcbk[num>>14] | (num & 0x3fff);
pri = *color;
*color &= 0x1f;
- op = opri;
+ op = m_opri;
pri &= 0xf0;
- op &= oinprion;
- pri &=~oinprion;
+ op &= m_oinprion;
+ pri &=~m_oinprion;
*priority_mask = pri | op;
}
-static int K055555GX_decode_vmixcolor(int layer, int *color) // (see p.62 7.2.6 and p.27 3.3)
+int konamigx_state::K055555GX_decode_vmixcolor(int layer, int *color) // (see p.62 7.2.6 and p.27 3.3)
{
int vcb, shift, pal, vmx, von, pl45, emx;
- vcb = vcblk[layer]<<6;
+ vcb = m_vcblk[layer]<<6;
shift = layer<<1;
pal = *color;
- vmx = vinmix>>shift & 3;
- von = vmixon>>shift & 3;
+ vmx = m_vinmix>>shift & 3;
+ von = m_vmixon>>shift & 3;
emx = pl45 = pal>>4 & 3;
pal &= 0xf;
pl45 &= von;
@@ -235,7 +172,7 @@ static int K055555GX_decode_vmixcolor(int layer, int *color) // (see p.62 7.2.6
emx |= vmx;
pal |= vcb;
- if (gx_le2_textcolour_hack)
+ if (m_gx_le2_textcolour_hack)
if (layer==0)
pal |= 0x1c0;
@@ -252,13 +189,13 @@ int K055555GX_decode_osmixcolor(int layer, int *color) // (see p.63, p.49-50 and
shift = layer<<1;
pal = *color;
- osmx = osinmix>>shift & 3;
- oson = osmixon>>shift & 3;
+ osmx = m_osinmix>>shift & 3;
+ oson = m_osmixon>>shift & 3;
if (layer)
{
// layer 1-3 are external tile layers
- scb = vcblk[layer+3]<<6;
+ scb = m_vcblk[layer+3]<<6;
emx = pl45 = pal>>4 & 3;
pal &= 0xf;
pl45 &= oson;
@@ -292,14 +229,14 @@ void konamigx_state::wipezbuf(int noshadow)
int w = visarea.width();
int h = visarea.height();
- UINT8 *zptr = gx_objzbuf;
+ UINT8 *zptr = m_gx_objzbuf;
int ecx = h;
do { memset(zptr, -1, w); zptr += GX_ZBUFW; } while (--ecx);
if (!noshadow)
{
- zptr = gx_shdzbuf;
+ zptr = m_gx_shdzbuf;
w <<= 1;
ecx = h;
do { memset(zptr, -1, w); zptr += (GX_ZBUFW<<1); } while (--ecx);
@@ -350,8 +287,8 @@ void konamigx_state::konamigx_mixer_init(screen_device &screen, int objdma)
m_gx_objdma = 0;
m_gx_primode = 0;
- gx_objzbuf = &screen.priority().pix8(0);
- gx_shdzbuf = auto_alloc_array(machine(), UINT8, GX_ZBUFSIZE);
+ m_gx_objzbuf = &screen.priority().pix8(0);
+ m_gx_shdzbuf = auto_alloc_array(machine(), UINT8, GX_ZBUFSIZE);
gx_objpool = auto_alloc_array(machine(), struct GX_OBJ, GX_MAX_OBJECTS);
m_k054338->export_config(&K054338_shdRGB);
@@ -393,14 +330,14 @@ void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap,
int cltc_shdpri, /*prflp,*/ disp;
// buffer can move when it's resized, so refresh the pointer
- gx_objzbuf = &screen.priority().pix8(0);
+ m_gx_objzbuf = &screen.priority().pix8(0);
// abort if object database failed to initialize
objpool = gx_objpool;
if (!objpool) return;
// clear screen with backcolor and update flicker pulse
- if (konamigx_wrport1_0 & 0x20)
+ if (m_gx_wrport1_0 & 0x20)
m_k054338->fill_backcolor(bitmap,
cliprect,
m_palette->pens() + (m_k055555->K055555_read_register(0) << 9),
@@ -564,7 +501,7 @@ void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap,
int zcode = gx_spriteram[offs] & 0xff;
// invert z-order when opset_pri is set (see p.51 OPSET PRI)
- if (k053247_opset & 0x10) zcode = 0xff - zcode;
+ if (m_k053247_opset & 0x10) zcode = 0xff - zcode;
int code = gx_spriteram[offs+1];
int color = k = gx_spriteram[offs+6];
@@ -635,7 +572,7 @@ void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap,
if (temp3)
{
// determine shadow priority
- spri = (k053247_opset & 0x20) ? pri : shdpri[shadow]; // (see p.51 OPSET SDSEL)
+ spri = (m_k053247_opset & 0x20) ? pri : shdpri[shadow]; // (see p.51 OPSET SDSEL)
}
}
@@ -732,13 +669,13 @@ void konamigx_state::gx_draw_basic_tilemaps(screen_device &screen, bitmap_rgb32
if (j == GXMIX_BLEND_FORCE) { temp1 = 0x00; temp2 = mixerflags>>(i+16); temp3 = 3; }
else
{
- temp1 = vinmix;
- temp2 = vinmix>>i & 3;
- temp3 = vmixon>>i & 3;
+ temp1 = m_vinmix;
+ temp2 = m_vinmix>>i & 3;
+ temp3 = m_vmixon>>i & 3;
}
/* blend layer only when:
- 1) vinmix != 0xff
+ 1) m_vinmix != 0xff
2) its internal mix code is set
3) all mix code bits are internal(overriden until tile blending has been implemented)
4) 0 > alpha < 255;
@@ -775,9 +712,9 @@ void konamigx_state::gx_draw_basic_extended_tilemaps_1(screen_device &screen, bi
if (j == GXMIX_BLEND_FORCE) { temp1 = 0x00; temp2 = mixerflags>>24; temp3 = 3; }
else
{
- temp1 = osinmix;
- temp2 = osinmix>>2 & 3;
- temp3 = osmixon>>2 & 3;
+ temp1 = m_osinmix;
+ temp2 = m_osinmix>>2 & 3;
+ temp3 = m_osmixon>>2 & 3;
}
if (temp1!=0xff && temp2 /*&& temp3==3*/)
@@ -803,7 +740,7 @@ void konamigx_state::gx_draw_basic_extended_tilemaps_1(screen_device &screen, bi
}
else
{
- machine().device<k053250_device>("k053250_1")->draw(bitmap, cliprect, vcblk[4]<<l, 0, screen.priority(), 0);
+ machine().device<k053250_device>("k053250_1")->draw(bitmap, cliprect, m_vcblk[4]<<l, 0, screen.priority(), 0);
}
}
}
@@ -825,9 +762,9 @@ void konamigx_state::gx_draw_basic_extended_tilemaps_2(screen_device &screen, bi
if (j == GXMIX_BLEND_FORCE) { temp1 = 0x00; temp2 = mixerflags>>26; temp3 = 3; }
else
{
- temp1 = osinmix;
- temp2 = osinmix>>4 & 3;
- temp3 = osmixon>>4 & 3;
+ temp1 = m_osinmix;
+ temp2 = m_osinmix>>4 & 3;
+ temp3 = m_osmixon>>4 & 3;
}
if (temp1!=0xff && temp2 /*&& temp3==3*/)
@@ -875,7 +812,7 @@ void konamigx_state::gx_draw_basic_extended_tilemaps_2(screen_device &screen, bi
}
}
else
- machine().device<k053250_device>("k053250_2")->draw(bitmap, cliprect, vcblk[5]<<l, 0, screen.priority(), 0);
+ machine().device<k053250_device>("k053250_2")->draw(bitmap, cliprect, m_vcblk[5]<<l, 0, screen.priority(), 0);
}
}
@@ -932,7 +869,7 @@ void konamigx_state::konamigx_mixer_draw(screen_device &screen, bitmap_rgb32 &bi
m_k055673->k053247_draw_single_sprite_gxcore(bitmap, cliprect,
- gx_objzbuf, gx_shdzbuf, code, gx_spriteram, offs,
+ m_gx_objzbuf, m_gx_shdzbuf, code, gx_spriteram, offs,
color, alpha, drawmode, zcode, pri,
/* non-gx only */
0,0,NULL,NULL,0
@@ -985,7 +922,7 @@ TILE_GET_INFO_MEMBER(konamigx_state::get_gx_psac_tile_info)
}
- colour = (psac_colorbase << 4) + col;
+ colour = (m_psac_colorbase << 4) + col;
SET_TILE_INFO_MEMBER(0, tileno, colour, TILE_FLIPYX(flip));
}
@@ -1003,7 +940,7 @@ WRITE32_MEMBER(konamigx_state::konamigx_type3_psac2_bank_w)
/* handle this by creating 2 roz tilemaps instead, otherwise performance dies completely on dual screen mode
if (konamigx_type3_psac2_actual_bank!=konamigx_type3_psac2_actual_last_bank)
{
- gx_psac_tilemap->mark_all_dirty();
+ m_gx_psac_tilemap->mark_all_dirty();
konamigx_type3_psac2_actual_last_bank = konamigx_type3_psac2_actual_bank;
}
*/
@@ -1106,7 +1043,7 @@ K056832_CB_MEMBER(konamigx_state::type2_tile_callback)
{
int d = *code;
- *code = (gx_tilebanks[(d & 0xe000)>>13]<<13) + (d & 0x1fff);
+ *code = (m_gx_tilebanks[(d & 0xe000)>>13]<<13) + (d & 0x1fff);
K055555GX_decode_vmixcolor(layer, color);
}
@@ -1118,7 +1055,7 @@ K056832_CB_MEMBER(konamigx_state::alpha_tile_callback)
mixcode = K055555GX_decode_vmixcolor(layer, color);
if (mixcode < 0)
- *code = (gx_tilebanks[(d & 0xe000)>>13]<<13) + (d & 0x1fff);
+ *code = (m_gx_tilebanks[(d & 0xe000)>>13]<<13) + (d & 0x1fff);
else
{
/* save mixcode and mark tile alpha (unimplemented) */
@@ -1165,17 +1102,17 @@ void konamigx_state::common_init()
for (int i = 0; i < 8; i++)
{
- gx_tilebanks[i] = gx_oldbanks[i] = 0;
+ m_gx_tilebanks[i] = m_gx_oldbanks[i] = 0;
}
- machine().save().save_item(NAME(gx_tilebanks));
+ machine().save().save_item(NAME(m_gx_tilebanks));
- gx_tilemode = 0;
+ m_gx_tilemode = 0;
- gx_rozenable = 0;
- gx_specialrozenable = 0;
- gx_rushingheroes_hack = 0;
- gx_le2_textcolour_hack = 0;
+ m_gx_rozenable = 0;
+ m_gx_specialrozenable = 0;
+ m_gx_rushingheroes_hack = 0;
+ m_gx_le2_textcolour_hack = 0;
// Documented relative offsets of non-flipped games are (-2, 0, 2, 3),(0, 0, 0, 0).
// (+ve values move layers to the right and -ve values move layers to the left)
@@ -1187,7 +1124,7 @@ void konamigx_state::common_init()
m_k056832->set_layer_offs(2, 2, 0);
m_k056832->set_layer_offs(3, 3, 0);
- konamigx_has_dual_screen = 0;
+ m_konamigx_has_dual_screen = 0;
m_konamigx_current_frame = 0;
}
@@ -1197,7 +1134,7 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_5bpp)
common_init();
if (!strcmp(machine().system().name,"tbyahhoo"))
- gx_tilemode = 1;
+ m_gx_tilemode = 1;
else if (!strcmp(machine().system().name,"crzcross") || !strcmp(machine().system().name,"puzldama"))
konamigx_mixer_primode(5);
else if (!strcmp(machine().system().name,"daiskiss"))
@@ -1220,7 +1157,7 @@ VIDEO_START_MEMBER(konamigx_state, le2)
konamigx_mixer_primode(-1); // swapped layer B and C priorities?
- gx_le2_textcolour_hack = 1; // force text layer to use the right palette
+ m_gx_le2_textcolour_hack = 1; // force text layer to use the right palette
}
VIDEO_START_MEMBER(konamigx_state, konamigx_6bpp)
@@ -1234,23 +1171,23 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type3)
int width = m_screen->width();
int height = m_screen->height();
- dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
- dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
common_init();
- gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac3_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 256, 256);
- gx_psac_tilemap_alt = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac3_alt_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 256, 256);
+ m_gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac3_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 256, 256);
+ m_gx_psac_tilemap_alt = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac3_alt_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 256, 256);
- gx_rozenable = 0;
- gx_specialrozenable = 2;
+ m_gx_rozenable = 0;
+ m_gx_specialrozenable = 2;
/* set up tile layers */
- type3_roz_temp_bitmap = auto_bitmap_ind16_alloc(machine(), width, height);
+ m_type3_roz_temp_bitmap = auto_bitmap_ind16_alloc(machine(), width, height);
- //gx_psac_tilemap->set_flip(TILEMAP_FLIPX| TILEMAP_FLIPY);
+ //m_gx_psac_tilemap->set_flip(TILEMAP_FLIPX| TILEMAP_FLIPY);
K053936_wraparound_enable(0, 1);
// K053936GP_set_offset(0, -30, -1);
@@ -1261,8 +1198,8 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type3)
m_k056832->set_layer_offs(2, -48, 0);
m_k056832->set_layer_offs(3, -48, 0);
- konamigx_has_dual_screen = 1;
- konamigx_palformat = 1;
+ m_konamigx_has_dual_screen = 1;
+ m_konamigx_palformat = 1;
}
VIDEO_START_MEMBER(konamigx_state, konamigx_type4)
@@ -1270,14 +1207,14 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4)
int width = m_screen->width();
int height = m_screen->height();
- dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
- dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
common_init();
- gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
- gx_rozenable = 0;
- gx_specialrozenable = 3;
+ m_gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
+ m_gx_rozenable = 0;
+ m_gx_specialrozenable = 3;
m_k056832->set_layer_offs(0, -27, 0);
m_k056832->set_layer_offs(1, -25, 0);
@@ -1287,9 +1224,9 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4)
K053936_wraparound_enable(0, 0);
K053936GP_set_offset(0, -36, 1);
- gx_rushingheroes_hack = 1;
- konamigx_has_dual_screen = 1;
- konamigx_palformat = 0;
+ m_gx_rushingheroes_hack = 1;
+ m_konamigx_has_dual_screen = 1;
+ m_konamigx_palformat = 0;
}
@@ -1298,14 +1235,14 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4_vsn)
int width = m_screen->width();
int height = m_screen->height();
- dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
- dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
common_init();
- gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
- gx_rozenable = 0;
- gx_specialrozenable = 3;
+ m_gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
+ m_gx_rozenable = 0;
+ m_gx_specialrozenable = 3;
m_k056832->set_layer_offs(0, -52, 0);
m_k056832->set_layer_offs(1, -48, 0);
@@ -1315,9 +1252,9 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4_vsn)
K053936_wraparound_enable(0, 1); // wraparound doesn't work properly with the custom drawing function anyway, see the crowd in vsnet and rushhero
K053936GP_set_offset(0, -30, 0);
- gx_rushingheroes_hack = 1;
- konamigx_has_dual_screen = 1;
- konamigx_palformat = 0;
+ m_gx_rushingheroes_hack = 1;
+ m_konamigx_has_dual_screen = 1;
+ m_konamigx_palformat = 0;
}
VIDEO_START_MEMBER(konamigx_state, konamigx_type4_sd2)
@@ -1325,14 +1262,14 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4_sd2)
int width = m_screen->width();
int height = m_screen->height();
- dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
- dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
common_init();
- gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
- gx_rozenable = 0;
- gx_specialrozenable = 3;
+ m_gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
+ m_gx_rozenable = 0;
+ m_gx_specialrozenable = 3;
m_k056832->set_layer_offs(0, -29, -1);
@@ -1344,9 +1281,9 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4_sd2)
K053936_wraparound_enable(0, 0);
K053936GP_set_offset(0, -36, -1);
- gx_rushingheroes_hack = 1;
- konamigx_has_dual_screen = 1;
- konamigx_palformat = 0;
+ m_gx_rushingheroes_hack = 1;
+ m_konamigx_has_dual_screen = 1;
+ m_konamigx_palformat = 0;
}
@@ -1359,21 +1296,21 @@ VIDEO_START_MEMBER(konamigx_state, opengolf)
m_k056832->set_layer_offs(2, 2+1, 0);
m_k056832->set_layer_offs(3, 3+1, 0);
- gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1a_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
- gx_psac_tilemap2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1b_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
+ m_gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1a_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
+ m_gx_psac_tilemap2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1b_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
// transparency will be handled manually in post-processing
- //gx_psac_tilemap->set_transparent_pen(0);
- //gx_psac_tilemap2->set_transparent_pen(0);
+ //m_gx_psac_tilemap->set_transparent_pen(0);
+ //m_gx_psac_tilemap2->set_transparent_pen(0);
- gx_rozenable = 0;
- gx_specialrozenable = 1;
+ m_gx_rozenable = 0;
+ m_gx_specialrozenable = 1;
- gxtype1_roz_dstbitmap = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
- gxtype1_roz_dstbitmap2 = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
+ m_gxtype1_roz_dstbitmap = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
+ m_gxtype1_roz_dstbitmap2 = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
- gxtype1_roz_dstbitmapclip.set(0, 512-1, 0, 512-1);
+ m_gxtype1_roz_dstbitmapclip.set(0, 512-1, 0, 512-1);
K053936_wraparound_enable(0, 1);
@@ -1394,21 +1331,21 @@ VIDEO_START_MEMBER(konamigx_state, racinfrc)
m_k056832->set_layer_offs(2, 2+1, 0);
m_k056832->set_layer_offs(3, 3+1, 0);
- gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1a_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
- gx_psac_tilemap2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1b_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
+ m_gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1a_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
+ m_gx_psac_tilemap2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1b_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
// transparency will be handled manually in post-processing
- //gx_psac_tilemap->set_transparent_pen(0);
- //gx_psac_tilemap2->set_transparent_pen(0);
+ //m_gx_psac_tilemap->set_transparent_pen(0);
+ //m_gx_psac_tilemap2->set_transparent_pen(0);
- gx_rozenable = 0;
- gx_specialrozenable = 1;
+ m_gx_rozenable = 0;
+ m_gx_specialrozenable = 1;
- gxtype1_roz_dstbitmap = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
- gxtype1_roz_dstbitmap2 = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
+ m_gxtype1_roz_dstbitmap = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
+ m_gxtype1_roz_dstbitmap2 = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
- gxtype1_roz_dstbitmapclip.set(0, 512-1, 0, 512-1);
+ m_gxtype1_roz_dstbitmapclip.set(0, 512-1, 0, 512-1);
K053936_wraparound_enable(0, 1);
@@ -1428,20 +1365,20 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
/* if any banks are different from last render, we need to flush the planes */
for (dirty = 0, i = 0; i < 8; i++)
{
- newbank = gx_tilebanks[i];
- if (gx_oldbanks[i] != newbank) { gx_oldbanks[i] = newbank; dirty = 1; }
+ newbank = m_gx_tilebanks[i];
+ if (m_gx_oldbanks[i] != newbank) { m_gx_oldbanks[i] = newbank; dirty = 1; }
}
- if (gx_tilemode == 0)
+ if (m_gx_tilemode == 0)
{
// driver approximates tile update in mode 0 for speed
unchained = m_k056832->get_layer_association();
for (i=0; i<4; i++)
{
newbase = m_k055555->K055555_get_palette_index(i)<<6;
- if (layer_colorbase[i] != newbase)
+ if (m_layer_colorbase[i] != newbase)
{
- layer_colorbase[i] = newbase;
+ m_layer_colorbase[i] = newbase;
if (unchained)
m_k056832->mark_plane_dirty(i);
@@ -1456,17 +1393,17 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
}
// sub2 is PSAC colorbase on GX
- if (gx_rozenable)
+ if (m_gx_rozenable)
{
- last_psac_colorbase = psac_colorbase;
- psac_colorbase = m_k055555->K055555_get_palette_index(6);
+ m_last_psac_colorbase = m_psac_colorbase;
+ m_psac_colorbase = m_k055555->K055555_get_palette_index(6);
- if (psac_colorbase != last_psac_colorbase)
+ if (m_psac_colorbase != m_last_psac_colorbase)
{
- gx_psac_tilemap->mark_all_dirty();
- if (gx_rozenable == 3)
+ m_gx_psac_tilemap->mark_all_dirty();
+ if (m_gx_rozenable == 3)
{
- gx_psac_tilemap2->mark_all_dirty();
+ m_gx_psac_tilemap2->mark_all_dirty();
}
}
}
@@ -1474,42 +1411,42 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
if (dirty) m_k056832->mark_all_tilemaps_dirty();
// Type-1
- if (gx_specialrozenable == 1)
+ if (m_gx_specialrozenable == 1)
{
- K053936_0_zoom_draw(screen, *gxtype1_roz_dstbitmap, gxtype1_roz_dstbitmapclip,gx_psac_tilemap, 0,0,0); // height data
- K053936_0_zoom_draw(screen, *gxtype1_roz_dstbitmap2,gxtype1_roz_dstbitmapclip,gx_psac_tilemap2,0,0,0); // colour data (+ some voxel height data?)
+ K053936_0_zoom_draw(screen, *m_gxtype1_roz_dstbitmap, m_gxtype1_roz_dstbitmapclip,m_gx_psac_tilemap, 0,0,0); // height data
+ K053936_0_zoom_draw(screen, *m_gxtype1_roz_dstbitmap2,m_gxtype1_roz_dstbitmapclip,m_gx_psac_tilemap2,0,0,0); // colour data (+ some voxel height data?)
}
- if (gx_specialrozenable==3)
+ if (m_gx_specialrozenable==3)
{
- konamigx_mixer(screen, bitmap, cliprect, gx_psac_tilemap, GXSUB_8BPP,0,0, 0, 0, gx_rushingheroes_hack);
+ konamigx_mixer(screen, bitmap, cliprect, m_gx_psac_tilemap, GXSUB_8BPP,0,0, 0, 0, m_gx_rushingheroes_hack);
}
// hack, draw the roz tilemap if W is held
// todo: fix so that it works with the mixer without crashing(!)
- else if (gx_specialrozenable == 2)
+ else if (m_gx_specialrozenable == 2)
{
// we're going to throw half of this away anyway in post-process, so only render what's needed
rectangle temprect;
temprect = cliprect;
temprect.max_x = cliprect.min_x+320;
- if (konamigx_type3_psac2_actual_bank == 1) K053936_0_zoom_draw(screen, *type3_roz_temp_bitmap, temprect,gx_psac_tilemap_alt, 0,0,0); // soccerss playfield
- else K053936_0_zoom_draw(screen, *type3_roz_temp_bitmap, temprect,gx_psac_tilemap, 0,0,0); // soccerss playfield
+ if (konamigx_type3_psac2_actual_bank == 1) K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap_alt, 0,0,0); // soccerss playfield
+ else K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap, 0,0,0); // soccerss playfield
- konamigx_mixer(screen, bitmap, cliprect, 0, 0, 0, 0, 0, type3_roz_temp_bitmap, gx_rushingheroes_hack);
+ konamigx_mixer(screen, bitmap, cliprect, 0, 0, 0, 0, 0, m_type3_roz_temp_bitmap, m_gx_rushingheroes_hack);
}
else
{
- konamigx_mixer(screen, bitmap, cliprect, 0, 0, 0, 0, 0, 0, gx_rushingheroes_hack);
+ konamigx_mixer(screen, bitmap, cliprect, 0, 0, 0, 0, 0, 0, m_gx_rushingheroes_hack);
}
/* Hack! draw type-1 roz layer here for testing purposes only */
- if (gx_specialrozenable == 1)
+ if (m_gx_specialrozenable == 1)
{
const pen_t *paldata = m_palette->pens();
@@ -1522,12 +1459,12 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
{
for (y=0;y<256;y++)
{
- //UINT16* src = &gxtype1_roz_dstbitmap->pix16(y);
+ //UINT16* src = &m_gxtype1_roz_dstbitmap->pix16(y);
//UINT32* dst = &bitmap.pix32(y);
// ths K053936 rendering should probably just be flipped
// this is just kludged to align the racing force 2d logo
- UINT16* src = &gxtype1_roz_dstbitmap2->pix16(y+30);
+ UINT16* src = &m_gxtype1_roz_dstbitmap2->pix16(y+30);
UINT32* dst = &bitmap.pix32(256-y);
for (x=0;x<512;x++)
@@ -1554,7 +1491,7 @@ UINT32 konamigx_state::screen_update_konamigx_left(screen_device &screen, bitmap
{
int offset=0;
- if (konamigx_palformat==1)
+ if (m_konamigx_palformat==1)
{
for (offset=0;offset<0x4000/4;offset++)
{
@@ -1578,12 +1515,12 @@ UINT32 konamigx_state::screen_update_konamigx_left(screen_device &screen, bitmap
}
}
- screen_update_konamigx( screen, downcast<bitmap_rgb32 &>(*dualscreen_left_tempbitmap), cliprect);
- copybitmap(bitmap, *dualscreen_left_tempbitmap, 0, 0, 0, 0, cliprect);
+ screen_update_konamigx( screen, downcast<bitmap_rgb32 &>(*m_dualscreen_left_tempbitmap), cliprect);
+ copybitmap(bitmap, *m_dualscreen_left_tempbitmap, 0, 0, 0, 0, cliprect);
}
else
{
- copybitmap(bitmap, *dualscreen_left_tempbitmap, 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, *m_dualscreen_left_tempbitmap, 0, 0, 0, 0, cliprect);
}
return 0;
@@ -1593,13 +1530,13 @@ UINT32 konamigx_state::screen_update_konamigx_right(screen_device &screen, bitma
{
if (m_konamigx_current_frame==1)
{
- copybitmap(bitmap, *dualscreen_right_tempbitmap, 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, *m_dualscreen_right_tempbitmap, 0, 0, 0, 0, cliprect);
}
else
{
int offset=0;
- if (konamigx_palformat==1)
+ if (m_konamigx_palformat==1)
{
for (offset=0;offset<0x4000/4;offset++)
{
@@ -1623,8 +1560,8 @@ UINT32 konamigx_state::screen_update_konamigx_right(screen_device &screen, bitma
}
}
- screen_update_konamigx(screen, downcast<bitmap_rgb32 &>(*dualscreen_right_tempbitmap), cliprect);
- copybitmap(bitmap, *dualscreen_right_tempbitmap, 0, 0, 0, 0, cliprect);
+ screen_update_konamigx(screen, downcast<bitmap_rgb32 &>(*m_dualscreen_right_tempbitmap), cliprect);
+ copybitmap(bitmap, *m_dualscreen_right_tempbitmap, 0, 0, 0, 0, cliprect);
}
return 0;
@@ -1697,21 +1634,21 @@ WRITE32_MEMBER(konamigx_state::konamigx_555_palette2_w)
WRITE32_MEMBER(konamigx_state::konamigx_tilebank_w)
{
if (ACCESSING_BITS_24_31)
- gx_tilebanks[offset*4] = (data>>24)&0xff;
+ m_gx_tilebanks[offset*4] = (data>>24)&0xff;
if (ACCESSING_BITS_16_23)
- gx_tilebanks[offset*4+1] = (data>>16)&0xff;
+ m_gx_tilebanks[offset*4+1] = (data>>16)&0xff;
if (ACCESSING_BITS_8_15)
- gx_tilebanks[offset*4+2] = (data>>8)&0xff;
+ m_gx_tilebanks[offset*4+2] = (data>>8)&0xff;
if (ACCESSING_BITS_0_7)
- gx_tilebanks[offset*4+3] = data&0xff;
+ m_gx_tilebanks[offset*4+3] = data&0xff;
}
// type 1 RAM-based PSAC tilemap
WRITE32_MEMBER(konamigx_state::konamigx_t1_psacmap_w)
{
COMBINE_DATA(&m_psacram[offset]);
- gx_psac_tilemap->mark_tile_dirty(offset/2);
- gx_psac_tilemap2->mark_tile_dirty(offset/2);
+ m_gx_psac_tilemap->mark_tile_dirty(offset/2);
+ m_gx_psac_tilemap2->mark_tile_dirty(offset/2);
}
// type 4 RAM-based PSAC tilemap
@@ -1719,6 +1656,6 @@ WRITE32_MEMBER(konamigx_state::konamigx_t4_psacmap_w)
{
COMBINE_DATA(&m_psacram[offset]);
- gx_psac_tilemap->mark_tile_dirty(offset*2);
- gx_psac_tilemap->mark_tile_dirty((offset*2)+1);
+ m_gx_psac_tilemap->mark_tile_dirty(offset*2);
+ m_gx_psac_tilemap->mark_tile_dirty((offset*2)+1);
}