Previous 199869 Revisions Next

r33016 Monday 27th October, 2014 at 19:19:44 UTC by Cowering
Merge branch 'master' of https://github.com/mamedev/mame
[hash]intv.xml intvecs.xml pet_cass.xml
[src/emu/bus/isa]hdc.c hdc.h xsu_cards.c
[src/emu/cpu/i386]i386.c i386.h i386ops.h i386ops.inc
[src/mame/drivers]jackie.c konamigx.c mystwarr.c peplus.c
[src/mame/includes]konamigx.h
[src/mame/machine]konamigx.c
[src/mame/video]konamigx.c

trunk/hash/intv.xml
r241527r241528
2626      </part>
2727   </software>
2828
29   <software name="addc">
30      <description>Advanced Dungeons &amp; Dragons Cartridge</description>
29   <software name="add">
30      <description>Advanced Dungeons &amp; Dragons</description>
3131      <year>1982</year>
3232      <publisher>Mattel Electronics</publisher>
3333      <info name="serial" value="3410"/>
r241527r241528
4040   </software>
4141
4242   <software name="addtot">
43      <description>Advanced Dungeons &amp; Dragons: Treasure of Tarmin</description>
43      <description>Advanced Dungeons &amp; Dragons - Treasure of Tarmin</description>
4444      <year>1982</year>
4545      <publisher>Mattel Electronics</publisher>
4646      <info name="serial" value="5300"/>
r241527r241528
6565      </part>
6666   </software>
6767
68   <software name="astrosm">
69      <description>Astro Smash</description>
68   <software name="astrosms">
69      <description>AstroSmash</description>
7070      <year>1981</year>
7171      <publisher>Mattel Electronics</publisher>
7272      <info name="serial" value="3605"/>
r241527r241528
7878      </part>
7979   </software>
8080
81   <software name="astrosmsc" cloneof="astrosms">
82      <description>AstroSmash Competition</description>
83      <year>1981</year>
84      <publisher>Mattel Electronics</publisher>
85      <part name="cart" interface="intv_cart">
86         <feature name="slot" value="intv_rom" />
87         <dataarea name="5000" size="8192">
88            <rom name="astrosmash competition.50" size="8192" crc="d0f83698" sha1="fbb2df69cfda87976cf279be6ad028e00c47ce9d" offset="0x0000" />
89         </dataarea>
90      </part>
91   </software>
92
8193   <software name="atlantis">
8294      <description>Atlantis</description>
8395      <year>1982</year>
r241527r241528
17561768   <software name="voice">
17571769      <description>Intellivoice</description>
17581770      <year>19??</year>
1759      <publisher>Mattel</publisher>
1771      <publisher>Mattel Electronics</publisher>
17601772      <part name="cart" interface="intv_cart">
17611773         <feature name="slot" value="intv_voice" />
17621774         <dataarea name="5000" size="0x4000">
r241527r241528
17691781   <software name="ecs">
17701782      <description>Entertainment Computer System</description>
17711783      <year>19??</year>
1772      <publisher>Mattel</publisher>
1784      <publisher>Mattel Electronics</publisher>
17731785      <part name="cart" interface="intv_cart">
17741786         <feature name="slot" value="intv_ecs" />
17751787         <dataarea name="2000" size="0x2000">
r241527r241528
17901802
17911803<!-- Unreleased / Prototypes / Homebrew -->
17921804
1793   <software name="allstar">
1794      <description>All Star Major League Baseball (Prototype)</description>
1805   <software name="addtom">
1806      <description>Advanced Dungeons &amp; Dragons - Tower of Mystery (Unreleased)</description>
17951807      <year>1983</year>
17961808      <publisher>Mattel Electronics</publisher>
17971809      <part name="cart" interface="intv_cart">
17981810         <feature name="slot" value="intv_rom" />
1799         <dataarea name="5000" size="0x4000">
1800            <rom name="all star major league baseball.50" size="0x4000" crc="4a7e080a" sha1="ee2edd084c371d39dfcd725ed4aa5679e0c34a27" offset="0x0000"/>
1811         <dataarea name="5000" size="16384">
1812            <rom name="ad&amp;d tower of mystery.50" size="16384" crc="4d7022c4" sha1="968875dbb5c9af72b746cde4f9a6dc4677d8aceb" offset="0x0000" />
18011813         </dataarea>
1802         <dataarea name="D000" size="0x2000">
1803            <rom name="all star major league baseball.d0" size="0x2000" crc="31325854" sha1="fe7b5f3969e214ac23d20c5c137dc23f4515108d" offset="0x0000"/>
1814         <dataarea name="9000" size="16384">
1815            <rom name="ad&amp;d tower of mystery.90" size="16384" crc="69ea443d" sha1="5348845531a326cf66991697c55efd9287b4874b" offset="0x0000" />
18041816         </dataarea>
1817         <dataarea name="D000" size="8192">
1818            <rom name="ad&amp;d tower of mystery.d0" size="8192" crc="35f27a1e" sha1="2cfdee85347c1226c48d15cdfd6b8819136db130" offset="0x0000" />
1819         </dataarea>
1820         <dataarea name="F000" size="8192">
1821            <rom name="ad&amp;d tower of mystery.f0" size="8192" crc="c60bb7f6" sha1="9f53d330453807c18dcb4c0ed37ad0e77251213a" offset="0x0000" />
1822         </dataarea>
18051823      </part>
18061824   </software>
18071825
1826   <software name="advtron">
1827      <description>Adventures of TRON (Unreleased)</description>
1828      <year>1982</year>
1829      <publisher>Mattel Electronics</publisher>
1830      <part name="cart" interface="intv_cart">
1831         <feature name="slot" value="intv_rom" />
1832         <dataarea name="5000" size="16384">
1833            <rom name="adventures of tron.50" size="16384" crc="5a144835" sha1="c2125776338cbce61aabce80fbdb911a9814e564" offset="0x0000" />
1834         </dataarea>
1835      </part>
1836   </software>
1837
18081838   <software name="airstrk">
18091839      <description>Air Strike (Prototype)</description>
18101840      <year>1982</year>
r241527r241528
18171847      </part>
18181848   </software>
18191849
1850   <software name="allstar">
1851      <description>All Star Major League Baseball (Prototype)</description>
1852      <year>1983</year>
1853      <publisher>Mattel Electronics</publisher>
1854      <part name="cart" interface="intv_cart">
1855         <feature name="slot" value="intv_rom" />
1856         <dataarea name="5000" size="0x4000">
1857            <rom name="all star major league baseball.50" size="0x4000" crc="4a7e080a" sha1="ee2edd084c371d39dfcd725ed4aa5679e0c34a27" offset="0x0000"/>
1858         </dataarea>
1859         <dataarea name="D000" size="0x2000">
1860            <rom name="all star major league baseball.d0" size="0x2000" crc="31325854" sha1="fe7b5f3969e214ac23d20c5c137dc23f4515108d" offset="0x0000"/>
1861         </dataarea>
1862      </part>
1863   </software>
1864
18201865   <software name="brickout">
18211866      <description>Brickout! (Unreleased)</description>
18221867      <year>1981</year>
r241527r241528
19191964      </part>
19201965   </software>
19211966
1967   <software name="hvrfor3d">
1968      <description>Hover Force 3D (Unreleased)</description>
1969      <year>1984</year>
1970      <publisher>Mattel Electronics</publisher>
1971      <part name="cart" interface="intv_cart">
1972         <feature name="slot" value="intv_rom" />
1973         <dataarea name="5000" size="16384">
1974            <rom name="hover force_3d.50" size="16384" crc="37772f79" sha1="fa8f02330397fc47665e727fb7f214b551130b29" offset="0x0000" />
1975         </dataarea>
1976         <dataarea name="9000" size="24576">
1977            <rom name="hover force_3d.90" size="24576" crc="1cf011ef" sha1="5cfc7a9bb09937d499b3cdfd5e84a3e975f543a6" offset="0x0000" />
1978         </dataarea>
1979         <dataarea name="D000" size="8192">
1980            <rom name="hover force_3d.d0" size="8192" crc="d6e96ddc" sha1="2833c891028772d2a3acf23dce67e3cd597d486f" offset="0x0000" />
1981         </dataarea>
1982      </part>
1983   </software>
1984
19221985   <software name="hlights">
19231986      <description>Hypnotic Lights (Prototype)</description>
19241987      <year>1981</year>
r241527r241528
19311994      </part>
19321995   </software>
19331996
1997   <software name="illusion">
1998      <description>Illusions (Unreleased)</description>
1999      <year>1983</year>
2000      <publisher>Mattel Electronics</publisher>
2001      <part name="cart" interface="intv_cart">
2002         <feature name="slot" value="intv_rom" />
2003         <dataarea name="5000" size="16384">
2004            <rom name="illusions.50" size="16384" crc="851f3ccb" sha1="fd7bb50812e207b03295ff2abf973b935a0d28de" offset="0x0000" />
2005         </dataarea>
2006      </part>
2007   </software>
2008
19342009   <software name="kingotm">
19352010      <description>King of the Mountain (Unreleased)</description>
19362011      <year>1982</year>
r241527r241528
20002075      </part>
20012076   </software>
20022077
2078   <software name="mycastle" cloneof="thcastle">
2079      <description>Mystic Castle (Prototype)</description>
2080      <year>1982</year>
2081      <publisher>Mattel Electronics</publisher>
2082      <part name="cart" interface="intv_cart">
2083         <feature name="slot" value="intv_rom" />
2084         <dataarea name="5000" size="16384">
2085            <rom name="mystic castle.50" size="16384" crc="7751256b" sha1="73f61c7dce233a605c8cecd49aec13b1d5985315" offset="0x0000" />
2086         </dataarea>
2087         <dataarea name="9000" size="16384">
2088            <rom name="mystic castle.90" size="16384" crc="4acbeb19" sha1="65c2ec11e5d1a9d8d8f2e044428cbf5bf2022532" offset="0x0000" />
2089         </dataarea>
2090      </part>
2091   </software>
2092
20032093   <software name="blowout">
20042094      <description>Party Line: Blow Out (Unreleased)</description>
20052095      <year>1983</year>
r241527r241528
20152105      </part>
20162106   </software>
20172107
2108   <software name="blowouta" cloneof="blowout">
2109      <description>Party Line: Blow Out (Unreleased, Alt)</description>
2110      <year>1983</year>
2111      <publisher>Mattel Electronics</publisher>
2112      <part name="cart" interface="intv_cart">
2113         <feature name="slot" value="intv_rom" />
2114         <dataarea name="5000" size="0x2000">
2115            <rom name="blowouta.50" size="0x2000" crc="25b7aa92" sha1="a232a43407bfa5781b30c5afded8df4af75e1788" offset="0x0000"/>
2116         </dataarea>
2117         <dataarea name="D000" size="0x2000">
2118            <rom name="blowouta.d0" size="0x2000" crc="b7e29589" sha1="4e1b1c2bf93952d52827b13752e61584a66672ea" offset="0x0000"/>
2119         </dataarea>
2120      </part>
2121   </software>
2122
20182123   <software name="hardhat">
20192124      <description>Party Line: Hard Hat (Unreleased)</description>
20202125      <year>1983</year>
r241527r241528
20272132      </part>
20282133   </software>
20292134
2135   <software name="spacecad">
2136      <description>Party Line: Space Cadet (Unreleased)</description>
2137      <year>1983</year>
2138      <publisher>Mattel Electronics</publisher>
2139      <part name="cart" interface="intv_cart">
2140         <feature name="slot" value="intv_rom" />
2141         <dataarea name="5000" size="0x4000">
2142            <rom name="space cadet.50" size="0x4000" crc="f8ef3e5a" sha1="f3cfbe285a12194ef2f6087fc70d0ed887c4ec91" offset="0x0000"/>
2143         </dataarea>
2144      </part>
2145   </software>
2146
20302147   <software name="rrubble">
20312148      <description>Robot Rubble (Prototype)</description>
20322149      <year>1983</year>
r241527r241528
20392156      </part>
20402157   </software>
20412158
2042   <software name="spacecad">
2043      <description>Party Line: Space Cadet (Unreleased)</description>
2159   <software name="rockybw">
2160      <description>Rocky &amp; Bullwinckle (Unreleased)</description>
20442161      <year>1983</year>
20452162      <publisher>Mattel Electronics</publisher>
20462163      <part name="cart" interface="intv_cart">
20472164         <feature name="slot" value="intv_rom" />
2048         <dataarea name="5000" size="0x4000">
2049            <rom name="space cadet.50" size="0x4000" crc="f8ef3e5a" sha1="f3cfbe285a12194ef2f6087fc70d0ed887c4ec91" offset="0x0000"/>
2165         <dataarea name="5000" size="16384">
2166            <rom name="rockey &amp; bullwinckle.50" size="16384" crc="867f1941" sha1="86053c388dbee82216159fa7f4d95756ffd9d37d" offset="0x0000" />
20502167         </dataarea>
20512168      </part>
20522169   </software>
20532170
2171   <software name="scarfing">
2172      <description>Scarfinger (Unfinished)</description>
2173      <year>1982</year>
2174      <publisher>Mattel Electronics</publisher>
2175      <part name="cart" interface="intv_cart">
2176         <feature name="slot" value="intv_rom" />
2177         <dataarea name="5000" size="16384">
2178            <rom name="scarfinger.50" size="16384" crc="a57862f7" sha1="a691ad56285526738760f18b8d86b07195039df0" offset="0x0000" />
2179         </dataarea>
2180         <dataarea name="9000" size="16384">
2181            <rom name="scarfinger.90" size="16384" crc="d3d5e5af" sha1="3a4dddbcb04aeacea15a03267dc55d8a913434a6" offset="0x0000" />
2182         </dataarea>
2183      </part>
2184   </software>
2185
2186   <software name="soccer2" cloneof="worldcup">
2187      <description>Soccer 2 (Prototype)</description>
2188      <year>198?</year>
2189      <publisher>Mattel Electronics</publisher>
2190      <part name="cart" interface="intv_cart">
2191         <feature name="slot" value="intv_rom" />
2192         <dataarea name="5000" size="16384">
2193            <rom name="soccer_2.50" size="16384" crc="4d4af24e" sha1="dd08e16ba509cd1761e1007f616267e5f96f9127" offset="0x0000" />
2194         </dataarea>
2195         <dataarea name="9000" size="16384">
2196            <rom name="soccer_2.90" size="16384" crc="c6889d72" sha1="4507d0159b1fc2c18d44330eaa70d677629b5d82" offset="0x0000" />
2197         </dataarea>
2198      </part>
2199   </software>
2200
20542201   <software name="sshuttle">
20552202      <description>Space Shuttle (Prototype)</description>
20562203      <year>1981</year>
r241527r241528
20962243      </part>
20972244   </software>
20982245
2246   <software name="yogi">
2247      <description>Yogi's Frustration (Unreleased)</description>
2248      <year>1983</year>
2249      <publisher>Mattel Electronics</publisher>
2250      <part name="cart" interface="intv_cart">
2251         <feature name="slot" value="intv_rom" />
2252         <dataarea name="5000" size="16384">
2253            <rom name="yogi's frustration.50" size="16384" crc="7f4ba6ad" sha1="277a3ad0bdbad4fa8086655bb7508ff4bb0dde5c" offset="0x0000" />
2254         </dataarea>
2255         <dataarea name="D000" size="8192">
2256            <rom name="yogi's frustration.d0" size="8192" crc="cf15e8c5" sha1="bbc103a8fc3d979a05dc42aa5b773355ab11df60" offset="0x0000" />
2257         </dataarea>
2258         <dataarea name="F000" size="8192">
2259            <rom name="yogi's frustration.f0" size="8192" crc="2bc63759" sha1="463b7a8f2e139fcb8434c565b2b275b313a9d52e" offset="0x0000" />
2260         </dataarea>
2261      </part>
2262   </software>
2263
2264
20992265   <software name="imitc">
21002266      <description>IMI Test Cartridge</description>
21012267      <year>1978</year>
r241527r241528
21232289      </part>
21242290   </software>
21252291
2292
21262293   <software name="4tris">
21272294      <description>4-Tris (Download Version)</description>
21282295      <year>2000</year>
r241527r241528
21362303      </part>
21372304   </software>
21382305
2139   <software name="minehntr">
2306   <software name="dkongarc" supported="partial">
2307      <description>Donkey Kong Arcade</description>
2308      <year>200?</year>
2309      <publisher>IntelligentVision</publisher>
2310      <part name="cart" interface="intv_cart">
2311         <feature name="slot" value="intv_rom" />
2312         <dataarea name="5000" size="16384">
2313            <rom name="dkinty.50" size="16384" crc="93a9826c" sha1="477ab844aaea8fd18fc8b8c846dbfb78280b924d" offset="0x0000" />
2314         </dataarea>
2315         <dataarea name="9000" size="16384">
2316            <rom name="dkinty.90" size="16384" crc="a927412f" sha1="acb7359db142c1b77c3a17d1547ecc8a259d3f02" offset="0x0000" />
2317         </dataarea>
2318         <dataarea name="D000" size="8192">
2319            <rom name="dkinty.d0" size="8192" crc="642d6557" sha1="5a2fa6bd9a6c173581da5d08699a44198da0231c" offset="0x0000" />
2320         </dataarea>
2321         <dataarea name="F000" size="8192">
2322            <rom name="dkinty.f0" size="8192" crc="3e39ee68" sha1="c266e320a9b2266c7db44bc0965e2b68ffa18e27" offset="0x0000" />
2323         </dataarea>
2324      </part>
2325   </software>
2326
2327   <software name="istar">
2328      <description>Istar</description>
2329      <year>2010?</year>
2330      <publisher>IntelligentVision</publisher>
2331      <part name="cart" interface="intv_cart">
2332         <feature name="slot" value="intv_rom" />
2333         <dataarea name="5000" size="12288">
2334            <rom name="istar.50" size="12288" crc="7899e5ba" sha1="997d1b679768296fc2db120a93cc1880318637cf" offset="0x0000" />
2335         </dataarea>
2336      </part>
2337   </software>
2338
2339   <software name="minehunt">
21402340      <description>Minehunter (Download Version)</description>
21412341      <year>2004</year>
21422342      <publisher>IntelligentVision</publisher>
r241527r241528
21442344      <part name="cart" interface="intv_cart">
21452345         <feature name="slot" value="intv_rom" />
21462346         <dataarea name="5000" size="0x4000">
2347         <!-- cutting this at 0x3e00 gives crc32 594c230e -->
21472348            <rom name="minehunter.50" size="0x4000" crc="a9f1d874" sha1="4bbac2b5264f4d357e7223b2373b078c622c08a9" offset="0x0000"/>
21482349         </dataarea>
21492350      </part>
21502351   </software>
21512352
2353   <software name="minehunta" cloneof="minehunt">
2354      <description>Minehunter (Download Version, Alt?)</description>
2355      <year>2004</year>
2356      <publisher>IntelligentVision</publisher>
2357      <part name="cart" interface="intv_cart">
2358         <feature name="slot" value="intv_rom" />
2359         <dataarea name="5000" size="16384">
2360            <rom name="minehunta.50" size="15872" crc="94096229" sha1="a351edd058431ed2aeccc0554041a17258c01c28" offset="0x0000" />
2361         </dataarea>
2362      </part>
2363   </software>
2364
21522365   <software name="sgr">
21532366      <description>SameGame &amp; Robots (Download Version)</description>
21542367      <year>2005</year>
r241527r241528
21682381      </part>
21692382   </software>
21702383
2384   <software name="spina">
2385      <description>ZZZZZ! Spina the Bee</description>
2386      <year>200?</year>
2387      <publisher>IntelligentVision</publisher>
2388      <part name="cart" interface="intv_cart">
2389         <feature name="slot" value="intv_rom" />
2390         <dataarea name="5000" size="16384">
2391            <rom name="zzzzz! spina the bee.50" size="16384" crc="01efa214" sha1="1a70d73512da0f78957bbd74b14077303e4fb905" offset="0x0000" />
2392         </dataarea>
2393      </part>
2394   </software>
2395
2396   <software name="spacecnt">
2397      <description>Space Cunt</description>
2398      <year>200?</year>
2399      <publisher>IntelligentVision</publisher>
2400      <info name="usage" value="Uses Intellivoice"/>
2401      <part name="cart" interface="intv_cart">
2402         <feature name="slot" value="intv_rom" />
2403         <dataarea name="5000" size="16384">
2404            <rom name="space cunt.50" size="16384" crc="4542d593" sha1="c946b40ba51c48d8fedc4cdb40c27e3779e2b84b" offset="0x0000" />
2405         </dataarea>
2406      </part>
2407   </software>
2408
2409   <software name="spatrol">
2410      <description>Space Patrol Teaser Edition</description>
2411      <year>2007?</year>
2412      <publisher>IntelligentVision</publisher>
2413      <part name="cart" interface="intv_cart">
2414         <feature name="slot" value="intv_rom" />
2415         <dataarea name="5000" size="16384">
2416            <rom name="space patrol teaser edition.50" size="16384" crc="3c3d75bf" sha1="761e379d43ba1551198dab8199764356fc615b1b" offset="0x0000" />
2417         </dataarea>
2418         <dataarea name="D000" size="8192">
2419            <rom name="space patrol teaser edition.d0" size="8192" crc="04101767" sha1="54f8dfe0d5413097c280f72b45f6684bc9e1a3d5" offset="0x0000" />
2420         </dataarea>
2421         <dataarea name="F000" size="8192">
2422            <rom name="space patrol teaser edition.f0" size="8192" crc="a6950b88" sha1="27891c3026f0a1fb34a13438502960485d33b24f" offset="0x0000" />
2423         </dataarea>
2424      </part>
2425   </software>
2426
21712427   <software name="stonix">
21722428      <description>Stonix (Download Version)</description>
21732429      <year>2005</year>
r241527r241528
21862442         </dataarea>
21872443      </part>
21882444   </software>
2445
2446   <software name="suprchef">
2447      <description>Super Chef BT</description>
2448      <year>2013?</year>
2449      <publisher>IntelligentVision</publisher>
2450      <part name="cart" interface="intv_cart">
2451         <feature name="slot" value="intv_rom" />
2452         <dataarea name="5000" size="16384">
2453            <rom name="burgrtm2.50" size="16384" crc="54848723" sha1="e791fe7ae0af267689fc831e60c407c02c5ee280" offset="0x0000" />
2454         </dataarea>
2455         <dataarea name="D000" size="24576">
2456            <rom name="burgrtm2.d0" size="24576" crc="53feb216" sha1="d462c44ddbe91fdbfad8ef26658dc07cea4a6dbc" offset="0x0000" />
2457         </dataarea>
2458      </part>
2459   </software>
2460
2461   <software name="todd">
2462      <description>Tag Along Todd (Unfinished)</description>
2463      <year>200?</year>
2464      <publisher>IntelligentVision</publisher>
2465      <part name="cart" interface="intv_cart">
2466         <feature name="slot" value="intv_rom" />
2467         <dataarea name="5000" size="16384">
2468            <rom name="tag-along-todd.50" size="10752" crc="1ecdd51b" sha1="9e1666a68d50bb4a1f618cc2f9bcd7dfbadc8188" offset="0x0000" />
2469         </dataarea>
2470      </part>
2471   </software>
2472
2473
2474
2475<!-- TODO: Investigate these files -->
2476
2477   <software name="kingotmf" cloneof="kingotm" supported="no">
2478      <description>King of the Mountain (Fixed?)</description>
2479      <year>200?</year>
2480      <publisher>IntelligentVision</publisher>
2481      <part name="cart" interface="intv_cart">
2482         <feature name="slot" value="intv_rom" />
2483         <dataarea name="5000" size="16384">
2484            <rom name="king of the mountain (alt).50" size="16384" crc="3634697b" sha1="c20c17bd68e92b7f81a522c4c1d0dd4ae8926bdd" offset="0x0000" />
2485         </dataarea>
2486         <dataarea name="D000" size="16896">
2487            <rom name="king of the mountain (alt).d0" size="16896" crc="2c7f5de1" sha1="c86a04a969542a08b46ef50dd30c649ad6ef5b47" offset="0x0000" />
2488         </dataarea>
2489      </part>
2490   </software>
2491
2492   <software name="quest" supported="no">
2493      <description>Quest</description>
2494      <year>19??</year>
2495      <publisher>&lt;unknown&gt;</publisher>
2496      <part name="cart" interface="intv_cart">
2497         <feature name="slot" value="intv_rom" />
2498         <dataarea name="0000" size="16384">
2499            <rom name="quest.00" size="16384" crc="540281d5" sha1="30a3c0d4cf1d939f8a1b4e6ff3fc18a2e13f3e7e" offset="0x0000" />
2500         </dataarea>
2501         <dataarea name="5000" size="16384">
2502            <rom name="quest.50" size="16384" crc="6d5013df" sha1="c1535a9dd54d621ca3d44fd9ca1b5d5c745eb3ad" offset="0x0000" />
2503         </dataarea>
2504         <dataarea name="D000" size="16384">
2505            <rom name="quest.d0" size="16384" crc="869ce44f" sha1="43196b47bde3fccf281c355f2966c71099a6a436" offset="0x0000" />
2506         </dataarea>
2507      </part>
2508   </software>
2509
21892510</softwarelist>
trunk/hash/intvecs.xml
r241527r241528
11<?xml version="1.0"?>
22<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4
53<softwarelist name="intvecs" description="Intellivision ECS cartridges">
64
75   <software name="jetsons">
r241527r241528
150148         </dataarea>
151149      </part>
152150   </software>
151
152
153   <software name="flintkf">
154      <description>Flintstones Keyboard Fun (Unreleased)</description>
155      <year>200?</year>
156      <publisher>IntelligentVision</publisher>
157      <info name="usage" value="Requires ECS and Keyboard"/>
158      <part name="cart" interface="intv_cart">
159         <feature name="slot" value="intv_rom" />
160         <dataarea name="5000" size="16384">
161            <rom name="flintstones keyboard fun.50" size="16384" crc="87996f3a" sha1="ffc8986782a461e1c99de24f92578295216e7b5f" offset="0x0000" />
162         </dataarea>
163         <dataarea name="D000" size="8192">
164            <rom name="flintstones keyboard fun.d0" size="8192" crc="e813510b" sha1="fa6203172faf46d89fd3a9276f642cbaf6b6f2ab" offset="0x0000" />
165         </dataarea>
166      </part>
167   </software>
153168</softwarelist>
trunk/hash/pet_cass.xml
r241527r241528
11<?xml version="1.0"?>
22<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
34<softwarelist name="pet_cass" description="Commodore PET cassettes">
45
5   <software name="lunarlnd">
6      <description>Lunar Lander</description>
7      <year>197?</year>
8      <publisher>&lt;unknown&gt;</publisher>
6   <software name="acquire">
7      <description>Acquire</description>
8      <year>1982</year>
9      <publisher>Microcomputer Games</publisher>
910
11      <!-- pet2001n16 Side A: Acquire -->
12      <part name="cass" interface="cbm_cass">
13         <dataarea name="cass" size="24368704">
14            <rom name="acquire (1982)(avalon hill).wav" size="24368704" crc="65ceaa57" sha1="e8b1d072356526c31a509a267507e9aaa74f17fa" offset="0" />
15         </dataarea>
16      </part>
17   </software>
18
19   <software name="androm">
20      <description>Andromeda Conquest</description>
21      <year>1982</year>
22
23      <!-- pet2001n16 Side A: Andromeda -->
24      <publisher>Microcomputer Games</publisher>
25      <part name="cass" interface="cbm_cass">
26         <dataarea name="cass" size="22685838">
27            <rom name="andromeda conquest (1982)(avalon hill).wav" size="22685838" crc="8716b6d9" sha1="7d21e69fe5c1831b3f3244d1236b7e7ed57a2fb4" offset="0" />
28         </dataarea>
29      </part>
30   </software>
31
32   <software name="b1bomb">
33      <description>B-1 Bomber Game</description>
34      <year>1982</year>
35
36      <!-- pet2001n16 Side A: B-1 Bomber -->
37      <publisher>Microcomputer Games</publisher>
38      <part name="cass" interface="cbm_cass">
39         <dataarea name="cass" size="15154010">
40            <rom name="b-1 nuclear bomber (1981)(avalon hill).wav" size="15154010" crc="69fcf587" sha1="de3cb18e63a45943e7357af16d4b3994c3dbae46" offset="0" />
41         </dataarea>
42      </part>
43   </software>
44
45   <software name="bbstrat">
46      <description>Baseball Strategy</description>
47      <year>1982</year>
48
49      <!-- pet4032 Side A: Baseball Strateg -->
50      <publisher>Microcomputer Games</publisher>
51      <part name="cass" interface="cbm_cass">
52         <dataarea name="cass" size="30735222">
53            <rom name="baseball strategy (1982)(avalon hill).wav" size="30735222" crc="1d50607d" sha1="dcb6571346f8da9777d6a4654413303d6320f55e" offset="0" />
54         </dataarea>
55      </part>
56   </software>
57
58   <software name="bjack">
59      <!-- 321009 -->
60      <description>Blackjack</description>
61      <year>1978</year>
62
63      <!-- pet20018 Side A: Blackjack -->
64      <publisher>Commodore Business Machines, Inc.</publisher>
65      <part name="cass" interface="cbm_cass">
66         <dataarea name="cass" size="11284678">
67            <rom name="blackjack (1978)(commodore business machines).wav" size="11284678" crc="b65acc8b" sha1="a5a3261a04bde04309e539b72ddaadd462e21c70" offset="0" />
68         </dataarea>
69      </part>
70   </software>
71
72   <software name="bomba">
73      <description>Arcade Pak #3 Bomber Attack</description>
74      <year>1982</year>
75
76      <!-- pet2001n Side A: Bomber Attack -->
77      <publisher>Avalon Hill</publisher>
78      <part name="cass" interface="cbm_cass">
79         <dataarea name="cass" size="10001002">
80            <rom name="Bomber Attack (1982)(avalon hill).wav" size="10001002" crc="4ff57e9c" sha1="b795a4d8c2f7891088ee6cf7147d785948d7b887" offset="0" />
81         </dataarea>
82      </part>
83   </software>
84
85   <software name="bullb">
86      <description>Bulls and Bears</description>
87      <year>1978</year>
88
89      <!-- pet20018 Side A: Bulls and Bears -->
90      <publisher>Speakeasy Software</publisher>
91      <part name="cass" interface="cbm_cass">
92         <dataarea name="cass" size="10926558">
93            <rom name="bulls and bears (1978)(speakeasy software).wav" size="10926558" crc="8fbd037f" sha1="20527ee4b6528c0daf31994bfed028583faa049f" offset="0" />
94         </dataarea>
95      </part>
96   </software>
97
98   <software name="bjack1">
99      <description>Casino Blackjack 5.7</description>
100      <year>1979</year>
101
102      <!-- pet20018 Side A: Blackjack -->
103      <publisher>Speakeasy Software</publisher>
104      <part name="cass" interface="cbm_cass">
105         <dataarea name="cass" size="11929950">
106            <rom name="casino blackjack 5.7 (1979)(cms software systems).wav" size="11929950" crc="de4f4383" sha1="2ac7ee53dc74a4696bf9dd72103e4ef569d94ec4" offset="0" />
107         </dataarea>
108      </part>
109   </software>
110
111   <software name="conflict">
112      <description>Conflict 2500</description>
113      <year>1981</year>
114
115      <!-- pet2001n16 Side A: Conflict 2500 -->
116      <publisher>Microcomputer Games</publisher>
117      <part name="cass" interface="cbm_cass">
118         <dataarea name="cass" size="23419766">
119            <rom name="conflict 2500 (1981)(avalon hill).wav" size="23419766" crc="872b73d6" sha1="c3941f3ce51bff8d0571ce2b43b7ccdd9a212733" offset="0" />
120         </dataarea>
121      </part>
122   </software>
123
124   <software name="cur1">
125      <description>Cursor 1</description>
126      <year>1978</year>
127
128      <!-- pet20018 Side A: Cover, Brick, Wander, Shark, Plot, Typer -->
129      <publisher>The Code Works</publisher>
130      <part name="cass" interface="cbm_cass">
131         <dataarea name="cass" size="34540096">
132            <rom name="cursor 1 (1978)(code works).wav" size="34540096" crc="c2a429f0" sha1="f732bdd48c4a7764352355098d01de3e950c2d9c" offset="0" />
133         </dataarea>
134      </part>
135   </software>
136
137   <software name="cur2">
138      <description>Cursor 2</description>
139      <year>1978</year>
140
141      <!-- pet20018 Side A: Cover, Race, Zap, Est, Guess, Mad -->
142      <publisher>The Code Works</publisher>
143      <part name="cass" interface="cbm_cass">
144         <dataarea name="cass" size="38802738">
145            <rom name="cursor 2 (1978)(code works).wav" size="38802738" crc="9925f292" sha1="a0f553dc3e052fe3556183bfd82318b92dd72642" offset="0" />
146         </dataarea>
147      </part>
148   </software>
149
150   <software name="cur3">
151      <description>Cursor 3</description>
152      <year>1978</year>
153
154      <!-- pet20018 Side A: Cover, Bar, Dots, Quix!, Flash, Cards -->
155      <publisher>The Code Works</publisher>
156      <part name="cass" interface="cbm_cass">
157         <dataarea name="cass" size="47849882">
158            <rom name="cursor 3 (1978)(code works).wav" size="47849882" crc="95283cb2" sha1="604f61d0f209aaef32e82bceaa67530511ef60c1" offset="0" />
159         </dataarea>
160      </part>
161   </software>
162
163   <software name="cur4">
164      <description>Cursor 4</description>
165      <year>1978</year>
166
167      <!-- pet20018 Side A: Cover!, Bop, Calc, Clock!, Inp, Ced -->
168      <publisher>The Code Works</publisher>
169      <part name="cass" interface="cbm_cass">
170         <dataarea name="cass" size="55455514">
171            <rom name="cursor 4 (1978)(code works).wav" size="55455514" crc="df747916" sha1="16640a5223a644dca3ef713cac6e70d1348cd6ef" offset="0" />
172         </dataarea>
173      </part>
174
175   </software>
176
177   <software name="cur5">
178      <description>Cursor 5</description>
179      <year>1978</year>
180
181      <!-- pet20018 Side A: Cover, Hanoi, Shoot, Bship, Face, Hman -->
182      <publisher>The Code Works</publisher>
183      <part name="cass" interface="cbm_cass">
184         <dataarea name="cass" size="46403528">
185            <rom name="cursor 5 (1978)(code works).wav" size="46403528" crc="c0c8f3ff" sha1="3f888f080e59853e5f89b0f3d565e125d1e5e852" offset="0" />
186         </dataarea>
187      </part>
188   </software>
189
190   <software name="cur6">
191      <description>Cursor 6</description>
192      <year>1979</year>
193
194      <!-- pet2001n Side A: Cover, Box, Bjack, pet20018: Pack, List, Cedpr -->
195      <publisher>The Code Works</publisher>
196      <part name="cass" interface="cbm_cass">
197         <dataarea name="cass" size="46753010">
198            <rom name="cursor 6 (1979)(code works).wav" size="46753010" crc="2f6ef813" sha1="750cd291f2653c03b6e2fd707cc1ededf97d5477" offset="0" />
199         </dataarea>
200      </part>
201   </software>
202
203   <software name="cur7">
204      <description>Cursor 7</description>
205      <year>1979</year>
206
207      <!-- pet2001n Side A: Cover, Pricer, Sound!, Mind, Fball, Paper -->
208      <publisher>The Code Works</publisher>
209      <part name="cass" interface="cbm_cass">
210         <dataarea name="cass" size="54620302">
211            <rom name="cursor 7 (1979)(code works).wav" size="54620302" crc="6f2bf0a4" sha1="44f13108e3945abbc432ed4cce166848661adf1d" offset="0" />
212         </dataarea>
213      </part>
214   </software>
215
216   <software name="cur8">
217      <description>Cursor 8</description>
218      <year>1979</year>
219
220      <!-- pet2001n Side A: Cover, Revers!, Dbook, Space!, Maze, Add, X -->
221      <publisher>The Code Works</publisher>
222      <part name="cass" interface="cbm_cass">
223         <dataarea name="cass" size="58017788">
224            <rom name="cursor 8 (1979)(code works).wav" size="58017788" crc="f6118fbf" sha1="e415cb0d26702836a44a798546960c21bcd96299" offset="0" />
225         </dataarea>
226      </part>
227   </software>
228
229   <software name="cur9">
230      <description>Cursor 9</description>
231      <year>1979</year>
232
233      <!-- pet2001n16 Side A: pet2001n: Cover, Yahtzee, Slot!, Flip, Circle, pet2001n16: Gammon -->
234      <publisher>The Code Works</publisher>
235      <part name="cass" interface="cbm_cass">
236         <dataarea name="cass" size="69494314">
237            <rom name="cursor 9 (1979)(code works).wav" size="69494314" crc="8abf8e8c" sha1="98e0b0f9d16a055cb2d11f2aff84a6c1884f7acf" offset="0" />
238         </dataarea>
239      </part>
240   </software>
241
242   <software name="cur10">
243      <description>Cursor 10</description>
244      <year>1979</year>
245
246      <!-- pet2001n Side A: Cover!, pet20018: Titrate, pet2001n: Finance, Course, pet20018: Asm, Reader -->
247      <publisher>The Code Works</publisher>
248      <part name="cass" interface="cbm_cass">
249         <dataarea name="cass" size="52635502">
250            <rom name="cursor 10 (1979)(code works).wav" size="52635502" crc="e64a1066" sha1="0559d40f259cf149f0bc88dfe19d64caeae7902b" offset="0" />
251         </dataarea>
252      </part>
253   </software>
254
255   <software name="cur11">
256      <description>Cursor 11</description>
257      <year>1979</year>
258
259      <!-- pet2001n Side A: Cover, Demon!, Hi calc, Wipeout, Peg, States -->
260      <publisher>The Code Works</publisher>
261      <part name="cass" interface="cbm_cass">
262         <dataarea name="cass" size="52073122">
263            <rom name="cursor 11 (1979)(code works).wav" size="52073122" crc="b4a6843a" sha1="1ef4ff08f02e140d5c74fed7fdcce4b332f933a4" offset="0" />
264         </dataarea>
265      </part>
266   </software>
267
268   <software name="cur12">
269      <description>Cursor 12</description>
270      <year>1979</year>
271
272      <!-- pet2001n Side A: Cover12, Canyon!, Gauss!, Pickup, Piegram, Flight! -->
273      <publisher>The Code Works</publisher>
274      <part name="cass" interface="cbm_cass">
275         <dataarea name="cass" size="60014980">
276            <rom name="cursor 12 (1979)(code works).wav" size="60014980" crc="6ceecff0" sha1="391e5c114dc60beec739908666e04b4f82000ce8" offset="0" />
277         </dataarea>
278      </part>
279   </software>
280
281   <software name="cur13">
282      <description>Cursor 13</description>
283      <year>1979</year>
284
285      <!-- pet2001n Side A: Cover13, Ratrun, Cars, Ferry!, Leap, Tcard -->
286      <publisher>The Code Works</publisher>
287      <part name="cass" interface="cbm_cass">
288         <dataarea name="cass" size="57500730">
289            <rom name="cursor 13 (1979)(code works).wav" size="57500730" crc="fd7dd623" sha1="779a6b763de8efd69942e5a89e220c4d670d63f0" offset="0" />
290         </dataarea>
291      </part>
292   </software>
293
294   <software name="cur14">
295      <description>Cursor 14</description>
296      <year>1979</year>
297
298      <!-- pet2001n Side A: Cover14, Match, Search, Bat!, Morse!, Cops, Coming -->
299      <publisher>The Code Works</publisher>
300      <part name="cass" interface="cbm_cass">
301         <dataarea name="cass" size="56915420">
302            <rom name="cursor 14 (1979)(code works).wav" size="56915420" crc="43442da6" sha1="e6b31659181da8bebe2b7e2d66b982030014192e" offset="0" />
303         </dataarea>
304      </part>
305   </software>
306
307   <software name="cur15">
308      <description>Cursor 15</description>
309      <year>1979</year>
310
311      <!-- pet2001n Side A: Cover15!, Dungeon, Fifteen, Gomoku, Everest, Hawaii! -->
312      <publisher>The Code Works</publisher>
313      <part name="cass" interface="cbm_cass">
314         <dataarea name="cass" size="54585328">
315            <rom name="cursor 15 (1979)(code works).wav" size="54585328" crc="3e176c08" sha1="9b133685dac34826b9505407aefa27c1affa3427" offset="0" />
316         </dataarea>
317      </part>
318   </software>
319
320   <software name="cur16">
321      <description>Cursor 16</description>
322      <year>1980</year>
323
324      <!-- pet2001n Side A: Cover16, Nab!, Fire!, Aliens!, Bonzo!, Catch! -->
325      <publisher>The Code Works</publisher>
326      <part name="cass" interface="cbm_cass">
327         <dataarea name="cass" size="45885486">
328            <rom name="cursor 16 (1980)(code works).wav" size="45885486" crc="53903b5a" sha1="db92181ea1c4cf65b93bda621b2d7a7c32c3bc7e" offset="0" />
329         </dataarea>
330      </part>
331   </software>
332
333   <software name="cur17">
334      <description>Cursor 17</description>
335      <year>1980</year>
336
337      <!-- pet2001n Side A: Cover17, Police!, Spot, Ruler, Letter, Merge, Npack -->
338      <publisher>The Code Works</publisher>
339      <part name="cass" interface="cbm_cass">
340         <dataarea name="cass" size="54618936">
341            <rom name="cursor 17 (1980)(code works).wav" size="54618936" crc="c8492708" sha1="2638641d44437b595d17fc9ca8f91a1432b78164" offset="0" />
342         </dataarea>
343      </part>
344   </software>
345
346   <software name="cur18">
347      <description>Cursor 18</description>
348      <year>1980</year>
349
350      <!-- pet2001n Side A: Cover18, Dromeda!, Joust, Weather, Hi-res, Sheep -->
351      <publisher>The Code Works</publisher>
352      <part name="cass" interface="cbm_cass">
353         <dataarea name="cass" size="56023512">
354            <rom name="cursor 18 (1980)(code works).wav" size="56023512" crc="399cee6b" sha1="3930f54ffc12e09dc3e651642ee8f0bac6d9dde8" offset="0" />
355         </dataarea>
356      </part>
357   </software>
358
359   <software name="cur19">
360      <description>Cursor 19</description>
361      <year>1980</year>
362
363      <!-- pet2001n Side A: Cover19, Frog!, Godzilla!, Miner!, Rail, Gbooka, Gbookb -->
364      <publisher>The Code Works</publisher>
365      <part name="cass" interface="cbm_cass">
366         <dataarea name="cass" size="66518600">
367            <rom name="cursor 19 (1980)(code works).wav" size="66518600" crc="9a1386b2" sha1="5c98728358ac6167f7e7e3c07b2362eedc1b0161" offset="0" />
368         </dataarea>
369      </part>
370   </software>
371
372   <software name="cur20">
373      <description>Cursor 20</description>
374      <year>1980</year>
375
376      <!-- pet2001n Side A: Cover20, Music!, Bets, Checkers!, Curves, Equip -->
377      <publisher>The Code Works</publisher>
378      <part name="cass" interface="cbm_cass">
379         <dataarea name="cass" size="53527416">
380            <rom name="cursor 20 (1980)(code works).wav" size="53527416" crc="2401c9e9" sha1="c2be524ba8a66b4c0a7541a09f29a839acadac8f" offset="0" />
381         </dataarea>
382      </part>
383   </software>
384
385   <software name="cur21">
386      <description>Cursor 21</description>
387      <year>1980</year>
388
389      <!-- pet2001n Side A: Cover21, Capture!, Dance!, Boswain, Ouranos!, Drag -->
390      <publisher>The Code Works</publisher>
391      <part name="cass" interface="cbm_cass">
392         <dataarea name="cass" size="58273484">
393            <rom name="cursor 21 (1980)(code works).wav" size="58273484" crc="7d2f858a" sha1="49cab5acfc20c7d86d25aaf4c8790cc2b2ffd32c" offset="0" />
394         </dataarea>
395      </part>
396   </software>
397
398   <software name="cur22">
399      <description>Cursor 22</description>
400      <year>1980</year>
401
402      <!-- pet2001n Side A: Cover22, Kalah, Poker, Match, Thunt!, Compare -->
403      <publisher>The Code Works</publisher>
404      <part name="cass" interface="cbm_cass">
405         <dataarea name="cass" size="53405634">
406            <rom name="cursor 22 (1980)(code works).wav" size="53405634" crc="c6e434ad" sha1="dfb03ed9a3cc51a0e75b884519d26f15e4e0de4b" offset="0" />
407         </dataarea>
408      </part>
409   </software>
410
411   <software name="cur23">
412      <description>Cursor 23</description>
413      <year>1980</year>
414
415      <!-- pet2001n16 Side A: pet2001n: Cover23, Recipe, Ambush!, pet2001n16: Orrey, pet2001n: Enigma, Mwhiz! -->
416      <publisher>The Code Works</publisher>
417      <part name="cass" interface="cbm_cass">
418         <dataarea name="cass" size="52482130">
419            <rom name="cursor 23 (1980)(code works).wav" size="52482130" crc="aace87f0" sha1="e8f566cbfdb28b3fbd508f806a09b57081830a78" offset="0" />
420         </dataarea>
421      </part>
422   </software>
423
424   <software name="cur24">
425      <description>Cursor 24</description>
426      <year>1981</year>
427
428      <!-- pet2001n Side A: Cover24, Defend!, G-word, Racer!, Printsit, Re-num -->
429      <publisher>The Code Works</publisher>
430      <part name="cass" interface="cbm_cass">
431         <dataarea name="cass" size="45591486">
432            <rom name="cursor 24 (1981)(code works).wav" size="45591486" crc="413fe583" sha1="7ac7333db71a6c6f363f26437961e50fb443dd12" offset="0" />
433         </dataarea>
434      </part>
435   </software>
436
437   <software name="cur25">
438      <description>Cursor 25</description>
439      <year>1981</year>
440
441      <!-- pet2001n16 Side A: pet2001n: Cover25, Maxit, pet2001n16: Mail, pet2001n: Rescue!, pet2001n16: Repair, pet2001n: Xref -->
442      <publisher>The Code Works</publisher>
443      <part name="cass" interface="cbm_cass">
444         <dataarea name="cass" size="58594030">
445            <rom name="cursor 25 (1981)(code works).wav" size="58594030" crc="ff3aa594" sha1="db60a8b2c751aeeffe5fcd9c7fc2ac1965e4ccc2" offset="0" />
446         </dataarea>
447      </part>
448   </software>
449
450   <software name="cur26">
451      <description>Cursor 26</description>
452      <year>1981</year>
453
454      <!-- pet2001n16 Side A: pet2001n: Cover26, Lawn!, Tank!, Ram, Safe!, pet2001n16: Test -->
455      <publisher>The Code Works</publisher>
456      <part name="cass" interface="cbm_cass">
457         <dataarea name="cass" size="59355380">
458            <rom name="cursor 26 (1981)(code works).wav" size="59355380" crc="5dbb9096" sha1="4ad21ed698ff0162b12615276daf2ebca14d5c97" offset="0" />
459         </dataarea>
460      </part>
461   </software>
462
463   <software name="cur27">
464      <description>Cursor 27</description>
465      <year>1981</year>
466
467      <!-- pet2001n Side A: Cover27!, Attack!, Emaze!, Duel!, Miser, Prochar -->
468      <publisher>The Code Works</publisher>
469      <part name="cass" interface="cbm_cass">
470         <dataarea name="cass" size="68273716">
471            <rom name="cursor 27 (1981)(code works).wav" size="68273716" crc="b87e72c4" sha1="3ca92d7de8cdb085759388cb7cb4a72b1d5438a9" offset="0" />
472         </dataarea>
473      </part>
474   </software>
475
476   <software name="cur28">
477      <description>Cursor 28</description>
478      <year>1981</year>
479
480      <!-- pet2001n Side A: Cover28!, Skeet!, Blasto!, Stop!, Voz, Flags -->
481      <publisher>The Code Works</publisher>
482      <part name="cass" interface="cbm_cass">
483         <dataarea name="cass" size="51620292">
484            <rom name="cursor 28 (1981)(code works).wav" size="51620292" crc="3cceca70" sha1="9430875aa6370e940c7b88351bccba7e27be5640" offset="0" />
485         </dataarea>
486      </part>
487   </software>
488
489   <software name="cur29">
490      <description>Cursor 29</description>
491      <year>1982</year>
492
493      <!-- pet2001n16 Side A: pet2001n: Cover29, Pong!, Clone!, pet2001n16: Drone!, pet2001n: Contact, Krypto -->
494      <publisher>The Code Works</publisher>
495      <part name="cass" interface="cbm_cass">
496         <dataarea name="cass" size="72864822">
497            <rom name="cursor 29 (1982)(code works).wav" size="72864822" crc="16fa7e17" sha1="d1f88d1e696b7b1c6488104a70ef372969521de6" offset="0" />
498         </dataarea>
499      </part>
500   </software>
501
502   <software name="cur30">
503      <description>Cursor 30</description>
504      <year>1982</year>
505
506      <!-- pet2001n Side A: Cover30, Dive, Slide, Break, Rebound, Zip -->
507      <publisher>The Code Works</publisher>
508      <part name="cass" interface="cbm_cass">
509         <dataarea name="cass" size="44679544">
510            <rom name="cursor 30 (1982)(code works).wav" size="44679544" crc="bdb20dfb" sha1="12be82c0122f53718bfb2b634c85663c47a6a7e6" offset="0" />
511         </dataarea>
512      </part>
513   </software>
514
515   <software name="dpoker">
516      <!-- 321008 -->
517      <description>Draw Poker</description>
518      <year>1978</year>
519      <publisher>Commodore Business Machines, Inc.</publisher>
520
521      <!-- pet20018 -->
522      <part name="cass" interface="cbm_cass">
523         <dataarea name="cass" size="10220420">
524            <rom name="draw poker (1978)(commodore busines machines).wav" size="10220420" crc="82f7871d" sha1="973cdc5d8ede2dffa6fb25abfadf8b5daabe6949" offset="0" />
525         </dataarea>
526      </part>
527   </software>
528
529   <software name="eaadj1n">
530      <description>Adjectives 1</description>
531      <year>1980</year>
532
533      <!-- pet2001n Side A: Adjectives 1 -->
534      <publisher>Activity Records, Inc.</publisher>
535      <part name="cass" interface="cbm_cass">
536         <dataarea name="cass" size="11189514">
537            <rom name="adjectives 1 (1980)(activity records, inc.).wav" size="11189514" crc="5cd88b03" sha1="2976ab72d36a8654a33c1f8220d9c862ae4849f7" offset="0" />
538         </dataarea>
539      </part>
540   </software>
541
542   <software name="eaadj2n">
543      <description>Adjectives 2</description>
544      <year>1980</year>
545
546      <!-- pet2001n Side A: Adjectives 2 -->
547      <publisher>Activity Records, Inc.</publisher>
548      <part name="cass" interface="cbm_cass">
549         <dataarea name="cass" size="11398034">
550            <rom name="adjectives 2 (1980)(activity records, inc.).wav" size="11398034" crc="beb939fa" sha1="3b3b7ef2118263a8bb7fa85bb0010ae2d1ed89d8" offset="0" />
551         </dataarea>
552      </part>
553   </software>
554
555   <software name="eaadj3n">
556      <description>Adjectives 3</description>
557      <year>1980</year>
558
559      <!-- pet2001n Side A: Adjectives 3 -->
560      <publisher>Activity Records, Inc.</publisher>
561      <part name="cass" interface="cbm_cass">
562         <dataarea name="cass" size="10179592">
563            <rom name="adjectives 3 (1980)(activity records, inc.).wav" size="10179592" crc="7019b74f" sha1="36ed0aac8f1c8ae9de7fc01c29d73d841a398d80" offset="0" />
564         </dataarea>
565      </part>
566   </software>
567
568   <software name="eaadj4n">
569      <description>Adjectives 4</description>
570      <year>1980</year>
571
572      <!-- pet2001n Side A: Adjectives 4 -->
573      <publisher>Activity rRecords, Inc.</publisher>
574      <part name="cass" interface="cbm_cass">
575         <dataarea name="cass" size="11520634">
576            <rom name="adjectives 4 (1980)(activity records, inc.).wav" size="11520634" crc="5a564aa4" sha1="2d7dad3d450158331ecfdc7289e70b3f0cfd68a5" offset="0" />
577         </dataarea>
578      </part>
579   </software>
580
581   <software name="eaadv1n">
582      <description>Adverbs 1</description>
583      <year>1980</year>
584
585      <!-- pet2001n Side A: Adverbs 1 -->
586      <publisher>Activity Records, Inc.</publisher>
587      <part name="cass" interface="cbm_cass">
588         <dataarea name="cass" size="11171990">
589            <rom name="adverbs 1 (1980)(activity records, inc.).wav" size="11171990" crc="4a264aa0" sha1="021f1f264130a46509c46ae46cefafda819deeb7" offset="0" />
590         </dataarea>
591      </part>
592   </software>
593
594   <software name="eaadv2n">
595      <description>Adverbs 2</description>
596      <year>1980</year>
597
598      <!-- pet2001n Side A: Adverbs 2 -->
599      <publisher>Activity Records, Inc.</publisher>
600      <part name="cass" interface="cbm_cass">
601         <dataarea name="cass" size="10775102">
602            <rom name="adverbs 2 (1980)(activity records, inc.).wav" size="10775102" crc="b52be4be" sha1="806da1c924aebf856a5d6236700d91b3b29a0b6f" offset="0" />
603         </dataarea>
604      </part>
605   </software>
606
607   <software name="eaadv3n">
608      <description>Adverbs 3</description>
609      <year>1980</year>
610
611      <!-- pet2001n Side A: Adverbs 3 -->
612      <publisher>Activity Records, Inc.</publisher>
613      <part name="cass" interface="cbm_cass">
614         <dataarea name="cass" size="7315782">
615            <rom name="adverbs 3 (1980)(activity records, inc.).wav" size="7315782" crc="5e2de1e4" sha1="12608f5ead991e9eb46705ff14f6a5c974c0c504" offset="0" />
616         </dataarea>
617      </part>
618   </software>
619
620   <software name="eaadv4n">
621      <description>Adverbs 4</description>
622      <year>1980</year>
623
624      <!-- pet2001n Side A: Adverbs 4 -->
625      <publisher>Activity Records, Inc.</publisher>
626      <part name="cass" interface="cbm_cass">
627         <dataarea name="cass" size="8865608">
628            <rom name="adverbs 4 (1980)(activity records, inc.).wav" size="8865608" crc="ecfddb13" sha1="f79db1d8fa625252f6c7dea8ae4556e5ce722e33" offset="0" />
629         </dataarea>
630      </part>
631   </software>
632
633   <software name="eacon1n">
634      <description>Contractions 1</description>
635      <year>1980</year>
636
637      <!-- pet2001n Side A: Contractions 1 -->
638      <publisher>Activity Records, Inc.</publisher>
639      <part name="cass" interface="cbm_cass">
640         <dataarea name="cass" size="8741664">
641            <rom name="contractions 1 (1980)(activity records, inc.).wav" size="8741664" crc="b05cebce" sha1="c38311bf71973d7bbc89754d46feb48e738f0cb4" offset="0" />
642         </dataarea>
643      </part>
644   </software>
645
646   <software name="eacon2n">
647      <description>Contractions 2</description>
648      <year>1980</year>
649
650      <!-- pet2001n Side A: Contractions 2 -->
651      <publisher>Activity Records, Inc.</publisher>
652      <part name="cass" interface="cbm_cass">
653         <dataarea name="cass" size="7618740">
654            <rom name="contractions 2 (1980)(activity records, inc.).wav" size="7618740" crc="10107694" sha1="fc27866f351a18f41e4c4528b53495a908694061" offset="0" />
655         </dataarea>
656      </part>
657   </software>
658
659   <software name="eacon3n">
660      <description>Contractions 3</description>
661      <year>1980</year>
662
663      <!-- pet2001n Side A: Contractions 3 -->
664      <publisher>Activity Records, Inc.</publisher>
665      <part name="cass" interface="cbm_cass">
666         <dataarea name="cass" size="8523464">
667            <rom name="contractions 3 (1980)(activity records, inc.).wav" size="8523464" crc="ab728b0b" sha1="f4e8e1c4745e40fe133e5c20104c929b4b693b56" offset="0" />
668         </dataarea>
669      </part>
670   </software>
671
672   <software name="eacon4n">
673      <description>Contractions 4</description>
674      <year>1980</year>
675
676      <!-- pet2001n Side A: Contractions 4 -->
677      <publisher>Activity Records, Inc.</publisher>
678      <part name="cass" interface="cbm_cass">
679         <dataarea name="cass" size="11211668">
680            <rom name="contractions 4 (1980)(activity records, inc.).wav" size="11211668" crc="707797e8" sha1="4b70d42f40037b707f5c56956cc5e2dd01b9b663" offset="0" />
681         </dataarea>
682      </part>
683   </software>
684
685   <software name="eaflasn">
686      <description>Flash Spelling</description>
687      <year>1980</year>
688
689      <!-- pet2001n Side A: Flash Spelling -->
690      <publisher>Activity Records, Inc.</publisher>
691      <part name="cass" interface="cbm_cass">
692         <dataarea name="cass" size="10924002">
693            <rom name="flash spelling (1980)(activity records, inc.).wav" size="10924002" crc="c848cf8d" sha1="274ed732a2878d61751558f601c1d47b6f62a027" offset="0" />
694         </dataarea>
695      </part>
696   </software>
697
698   <software name="eahom1n">
699      <description>Homonyms 1</description>
700      <year>1980</year>
701
702      <!-- pet2001n Side A: Homonyms 1 -->
703      <publisher>Activity Records, Inc.</publisher>
704      <part name="cass" interface="cbm_cass">
705         <dataarea name="cass" size="11327432">
706            <rom name="homonyms 1 (1980)(activity records, inc.).wav" size="11327432" crc="b7b4b906" sha1="b4e17fe21d43e4ad951bdfa93ea9963b714f4f40" offset="0" />
707         </dataarea>
708      </part>
709   </software>
710
711   <software name="eahom2n">
712      <description>Homonyms 2</description>
713      <year>1980</year>
714
715      <!-- pet2001n Side A: Homonyms 2 -->
716      <publisher>Activity Records, Inc.</publisher>
717      <part name="cass" interface="cbm_cass">
718         <dataarea name="cass" size="11861540">
719            <rom name="homonyms 2 (1980)(activity records, inc.).wav" size="11861540" crc="0975d654" sha1="eb16abd7711449966ad7517fd21afec0e629b7cd" offset="0" />
720         </dataarea>
721      </part>
722   </software>
723
724   <software name="eahom3n">
725      <description>Homonyms 3</description>
726      <year>1980</year>
727
728      <!-- pet2001n Side A: Homonyms 3 -->
729      <publisher>Activity Records, Inc.</publisher>
730      <part name="cass" interface="cbm_cass">
731         <dataarea name="cass" size="11615978">
732            <rom name="homonyms 3 (1980)(activity records, inc.).wav" size="11615978" crc="29ee6920" sha1="7f73f30e0403356a89a1febf8ff89deff7068fa6" offset="0" />
733         </dataarea>
734      </part>
735   </software>
736
737   <software name="eahom4n">
738      <description>Homonyms 4</description>
739      <year>1980</year>
740
741      <!-- pet2001n Side A: Homonyms 4 -->
742      <publisher>Activity Records, Inc.</publisher>
743      <part name="cass" interface="cbm_cass">
744         <dataarea name="cass" size="11683890">
745            <rom name="homonyms 4 (1980)(activity records, inc.).wav" size="11683890" crc="37dc7bc2" sha1="4337c812232055e81488a8fc9a56db374fa12147" offset="0" />
746         </dataarea>
747      </part>
748   </software>
749
750   <software name="eanou1n">
751      <description>Nouns 1</description>
752      <year>1980</year>
753
754      <!-- pet2001n Side A: Nouns 1 -->
755      <publisher>Activity Records, Inc.</publisher>
756      <part name="cass" interface="cbm_cass">
757         <dataarea name="cass" size="9658096">
758            <rom name="nouns 1 (1980)(activity records, inc.).wav" size="9658096" crc="c1f58189" sha1="0d99300bdecbc7b3e0dc88dec92e0904d3730636" offset="0" />
759         </dataarea>
760      </part>
761   </software>
762
763   <software name="eanou2n">
764      <description>Nouns 2</description>
765      <year>1980</year>
766
767      <!-- pet2001n Side A: Nouns 2 -->
768      <publisher>Activity Records, Inc.</publisher>
769      <part name="cass" interface="cbm_cass">
770         <dataarea name="cass" size="8256024">
771            <rom name="nouns 2 (1980)(activity records, inc.).wav" size="8256024" crc="9fd2c09e" sha1="12dfd01ed34811d35bda22049814521b694bdd1e" offset="0" />
772         </dataarea>
773      </part>
774   </software>
775
776   <software name="eanou3n">
777      <description>Nouns 3</description>
778      <year>1980</year>
779
780      <!-- pet2001n Side A: Nouns 3 -->
781      <publisher>Activity Records, Inc.</publisher>
782      <part name="cass" interface="cbm_cass">
783         <dataarea name="cass" size="10382360">
784            <rom name="nouns 3 (1980)(activity records, inc.).wav" size="10382360" crc="526391fd" sha1="7c9b6d8c8c07415e06d89188cf4abd06131f9c05" offset="0" />
785         </dataarea>
786      </part>
787   </software>
788
789   <software name="eanou4n">
790      <description>Nouns 4</description>
791      <year>1980</year>
792
793      <!-- pet2001n Side A: Nouns 4 -->
794      <publisher>Activity Records, Inc.</publisher>
795      <part name="cass" interface="cbm_cass">
796         <dataarea name="cass" size="10670724">
797            <rom name="nouns 4 (1980)(activity records, inc.).wav" size="10670724" crc="19f240f3" sha1="dfc672a27119b070440dacd9bdfe45fca36c49e6" offset="0" />
798         </dataarea>
799      </part>
800   </software>
801
802   <software name="eapro1n">
803      <description>Pronouns 1</description>
804      <year>1980</year>
805
806      <!-- pet2001n Side A: Pronouns 1 -->
807      <publisher>Activity Records, Inc.</publisher>
808      <part name="cass" interface="cbm_cass">
809         <dataarea name="cass" size="8304786">
810            <rom name="pronouns 1 (1980)(activity records, inc.).wav" size="8304786" crc="f19b0449" sha1="df5877f923b89a65619692e3bbda60540eac225f" offset="0" />
811         </dataarea>
812      </part>
813   </software>
814
815   <software name="eapro2n">
816      <description>Pronouns 2</description>
817      <year>1980</year>
818
819      <!-- pet2001n Side A: Pronouns 2 -->
820      <publisher>Activity Records, Inc.</publisher>
821      <part name="cass" interface="cbm_cass">
822         <dataarea name="cass" size="8766592">
823            <rom name="pronouns 2 (1980)(activity records, inc.).wav" size="8766592" crc="369ebd25" sha1="c21773b0807136aa48852b21f6395069a9daa38e" offset="0" />
824         </dataarea>
825      </part>
826   </software>
827
828   <software name="eapro3n">
829      <description>Pronouns 3</description>
830      <year>1980</year>
831
832      <!-- pet2001n Side A: Pronouns 3 -->
833      <publisher>Activity Records, Inc.</publisher>
834      <part name="cass" interface="cbm_cass">
835         <dataarea name="cass" size="11746820">
836            <rom name="pronouns 3 (1980)(activity records, inc.).wav" size="11746820" crc="32331088" sha1="dd8b94cef82c34fab6802a4962c6089c13d2003f" offset="0" />
837         </dataarea>
838      </part>
839   </software>
840
841   <software name="eapro4n">
842      <description>Pronouns 4</description>
843      <year>1980</year>
844
845      <!-- pet2001n Side A: Pronouns 4 -->
846      <publisher>Activity Records, Inc.</publisher>
847      <part name="cass" interface="cbm_cass">
848         <dataarea name="cass" size="11164358">
849            <rom name="pronouns 4 (1980)(activity records, inc.).wav" size="11164358" crc="3e59fc0a" sha1="9c7f23385261ebee93ea0cef13145683af0119eb" offset="0" />
850         </dataarea>
851      </part>
852   </software>
853
854   <software name="eascrln">
855      <description>Scrambled Letters</description>
856      <year>1980</year>
857
858      <!-- pet2001n Side A: Scrambled Letter -->
859      <publisher>Activity Records, Inc.</publisher>
860      <part name="cass" interface="cbm_cass">
861         <dataarea name="cass" size="10495222">
862            <rom name="scrambled letters (1980)(activity records, inc.).wav" size="10495222" crc="1d22b476" sha1="47b5c68929acc4542442a065a13d4de6bbfbd8dc" offset="0" />
863         </dataarea>
864      </part>
865   </software>
866
867   <software name="easyn1n">
868      <description>Synonyms 1</description>
869      <year>1980</year>
870
871      <!-- pet2001n Side A: Synonyms 1 -->
872      <publisher>Activity Records, Inc.</publisher>
873      <part name="cass" interface="cbm_cass">
874         <dataarea name="cass" size="10756002">
875            <rom name="synonyms 1 (1980)(activity records, inc.).wav" size="10756002" crc="84775373" sha1="7056dd8f4114b6da432ba60238e1c25577e03a56" offset="0" />
876         </dataarea>
877      </part>
878   </software>
879
880   <software name="easyn2n">
881      <description>Synonyms 2</description>
882      <year>1980</year>
883
884      <!-- pet2001n Side A: Synonyms 2 -->
885      <publisher>Activity Records, Inc.</publisher>
886      <part name="cass" interface="cbm_cass">
887         <dataarea name="cass" size="11090060">
888            <rom name="synonyms 2 (1980)(activity records, inc.).wav" size="11090060" crc="97b76ece" sha1="58b5180d0a4bc1ea7660f177b2ef474c83213f75" offset="0" />
889         </dataarea>
890      </part>
891   </software>
892
893   <software name="easyn3n">
894      <description>Synonyms 3</description>
895      <year>1980</year>
896
897      <!-- pet2001n Side A: Synonyms 3 -->
898      <publisher>Activity Records, Inc.</publisher>
899      <part name="cass" interface="cbm_cass">
900         <dataarea name="cass" size="11520754">
901            <rom name="synonyms 3 (1980)(activity records, inc.).wav" size="11520754" crc="b03171be" sha1="39dc6de8545160656b306d4b767140b055bbc426" offset="0" />
902         </dataarea>
903      </part>
904   </software>
905
906   <software name="easyn4n">
907      <description>Synonyms 4</description>
908      <year>1980</year>
909
910      <!-- pet2001n Side A: Synonyms 4 -->
911      <publisher>Activity Records, Inc.</publisher>
912      <part name="cass" interface="cbm_cass">
913         <dataarea name="cass" size="11056074">
914            <rom name="synonyms 4 (1980)(activity records, inc.).wav" size="11056074" crc="221953dc" sha1="0d9914a7f01ebbd5c3397f5dbc31b39daf3954c6" offset="0" />
915         </dataarea>
916      </part>
917   </software>
918
919   <software name="eaver1n">
920      <description>Verbs 1</description>
921      <year>1980</year>
922
923      <!-- pet2001n Side A: Verbs 1 -->
924      <publisher>Activity Records, Inc.</publisher>
925      <part name="cass" interface="cbm_cass">
926         <dataarea name="cass" size="11064470">
927            <rom name="verbs 1 (1980)(activity records, inc.).wav" size="11064470" crc="e0374a46" sha1="605b1965f4e801942674ad9dc809e753157d0144" offset="0" />
928         </dataarea>
929      </part>
930   </software>
931
932   <software name="eaver2n">
933      <description>Verbs 2</description>
934      <year>1980</year>
935
936      <!-- pet2001n Side A: Verbs 2 -->
937      <publisher>Activity Records, Inc.</publisher>
938      <part name="cass" interface="cbm_cass">
939         <dataarea name="cass" size="11635338">
940            <rom name="verbs 2 (1980)(activity records, inc.).wav" size="11635338" crc="0935674a" sha1="ecab049a8f243d669f000e2782621fb6b98443e9" offset="0" />
941         </dataarea>
942      </part>
943   </software>
944
945   <software name="eaver3n">
946      <description>Verbs 3</description>
947      <year>1980</year>
948
949      <!-- pet2001n Side A: Verbs 3 -->
950      <publisher>Activity Records, Inc.</publisher>
951      <part name="cass" interface="cbm_cass">
952         <dataarea name="cass" size="11407390">
953            <rom name="verbs 3 (1980)(activity records, inc.).wav" size="11407390" crc="0564d783" sha1="41e30fa7b480714f735fb6ad8933cd4a187d227a" offset="0" />
954         </dataarea>
955      </part>
956   </software>
957
958   <software name="eaver4n">
959      <description>Verbs 4</description>
960      <year>1980</year>
961
962      <!-- pet2001n Side A: Verbs 4 -->
963      <publisher>Activity Records, Inc.</publisher>
964      <part name="cass" interface="cbm_cass">
965         <dataarea name="cass" size="12043578">
966            <rom name="verbs 4 (1980)(activity records, inc.).wav" size="12043578" crc="84f2e68f" sha1="ba1a92a613cbaf1db870ee864d097c90c7842fc7" offset="0" />
967         </dataarea>
968      </part>
969   </software>
970
971   <software name="galaxy">
972      <description>GALAXY!</description>
973      <year>1982</year>
974
975      <!-- pet2001n16 Side A: Galaxy! -->
976      <publisher>Microcomputer Games</publisher>
977      <part name="cass" interface="cbm_cass">
978         <dataarea name="cass" size="21505180">
979            <rom name="galaxy! (1982)(avalon hill).wav" size="21505180" crc="d9475975" sha1="56532c57ebf8935212c410eebc7d9192c3c6578c" offset="0" />
980         </dataarea>
981      </part>
982   </software>
983
984
985   <software name="galxyg">
986      <!-- 321006 -->
987      <description>Galaxy Games</description>
988      <year>1978</year>
989
990      <!-- pet20018 Side A: Galaxy Games -->
991      <publisher>Commodore Business Machines, Inc.</publisher>
992      <part name="cass" interface="cbm_cass">
993         <dataarea name="cass" size="10910060">
994            <rom name="galaxy games (1978)(commodore business machines).wav" size="10910060" crc="42d61509" sha1="50111ae9ff9384c07f4abce2bb9630409673c96b" offset="0" />
995         </dataarea>
996      </part>
997   </software>
998
999   <software name="gunsfd">
1000      <description>The Guns of Fort Defiance</description>
1001      <year>1981</year>
1002
1003      <!-- pet2001n16 Side A: Guns of Fort D -->
1004      <publisher>Commodore Business Machines, Inc.</publisher>
1005      <part name="cass" interface="cbm_cass">
1006         <dataarea name="cass" size="23077818">
1007            <rom name="guns of fort defiance (1981)(avalon hill).wav" size="23077818" crc="cfd4e5fc" sha1="7a63c28e46ebd6893d7ea02aef0b9665b6e9dc8f" offset="0" />
1008         </dataarea>
1009      </part>
1010   </software>
1011
1012   <software name="mchess2">
1013      <description>Microchess 2.0</description>
1014      <year>1978</year>
1015
1016      <!-- pet2001n Side A: Microchess 2.0 -->
1017      <publisher>Micro-ware</publisher>
1018      <part name="cass" interface="cbm_cass">
1019         <dataarea name="cass" size="12645082">
1020            <rom name="microchess 2.0 (1978)(micro-ware).wav" size="12645082" crc="8b93c40b" sha1="9863092ba8e435749d98ad69e395c577dfc3cadf" offset="0" />
1021         </dataarea>
1022      </part>
1023   </software>
1024
1025   <software name="midway">
1026      <description>Midway Campaign</description>
1027      <year>1980</year>
1028      <publisher>Microcomputer Games</publisher>
1029
1030      <!-- pet2001n16 Side A: Midway -->
1031      <part name="cass" interface="cbm_cass">
1032         <dataarea name="cass" size="23443232">
1033            <rom name="midway campaign (1980)(avalon hill).wav" size="23443232" crc="7aa50725" sha1="420fadf2b52613860e5496284e97da229d67447e" offset="0" />
1034         </dataarea>
1035      </part>
1036   </software>
1037
1038   <software name="nacr">
1039      <description>North Atlantic Convoy Raider</description>
1040      <year>1980</year>
1041
1042      <!-- pet2001n16 Side A: North Atlant.c.r -->
1043      <publisher>Microcomputer Games</publisher>
1044      <part name="cass" interface="cbm_cass">
1045         <dataarea name="cass" size="12074650">
1046            <rom name="north atlantic convoy raider (1980)(avalon hill).wav" size="12074650" crc="fe5dc36a" sha1="8fb15474102d5cc3ce133f3688adb8ffa15704a7" offset="0" />
1047         </dataarea>
1048      </part>
1049   </software>
1050
1051   <software name="oserev">
1052      <!-- 321001 -->
1053      <description>Osero / Reverse</description>
1054      <year>1978</year>
1055      <publisher>Commodore Business Machines, Inc.</publisher>
1056
1057      <!-- pet20018 Side A: Osero  -->
101058      <part name="cass1" interface="cbm_cass">
11         <dataarea name="cass" size="342602">
12            <rom name="lunar-lander.tap" size="342602" crc="b4a77f48" sha1="28e2d8d4adce42968173996fac92365dcfc67b07" offset="0" />
1059         <dataarea name="cass" size="9777552">
1060            <rom name="osero (1978)(commodore business machines).wav" size="9777552" crc="f52d600f" sha1="57b0e42a4eb3dd7587f5a248bb549be752109f24" offset="0" />
131061         </dataarea>
141062      </part>
1063
1064      <!-- pet20018 Side B: Reverse -->
1065      <part name="cass2" interface="cbm_cass">
1066         <dataarea name="cass" size="5270380">
1067            <rom name="reverse (1978)(commodore business machines).wav" size="5270380" crc="890a53ec" sha1="a2280df2113b2aa250850eadb9247ca1a0d06079" offset="0" />
1068         </dataarea>
1069      </part>
151070   </software>
161071
1072   <software name="checkers">
1073      <description>PET Checkers</description>
1074      <year>1980</year>
1075
1076      <!-- pet20018 Side A: Checkers -->
1077      <publisher>CMS Software Systems</publisher>
1078      <part name="cass" interface="cbm_cass">
1079         <dataarea name="cass" size="10467148">
1080            <rom name="pet checkers (1980)(cms software systems).wav" size="10467148" crc="e3529a46" sha1="3fa8de3a8374e14f0d2b3bd97ff2d8393b3797f0" offset="0" />
1081         </dataarea>
1082      </part>
1083   </software>
1084
1085   <software name="planet">
1086      <description>The Planet Miners</description>
1087      <year>1979</year>
1088
1089      <!-- pet2001n16 Side A: Planet Miners -->
1090      <publisher>Microcomputer Games</publisher>
1091      <part name="cass" interface="cbm_cass">
1092         <dataarea name="cass" size="22746580">
1093            <rom name="planet miners (1979)(avalon hill).wav" size="22746580" crc="0f09b3ac" sha1="6914d25f928fa3f6a1f185744ada904eadea06ac" offset="0" />
1094         </dataarea>
1095      </part>
1096   </software>
1097
1098   <software name="santap">
1099      <description>Santa Paravia and Fiumaccio</description>
1100      <year>1978</year>
1101
1102      <!-- pet2001n16 Side A: Santa Paravia -->
1103      <publisher>Folklife Terminal Club</publisher>
1104      <part name="cass" interface="cbm_cass">
1105         <dataarea name="cass" size="22263674">
1106            <rom name="santa paravia and fiumaccio (1978)(folklife terminal club).wav" size="22263674" crc="4081b629" sha1="a46eac2ef42904d2b9778c697b36e23dbdcecf31" offset="0" />
1107         </dataarea>
1108      </part>
1109   </software>
1110
1111   <software name="spacef">
1112      <!-- 321010 -->
1113      <description>Space Fight</description>
1114      <year>1978</year>
1115      <publisher>Commodore Business Machines, Inc.</publisher>
1116
1117      <!-- pet20018 Side A: Space Fight -->
1118      <part name="cass" interface="cbm_cass">
1119         <dataarea name="cass" size="6234532">
1120            <rom name="space fight (1978)(commodore business machines).wav" size="6234532" crc="38618c0a" sha1="f100e751f41899ed6e157ed7a0d1d7d569676c7f" offset="0" />
1121         </dataarea>
1122      </part>
1123   </software>
1124
1125   <software name="tankt">
1126      <description>Tanktics</description>
1127      <year>1981</year>
1128
1129      <!-- pet2001n16 Side A: Tanktics -->
1130      <publisher>Microcomputer Games</publisher>
1131      <part name="cass" interface="cbm_cass">
1132         <dataarea name="cass" size="22165844">
1133            <rom name="tanktics (1981)(avalon hill).wav" size="22165844" crc="3a332c04" sha1="95bb207109f08e2cf95e12aa50b9d5840fc54656" offset="0" />
1134         </dataarea>
1135      </part>
1136   </software>
1137
1138   <software name="targoff">
1139      <!-- 321002 -->
1140      <description>Target Pong/Off-The-Wall</description>
1141      <year>1978</year>
1142      <publisher>Commodore Business Machines, Inc.</publisher>
1143
1144      <!-- pet20018 Side A: Target Pong -->
1145      <part name="cass1" interface="cbm_cass">
1146         <dataarea name="cass" size="6928406">
1147            <rom name="target pong (1978)(commodore business machines).wav" size="6928406" crc="a9b1fc5b" sha1="449149f0e5312b66b7296535e5b4840b0fd28556" offset="0" />
1148         </dataarea>
1149      </part>
1150
1151      <!-- pet20018 Side B: Off-The-Wall -->
1152      <part name="cass2" interface="cbm_cass">
1153         <dataarea name="cass" size="7515688">
1154            <rom name="off-the-wall (1978)(commodore business machines).wav" size="7515688" crc="afd30b2d" sha1="cc0c4c10fc6ad1dda4012740a20406693c1aa271" offset="0" />
1155         </dataarea>
1156      </part>
1157   </software>
1158
1159   <software name="telng">
1160      <description>Telengard</description>
1161      <year>1982</year>
1162
1163      <!-- pet2001n32 Side A: Telengard -->
1164      <publisher>Microcomputer Games</publisher>
1165      <part name="cass" interface="cbm_cass">
1166         <dataarea name="cass" size="49824646">
1167            <rom name="telengard (1982)(avalon hill).wav" size="49824646" crc="b6a459cb" sha1="1db22543cab974b7efa36134ee608d31511e06a1" offset="0" />
1168         </dataarea>
1169      </part>
1170   </software>
1171
1172   <software name="apshai">
1173      <description>Temple of Apshai</description>
1174      <year>1979</year>
1175      <publisher>Automated Simulations</publisher>
1176
1177      <!-- pet2001n32 Side A: Apshai, level 1.seq, level 2.seq, level 3.seq, level 4.seq -->
1178      <part name="cass1" interface="cbm_cass">
1179         <dataarea name="cass" size="76924190">
1180            <rom name="temple of apshai (1979)(automated simulations).wav" size="76924190" crc="faecb03c" sha1="be38fb082fa74c33f280bda401b215001670d54f" offset="0" />
1181         </dataarea>
1182      </part>
1183   </software>
1184
1185   <software name="ttgames">
1186      <!-- 321004 -->
1187      <description>A Treasure Trove of Games</description>
1188      <year>1978</year>
1189      <publisher>Commodore Business Machines, Inc.</publisher>
1190
1191      <!-- pet20018 Side A: Lunar Lander, Rotate -->
1192      <part name="cass1" interface="cbm_cass">
1193         <dataarea name="cass" size="14443032">
1194            <rom name="lunar lander, rotate (1978)(commodore business machines).wav" size="14443032" crc="9ec18354" sha1="5099624623d83a38bc211be86213d493e672291d" offset="0" />
1195         </dataarea>
1196      </part>
1197
1198      <!-- pet20018 Side B: Wumpus, Tic Tac Toe -->
1199      <part name="cass2" interface="cbm_cass">
1200         <dataarea name="cass" size="16588594">
1201            <rom name="wumpus, tic-tac-toe (1978)(commodore business machines).wav" size="16588594" crc="5345b9be" sha1="2c9ec6f68468b608f68926285f4367b6677e76e0" offset="0" />
1202         </dataarea>
1203      </part>
1204   </software>
1205
171206</softwarelist>
trunk/src/emu/bus/isa/hdc.c
r241527r241528
149149//**************************************************************************
150150
151151const device_type ISA8_HDC = &device_creator<isa8_hdc_device>;
152const device_type ISA8_HDC_EC1841 = &device_creator<isa8_hdc_ec1841_device>;
152153
153154//-------------------------------------------------
154155//  machine_config_additions - device-specific
r241527r241528
190191      device_t(mconfig, ISA8_HDC, "Fixed Disk Controller Card", tag, owner, clock, "hdc", __FILE__),
191192      device_isa8_card_interface(mconfig, *this)
192193{
194   m_type = STANDARD;
193195}
194196
197isa8_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) :
198      device_t(mconfig, type, name, tag, owner, clock, shortname, source),
199      device_isa8_card_interface(mconfig, *this)
200{
201}
202
203isa8_hdc_ec1841_device::isa8_hdc_ec1841_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
204      isa8_hdc_device( mconfig, ISA8_HDC_EC1841, "EC1841 HDC", tag, owner, clock, "hdc_ec1841", __FILE__)
205{
206   m_type = EC1841;
207}
208
195209//-------------------------------------------------
196210//  device_start - device-specific startup
197211//-------------------------------------------------
r241527r241528
750764
751765      *buffer_ptr++ = data;
752766      // XXX ec1841 wants this
753      if (buffer[0] == CMD_SETPARAM && data_cnt == 9) {
767      if (buffer[0] == CMD_SETPARAM && data_cnt == 9 && (m_type == EC1841)) {
754768         status &= ~STA_READY;
755769      } else {
756770         status |= STA_READY;
trunk/src/emu/bus/isa/hdc.h
r241527r241528
2525public:
2626      // construction/destruction
2727      isa8_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
28      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);
2829
2930      // optional information overrides
3031      virtual machine_config_constructor device_mconfig_additions() const;
r241527r241528
8990      void get_drive();
9091      void get_chsn();
9192      int test_ready();
93
94      enum {
95         STANDARD,
96         EC1841
97      };
98      int m_type;
9299public:
93100      void hdc_command();
94101      void pc_hdc_data_w(int data);
r241527r241528
101108};
102109
103110
111class isa8_hdc_ec1841_device : public isa8_hdc_device
112{
113public:
114   isa8_hdc_ec1841_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
115};
116
104117// device type definition
105118extern const device_type ISA8_HDC;
119extern const device_type ISA8_HDC_EC1841;
106120
107121#endif  /* ISA_HDC_H */
trunk/src/emu/bus/isa/xsu_cards.c
r241527r241528
4848   SLOT_INTERFACE("ec1841.0004", ISA8_EC1841_0004)   // BSC-like serial ports + parallel port
4949*/
5050   SLOT_INTERFACE("mda", ISA8_MDA)
51   SLOT_INTERFACE("hdc", ISA8_HDC)
51   SLOT_INTERFACE("hdc", ISA8_HDC_EC1841)
5252   SLOT_INTERFACE("pccom", ISA8_COM)
5353   SLOT_INTERFACE("pclpt", ISA8_LPT)
5454   SLOT_INTERFACE("xtide", ISA8_XTIDE)
trunk/src/emu/cpu/i386/i386.c
r241527r241528
687687   UINT16 segment;
688688   int entry = irq * (PROTECTED_MODE ? 8 : 4);
689689   int SetRPL = 0;
690   m_lock = false;
690691
691692   if( !(PROTECTED_MODE) )
692693   {
r241527r241528
28112812void i386_device::report_invalid_opcode()
28122813{
28132814#ifndef DEBUG_MISSING_OPCODE
2814   logerror("i386: Invalid opcode %02X at %08X\n", m_opcode, m_pc - 1);
2815   logerror("i386: Invalid opcode %02X at %08X %s\n", m_opcode, m_pc - 1, m_lock ? "with lock" : "");
28152816#else
28162817   logerror("i386: Invalid opcode");
28172818   for (int a = 0; a < m_opcode_bytes_length; a++)
r241527r241528
28452846void i386_device::i386_decode_opcode()
28462847{
28472848   m_opcode = FETCH();
2849
2850   if(m_lock && !m_lock_table[0][m_opcode])
2851      return i386_invalid();
2852
28482853   if( m_operand_size )
28492854      (this->*m_opcode_table1_32[m_opcode])();
28502855   else
r241527r241528
28552860void i386_device::i386_decode_two_byte()
28562861{
28572862   m_opcode = FETCH();
2863
2864   if(m_lock && !m_lock_table[1][m_opcode])
2865      return i386_invalid();
2866
28582867   if( m_operand_size )
28592868      (this->*m_opcode_table2_32[m_opcode])();
28602869   else
r241527r241528
31783187   save_item(NAME(m_nmi_masked));
31793188   save_item(NAME(m_nmi_latched));
31803189   save_item(NAME(m_smbase));
3190   save_item(NAME(m_lock));
31813191   machine().save().register_postload(save_prepost_delegate(FUNC(i386_device::i386_postload), this));
31823192
31833193   m_smiact.resolve_safe();
r241527r241528
33923402      m_opcode_table3f2_32[i] = &i386_device::i386_invalid;
33933403      m_opcode_table3f3_16[i] = &i386_device::i386_invalid;
33943404      m_opcode_table3f3_32[i] = &i386_device::i386_invalid;
3405      m_lock_table[0][i] = false;
3406      m_lock_table[1][i] = false;
33953407   }
33963408
33973409   for (i=0; i < sizeof(s_x86_opcode_table)/sizeof(X86_OPCODE); i++)
r241527r241528
34063418            m_opcode_table2_16[op->opcode] = op->handler16;
34073419            m_opcode_table366_32[op->opcode] = op->handler32;
34083420            m_opcode_table366_16[op->opcode] = op->handler16;
3421            m_lock_table[1][op->opcode] = op->lockable;
34093422         }
34103423         else if (op->flags & OP_3BYTE66)
34113424         {
r241527r241528
34263439         {
34273440            m_opcode_table1_32[op->opcode] = op->handler32;
34283441            m_opcode_table1_16[op->opcode] = op->handler16;
3442            m_lock_table[0][op->opcode] = op->lockable;
34293443         }
34303444      }
34313445   }
r241527r241528
35313545   m_smi_latched = false;
35323546   m_nmi_masked = false;
35333547   m_nmi_latched = false;
3548   m_lock = false;
35343549
35353550   m_a20_mask = ~0;
35363551
r241527r241528
37543769            m_ext = 1;
37553770            i386_trap(1,0,0);
37563771         }
3757
3772         if(m_lock && (m_opcode != 0xf0))
3773            m_lock = false;
37583774      }
37593775      catch(UINT64 e)
37603776      {
trunk/src/emu/cpu/i386/i386.h
r241527r241528
138138      UINT32 flags;
139139      i386_op_func handler16;
140140      i386_op_func handler32;
141      bool lockable;
141142   };
142143   static const X86_OPCODE s_x86_opcode_table[];
143144
r241527r241528
244245   i386_op_func m_opcode_table3f3_16[256];
245246   i386_op_func m_opcode_table3f3_32[256];
246247
248   bool m_lock_table[2][256];
249
247250   UINT8 *m_cycle_table_pm;
248251   UINT8 *m_cycle_table_rm;
249252
r241527r241528
256259   bool m_nmi_latched;
257260   UINT32 m_smbase;
258261   devcb_write_line m_smiact;
262   bool m_lock;
259263
260264   // bytes in current opcode, debug only
261265   UINT8 m_opcode_bytes[16];
trunk/src/emu/cpu/i386/i386ops.h
r241527r241528
1818const i386_device::X86_OPCODE i386_device::s_x86_opcode_table[] =
1919{
2020//  Opcode      Flags                       16-bit handler                  32-bit handler
21   { 0x00,     OP_I386,                    &i386_device::i386_add_rm8_r8,             &i386_device::i386_add_rm8_r8,         },
22   { 0x01,     OP_I386,                    &i386_device::i386_add_rm16_r16,           &i386_device::i386_add_rm32_r32,       },
23   { 0x02,     OP_I386,                    &i386_device::i386_add_r8_rm8,             &i386_device::i386_add_r8_rm8,         },
24   { 0x03,     OP_I386,                    &i386_device::i386_add_r16_rm16,           &i386_device::i386_add_r32_rm32,       },
25   { 0x04,     OP_I386,                    &i386_device::i386_add_al_i8,              &i386_device::i386_add_al_i8,          },
26   { 0x05,     OP_I386,                    &i386_device::i386_add_ax_i16,             &i386_device::i386_add_eax_i32,        },
27   { 0x06,     OP_I386,                    &i386_device::i386_push_es16,              &i386_device::i386_push_es32,          },
28   { 0x07,     OP_I386,                    &i386_device::i386_pop_es16,               &i386_device::i386_pop_es32,           },
29   { 0x08,     OP_I386,                    &i386_device::i386_or_rm8_r8,              &i386_device::i386_or_rm8_r8,          },
30   { 0x09,     OP_I386,                    &i386_device::i386_or_rm16_r16,            &i386_device::i386_or_rm32_r32,        },
31   { 0x0A,     OP_I386,                    &i386_device::i386_or_r8_rm8,              &i386_device::i386_or_r8_rm8,          },
32   { 0x0B,     OP_I386,                    &i386_device::i386_or_r16_rm16,            &i386_device::i386_or_r32_rm32,        },
33   { 0x0C,     OP_I386,                    &i386_device::i386_or_al_i8,               &i386_device::i386_or_al_i8,           },
34   { 0x0D,     OP_I386,                    &i386_device::i386_or_ax_i16,              &i386_device::i386_or_eax_i32,         },
35   { 0x0E,     OP_I386,                    &i386_device::i386_push_cs16,              &i386_device::i386_push_cs32,          },
36   { 0x0F,     OP_I386,                    &i386_device::i386_decode_two_byte,        &i386_device::i386_decode_two_byte,    },
37   { 0x10,     OP_I386,                    &i386_device::i386_adc_rm8_r8,             &i386_device::i386_adc_rm8_r8,         },
38   { 0x11,     OP_I386,                    &i386_device::i386_adc_rm16_r16,           &i386_device::i386_adc_rm32_r32,       },
39   { 0x12,     OP_I386,                    &i386_device::i386_adc_r8_rm8,             &i386_device::i386_adc_r8_rm8,         },
40   { 0x13,     OP_I386,                    &i386_device::i386_adc_r16_rm16,           &i386_device::i386_adc_r32_rm32,       },
41   { 0x14,     OP_I386,                    &i386_device::i386_adc_al_i8,              &i386_device::i386_adc_al_i8,          },
42   { 0x15,     OP_I386,                    &i386_device::i386_adc_ax_i16,             &i386_device::i386_adc_eax_i32,        },
43   { 0x16,     OP_I386,                    &i386_device::i386_push_ss16,              &i386_device::i386_push_ss32,          },
44   { 0x17,     OP_I386,                    &i386_device::i386_pop_ss16,               &i386_device::i386_pop_ss32,           },
45   { 0x18,     OP_I386,                    &i386_device::i386_sbb_rm8_r8,             &i386_device::i386_sbb_rm8_r8,         },
46   { 0x19,     OP_I386,                    &i386_device::i386_sbb_rm16_r16,           &i386_device::i386_sbb_rm32_r32,       },
47   { 0x1A,     OP_I386,                    &i386_device::i386_sbb_r8_rm8,             &i386_device::i386_sbb_r8_rm8,         },
48   { 0x1B,     OP_I386,                    &i386_device::i386_sbb_r16_rm16,           &i386_device::i386_sbb_r32_rm32,       },
49   { 0x1C,     OP_I386,                    &i386_device::i386_sbb_al_i8,              &i386_device::i386_sbb_al_i8,          },
50   { 0x1D,     OP_I386,                    &i386_device::i386_sbb_ax_i16,             &i386_device::i386_sbb_eax_i32,        },
51   { 0x1E,     OP_I386,                    &i386_device::i386_push_ds16,              &i386_device::i386_push_ds32,          },
52   { 0x1F,     OP_I386,                    &i386_device::i386_pop_ds16,               &i386_device::i386_pop_ds32,           },
53   { 0x20,     OP_I386,                    &i386_device::i386_and_rm8_r8,             &i386_device::i386_and_rm8_r8,         },
54   { 0x21,     OP_I386,                    &i386_device::i386_and_rm16_r16,           &i386_device::i386_and_rm32_r32,       },
55   { 0x22,     OP_I386,                    &i386_device::i386_and_r8_rm8,             &i386_device::i386_and_r8_rm8,         },
56   { 0x23,     OP_I386,                    &i386_device::i386_and_r16_rm16,           &i386_device::i386_and_r32_rm32,       },
57   { 0x24,     OP_I386,                    &i386_device::i386_and_al_i8,              &i386_device::i386_and_al_i8,          },
58   { 0x25,     OP_I386,                    &i386_device::i386_and_ax_i16,             &i386_device::i386_and_eax_i32,        },
59   { 0x26,     OP_I386,                    &i386_device::i386_segment_ES,             &i386_device::i386_segment_ES,         },
60   { 0x27,     OP_I386,                    &i386_device::i386_daa,                    &i386_device::i386_daa,                },
61   { 0x28,     OP_I386,                    &i386_device::i386_sub_rm8_r8,             &i386_device::i386_sub_rm8_r8,         },
62   { 0x29,     OP_I386,                    &i386_device::i386_sub_rm16_r16,           &i386_device::i386_sub_rm32_r32,       },
63   { 0x2A,     OP_I386,                    &i386_device::i386_sub_r8_rm8,             &i386_device::i386_sub_r8_rm8,         },
64   { 0x2B,     OP_I386,                    &i386_device::i386_sub_r16_rm16,           &i386_device::i386_sub_r32_rm32,       },
65   { 0x2C,     OP_I386,                    &i386_device::i386_sub_al_i8,              &i386_device::i386_sub_al_i8,          },
66   { 0x2D,     OP_I386,                    &i386_device::i386_sub_ax_i16,             &i386_device::i386_sub_eax_i32,        },
67   { 0x2E,     OP_I386,                    &i386_device::i386_segment_CS,             &i386_device::i386_segment_CS,         },
68   { 0x2F,     OP_I386,                    &i386_device::i386_das,                    &i386_device::i386_das,                },
69   { 0x30,     OP_I386,                    &i386_device::i386_xor_rm8_r8,             &i386_device::i386_xor_rm8_r8,         },
70   { 0x31,     OP_I386,                    &i386_device::i386_xor_rm16_r16,           &i386_device::i386_xor_rm32_r32,       },
71   { 0x32,     OP_I386,                    &i386_device::i386_xor_r8_rm8,             &i386_device::i386_xor_r8_rm8,         },
72   { 0x33,     OP_I386,                    &i386_device::i386_xor_r16_rm16,           &i386_device::i386_xor_r32_rm32,       },
73   { 0x34,     OP_I386,                    &i386_device::i386_xor_al_i8,              &i386_device::i386_xor_al_i8,          },
74   { 0x35,     OP_I386,                    &i386_device::i386_xor_ax_i16,             &i386_device::i386_xor_eax_i32,        },
75   { 0x36,     OP_I386,                    &i386_device::i386_segment_SS,             &i386_device::i386_segment_SS,         },
76   { 0x37,     OP_I386,                    &i386_device::i386_aaa,                    &i386_device::i386_aaa,                },
77   { 0x38,     OP_I386,                    &i386_device::i386_cmp_rm8_r8,             &i386_device::i386_cmp_rm8_r8,         },
78   { 0x39,     OP_I386,                    &i386_device::i386_cmp_rm16_r16,           &i386_device::i386_cmp_rm32_r32,       },
79   { 0x3A,     OP_I386,                    &i386_device::i386_cmp_r8_rm8,             &i386_device::i386_cmp_r8_rm8,         },
80   { 0x3B,     OP_I386,                    &i386_device::i386_cmp_r16_rm16,           &i386_device::i386_cmp_r32_rm32,       },
81   { 0x3C,     OP_I386,                    &i386_device::i386_cmp_al_i8,              &i386_device::i386_cmp_al_i8,          },
82   { 0x3D,     OP_I386,                    &i386_device::i386_cmp_ax_i16,             &i386_device::i386_cmp_eax_i32,        },
83   { 0x3E,     OP_I386,                    &i386_device::i386_segment_DS,             &i386_device::i386_segment_DS,         },
84   { 0x3F,     OP_I386,                    &i386_device::i386_aas,                    &i386_device::i386_aas,                },
85   { 0x40,     OP_I386,                    &i386_device::i386_inc_ax,                 &i386_device::i386_inc_eax,            },
86   { 0x41,     OP_I386,                    &i386_device::i386_inc_cx,                 &i386_device::i386_inc_ecx,            },
87   { 0x42,     OP_I386,                    &i386_device::i386_inc_dx,                 &i386_device::i386_inc_edx,            },
88   { 0x43,     OP_I386,                    &i386_device::i386_inc_bx,                 &i386_device::i386_inc_ebx,            },
89   { 0x44,     OP_I386,                    &i386_device::i386_inc_sp,                 &i386_device::i386_inc_esp,            },
90   { 0x45,     OP_I386,                    &i386_device::i386_inc_bp,                 &i386_device::i386_inc_ebp,            },
91   { 0x46,     OP_I386,                    &i386_device::i386_inc_si,                 &i386_device::i386_inc_esi,            },
92   { 0x47,     OP_I386,                    &i386_device::i386_inc_di,                 &i386_device::i386_inc_edi,            },
93   { 0x48,     OP_I386,                    &i386_device::i386_dec_ax,                 &i386_device::i386_dec_eax,            },
94   { 0x49,     OP_I386,                    &i386_device::i386_dec_cx,                 &i386_device::i386_dec_ecx,            },
95   { 0x4A,     OP_I386,                    &i386_device::i386_dec_dx,                 &i386_device::i386_dec_edx,            },
96   { 0x4B,     OP_I386,                    &i386_device::i386_dec_bx,                 &i386_device::i386_dec_ebx,            },
97   { 0x4C,     OP_I386,                    &i386_device::i386_dec_sp,                 &i386_device::i386_dec_esp,            },
98   { 0x4D,     OP_I386,                    &i386_device::i386_dec_bp,                 &i386_device::i386_dec_ebp,            },
99   { 0x4E,     OP_I386,                    &i386_device::i386_dec_si,                 &i386_device::i386_dec_esi,            },
100   { 0x4F,     OP_I386,                    &i386_device::i386_dec_di,                 &i386_device::i386_dec_edi,            },
101   { 0x50,     OP_I386,                    &i386_device::i386_push_ax,                &i386_device::i386_push_eax,           },
102   { 0x51,     OP_I386,                    &i386_device::i386_push_cx,                &i386_device::i386_push_ecx,           },
103   { 0x52,     OP_I386,                    &i386_device::i386_push_dx,                &i386_device::i386_push_edx,           },
104   { 0x53,     OP_I386,                    &i386_device::i386_push_bx,                &i386_device::i386_push_ebx,           },
105   { 0x54,     OP_I386,                    &i386_device::i386_push_sp,                &i386_device::i386_push_esp,           },
106   { 0x55,     OP_I386,                    &i386_device::i386_push_bp,                &i386_device::i386_push_ebp,           },
107   { 0x56,     OP_I386,                    &i386_device::i386_push_si,                &i386_device::i386_push_esi,           },
108   { 0x57,     OP_I386,                    &i386_device::i386_push_di,                &i386_device::i386_push_edi,           },
109   { 0x58,     OP_I386,                    &i386_device::i386_pop_ax,                 &i386_device::i386_pop_eax,            },
110   { 0x59,     OP_I386,                    &i386_device::i386_pop_cx,                 &i386_device::i386_pop_ecx,            },
111   { 0x5A,     OP_I386,                    &i386_device::i386_pop_dx,                 &i386_device::i386_pop_edx,            },
112   { 0x5B,     OP_I386,                    &i386_device::i386_pop_bx,                 &i386_device::i386_pop_ebx,            },
113   { 0x5C,     OP_I386,                    &i386_device::i386_pop_sp,                 &i386_device::i386_pop_esp,            },
114   { 0x5D,     OP_I386,                    &i386_device::i386_pop_bp,                 &i386_device::i386_pop_ebp,            },
115   { 0x5E,     OP_I386,                    &i386_device::i386_pop_si,                 &i386_device::i386_pop_esi,            },
116   { 0x5F,     OP_I386,                    &i386_device::i386_pop_di,                 &i386_device::i386_pop_edi,            },
117   { 0x60,     OP_I386,                    &i386_device::i386_pusha,                  &i386_device::i386_pushad,             },
118   { 0x61,     OP_I386,                    &i386_device::i386_popa,                   &i386_device::i386_popad,              },
119   { 0x62,     OP_I386,                    &i386_device::i386_bound_r16_m16_m16,      &i386_device::i386_bound_r32_m32_m32,  },
120   { 0x63,     OP_I386,                    &i386_device::i386_arpl,                   &i386_device::i386_arpl,               },
121   { 0x64,     OP_I386,                    &i386_device::i386_segment_FS,             &i386_device::i386_segment_FS,         },
122   { 0x65,     OP_I386,                    &i386_device::i386_segment_GS,             &i386_device::i386_segment_GS,         },
123   { 0x66,     OP_I386,                    &i386_device::i386_operand_size,           &i386_device::i386_operand_size,       },
124   { 0x67,     OP_I386,                    &i386_device::i386_address_size,           &i386_device::i386_address_size,       },
125   { 0x68,     OP_I386,                    &i386_device::i386_push_i16,               &i386_device::i386_push_i32,           },
126   { 0x69,     OP_I386,                    &i386_device::i386_imul_r16_rm16_i16,      &i386_device::i386_imul_r32_rm32_i32,  },
127   { 0x6A,     OP_I386,                    &i386_device::i386_push_i8,                &i386_device::i386_push_i8,            },
128   { 0x6B,     OP_I386,                    &i386_device::i386_imul_r16_rm16_i8,       &i386_device::i386_imul_r32_rm32_i8,   },
129   { 0x6C,     OP_I386,                    &i386_device::i386_insb,                   &i386_device::i386_insb,               },
130   { 0x6D,     OP_I386,                    &i386_device::i386_insw,                   &i386_device::i386_insd,               },
131   { 0x6E,     OP_I386,                    &i386_device::i386_outsb,                  &i386_device::i386_outsb,              },
132   { 0x6F,     OP_I386,                    &i386_device::i386_outsw,                  &i386_device::i386_outsd,              },
133   { 0x70,     OP_I386,                    &i386_device::i386_jo_rel8,                &i386_device::i386_jo_rel8,            },
134   { 0x71,     OP_I386,                    &i386_device::i386_jno_rel8,               &i386_device::i386_jno_rel8,           },
135   { 0x72,     OP_I386,                    &i386_device::i386_jc_rel8,                &i386_device::i386_jc_rel8,            },
136   { 0x73,     OP_I386,                    &i386_device::i386_jnc_rel8,               &i386_device::i386_jnc_rel8,           },
137   { 0x74,     OP_I386,                    &i386_device::i386_jz_rel8,                &i386_device::i386_jz_rel8,            },
138   { 0x75,     OP_I386,                    &i386_device::i386_jnz_rel8,               &i386_device::i386_jnz_rel8,           },
139   { 0x76,     OP_I386,                    &i386_device::i386_jbe_rel8,               &i386_device::i386_jbe_rel8,           },
140   { 0x77,     OP_I386,                    &i386_device::i386_ja_rel8,                &i386_device::i386_ja_rel8,            },
141   { 0x78,     OP_I386,                    &i386_device::i386_js_rel8,                &i386_device::i386_js_rel8,            },
142   { 0x79,     OP_I386,                    &i386_device::i386_jns_rel8,               &i386_device::i386_jns_rel8,           },
143   { 0x7A,     OP_I386,                    &i386_device::i386_jp_rel8,                &i386_device::i386_jp_rel8,            },
144   { 0x7B,     OP_I386,                    &i386_device::i386_jnp_rel8,               &i386_device::i386_jnp_rel8,           },
145   { 0x7C,     OP_I386,                    &i386_device::i386_jl_rel8,                &i386_device::i386_jl_rel8,            },
146   { 0x7D,     OP_I386,                    &i386_device::i386_jge_rel8,               &i386_device::i386_jge_rel8,           },
147   { 0x7E,     OP_I386,                    &i386_device::i386_jle_rel8,               &i386_device::i386_jle_rel8,           },
148   { 0x7F,     OP_I386,                    &i386_device::i386_jg_rel8,                &i386_device::i386_jg_rel8,            },
149   { 0x80,     OP_I386,                    &i386_device::i386_group80_8,              &i386_device::i386_group80_8,          },
150   { 0x81,     OP_I386,                    &i386_device::i386_group81_16,             &i386_device::i386_group81_32,         },
151   { 0x82,     OP_I386,                    &i386_device::i386_group80_8,              &i386_device::i386_group80_8,          },
152   { 0x83,     OP_I386,                    &i386_device::i386_group83_16,             &i386_device::i386_group83_32,         },
153   { 0x84,     OP_I386,                    &i386_device::i386_test_rm8_r8,            &i386_device::i386_test_rm8_r8,        },
154   { 0x85,     OP_I386,                    &i386_device::i386_test_rm16_r16,          &i386_device::i386_test_rm32_r32,      },
155   { 0x86,     OP_I386,                    &i386_device::i386_xchg_r8_rm8,            &i386_device::i386_xchg_r8_rm8,        },
156   { 0x87,     OP_I386,                    &i386_device::i386_xchg_r16_rm16,          &i386_device::i386_xchg_r32_rm32,      },
157   { 0x88,     OP_I386,                    &i386_device::i386_mov_rm8_r8,             &i386_device::i386_mov_rm8_r8,         },
158   { 0x89,     OP_I386,                    &i386_device::i386_mov_rm16_r16,           &i386_device::i386_mov_rm32_r32,       },
159   { 0x8A,     OP_I386,                    &i386_device::i386_mov_r8_rm8,             &i386_device::i386_mov_r8_rm8,         },
160   { 0x8B,     OP_I386,                    &i386_device::i386_mov_r16_rm16,           &i386_device::i386_mov_r32_rm32,       },
161   { 0x8C,     OP_I386,                    &i386_device::i386_mov_rm16_sreg,          &i386_device::i386_mov_rm16_sreg,      },
162   { 0x8D,     OP_I386,                    &i386_device::i386_lea16,                  &i386_device::i386_lea32,              },
163   { 0x8E,     OP_I386,                    &i386_device::i386_mov_sreg_rm16,          &i386_device::i386_mov_sreg_rm16,      },
164   { 0x8F,     OP_I386,                    &i386_device::i386_pop_rm16,               &i386_device::i386_pop_rm32,           },
165   { 0x90,     OP_I386,                    &i386_device::i386_nop,                    &i386_device::i386_nop,                },
166   { 0x91,     OP_I386,                    &i386_device::i386_xchg_ax_cx,             &i386_device::i386_xchg_eax_ecx,       },
167   { 0x92,     OP_I386,                    &i386_device::i386_xchg_ax_dx,             &i386_device::i386_xchg_eax_edx,       },
168   { 0x93,     OP_I386,                    &i386_device::i386_xchg_ax_bx,             &i386_device::i386_xchg_eax_ebx,       },
169   { 0x94,     OP_I386,                    &i386_device::i386_xchg_ax_sp,             &i386_device::i386_xchg_eax_esp,       },
170   { 0x95,     OP_I386,                    &i386_device::i386_xchg_ax_bp,             &i386_device::i386_xchg_eax_ebp,       },
171   { 0x96,     OP_I386,                    &i386_device::i386_xchg_ax_si,             &i386_device::i386_xchg_eax_esi,       },
172   { 0x97,     OP_I386,                    &i386_device::i386_xchg_ax_di,             &i386_device::i386_xchg_eax_edi,       },
173   { 0x98,     OP_I386,                    &i386_device::i386_cbw,                    &i386_device::i386_cwde,               },
174   { 0x99,     OP_I386,                    &i386_device::i386_cwd,                    &i386_device::i386_cdq,                },
175   { 0x9A,     OP_I386,                    &i386_device::i386_call_abs16,             &i386_device::i386_call_abs32,         },
176   { 0x9B,     OP_I386,                    &i386_device::i386_wait,                   &i386_device::i386_wait,               },
177   { 0x9C,     OP_I386,                    &i386_device::i386_pushf,                  &i386_device::i386_pushfd,             },
178   { 0x9D,     OP_I386,                    &i386_device::i386_popf,                   &i386_device::i386_popfd,              },
179   { 0x9E,     OP_I386,                    &i386_device::i386_sahf,                   &i386_device::i386_sahf,               },
180   { 0x9F,     OP_I386,                    &i386_device::i386_lahf,                   &i386_device::i386_lahf,               },
181   { 0xA0,     OP_I386,                    &i386_device::i386_mov_al_m8,              &i386_device::i386_mov_al_m8,          },
182   { 0xA1,     OP_I386,                    &i386_device::i386_mov_ax_m16,             &i386_device::i386_mov_eax_m32,        },
183   { 0xA2,     OP_I386,                    &i386_device::i386_mov_m8_al,              &i386_device::i386_mov_m8_al,          },
184   { 0xA3,     OP_I386,                    &i386_device::i386_mov_m16_ax,             &i386_device::i386_mov_m32_eax,        },
185   { 0xA4,     OP_I386,                    &i386_device::i386_movsb,                  &i386_device::i386_movsb,              },
186   { 0xA5,     OP_I386,                    &i386_device::i386_movsw,                  &i386_device::i386_movsd,              },
187   { 0xA6,     OP_I386,                    &i386_device::i386_cmpsb,                  &i386_device::i386_cmpsb,              },
188   { 0xA7,     OP_I386,                    &i386_device::i386_cmpsw,                  &i386_device::i386_cmpsd,              },
189   { 0xA8,     OP_I386,                    &i386_device::i386_test_al_i8,             &i386_device::i386_test_al_i8,         },
190   { 0xA9,     OP_I386,                    &i386_device::i386_test_ax_i16,            &i386_device::i386_test_eax_i32,       },
191   { 0xAA,     OP_I386,                    &i386_device::i386_stosb,                  &i386_device::i386_stosb,              },
192   { 0xAB,     OP_I386,                    &i386_device::i386_stosw,                  &i386_device::i386_stosd,              },
193   { 0xAC,     OP_I386,                    &i386_device::i386_lodsb,                  &i386_device::i386_lodsb,              },
194   { 0xAD,     OP_I386,                    &i386_device::i386_lodsw,                  &i386_device::i386_lodsd,              },
195   { 0xAE,     OP_I386,                    &i386_device::i386_scasb,                  &i386_device::i386_scasb,              },
196   { 0xAF,     OP_I386,                    &i386_device::i386_scasw,                  &i386_device::i386_scasd,              },
197   { 0xB0,     OP_I386,                    &i386_device::i386_mov_al_i8,              &i386_device::i386_mov_al_i8,          },
198   { 0xB1,     OP_I386,                    &i386_device::i386_mov_cl_i8,              &i386_device::i386_mov_cl_i8,          },
199   { 0xB2,     OP_I386,                    &i386_device::i386_mov_dl_i8,              &i386_device::i386_mov_dl_i8,          },
200   { 0xB3,     OP_I386,                    &i386_device::i386_mov_bl_i8,              &i386_device::i386_mov_bl_i8,          },
201   { 0xB4,     OP_I386,                    &i386_device::i386_mov_ah_i8,              &i386_device::i386_mov_ah_i8,          },
202   { 0xB5,     OP_I386,                    &i386_device::i386_mov_ch_i8,              &i386_device::i386_mov_ch_i8,          },
203   { 0xB6,     OP_I386,                    &i386_device::i386_mov_dh_i8,              &i386_device::i386_mov_dh_i8,          },
204   { 0xB7,     OP_I386,                    &i386_device::i386_mov_bh_i8,              &i386_device::i386_mov_bh_i8,          },
205   { 0xB8,     OP_I386,                    &i386_device::i386_mov_ax_i16,             &i386_device::i386_mov_eax_i32,        },
206   { 0xB9,     OP_I386,                    &i386_device::i386_mov_cx_i16,             &i386_device::i386_mov_ecx_i32,        },
207   { 0xBA,     OP_I386,                    &i386_device::i386_mov_dx_i16,             &i386_device::i386_mov_edx_i32,        },
208   { 0xBB,     OP_I386,                    &i386_device::i386_mov_bx_i16,             &i386_device::i386_mov_ebx_i32,        },
209   { 0xBC,     OP_I386,                    &i386_device::i386_mov_sp_i16,             &i386_device::i386_mov_esp_i32,        },
210   { 0xBD,     OP_I386,                    &i386_device::i386_mov_bp_i16,             &i386_device::i386_mov_ebp_i32,        },
211   { 0xBE,     OP_I386,                    &i386_device::i386_mov_si_i16,             &i386_device::i386_mov_esi_i32,        },
212   { 0xBF,     OP_I386,                    &i386_device::i386_mov_di_i16,             &i386_device::i386_mov_edi_i32,        },
213   { 0xC0,     OP_I386,                    &i386_device::i386_groupC0_8,              &i386_device::i386_groupC0_8,          },
214   { 0xC1,     OP_I386,                    &i386_device::i386_groupC1_16,             &i386_device::i386_groupC1_32,         },
215   { 0xC2,     OP_I386,                    &i386_device::i386_ret_near16_i16,         &i386_device::i386_ret_near32_i16,     },
216   { 0xC3,     OP_I386,                    &i386_device::i386_ret_near16,             &i386_device::i386_ret_near32,         },
217   { 0xC4,     OP_I386,                    &i386_device::i386_les16,                  &i386_device::i386_les32,              },
218   { 0xC5,     OP_I386,                    &i386_device::i386_lds16,                  &i386_device::i386_lds32,              },
219   { 0xC6,     OP_I386,                    &i386_device::i386_mov_rm8_i8,             &i386_device::i386_mov_rm8_i8,         },
220   { 0xC7,     OP_I386,                    &i386_device::i386_mov_rm16_i16,           &i386_device::i386_mov_rm32_i32,       },
221   { 0xC8,     OP_I386,                    &i386_device::i386_enter16,                &i386_device::i386_enter32,            },
222   { 0xC9,     OP_I386,                    &i386_device::i386_leave16,                &i386_device::i386_leave32,            },
223   { 0xCA,     OP_I386,                    &i386_device::i386_retf_i16,               &i386_device::i386_retf_i32,           },
224   { 0xCB,     OP_I386,                    &i386_device::i386_retf16,                 &i386_device::i386_retf32,             },
225   { 0xCC,     OP_I386,                    &i386_device::i386_int3,                   &i386_device::i386_int3,               },
226   { 0xCD,     OP_I386,                    &i386_device::i386_int,                    &i386_device::i386_int,                },
227   { 0xCE,     OP_I386,                    &i386_device::i386_into,                   &i386_device::i386_into,               },
228   { 0xCF,     OP_I386,                    &i386_device::i386_iret16,                 &i386_device::i386_iret32,             },
229   { 0xD0,     OP_I386,                    &i386_device::i386_groupD0_8,              &i386_device::i386_groupD0_8,          },
230   { 0xD1,     OP_I386,                    &i386_device::i386_groupD1_16,             &i386_device::i386_groupD1_32,         },
231   { 0xD2,     OP_I386,                    &i386_device::i386_groupD2_8,              &i386_device::i386_groupD2_8,          },
232   { 0xD3,     OP_I386,                    &i386_device::i386_groupD3_16,             &i386_device::i386_groupD3_32,         },
233   { 0xD4,     OP_I386,                    &i386_device::i386_aam,                    &i386_device::i386_aam,                },
234   { 0xD5,     OP_I386,                    &i386_device::i386_aad,                    &i386_device::i386_aad,                },
235   { 0xD6,     OP_I386,                    &i386_device::i386_setalc,                 &i386_device::i386_setalc,             },
236   { 0xD7,     OP_I386,                    &i386_device::i386_xlat,                   &i386_device::i386_xlat,               },
237   { 0xD8,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             },
238   { 0xD9,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             },
239   { 0xDA,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             },
240   { 0xDB,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             },
241   { 0xDC,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             },
242   { 0xDD,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             },
243   { 0xDE,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             },
244   { 0xDF,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             },
245   { 0xD8,     OP_FPU,                     &i386_device::i386_x87_group_d8,           &i386_device::i386_x87_group_d8,       },
246   { 0xD9,     OP_FPU,                     &i386_device::i386_x87_group_d9,           &i386_device::i386_x87_group_d9,       },
247   { 0xDA,     OP_FPU,                     &i386_device::i386_x87_group_da,           &i386_device::i386_x87_group_da,       },
248   { 0xDB,     OP_FPU,                     &i386_device::i386_x87_group_db,           &i386_device::i386_x87_group_db,       },
249   { 0xDC,     OP_FPU,                     &i386_device::i386_x87_group_dc,           &i386_device::i386_x87_group_dc,       },
250   { 0xDD,     OP_FPU,                     &i386_device::i386_x87_group_dd,           &i386_device::i386_x87_group_dd,       },
251   { 0xDE,     OP_FPU,                     &i386_device::i386_x87_group_de,           &i386_device::i386_x87_group_de,       },
252   { 0xDF,     OP_FPU,                     &i386_device::i386_x87_group_df,           &i386_device::i386_x87_group_df,       },
253   { 0xE0,     OP_I386,                    &i386_device::i386_loopne16,               &i386_device::i386_loopne32,           },
254   { 0xE1,     OP_I386,                    &i386_device::i386_loopz16,                &i386_device::i386_loopz32,            },
255   { 0xE2,     OP_I386,                    &i386_device::i386_loop16,                 &i386_device::i386_loop32,             },
256   { 0xE3,     OP_I386,                    &i386_device::i386_jcxz16,                 &i386_device::i386_jcxz32,             },
257   { 0xE4,     OP_I386,                    &i386_device::i386_in_al_i8,               &i386_device::i386_in_al_i8,           },
258   { 0xE5,     OP_I386,                    &i386_device::i386_in_ax_i8,               &i386_device::i386_in_eax_i8,          },
259   { 0xE6,     OP_I386,                    &i386_device::i386_out_al_i8,              &i386_device::i386_out_al_i8,          },
260   { 0xE7,     OP_I386,                    &i386_device::i386_out_ax_i8,              &i386_device::i386_out_eax_i8,         },
261   { 0xE8,     OP_I386,                    &i386_device::i386_call_rel16,             &i386_device::i386_call_rel32,         },
262   { 0xE9,     OP_I386,                    &i386_device::i386_jmp_rel16,              &i386_device::i386_jmp_rel32,          },
263   { 0xEA,     OP_I386,                    &i386_device::i386_jmp_abs16,              &i386_device::i386_jmp_abs32,          },
264   { 0xEB,     OP_I386,                    &i386_device::i386_jmp_rel8,               &i386_device::i386_jmp_rel8,           },
265   { 0xEC,     OP_I386,                    &i386_device::i386_in_al_dx,               &i386_device::i386_in_al_dx,           },
266   { 0xED,     OP_I386,                    &i386_device::i386_in_ax_dx,               &i386_device::i386_in_eax_dx,          },
267   { 0xEE,     OP_I386,                    &i386_device::i386_out_al_dx,              &i386_device::i386_out_al_dx,          },
268   { 0xEF,     OP_I386,                    &i386_device::i386_out_ax_dx,              &i386_device::i386_out_eax_dx,         },
269   { 0xF0,     OP_I386,                    &i386_device::i386_lock,                   &i386_device::i386_lock,               },
270   { 0xF1,     OP_I386,                    &i386_device::i386_invalid,                &i386_device::i386_invalid,            },
271   { 0xF2,     OP_I386,                    &i386_device::i386_repne,                  &i386_device::i386_repne,              },
272   { 0xF3,     OP_I386,                    &i386_device::i386_rep,                    &i386_device::i386_rep,                },
273   { 0xF4,     OP_I386,                    &i386_device::i386_hlt,                    &i386_device::i386_hlt,                },
274   { 0xF5,     OP_I386,                    &i386_device::i386_cmc,                    &i386_device::i386_cmc,                },
275   { 0xF6,     OP_I386,                    &i386_device::i386_groupF6_8,              &i386_device::i386_groupF6_8,          },
276   { 0xF7,     OP_I386,                    &i386_device::i386_groupF7_16,             &i386_device::i386_groupF7_32,         },
277   { 0xF8,     OP_I386,                    &i386_device::i386_clc,                    &i386_device::i386_clc,                },
278   { 0xF9,     OP_I386,                    &i386_device::i386_stc,                    &i386_device::i386_stc,                },
279   { 0xFA,     OP_I386,                    &i386_device::i386_cli,                    &i386_device::i386_cli,                },
280   { 0xFB,     OP_I386,                    &i386_device::i386_sti,                    &i386_device::i386_sti,                },
281   { 0xFC,     OP_I386,                    &i386_device::i386_cld,                    &i386_device::i386_cld,                },
282   { 0xFD,     OP_I386,                    &i386_device::i386_std,                    &i386_device::i386_std,                },
283   { 0xFE,     OP_I386,                    &i386_device::i386_groupFE_8,              &i386_device::i386_groupFE_8,          },
284   { 0xFF,     OP_I386,                    &i386_device::i386_groupFF_16,             &i386_device::i386_groupFF_32,         },
21   { 0x00,     OP_I386,                    &i386_device::i386_add_rm8_r8,             &i386_device::i386_add_rm8_r8,         true },
22   { 0x01,     OP_I386,                    &i386_device::i386_add_rm16_r16,           &i386_device::i386_add_rm32_r32,       true },
23   { 0x02,     OP_I386,                    &i386_device::i386_add_r8_rm8,             &i386_device::i386_add_r8_rm8,         false},
24   { 0x03,     OP_I386,                    &i386_device::i386_add_r16_rm16,           &i386_device::i386_add_r32_rm32,       false},
25   { 0x04,     OP_I386,                    &i386_device::i386_add_al_i8,              &i386_device::i386_add_al_i8,          false},
26   { 0x05,     OP_I386,                    &i386_device::i386_add_ax_i16,             &i386_device::i386_add_eax_i32,        false},
27   { 0x06,     OP_I386,                    &i386_device::i386_push_es16,              &i386_device::i386_push_es32,          false},
28   { 0x07,     OP_I386,                    &i386_device::i386_pop_es16,               &i386_device::i386_pop_es32,           false},
29   { 0x08,     OP_I386,                    &i386_device::i386_or_rm8_r8,              &i386_device::i386_or_rm8_r8,          true },
30   { 0x09,     OP_I386,                    &i386_device::i386_or_rm16_r16,            &i386_device::i386_or_rm32_r32,        true },
31   { 0x0A,     OP_I386,                    &i386_device::i386_or_r8_rm8,              &i386_device::i386_or_r8_rm8,          false},
32   { 0x0B,     OP_I386,                    &i386_device::i386_or_r16_rm16,            &i386_device::i386_or_r32_rm32,        false},
33   { 0x0C,     OP_I386,                    &i386_device::i386_or_al_i8,               &i386_device::i386_or_al_i8,           false},
34   { 0x0D,     OP_I386,                    &i386_device::i386_or_ax_i16,              &i386_device::i386_or_eax_i32,         false},
35   { 0x0E,     OP_I386,                    &i386_device::i386_push_cs16,              &i386_device::i386_push_cs32,          false},
36   { 0x0F,     OP_I386,                    &i386_device::i386_decode_two_byte,        &i386_device::i386_decode_two_byte,    true },
37   { 0x10,     OP_I386,                    &i386_device::i386_adc_rm8_r8,             &i386_device::i386_adc_rm8_r8,         true },
38   { 0x11,     OP_I386,                    &i386_device::i386_adc_rm16_r16,           &i386_device::i386_adc_rm32_r32,       true },
39   { 0x12,     OP_I386,                    &i386_device::i386_adc_r8_rm8,             &i386_device::i386_adc_r8_rm8,         false},
40   { 0x13,     OP_I386,                    &i386_device::i386_adc_r16_rm16,           &i386_device::i386_adc_r32_rm32,       false},
41   { 0x14,     OP_I386,                    &i386_device::i386_adc_al_i8,              &i386_device::i386_adc_al_i8,          false},
42   { 0x15,     OP_I386,                    &i386_device::i386_adc_ax_i16,             &i386_device::i386_adc_eax_i32,        false},
43   { 0x16,     OP_I386,                    &i386_device::i386_push_ss16,              &i386_device::i386_push_ss32,          false},
44   { 0x17,     OP_I386,                    &i386_device::i386_pop_ss16,               &i386_device::i386_pop_ss32,           false},
45   { 0x18,     OP_I386,                    &i386_device::i386_sbb_rm8_r8,             &i386_device::i386_sbb_rm8_r8,         true },
46   { 0x19,     OP_I386,                    &i386_device::i386_sbb_rm16_r16,           &i386_device::i386_sbb_rm32_r32,       true },
47   { 0x1A,     OP_I386,                    &i386_device::i386_sbb_r8_rm8,             &i386_device::i386_sbb_r8_rm8,         false},
48   { 0x1B,     OP_I386,                    &i386_device::i386_sbb_r16_rm16,           &i386_device::i386_sbb_r32_rm32,       false},
49   { 0x1C,     OP_I386,                    &i386_device::i386_sbb_al_i8,              &i386_device::i386_sbb_al_i8,          false},
50   { 0x1D,     OP_I386,                    &i386_device::i386_sbb_ax_i16,             &i386_device::i386_sbb_eax_i32,        false},
51   { 0x1E,     OP_I386,                    &i386_device::i386_push_ds16,              &i386_device::i386_push_ds32,          false},
52   { 0x1F,     OP_I386,                    &i386_device::i386_pop_ds16,               &i386_device::i386_pop_ds32,           false},
53   { 0x20,     OP_I386,                    &i386_device::i386_and_rm8_r8,             &i386_device::i386_and_rm8_r8,         true },
54   { 0x21,     OP_I386,                    &i386_device::i386_and_rm16_r16,           &i386_device::i386_and_rm32_r32,       true },
55   { 0x22,     OP_I386,                    &i386_device::i386_and_r8_rm8,             &i386_device::i386_and_r8_rm8,         false},
56   { 0x23,     OP_I386,                    &i386_device::i386_and_r16_rm16,           &i386_device::i386_and_r32_rm32,       false},
57   { 0x24,     OP_I386,                    &i386_device::i386_and_al_i8,              &i386_device::i386_and_al_i8,          false},
58   { 0x25,     OP_I386,                    &i386_device::i386_and_ax_i16,             &i386_device::i386_and_eax_i32,        false},
59   { 0x26,     OP_I386,                    &i386_device::i386_segment_ES,             &i386_device::i386_segment_ES,         false},
60   { 0x27,     OP_I386,                    &i386_device::i386_daa,                    &i386_device::i386_daa,                false},
61   { 0x28,     OP_I386,                    &i386_device::i386_sub_rm8_r8,             &i386_device::i386_sub_rm8_r8,         true },
62   { 0x29,     OP_I386,                    &i386_device::i386_sub_rm16_r16,           &i386_device::i386_sub_rm32_r32,       true },
63   { 0x2A,     OP_I386,                    &i386_device::i386_sub_r8_rm8,             &i386_device::i386_sub_r8_rm8,         false},
64   { 0x2B,     OP_I386,                    &i386_device::i386_sub_r16_rm16,           &i386_device::i386_sub_r32_rm32,       false},
65   { 0x2C,     OP_I386,                    &i386_device::i386_sub_al_i8,              &i386_device::i386_sub_al_i8,          false},
66   { 0x2D,     OP_I386,                    &i386_device::i386_sub_ax_i16,             &i386_device::i386_sub_eax_i32,        false},
67   { 0x2E,     OP_I386,                    &i386_device::i386_segment_CS,             &i386_device::i386_segment_CS,         false},
68   { 0x2F,     OP_I386,                    &i386_device::i386_das,                    &i386_device::i386_das,                false},
69   { 0x30,     OP_I386,                    &i386_device::i386_xor_rm8_r8,             &i386_device::i386_xor_rm8_r8,         true },
70   { 0x31,     OP_I386,                    &i386_device::i386_xor_rm16_r16,           &i386_device::i386_xor_rm32_r32,       true },
71   { 0x32,     OP_I386,                    &i386_device::i386_xor_r8_rm8,             &i386_device::i386_xor_r8_rm8,         false},
72   { 0x33,     OP_I386,                    &i386_device::i386_xor_r16_rm16,           &i386_device::i386_xor_r32_rm32,       false},
73   { 0x34,     OP_I386,                    &i386_device::i386_xor_al_i8,              &i386_device::i386_xor_al_i8,          false},
74   { 0x35,     OP_I386,                    &i386_device::i386_xor_ax_i16,             &i386_device::i386_xor_eax_i32,        false},
75   { 0x36,     OP_I386,                    &i386_device::i386_segment_SS,             &i386_device::i386_segment_SS,         false},
76   { 0x37,     OP_I386,                    &i386_device::i386_aaa,                    &i386_device::i386_aaa,                false},
77   { 0x38,     OP_I386,                    &i386_device::i386_cmp_rm8_r8,             &i386_device::i386_cmp_rm8_r8,         false},
78   { 0x39,     OP_I386,                    &i386_device::i386_cmp_rm16_r16,           &i386_device::i386_cmp_rm32_r32,       false},
79   { 0x3A,     OP_I386,                    &i386_device::i386_cmp_r8_rm8,             &i386_device::i386_cmp_r8_rm8,         false},
80   { 0x3B,     OP_I386,                    &i386_device::i386_cmp_r16_rm16,           &i386_device::i386_cmp_r32_rm32,       false},
81   { 0x3C,     OP_I386,                    &i386_device::i386_cmp_al_i8,              &i386_device::i386_cmp_al_i8,          false},
82   { 0x3D,     OP_I386,                    &i386_device::i386_cmp_ax_i16,             &i386_device::i386_cmp_eax_i32,        false},
83   { 0x3E,     OP_I386,                    &i386_device::i386_segment_DS,             &i386_device::i386_segment_DS,         false},
84   { 0x3F,     OP_I386,                    &i386_device::i386_aas,                    &i386_device::i386_aas,                false},
85   { 0x40,     OP_I386,                    &i386_device::i386_inc_ax,                 &i386_device::i386_inc_eax,            false},
86   { 0x41,     OP_I386,                    &i386_device::i386_inc_cx,                 &i386_device::i386_inc_ecx,            false},
87   { 0x42,     OP_I386,                    &i386_device::i386_inc_dx,                 &i386_device::i386_inc_edx,            false},
88   { 0x43,     OP_I386,                    &i386_device::i386_inc_bx,                 &i386_device::i386_inc_ebx,            false},
89   { 0x44,     OP_I386,                    &i386_device::i386_inc_sp,                 &i386_device::i386_inc_esp,            false},
90   { 0x45,     OP_I386,                    &i386_device::i386_inc_bp,                 &i386_device::i386_inc_ebp,            false},
91   { 0x46,     OP_I386,                    &i386_device::i386_inc_si,                 &i386_device::i386_inc_esi,            false},
92   { 0x47,     OP_I386,                    &i386_device::i386_inc_di,                 &i386_device::i386_inc_edi,            false},
93   { 0x48,     OP_I386,                    &i386_device::i386_dec_ax,                 &i386_device::i386_dec_eax,            false},
94   { 0x49,     OP_I386,                    &i386_device::i386_dec_cx,                 &i386_device::i386_dec_ecx,            false},
95   { 0x4A,     OP_I386,                    &i386_device::i386_dec_dx,                 &i386_device::i386_dec_edx,            false},
96   { 0x4B,     OP_I386,                    &i386_device::i386_dec_bx,                 &i386_device::i386_dec_ebx,            false},
97   { 0x4C,     OP_I386,                    &i386_device::i386_dec_sp,                 &i386_device::i386_dec_esp,            false},
98   { 0x4D,     OP_I386,                    &i386_device::i386_dec_bp,                 &i386_device::i386_dec_ebp,            false},
99   { 0x4E,     OP_I386,                    &i386_device::i386_dec_si,                 &i386_device::i386_dec_esi,            false},
100   { 0x4F,     OP_I386,                    &i386_device::i386_dec_di,                 &i386_device::i386_dec_edi,            false},
101   { 0x50,     OP_I386,                    &i386_device::i386_push_ax,                &i386_device::i386_push_eax,           false},
102   { 0x51,     OP_I386,                    &i386_device::i386_push_cx,                &i386_device::i386_push_ecx,           false},
103   { 0x52,     OP_I386,                    &i386_device::i386_push_dx,                &i386_device::i386_push_edx,           false},
104   { 0x53,     OP_I386,                    &i386_device::i386_push_bx,                &i386_device::i386_push_ebx,           false},
105   { 0x54,     OP_I386,                    &i386_device::i386_push_sp,                &i386_device::i386_push_esp,           false},
106   { 0x55,     OP_I386,                    &i386_device::i386_push_bp,                &i386_device::i386_push_ebp,           false},
107   { 0x56,     OP_I386,                    &i386_device::i386_push_si,                &i386_device::i386_push_esi,           false},
108   { 0x57,     OP_I386,                    &i386_device::i386_push_di,                &i386_device::i386_push_edi,           false},
109   { 0x58,     OP_I386,                    &i386_device::i386_pop_ax,                 &i386_device::i386_pop_eax,            false},
110   { 0x59,     OP_I386,                    &i386_device::i386_pop_cx,                 &i386_device::i386_pop_ecx,            false},
111   { 0x5A,     OP_I386,                    &i386_device::i386_pop_dx,                 &i386_device::i386_pop_edx,            false},
112   { 0x5B,     OP_I386,                    &i386_device::i386_pop_bx,                 &i386_device::i386_pop_ebx,            false},
113   { 0x5C,     OP_I386,                    &i386_device::i386_pop_sp,                 &i386_device::i386_pop_esp,            false},
114   { 0x5D,     OP_I386,                    &i386_device::i386_pop_bp,                 &i386_device::i386_pop_ebp,            false},
115   { 0x5E,     OP_I386,                    &i386_device::i386_pop_si,                 &i386_device::i386_pop_esi,            false},
116   { 0x5F,     OP_I386,                    &i386_device::i386_pop_di,                 &i386_device::i386_pop_edi,            false},
117   { 0x60,     OP_I386,                    &i386_device::i386_pusha,                  &i386_device::i386_pushad,             false},
118   { 0x61,     OP_I386,                    &i386_device::i386_popa,                   &i386_device::i386_popad,              false},
119   { 0x62,     OP_I386,                    &i386_device::i386_bound_r16_m16_m16,      &i386_device::i386_bound_r32_m32_m32,  false},
120   { 0x63,     OP_I386,                    &i386_device::i386_arpl,                   &i386_device::i386_arpl,               false},
121   { 0x64,     OP_I386,                    &i386_device::i386_segment_FS,             &i386_device::i386_segment_FS,         false},
122   { 0x65,     OP_I386,                    &i386_device::i386_segment_GS,             &i386_device::i386_segment_GS,         false},
123   { 0x66,     OP_I386,                    &i386_device::i386_operand_size,           &i386_device::i386_operand_size,       false},
124   { 0x67,     OP_I386,                    &i386_device::i386_address_size,           &i386_device::i386_address_size,       false},
125   { 0x68,     OP_I386,                    &i386_device::i386_push_i16,               &i386_device::i386_push_i32,           false},
126   { 0x69,     OP_I386,                    &i386_device::i386_imul_r16_rm16_i16,      &i386_device::i386_imul_r32_rm32_i32,  false},
127   { 0x6A,     OP_I386,                    &i386_device::i386_push_i8,                &i386_device::i386_push_i8,            false},
128   { 0x6B,     OP_I386,                    &i386_device::i386_imul_r16_rm16_i8,       &i386_device::i386_imul_r32_rm32_i8,   false},
129   { 0x6C,     OP_I386,                    &i386_device::i386_insb,                   &i386_device::i386_insb,               false},
130   { 0x6D,     OP_I386,                    &i386_device::i386_insw,                   &i386_device::i386_insd,               false},
131   { 0x6E,     OP_I386,                    &i386_device::i386_outsb,                  &i386_device::i386_outsb,              false},
132   { 0x6F,     OP_I386,                    &i386_device::i386_outsw,                  &i386_device::i386_outsd,              false},
133   { 0x70,     OP_I386,                    &i386_device::i386_jo_rel8,                &i386_device::i386_jo_rel8,            false},
134   { 0x71,     OP_I386,                    &i386_device::i386_jno_rel8,               &i386_device::i386_jno_rel8,           false},
135   { 0x72,     OP_I386,                    &i386_device::i386_jc_rel8,                &i386_device::i386_jc_rel8,            false},
136   { 0x73,     OP_I386,                    &i386_device::i386_jnc_rel8,               &i386_device::i386_jnc_rel8,           false},
137   { 0x74,     OP_I386,                    &i386_device::i386_jz_rel8,                &i386_device::i386_jz_rel8,            false},
138   { 0x75,     OP_I386,                    &i386_device::i386_jnz_rel8,               &i386_device::i386_jnz_rel8,           false},
139   { 0x76,     OP_I386,                    &i386_device::i386_jbe_rel8,               &i386_device::i386_jbe_rel8,           false},
140   { 0x77,     OP_I386,                    &i386_device::i386_ja_rel8,                &i386_device::i386_ja_rel8,            false},
141   { 0x78,     OP_I386,                    &i386_device::i386_js_rel8,                &i386_device::i386_js_rel8,            false},
142   { 0x79,     OP_I386,                    &i386_device::i386_jns_rel8,               &i386_device::i386_jns_rel8,           false},
143   { 0x7A,     OP_I386,                    &i386_device::i386_jp_rel8,                &i386_device::i386_jp_rel8,            false},
144   { 0x7B,     OP_I386,                    &i386_device::i386_jnp_rel8,               &i386_device::i386_jnp_rel8,           false},
145   { 0x7C,     OP_I386,                    &i386_device::i386_jl_rel8,                &i386_device::i386_jl_rel8,            false},
146   { 0x7D,     OP_I386,                    &i386_device::i386_jge_rel8,               &i386_device::i386_jge_rel8,           false},
147   { 0x7E,     OP_I386,                    &i386_device::i386_jle_rel8,               &i386_device::i386_jle_rel8,           false},
148   { 0x7F,     OP_I386,                    &i386_device::i386_jg_rel8,                &i386_device::i386_jg_rel8,            false},
149   { 0x80,     OP_I386,                    &i386_device::i386_group80_8,              &i386_device::i386_group80_8,          true },
150   { 0x81,     OP_I386,                    &i386_device::i386_group81_16,             &i386_device::i386_group81_32,         true },
151   { 0x82,     OP_I386,                    &i386_device::i386_group80_8,              &i386_device::i386_group80_8,          true },
152   { 0x83,     OP_I386,                    &i386_device::i386_group83_16,             &i386_device::i386_group83_32,         true },
153   { 0x84,     OP_I386,                    &i386_device::i386_test_rm8_r8,            &i386_device::i386_test_rm8_r8,        false},
154   { 0x85,     OP_I386,                    &i386_device::i386_test_rm16_r16,          &i386_device::i386_test_rm32_r32,      false},
155   { 0x86,     OP_I386,                    &i386_device::i386_xchg_r8_rm8,            &i386_device::i386_xchg_r8_rm8,        true },
156   { 0x87,     OP_I386,                    &i386_device::i386_xchg_r16_rm16,          &i386_device::i386_xchg_r32_rm32,      true },
157   { 0x88,     OP_I386,                    &i386_device::i386_mov_rm8_r8,             &i386_device::i386_mov_rm8_r8,         false},
158   { 0x89,     OP_I386,                    &i386_device::i386_mov_rm16_r16,           &i386_device::i386_mov_rm32_r32,       false},
159   { 0x8A,     OP_I386,                    &i386_device::i386_mov_r8_rm8,             &i386_device::i386_mov_r8_rm8,         false},
160   { 0x8B,     OP_I386,                    &i386_device::i386_mov_r16_rm16,           &i386_device::i386_mov_r32_rm32,       false},
161   { 0x8C,     OP_I386,                    &i386_device::i386_mov_rm16_sreg,          &i386_device::i386_mov_rm16_sreg,      false},
162   { 0x8D,     OP_I386,                    &i386_device::i386_lea16,                  &i386_device::i386_lea32,              false},
163   { 0x8E,     OP_I386,                    &i386_device::i386_mov_sreg_rm16,          &i386_device::i386_mov_sreg_rm16,      false},
164   { 0x8F,     OP_I386,                    &i386_device::i386_pop_rm16,               &i386_device::i386_pop_rm32,           false},
165   { 0x90,     OP_I386,                    &i386_device::i386_nop,                    &i386_device::i386_nop,                false},
166   { 0x91,     OP_I386,                    &i386_device::i386_xchg_ax_cx,             &i386_device::i386_xchg_eax_ecx,       false},
167   { 0x92,     OP_I386,                    &i386_device::i386_xchg_ax_dx,             &i386_device::i386_xchg_eax_edx,       false},
168   { 0x93,     OP_I386,                    &i386_device::i386_xchg_ax_bx,             &i386_device::i386_xchg_eax_ebx,       false},
169   { 0x94,     OP_I386,                    &i386_device::i386_xchg_ax_sp,             &i386_device::i386_xchg_eax_esp,       false},
170   { 0x95,     OP_I386,                    &i386_device::i386_xchg_ax_bp,             &i386_device::i386_xchg_eax_ebp,       false},
171   { 0x96,     OP_I386,                    &i386_device::i386_xchg_ax_si,             &i386_device::i386_xchg_eax_esi,       false},
172   { 0x97,     OP_I386,                    &i386_device::i386_xchg_ax_di,             &i386_device::i386_xchg_eax_edi,       false},
173   { 0x98,     OP_I386,                    &i386_device::i386_cbw,                    &i386_device::i386_cwde,               false},
174   { 0x99,     OP_I386,                    &i386_device::i386_cwd,                    &i386_device::i386_cdq,                false},
175   { 0x9A,     OP_I386,                    &i386_device::i386_call_abs16,             &i386_device::i386_call_abs32,         false},
176   { 0x9B,     OP_I386,                    &i386_device::i386_wait,                   &i386_device::i386_wait,               false},
177   { 0x9C,     OP_I386,                    &i386_device::i386_pushf,                  &i386_device::i386_pushfd,             false},
178   { 0x9D,     OP_I386,                    &i386_device::i386_popf,                   &i386_device::i386_popfd,              false},
179   { 0x9E,     OP_I386,                    &i386_device::i386_sahf,                   &i386_device::i386_sahf,               false},
180   { 0x9F,     OP_I386,                    &i386_device::i386_lahf,                   &i386_device::i386_lahf,               false},
181   { 0xA0,     OP_I386,                    &i386_device::i386_mov_al_m8,              &i386_device::i386_mov_al_m8,          false},
182   { 0xA1,     OP_I386,                    &i386_device::i386_mov_ax_m16,             &i386_device::i386_mov_eax_m32,        false},
183   { 0xA2,     OP_I386,                    &i386_device::i386_mov_m8_al,              &i386_device::i386_mov_m8_al,          false},
184   { 0xA3,     OP_I386,                    &i386_device::i386_mov_m16_ax,             &i386_device::i386_mov_m32_eax,        false},
185   { 0xA4,     OP_I386,                    &i386_device::i386_movsb,                  &i386_device::i386_movsb,              false},
186   { 0xA5,     OP_I386,                    &i386_device::i386_movsw,                  &i386_device::i386_movsd,              false},
187   { 0xA6,     OP_I386,                    &i386_device::i386_cmpsb,                  &i386_device::i386_cmpsb,              false},
188   { 0xA7,     OP_I386,                    &i386_device::i386_cmpsw,                  &i386_device::i386_cmpsd,              false},
189   { 0xA8,     OP_I386,                    &i386_device::i386_test_al_i8,             &i386_device::i386_test_al_i8,         false},
190   { 0xA9,     OP_I386,                    &i386_device::i386_test_ax_i16,            &i386_device::i386_test_eax_i32,       false},
191   { 0xAA,     OP_I386,                    &i386_device::i386_stosb,                  &i386_device::i386_stosb,              false},
192   { 0xAB,     OP_I386,                    &i386_device::i386_stosw,                  &i386_device::i386_stosd,              false},
193   { 0xAC,     OP_I386,                    &i386_device::i386_lodsb,                  &i386_device::i386_lodsb,              false},
194   { 0xAD,     OP_I386,                    &i386_device::i386_lodsw,                  &i386_device::i386_lodsd,              false},
195   { 0xAE,     OP_I386,                    &i386_device::i386_scasb,                  &i386_device::i386_scasb,              false},
196   { 0xAF,     OP_I386,                    &i386_device::i386_scasw,                  &i386_device::i386_scasd,              false},
197   { 0xB0,     OP_I386,                    &i386_device::i386_mov_al_i8,              &i386_device::i386_mov_al_i8,          false},
198   { 0xB1,     OP_I386,                    &i386_device::i386_mov_cl_i8,              &i386_device::i386_mov_cl_i8,          false},
199   { 0xB2,     OP_I386,                    &i386_device::i386_mov_dl_i8,              &i386_device::i386_mov_dl_i8,          false},
200   { 0xB3,     OP_I386,                    &i386_device::i386_mov_bl_i8,              &i386_device::i386_mov_bl_i8,          false},
201   { 0xB4,     OP_I386,                    &i386_device::i386_mov_ah_i8,              &i386_device::i386_mov_ah_i8,          false},
202   { 0xB5,     OP_I386,                    &i386_device::i386_mov_ch_i8,              &i386_device::i386_mov_ch_i8,          false},
203   { 0xB6,     OP_I386,                    &i386_device::i386_mov_dh_i8,              &i386_device::i386_mov_dh_i8,          false},
204   { 0xB7,     OP_I386,                    &i386_device::i386_mov_bh_i8,              &i386_device::i386_mov_bh_i8,          false},
205   { 0xB8,     OP_I386,                    &i386_device::i386_mov_ax_i16,             &i386_device::i386_mov_eax_i32,        false},
206   { 0xB9,     OP_I386,                    &i386_device::i386_mov_cx_i16,             &i386_device::i386_mov_ecx_i32,        false},
207   { 0xBA,     OP_I386,                    &i386_device::i386_mov_dx_i16,             &i386_device::i386_mov_edx_i32,        false},
208   { 0xBB,     OP_I386,                    &i386_device::i386_mov_bx_i16,             &i386_device::i386_mov_ebx_i32,        false},
209   { 0xBC,     OP_I386,                    &i386_device::i386_mov_sp_i16,             &i386_device::i386_mov_esp_i32,        false},
210   { 0xBD,     OP_I386,                    &i386_device::i386_mov_bp_i16,             &i386_device::i386_mov_ebp_i32,        false},
211   { 0xBE,     OP_I386,                    &i386_device::i386_mov_si_i16,             &i386_device::i386_mov_esi_i32,        false},
212   { 0xBF,     OP_I386,                    &i386_device::i386_mov_di_i16,             &i386_device::i386_mov_edi_i32,        false},
213   { 0xC0,     OP_I386,                    &i386_device::i386_groupC0_8,              &i386_device::i386_groupC0_8,          false},
214   { 0xC1,     OP_I386,                    &i386_device::i386_groupC1_16,             &i386_device::i386_groupC1_32,         false},
215   { 0xC2,     OP_I386,                    &i386_device::i386_ret_near16_i16,         &i386_device::i386_ret_near32_i16,     false},
216   { 0xC3,     OP_I386,                    &i386_device::i386_ret_near16,             &i386_device::i386_ret_near32,         false},
217   { 0xC4,     OP_I386,                    &i386_device::i386_les16,                  &i386_device::i386_les32,              false},
218   { 0xC5,     OP_I386,                    &i386_device::i386_lds16,                  &i386_device::i386_lds32,              false},
219   { 0xC6,     OP_I386,                    &i386_device::i386_mov_rm8_i8,             &i386_device::i386_mov_rm8_i8,         false},
220   { 0xC7,     OP_I386,                    &i386_device::i386_mov_rm16_i16,           &i386_device::i386_mov_rm32_i32,       false},
221   { 0xC8,     OP_I386,                    &i386_device::i386_enter16,                &i386_device::i386_enter32,            false},
222   { 0xC9,     OP_I386,                    &i386_device::i386_leave16,                &i386_device::i386_leave32,            false},
223   { 0xCA,     OP_I386,                    &i386_device::i386_retf_i16,               &i386_device::i386_retf_i32,           false},
224   { 0xCB,     OP_I386,                    &i386_device::i386_retf16,                 &i386_device::i386_retf32,             false},
225   { 0xCC,     OP_I386,                    &i386_device::i386_int3,                   &i386_device::i386_int3,               false},
226   { 0xCD,     OP_I386,                    &i386_device::i386_int,                    &i386_device::i386_int,                false},
227   { 0xCE,     OP_I386,                    &i386_device::i386_into,                   &i386_device::i386_into,               false},
228   { 0xCF,     OP_I386,                    &i386_device::i386_iret16,                 &i386_device::i386_iret32,             false},
229   { 0xD0,     OP_I386,                    &i386_device::i386_groupD0_8,              &i386_device::i386_groupD0_8,          false},
230   { 0xD1,     OP_I386,                    &i386_device::i386_groupD1_16,             &i386_device::i386_groupD1_32,         false},
231   { 0xD2,     OP_I386,                    &i386_device::i386_groupD2_8,              &i386_device::i386_groupD2_8,          false},
232   { 0xD3,     OP_I386,                    &i386_device::i386_groupD3_16,             &i386_device::i386_groupD3_32,         false},
233   { 0xD4,     OP_I386,                    &i386_device::i386_aam,                    &i386_device::i386_aam,                false},
234   { 0xD5,     OP_I386,                    &i386_device::i386_aad,                    &i386_device::i386_aad,                false},
235   { 0xD6,     OP_I386,                    &i386_device::i386_setalc,                 &i386_device::i386_setalc,             false},
236   { 0xD7,     OP_I386,                    &i386_device::i386_xlat,                   &i386_device::i386_xlat,               false},
237   { 0xD8,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             false},
238   { 0xD9,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             false},
239   { 0xDA,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             false},
240   { 0xDB,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             false},
241   { 0xDC,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             false},
242   { 0xDD,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             false},
243   { 0xDE,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             false},
244   { 0xDF,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             false},
245   { 0xD8,     OP_FPU,                     &i386_device::i386_x87_group_d8,           &i386_device::i386_x87_group_d8,       false},
246   { 0xD9,     OP_FPU,                     &i386_device::i386_x87_group_d9,           &i386_device::i386_x87_group_d9,       false},
247   { 0xDA,     OP_FPU,                     &i386_device::i386_x87_group_da,           &i386_device::i386_x87_group_da,       false},
248   { 0xDB,     OP_FPU,                     &i386_device::i386_x87_group_db,           &i386_device::i386_x87_group_db,       false},
249   { 0xDC,     OP_FPU,                     &i386_device::i386_x87_group_dc,           &i386_device::i386_x87_group_dc,       false},
250   { 0xDD,     OP_FPU,                     &i386_device::i386_x87_group_dd,           &i386_device::i386_x87_group_dd,       false},
251   { 0xDE,     OP_FPU,                     &i386_device::i386_x87_group_de,           &i386_device::i386_x87_group_de,       false},
252   { 0xDF,     OP_FPU,                     &i386_device::i386_x87_group_df,           &i386_device::i386_x87_group_df,       false},
253   { 0xE0,     OP_I386,                    &i386_device::i386_loopne16,               &i386_device::i386_loopne32,           false},
254   { 0xE1,     OP_I386,                    &i386_device::i386_loopz16,                &i386_device::i386_loopz32,            false},
255   { 0xE2,     OP_I386,                    &i386_device::i386_loop16,                 &i386_device::i386_loop32,             false},
256   { 0xE3,     OP_I386,                    &i386_device::i386_jcxz16,                 &i386_device::i386_jcxz32,             false},
257   { 0xE4,     OP_I386,                    &i386_device::i386_in_al_i8,               &i386_device::i386_in_al_i8,           false},
258   { 0xE5,     OP_I386,                    &i386_device::i386_in_ax_i8,               &i386_device::i386_in_eax_i8,          false},
259   { 0xE6,     OP_I386,                    &i386_device::i386_out_al_i8,              &i386_device::i386_out_al_i8,          false},
260   { 0xE7,     OP_I386,                    &i386_device::i386_out_ax_i8,              &i386_device::i386_out_eax_i8,         false},
261   { 0xE8,     OP_I386,                    &i386_device::i386_call_rel16,             &i386_device::i386_call_rel32,         false},
262   { 0xE9,     OP_I386,                    &i386_device::i386_jmp_rel16,              &i386_device::i386_jmp_rel32,          false},
263   { 0xEA,     OP_I386,                    &i386_device::i386_jmp_abs16,              &i386_device::i386_jmp_abs32,          false},
264   { 0xEB,     OP_I386,                    &i386_device::i386_jmp_rel8,               &i386_device::i386_jmp_rel8,           false},
265   { 0xEC,     OP_I386,                    &i386_device::i386_in_al_dx,               &i386_device::i386_in_al_dx,           false},
266   { 0xED,     OP_I386,                    &i386_device::i386_in_ax_dx,               &i386_device::i386_in_eax_dx,          false},
267   { 0xEE,     OP_I386,                    &i386_device::i386_out_al_dx,              &i386_device::i386_out_al_dx,          false},
268   { 0xEF,     OP_I386,                    &i386_device::i386_out_ax_dx,              &i386_device::i386_out_eax_dx,         false},
269   { 0xF0,     OP_I386,                    &i386_device::i386_lock,                   &i386_device::i386_lock,               false},
270   { 0xF1,     OP_I386,                    &i386_device::i386_invalid,                &i386_device::i386_invalid,            false},
271   { 0xF2,     OP_I386,                    &i386_device::i386_repne,                  &i386_device::i386_repne,              false},
272   { 0xF3,     OP_I386,                    &i386_device::i386_rep,                    &i386_device::i386_rep,                false},
273   { 0xF4,     OP_I386,                    &i386_device::i386_hlt,                    &i386_device::i386_hlt,                false},
274   { 0xF5,     OP_I386,                    &i386_device::i386_cmc,                    &i386_device::i386_cmc,                false},
275   { 0xF6,     OP_I386,                    &i386_device::i386_groupF6_8,              &i386_device::i386_groupF6_8,          true },
276   { 0xF7,     OP_I386,                    &i386_device::i386_groupF7_16,             &i386_device::i386_groupF7_32,         true },
277   { 0xF8,     OP_I386,                    &i386_device::i386_clc,                    &i386_device::i386_clc,                false},
278   { 0xF9,     OP_I386,                    &i386_device::i386_stc,                    &i386_device::i386_stc,                false},
279   { 0xFA,     OP_I386,                    &i386_device::i386_cli,                    &i386_device::i386_cli,                false},
280   { 0xFB,     OP_I386,                    &i386_device::i386_sti,                    &i386_device::i386_sti,                false},
281   { 0xFC,     OP_I386,                    &i386_device::i386_cld,                    &i386_device::i386_cld,                false},
282   { 0xFD,     OP_I386,                    &i386_device::i386_std,                    &i386_device::i386_std,                false},
283   { 0xFE,     OP_I386,                    &i386_device::i386_groupFE_8,              &i386_device::i386_groupFE_8,          true },
284   { 0xFF,     OP_I386,                    &i386_device::i386_groupFF_16,             &i386_device::i386_groupFF_32,         true },
285285   /* 0F ?? */
286   { 0x00,     OP_2BYTE|OP_I386,           &i386_device::i386_group0F00_16,           &i386_device::i386_group0F00_32,       },
287   { 0x01,     OP_2BYTE|OP_I386,           &i386_device::i386_group0F01_16,           &i386_device::i386_group0F01_32,       },
288   { 0x01,     OP_2BYTE|OP_I486,           &i386_device::i486_group0F01_16,           &i386_device::i486_group0F01_32,       },
289   { 0x02,     OP_2BYTE|OP_I386,           &i386_device::i386_lar_r16_rm16,           &i386_device::i386_lar_r32_rm32,       },
290   { 0x03,     OP_2BYTE|OP_I386,           &i386_device::i386_lsl_r16_rm16,           &i386_device::i386_lsl_r32_rm32,       },
291   { 0x06,     OP_2BYTE|OP_I386,           &i386_device::i386_clts,                   &i386_device::i386_clts,               },
292   { 0x07,     OP_2BYTE|OP_I386,           &i386_device::i386_loadall,                &i386_device::i386_loadall,            },
293   { 0x08,     OP_2BYTE|OP_I486,           &i386_device::i486_invd,                   &i386_device::i486_invd,               },
294   { 0x09,     OP_2BYTE|OP_I486,           &i386_device::i486_wbinvd,                 &i386_device::i486_wbinvd,             },
295   { 0x0B,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_ud2,                 &i386_device::pentium_ud2,             },
296   { 0x10,     OP_2BYTE|OP_SSE,            &i386_device::sse_movups_r128_rm128,       &i386_device::sse_movups_r128_rm128,   },
297   { 0x11,     OP_2BYTE|OP_SSE,            &i386_device::sse_movups_rm128_r128,       &i386_device::sse_movups_rm128_r128,   },
298   { 0x12,     OP_2BYTE|OP_SSE,            &i386_device::sse_movlps_r128_m64,         &i386_device::sse_movlps_r128_m64,     },
299   { 0x13,     OP_2BYTE|OP_SSE,            &i386_device::sse_movlps_m64_r128,         &i386_device::sse_movlps_m64_r128,     },
300   { 0x14,     OP_2BYTE|OP_SSE,            &i386_device::sse_unpcklps_r128_rm128,     &i386_device::sse_unpcklps_r128_rm128, },
301   { 0x15,     OP_2BYTE|OP_SSE,            &i386_device::sse_unpckhps_r128_rm128,     &i386_device::sse_unpckhps_r128_rm128, },
302   { 0x16,     OP_2BYTE|OP_SSE,            &i386_device::sse_movhps_r128_m64,         &i386_device::sse_movhps_r128_m64,     },
303   { 0x17,     OP_2BYTE|OP_SSE,            &i386_device::sse_movhps_m64_r128,         &i386_device::sse_movhps_m64_r128,     },
304   { 0x18,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_prefetch_m8,         &i386_device::pentium_prefetch_m8,     },
305   { 0x20,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_r32_cr,             &i386_device::i386_mov_r32_cr,         },
306   { 0x21,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_r32_dr,             &i386_device::i386_mov_r32_dr,         },
307   { 0x22,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_cr_r32,             &i386_device::i386_mov_cr_r32,         },
308   { 0x22,     OP_2BYTE|OP_I486,           &i386_device::i486_mov_cr_r32,             &i386_device::i486_mov_cr_r32,         },
309   { 0x23,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_dr_r32,             &i386_device::i386_mov_dr_r32,         },
310   { 0x24,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_r32_tr,             &i386_device::i386_mov_r32_tr,         },
311   { 0x26,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_tr_r32,             &i386_device::i386_mov_tr_r32,         },
312   { 0x28,     OP_2BYTE|OP_SSE,            &i386_device::sse_movaps_r128_rm128,       &i386_device::sse_movaps_r128_rm128,   },
313   { 0x29,     OP_2BYTE|OP_SSE,            &i386_device::sse_movaps_rm128_r128,       &i386_device::sse_movaps_rm128_r128,   },
314   { 0x2a,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvtpi2ps_r128_rm64,      &i386_device::sse_cvtpi2ps_r128_rm64,  },
315   { 0x2b,     OP_2BYTE|OP_SSE,            &i386_device::sse_movntps_m128_r128,       &i386_device::sse_movntps_m128_r128,   },
316   { 0x2c,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvttps2pi_r64_r128m64,   &i386_device::sse_cvttps2pi_r64_r128m64,},
317   { 0x2d,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvtps2pi_r64_r128m64,    &i386_device::sse_cvtps2pi_r64_r128m64,},
318   { 0x2e,     OP_2BYTE|OP_SSE,            &i386_device::sse_ucomiss_r128_r128m32,    &i386_device::sse_ucomiss_r128_r128m32,},
319   { 0x2f,     OP_2BYTE|OP_SSE,            &i386_device::sse_comiss_r128_r128m32,     &i386_device::sse_comiss_r128_r128m32, },
320   { 0x30,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_wrmsr,               &i386_device::pentium_wrmsr,           },
321   { 0x31,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_rdtsc,               &i386_device::pentium_rdtsc,           },
322   { 0x32,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_rdmsr,               &i386_device::pentium_rdmsr,           },
323   { 0x40,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovo_r16_rm16,      &i386_device::pentium_cmovo_r32_rm32,  },
324   { 0x41,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovno_r16_rm16,     &i386_device::pentium_cmovno_r32_rm32, },
325   { 0x42,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovb_r16_rm16,      &i386_device::pentium_cmovb_r32_rm32,  },
326   { 0x43,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovae_r16_rm16,     &i386_device::pentium_cmovae_r32_rm32, },
327   { 0x44,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmove_r16_rm16,      &i386_device::pentium_cmove_r32_rm32,  },
328   { 0x45,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovne_r16_rm16,     &i386_device::pentium_cmovne_r32_rm32, },
329   { 0x46,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovbe_r16_rm16,     &i386_device::pentium_cmovbe_r32_rm32, },
330   { 0x47,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmova_r16_rm16,      &i386_device::pentium_cmova_r32_rm32,  },
331   { 0x48,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovs_r16_rm16,      &i386_device::pentium_cmovs_r32_rm32,  },
332   { 0x49,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovns_r16_rm16,     &i386_device::pentium_cmovns_r32_rm32, },
333   { 0x4a,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovp_r16_rm16,      &i386_device::pentium_cmovp_r32_rm32,  },
334   { 0x4b,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovnp_r16_rm16,     &i386_device::pentium_cmovnp_r32_rm32, },
335   { 0x4c,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovl_r16_rm16,      &i386_device::pentium_cmovl_r32_rm32,  },
336   { 0x4d,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovge_r16_rm16,     &i386_device::pentium_cmovge_r32_rm32, },
337   { 0x4e,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovle_r16_rm16,     &i386_device::pentium_cmovle_r32_rm32, },
338   { 0x4f,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovg_r16_rm16,      &i386_device::pentium_cmovg_r32_rm32,  },
339   { 0x50,     OP_2BYTE|OP_SSE,            &i386_device::sse_movmskps_r16_r128,       &i386_device::sse_movmskps_r32_r128,   },
340   { 0x51,     OP_2BYTE|OP_SSE,            &i386_device::sse_sqrtps_r128_rm128,       &i386_device::sse_sqrtps_r128_rm128,   },
341   { 0x52,     OP_2BYTE|OP_SSE,            &i386_device::sse_rsqrtps_r128_rm128,      &i386_device::sse_rsqrtps_r128_rm128,  },
342   { 0x53,     OP_2BYTE|OP_SSE,            &i386_device::sse_rcpps_r128_rm128,        &i386_device::sse_rcpps_r128_rm128,    },
343   { 0x54,     OP_2BYTE|OP_SSE,            &i386_device::sse_andps_r128_rm128,        &i386_device::sse_andps_r128_rm128,    },
344   { 0x55,     OP_2BYTE|OP_SSE,            &i386_device::sse_andnps_r128_rm128,       &i386_device::sse_andnps_r128_rm128,   },
345   { 0x56,     OP_2BYTE|OP_SSE,            &i386_device::sse_orps_r128_rm128,         &i386_device::sse_orps_r128_rm128,     },
346   { 0x57,     OP_2BYTE|OP_SSE,            &i386_device::sse_xorps,                   &i386_device::sse_xorps,               },
347   { 0x58,     OP_2BYTE|OP_SSE,            &i386_device::sse_addps,                   &i386_device::sse_addps,               },
348   { 0x59,     OP_2BYTE|OP_SSE,            &i386_device::sse_mulps,                   &i386_device::sse_mulps,               },
349   { 0x5a,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvtps2pd_r128_r128m64,   &i386_device::sse_cvtps2pd_r128_r128m64,},
350   { 0x5b,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvtdq2ps_r128_rm128,     &i386_device::sse_cvtdq2ps_r128_rm128, },
351   { 0x5c,     OP_2BYTE|OP_SSE,            &i386_device::sse_subps,                   &i386_device::sse_subps,               },
352   { 0x5d,     OP_2BYTE|OP_SSE,            &i386_device::sse_minps,                   &i386_device::sse_minps,               },
353   { 0x5e,     OP_2BYTE|OP_SSE,            &i386_device::sse_divps,                   &i386_device::sse_divps,               },
354   { 0x5f,     OP_2BYTE|OP_SSE,            &i386_device::sse_maxps,                   &i386_device::sse_maxps,               },
355   { 0x60,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpcklbw_r64_r64m32,    &i386_device::mmx_punpcklbw_r64_r64m32,},
356   { 0x61,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpcklwd_r64_r64m32,    &i386_device::mmx_punpcklwd_r64_r64m32,},
357   { 0x62,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpckldq_r64_r64m32,    &i386_device::mmx_punpckldq_r64_r64m32,},
358   { 0x63,     OP_2BYTE|OP_MMX,            &i386_device::mmx_packsswb_r64_rm64,       &i386_device::mmx_packsswb_r64_rm64,   },
359   { 0x64,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpgtb_r64_rm64,        &i386_device::mmx_pcmpgtb_r64_rm64,    },
360   { 0x65,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpgtw_r64_rm64,        &i386_device::mmx_pcmpgtw_r64_rm64,    },
361   { 0x66,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpgtd_r64_rm64,        &i386_device::mmx_pcmpgtd_r64_rm64,    },
362   { 0x67,     OP_2BYTE|OP_MMX,            &i386_device::mmx_packuswb_r64_rm64,       &i386_device::mmx_packuswb_r64_rm64,   },
363   { 0x68,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpckhbw_r64_rm64,      &i386_device::mmx_punpckhbw_r64_rm64,  },
364   { 0x69,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpckhwd_r64_rm64,      &i386_device::mmx_punpckhwd_r64_rm64,  },
365   { 0x6a,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpckhdq_r64_rm64,      &i386_device::mmx_punpckhdq_r64_rm64,  },
366   { 0x6b,     OP_2BYTE|OP_MMX,            &i386_device::mmx_packssdw_r64_rm64,       &i386_device::mmx_packssdw_r64_rm64,   },
367   { 0x6e,     OP_2BYTE|OP_MMX,            &i386_device::mmx_movd_r64_rm32,           &i386_device::mmx_movd_r64_rm32,       },
368   { 0x6f,     OP_2BYTE|OP_MMX,            &i386_device::mmx_movq_r64_rm64,           &i386_device::mmx_movq_r64_rm64,       },
369   { 0x70,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pshufw_r64_rm64_i8,      &i386_device::mmx_pshufw_r64_rm64_i8,  },
370   { 0x71,     OP_2BYTE|OP_MMX,            &i386_device::mmx_group_0f71,              &i386_device::mmx_group_0f71,          },
371   { 0x72,     OP_2BYTE|OP_MMX,            &i386_device::mmx_group_0f72,              &i386_device::mmx_group_0f72,          },
372   { 0x73,     OP_2BYTE|OP_MMX,            &i386_device::mmx_group_0f73,              &i386_device::mmx_group_0f73,          },
373   { 0x74,     OP_2BYTE|OP_CYRIX,          &i386_device::i386_cyrix_unknown,          &i386_device::i386_cyrix_unknown,      },
374   { 0x74,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpeqb_r64_rm64,        &i386_device::mmx_pcmpeqb_r64_rm64,    },
375   { 0x75,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpeqw_r64_rm64,        &i386_device::mmx_pcmpeqw_r64_rm64,    },
376   { 0x76,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpeqd_r64_rm64,        &i386_device::mmx_pcmpeqd_r64_rm64,    },
377   { 0x77,     OP_2BYTE|OP_MMX,            &i386_device::mmx_emms,                    &i386_device::mmx_emms,                },
378   { 0x7e,     OP_2BYTE|OP_MMX,            &i386_device::mmx_movd_rm32_r64,           &i386_device::mmx_movd_rm32_r64,       },
379   { 0x7f,     OP_2BYTE|OP_MMX,            &i386_device::mmx_movq_rm64_r64,           &i386_device::mmx_movq_rm64_r64,       },
380   { 0x80,     OP_2BYTE|OP_I386,           &i386_device::i386_jo_rel16,               &i386_device::i386_jo_rel32,           },
381   { 0x81,     OP_2BYTE|OP_I386,           &i386_device::i386_jno_rel16,              &i386_device::i386_jno_rel32,          },
382   { 0x82,     OP_2BYTE|OP_I386,           &i386_device::i386_jc_rel16,               &i386_device::i386_jc_rel32,           },
383   { 0x83,     OP_2BYTE|OP_I386,           &i386_device::i386_jnc_rel16,              &i386_device::i386_jnc_rel32,          },
384   { 0x84,     OP_2BYTE|OP_I386,           &i386_device::i386_jz_rel16,               &i386_device::i386_jz_rel32,           },
385   { 0x85,     OP_2BYTE|OP_I386,           &i386_device::i386_jnz_rel16,              &i386_device::i386_jnz_rel32,          },
386   { 0x86,     OP_2BYTE|OP_I386,           &i386_device::i386_jbe_rel16,              &i386_device::i386_jbe_rel32,          },
387   { 0x87,     OP_2BYTE|OP_I386,           &i386_device::i386_ja_rel16,               &i386_device::i386_ja_rel32,           },
388   { 0x88,     OP_2BYTE|OP_I386,           &i386_device::i386_js_rel16,               &i386_device::i386_js_rel32,           },
389   { 0x89,     OP_2BYTE|OP_I386,           &i386_device::i386_jns_rel16,              &i386_device::i386_jns_rel32,          },
390   { 0x8A,     OP_2BYTE|OP_I386,           &i386_device::i386_jp_rel16,               &i386_device::i386_jp_rel32,           },
391   { 0x8B,     OP_2BYTE|OP_I386,           &i386_device::i386_jnp_rel16,              &i386_device::i386_jnp_rel32,          },
392   { 0x8C,     OP_2BYTE|OP_I386,           &i386_device::i386_jl_rel16,               &i386_device::i386_jl_rel32,           },
393   { 0x8D,     OP_2BYTE|OP_I386,           &i386_device::i386_jge_rel16,              &i386_device::i386_jge_rel32,          },
394   { 0x8E,     OP_2BYTE|OP_I386,           &i386_device::i386_jle_rel16,              &i386_device::i386_jle_rel32,          },
395   { 0x8F,     OP_2BYTE|OP_I386,           &i386_device::i386_jg_rel16,               &i386_device::i386_jg_rel32,           },
396   { 0x90,     OP_2BYTE|OP_I386,           &i386_device::i386_seto_rm8,               &i386_device::i386_seto_rm8,           },
397   { 0x91,     OP_2BYTE|OP_I386,           &i386_device::i386_setno_rm8,              &i386_device::i386_setno_rm8,          },
398   { 0x92,     OP_2BYTE|OP_I386,           &i386_device::i386_setc_rm8,               &i386_device::i386_setc_rm8,           },
399   { 0x93,     OP_2BYTE|OP_I386,           &i386_device::i386_setnc_rm8,              &i386_device::i386_setnc_rm8,          },
400   { 0x94,     OP_2BYTE|OP_I386,           &i386_device::i386_setz_rm8,               &i386_device::i386_setz_rm8,           },
401   { 0x95,     OP_2BYTE|OP_I386,           &i386_device::i386_setnz_rm8,              &i386_device::i386_setnz_rm8,          },
402   { 0x96,     OP_2BYTE|OP_I386,           &i386_device::i386_setbe_rm8,              &i386_device::i386_setbe_rm8,          },
403   { 0x97,     OP_2BYTE|OP_I386,           &i386_device::i386_seta_rm8,               &i386_device::i386_seta_rm8,           },
404   { 0x98,     OP_2BYTE|OP_I386,           &i386_device::i386_sets_rm8,               &i386_device::i386_sets_rm8,           },
405   { 0x99,     OP_2BYTE|OP_I386,           &i386_device::i386_setns_rm8,              &i386_device::i386_setns_rm8,          },
406   { 0x9A,     OP_2BYTE|OP_I386,           &i386_device::i386_setp_rm8,               &i386_device::i386_setp_rm8,           },
407   { 0x9B,     OP_2BYTE|OP_I386,           &i386_device::i386_setnp_rm8,              &i386_device::i386_setnp_rm8,          },
408   { 0x9C,     OP_2BYTE|OP_I386,           &i386_device::i386_setl_rm8,               &i386_device::i386_setl_rm8,           },
409   { 0x9D,     OP_2BYTE|OP_I386,           &i386_device::i386_setge_rm8,              &i386_device::i386_setge_rm8,          },
410   { 0x9E,     OP_2BYTE|OP_I386,           &i386_device::i386_setle_rm8,              &i386_device::i386_setle_rm8,          },
411   { 0x9F,     OP_2BYTE|OP_I386,           &i386_device::i386_setg_rm8,               &i386_device::i386_setg_rm8,           },
412   { 0xA0,     OP_2BYTE|OP_I386,           &i386_device::i386_push_fs16,              &i386_device::i386_push_fs32,          },
413   { 0xA1,     OP_2BYTE|OP_I386,           &i386_device::i386_pop_fs16,               &i386_device::i386_pop_fs32,           },
414   { 0xA2,     OP_2BYTE|OP_I486,           &i386_device::i486_cpuid,                  &i386_device::i486_cpuid,              },
415   { 0xA3,     OP_2BYTE|OP_I386,           &i386_device::i386_bt_rm16_r16,            &i386_device::i386_bt_rm32_r32,        },
416   { 0xA4,     OP_2BYTE|OP_I386,           &i386_device::i386_shld16_i8,              &i386_device::i386_shld32_i8,          },
417   { 0xA5,     OP_2BYTE|OP_I386,           &i386_device::i386_shld16_cl,              &i386_device::i386_shld32_cl,          },
418   { 0xA8,     OP_2BYTE|OP_I386,           &i386_device::i386_push_gs16,              &i386_device::i386_push_gs32,          },
419   { 0xA9,     OP_2BYTE|OP_I386,           &i386_device::i386_pop_gs16,               &i386_device::i386_pop_gs32,           },
420   { 0xAA,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_rsm,                 &i386_device::pentium_rsm,             },
421   { 0xAB,     OP_2BYTE|OP_I386,           &i386_device::i386_bts_rm16_r16,           &i386_device::i386_bts_rm32_r32,       },
422   { 0xAC,     OP_2BYTE|OP_I386,           &i386_device::i386_shrd16_i8,              &i386_device::i386_shrd32_i8,          },
423   { 0xAD,     OP_2BYTE|OP_I386,           &i386_device::i386_shrd16_cl,              &i386_device::i386_shrd32_cl,          },
424   { 0xAE,     OP_2BYTE|OP_SSE,            &i386_device::sse_sse_group0fae,           &i386_device::sse_sse_group0fae,       },
425   { 0xAF,     OP_2BYTE|OP_I386,           &i386_device::i386_imul_r16_rm16,          &i386_device::i386_imul_r32_rm32,      },
426   { 0xB0,     OP_2BYTE|OP_I486,           &i386_device::i486_cmpxchg_rm8_r8,         &i386_device::i486_cmpxchg_rm8_r8,     },
427   { 0xB1,     OP_2BYTE|OP_I486,           &i386_device::i486_cmpxchg_rm16_r16,       &i386_device::i486_cmpxchg_rm32_r32,   },
428   { 0xB2,     OP_2BYTE|OP_I386,           &i386_device::i386_lss16,                  &i386_device::i386_lss32,              },
429   { 0xB3,     OP_2BYTE|OP_I386,           &i386_device::i386_btr_rm16_r16,           &i386_device::i386_btr_rm32_r32,       },
430   { 0xB4,     OP_2BYTE|OP_I386,           &i386_device::i386_lfs16,                  &i386_device::i386_lfs32,              },
431   { 0xB5,     OP_2BYTE|OP_I386,           &i386_device::i386_lgs16,                  &i386_device::i386_lgs32,              },
432   { 0xB6,     OP_2BYTE|OP_I386,           &i386_device::i386_movzx_r16_rm8,          &i386_device::i386_movzx_r32_rm8,      },
433   { 0xB7,     OP_2BYTE|OP_I386,           &i386_device::i386_invalid,                &i386_device::i386_movzx_r32_rm16,     },
434   { 0xBA,     OP_2BYTE|OP_I386,           &i386_device::i386_group0FBA_16,           &i386_device::i386_group0FBA_32,       },
435   { 0xBB,     OP_2BYTE|OP_I386,           &i386_device::i386_btc_rm16_r16,           &i386_device::i386_btc_rm32_r32,       },
436   { 0xBC,     OP_2BYTE|OP_I386,           &i386_device::i386_bsf_r16_rm16,           &i386_device::i386_bsf_r32_rm32,       },
437   { 0xBD,     OP_2BYTE|OP_I386,           &i386_device::i386_bsr_r16_rm16,           &i386_device::i386_bsr_r32_rm32,       },
438   { 0xBE,     OP_2BYTE|OP_I386,           &i386_device::i386_movsx_r16_rm8,          &i386_device::i386_movsx_r32_rm8,      },
439   { 0xBF,     OP_2BYTE|OP_I386,           &i386_device::i386_invalid,                &i386_device::i386_movsx_r32_rm16,     },
440   { 0xC0,     OP_2BYTE|OP_I486,           &i386_device::i486_xadd_rm8_r8,            &i386_device::i486_xadd_rm8_r8,        },
441   { 0xC1,     OP_2BYTE|OP_I486,           &i386_device::i486_xadd_rm16_r16,          &i386_device::i486_xadd_rm32_r32,      },
442   { 0xC2,     OP_2BYTE|OP_SSE,            &i386_device::sse_cmpps_r128_rm128_i8,     &i386_device::sse_cmpps_r128_rm128_i8, },
443   { 0xC3,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_movnti_m16_r16,      &i386_device::pentium_movnti_m32_r32,  },
444   { 0xC4,     OP_2BYTE|OP_SSE,            &i386_device::sse_pinsrw_r64_r16m16_i8,    &i386_device::sse_pinsrw_r64_r32m16_i8,},
445   { 0xC5,     OP_2BYTE|OP_SSE,            &i386_device::sse_pextrw_r16_r64_i8,       &i386_device::sse_pextrw_r32_r64_i8,   },
446   { 0xC6,     OP_2BYTE|OP_SSE,            &i386_device::sse_shufps,                  &i386_device::sse_shufps,              },
447   { 0xC7,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmpxchg8b_m64,       &i386_device::pentium_cmpxchg8b_m64,   },
448   { 0xC8,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_eax,              &i386_device::i486_bswap_eax,          },
449   { 0xC9,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_ecx,              &i386_device::i486_bswap_ecx,          },
450   { 0xCA,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_edx,              &i386_device::i486_bswap_edx,          },
451   { 0xCB,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_ebx,              &i386_device::i486_bswap_ebx,          },
452   { 0xCC,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_esp,              &i386_device::i486_bswap_esp,          },
453   { 0xCD,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_ebp,              &i386_device::i486_bswap_ebp,          },
454   { 0xCE,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_esi,              &i386_device::i486_bswap_esi,          },
455   { 0xCF,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_edi,              &i386_device::i486_bswap_edi,          },
456   { 0xD1,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psrlw_r64_rm64,          &i386_device::mmx_psrlw_r64_rm64,      },
457   { 0xD2,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psrld_r64_rm64,          &i386_device::mmx_psrld_r64_rm64,      },
458   { 0xD3,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psrlq_r64_rm64,          &i386_device::mmx_psrlq_r64_rm64,      },
459   { 0xD4,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddq_r64_rm64,          &i386_device::mmx_paddq_r64_rm64,      },
460   { 0xD5,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pmullw_r64_rm64,         &i386_device::mmx_pmullw_r64_rm64,     },
461   { 0xD7,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmovmskb_r16_r64,        &i386_device::sse_pmovmskb_r32_r64,    },
462   { 0xD8,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubusb_r64_rm64,        &i386_device::mmx_psubusb_r64_rm64,    },
463   { 0xD9,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubusw_r64_rm64,        &i386_device::mmx_psubusw_r64_rm64,    },
464   { 0xDA,     OP_2BYTE|OP_SSE,            &i386_device::sse_pminub_r64_rm64,         &i386_device::sse_pminub_r64_rm64,     },
465   { 0xDB,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pand_r64_rm64,           &i386_device::mmx_pand_r64_rm64,       },
466   { 0xDC,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddusb_r64_rm64,        &i386_device::mmx_paddusb_r64_rm64,    },
467   { 0xDD,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddusw_r64_rm64,        &i386_device::mmx_paddusw_r64_rm64,    },
468   { 0xDE,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmaxub_r64_rm64,         &i386_device::sse_pmaxub_r64_rm64,     },
469   { 0xDF,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pandn_r64_rm64,          &i386_device::mmx_pandn_r64_rm64,      },
470   { 0xE0,     OP_2BYTE|OP_SSE,            &i386_device::sse_pavgb_r64_rm64,          &i386_device::sse_pavgb_r64_rm64,      },
471   { 0xE1,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psraw_r64_rm64,          &i386_device::mmx_psraw_r64_rm64,      },
472   { 0xE2,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psrad_r64_rm64,          &i386_device::mmx_psrad_r64_rm64,      },
473   { 0xE3,     OP_2BYTE|OP_SSE,            &i386_device::sse_pavgw_r64_rm64,          &i386_device::sse_pavgw_r64_rm64,      },
474   { 0xE4,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmulhuw_r64_rm64,        &i386_device::sse_pmulhuw_r64_rm64,    },
475   { 0xE5,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pmulhw_r64_rm64,         &i386_device::mmx_pmulhw_r64_rm64,     },
476   { 0xE7,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_movntq_m64_r64,      &i386_device::pentium_movntq_m64_r64,  },
477   { 0xE8,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubsb_r64_rm64,         &i386_device::mmx_psubsb_r64_rm64,     },
478   { 0xE9,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubsw_r64_rm64,         &i386_device::mmx_psubsw_r64_rm64,     },
479   { 0xEA,     OP_2BYTE|OP_SSE,            &i386_device::sse_pminsw_r64_rm64,         &i386_device::sse_pminsw_r64_rm64,     },
480   { 0xEB,     OP_2BYTE|OP_MMX,            &i386_device::mmx_por_r64_rm64,            &i386_device::mmx_por_r64_rm64,        },
481   { 0xEC,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddsb_r64_rm64,         &i386_device::mmx_paddsb_r64_rm64,     },
482   { 0xED,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddsw_r64_rm64,         &i386_device::mmx_paddsw_r64_rm64,     },
483   { 0xEE,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmaxsw_r64_rm64,         &i386_device::sse_pmaxsw_r64_rm64,     },
484   { 0xEF,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pxor_r64_rm64,           &i386_device::mmx_pxor_r64_rm64,       },
485   { 0xF1,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psllw_r64_rm64,          &i386_device::mmx_psllw_r64_rm64,      },
486   { 0xF2,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pslld_r64_rm64,          &i386_device::mmx_pslld_r64_rm64,      },
487   { 0xF3,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psllq_r64_rm64,          &i386_device::mmx_psllq_r64_rm64,      },
488   { 0xF4,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmuludq_r64_rm64,        &i386_device::sse_pmuludq_r64_rm64,    },
489   { 0xF5,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pmaddwd_r64_rm64,        &i386_device::mmx_pmaddwd_r64_rm64,    },
490   { 0xF6,     OP_2BYTE|OP_SSE,            &i386_device::sse_psadbw_r64_rm64,         &i386_device::sse_psadbw_r64_rm64,     },
491   { 0xf7,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_maskmovq_r64_r64,    &i386_device::pentium_maskmovq_r64_r64,},
492   { 0xF8,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubb_r64_rm64,          &i386_device::mmx_psubb_r64_rm64,      },
493   { 0xF9,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubw_r64_rm64,          &i386_device::mmx_psubw_r64_rm64,      },
494   { 0xFA,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubd_r64_rm64,          &i386_device::mmx_psubd_r64_rm64,      },
495   { 0xFB,     OP_2BYTE|OP_SSE,            &i386_device::sse_psubq_r64_rm64,          &i386_device::sse_psubq_r64_rm64,      },
496   { 0xFC,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddb_r64_rm64,          &i386_device::mmx_paddb_r64_rm64,      },
497   { 0xFD,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddw_r64_rm64,          &i386_device::mmx_paddw_r64_rm64,      },
498   { 0xFE,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddd_r64_rm64,          &i386_device::mmx_paddd_r64_rm64,      },
286   { 0x00,     OP_2BYTE|OP_I386,           &i386_device::i386_group0F00_16,           &i386_device::i386_group0F00_32,       false},
287   { 0x01,     OP_2BYTE|OP_I386,           &i386_device::i386_group0F01_16,           &i386_device::i386_group0F01_32,       false},
288   { 0x01,     OP_2BYTE|OP_I486,           &i386_device::i486_group0F01_16,           &i386_device::i486_group0F01_32,       false},
289   { 0x02,     OP_2BYTE|OP_I386,           &i386_device::i386_lar_r16_rm16,           &i386_device::i386_lar_r32_rm32,       false},
290   { 0x03,     OP_2BYTE|OP_I386,           &i386_device::i386_lsl_r16_rm16,           &i386_device::i386_lsl_r32_rm32,       false},
291   { 0x06,     OP_2BYTE|OP_I386,           &i386_device::i386_clts,                   &i386_device::i386_clts,               false},
292   { 0x07,     OP_2BYTE|OP_I386,           &i386_device::i386_loadall,                &i386_device::i386_loadall,            false},
293   { 0x08,     OP_2BYTE|OP_I486,           &i386_device::i486_invd,                   &i386_device::i486_invd,               false},
294   { 0x09,     OP_2BYTE|OP_I486,           &i386_device::i486_wbinvd,                 &i386_device::i486_wbinvd,             false},
295   { 0x0B,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_ud2,                 &i386_device::pentium_ud2,             false},
296   { 0x10,     OP_2BYTE|OP_SSE,            &i386_device::sse_movups_r128_rm128,       &i386_device::sse_movups_r128_rm128,   false},
297   { 0x11,     OP_2BYTE|OP_SSE,            &i386_device::sse_movups_rm128_r128,       &i386_device::sse_movups_rm128_r128,   false},
298   { 0x12,     OP_2BYTE|OP_SSE,            &i386_device::sse_movlps_r128_m64,         &i386_device::sse_movlps_r128_m64,     false},
299   { 0x13,     OP_2BYTE|OP_SSE,            &i386_device::sse_movlps_m64_r128,         &i386_device::sse_movlps_m64_r128,     false},
300   { 0x14,     OP_2BYTE|OP_SSE,            &i386_device::sse_unpcklps_r128_rm128,     &i386_device::sse_unpcklps_r128_rm128, false},
301   { 0x15,     OP_2BYTE|OP_SSE,            &i386_device::sse_unpckhps_r128_rm128,     &i386_device::sse_unpckhps_r128_rm128, false},
302   { 0x16,     OP_2BYTE|OP_SSE,            &i386_device::sse_movhps_r128_m64,         &i386_device::sse_movhps_r128_m64,     false},
303   { 0x17,     OP_2BYTE|OP_SSE,            &i386_device::sse_movhps_m64_r128,         &i386_device::sse_movhps_m64_r128,     false},
304   { 0x18,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_prefetch_m8,         &i386_device::pentium_prefetch_m8,     false},
305   { 0x20,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_r32_cr,             &i386_device::i386_mov_r32_cr,         false},
306   { 0x21,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_r32_dr,             &i386_device::i386_mov_r32_dr,         false},
307   { 0x22,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_cr_r32,             &i386_device::i386_mov_cr_r32,         false},
308   { 0x22,     OP_2BYTE|OP_I486,           &i386_device::i486_mov_cr_r32,             &i386_device::i486_mov_cr_r32,         false},
309   { 0x23,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_dr_r32,             &i386_device::i386_mov_dr_r32,         false},
310   { 0x24,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_r32_tr,             &i386_device::i386_mov_r32_tr,         false},
311   { 0x26,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_tr_r32,             &i386_device::i386_mov_tr_r32,         false},
312   { 0x28,     OP_2BYTE|OP_SSE,            &i386_device::sse_movaps_r128_rm128,       &i386_device::sse_movaps_r128_rm128,   false},
313   { 0x29,     OP_2BYTE|OP_SSE,            &i386_device::sse_movaps_rm128_r128,       &i386_device::sse_movaps_rm128_r128,   false},
314   { 0x2a,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvtpi2ps_r128_rm64,      &i386_device::sse_cvtpi2ps_r128_rm64,  false},
315   { 0x2b,     OP_2BYTE|OP_SSE,            &i386_device::sse_movntps_m128_r128,       &i386_device::sse_movntps_m128_r128,   false},
316   { 0x2c,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvttps2pi_r64_r128m64,   &i386_device::sse_cvttps2pi_r64_r128m64,false},
317   { 0x2d,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvtps2pi_r64_r128m64,    &i386_device::sse_cvtps2pi_r64_r128m64,false},
318   { 0x2e,     OP_2BYTE|OP_SSE,            &i386_device::sse_ucomiss_r128_r128m32,    &i386_device::sse_ucomiss_r128_r128m32,false},
319   { 0x2f,     OP_2BYTE|OP_SSE,            &i386_device::sse_comiss_r128_r128m32,     &i386_device::sse_comiss_r128_r128m32, false},
320   { 0x30,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_wrmsr,               &i386_device::pentium_wrmsr,           false},
321   { 0x31,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_rdtsc,               &i386_device::pentium_rdtsc,           false},
322   { 0x32,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_rdmsr,               &i386_device::pentium_rdmsr,           false},
323   { 0x40,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovo_r16_rm16,      &i386_device::pentium_cmovo_r32_rm32,  false},
324   { 0x41,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovno_r16_rm16,     &i386_device::pentium_cmovno_r32_rm32, false},
325   { 0x42,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovb_r16_rm16,      &i386_device::pentium_cmovb_r32_rm32,  false},
326   { 0x43,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovae_r16_rm16,     &i386_device::pentium_cmovae_r32_rm32, false},
327   { 0x44,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmove_r16_rm16,      &i386_device::pentium_cmove_r32_rm32,  false},
328   { 0x45,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovne_r16_rm16,     &i386_device::pentium_cmovne_r32_rm32, false},
329   { 0x46,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovbe_r16_rm16,     &i386_device::pentium_cmovbe_r32_rm32, false},
330   { 0x47,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmova_r16_rm16,      &i386_device::pentium_cmova_r32_rm32,  false},
331   { 0x48,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovs_r16_rm16,      &i386_device::pentium_cmovs_r32_rm32,  false},
332   { 0x49,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovns_r16_rm16,     &i386_device::pentium_cmovns_r32_rm32, false},
333   { 0x4a,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovp_r16_rm16,      &i386_device::pentium_cmovp_r32_rm32,  false},
334   { 0x4b,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovnp_r16_rm16,     &i386_device::pentium_cmovnp_r32_rm32, false},
335   { 0x4c,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovl_r16_rm16,      &i386_device::pentium_cmovl_r32_rm32,  false},
336   { 0x4d,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovge_r16_rm16,     &i386_device::pentium_cmovge_r32_rm32, false},
337   { 0x4e,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovle_r16_rm16,     &i386_device::pentium_cmovle_r32_rm32, false},
338   { 0x4f,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovg_r16_rm16,      &i386_device::pentium_cmovg_r32_rm32,  false},
339   { 0x50,     OP_2BYTE|OP_SSE,            &i386_device::sse_movmskps_r16_r128,       &i386_device::sse_movmskps_r32_r128,   false},
340   { 0x51,     OP_2BYTE|OP_SSE,            &i386_device::sse_sqrtps_r128_rm128,       &i386_device::sse_sqrtps_r128_rm128,   false},
341   { 0x52,     OP_2BYTE|OP_SSE,            &i386_device::sse_rsqrtps_r128_rm128,      &i386_device::sse_rsqrtps_r128_rm128,  false},
342   { 0x53,     OP_2BYTE|OP_SSE,            &i386_device::sse_rcpps_r128_rm128,        &i386_device::sse_rcpps_r128_rm128,    false},
343   { 0x54,     OP_2BYTE|OP_SSE,            &i386_device::sse_andps_r128_rm128,        &i386_device::sse_andps_r128_rm128,    false},
344   { 0x55,     OP_2BYTE|OP_SSE,            &i386_device::sse_andnps_r128_rm128,       &i386_device::sse_andnps_r128_rm128,   false},
345   { 0x56,     OP_2BYTE|OP_SSE,            &i386_device::sse_orps_r128_rm128,         &i386_device::sse_orps_r128_rm128,     false},
346   { 0x57,     OP_2BYTE|OP_SSE,            &i386_device::sse_xorps,                   &i386_device::sse_xorps,               false},
347   { 0x58,     OP_2BYTE|OP_SSE,            &i386_device::sse_addps,                   &i386_device::sse_addps,               false},
348   { 0x59,     OP_2BYTE|OP_SSE,            &i386_device::sse_mulps,                   &i386_device::sse_mulps,               false},
349   { 0x5a,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvtps2pd_r128_r128m64,   &i386_device::sse_cvtps2pd_r128_r128m64,false},
350   { 0x5b,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvtdq2ps_r128_rm128,     &i386_device::sse_cvtdq2ps_r128_rm128, false},
351   { 0x5c,     OP_2BYTE|OP_SSE,            &i386_device::sse_subps,                   &i386_device::sse_subps,               false},
352   { 0x5d,     OP_2BYTE|OP_SSE,            &i386_device::sse_minps,                   &i386_device::sse_minps,               false},
353   { 0x5e,     OP_2BYTE|OP_SSE,            &i386_device::sse_divps,                   &i386_device::sse_divps,               false},
354   { 0x5f,     OP_2BYTE|OP_SSE,            &i386_device::sse_maxps,                   &i386_device::sse_maxps,               false},
355   { 0x60,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpcklbw_r64_r64m32,    &i386_device::mmx_punpcklbw_r64_r64m32,false},
356   { 0x61,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpcklwd_r64_r64m32,    &i386_device::mmx_punpcklwd_r64_r64m32,false},
357   { 0x62,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpckldq_r64_r64m32,    &i386_device::mmx_punpckldq_r64_r64m32,false},
358   { 0x63,     OP_2BYTE|OP_MMX,            &i386_device::mmx_packsswb_r64_rm64,       &i386_device::mmx_packsswb_r64_rm64,   false},
359   { 0x64,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpgtb_r64_rm64,        &i386_device::mmx_pcmpgtb_r64_rm64,    false},
360   { 0x65,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpgtw_r64_rm64,        &i386_device::mmx_pcmpgtw_r64_rm64,    false},
361   { 0x66,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpgtd_r64_rm64,        &i386_device::mmx_pcmpgtd_r64_rm64,    false},
362   { 0x67,     OP_2BYTE|OP_MMX,            &i386_device::mmx_packuswb_r64_rm64,       &i386_device::mmx_packuswb_r64_rm64,   false},
363   { 0x68,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpckhbw_r64_rm64,      &i386_device::mmx_punpckhbw_r64_rm64,  false},
364   { 0x69,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpckhwd_r64_rm64,      &i386_device::mmx_punpckhwd_r64_rm64,  false},
365   { 0x6a,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpckhdq_r64_rm64,      &i386_device::mmx_punpckhdq_r64_rm64,  false},
366   { 0x6b,     OP_2BYTE|OP_MMX,            &i386_device::mmx_packssdw_r64_rm64,       &i386_device::mmx_packssdw_r64_rm64,   false},
367   { 0x6e,     OP_2BYTE|OP_MMX,            &i386_device::mmx_movd_r64_rm32,           &i386_device::mmx_movd_r64_rm32,       false},
368   { 0x6f,     OP_2BYTE|OP_MMX,            &i386_device::mmx_movq_r64_rm64,           &i386_device::mmx_movq_r64_rm64,       false},
369   { 0x70,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pshufw_r64_rm64_i8,      &i386_device::mmx_pshufw_r64_rm64_i8,  false},
370   { 0x71,     OP_2BYTE|OP_MMX,            &i386_device::mmx_group_0f71,              &i386_device::mmx_group_0f71,          false},
371   { 0x72,     OP_2BYTE|OP_MMX,            &i386_device::mmx_group_0f72,              &i386_device::mmx_group_0f72,          false},
372   { 0x73,     OP_2BYTE|OP_MMX,            &i386_device::mmx_group_0f73,              &i386_device::mmx_group_0f73,          false},
373   { 0x74,     OP_2BYTE|OP_CYRIX,          &i386_device::i386_cyrix_unknown,          &i386_device::i386_cyrix_unknown,      false},
374   { 0x74,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpeqb_r64_rm64,        &i386_device::mmx_pcmpeqb_r64_rm64,    false},
375   { 0x75,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpeqw_r64_rm64,        &i386_device::mmx_pcmpeqw_r64_rm64,    false},
376   { 0x76,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpeqd_r64_rm64,        &i386_device::mmx_pcmpeqd_r64_rm64,    false},
377   { 0x77,     OP_2BYTE|OP_MMX,            &i386_device::mmx_emms,                    &i386_device::mmx_emms,                false},
378   { 0x7e,     OP_2BYTE|OP_MMX,            &i386_device::mmx_movd_rm32_r64,           &i386_device::mmx_movd_rm32_r64,       false},
379   { 0x7f,     OP_2BYTE|OP_MMX,            &i386_device::mmx_movq_rm64_r64,           &i386_device::mmx_movq_rm64_r64,       false},
380   { 0x80,     OP_2BYTE|OP_I386,           &i386_device::i386_jo_rel16,               &i386_device::i386_jo_rel32,           false},
381   { 0x81,     OP_2BYTE|OP_I386,           &i386_device::i386_jno_rel16,              &i386_device::i386_jno_rel32,          false},
382   { 0x82,     OP_2BYTE|OP_I386,           &i386_device::i386_jc_rel16,               &i386_device::i386_jc_rel32,           false},
383   { 0x83,     OP_2BYTE|OP_I386,           &i386_device::i386_jnc_rel16,              &i386_device::i386_jnc_rel32,          false},
384   { 0x84,     OP_2BYTE|OP_I386,           &i386_device::i386_jz_rel16,               &i386_device::i386_jz_rel32,           false},
385   { 0x85,     OP_2BYTE|OP_I386,           &i386_device::i386_jnz_rel16,              &i386_device::i386_jnz_rel32,          false},
386   { 0x86,     OP_2BYTE|OP_I386,           &i386_device::i386_jbe_rel16,              &i386_device::i386_jbe_rel32,          false},
387   { 0x87,     OP_2BYTE|OP_I386,           &i386_device::i386_ja_rel16,               &i386_device::i386_ja_rel32,           false},
388   { 0x88,     OP_2BYTE|OP_I386,           &i386_device::i386_js_rel16,               &i386_device::i386_js_rel32,           false},
389   { 0x89,     OP_2BYTE|OP_I386,           &i386_device::i386_jns_rel16,              &i386_device::i386_jns_rel32,          false},
390   { 0x8A,     OP_2BYTE|OP_I386,           &i386_device::i386_jp_rel16,               &i386_device::i386_jp_rel32,           false},
391   { 0x8B,     OP_2BYTE|OP_I386,           &i386_device::i386_jnp_rel16,              &i386_device::i386_jnp_rel32,          false},
392   { 0x8C,     OP_2BYTE|OP_I386,           &i386_device::i386_jl_rel16,               &i386_device::i386_jl_rel32,           false},
393   { 0x8D,     OP_2BYTE|OP_I386,           &i386_device::i386_jge_rel16,              &i386_device::i386_jge_rel32,          false},
394   { 0x8E,     OP_2BYTE|OP_I386,           &i386_device::i386_jle_rel16,              &i386_device::i386_jle_rel32,          false},
395   { 0x8F,     OP_2BYTE|OP_I386,           &i386_device::i386_jg_rel16,               &i386_device::i386_jg_rel32,           false},
396   { 0x90,     OP_2BYTE|OP_I386,           &i386_device::i386_seto_rm8,               &i386_device::i386_seto_rm8,           false},
397   { 0x91,     OP_2BYTE|OP_I386,           &i386_device::i386_setno_rm8,              &i386_device::i386_setno_rm8,          false},
398   { 0x92,     OP_2BYTE|OP_I386,           &i386_device::i386_setc_rm8,               &i386_device::i386_setc_rm8,           false},
399   { 0x93,     OP_2BYTE|OP_I386,           &i386_device::i386_setnc_rm8,              &i386_device::i386_setnc_rm8,          false},
400   { 0x94,     OP_2BYTE|OP_I386,           &i386_device::i386_setz_rm8,               &i386_device::i386_setz_rm8,           false},
401   { 0x95,     OP_2BYTE|OP_I386,           &i386_device::i386_setnz_rm8,              &i386_device::i386_setnz_rm8,          false},
402   { 0x96,     OP_2BYTE|OP_I386,           &i386_device::i386_setbe_rm8,              &i386_device::i386_setbe_rm8,          false},
403   { 0x97,     OP_2BYTE|OP_I386,           &i386_device::i386_seta_rm8,               &i386_device::i386_seta_rm8,           false},
404   { 0x98,     OP_2BYTE|OP_I386,           &i386_device::i386_sets_rm8,               &i386_device::i386_sets_rm8,           false},
405   { 0x99,     OP_2BYTE|OP_I386,           &i386_device::i386_setns_rm8,              &i386_device::i386_setns_rm8,          false},
406   { 0x9A,     OP_2BYTE|OP_I386,           &i386_device::i386_setp_rm8,               &i386_device::i386_setp_rm8,           false},
407   { 0x9B,     OP_2BYTE|OP_I386,           &i386_device::i386_setnp_rm8,              &i386_device::i386_setnp_rm8,          false},
408   { 0x9C,     OP_2BYTE|OP_I386,           &i386_device::i386_setl_rm8,               &i386_device::i386_setl_rm8,           false},
409   { 0x9D,     OP_2BYTE|OP_I386,           &i386_device::i386_setge_rm8,              &i386_device::i386_setge_rm8,          false},
410   { 0x9E,     OP_2BYTE|OP_I386,           &i386_device::i386_setle_rm8,              &i386_device::i386_setle_rm8,          false},
411   { 0x9F,     OP_2BYTE|OP_I386,           &i386_device::i386_setg_rm8,               &i386_device::i386_setg_rm8,           false},
412   { 0xA0,     OP_2BYTE|OP_I386,           &i386_device::i386_push_fs16,              &i386_device::i386_push_fs32,          false},
413   { 0xA1,     OP_2BYTE|OP_I386,           &i386_device::i386_pop_fs16,               &i386_device::i386_pop_fs32,           false},
414   { 0xA2,     OP_2BYTE|OP_I486,           &i386_device::i486_cpuid,                  &i386_device::i486_cpuid,              false},
415   { 0xA3,     OP_2BYTE|OP_I386,           &i386_device::i386_bt_rm16_r16,            &i386_device::i386_bt_rm32_r32,        false},
416   { 0xA4,     OP_2BYTE|OP_I386,           &i386_device::i386_shld16_i8,              &i386_device::i386_shld32_i8,          false},
417   { 0xA5,     OP_2BYTE|OP_I386,           &i386_device::i386_shld16_cl,              &i386_device::i386_shld32_cl,          false},
418   { 0xA8,     OP_2BYTE|OP_I386,           &i386_device::i386_push_gs16,              &i386_device::i386_push_gs32,          false},
419   { 0xA9,     OP_2BYTE|OP_I386,           &i386_device::i386_pop_gs16,               &i386_device::i386_pop_gs32,           false},
420   { 0xAA,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_rsm,                 &i386_device::pentium_rsm,             false},
421   { 0xAB,     OP_2BYTE|OP_I386,           &i386_device::i386_bts_rm16_r16,           &i386_device::i386_bts_rm32_r32,       true },
422   { 0xAC,     OP_2BYTE|OP_I386,           &i386_device::i386_shrd16_i8,              &i386_device::i386_shrd32_i8,          false},
423   { 0xAD,     OP_2BYTE|OP_I386,           &i386_device::i386_shrd16_cl,              &i386_device::i386_shrd32_cl,          false},
424   { 0xAE,     OP_2BYTE|OP_SSE,            &i386_device::sse_sse_group0fae,           &i386_device::sse_sse_group0fae,       false},
425   { 0xAF,     OP_2BYTE|OP_I386,           &i386_device::i386_imul_r16_rm16,          &i386_device::i386_imul_r32_rm32,      false},
426   { 0xB0,     OP_2BYTE|OP_I486,           &i386_device::i486_cmpxchg_rm8_r8,         &i386_device::i486_cmpxchg_rm8_r8,     true },
427   { 0xB1,     OP_2BYTE|OP_I486,           &i386_device::i486_cmpxchg_rm16_r16,       &i386_device::i486_cmpxchg_rm32_r32,   true },
428   { 0xB2,     OP_2BYTE|OP_I386,           &i386_device::i386_lss16,                  &i386_device::i386_lss32,              false},
429   { 0xB3,     OP_2BYTE|OP_I386,           &i386_device::i386_btr_rm16_r16,           &i386_device::i386_btr_rm32_r32,       true },
430   { 0xB4,     OP_2BYTE|OP_I386,           &i386_device::i386_lfs16,                  &i386_device::i386_lfs32,              false},
431   { 0xB5,     OP_2BYTE|OP_I386,           &i386_device::i386_lgs16,                  &i386_device::i386_lgs32,              false},
432   { 0xB6,     OP_2BYTE|OP_I386,           &i386_device::i386_movzx_r16_rm8,          &i386_device::i386_movzx_r32_rm8,      false},
433   { 0xB7,     OP_2BYTE|OP_I386,           &i386_device::i386_invalid,                &i386_device::i386_movzx_r32_rm16,     false},
434   { 0xBA,     OP_2BYTE|OP_I386,           &i386_device::i386_group0FBA_16,           &i386_device::i386_group0FBA_32,       true },
435   { 0xBB,     OP_2BYTE|OP_I386,           &i386_device::i386_btc_rm16_r16,           &i386_device::i386_btc_rm32_r32,       true },
436   { 0xBC,     OP_2BYTE|OP_I386,           &i386_device::i386_bsf_r16_rm16,           &i386_device::i386_bsf_r32_rm32,       false},
437   { 0xBD,     OP_2BYTE|OP_I386,           &i386_device::i386_bsr_r16_rm16,           &i386_device::i386_bsr_r32_rm32,       false},
438   { 0xBE,     OP_2BYTE|OP_I386,           &i386_device::i386_movsx_r16_rm8,          &i386_device::i386_movsx_r32_rm8,      false},
439   { 0xBF,     OP_2BYTE|OP_I386,           &i386_device::i386_invalid,                &i386_device::i386_movsx_r32_rm16,     false},
440   { 0xC0,     OP_2BYTE|OP_I486,           &i386_device::i486_xadd_rm8_r8,            &i386_device::i486_xadd_rm8_r8,        true },
441   { 0xC1,     OP_2BYTE|OP_I486,           &i386_device::i486_xadd_rm16_r16,          &i386_device::i486_xadd_rm32_r32,      true },
442   { 0xC2,     OP_2BYTE|OP_SSE,            &i386_device::sse_cmpps_r128_rm128_i8,     &i386_device::sse_cmpps_r128_rm128_i8, false},
443   { 0xC3,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_movnti_m16_r16,      &i386_device::pentium_movnti_m32_r32,  false},
444   { 0xC4,     OP_2BYTE|OP_SSE,            &i386_device::sse_pinsrw_r64_r16m16_i8,    &i386_device::sse_pinsrw_r64_r32m16_i8,false},
445   { 0xC5,     OP_2BYTE|OP_SSE,            &i386_device::sse_pextrw_r16_r64_i8,       &i386_device::sse_pextrw_r32_r64_i8,   false},
446   { 0xC6,     OP_2BYTE|OP_SSE,            &i386_device::sse_shufps,                  &i386_device::sse_shufps,              false},
447   { 0xC7,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmpxchg8b_m64,       &i386_device::pentium_cmpxchg8b_m64,   true },
448   { 0xC8,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_eax,              &i386_device::i486_bswap_eax,          false},
449   { 0xC9,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_ecx,              &i386_device::i486_bswap_ecx,          false},
450   { 0xCA,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_edx,              &i386_device::i486_bswap_edx,          false},
451   { 0xCB,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_ebx,              &i386_device::i486_bswap_ebx,          false},
452   { 0xCC,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_esp,              &i386_device::i486_bswap_esp,          false},
453   { 0xCD,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_ebp,              &i386_device::i486_bswap_ebp,          false},
454   { 0xCE,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_esi,              &i386_device::i486_bswap_esi,          false},
455   { 0xCF,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_edi,              &i386_device::i486_bswap_edi,          false},
456   { 0xD1,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psrlw_r64_rm64,          &i386_device::mmx_psrlw_r64_rm64,      false},
457   { 0xD2,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psrld_r64_rm64,          &i386_device::mmx_psrld_r64_rm64,      false},
458   { 0xD3,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psrlq_r64_rm64,          &i386_device::mmx_psrlq_r64_rm64,      false},
459   { 0xD4,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddq_r64_rm64,          &i386_device::mmx_paddq_r64_rm64,      false},
460   { 0xD5,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pmullw_r64_rm64,         &i386_device::mmx_pmullw_r64_rm64,     false},
461   { 0xD7,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmovmskb_r16_r64,        &i386_device::sse_pmovmskb_r32_r64,    false},
462   { 0xD8,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubusb_r64_rm64,        &i386_device::mmx_psubusb_r64_rm64,    false},
463   { 0xD9,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubusw_r64_rm64,        &i386_device::mmx_psubusw_r64_rm64,    false},
464   { 0xDA,     OP_2BYTE|OP_SSE,            &i386_device::sse_pminub_r64_rm64,         &i386_device::sse_pminub_r64_rm64,     false},
465   { 0xDB,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pand_r64_rm64,           &i386_device::mmx_pand_r64_rm64,       false},
466   { 0xDC,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddusb_r64_rm64,        &i386_device::mmx_paddusb_r64_rm64,    false},
467   { 0xDD,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddusw_r64_rm64,        &i386_device::mmx_paddusw_r64_rm64,    false},
468   { 0xDE,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmaxub_r64_rm64,         &i386_device::sse_pmaxub_r64_rm64,     false},
469   { 0xDF,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pandn_r64_rm64,          &i386_device::mmx_pandn_r64_rm64,      false},
470   { 0xE0,     OP_2BYTE|OP_SSE,            &i386_device::sse_pavgb_r64_rm64,          &i386_device::sse_pavgb_r64_rm64,      false},
471   { 0xE1,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psraw_r64_rm64,          &i386_device::mmx_psraw_r64_rm64,      false},
472   { 0xE2,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psrad_r64_rm64,          &i386_device::mmx_psrad_r64_rm64,      false},
473   { 0xE3,     OP_2BYTE|OP_SSE,            &i386_device::sse_pavgw_r64_rm64,          &i386_device::sse_pavgw_r64_rm64,      false},
474   { 0xE4,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmulhuw_r64_rm64,        &i386_device::sse_pmulhuw_r64_rm64,    false},
475   { 0xE5,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pmulhw_r64_rm64,         &i386_device::mmx_pmulhw_r64_rm64,     false},
476   { 0xE7,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_movntq_m64_r64,      &i386_device::pentium_movntq_m64_r64,  false},
477   { 0xE8,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubsb_r64_rm64,         &i386_device::mmx_psubsb_r64_rm64,     false},
478   { 0xE9,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubsw_r64_rm64,         &i386_device::mmx_psubsw_r64_rm64,     false},
479   { 0xEA,     OP_2BYTE|OP_SSE,            &i386_device::sse_pminsw_r64_rm64,         &i386_device::sse_pminsw_r64_rm64,     false},
480   { 0xEB,     OP_2BYTE|OP_MMX,            &i386_device::mmx_por_r64_rm64,            &i386_device::mmx_por_r64_rm64,        false},
481   { 0xEC,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddsb_r64_rm64,         &i386_device::mmx_paddsb_r64_rm64,     false},
482   { 0xED,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddsw_r64_rm64,         &i386_device::mmx_paddsw_r64_rm64,     false},
483   { 0xEE,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmaxsw_r64_rm64,         &i386_device::sse_pmaxsw_r64_rm64,     false},
484   { 0xEF,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pxor_r64_rm64,           &i386_device::mmx_pxor_r64_rm64,       false},
485   { 0xF1,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psllw_r64_rm64,          &i386_device::mmx_psllw_r64_rm64,      false},
486   { 0xF2,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pslld_r64_rm64,          &i386_device::mmx_pslld_r64_rm64,      false},
487   { 0xF3,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psllq_r64_rm64,          &i386_device::mmx_psllq_r64_rm64,      false},
488   { 0xF4,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmuludq_r64_rm64,        &i386_device::sse_pmuludq_r64_rm64,    false},
489   { 0xF5,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pmaddwd_r64_rm64,        &i386_device::mmx_pmaddwd_r64_rm64,    false},
490   { 0xF6,     OP_2BYTE|OP_SSE,            &i386_device::sse_psadbw_r64_rm64,         &i386_device::sse_psadbw_r64_rm64,     false},
491   { 0xf7,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_maskmovq_r64_r64,    &i386_device::pentium_maskmovq_r64_r64,false},
492   { 0xF8,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubb_r64_rm64,          &i386_device::mmx_psubb_r64_rm64,      false},
493   { 0xF9,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubw_r64_rm64,          &i386_device::mmx_psubw_r64_rm64,      false},
494   { 0xFA,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubd_r64_rm64,          &i386_device::mmx_psubd_r64_rm64,      false},
495   { 0xFB,     OP_2BYTE|OP_SSE,            &i386_device::sse_psubq_r64_rm64,          &i386_device::sse_psubq_r64_rm64,      false},
496   { 0xFC,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddb_r64_rm64,          &i386_device::mmx_paddb_r64_rm64,      false},
497   { 0xFD,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddw_r64_rm64,          &i386_device::mmx_paddw_r64_rm64,      false},
498   { 0xFE,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddd_r64_rm64,          &i386_device::mmx_paddd_r64_rm64,      false},
499499   /* F3 0F ?? */
500   { 0x10,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movss_r128_rm128,        &i386_device::sse_movss_r128_rm128,    },
501   { 0x11,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movss_rm128_r128,        &i386_device::sse_movss_rm128_r128,    },
502   { 0x12,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movsldup_r128_rm128,     &i386_device::sse_movsldup_r128_rm128, },
503   { 0x16,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movshdup_r128_rm128,     &i386_device::sse_movshdup_r128_rm128, },
504   { 0x2A,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvtsi2ss_r128_rm32,      &i386_device::sse_cvtsi2ss_r128_rm32,  },
505   { 0x2C,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvttss2si_r32_r128m32,   &i386_device::sse_cvttss2si_r32_r128m32,},
506   { 0x2D,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvtss2si_r32_r128m32,    &i386_device::sse_cvtss2si_r32_r128m32,},
507   { 0x51,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_sqrtss_r128_r128m32,     &i386_device::sse_sqrtss_r128_r128m32, },
508   { 0x52,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_rsqrtss_r128_r128m32,    &i386_device::sse_rsqrtss_r128_r128m32,},
509   { 0x53,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_rcpss_r128_r128m32,      &i386_device::sse_rcpss_r128_r128m32,  },
510   { 0x58,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_addss,                   &i386_device::sse_addss,               },
511   { 0x59,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_mulss,                   &i386_device::sse_mulss,               },
512   { 0x5A,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvtss2sd_r128_r128m32,   &i386_device::sse_cvtss2sd_r128_r128m32,},
513   { 0x5B,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvttps2dq_r128_rm128,    &i386_device::sse_cvttps2dq_r128_rm128,},
514   { 0x5C,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_subss,                   &i386_device::sse_subss,               },
515   { 0x5D,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_minss_r128_r128m32,      &i386_device::sse_minss_r128_r128m32,  },
516   { 0x5E,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_divss,                   &i386_device::sse_divss,               },
517   { 0x5F,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_maxss_r128_r128m32,      &i386_device::sse_maxss_r128_r128m32,  },
518   { 0x6F,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movdqu_r128_rm128,       &i386_device::sse_movdqu_r128_rm128,   },
519   { 0x70,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_pshufhw_r128_rm128_i8,   &i386_device::sse_pshufhw_r128_rm128_i8,},
520   { 0x7E,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movq_r128_r128m64,       &i386_device::sse_movq_r128_r128m64,   },
521   { 0x7F,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movdqu_rm128_r128,       &i386_device::sse_movdqu_rm128_r128,   },
522   { 0xB8,     OP_3BYTEF3|OP_PENTIUM,      &i386_device::pentium_popcnt_r16_rm16,     &i386_device::pentium_popcnt_r32_rm32, },
523   { 0xBC,     OP_3BYTEF3|OP_PENTIUM,      &i386_device::pentium_tzcnt_r16_rm16,      &i386_device::pentium_tzcnt_r32_rm32, },
524   { 0xC2,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cmpss_r128_r128m32_i8,   &i386_device::sse_cmpss_r128_r128m32_i8,},
525   { 0xD6,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movq2dq_r128_r64,        &i386_device::sse_movq2dq_r128_r64,    },
526   { 0xE6,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvtdq2pd_r128_r128m64,   &i386_device::sse_cvtdq2pd_r128_r128m64}
500   { 0x10,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movss_r128_rm128,        &i386_device::sse_movss_r128_rm128,    false},
501   { 0x11,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movss_rm128_r128,        &i386_device::sse_movss_rm128_r128,    false},
502   { 0x12,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movsldup_r128_rm128,     &i386_device::sse_movsldup_r128_rm128, false},
503   { 0x16,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movshdup_r128_rm128,     &i386_device::sse_movshdup_r128_rm128, false},
504   { 0x2A,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvtsi2ss_r128_rm32,      &i386_device::sse_cvtsi2ss_r128_rm32,  false},
505   { 0x2C,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvttss2si_r32_r128m32,   &i386_device::sse_cvttss2si_r32_r128m32,false},
506   { 0x2D,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvtss2si_r32_r128m32,    &i386_device::sse_cvtss2si_r32_r128m32,false},
507   { 0x51,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_sqrtss_r128_r128m32,     &i386_device::sse_sqrtss_r128_r128m32, false},
508   { 0x52,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_rsqrtss_r128_r128m32,    &i386_device::sse_rsqrtss_r128_r128m32,false},
509   { 0x53,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_rcpss_r128_r128m32,      &i386_device::sse_rcpss_r128_r128m32,  false},
510   { 0x58,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_addss,                   &i386_device::sse_addss,               false},
511   { 0x59,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_mulss,                   &i386_device::sse_mulss,               false},
512   { 0x5A,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvtss2sd_r128_r128m32,   &i386_device::sse_cvtss2sd_r128_r128m32,false},
513   { 0x5B,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvttps2dq_r128_rm128,    &i386_device::sse_cvttps2dq_r128_rm128,false},
514   { 0x5C,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_subss,                   &i386_device::sse_subss,               false},
515   { 0x5D,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_minss_r128_r128m32,      &i386_device::sse_minss_r128_r128m32,  false},
516   { 0x5E,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_divss,                   &i386_device::sse_divss,               false},
517   { 0x5F,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_maxss_r128_r128m32,      &i386_device::sse_maxss_r128_r128m32,  false},
518   { 0x6F,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movdqu_r128_rm128,       &i386_device::sse_movdqu_r128_rm128,   false},
519   { 0x70,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_pshufhw_r128_rm128_i8,   &i386_device::sse_pshufhw_r128_rm128_i8,false},
520   { 0x7E,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movq_r128_r128m64,       &i386_device::sse_movq_r128_r128m64,   false},
521   { 0x7F,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movdqu_rm128_r128,       &i386_device::sse_movdqu_rm128_r128,   false},
522   { 0xB8,     OP_3BYTEF3|OP_PENTIUM,      &i386_device::pentium_popcnt_r16_rm16,     &i386_device::pentium_popcnt_r32_rm32, false},
523   { 0xBC,     OP_3BYTEF3|OP_PENTIUM,      &i386_device::pentium_tzcnt_r16_rm16,      &i386_device::pentium_tzcnt_r32_rm32, false},
524   { 0xC2,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cmpss_r128_r128m32_i8,   &i386_device::sse_cmpss_r128_r128m32_i8,false},
525   { 0xD6,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movq2dq_r128_r64,        &i386_device::sse_movq2dq_r128_r64,    false},
526   { 0xE6,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvtdq2pd_r128_r128m64,   &i386_device::sse_cvtdq2pd_r128_r128m64,false}
527527};
trunk/src/emu/cpu/i386/i386ops.inc
r241527r241528
24832483void i386_device::i386_lock()              // Opcode 0xf0
24842484{
24852485   // lock doesn't depend on iopl on 386
2486   // TODO: lock causes UD on unlockable opcodes
2486   m_lock = true;
24872487   CYCLES(CYCLES_LOCK);       // TODO: Determine correct cycle count
24882488   i386_decode_opcode();
24892489}
trunk/src/mame/drivers/jackie.c
r241527r241528
267267void jackie_state::show_out()
268268{
269269#ifdef MAME_DEBUG
270//  popmessage("%02x %02x %02x", state->m_out[0], state->m_out[1], state->m_out[2]);
270//  popmessage("%02x %02x %02x", m_out[0], m_out[1], m_out[2]);
271271   popmessage("520: %04x %04x %04x %04x %04x\n560: %04x %04x %04x %04x %04x\n5A0: %04x %04x %04x %04x %04x",
272272      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],
273273      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],
trunk/src/mame/drivers/konamigx.c
r241527r241528
106106
107107
108108
109
110static int konamigx_cfgport;
111
112static int gx_rdport1_3, gx_syncen;
113
114static emu_timer *dmadelay_timer;
115static emu_timer *boothack_timer;
116
117109/**********************************************************************************/
118110/*
119111   Konami ESC (E Security Chip) protection chip found on:
r241527r241528
179171
180172static void generate_sprites(address_space &space, UINT32 src, UINT32 spr, int count)
181173{
182   int i;
183   int scount;
184   int ecount;
185   scount = 0;
186   ecount = 0;
174   int scount = 0;
175   int ecount = 0;
187176
188   for(i=0; i<count; i++) {
177   for(int i=0; i<count; i++) {
189178      UINT32 adr = src + 0x100*i;
190179      int pri;
191180      if(!space.read_word(adr+2))
r241527r241528
200189   }
201190   //qsort(sprites, ecount, sizeof(struct sprite_entry), pri_comp);
202191
203   for(i=0; i<ecount; i++) {
192   for(int i=0; i<ecount; i++) {
204193      UINT32 adr = sprites[i].adr;
205194      if(adr) {
206195         UINT32 set =(space.read_word(adr) << 16)|space.read_word(adr+2);
r241527r241528
315304   }
316305}
317306
318static void tkmmpzdm_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
307void konamigx_state::tkmmpzdm_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
319308{
320   konamigx_state* state = space.machine().driver_data<konamigx_state>();
321   state->konamigx_esc_alert(space.machine().driver_data<konamigx_state>()->m_workram, 0x0142, 0x100, 0);
309   konamigx_esc_alert(m_workram, 0x0142, 0x100, 0);
322310}
323311
324static void dragoonj_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
312void konamigx_state::dragoonj_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
325313{
326   konamigx_state* state = space.machine().driver_data<konamigx_state>();
327   state->konamigx_esc_alert(space.machine().driver_data<konamigx_state>()->m_workram, 0x5c00, 0x100, 0);
314   konamigx_esc_alert(m_workram, 0x5c00, 0x100, 0);
328315}
329316
330static void sal2_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
317void konamigx_state::sal2_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
331318{
332   konamigx_state* state = space.machine().driver_data<konamigx_state>();
333   state->konamigx_esc_alert(space.machine().driver_data<konamigx_state>()->m_workram, 0x1c8c, 0x172, 1);
319   konamigx_esc_alert(m_workram, 0x1c8c, 0x172, 1);
334320}
335321
336static void sexyparo_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
322void konamigx_state::sexyparo_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
337323{
338324   // The d20000 should probably be p3
339325   generate_sprites(space, 0xc00604, 0xd20000, 0xfc);
340326}
341327
342static void tbyahhoo_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
328void konamigx_state::tbyahhoo_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
343329{
344330   generate_sprites(space, 0xc00000, 0xd20000, 0x100);
345331}
346332
347static void daiskiss_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
333void konamigx_state::daiskiss_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
348334{
349335   generate_sprites(space, 0xc00000, 0xd20000, 0x100);
350336}
351337
352static UINT8 esc_program[4096];
353static void (*esc_cb)(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4);
354
355338WRITE32_MEMBER(konamigx_state::esc_w)
356339{
357340   UINT32 opcode;
r241527r241528
386369         break;
387370      case 2: // Load program
388371         for(i=0; i<4096; i++)
389            esc_program[i] = space.read_byte(params+i);
372            m_esc_program[i] = space.read_byte(params+i);
390373/*
391374            {
392375                FILE *f;
r241527r241528
400383*/
401384         break;
402385      case 1: // Run program
403         if(esc_cb) {
386         if(m_esc_cb) {
404387            UINT32 p1 = (space.read_word(params+0)<<16) | space.read_word(params+2);
405388            UINT32 p2 = (space.read_word(params+4)<<16) | space.read_word(params+6);
406389            UINT32 p3 = (space.read_word(params+8)<<16) | space.read_word(params+10);
407390            UINT32 p4 = (space.read_word(params+12)<<16) | space.read_word(params+14);
408            esc_cb(space, p1, p2, p3, p4);
391            (this->*m_esc_cb)(space, p1, p2, p3, p4);
409392         }
410393         break;
411394      default:
r241527r241528
414397      }
415398      space.write_byte(data+9, ESTATE_END);
416399
417      if (konamigx_wrport1_1 & 0x10)
400      if (m_gx_wrport1_1 & 0x10)
418401      {
419         gx_rdport1_3 &= ~8;
402         m_gx_rdport1_3 &= ~8;
420403         m_maincpu->set_input_line(4, HOLD_LINE);
421404      }
422405   }
r241527r241528
439422
440423CUSTOM_INPUT_MEMBER(konamigx_state::gx_rdport1_3_r)
441424{
442   return (gx_rdport1_3 >> 1);
425   return (m_gx_rdport1_3 >> 1);
443426}
444427
445428WRITE32_MEMBER(konamigx_state::eeprom_w)
r241527r241528
462445
463446      m_eepromout->write(odata, 0xff);
464447
465      konamigx_wrport1_0 = odata;
448      m_gx_wrport1_0 = odata;
466449   }
467450
468451   if (ACCESSING_BITS_16_23)
r241527r241528
478461        bit 0 = CCU1-INT1 enable
479462      */
480463
481      konamigx_wrport1_1 = (data>>16)&0xff;
482//      logerror("write %x to IRQ register (PC=%x)\n", konamigx_wrport1_1, space.device().safe_pc());
464      m_gx_wrport1_1 = (data>>16)&0xff;
465//      logerror("write %x to IRQ register (PC=%x)\n", m_gx_wrport1_1, space.device().safe_pc());
483466
484      // gx_syncen is to ensure each IRQ is trigger at least once after being enabled
485      if (konamigx_wrport1_1 & 0x80)
486         gx_syncen |= konamigx_wrport1_1 & 0x1f;
467      // m_gx_syncen is to ensure each IRQ is triggered at least once after being enabled
468      if (m_gx_wrport1_1 & 0x80)
469         m_gx_syncen |= m_gx_wrport1_1 & 0x1f;
487470   }
488471}
489472
r241527r241528
526509
527510      m_k055673->k053246_set_objcha_line((data&0x100000) ? ASSERT_LINE : CLEAR_LINE);
528511
529      konamigx_wrport2 = (data>>16)&0xff;
512      m_gx_wrport2 = (data>>16)&0xff;
530513   }
531514}
532515
r241527r241528
534517/**********************************************************************************/
535518/* IRQ controllers */
536519
537static int suspension_active, resume_trigger;
538
539520READ32_MEMBER(konamigx_state::ccu_r)
540521{
541522   // the routine at 204abe in opengolf polls to see if we're in vblank (it wants values between 0x111 and 0x1df)
r241527r241528
559540      if (ACCESSING_BITS_24_31)
560541      {
561542         m_maincpu->set_input_line(1, CLEAR_LINE);
562         gx_syncen |= 0x20;
543         m_gx_syncen |= 0x20;
563544      }
564545
565546      // hblank interrupt ACK
566547      if (ACCESSING_BITS_8_15)
567548      {
568549         m_maincpu->set_input_line(2, CLEAR_LINE);
569         gx_syncen |= 0x40;
550         m_gx_syncen |= 0x40;
570551      }
571552   }
572553}
r241527r241528
588569TIMER_CALLBACK_MEMBER(konamigx_state::dmaend_callback)
589570{
590571   // foul-proof (CPU0 could be deactivated while we wait)
591   if (resume_trigger && suspension_active)
572   if (m_resume_trigger && m_suspension_active)
592573   {
593      suspension_active = 0;
594      machine().scheduler().trigger(resume_trigger);
574      m_suspension_active = 0;
575      machine().scheduler().trigger(m_resume_trigger);
595576   }
596577
597578   // DMA busy flag must be cleared before triggering IRQ 3
598   gx_rdport1_3 &= ~2;
579   m_gx_rdport1_3 &= ~2;
599580
600581   // IRQ 3 is the "object DMA end" IRQ also happens during vblank
601   if ((konamigx_wrport1_1 & 0x84) == 0x84 || (gx_syncen & 4))
582   if ((m_gx_wrport1_1 & 0x84) == 0x84 || (m_gx_syncen & 4))
602583   {
603      gx_syncen &= ~4;
584      m_gx_syncen &= ~4;
604585
605586      // lower OBJINT-REQ flag and trigger interrupt
606      gx_rdport1_3 &= ~0x80;
587      m_gx_rdport1_3 &= ~0x80;
607588      m_maincpu->set_input_line(3, HOLD_LINE);
608589   }
609590}
r241527r241528
611592void konamigx_state::dmastart_callback(int data)
612593{
613594   // raise the DMA busy flag
614   gx_rdport1_3 |= 2;
595   m_gx_rdport1_3 |= 2;
615596
616597   // begin transfer if DMAEN(bit4 of OBJSET1) is set (see p.48)
617598   if (m_k055673->k053246_read_register(5) & 0x10)
r241527r241528
621602   }
622603
623604   // simulate DMA delay
624   dmadelay_timer->adjust(attotime::from_usec(120));
605   m_dmadelay_timer->adjust(attotime::from_usec(120));
625606}
626607
627608
628609INTERRUPT_GEN_MEMBER(konamigx_state::konamigx_vbinterrupt)
629610{
630611   // lift idle suspension
631   if (resume_trigger && suspension_active)
612   if (m_resume_trigger && m_suspension_active)
632613   {
633      suspension_active = 0;
634      machine().scheduler().trigger(resume_trigger);
614      m_suspension_active = 0;
615      machine().scheduler().trigger(m_resume_trigger);
635616   }
636617
637618   // IRQ 1 is the main 60hz vblank interrupt
638   if (gx_syncen & 0x20)
619   if (m_gx_syncen & 0x20)
639620   {
640      gx_syncen &= ~0x20;
621      m_gx_syncen &= ~0x20;
641622
642      if ((konamigx_wrport1_1 & 0x81) == 0x81 || (gx_syncen & 1))
623      if ((m_gx_wrport1_1 & 0x81) == 0x81 || (m_gx_syncen & 1))
643624      {
644         gx_syncen &= ~1;
625         m_gx_syncen &= ~1;
645626         device.execute().set_input_line(1, HOLD_LINE);
646627      }
647628   }
r241527r241528
656637   if (scanline == 240)
657638   {
658639      // lift idle suspension
659      if (resume_trigger && suspension_active)
640      if (m_resume_trigger && m_suspension_active)
660641      {
661         suspension_active = 0;
662         machine().scheduler().trigger(resume_trigger);
642         m_suspension_active = 0;
643         machine().scheduler().trigger(m_resume_trigger);
663644      }
664645
665646      // IRQ 1 is the main 60hz vblank interrupt
666      // the gx_syncen & 0x20 test doesn't work on type 3 or 4 ROM boards, likely because the ROM board
647      // the m_gx_syncen & 0x20 test doesn't work on type 3 or 4 ROM boards, likely because the ROM board
667648      // generates the timing in those cases.  With this change, rushing heroes and rng2 boot :)
668649
669650      // maybe this interrupt should only be every 30fps, or maybe there are flags to prevent the game running too fast
670651      // the real hardware should output the display for each screen on alternate frames
671652      //  if(device->m_screen->frame_number() & 1)
672      if (1) // gx_syncen & 0x20)
653      if (1) // m_gx_syncen & 0x20)
673654      {
674         gx_syncen &= ~0x20;
655         m_gx_syncen &= ~0x20;
675656
676         if ((konamigx_wrport1_1 & 0x81) == 0x81 || (gx_syncen & 1))
657         if ((m_gx_wrport1_1 & 0x81) == 0x81 || (m_gx_syncen & 1))
677658         {
678            gx_syncen &= ~1;
659            m_gx_syncen &= ~1;
679660            m_maincpu->set_input_line(1, HOLD_LINE);
680661
681662         }
r241527r241528
686667   else if(scanline < 240) // hblank
687668   {
688669      // IRQ 2 is a programmable interrupt with scanline resolution
689      if (gx_syncen & 0x40)
670      if (m_gx_syncen & 0x40)
690671      {
691         gx_syncen &= ~0x40;
672         m_gx_syncen &= ~0x40;
692673
693         if ((konamigx_wrport1_1 & 0x82) == 0x82 || (gx_syncen & 2))
674         if ((m_gx_wrport1_1 & 0x82) == 0x82 || (m_gx_syncen & 2))
694675         {
695            gx_syncen &= ~2;
676            m_gx_syncen &= ~2;
696677            m_maincpu->set_input_line(2, HOLD_LINE);
697678         }
698679      }
r241527r241528
759740   return ROM[offset];
760741}
761742
762//static int sync_frame = 0;
763
764743READ32_MEMBER(konamigx_state::type3_sync_r)
765744{
766745   if(m_konamigx_current_frame==0)
r241527r241528
768747   else
769748      return 0;// return 0xfffffffe | 0;
770749}
771static int last_prot_op, last_prot_clk;
772750
751
773752/*
774753    Run and Gun 2, Rushing Heroes, Winning Spike, and Vs. Net Soccer contain a XILINX FPGA that serves as security.
775754
r241527r241528
844823    move.l  #$C10400,($C102EC).l       move.l  #$C10400,($C102EC).l
845824*/
846825
847//static int cc=0;
848
849826WRITE32_MEMBER(konamigx_state::type4_prot_w)
850827{
851828   int clk;
r241527r241528
853830
854831   if (offset == 1)
855832   {
856      last_prot_op = data>>16;
833      m_last_prot_op = data>>16;
857834   }
858835   else
859836   {
860837      data >>= 16;
861838
862839      clk = data & 0x200;
863      if ((clk == 0) && (last_prot_clk != 0))
840      if ((clk == 0) && (m_last_prot_clk != 0))
864841      {
865         if (last_prot_op != -1)
842         if (m_last_prot_op != -1)
866843         {
867//              osd_printf_debug("type 4 prot command: %x\n", last_prot_op);
844//              osd_printf_debug("type 4 prot command: %x\n", m_last_prot_op);
868845            /*
869846                known commands:
870847                rng2   rushhero  vsnet  winspike   what
r241527r241528
874851                       0d97  0515              parse big DMA list at c10200
875852                             57a       copy 4 bytes from c00f10 to c10f00 and 4 bytes from c00f30 to c0fe00
876853            */
877            if ((last_prot_op == 0xa56) || (last_prot_op == 0xd96) || (last_prot_op == 0xd14) || (last_prot_op == 0xd1c))
854            if ((m_last_prot_op == 0xa56) || (m_last_prot_op == 0xd96) || (m_last_prot_op == 0xd14) || (m_last_prot_op == 0xd1c))
878855            {
879856               // memcpy from c01000 to c01400 for 0x400 bytes (startup check for type 4 games)
880857               for (i = 0; i < 0x400; i += 2)
r241527r241528
882859                  space.write_word(0xc01400+i, space.read_word(0xc01000+i));
883860               }
884861            }
885            else if(last_prot_op == 0x57a)  // winspike
862            else if(m_last_prot_op == 0x57a)  // winspike
886863            {
887864               /* player 1 input buffer protection */
888865               space.write_dword(0xc10f00, space.read_dword(0xc00f10));
r241527r241528
894871               space.write_dword(0xc0fe00, space.read_dword(0xc00f30));
895872               space.write_dword(0xc0fe04, space.read_dword(0xc00f34));
896873            }
897            else if(last_prot_op == 0xd97)  // rushhero
874            else if(m_last_prot_op == 0xd97)  // rushhero
898875            {
899876               int src = 0xc09ff0;
900877               int dst = 0xd20000;
r241527r241528
917894               space.write_byte(0xc01cc4, ~space.read_byte(0xc00547));
918895               space.write_byte(0xc01cc5, ~space.read_byte(0xc00567));
919896            }
920            else if(last_prot_op == 0xb16) // slamdnk2
897            else if(m_last_prot_op == 0xb16) // slamdnk2
921898            {
922899               int src = 0xc01000;
923900               int dst = 0xd20000;
r241527r241528
932909
933910               //maybe here there's a [$d8001f] <- 0x31 write too?
934911            }
935            else if(last_prot_op == 0x515) // vsnetscr screen 1
912            else if(m_last_prot_op == 0x515) // vsnetscr screen 1
936913            {
937914               int adr;
938               //printf("GXT4: command %x %d (PC=%x)\n", last_prot_op, cc++, space.device().safe_pc());
915               //printf("GXT4: command %x %d (PC=%x)\n", m_last_prot_op, cc++, space.device().safe_pc());
939916               for (adr = 0; adr < 0x400; adr += 2)
940917                  space.write_word(0xc01c00+adr, space.read_word(0xc01800+adr));
941918            }
942            else if(last_prot_op == 0x115d) // vsnetscr screen 2
919            else if(m_last_prot_op == 0x115d) // vsnetscr screen 2
943920            {
944921               int adr;
945               //printf("GXT4: command %x %d (PC=%x)\n", last_prot_op, cc++, space.device().safe_pc());
922               //printf("GXT4: command %x %d (PC=%x)\n", m_last_prot_op, cc++, space.device().safe_pc());
946923               for (adr = 0; adr < 0x400; adr += 2)
947924                  space.write_word(0xc18c00+adr, space.read_word(0xc18800+adr));
948925            }
949926            else
950927            {
951               printf("GXT4: unknown protection command %x (PC=%x)\n", last_prot_op, space.device().safe_pc());
928               printf("GXT4: unknown protection command %x (PC=%x)\n", m_last_prot_op, space.device().safe_pc());
952929            }
953930
954            if (konamigx_wrport1_1 & 0x10)
931            if (m_gx_wrport1_1 & 0x10)
955932            {
956               gx_rdport1_3 &= ~8;
933               m_gx_rdport1_3 &= ~8;
957934               m_maincpu->set_input_line(4, HOLD_LINE);
958935            }
959936
960937            // don't accidentally do a phony command
961            last_prot_op = -1;
938            m_last_prot_op = -1;
962939         }
963940      }
964      last_prot_clk = clk;
941      m_last_prot_clk = clk;
965942   }
966943}
967944
r241527r241528
11801157
11811158   // note: racin' force expects bit 1 of the eeprom port to toggle
11821159   PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
1183   PORT_BIT( 0x000000fe, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, konamigx_state,gx_rdport1_3_r, NULL)
1160   PORT_BIT( 0x000000fe, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, konamigx_state, gx_rdport1_3_r, NULL)
11841161   PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_COIN1 )
11851162   PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_COIN2 )
11861163   PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_UNKNOWN )
r241527r241528
35783555
35793556MACHINE_START_MEMBER(konamigx_state,konamigx)
35803557{
3581   save_item(NAME(konamigx_wrport1_1));
3558   save_item(NAME(m_gx_wrport1_1));
35823559}
35833560
35843561MACHINE_RESET_MEMBER(konamigx_state,konamigx)
35853562{
3586   konamigx_wrport1_0 = konamigx_wrport1_1 = 0;
3587   konamigx_wrport2 = 0;
3563   m_gx_wrport1_0 = m_gx_wrport1_1 = 0;
3564   m_gx_wrport2 = 0;
35883565
35893566/*
35903567    bit0  : EEPROM data(don't care)
35913568    bit1  : DMA busy   (cleared)
35923569    bit2-7: IRQ ready  (all set)
35933570*/
3594   gx_rdport1_3 = 0xfc;
3595   gx_syncen    = 0;
3596   suspension_active = 0;
3571   m_gx_rdport1_3 = 0xfc;
3572   m_gx_syncen    = 0;
3573   m_suspension_active = 0;
35973574
35983575   // Hold sound CPUs in reset
35993576   m_soundcpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
r241527r241528
36333610
36343611      // To hack around this, we underclock the 68020 for 10 seconds during POST
36353612      m_maincpu->set_clock_scale(0.66f);
3636      boothack_timer->adjust(attotime::from_seconds(10));
3613      m_boothack_timer->adjust(attotime::from_seconds(10));
36373614   }
36383615
36393616   if (!strcmp(setname, "le2") ||
r241527r241528
37083685   int i, match;
37093686   int readback = 0;
37103687
3711   konamigx_cfgport = -1;
3712   last_prot_op = -1;
3713   last_prot_clk = 0;
3688   m_gx_cfgport = -1;
3689   m_last_prot_op = -1;
3690   m_last_prot_clk = 0;
37143691
3715   esc_cb = 0;
3716   resume_trigger = 0;
3692   m_esc_cb = NULL;
3693   m_resume_trigger = 0;
37173694
3718   dmadelay_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(konamigx_state::dmaend_callback),this));
3719   boothack_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(konamigx_state::boothack_callback),this));
3695   m_dmadelay_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(konamigx_state::dmaend_callback),this));
3696   m_boothack_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(konamigx_state::boothack_callback),this));
37203697
37213698   i = match = 0;
37223699   while ((gameDefs[i].cfgport != -1) && (!match))
r241527r241528
37243701      if (!strcmp(machine().system().name, gameDefs[i].romname))
37253702      {
37263703         match = 1;
3727         konamigx_cfgport = gameDefs[i].cfgport;
3704         m_gx_cfgport = gameDefs[i].cfgport;
37283705         readback = gameDefs[i].readback;
37293706
37303707         switch (gameDefs[i].special)
r241527r241528
37453722               rom[0x810f1] &= ~1;      // fix checksum
37463723               rom[0x872ea] |= 0xe0000; // enable plane B,C,D
37473724
3748               esc_cb = tkmmpzdm_esc;
3725               m_esc_cb = &konamigx_state::tkmmpzdm_esc;
37493726               break;
37503727            }
37513728
37523729            case 3: // dragoon might
3753               esc_cb = dragoonj_esc;
3730               m_esc_cb = &konamigx_state::dragoonj_esc;
37543731               break;
37553732
37563733            case 4: // sexyparo
3757               esc_cb = sexyparo_esc;
3734               m_esc_cb = &konamigx_state::sexyparo_esc;
37583735               break;
37593736
37603737            case 5: // daiskiss
3761               esc_cb = daiskiss_esc;
3738               m_esc_cb = &konamigx_state::daiskiss_esc;
37623739               break;
37633740
37643741            case 6: // salamander 2
3765               esc_cb = sal2_esc;
3742               m_esc_cb = &konamigx_state::sal2_esc;
37663743               break;
37673744
37683745            case 7: // install type 4 Xilinx protection for non-type 3/4 games
r241527r241528
37703747               break;
37713748
37723749            case 8: // tbyahhoo
3773               esc_cb = tbyahhoo_esc;
3750               m_esc_cb = &konamigx_state::tbyahhoo_esc;
37743751               break;
37753752
37763753            case 9: // fantjour
trunk/src/mame/drivers/mystwarr.c
r241527r241528
850850   m_mw_irq_control = 0;
851851
852852   /* konamigx_mixer uses this, so better initialize it */
853   konamigx_wrport1_0 = 0;
853   m_gx_wrport1_0 = 0;
854854
855855   save_item(NAME(m_mw_irq_control));
856856   save_item(NAME(m_sound_ctrl));
trunk/src/mame/drivers/peplus.c
r241527r241528
206206
207207   peplus_state(const machine_config &mconfig, device_type type, const char *tag)
208208      : driver_device(mconfig, type, tag),
209         m_cmos_ram(*this, "cmos") ,
209      m_maincpu(*this, "maincpu"),
210      m_crtc(*this, "crtc"),
211      m_i2cmem(*this, "i2cmem"),
212      m_screen(*this, "screen"),
213      m_gfxdecode(*this, "gfxdecode"),
214      m_palette(*this, "palette"),
215      m_cmos_ram(*this, "cmos"),
210216      m_program_ram(*this, "prograram"),
211217      m_s3000_ram(*this, "s3000_ram"),
212218      m_s5000_ram(*this, "s5000_ram"),
r241527r241528
215221      m_sb000_ram(*this, "sb000_ram"),
216222      m_sd000_ram(*this, "sd000_ram"),
217223      m_sf000_ram(*this, "sf000_ram"),
218      m_io_port(*this, "io_port"),
219      m_maincpu(*this, "maincpu"),
220      m_i2cmem(*this, "i2cmem"),
221      m_gfxdecode(*this, "gfxdecode"),
222      m_palette(*this, "palette")
224      m_io_port(*this, "io_port")
223225   {
224226   }
225227
228   required_device<cpu_device> m_maincpu;
229   required_device<r6545_1_device> m_crtc;
230   required_device<i2cmem_device> m_i2cmem;
231   required_device<screen_device> m_screen;
232   required_device<gfxdecode_device> m_gfxdecode;
233   required_device<palette_device> m_palette;
234   
226235   required_shared_ptr<UINT8> m_cmos_ram;
227236   required_shared_ptr<UINT8> m_program_ram;
228237   required_shared_ptr<UINT8> m_s3000_ram;
r241527r241528
233242   required_shared_ptr<UINT8> m_sd000_ram;
234243   required_shared_ptr<UINT8> m_sf000_ram;
235244   required_shared_ptr<UINT8> m_io_port;
245   
236246   tilemap_t *m_bg_tilemap;
237247   UINT8 m_wingboard;
238248   UINT8 m_doorcycle;
r241527r241528
260270   UINT8 m_bv_data_bit;
261271   UINT8 m_bv_loop_count;
262272   UINT16 id023_data;
273   
263274   DECLARE_WRITE8_MEMBER(peplus_bgcolor_w);
264275   DECLARE_WRITE8_MEMBER(peplus_crtc_display_w);
265   DECLARE_WRITE8_MEMBER(peplus_io_w);
266276   DECLARE_WRITE8_MEMBER(peplus_duart_w);
267277   DECLARE_WRITE8_MEMBER(peplus_cmos_w);
268   DECLARE_WRITE8_MEMBER(peplus_s3000_w);
269   DECLARE_WRITE8_MEMBER(peplus_s5000_w);
270   DECLARE_WRITE8_MEMBER(peplus_s7000_w);
271   DECLARE_WRITE8_MEMBER(peplus_sb000_w);
272   DECLARE_WRITE8_MEMBER(peplus_sd000_w);
273   DECLARE_WRITE8_MEMBER(peplus_sf000_w);
274278   DECLARE_WRITE8_MEMBER(peplus_output_bank_a_w);
275279   DECLARE_WRITE8_MEMBER(peplus_output_bank_b_w);
276280   DECLARE_WRITE8_MEMBER(peplus_output_bank_c_w);
277   DECLARE_READ8_MEMBER(peplus_io_r);
278281   DECLARE_READ8_MEMBER(peplus_duart_r);
279   DECLARE_READ8_MEMBER(peplus_cmos_r);
280   DECLARE_READ8_MEMBER(peplus_s3000_r);
281   DECLARE_READ8_MEMBER(peplus_s5000_r);
282   DECLARE_READ8_MEMBER(peplus_s7000_r);
283   DECLARE_READ8_MEMBER(peplus_sb000_r);
284   DECLARE_READ8_MEMBER(peplus_sd000_r);
285   DECLARE_READ8_MEMBER(peplus_sf000_r);
286282   DECLARE_READ8_MEMBER(peplus_bgcolor_r);
287283   DECLARE_READ8_MEMBER(peplus_dropdoor_r);
288284   DECLARE_READ8_MEMBER(peplus_watchdog_r);
r241527r241528
303299   UINT32 screen_update_peplus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
304300   void peplus_load_superdata(const char *bank_name);
305301   DECLARE_PALETTE_INIT(peplus);
306   required_device<cpu_device> m_maincpu;
307   required_device<i2cmem_device> m_i2cmem;
308   required_device<gfxdecode_device> m_gfxdecode;
309   required_device<palette_device> m_palette;
302   void handle_lightpen();
310303
311304protected:
312305   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
r241527r241528
392385   switch (id)
393386   {
394387   case TIMER_ASSERT_LP:
395      downcast<mc6845_device *>((device_t*)ptr)->assert_light_pen_input();
388      m_crtc->assert_light_pen_input();
396389      break;
397390   default:
398391      assert_always(FALSE, "Unknown id in peplus_state::device_timer");
r241527r241528
400393}
401394
402395
403static void handle_lightpen( mc6845_device *device )
396void peplus_state::handle_lightpen()
404397{
405   peplus_state *state = device->machine().driver_data<peplus_state>();
406   int x_val = device->machine().root_device().ioport("TOUCH_X")->read_safe(0x00);
407   int y_val = device->machine().root_device().ioport("TOUCH_Y")->read_safe(0x00);
408   const rectangle &vis_area = device->screen().visible_area();
398   int x_val = ioport("TOUCH_X")->read_safe(0x00);
399   int y_val = ioport("TOUCH_Y")->read_safe(0x00);
400   const rectangle &vis_area = m_screen->visible_area();
409401   int xt, yt;
410402
411403   xt = x_val * vis_area.width() / 1024 + vis_area.min_x;
412404   yt = y_val * vis_area.height() / 1024 + vis_area.min_y;
413405
414   state->timer_set(device->screen().time_until_pos(yt, xt), peplus_state::TIMER_ASSERT_LP, 0, device);
406   timer_set(m_screen->time_until_pos(yt, xt), TIMER_ASSERT_LP, 0);
415407}
416408
417409WRITE_LINE_MEMBER(peplus_state::crtc_vsync)
418410{
419   mc6845_device *device = machine().device<mc6845_device>("crtc");
420411   m_maincpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE);
421   handle_lightpen(device);
412   handle_lightpen();
422413}
423414
424415WRITE8_MEMBER(peplus_state::peplus_crtc_display_w)
r241527r241528
431422   m_bg_tilemap->mark_tile_dirty(m_vid_address);
432423
433424   /* An access here triggers a device read !*/
434   machine().device<mc6845_device>("crtc")->register_r(space, 0);
425   m_crtc->register_r(space, 0);
435426}
436427
437WRITE8_MEMBER(peplus_state::peplus_io_w)
438{
439   m_io_port[offset] = data;
440}
441
442428WRITE8_MEMBER(peplus_state::peplus_duart_w)
443429{
444430   // Used for Slot Accounting System Communication
r241527r241528
458444   m_cmos_ram[offset] = data;
459445}
460446
461WRITE8_MEMBER(peplus_state::peplus_s3000_w)
462{
463   m_s3000_ram[offset] = data;
464}
465
466WRITE8_MEMBER(peplus_state::peplus_s5000_w)
467{
468   m_s5000_ram[offset] = data;
469}
470
471WRITE8_MEMBER(peplus_state::peplus_s7000_w)
472{
473   m_s7000_ram[offset] = data;
474}
475
476WRITE8_MEMBER(peplus_state::peplus_sb000_w)
477{
478   m_sb000_ram[offset] = data;
479}
480
481WRITE8_MEMBER(peplus_state::peplus_sd000_w)
482{
483   m_sd000_ram[offset] = data;
484}
485
486WRITE8_MEMBER(peplus_state::peplus_sf000_w)
487{
488   m_sf000_ram[offset] = data;
489}
490
491447WRITE8_MEMBER(peplus_state::peplus_output_bank_a_w)
492448{
493449   output_set_value("pe_bnka0",(data >> 0) & 1); /* Coin Lockout */
r241527r241528
542498* Read Handlers *
543499****************/
544500
545READ8_MEMBER(peplus_state::peplus_io_r)
546{
547   return m_io_port[offset];
548}
549
550501READ8_MEMBER(peplus_state::peplus_duart_r)
551502{
552503   // Used for Slot Accounting System Communication
553504   return 0x00;
554505}
555506
556READ8_MEMBER(peplus_state::peplus_cmos_r)
557{
558   return m_cmos_ram[offset];
559}
560
561READ8_MEMBER(peplus_state::peplus_s3000_r)
562{
563   return m_s3000_ram[offset];
564}
565
566READ8_MEMBER(peplus_state::peplus_s5000_r)
567{
568   return m_s5000_ram[offset];
569}
570
571READ8_MEMBER(peplus_state::peplus_s7000_r)
572{
573   return m_s7000_ram[offset];
574}
575
576READ8_MEMBER(peplus_state::peplus_sb000_r)
577{
578   return m_sb000_ram[offset];
579}
580
581READ8_MEMBER(peplus_state::peplus_sd000_r)
582{
583   return m_sd000_ram[offset];
584}
585
586READ8_MEMBER(peplus_state::peplus_sf000_r)
587{
588   return m_sf000_ram[offset];
589}
590
591507/* Last Color in Every Palette is bgcolor */
592508READ8_MEMBER(peplus_state::peplus_bgcolor_r)
593509{
r241527r241528
1056972
1057973static ADDRESS_MAP_START( peplus_iomap, AS_IO, 8, peplus_state )
1058974   // Battery-backed RAM (0x1000-0x01fff Extended RAM for Superboards Only)
1059   AM_RANGE(0x0000, 0x1fff) AM_READWRITE(peplus_cmos_r, peplus_cmos_w) AM_SHARE("cmos")
975   AM_RANGE(0x0000, 0x1fff) AM_RAM_WRITE(peplus_cmos_w) AM_SHARE("cmos")
1060976
1061977   // CRT Controller
1062978   AM_RANGE(0x2008, 0x2008) AM_WRITE(peplus_crtc_mode_w)
r241527r241528
1065981   AM_RANGE(0x2083, 0x2083) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(peplus_crtc_display_w)
1066982
1067983   // Superboard Data
1068   AM_RANGE(0x3000, 0x3fff) AM_READWRITE(peplus_s3000_r, peplus_s3000_w) AM_SHARE("s3000_ram")
984   AM_RANGE(0x3000, 0x3fff) AM_RAM AM_SHARE("s3000_ram")
1069985
1070986   // Sound and Dipswitches
1071987   AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("aysnd", ay8910_device, address_w)
1072988   AM_RANGE(0x4004, 0x4004) AM_READ_PORT("SW1")/* likely ay8910 input port, not direct */ AM_DEVWRITE("aysnd", ay8910_device, data_w)
1073989
1074990   // Superboard Data
1075   AM_RANGE(0x5000, 0x5fff) AM_READWRITE(peplus_s5000_r, peplus_s5000_w) AM_SHARE("s5000_ram")
991   AM_RANGE(0x5000, 0x5fff) AM_RAM AM_SHARE("s5000_ram")
1076992
1077993   // Background Color Latch
1078994   AM_RANGE(0x6000, 0x6000) AM_READ(peplus_bgcolor_r) AM_WRITE(peplus_bgcolor_w)
r241527r241528
1081997   AM_RANGE(0x06001, 0x06400) AM_RAM AM_SHARE("videoram")
1082998
1083999   // Superboard Data
1084   AM_RANGE(0x7000, 0x7fff) AM_READWRITE(peplus_s7000_r, peplus_s7000_w) AM_SHARE("s7000_ram")
1000   AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("s7000_ram")
10851001
10861002   // Input Bank A, Output Bank C
10871003   AM_RANGE(0x8000, 0x8000) AM_READ(peplus_input_bank_a_r) AM_WRITE(peplus_output_bank_c_w)
r241527r241528
10931009   AM_RANGE(0xa000, 0xa000) AM_READ(peplus_input0_r) AM_WRITE(peplus_output_bank_b_w)
10941010
10951011   // Superboard Data
1096   AM_RANGE(0xb000, 0xbfff) AM_READWRITE(peplus_sb000_r, peplus_sb000_w) AM_SHARE("sb000_ram")
1012   AM_RANGE(0xb000, 0xbfff) AM_RAM AM_SHARE("sb000_ram")
10971013
10981014   // Output Bank A
10991015   AM_RANGE(0xc000, 0xc000) AM_READ(peplus_watchdog_r) AM_WRITE(peplus_output_bank_a_w)
11001016
11011017   // Superboard Data
1102   AM_RANGE(0xd000, 0xdfff) AM_READWRITE(peplus_sd000_r, peplus_sd000_w) AM_SHARE("sd000_ram")
1018   AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("sd000_ram")
11031019
11041020   // DUART
11051021   AM_RANGE(0xe000, 0xe00f) AM_READWRITE(peplus_duart_r, peplus_duart_w)
11061022
11071023   // Superboard Data
1108   AM_RANGE(0xf000, 0xffff) AM_READWRITE(peplus_sf000_r, peplus_sf000_w) AM_SHARE("sf000_ram")
1024   AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("sf000_ram")
11091025
11101026   /* Ports start here */
1111   AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_READ(peplus_io_r) AM_WRITE(peplus_io_w) AM_SHARE("io_port")
1027   AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_RAM AM_SHARE("io_port")
11121028ADDRESS_MAP_END
11131029
11141030
trunk/src/mame/includes/konamigx.h
r241527r241528
1616      m_maincpu(*this,"maincpu"),
1717      m_soundcpu(*this, "soundcpu"),
1818      m_dasp(*this, "dasp"),
19      m_workram(*this,"workram"),
20      m_psacram(*this,"psacram"),
21      m_subpaletteram32(*this,"subpaletteram"),
2219      m_k055673(*this, "k055673"),
2320      m_k055555(*this, "k055555"),
2421      m_k056832(*this, "k056832"),
2522      m_k054338(*this, "k054338"),
23      m_k056800(*this, "k056800"),
24      m_k054539_1(*this,"k054539_1"),
25      m_k054539_2(*this,"k054539_2"),
26      m_gfxdecode(*this, "gfxdecode"),
27      m_screen(*this, "screen"),
28      m_palette(*this, "palette"),
29      m_workram(*this,"workram"),
30      m_psacram(*this,"psacram"),
31      m_subpaletteram32(*this,"subpaletteram"),
2632      m_k053936_0_ctrl(*this,"k053936_0_ctrl",32),
2733      m_k053936_0_linectrl(*this,"k053936_0_line",32),
2834      m_k053936_0_ctrl_16(*this,"k053936_0_ct16",16),
2935      m_k053936_0_linectrl_16(*this,"k053936_0_li16",16),
3036      m_konamigx_type3_psac2_bank(*this,"psac2_bank"),
31      m_k056800(*this, "k056800"),
32      m_k054539_1(*this,"k054539_1"),
33      m_k054539_2(*this,"k054539_2"),
37      m_generic_paletteram_32(*this, "paletteram"),
3438      m_an0(*this, "AN0"),
3539      m_an1(*this, "AN1"),
3640      m_light0_x(*this, "LIGHT0_X"),
3741      m_light0_y(*this, "LIGHT0_Y"),
3842      m_light1_x(*this, "LIGHT1_X"),
3943      m_light1_y(*this, "LIGHT1_Y"),
40      m_eepromout(*this, "EEPROMOUT"),
41      m_gfxdecode(*this, "gfxdecode"),
42      m_screen(*this, "screen"),
43      m_palette(*this, "palette"),
44      m_generic_paletteram_32(*this, "paletteram")
44      m_eepromout(*this, "EEPROMOUT")
4545      { }
4646
4747   required_device<cpu_device> m_maincpu;
4848   optional_device<cpu_device> m_soundcpu;
4949   optional_device<tms57002_device> m_dasp;
50
51   optional_shared_ptr<UINT32> m_workram;
52   optional_shared_ptr<UINT32> m_psacram;
53   optional_shared_ptr<UINT32> m_subpaletteram32;
5450   required_device<k055673_device> m_k055673;
5551   required_device<k055555_device> m_k055555;
5652   required_device<k056832_device> m_k056832;
5753   optional_device<k054338_device> m_k054338;
58   optional_shared_ptr<UINT16> m_k053936_0_ctrl;
59   optional_shared_ptr<UINT16> m_k053936_0_linectrl;
60   optional_shared_ptr<UINT16> m_k053936_0_ctrl_16;
61   optional_shared_ptr<UINT16> m_k053936_0_linectrl_16;
62   optional_shared_ptr<UINT32> m_konamigx_type3_psac2_bank;
6354   optional_device<k056800_device> m_k056800;
6455   optional_device<k054539_device> m_k054539_1;
6556   optional_device<k054539_device> m_k054539_2;
66   optional_ioport m_an0, m_an1, m_light0_x, m_light0_y, m_light1_x, m_light1_y, m_eepromout;
6757   required_device<gfxdecode_device> m_gfxdecode;
6858   required_device<screen_device> m_screen;
6959   required_device<palette_device> m_palette;
60
61   optional_shared_ptr<UINT32> m_workram;
62   optional_shared_ptr<UINT32> m_psacram;
63   optional_shared_ptr<UINT32> m_subpaletteram32;
64   optional_shared_ptr<UINT16> m_k053936_0_ctrl;
65   optional_shared_ptr<UINT16> m_k053936_0_linectrl;
66   optional_shared_ptr<UINT16> m_k053936_0_ctrl_16;
67   optional_shared_ptr<UINT16> m_k053936_0_linectrl_16;
68   optional_shared_ptr<UINT32> m_konamigx_type3_psac2_bank;
7069   optional_shared_ptr<UINT32> m_generic_paletteram_32;
70   
71   optional_ioport m_an0, m_an1, m_light0_x, m_light0_y, m_light1_x, m_light1_y, m_eepromout;
7172
7273   DECLARE_WRITE32_MEMBER(esc_w);
7374   DECLARE_WRITE32_MEMBER(eeprom_w);
r241527r241528
166167   void fantjour_dma_install();
167168
168169   void konamigx_mixer_primode(int mode);
170   
171   typedef void (konamigx_state::*esc_cb)(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4);
172   
173   void tkmmpzdm_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4);
174   void dragoonj_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4);
175   void sal2_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4);
176   void sexyparo_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4);
177   void tbyahhoo_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4);
178   void daiskiss_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4);
179   
180   inline int K053247GX_combine_c18(int attrib);
181   inline int K055555GX_decode_objcolor(int c18);
182   inline int K055555GX_decode_inpri(int c18);
183   int K055555GX_decode_vmixcolor(int layer, int *color);
169184
170185   UINT8 m_sound_ctrl;
171186   UINT8 m_sound_intck;
172187   UINT32 m_fantjour_dma[8];
173188   int m_konamigx_current_frame;
174189   int m_gx_objdma, m_gx_primode;
175};
190   emu_timer *m_dmadelay_timer;
191   emu_timer *m_boothack_timer;
192   int m_gx_rdport1_3, m_gx_syncen;
193   int m_gx_cfgport;
194   int m_suspension_active, m_resume_trigger;
195   int m_last_prot_op, m_last_prot_clk;
196     
197   UINT8 m_esc_program[4096];
198   esc_cb m_esc_cb;
199   
200   UINT16 m_prot_data[0x20];
201   
202   // 1st-Tier GX/MW Variables
203   // frequently used registers
204   int m_k053247_vrcbk[4];
205   int m_k053247_coreg, m_k053247_coregshift, m_k053247_opset;
206   int m_opri, m_oinprion;
207   int m_vcblk[6], m_ocblk;
208   int m_vinmix, m_vmixon, m_osinmix, m_osmixon;
209   UINT8  m_gx_wrport1_0, m_gx_wrport1_1;
210   UINT16 m_gx_wrport2;
211   
212   // 2nd-Tier GX/MW Graphics Variables
213   UINT8 *m_gx_objzbuf, *m_gx_shdzbuf;
214   int m_layer_colorbase[4];
215   INT32 m_gx_tilebanks[8], m_gx_oldbanks[8];
216   int m_gx_tilemode, m_gx_rozenable, m_psac_colorbase, m_last_psac_colorbase;
217   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
218   int m_gx_rushingheroes_hack;
219   int m_gx_le2_textcolour_hack;
220   tilemap_t *m_gx_psac_tilemap, *m_gx_psac_tilemap2;
221   bitmap_ind16 *m_type3_roz_temp_bitmap;
222   tilemap_t *m_gx_psac_tilemap_alt;
223   int m_konamigx_has_dual_screen;
224   int m_konamigx_palformat;
225   bitmap_rgb32 *m_dualscreen_left_tempbitmap;
226   bitmap_rgb32 *m_dualscreen_right_tempbitmap;
227   
228   /* On Type-1 the K053936 output is rendered to these temporary bitmaps as raw data
229    the 'voxel' effect to give the pixels height is a post-process operation on the
230    output of the K053936 (this can clearly be seen in videos as large chunks of
231    scenary flicker when in the distance due to single pixels in the K053936 output
232    becoming visible / invisible due to drawing precision.
176233
234    -- however, progress on this has stalled as our K053936 doesn't seem to give
235       the right output for post processing, I suspect the game is using some
236       unsupported flipping modes (probably due to the way it's hooked up to the
237       rest of the chips) which is causing entirely the wrong output.
177238
178/*----------- defined in video/konamigx.c -----------*/
239    -- furthermore video/konamigx.c contains it's own implementation of
240       the K053936_zoom_draw named K053936GP_zoom_draw ...
179241
180242
181// 1st-Tier GX/MW Variables and Functions
182extern UINT8  konamigx_wrport1_0, konamigx_wrport1_1;
183extern UINT16 konamigx_wrport2;
243    */
244   bitmap_ind16 *m_gxtype1_roz_dstbitmap;
245   bitmap_ind16 *m_gxtype1_roz_dstbitmap2;
246   rectangle m_gxtype1_roz_dstbitmapclip;
247};
184248
185
186
187249// Sprite Callbacks
188250
189251/* callbacks should return color codes in this format:
trunk/src/mame/machine/konamigx.c
r241527r241528
4141*/
4242
4343// K055550/K053990 protection chips, perform simple memset() and other game logic operations
44static UINT16 prot_data[0x20];
4544
4645
47
4846READ16_MEMBER(konamigx_state::K055550_word_r)
4947{
50   return(prot_data[offset]);
48   return(m_prot_data[offset]);
5149}
5250
5351WRITE16_MEMBER(konamigx_state::K055550_word_w)
r241527r241528
5654   int src, tgt, srcend, tgtend, skip, cx1, sx1, wx1, cy1, sy1, wy1, cz1, sz1, wz1, c2, s2, w2;
5755   int dx, dy, angle;
5856
59   COMBINE_DATA(prot_data+offset);
57   COMBINE_DATA(m_prot_data+offset);
6058
6159   if (offset == 0 && ACCESSING_BITS_8_15)
6260   {
r241527r241528
6563      {
6664         case 0x97: // memset() (Dadandarn at 0x639dc)
6765         case 0x9f: // memset() (Violent Storm at 0x989c)
68            adr   = (prot_data[7] << 16) | prot_data[8];
69            bsize = (prot_data[10] << 16) | prot_data[11];
70            count = (prot_data[0] & 0xff) + 1;
66            adr   = (m_prot_data[7] << 16) | m_prot_data[8];
67            bsize = (m_prot_data[10] << 16) | m_prot_data[11];
68            count = (m_prot_data[0] & 0xff) + 1;
7169
7270            lim = adr+bsize*count;
7371            for(i=adr; i<lim; i+=2)
74               space.write_word(i, prot_data[0x1a/2]);
72               space.write_word(i, m_prot_data[0x1a/2]);
7573         break;
7674
7775         // WARNING: The following cases are speculation based with questionable accuracy!(AAT)
r241527r241528
8280            // gameplay. It refers to a 32x8-word list at 0x210e00 and seems to
8381            // be tied with another 13x128-byte table at 0x205080.
8482            // Both tables appear "check-only" and have little effect on gameplay.
85            count =(prot_data[0] & 0xff) + 1;          // unknown ( byte 0x00)
86            i     = prot_data[1];                      // unknown ( byte 0x1f)
87            adr   = prot_data[7]<<16 | prot_data[8];   // address (dword 0x210e00)
88            lim   = prot_data[9];                      // unknown ( word 0x0010)
89            src   = prot_data[10]<<16 | prot_data[11]; // unknown (dword zero)
90            tgt   = prot_data[12]<<16 | prot_data[13]; // unknown (dword zero)
83            count =(m_prot_data[0] & 0xff) + 1;          // unknown ( byte 0x00)
84            i     = m_prot_data[1];                      // unknown ( byte 0x1f)
85            adr   = m_prot_data[7]<<16 | m_prot_data[8];   // address (dword 0x210e00)
86            lim   = m_prot_data[9];                      // unknown ( word 0x0010)
87            src   = m_prot_data[10]<<16 | m_prot_data[11]; // unknown (dword zero)
88            tgt   = m_prot_data[12]<<16 | m_prot_data[13]; // unknown (dword zero)
9189         break;
9290
9391         case 0xa0: // update collision detection table (Violent Storm at 0x018b42)
94            count = prot_data[0] & 0xff;             // number of objects - 1
95            skip  = prot_data[1]>>(8-1);             // words to skip in each entry to reach the "hit list"
96            adr   = prot_data[2]<<16 | prot_data[3]; // where the table is located
97            bsize = prot_data[5]<<16 | prot_data[6]; // object entry size in bytes
92            count = m_prot_data[0] & 0xff;             // number of objects - 1
93            skip  = m_prot_data[1]>>(8-1);             // words to skip in each entry to reach the "hit list"
94            adr   = m_prot_data[2]<<16 | m_prot_data[3]; // where the table is located
95            bsize = m_prot_data[5]<<16 | m_prot_data[6]; // object entry size in bytes
9896
9997            srcend = adr + bsize * count;
10098            tgtend = srcend + bsize;
r241527r241528
142140         break;
143141
144142         case 0xc0: // calculate object "homes-in" vector (Violent Storm at 0x03da9e)
145            dx = (short)prot_data[0xc];
146            dy = (short)prot_data[0xd];
143            dx = (short)m_prot_data[0xc];
144            dy = (short)m_prot_data[0xd];
147145
148146            // it's not necessary to use lookup tables because Violent Storm
149147            // only calls the service once per enemy per frame.
r241527r241528
165163            else
166164               i = machine().rand() & 0xff; // vector direction indeterminate
167165
168            prot_data[0x10] = i;
166            m_prot_data[0x10] = i;
169167         break;
170168
171169         default:
r241527r241528
183181   int mode, i, element_size = 1;
184182   UINT16 mod_val, mod_data;
185183
186   COMBINE_DATA(prot_data+offset);
184   COMBINE_DATA(m_prot_data+offset);
187185
188186   if (offset == 0x0c && ACCESSING_BITS_8_15)
189187   {
190      mode  = (prot_data[0x0d]<<8 & 0xff00) | (prot_data[0x0f] & 0xff);
188      mode  = (m_prot_data[0x0d]<<8 & 0xff00) | (m_prot_data[0x0f] & 0xff);
191189
192190      switch (mode)
193191      {
194192         case 0xffff: // word copy
195193            element_size = 2;
196194         case 0xff00: // byte copy
197            src_addr  = prot_data[0x0];
198            src_addr |= prot_data[0x1]<<16 & 0xff0000;
199            dst_addr  = prot_data[0x2];
200            dst_addr |= prot_data[0x3]<<16 & 0xff0000;
201            src_count = prot_data[0x8]>>8;
202            //dst_count = prot_data[0x9]>>8;
203            src_skip  = prot_data[0xa] & 0xff;
204            dst_skip  = prot_data[0xb] & 0xff;
195            src_addr  = m_prot_data[0x0];
196            src_addr |= m_prot_data[0x1]<<16 & 0xff0000;
197            dst_addr  = m_prot_data[0x2];
198            dst_addr |= m_prot_data[0x3]<<16 & 0xff0000;
199            src_count = m_prot_data[0x8]>>8;
200            //dst_count = m_prot_data[0x9]>>8;
201            src_skip  = m_prot_data[0xa] & 0xff;
202            dst_skip  = m_prot_data[0xb] & 0xff;
205203
206            if ((prot_data[0x8] & 0xff) == 2) src_count <<= 1;
204            if ((m_prot_data[0x8] & 0xff) == 2) src_count <<= 1;
207205            src_skip += element_size;
208206            dst_skip += element_size;
209207
r241527r241528
223221         break;
224222
225223         case 0x00ff: // sprite list modifier
226            src_addr  = prot_data[0x0];
227            src_addr |= prot_data[0x1]<<16 & 0xff0000;
228            src_skip  = prot_data[0x1]>>8;
229            dst_addr  = prot_data[0x2];
230            dst_addr |= prot_data[0x3]<<16 & 0xff0000;
231            dst_skip  = prot_data[0x3]>>8;
232            mod_addr  = prot_data[0x4];
233            mod_addr |= prot_data[0x5]<<16 & 0xff0000;
234            mod_skip  = prot_data[0x5]>>8;
235            mod_offs  = prot_data[0x8] & 0xff;
224            src_addr  = m_prot_data[0x0];
225            src_addr |= m_prot_data[0x1]<<16 & 0xff0000;
226            src_skip  = m_prot_data[0x1]>>8;
227            dst_addr  = m_prot_data[0x2];
228            dst_addr |= m_prot_data[0x3]<<16 & 0xff0000;
229            dst_skip  = m_prot_data[0x3]>>8;
230            mod_addr  = m_prot_data[0x4];
231            mod_addr |= m_prot_data[0x5]<<16 & 0xff0000;
232            mod_skip  = m_prot_data[0x5]>>8;
233            mod_offs  = m_prot_data[0x8] & 0xff;
236234            mod_offs<<= 1;
237235            mod_count = 0x100;
238236
trunk/src/mame/video/konamigx.c
r241527r241528
1111//#define GX_DEBUG
1212#define VERBOSE 0
1313
14/***************************************************************************/
15/*                                                                         */
16/*                     2nd-Tier GX/MW Graphics Functions                   */
17/*                                                                         */
18/***************************************************************************/
1914
20
21
22static UINT8 *gx_objzbuf, *gx_shdzbuf;
23
24
25
26static int layer_colorbase[4];
27static INT32 gx_tilebanks[8], gx_oldbanks[8];
28static int gx_tilemode, gx_rozenable, psac_colorbase, last_psac_colorbase;
29static 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
30static int gx_rushingheroes_hack;
31static int gx_le2_textcolour_hack;
32static tilemap_t *gx_psac_tilemap, *gx_psac_tilemap2;
33static bitmap_ind16* type3_roz_temp_bitmap;
34static tilemap_t* gx_psac_tilemap_alt;
35
36static int konamigx_has_dual_screen;
3715INLINE void set_color_555(palette_device &palette, pen_t color, int rshift, int gshift, int bshift, UINT16 data);
38static int konamigx_palformat;
39static bitmap_rgb32* dualscreen_left_tempbitmap;
40static bitmap_rgb32* dualscreen_right_tempbitmap;
4116
42/* On Type-1 the K053936 output is rendered to these temporary bitmaps as raw data
43   the 'voxel' effect to give the pixels height is a post-process operation on the
44   output of the K053936 (this can clearly be seen in videos as large chunks of
45   scenary flicker when in the distance due to single pixels in the K053936 output
46   becoming visible / invisible due to drawing precision.
4717
48   -- however, progress on this has stalled as our K053936 doesn't seem to give
49      the right output for post processing, I suspect the game is using some
50      unsupported flipping modes (probably due to the way it's hooked up to the
51      rest of the chips) which is causing entirely the wrong output.
52
53   -- furthermore machine/konamigx.c (!) contains it's own implementation of
54      the K053936_zoom_draw named K053936GP_zoom_draw ... It really shouldn't do,
55      epsecially not in 'machine', which isn't meant to be video related.
56
57
58   */
59static bitmap_ind16 *gxtype1_roz_dstbitmap;
60static bitmap_ind16 *gxtype1_roz_dstbitmap2;
61static rectangle gxtype1_roz_dstbitmapclip;
62
63/***************************************************************************/
64/*                                                                         */
65/*                 1st-Tier GX/MW Variables and Functions                  */
66/*                                                                         */
67/***************************************************************************/
68
69// global system ports access
70UINT8  konamigx_wrport1_0, konamigx_wrport1_1;
71UINT16 konamigx_wrport2;
72
73// frequently used registers
74static int k053247_vrcbk[4];
75static int k053247_coreg, k053247_coregshift, k053247_opset;
76static int opri, oinprion;
77static int vcblk[6], ocblk;
78static int vinmix, vmixon, osinmix, osmixon;
79
80
8118void konamigx_state::konamigx_precache_registers(void)
8219{
8320   // (see sprite color coding scheme on p.46 & 47)
r241527r241528
8623   int i;
8724
8825   i = m_k055673->k053247_read_register(0x8/2);
89   k053247_vrcbk[0] = (i & 0x000f) << 14;
90   k053247_vrcbk[1] = (i & 0x0f00) << 6;
26   m_k053247_vrcbk[0] = (i & 0x000f) << 14;
27   m_k053247_vrcbk[1] = (i & 0x0f00) << 6;
9128   i = m_k055673->k053247_read_register(0xa/2);
92   k053247_vrcbk[2] = (i & 0x000f) << 14;
93   k053247_vrcbk[3] = (i & 0x0f00) << 6;
29   m_k053247_vrcbk[2] = (i & 0x000f) << 14;
30   m_k053247_vrcbk[3] = (i & 0x0f00) << 6;
9431
9532   // COREG == OBJSET2+1C == bit8-11 of OPSET ??? (see p.50 last table, needs p.49 to confirm)
96   k053247_opset = m_k055673->k053247_read_register(0xc/2);
33   m_k053247_opset = m_k055673->k053247_read_register(0xc/2);
9734
98   i = k053247_opset & 7; if (i > 4) i = 4;
35   i = m_k053247_opset & 7; if (i > 4) i = 4;
9936
100   k053247_coreg = m_k055673->k053247_read_register(0xc/2)>>8 & 0xf;
101   k053247_coreg =(k053247_coreg & coregmasks[i]) << 12;
37   m_k053247_coreg = m_k055673->k053247_read_register(0xc/2)>>8 & 0xf;
38   m_k053247_coreg =(m_k053247_coreg & coregmasks[i]) << 12;
10239
103   k053247_coregshift = coregshifts[i];
40   m_k053247_coregshift = coregshifts[i];
10441
105   opri     = m_k055555->K055555_read_register(K55_PRIINP_8);
106   oinprion = m_k055555->K055555_read_register(K55_OINPRI_ON);
107   vcblk[0] = m_k055555->K055555_read_register(K55_PALBASE_A);
108   vcblk[1] = m_k055555->K055555_read_register(K55_PALBASE_B);
109   vcblk[2] = m_k055555->K055555_read_register(K55_PALBASE_C);
110   vcblk[3] = m_k055555->K055555_read_register(K55_PALBASE_D);
111   vcblk[4] = m_k055555->K055555_read_register(K55_PALBASE_SUB1);
112   vcblk[5] = m_k055555->K055555_read_register(K55_PALBASE_SUB2);
113   ocblk    = m_k055555->K055555_read_register(K55_PALBASE_OBJ);
114   vinmix   = m_k055555->K055555_read_register(K55_BLEND_ENABLES);
115   vmixon   = m_k055555->K055555_read_register(K55_VINMIX_ON);
116   osinmix  = m_k055555->K055555_read_register(K55_OSBLEND_ENABLES);
117   osmixon  = m_k055555->K055555_read_register(K55_OSBLEND_ON);
42   m_opri     = m_k055555->K055555_read_register(K55_PRIINP_8);
43   m_oinprion = m_k055555->K055555_read_register(K55_OINPRI_ON);
44   m_vcblk[0] = m_k055555->K055555_read_register(K55_PALBASE_A);
45   m_vcblk[1] = m_k055555->K055555_read_register(K55_PALBASE_B);
46   m_vcblk[2] = m_k055555->K055555_read_register(K55_PALBASE_C);
47   m_vcblk[3] = m_k055555->K055555_read_register(K55_PALBASE_D);
48   m_vcblk[4] = m_k055555->K055555_read_register(K55_PALBASE_SUB1);
49   m_vcblk[5] = m_k055555->K055555_read_register(K55_PALBASE_SUB2);
50   m_ocblk    = m_k055555->K055555_read_register(K55_PALBASE_OBJ);
51   m_vinmix   = m_k055555->K055555_read_register(K55_BLEND_ENABLES);
52   m_vmixon   = m_k055555->K055555_read_register(K55_VINMIX_ON);
53   m_osinmix  = m_k055555->K055555_read_register(K55_OSBLEND_ENABLES);
54   m_osmixon  = m_k055555->K055555_read_register(K55_OSBLEND_ON);
11855}
11956
120INLINE int K053247GX_combine_c18(int attrib) // (see p.46)
57inline int konamigx_state::K053247GX_combine_c18(int attrib) // (see p.46)
12158{
12259   int c18;
12360
124   c18 = (attrib & 0xff)<<k053247_coregshift | k053247_coreg;
61   c18 = (attrib & 0xff)<<m_k053247_coregshift | m_k053247_coreg;
12562
126   if (konamigx_wrport2 & 4) c18 &= 0x3fff; else
127   if (!(konamigx_wrport2 & 8)) c18 = (c18 & 0x3fff) | (attrib<<6 & 0xc000);
63   if (m_gx_wrport2 & 4) c18 &= 0x3fff; else
64   if (!(m_gx_wrport2 & 8)) c18 = (c18 & 0x3fff) | (attrib<<6 & 0xc000);
12865
12966   return(c18);
13067}
13168
132INLINE int K055555GX_decode_objcolor(int c18) // (see p.59 7.2.2)
69inline int konamigx_state::K055555GX_decode_objcolor(int c18) // (see p.59 7.2.2)
13370{
13471   int ocb, opon;
13572
136   opon  = oinprion<<8 | 0xff;
137   ocb   = (ocblk & 7) << 10;
73   opon  = m_oinprion<<8 | 0xff;
74   ocb   = (m_ocblk & 7) << 10;
13875   c18  &= opon;
13976   ocb  &=~opon;
14077
141   return((ocb | c18) >> k053247_coregshift);
78   return((ocb | c18) >> m_k053247_coregshift);
14279}
14380
144INLINE int K055555GX_decode_inpri(int c18) // (see p.59 7.2.2)
81inline int konamigx_state::K055555GX_decode_inpri(int c18) // (see p.59 7.2.2)
14582{
146   int op = opri;
83   int op = m_opri;
14784
14885   c18 >>= 8;
149   op   &= oinprion;
150   c18  &=~oinprion;
86   op   &= m_oinprion;
87   c18  &=~m_oinprion;
15188
15289   return(c18 | op);
15390}
r241527r241528
15794   int num = *code;
15895   int c18 = *color;
15996
160   *code = k053247_vrcbk[num>>14] | (num & 0x3fff);
97   *code = m_k053247_vrcbk[num>>14] | (num & 0x3fff);
16198   c18 = K053247GX_combine_c18(c18);
16299   *color = K055555GX_decode_objcolor(c18);
163100   *priority_mask = K055555GX_decode_inpri(c18);
r241527r241528
168105   int num, op, pri, c18;
169106
170107   num = *code;
171   *code = k053247_vrcbk[num>>14] | (num & 0x3fff);
108   *code = m_k053247_vrcbk[num>>14] | (num & 0x3fff);
172109
173110   c18  = pri = *color;
174   op   = opri;
111   op   = m_opri;
175112   pri  = (pri & 0x200) ? 4 : pri>>4 & 0xf;
176   op  &= oinprion;
177   pri &=~oinprion;
113   op  &= m_oinprion;
114   pri &=~m_oinprion;
178115   *priority_mask = pri | op;
179116
180117   c18 = K053247GX_combine_c18(c18);
r241527r241528
186123   int num, op, pri, c18;
187124
188125   num = *code;
189   *code = k053247_vrcbk[num>>14] | (num & 0x3fff);
126   *code = m_k053247_vrcbk[num>>14] | (num & 0x3fff);
190127
191128   c18  = pri = *color;
192   op   = opri;
129   op   = m_opri;
193130   pri  = pri>>4 & 0x3f;
194   op  &= oinprion;
195   pri &=~oinprion;
131   op  &= m_oinprion;
132   pri &=~m_oinprion;
196133   *priority_mask = pri | op;
197134
198135   c18 = K053247GX_combine_c18(c18);
r241527r241528
204141   int num, op, pri;
205142
206143   num = *code;
207   *code = k053247_vrcbk[num>>14] | (num & 0x3fff);
144   *code = m_k053247_vrcbk[num>>14] | (num & 0x3fff);
208145
209146   pri = *color;
210147   *color &= 0x1f;
211148
212   op   = opri;
149   op   = m_opri;
213150   pri &= 0xf0;
214   op  &= oinprion;
215   pri &=~oinprion;
151   op  &= m_oinprion;
152   pri &=~m_oinprion;
216153   *priority_mask = pri | op;
217154}
218155
219static int K055555GX_decode_vmixcolor(int layer, int *color) // (see p.62 7.2.6 and p.27 3.3)
156int konamigx_state::K055555GX_decode_vmixcolor(int layer, int *color) // (see p.62 7.2.6 and p.27 3.3)
220157{
221158   int vcb, shift, pal, vmx, von, pl45, emx;
222159
223   vcb    =  vcblk[layer]<<6;
160   vcb    =  m_vcblk[layer]<<6;
224161   shift  =  layer<<1;
225162   pal    =  *color;
226   vmx    =  vinmix>>shift & 3;
227   von    =  vmixon>>shift & 3;
163   vmx    =  m_vinmix>>shift & 3;
164   von    =  m_vmixon>>shift & 3;
228165   emx    =  pl45 = pal>>4 & 3;
229166   pal   &=  0xf;
230167   pl45  &=  von;
r241527r241528
235172   emx   |=  vmx;
236173   pal   |=  vcb;
237174
238   if (gx_le2_textcolour_hack)
175   if (m_gx_le2_textcolour_hack)
239176      if (layer==0)
240177         pal |= 0x1c0;
241178
r241527r241528
252189
253190   shift  =  layer<<1;
254191   pal    =  *color;
255   osmx   =  osinmix>>shift & 3;
256   oson   =  osmixon>>shift & 3;
192   osmx   =  m_osinmix>>shift & 3;
193   oson   =  m_osmixon>>shift & 3;
257194
258195   if (layer)
259196   {
260197      // layer 1-3 are external tile layers
261      scb    =  vcblk[layer+3]<<6;
198      scb    =  m_vcblk[layer+3]<<6;
262199      emx    =  pl45 = pal>>4 & 3;
263200      pal   &=  0xf;
264201      pl45  &=  oson;
r241527r241528
292229   int w = visarea.width();
293230   int h = visarea.height();
294231
295   UINT8 *zptr = gx_objzbuf;
232   UINT8 *zptr = m_gx_objzbuf;
296233   int ecx = h;
297234
298235   do { memset(zptr, -1, w); zptr += GX_ZBUFW; } while (--ecx);
299236
300237   if (!noshadow)
301238   {
302      zptr = gx_shdzbuf;
239      zptr = m_gx_shdzbuf;
303240      w <<= 1;
304241      ecx = h;
305242      do { memset(zptr, -1, w); zptr += (GX_ZBUFW<<1); } while (--ecx);
r241527r241528
350287   m_gx_objdma = 0;
351288   m_gx_primode = 0;
352289
353   gx_objzbuf = &screen.priority().pix8(0);
354   gx_shdzbuf = auto_alloc_array(machine(), UINT8, GX_ZBUFSIZE);
290   m_gx_objzbuf = &screen.priority().pix8(0);
291   m_gx_shdzbuf = auto_alloc_array(machine(), UINT8, GX_ZBUFSIZE);
355292   gx_objpool = auto_alloc_array(machine(), struct GX_OBJ, GX_MAX_OBJECTS);
356293
357294   m_k054338->export_config(&K054338_shdRGB);
r241527r241528
393330   int cltc_shdpri, /*prflp,*/ disp;
394331
395332   // buffer can move when it's resized, so refresh the pointer
396   gx_objzbuf = &screen.priority().pix8(0);
333   m_gx_objzbuf = &screen.priority().pix8(0);
397334
398335   // abort if object database failed to initialize
399336   objpool = gx_objpool;
400337   if (!objpool) return;
401338
402339   // clear screen with backcolor and update flicker pulse
403   if (konamigx_wrport1_0 & 0x20)
340   if (m_gx_wrport1_0 & 0x20)
404341      m_k054338->fill_backcolor(bitmap,
405342                           cliprect,
406343                           m_palette->pens() + (m_k055555->K055555_read_register(0) << 9),
r241527r241528
564501      int zcode = gx_spriteram[offs] & 0xff;
565502
566503      // invert z-order when opset_pri is set (see p.51 OPSET PRI)
567      if (k053247_opset & 0x10) zcode = 0xff - zcode;
504      if (m_k053247_opset & 0x10) zcode = 0xff - zcode;
568505
569506      int code  = gx_spriteram[offs+1];
570507      int color = k = gx_spriteram[offs+6];
r241527r241528
635572         if (temp3)
636573         {
637574            // determine shadow priority
638            spri = (k053247_opset & 0x20) ? pri : shdpri[shadow]; // (see p.51 OPSET SDSEL)
575            spri = (m_k053247_opset & 0x20) ? pri : shdpri[shadow]; // (see p.51 OPSET SDSEL)
639576         }
640577      }
641578
r241527r241528
732669      if (j == GXMIX_BLEND_FORCE) { temp1 = 0x00; temp2 = mixerflags>>(i+16); temp3 = 3; }
733670      else
734671      {
735         temp1 = vinmix;
736         temp2 = vinmix>>i & 3;
737         temp3 = vmixon>>i & 3;
672         temp1 = m_vinmix;
673         temp2 = m_vinmix>>i & 3;
674         temp3 = m_vmixon>>i & 3;
738675      }
739676
740677      /* blend layer only when:
741          1) vinmix != 0xff
678          1) m_vinmix != 0xff
742679          2) its internal mix code is set
743680          3) all mix code bits are internal(overriden until tile blending has been implemented)
744681          4) 0 > alpha < 255;
r241527r241528
775712      if (j == GXMIX_BLEND_FORCE) { temp1 = 0x00; temp2 = mixerflags>>24; temp3 = 3; }
776713      else
777714      {
778         temp1 = osinmix;
779         temp2 = osinmix>>2 & 3;
780         temp3 = osmixon>>2 & 3;
715         temp1 = m_osinmix;
716         temp2 = m_osinmix>>2 & 3;
717         temp3 = m_osmixon>>2 & 3;
781718      }
782719
783720      if (temp1!=0xff && temp2 /*&& temp3==3*/)
r241527r241528
803740      }
804741      else
805742      {
806         machine().device<k053250_device>("k053250_1")->draw(bitmap, cliprect, vcblk[4]<<l, 0, screen.priority(), 0);
743         machine().device<k053250_device>("k053250_1")->draw(bitmap, cliprect, m_vcblk[4]<<l, 0, screen.priority(), 0);
807744      }
808745   }
809746}
r241527r241528
825762      if (j == GXMIX_BLEND_FORCE) { temp1 = 0x00; temp2 = mixerflags>>26; temp3 = 3; }
826763      else
827764      {
828         temp1 = osinmix;
829         temp2 = osinmix>>4 & 3;
830         temp3 = osmixon>>4 & 3;
765         temp1 = m_osinmix;
766         temp2 = m_osinmix>>4 & 3;
767         temp3 = m_osmixon>>4 & 3;
831768      }
832769
833770      if (temp1!=0xff && temp2 /*&& temp3==3*/)
r241527r241528
875812         }
876813      }
877814      else
878         machine().device<k053250_device>("k053250_2")->draw(bitmap, cliprect, vcblk[5]<<l, 0, screen.priority(), 0);
815         machine().device<k053250_device>("k053250_2")->draw(bitmap, cliprect, m_vcblk[5]<<l, 0, screen.priority(), 0);
879816   }
880817}
881818
r241527r241528
932869
933870
934871         m_k055673->k053247_draw_single_sprite_gxcore(bitmap, cliprect,
935            gx_objzbuf, gx_shdzbuf, code, gx_spriteram, offs,
872            m_gx_objzbuf, m_gx_shdzbuf, code, gx_spriteram, offs,
936873            color, alpha, drawmode, zcode, pri,
937874            /* non-gx only */
938875            0,0,NULL,NULL,0
r241527r241528
985922
986923   }
987924
988   colour = (psac_colorbase << 4) + col;
925   colour = (m_psac_colorbase << 4) + col;
989926
990927   SET_TILE_INFO_MEMBER(0, tileno, colour, TILE_FLIPYX(flip));
991928}
r241527r241528
1003940   /* handle this by creating 2 roz tilemaps instead, otherwise performance dies completely on dual screen mode
1004941   if (konamigx_type3_psac2_actual_bank!=konamigx_type3_psac2_actual_last_bank)
1005942   {
1006       gx_psac_tilemap->mark_all_dirty();
943       m_gx_psac_tilemap->mark_all_dirty();
1007944       konamigx_type3_psac2_actual_last_bank = konamigx_type3_psac2_actual_bank;
1008945   }
1009946   */
r241527r241528
11061043{
11071044   int d = *code;
11081045
1109   *code = (gx_tilebanks[(d & 0xe000)>>13]<<13) + (d & 0x1fff);
1046   *code = (m_gx_tilebanks[(d & 0xe000)>>13]<<13) + (d & 0x1fff);
11101047   K055555GX_decode_vmixcolor(layer, color);
11111048}
11121049
r241527r241528
11181055   mixcode = K055555GX_decode_vmixcolor(layer, color);
11191056
11201057   if (mixcode < 0)
1121      *code = (gx_tilebanks[(d & 0xe000)>>13]<<13) + (d & 0x1fff);
1058      *code = (m_gx_tilebanks[(d & 0xe000)>>13]<<13) + (d & 0x1fff);
11221059   else
11231060   {
11241061      /* save mixcode and mark tile alpha (unimplemented) */
r241527r241528
11651102
11661103   for (int i = 0; i < 8; i++)
11671104   {
1168      gx_tilebanks[i] = gx_oldbanks[i] = 0;
1105      m_gx_tilebanks[i] = m_gx_oldbanks[i] = 0;
11691106   }
11701107
1171   machine().save().save_item(NAME(gx_tilebanks));
1108   machine().save().save_item(NAME(m_gx_tilebanks));
11721109
1173   gx_tilemode = 0;
1110   m_gx_tilemode = 0;
11741111
1175   gx_rozenable = 0;
1176   gx_specialrozenable = 0;
1177   gx_rushingheroes_hack = 0;
1178   gx_le2_textcolour_hack = 0;
1112   m_gx_rozenable = 0;
1113   m_gx_specialrozenable = 0;
1114   m_gx_rushingheroes_hack = 0;
1115   m_gx_le2_textcolour_hack = 0;
11791116
11801117   // Documented relative offsets of non-flipped games are (-2, 0, 2, 3),(0, 0, 0, 0).
11811118   // (+ve values move layers to the right and -ve values move layers to the left)
r241527r241528
11871124   m_k056832->set_layer_offs(2,  2, 0);
11881125   m_k056832->set_layer_offs(3,  3, 0);
11891126
1190   konamigx_has_dual_screen = 0;
1127   m_konamigx_has_dual_screen = 0;
11911128   m_konamigx_current_frame = 0;
11921129}
11931130
r241527r241528
11971134   common_init();
11981135
11991136   if (!strcmp(machine().system().name,"tbyahhoo"))
1200      gx_tilemode = 1;
1137      m_gx_tilemode = 1;
12011138   else if (!strcmp(machine().system().name,"crzcross") || !strcmp(machine().system().name,"puzldama"))
12021139      konamigx_mixer_primode(5);
12031140   else if (!strcmp(machine().system().name,"daiskiss"))
r241527r241528
12201157
12211158   konamigx_mixer_primode(-1); // swapped layer B and C priorities?
12221159
1223   gx_le2_textcolour_hack = 1; // force text layer to use the right palette
1160   m_gx_le2_textcolour_hack = 1; // force text layer to use the right palette
12241161}
12251162
12261163VIDEO_START_MEMBER(konamigx_state, konamigx_6bpp)
r241527r241528
12341171   int width = m_screen->width();
12351172   int height = m_screen->height();
12361173
1237   dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
1238   dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
1174   m_dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
1175   m_dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
12391176
12401177   common_init();
12411178
1242   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);
1243   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);
1179   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);
1180   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);
12441181
1245   gx_rozenable = 0;
1246   gx_specialrozenable = 2;
1182   m_gx_rozenable = 0;
1183   m_gx_specialrozenable = 2;
12471184
12481185
12491186   /* set up tile layers */
1250   type3_roz_temp_bitmap = auto_bitmap_ind16_alloc(machine(), width, height);
1187   m_type3_roz_temp_bitmap = auto_bitmap_ind16_alloc(machine(), width, height);
12511188
12521189
1253   //gx_psac_tilemap->set_flip(TILEMAP_FLIPX| TILEMAP_FLIPY);
1190   //m_gx_psac_tilemap->set_flip(TILEMAP_FLIPX| TILEMAP_FLIPY);
12541191
12551192   K053936_wraparound_enable(0, 1);
12561193//  K053936GP_set_offset(0, -30, -1);
r241527r241528
12611198   m_k056832->set_layer_offs(2,  -48, 0);
12621199   m_k056832->set_layer_offs(3,  -48, 0);
12631200
1264   konamigx_has_dual_screen = 1;
1265   konamigx_palformat = 1;
1201   m_konamigx_has_dual_screen = 1;
1202   m_konamigx_palformat = 1;
12661203}
12671204
12681205VIDEO_START_MEMBER(konamigx_state, konamigx_type4)
r241527r241528
12701207   int width = m_screen->width();
12711208   int height = m_screen->height();
12721209
1273   dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
1274   dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
1210   m_dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
1211   m_dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
12751212
12761213   common_init();
12771214
1278   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);
1279   gx_rozenable = 0;
1280   gx_specialrozenable = 3;
1215   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);
1216   m_gx_rozenable = 0;
1217   m_gx_specialrozenable = 3;
12811218
12821219   m_k056832->set_layer_offs(0,  -27, 0);
12831220   m_k056832->set_layer_offs(1,  -25, 0);
r241527r241528
12871224   K053936_wraparound_enable(0, 0);
12881225   K053936GP_set_offset(0, -36, 1);
12891226
1290   gx_rushingheroes_hack = 1;
1291   konamigx_has_dual_screen = 1;
1292   konamigx_palformat = 0;
1227   m_gx_rushingheroes_hack = 1;
1228   m_konamigx_has_dual_screen = 1;
1229   m_konamigx_palformat = 0;
12931230
12941231}
12951232
r241527r241528
12981235   int width = m_screen->width();
12991236   int height = m_screen->height();
13001237
1301   dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
1302   dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
1238   m_dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
1239   m_dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
13031240
13041241   common_init();
13051242
1306   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);
1307   gx_rozenable = 0;
1308   gx_specialrozenable = 3;
1243   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);
1244   m_gx_rozenable = 0;
1245   m_gx_specialrozenable = 3;
13091246
13101247   m_k056832->set_layer_offs(0,  -52, 0);
13111248   m_k056832->set_layer_offs(1,  -48, 0);
r241527r241528
13151252   K053936_wraparound_enable(0, 1); // wraparound doesn't work properly with the custom drawing function anyway, see the crowd in vsnet and rushhero
13161253   K053936GP_set_offset(0, -30, 0);
13171254
1318   gx_rushingheroes_hack = 1;
1319   konamigx_has_dual_screen = 1;
1320   konamigx_palformat = 0;
1255   m_gx_rushingheroes_hack = 1;
1256   m_konamigx_has_dual_screen = 1;
1257   m_konamigx_palformat = 0;
13211258}
13221259
13231260VIDEO_START_MEMBER(konamigx_state, konamigx_type4_sd2)
r241527r241528
13251262   int width = m_screen->width();
13261263   int height = m_screen->height();
13271264
1328   dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
1329   dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
1265   m_dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
1266   m_dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
13301267
13311268   common_init();
13321269
1333   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);
1334   gx_rozenable = 0;
1335   gx_specialrozenable = 3;
1270   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);
1271   m_gx_rozenable = 0;
1272   m_gx_specialrozenable = 3;
13361273
13371274
13381275   m_k056832->set_layer_offs(0,  -29, -1);
r241527r241528
13441281   K053936_wraparound_enable(0, 0);
13451282   K053936GP_set_offset(0, -36, -1);
13461283
1347   gx_rushingheroes_hack = 1;
1348   konamigx_has_dual_screen = 1;
1349   konamigx_palformat = 0;
1284   m_gx_rushingheroes_hack = 1;
1285   m_konamigx_has_dual_screen = 1;
1286   m_konamigx_palformat = 0;
13501287
13511288}
13521289
r241527r241528
13591296   m_k056832->set_layer_offs(2,  2+1, 0);
13601297   m_k056832->set_layer_offs(3,  3+1, 0);
13611298
1362   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);
1363   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);
1299   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);
1300   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);
13641301
13651302   // transparency will be handled manually in post-processing
1366   //gx_psac_tilemap->set_transparent_pen(0);
1367   //gx_psac_tilemap2->set_transparent_pen(0);
1303   //m_gx_psac_tilemap->set_transparent_pen(0);
1304   //m_gx_psac_tilemap2->set_transparent_pen(0);
13681305
1369   gx_rozenable = 0;
1370   gx_specialrozenable = 1;
1306   m_gx_rozenable = 0;
1307   m_gx_specialrozenable = 1;
13711308
1372   gxtype1_roz_dstbitmap =  auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
1373   gxtype1_roz_dstbitmap2 = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
1309   m_gxtype1_roz_dstbitmap =  auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
1310   m_gxtype1_roz_dstbitmap2 = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
13741311
13751312
1376   gxtype1_roz_dstbitmapclip.set(0, 512-1, 0, 512-1);
1313   m_gxtype1_roz_dstbitmapclip.set(0, 512-1, 0, 512-1);
13771314
13781315
13791316   K053936_wraparound_enable(0, 1);
r241527r241528
13941331   m_k056832->set_layer_offs(2,  2+1, 0);
13951332   m_k056832->set_layer_offs(3,  3+1, 0);
13961333
1397   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);
1398   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);
1334   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);
1335   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);
13991336
14001337   // transparency will be handled manually in post-processing
1401   //gx_psac_tilemap->set_transparent_pen(0);
1402   //gx_psac_tilemap2->set_transparent_pen(0);
1338   //m_gx_psac_tilemap->set_transparent_pen(0);
1339   //m_gx_psac_tilemap2->set_transparent_pen(0);
14031340
1404   gx_rozenable = 0;
1405   gx_specialrozenable = 1;
1341   m_gx_rozenable = 0;
1342   m_gx_specialrozenable = 1;
14061343
1407   gxtype1_roz_dstbitmap =  auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
1408   gxtype1_roz_dstbitmap2 = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
1344   m_gxtype1_roz_dstbitmap =  auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
1345   m_gxtype1_roz_dstbitmap2 = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
14091346
14101347
1411   gxtype1_roz_dstbitmapclip.set(0, 512-1, 0, 512-1);
1348   m_gxtype1_roz_dstbitmapclip.set(0, 512-1, 0, 512-1);
14121349
14131350
14141351   K053936_wraparound_enable(0, 1);
r241527r241528
14281365   /* if any banks are different from last render, we need to flush the planes */
14291366   for (dirty = 0, i = 0; i < 8; i++)
14301367   {
1431      newbank = gx_tilebanks[i];
1432      if (gx_oldbanks[i] != newbank) { gx_oldbanks[i] = newbank; dirty = 1; }
1368      newbank = m_gx_tilebanks[i];
1369      if (m_gx_oldbanks[i] != newbank) { m_gx_oldbanks[i] = newbank; dirty = 1; }
14331370   }
14341371
1435   if (gx_tilemode == 0)
1372   if (m_gx_tilemode == 0)
14361373   {
14371374      // driver approximates tile update in mode 0 for speed
14381375      unchained = m_k056832->get_layer_association();
14391376      for (i=0; i<4; i++)
14401377      {
14411378         newbase = m_k055555->K055555_get_palette_index(i)<<6;
1442         if (layer_colorbase[i] != newbase)
1379         if (m_layer_colorbase[i] != newbase)
14431380         {
1444            layer_colorbase[i] = newbase;
1381            m_layer_colorbase[i] = newbase;
14451382
14461383            if (unchained)
14471384               m_k056832->mark_plane_dirty(i);
r241527r241528
14561393   }
14571394
14581395   // sub2 is PSAC colorbase on GX
1459   if (gx_rozenable)
1396   if (m_gx_rozenable)
14601397   {
1461      last_psac_colorbase = psac_colorbase;
1462      psac_colorbase = m_k055555->K055555_get_palette_index(6);
1398      m_last_psac_colorbase = m_psac_colorbase;
1399      m_psac_colorbase = m_k055555->K055555_get_palette_index(6);
14631400
1464      if (psac_colorbase != last_psac_colorbase)
1401      if (m_psac_colorbase != m_last_psac_colorbase)
14651402      {
1466         gx_psac_tilemap->mark_all_dirty();
1467         if (gx_rozenable == 3)
1403         m_gx_psac_tilemap->mark_all_dirty();
1404         if (m_gx_rozenable == 3)
14681405         {
1469            gx_psac_tilemap2->mark_all_dirty();
1406            m_gx_psac_tilemap2->mark_all_dirty();
14701407         }
14711408      }
14721409   }
r241527r241528
14741411   if (dirty) m_k056832->mark_all_tilemaps_dirty();
14751412
14761413   // Type-1
1477   if (gx_specialrozenable == 1)
1414   if (m_gx_specialrozenable == 1)
14781415   {
1479      K053936_0_zoom_draw(screen, *gxtype1_roz_dstbitmap, gxtype1_roz_dstbitmapclip,gx_psac_tilemap, 0,0,0); // height data
1480      K053936_0_zoom_draw(screen, *gxtype1_roz_dstbitmap2,gxtype1_roz_dstbitmapclip,gx_psac_tilemap2,0,0,0); // colour data (+ some voxel height data?)
1416      K053936_0_zoom_draw(screen, *m_gxtype1_roz_dstbitmap, m_gxtype1_roz_dstbitmapclip,m_gx_psac_tilemap, 0,0,0); // height data
1417      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?)
14811418   }
14821419
14831420
14841421
1485   if (gx_specialrozenable==3)
1422   if (m_gx_specialrozenable==3)
14861423   {
1487      konamigx_mixer(screen, bitmap, cliprect, gx_psac_tilemap, GXSUB_8BPP,0,0,  0, 0, gx_rushingheroes_hack);
1424      konamigx_mixer(screen, bitmap, cliprect, m_gx_psac_tilemap, GXSUB_8BPP,0,0,  0, 0, m_gx_rushingheroes_hack);
14881425   }
14891426   // hack, draw the roz tilemap if W is held
14901427   // todo: fix so that it works with the mixer without crashing(!)
1491   else if (gx_specialrozenable == 2)
1428   else if (m_gx_specialrozenable == 2)
14921429   {
14931430      // we're going to throw half of this away anyway in post-process, so only render what's needed
14941431      rectangle temprect;
14951432      temprect = cliprect;
14961433      temprect.max_x = cliprect.min_x+320;
14971434
1498      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
1499      else K053936_0_zoom_draw(screen, *type3_roz_temp_bitmap, temprect,gx_psac_tilemap, 0,0,0); // soccerss playfield
1435      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
1436      else K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap, 0,0,0); // soccerss playfield
15001437
15011438
1502      konamigx_mixer(screen, bitmap, cliprect, 0, 0, 0, 0, 0, type3_roz_temp_bitmap, gx_rushingheroes_hack);
1439      konamigx_mixer(screen, bitmap, cliprect, 0, 0, 0, 0, 0, m_type3_roz_temp_bitmap, m_gx_rushingheroes_hack);
15031440   }
15041441   else
15051442   {
1506      konamigx_mixer(screen, bitmap, cliprect, 0, 0, 0, 0, 0, 0, gx_rushingheroes_hack);
1443      konamigx_mixer(screen, bitmap, cliprect, 0, 0, 0, 0, 0, 0, m_gx_rushingheroes_hack);
15071444   }
15081445
15091446
15101447
15111448   /* Hack! draw type-1 roz layer here for testing purposes only */
1512   if (gx_specialrozenable == 1)
1449   if (m_gx_specialrozenable == 1)
15131450   {
15141451      const pen_t *paldata = m_palette->pens();
15151452
r241527r241528
15221459         {
15231460            for (y=0;y<256;y++)
15241461            {
1525               //UINT16* src = &gxtype1_roz_dstbitmap->pix16(y);
1462               //UINT16* src = &m_gxtype1_roz_dstbitmap->pix16(y);
15261463
15271464               //UINT32* dst = &bitmap.pix32(y);
15281465               // ths K053936 rendering should probably just be flipped
15291466               // this is just kludged to align the racing force 2d logo
1530               UINT16* src = &gxtype1_roz_dstbitmap2->pix16(y+30);
1467               UINT16* src = &m_gxtype1_roz_dstbitmap2->pix16(y+30);
15311468               UINT32* dst = &bitmap.pix32(256-y);
15321469
15331470               for (x=0;x<512;x++)
r241527r241528
15541491   {
15551492      int offset=0;
15561493
1557      if (konamigx_palformat==1)
1494      if (m_konamigx_palformat==1)
15581495      {
15591496         for (offset=0;offset<0x4000/4;offset++)
15601497         {
r241527r241528
15781515         }
15791516      }
15801517
1581      screen_update_konamigx( screen, downcast<bitmap_rgb32 &>(*dualscreen_left_tempbitmap), cliprect);
1582      copybitmap(bitmap, *dualscreen_left_tempbitmap, 0, 0, 0, 0, cliprect);
1518      screen_update_konamigx( screen, downcast<bitmap_rgb32 &>(*m_dualscreen_left_tempbitmap), cliprect);
1519      copybitmap(bitmap, *m_dualscreen_left_tempbitmap, 0, 0, 0, 0, cliprect);
15831520   }
15841521   else
15851522   {
1586      copybitmap(bitmap, *dualscreen_left_tempbitmap, 0, 0, 0, 0, cliprect);
1523      copybitmap(bitmap, *m_dualscreen_left_tempbitmap, 0, 0, 0, 0, cliprect);
15871524   }
15881525
15891526   return 0;
r241527r241528
15931530{
15941531   if (m_konamigx_current_frame==1)
15951532   {
1596      copybitmap(bitmap, *dualscreen_right_tempbitmap, 0, 0, 0, 0, cliprect);
1533      copybitmap(bitmap, *m_dualscreen_right_tempbitmap, 0, 0, 0, 0, cliprect);
15971534   }
15981535   else
15991536   {
16001537      int offset=0;
16011538
1602      if (konamigx_palformat==1)
1539      if (m_konamigx_palformat==1)
16031540      {
16041541         for (offset=0;offset<0x4000/4;offset++)
16051542         {
r241527r241528
16231560         }
16241561      }
16251562
1626      screen_update_konamigx(screen, downcast<bitmap_rgb32 &>(*dualscreen_right_tempbitmap), cliprect);
1627      copybitmap(bitmap, *dualscreen_right_tempbitmap, 0, 0, 0, 0, cliprect);
1563      screen_update_konamigx(screen, downcast<bitmap_rgb32 &>(*m_dualscreen_right_tempbitmap), cliprect);
1564      copybitmap(bitmap, *m_dualscreen_right_tempbitmap, 0, 0, 0, 0, cliprect);
16281565   }
16291566
16301567   return 0;
r241527r241528
16971634WRITE32_MEMBER(konamigx_state::konamigx_tilebank_w)
16981635{
16991636   if (ACCESSING_BITS_24_31)
1700      gx_tilebanks[offset*4] = (data>>24)&0xff;
1637      m_gx_tilebanks[offset*4] = (data>>24)&0xff;
17011638   if (ACCESSING_BITS_16_23)
1702      gx_tilebanks[offset*4+1] = (data>>16)&0xff;
1639      m_gx_tilebanks[offset*4+1] = (data>>16)&0xff;
17031640   if (ACCESSING_BITS_8_15)
1704      gx_tilebanks[offset*4+2] = (data>>8)&0xff;
1641      m_gx_tilebanks[offset*4+2] = (data>>8)&0xff;
17051642   if (ACCESSING_BITS_0_7)
1706      gx_tilebanks[offset*4+3] = data&0xff;
1643      m_gx_tilebanks[offset*4+3] = data&0xff;
17071644}
17081645
17091646// type 1 RAM-based PSAC tilemap
17101647WRITE32_MEMBER(konamigx_state::konamigx_t1_psacmap_w)
17111648{
17121649   COMBINE_DATA(&m_psacram[offset]);
1713   gx_psac_tilemap->mark_tile_dirty(offset/2);
1714   gx_psac_tilemap2->mark_tile_dirty(offset/2);
1650   m_gx_psac_tilemap->mark_tile_dirty(offset/2);
1651   m_gx_psac_tilemap2->mark_tile_dirty(offset/2);
17151652}
17161653
17171654// type 4 RAM-based PSAC tilemap
r241527r241528
17191656{
17201657   COMBINE_DATA(&m_psacram[offset]);
17211658
1722   gx_psac_tilemap->mark_tile_dirty(offset*2);
1723   gx_psac_tilemap->mark_tile_dirty((offset*2)+1);
1659   m_gx_psac_tilemap->mark_tile_dirty(offset*2);
1660   m_gx_psac_tilemap->mark_tile_dirty((offset*2)+1);
17241661}


Previous 199869 Revisions Next


© 1997-2024 The MAME Team