Previous 199869 Revisions Next

r41378 Sunday 25th October, 2015 at 10:02:52 UTC by Jezze
Fixed Vector Intensity and Flicker

- fixed vector intensity in vector.fx
- fixed vector flicker in vector.c
- change range of vector flicker option from 0 - 100 to 0.00 - 1.00
[hash]a2600.xml a5200.xml bbc_32016_flop.xml bbc_65c102_flop.xml bbc_80186_flop.xml bbc_arm_flop.xml bbc_z80_flop.xml bbca_cass.xml bbcb_cass.xml bbcb_flop.xml bbcb_us_flop.xml bbcm_flop.xml bbcmc_flop.xml megadriv.xml pico.xml pro128s_flop.xml spectrum_cass.xml unichamp.xml
[hlsl]vector.fx
[scripts/src]bus.lua
[scripts/target/mame]arcade.lua mess.lua
[src/devices/bus/cpc]brunword4.c brunword4.h cpcexp.h ddi1.c ddi1.h doubler.c doubler.h
[src/devices/bus/econet]e01.c
[src/devices/bus/isa]omti8621.c omti8621.h
[src/devices/bus/vcs]dpcplus.c dpcplus.h rom.c rom.h vcs_slot.c vcs_slot.h
[src/devices/cpu/i86]i86.c
[src/devices/imagedev]floppy.c
[src/devices/machine]mc146818.c mc146818.h mos6530n.c mos6530n.h
[src/devices/sound]tms5220.c
[src/devices/video]mc6845.c mc6845.h psx.c saa5050.c saa5050.h
[src/emu]machine.c machine.h screen.c screen.h
[src/emu/drivers]xtal.h
[src/emu/ui]ui.c
[src/emu/video]vector.c vector.h
[src/lib/formats]apollo_dsk.c apollo_dsk.h bbc_dsk.c bbc_dsk.h camplynx_dsk.c camplynx_dsk.h
[src/lib/util]corealloc.h
[src/mame]arcade.lst mess.lst
[src/mame/drivers]a2600.c amiga.c amstrad.c apollo.c apple2.c apple2e.c aristmk5.c atari400.c bbc.c by17.c by35.c camplynx.c cat.c champbas.c cosmic.c dec0.c ec184x.c gatron.c ibmpcjr.c imds2.c konamim2.c macpci.c megadriv.c namcos23.c osborne1.c pc.c pcd.c saturn.c segac2.c shougi.c sorcerer.c subhuntr.c suna16.c swyft.c system1.c ti99_4x.c timeplt.c unichamp.c vicdual.c wacky_gator.c
[src/mame/includes]abc80x.h amstrad.h apollo.h bbc.h champbas.h imds2.h osborne1.h timeplt.h
[src/mame/layout]by17.lay by17_matahari.lay by17_pwerplay.lay by35.lay by35_playboy.lay wackygtr.lay
[src/mame/machine]amstrad.c apollo.c bbc.c genpin.h osborne1.c psxcd.c psxcd.h xbox.c
[src/mame/video]apple2.c bbc.c champbas.c chihiro.c decbac06.c decbac06.h gic.c gic.h timeplt.c
[src/osd]osdnet.c
[src/osd/modules/debugger/osx]debugview.m
[src/osd/windows]input.c

trunk/hash/a2600.xml
r249889r249890
1121111211      </part>
1121211212   </software>
1121311213
11214   <software name="pitfallsg" cloneof="pitfall">   <!-- significant visual changes -->
11215      <description>Pitfall (Star Game) (aka Tom Boy)</description>
11214   <software name="pitfallsg" cloneof="pitfall">
11215      <description>Pitfall (Star Game)</description>
1121611216      <year>19??</year>
1121711217      <publisher>Star Game</publisher>
1121811218      <part name="cart" interface="a2600_cart">
r249889r249890
1794017940         </dataarea>
1794117941      </part>
1794217942   </software>
17943
17944  <!-- The AtariAge logo looks incorrect, but games function, there are probably other version too, YouTube shows a 2007 version. -->
17945   <software name="stelstok">
17946      <description>Stella's Stocking 2008</description>
17947      <year>2008</year>
17948      <publisher>AtariAge</publisher>
17949      <sharedfeat name="compatibility" value="NTSC" />
17950      <part name="cart" interface="a2600_cart">
17951         <feature name="slot" value="a26_x07" />
17952         <dataarea name="rom" size="65536">
17953            <rom name="m27c512.bin" size="65536" crc="c1da7d3b" sha1="4d9c06940754ba03e2eca2d88ea4201b8d9e7805" offset="0" />
17954         </dataarea>
17955      </part>
17956   </software>
17957
17958  <!-- This was released by the author, also available via Atariage, are both versions the same? needs DPC+ emulation -->
17959  <software name="stayfr2" supported="no">
17960    <description>Stay Frosty 2 (NTSC)</description>
17961    <year>2013</year>
17962    <publisher>Spiceware</publisher>
17963    <sharedfeat name="compatibility" value="NTSC" />
17964    <part name="cart" interface="a2600_cart">
17965      <feature name="slot" value="a26_dpcplus" />
17966      <dataarea name="rom" size="0x8000">
17967        <rom name="SF2_20131217_RC8_NTSC.bin" size="0x8000" crc="4eb739ab" sha1="5eceaf8e90bd9a002f4935f082df7b25716dceb0" offset="0" />
17968      </dataarea>
17969    </part>
17970  </software>
17971
17972  <software name="stayfr2d" cloneof="stayfr2" supported="no">
17973    <description>Stay Frosty 2 (NTSC, demo)</description>
17974    <year>2013</year>
17975    <publisher>Spiceware</publisher>
17976    <sharedfeat name="compatibility" value="NTSC" />
17977    <part name="cart" interface="a2600_cart">
17978      <feature name="slot" value="a26_dpcplus" />
17979      <dataarea name="rom" size="0x8000">
17980        <rom name="SF2_demo_NTSC.bin" size="0x8000" crc="fd850bd6" sha1="bd8166da7777c66e6bb3ab0c77563193d8289f5f" offset="0" />
17981      </dataarea>
17982    </part>
17983  </software>
17984
17985
17986  <software name="stayfr2e" cloneof="stayfr2" supported="no">
17987    <description>Stay Frosty 2 (PAL)</description>
17988    <year>2013</year>
17989    <publisher>Spiceware</publisher>
17990    <sharedfeat name="compatibility" value="PAL" />
17991    <part name="cart" interface="a2600_cart">
17992      <feature name="slot" value="a26_dpcplus" />
17993      <dataarea name="rom" size="0x8000">
17994        <rom name="SF2_20131217_RC8_PAL.bin" size="0x8000" crc="7b495dc3" sha1="1625ef74b0a48c2968fad832ab8e2edc8187a53f" offset="0" />
17995      </dataarea>
17996    </part>
17997  </software>
17998
17999  <software name="stayfr2de" cloneof="stayfr2" supported="no">
18000    <description>Stay Frosty 2 (PAL, demo)</description>
18001    <year>2013</year>
18002    <publisher>Spiceware</publisher>
18003    <sharedfeat name="compatibility" value="PAL" />
18004    <part name="cart" interface="a2600_cart">
18005      <feature name="slot" value="a26_dpcplus" />
18006      <dataarea name="rom" size="0x8000">
18007        <rom name="SF2_demo_PAL.bin" size="0x8000" crc="b47582f3" sha1="73625429e73f1b354e0cbe6a360d79590032de2b" offset="0" />
18008      </dataarea>
18009    </part>
18010  </software>
18011
1801217943</softwarelist>
18013
18014
trunk/hash/a5200.xml
r249889r249890
14721472         </dataarea>
14731473      </part>
14741474   </software>
1475
1476   <software name="5200temp">
1477      <description>5200 Tempest</description>
1478      <year>2012</year>
1479      <publisher>Atariage</publisher> <!-- unlicensed? -->
1480      <info name="developer" value="Keithen" />
1481      <part name="cart" interface="a8bit_cart">
1482         <feature name="slot" value="a5200" />
1483         <dataarea name="rom" size="32768">
1484            <rom name="tempest (atariage).bin" size="32768" crc="a6400e17" sha1="0cb2bd6ed89ce6710ac092533a24f1248688c88c" offset="0" />
1485         </dataarea>
1486      </part>
1487   </software>
1488
14891475</softwarelist>
trunk/hash/bbc_32016_flop.xml
r249889r249890
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- Acorn Cambridge Workstation Disks -->
5
6<!-- Loading Instructions:
7
8      Hold down the SHIFT key and press and release the BREAK key.
9-->
10
11<softwarelist name="bbc_32016_flop" description="Cambridge Workstation Distribution Discs">
12
13   <software name="panos111" supported="no">
14      <description>1 PanOS Startup and Utilities v1.1</description>
15      <year>1985</year>
16      <publisher>Acorn Computers</publisher>
17      <info name="format" value="DFS" />
18      <info name="compatibility" value="32016 co-processor" />
19      <part name="flop1" interface="floppy_5_25">
20         <dataarea name="flop" size="407552">
21            <rom name="panos11-1.ssd" size="407552" crc="bec45a4d" sha1="4634c4bc7fc62576a0cfe2ac43d75abfca7458fc" offset="0" />
22         </dataarea>
23      </part>
24   </software>
25   
26   <software name="panos112" supported="no">
27      <description>2 PanOS System v1.1</description>
28      <year>1985</year>
29      <publisher>Acorn Computers</publisher>
30      <info name="format" value="DFS" />
31      <info name="compatibility" value="32016 co-processor" />
32      <part name="flop1" interface="floppy_5_25">
33         <dataarea name="flop" size="245760">
34            <rom name="panos11-2.ssd" size="245760" crc="e80fb7c4" sha1="41cd9b89a0b3e844f22b2afc7ff4acc52ae7d70c" offset="0" />
35         </dataarea>
36      </part>
37   </software>
38   
39   <software name="panos113" supported="no">
40      <description>3 FORTRAN 77 (PanOS) v1.1</description>
41      <year>1985</year>
42      <publisher>Acorn Computers</publisher>
43      <info name="format" value="DFS" />
44      <info name="compatibility" value="32016 co-processor" />
45      <part name="flop1" interface="floppy_5_25">
46         <dataarea name="flop" size="309760">
47            <rom name="panos11-3.ssd" size="309760" crc="43841e68" sha1="99afc53f9964f825f0361bbe5f9c228e4a24fa9c" offset="0" />
48         </dataarea>
49      </part>
50   </software>
51   
52   <software name="panos114" supported="no">
53      <description>4 ISO PASCAL (PanOS) v1.1</description>
54      <year>1985</year>
55      <publisher>Acorn Computers</publisher>
56      <info name="format" value="DFS" />
57      <info name="compatibility" value="32016 co-processor" />
58      <part name="flop1" interface="floppy_5_25">
59         <dataarea name="flop" size="360960">
60            <rom name="panos11-4.ssd" size="360960" crc="634a61a5" sha1="232f80862d038f3932a8333bd3690e2e7f0aa25c" offset="0" />
61         </dataarea>
62      </part>
63   </software>
64   
65   <software name="panos115" supported="no">
66      <description>5 C (PanOS) v1.1</description>
67      <year>1985</year>
68      <publisher>Acorn Computers</publisher>
69      <info name="format" value="DFS" />
70      <info name="compatibility" value="32016 co-processor" />
71      <part name="flop1" interface="floppy_5_25">
72         <dataarea name="flop" size="401664">
73            <rom name="panos11-5.ssd" size="401664" crc="99c7c7ad" sha1="bf5d4cece6673a04c634ea59af19cad3ed74e58b" offset="0" />
74         </dataarea>
75      </part>
76   </software>
77   
78   <software name="panos116" supported="no">
79      <description>6 Cambridge LISP (PanOS) v1.1</description>
80      <year>1985</year>
81      <publisher>Acorn Computers</publisher>
82      <info name="format" value="DFS" />
83      <info name="compatibility" value="32016 co-processor" />
84      <part name="flop1" interface="floppy_5_25">
85         <dataarea name="flop" size="409600">
86            <rom name="panos11-6.ssd" size="409600" crc="e125d3c1" sha1="35f3cb89abc909e0d6787ffa2e727f0f4b1937b9" offset="0" />
87         </dataarea>
88      </part>
89   </software>
90   
91   <software name="panos117" supported="no">
92      <description>7 Welcome Programs v1.1</description>
93      <year>1985</year>
94      <publisher>Acorn Computers</publisher>
95      <info name="format" value="DFS" />
96      <info name="compatibility" value="32016 co-processor" />
97      <part name="flop1" interface="floppy_5_25">
98         <dataarea name="flop" size="377344">
99            <rom name="panos11-7.ssd" size="377344" crc="baa462ea" sha1="22cab34f8f51b13a3995db63a83354097c0a613e" offset="0" />
100         </dataarea>
101      </part>
102   </software>
103   
104   <software name="panos141" supported="no">
105      <description>1 PanOS Startup and Utilities v1.4</description>
106      <year>1985</year>
107      <publisher>Acorn Computers</publisher>
108      <info name="format" value="DFS" />
109      <info name="compatibility" value="32016 co-processor" />
110      <part name="flop1" interface="floppy_5_25">
111         <dataarea name="flop" size="384768">
112            <rom name="panos14-1.ssd" size="384768" crc="eed42267" sha1="55a8a650ad214e2c623f6c0a2639acc96cd264cf" offset="0" />
113         </dataarea>
114      </part>
115   </software>
116   
117   <software name="panos142" supported="no">
118      <description>2 PanOS System v1.4</description>
119      <year>1985</year>
120      <publisher>Acorn Computers</publisher>
121      <info name="format" value="DFS" />
122      <info name="compatibility" value="32016 co-processor" />
123      <part name="flop1" interface="floppy_5_25">
124         <dataarea name="flop" size="205060">
125            <rom name="panos14-2.ssd" size="205060" crc="5f0b7639" sha1="4bd9e7ee5db79f4c0f3608b7d2b9b5437aae356d" offset="0" />
126         </dataarea>
127      </part>
128   </software>
129   
130   <software name="panos143" supported="no">
131      <description>3 FORTRAN 77 (PanOS) v1.4</description>
132      <year>1985</year>
133      <publisher>Acorn Computers</publisher>
134      <info name="format" value="DFS" />
135      <info name="compatibility" value="32016 co-processor" />
136      <part name="flop1" interface="floppy_5_25">
137         <dataarea name="flop" size="290304">
138            <rom name="panos14-3.ssd" size="290304" crc="5b28d9e4" sha1="e8503acb278259483bcb82697c3a8006be09ce42" offset="0" />
139         </dataarea>
140      </part>
141   </software>
142   
143   <software name="panos144" supported="no">
144      <description>4 ISO PASCAL (PanOS) v1.4</description>
145      <year>1985</year>
146      <publisher>Acorn Computers</publisher>
147      <info name="format" value="DFS" />
148      <info name="compatibility" value="32016 co-processor" />
149      <part name="flop1" interface="floppy_5_25">
150         <dataarea name="flop" size="378624">
151            <rom name="panos14-4.ssd" size="378624" crc="62fc2639" sha1="f2ceeccb021f4c5030150244fb47897cc7e63f80" offset="0" />
152         </dataarea>
153      </part>
154   </software>
155   
156   <software name="panos145" supported="no">
157      <description>5 C (PanOS) v1.4</description>
158      <year>1985</year>
159      <publisher>Acorn Computers</publisher>
160      <info name="format" value="DFS" />
161      <info name="compatibility" value="32016 co-processor" />
162      <part name="flop1" interface="floppy_5_25">
163         <dataarea name="flop" size="378624">
164            <rom name="panos14-5.ssd" size="378624" crc="2f0940f6" sha1="873942b6033fd234db791b34d4df76a866f366b7" offset="0" />
165         </dataarea>
166      </part>
167   </software>
168   
169   <software name="panos146" supported="no">
170      <description>6 Cambridge LISP (PanOS) v1.4</description>
171      <year>1985</year>
172      <publisher>Acorn Computers</publisher>
173      <info name="format" value="DFS" />
174      <info name="compatibility" value="32016 co-processor" />
175      <part name="flop1" interface="floppy_5_25">
176         <dataarea name="flop" size="409088">
177            <rom name="panos14-6.ssd" size="409088" crc="5337964d" sha1="bfecd5cada401d6dfeb410ebc17fb62333f19bbc" offset="0" />
178         </dataarea>
179      </part>
180   </software>
181   
182   <software name="panos147" supported="no">
183      <description>7 Welcome Programs v1.4</description>
184      <year>1985</year>
185      <publisher>Acorn Computers</publisher>
186      <info name="format" value="DFS" />
187      <info name="compatibility" value="32016 co-processor" />
188      <part name="flop1" interface="floppy_5_25">
189         <dataarea name="flop" size="402176">
190            <rom name="panos14-7.ssd" size="402176" crc="2e5e4fe4" sha1="f69687efea606468a72ed1363f6eab0ce8203f6b" offset="0" />
191         </dataarea>
192      </part>
193   </software>
194
195</softwarelist>
trunk/hash/bbc_65c102_flop.xml
r249889r249890
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- BBC Master 65C102 Co-Processor Support Disc -->
5
6<!-- Loading Instructions:
7
8      Hold down the SHIFT key and press and release the BREAK key.
9-->
10
11<softwarelist name="bbc_65c102_flop" description="BBC Master 65C102 Co-Processor Support Disc">
12
13   <software name="coprosup" supported="no">
14      <description>65C102 Co-Processor Support Disc</description>
15      <year>1983</year>
16      <publisher>Acorn Computers</publisher>
17      <info name="format" value="DFS" />
18      <info name="compatibility" value="65C102 co-processor" />
19      <part name="flop1" interface="floppy_5_25">
20         <dataarea name="flop" size="102400">
21            <rom name="bbcmaster65c102coprocessorsupportdisc.ssd" size="102400" crc="f6378bb4" sha1="03bfe9e860ecc6117f2e78771c4e301751269055" offset="0" />
22         </dataarea>
23      </part>
24   </software>
25
26</softwarelist>
trunk/hash/bbc_80186_flop.xml
r249889r249890
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- BBC Master 512 System Discs -->
5
6<!-- Loading Instructions:
7
8      Hold down the SHIFT key and press and release the BREAK key.
9-->
10
11<softwarelist name="bbc_80186_flop" description="BBC Master 512 System Discs">
12
13   <software name="dosboot" supported="no">
14      <description>512 Disc 1 DOS Plus Boot v2.1</description>
15      <year>1986</year>
16      <publisher>Acorn Computers</publisher>
17      <info name="format" value="ADFS-DOS" />
18      <info name="compatibility" value="80186 co-processor" />
19      <part name="flop1" interface="floppy_5_25">
20         <dataarea name="flop" size="655360">
21            <rom name="bbcmaster512-disc1-dosplusboot-v2.1.adl" size="655360" crc="7805045c" sha1="89ad16c97842f94809cf05eb9b079867944ca8d8" offset="0" />
22         </dataarea>
23      </part>
24   </software>
25
26   <software name="dosboot12a"  cloneof="dosboot" supported="no">
27      <description>512 Disc 1 DOS Plus Boot v1.2a</description>
28      <year>1986</year>
29      <publisher>Acorn Computers</publisher>
30      <info name="format" value="ADFS-DOS" />
31      <info name="compatibility" value="80186 co-processor" />
32      <part name="flop1" interface="floppy_5_25">
33         <dataarea name="flop" size="655360">
34            <rom name="bbcmaster512-disc1-dosplusboot-v1.2a.adl" size="655360" crc="264fff88" sha1="7d3386e117b96cc08e78d80ba0d226821e945eac" offset="0" />
35         </dataarea>
36      </part>
37   </software>
38
39   <software name="dosboot12"  cloneof="dosboot" supported="no">
40      <description>512 Disc 1 DOS Plus Boot v1.2</description>
41      <year>1986</year>
42      <publisher>Acorn Computers</publisher>
43      <info name="format" value="ADFS-DOS" />
44      <info name="compatibility" value="80186 co-processor" />
45      <part name="flop1" interface="floppy_5_25">
46         <dataarea name="flop" size="655360">
47            <rom name="bbcmaster512-disc1-dosplusboot-v1.2.adl" size="655360" crc="c2677483" sha1="2df6155aecfd4fc9595cd95359b153d158c313a3" offset="0" />
48         </dataarea>
49      </part>
50   </software>
51
52   <software name="gemapps" supported="no">
53      <description>512 Disc 2 GEM Applications</description>
54      <year>1986</year>
55      <publisher>Acorn Computers</publisher>
56      <info name="format" value="DOS+" />
57      <info name="compatibility" value="80186 co-processor" />
58      <part name="flop1" interface="floppy_5_25">
59         <dataarea name="flop" size="819200">
60            <rom name="bbcmaster512-disc2-gemapplications.img" size="819200" crc="68b1cdfe" sha1="0fd737ab5c8499727e6ec3711e59566e702244e7" offset="0" />
61         </dataarea>
62      </part>
63   </software>
64
65   <software name="gemdata" supported="no">
66      <description>512 Disc 3 GEM Data</description>
67      <year>1986</year>
68      <publisher>Acorn Computers</publisher>
69      <info name="format" value="DOS+" />
70      <info name="compatibility" value="80186 co-processor" />
71      <part name="flop1" interface="floppy_5_25">
72         <dataarea name="flop" size="819200">
73            <rom name="bbcmaster512-disc3-gemdata.img" size="819200" crc="b463f444" sha1="e80911c292aba1b601507c75d9233a79887e3b51" offset="0" />
74         </dataarea>
75      </part>
76   </software>
77
78   <software name="misc" supported="no">
79      <description>512 Disc 4 Miscellaneous</description>
80      <year>1986</year>
81      <publisher>Acorn Computers</publisher>
82      <info name="format" value="DOS+" />
83      <info name="compatibility" value="80186 co-processor" />
84      <part name="flop1" interface="floppy_5_25">
85         <dataarea name="flop" size="819200">
86            <rom name="bbcmaster512-disc4-miscellaneous.img" size="819200" crc="2de63513" sha1="e6718419d4d6f6a834653655f6334667b5c4c355" offset="0" />
87         </dataarea>
88      </part>
89   </software>
90
91   <software name="dabs11" supported="no">
92      <description>Dabs Shareware Vol.1 Disc 1</description>
93      <year>19??</year>
94      <publisher>Dabs Press</publisher>
95      <info name="format" value="DOS+" />
96      <info name="compatibility" value="80186 co-processor" />
97      <part name="flop1" interface="floppy_5_25">
98         <dataarea name="flop" size="819200">
99            <rom name="dabs-shareware-vol1-disc1.img" size="819200" crc="767569f6" sha1="103718d7410cf635eb56010fa6204012fcddb719" offset="0" />
100         </dataarea>
101      </part>
102   </software>
103
104   <software name="dabs12" supported="no">
105      <description>Dabs Shareware Vol.1 Disc 2</description>
106      <year>19??</year>
107      <publisher>Dabs Press</publisher>
108      <info name="format" value="DOS+" />
109      <info name="compatibility" value="80186 co-processor" />
110      <part name="flop1" interface="floppy_5_25">
111         <dataarea name="flop" size="819200">
112            <rom name="dabs-shareware-vol1-disc2.img" size="819200" crc="011ac2db" sha1="8dc11173655864c6a1d37251bc88f512ba43a09c" offset="0" />
113         </dataarea>
114      </part>
115   </software>
116
117   <software name="dabs13" supported="no">
118      <description>Dabs Shareware Vol.1 Disc 3</description>
119      <year>19??</year>
120      <publisher>Dabs Press</publisher>
121      <info name="format" value="DOS+" />
122      <info name="compatibility" value="80186 co-processor" />
123      <part name="flop1" interface="floppy_5_25">
124         <dataarea name="flop" size="819200">
125            <rom name="dabs-shareware-vol1-disc3.img" size="819200" crc="531d3a4b" sha1="a75dd613f4f5bc096a01e259620d16b154305ba8" offset="0" />
126         </dataarea>
127      </part>
128   </software>
129
130   <software name="dabs14" supported="no">
131      <description>Dabs Shareware Vol.1 Disc 4</description>
132      <year>19??</year>
133      <publisher>Dabs Press</publisher>
134      <info name="format" value="DOS+" />
135      <info name="compatibility" value="80186 co-processor" />
136      <part name="flop1" interface="floppy_5_25">
137         <dataarea name="flop" size="819200">
138            <rom name="dabs-shareware-vol1-disc4.img" size="819200" crc="ee1a6961" sha1="c970d723d9b9ee55717928850897d6b21c376c5e" offset="0" />
139         </dataarea>
140      </part>
141   </software>
142
143   <software name="dabs15" supported="no">
144      <description>Dabs Shareware Vol.1 Disc 5</description>
145      <year>19??</year>
146      <publisher>Dabs Press</publisher>
147      <info name="format" value="DOS+" />
148      <info name="compatibility" value="80186 co-processor" />
149      <part name="flop1" interface="floppy_5_25">
150         <dataarea name="flop" size="819200">
151            <rom name="dabs-shareware-vol1-disc5.img" size="819200" crc="4ab201a7" sha1="094d3af950631a803960d19b573be0e65c19158d" offset="0" />
152         </dataarea>
153      </part>
154   </software>
155
156   <software name="dabs21" supported="no">
157      <description>Dabs Shareware Vol.2 Disc 1</description>
158      <year>19??</year>
159      <publisher>Dabs Press</publisher>
160      <info name="format" value="DOS+" />
161      <info name="compatibility" value="80186 co-processor" />
162      <part name="flop1" interface="floppy_5_25">
163         <dataarea name="flop" size="819200">
164            <rom name="dabs-shareware-vol2-disc1.img" size="819200" crc="ba7e3ed4" sha1="b5d649a7bdc4ccd75f99e0636ad0a0b6ec71c4cf" offset="0" />
165         </dataarea>
166      </part>
167   </software>
168
169   <software name="dabs22" supported="no">
170      <description>Dabs Shareware Vol.2 Disc 2</description>
171      <year>19??</year>
172      <publisher>Dabs Press</publisher>
173      <info name="format" value="DOS+" />
174      <info name="compatibility" value="80186 co-processor" />
175      <part name="flop1" interface="floppy_5_25">
176         <dataarea name="flop" size="819200">
177            <rom name="dabs-shareware-vol2-disc2.img" size="819200" crc="b858f06c" sha1="698c6a29fc2f549e8b8ff057e1289c41fc6647e5" offset="0" />
178         </dataarea>
179      </part>
180   </software>
181
182   <software name="dabs23" supported="no">
183      <description>Dabs Shareware Vol.2 Disc 3</description>
184      <year>19??</year>
185      <publisher>Dabs Press</publisher>
186      <info name="format" value="DOS+" />
187      <info name="compatibility" value="80186 co-processor" />
188      <part name="flop1" interface="floppy_5_25">
189         <dataarea name="flop" size="819200">
190            <rom name="dabs-shareware-vol2-disc3.img" size="819200" crc="2f066a93" sha1="7b2c4b4355ba9855f9167e27d9316ed928dae010" offset="0" />
191         </dataarea>
192      </part>
193   </software>
194
195   <software name="dabs24" supported="no">
196      <description>Dabs Shareware Vol.2 Disc 4</description>
197      <year>19??</year>
198      <publisher>Dabs Press</publisher>
199      <info name="format" value="DOS+" />
200      <info name="compatibility" value="80186 co-processor" />
201      <part name="flop1" interface="floppy_5_25">
202         <dataarea name="flop" size="819200">
203            <rom name="dabs-shareware-vol2-disc4.img" size="819200" crc="d507700b" sha1="9d5a75b90eb73387eda913f12dde8cc5cf8c9cab" offset="0" />
204         </dataarea>
205      </part>
206   </software>
207
208   <software name="dabs25" supported="no">
209      <description>Dabs Shareware Vol.2 Disc 5</description>
210      <year>19??</year>
211      <publisher>Dabs Press</publisher>
212      <info name="format" value="DOS+" />
213      <info name="compatibility" value="80186 co-processor" />
214      <part name="flop1" interface="floppy_5_25">
215         <dataarea name="flop" size="819200">
216            <rom name="dabs-shareware-vol2-disc5.img" size="819200" crc="3cfdd202" sha1="e4e8230f29aff2c6bc4a1e218c9be4c9d157fbef" offset="0" />
217         </dataarea>
218      </part>
219   </software>
220
221   <software name="dabs2b" supported="no">
222      <description>Dabs Shareware Vol.2 Bonus</description>
223      <year>19??</year>
224      <publisher>Dabs Press</publisher>
225      <info name="format" value="DOS+" />
226      <info name="compatibility" value="80186 co-processor" />
227      <part name="flop1" interface="floppy_5_25">
228         <dataarea name="flop" size="819200">
229            <rom name="dabs-shareware-vol2-bonus.img" size="819200" crc="69b81821" sha1="2977d4628e262907ddf5f5b3ad35abf703092809" offset="0" />
230         </dataarea>
231      </part>
232   </software>
233
234</softwarelist>
trunk/hash/bbc_arm_flop.xml
r249889r249890
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- ARM Evaluation System Discs -->
5
6<!-- Loading Instructions:
7
8      Hold down the SHIFT key and press and release the BREAK key.
9-->
10
11<softwarelist name="bbc_arm_flop" description="ARM Evaluation System Discs">
12
13   <software name="armeval1" supported="no">
14      <description>ARM Evaluation System Disc 1</description>
15      <year>1986</year>
16      <publisher>Acorn Computers</publisher>
17      <info name="format" value="ADFS" />
18      <info name="compatibility" value="ARM co-processor" />
19      <part name="flop1" interface="floppy_5_25">
20         <dataarea name="flop" size="655360">
21            <rom name="armevaluationsystem-disc1.adl" size="655360" crc="c8d6fd8d" sha1="fad5516b2407279c68bca0d21cda1a5880a22248" offset="0" />
22         </dataarea>
23      </part>
24   </software>
25
26   <software name="armeval2" supported="no">
27      <description>ARM Evaluation System Disc 2</description>
28      <year>1986</year>
29      <publisher>Acorn Computers</publisher>
30      <info name="format" value="ADFS" />
31      <info name="compatibility" value="ARM co-processor" />
32      <part name="flop1" interface="floppy_5_25">
33         <dataarea name="flop" size="655360">
34            <rom name="armevaluationsystem-disc2.adl" size="655360" crc="5fee623f" sha1="ef084f6bac30471e9cbb06a498901e92b858bffa" offset="0" />
35         </dataarea>
36      </part>
37   </software>
38
39   <software name="armeval3" supported="no">
40      <description>ARM Evaluation System Disc 3</description>
41      <year>1986</year>
42      <publisher>Acorn Computers</publisher>
43      <info name="format" value="ADFS" />
44      <info name="compatibility" value="ARM co-processor" />
45      <part name="flop1" interface="floppy_5_25">
46         <dataarea name="flop" size="655360">
47            <rom name="armevaluationsystem-disc3.adl" size="655360" crc="8511d59e" sha1="be855b2a96c165cf1c76d9128edafb6df5ba47ca" offset="0" />
48         </dataarea>
49      </part>
50   </software>
51
52   <software name="armeval4" supported="no">
53      <description>ARM Evaluation System Disc 4</description>
54      <year>1986</year>
55      <publisher>Acorn Computers</publisher>
56      <info name="format" value="ADFS" />
57      <info name="compatibility" value="ARM co-processor" />
58      <part name="flop1" interface="floppy_5_25">
59         <dataarea name="flop" size="655360">
60            <rom name="armevaluationsystem-disc4.adl" size="655360" crc="78dce270" sha1="4a6974193c1cefe2b7c21d06be33da9e32eea793" offset="0" />
61         </dataarea>
62      </part>
63   </software>
64
65   <software name="armeval5" supported="no">
66      <description>ARM Evaluation System Disc 5</description>
67      <year>1986</year>
68      <publisher>Acorn Computers</publisher>
69      <info name="format" value="ADFS" />
70      <info name="compatibility" value="ARM co-processor" />
71      <part name="flop1" interface="floppy_5_25">
72         <dataarea name="flop" size="655360">
73            <rom name="armevaluationsystem-disc5.adl" size="655360" crc="c77d9325" sha1="9ac7e92916a0f69214208d06ae22a285cf3e46d7" offset="0" />
74         </dataarea>
75      </part>
76   </software>
77
78</softwarelist>
trunk/hash/bbc_z80_flop.xml
r249889r249890
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- BBC Micro Model B Disks - Z80 co-processor required -->
5
6<!-- Loading CP/M:
7
8      Reset with Z80 co-processor enabled and Acorn CP/M System Disc 1 in drive 0.
9-->
10
11<softwarelist name="bbc_z80_flop" description="BBC Micro Model B disks - Z80">
12
13   <software name="cpmsys1" supported="no">
14      <description>Acorn CP/M System Disc 1</description>
15      <year>1984</year>
16      <publisher>Acorn</publisher>
17      <info name="serial" value="CP2-884-003481" />
18      <info name="format" value="CP/M" />
19      <info name="usage" value="Hard reset with Z80 co-processor enabled" />
20      <info name="compatibility" value="Z80 co-processor" />
21      <part name="flop1" interface="floppy_5_25">
22         <dataarea name="flop" size="409600">
23            <rom name="acorn_cpm_system_disk1.ssd" size="409600" crc="78686d61" sha1="28f33e5e356d307d7e35714b34c18e672aec0031" offset="0" />
24         </dataarea>
25      </part>
26   </software>
27
28   <software name="cpmsys2" supported="no">
29      <description>Acorn CP/M System Disc 2</description>
30      <year>1984</year>
31      <publisher>Acorn</publisher>
32      <info name="format" value="CP/M" />
33      <info name="compatibility" value="Z80 co-processor" />
34      <part name="flop1" interface="floppy_5_25">
35         <dataarea name="flop" size="409600">
36            <rom name="acorn_cpm_system_disk2.ssd" size="409600" crc="afeaa342" sha1="e4b838dae211317c8ccadf47a17fa2ab5aa436a4" offset="0" />
37         </dataarea>
38      </part>
39   </software>
40   
41   <software name="cpmsys3" supported="no">
42      <description>Acorn CP/M System Disc 3</description>
43      <year>1984</year>
44      <publisher>Acorn</publisher>
45      <info name="format" value="CP/M" />
46      <info name="compatibility" value="Z80 co-processor" />
47      <part name="flop1" interface="floppy_5_25">
48         <dataarea name="flop" size="409600">
49            <rom name="acorn_cpm_system_disk3.ssd" size="409600" crc="edc26e0e" sha1="7650ecbd02ee0a9f3e986c96719c791db5505de6" offset="0" />
50         </dataarea>
51      </part>
52   </software>
53
54   <software name="cpmsys4" supported="no">
55      <description>Acorn CP/M System Disc 4</description>
56      <year>1984</year>
57      <publisher>Acorn</publisher>
58      <info name="format" value="CP/M" />
59      <info name="compatibility" value="Z80 co-processor" />
60      <part name="flop1" interface="floppy_5_25">
61         <dataarea name="flop" size="409600">
62            <rom name="acorn_cpm_system_disk4.ssd" size="409600" crc="53dbea69" sha1="1ab9fe7f7ea7b69e6dd1a1ebccd24eae9677b749" offset="0" />
63         </dataarea>
64      </part>
65   </software>
66
67   <software name="cpmsys5" supported="no">
68      <description>Acorn CP/M System Disc 5</description>
69      <year>1984</year>
70      <publisher>Acorn</publisher>
71      <info name="serial" value="A02 AC UK0013257" />
72      <info name="format" value="CP/M" />
73      <info name="compatibility" value="Z80 co-processor" />
74      <part name="flop1" interface="floppy_5_25">
75         <dataarea name="flop" size="409600">
76            <rom name="acorn_cpm_system_disk5.ssd" size="409600" crc="cf426f1c" sha1="7e336b8ae82138b7c6e19c59ba20c0664b4c8a77" offset="0" />
77         </dataarea>
78      </part>
79   </software>
80
81   <software name="cpmsys6" supported="no">
82      <description>Acorn CP/M System Disc 6</description>
83      <year>1984</year>
84      <publisher>Acorn</publisher>
85      <info name="serial" value="A02 AG UK0013440" />
86      <info name="format" value="CP/M" />
87      <info name="compatibility" value="Z80 co-processor" />
88      <part name="flop1" interface="floppy_5_25">
89         <dataarea name="flop" size="409600">
90            <rom name="acorn_cpm_system_disk6.ssd" size="409600" crc="03575faa" sha1="f568a23ae3b0d17866f55bf16ca29a351850167c" offset="0" />
91         </dataarea>
92      </part>
93   </software>
94
95   <software name="cpmsys7" supported="no">
96      <description>Acorn CP/M System Disc 7</description>
97      <year>1984</year>
98      <publisher>Acorn</publisher>
99      <info name="serial" value="BQ03261BC" />
100      <info name="format" value="CP/M" />
101      <info name="compatibility" value="Z80 co-processor" />
102      <part name="flop1" interface="floppy_5_25">
103         <dataarea name="flop" size="409600">
104            <rom name="acorn_cpm_system_disk7.ssd" size="409600" crc="8ae52625" sha1="23c102b852eab471a45fac588c8e326cc96e1368" offset="0" />
105         </dataarea>
106      </part>
107   </software>
108
109   <software name="cpmutils" supported="no">
110      <description>CP/M Utilities Disc</description>
111      <year>1984</year>
112      <publisher>Acorn</publisher>
113      <info name="format" value="CP/M" />
114      <info name="compatibility" value="Z80 co-processor" />
115      <part name="flop1" interface="floppy_5_25">
116         <dataarea name="flop" size="409600">
117            <rom name="cpm_utilities_disc.dsd" size="409600" crc="1afbcc5f" sha1="ec4cf1810d43e0000b92943204dfd593bec883f1" offset="0" />
118         </dataarea>
119      </part>
120   </software>
121
122   <software name="basicprg" supported="no">
123      <description>BASIC Program Disc</description>
124      <year>1984</year>
125      <publisher>Acorn</publisher>
126      <info name="format" value="CP/M" />
127      <info name="compatibility" value="Z80 co-processor" />
128      <part name="flop1" interface="floppy_5_25">
129         <dataarea name="flop" size="409600">
130            <rom name="basic_program_disc.dsd" size="409600" crc="827304e7" sha1="76b808b059982ad6f1ab3454b745f83f2fc6ab1d" offset="0" />
131         </dataarea>
132      </part>
133   </software>
134
135   <software name="cobolprg" supported="no">
136      <description>CIS COBOL Program Disc</description>
137      <year>1984</year>
138      <publisher>Acorn</publisher>
139      <info name="format" value="CP/M" />
140      <info name="compatibility" value="Z80 co-processor" />
141      <part name="flop1" interface="floppy_5_25">
142         <dataarea name="flop" size="409600">
143            <rom name="cis_cobol_program_disc.dsd" size="409600" crc="a7b8d740" sha1="f2d6cb366d00031958f1da774bc61521f61f86fe" offset="0" />
144         </dataarea>
145      </part>
146   </software>
147
148   <software name="memoprg" supported="no">
149      <description>MemoPlan Program Disc</description>
150      <year>1984</year>
151      <publisher>Acorn</publisher>
152      <info name="format" value="CP/M" />
153      <info name="compatibility" value="Z80 co-processor" />
154      <part name="flop1" interface="floppy_5_25">
155         <dataarea name="flop" size="409600">
156            <rom name="memoplan_program_disc.dsd" size="409600" crc="1a3eaf3e" sha1="87c047857e0bcd4abf6fc1c785e0e0035147fd0a" offset="0" />
157         </dataarea>
158      </part>
159   </software>
160
161   <software name="graphprg" supported="no">
162      <description>GraphPlan Program Disc</description>
163      <year>1984</year>
164      <publisher>Acorn</publisher>
165      <info name="format" value="CP/M" />
166      <info name="compatibility" value="Z80 co-processor" />
167      <part name="flop1" interface="floppy_5_25">
168         <dataarea name="flop" size="409600">
169            <rom name="graphplan_program_disc.dsd" size="409600" crc="015eca7c" sha1="c18216ca44bfd21d2119a33630691363b22c32b1" offset="0" />
170         </dataarea>
171      </part>
172   </software>
173
174   <software name="fileprg" supported="no">
175      <description>FilePlan Program Disc</description>
176      <year>1984</year>
177      <publisher>Acorn</publisher>
178      <info name="format" value="CP/M" />
179      <info name="compatibility" value="Z80 co-processor" />
180      <part name="flop1" interface="floppy_5_25">
181         <dataarea name="flop" size="409600">
182            <rom name="fileplan_program_disc.dsd" size="409600" crc="8b832b7e" sha1="9d3f9401e098b8ab50c842552eb6ac98195647f7" offset="0" />
183         </dataarea>
184      </part>
185   </software>
186
187   <software name="accntprg" supported="no">
188      <description>Accountant Program Disc</description>
189      <year>1984</year>
190      <publisher>Acorn</publisher>
191      <info name="format" value="CP/M" />
192      <info name="compatibility" value="Z80 co-processor" />
193      <part name="flop1" interface="floppy_5_25">
194         <dataarea name="flop" size="409600">
195            <rom name="accountant_program_disc.dsd" size="409600" crc="02a76ee8" sha1="3119b294f63c6beb7726c6a5c73065a130efc8e2" offset="0" />
196         </dataarea>
197      </part>
198   </software>
199
200   <software name="accntdat" supported="no">
201      <description>Accountant Data Disc</description>
202      <year>1984</year>
203      <publisher>Acorn</publisher>
204      <info name="format" value="CP/M" />
205      <info name="compatibility" value="Z80 co-processor" />
206      <part name="flop1" interface="floppy_5_25">
207         <dataarea name="flop" size="409600">
208            <rom name="accountant_data_disc.dsd" size="409600" crc="d2b4c506" sha1="875e123044c9dee63c9c1f2b1fa8f248125f3dc7" offset="0" />
209         </dataarea>
210      </part>
211   </software>
212
213   <software name="nucldef" supported="no">
214      <description>Nucleus Definitions Program Disc</description>
215      <year>1984</year>
216      <publisher>Acorn</publisher>
217      <info name="format" value="CP/M" />
218      <info name="compatibility" value="Z80 co-processor" />
219      <part name="flop1" interface="floppy_5_25">
220         <dataarea name="flop" size="409600">
221            <rom name="nucleus_definitions_program_disc.dsd" size="409600" crc="447e8629" sha1="2e39dfdae5aebaa7719e35499b13d5e6ac445f03" offset="0" />
222         </dataarea>
223      </part>
224   </software>
225
226   <software name="nuclrpt" supported="no">
227      <description>Nucleus Report Program Disc</description>
228      <year>1984</year>
229      <publisher>Acorn</publisher>
230      <info name="format" value="CP/M" />
231      <info name="compatibility" value="Z80 co-processor" />
232      <part name="flop1" interface="floppy_5_25">
233         <dataarea name="flop" size="409600">
234            <rom name="nucleus_reporter_program_disc.dsd" size="409600" crc="c2e51084" sha1="62117dde924b10c7af241e640e468c3ca35db016" offset="0" />
235         </dataarea>
236      </part>
237   </software>
238
239   <software name="nuclparm" supported="no">
240      <description>Nucleus Parameter File Program Disc</description>
241      <year>1984</year>
242      <publisher>Acorn</publisher>
243      <info name="format" value="CP/M" />
244      <info name="compatibility" value="Z80 co-processor" />
245      <part name="flop1" interface="floppy_5_25">
246         <dataarea name="flop" size="409600">
247            <rom name="nucleus_parameter_file_program_disc.dsd" size="409600" crc="2c81fc08" sha1="b60bbfac15aab888c5be5e03b5977419b0e61903" offset="0" />
248         </dataarea>
249      </part>
250   </software>
251
252   <software name="startday" supported="no">
253      <description>Start Of Day Disc</description>
254      <year>1984</year>
255      <publisher>Acorn</publisher>
256      <info name="format" value="CP/M" />
257      <info name="compatibility" value="Z80 co-processor" />
258      <part name="flop1" interface="floppy_5_25">
259         <dataarea name="flop" size="409600">
260            <rom name="start_of_day_disc.dsd" size="409600" crc="f85aa0f5" sha1="4221d8c64dba5e44acd770effbce7fe2bc0da77e" offset="0" />
261         </dataarea>
262      </part>
263   </software>
264
265   <software name="colcave" supported="no">
266      <description>Colossal Cave</description>
267      <year>19??</year>
268      <publisher>&lt;unknown&gt;</publisher>
269      <info name="format" value="CP/M" />
270      <info name="compatibility" value="Z80 co-processor" />
271      <part name="flop1" interface="floppy_5_25">
272         <dataarea name="flop" size="409600">
273            <rom name="colossal_cave.ssd" size="409600" crc="95094ab0" sha1="0d213680b2934c42b821cfd3796219775780cdc8" offset="0" />
274         </dataarea>
275      </part>
276   </software>
277
278</softwarelist>
trunk/hash/bbca_cass.xml
r249889r249890
1010      Use the relevant command to load the software, usually CHAIN"" or *RUN, though some earlier titles from Micro Power require *LOAD.
1111-->
1212
13<!-- This list was compiled from the archive at http://www.stairwaytohell.com/. Additional titles will be added as they are made available at http://stardot.org.uk/ forum. -->
14
1513<softwarelist name="bbca_cass" description="BBC Micro Model A cassettes">
1614
1715   <!-- Games -->
r249889r249890
3129      <description>Arcade Action</description>
3230      <year>1982</year>
3331      <publisher>Acornsoft</publisher>
34      <info name="release" value="G06" />
3532      <part name="cass" interface="bbc_cass">
3633         <dataarea name="cass" size="13352">
3734            <rom name="arcadeaction-v2.5(1982)(acornsoft)(g06).uef" size="13352" crc="6c2db1cd" sha1="b86be839f41ce68dc229f4ca84bac63c24326f9a" offset="0"/>
r249889r249890
4138
4239   <software name="beebtrek">
4340      <description>Beebtrek</description>
44      <year>1982</year>
41      <year>19??</year>
4542      <publisher>Software For All</publisher>
4643      <part name="cass" interface="bbc_cass">
4744         <dataarea name="cass" size="7235">
r249889r249890
7673      <description>Draughts And Reversi</description>
7774      <year>1983</year>
7875      <publisher>Acornsoft</publisher>
79      <info name="release" value="G20" />
8076      <part name="cass1" interface="bbc_cass">
8177         <dataarea name="cass" size="6165">
8278            <rom name="dar-draughts-v2.1(1983)(acornsoft)(g20).uef" size="6165" crc="35e365ed" sha1="0000bae54eaaa8d5507cc0d7a444aaeac03df97d" offset="0" />
r249889r249890
9187
9288   <software name="famgames">
9389      <description>Family Games</description>
94      <year>1982</year>
90      <year>19??</year>
9591      <publisher>I.J.K.</publisher>
9692      <part name="cass1" interface="bbc_cass">
9793         <dataarea name="cass" size="2152">
r249889r249890
127123
128124   <software name="fruitmc">
129125      <description>Fruit Machine</description>
130         <year>198?</year>
126         <year>19??</year>
131127      <publisher>Computer Concepts</publisher>
132128      <part name="cass" interface="bbc_cass">
133129         <dataarea name="cass" size="4421">
r249889r249890
213209      </part>
214210   </software>
215211
216   <software name="spacinva">
217      <description>Space Invaders 16K</description>
218      <year>1982</year>
219      <publisher>David McKeran</publisher>
220      <info name="usage" value="Load with *RUN" />
221      <part name="cass" interface="bbc_cass">
222         <dataarea name="cass" size="4513">
223            <rom name="spaceinvaders16k_run(1982)(davidmckeran).uef" size="4513" crc="a95a6a41" sha1="dff22b2d7a5c1d5355b8f72edf60acaa67f06c90" offset="0" />
224         </dataarea>
225      </part>
226   </software>
227
228212   <software name="spacmaze">
229213      <description>Space Maze</description>
230214      <year>1981</year>
r249889r249890
238222
239223   <software name="sppirate">
240224      <description>Space Pirates</description>
241      <year>1982</year>
225      <year>19??</year>
242226      <publisher>Bug Byte</publisher>
243227      <part name="cass" interface="bbc_cass">
244228         <dataarea name="cass" size="3557">
r249889r249890
249233
250234   <software name="startrek">
251235      <description>Star Trek</description>
252      <year>1982</year>
236      <year>19??</year>
253237      <publisher>I.J.K.</publisher>
254238      <part name="cass" interface="bbc_cass">
255239         <dataarea name="cass" size="5376">
r249889r249890
264248      <description>Peeko Computer (Ger)</description>
265249      <year>198?</year>
266250      <publisher>Acornsoft</publisher>
267      <info name="release" value="E02" />
268251      <part name="cass" interface="bbc_cass">
269252         <dataarea name="cass" size="4821">
270253            <rom name="peekocomputer-german(198x)(acornsoft)(e02).uef" size="4821" crc="c6503a6b" sha1="813a6399a45a75a4aab3d2edd1722488edf41a52" offset="0" />
r249889r249890
276259      <description>Peeko Computer</description>
277260      <year>198?</year>
278261      <publisher>Acornsoft</publisher>
279      <info name="release" value="E02" />
280262      <part name="cass" interface="bbc_cass">
281263         <dataarea name="cass" size="3993">
282264            <rom name="peekocomputer(198x)(acornsoft)(e02).uef" size="3993" crc="9a78f3b9" sha1="ff974eb52d6d984637e21e15a883a7572991e38b" offset="0" />
r249889r249890
288270      <description>Business Games (Ger)</description>
289271      <year>198?</year>
290272      <publisher>Acornsoft</publisher>
291      <info name="release" value="E03" />
292273      <part name="cass" interface="bbc_cass">
293274         <dataarea name="cass" size="11858">
294275            <rom name="businessgames-german(198x)(acornsoft)(e03).uef" size="11858" crc="ae23e0dd" sha1="2a4ca1e06870e41d9fa4c4e86ab196251869b160" offset="0" />
r249889r249890
300281      <description>Word Hunt (Ger)</description>
301282      <year>198?</year>
302283      <publisher>Acornsoft</publisher>
303      <info name="release" value="E05" />
304284      <part name="cass" interface="bbc_cass">
305285         <dataarea name="cass" size="10849">
306286            <rom name="wordhunt-german(198x)(acornsoft)(e05).uef" size="10849" crc="e412d5af" sha1="3163432f2388b0795ec03b61ab77e90e37a3f18d" offset="0" />
r249889r249890
312292      <description>Word Sequencing (Ger)</description>
313293      <year>198?</year>
314294      <publisher>Acornsoft</publisher>
315      <info name="release" value="E06" />
316295      <part name="cass" interface="bbc_cass">
317296         <dataarea name="cass" size="10883">
318297            <rom name="wordsequencing-german(198x)(acornsoft)(e06).uef" size="10883" crc="605ebb74" sha1="5d2b67151889a0fa90c490dd4db40d579a8fb386" offset="0" />
r249889r249890
324303      <description>Word Sequencing</description>
325304      <year>198?</year>
326305      <publisher>Acornsoft</publisher>
327      <info name="release" value="E06" />
328306      <part name="cass" interface="bbc_cass">
329307         <dataarea name="cass" size="7955">
330308            <rom name="wordsequencing(198x)(acornsoft)(e06).uef" size="7955" crc="b6a37e42" sha1="b0b2088cd4bbbed7accd33e943eb8f343e36c7a2" offset="0" />
r249889r249890
336314      <description>Missing Signs (Ger)</description>
337315      <year>198?</year>
338316      <publisher>Acornsoft</publisher>
339      <info name="release" value="E09" />
340317      <part name="cass" interface="bbc_cass">
341318         <dataarea name="cass" size="11055">
342319            <rom name="missingsigns-german(198x)(acornsoft)(e09).uef" size="11055" crc="3a6c4f59" sha1="e02115cbf2cdcc0996b12fe8db25c02ca234248b" offset="0" />
r249889r249890
348325      <description>Missing Signs</description>
349326      <year>198?</year>
350327      <publisher>Acornsoft</publisher>
351      <info name="release" value="E09" />
352328      <part name="cass" interface="bbc_cass">
353329         <dataarea name="cass" size="7977">
354330            <rom name="missingsigns(198x)(acornsoft)(e09).uef" size="7977" crc="7da85f67" sha1="ebc8116fa980c0d268918a3aa333f772de0a7cb9" offset="0" />
trunk/hash/bbcb_cass.xml
r249889r249890
77
88<!-- Loading Instructions:
99
10      If the system has a disk drive (which the BBC Model B does by default in MAME) you must type *TAPE, then use the relevant command to load the software, usually CHAIN"" or *RUN, though some earlier titles from Micro Power require *LOAD.
10      If the system has a disk drive (which the BBC Model B does by default in MESS) you must type *TAPE, then use the relevant command to load the software, usually CHAIN"" or *RUN, though some earlier titles from Micro Power require *LOAD.
1111
12      To start/stop the tape you must use the MAME menus, so you'll have to turn full keyboard mode off with Scroll Lock, then navigate the menus, turning Scroll Lock back on when you're finished.
12      To start/stop the tape you must use the MESS menus, so you'll have to turn full keyboard mode off with Scroll Lock, then navigate the menus, turning Scroll Lock back on when you're finished.
1313-->
1414
15<!-- This list was compiled from the archive at http://www.stairwaytohell.com/. Additional titles will be added as they are made available at http://stardot.org.uk/ forum. -->
16
1715<softwarelist name="bbcb_cass" description="BBC Micro Model B cassettes">
1816
1917   <!-- Games -->
r249889r249890
184182      </part>
185183   </software>
186184
187   <software name="3in1a">
188      <description>3 in 1 (A) Task Force/Demolish/Cosmos</description>
189      <year>1983</year>
190      <publisher>RH Software</publisher>
191      <info name="release" value="RHS006C" />
192      <part name="cass" interface="bbc_cass">
193         <dataarea name="cass" size="11743">
194            <rom name="3in1a(1983)(rhsoft).uef" size="11743" crc="4b9569a3" sha1="f06da8b81d5a3194968a38face99268a358d0865" offset="0" />
195         </dataarea>
196      </part>
197   </software>
198
199   <software name="3in1b">
200      <description>3 in 1 (B) Death 14/Knockout/Space Raiders</description>
201      <year>1983</year>
202      <publisher>RH Software</publisher>
203      <info name="release" value="RHS007C" />
204      <part name="cass" interface="bbc_cass">
205         <dataarea name="cass" size="9443">
206            <rom name="3in1b(1983)(rhsoft).uef" size="9443" crc="a806a03b" sha1="00fbd8424e9c4907266e46f63a8fe574e982bc99" offset="0" />
207         </dataarea>
208      </part>
209   </software>
210
211185   <software name="737flsim">
212186      <description>737 Flight Simulator</description>
213187      <year>1983</year>
r249889r249890
471445      <description>Airlift (Bug Byte)</description>
472446      <year>198?</year>
473447      <publisher>Bug Byte</publisher>
474      <info name="compatibility" value="OS0.1" />
475448      <part name="cass" interface="bbc_cass">
476449         <dataarea name="cass" size="4048">
477450            <rom name="airlift(bugbyte).uef" size="4048" crc="320ca53e" sha1="c30257b0139b87ea02a7fb6ca47bab0616dc7674" offset="0" />
r249889r249890
712685      </part>
713686   </software>
714687
715   <software name="airbrush">
716      <description>Airbrush</description>
717      <year>1983</year>
718      <publisher>Soft Hits</publisher>
719      <part name="cass" interface="bbc_cass">
720         <dataarea name="cass" size="3980">
721            <rom name="airbrush(1983)(softhits).uef" size="3980" crc="108683a7" sha1="55a729efbcf8e435d3ef8f31f881b3dd20b9c08d" offset="0" />
722         </dataarea>
723      </part>
724   </software>
725
726688   <software name="antix">
727689      <description>Antix</description>
728690      <year>19??</year>
r249889r249890
798760      <description>Arcadians</description>
799761      <year>1982</year>
800762      <publisher>Acornsoft</publisher>
801      <info name="release" value="G14" />
802763      <part name="cass" interface="bbc_cass">
803764         <dataarea name="cass" size="13255">
804765            <rom name="arcadians-v1.2(1982)(acornsoft)(g14).uef" size="13255" crc="e8418496" sha1="78c73583c25d54f89d21dbb6564ac4f26c7949b5" offset="0" />
r249889r249890
989950      <description>Aviator</description>
990951      <year>1983</year>
991952      <publisher>Acornsoft</publisher>
992      <info name="release" value="G02" />
993953      <part name="cass" interface="bbc_cass">
994954         <dataarea name="cass" size="18084">
995955            <rom name="aviator-v1.1(1983)(acornsoft)(g02).uef" size="18084" crc="8fe4373a" sha1="c3853da35b9b22b44333db3cd43cee36fa8922df" offset="0" />
r249889r249890
13041264   </software>
13051265
13061266   <software name="beebbeep">
1307      <description>Beeb-Beep</description>
1267      <description>Beeb Beep</description>
13081268      <year>1982</year>
13091269      <publisher>I.J.K.</publisher>
13101270      <part name="cass" interface="bbc_cass">
r249889r249890
14061366      <description>Black Box and Gambit</description>
14071367      <year>1984</year>
14081368      <publisher>Acornsoft</publisher>
1409      <info name="release" value="G34" />
14101369      <part name="cass" interface="bbc_cass">
14111370         <dataarea name="cass" size="13391">
14121371            <rom name="blackboxandgambit-v1(1984)(acornsoft)(g34).uef" size="13391" crc="a5be6678" sha1="478967d65ce36a168a0428aa21663f9e65b97411" offset="0" />
r249889r249890
16511610      <description>Bouncer</description>
16521611      <year>1984</year>
16531612      <publisher>Acornsoft</publisher>
1654      <info name="release" value="G35" />
16551613      <part name="cass" interface="bbc_cass">
16561614         <dataarea name="cass" size="8722">
16571615            <rom name="bouncer-v1(1984)(acornsoft)(g35).uef" size="8722" crc="6f68649c" sha1="1cd59da929fe95cc04132ef4316f3939ed60f828" offset="0" />
r249889r249890
16741632      <description>Boxer</description>
16751633      <year>1984</year>
16761634      <publisher>Acornsoft</publisher>
1677      <info name="release" value="G31" />
16781635      <part name="cass" interface="bbc_cass">
16791636         <dataarea name="cass" size="9143">
16801637            <rom name="boxer-v1(1984)(acornsoft)(g31).uef" size="9143" crc="9b78d174" sha1="47b0b4e13eafcf5fd48064c787cd046a29620093" offset="0" />
r249889r249890
18861843      </part>
18871844   </software>
18881845
1889   <software name="bunfun">
1890      <description>Bun Fun</description>
1891      <year>1983</year>
1892      <publisher>Squirrel Soft</publisher>
1893      <part name="cass" interface="bbc_cass">
1894         <dataarea name="cass" size="5252">
1895            <rom name="bunfun(1983)(squirrel).uef" size="5252" crc="9e656d0b" sha1="bc711d8577bff7c208eee7d7d304a0adec60605d" offset="0" />
1896         </dataarea>
1897      </part>
1898   </software>
1899
19001846   <software name="cesarcat">
19011847      <description>Caesar the Cat</description>
19021848      <year>198?</year>
r249889r249890
19341880      <description>Carousel</description>
19351881      <year>1983</year>
19361882      <publisher>Acornsoft</publisher>
1937      <info name="release" value="G24" />
19381883      <part name="cass" interface="bbc_cass">
19391884         <dataarea name="cass" size="9733">
19401885            <rom name="carousel-v1.1(1983)(acornsoft)(g24).uef" size="9733" crc="c8937c86" sha1="064c5a26c72af93f1905d473d94154b739faa74e" offset="0" />
19411886         </dataarea>
19421887      </part>
19431888   </software>
1944   
1945   <software name="carwarsp">
1946      <description>Car Wars/Planet of the Aliens</description>
1947      <year>1982</year>
1948      <publisher>Software For All</publisher>
1949      <info name="usage" value="CH.&quot;CAR-WARS&quot;/CH.&quot;ALIEN-P&quot;" />
1950      <info name="compatibility" value="OS0.1" />
1951      <part name="cass" interface="bbc_cass">
1952         <dataarea name="cass" size="5898">
1953            <rom name="carwars-planetofthealiens(1982)(softwareforall).uef" size="5898" crc="6b5c21be" sha1="118a88d8fcda5020986d09f37e476c6642081e1f" offset="0" />
1954         </dataarea>
1955      </part>
1956   </software>
19571889
19581890   <software name="cascad50">
19591891      <description>Cascade 50</description>
r249889r249890
20411973      <description>Castle of Riddles v1.0</description>
20421974      <year>1982</year>
20431975      <publisher>Acornsoft</publisher>
2044      <info name="release" value="G17" />
20451976      <part name="cass" interface="bbc_cass">
20461977         <dataarea name="cass" size="15634">
20471978            <rom name="castleofriddles-v1.0(1982)(acornsoft)(g17).uef" size="15634" crc="f61d67f7" sha1="404dfc37c0876d79c7d57c7137943e4916119e25" offset="0" />
r249889r249890
20531984      <description>Castle of Riddles v2.0</description>
20541985      <year>1982</year>
20551986      <publisher>Acornsoft</publisher>
2056      <info name="release" value="G17" />
20571987      <part name="cass" interface="bbc_cass">
20581988         <dataarea name="cass" size="15602">
20591989            <rom name="castleofriddles-v2.0(1982)(acornsoft)(g17).uef" size="15602" crc="339f7688" sha1="d36002d0e8ab0b3cfb6672be72a8f36180c26c67" offset="0" />
r249889r249890
22752205      <description>Chess v2.1</description>
22762206      <year>1982</year>
22772207      <publisher>Acornsoft</publisher>
2278      <info name="release" value="G10" />
22792208      <part name="cass" interface="bbc_cass">
22802209         <dataarea name="cass" size="12900">
22812210            <rom name="chess-acornsoft-v2.1(1982)(acornsoft)(g10).uef" size="12900" crc="cef54328" sha1="ac378be88dee4df98902f30690338ed84a4481b4" offset="0" />
r249889r249890
22872216      <description>Chess v2.2</description>
22882217      <year>1982</year>
22892218      <publisher>Acornsoft</publisher>
2290      <info name="release" value="G10" />
22912219      <part name="cass" interface="bbc_cass">
22922220         <dataarea name="cass" size="12900">
22932221            <rom name="chess-acornsoft-v2.2(1982)(acornsoft)(g10).uef" size="12900" crc="0ab8406d" sha1="a978801af4e9ea4c4eff0db7726b55cf90137ca6" offset="0" />
r249889r249890
24742402      </part>
24752403   </software>
24762404
2477   <software name="citydefd">
2478      <description>City Defend</description>
2479      <year>1983</year>
2480      <publisher>MGB Software</publisher>
2481      <part name="cass" interface="bbc_cass">
2482         <dataarea name="cass" size="3666">
2483            <rom name="citydefend(1983)(mgb).uef" size="3666" crc="08b47d1c" sha1="6f22bc6e6b502624ca5dd8eefd063241dc00951d" offset="0" />
2484         </dataarea>
2485      </part>
2486   </software>
2487
24882405   <software name="claresjo">
24892406      <description>Clares Joystick Software</description>
24902407      <year>198?</year>
r249889r249890
24992416   <software name="c50fleet">
25002417      <description>Class50 Fleet Manager</description>
25012418      <year>1986</year>
2502      <publisher>Dee-Kay</publisher>
2419      <publisher>DeeKay</publisher>
25032420      <part name="cass" interface="bbc_cass">
25042421         <dataarea name="cass" size="9010">
25052422            <rom name="class50fleetmanager(1986)(deekay).uef" size="9010" crc="50f6ef8d" sha1="4b64060cad4ebbddd8859bc371c9cff013749631" offset="0" />
r249889r249890
28302747   <software name="cornishr">
28312748      <description>Cornish Riviera</description>
28322749      <year>1984</year>
2833      <publisher>Dee-Kay</publisher>
2750      <publisher>DeeKay</publisher>
28342751      <part name="cass" interface="bbc_cass">
28352752         <dataarea name="cass" size="12748">
2836            <rom name="cornishriviera(1984)(deekay).uef" size="12748" crc="f6f09624" sha1="ff1c44e18eba1c159c4496d887f8b35b587c9f65" offset="0" />
2753            <rom name="cornishriviera(1984)(deekey).uef" size="12748" crc="f6f09624" sha1="ff1c44e18eba1c159c4496d887f8b35b587c9f65" offset="0" />
28372754         </dataarea>
28382755      </part>
28392756   </software>
r249889r249890
29192836      <description>Countdown To Doom</description>
29202837      <year>1982</year>
29212838      <publisher>Acornsoft</publisher>
2922      <info name="release" value="G19" />
29232839      <part name="cass" interface="bbc_cass">
29242840         <dataarea name="cass" size="18954">
29252841            <rom name="countdowntodoom-v3.2(1982)(acornsoft)(g19).uef" size="18954" crc="3d9938d0" sha1="aa8be5912da9683a32099e57004143fc98b2b7d2" offset="0" />
r249889r249890
30142930      <description>Crazy Tracer</description>
30152931      <year>1983</year>
30162932      <publisher>Acornsoft</publisher>
3017      <info name="release" value="G26" />
30182933      <part name="cass" interface="bbc_cass">
30192934         <dataarea name="cass" size="8535">
30202935            <rom name="crazytracer-v1.1(1983)(acornsoft)(g26).uef" size="8535" crc="e21bdd04" sha1="bdcc817714497541709582029c3e30be4a61488d" offset="0" />
r249889r249890
31163031      <description>Cube Master</description>
31173032      <year>1982</year>
31183033      <publisher>Acornsoft</publisher>
3119      <info name="release" value="G08" />
31203034      <part name="cass" interface="bbc_cass">
31213035         <dataarea name="cass" size="5883">
31223036            <rom name="cubemaster-v1.0(1982)(acornsoft)(g08).uef" size="5883" crc="0f4a40f6" sha1="bcf0b137a5dcc2e56d10c847d4c372abbe171c44" offset="0" />
r249889r249890
33693283      <description>Defender v1.0 (Deleted)</description>
33703284      <year>1982</year>
33713285      <publisher>Acornsoft</publisher>
3372      <info name="release" value="G02 (deleted)" />
33733286      <part name="cass" interface="bbc_cass">
33743287         <dataarea name="cass" size="8358">
33753288            <rom name="defender-v1.0(1982)(acornsoft)(g02).uef" size="8358" crc="d981bff4" sha1="4a38d349f4b23cc7983e1537c85ec89bb8df22d6" offset="0" />
r249889r249890
33973310   <software name="delticfl">
33983311      <description>Deltic Fleet Manager</description>
33993312      <year>1986</year>
3400      <publisher>Dee-Kay</publisher>
3313      <publisher>DeeKay</publisher>
34013314      <part name="cass" interface="bbc_cass">
34023315         <dataarea name="cass" size="10387">
34033316            <rom name="delticfleetmanager(1986)(deekay).uef" size="10387" crc="aa950744" sha1="8849d09fb4fa999374bea528885e6653de54275a" offset="0" />
r249889r249890
38183731      <description>Drogna</description>
38193732      <year>1983</year>
38203733      <publisher>Acornsoft</publisher>
3821      <info name="release" value="G27" />
38223734      <part name="cass" interface="bbc_cass">
38233735         <dataarea name="cass" size="7979">
38243736            <rom name="drogna-v1(1983)(acornsoft)(g27).uef" size="7979" crc="24ef9bab" sha1="cd41f48683b11593598f59b611df6380f2aab9fc" offset="0" />
r249889r249890
39843896      <description>Elite</description>
39853897      <year>1984</year>
39863898      <publisher>Acornsoft</publisher>
3987      <info name="release" value="G38" />
39883899      <part name="cass" interface="bbc_cass">
39893900         <dataarea name="cass" size="27174">
39903901            <rom name="elite-v1.0(1984)(acornsoft)(g38).uef" size="27174" crc="c942b5af" sha1="95be4a10a29af210df0f74529194fb29c8ca0e68" offset="0" />
r249889r249890
41374048
41384049   <software name="evenstar">
41394050      <description>Evening Star</description>
4140      <year>1987</year>
4141      <publisher>Hewson Consultants</publisher>
4051      <year>198?</year>
4052      <publisher>Hewson</publisher>
41424053      <part name="cass" interface="bbc_cass">
41434054         <dataarea name="cass" size="16686">
4144            <rom name="eveningstar(1987)(hewson).uef" size="16686" crc="c249e3aa" sha1="aeb3937ae0ddb04abe191f83c170417f4d469c65" offset="0" />
4055            <rom name="eveningstar(hewson).uef" size="16686" crc="c249e3aa" sha1="aeb3937ae0ddb04abe191f83c170417f4d469c65" offset="0" />
41454056         </dataarea>
41464057      </part>
41474058   </software>
r249889r249890
42594170
42604171   <software name="fantdiam">
42614172      <description>Fantasia Diamond</description>
4262      <year>1984</year>
4263      <publisher>Hewson Consultants</publisher>
4173      <year>198?</year>
4174      <publisher>Hewson</publisher>
42644175      <part name="cass" interface="bbc_cass">
42654176         <dataarea name="cass" size="14023">
4266            <rom name="fantasiadiamond_be(1984)(hewson).uef" size="14023" crc="05abfffb" sha1="b71f2539c76be388560585ccca602b36d0b0d831" offset="0" />
4177            <rom name="fantasiadiamond_be(hewson).uef" size="14023" crc="05abfffb" sha1="b71f2539c76be388560585ccca602b36d0b0d831" offset="0" />
42674178         </dataarea>
42684179      </part>
42694180   </software>
r249889r249890
43714282      <description>Firebug</description>
43724283      <year>1984</year>
43734284      <publisher>Acornsoft</publisher>
4374      <info name="release" value="G39" />
43754285      <part name="cass" interface="bbc_cass">
43764286         <dataarea name="cass" size="9118">
43774287            <rom name="firebug-v1(1984)(acornsoft)(g39).uef" size="9118" crc="637c6756" sha1="8b2c5e35e8195bd1cd48671d36466b4cb7d3c390" offset="0" />
r249889r249890
45374447   <software name="flyingsc">
45384448      <description>Flying Scotsman</description>
45394449      <year>1984</year>
4540      <publisher>Dee-Kay</publisher>
4450      <publisher>DeeKey</publisher>
45414451      <part name="cass" interface="bbc_cass">
45424452         <dataarea name="cass" size="12458">
45434453            <rom name="flyingscotsman(1984)(deekay).uef" size="12458" crc="7337be10" sha1="d07137c61e8b98b9049fdbdb030e04c69e512e36" offset="0" />
r249889r249890
46624572      <description>Free Fall</description>
46634573      <year>1983</year>
46644574      <publisher>Acornsoft</publisher>
4665      <info name="release" value="G28" />
46664575      <part name="cass" interface="bbc_cass">
46674576         <dataarea name="cass" size="14302">
46684577            <rom name="freefall-v1.2(1983)(acornsoft)(g28).uef" size="14302" crc="388da7c1" sha1="6829c13f0d8437b80ab97ce8cc60605143adc4fc" offset="0" />
r249889r249890
49114820      <year>1983</year>
49124821      <publisher>Kansas</publisher>
49134822      <part name="cass" interface="bbc_cass">
4914         <dataarea name="cass" size="6201">
4915            <rom name="galacticfirebird(1983)(kansas).uef" size="6201" crc="22c5a0f8" sha1="c5ff440649e6175354820b8768770f9d36efed2b" offset="0" />
4823         <dataarea name="cass" size="6671">
4824            <rom name="galacticfirebird(1983)(kansas).uef" size="6671" crc="82b7effb" sha1="1746291194e0527d4b32b99f881b651fa51b5f95" offset="0" />
49164825         </dataarea>
49174826      </part>
49184827   </software>
49194828
4920   <software name="galintru">
4921      <description>Galactic Intruder</description>
4922      <year>1983</year>
4923      <publisher>Cosma</publisher>
4924      <info name="usage" value="Load with *RUN" />
4925      <info name="compatibility" value="OS0.1" />
4926      <part name="cass" interface="bbc_cass">
4927         <dataarea name="cass" size="5712">
4928            <rom name="galacticintruder(1983)(cosma).uef" size="5712" crc="344fdc0a" sha1="92949ce6f003f517eb4a3c8e12e396ac5ef36cce" offset="0" />
4929         </dataarea>
4930      </part>
4931   </software>
4932
49334829   <software name="galpatro">
49344830      <description>Galactic Patrol</description>
49354831      <year>1984</year>
r249889r249890
50784974      </part>
50794975   </software>
50804976
5081   <software name="gampack1">
5082      <description>Games Pack One</description>
5083      <year>1983</year>
5084      <publisher>Logic Systems</publisher>
5085      <part name="cass" interface="bbc_cass">
5086         <dataarea name="cass" size="7005">
5087            <rom name="gamespackone(1983)(logic).uef" size="7005" crc="e8fca86b" sha1="0bcc999316246b726362cfe935cc983da8250497" offset="0" />
5088         </dataarea>
5089      </part>
5090   </software>
5091
50924977   <software name="gamstrat">
50934978      <description>Games of Strategy</description>
50944979      <year>1982</year>
r249889r249890
51155000      <description>Gateway To Karos</description>
51165001      <year>1983</year>
51175002      <publisher>Acornsoft</publisher>
5118      <info name="release" value="G30" />
51195003      <part name="cass" interface="bbc_cass">
51205004         <dataarea name="cass" size="21761">
51215005            <rom name="gatewaytokaros-v1.2(1983)(acornsoft)(g30).uef" size="21761" crc="837ac45a" sha1="3104549e9be80fd055d20254b690871bb93c2a54" offset="0" />
r249889r249890
51235007      </part>
51245008   </software>
51255009
5126   <software name="gatwexp">
5127      <description>Gatwick Express</description>
5128      <year>1986</year>
5129      <publisher>Dee-Kay</publisher>
5130      <part name="cass" interface="bbc_cass">
5131         <dataarea name="cass" size="9582">
5132            <rom name="gatwickexpress(1986)(deekay).uef" size="9582" crc="7b817880" sha1="cca1f3190934b1ec675b41438e9429e857a86071" offset="0" />
5133         </dataarea>
5134      </part>
5135   </software>
5136
51375010   <software name="genesisp">
51385011      <description>Genesis Project</description>
51395012      <year>198?</year>
r249889r249890
51945067      <description>Go</description>
51955068      <year>1984</year>
51965069      <publisher>Acornsoft</publisher>
5197      <info name="release" value="G42" />
51985070      <part name="cass" interface="bbc_cass">
51995071         <dataarea name="cass" size="12814">
52005072            <rom name="go-v1(1984)(acornsoft)(g42).uef" size="12814" crc="e7bbcff3" sha1="0189d4ec49f327ee570d007e489e41acf0247003" offset="0" />
r249889r249890
52135085      </part>
52145086   </software>
52155087
5216   <software name="gobbler">
5217      <description>Gobbler</description>
5218      <year>1983</year>
5219      <publisher>MGB Software</publisher>
5220      <part name="cass1" interface="bbc_cass">
5221         <dataarea name="cass" size="3129">
5222            <rom name="gobbler1k(1983)(mgb).uef" size="3129" crc="f155d05d" sha1="e18d9f3b6bbabd2f91bebcd3a202fe19aa811bb9" offset="0" />
5223         </dataarea>
5224      </part>
5225      <part name="cass2" interface="bbc_cass">
5226         <dataarea name="cass" size="3043">
5227            <rom name="gobbler2j(1983)(mgb).uef" size="3043" crc="7759f9ad" sha1="843dabc4c7c0deee658d39769afe90b50dac2478" offset="0" />
5228         </dataarea>
5229      </part>
5230   </software>
5231   
52325088   <software name="golddigg">
52335089      <description>Gold Digger</description>
52345090      <year>1984</year>
r249889r249890
56425498      </part>
56435499   </software>
56445500
5645   <software name="harleq">
5646      <description>Harlequin</description>
5647      <year>1984</year>
5648      <publisher>Haresoft</publisher>
5649      <part name="cass" interface="bbc_cass">
5650         <dataarea name="cass" size="10106">
5651            <rom name="harlequin(1984)(kansas).uef" size="10106" crc="86515ca0" sha1="8818e12fcd96ab25dd3173183c0f4f9f75212718" offset="0" />
5652         </dataarea>
5653      </part>
5654   </software>
5655
56565501   <software name="heathrow">
56575502      <description>Heathrow ATC</description>
5658      <year>1984</year>
5659      <publisher>Hewson Consultants</publisher>
5503      <year>198?</year>
5504      <publisher>Hewson</publisher>
56605505      <info name="usage" value="Load with *RUN" />
56615506      <part name="cass" interface="bbc_cass">
56625507         <dataarea name="cass" size="6540">
5663            <rom name="heathrowatc_run(1984)(hewson).uef" size="6540" crc="842f3975" sha1="c5995c8e7d6c833509ac2ad32f610bfe1ed560c9" offset="0" />
5508            <rom name="heathrowatc_run(hewson).uef" size="6540" crc="842f3975" sha1="c5995c8e7d6c833509ac2ad32f610bfe1ed560c9" offset="0" />
56645509         </dataarea>
56655510      </part>
56665511   </software>
r249889r249890
58695714      <description>Hopper v2.1</description>
58705715      <year>1983</year>
58715716      <publisher>Acornsoft</publisher>
5872      <info name="release" value="G23" />
58735717      <part name="cass" interface="bbc_cass">
58745718         <dataarea name="cass" size="7958">
58755719            <rom name="hopper-v2.1(1983)(acornsoft)(g23).uef" size="7958" crc="6799d1a5" sha1="0b5bef8cd1fbf0a6032ed705150c6729d30f65f3" offset="0" />
r249889r249890
58815725      <description>Hopper v2.2</description>
58825726      <year>1983</year>
58835727      <publisher>Acornsoft</publisher>
5884      <info name="release" value="G23" />
58855728      <part name="cass" interface="bbc_cass">
58865729         <dataarea name="cass" size="7957">
58875730            <rom name="hopper-v2.2(1983)(acornsoft)(g23).uef" size="7957" crc="934807a1" sha1="39eb04e7844d06743e510ad835148bf982e94350" offset="0" />
r249889r249890
60135856
60145857   <software name="hyperdri">
60155858      <description>Hyperdrive</description>
6016      <year>1983</year>
5859      <year>198?</year>
60175860      <publisher>I.J.K.</publisher>
60185861      <part name="cass" interface="bbc_cass">
60195862         <dataarea name="cass" size="3892">
r249889r249890
60265869      <description>Hyper Sports</description>
60275870      <year>1984</year>
60285871      <publisher>Imagine</publisher>
6029      <info name="compatibility" value="disable Speech" />
60305872      <part name="cass" interface="bbc_cass">
60315873         <dataarea name="cass" size="42614">
60325874            <rom name="hypersports(1984)(imagine).uef" size="42614" crc="0e4c5bd1" sha1="011c3e1089562c85407b25c6394fae2f0ea393b7" offset="0" />
r249889r249890
62996141      </part>
63006142   </software>
63016143
6302   <software name="invaderm">
6303      <description>Invaders (MP Software)</description>
6304      <year>1983</year>
6305      <publisher>MP Software</publisher>
6306      <info name="usage" value="Load with *RUN" />
6307      <part name="cass" interface="bbc_cass">
6308         <dataarea name="cass" size="3804">
6309            <rom name="invaders_run(1983)(mpsoft).uef" size="3804" crc="2b10a843" sha1="70843f42ccb7626540d9795ac691c491c18399c5" offset="0" />
6310         </dataarea>
6311      </part>
6312   </software>
6313
6314   <software name="invaderp">
6315      <description>Invaders (PSS)</description>
6316      <year>1982</year>
6317      <publisher>PSS</publisher>
6318      <info name="usage" value="Load with *RUN" />
6319      <part name="cass" interface="bbc_cass">
6320         <dataarea name="cass" size="9422">
6321            <rom name="invaders_run(1982)(pss).uef" size="9422" crc="1cbfc3b3" sha1="e0e38521bc283f8a9b312432d0d351048077f934" offset="0" />
6322         </dataarea>
6323      </part>
6324   </software>
6325
63266144   <software name="invaders">
63276145      <description>Invaders (Superior Software)</description>
63286146      <year>1982</year>
r249889r249890
64006218      <description>JCB Digger</description>
64016219      <year>1983</year>
64026220      <publisher>Acornsoft</publisher>
6403      <info name="release" value="G09" />
64046221      <part name="cass" interface="bbc_cass">
64056222         <dataarea name="cass" size="10051">
64066223            <rom name="jcbdigger-v1.1(1983)(acornsoft)(g09).uef" size="10051" crc="2a6abe99" sha1="81ee3924e027bf16429d0a013711ebf008c752bc" offset="0" />
r249889r249890
65336350   </software>
65346351
65356352   <software name="jr">
6536      <description>J.R.</description>
6353      <description>JR</description>
65376354      <year>1982</year>
65386355      <publisher>Software For All</publisher>
65396356      <part name="cass" interface="bbc_cass">
r249889r249890
67236540      <description>Kingdom of Hamil</description>
67246541      <year>1983</year>
67256542      <publisher>Acornsoft</publisher>
6726      <info name="release" value="G25" />
67276543      <part name="cass" interface="bbc_cass">
67286544         <dataarea name="cass" size="18905">
67296545            <rom name="kingdomofhamil-v1.1(1983)(acornsoft)(g25).uef" size="18905" crc="851a33cb" sha1="f19156edaf9ed1097739eda2227e0068d72629a6" offset="0" />
r249889r249890
68576673      <description>Labyrinth</description>
68586674      <year>1984</year>
68596675      <publisher>Acornsoft</publisher>
6860      <info name="release" value="G41" />
68616676      <part name="cass" interface="bbc_cass">
68626677         <dataarea name="cass" size="15623">
68636678            <rom name="labyrinth-v1.0(1984)(acornsoft)(g41).uef" size="15623" crc="4052af69" sha1="32955760cde941a02e97371bc30542e235542244" offset="0" />
r249889r249890
69706785   <software name="lasvegas">
69716786      <description>Las Vegas</description>
69726787      <year>198?</year>
6973      <publisher>RH Software</publisher>
6788      <publisher>RH Soft</publisher>
69746789      <part name="cass" interface="bbc_cass">
69756790         <dataarea name="cass" size="4646">
69766791            <rom name="lasvegas(rhsoft).uef" size="4646" crc="7579ef3d" sha1="b43a84785f783fa30af0232d11d3f3d8215e60cf" offset="0" />
r249889r249890
70016816   </software>
70026817
70036818   <software name="leapfrog">
7004      <description>Leap-Frog</description>
7005      <year>1983</year>
6819      <description>Leap Frog</description>
6820      <year>198?</year>
70066821      <publisher>I.J.K.</publisher>
70076822      <part name="cass" interface="bbc_cass">
70086823         <dataarea name="cass" size="6652">
r249889r249890
70696884   <software name="lickeyrt">
70706885      <description>Lickey Route</description>
70716886      <year>1985</year>
7072      <publisher>Dee-Kay</publisher>
6887      <publisher>DeeKay</publisher>
70736888      <part name="cass" interface="bbc_cass">
70746889         <dataarea name="cass" size="12372">
70756890            <rom name="lickeyroute(1985)(deekay).uef" size="12372" crc="079e2ebd" sha1="d51772570b83be8e7c479b3f106374094307c9ea" offset="0" />
r249889r249890
70996914      </part>
71006915   </software>
71016916
7102   <software name="lcycles">
7103      <description>Light Cycles</description>
7104      <year>1983</year>
7105      <publisher>PAEAN Systems</publisher>
7106      <part name="cass" interface="bbc_cass">
7107         <dataarea name="cass" size="4888">
7108            <rom name="lightcycles(1983)(paean).uef" size="4888" crc="955813de" sha1="ee4e476e4f5aaa698396f6e2a34945788e830b9c" offset="0" />
7109         </dataarea>
7110      </part>
7111   </software>
7112
71136917   <software name="litepen">
71146918      <description>LitePen v1.02</description>
71156919      <year>198?</year>
r249889r249890
73557159      <description>Magic Mushrooms</description>
73567160      <year>1985</year>
73577161      <publisher>Acornsoft</publisher>
7358      <info name="release" value="G46" />
73597162      <part name="cass" interface="bbc_cass">
73607163         <dataarea name="cass" size="9083">
73617164            <rom name="magicmushrooms-v1(1985)(acornsoft)(g46).uef" size="9083" crc="54d740e1" sha1="a5a4e50e8ef8beef4f0d1ae304aa5c36853382f4" offset="0" />
r249889r249890
74647267   <software name="mastcutl">
74657268      <description>Master Cutler</description>
74667269      <year>1984</year>
7467      <publisher>Dee-Kay</publisher>
7270      <publisher>DeeKay</publisher>
74687271      <part name="cass" interface="bbc_cass">
74697272         <dataarea name="cass" size="12315">
74707273            <rom name="mastercutler(1984)(deekay).uef" size="12315" crc="b68d4bf4" sha1="6efe71e668c1ac9b90cd0cbe81eb232c9bb69075" offset="0" />
r249889r249890
75327335      <description>Maze</description>
75337336      <year>1982</year>
75347337      <publisher>Acornsoft</publisher>
7535      <info name="release" value="G11" />
75367338      <part name="cass" interface="bbc_cass">
75377339         <dataarea name="cass" size="10689">
75387340            <rom name="maze-v1(1982)(acornsoft)(g11).uef" size="10689" crc="95415e93" sha1="3c725157d1cee91a52bf4a9cbc822d892212e6f4" offset="0" />
r249889r249890
75877389   <software name="mendipst">
75887390      <description>Mendips Stone</description>
75897391      <year>1986</year>
7590      <publisher>Dee-Kay</publisher>
7392      <publisher>DeeKay</publisher>
75917393      <part name="cass" interface="bbc_cass">
75927394         <dataarea name="cass" size="7945">
75937395            <rom name="mendipsstone_be(1986)(deekay).uef" size="7945" crc="bc59d28b" sha1="8ccaff6be99b48c0a827e20414dd6d4ccb8b5fa4" offset="0" />
r249889r249890
76107412      <description>Meteor Mission</description>
76117413      <year>1984</year>
76127414      <publisher>Acornsoft</publisher>
7613      <info name="release" value="G29" />
76147415      <part name="cass" interface="bbc_cass">
76157416         <dataarea name="cass" size="7512">
76167417            <rom name="meteormission-v1(1984)(acornsoft)(g29).uef" size="7512" crc="921df4c6" sha1="1c0445f26f3607b9c7a69a5d308e587c1b8386b6" offset="0" />
r249889r249890
76337434      <description>Meteors</description>
76347435      <year>1982</year>
76357436      <publisher>Acornsoft</publisher>
7636      <info name="release" value="G13" />
76377437      <part name="cass" interface="bbc_cass">
76387438         <dataarea name="cass" size="6875">
76397439            <rom name="meteors-v1(1982)(acornsoft)(g13).uef" size="6875" crc="c737a94a" sha1="f06045f46f052a614bb3e2625007cb6ed5fb719a" offset="0" />
r249889r249890
78287628      <description>Missile Base v2.0</description>
78297629      <year>1982</year>
78307630      <publisher>Acornsoft</publisher>
7831      <info name="release" value="G18" />
78327631      <part name="cass" interface="bbc_cass">
78337632         <dataarea name="cass" size="8534">
78347633            <rom name="missilebase-v2.0(1982)(acornsoft)(g18).uef" size="8534" crc="574b5833" sha1="d9cf1b4cbafb2921f1c24af1513d33c769354eab" offset="0" />
r249889r249890
78827681
78837682   <software name="binvader">
78847683      <description>Model B Invaders</description>
7885      <year>1983</year>
7684      <year>198?</year>
78867685      <publisher>I.J.K.</publisher>
78877686      <part name="cass" interface="bbc_cass">
78887687         <dataarea name="cass" size="7294">
r249889r249890
79397738      <description>Monsters v3.0</description>
79407739      <year>1982</year>
79417740      <publisher>Acornsoft</publisher>
7942      <info name="release" value="G03" />
79437741      <part name="cass" interface="bbc_cass">
79447742         <dataarea name="cass" size="7388">
79457743            <rom name="monsters-v3.0(1982)(acornsoft)(g03).uef" size="7388" crc="60ff8790" sha1="e4a6cdafac14471c2a090c822087fbeb67824ce5" offset="0" />
r249889r249890
79517749      <description>Monsters v3.1</description>
79527750      <year>1982</year>
79537751      <publisher>Acornsoft</publisher>
7954      <info name="release" value="G03" />
79557752      <part name="cass" interface="bbc_cass">
79567753         <dataarea name="cass" size="7385">
79577754            <rom name="monsters-v3.1(1982)(acornsoft)(g03).uef" size="7385" crc="8a58e5cc" sha1="440fa54ec9852f42c8d50862e05c9fe99f3fe5c7" offset="0" />
r249889r249890
79637760      <description>Monsters v3.2</description>
79647761      <year>1982</year>
79657762      <publisher>Acornsoft</publisher>
7966      <info name="release" value="G03" />
79677763      <part name="cass" interface="bbc_cass">
79687764         <dataarea name="cass" size="8699">
79697765            <rom name="monsters-v3.2(1982)(acornsoft)(g03).uef" size="8699" crc="9b7941e1" sha1="d1a408f1f895de16d9927863f89a27c1ff6e879b" offset="0" />
r249889r249890
83268122      </part>
83278123   </software>
83288124
8329   <software name="neandman">
8330      <description>Neanderthal Man</description>
8331      <year>1984</year>
8332      <publisher>Alligata</publisher>
8333      <part name="cass" interface="bbc_cass">
8334         <dataarea name="cass" size="7559">
8335            <rom name="neanderthalman(1984)(alligata).uef" size="7559" crc="1be9bd75" sha1="241b0ea1724ab98679a989321db15ad8a85fa200" offset="0" />
8336         </dataarea>
8337      </part>
8338   </software>
8339
83408125   <software name="nemesis">
83418126      <description>Nemesis</description>
83428127      <year>1983</year>
r249889r249890
83968181   <software name="nightfli">
83978182      <description>Nightflite</description>
83988183      <year>198?</year>
8399      <publisher>Hewson Consultants</publisher>
8184      <publisher>Hewson</publisher>
84008185      <part name="cass" interface="bbc_cass">
84018186         <dataarea name="cass" size="6031">
84028187            <rom name="nightflite(hewson).uef" size="6031" crc="2232802a" sha1="09ba3978a7f3e26095d92699b83742f147ab84ec" offset="0" />
r249889r249890
87608545   <software name="peakflee">
87618546      <description>Peak Fleet Manager</description>
87628547      <year>1987</year>
8763      <publisher>Dee-Kay</publisher>
8548      <publisher>DeeKay</publisher>
87648549      <part name="cass" interface="bbc_cass">
87658550         <dataarea name="cass" size="8628">
87668551            <rom name="peakfleetmanager(1987)(deekay).uef" size="8628" crc="665431ac" sha1="684bca758498d6027a68bef6c951b2eb09795b6d" offset="0" />
r249889r249890
88938678      <description>Philosopher's Quest</description>
88948679      <year>1982</year>
88958680      <publisher>Acornsoft</publisher>
8896      <info name="release" value="G01" />
88978681      <part name="cass" interface="bbc_cass">
88988682         <dataarea name="cass" size="16930">
88998683            <rom name="philosophersquest-v2.0(1982)(acornsoft)(g01).uef" size="16930" crc="0310eeb8" sha1="dfe227e334b3174029f5445b1b396eadc2fe2826" offset="0" />
r249889r249890
90878871      <description>Planetoid v2.0</description>
90888872      <year>1982</year>
90898873      <publisher>Acornsoft</publisher>
9090      <info name="release" value="G15" />
90918874      <part name="cass" interface="bbc_cass">
90928875         <dataarea name="cass" size="8382">
90938876            <rom name="planetoid-v2.0(1982)(acornsoft)(g15).uef" size="8382" crc="c5a6ebed" sha1="27551cee8e8768b33d5fe2092c2fbeb5ecf3d787" offset="0" />
r249889r249890
90998882      <description>Planetoid v2.1</description>
91008883      <year>1982</year>
91018884      <publisher>Acornsoft</publisher>
9102      <info name="release" value="G15" />
91038885      <part name="cass" interface="bbc_cass">
91048886         <dataarea name="cass" size="8381">
91058887            <rom name="planetoid-v2.1(1982)(acornsoft)(g15).uef" size="8381" crc="0ae03de4" sha1="06f40cdf9bdc69b89010713c30431f7b6c483c2c" offset="0" />
r249889r249890
91328914   <software name="plegaron">
91338915      <description>Plegaron People Eaters</description>
91348916      <year>198?</year>
9135      <publisher>RH Software</publisher>
8917      <publisher>RH Soft</publisher>
91368918      <part name="cass" interface="bbc_cass">
91378919         <dataarea name="cass" size="3976">
91388920            <rom name="plegaronpeopleeaters(rhsoft).uef" size="3976" crc="32afd308" sha1="5f78038bb05173076311c294651e21967917a99a" offset="0" />
r249889r249890
95669348      <description>Quondam</description>
95679349      <year>1984</year>
95689350      <publisher>Acornsoft</publisher>
9569      <info name="release" value="G40" />
95709351      <part name="cass" interface="bbc_cass">
95719352         <dataarea name="cass" size="19907">
95729353            <rom name="quondam-v1(1984)(acornsoft)(g40).uef" size="19907" crc="77491c63" sha1="8b1f5f462bc1eb52ffb70cbdc37e678617a7277f" offset="0" />
r249889r249890
98589639      <description>Revs 4 Tracks</description>
98599640      <year>1985</year>
98609641      <publisher>Acornsoft</publisher>
9861      <info name="release" value="G44" />
98629642      <part name="cass" interface="bbc_cass">
98639643         <dataarea name="cass" size="27303">
98649644            <rom name="revs4tracks-srr(1985)(acornsoft)(g44).uef" size="27303" crc="64da77c6" sha1="2f438e5c5e117e9c65833264790fb2c2c4158aa6" offset="0" />
r249889r249890
98709650      <description>Revs</description>
98719651      <year>1984</year>
98729652      <publisher>Acornsoft</publisher>
9873      <info name="release" value="G43" />
98749653      <part name="cass" interface="bbc_cass">
98759654         <dataarea name="cass" size="31111">
98769655            <rom name="revs.hq(1984)(acornsoft)(g43).uef" size="31111" crc="42b8a114" sha1="9d4ff3aa3370c49b4ace00162d2117f0fe2bc442" offset="0" />
r249889r249890
99729751      </part>
99739752   </software>
99749753
9975   <software name="robinshw">
9976      <description>Robin of Sherwood</description>
9977      <year>198?</year>
9978      <publisher>Reflections Software</publisher>
9979      <part name="cass" interface="bbc_cass">
9980         <dataarea name="cass" size="7164">
9981            <rom name="robinofsherwood(reflections).uef" size="7164" crc="53394a42" sha1="1dfc4e87c9767829821b30412c30d159f331e343" offset="0" />
9982         </dataarea>
9983      </part>
9984   </software>
9985
9986   <software name="robobrai">
9987      <description>Robo Brain</description>
9988      <year>1983</year>
9989      <publisher>MGB Software</publisher>
9990      <part name="cass" interface="bbc_cass">
9991         <dataarea name="cass" size="5190">
9992            <rom name="robobrain(1983)(mgb).uef" size="5190" crc="16abb7b0" sha1="cf3cddc19b1fa4af64a1ba58ad08e5cc1b7dbb86" offset="0" />
9993         </dataarea>
9994      </part>
9995   </software>
9996
99979754   <software name="roboman">
99989755      <description>Roboman</description>
99999756      <year>198?</year>
r249889r249890
100429799      <description>Rocket Raid v1</description>
100439800      <year>1982</year>
100449801      <publisher>Acornsoft</publisher>
10045      <info name="release" value="G05" />
100469802      <part name="cass" interface="bbc_cass">
100479803         <dataarea name="cass" size="7912">
100489804            <rom name="rocketraid-v1(1982)(acornsoft)(g05).uef" size="7912" crc="15d61216" sha1="843e6ba8637352b946cef168cc1a46c900ca432d" offset="0" />
r249889r249890
100549810      <description>Rocket Raid v2.0</description>
100559811      <year>1982</year>
100569812      <publisher>Acornsoft</publisher>
10057      <info name="release" value="G05" />
100589813      <part name="cass" interface="bbc_cass">
100599814         <dataarea name="cass" size="7931">
100609815            <rom name="rocketraid-v2.0(1982)(acornsoft)(g05).uef" size="7931" crc="4827a001" sha1="e67e12145a55be7f1152fe00d7185214abbf3a2b" offset="0" />
r249889r249890
100669821      <description>Rocket Raid v2.1</description>
100679822      <year>1982</year>
100689823      <publisher>Acornsoft</publisher>
10069      <info name="release" value="G05" />
100709824      <part name="cass" interface="bbc_cass">
100719825         <dataarea name="cass" size="7933">
100729826            <rom name="rocketraid-v2.1(1982)(acornsoft)(g05).uef" size="7933" crc="f63b0425" sha1="e4178ad35c36791babca5bd5cb4328142eaf2b2c" offset="0" />
r249889r249890
101599913   <software name="royalsct">
101609914      <description>Royal Scot</description>
101619915      <year>1984</year>
10162      <publisher>Dee-Kay</publisher>
9916      <publisher>DeeKay</publisher>
101639917      <part name="cass" interface="bbc_cass">
101649918         <dataarea name="cass" size="12898">
101659919            <rom name="royalscot(1984)(deekay).uef" size="12898" crc="27da2fc7" sha1="71e15371dcc300961de29d601ee68371876ec98e" offset="0" />
r249889r249890
101709924   <software name="rtcbirmi">
101719925      <description>RTC Birmingham</description>
101729926      <year>198?</year>
10173      <publisher>Dee-Kay</publisher>
9927      <publisher>DeeKay</publisher>
101749928      <part name="cass" interface="bbc_cass">
101759929         <dataarea name="cass" size="8222">
101769930            <rom name="rtcbirmingham_be(deekay).uef" size="8222" crc="ef8b2908" sha1="4c18a4b2f63e4f811ea54b2ed03710f18e20a402" offset="0" />
r249889r249890
101819935   <software name="rtcbuxtn">
101829936      <description>RTC Buxton</description>
101839937      <year>1987</year>
10184      <publisher>Dee-Kay</publisher>
9938      <publisher>DeeKay</publisher>
101859939      <part name="cass" interface="bbc_cass">
101869940         <dataarea name="cass" size="9005">
101879941            <rom name="rtcbuxton(1987)(deekay).uef" size="9005" crc="a72b8bfb" sha1="a383afe3e1ae681c338054de03c516132cecf67c" offset="0" />
r249889r249890
101929946   <software name="rtccrewe">
101939947      <description>RTC Crewe</description>
101949948      <year>1987</year>
10195      <publisher>Dee-Kay</publisher>
9949      <publisher>DeeKay</publisher>
101969950      <part name="cass" interface="bbc_cass">
101979951         <dataarea name="cass" size="8527">
101989952            <rom name="rtccrewe_be(1987)(deekay).uef" size="8527" crc="56eec158" sha1="785f4f2fa8fedc287e80c0ea60675e884dc95402" offset="0" />
r249889r249890
102039957   <software name="rtcdonca">
102049958      <description>RTC Doncaster</description>
102059959      <year>1988</year>
10206      <publisher>Dee-Kay</publisher>
9960      <publisher>DeeKay</publisher>
102079961      <part name="cass" interface="bbc_cass">
102089962         <dataarea name="cass" size="7551">
102099963            <rom name="rtcdoncaster_be(1988)(deekay).uef" size="7551" crc="abced791" sha1="750cf1971d166bff1d08229a416160439c74c6a0" offset="0" />
r249889r249890
102149968   <software name="rtckingx">
102159969      <description>RTC Kings Cross</description>
102169970      <year>1986</year>
10217      <publisher>Dee-Kay</publisher>
9971      <publisher>DeeKay</publisher>
102189972      <part name="cass" interface="bbc_cass">
102199973         <dataarea name="cass" size="11315">
102209974            <rom name="rtckingscross(1986)(deekay).uef" size="11315" crc="fe451538" sha1="272796eb55976cd8cf7478463e5966a0770ca88c" offset="0" />
r249889r249890
102259979   <software name="rtclimes">
102269980      <description>RTC Limestreet</description>
102279981      <year>198?</year>
10228      <publisher>Dee-Kay</publisher>
9982      <publisher>DeeKay</publisher>
102299983      <part name="cass" interface="bbc_cass">
102309984         <dataarea name="cass" size="10948">
102319985            <rom name="rtclimestreet(deekay).uef" size="10948" crc="5a2aca83" sha1="47b5876b2b9e8043a59a0d2c3232a0a244456839" offset="0" />
r249889r249890
102369990   <software name="rtcpaddi">
102379991      <description>RTC Paddington</description>
102389992      <year>1986</year>
10239      <publisher>Dee-Kay</publisher>
9993      <publisher>DeeKay</publisher>
102409994      <part name="cass" interface="bbc_cass">
102419995         <dataarea name="cass" size="10900">
102429996            <rom name="rtcpaddington(1986)(deekay).uef" size="10900" crc="e43dbfef" sha1="c7c1a0dd39c4fcb5784a228f3fcc8fd1cd72b50e" offset="0" />
r249889r249890
1024710001   <software name="rtcpenza">
1024810002      <description>RTC Penzance</description>
1024910003      <year>1985</year>
10250      <publisher>Dee-Kay</publisher>
10004      <publisher>DeeKay</publisher>
1025110005      <part name="cass" interface="bbc_cass">
1025210006         <dataarea name="cass" size="11330">
1025310007            <rom name="rtcpenzance(1985)(deekay).uef" size="11330" crc="8a62b238" sha1="ac5599bf803f8bf7cd50a18c157e24b4a452a332" offset="0" />
r249889r249890
1042610180      </part>
1042710181   </software>
1042810182
10429   <software name="scotrexp">
10430      <description>ScotRail Express</description>
10431      <year>1985</year>
10432      <publisher>Dee-Kay</publisher>
10433      <part name="cass" interface="bbc_cass">
10434         <dataarea name="cass" size="11180">
10435            <rom name="scotrailexpress_b(1985)(deekay).uef" size="11180" crc="7da63e0d" sha1="43ebdfd491958d2258ef374cde08fa565ae361bc" offset="0" />
10436         </dataarea>
10437      </part>
10438   </software>
10439
1044010183   <software name="scrabble">
1044110184      <description>Scrabble</description>
1044210185      <year>198?</year>
r249889r249890
1056510308      <publisher>Cabinsoft</publisher>
1056610309      <part name="cass" interface="bbc_cass">
1056710310         <dataarea name="cass" size="2481">
10568            <rom name="securityromdemonstration(cabinsoft).uef" size="2481" crc="753c6dbf" sha1="b22714e296107cbd2b319938232ed1db7ff28ae5" offset="0" />
10311            <rom name="securityromdemonstration(cabinsoft.uef" size="2481" crc="753c6dbf" sha1="b22714e296107cbd2b319938232ed1db7ff28ae5" offset="0" />
1056910312         </dataarea>
1057010313      </part>
1057110314   </software>
1057210315
1057310316   <software name="sentinel">
1057410317      <description>Sentinel</description>
10575      <year>1983</year>
10318      <year>198?</year>
1057610319      <publisher>PSS</publisher>
1057710320      <part name="cass" interface="bbc_cass">
1057810321         <dataarea name="cass" size="5940">
10579            <rom name="sentinel(1983)(pss).uef" size="5940" crc="b19573db" sha1="9a2e6c1cfa320a4e3b96eb692c7d9b5e40bf55cf" offset="0" />
10322            <rom name="sentinel(pss).uef" size="5940" crc="b19573db" sha1="9a2e6c1cfa320a4e3b96eb692c7d9b5e40bf55cf" offset="0" />
1058010323         </dataarea>
1058110324      </part>
1058210325   </software>
r249889r249890
1058510328      <description>The Seventh Star</description>
1058610329      <year>1984</year>
1058710330      <publisher>Acornsoft</publisher>
10588      <info name="release" value="G36" />
1058910331      <part name="cass" interface="bbc_cass">
1059010332         <dataarea name="cass" size="22732">
1059110333            <rom name="seventhstar-v1.0(1984)(acornsoft)(g36).uef" size="22732" crc="a3202842" sha1="a83ddaf4e4d39e61aa44fd7eaa07dea510dbdd36" offset="0" />
r249889r249890
1064010382   <software name="shbounds">
1064110383      <description>Shedmaster Bounds Greene</description>
1064210384      <year>1987</year>
10643      <publisher>Dee-Kay</publisher>
10385      <publisher>DeeKay</publisher>
1064410386      <part name="cass" interface="bbc_cass">
1064510387         <dataarea name="cass" size="7782">
1064610388            <rom name="shedmasterboundsgreen_be(1987)(deekay).uef" size="7782" crc="3b4b1e8c" sha1="7b89e3a903d026d2a380e1855b953e5ebf610cde" offset="0" />
r249889r249890
1065110393   <software name="shfinpar">
1065210394      <description>Shedmaster Finsbury Park</description>
1065310395      <year>198?</year>
10654      <publisher>Dee-Kay</publisher>
10396      <publisher>DeeKay</publisher>
1065510397      <part name="cass" interface="bbc_cass">
1065610398         <dataarea name="cass" size="7479">
1065710399            <rom name="shedmasterfinsburypark_be(deekay).uef" size="7479" crc="d611e533" sha1="88970796ea38b34f3809ffb2d2dfa642c700c396" offset="0" />
r249889r249890
1075010492
1075110493   <software name="skislalo">
1075210494      <description>Ski Slalom</description>
10753      <year>1982</year>
10754      <publisher>RH Software</publisher>
10495      <year>198?</year>
10496      <publisher>RH Soft</publisher>
1075510497      <part name="cass" interface="bbc_cass">
1075610498         <dataarea name="cass" size="7697">
10757            <rom name="skislalom(1982)(rhsoft).uef" size="7697" crc="d8221260" sha1="136d014abd437f1ea00788a32f2b626617b381c7" offset="0" />
10499            <rom name="skislalom(rhsoft).uef" size="7697" crc="d8221260" sha1="136d014abd437f1ea00788a32f2b626617b381c7" offset="0" />
1075810500         </dataarea>
1075910501      </part>
1076010502   </software>
r249889r249890
1079610538      <description>Sliding Block Puzzles v1.0</description>
1079710539      <year>1982</year>
1079810540      <publisher>Acornsoft</publisher>
10799      <info name="release" value="G12" />
1080010541      <part name="cass" interface="bbc_cass">
1080110542         <dataarea name="cass" size="13546">
1080210543            <rom name="slidingblockpuzzles-v1.0(1982)(acornsoft)(g12).uef" size="13546" crc="731299fd" sha1="8208e7cdb6ba40713fb44922cdf0f893a72ca6d6" offset="0" />
r249889r249890
1080810549      <description>Sliding Block Puzzles v2.3</description>
1080910550      <year>1982</year>
1081010551      <publisher>Acornsoft</publisher>
10811      <info name="release" value="G12" />
1081210552      <part name="cass" interface="bbc_cass">
1081310553         <dataarea name="cass" size="14702">
1081410554            <rom name="slidingblockpuzzles-v2.3(1982)(acornsoft)(g12).uef" size="14702" crc="dc26f6e9" sha1="684924eafe6e6054b2aa7c6ca55c01595ec1a330" offset="0" />
r249889r249890
1089510635
1089610636   <software name="snailtra">
1089710637      <description>Snail Trail</description>
10898      <year>1983</year>
10899      <publisher>RH Software</publisher>
10900      <info name="release" value="RHS004C" />
10638      <year>198?</year>
10639      <publisher>RH Soft</publisher>
1090110640      <part name="cass" interface="bbc_cass">
1090210641         <dataarea name="cass" size="3596">
10903            <rom name="snailtrail(1983)(rhsoft).uef" size="3596" crc="ee60ab61" sha1="af8021dead673b6244ce5a08fab4247705a5ce92" offset="0" />
10642            <rom name="snailtrail(rhsoft).uef" size="3596" crc="ee60ab61" sha1="af8021dead673b6244ce5a08fab4247705a5ce92" offset="0" />
1090410643         </dataarea>
1090510644      </part>
1090610645   </software>
r249889r249890
1094210681      <description>Snapper v1</description>
1094310682      <year>1982</year>
1094410683      <publisher>Acornsoft</publisher>
10945      <info name="release" value="G04" />
1094610684      <part name="cass" interface="bbc_cass">
1094710685         <dataarea name="cass" size="6568">
1094810686            <rom name="snapper-v1(1982)(acornsoft)(g04).uef" size="6568" crc="dd094359" sha1="7baac890a5d40f332f491d3eaebfcc7eaee18044" offset="0" />
r249889r249890
1095410692      <description>Snapper v2.1</description>
1095510693      <year>1982</year>
1095610694      <publisher>Acornsoft</publisher>
10957      <info name="release" value="G04" />
1095810695      <part name="cass" interface="bbc_cass">
1095910696         <dataarea name="cass" size="7330">
1096010697            <rom name="snapper-v2.1(1982)(acornsoft)(g04).uef" size="7330" crc="d0ee1a50" sha1="aa34d0e1a6d3fb862194705b77a016822b54ceaf" offset="0" />
r249889r249890
1096610703      <description>Snapper v2.2</description>
1096710704      <year>1982</year>
1096810705      <publisher>Acornsoft</publisher>
10969      <info name="release" value="G04" />
1097010706      <part name="cass" interface="bbc_cass">
1097110707         <dataarea name="cass" size="7331">
1097210708            <rom name="snapper-v2.2(1982)(acornsoft)(g04).uef" size="7331" crc="ef5ee5d1" sha1="1a365530f20fcbc99f5b4e9f36445c393b9482d8" offset="0" />
r249889r249890
1097810714      <description>Snooker (Acornsoft)</description>
1097910715      <year>1983</year>
1098010716      <publisher>Acornsoft</publisher>
10981      <info name="release" value="G21" />
1098210717      <part name="cass" interface="bbc_cass">
1098310718         <dataarea name="cass" size="7270">
1098410719            <rom name="snooker-acornsoft-v2.0(1983)(acornsoft)(g21).uef" size="7270" crc="d60da42b" sha1="79281c87db0191cc559f542dfcbc43a1ce15880a" offset="0" />
r249889r249890
1105510790   <software name="sdevonhy">
1105610791      <description>South Devon Hydraulics</description>
1105710792      <year>1986</year>
11058      <publisher>Dee-Kay</publisher>
10793      <publisher>DeeKay</publisher>
1105910794      <part name="cass" interface="bbc_cass">
1106010795         <dataarea name="cass" size="9817">
1106110796            <rom name="southdevonhydraulics_be(1986)(deekay).uef" size="9817" crc="077ca5a1" sha1="3740634d311e3c629fca3ddc9bb2c7f2fb096100" offset="0" />
r249889r249890
1106510800
1106610801   <software name="sbelle">
1106710802      <description>Southern Belle</description>
11068      <year>1986</year>
11069      <publisher>Hewson Consultants</publisher>
10803      <year>198?</year>
10804      <publisher>Hewson</publisher>
1107010805      <part name="cass" interface="bbc_cass">
1107110806         <dataarea name="cass" size="17855">
11072            <rom name="southernbelle(1986)(hewson).uef" size="17855" crc="bbc456d4" sha1="4f11b9d0f4b061cb6c497b4cda8c41f22eb25932" offset="0" />
10807            <rom name="southernbelle(hewson).uef" size="17855" crc="bbc456d4" sha1="4f11b9d0f4b061cb6c497b4cda8c41f22eb25932" offset="0" />
1107310808         </dataarea>
1107410809      </part>
1107510810   </software>
r249889r249890
1112310858      <description>Space Fighter</description>
1112410859      <year>1982</year>
1112510860      <publisher>Superior Software</publisher>
11126      <info name="compatibility" value="disable Speech" />
1112710861      <info name="usage" value="Load with *RUN" />
1112810862      <part name="cass" interface="bbc_cass">
1112910863         <dataarea name="cass" size="8053">
r249889r249890
1113210866      </part>
1113310867   </software>
1113410868
11135   <software name="spguard">
11136      <description>Spaceguard</description>
11137      <year>1983</year>
11138      <publisher>MP Software</publisher>
11139      <info name="usage" value="Load with *RUN" />
11140      <part name="cass" interface="bbc_cass">
11141         <dataarea name="cass" size="4280">
11142            <rom name="spaceguard_run(1983)(mpsoft).uef" size="4280" crc="eeaf252a" sha1="9f56303dda43d941b20191b0433873595af0badf" offset="0" />
11143         </dataarea>
11144      </part>
11145   </software>
11146
1114710869   <software name="sphawks">
1114810870      <description>Space Hawks</description>
1114910871      <year>1982</year>
r249889r249890
1117910901      </part>
1118010902   </software>
1118110903
11182   <software name="spacinvb">
11183      <description>Space Invaders 32K</description>
11184      <year>1982</year>
11185      <publisher>David McKeran</publisher>
11186      <info name="usage" value="Load with *RUN" />
11187      <part name="cass" interface="bbc_cass">
11188         <dataarea name="cass" size="4677">
11189            <rom name="spaceinvaders32k_run(1982)(davidmckeran).uef" size="4677" crc="0d6b4b06" sha1="4118583ce81c22bc13d06e162e1565935b6c6331" offset="0" />
11190         </dataarea>
11191      </part>
11192   </software>
11193
1119410904   <software name="spjailer">
1119510905      <description>Space Jailer</description>
1119610906      <year>198?</year>
r249889r249890
1120210912      </part>
1120310913   </software>
1120410914
11205   <software name="skingdom">
11206      <description>Space Kingdom</description>
11207      <year>1983</year>
11208      <publisher>Cosma</publisher>
11209      <part name="cass" interface="bbc_cass">
11210         <dataarea name="cass" size="10207">
11211            <rom name="spacekingdom(1983)(cosma).uef" size="10207" crc="6e08b728" sha1="71b43cf1f5ff8fbac04b5a679aaf20e26410ddf2" offset="0" />
11212         </dataarea>
11213      </part>
11214   </software>
11215
1121610915   <software name="spmansid">
1121710916      <description>Spaceman Sid</description>
1121810917      <year>1984</year>
r249889r249890
1137711076      <description>Sphinx Adventure</description>
1137811077      <year>1982</year>
1137911078      <publisher>Acornsoft</publisher>
11380      <info name="release" value="G07" />
1138111079      <part name="cass" interface="bbc_cass">
1138211080         <dataarea name="cass" size="13999">
1138311081            <rom name="sphinxadventure-v1.0(1982)(acornsoft)(g07).uef" size="13999" crc="d71fcbc5" sha1="177135bfa47a0bc46cdcf29342aacb10339303e6" offset="0" />
r249889r249890
1170811406      <description>Starship Command</description>
1170911407      <year>1983</year>
1171011408      <publisher>Acornsoft</publisher>
11711      <info name="release" value="G22" />
1171211409      <part name="cass" interface="bbc_cass">
1171311410         <dataarea name="cass" size="12949">
1171411411            <rom name="starshipcommand-v1.1(1983)(acornsoft)(g22).uef" size="12949" crc="92204551" sha1="7606748c501013fde28357214e74134ce84b5d50" offset="0" />
r249889r249890
1214311840      <description>Super Invaders</description>
1214411841      <year>1982</year>
1214511842      <publisher>Acornsoft</publisher>
12146      <info name="release" value="G16" />
1214711843      <part name="cass" interface="bbc_cass">
1214811844         <dataarea name="cass" size="6377">
1214911845            <rom name="superinvaders-v1(1982)(acornsoft)(g16).uef" size="6377" crc="fd1fd9d5" sha1="35e7c2717a8ae193f9321fcb9a3734e1c3ea5668" offset="0" />
r249889r249890
1238912085   <software name="teestyne">
1239012086      <description>Tees-Tyne Pullman</description>
1239112087      <year>1986</year>
12392      <publisher>Dee-Kay</publisher>
12088      <publisher>DeeKay</publisher>
1239312089      <part name="cass" interface="bbc_cass">
1239412090         <dataarea name="cass" size="11984">
1239512091            <rom name="tees-tynepullman(1986)(deekay).uef" size="11984" crc="7cec68ec" sha1="12dfe5c4d39e5531210295ca6919ba6812101350" offset="0" />
r249889r249890
1249912195      <description>Tetrapod</description>
1250012196      <year>1984</year>
1250112197      <publisher>Acornsoft</publisher>
12502      <info name="release" value="G32" />
1250312198      <part name="cass" interface="bbc_cass">
1250412199         <dataarea name="cass" size="9542">
1250512200            <rom name="tetrapod-v1(1984)(acornsoft)(g32).uef" size="9542" crc="8c1b883a" sha1="d2e327fc890d245dbc624b197b4bc0e86db09911" offset="0" />
r249889r249890
1274112436   <software name="middaysc">
1274212437      <description>The Midday Scot</description>
1274312438      <year>1986</year>
12744      <publisher>Dee-Kay</publisher>
12439      <publisher>DeeKay</publisher>
1274512440      <part name="cass" interface="bbc_cass">
1274612441         <dataarea name="cass" size="13372">
1274712442            <rom name="themid-dayscot(1986)(deekay).uef" size="13372" crc="5c9d53d0" sha1="46a66a4ab4df31a088d86f950e5b04e9f4cfe2bc" offset="0" />
r249889r249890
1282712522      </part>
1282812523   </software>
1282912524
12830   <software name="thamesl">
12831      <description>Thames Local</description>
12832      <year>1986</year>
12833      <publisher>Dee-Kay</publisher>
12834      <part name="cass" interface="bbc_cass">
12835         <dataarea name="cass" size="9334">
12836            <rom name="thameslocal_be(1986)(deekay).uef" size="9334" crc="d313a3de" sha1="20db76cc4073b56e2a1049aa3f28b753b07fe8f7" offset="0" />
12837         </dataarea>
12838      </part>
12839   </software>
12840
1284112525   <software name="thesting">
1284212526      <description>The Sting</description>
1284312527      <year>1984</year>
r249889r249890
1334513029      </part>
1334613030   </software>
1334713031
13348   <software name="tycoon">
13349      <description>Tycoon</description>
13350      <year>1984</year>
13351      <publisher>Warlock Software</publisher>
13352      <part name="cass" interface="bbc_cass">
13353         <dataarea name="cass" size="14508">
13354            <rom name="tycoon(1984)(warlock).uef" size="14508" crc="6efc1003" sha1="957864695a866cb7ba0445d361614e1e3bc81552" offset="0" />
13355         </dataarea>
13356      </part>
13357   </software>
13358
1335913032   <software name="ultronpprr" cloneof="ultron">
1336013033      <description>Ultron (Power Pack)</description>
1336113034      <year>1986</year>
r249889r249890
1357713250      <description>Volcano</description>
1357813251      <year>1984</year>
1357913252      <publisher>Acornsoft</publisher>
13580      <info name="release" value="G33" />
1358113253      <part name="cass" interface="bbc_cass">
1358213254         <dataarea name="cass" size="9951">
1358313255            <rom name="volcano-v1(1984)(acornsoft)(g33).uef" size="9951" crc="6750ea2f" sha1="5079d10c287cdab70bb1c73078fc05c488aff045" offset="0" />
r249889r249890
1434314015      <description>Desk Diary</description>
1434414016      <year>198?</year>
1434514017      <publisher>Acornsoft</publisher>
14346      <info name="release" value="B01" />
1434714018      <part name="cass" interface="bbc_cass">
1434814019         <dataarea name="cass" size="8831">
1434914020            <rom name="deskdiary(198x)(acornsoft)(b01).uef" size="8831" crc="fa88d857" sha1="e12a6e25e371a141c7152a8e88474be2967cb4c2" offset="0" />
r249889r249890
1435514026      <description>Forecast</description>
1435614027      <year>198?</year>
1435714028      <publisher>Acornsoft</publisher>
14358      <info name="release" value="B02" />
1435914029      <part name="cass" interface="bbc_cass">
1436014030         <dataarea name="cass" size="13657">
1436114031            <rom name="forecast(198x)(acornsoft)(b02).uef" size="13657" crc="63f563b6" sha1="e3624dcd75ec92a610d152821931ef0a020681db" offset="0" />
r249889r249890
1438314053      <description>Personal Money Management</description>
1438414054      <year>198?</year>
1438514055      <publisher>Acornsoft</publisher>
14386      <info name="release" value="B05" />
1438714056      <part name="cass" interface="bbc_cass">
1438814057         <dataarea name="cass" size="11383">
1438914058            <rom name="personalmoneymanagement(198x)(acornsoft)(b05).uef" size="11383" crc="ab870373" sha1="8c287a4e4427ad60c023a651f78e78e8952f9abb" offset="0" />
r249889r249890
1439514064      <description>Stock Control</description>
1439614065      <year>198?</year>
1439714066      <publisher>Acornsoft</publisher>
14398      <info name="release" value="B11" />
1439914067      <part name="cass" interface="bbc_cass">
1440014068         <dataarea name="cass" size="4706">
1440114069            <rom name="stockcontrol(198x)(acornsoft)(b11).uef" size="4706" crc="b53b4c25" sha1="e91185367082cced699e8899e62e9d854d79cc6a" offset="0" />
r249889r249890
1459514263      <description>Chemical Analysis</description>
1459614264      <year>198?</year>
1459714265      <publisher>Acornsoft</publisher>
14598      <info name="release" value="E12" />
1459914266      <part name="cass" interface="bbc_cass">
1460014267         <dataarea name="cass" size="14615">
1460114268            <rom name="chemicalanalysis(198x)(acornsoft)(e12).uef" size="14615" crc="ba8cf4d3" sha1="8a3ce907763a834a2a1ddd8d26bbc25a9838e6c8" offset="0" />
r249889r249890
1460714274      <description>Chemical Simulations</description>
1460814275      <year>198?</year>
1460914276      <publisher>Acornsoft</publisher>
14610      <info name="release" value="E13" />
1461114277      <part name="cass" interface="bbc_cass">
1461214278         <dataarea name="cass" size="22182">
1461314279            <rom name="chemicalsimulations(198x)(acornsoft)(e13).uef" size="22182" crc="120f468c" sha1="991f98f80465c6a7e5c2d3db5b6228f5be247d64" offset="0" />
r249889r249890
1461914285      <description>Chemical Structures</description>
1462014286      <year>198?</year>
1462114287      <publisher>Acornsoft</publisher>
14622      <info name="release" value="E14" />
1462314288      <part name="cass" interface="bbc_cass">
1462414289         <dataarea name="cass" size="7832">
1462514290            <rom name="chemicalstructures(198x)(acornsoft)(e14).uef" size="7832" crc="854200b2" sha1="d1076fc51983acdd7eff655256d973a5daa01d4e" offset="0" />
r249889r249890
1508114746      <description>Sentence Sequencing</description>
1508214747      <year>198?</year>
1508314748      <publisher>Acornsoft</publisher>
15084      <info name="release" value="E07" />
1508514749      <part name="cass" interface="bbc_cass">
1508614750         <dataarea name="cass" size="8628">
1508714751            <rom name="sentencesequencing(198x)(acornsoft)(e07).uef" size="8628" crc="a7cbdc3b" sha1="ee718b17f7810fffdc309b693873bafca8018933" offset="0" />
r249889r249890
1518614850      <description>Tree Of Knowledge</description>
1518714851      <year>198?</year>
1518814852      <publisher>Acornsoft</publisher>
15189      <info name="release" value="E04" />
1519014853      <part name="cass" interface="bbc_cass">
1519114854         <dataarea name="cass" size="10563">
1519214855            <rom name="treeofknowlege(198x)(acornsoft)(e04).uef" size="10563" crc="3c8b5c61" sha1="53d21c483fcbfacb22fb1afc63d1f38bc479e6f2" offset="0" />
r249889r249890
1528614949      <description>Spooky Manor</description>
1528714950      <year>198?</year>
1528814951      <publisher>Acornsoft</publisher>
15289      <info name="release" value="E18" />
1529014952      <part name="cass" interface="bbc_cass">
1529114953         <dataarea name="cass" size="17433">
1529214954            <rom name="spookymanor-v1(198x)(acornsoft)(e18).uef" size="17433" crc="14f8ddae" sha1="17a0e69bfb907557f7f90003eeb1cc351fc3ae97" offset="0" />
r249889r249890
1529814960      <description>Workshop</description>
1529914961      <year>198?</year>
1530014962      <publisher>Acornsoft</publisher>
15301      <info name="release" value="E23" />
1530214963      <part name="cass" interface="bbc_cass">
1530314964         <dataarea name="cass" size="11126">
1530414965            <rom name="workshop-v1(198x)(acornsoft)(e23).uef" size="11126" crc="abfeb34b" sha1="512dd8b9ca14cefb27978392bcb5ffb98535a715" offset="0" />
r249889r249890
1531014971      <description>ABC</description>
1531114972      <year>198?</year>
1531214973      <publisher>Acornsoft</publisher>
15313      <info name="release" value="E24" />
1531414974      <part name="cass" interface="bbc_cass">
1531514975         <dataarea name="cass" size="13886">
1531614976            <rom name="abc(198x)(acornsoft)(e24).uef" size="13886" crc="1da6a521" sha1="0b3ea05602f07fe084f46723f65613f1a13d5a56" offset="0" />
r249889r249890
1534915009
1535015010   <software name="forth">
1535115011      <description>Forth</description>
15352      <year>1982</year>
15012      <year>198?</year>
1535315013      <publisher>Acornsoft</publisher>
15354      <info name="release" value="L01" />
1535515014      <part name="cass" interface="bbc_cass">
1535615015         <dataarea name="cass" size="17212">
1535715016            <rom name="forth(acornsoft).uef" size="17212" crc="1eda123d" sha1="f4a545734043bc631bfc3affa7bda26203c89b42" offset="0" />
r249889r249890
1536315022      <description>LISP</description>
1536415023      <year>1982</year>
1536515024      <publisher>Acornsoft</publisher>
15366      <info name="release" value="L02" />
1536715025      <part name="cass" interface="bbc_cass">
1536815026         <dataarea name="cass" size="12734">
1536915027            <rom name="lisp(1982)(acornsoft)(l02).uef" size="12734" crc="f93222c5" sha1="fd2b12ce8a273d0b2340c86627c82dec85a7366e" offset="0" />
r249889r249890
1550115159      <description>Creative Graphics</description>
1550215160      <year>198?</year>
1550315161      <publisher>Acornsoft</publisher>
15504      <info name="release" value="X01" />
1550515162      <part name="cass" interface="bbc_cass">
1550615163         <dataarea name="cass" size="9543">
1550715164            <rom name="creativegraphics(198x)(acornsoft)(x01).uef" size="9543" crc="b1879555" sha1="5f603d2a1c0693c4d91d8695e473e65e5c6ba3c5" offset="0" />
r249889r249890
1554015197      <description>Picture Maker</description>
1554115198      <year>1983</year>
1554215199      <publisher>Acornsoft</publisher>
15543      <info name="release" value="X03" />
1554415200      <part name="cass" interface="bbc_cass">
1554515201         <dataarea name="cass" size="18501">
1554615202            <rom name="picturemaker(1983)(acornsoft)(x03).uef" size="18501" crc="5a1ad93a" sha1="a7bec5e1b1271335e33f9fdb92b1bb0dfe01a232" offset="0" />
r249889r249890
1555215208      <description>Shirley Conran's Magic Garden</description>
1555315209      <year>1983</year>
1555415210      <publisher>Acornsoft</publisher>
15555      <info name="release" value="X04" />
1555615211      <part name="cass" interface="bbc_cass">
1555715212         <dataarea name="cass" size="14024">
1555815213            <rom name="shirleyconransmagicgarden(1983)(acornsoft)(x04).uef" size="14024" crc="19697140" sha1="992cf0986bffcc8c8c5bf7eccd262ab34157298b" offset="0" />
r249889r249890
1556415219      <description>One to Nine</description>
1556515220      <year>198?</year>
1556615221      <publisher>Acornsoft</publisher>
15567      <info name="release" value="X07" />
1556815222      <part name="cass" interface="bbc_cass">
1556915223         <dataarea name="cass" size="6845">
1557015224            <rom name="onetonine(198x)(acornsoft)(x07).uef" size="6845" crc="c9cdc624" sha1="63e3f8d61c49773f2c9437bfb103a0787cf70e5a" offset="0" />
r249889r249890
1557615230      <description>Paul Daniel's Magic Show</description>
1557715231      <year>198?</year>
1557815232      <publisher>Acornsoft</publisher>
15579      <info name="release" value="X11" />
1558015233      <part name="cass" interface="bbc_cass">
1558115234         <dataarea name="cass" size="25634">
1558215235            <rom name="pauldanielsmagicshow(198x)(acornsoft)(x11).uef" size="25634" crc="794f3de0" sha1="efa0139ad02dac3867fb4a446216b384ffb58efa" offset="0" />
r249889r249890
1558815241      <description>Linkword Spanish</description>
1558915242      <year>1984</year>
1559015243      <publisher>Acornsoft</publisher>
15591      <info name="release" value="X15" />
1559215244      <part name="cass1" interface="bbc_cass">
1559315245         <dataarea name="cass" size="25919">
1559415246            <rom name="linkwordspanish-side1(1984)(acornsoft)(x15).uef" size="25919" crc="f67a4b4a" sha1="857996b61e180ac4c5e73c0dc41e1fb07756de46" offset="0" />
trunk/hash/bbcb_flop.xml
r249889r249890
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- BBC Micro Model B Disks -->
5
6<!-- Loading Instructions:
7
8      Hold down the SHIFT key and press and release the BREAK key.
9-->
10
11<!-- This list was compiled from the archive at http://www.stairwaytohell.com/. Additional titles will be added as they are made available at http://stardot.org.uk/ forum. -->
12
13<!-- All images in this list contain no protection, they are either deprotected disc images or transferred from cassette. Some may never have been protected and will be marked if known. -->
14
15
16<softwarelist name="bbcb_flop" description="BBC Micro Model B disks">
17
18   <software name="3dbombal">
19      <description>3D Bomb Alley</description>
20      <year>1983</year>
21      <publisher>Software Invasion</publisher>
22      <part name="flop1" interface="floppy_5_25">
23         <dataarea name="flop" size="102400">
24            <rom name="3dbomballey.ssd" size="102400" crc="5a8deaff" sha1="d0f4716a376e4407492b4db7f87597bc07d7651f" offset="0" />
25         </dataarea>
26      </part>
27   </software>
28
29   <software name="cutekill">
30      <description>Cute To Kill: Beyond Infinity</description>
31      <year>1987</year>
32      <publisher>Mandarin</publisher>
33      <part name="flop1" interface="floppy_5_25">
34         <dataarea name="flop" size="48640">
35            <rom name="beyondinfinity-cutetokill.ssd" size="48640" crc="350daf5c" sha1="afe6bc6448e86e6bc6bee34cae09c8cf46828b1b" offset="0" />
36         </dataarea>
37      </part>
38   </software>
39   
40   <software name="elite">
41      <description>Elite</description>
42      <year>1984</year>
43      <publisher>Acornsoft</publisher>
44      <part name="flop1" interface="floppy_5_25">
45         <dataarea name="flop" size="204800">
46            <rom name="elitebbc.ssd" size="204800" crc="1f15458d" sha1="ac47c0d6d0006ceef2102dda521df3364aff32aa" offset="0" />
47         </dataarea>
48      </part>
49   </software>
50
51   <software name="elitexec" supported="partial">
52      <description>Elite (Executive Edition)</description>
53      <year>1986</year>
54      <publisher>Acornsoft</publisher>
55      <part name="flop1" interface="floppy_5_25">
56         <dataarea name="flop" size="204800">
57            <rom name="elite_executive.ssd" size="204800" crc="f10aea60" sha1="cbd40dd9cad231f2f093e64665a69b64ddab5608" offset="0" />
58         </dataarea>
59      </part>
60   </software>
61
62   <software name="eyes">
63      <description>Eyes</description>
64      <year>1984</year>
65      <publisher>Ocean (Unreleased)</publisher>
66      <part name="flop1" interface="floppy_5_25">
67         <dataarea name="flop" size="12544">
68            <rom name="eyes-unreleased.ssd" size="12544" crc="19f1dd27" sha1="182b05ef661872b4e63a7e627675f1f6297da8df" offset="0" />
69         </dataarea>
70      </part>
71   </software>
72
73   <software name="frogman">
74      <description>Frogman (Demo)</description>
75      <year>1993</year>
76      <publisher>Unreleased</publisher>
77      <part name="flop1" interface="floppy_5_25">
78         <dataarea name="flop" size="65280">
79            <rom name="frogman-demo.ssd" size="65280" crc="c4fc4bc9" sha1="c81ab2374b31fb3cd761e5a6aca7ed1fc321667f" offset="0" />
80         </dataarea>
81      </part>
82   </software>
83
84   <software name="mapocaly">
85      <description>Mega Apocalypse</description>
86      <year>1988</year>
87      <publisher>Martech (Unreleased)</publisher>
88      <part name="flop1" interface="floppy_5_25">
89         <dataarea name="flop" size="40192">
90            <rom name="megaapocalypse.ssd" size="40192" crc="4a6e1489" sha1="399e09d9782d7f0068a9acd9113595657dbb4673" offset="0" />
91         </dataarea>
92      </part>
93   </software>
94
95   <software name="ssgames">
96      <description>Superior Software - Games on Disc</description>
97      <year>1983</year>
98      <publisher>Superior Software (Demo)</publisher>
99      <part name="flop1" interface="floppy_5_25">
100         <dataarea name="flop" size="78336">
101            <rom name="superiorsoftware-games.ssd" size="78336" crc="6ba0c45b" sha1="df86cfeae73db805307b0e3120fe008ab7a5bc38" offset="0" />
102         </dataarea>
103      </part>
104   </software>
105
106   <software name="welcome">
107      <description>Welcome and Disc Utils</description>
108      <year>1982</year>
109      <publisher>Acorn</publisher>
110      <part name="flop1" interface="floppy_5_25">
111         <dataarea name="flop" size="78336">
112            <rom name="welcome.ssd" size="78336" crc="03728f14" sha1="d212aa33a14b30dc2ff64920f834fe8c4e6715cc" offset="0" />
113         </dataarea>
114      </part>
115   </software>
116
117</softwarelist>
trunk/hash/bbcb_us_flop.xml
r249889r249890
1414      <description>Introductory and Utilities Disk</description>
1515      <year>1983</year>
1616      <publisher>Acorn</publisher>
17      <info name="protection" value="none" />
1718      <part name="flop1" interface="floppy_5_25">
1819         <dataarea name="flop" size="204800">
1920            <rom name="introductory_utils(1983)(acorn).ssd" size="204800" crc="60612fc2" sha1="037f7c3499547d5ac5f88e812d7765ccaf27d6e1" offset="0" />
trunk/hash/bbcm_flop.xml
r249889r249890
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- BBC Master Disks -->
5
6<!-- Loading Instructions:
7
8      Hold down the SHIFT key and press and release the BREAK key.
9
10      Ensure suitable DFS is active for FM and MFM images.
11      - FM  requires DFS  (D and BREAK)
12      - MFM requires ADFS (A and BREAK)
13-->
14
15<softwarelist name="bbcm_flop" description="BBC Master disks">
16
17   <software name="welcomem">
18      <description>Welcome &amp; Utilities Disc</description>
19      <year>1986</year>
20      <publisher>Acorn</publisher>
21      <info name="format" value="ADFS" />
22      <part name="flop1" interface="floppy_5_25">
23         <dataarea name="flop" size="655360">
24            <rom name="masterwelcome.adl" size="655360" crc="606598eb" sha1="13cb8944fc6905bc601a94b5c271d1df2b0a4644" offset="0" />
25         </dataarea>
26      </part>
27   </software>
28
29   <software name="elitexec" supported="partial">
30      <description>Elite (Executive Edition)</description>
31      <year>1986</year>
32      <publisher>Acornsoft</publisher>
33      <info name="format" value="DFS" />
34      <part name="flop1" interface="floppy_5_25">
35         <dataarea name="flop" size="204800">
36            <rom name="elite_executive.ssd" size="204800" crc="f10aea60" sha1="cbd40dd9cad231f2f093e64665a69b64ddab5608" offset="0" />
37         </dataarea>
38      </part>
39   </software>
40
41</softwarelist>
trunk/hash/bbcmc_flop.xml
r249889r249890
1414      <description>BBC Master Compact Welcome Disc</description>
1515      <year>1986</year>
1616      <publisher>Acorn</publisher>
17      <info name="protection" value="none" />
1718      <part name="flop1" interface="floppy_3_5">
1819         <dataarea name="flop" size="655360">
1920            <rom name="welcome_compact.adl" size="655360" crc="9d747205" sha1="04cfd6d1e08e8f695befb2948e27d63fd7842b8f" offset="0" />
trunk/hash/megadriv.xml
r249889r249890
2179121791      </part>
2179221792   </software>
2179321793
21794
21795   <software name="puttsqup" >
21796      <description>Putty Squad (prototype)</description>
21797      <year>1992</year>
21798      <publisher>System 3 / Ocean</publisher>
21799      <part name="cart" interface="megadriv_cart">
21800         <dataarea name="rom" width="16" endianness="big" size="0x100000">
21801            <rom name="PS-md.BIN" size="0x100000" crc="2348da80" sha1="f529598f56c581854d2bde2ee960100273813539" offset="0x000000"/>
21802         </dataarea>
21803      </part>
21804   </software>
21805
21806
2180721794   <software name="putter">
2180821795      <description>Putter Golf (Jpn, SegaNet)</description>
2180921796      <year>1991</year>
trunk/hash/pico.xml
r249889r249890
38253825         </dataarea>
38263826      <!-- this is a 22 track companion audio CD (to be played on standalone CD player while operating the game?) -->
38273827      <!-- dumping software / drive: BurnAtOnce 0.99.5 / TS-L633R -->
3828         <diskarea name="cdrom">
3828          <diskarea name="cdrom">
38293829            <disk name="sanouk5cd" sha1="c9330bbf118405c02347bd83a1cc24ab2bb4310d"/>
38303830         </diskarea>
38313831      </part>
trunk/hash/pro128s_flop.xml
r249889r249890
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- Olivetti Prodest PC 128S Disks -->
5
6<!-- Loading Instructions:
7
8      Hold down the SHIFT key and press and release the BREAK key.
9
10     Most of the dumps in this list were obtained from http://hierax.altervista.org/prodest/adfs.htm, covers and screenshots can also be found at http://pc128s.altervista.org/software.html.
11-->
12
13<softwarelist name="pro128s_flop" description="Olivetti Prodest PC 128S disks">
14
15   <!-- Games -->
16
17   <software name="aviator">
18      <description>Aviator</description>
19      <year>1987</year>
20      <publisher>Olivetti Prodest</publisher>
21      <part name="flop1" interface="floppy_3_5">
22         <dataarea name="flop" size="327680">
23            <rom name="aviator.adm" size="327680" crc="98f1d06d" sha1="c8614cd080991d19cbf40ef205d049343d738a5f" offset="0" />
24         </dataarea>
25      </part>
26   </software>
27
28   <software name="bribbon1">
29      <description>Blue Ribbon 1</description>
30      <year>1987</year>
31      <publisher>Olivetti Prodest</publisher>
32      <part name="flop1" interface="floppy_3_5">
33         <dataarea name="flop" size="327680">
34            <rom name="blueribbon1.adm" size="327680" crc="4bda3704" sha1="2c23d43f01d35fc1397377d8317b148be804cc72" offset="0" />
35         </dataarea>
36      </part>
37   </software>
38
39   <software name="bribbon2">
40      <description>Blue Ribbon 2</description>
41      <year>1987</year>
42      <publisher>Olivetti Prodest</publisher>
43      <part name="flop1" interface="floppy_3_5">
44         <dataarea name="flop" size="327680">
45            <rom name="blueribbon2.adm" size="327680" crc="9cf20547" sha1="3e490286c043b3066a05785cc217b0b0866ffc09" offset="0" />
46         </dataarea>
47      </part>
48   </software>
49
50   <software name="carambol">
51      <description>Carambola</description>
52      <year>1987</year>
53      <publisher>Olivetti Prodest</publisher>
54      <part name="flop1" interface="floppy_3_5">
55         <dataarea name="flop" size="327680">
56            <rom name="biliardo.adm" size="327680" crc="741ade8a" sha1="304d90b8fbd5c8fbbe77f9ba28708e4fe6196594" offset="0" />
57         </dataarea>
58      </part>
59   </software>
60
61   <software name="futuresh">
62      <description>Future Shock</description>
63      <year>1987</year>
64      <publisher>Olivetti Prodest</publisher>
65      <info name="release" value="SF9960" />
66      <part name="flop1" interface="floppy_3_5">
67         <dataarea name="flop" size="163840">
68            <rom name="futureshock.ads" size="163840" crc="8a57f63a" sha1="b22b82181f9a59c468cf7f438105663ec5a34def" offset="0" />
69         </dataarea>
70      </part>
71   </software>
72
73   <software name="goal">
74      <description>Goal!</description>
75      <year>1987</year>
76      <publisher>Olivetti Prodest</publisher>
77      <info name="release" value="SF9950" />
78      <part name="flop1" interface="floppy_3_5">
79         <dataarea name="flop" size="163840">
80            <rom name="goal.ads" size="163840" crc="d01bfcb5" sha1="1e047405cf875f5849101807fa579a1df186847d" offset="0" />
81         </dataarea>
82      </part>
83   </software>
84
85   <software name="golf">
86      <description>Golf</description>
87      <year>1987</year>
88      <publisher>Olivetti Prodest</publisher>
89      <info name="release" value="SF9610" />
90      <part name="flop1" interface="floppy_3_5">
91         <dataarea name="flop" size="327680">
92            <rom name="birdie.adm" size="327680" crc="a63260d0" sha1="613aceab8d31e38fa762dd3d10c39d58856a7f30" offset="0" />
93         </dataarea>
94      </part>
95   </software>
96
97   <software name="jetsetw2">
98      <description>Jet Set Willy II</description>
99      <year>1987</year>
100      <publisher>Olivetti Prodest</publisher>
101      <info name="release" value="SF1050" />
102      <part name="flop1" interface="floppy_3_5">
103         <dataarea name="flop" size="163840">
104            <rom name="jetsetwilly2.ads" size="163840" crc="c87fdbbd" sha1="c84573f6cc7a24d4c7f0206efc0ce8506abf7d02" offset="0" />
105         </dataarea>
106      </part>
107   </software>
108
109   <software name="modemsec">
110      <description>Modem's Secret</description>
111      <year>1987</year>
112      <publisher>Olivetti Prodest</publisher>
113      <part name="flop1" interface="floppy_3_5">
114         <dataarea name="flop" size="327680">
115            <rom name="modemssecret.adm" size="327680" crc="c08cd3b7" sha1="ae2ae68fe505d9180dcf85827feeae777c0535e9" offset="0" />
116         </dataarea>
117      </part>
118   </software>
119
120   <software name="overdriv">
121      <description>Overdrive &amp; Centibug</description>
122      <year>1987</year>
123      <publisher>Olivetti Prodest</publisher>
124      <part name="flop1" interface="floppy_3_5">
125         <dataarea name="flop" size="327680">
126            <rom name="overdrive_centibug.adm" size="327680" crc="a99d9e29" sha1="e44116199ae711131937a5de010bdcab541a87b3" offset="0" />
127         </dataarea>
128      </part>
129   </software>
130
131   <software name="revs">
132      <description>Revs</description>
133      <year>1987</year>
134      <publisher>Olivetti Prodest</publisher>
135      <part name="flop1" interface="floppy_3_5">
136         <dataarea name="flop" size="327680">
137            <rom name="revs.adm" size="327680" crc="c445ec45" sha1="4bef4edf44a727c0b36d81cf5ddd8064a13eb039" offset="0" />
138         </dataarea>
139      </part>
140   </software>
141
142   <software name="sarcade1">
143      <description>Super Arcade 1</description>
144      <year>1987</year>
145      <publisher>Olivetti Prodest</publisher>
146      <info name="release" value="SF9560" />
147      <part name="flop1" interface="floppy_3_5">
148         <dataarea name="flop" size="163840">
149            <rom name="superarcade1.ads" size="163840" crc="893e6201" sha1="16da10a80ea6bf53b13d1d4225dd86e2801ab3e4" offset="0" />
150         </dataarea>
151      </part>
152   </software>
153
154   <software name="sarcade2">
155      <description>Super Arcade 2</description>
156      <year>1987</year>
157      <publisher>Olivetti Prodest</publisher>
158      <info name="release" value="SF9570" />
159      <part name="flop1" interface="floppy_3_5">
160         <dataarea name="flop" size="327680">
161            <rom name="superarcade2.adm" size="327680" crc="23a176fc" sha1="95652e6d587873a4b71c2ac6acb5c339c27c8f6c" offset="0" />
162         </dataarea>
163      </part>
164   </software>
165
166   <software name="sarcade3">
167      <description>Super Arcade 3</description>
168      <year>1987</year>
169      <publisher>Olivetti Prodest</publisher>
170      <part name="flop1" interface="floppy_3_5">
171         <dataarea name="flop" size="327680">
172            <rom name="superarcade3.adm" size="327680" crc="c34681e0" sha1="2c3cb301ecb1fbd5b2cedd1d12385ed263c39cfd" offset="0" />
173         </dataarea>
174      </part>
175   </software>
176
177   <software name="sarcade4">
178      <description>Super Arcade 4</description>
179      <year>1987</year>
180      <publisher>Olivetti Prodest</publisher>
181      <part name="flop1" interface="floppy_3_5">
182         <dataarea name="flop" size="327680">
183            <rom name="superarcade4.adm" size="327680" crc="3b4510ab" sha1="058e56ac99fc8af81c05cefb8bf8954c5fa0d7e7" offset="0" />
184         </dataarea>
185      </part>
186   </software>
187
188   <software name="sarcade5">
189      <description>Super Arcade 5</description>
190      <year>1987</year>
191      <publisher>Olivetti Prodest</publisher>
192      <info name="release" value="SF9850" />
193      <part name="flop1" interface="floppy_3_5">
194         <dataarea name="flop" size="163840">
195            <rom name="superarcade5.ads" size="163840" crc="c588888e" sha1="9ce948ef458a3a74e89d8cc94ff0f292d8ae8989" offset="0" />
196         </dataarea>
197      </part>
198   </software>
199
200   <software name="scacchi">
201      <description>Scacchi (Ita)</description>
202      <year>1987</year>
203      <publisher>Olivetti Prodest</publisher>
204      <part name="flop1" interface="floppy_3_5">
205         <dataarea name="flop" size="655360">
206            <rom name="scacchi.adl" size="655360" crc="08a45c85" sha1="a0b38359657c6df80f58e00578ad961a316d2385" offset="0" />
207         </dataarea>
208      </part>
209   </software>
210
211   <software name="smashgra">
212      <description>Smash &amp; Grab &amp; Mr Wiz</description>
213      <year>1987</year>
214      <publisher>Olivetti Prodest</publisher>
215      <part name="flop1" interface="floppy_3_5">
216         <dataarea name="flop" size="327680">
217            <rom name="smash_mrwiz.adm" size="327680" crc="2fba2c48" sha1="2e9c5ce65da83c2ac0b59f387ebe4fbd171d93c5" offset="0" />
218         </dataarea>
219      </part>
220   </software>
221
222   <software name="starstri">
223      <description>Star Striker &amp; Wallaby</description>
224      <year>1987</year>
225      <publisher>Olivetti Prodest</publisher>
226      <part name="flop1" interface="floppy_3_5">
227         <dataarea name="flop" size="327680">
228            <rom name="starstriker_wallaby.adm" size="327680" crc="7768d196" sha1="f76cf06efc9c9b6ce01d5d6e9c656bdc034236c4" offset="0" />
229         </dataarea>
230      </part>
231   </software>
232
233   <software name="tetris">
234      <description>Tetris</description>
235      <year>1991</year>
236      <publisher>ConcaSoft</publisher>
237      <part name="flop1" interface="floppy_3_5">
238         <dataarea name="flop" size="655360">
239            <rom name="tetris.adl" size="655360" crc="eca99e42" sha1="5ec5ea8674a9c43df249b2d74095a979b5346ff4" offset="0" />
240         </dataarea>
241      </part>
242   </software>
243
244   <software name="thebigko">
245      <description>The Big KO!</description>
246      <year>1987</year>
247      <publisher>Olivetti Prodest</publisher>
248      <part name="flop1" interface="floppy_3_5">
249         <dataarea name="flop" size="163840">
250            <rom name="thebigko.ads" size="163840" crc="503066e5" sha1="a3315e6d4f4afa49838f1a1223a9c37192d5db32" offset="0" />
251         </dataarea>
252      </part>
253   </software>
254
255   <software name="vindaloo">
256      <description>Vindaloo</description>
257      <year>1987</year>
258      <publisher>Olivetti Prodest</publisher>
259      <info name="release" value="SF9930" />
260      <part name="flop1" interface="floppy_3_5">
261         <dataarea name="flop" size="163840">
262            <rom name="vindaloo.ads" size="163840" crc="3eca401d" sha1="b5a244ba57977a78e00dbead0e6dcb6e46af9823" offset="0" />
263         </dataarea>
264      </part>
265   </software>
266
267   <software name="winter">
268      <description>Olimpiadi Invernali</description>
269      <year>1987</year>
270      <publisher>Olivetti Prodest</publisher>
271      <part name="flop1" interface="floppy_3_5">
272         <dataarea name="flop" size="163840">
273            <rom name="winter.ads" size="163840" crc="32d023b5" sha1="4d3fdc630e6170ca9b7b72386047be34aaaf98f2" offset="0" />
274         </dataarea>
275      </part>
276   </software>
277
278   <software name="xor">
279      <description>XOR (Ita)</description>
280      <year>1987</year>
281      <publisher>Olivetti Prodest</publisher>
282      <part name="flop1" interface="floppy_3_5">
283         <dataarea name="flop" size="327680">
284            <rom name="xor.adm" size="327680" crc="71aef802" sha1="c13637b53a1043558febbc0ca9821f9467f02122" offset="0" />
285         </dataarea>
286      </part>
287   </software>
288
289   <!-- Business -->
290
291   <software name="artista">
292      <description>Artista</description>
293      <year>1987</year>
294      <publisher>Olivetti Prodest</publisher>
295      <part name="flop1" interface="floppy_3_5">
296         <dataarea name="flop" size="327680">
297            <rom name="artista.adm" size="327680" crc="dbf18b92" sha1="90c595f2fe80d0729c02a5a80c07a28e374f06b0" offset="0" />
298         </dataarea>
299      </part>
300   </software>
301
302   <software name="betabase">
303      <description>Beta-Base (Ita)</description>
304      <year>1987</year>
305      <publisher>Clares</publisher>
306      <part name="flop1" interface="floppy_3_5">
307         <dataarea name="flop" size="163840">
308            <rom name="betabase.ads" size="163840" crc="8351f1f4" sha1="e015c41a93bf36b681d8fa7f1a18f324e789e554" offset="0" />
309         </dataarea>
310      </part>
311   </software>
312
313   <software name="mod740">
314      <description>Mod. 740 S</description>
315      <year>1987</year>
316      <publisher>Olivetti Prodest</publisher>
317      <part name="flop1" interface="floppy_3_5">
318         <dataarea name="flop" size="327680">
319            <rom name="mod740.adm" size="327680" crc="8433c242" sha1="dea4dc35a4bdbe087ec2a711869a924788b47a13" offset="0" />
320         </dataarea>
321      </part>
322   </software>
323
324   <software name="viewindx">
325      <description>ViewIndex</description>
326      <year>1987</year>
327      <publisher>Olivetti Prodest</publisher>
328      <part name="flop1" interface="floppy_3_5">
329         <dataarea name="flop" size="327680">
330            <rom name="viewindex.adm" size="327680" crc="6e780731" sha1="8dfaddaa238e5f3db0b9dcbbc7ef06f4fa52102a" offset="0" />
331         </dataarea>
332      </part>
333   </software>
334
335   <software name="viewplot">
336      <description>ViewPlot</description>
337      <year>1987</year>
338      <publisher>Olivetti Prodest</publisher>
339      <part name="flop1" interface="floppy_3_5">
340         <dataarea name="flop" size="327680">
341            <rom name="viewplot.adm" size="327680" crc="2ca1eade" sha1="12eaa4ac1c6a6484a886f313bb793a2c4537eb91" offset="0" />
342         </dataarea>
343      </part>
344   </software>
345
346   <software name="viewstor">
347      <description>ViewStore</description>
348      <year>1987</year>
349      <publisher>Olivetti Prodest</publisher>
350      <part name="flop1" interface="floppy_3_5">
351         <dataarea name="flop" size="327680">
352            <rom name="viewstore.adm" size="327680" crc="c6a08aba" sha1="a8041767230cc029f0d48e9b7aa5bb8131817441" offset="0" />
353         </dataarea>
354      </part>
355   </software>
356
357   <!-- Educational -->
358
359   <software name="podd">
360      <description>Podd (Ita)</description>
361      <year>1987</year>
362      <publisher>Olivetti Prodest</publisher>
363      <part name="flop1" interface="floppy_3_5">
364         <dataarea name="flop" size="163840">
365            <rom name="podd.ads" size="163840" crc="53f25c1f" sha1="38269a36fd55625bde32cd24f2c90024f8d52bfe" offset="0" />
366         </dataarea>
367      </part>
368   </software>
369
370   <software name="pmagico">
371      <description>Puzzle Magico (Ita)</description>
372      <year>1987</year>
373      <publisher>Olivetti Prodest</publisher>
374      <info name="release" value="SF9830" />
375      <part name="flop1" interface="floppy_3_5">
376         <dataarea name="flop" size="163840">
377            <rom name="puzzlemagico.ads" size="163840" crc="f0ac8983" sha1="58a0ad38b57ca176d69e91e3e249c885800f0f80" offset="0" />
378         </dataarea>
379      </part>
380   </software>
381
382   <software name="spingi">
383      <description>Spingi (Ita)</description>
384      <year>1987</year>
385      <publisher>Olivetti Prodest</publisher>
386      <info name="release" value="SF9840" />
387      <part name="flop1" interface="floppy_3_5">
388         <dataarea name="flop" size="163840">
389            <rom name="spingi.ads" size="163840" crc="c5efa2cb" sha1="1518a33169fefbb6e3659561179a9296b4413f97" offset="0" />
390         </dataarea>
391      </part>
392   </software>
393
394   <!-- Languages -->
395
396   <software name="basic">
397      <description>Introduzione al BASIC</description>
398      <year>1987</year>
399      <publisher>Olivetti Prodest</publisher>
400      <part name="flop1" interface="floppy_3_5">
401         <dataarea name="flop" size="327680">
402            <rom name="basic.adm" size="327680" crc="c8c8f4ff" sha1="aed619692c40344563fba61a4324b4eeac78c11f" offset="0" />
403         </dataarea>
404      </part>
405   </software>
406   
407</softwarelist>
trunk/hash/spectrum_cass.xml
r249889r249890
709709      </part>
710710   </software>
711711
712  <!-- Homebrew released at http://spectralinterlude.com/#download for use on real systems & emulators -->
713   <software name="castlvsi">
714      <description>Castlevania - Spectral Interlude (v1.1, English, 128K)</description>
715      <year>2015</year>
716      <publisher>Rewind</publisher>
717      <part name="cass" interface="spectrum_cass">
718         <dataarea name="cass" size="126394">
719            <rom name="castlevania_si_en_v11.tap" size="126394" crc="c100bb38" sha1="ba89e73dbc16621fc52f886c6b1abb2d6a93ffc7" offset="0"/>
720         </dataarea>
721      </part>
722   </software>
723712
724   <software name="castlvsiru" cloneof="castlvsi">
725      <description>Castlevania - Spectral Interlude (v1.1, Russian, 128K)</description>
726      <year>2015</year>
727      <publisher>Rewind</publisher>
728      <part name="cass" interface="spectrum_cass">
729         <dataarea name="cass" size="127054">
730            <rom name="castlevania_si_ru_v11.tap" size="127054" crc="45561b70" sha1="b44b7e93c8fbf74d23ad694182d99e5a5ec01f98" offset="0"/>
731         </dataarea>
732      </part>
733   </software>
734
735   <software name="castlvsipl" cloneof="castlvsi">
736      <description>Castlevania - Spectral Interlude (v1.1, Polish, 128K)</description>
737      <year>2015</year>
738      <publisher>Rewind</publisher>
739      <part name="cass" interface="spectrum_cass">
740         <dataarea name="cass" size="127378">
741            <rom name="castlevania_si_pl_v11.tap" size="127378" crc="2f11f5bd" sha1="4f4448f6f70eebdf6af81977cac61d0f41b7744f" offset="0"/>
742         </dataarea>
743      </part>
744   </software>
745
746   <software name="castlvsies" cloneof="castlvsi">
747      <description>Castlevania - Spectral Interlude (v1.1, Spanish, 128K)</description>
748      <year>2015</year>
749      <publisher>Rewind</publisher>
750      <part name="cass" interface="spectrum_cass">
751         <dataarea name="cass" size="126950">
752            <rom name="castlevania_si_es_v11.tap" size="126950" crc="27e8ae63" sha1="1dced2991e51854fdf31fe323aa6ee75b25d55a2" offset="0"/>
753         </dataarea>
754      </part>
755   </software>
756
757   <software name="castlvsiit" cloneof="castlvsi">
758      <description>Castlevania - Spectral Interlude (v1.1, Italian, 128K)</description>
759      <year>2015</year>
760      <publisher>Rewind</publisher>
761      <part name="cass" interface="spectrum_cass">
762         <dataarea name="cass" size="127355">
763            <rom name="castlevania_si_it_v11.tap" size="127355" crc="d9a89fc5" sha1="885d3489c94937b0db8a536a1aa6435629942d77" offset="0"/>
764         </dataarea>
765      </part>
766   </software>
767
768   <software name="castlvsi10" cloneof="castlvsi">
769      <description>Castlevania - Spectral Interlude (v1.0, English, 128K)</description>
770      <year>2015</year>
771      <publisher>Rewind</publisher>
772      <part name="cass" interface="spectrum_cass">
773         <dataarea name="cass" size="126410">
774            <rom name="castlevania_si_en_v10.tap" size="126410" crc="0d022bc5" sha1="450dfd57ea7407f47bbfd785d981e4a92e166029" offset="0"/>
775         </dataarea>
776      </part>
777   </software>
778
779   <software name="castlvsiru10" cloneof="castlvsi">
780      <description>Castlevania - Spectral Interlude (v1.0, Russian, 128K)</description>
781      <year>2015</year>
782      <publisher>Rewind</publisher>
783      <part name="cass" interface="spectrum_cass">
784         <dataarea name="cass" size="127066">
785            <rom name="castlevania_si_ru_v10.tap" size="127066" crc="2dceb444" sha1="10ca28195652a9f3f20a48e8e761f0dd138abcf6" offset="0"/>
786         </dataarea>
787      </part>
788   </software>
789
790   <software name="castlvsipl10" cloneof="castlvsi">
791      <description>Castlevania - Spectral Interlude (v1.0, Polish, 128K)</description>
792      <year>2015</year>
793      <publisher>Rewind</publisher>
794      <part name="cass" interface="spectrum_cass">
795         <dataarea name="cass" size="127361">
796            <rom name="castlevania_si_pl_v10.tap" size="127361" crc="e8dc0e6b" sha1="4802a4cef916466ccbf25cabb3f447db17b802bd" offset="0"/>
797         </dataarea>
798      </part>
799   </software>
800 
801  <!-- V1.0 doesn't exist in Spanish? or Italian (translations were made after the 1.1 release) -->
802 
803713</softwarelist>
804714
805715
trunk/hash/unichamp.xml
r249889r249890
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<softwarelist name="unichamp" description="Unisonic Champion 2711 cartridges">
5
6   <software name="pac-02">
7      <description>Professional Poker Games</description>
8      <year>1977</year>
9      <publisher>Unisonic</publisher>
10      <info name="serial" value="PAC-02"/>
11      <part name="cart" interface="unichamp_cart">
12         <dataarea name="rom" size="0x1000">
13            <rom name="pac-02.bin" size="0x1000" crc="fe3213be" sha1="5b9c407fe86865f3454d4be824a7f2bf53478f73" offset="0x0000"/>
14         </dataarea>
15      </part>
16   </software>
17
18   <software name="pac-03">
19      <description>Assorted Family Fun</description>
20      <year>1977</year>
21      <publisher>Unisonic</publisher>
22      <info name="serial" value="PAC-03"/>
23      <part name="cart" interface="unichamp_cart">
24         <dataarea name="rom" size="0x1000">
25            <rom name="pac-03.bin" size="0x1000" crc="f81f04bd" sha1="82e2a0fda1787d5835c457ee5745b0db0cebe079" offset="0x0000"/>
26         </dataarea>
27      </part>
28   </software>
29
30   <software name="pac-04">
31      <description>Family Card Games</description>
32      <year>1977</year>
33      <publisher>Unisonic</publisher>
34      <info name="serial" value="PAC-04"/>
35      <part name="cart" interface="unichamp_cart">
36         <dataarea name="rom" size="0x1000">
37            <rom name="pac-04.bin" size="0x1000" crc="cac09841" sha1="bc9db83f26ed0810938156db6b104b4576754225" offset="0x0000"/>
38         </dataarea>
39      </part>
40   </software>   
41
42   <software name="pac-05">
43      <description>Math</description>
44      <year>1977</year>
45      <publisher>Unisonic</publisher>
46      <info name="serial" value="PAC-05"/>
47      <part name="cart" interface="unichamp_cart">
48         <dataarea name="rom" size="0x1000">
49            <rom name="pac-05.bin" size="0x1000" crc="d54a6090" sha1="e85593096f43dcf14b08fd2c9fda277008a8df8b" offset="0x0000"/>
50         </dataarea>
51      </part>
52   </software>   
53   
54</softwarelist>
trunk/hlsl/vector.fx
r249889r249890
4242VS_OUTPUT vs_main(VS_INPUT Input)
4343{
4444   VS_OUTPUT Output = (VS_OUTPUT)0;
45   
45
4646   Output.Position = float4(Input.Position.xyz, 1.0f);
4747   Output.Position.xy /= ScreenDims;
48   Output.Position.y = 1.0f - Output.Position.y;
49   Output.Position.xy -= 0.5f;
50   Output.Position *= float4(2.0f, 2.0f, 1.0f, 1.0f);
48   Output.Position.y = 1.0f - Output.Position.y; // flip y
49   Output.Position.xy -= 0.5f; // center
50   Output.Position.xy *= 2.0f; // zoom
51
52   Output.TexCoord = Input.Position.xy / ScreenDims;
53
5154   Output.Color = Input.Color;
52   Output.TexCoord = Input.Position.xy / ScreenDims;
55
5356   Output.LineInfo = Input.LineInfo;
57
5458   return Output;
5559}
5660
r249889r249890
6468// LengthParams.z: Size at which fade is maximum
6569float4 ps_main(PS_INPUT Input) : COLOR
6670{
67   float timeModulate = lerp(1.0f, TimeParams.x, TimeParams.y) * 1.0;
71   float timeModulate = lerp(1.0f, TimeParams.x, TimeParams.y);
6872
6973   float lengthModulate = 1.0f - clamp(Input.LineInfo.x / LengthParams.z, 0.0f, 1.0f);
7074   float minLength = 2.0f - clamp(Input.LineInfo.x - 1.0f, 0.0f, 2.0f);
71   lengthModulate = lerp(lengthModulate, 4.0f, minLength * 0.5f);
72   lengthModulate = lerp(1.0f, timeModulate * lengthModulate, LengthParams.y) * 1.0;
75   lengthModulate = lerp(lengthModulate, 2.0f, minLength * 0.5f);
76   lengthModulate = lerp(1.0f, timeModulate * lengthModulate, LengthParams.y);
7377
74   float4 outColor = Input.Color * float4(lengthModulate, lengthModulate, lengthModulate, 1.0f) * 2.0;
78   float4 outColor = Input.Color * float4(lengthModulate, lengthModulate, lengthModulate, 1.0f);
7579   return outColor;
7680}
7781
trunk/scripts/src/bus.lua
r249889r249890
11611161      MAME_DIR .. "src/devices/bus/vcs/compumat.h",
11621162      MAME_DIR .. "src/devices/bus/vcs/dpc.c",
11631163      MAME_DIR .. "src/devices/bus/vcs/dpc.h",
1164      MAME_DIR .. "src/devices/bus/vcs/dpcplus.c",
1165      MAME_DIR .. "src/devices/bus/vcs/dpcplus.h",
11661164      MAME_DIR .. "src/devices/bus/vcs/scharger.c",
11671165      MAME_DIR .. "src/devices/bus/vcs/scharger.h",
11681166   }
r249889r249890
22032201      MAME_DIR .. "src/devices/bus/cpc/ddi1.h",
22042202      MAME_DIR .. "src/devices/bus/cpc/magicsound.c",
22052203      MAME_DIR .. "src/devices/bus/cpc/magicsound.h",
2206      MAME_DIR .. "src/devices/bus/cpc/doubler.c",
2207      MAME_DIR .. "src/devices/bus/cpc/doubler.h",
22082204   }
22092205end
22102206
trunk/scripts/target/mame/arcade.lua
r249889r249890
35463546   MAME_DIR .. "src/mame/drivers/stellafr.c",
35473547   MAME_DIR .. "src/mame/drivers/stuntair.c",
35483548   MAME_DIR .. "src/mame/drivers/su2000.c",
3549   MAME_DIR .. "src/mame/drivers/subhuntr.c",
35503549   MAME_DIR .. "src/mame/drivers/summit.c",
35513550   MAME_DIR .. "src/mame/drivers/sumt8035.c",
35523551   MAME_DIR .. "src/mame/drivers/supercrd.c",
trunk/scripts/target/mame/mess.lua
r249889r249890
849849      "trs",
850850      "ultimachine",
851851      "ultratec",
852      "unisonic",
853852      "unisys",
854853      "veb",
855854      "vidbrain",
r249889r249890
12301229createMESSProjects(_target, _subtarget, "camputers")
12311230files {
12321231   MAME_DIR .. "src/mame/drivers/camplynx.c",
1233   MAME_DIR .. "src/lib/formats/camplynx_dsk.c",
12341232}
12351233
12361234createMESSProjects(_target, _subtarget, "canon")
r249889r249890
24822480   MAME_DIR .. "src/mame/drivers/minicom.c",
24832481}
24842482
2485createMESSProjects(_target, _subtarget, "unisonic")
2486files {
2487   MAME_DIR .. "src/mame/drivers/unichamp.c",
2488   MAME_DIR .. "src/mame/video/gic.c",
2489   MAME_DIR .. "src/mame/video/gic.c",
2490}
2491
2492
24932483createMESSProjects(_target, _subtarget, "unisys")
24942484files {
24952485   MAME_DIR .. "src/mame/drivers/univac.c",
r249889r249890
27322722   MAME_DIR .. "src/mame/drivers/softbox.c",
27332723   MAME_DIR .. "src/mame/drivers/squale.c",
27342724   MAME_DIR .. "src/mame/drivers/swtpc.c",
2735   MAME_DIR .. "src/mame/drivers/swyft.c",
27362725   MAME_DIR .. "src/mame/drivers/sys2900.c",
27372726   MAME_DIR .. "src/mame/drivers/systec.c",
27382727   MAME_DIR .. "src/mame/drivers/tavernie.c",
trunk/src/devices/bus/cpc/brunword4.c
r249889r249890
9898   m_slot->rom_select(space,0,data & 0x3f);  // repeats every 64 ROMs, this breaks upper cart ROM selection on the Plus
9999}
100100
101void cpc_brunword4_device::set_mapping(UINT8 type)
101void cpc_brunword4_device::set_mapping()
102102{
103   if(type != MAP_OTHER)
104      return;
105103   if(m_rombank_active)
106104   {
107105      UINT8* ROM = memregion("mk4_roms")->base();
trunk/src/devices/bus/cpc/brunword4.h
r249889r249890
2020   virtual const rom_entry *device_rom_region() const;
2121
2222   DECLARE_WRITE8_MEMBER(rombank_w);
23   virtual void set_mapping(UINT8 type);
23   virtual void set_mapping();
2424
2525protected:
2626   // device-level overrides
trunk/src/devices/bus/cpc/cpcexp.h
r249889r249890
5656
5757#define CPC_EXP_SLOT_TAG        "cpcexp"
5858
59enum
60{
61   MAP_LOWER = 0,  // special lower ROM handling
62   MAP_UPPER,      // special upper ROM handling
63   MAP_OTHER       // custom ROM handling (eg: Brunword MK4)
64};
6559
60
6661//**************************************************************************
6762//  INTERFACE CONFIGURATION MACROS
6863//**************************************************************************
r249889r249890
10398
10499   void set_rom_bank(UINT8 sel) { m_rom_sel = sel; }  // tell device the currently selected ROM
105100   UINT8 get_rom_bank() { return m_rom_sel; }
106   virtual void set_mapping(UINT8 type) { };
101   virtual void set_mapping() { };
107102
108103private:
109104   UINT8 m_rom_sel;  // currently selected ROM
r249889r249890
133128   DECLARE_WRITE8_MEMBER( rom_select );
134129
135130   void set_rom_bank(UINT8 sel) { if(m_card) m_card->set_rom_bank(sel); }  // tell device the currently selected ROM
136   void set_mapping(UINT8 type) { if(m_card) m_card->set_mapping(type); }  // tell device to enable any ROM or RAM mapping
131   void set_mapping() { if(m_card) m_card->set_mapping(); }  // tell device to enable any ROM or RAM mapping
137132   DECLARE_WRITE_LINE_MEMBER( cursor_w ) { if(m_card) m_card->cursor_w(state); }  // pass on CRTC Cursor signal
138133   DECLARE_WRITE_LINE_MEMBER( romen_w ) { if(m_card) m_card->romen_w(state); }  // pass on /ROMEN signal
139134
trunk/src/devices/bus/cpc/ddi1.c
r249889r249890
149149   m_slot->rom_select(space,0,data);
150150}
151151
152void cpc_ddi1_device::set_mapping(UINT8 type)
152void cpc_ddi1_device::set_mapping()
153153{
154   if(type != MAP_UPPER)
155      return;
156154   if(m_rom_active)
157155   {
158156      UINT8* ROM = memregion("disc_rom")->base();
trunk/src/devices/bus/cpc/ddi1.h
r249889r249890
2525   // optional information overrides
2626   virtual const rom_entry *device_rom_region() const;
2727   virtual machine_config_constructor device_mconfig_additions() const;
28   virtual void set_mapping(UINT8 type);
29   virtual WRITE_LINE_MEMBER( romen_w ) { m_romen = state; }
28   virtual void set_mapping();
3029
3130   DECLARE_WRITE8_MEMBER(motor_w);
3231   DECLARE_WRITE8_MEMBER(fdc_w);
r249889r249890
4443   required_device<floppy_connector> m_connector;
4544   
4645   bool m_rom_active;
47   bool m_romen;
4846};
4947
5048// device type definition
trunk/src/devices/bus/cpc/doubler.c
r249889r249890
1// license:BSD-3-Clause
2// copyright-holders:Barry Rodewald
3/*
4 * doubler.c  --  Draysoft Doubler - external cassette interface for the 464 (works on 664/6128 with external cassette?),
5 *                intended for use in duplicating cassette software
6 *
7 */
8 
9 #include "doubler.h"
10 #include "includes/amstrad.h"
11
12 //**************************************************************************
13//  DEVICE DEFINITIONS
14//**************************************************************************
15
16const device_type CPC_DOUBLER = &device_creator<cpc_doubler_device>;
17
18
19static MACHINE_CONFIG_FRAGMENT( cpc_doubler )
20   MCFG_CASSETTE_ADD( "doubler_tape" )
21   MCFG_CASSETTE_FORMATS(cdt_cassette_formats)
22   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED)
23   MCFG_CASSETTE_INTERFACE("cpc_cass")
24
25   // no pass-through seen on remake PCBs, unknown if actual hardware had a pass-through port or not
26MACHINE_CONFIG_END
27
28
29machine_config_constructor cpc_doubler_device::device_mconfig_additions() const
30{
31   return MACHINE_CONFIG_NAME( cpc_doubler );
32}
33
34
35//**************************************************************************
36//  LIVE DEVICE
37//**************************************************************************
38
39cpc_doubler_device::cpc_doubler_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
40   device_t(mconfig, CPC_DOUBLER, "Draysoft Doubler", tag, owner, clock, "cpc_doubler", __FILE__),
41   device_cpc_expansion_card_interface(mconfig, *this),
42   m_tape(*this,"doubler_tape")
43{
44}
45
46//-------------------------------------------------
47//  device_start - device-specific startup
48//-------------------------------------------------
49
50void cpc_doubler_device::device_start()
51{
52   device_t* cpu = machine().device("maincpu");
53   address_space& space = cpu->memory().space(AS_IO);
54   m_slot = dynamic_cast<cpc_expansion_slot_device *>(owner());
55
56   space.install_read_handler(0xf0e0,0xf0e0,0,0,read8_delegate(FUNC(cpc_doubler_device::ext_tape_r),this));
57}
58
59//-------------------------------------------------
60//  device_reset - device-specific reset
61//-------------------------------------------------
62
63void cpc_doubler_device::device_reset()
64{
65   // TODO
66}
67
68READ8_MEMBER(cpc_doubler_device::ext_tape_r)
69{
70   UINT8 data = 0;
71   if(m_tape->input() > 0.03)
72      data |= 0x20;
73   return data;
74}
75
trunk/src/devices/bus/cpc/doubler.h
r249889r249890
1// license:BSD-3-Clause
2// copyright-holders:Barry Rodewald
3/*
4 * doubler.c  --  Draysoft Doubler - external cassette interface for the 464 (works on 664/6128 with external cassette?),
5 *                intended for use in duplicating cassette software
6 *
7 * Uses only port F0E0 (may conflict with other peripherals, PPI port A is not usable while Doubler software is running)
8 *
9 */
10 
11#ifndef DOUBLER_H_
12#define DOUBLER_H_
13
14#include "emu.h"
15#include "cpcexp.h"
16#include "imagedev/cassette.h"
17#include "formats/tzx_cas.h"
18
19class cpc_doubler_device  : public device_t,
20                  public device_cpc_expansion_card_interface
21{
22public:
23   // construction/destruction
24   cpc_doubler_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
25
26   // optional information overrides
27   virtual machine_config_constructor device_mconfig_additions() const;
28
29   DECLARE_READ8_MEMBER(ext_tape_r);
30   
31protected:
32   // device-level overrides
33   virtual void device_start();
34   virtual void device_reset();
35
36private:
37   cpc_expansion_slot_device *m_slot;
38   
39   required_device<cassette_image_device> m_tape;
40};
41
42// device type definition
43extern const device_type CPC_DOUBLER;
44 
45#endif /* DOUBLER_H_ */
trunk/src/devices/bus/econet/e01.c
r249889r249890
44
55    Acorn FileStore E01/E01S network hard disk emulation
66
7    http://chrisacorns.computinghistory.org.uk/Network/Econet.html
8    http://chrisacorns.computinghistory.org.uk/Network/Pics/Acorn_FileStoreE01.html
9    http://chrisacorns.computinghistory.org.uk/8bit_Upgrades/Acorn_FileStoreE01S.html
7    http://acorn.chriswhy.co.uk/Network/Econet.html
8    http://acorn.chriswhy.co.uk/Network/Pics/Acorn_FileStoreE01.html
9    http://acorn.chriswhy.co.uk/8bit_Upgrades/Acorn_FileStoreE01S.html
1010    http://www.heyrick.co.uk/econet/fs/emulator.html
1111    http://www.pdfio.com/k-1019481.html#
1212
trunk/src/devices/bus/isa/omti8621.c
r249889r249890
215215   MCFG_PC_FDC_INTRQ_CALLBACK(WRITELINE(omti8621_device, fdc_irq_w))
216216   MCFG_PC_FDC_DRQ_CALLBACK(WRITELINE(omti8621_device, fdc_drq_w))
217217   MCFG_FLOPPY_DRIVE_ADD(OMTI_FDC_TAG":0", pc_hd_floppies, "525hd", omti8621_device::floppy_formats)
218// Apollo workstations never have more then 1 floppy drive
219//   MCFG_FLOPPY_DRIVE_ADD(OMTI_FDC_TAG":1", pc_hd_floppies, "525hd", omti8621_device::floppy_formats)
218   MCFG_FLOPPY_DRIVE_ADD(OMTI_FDC_TAG":1", pc_hd_floppies, "525hd", omti8621_device::floppy_formats)
220219MACHINE_CONFIG_END
221220
222221FLOPPY_FORMATS_MEMBER( omti8621_device::floppy_formats )
r249889r249890
232231   ROM_REGION(0x4000, OMTI_CPU_REGION, 0)  // disassembles fine as Z8 code
233232   ROM_LOAD( "omti_8621_102640-b.bin", 0x000000, 0x004000, CRC(e6f20dbb) SHA1(cf1990ad72eac6b296485410f5fa3309a0d6d078) )
234233
235#if 1
236   // OMTI 8621 boards for Apollo workstations never use a BIOS ROM
237   // They don't even have a socket for the BIOS ROM
238234   ROM_REGION(0x1000, OMTI_BIOS_REGION, 0)
239   ROM_LOAD_OPTIONAL("omti_bios", 0x0000, 0x1000, NO_DUMP)
240#endif
235   ROM_LOAD("omti_bios", 0x0000, 0x1000, NO_DUMP)
241236ROM_END
242237
243238static INPUT_PORTS_START( omti_port )
r249889r249890
285280
286281void omti8621_device::device_start()
287282{
288   LOG2(("device_start"));
289
290283   set_isa_device();
291284
292285   m_installed = false;
r249889r249890
307300{
308301   static const int io_bases[8] = { 0x320, 0x324, 0x328, 0x32c, 0x1a0, 0x1a4, 0x1a8, 0x1ac };
309302
310   LOG2(("device_reset"));
303   LOG2(("device_reset_omti8621"));
311304
312305   // you can't read I/O ports in device_start() even if they're required_ioport<> in your class!
313306   if (!m_installed)
r249889r249890
12081201 get_sector - get sector diskaddr of logical unit lun into data_buffer
12091202 ***************************************************************************/
12101203
1211// FIXME: this will work, but is not supported by MESS
1212#if 0 // APOLLO_XXL
12131204UINT32 omti8621_device::get_sector(INT32 diskaddr, UINT8 *data_buffer, UINT32 length, UINT8 lun)
12141205{
1215   omti_disk_image_device *disk = omti8621_device_1->our_disks[lun];
1206   omti_disk_image_device *disk = our_disks[lun];
12161207
1217   if (disk == NULL || disk->m_image == NULL || !disk->m_image->exists())
1208   if (disk->m_image == NULL || !disk->m_image->exists())
12181209   {
12191210      return 0;
12201211   }
r249889r249890
12311222      return length;
12321223   }
12331224}
1234#endif
12351225
1226
12361227/***************************************************************************
12371228 omti_set_jumper - set OMI jumpers
12381229 ***************************************************************************/
trunk/src/devices/bus/isa/omti8621.h
r249889r249890
4242   static void set_verbose(int on_off);
4343
4444   // get sector diskaddr of logical unit lun into data_buffer
45   static UINT32 get_sector(INT32 diskaddr, UINT8 *data_buffer, UINT32 length, UINT8 lun);
45   UINT32 get_sector(INT32 diskaddr, UINT8 *data_buffer, UINT32 length, UINT8 lun);
4646
4747   required_device<pc_fdc_interface> m_fdc;
4848   required_ioport m_iobase;
trunk/src/devices/bus/vcs/dpcplus.c
r249889r249890
1// license:BSD-3-Clause
2// copyright-holders:
3/***************************************************************************
4
5Atari 2600 cart with DPC+
6
7the DPC+ adds an ARM CPU amongst other things
8
9***************************************************************************/
10
11
12#include "emu.h"
13#include "dpcplus.h"
14
15
16
17
18
19// cart device
20
21const device_type A26_ROM_DPCPLUS = &device_creator<a26_rom_dpcplus_device>;
22
23
24a26_rom_dpcplus_device::a26_rom_dpcplus_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
25                  : a26_rom_f8_device(mconfig, A26_ROM_DPCPLUS, "Atari 2600 ROM Cart DPC+", tag, owner, clock, "a2600_dpcplus", __FILE__)
26{
27}
28
29//-------------------------------------------------
30//  mapper specific start/reset
31//-------------------------------------------------
32
33void a26_rom_dpcplus_device::device_start()
34{
35   save_item(NAME(m_base_bank));
36}
37
38void a26_rom_dpcplus_device::device_reset()
39{
40   m_base_bank = 0;
41}
42
43static ADDRESS_MAP_START( dpcplus_arm7_map, AS_PROGRAM, 32, a26_rom_dpcplus_device )
44   AM_RANGE(0x00000000, 0x00003fff) AM_RAM
45ADDRESS_MAP_END
46
47
48static MACHINE_CONFIG_FRAGMENT( a26_dpcplus )
49   MCFG_CPU_ADD("arm", ARM7, 20000000)    // ? type ? speed
50   MCFG_CPU_PROGRAM_MAP(dpcplus_arm7_map)
51MACHINE_CONFIG_END
52
53machine_config_constructor a26_rom_dpcplus_device::device_mconfig_additions() const
54{
55   return MACHINE_CONFIG_NAME( a26_dpcplus );
56}
57
58
59READ8_MEMBER(a26_rom_dpcplus_device::read_rom)
60{
61   return a26_rom_f8_device::read_rom(space, offset);
62}
63
64WRITE8_MEMBER(a26_rom_dpcplus_device::write_bank)
65{
66   a26_rom_f8_device::write_bank(space, offset, data);
67}
trunk/src/devices/bus/vcs/dpcplus.h
r249889r249890
1// license:BSD-3-Clause
2// copyright-holders:
3#ifndef __VCS_DPCPLUS_H
4#define __VCS_DPCPLUS_H
5
6#include "rom.h"
7#include "cpu/arm7/arm7.h"
8
9
10// ======================> a26_rom_dpcplus_device
11
12class a26_rom_dpcplus_device : public a26_rom_f8_device
13{
14public:
15   // construction/destruction
16   a26_rom_dpcplus_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
17
18   // device-level overrides
19   virtual void device_start();
20   virtual machine_config_constructor device_mconfig_additions() const;
21   virtual void device_reset();
22
23   // reading and writing
24   virtual DECLARE_READ8_MEMBER(read_rom);
25   virtual DECLARE_WRITE8_MEMBER(write_bank);
26
27
28protected:
29};
30
31
32// device type definition
33extern const device_type A26_ROM_DPCPLUS;
34
35#endif
trunk/src/devices/bus/vcs/rom.c
r249889r249890
4141const device_type A26_ROM_4IN1 = &device_creator<a26_rom_4in1_device>;
4242const device_type A26_ROM_8IN1 = &device_creator<a26_rom_8in1_device>;
4343const device_type A26_ROM_32IN1 = &device_creator<a26_rom_32in1_device>;
44const device_type A26_ROM_X07 = &device_creator<a26_rom_x07_device>;
4544
4645
4746a26_rom_2k_device::a26_rom_2k_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)
r249889r249890
180179{
181180}
182181
183a26_rom_x07_device::a26_rom_x07_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
184               : a26_rom_f6_device(mconfig, A26_ROM_X07, "Atari VCS 2600 ROM Carts w/X07 bankswitch", tag, owner, clock, "vcs_x07", __FILE__)
185{
186}
187182
188
189183void a26_rom_2k_device::device_start()
190184{
191185}
r249889r249890
10541048{
10551049   return m_rom[(offset & 0x7ff) + (m_base_bank * 0x800)];
10561050}
1057
1058
1059/*-------------------------------------------------
1060 "X07 Bankswitch" Carts:
1061 banking done with a PALC22V10B
1062 implementation based on information at
1063 http://blog.kevtris.org/blogfiles/Atari%202600%20Mappers.txt
1064 --------------------------------------------------*/
1065
1066READ8_MEMBER(a26_rom_x07_device::read_rom)
1067{
1068   return m_rom[offset + (m_base_bank * 0x1000)];
1069}
1070
1071WRITE8_MEMBER(a26_rom_x07_device::write_bank)
1072{
1073   /*
1074   A13           A0
1075   ----------------
1076   0 1xxx nnnn 1101
1077   */
1078
1079   if ((offset & 0x180f) == 0x080d)
1080   {
1081      m_base_bank = (offset & 0x00f0) >> 4;
1082   }
1083   /*
1084   A13           A0
1085   ----------------
1086   0 0xxx 0nxx xxxx
1087   */
1088
1089   if ((offset & 0x1880) == 0x0000)
1090   {
1091      // only has an effect if bank is already 14 or 15
1092      if (m_base_bank == 14 || m_base_bank == 15)
1093      {
1094         if (offset & 0x0040)
1095         {
1096            m_base_bank = 15;
1097         }
1098         else
1099         {
1100            m_base_bank = 14;
1101         }
1102
1103      }
1104   }
1105}
trunk/src/devices/bus/vcs/rom.h
r249889r249890
365365};
366366
367367
368// ======================> a26_rom_x07_device
369
370class a26_rom_x07_device : public a26_rom_f6_device
371{
372public:
373   // construction/destruction
374   a26_rom_x07_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
375
376   // reading and writing
377   virtual DECLARE_READ8_MEMBER(read_rom);
378   virtual DECLARE_WRITE8_MEMBER(write_bank);
379};
380
381
382
383368// device type definition
384369extern const device_type A26_ROM_2K;
385370extern const device_type A26_ROM_4K;
r249889r249890
401386extern const device_type A26_ROM_4IN1;
402387extern const device_type A26_ROM_8IN1;
403388extern const device_type A26_ROM_32IN1;
404extern const device_type A26_ROM_X07;
405389
406390
407391#endif
trunk/src/devices/bus/vcs/vcs_slot.c
r249889r249890
156156   { A26_4IN1, "a26_4in1" },
157157   { A26_8IN1, "a26_8in1" },
158158   { A26_32IN1, "a26_32in1" },
159   { A26_X07, "a26_x07" },
160   { A26_DPCPLUS, "a26_dpcplus" },
161159};
162160
163161static int vcs_get_pcb_id(const char *slot)
trunk/src/devices/bus/vcs/vcs_slot.h
r249889r249890
3434   A26_4IN1,
3535   A26_DPC,
3636   A26_SS,
37   A26_CM,
38   A26_X07,
39   A26_DPCPLUS,
37   A26_CM
4038};
4139
4240
trunk/src/devices/cpu/i86/i86.c
r249889r249890
11471147         CLK(POP_R16);
11481148         break;
11491149
1150// 8086 'invalid opcodes', as documented at http://www.os2museum.com/wp/?p=2147 and tested on real hardware
1151// - 0x60 - 0x6f are aliases to 0x70 - 0x7f.
1152// - 0xc0, 0xc1, 0xc8, 0xc9 are also aliases where the CPU ignores BIT 1 (*).
1153// - 0xf1 is an alias to 0xf0.
1150// 8086 'invalid opcodes', as documented at http://www.os2museum.com/wp/?p=2147
1151// - 0x60 - 0x6f are an alias to 0x70 - 0x7f.
1152// - 0xc0,  0xc1, 0xc8, 0xc9 are also aliases where the CPU ignores BIT 1 (*).
11541153//
11551154//      Instructions are used in the boot sector for some versions of
11561155//      MS-DOS  (e.g. the DEC Rainbow-100 version of DOS 2.x)
r249889r249890
16931692         }
16941693         break;
16951694
1696      case 0xc1: // 0xc1 is 0xc3 - see (*)
1695      case 0xc1: // 0xc1 is 0xc3 - see (*)
16971696      case 0xc3: // i_ret
16981697         m_ip = POP();
16991698         CLK(RET_NEAR);
r249889r249890
17251724         CLKM(MOV_RI16,MOV_MI16);
17261725         break;
17271726
1728      case 0xc8: // 0xc8 = 0xca - see (*)
1727      case 0xc8: // 0xc8 = 0xca - see (*)
17291728      case 0xca: // i_retf_d16
17301729         {
17311730            UINT32 count = fetch_word();
r249889r249890
17361735         }
17371736         break;
17381737
1739      case 0xc9: // 0xc9 = 0xcb  - see (*)
1738      case 0xc9: // 0xc9 = 0xcb  - see (*)
17401739      case 0xcb: // i_retf
17411740         m_ip = POP();
17421741         m_sregs[CS] = POP();
r249889r249890
20182017
20192018
20202019      case 0xf0: // i_lock
2021      case 0xf1: // 0xf1 is 0xf0; verified on real CPU
20222020         logerror("%s: %06x: Warning - BUSLOCK\n", tag(), pc());
20232021         m_lock = true;
20242022         m_no_interrupt = 1;
trunk/src/devices/imagedev/floppy.c
r249889r249890
415415   if (!cur_load_cb.isnull())
416416      return cur_load_cb(this);
417417
418        if (motor_always_on) {
419                // When disk is inserted, start motor
420                mon_w(0);
421        } else if(!mon)
418   if(!mon)
422419      ready_counter = 2;
423420
424421   return IMAGE_INIT_PASS;
r249889r249890
445442
446443   if (!cur_unload_cb.isnull())
447444      cur_unload_cb(this);
448
449        if (motor_always_on) {
450                // When disk is removed, stop motor
451                mon_w(1);
452        } else if(!ready) {
445   if(!ready) {
453446      ready = true;
454447      if(!cur_ready_cb.isnull())
455448         cur_ready_cb(this, ready);
r249889r249890
497490   if (!mon && image)
498491   {
499492      revolution_start_time = machine().time();
500                if (motor_always_on) {
501                    // Drives with motor that is always spinning are immediately ready when a disk is loaded
502                    // because there is no spin-up time
503                    ready = false;
504                    if(!cur_ready_cb.isnull())
505                        cur_ready_cb(this, ready);
506                } else {
507                    ready_counter = 2;
508                }
493      ready_counter = 2;
509494      index_resync();
510495   }
511496
trunk/src/devices/machine/mc146818.c
r249889r249890
4040      m_epoch(0),
4141      m_use_utc(false),
4242      m_binary(false),
43      m_hour(false),
44      m_binyear(false)
43      m_hour(false)
4544{
4645}
4746
r249889r249890
5554      m_epoch(0),
5655      m_use_utc(false),
5756      m_binary(false),
58      m_hour(false),
59      m_binyear(false)
57      m_hour(false)
6058{
6159}
6260
r249889r249890
208206   }
209207
210208   if(m_binary)
211      m_data[REG_B] |= REG_B_DM;
209      m_data[0x0b] |= REG_B_DM;
212210   if(m_hour)
213      m_data[REG_B] |= REG_B_24_12;
211      m_data[0x0b] |= REG_B_24_12;
214212
215213   set_base_datetime();
216214   update_timer();
r249889r249890
404402   set_dayofweek(current_time.weekday + 1);
405403   set_dayofmonth(current_time.mday);
406404   set_month(current_time.month + 1);
405   set_year((current_time.year - m_epoch) % (m_data[0x0b] & REG_B_DM ? 0x100 : 100));
407406
408   if(m_binyear)
409      set_year((current_time.year - m_epoch) % (m_data[REG_B] & REG_B_DM ? 0x100 : 100)); // pcd actually depends on this
410   else
411      set_year((current_time.year - m_epoch) % 100);
412
413407   if (m_century_index >= 0)
414408      m_data[m_century_index] = to_ram(current_time.year / 100);
415409}
trunk/src/devices/machine/mc146818.h
r249889r249890
4343#define MCFG_MC146818_EPOCH(_epoch) \
4444   downcast<mc146818_device *>(device)->set_epoch(_epoch);
4545
46#define MCFG_MC146818_BINARY_YEAR(_bin) \
47   downcast<mc146818_device *>(device)->set_binary_year(_bin);
48
4946//**************************************************************************
5047//  TYPE DEFINITIONS
5148//**************************************************************************
r249889r249890
6764   void set_binary(bool binary) { m_binary = binary; }
6865   void set_hour(bool hour) { m_hour = hour; }
6966   void set_epoch(int epoch) { m_epoch = epoch; }
70   void set_binary_year(int bin) { m_binyear = bin; }
7167
7268   // read/write access
7369   DECLARE_READ8_MEMBER( read );
r249889r249890
182178
183179   devcb_write_line m_write_irq;
184180   int m_century_index, m_epoch;
185   bool m_use_utc, m_binary, m_hour, m_binyear;
181   bool m_use_utc, m_binary, m_hour;
186182};
187183
188184
trunk/src/devices/machine/mos6530n.c
r249889r249890
7070   AM_RANGE(0x04, 0x07) AM_MIRROR(0x8) AM_WRITE(edge_w)
7171ADDRESS_MAP_END
7272
73READ8_MEMBER(mos6532_t::io_r)
74{
75   offset &= 0x1f;
76   UINT8 ret = 0;
7773
78   if (offset == 0x00 || offset == 0x08 || offset == 0x10 || offset == 0x18) ret = pa_data_r(space, 0);
79   if (offset == 0x01 || offset == 0x09 || offset == 0x11 || offset == 0x19) ret = pa_ddr_r(space, 0);
80   if (offset == 0x02 || offset == 0x0a || offset == 0x12 || offset == 0x1a) ret = pb_data_r(space, 0);
81   if (offset == 0x03 || offset == 0x0b || offset == 0x13 || offset == 0x1b) ret = pb_ddr_r(space, 0);
8274
83   if (offset == 0x04 || offset == 0x06 || offset == 0x14 || offset == 0x16) ret = timer_off_r(space, 0);
84   if (offset == 0x0c || offset == 0x0e || offset == 0x1c || offset == 0x1e) ret = timer_on_r(space, 0);
85
86   if (offset == 0x05 || offset == 0x07 || offset == 0x0d || offset == 0x0f) ret = irq_r(space, 0);
87   if (offset == 0x15 || offset == 0x17 || offset == 0x1d || offset == 0x1f) ret = irq_r(space, 0);
88
89   return ret;
90}
91
92WRITE8_MEMBER(mos6532_t::io_w)
93{
94   offset &= 0x1f;
95
96   if (offset == 0x00 || offset == 0x08 || offset == 0x10 || offset == 0x18) pa_data_w(space, 0, data);
97   if (offset == 0x01 || offset == 0x09 || offset == 0x11 || offset == 0x19) pa_ddr_w(space, 0, data);
98   if (offset == 0x02 || offset == 0x0a || offset == 0x12 || offset == 0x1a) pb_data_w(space, 0, data);
99   if (offset == 0x03 || offset == 0x0b || offset == 0x13 || offset == 0x1b) pb_ddr_w(space, 0, data);
100   if (offset == 0x14 || offset == 0x15 || offset == 0x16 || offset == 0x17) timer_off_w(space, offset&3, data);
101   if (offset == 0x1c || offset == 0x1d || offset == 0x1e || offset == 0x1f) timer_on_w(space, offset&3, data);
102
103   if (offset == 0x04 || offset == 0x05 || offset == 0x06 || offset == 0x07) edge_w(space, offset&3, data);
104   if (offset == 0x0c || offset == 0x0d || offset == 0xea || offset == 0x0f) edge_w(space, offset&3, data);
105}
106
107
10875//**************************************************************************
10976//  LIVE DEVICE
11077//**************************************************************************
trunk/src/devices/machine/mos6530n.h
r249889r249890
400400   virtual DECLARE_ADDRESS_MAP(ram_map, 8);
401401   virtual DECLARE_ADDRESS_MAP(io_map, 8);
402402
403   // is there a better way to access the memory map when not using AM_DEVICE?
404   DECLARE_READ8_MEMBER(io_r);
405   DECLARE_WRITE8_MEMBER(io_w);
406
407403protected:
408404   // device-level overrides
409405   virtual void device_start();
trunk/src/devices/sound/tms5220.c
r249889r249890
161161    x100aaaa: LOAD ADDRESS (LA) Send a load address command (M0 low M1 high) to VSM with the 4 'a' bits; Note you need to send four or five of these in sequence to actually specify an address to the vsm.
162162    TALK STATUS must be CLEAR for this command to work; otherwise it is treated as a NOP.
163163
164    x101xxxx: SPEAK (SPK) Begins speaking, pulling speech data from the current address pointer location of the VSM modules.
164    x101xxxx: SPEAK (SPK) Begins speaking, pulling spech data from the current address pointer location of the VSM modules.
165165
166166    x110xxxx: SPEAK EXTERNAL (SPKEXT) Clears the FIFO using SPKEE line, then sets TALKD (TALKST remains zero) until 8 bytes have been written to the FIFO, at which point it begins speaking, pulling data from the 16 byte fifo.
167167    The patent implies TALK STATUS must be CLEAR for this command to work; otherwise it is treated as a NOP, but the decap shows that this is not true, and is an error on the patent diagram.
r249889r249890
575575      if (!m_buffer_empty)
576576         set_interrupt_state(1);
577577      m_buffer_empty = 1;
578      if (m_DDIS)
579         m_TALK = m_SPEN = 0; // /BE being active clears the TALK status via TCON, which in turn clears SPEN, but ONLY if m_DDIS is set! See patent page 16, gate 232b
578      m_TALK = m_SPEN = 0; // /BE being active clears the TALK status via TCON, which in turn clears SPEN
580579   }
581580   else
582581      m_buffer_empty = 0;
r249889r249890
11821181               m_data_register = m_speechrom->read(8);    /* read one byte from speech ROM... */
11831182            m_RDB_flag = TRUE;
11841183         }
1185      break;
1184         break;
11861185
11871186      case 0x00: case 0x20: /* set rate (tms5220c and cd2501ecd only), otherwise NOP */
11881187         if (TMS5220_HAS_RATE_CONTROL)
r249889r249890
16021601            /* bring up to date first */
16031602            m_stream->update();
16041603            m_read_latch = status_read();
1605#ifdef DEBUG_IO_READY
1606            fprintf(stderr,"Serviced read, returning %02x\n", m_read_latch);
1607#endif
16081604            break;
16091605         case 0x03:
16101606            /* High Impedance */
trunk/src/devices/video/mc6845.c
r249889r249890
536536         if ( m_screen != NULL )
537537            m_screen->configure(horiz_pix_total, vert_pix_total, visarea, refresh);
538538
539         if(!m_reconfigure_cb.isnull())
540            m_reconfigure_cb(horiz_pix_total, vert_pix_total, visarea, refresh);
541
542539         m_has_valid_parameters = true;
543540      }
544541      else
r249889r249890
552549      m_hsync_off_pos = hsync_off_pos;
553550      m_vsync_on_pos = vsync_on_pos;
554551      m_vsync_off_pos = vsync_off_pos;
555      m_line_counter = 0;
556552   }
557553}
558554
r249889r249890
671667      if ( m_line_counter == m_vert_disp )
672668      {
673669         m_line_enable_ff = false;
674         m_current_disp_addr = m_disp_start_addr;
675670      }
676671
677672      /* Check if VSYNC should be enabled */
r249889r249890
10101005   m_out_vsync_cb.resolve_safe();
10111006
10121007   /* bind delegates */
1013   m_reconfigure_cb.bind_relative_to(*owner());
10141008   m_begin_update_cb.bind_relative_to(*owner());
10151009   m_update_row_cb.bind_relative_to(*owner());
10161010   m_end_update_cb.bind_relative_to(*owner());
trunk/src/devices/video/mc6845.h
r249889r249890
3939#define MCFG_MC6845_CHAR_WIDTH(_pixels) \
4040   mc6845_device::set_char_width(*device, _pixels);
4141
42#define MCFG_MC6845_RECONFIGURE_CB(_class, _method) \
43   mc6845_device::set_reconfigure_callback(*device, mc6845_reconfigure_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
44
4542#define MCFG_MC6845_BEGIN_UPDATE_CB(_class, _method) \
4643   mc6845_device::set_begin_update_callback(*device, mc6845_begin_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
4744
r249889r249890
6865
6966
7067/* callback definitions */
71typedef device_delegate<void (int width, int height, const rectangle &visarea, attoseconds_t frame_period)> mc6845_reconfigure_delegate;
72#define MC6845_RECONFIGURE(name)  void name(int width, int height, const rectangle &visarea, attoseconds_t frame_period)
73
7468typedef device_delegate<void (bitmap_rgb32 &bitmap, const rectangle &cliprect)> mc6845_begin_update_delegate;
7569#define MC6845_BEGIN_UPDATE(name)  void name(bitmap_rgb32 &bitmap, const rectangle &cliprect)
7670
r249889r249890
116110   }
117111   static void set_char_width(device_t &device, int pixels) { downcast<mc6845_device &>(device).m_hpixels_per_column = pixels; }
118112
119   static void set_reconfigure_callback(device_t &device, mc6845_reconfigure_delegate callback) { downcast<mc6845_device &>(device).m_reconfigure_cb = callback; }
120113   static void set_begin_update_callback(device_t &device, mc6845_begin_update_delegate callback) { downcast<mc6845_device &>(device).m_begin_update_cb = callback; }
121114   static void set_update_row_callback(device_t &device, mc6845_update_row_delegate callback) { downcast<mc6845_device &>(device).m_update_row_cb = callback; }
122115   static void set_end_update_callback(device_t &device, mc6845_end_update_delegate callback) { downcast<mc6845_device &>(device).m_end_update_cb = callback; }
r249889r249890
293286
294287   int m_hpixels_per_column;       /* number of pixels per video memory address */
295288
296   mc6845_reconfigure_delegate m_reconfigure_cb;
297
298289   /* if specified, this gets called before any pixel update,
299290    optionally return a pointer that will be passed to the
300291    update and tear down callbacks */
trunk/src/devices/video/psx.c
r249889r249890
724724         n_line = n_lines;
725725         while( n_line > 0 )
726726         {
727            UINT16 *p_n_src = p_p_vram[ n_y + n_displaystarty ] + 3 * n_x + n_displaystartx;
727            UINT16 *p_n_src = p_p_vram[ n_y + n_displaystarty ] + ((n_x + n_displaystartx) * 3);
728728            UINT16 *p_n_dest = &bitmap.pix16(n_y + n_top, n_x + n_left);
729729
730730            n_column = n_columns;
trunk/src/devices/video/saa5050.c
r249889r249890
11// license:BSD-3-Clause
2// copyright-holders:Curt Coder, Nigel Barnes
2// copyright-holders:Curt Coder
33/**********************************************************************
44
55    Mullard SAA5050 Teletext Character Generator emulation
r249889r249890
1212
1313    TODO:
1414
15    - character rounding
1516    - remote controller input
1617    - boxing
1718
r249889r249890
3940//-------------------------------------------------
4041
4142ROM_START( saa5050 )
42   ROM_REGION( 0x500, "chargen", 0 )
43   ROM_LOAD("saa5050", 0x0140, 0x03c0, BAD_DUMP CRC(6298fc0b) SHA1(ae38e7f51dd33733bacfa896425ca105682b31d6))
43   ROM_REGION( 0xa00, "chargen", 0 )
44   ROM_LOAD( "saa5050", 0x0140, 0x08c0, BAD_DUMP CRC(78c17e3e) SHA1(4e1c59dc484505de1dc0b1ba7e5f70a54b0d4ccc) )
4445ROM_END
4546
4647
r249889r249890
4950//-------------------------------------------------
5051
5152ROM_START( saa5051 )
52   ROM_REGION( 0x500, "chargen", 0 )
53   ROM_LOAD("saa5051", 0x0140, 0x03c0, BAD_DUMP CRC(a770611c) SHA1(9ab9d24b845fe2964fba2f4770d54025d2c8026a))
53   ROM_REGION( 0xa00, "chargen", 0 )
54   ROM_LOAD( "saa5051", 0x0140, 0x08c0, NO_DUMP )
5455ROM_END
5556
5657
r249889r249890
5960//-------------------------------------------------
6061
6162ROM_START( saa5052 )
62   ROM_REGION( 0x500, "chargen", 0 )
63   ROM_LOAD("saa5052", 0x0140, 0x03c0, BAD_DUMP CRC(2eb76737) SHA1(ec4bc515e28e851a6433f7ca0a11ede0f1d21a68))
63   ROM_REGION( 0xa00, "chargen", 0 )
64   ROM_LOAD( "saa5052", 0x0140, 0x08c0, BAD_DUMP CRC(cda3bf79) SHA1(cf5ea94459c09001d422dadc212bc970b4b4aa20) )
6465ROM_END
6566
6667
r249889r249890
6970//-------------------------------------------------
7071
7172ROM_START( saa5053 )
72   ROM_REGION( 0x500, "chargen", 0 )
73   ROM_LOAD("saa5053", 0x0140, 0x03c0, BAD_DUMP CRC(46288c33) SHA1(1e471a1b5670d7163e9f62d31be7cab0330a07cd))
73   ROM_REGION( 0xa00, "chargen", 0 )
74   ROM_LOAD( "saa5053", 0x0140, 0x08c0, NO_DUMP )
7475ROM_END
7576
7677
r249889r249890
7980//-------------------------------------------------
8081
8182ROM_START( saa5054 )
82   ROM_REGION( 0x500, "chargen", 0 )
83   ROM_LOAD("saa5054", 0x0140, 0x03c0, BAD_DUMP CRC(56298472) SHA1(7a273ad7270507dca4ce621fc1e6b51a1ac25085))
83   ROM_REGION( 0xa00, "chargen", 0 )
84   ROM_LOAD( "saa5054", 0x0140, 0x08c0, NO_DUMP )
8485ROM_END
8586
8687
r249889r249890
8990//-------------------------------------------------
9091
9192ROM_START( saa5055 )
92   ROM_REGION( 0x500, "chargen", 0 )
93   ROM_LOAD("saa5055", 0x0140, 0x03c0, BAD_DUMP CRC(f95b9c8c) SHA1(c5ce7fe84df6de6a317fa0e87bda413c82c04618))
93   ROM_REGION( 0xa00, "chargen", 0 )
94   ROM_LOAD( "saa5055", 0x0140, 0x08c0, NO_DUMP )
9495ROM_END
9596
9697
r249889r249890
99100//-------------------------------------------------
100101
101102ROM_START( saa5056 )
102   ROM_REGION( 0x500, "chargen", 0 )
103   ROM_LOAD("saa5056", 0x0140, 0x03c0, BAD_DUMP CRC(86ab8b85) SHA1(2d1ff08b4dda15cf70832881750a962189455f41))
103   ROM_REGION( 0xa00, "chargen", 0 )
104   ROM_LOAD( "saa5056", 0x0140, 0x08c0, NO_DUMP )
104105ROM_END
105106
106107
r249889r249890
109110//-------------------------------------------------
110111
111112ROM_START( saa5057 )
112   ROM_REGION( 0x500, "chargen", 0 )
113   ROM_LOAD("saa5057", 0x0140, 0x08c0, BAD_DUMP CRC(d6664fb3) SHA1(5a93445dde03066073e2909a935900e5f8439d81))
113   ROM_REGION( 0xa00, "chargen", 0 )
114   ROM_LOAD( "saa5057", 0x0140, 0x08c0, NO_DUMP )
114115ROM_END
115116
116117
r249889r249890
159160}
160161
161162
162#define ALPHANUMERIC    0x01
163#define CONTIGUOUS      0x02
164#define SEPARATED       0x03
165163
166
167164//**************************************************************************
168165//  LIVE DEVICE
169166//**************************************************************************
r249889r249890
228225
229226   // register for state saving
230227   save_item(NAME(m_code));
231   save_item(NAME(m_held_char));
228   save_item(NAME(m_last_code));
232229   save_item(NAME(m_char_data));
233230   save_item(NAME(m_bit));
234231   save_item(NAME(m_color));
235232   save_item(NAME(m_ra));
236233   save_item(NAME(m_bg));
237234   save_item(NAME(m_fg));
238   save_item(NAME(m_prev_col));
239235   save_item(NAME(m_graphics));
240236   save_item(NAME(m_separated));
237   save_item(NAME(m_conceal));
241238   save_item(NAME(m_flash));
242239   save_item(NAME(m_boxed));
243240   save_item(NAME(m_double_height));
244   save_item(NAME(m_double_height_old));
241   save_item(NAME(m_double_height_top_row));
245242   save_item(NAME(m_double_height_bottom_row));
246   save_item(NAME(m_double_height_prev_row));
247   save_item(NAME(m_hold_char));
248   save_item(NAME(m_hold_clear));
249   save_item(NAME(m_hold_off));
243   save_item(NAME(m_hold));
250244   save_item(NAME(m_frame_count));
251245}
252246
r249889r249890
258252void saa5050_device::device_reset()
259253{
260254   m_ra = 0;
261   m_double_height = false;
255   m_double_height_top_row = false;
262256   m_double_height_bottom_row = false;
263257}
264258
r249889r249890
269263
270264void saa5050_device::process_control_character(UINT8 data)
271265{
272   m_hold_clear = false;
273   m_hold_off = false;
274
275266   switch (data)
276267   {
277      case ALPHA_RED:
278      case ALPHA_GREEN:
279      case ALPHA_YELLOW:
280      case ALPHA_BLUE:
281      case ALPHA_MAGENTA:
282      case ALPHA_CYAN:
283      case ALPHA_WHITE:
284         m_graphics = false;
285         m_hold_clear = true;
286         m_fg = data & 0x07;
287         set_next_chartype();
288         break;
268   case ALPHA_RED:
269   case ALPHA_GREEN:
270   case ALPHA_YELLOW:
271   case ALPHA_BLUE:
272   case ALPHA_MAGENTA:
273   case ALPHA_CYAN:
274   case ALPHA_WHITE:
275      m_graphics = false;
276      m_conceal = false;
277      m_fg = data & 0x07;
278      break;
289279
290      case FLASH:
291         m_flash = true;
292         break;
280   case FLASH:
281      m_flash = true;
282      break;
293283
294      case STEADY:
295         m_flash = false;
296         break;
284   case STEADY:
285      m_flash = false;
286      break;
297287
298      case END_BOX:
299      case START_BOX:
300         // TODO
301         break;
288   case END_BOX:
289   case START_BOX:
290      // TODO
291      break;
302292
303      case NORMAL_HEIGHT:
304      case DOUBLE_HEIGHT:
305         m_double_height = !!(data & 1);
306         if (m_double_height) m_double_height_prev_row = true;
307         break;
293   case NORMAL_HEIGHT:
294      m_double_height = 0;
295      break;
308296
309      case GRAPHICS_RED:
310      case GRAPHICS_GREEN:
311      case GRAPHICS_YELLOW:
312      case GRAPHICS_BLUE:
313      case GRAPHICS_MAGENTA:
314      case GRAPHICS_CYAN:
315      case GRAPHICS_WHITE:
316         m_graphics = true;
317         m_fg = data & 0x07;
318         set_next_chartype();
319         break;
297   case DOUBLE_HEIGHT:
298      if (!m_double_height_bottom_row)
299      {
300         m_double_height_top_row = true;
301      }
320302
321      case CONCEAL_DISPLAY:
322         m_fg = m_prev_col = m_bg;
323         break;
303      m_double_height = 1;
304      break;
324305
325      case CONTIGUOUS_GFX:
326         m_separated = false;
327         set_next_chartype();
328         break;
306   case GRAPHICS_RED:
307   case GRAPHICS_GREEN:
308   case GRAPHICS_YELLOW:
309   case GRAPHICS_BLUE:
310   case GRAPHICS_MAGENTA:
311   case GRAPHICS_CYAN:
312   case GRAPHICS_WHITE:
313      m_graphics = true;
314      m_conceal = false;
315      m_fg = data & 0x07;
316      break;
329317
330      case SEPARATED_GFX:
331         m_separated = true;
332         set_next_chartype();
333         break;
318   case CONCEAL_DISPLAY:
319      m_conceal = true;
320      break;
334321
335      case BLACK_BACKGROUND:
336         m_bg = 0;
337         break;
322   case CONTIGUOUS_GFX:
323      m_separated = false;
324      break;
338325
339      case NEW_BACKGROUND:
340         m_bg = m_fg;
341         break;
326   case SEPARATED_GFX:
327      m_separated = true;
328      break;
342329
343      case HOLD_GRAPHICS:
344         m_hold_char = true;
345         break;
330   case BLACK_BACKGROUND:
331      m_bg = 0;
332      break;
346333
347      case RELEASE_GRAPHICS:
348         m_hold_off = true;
349         break;
350   }
351}
334   case NEW_BACKGROUND:
335      m_bg = m_fg;
336      break;
352337
338   case HOLD_GRAPHICS:
339      m_hold = true;
340      break;
353341
354void saa5050_device::set_next_chartype()
355{
356   if (m_graphics)
357   {
358      if (m_separated)
359         m_next_chartype = SEPARATED;
360      else
361         m_next_chartype = CONTIGUOUS;
362   }
363   else
364   {
365      m_next_chartype = ALPHANUMERIC;
366   }
367};
368
369
370//-------------------------------------------------
371//  get_gfx_data - graphics generator
372//-------------------------------------------------
373
374UINT16 saa5050_device::get_gfx_data(UINT8 data, offs_t row, bool separated)
375{
376   UINT16 c = 0;
377   switch (row >> 1)
378   {
379   case 0: case 1:
380      c += (data & 0x01) ? 0xfc0 : 0; // bit 1 top left
381      c += (data & 0x02) ? 0x03f : 0; // bit 2 top right
382      if (separated) c &= 0x3cf;
342   case RELEASE_GRAPHICS:
343      m_hold = false;
383344      break;
384   case 2:
385      if (separated) break;
386      c += (data & 0x01) ? 0xfc0 : 0; // bit 1 top left
387      c += (data & 0x02) ? 0x03f : 0; // bit 2 top right
388      break;
389   case 3: case 4: case 5:
390      c += (data & 0x04) ? 0xfc0 : 0; // bit 3 middle left
391      c += (data & 0x08) ? 0x03f : 0; // bit 4 middle right
392      if (separated) c &= 0x3cf;
393      break;
394   case 6:
395      if (separated) break;
396      c += (data & 0x04) ? 0xfc0 : 0; // bit 3 middle left
397      c += (data & 0x08) ? 0x03f : 0; // bit 4 middle right
398      break;
399   case 7: case 8:
400      c += (data & 0x10) ? 0xfc0 : 0; // bit 5 bottom left
401      c += (data & 0x40) ? 0x03f : 0; // bit 7 bottom right
402      if (separated) c &= 0x3cf;
403      break;
404   case 9:
405      if (separated) break;
406      c += (data & 0x10) ? 0xfc0 : 0; // bit 5 bottom left
407      c += (data & 0x40) ? 0x03f : 0; // bit 7 bottom right
408      break;
409345   }
410   return c;
411346}
412347
413348
414349//-------------------------------------------------
415//  get_rom_data - read rom
416//-------------------------------------------------
417
418UINT16 saa5050_device::get_rom_data(UINT8 data, offs_t row)
419{
420   UINT16 c;
421   if (row < 0 || row >= 20)
422   {
423      c = 0;
424   }
425   else
426   {
427      c = m_char_rom[(data * 10) + (row >> 1)];
428      c = ((c & 0x01) * 0x03) + ((c & 0x02) * 0x06) + ((c & 0x04) * 0x0c) + ((c & 0x08) * 0x18) + ((c & 0x10) * 0x30);
429   }
430   return c;
431}
432
433
434//-------------------------------------------------
435//  character_rounding
436//-------------------------------------------------
437
438UINT16 saa5050_device::character_rounding(UINT16 a, UINT16 b)
439{
440   return a | ((a >> 1) & b & ~(b >> 1)) | ((a << 1) & b & ~(b << 1));
441}
442
443
444//-------------------------------------------------
445350//  get_character_data -
446351//-------------------------------------------------
447352
448353void saa5050_device::get_character_data(UINT8 data)
449354{
450   m_double_height_old = m_double_height;
451   m_prev_col = m_fg;
452   m_curr_chartype = m_next_chartype;
453
454   if (data < 0x20)
355   if (m_graphics && (data & 0x20))
455356   {
456      process_control_character(data);
457      if (m_hold_char && m_double_height == m_double_height_old)
458      {
459         data = m_held_char;
460         if (data >= 0x40 && data < 0x60) data = 0x20;
461         m_curr_chartype = m_held_chartype;
462      }
463      else
464      {
465         data = 0x20;
466      }
357      data += (data & 0x40) ? 64 : 96;
358      if (m_separated) data += 64;
467359   }
468   else if (m_graphics)
469   {
470      m_held_char = data;
471      m_held_chartype = m_curr_chartype;
472   }
473360
474   offs_t ra = m_ra;
475   if (m_double_height_old)
476   {
477      ra >>= 1;
478      if (m_double_height_bottom_row) ra += 10;
479   }
480
361   if ((data < 0x20) && m_hold) data = m_last_code;
362   if (m_conceal) data = 0x20;
481363   if (m_flash && (m_frame_count > 38)) data = 0x20;
482364   if (m_double_height_bottom_row && !m_double_height) data = 0x20;
365   m_last_code = data;
483366
484   if (m_hold_off)
485   {
486      m_hold_char = false;
487      m_held_char = 32;
488   }
489   if (m_hold_clear)
490   {
491      m_held_char = 32;
492   }
367   offs_t ra = m_ra >> 1;
368   if (m_double_height) ra >>= 1;
369   if (m_double_height && m_double_height_bottom_row) ra += 5;
493370
494   if (m_curr_chartype == ALPHANUMERIC || !BIT(data,5))
495      m_char_data = character_rounding(get_rom_data(data, ra), get_rom_data(data, ra + ((ra & 1) ? 1 : -1)));
496   else
497      m_char_data = get_gfx_data(data, ra, (m_curr_chartype == SEPARATED));
371   m_char_data = m_char_rom[(data * 10) + ra];
498372}
499373
500374
501375//-------------------------------------------------
502//  crs_w - character rounding select
503//-------------------------------------------------
504
505WRITE_LINE_MEMBER( saa5050_device::crs_w )
506{
507   m_crs = !(state & 1);
508}
509
510
511//-------------------------------------------------
512376//  dew_w - data entry window
513377//-------------------------------------------------
514378
r249889r249890
517381   if (state)
518382   {
519383      m_ra = 19;
384      m_double_height_top_row = false;
520385
521386      m_frame_count++;
522387      if (m_frame_count > 50) m_frame_count = 0;
r249889r249890
535400      m_ra++;
536401      m_ra %= 20;
537402
538      if (m_ra == 19)
539      {
540         if (m_double_height_bottom_row)
541            m_double_height_bottom_row = false;
542         else
543            m_double_height_bottom_row = m_double_height_prev_row;
544      }
545
546403      m_fg = 7;
547404      m_bg = 0;
548405      m_graphics = false;
549406      m_separated = false;
407      m_conceal = false;
550408      m_flash = false;
551409      m_boxed = false;
552      m_hold_char = false;
553      m_held_char = 0x20;
554      m_next_chartype = ALPHANUMERIC;
555      m_held_chartype = ALPHANUMERIC;
556      m_double_height = false;
557      m_double_height_prev_row = false;
558      m_bit = 11;
410      m_hold = false;
411      m_double_height = 0;
412      m_bit = 5;
413      m_last_code = 0x20;
414
415      if (!m_ra)
416      {
417         m_double_height_bottom_row = m_double_height_top_row;
418         m_double_height_top_row = false;
419      }
559420   }
560421}
561422
r249889r249890
578439{
579440   if (state)
580441   {
442      process_control_character(m_code);
581443      get_character_data(m_code);
582444   }
583445}
r249889r249890
591453{
592454   if (state)
593455   {
594      m_color = BIT(m_char_data, m_bit) ? m_prev_col : m_bg;
456      m_color = BIT(m_char_data, m_bit) ? m_fg : m_bg;
595457
596458      m_bit--;
597      if (m_bit < 0) m_bit = 11;
459      if (m_bit < 0) m_bit = 5;
598460   }
599461}
600462
r249889r249890
638500         f1_w(1);
639501         f1_w(0);
640502
641         for (int bit = 0; bit < 12; bit++)
503         for (int bit = 0; bit < 6; bit++)
642504         {
643505            tr6_w(1);
644506            tr6_w(0);
r249889r249890
654516            rgb_t rgb = rgb_t(r, g, b);
655517
656518            bitmap.pix32(y, x++) = rgb;
519            bitmap.pix32(y, x++) = rgb;
657520         }
658521      }
659522   }
trunk/src/devices/video/saa5050.h
r249889r249890
6565   // optional information overrides
6666   virtual const rom_entry *device_rom_region() const;
6767
68   DECLARE_WRITE_LINE_MEMBER( crs_w );
6968   DECLARE_WRITE_LINE_MEMBER( dew_w );
7069   DECLARE_WRITE_LINE_MEMBER( lose_w );
7170   void write(UINT8 data);
r249889r249890
121120   };
122121
123122   void process_control_character(UINT8 data);
124   void set_next_chartype();
125   UINT16 get_gfx_data(UINT8 data, offs_t row, bool separated);
126   UINT16 get_rom_data(UINT8 data, offs_t row);
127   UINT16 character_rounding(UINT16 a, UINT16 b);
128123   void get_character_data(UINT8 data);
129124
130125   required_region_ptr<UINT8> m_char_rom;
r249889r249890
132127   devcb_read8    m_read_d;
133128
134129   UINT8 m_code;
135   UINT8 m_held_char;
136   UINT8 m_next_chartype;
137   UINT8 m_curr_chartype;
138   UINT8 m_held_chartype;
139   UINT16 m_char_data;
130   UINT8 m_last_code;
131   UINT8 m_char_data;
140132   int m_bit;
141133   rgb_t m_color;
142   int m_crs;
143134   int m_ra;
144135   int m_bg;
145136   int m_fg;
146   int m_prev_col;
147137   bool m_graphics;
148138   bool m_separated;
139   bool m_conceal;
149140   bool m_flash;
150141   bool m_boxed;
151   bool m_double_height;
152   bool m_double_height_old;
142   int m_double_height;
143   bool m_double_height_top_row;
153144   bool m_double_height_bottom_row;
154   bool m_double_height_prev_row;
155   bool m_hold_char;
156   bool m_hold_clear;
157   bool m_hold_off;
145   bool m_hold;
158146   int m_frame_count;
159147
160148   int m_cols;
r249889r249890
260248extern const device_type SAA5052; // Swedish/Finnish
261249extern const device_type SAA5053; // Italian
262250extern const device_type SAA5054; // Belgian
263extern const device_type SAA5055; // US ASCII
251extern const device_type SAA5055; // U.S. ASCII
264252extern const device_type SAA5056; // Hebrew
265253extern const device_type SAA5057; // Cyrillic
266254
trunk/src/emu/drivers/xtal.h
r249889r249890
223223   XTAL_64MHz          = 64000000,     /* BattleToads */
224224   XTAL_66_6667MHz     = 66666700,     /* Later Midway games */
225225   XTAL_67_7376MHz     = 67737600,     /* PSX-based h/w, Sony ZN1-2-based */
226   XTAL_72MHz          = 72000000,     /* Aristocrat MKV */
227226   XTAL_72_576MHz      = 72576000,     /* Centipede, Millipede, Missile Command, Let's Go Bowling "Multipede" */
228227   XTAL_73_728MHz      = 73728000,     /* Ms. Pac-Man/Galaga 20th Anniversary */
229228   XTAL_100MHz         = 100000000,    /* PSX-based Namco System 12, Vegas, Sony ZN1-2-based */
trunk/src/emu/machine.c
r249889r249890
256256   m_memory.initialize();
257257
258258   // initialize the watchdog
259   m_watchdog_counter = 0;
260259   m_watchdog_timer = m_scheduler.timer_alloc(timer_expired_delegate(FUNC(running_machine::watchdog_fired), this));
261260   if (config().m_watchdog_vblank_count != 0 && primary_screen != NULL)
262261      primary_screen->register_vblank_callback(vblank_state_delegate(FUNC(running_machine::watchdog_vblank), this));
trunk/src/emu/machine.h
r249889r249890
226226   // watchdog control
227227   void watchdog_reset();
228228   void watchdog_enable(bool enable = true);
229   INT32 get_vblank_watchdog_counter() { return m_watchdog_counter; }
230229
231230   // misc
232231   void CLIB_DECL vlogerror(const char *format, va_list args);
trunk/src/emu/screen.c
r249889r249890
6363      m_curtexture(0),
6464      m_changed(true),
6565      m_last_partial_scan(0),
66      m_partial_scan_hpos(0),
6766      m_color(rgb_t(0xff, 0xff, 0xff, 0xff)),
6867      m_brightness(0xff),
6968      m_frame_period(DEFAULT_FRAME_PERIOD.as_attoseconds()),
r249889r249890
662661
663662void screen_device::update_now()
664663{
665   // these two checks only apply if we're allowed to skip frames
666   if (!(m_video_attributes & VIDEO_ALWAYS_UPDATE))
667   {
668      // if skipping this frame, bail
669      if (machine().video().skip_this_frame())
670      {
671         LOG_PARTIAL_UPDATES(("skipped due to frameskipping\n"));
672         return;
673      }
674
675      // skip if this screen is not visible anywhere
676      if (!machine().render().is_live(*this))
677      {
678         LOG_PARTIAL_UPDATES(("skipped because screen not live\n"));
679         return;
680      }
681   }
682
683664   int current_vpos = vpos();
684665   int current_hpos = hpos();
685   rectangle clip = m_visarea;
686666
687   LOG_PARTIAL_UPDATES(("update_now(): Y=%d, X=%d, last partial %d, partial hpos %d  (vis %d %d)\n", current_vpos, current_hpos, m_last_partial_scan, m_partial_scan_hpos, m_visarea.max_x, m_visarea.max_y));
667   // since we can currently update only at the scanline
668   // level, we are trying to do the right thing by
669   // updating including the current scanline, only if the
670   // beam is past the halfway point horizontally.
671   // If the beam is in the first half of the scanline,
672   // we only update up to the previous scanline.
673   // This minimizes the number of pixels that might be drawn
674   // incorrectly until we support a pixel level granularity
675   if (current_hpos < (m_width / 2) && current_vpos > 0)
676      current_vpos = current_vpos - 1;
688677
689   // start off by doing a partial update up to the line before us, in case that was necessary
690   if (current_vpos > m_last_partial_scan)
691   {
692      // if the line before us was incomplete, we must do it in two pieces
693      if (m_partial_scan_hpos > 0)
694      {
695         INT32 save_scan = m_partial_scan_hpos;
696         update_partial(current_vpos - 2);
697         m_partial_scan_hpos = save_scan;
698
699         // now finish the previous partial scanline
700         int scanline = current_vpos - 1;
701         if (m_partial_scan_hpos > clip.min_x)
702            clip.min_x = m_partial_scan_hpos;
703         if (current_hpos < clip.max_x)
704            clip.max_x = current_hpos;
705         if (m_last_partial_scan > clip.min_y)
706            clip.min_y = m_last_partial_scan;
707         if (scanline < clip.max_y)
708            clip.max_y = scanline;
709
710         // if there's something to draw, do it
711         if ((clip.min_x <= clip.max_x) && (clip.min_y <= clip.max_y))
712         {
713            g_profiler.start(PROFILER_VIDEO);
714
715            screen_bitmap &curbitmap = m_bitmap[m_curbitmap];
716            switch (curbitmap.format())
717            {
718               default:
719               case BITMAP_FORMAT_IND16: m_screen_update_ind16(*this, curbitmap.as_ind16(), clip);   break;
720               case BITMAP_FORMAT_RGB32: m_screen_update_rgb32(*this, curbitmap.as_rgb32(), clip);   break;
721            }
722
723            m_partial_updates_this_frame++;
724            g_profiler.stop();
725            m_partial_scan_hpos = 0;
726            m_last_partial_scan = current_vpos + 1;
727         }
728      }
729      else
730      {
731         update_partial(current_vpos - 1);
732      }
733   }
734
735   // now draw this partial scanline
736   clip = m_visarea;
737
738   if (m_partial_scan_hpos > clip.min_x)
739      clip.min_x = m_partial_scan_hpos;
740   if (current_hpos < clip.max_x)
741      clip.max_x = current_hpos;
742   if (current_vpos > clip.min_y)
743      clip.min_y = current_vpos;
744   if (current_vpos < clip.max_y)
745      clip.max_y = current_vpos;
746
747   // and if there's something to draw, do it
748   if ((clip.min_x <= clip.max_x) && (clip.min_y <= clip.max_y))
749   {
750      g_profiler.start(PROFILER_VIDEO);
751
752      LOG_PARTIAL_UPDATES(("doing scanline partial draw: Y %d X %d-%d\n", clip.max_y, clip.min_x, clip.max_x));
753
754      UINT32 flags = UPDATE_HAS_NOT_CHANGED;
755      screen_bitmap &curbitmap = m_bitmap[m_curbitmap];
756      switch (curbitmap.format())
757      {
758         default:
759         case BITMAP_FORMAT_IND16:   flags = m_screen_update_ind16(*this, curbitmap.as_ind16(), clip);   break;
760         case BITMAP_FORMAT_RGB32:   flags = m_screen_update_rgb32(*this, curbitmap.as_rgb32(), clip);   break;
761      }
762
763      m_partial_updates_this_frame++;
764      g_profiler.stop();
765
766      // if we modified the bitmap, we have to commit
767      m_changed |= ~flags & UPDATE_HAS_NOT_CHANGED;
768
769      // remember where we left off
770      m_partial_scan_hpos = current_hpos;
771      m_last_partial_scan = current_vpos;
772
773      // if we completed the line, mark it so
774      if (current_hpos >= m_visarea.max_x)
775      {
776         m_partial_scan_hpos = 0;
777         m_last_partial_scan = current_vpos + 1;
778      }
779   }
678   update_partial(current_vpos);
780679}
781680
782681
r249889r249890
788687void screen_device::reset_partial_updates()
789688{
790689   m_last_partial_scan = 0;
791   m_partial_scan_hpos = 0;
792690   m_partial_updates_this_frame = 0;
793691   m_scanline0_timer->adjust(time_until_pos(0));
794692}
trunk/src/emu/screen.h
r249889r249890
285285   UINT8               m_curtexture;               // current texture index
286286   bool                m_changed;                  // has this bitmap changed?
287287   INT32               m_last_partial_scan;        // scanline of last partial update
288   INT32            m_partial_scan_hpos;      // horizontal pixel last rendered on this partial scanline
289288   bitmap_argb32       m_screen_overlay_bitmap;    // screen overlay bitmap
290289   UINT32              m_unique_id;                // unique id for this screen_device
291290   rgb_t               m_color;                    // render color
trunk/src/emu/ui/ui.c
r249889r249890
23402340{
23412341   vector_device *vector = NULL;
23422342   if (newval != SLIDER_NOCHANGE)
2343      vector->set_flicker((float)newval * 0.1f);
2343      vector->set_flicker((float)newval * 0.001f);
23442344   if (str != NULL)
23452345      strprintf(*str,"%1.2f", (double) vector->get_flicker());
2346   return floor(vector->get_flicker() * 10.0f + 0.5f);
2346   return floor(vector->get_flicker() * 1000.0f + 0.5f);
23472347}
23482348
23492349
trunk/src/emu/video/vector.c
r249889r249890
140140{
141141}
142142
143float vector_device::m_flicker_correction = 0.0f;
143float vector_device::m_flicker = 0.0f;
144144float vector_device::m_beam_width = 0.0f;
145int vector_device::m_flicker;
146145int vector_device::m_vector_index;
147146
148147void vector_device::device_start()
r249889r249890
160159
161160void vector_device::set_flicker(float _flicker)
162161{
163   m_flicker_correction = _flicker;
164   m_flicker = (int)(m_flicker_correction * 2.55f);
162   m_flicker = _flicker;
165163}
166164
167165float vector_device::get_flicker()
168166{
169   return m_flicker_correction;
167   return m_flicker;
170168}
171169
172170void vector_device::set_beam(float _beam)
r249889r249890
184182 * Adds a line end point to the vertices list. The vector processor emulation
185183 * needs to call this.
186184 */
187void vector_device::add_point (int x, int y, rgb_t color, int intensity)
185void vector_device::add_point(int x, int y, rgb_t color, int intensity)
188186{
189187   point *newpoint;
190188
191   if (intensity > 0xff)
192      intensity = 0xff;
189   if (intensity > 255)
190   {
191      intensity = 255;
192   }
193193
194194   if (m_flicker && (intensity > 0))
195195   {
196      intensity += (intensity * (0x80-(machine().rand()&0xff)) * m_flicker)>>16;
196      float random = (float)(machine().rand() & 255) / 255.0f; // random value between 0.0 and 1.0
197     
198      intensity -= (int)(intensity * random * m_flicker);
197199      if (intensity < 0)
200      {
198201         intensity = 0;
199      if (intensity > 0xff)
200         intensity = 0xff;
202      }     
203      if (intensity > 255)
204      {
205         intensity = 255;
206      }
201207   }
208
202209   newpoint = &m_vector_list[m_vector_index];
203210   newpoint->x = x;
204211   newpoint->y = y;
r249889r249890
214221   }
215222}
216223
224
217225/*
218226 * Add new clipping info to the list
219227 */
220void vector_device::add_clip (int x1, int yy1, int x2, int y2)
228void vector_device::add_clip(int x1, int yy1, int x2, int y2)
221229{
222230   point *newpoint;
223231
r249889r249890
241249 * The vector CPU creates a new display list. We save the old display list,
242250 * but only once per refresh.
243251 */
244void vector_device::clear_list (void)
252void vector_device::clear_list(void)
245253{
246254   m_vector_index = 0;
247255}
r249889r249890
286294      }
287295      else
288296      {
297         // todo: implement beam_width_overdrive based on intensity
298
299         float beam_width = m_beam_width * (1.0f / (float)VECTOR_WIDTH_DENOM);
300
289301         coords.x0 = ((float)lastx - xoffs) * xscale;
290302         coords.y0 = ((float)lasty - yoffs) * yscale;
291303         coords.x1 = ((float)curpoint->x - xoffs) * xscale;
292304         coords.y1 = ((float)curpoint->y - yoffs) * yscale;
293305
294         if (curpoint->intensity != 0)
295            if (!render_clip_line(&coords, &clip))
296               screen.container().add_line(coords.x0, coords.y0, coords.x1, coords.y1,
297                     m_beam_width * (1.0f / (float)VECTOR_WIDTH_DENOM),
298                     (curpoint->intensity << 24) | (curpoint->col & 0xffffff),
299                     flags);
306         // todo: extend line length by half beam_width on both sides
300307
308         if (curpoint->intensity != 0 && !render_clip_line(&coords, &clip))
309         {
310            screen.container().add_line(
311               coords.x0, coords.y0, coords.x1, coords.y1,
312               beam_width,
313               (curpoint->intensity << 24) | (curpoint->col & 0xffffff),
314               flags);
315         }
316
301317         lastx = curpoint->x;
302318         lasty = curpoint->y;
303319      }
320
304321      curpoint++;
305322   }
323
306324   return 0;
307325}
trunk/src/emu/video/vector.h
r249889r249890
5656   virtual void device_start();
5757
5858private:
59   static int m_flicker;                              /* beam flicker value     */
60   static float m_flicker_correction;
59   static float m_flicker;
6160   static float m_beam_width;
6261   point *m_vector_list;
6362   static int m_vector_index;
trunk/src/lib/formats/apollo_dsk.c
r249889r249890
4545};
4646
4747const floppy_format_type FLOPPY_APOLLO_FORMAT = &floppy_image_format_creator<apollo_format>;
48
49int apollo_format::identify(io_generic *io, UINT32 form_factor)
50{
51   UINT64 size = io_generic_size(io);
52   UINT32 expected_size = 77*2*8*1024;
53
54   return ((size == expected_size) || (size == 0)) ? 1 : 0;
55}
56
trunk/src/lib/formats/apollo_dsk.h
r249889r249890
1717public:
1818   apollo_format();
1919
20   virtual int identify(io_generic *io, UINT32 form_factor);
2120   virtual const char *name() const;
2221   virtual const char *description() const;
2322   virtual const char *extensions() const;
trunk/src/lib/formats/bbc_dsk.c
r249889r249890
99***************************************************************************/
1010
1111#include "bbc_dsk.h"
12#include "basicdsk.h"
1213
13bbc_dfs_format::bbc_dfs_format() : wd177x_format(formats)
14LEGACY_FLOPPY_OPTIONS_START(bbc)
15   LEGACY_FLOPPY_OPTION( ssd40, "bbc,img,ssd", "BBC 40t SSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
16      HEADS([1])
17      TRACKS([40])
18      SECTORS([10])
19      SECTOR_LENGTH([256])
20      FIRST_SECTOR_ID([0]))
21   LEGACY_FLOPPY_OPTION( ssd80, "bbc,img,ssd", "BBC 80t SSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
22      HEADS([1])
23      TRACKS([80])
24      SECTORS([10])
25      SECTOR_LENGTH([256])
26      FIRST_SECTOR_ID([0]))
27   LEGACY_FLOPPY_OPTION( dsd40, "dsd", "BBC 40t DSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
28      HEADS([2])
29      TRACKS([40])
30      SECTORS([10])
31      SECTOR_LENGTH([256])
32      INTERLEAVE([0])
33      FIRST_SECTOR_ID([0]))
34   LEGACY_FLOPPY_OPTION( dsd80, "dsd", "BBC 80t DSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
35      HEADS([2])
36      TRACKS([80])
37      SECTORS([10])
38      SECTOR_LENGTH([256])
39      INTERLEAVE([0])
40      FIRST_SECTOR_ID([0]))
41LEGACY_FLOPPY_OPTIONS_END
42
43/********************************************************************/
44
45bbc_ssd_525_format::bbc_ssd_525_format() : wd177x_format(formats)
1446{
1547}
1648
17const char *bbc_dfs_format::name() const
49const char *bbc_ssd_525_format::name() const
1850{
19   return "dfs";
51   return "ssd";
2052}
2153
22const char *bbc_dfs_format::description() const
54const char *bbc_ssd_525_format::description() const
2355{
24   return "Acorn DFS disk image";
56   return "BBC Micro 5.25\" disk image";
2557}
2658
27const char *bbc_dfs_format::extensions() const
59const char *bbc_ssd_525_format::extensions() const
2860{
29   return "bbc,img,ssd,dsd";
61   return "bbc,img,ssd";
3062}
3163
32int bbc_dfs_format::find_size(io_generic *io, UINT32 form_factor)
64int bbc_ssd_525_format::find_size(io_generic *io, UINT32 form_factor)
3365{
34   UINT8 cat[8];
35   UINT32 sectors0, sectors2;
36
37   // read sector count from side 0 catalogue
38   io_generic_read(io, cat, 0x100, 8);
39   sectors0 = ((cat[6] & 3) << 8) + cat[7];
40
66   char cat[8];
67   io_generic_read(io, cat, 256, 8);
68   UINT64 sectors = ((cat[6] & 3) << 8) + cat[7]; // sector count from catalogue
4169   UINT64 size = io_generic_size(io);
4270   for(int i=0; formats[i].form_factor; i++) {
4371      const format &f = formats[i];
4472      if(form_factor != floppy_image::FF_UNKNOWN && form_factor != f.form_factor)
4573         continue;
4674
47      if ((size <= (UINT64)compute_track_size(f) * f.track_count * f.head_count) && (sectors0 == f.track_count * f.sector_count)) {
48         if (f.head_count == 2)
49         {
50            // read sector count from side 2 catalogue
51            if (f.sector_base_id == -1)
52               io_generic_read(io, cat, 0xb00, 8); // interleaved
53            else
54               io_generic_read(io, cat, compute_track_size(f) * f.track_count + 0x100, 8); // sequential
55            sectors2 = ((cat[6] & 3) << 8) + cat[7];
56         }
57         else
58         {
59            sectors2 = sectors0;
60         }
61
62         if (sectors0 == sectors2)
63            return i;
64      }
75      if((size <= (UINT64)compute_track_size(f) * f.track_count * f.head_count) && (sectors == f.track_count * f.sector_count))
76         return i;
6577   }
6678   return -1;
6779}
6880
69int bbc_dfs_format::identify(io_generic *io, UINT32 form_factor)
81const bbc_ssd_525_format::format bbc_ssd_525_format::formats[] =
7082{
71   int type = find_size(io, form_factor);
72
73   if(type != -1)
74      return 90;
75   return 0;
76}
77
78int bbc_dfs_format::get_image_offset(const format &f, int head, int track)
79{
80   if (f.sector_base_id == -1)
81      return (track * f.head_count + head) * compute_track_size(f);
82   else
83      return (f.track_count * head + track) * compute_track_size(f);
84}
85
86const bbc_dfs_format::format bbc_dfs_format::formats[] =
87{
8883   { // 100k 40 track single sided single density
8984      floppy_image::FF_525, floppy_image::SSSD, floppy_image::FM,
9085      4000, 10, 40, 1, 256, {}, 0, {}, 40, 10, 10
r249889r249890
9792      floppy_image::FF_525, floppy_image::DSSD, floppy_image::FM,
9893      4000, 10, 40, 2, 256, {}, 0, {}, 40, 10, 10
9994   },
100   { // 200k 40 track double sided single density (interleaved)
101      floppy_image::FF_525, floppy_image::DSSD, floppy_image::FM,
102      4000, 10, 40, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9 }, 40, 10, 10
103   },
10495   { // 400k 80 track double sided single density
10596      floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM,
10697      4000, 10, 80, 2, 256, {}, 0, {}, 40, 10, 10
10798   },
108   { // 400k 80 track double sided single density (interleaved)
109      floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM,
110      4000, 10, 80, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9 }, 40, 10, 10
111   },
11299   {}
113100};
114101
115102
116bbc_adfs_format::bbc_adfs_format() : wd177x_format(formats)
103bbc_dsd_525_format::bbc_dsd_525_format() : wd177x_format(formats)
117104{
118105}
119106
120const char *bbc_adfs_format::name() const
107const char *bbc_dsd_525_format::name() const
121108{
122   return "adfs";
109   return "dsd";
123110}
124111
125const char *bbc_adfs_format::description() const
112const char *bbc_dsd_525_format::description() const
126113{
127   return "Acorn ADFS disk image";
114   return "BBC Micro 5.25\" disk image";
128115}
129116
130const char *bbc_adfs_format::extensions() const
117const char *bbc_dsd_525_format::extensions() const
131118{
132   return "adf,ads,adm,adl";
119   return "dsd";
133120}
134121
135int bbc_adfs_format::find_size(io_generic *io, UINT32 form_factor)
122int bbc_dsd_525_format::find_size(io_generic *io, UINT32 form_factor)
136123{
137   UINT8 map[3];
138   UINT32 sectors;
139
140   // read sector count from free space map
141   io_generic_read(io, map, 0xfc, 3);
142   sectors = map[0] + (map[1] << 8) + (map[2] << 16);
143
124   char cat[8];
125   io_generic_read(io, cat, 256, 8);
126   UINT64 sectors = ((cat[6] & 3) << 8) + cat[7]; // sector count from catalogue
144127   UINT64 size = io_generic_size(io);
145128   for(int i=0; formats[i].form_factor; i++) {
146129      const format &f = formats[i];
147130      if(form_factor != floppy_image::FF_UNKNOWN && form_factor != f.form_factor)
148131         continue;
149132
150      // valid images will have sector counts adfs-s = 0x280; adfs-m = 0x500; adfs-l = 0xa00; though many adfs-s images are incorrect
151      if ((size == (UINT64)compute_track_size(f) * f.track_count * f.head_count) && (sectors == 0x280 || sectors == 0x500 || sectors == 0xa00)) {
133      if((size <= (UINT64)compute_track_size(f) * f.track_count * f.head_count) && (sectors == f.track_count * f.sector_count))
152134         return i;
153      }
154135   }
155136   return -1;
156137}
157138
158int bbc_adfs_format::identify(io_generic *io, UINT32 form_factor)
139const bbc_dsd_525_format::format bbc_dsd_525_format::formats[] =
159140{
160   int type = find_size(io, form_factor);
161
162   if(type != -1)
163      return 100;
164   return 0;
165}
166
167int bbc_adfs_format::get_image_offset(const format &f, int head, int track)
168{
169   if (f.sector_base_id == -1)
170      return (track * f.head_count + head) * compute_track_size(f);
171   else
172      return (f.track_count * head + track) * compute_track_size(f);
173}
174
175const bbc_adfs_format::format bbc_adfs_format::formats[] =
176{
177   { // 160K 5 1/4 inch 40 track single sided double density
178      floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
179      2000, 16, 40, 1, 256, {}, 0, {}, 60, 22, 43
141   { // 200k 40 track double sided single density
142      floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM,
143      4000, 10, 40, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9 }, 40, 10, 10
180144   },
181   { // 320K 5 1/4 inch 80 track single sided double density
182      floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
183      2000, 16, 80, 1, 256, {}, 0, {}, 60, 22, 43
145   { // 400k 80 track double sided single density
146      floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM,
147      4000, 10, 80, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9 }, 40, 10, 10
184148   },
185   { // 640K 5 1/4 inch 80 track double sided double density (interleaved)
186      floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
187      2000, 16, 80, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, 60, 22, 43
188   },
189   { // 160K 3 1/2 inch 40 track single sided double density
190      floppy_image::FF_35, floppy_image::SSDD, floppy_image::MFM,
191      2000, 16, 40, 1, 256, {}, 0, {}, 60, 22, 43
192   },
193   { // 320K 3 1/2 inch 80 track single sided double density
194      floppy_image::FF_35, floppy_image::SSQD, floppy_image::MFM,
195      2000, 16, 80, 1, 256, {}, 0, {}, 60, 22, 43
196   },
197   { // 640K 3 1/2 inch 80 track double sided double density (interleaved)
198      floppy_image::FF_35, floppy_image::DSQD, floppy_image::MFM,
199      2000, 16, 80, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, 60, 22, 43
200   },
201149   {}
202150};
203151
204152
205bbc_dos_format::bbc_dos_format() : wd177x_format(formats)
153bbc_adf_525_format::bbc_adf_525_format() : wd177x_format(formats)
206154{
207155}
208156
209const char *bbc_dos_format::name() const
157const char *bbc_adf_525_format::name() const
210158{
211   return "dos";
159   return "adf";
212160}
213161
214const char *bbc_dos_format::description() const
162const char *bbc_adf_525_format::description() const
215163{
216   return "Acorn DOS disk image";
164   return "BBC Micro 5.25\" ADFS disk image";
217165}
218166
219const char *bbc_dos_format::extensions() const
167const char *bbc_adf_525_format::extensions() const
220168{
221   return "img,adl";
169   return "adf,ads,adm,adl,img";
222170}
223171
224int bbc_dos_format::find_size(io_generic *io, UINT32 form_factor)
172const bbc_adf_525_format::format bbc_adf_525_format::formats[] =
225173{
226   UINT8 cat[3];
227   UINT32 sectors;
228
229   UINT64 size = io_generic_size(io);
230   for(int i=0; formats[i].form_factor; i++) {
231      const format &f = formats[i];
232      if(form_factor != floppy_image::FF_UNKNOWN && form_factor != f.form_factor)
233         continue;
234
235      if (size == (UINT64)compute_track_size(f) * f.track_count * f.head_count) {
236         switch (size)
237         {
238            case 640 * 1024: // 640K Acorn (Bootable) DOS Format
239               // read sector count from free space map - Acorn DOS = 0xaa0
240               io_generic_read(io, cat, 0xfc, 3);
241               sectors = cat[0] + (cat[1] << 8) + (cat[2] << 16);
242               if (sectors == 0xaa0) {
243                  // read media type ID from FAT - Acorn DOS = 0xff
244                  if (f.sector_base_id == -1)
245                     io_generic_read(io, cat, 0x2000, 1); // interleaved
246                  else
247                     io_generic_read(io, cat, 0x1000, 1); // sequential
248                  if (cat[0] == 0xff) return i;
249               }
250               break;
251            case 800 * 1024: // 800K Acorn DOS Format
252               // read media type ID from FAT - Acorn DOS = 0xfd
253               io_generic_read(io, cat, 0, 1);
254               if (cat[0] == 0xfd) return i;
255               break;
256         }
257      }
258   }
259   return -1;
260}
261
262int bbc_dos_format::identify(io_generic *io, UINT32 form_factor)
263{
264   int type = find_size(io, form_factor);
265
266   if(type != -1)
267      return 100;
268   return 0;
269}
270
271int bbc_dos_format::get_image_offset(const format &f, int head, int track)
272{
273   if (f.sector_base_id == -1)
274      return (track * f.head_count + head) * compute_track_size(f);
275   else
276      return (f.track_count * head + track) * compute_track_size(f);
277}
278
279const bbc_dos_format::format bbc_dos_format::formats[] =
280{
281   { // 640K 5 1/4 inch 80 track double sided double density - gaps unverified
282      floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
283      2000, 16, 80, 2, 256, {}, 0, {}, 60, 22, 43
174   { // 160K 40 track single sided double density
175      floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
176      2000, 16, 40, 1, 256, {}, 0, {}, 60, 22, 43
284177   },
285   { // 640K 5 1/4 inch 80 track double sided double density (interleaved) - gaps unverified
178   { // 320K 80 track single sided double density
179      floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
180      2000, 16, 80, 1, 256, {}, 0, {}, 60, 22, 43
181   },
182   { // 640K 80 track double sided double density
286183      floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
287184      2000, 16, 80, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, 60, 22, 43
288185   },
289   { // 800K 5 1/4 inch 80 track double sided double density - gaps unverified
290      floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
291      2000, 5, 80, 2, 1024, {}, 0, {}, 60, 22, 43
292   },
293186   {}
294187};
295188
296189
297bbc_cpm_format::bbc_cpm_format() : wd177x_format(formats)
190bbc_adf_35_format::bbc_adf_35_format() : wd177x_format(formats)
298191{
299192}
300193
301const char *bbc_cpm_format::name() const
194const char *bbc_adf_35_format::name() const
302195{
303   return "cpm";
196   return "adf";
304197}
305198
306const char *bbc_cpm_format::description() const
199const char *bbc_adf_35_format::description() const
307200{
308   return "Acorn CP/M disk image";
201   return "BBC Micro 3.5\" ADFS disk image";
309202}
310203
311const char *bbc_cpm_format::extensions() const
204const char *bbc_adf_35_format::extensions() const
312205{
313   return "img,ssd,dsd";
206   return "adf,ads,adm,adl,img";
314207}
315208
316int bbc_cpm_format::identify(io_generic *io, UINT32 form_factor)
317{
318   UINT8 h[8];
319
320   io_generic_read(io, h, 0, 8);
321
322   int type = find_size(io, form_factor);
323
324   if(type != -1 && (memcmp(h, "Acorn CP", 8) == 0 || memcmp(h, "Slogger ", 8) == 0)) {
325      return 100;
326   }
327   return 0;
328}
329
330int bbc_cpm_format::get_image_offset(const format &f, int head, int track)
331{
332   if (f.sector_base_id == -1)
333      return (track * f.head_count + head) * compute_track_size(f);
334   else
335      return (f.track_count * head + track) * compute_track_size(f);
336}
337
338const bbc_cpm_format::format bbc_cpm_format::formats[] =
339{
340   { // 400K 5 1/4 inch 80 track double sided single density - gaps unverified
341      floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM,
342      4000, 5, 80, 2, 512, {}, 0, {}, 40, 10, 10
209const bbc_adf_35_format::format bbc_adf_35_format::formats[] = {
210   { // 160K 3 1/2 inch 40 track single sided double density
211      floppy_image::FF_35, floppy_image::SSDD, floppy_image::MFM,
212      2000, 16, 40, 1, 256, {}, 0, {}, 60, 22, 43
343213   },
344   { // 400k 5 1/4 inch 80 track double sided single density (interleaved) - gaps unverified
345      floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM,
346      4000, 5, 80, 2, 512, {}, -1, { 0,1,2,3,4 }, 40, 10, 10
214   { // 320K 3 1/2 inch 80 track single sided double density
215      floppy_image::FF_35, floppy_image::SSQD, floppy_image::MFM,
216      2000, 16, 80, 1, 256, {}, 0, {}, 60, 22, 43
347217   },
348   { // 800K 5 1/4 inch 80 track double sided double density - gaps unverified
349      floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
350      2000, 10, 80, 2, 512, {}, 0, {}, 60, 22, 43
218   { // 640K 3 1/2 inch 80 track double sided double density
219      floppy_image::FF_35, floppy_image::DSQD, floppy_image::MFM,
220      2000, 16, 80, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, 60, 22, 43
351221   },
352222   {}
353223};
354224
355const floppy_format_type FLOPPY_BBC_DFS_FORMAT = &floppy_image_format_creator<bbc_dfs_format>;
356const floppy_format_type FLOPPY_BBC_ADFS_FORMAT = &floppy_image_format_creator<bbc_adfs_format>;
357const floppy_format_type FLOPPY_BBC_DOS_FORMAT = &floppy_image_format_creator<bbc_dos_format>;
358const floppy_format_type FLOPPY_BBC_CPM_FORMAT = &floppy_image_format_creator<bbc_cpm_format>;
225
226const floppy_format_type FLOPPY_BBC_SSD_525_FORMAT = &floppy_image_format_creator<bbc_ssd_525_format>;
227const floppy_format_type FLOPPY_BBC_DSD_525_FORMAT = &floppy_image_format_creator<bbc_dsd_525_format>;
228const floppy_format_type FLOPPY_BBC_ADF_525_FORMAT = &floppy_image_format_creator<bbc_adf_525_format>;
229const floppy_format_type FLOPPY_BBC_ADF_35_FORMAT = &floppy_image_format_creator<bbc_adf_35_format>;
trunk/src/lib/formats/bbc_dsk.h
r249889r249890
1313#ifndef __BBC_DSK_H__
1414#define __BBC_DSK_H__
1515
16#include "flopimg.h"
1617#include "wd177x_dsk.h"
1718
18class bbc_dfs_format : public wd177x_format
19/**************************************************************************/
20
21LEGACY_FLOPPY_OPTIONS_EXTERN(bbc);
22
23/**************************************************************************/
24
25class bbc_ssd_525_format : public wd177x_format
1926{
2027public:
21   bbc_dfs_format();
28   bbc_ssd_525_format();
2229
2330   virtual int find_size(io_generic *io, UINT32 form_factor);
24   virtual int identify(io_generic *io, UINT32 form_factor);
25   virtual int get_image_offset(const format &f, int head, int track);
2631   virtual const char *name() const;
2732   virtual const char *description() const;
2833   virtual const char *extensions() const;
r249889r249890
3136   static const format formats[];
3237};
3338
34class bbc_adfs_format : public wd177x_format
39class bbc_dsd_525_format : public wd177x_format
3540{
3641public:
37   bbc_adfs_format();
42   bbc_dsd_525_format();
3843
3944   virtual int find_size(io_generic *io, UINT32 form_factor);
40   virtual int identify(io_generic *io, UINT32 form_factor);
41   virtual int get_image_offset(const format &f, int head, int track);
4245   virtual const char *name() const;
4346   virtual const char *description() const;
4447   virtual const char *extensions() const;
r249889r249890
4750   static const format formats[];
4851};
4952
50class bbc_dos_format : public wd177x_format
53class bbc_adf_525_format : public wd177x_format
5154{
5255public:
53   bbc_dos_format();
56   bbc_adf_525_format();
5457
55   virtual int find_size(io_generic *io, UINT32 form_factor);
56   virtual int identify(io_generic *io, UINT32 form_factor);
57   virtual int get_image_offset(const format &f, int head, int track);
5858   virtual const char *name() const;
5959   virtual const char *description() const;
6060   virtual const char *extensions() const;
r249889r249890
6363   static const format formats[];
6464};
6565
66class bbc_cpm_format : public wd177x_format
66class bbc_adf_35_format : public wd177x_format
6767{
6868public:
69   bbc_cpm_format();
69   bbc_adf_35_format();
7070
71   virtual int identify(io_generic *io, UINT32 form_factor);
72   virtual int get_image_offset(const format &f, int head, int track);
7371   virtual const char *name() const;
7472   virtual const char *description() const;
7573   virtual const char *extensions() const;
r249889r249890
7977};
8078
8179
82extern const floppy_format_type FLOPPY_BBC_DFS_FORMAT;
83extern const floppy_format_type FLOPPY_BBC_ADFS_FORMAT;
84extern const floppy_format_type FLOPPY_BBC_DOS_FORMAT;
85extern const floppy_format_type FLOPPY_BBC_CPM_FORMAT;
80extern const floppy_format_type FLOPPY_BBC_SSD_525_FORMAT;
81extern const floppy_format_type FLOPPY_BBC_DSD_525_FORMAT;
82extern const floppy_format_type FLOPPY_BBC_ADF_525_FORMAT;
83extern const floppy_format_type FLOPPY_BBC_ADF_35_FORMAT;
8684
8785#endif // __BBC_DSK_H__
trunk/src/lib/formats/camplynx_dsk.c
r249889r249890
1// license:BSD-3-Clause
2// copyright-holders:Robbbert
3/*********************************************************************
4
5    formats/camplynx_dsk.c
6
7    Camputers Lynx disk image format
8
9    There is no inter-sector info on these disks. It is simply a
10    dump of the 512 bytes from each sector and track in order.
11
12    Extension is LDF as used by the Pale emulator
13
14    The disk is formatted with 512 bytes per sector, 10 sectors,
15    6040 bytes per track. 200KB disks are single sided 40 tracks.
16    800KB disks are double sided 80 tracks.
17
18    The numbers below are guesswork since there's no documentation.
19
20*********************************************************************/
21
22#include <assert.h>
23
24#include "formats/camplynx_dsk.h"
25
26camplynx_format::camplynx_format() : wd177x_format(formats)
27{
28}
29
30const char *camplynx_format::name() const
31{
32   return "camplynx";
33}
34
35const char *camplynx_format::description() const
36{
37   return "Camputers Lynx disk image";
38}
39
40const char *camplynx_format::extensions() const
41{
42   return "ldf";
43}
44
45const camplynx_format::format camplynx_format::formats[] = {
46   {   /*  200K 13cm double density single sided */
47      floppy_image::FF_525,  floppy_image::SSDD, floppy_image::MFM,
48      2000, 10, 40, 1, 512, {}, 1, {}, 100, 22, 30 // guesswork to stop it crashing
49   },
50   {   /*  800K 13cm quad density double sided */
51      floppy_image::FF_525,  floppy_image::DSQD, floppy_image::MFM,
52      2000, 10, 80, 2, 512, {}, 1, {}, 100, 22, 30 // guesswork to stop it crashing
53   },
54   {}
55};
56
57const floppy_format_type FLOPPY_CAMPLYNX_FORMAT = &floppy_image_format_creator<camplynx_format>;
trunk/src/lib/formats/camplynx_dsk.h
r249889r249890
1// license:BSD-3-Clause
2// copyright-holders:Robbbert
3/*********************************************************************
4
5    formats/camplynx_dsk.h
6
7    Camputers Lynx disk image format
8
9*********************************************************************/
10
11#ifndef CAMPLYNX_DSK_H_
12#define CAMPLYNX_DSK_H_
13
14#include "wd177x_dsk.h"
15
16class camplynx_format : public wd177x_format {
17public:
18   camplynx_format();
19
20   virtual const char *name() const;
21   virtual const char *description() const;
22   virtual const char *extensions() const;
23
24private:
25   static const format formats[];
26};
27
28extern const floppy_format_type FLOPPY_CAMPLYNX_FORMAT;
29
30#endif
trunk/src/lib/util/corealloc.h
r249889r249890
8787#ifndef NO_MEM_TRACKING
8888// re-route classic malloc-style allocations
8989#undef malloc
90#undef calloc
9091#undef realloc
9192#undef free
9293
9394#define malloc(x)       malloc_file_line(x, __FILE__, __LINE__, true, false, false)
95#define calloc(x,y)     __error_use_auto_alloc_clear_or_global_alloc_clear_instead__
9496#define realloc(x,y)    __error_realloc_is_dangerous__
9597#define free(x)         free_file_line(x, __FILE__, __LINE__, true)
96
97#if !defined(_MSC_VER) || _MSC_VER < 1900 // < VS2015
98#undef calloc
99#define calloc(x,y)     __error_use_auto_alloc_clear_or_global_alloc_clear_instead__
10098#endif
10199
102#endif
103
104100#endif  /* __COREALLOC_H__ */
trunk/src/mame/arcade.lst
r249889r249890
45014501wbdeluxe        // (c) 1986 + Escape license (S1)
45024502wboysys2        // 834-5984  (c) 1986 + Escape license (S1)
45034503gardia          // 834-6119 (S2?)
4504gardiaj         //
45054504gardiab         // bootleg
45064505nob             // (c) Data East
45074506nobb            // bootleg
r249889r249890
53375336tfrceacb        // bootleg
53385337twinsqua        // (c) 1991 Sega
53395338soniccar        // (c) 1991 Sega
5340sonicpop
53415339ribbit          // (c) 1991 Sega
53425340tantr           // (c) 1992 Sega
53435341tantrkor        // (c) 1992 Sega
r249889r249890
1205412052aristmk5        // (c) 1995, USA platform set chips
1205512053swthrt2v        // (c) 1995
1205612054enchfrst        // (c) 1995
12057minemine        // (c) 1996
1205812055dolphntr        // (c) 1996
1205912056dolphtra        // (c) 1996
12060dolphtre        // (c) 1996
12061cashcham        // (c) 1996
12057dmdtouch        // (c) 1997
1206212058goldprmd        // (c) 1997
1206312059qotn            // (c) 1997
12064dmdtouch        // (c) 1997
12065wldcougr        // (c) 1997
12066bumblbug        // (c) 1997
12067pengpays        // (c) 1997
1206812060adonis          // (c) 1998
12069adonisa         // (c) 1998
1207012061reelrock        // (c) 1998
1207112062indiandr        // (c) 1998
12072chariotc        // (c) 1998
12073wtiger          // (c) 1999
12074bootsctn        // (c) 1999
12075cuckoo          // (c) 2000
1207612063magicmsk        // (c) 2000
12077magicmska       // (c) 2000
1207812064margmgc         // (c) 2000
1207912065geishanz        // (c) 2001
12080adonise         // (c) 2001
12081partygrs        // (c) 2001
12066wtiger          // (c) 2001
1208212067
1208312068// Aristocrat Mk6 hardware
1208412069aristmk6
r249889r249890
1319413179kas89           // 1989, SFC S.R.L.
1319513180caspoker        // 1987, PM / Beck Elektronik.
1319613181wildpkr         // 199?, TAB Austria.
13197subhuntr      // 1979 Model Racing
1319813182
1319913183manohman        // 199?, Merkur.
1320013184
trunk/src/mame/drivers/a2600.c
r249889r249890
1818#include "bus/vcs/vcs_slot.h"
1919#include "bus/vcs/rom.h"
2020#include "bus/vcs/dpc.h"
21#include "bus/vcs/dpcplus.h"
2221#include "bus/vcs/scharger.h"
2322#include "bus/vcs/compumat.h"
2423#include "bus/vcs_ctrl/ctrl.h"
r249889r249890
3938      m_tia(*this, "tia_video"),
4039      m_maincpu(*this, "maincpu"),
4140      m_screen(*this, "screen"),
42      m_swb(*this, "SWB"),
43      m_riot(*this,"riot")
41      m_swb(*this, "SWB")
4442   { }
4543
4644   required_shared_ptr<UINT8> m_riot_ram;
r249889r249890
6058   // investigate how the carts mapped here (Mapper JVP) interact with the RIOT device
6159   DECLARE_READ8_MEMBER(cart_over_riot_r);
6260   DECLARE_WRITE8_MEMBER(cart_over_riot_w);
63   DECLARE_READ8_MEMBER(cart_over_all_r);
64   DECLARE_WRITE8_MEMBER(cart_over_all_w);
6561
6662protected:
6763   required_device<vcs_control_port_device> m_joy1;
r249889r249890
7369   required_device<m6502_device> m_maincpu;
7470   required_device<screen_device> m_screen;
7571   required_ioport m_swb;
76   required_device<mos6532_t> m_riot;
7772};
7873
7974
r249889r249890
9388   // AM_RANGE(0x1000, 0x1fff) is cart data and it is configured at reset time, depending on the mounted cart!
9489ADDRESS_MAP_END
9590
96
97READ8_MEMBER(a2600_state::cart_over_all_r)
98{
99   if (!space.debugger_access())
100      m_cart->write_bank(space, offset, 0);
101
102   int masked_offset = offset &~ 0x0d00;
103   UINT8 ret = 0x00;
104
105   if (masked_offset < 0x80)
106   {
107      ret = m_tia->read(space, masked_offset&0x7f);
108   }
109   else if (masked_offset < 0x100)
110   {
111      ret = m_riot_ram[masked_offset & 0x7f];
112   }
113   /* 0x100 - 0x1ff already masked out */
114   else if (masked_offset < 0x280)
115   {
116      ret = m_tia->read(space, masked_offset&0x7f);
117   }
118   else if (masked_offset < 0x2a0)
119   {
120      ret = m_riot->io_r(space, masked_offset);
121   }
122   else if (masked_offset < 0x300)
123   {
124      /* 0x2a0 - 0x2ff nothing? */
125   }
126   /* 0x300 - 0x3ff already masked out */
127
128   return ret;
129}
130
131WRITE8_MEMBER(a2600_state::cart_over_all_w)
132{
133   m_cart->write_bank(space, offset, 0);
134
135   int masked_offset = offset &~ 0x0d00;
136
137   if (masked_offset < 0x80)
138   {
139      m_tia->write(space, masked_offset & 0x7f, data);
140   }
141   else if (masked_offset < 0x100)
142   {
143      m_riot_ram[masked_offset & 0x7f] = data;
144   }
145   /* 0x100 - 0x1ff already masked out */
146   else if (masked_offset < 0x280)
147   {
148      m_tia->write(space, masked_offset & 0x7f, data);
149   }
150   else if (masked_offset < 0x2a0)
151   {
152      m_riot->io_w(space, masked_offset, data);
153   }
154   else if (masked_offset < 0x300)
155   {
156      /* 0x2a0 - 0x2ff nothing? */
157   }
158   /* 0x300 - 0x3ff already masked out */
159}
160
16191WRITE8_MEMBER(a2600_state::switch_A_w)
16292{
16393   /* Left controller port */
r249889r249890
387317      case A26_CM:
388318         m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x1fff, read8_delegate(FUNC(vcs_cart_slot_device::read_rom),(vcs_cart_slot_device*)m_cart));
389319         break;
390      case A26_X07:
391         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x1fff, read8_delegate(FUNC(vcs_cart_slot_device::read_rom),(vcs_cart_slot_device*)m_cart), write8_delegate(FUNC(vcs_cart_slot_device::write_bank),(vcs_cart_slot_device*)m_cart));
392         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0000, 0x0fff, read8_delegate(FUNC(a2600_state::cart_over_all_r), this), write8_delegate(FUNC(a2600_state::cart_over_all_w), this));
393         break;
394      case A26_DPCPLUS:
395         m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x1fff, read8_delegate(FUNC(vcs_cart_slot_device::read_rom),(vcs_cart_slot_device*)m_cart), write8_delegate(FUNC(vcs_cart_slot_device::write_bank),(vcs_cart_slot_device*)m_cart));
396         break;
397320   }
398321
399322   /* Banks may have changed, reset the cpu so it uses the correct reset vector */
r249889r249890
527450   SLOT_INTERFACE_INTERNAL("a26_4in1",  A26_ROM_4IN1)
528451   SLOT_INTERFACE_INTERNAL("a26_8in1",  A26_ROM_8IN1)
529452   SLOT_INTERFACE_INTERNAL("a26_32in1", A26_ROM_32IN1)
530   SLOT_INTERFACE_INTERNAL("a26_x07",    A26_ROM_X07)
531   SLOT_INTERFACE_INTERNAL("a26_dpcplus",   A26_ROM_DPCPLUS)
532453SLOT_INTERFACE_END
533454
534455static MACHINE_CONFIG_FRAGMENT(a2600_cartslot)
trunk/src/mame/drivers/amiga.c
r249889r249890
18111811
18121812   MCFG_CDROM_ADD("cdrom")
18131813   MCFG_CDROM_INTERFACE("cd32_cdrom")
1814   MCFG_SOFTWARE_LIST_ADD("cd_list", "cd32")
1814
18151815   MCFG_DEVICE_REMOVE("kbd")
18161816MACHINE_CONFIG_END
18171817
trunk/src/mame/drivers/amstrad.c
r249889r249890
814814   SLOT_INTERFACE("smartwatch", CPC_SMARTWATCH)
815815   SLOT_INTERFACE("brunword4", CPC_BRUNWORD_MK4)
816816   SLOT_INTERFACE("hd20", CPC_HD20)
817   SLOT_INTERFACE("doubler", CPC_DOUBLER)
818817SLOT_INTERFACE_END
819818
820819SLOT_INTERFACE_START(cpc_exp_cards)
r249889r249890
831830   SLOT_INTERFACE("smartwatch", CPC_SMARTWATCH)
832831   SLOT_INTERFACE("brunword4", CPC_BRUNWORD_MK4)
833832   SLOT_INTERFACE("hd20", CPC_HD20)
834   SLOT_INTERFACE("doubler", CPC_DOUBLER)
835833SLOT_INTERFACE_END
836834
837835SLOT_INTERFACE_START(cpcplus_exp_cards)
r249889r249890
846844   SLOT_INTERFACE("playcity", CPC_PLAYCITY)
847845   SLOT_INTERFACE("smartwatch", CPC_SMARTWATCH)
848846   SLOT_INTERFACE("hd20", CPC_HD20)
849   SLOT_INTERFACE("doubler", CPC_DOUBLER)
850847SLOT_INTERFACE_END
851848
852849SLOT_INTERFACE_START(aleste_exp_cards)
r249889r249890
863860   SLOT_INTERFACE("smartwatch", CPC_SMARTWATCH)
864861   SLOT_INTERFACE("brunword4", CPC_BRUNWORD_MK4)
865862   SLOT_INTERFACE("hd20", CPC_HD20)
866   SLOT_INTERFACE("doubler", CPC_DOUBLER)
867863   SLOT_INTERFACE("magicsound", AL_MAGICSOUND)
868864SLOT_INTERFACE_END
869865
trunk/src/mame/drivers/apollo.c
r249889r249890
109109static UINT16 latch_page_on_parity_error_register = 0x0000;
110110static UINT16 master_req_register = 0x0000;
111111
112// DN3000: Node Id 1D117 at 0x9600 - 0x961f
113// DN3500: Node Id 2616D at 0x11200 - 0x1121f
114
115static UINT32 node_id = DEFAULT_NODE_ID;
116
112117static UINT32 ram_base_address;
113118static UINT32 ram_end_address;
114119
r249889r249890
206211}
207212
208213/***************************************************************************
214 apollo_get_node_id - get the node id
215 ***************************************************************************/
216
217UINT32 apollo_get_node_id(void) {
218   return node_id;
219}
220
221/***************************************************************************
209222  apollo_instruction_hook
210223  must be called by the CPU core before executing each instruction
211224***************************************************************************/
r249889r249890
339352}
340353
341354/***************************************************************************
355 DN3000/DN3500 Node Id PROM at 0x9600/0x11200
356 ***************************************************************************/
357
358WRITE16_MEMBER(apollo_state::apollo_node_id_w){
359   SLOG1(("Error: writing node id ROM at offset %02x = %04x & %04x", offset, data, mem_mask));
360}
361
362READ16_MEMBER(apollo_state::apollo_node_id_r){
363   UINT16 data;
364   switch (offset & 0x0f) {
365   case 1: // msb
366      data = (node_id >> 16) & 0xff;
367      break;
368   case 2:
369      data = (node_id >> 8) & 0xff;
370      break;
371   case 3: // lsb
372      data = node_id & 0xff;
373      break;
374   case 15: // checksum
375      data = ((node_id >> 16) + (node_id >> 8) + node_id) & 0xff;
376      break;
377   default:
378      data = 0;
379      break;
380   }
381   data <<= 8;
382   SLOG2(("reading node id ROM at offset %02x = %04x & %04x", offset, data, mem_mask));
383   return data;
384}
385
386/***************************************************************************
342387 DN3000/DN3500 Latch Page on Parity Error Register at 0x9300/0x11300
343388 ***************************************************************************/
344389
r249889r249890
531576   // Motorola CPU is MSB first, ISA Bus is LSB first
532577   UINT16 data = m_isa->io16_swap_r(space, isa_addr, mem_mask);
533578
534   SLOG2(("apollo_atbus_io_r at %08x -> %04x = %04x & %04x", ATBUS_IO_BASE + offset*2, isa_addr*2, data, mem_mask));
579   SLOG2(("apollo_atbus_io_r at %08x -> %04x = %04x & %04x", offset*2, isa_addr*2, data, mem_mask));
535580
536581   return data;
537582}
r249889r249890
540585{
541586   UINT32 isa_addr = (offset & 3) + ((offset & ~0x1ff) >> 7);
542587
543   SLOG2(("apollo_atbus_io_w at %08x -> %04x = %04x & %04x", ATBUS_IO_BASE + offset*2, isa_addr*2, data, mem_mask));
588   SLOG2(("apollo_atbus_io_w at %08x -> %04x = %04x & %04x", offset*2, isa_addr*2, data, mem_mask));
544589
545590   // Motorola CPU is MSB first, ISA Bus is LSB first
546591   m_isa->io16_swap_w(space, isa_addr, data, mem_mask);
r249889r249890
552597
553598READ16_MEMBER(apollo_state::apollo_atbus_memory_r)
554599{
555   UINT16 data;
556
557600   // Motorola CPU is MSB first, ISA Bus is LSB first
558   data = m_isa->prog16_swap_r(space, offset, mem_mask);
601   UINT16 data = m_isa->prog16_swap_r(space, offset, mem_mask);
559602
560   SLOG2(("apollo_atbus_memory_r at %08x = %04x & %04x", ATBUS_MEMORY_BASE + offset * 2, data, mem_mask));
603   SLOG2(("apollo_atbus_memory_r at %08x = %04x & %04x", offset*2, data, mem_mask));
604
561605   return data;
562606}
563607
564608WRITE16_MEMBER(apollo_state::apollo_atbus_memory_w)
565609{
566   SLOG2(("apollo_atbus_memory_w at %08x = %04x & %04x", ATBUS_MEMORY_BASE + offset*2, data, mem_mask));
610   SLOG2(("apollo_atbus_memory_w at %08x = %04x & %04x", offset*2, data, mem_mask));
567611
568612   // Motorola CPU is MSB first, ISA Bus is LSB first
569613   m_isa->prog16_swap_w(space, offset, data, mem_mask);
570614}
571615
572616/***************************************************************************
573 DN3000/DN3500 AT Bus unmapped read/write
574 ***************************************************************************/
575
576READ16_MEMBER(apollo_state::apollo_atbus_unmap_io_r)
577{
578   // ISA bus has 0xff for unmapped addresses
579   UINT16 data = 0xffff;
580   UINT32 isa_addr = (offset & 3) + ((offset & ~0x1ff) >> 7);
581   SLOG1(("apollo_atbus_unmap_io_r at %08x -> %04x = %04x & %04x", ATBUS_IO_BASE + offset*2, isa_addr*2, data, mem_mask));
582   return data;
583}
584
585WRITE16_MEMBER(apollo_state::apollo_atbus_unmap_io_w)
586{
587   UINT32 isa_addr = (offset & 3) + ((offset & ~0x1ff) >> 7);
588   SLOG1(("apollo_atbus_unmap_io_w at %08x -> %04x = %04x & %04x", ATBUS_IO_BASE + offset*2, isa_addr*2, data, mem_mask));
589}
590
591READ8_MEMBER(apollo_state::apollo_atbus_unmap_r)
592{
593   // ISA bus has 0xff for unmapped addresses
594   UINT8 data = 0xff;
595   SLOG2(("apollo_atbus_unmap_r at %08x = %02x & %02x", ATBUS_MEMORY_BASE + offset, data, mem_mask));
596   return data;
597}
598
599WRITE8_MEMBER(apollo_state::apollo_atbus_unmap_w)
600{
601   SLOG1(("apollo_atbus_unmap_w at %08x = %02x & %02x", ATBUS_MEMORY_BASE + offset, data, mem_mask));
602}
603
604/***************************************************************************
605617 DN5500 Memory Present Register at 0x11400-0x114ff
606618 Strange: documented but not used
607619 ***************************************************************************/
r249889r249890
685697      AM_RANGE(0x010d00, 0x010dff) AM_READWRITE8(/*"dma2",*/apollo_dma_2_r, apollo_dma_2_w, 0xffffffff )
686698      AM_RANGE(0x011000, 0x0110ff) AM_DEVREADWRITE8(APOLLO_PIC1_TAG, pic8259_device, read, write, 0xffffffff)
687699      AM_RANGE(0x011100, 0x0111ff) AM_DEVREADWRITE8(APOLLO_PIC2_TAG, pic8259_device, read, write, 0xffffffff)
688      AM_RANGE(0x011200, 0x0112ff) AM_DEVREADWRITE16(APOLLO_NI_TAG, apollo_ni, read, write, 0xffffffff)
700      AM_RANGE(0x011200, 0x0112ff) AM_READWRITE16(apollo_node_id_r, apollo_node_id_w, 0xffffffff)
689701      AM_RANGE(0x011300, 0x0113ff) AM_READWRITE16(latch_page_on_parity_error_register_r, latch_page_on_parity_error_register_w, 0xffffffff )
690702      AM_RANGE(0x011600, 0x0116ff) AM_READWRITE8(master_req_register_r, master_req_register_w, 0xffffffff)
691703
r249889r249890
729741      AM_RANGE(0x010d00, 0x010dff) AM_READWRITE8(/*"dma2",*/apollo_dma_2_r, apollo_dma_2_w, 0xffffffff )
730742      AM_RANGE(0x011000, 0x0110ff) AM_DEVREADWRITE8(APOLLO_PIC1_TAG, pic8259_device, read, write, 0xffffffff)
731743      AM_RANGE(0x011100, 0x0111ff) AM_DEVREADWRITE8(APOLLO_PIC2_TAG, pic8259_device, read, write, 0xffffffff)
732      AM_RANGE(0x011200, 0x0112ff) AM_DEVREADWRITE16(APOLLO_NI_TAG, apollo_ni, read, write, 0xffffffff)
744      AM_RANGE(0x011200, 0x0112ff) AM_READWRITE16(apollo_node_id_r, apollo_node_id_w, 0xffffffff)
733745      AM_RANGE(0x011300, 0x0113ff) AM_READWRITE16(latch_page_on_parity_error_register_r, latch_page_on_parity_error_register_w, 0xffffffff )
734746      AM_RANGE(0x011600, 0x0116ff) AM_READWRITE8(master_req_register_r, master_req_register_w, 0xffffffff)
735747
r249889r249890
760772      AM_RANGE(0x009300, 0x0093ff) AM_READWRITE16(latch_page_on_parity_error_register_r, latch_page_on_parity_error_register_w, 0xffffffff )
761773      AM_RANGE(0x009400, 0x0094ff) AM_DEVREADWRITE8(APOLLO_PIC1_TAG, pic8259_device, read, write, 0xffffffff)
762774      AM_RANGE(0x009500, 0x0095ff) AM_DEVREADWRITE8(APOLLO_PIC2_TAG, pic8259_device, read, write, 0xffffffff)
763      AM_RANGE(0x009600, 0x0096ff) AM_DEVREADWRITE16(APOLLO_NI_TAG, apollo_ni, read, write, 0xffffffff)
775      AM_RANGE(0x009600, 0x0096ff) AM_READWRITE16(apollo_node_id_r, apollo_node_id_w, 0xffffffff)
764776
765777      AM_RANGE(0x05d800, 0x05dc07) AM_DEVREADWRITE8(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_mcr_r, apollo_mcr_w, 0xffffffff)
766778      AM_RANGE(0xfa0000, 0xfdffff) AM_DEVREADWRITE16(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_mgm_r, apollo_mgm_w, 0xffffffff)
r249889r249890
794806      AM_RANGE(0x009300, 0x0093ff) AM_READWRITE16(latch_page_on_parity_error_register_r, latch_page_on_parity_error_register_w, 0xffffffff )
795807      AM_RANGE(0x009400, 0x0094ff) AM_DEVREADWRITE8(APOLLO_PIC1_TAG, pic8259_device, read, write, 0xffffffff)
796808      AM_RANGE(0x009500, 0x0095ff) AM_DEVREADWRITE8(APOLLO_PIC2_TAG, pic8259_device, read, write, 0xffffffff)
797      AM_RANGE(0x009600, 0x0096ff) AM_DEVREADWRITE16(APOLLO_NI_TAG, apollo_ni, read, write, 0xffffffff)
809      AM_RANGE(0x009600, 0x0096ff) AM_READWRITE16(apollo_node_id_r, apollo_node_id_w, 0xffffffff)
798810
799811      AM_RANGE(ATBUS_IO_BASE, ATBUS_IO_END) AM_READWRITE16(apollo_atbus_io_r, apollo_atbus_io_w, 0xffffffff)
800812
r249889r249890
823835      AM_RANGE(0x010d00, 0x010dff) AM_READWRITE8(/*"dma2",*/apollo_dma_2_r, apollo_dma_2_w, 0xffffffff )
824836      AM_RANGE(0x011000, 0x0110ff) AM_DEVREADWRITE8(APOLLO_PIC1_TAG, pic8259_device, read, write, 0xffffffff)
825837      AM_RANGE(0x011100, 0x0111ff) AM_DEVREADWRITE8(APOLLO_PIC2_TAG, pic8259_device, read, write, 0xffffffff)
826      AM_RANGE(0x011200, 0x0112ff) AM_DEVREADWRITE16(APOLLO_NI_TAG, apollo_ni, read, write, 0xffffffff)
838      AM_RANGE(0x011200, 0x0112ff) AM_READWRITE16(apollo_node_id_r, apollo_node_id_w, 0xffffffff)
827839      AM_RANGE(0x011300, 0x0113ff) AM_READWRITE16(latch_page_on_parity_error_register_r, latch_page_on_parity_error_register_w, 0xffffffff )
828840      AM_RANGE(0x011400, 0x0114ff) AM_READWRITE8(dn5500_memory_present_register_r, dn5500_memory_present_register_w, 0xffffffff )
829841      AM_RANGE(0x011500, 0x0115ff) AM_READWRITE8(dn5500_11500_r, dn5500_11500_w, 0xffffffff )
r249889r249890
870882      AM_RANGE(0x010d00, 0x010dff) AM_READWRITE8(/*"dma2",*/apollo_dma_2_r, apollo_dma_2_w, 0xffffffff )
871883      AM_RANGE(0x011000, 0x0110ff) AM_DEVREADWRITE8(APOLLO_PIC1_TAG, pic8259_device, read, write, 0xffffffff)
872884      AM_RANGE(0x011100, 0x0111ff) AM_DEVREADWRITE8(APOLLO_PIC2_TAG, pic8259_device, read, write, 0xffffffff)
873      AM_RANGE(0x011200, 0x0112ff) AM_DEVREADWRITE16(APOLLO_NI_TAG, apollo_ni, read, write, 0xffffffff)
885      AM_RANGE(0x011200, 0x0112ff) AM_READWRITE16(apollo_node_id_r, apollo_node_id_w, 0xffffffff)
874886      AM_RANGE(0x011300, 0x0113ff) AM_READWRITE16(latch_page_on_parity_error_register_r, latch_page_on_parity_error_register_w, 0xffffffff )
875887      AM_RANGE(0x011400, 0x0114ff) AM_READWRITE8(dn5500_memory_present_register_r, dn5500_memory_present_register_w, 0xffffffff )
876888      AM_RANGE(0x011500, 0x0115ff) AM_READWRITE8(dn5500_11500_r, dn5500_11500_w, 0xffffffff )
r249889r249890
897909
898910void apollo_state::machine_reset()
899911{
900   MLOG1(("machine_reset"));
912   //MLOG1(("machine_reset_dn3500"));
901913
902914   MACHINE_RESET_CALL_MEMBER(apollo);
903915
904#ifdef APOLLO_XXL
916   // we can't do this any more
917   #if 0
905918   // set configuration
906919   omti8621_device::set_verbose(apollo_config(APOLLO_CONF_DISK_TRACE));
907920   threecom3c505_device::set_verbose(apollo_config(APOLLO_CONF_NET_TRACE));
908921
909922   if (apollo_config(APOLLO_CONF_NODE_ID))
910923   {
911      // set node ID from UID of logical volume 1 of logical unit 0
912      m_node_id->set_node_id_from_disk();
924      UINT8 db[0x50];
925      UINT16 sector1 = apollo_is_dn5500() ? 4 : 1;
926
927      // check label of physical volume and get sector data of logical volume 1
928      // Note: sector data starts with 32 byte block header
929      if (omti8621_get_sector(machine().device(APOLLO_WDC_TAG), 0, db,    sizeof(db), 0) == sizeof(db) &&
930         memcmp (db+0x22, "APOLLO", 6) == 0 &&
931         omti8621_get_sector(machine().device(APOLLO_WDC_TAG), sector1, db,  sizeof(db), 0) == sizeof(db))
932      {
933         // set node_id from UID of logical volume 1 of logical unit 0
934         node_id = (((db[0x49] << 8) | db[0x4a]) << 8) | db[0x4b];
935
936         MLOG2(("machine_reset_dn3500: node ID is %06X (from disk)", node_id));
937      }
913938   }
914#endif
939   #endif
915940
916941   m_maincpu->set_instruction_hook(read32_delegate(FUNC(apollo_state::apollo_instruction_hook),this));
917942}
r249889r249890
930955   {
931956      machine().device(APOLLO_SCREEN_TAG)->reset();
932957      machine().device(APOLLO_KBD_TAG )->reset();
933#ifdef APOLLO_XXL
934      machine().device(APOLLO_STDIO_TAG )->reset();
935#endif
936958   }
937959}
938960
r249889r249890
948970   memset(messram->ptr(), 0x55, messram->bytes());
949971
950972   MACHINE_START_CALL_MEMBER(apollo);
951
952   // install nop handlers for unmapped ISA bus addresses
953   m_isa->install16_device(0, ATBUS_IO_END, 0, 0, read16_delegate(FUNC(apollo_state::apollo_atbus_unmap_io_r), this), write16_delegate(FUNC(apollo_state::apollo_atbus_unmap_io_w), this));
954   m_isa->install_memory(0, ATBUS_MEMORY_END, 0, 0, read8_delegate(FUNC(apollo_state::apollo_atbus_unmap_r), this), write8_delegate(FUNC(apollo_state::apollo_atbus_unmap_w), this));
955973}
956974
957975/***************************************************************************
r249889r249890
10601078   MCFG_RAM_ADD("messram")
10611079   MCFG_RAM_DEFAULT_SIZE("8M")
10621080   MCFG_RAM_EXTRA_OPTIONS("4M,8M,16M,32M")
1063
1064#ifdef APOLLO_XXL
1065   MCFG_DEVICE_ADD(APOLLO_STDIO_TAG, APOLLO_STDIO, 0)
1066   MCFG_APOLLO_STDIO_TX_CALLBACK(DEVWRITELINE(APOLLO_SIO_TAG, apollo_sio, rx_b_w))
1067#endif
10681081MACHINE_CONFIG_END
10691082
10701083static MACHINE_CONFIG_START( dsp3500, apollo_state )
r249889r249890
12071220   // Note: this duplicates boot rom md7c-rev-8.00-1989-08-16-17-23-52.bin
12081221   ROM_SYSTEM_BIOS( 0, "md7c-rev-8.00", "MD7C REV 8.00, 1989/08/16.17:23:52" )
12091222   ROMX_LOAD( "3500_boot_12191_7.bin", 0x00000, 0x10000, CRC(3132067d) SHA1(36f3c83d9f2df42f2537b09ca2f051a8c9dfbfc2) , ROM_BIOS(1) )
1223
1224   ROM_LOAD_OPTIONAL( "3000_3c505_010728-00.bin", 0x80000, 0x02000, CRC(69b77ec6) SHA1(7ac36cc6fc90b90ddfc56c45303b514cbe18ae58) )
12101225ROM_END
12111226
12121227ROM_START( dn5500 )
r249889r249890
12151230
12161231   ROM_SYSTEM_BIOS( 0, "md7c-rev-8.00", "MD7C REV 8.00, 1989/08/16.17:23:52" )
12171232   ROMX_LOAD( "5500_boot_a1631-80046_1-30-92.bin", 0x00000, 0x10000, CRC(7b9ed610) SHA1(7315a884ec4551c44433c6079cc06509223cb02b) , ROM_BIOS(1) )
1233
1234   ROM_LOAD_OPTIONAL( "3000_3c505_010728-00.bin", 0x80000, 0x02000, CRC(69b77ec6) SHA1(7ac36cc6fc90b90ddfc56c45303b514cbe18ae58) )
12181235ROM_END
12191236
12201237ROM_START( dn3000)
r249889r249890
12221239
12231240   ROM_SYSTEM_BIOS( 0, "md8-rev-7.0", "MD8 REV 7.0, 1988/08/16.15:14:39" )
12241241   ROMX_LOAD( "3000_boot_8475_7.bin",  0x00000, 0x08000, CRC(0fe2d471) SHA1(6c383d2266719a3d069b7bf015f6945179395e7a), ROM_BIOS(1) )
1242
1243   ROM_LOAD_OPTIONAL( "3000_3c505_010728-00.bin", 0x80000, 0x02000, CRC(69b77ec6) SHA1(7ac36cc6fc90b90ddfc56c45303b514cbe18ae58) )
12251244ROM_END
12261245
12271246#define rom_dsp3500    rom_dn3500
trunk/src/mame/drivers/apple2.c
r249889r249890
324324{
325325   int scanline = param;
326326
327   if((scanline % 8) == 0)
328      machine().first_screen()->update_partial(machine().first_screen()->vpos());
329
327330   // update the video system's shadow copy of the system config at the end of the frame
328331   if (scanline == 192)
329332   {
r249889r249890
447450         break;
448451
449452      case 0x50:  // graphics mode
450         machine().first_screen()->update_now();
451453         m_video->m_graphics = true; break;
452454
453455      case 0x51:  // text mode
454         machine().first_screen()->update_now();
455456         m_video->m_graphics = false; break;
456457
457458      case 0x52:  // no mix
458         machine().first_screen()->update_now();
459459         m_video->m_mix = false; break;
460460
461461      case 0x53:  // mixed mode
462         machine().first_screen()->update_now();
463462         m_video->m_mix = true; break;
464463
465464      case 0x54:  // set page 1
466         machine().first_screen()->update_now();
467465         m_page2 = false;
468466         m_video->m_page2 = false;
469467         break;
470468
471469      case 0x55:  // set page 2
472         machine().first_screen()->update_now();
473470         m_page2 = true;
474471         m_video->m_page2 = true;
475472         break;
476473
477474      case 0x56: // select lo-res
478         machine().first_screen()->update_now();
479475         m_video->m_hires = false; break;
480476
481477      case 0x57: // select hi-res
482         machine().first_screen()->update_now();
483478         m_video->m_hires = true; break;
484479
485480      case 0x58: // AN0 off
trunk/src/mame/drivers/apple2e.c
r249889r249890
779779{
780780   int scanline = param;
781781
782   if((scanline % 8) == 0)
783   {
784      machine().first_screen()->update_partial(machine().first_screen()->vpos());
785   }
786
782787   if (m_isiic)
783788   {
784789      update_iic_mouse();
r249889r249890
10961101         switch (offset)
10971102         {
10981103            case 0x5e:  // SETDHIRES
1099               machine().first_screen()->update_now();
11001104               m_video->m_dhires = true;
11011105               break;
11021106
11031107            case 0x5f:  // CLRDHIRES
1104               machine().first_screen()->update_now();
11051108               m_video->m_dhires = false;
11061109               break;
11071110         }
r249889r249890
11521155         break;
11531156
11541157      case 0x50:  // graphics mode
1155         machine().first_screen()->update_now();
1156         m_video->m_graphics = true;
1157         break;
1158         m_video->m_graphics = true; break;
11581159
11591160      case 0x51:  // text mode
1160         machine().first_screen()->update_now();
1161         m_video->m_graphics = false;
1162         break;
1161         m_video->m_graphics = false; break;
11631162
11641163      case 0x52:  // no mix
1165         machine().first_screen()->update_now();
1166         m_video->m_mix = false;
1167         break;
1164         m_video->m_mix = false; break;
11681165
11691166      case 0x53:  // mixed mode
1170         machine().first_screen()->update_now();
1171         m_video->m_mix = true;
1172         break;
1167         m_video->m_mix = true; break;
11731168
11741169      case 0x54:  // set page 1
1175         machine().first_screen()->update_now();
11761170         m_page2 = false;
11771171         m_video->m_page2 = false;
11781172         auxbank_update();
11791173         break;
11801174
11811175      case 0x55:  // set page 2
1182         machine().first_screen()->update_now();
11831176         m_page2 = true;
11841177         m_video->m_page2 = true;
11851178         auxbank_update();
11861179         break;
11871180
11881181      case 0x56: // select lo-res
1189         machine().first_screen()->update_now();
11901182         m_video->m_hires = false;
11911183         auxbank_update();
11921184         break;
11931185
11941186      case 0x57: // select hi-res
1195         machine().first_screen()->update_now();
11961187         m_video->m_hires = true;
11971188         auxbank_update();
11981189         break;
trunk/src/mame/drivers/aristmk5.c
r249889r249890
11// license:BSD-3-Clause
22// copyright-holders:David Haywood, Palindrome
3/****************************************************************************************************************
3/*
44
55    Aristocrat MK5 / MKV hardware
66    possibly 'Acorn Archimedes on a chip' hardware
77
88    Note: ARM250 mapping is not identical to plain AA
99
10    BIOS ROMs are actually nowhere to be found on a regular MK5 system. They can be used
11    to change the system configurations on a PCB board by swapping them with the game ROMs
12    u7/u11 locations.
10    BIOS ROMs are actually nowhere to be found on a regular MK5 system. They can be used to change the system configurations on a PCB board
11    by swapping them with the game ROMs u7/u11 locations.
1312
1413    TODO (MK-5 specific):
1514    - Fix remaining errors
1615    - If all tests passes, this msg is printed on the keyboard serial port:
17    "System Startup Code Entered \n Gos_create could not allocate stack for the new process \n
18    Unrecoverable error occurred. System will now restart"
16    "System Startup Code Entered \n Gos_create could not allocate stack for the new process \n Unrecoverable error occurred. System will now restart"
1917    Apparently it looks like some sort of protection device ...
2018
2119    code DASMing of POST (adonis):
r249889r249890
5149        bp 3400640: checks 2MByte DRAM
5250            - writes from 0x1000 to 0x100000, with 0x400 bytes index increment and 0xfb data increment
5351            - writes from 0x100000 to 0x200000, with 0x400 bytes index increment and 0xfb data increment
54            - bp 3400720 checks if the aforementioned checks are ok (currently fails at the very first work RAM check
55              at 0x1000, it returns the value that actually should be at 0x141000)
52            - bp 3400720 checks if the aforementioned checks are ok (currently fails at the very first work RAM check at 0x1000, it returns the
53              value that actually should be at 0x141000)
5654        bp 340064c: if R0 == 0 2MB DRAM is ok, otherwise there's an error
5755
5856    set chip (BIOS):
5957        same as goldprmd (serial + ext video crystal check)
6058        bp 3400110: External Video Crystal test
6159
62*****************************************************************************************************************
60*/
6361
64  MKV S2 Mainboard, PCB Layout:
65
66  +--------------------------------------------------------------------------------------------------------+
67  |   |    96-pin male connector     |  |    96-pin male connector     |  |    96-pin male connector     | |
68  |   +------------------------------+  +------------------------------+  +------------------------------+ |
69  |            +---+       +--+                                                          +---+ +---+ +---+ |
70  +-+          |VR1|       |  |U89              +------+        +------+                 |AA | |AB | |AC | |
71  | |          |   |       |  |                 |AMP   |        |U35   |                 +---+ +---+ +---+ |
72  |S|          |   |       |  |                 +------+        +------+                 +---+ +---+ +---+ |
73  |I|          +---+       +--+ +--+                                                     |U46| |U21| |U66| |
74  |M|                           |  |U52                  ARISTOCRAT                      +---+ +---+ +---+ |
75  |M|                    +----+ |  |                     MKV S2 MAINBOARD                   +------------+ |
76  | |    +---------+     |U47 | |  |                     PCB 0801-410091                    | 3V BATTERY | |
77  |S|    |U72      |     +----+ +--+                     ASSY 2501-410389                   |            | |
78  |O|    |         |       +-----+                       ISSUE A01                          +------------+ |
79  |C|    |         |       |U23  |                                                                  +----+ |
80  |K|    |         |       |     |                                                                  |U53 | |
81  |E|    +---------+       +-----+       +------------+                                             +----+ |
82  |T|                                    |U85         |    +----+ +----+ +--+ +--+ +----+ +----+ +--+ +--+ |
83  | |    +---------+                     |            |    |U58 | |U54 | |U | |U | |U59 | |U61 | |U | |U | |
84  | |    |U71      |                     |    CPU     |    +----+ +----+ |1 | |4 | +----+ +----+ |1 | |4 | |
85  | |    |         |                     |            |           +----+ |4 | |8 |  +------+     |5 | |9 | |
86  | |    |         |  +-----+            |            |           |U56 | |9 | |  |  |U36   |     |2 | |  | |
87  | |    |         |  |U65  |            |            |           +----+ +--+ +--+  |      |     +--+ +--+ |
88  | |    +---------+  |     |            +------------+                             +------+               |
89  | |                 +-----+     +-----+ +---+                                                            |
90  +-+    +---+                    |U73  | |X2 |                    +----------------+   +----------------+ |
91  |      |U26|                    |     | +---+   +---+            |U14             |   |U10             | |
92  |      +---+                    +-----+         |U50|            |                |   |                | |
93  |      |U27|                       +-----+      +---+            +----------------+   +----------------+ |
94  |      +---+                       |U5   |      |U40|            |U13             |   |U9              | |
95  |                                  |     |      +---+            |                |   |                | |
96  |                                  +-----+      |U41|            +----------------+   +----------------+ |
97  |                                               +---+            |U12             |   |U8              | |
98  |          +---+                                                 |                |   |                | |
99  |          |VR2|                         +-----+         +-----+ +----------------+   +----------------+ |
100  |          |   |                         |U24  |         |U22  | |U11             |   |U7              | |
101  |          |   |                         |     |         |     | |                |   |                | |
102  |          |   |                         +-----+         +-----+ +----------------+   +----------------+ |
103  |          +---+                                            +----------------------------------+         |
104  |                                                           |     96-pin female connector      |         |
105  +--------------------------------------------------------------------------------------------------------+
106
107  U5: 48 MHz crystal (unpopulated from factory).
108
109  U7:  27C4096 ROM socket (bank 0).
110  U8:  27C4096 ROM socket (bank 1).
111  U9:  27C4096 ROM socket (bank 2).
112  U10: 27C4096 ROM socket (bank 3).
113
114  U11: 27C4096 ROM socket (bank 0).
115  U12: 27C4096 ROM socket (bank 1).
116  U13: 27C4096 ROM socket (bank 2).
117  U14: 27C4096 ROM socket (bank 3).
118
119  U21: NEC D43256BGU-70LL (32k x 8bit CMOS Static RAM).
120  U22: LATTICE GAL20V8B-15LJ (High Performance E2CMOS PLD Generic Array Logic, 28-Lead PLCC).
121  U23: LATTICE GAL16V8D-25LJ (High Performance E2CMOS PLD Generic Array Logic, 20-Lead PLCC).
122  U24: LATTICE GAL16V8D-25LJ (High Performance E2CMOS PLD Generic Array Logic, 20-Lead PLCC).
123  U26: SGS THOMSON ST93C46 (1K (64 x 16 or 128 x 8) Serial EEPROM).
124  U27: SGS THOMSON ST93C46 (1K (64 x 16 or 128 x 8) Serial EEPROM).
125
126  U35: PHILIPS 74HC2...
127  U36: LATTICE GAL20V8B-15LJ (High Performance E2CMOS PLD Generic Array Logic, 28-Lead PLCC).
128  U40: Dallas Semiconductor DS1202S (Serial Timekeeping Chip).
129  U41: Maxim Integrated MAX705CSA (MPU Supervisory Circuits).
130  U46: NEC D43256BGU-70LL (32k x 8bit CMOS Static RAM).
131  U47: Maxim Integrated MAX202CWE (RS-232 Interface IC).
132  U48: ISSI IS41C16257-60K (256K x 16bit (4-MBIT) Dynamic RAM With Fast Page Mode).
133  U49: ISSI IS41C16257-60K (256K x 16bit (4-MBIT) Dynamic RAM With Fast Page Mode).
134  U50: Dallas Semiconductor DS1620 (Digital Thermometer and Thermostat).
135  U52: Allegro MicroSystems UDN2543B (Protected quad power driver).
136  U53: SGS THOMSON 74HC244 (Octal buffer/line driver, 3-state).
137  U54: Motorola AC244 (Octal Buffer/Line Driver with 3-State Outputs).
138  U56: SGS THOMSON 74HC244 (Octal buffer/line driver, 3-state).
139  U58: Motorola AC244 (Octal Buffer/Line Driver with 3-State Outputs).
140  U59: Motorola AC244 (Octal Buffer/Line Driver with 3-State Outputs).
141  U61: Motorola AC244 (Octal Buffer/Line Driver with 3-State Outputs).
142  U65: LATTICE GAL20V8B-15LJ (High Performance E2CMOS PLD Generic Array Logic, 28-Lead PLCC).
143  U66: NEC D43256BGU-70LL (32k x 8bit CMOS Static RAM).
144  U71: Texas Instruments TL16C452FN (UART Interface IC Dual UART w/Prl Port & w/o FIFO).
145  U72: Texas Instruments TL16C452FN (UART Interface IC Dual UART w/Prl Port & w/o FIFO).
146  U73: CX0826 72 MHz crystal.
147  U89: Allegro MicroSystems UDN2543B (Protected quad power driver).
148  U149: ISSI IS41C16257-60K (256K x 16bit (4-MBIT) Dynamic RAM With Fast Page Mode).
149  U152: ISSI IS41C16257-60K (256K x 16bit (4-MBIT) Dynamic RAM With Fast Page Mode).
150
151  AA:  SGS THOMSON 74HC244 (Octal buffer/line driver, 3-state).
152  AB:  SGS THOMSON 74HC244 (Octal buffer/line driver, 3-state).
153  AC:  PHILIPS 74HC245D (Octal bus transceiver, 3-state).
154
155  AMP: TDA 2006 (12W Audio Amplifier).
156
157  VR1: Motorola 7805 (3-Terminal 1A Positive Voltage Regulator).
158  VR2: SGS THOMSON L4975A (5A stepdown monolithic power switching regulator at 5.1V-40V).
159
160  X2:  Unpopulated crystal (from factory).
161
162*****************************************************************************************************************/
163
164#define MASTER_CLOCK        XTAL_72MHz      /* confirmed */
165
16662#include "emu.h"
16763#include "cpu/arm/arm.h"
16864#include "sound/dac.h"
r249889r249890
522418
523419
524420static MACHINE_CONFIG_START( aristmk5, aristmk5_state )
525   MCFG_CPU_ADD("maincpu", ARM, MASTER_CLOCK/6)   // 12000000
421   MCFG_CPU_ADD("maincpu", ARM, 12000000)
526422   MCFG_CPU_PROGRAM_MAP(aristmk5_drame_map)
527423   MCFG_WATCHDOG_TIME_INIT(attotime::from_seconds(2))  /* 1.6 - 2 seconds */
528424
r249889r249890
568464MACHINE_CONFIG_END
569465
570466static MACHINE_CONFIG_START( aristmk5_usa, aristmk5_state )
571   MCFG_CPU_ADD("maincpu", ARM, MASTER_CLOCK/6)   // 12000000
467   MCFG_CPU_ADD("maincpu", ARM, 12000000)
572468   MCFG_CPU_PROGRAM_MAP(aristmk5_map)
573469   MCFG_WATCHDOG_TIME_INIT(attotime::from_seconds(2))  /* 1.6 - 2 seconds */
574470
r249889r249890
752648   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
753649ROM_END
754650
755// 0200751V - 10 Credit Multiplier / 20 Line Multiline.
756// ADONIS - NSW/ACT A - 25/05/98  Revision: 10  602/9.
757651ROM_START( adonis )
758652   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
759653   ROM_LOAD32_WORD( "0200751v.u7",  0x000000, 0x80000, CRC(ab386ab0) SHA1(56c5baea4272866a9fe18bdc371a49f155251f86) )
r249889r249890
766660   ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
767661
768662   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
769
770   ROM_REGION( 0x100, "eeproms", 0 )
771   ROM_LOAD( "st93c46.u26", 0x0000, 0x0080, NO_DUMP )
772   ROM_LOAD( "st93c46.u27", 0x0080, 0x0080, NO_DUMP )
773
774   ROM_REGION( 0x0005, "plds", 0 )
775   ROM_LOAD( "gal20v8b.u22", 0x0000, 0x0001, NO_DUMP ) /* 28-Lead PLCC package. Unable to read */
776   ROM_LOAD( "gal16v8d.u23", 0x0000, 0x0001, NO_DUMP ) /* 20-Lead PLCC package. Unable to read */
777   ROM_LOAD( "gal16v8d.u24", 0x0000, 0x0001, NO_DUMP ) /* 20-Lead PLCC package. Unable to read */
778   ROM_LOAD( "gal20v8b.u36", 0x0000, 0x0001, NO_DUMP ) /* 28-Lead PLCC package. Unable to read */
779   ROM_LOAD( "gal20v8b.u65", 0x0000, 0x0001, NO_DUMP ) /* 28-Lead PLCC package. Unable to read */
780663ROM_END
781664
782// 0100751V - 10 Credit Multiplier / 20 Line Multiline.
783// ADONIS - NSW/ACT A - 25/05/98  Revision: 9  602/9.
784ROM_START( adonisa )
785   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
786   ROM_LOAD32_WORD( "0100751v.u7",  0x000000, 0x80000, CRC(ca3e97db) SHA1(bd0a4402e57891899d92ea85a87fb8925a44f706) )
787   ROM_LOAD32_WORD( "0100751v.u11", 0x000002, 0x80000, CRC(cfe3f792) SHA1(aa1bf77101404c2018a5e5b808f1d683e29ae942) )
788   ROM_LOAD32_WORD( "0100751v.u8",  0x100000, 0x80000, CRC(d55204bd) SHA1(208c089d435ea4af25d0b9b3d5e79fea397bc885) )
789   ROM_LOAD32_WORD( "0100751v.u12", 0x100002, 0x80000, CRC(77090858) SHA1(76ebc15b26f378ac95276f0aa26d077e3646a6f1) )
790
791   ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
792
793   ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
794
795   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
796
797   ROM_REGION( 0x100, "eeproms", 0 )
798   ROM_LOAD( "st93c46.u27", 0x0000, 0x0080, CRC(115c305a) SHA1(684a70d74ec92564e17c4292cd357e603842c485) )
799   ROM_LOAD( "st93c46.u26", 0x0080, 0x0080, CRC(652d544c) SHA1(cd5bd20e9a0f22d7367cc169e2844a02751c7c91) )   // blank... all 0xff's
800
801   ROM_REGION( 0x0005, "plds", 0 )
802   ROM_LOAD( "gal20v8b.u22", 0x0000, 0x0001, NO_DUMP ) /* 28-Lead PLCC package. Unable to read */
803   ROM_LOAD( "gal16v8d.u23", 0x0000, 0x0001, NO_DUMP ) /* 20-Lead PLCC package. Unable to read */
804   ROM_LOAD( "gal16v8d.u24", 0x0000, 0x0001, NO_DUMP ) /* 20-Lead PLCC package. Unable to read */
805   ROM_LOAD( "gal20v8b.u36", 0x0000, 0x0001, NO_DUMP ) /* 28-Lead PLCC package. Unable to read */
806   ROM_LOAD( "gal20v8b.u65", 0x0000, 0x0001, NO_DUMP ) /* 28-Lead PLCC package. Unable to read */
807ROM_END
808
809// 630 - 10 Credit Multiplier / 9 Line Multiline.
810// The Chariot Challenge - NSW/ACT - A - 10/08/98.
811// 04J00714
812ROM_START( chariotc )
813   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
814   ROM_LOAD32_WORD( "04j00714_chariot_challenge.u7",  0x000000, 0x80000, CRC(2f3a1af7) SHA1(e1448116a81687cb79dd380dfbc8decf1f83e649) )
815   ROM_LOAD32_WORD( "04j00714_chariot_challenge.u11", 0x000002, 0x80000, CRC(ef4f49e8) SHA1(8ff21f679a55cdfebcf22c109dfd3b41773293bd) )
816   ROM_LOAD32_WORD( "04j00714_chariot_challenge.u8",  0x100000, 0x80000, CRC(fa24cfde) SHA1(1725c38a8a15915d8aa8e59afef9ce1d6e8d01c5) )
817   ROM_LOAD32_WORD( "04j00714_chariot_challenge.u12", 0x100002, 0x80000, CRC(b8d4a5ec) SHA1(097e44cdb30b9aafd7f5358c8f0cdd130ec0615e) )
818
819   ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
820
821   ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
822
823   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
824ROM_END
825
826665ROM_START( wtiger )
827666   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
828667   ROM_LOAD32_WORD( "0200954v.u7",  0x000000, 0x80000, CRC(752e54c5) SHA1(9317544a7cf2d9bf29347d31fe72331fc3d018ef) )
r249889r249890
867706   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
868707ROM_END
869708
870/*********************** US and Export games (requires set chips) ***********************/
709/*********************** US games (requires set chips) ***********************/
871710
872// 559/2 - 10 Credit Multiplier / 9 Line Multiline.
873// Mine, Mine, Mine - Export E - 14/02/96.
874// All devices are 27c4002 instead of 27c4096.
875ROM_START( minemine )
876   ARISTOCRAT_MK5_BIOS
877   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
878   ROM_LOAD32_WORD( "mine_export.u7",  0x000000, 0x80000, CRC(41bc3714) SHA1(5a8f7d24a6a697524af7997dcedd214fcaf48768) )
879   ROM_LOAD32_WORD( "mine_export.u11", 0x000002, 0x80000, CRC(75803b10) SHA1(2ff3d966da2992ddcc7e229d979cc1ee623b4900) )
880   ROM_LOAD32_WORD( "mine_export.u8",  0x100000, 0x80000, CRC(0a3e2baf) SHA1(b9ab989cf383cd6ea0aa1ead137558a1a6f5901d) )
881   ROM_LOAD32_WORD( "mine_export.u12", 0x100002, 0x80000, CRC(26c01532) SHA1(ec68ad44b703609c7bc27275f8d9250a16d9067c) )
882
883   ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
884
885   ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
886
887   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
888ROM_END
889
890// 602/1 - 10 Credit Multiplier / 9 Line Multiline.
891// Dolphin Treasure - Export B - 06/12/96.
892// All devices are 27c4002 instead of 27c4096.
893ROM_START( dolphtre )
894   ARISTOCRAT_MK5_BIOS
895   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
896   ROM_LOAD32_WORD( "dolphin_treasure_export.u7",  0x000000, 0x80000, CRC(97e3e4d0) SHA1(211b9b9e0f25dfaf9d1dfe1d3d88592522aa6f07) )
897   ROM_LOAD32_WORD( "dolphin_treasure_export.u11", 0x000002, 0x80000, CRC(de221eb5) SHA1(0e550e90b7fd5670f3f3a8589239c342ed70dc3d) )
898   ROM_LOAD32_WORD( "dolphin_treasure_export.u8",  0x100000, 0x80000, CRC(cb3ca8b6) SHA1(dba8bdaa406c07870f95241466359e39a012a70b) )
899   ROM_LOAD32_WORD( "dolphin_treasure_export.u12", 0x100002, 0x80000, CRC(8ee1c2d3) SHA1(e6ecaaac0cb4518ecc0d36532ab532f46e3e628b) )
900
901   ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
902
903   ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
904
905   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
906ROM_END
907
908// 603(a) - 3,5,10,25,50 Credit Multiplier / 20 Line Multiline.
909// Cash Chameleon 100cm - Export B - 06/12/96.
910// Marked as DHG4078.
911ROM_START( cashcham )
912   ARISTOCRAT_MK5_BIOS
913   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
914   ROM_LOAD32_WORD( "dhg4078_cash_chameleon.u7",  0x000000, 0x80000, CRC(cb407a19) SHA1(d98421d6548e48b413f6dfcab4e240e98fcc9a69) )
915   ROM_LOAD32_WORD( "dhg4078_cash_chameleon.u11", 0x000002, 0x80000, CRC(94d73843) SHA1(ab236750c67e7fff3af831f1d03f45c45f280fd1) )
916   ROM_LOAD32_WORD( "dhg4078_cash_chameleon.u8",  0x100000, 0x80000, CRC(4cae8a5d) SHA1(3232461afd75ce71f8a2cb4ac7e9a3caeb8aabcd) )
917   ROM_LOAD32_WORD( "dhg4078_cash_chameleon.u12", 0x100002, 0x80000, CRC(39e17f0b) SHA1(25a0364fa45e4e78d6c365b0739606e71597bd71) )
918
919   ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
920
921   ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
922
923   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
924ROM_END
925
926711ROM_START( goldprmd )
927712   ARISTOCRAT_MK5_BIOS
928713   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
r249889r249890
938723   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
939724ROM_END
940725
941// 569/8 - 10 Credit Multiplier / 9 Line Multiline.
942// Wild Cougar - Export D - 19/05/97.
943// All devices are 27c4002 instead of 27c4096.
944ROM_START( wldcougr )
945   ARISTOCRAT_MK5_BIOS
946   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
947   ROM_LOAD32_WORD( "wild_cougar_export.u7",  0x000000, 0x80000, CRC(7ada053f) SHA1(5102b0b9db505454624750a3fd6db455682538f3) )
948   ROM_LOAD32_WORD( "wild_cougar_export.u11", 0x000002, 0x80000, CRC(69a78695) SHA1(1ed89cf38dc85f752449a858cd9558bed235af58) )
949   ROM_LOAD32_WORD( "wild_cougar_export.u8",  0x100000, 0x80000, CRC(496b0295) SHA1(237183a192ad9b4bc133014cc83149d4a7062785) )
950   ROM_LOAD32_WORD( "wild_cougar_export.u12", 0x100002, 0x80000, CRC(fe2bafdc) SHA1(e8b454db44a532d75b3aff323855340695688f0f) )
951
952   ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
953
954   ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
955
956   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
957ROM_END
958
959// 593 - 10 Credit Multiplier / 9 Line Multiline.
960// Bumble Bugs - Export D - 05/07/97.
961// All devices are 27c4002 instead of 27c4096.
962// Marked as CHG029604 and 92.691%
963ROM_START( bumblbug )
964   ARISTOCRAT_MK5_BIOS
965   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
966   ROM_LOAD32_WORD( "bumble_bugs_export.u7",  0x000000, 0x80000, CRC(ec605a36) SHA1(114e0840cfbd0c64645a5a33065db85462a0ba2d) )   // 92.691%
967   ROM_LOAD32_WORD( "bumble_bugs_export.u11", 0x000002, 0x80000, CRC(17b154bd) SHA1(efdf307670a3d74f7980fec2d2197d837d4c26e2) )   // 92.691%
968   ROM_LOAD32_WORD( "bumble_bugs_export.u8",  0x100000, 0x80000, CRC(e0c01d01) SHA1(9153129fd348a97da7cccf002e5d03e4b4db9264) )   // base
969   ROM_LOAD32_WORD( "bumble_bugs_export.u12", 0x100002, 0x80000, CRC(28700d5d) SHA1(87a583cd487da6cb4c2da5f62297f0e577269fae) )   // base
970
971   ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
972
973   ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
974
975   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
976ROM_END
977
978// 586/7(b) - 10 Credit Multiplier / 9 Line Multiline.
979// Penguin Pays - Export B - 14/07/97.       
980// All devices are 27c4002 instead of 27c4096.
981ROM_START( pengpays )
982   ARISTOCRAT_MK5_BIOS
983   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
984   ROM_LOAD32_WORD( "penguin_pays_export.u7",  0x000000, 0x80000, CRC(19d75260) SHA1(798472b1b5d8f5ca99d8bfe57e99a76686f0aa3f) )
985   ROM_LOAD32_WORD( "penguin_pays_export.u11", 0x000002, 0x80000, CRC(2b010813) SHA1(a383997308881a3ac35de56fe10e3852fa89fdf6) )
986   ROM_LOAD32_WORD( "penguin_pays_export.u8",  0x100000, 0x80000, CRC(6aeaebc8) SHA1(6f70b14e9f4e9940512bd6e89bc9ccbfe1f4a81f) )
987   ROM_LOAD32_WORD( "penguin_pays_export.u12", 0x100002, 0x80000, CRC(d959a048) SHA1(92f69090d599f95b48e79213e5b7d486e083d8f4) )
988
989   ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
990
991   ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
992
993   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
994ROM_END
995
996// MV4098 - 10 Credit Multiplier / 9 Line Multiline.
997// BOOT SCOOTIN' - Export A - 25/08/99.
998// All devices are 27c4002 instead of 27c4096.
999// Marked as GHG1012 and 92.767%
1000ROM_START( bootsctn )
1001   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
1002   ROM_LOAD32_WORD( "ghg1012_boot_scootin.u7",  0x000000, 0x80000, CRC(ca26f31e) SHA1(e8da31cc8d12bf8a28f1ca4d796259ae9010f8af) )   // 92.767%
1003   ROM_LOAD32_WORD( "ghg1012_boot_scootin.u11", 0x000002, 0x80000, CRC(61da1767) SHA1(83d4df1060975f03f291b9119c0d2b8debb0fb60) )   // 92.767%
1004   ROM_LOAD32_WORD( "ghg1012_boot_scootin.u8",  0x100000, 0x80000, CRC(9ae4d616) SHA1(60d4d36f75685dfe21f914fa4682cd6a64fcfa58) )   // base
1005   ROM_LOAD32_WORD( "ghg1012_boot_scootin.u12", 0x100002, 0x80000, CRC(2c50c083) SHA1(ae3b01200d152df9b2966b5308c71e9d1ad43d78) )   // base
1006   ROM_LOAD32_WORD( "ghg1012_boot_scootin.u9",  0x200000, 0x80000, CRC(c0a4920d) SHA1(d2c6d259d2e067b6e5ad72a6ef164aac7d72bc5a) )   // base
1007   ROM_LOAD32_WORD( "ghg1012_boot_scootin.u13", 0x200002, 0x80000, CRC(55716d82) SHA1(5b9982a49201842e9551a9c763a6babbb47a863e) )   // base
1008   ROM_LOAD32_WORD( "ghg1012_boot_scootin.u10", 0x300000, 0x80000, CRC(3ecdf7ee) SHA1(9d658a22da737daafdf6cb0d49009796036d04b1) )   // base
1009   ROM_LOAD32_WORD( "ghg1012_boot_scootin.u14", 0x300002, 0x80000, CRC(18934c51) SHA1(f7c9c95c687dbfe89747e7877157fde37bc1119e) )   // base
1010
1011   ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
1012
1013   ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
1014
1015   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
1016ROM_END
1017
1018// MV4104  3,5,10,20,25,50 Credit Multiplier / 9-20 Line Multiline.
1019// CUCKOO - Export C - 02/02/00.
1020// All devices are 27c4002 instead of 27c4096.
1021ROM_START( cuckoo )
1022   ARISTOCRAT_MK5_BIOS
1023   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
1024   ROM_LOAD32_WORD( "mv4104_cuckoo.u7",  0x000000, 0x80000, CRC(0bd17338) SHA1(b8f467bdf8d76533a2b7d44fe93be414f25a3c31) )   //
1025   ROM_LOAD32_WORD( "mv4104_cuckoo.u11", 0x000002, 0x80000, CRC(4c407deb) SHA1(57589e61a376ddff99cd420eb47bf8c902c6a249) )
1026   ROM_LOAD32_WORD( "mv4104_cuckoo.u8",  0x100000, 0x80000, CRC(33f52052) SHA1(89cbfe588d91244adff4c520fa94962d69ff20bf) )
1027   ROM_LOAD32_WORD( "mv4104_cuckoo.u12", 0x100002, 0x80000, CRC(00bb7597) SHA1(f4d6b21091e320a82d59477469340633b001ed0d) )
1028
1029   ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
1030
1031   ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
1032
1033   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
1034ROM_END
1035
1036// MV4115 - 5,10,20 Credit Multiplier / 9 Line Multiline.
1037// Magic Mask [Reel Game] - Export A - 09/05/2000.   
1038726ROM_START( magicmsk )
1039727   ARISTOCRAT_MK5_BIOS
1040728   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
r249889r249890
1050738   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
1051739ROM_END
1052740
1053// MV4115 - 5,10,20 Credit Multiplier / 9 Line Multiline.
1054// Magic Mask [Reel Game] - Export A - 09/05/2000.   
1055// Alternate set with identical description, but way different
1056// than the parent. All devices are 27c4002 instead of 27c4096.
1057//
1058// romcmp magicmsk.zip magicmska.zip
1059// 4 and 4 files
1060// magicmsk.u12    mv4115_magic_mask.u12    21.547699%
1061// magicmsk.u8     mv4115_magic_mask.u8     21.138954%
1062// magicmsk.u11    mv4115_magic_mask.u11    17.786026%
1063// magicmsk.u7     mv4115_magic_mask.u7     16.893578%
1064ROM_START( magicmska )
1065   ARISTOCRAT_MK5_BIOS
1066   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
1067   ROM_LOAD32_WORD( "mv4115_magic_mask.u7",  0x000000, 0x80000, CRC(452a19c9) SHA1(aab1f4ccfc6cdb382f7a0e85491614cc58811a08) )
1068   ROM_LOAD32_WORD( "mv4115_magic_mask.u11", 0x000002, 0x80000, CRC(c57601f3) SHA1(1616a424b41ad6fea6383a08d5352e8240433374) )
1069   ROM_LOAD32_WORD( "mv4115_magic_mask.u8",  0x100000, 0x80000, CRC(607d7447) SHA1(064dbfe8b52eebe1be7a41735da3fa01eacd1686) )
1070   ROM_LOAD32_WORD( "mv4115_magic_mask.u12", 0x100002, 0x80000, CRC(cf4cd569) SHA1(408edcd746587d249c4286f7a99f33ad94214f7c) )
741GAME( 1995, aristmk5, 0,        aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "MKV Set/Clear Chips (USA)", MACHINE_NOT_WORKING|MACHINE_IS_BIOS_ROOT )
1071742
1072   ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
1073
1074   ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
1075
1076   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
1077ROM_END
1078
1079// MV4124/1 - 5,10,25,50 Credit Multiplier / 20 Line Multiline.
1080// Adonis [Reel Game] - Export B - 31/07/01.
1081// Marked as BHG1284.
1082ROM_START( adonise )
1083   ARISTOCRAT_MK5_BIOS
1084   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
1085   ROM_LOAD32_WORD( "bhg1284_mv4124_adonis.u7",  0x000000, 0x80000, CRC(ed6254d7) SHA1(d2b790fdd7f5fc7b78fcfc4c96d0fc272ccf8da6) )
1086   ROM_LOAD32_WORD( "bhg1284_mv4124_adonis.u11", 0x000002, 0x80000, CRC(1f629286) SHA1(bce380a6a76c77bc790436bd6f94474a1db0c231) )
1087   ROM_LOAD32_WORD( "bhg1284_mv4124_adonis.u8",  0x100000, 0x80000, CRC(b756c96d) SHA1(494df20090d415e83d599023203c13273e7925ad) )
1088   ROM_LOAD32_WORD( "bhg1284_mv4124_adonis.u12", 0x100002, 0x80000, CRC(1d3b6b8f) SHA1(1ddcfd7323cc7e79d3e39d913fdb5cf5cd53d56d) )
1089
1090   ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
1091
1092   ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
1093
1094   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
1095ROM_END
1096
1097// MV4115/6 - 9/20 Line Multiline Multiplier.
1098// Party Gras [Reel Game] - Export A - 10/11/2001.
1099// All devices are 27c4002 instead of 27c4096.
1100ROM_START( partygrs )
1101   ARISTOCRAT_MK5_BIOS
1102   ROM_REGION( 0x400000, "game_prg", ROMREGION_ERASEFF )
1103   ROM_LOAD32_WORD( "mv4115-6_party_gras.u7",  0x000000, 0x80000, CRC(53047385) SHA1(efe50e8785047986513f2de63d2425ba80417481) )
1104   ROM_LOAD32_WORD( "mv4115-6_party_gras.u11", 0x000002, 0x80000, CRC(f8bd9f7f) SHA1(a8c67a644f9090890e8f33e620fe0bb4633bd6e8) )
1105   ROM_LOAD32_WORD( "mv4115-6_party_gras.u8",  0x100000, 0x80000, CRC(0b98a0fa) SHA1(c9ada21e39472f28cd9b8ec19be7235410ad3e7a) )
1106   ROM_LOAD32_WORD( "mv4115-6_party_gras.u12", 0x100002, 0x80000, CRC(00d1395c) SHA1(d9a66d6cdb5aa4f583d8c23306b1416646cbde93) )
1107
1108   ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
1109
1110   ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
1111
1112   ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
1113ROM_END
1114
1115
1116/*************************
1117*      Game Drivers      *
1118*************************/
1119
1120//    YEAR  NAME       PARENT    MACHINE       INPUT     STATE           INIT      ROT     COMPANY       FULLNAME                                       FLAGS
1121GAME( 1995, aristmk5,  0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "MKV Set/Clear Chips (USA)",                    MACHINE_NOT_WORKING|MACHINE_IS_BIOS_ROOT )
1122
1123743// Dates listed below are for the combination (reel layout), not release dates
1124GAME( 1995, enchfrst,  0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Enchanted Forest (0400122V, Local)",           MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 570/3,    E - 23/06/95
1125GAME( 1995, swthrt2v,  0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Sweet Hearts II (01J01986, Venezuela)",        MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 577/1,    C - 07/09/95
1126GAME( 1996, minemine,  aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Mine, Mine, Mine (Export)",                    MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 559/2,    E - 14/02/96
1127GAME( 1996, dolphntr,  0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Dolphin Treasure (0200424V, NSW/ACT)",         MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 602/1,    B - 06/12/96, Rev 3
1128GAME( 1996, dolphtra,  dolphntr, aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Dolphin Treasure (0100424V, NSW/ACT)",         MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 602/1,    B - 06/12/96, Rev 1.24.4.0
1129GAME( 1996, dolphtre,  aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Dolphin Treasure (Export)",                    MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 602/1,    B - 06/12/96
1130GAME( 1996, cashcham,  aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Cash Chameleon (Export)",                      MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 603(a),   B - 06/12/96
1131GAME( 1997, goldprmd,  aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Golden Pyramids (MV4091, USA)",                MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // MV4091,   B - 13/05/97
1132GAME( 1997, qotn,      0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Queen of the Nile (0200439V, NSW/ACT)",        MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 602/4,    B - 13/05/97
1133GAME( 1997, wldcougr,  aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Wild Cougar (Export)",                         MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 569/8,    D - 19/05/97
1134GAME( 1997, dmdtouch,  0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Diamond Touch (0400433V, Local)",              MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 604,      E - 30/06/97
1135GAME( 1997, bumblbug,  aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Bumble Bugs (Export, 92.691%)",                MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 593,      D - 05/07/97
1136GAME( 1997, pengpays,  aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Penguin Pays (Export)",                        MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 586/7(b)  B - 14/07/97
1137GAME( 1998, adonis,    0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Adonis (0200751V, NSW/ACT)",                   MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 602/9,    A - 25/05/98, Rev 10
1138GAME( 1998, adonisa,   adonis,   aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Adonis (0100751V, NSW/ACT)",                   MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 602/9,    A - 25/05/98, Rev 9
1139GAME( 1998, reelrock,  0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Reelin-n-Rockin (0100779V, Local)",            MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 628,      A - 13/07/98
1140GAME( 1998, indiandr,  0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Indian Dreaming (0100845V, Local)",            MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 628/1,    B - 15/12/98
1141GAME( 1998, chariotc,  0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "The Chariot Challenge (04J00714, NSW/ACT)",    MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 630,      A - 10/08/98, Rev 12
1142GAME( 1999, wtiger,    0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "White Tiger Classic (0200954V, NSW/ACT)",      MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 638/1,    B - 08/07/99
1143GAME( 1999, bootsctn,  aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Boot Scootin' (Export, 92.767%)",              MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // MV4098,   A - 25/08/99
1144GAME( 2000, cuckoo,    aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Cuckoo (MV4104, Export)",                      MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // MV4104,   C - 02/02/00
1145GAME( 2000, magicmsk,  aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Magic Mask (MV4115, Export, set 1)",           MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // MV4115,   A - 09/05/00
1146GAME( 2000, magicmska, magicmsk, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Magic Mask (MV4115, Export, set 2)",           MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // MV4115,   A - 09/05/00
1147GAME( 2000, margmgc,   0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Margarita Magic (01J00101, NSW/ACT)",          MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // JB005,    A - 07/07/00
1148GAME( 2001, geishanz,  0,        aristmk5,     aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Geisha (0101408V, New Zealand)",               MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // MV4127,   A - 05/03/01
1149GAME( 2001, adonise,   aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Adonis (MV4124/1, Export)",                    MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // MV4124/1, B - 31/07/01
1150GAME( 2001, partygrs,  aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Party Gras (MV4115/6, Export)",                MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // MV4115/6, A - 10/11/01
1151
744GAME( 1995, enchfrst, 0,        aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Enchanted Forest (0400122V, Local)",                   MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 570/3,  E - 23/06/95
745GAME( 1995, swthrt2v, 0,        aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Sweet Hearts II (01J01986, Venezuela)",                MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 577/1,  C - 07/09/95
746GAME( 1996, dolphntr, 0,        aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Dolphin Treasure (0200424V, NSW/ACT)",                 MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 602/1,  B - 06/12/96
747GAME( 1996, dolphtra, dolphntr, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Dolphin Treasure (0100424V, NSW/ACT)",                 MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 602/1,  B - 06/12/96
748GAME( 1997, goldprmd, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Golden Pyramids (MV4091, USA)",                        MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // MV4091, B - 13/05/97
749GAME( 1997, qotn,     0,        aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Queen of the Nile (0200439V, NSW/ACT)",                MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 602/4,  B - 13/05/97
750GAME( 1997, dmdtouch, 0,        aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Diamond Touch (0400433V, Local)",                      MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 604,    E - 30/06/97
751GAME( 1998, adonis,   0,        aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Adonis (0200751V, NSW/ACT)",                           MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 602/9,  A - 25/05/98
752GAME( 1998, reelrock, 0,        aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Reelin-n-Rockin (0100779V, Local)",                    MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 628,    A - 13/07/98
753GAME( 1998, indiandr, 0,        aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Indian Dreaming (0100845V, Local)",                    MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 628/1,  B - 15/12/98
754GAME( 1999, wtiger,   0,        aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "White Tiger Classic (0200954V, NSW/ACT)",              MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // 638/1,  B - 08/07/99
755GAME( 2000, magicmsk, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Magic Mask (MV4115, Export)",                          MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // MV4115, A - 09/05/2000
756GAME( 2000, margmgc,  0,        aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Margarita Magic (01J00101, NSW/ACT)",                  MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // JB005,  A - 07/07/2000
757GAME( 2001, geishanz, 0,        aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0,  "Aristocrat", "Geisha (0101408V, New Zealand)",                       MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )  // MV4127, A - 05/03/01
trunk/src/mame/drivers/atari400.c
r249889r249890
739739
740740   PORT_START("keyboard.1")
741741   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
742   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
742   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) // None!
743743   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
744744   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
745745   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
trunk/src/mame/drivers/bbc.c
r249889r249890
3030    ARM1  - ARM Evaluation System
3131    ADB20 - Master Compact
3232
33
34    MESS Driver By:
35
36    Gordon Jefferyes
37    mess_bbc@romvault.com
38    Nigel Barnes
39    ngbarnes@hotmail.com
40
3341******************************************************************************/
3442
3543/* Core includes */
r249889r249890
4957/* Devices */
5058#include "imagedev/flopdrv.h"
5159#include "formats/bbc_dsk.h"
52//#include "formats/fsd_dsk.h"
5360#include "imagedev/cassette.h"
5461#include "formats/uef_cas.h"
5562#include "formats/csw_cas.h"
r249889r249890
168175   AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)  /*    fe08-fe0F  6850 ACIA      Serial controller               */
169176   AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
170177   AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w)                                            /*    fe10-fe17  Serial ULA     Serial system chip              */
171   AM_RANGE(0xfe18, 0xfe1f) AM_READ_PORT("STATID")                                                             /*    fe18-fe1f  INTOFF/STATID  ECONET Interrupt Off / ID No.   */
178   AM_RANGE(0xfe18, 0xfe1f) AM_READ_PORT("S11")                                                                /*    fe18-fe1f  INTOFF/STATID  ECONET Interrupt Off / ID No.   */
172179   AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w)                                                           /* R: fe20-fe2f  INTON          ECONET Interrupt On             */
173180                                                                                    /* W: fe20-fe2f  Video ULA      Video system chip               */
174181   AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)                          /*    fe40-fe5f  6522 VIA       SYSTEM VIA                      */
r249889r249890
187194   AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w)                     /*    8000-bfff                 Paged ROM                       */
188195   AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectb_w)                         /* R: fe30-fe3f  NC             Not Connected                   */
189196                                                                        /* W: fe30-fe3f  84LS161        Paged ROM selector              */
190   AM_RANGE(0xfe80, 0xfe83) AM_DEVICE("i8271", i8271_device, map)                              /*    fe80-fe83  8271 FDC       Floppy disc controller          */
191   AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("i8271", i8271_device, data_r, data_w)             /*    fe84-fe9f  8271 FDC       Floppy disc controller          */
197   AM_RANGE(0xfe80, 0xfe83) AM_DEVICE("i8271" , i8271_device, map)                             /*    fe80-fe9f  8271 FDC       Floppy disc controller          */
198   AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("i8271", i8271_device, data_r, data_w)             /*    fe80-fe9f  8271 FDC       Floppy disc controller          */
192199   AM_IMPORT_FROM(bbc_base)
193200ADDRESS_MAP_END
194201
r249889r249890
279286ADDRESS_MAP_END
280287
281288
289static const rgb_t bbc_palette[8]=
290{
291   rgb_t(0x0ff,0x0ff,0x0ff),
292   rgb_t(0x000,0x0ff,0x0ff),
293   rgb_t(0x0ff,0x000,0x0ff),
294   rgb_t(0x000,0x000,0x0ff),
295   rgb_t(0x0ff,0x0ff,0x000),
296   rgb_t(0x000,0x0ff,0x000),
297   rgb_t(0x0ff,0x000,0x000),
298   rgb_t(0x000,0x000,0x000)
299};
300
301PALETTE_INIT_MEMBER(bbc_state, bbc)
302{
303   palette.set_pen_colors(0, bbc_palette, ARRAY_LENGTH(bbc_palette));
304}
305
306
282307INPUT_CHANGED_MEMBER(bbc_state::trigger_reset)
283308{
284309   m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? CLEAR_LINE : ASSERT_LINE);
r249889r249890
463488
464489   PORT_MODIFY("COL7")
465490   PORT_DIPNAME(0x01, 0x01, "Screen Mode") PORT_DIPLOCATION("KBD:6")
466   PORT_DIPSETTING(   0x00, "0" )
467   PORT_DIPSETTING(   0x01, "4" )
491   PORT_DIPSETTING(   0x00, "+0" )
492   PORT_DIPSETTING(   0x01, "+4" )
468493
469494   PORT_MODIFY("COL8")
470495   PORT_DIPNAME(0x01, 0x01, "Screen Mode") PORT_DIPLOCATION("KBD:7")
471   PORT_DIPSETTING(   0x00, "0" )
472   PORT_DIPSETTING(   0x01, "2" )
496   PORT_DIPSETTING(   0x00, "+0" )
497   PORT_DIPSETTING(   0x01, "+2" )
473498
474499   PORT_MODIFY("COL9")
475500   PORT_DIPNAME(0x01, 0x01, "Screen Mode") PORT_DIPLOCATION("KBD:8")
476   PORT_DIPSETTING(   0x00, "0" )
477   PORT_DIPSETTING(   0x01, "1" )
501   PORT_DIPSETTING(   0x00, "+0" )
502   PORT_DIPSETTING(   0x01, "+1" )
478503INPUT_PORTS_END
479504
480505
481static INPUT_PORTS_START(bbcb_links)
482   PORT_START("STATID")
483   PORT_DIPNAME(0xff, 0xfe, "Econet ID") PORT_DIPLOCATION("S11:0,1,2,3,4,5,6,7")
506static INPUT_PORTS_START(bbc_links)
507   PORT_START("S11")
508   PORT_DIPNAME(0xff, 0xfe, "Econet ID") PORT_DIPLOCATION("S11:1,2,3,4,5,6,7,8")
484509   PORT_DIPSETTING(   0x00,   "0" )    PORT_DIPSETTING(   0x01,   "1" )    PORT_DIPSETTING(   0x02,   "2" )    PORT_DIPSETTING(   0x03,   "3" )    PORT_DIPSETTING(   0x04,   "4" )
485510   PORT_DIPSETTING(   0x05,   "5" )    PORT_DIPSETTING(   0x06,   "6" )    PORT_DIPSETTING(   0x07,   "7" )    PORT_DIPSETTING(   0x08,   "8" )    PORT_DIPSETTING(   0x09,   "9" )
486511   PORT_DIPSETTING(   0x0a,  "10" )    PORT_DIPSETTING(   0x0b,  "11" )    PORT_DIPSETTING(   0x0c,  "12" )    PORT_DIPSETTING(   0x0d,  "13" )    PORT_DIPSETTING(   0x0e,  "14" )
r249889r249890
536561INPUT_PORTS_END
537562
538563
539static INPUT_PORTS_START(bbcbp_links)
540   PORT_START("STATID")
541   PORT_DIPNAME(0xff, 0xfe, "Econet ID") PORT_DIPLOCATION("S23:0,1,2,3,4,5,6,7")
542   PORT_DIPSETTING(   0x00,   "0" )    PORT_DIPSETTING(   0x01,   "1" )    PORT_DIPSETTING(   0x02,   "2" )    PORT_DIPSETTING(   0x03,   "3" )    PORT_DIPSETTING(   0x04,   "4" )
543   PORT_DIPSETTING(   0x05,   "5" )    PORT_DIPSETTING(   0x06,   "6" )    PORT_DIPSETTING(   0x07,   "7" )    PORT_DIPSETTING(   0x08,   "8" )    PORT_DIPSETTING(   0x09,   "9" )
544   PORT_DIPSETTING(   0x0a,  "10" )    PORT_DIPSETTING(   0x0b,  "11" )    PORT_DIPSETTING(   0x0c,  "12" )    PORT_DIPSETTING(   0x0d,  "13" )    PORT_DIPSETTING(   0x0e,  "14" )
545   PORT_DIPSETTING(   0x0f,  "15" )    PORT_DIPSETTING(   0x10,  "16" )    PORT_DIPSETTING(   0x11,  "17" )    PORT_DIPSETTING(   0x12,  "18" )    PORT_DIPSETTING(   0x13,  "19" )
546   PORT_DIPSETTING(   0x14,  "20" )    PORT_DIPSETTING(   0x15,  "21" )    PORT_DIPSETTING(   0x16,  "22" )    PORT_DIPSETTING(   0x17,  "23" )    PORT_DIPSETTING(   0x18,  "24" )
547   PORT_DIPSETTING(   0x19,  "25" )    PORT_DIPSETTING(   0x1a,  "26" )    PORT_DIPSETTING(   0x1b,  "27" )    PORT_DIPSETTING(   0x1c,  "28" )    PORT_DIPSETTING(   0x1d,  "29" )
548   PORT_DIPSETTING(   0x1e,  "30" )    PORT_DIPSETTING(   0x1f,  "31" )    PORT_DIPSETTING(   0x20,  "32" )    PORT_DIPSETTING(   0x21,  "33" )    PORT_DIPSETTING(   0x22,  "34" )
549   PORT_DIPSETTING(   0x23,  "35" )    PORT_DIPSETTING(   0x24,  "36" )    PORT_DIPSETTING(   0x25,  "37" )    PORT_DIPSETTING(   0x26,  "38" )    PORT_DIPSETTING(   0x27,  "39" )
550   PORT_DIPSETTING(   0x28,  "40" )    PORT_DIPSETTING(   0x29,  "41" )    PORT_DIPSETTING(   0x2a,  "42" )    PORT_DIPSETTING(   0x2b,  "43" )    PORT_DIPSETTING(   0x2c,  "44" )
551   PORT_DIPSETTING(   0x2d,  "45" )    PORT_DIPSETTING(   0x2e,  "46" )    PORT_DIPSETTING(   0x2f,  "47" )    PORT_DIPSETTING(   0x30,  "48" )    PORT_DIPSETTING(   0x31,  "49" )
552   PORT_DIPSETTING(   0x32,  "50" )    PORT_DIPSETTING(   0x33,  "51" )    PORT_DIPSETTING(   0x34,  "52" )    PORT_DIPSETTING(   0x35,  "53" )    PORT_DIPSETTING(   0x36,  "54" )
553   PORT_DIPSETTING(   0x37,  "15" )    PORT_DIPSETTING(   0x38,  "56" )    PORT_DIPSETTING(   0x39,  "57" )    PORT_DIPSETTING(   0x3a,  "58" )    PORT_DIPSETTING(   0x3b,  "59" )
554   PORT_DIPSETTING(   0x3c,  "60" )    PORT_DIPSETTING(   0x3d,  "61" )    PORT_DIPSETTING(   0x3e,  "62" )    PORT_DIPSETTING(   0x3f,  "63" )    PORT_DIPSETTING(   0x40,  "64" )
555   PORT_DIPSETTING(   0x41,  "65" )    PORT_DIPSETTING(   0x42,  "66" )    PORT_DIPSETTING(   0x43,  "67" )    PORT_DIPSETTING(   0x44,  "68" )    PORT_DIPSETTING(   0x45,  "69" )
556   PORT_DIPSETTING(   0x46,  "70" )    PORT_DIPSETTING(   0x47,  "71" )    PORT_DIPSETTING(   0x48,  "72" )    PORT_DIPSETTING(   0x49,  "73" )    PORT_DIPSETTING(   0x4a,  "74" )
557   PORT_DIPSETTING(   0x4b,  "75" )    PORT_DIPSETTING(   0x4c,  "76" )    PORT_DIPSETTING(   0x4d,  "77" )    PORT_DIPSETTING(   0x4e,  "78" )    PORT_DIPSETTING(   0x4f,  "79" )
558   PORT_DIPSETTING(   0x50,  "80" )    PORT_DIPSETTING(   0x51,  "81" )    PORT_DIPSETTING(   0x52,  "82" )    PORT_DIPSETTING(   0x53,  "83" )    PORT_DIPSETTING(   0x54,  "84" )
559   PORT_DIPSETTING(   0x55,  "85" )    PORT_DIPSETTING(   0x56,  "86" )    PORT_DIPSETTING(   0x57,  "87" )    PORT_DIPSETTING(   0x58,  "88" )    PORT_DIPSETTING(   0x59,  "89" )
560   PORT_DIPSETTING(   0x5a,  "90" )    PORT_DIPSETTING(   0x5b,  "91" )    PORT_DIPSETTING(   0x5c,  "92" )    PORT_DIPSETTING(   0x5d,  "93" )    PORT_DIPSETTING(   0x5e,  "94" )
561   PORT_DIPSETTING(   0x5f,  "95" )    PORT_DIPSETTING(   0x60,  "96" )    PORT_DIPSETTING(   0x61,  "97" )    PORT_DIPSETTING(   0x62,  "98" )    PORT_DIPSETTING(   0x63,  "99" )
562   PORT_DIPSETTING(   0x64, "100" )    PORT_DIPSETTING(   0x65, "101" )    PORT_DIPSETTING(   0x66, "102" )    PORT_DIPSETTING(   0x67, "103" )    PORT_DIPSETTING(   0x68, "104" )
563   PORT_DIPSETTING(   0x69, "105" )    PORT_DIPSETTING(   0x6a, "106" )    PORT_DIPSETTING(   0x6b, "107" )    PORT_DIPSETTING(   0x6c, "108" )    PORT_DIPSETTING(   0x6d, "109" )
564   PORT_DIPSETTING(   0x6e, "110" )    PORT_DIPSETTING(   0x6f, "111" )    PORT_DIPSETTING(   0x70, "112" )    PORT_DIPSETTING(   0x71, "113" )    PORT_DIPSETTING(   0x72, "114" )
565   PORT_DIPSETTING(   0x73, "115" )    PORT_DIPSETTING(   0x74, "116" )    PORT_DIPSETTING(   0x75, "117" )    PORT_DIPSETTING(   0x76, "118" )    PORT_DIPSETTING(   0x77, "119" )
566   PORT_DIPSETTING(   0x78, "120" )    PORT_DIPSETTING(   0x79, "121" )    PORT_DIPSETTING(   0x7a, "122" )    PORT_DIPSETTING(   0x7b, "123" )    PORT_DIPSETTING(   0x7c, "124" )
567   PORT_DIPSETTING(   0x7d, "125" )    PORT_DIPSETTING(   0x7e, "126" )    PORT_DIPSETTING(   0x7f, "127" )    PORT_DIPSETTING(   0x80, "128" )    PORT_DIPSETTING(   0x81, "129" )
568   PORT_DIPSETTING(   0x82, "130" )    PORT_DIPSETTING(   0x83, "131" )    PORT_DIPSETTING(   0x84, "132" )    PORT_DIPSETTING(   0x85, "133" )    PORT_DIPSETTING(   0x86, "134" )
569   PORT_DIPSETTING(   0x87, "135" )    PORT_DIPSETTING(   0x88, "136" )    PORT_DIPSETTING(   0x89, "137" )    PORT_DIPSETTING(   0x8a, "138" )    PORT_DIPSETTING(   0x8b, "139" )
570   PORT_DIPSETTING(   0x8c, "140" )    PORT_DIPSETTING(   0x8d, "141" )    PORT_DIPSETTING(   0x8e, "142" )    PORT_DIPSETTING(   0x8f, "143" )    PORT_DIPSETTING(   0x90, "144" )
571   PORT_DIPSETTING(   0x91, "145" )    PORT_DIPSETTING(   0x92, "146" )    PORT_DIPSETTING(   0x93, "147" )    PORT_DIPSETTING(   0x94, "148" )    PORT_DIPSETTING(   0x95, "149" )
572   PORT_DIPSETTING(   0x96, "150" )    PORT_DIPSETTING(   0x97, "151" )    PORT_DIPSETTING(   0x98, "152" )    PORT_DIPSETTING(   0x99, "153" )    PORT_DIPSETTING(   0x9a, "154" )
573   PORT_DIPSETTING(   0x9b, "155" )    PORT_DIPSETTING(   0x9c, "156" )    PORT_DIPSETTING(   0x9d, "157" )    PORT_DIPSETTING(   0x9e, "158" )    PORT_DIPSETTING(   0x9f, "159" )
574   PORT_DIPSETTING(   0xa0, "160" )    PORT_DIPSETTING(   0xa1, "161" )    PORT_DIPSETTING(   0xa2, "162" )    PORT_DIPSETTING(   0xa3, "163" )    PORT_DIPSETTING(   0xa4, "164" )
575   PORT_DIPSETTING(   0xa5, "165" )    PORT_DIPSETTING(   0xa6, "166" )    PORT_DIPSETTING(   0xa7, "167" )    PORT_DIPSETTING(   0xa8, "168" )    PORT_DIPSETTING(   0xa9, "169" )
576   PORT_DIPSETTING(   0xaa, "170" )    PORT_DIPSETTING(   0xab, "171" )    PORT_DIPSETTING(   0xac, "172" )    PORT_DIPSETTING(   0xad, "173" )    PORT_DIPSETTING(   0xae, "174" )
577   PORT_DIPSETTING(   0xaf, "175" )    PORT_DIPSETTING(   0xb0, "176" )    PORT_DIPSETTING(   0xb1, "177" )    PORT_DIPSETTING(   0xb2, "178" )    PORT_DIPSETTING(   0xb3, "179" )
578   PORT_DIPSETTING(   0xb4, "180" )    PORT_DIPSETTING(   0xb5, "181" )    PORT_DIPSETTING(   0xb6, "182" )    PORT_DIPSETTING(   0xb7, "183" )    PORT_DIPSETTING(   0xb8, "184" )
579   PORT_DIPSETTING(   0xb9, "185" )    PORT_DIPSETTING(   0xba, "186" )    PORT_DIPSETTING(   0xbb, "187" )    PORT_DIPSETTING(   0xbc, "188" )    PORT_DIPSETTING(   0xbd, "189" )
580   PORT_DIPSETTING(   0xbe, "190" )    PORT_DIPSETTING(   0xbf, "191" )    PORT_DIPSETTING(   0xc0, "192" )    PORT_DIPSETTING(   0xc1, "193" )    PORT_DIPSETTING(   0xc2, "194" )
581   PORT_DIPSETTING(   0xc3, "195" )    PORT_DIPSETTING(   0xc4, "196" )    PORT_DIPSETTING(   0xc5, "197" )    PORT_DIPSETTING(   0xc6, "198" )    PORT_DIPSETTING(   0xc7, "199" )
582   PORT_DIPSETTING(   0xc8, "200" )    PORT_DIPSETTING(   0xc9, "201" )    PORT_DIPSETTING(   0xca, "202" )    PORT_DIPSETTING(   0xcb, "203" )    PORT_DIPSETTING(   0xcc, "204" )
583   PORT_DIPSETTING(   0xcd, "205" )    PORT_DIPSETTING(   0xce, "206" )    PORT_DIPSETTING(   0xcf, "207" )    PORT_DIPSETTING(   0xd0, "208" )    PORT_DIPSETTING(   0xd1, "209" )
584   PORT_DIPSETTING(   0xd2, "210" )    PORT_DIPSETTING(   0xd3, "211" )    PORT_DIPSETTING(   0xd4, "212" )    PORT_DIPSETTING(   0xd5, "213" )    PORT_DIPSETTING(   0xd6, "214" )
585   PORT_DIPSETTING(   0xd7, "215" )    PORT_DIPSETTING(   0xd8, "216" )    PORT_DIPSETTING(   0xd9, "217" )    PORT_DIPSETTING(   0xda, "218" )    PORT_DIPSETTING(   0xdb, "219" )
586   PORT_DIPSETTING(   0xdc, "220" )    PORT_DIPSETTING(   0xdd, "221" )    PORT_DIPSETTING(   0xde, "222" )    PORT_DIPSETTING(   0xdf, "223" )    PORT_DIPSETTING(   0xe0, "224" )
587   PORT_DIPSETTING(   0xe1, "225" )    PORT_DIPSETTING(   0xe2, "226" )    PORT_DIPSETTING(   0xe3, "227" )    PORT_DIPSETTING(   0xe4, "228" )    PORT_DIPSETTING(   0xe5, "229" )
588   PORT_DIPSETTING(   0xe6, "230" )    PORT_DIPSETTING(   0xe7, "231" )    PORT_DIPSETTING(   0xe8, "232" )    PORT_DIPSETTING(   0xe9, "233" )    PORT_DIPSETTING(   0xea, "234" )
589   PORT_DIPSETTING(   0xeb, "235" )    PORT_DIPSETTING(   0xec, "236" )    PORT_DIPSETTING(   0xed, "237" )    PORT_DIPSETTING(   0xee, "238" )    PORT_DIPSETTING(   0xef, "239" )
590   PORT_DIPSETTING(   0xf0, "240" )    PORT_DIPSETTING(   0xf1, "241" )    PORT_DIPSETTING(   0xf2, "242" )    PORT_DIPSETTING(   0xf3, "243" )    PORT_DIPSETTING(   0xf4, "244" )
591   PORT_DIPSETTING(   0xf5, "245" )    PORT_DIPSETTING(   0xf6, "246" )    PORT_DIPSETTING(   0xf7, "247" )    PORT_DIPSETTING(   0xf8, "248" )    PORT_DIPSETTING(   0xf9, "249" )
592   PORT_DIPSETTING(   0xfa, "250" )    PORT_DIPSETTING(   0xfb, "251" )    PORT_DIPSETTING(   0xfc, "252" )    PORT_DIPSETTING(   0xfd, "253" )    PORT_DIPSETTING(   0xfe, "254" )
593   PORT_DIPSETTING(   0xff, "255" )
594INPUT_PORTS_END
595
596
597564static INPUT_PORTS_START(bbc_joy)
598565   PORT_START("JOY0")
599566   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_MINMAX(0x0,0xff ) PORT_PLAYER(1)
r249889r249890
633600   PORT_INCLUDE(bbc_config)
634601   PORT_INCLUDE(bbc_keyboard)
635602   PORT_INCLUDE(bbc_dipswitch)
636   PORT_INCLUDE(bbcb_links)
603   PORT_INCLUDE(bbc_links)
637604   PORT_INCLUDE(bbc_joy)
638605INPUT_PORTS_END
639606
640static INPUT_PORTS_START(bbcbp)
641   PORT_INCLUDE(bbc_config)
642   PORT_INCLUDE(bbc_keyboard)
643   PORT_INCLUDE(bbc_dipswitch)
644   PORT_INCLUDE(bbcbp_links)
645   PORT_INCLUDE(bbc_joy)
646INPUT_PORTS_END
647
648607static INPUT_PORTS_START(abc)
649608   PORT_INCLUDE(bbc_keyboard)
650609   PORT_INCLUDE(bbc_keypad)
651   PORT_INCLUDE(bbcbp_links)
610   PORT_INCLUDE(bbc_dipswitch)
611   PORT_INCLUDE(bbc_links)
652612   PORT_INCLUDE(bbc_joy)
653613INPUT_PORTS_END
654614
r249889r249890
675635}
676636
677637
678FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_bbc )
679   FLOPPY_BBC_DFS_FORMAT,
680   FLOPPY_BBC_CPM_FORMAT
681   //FLOPPY_FSD_FORMAT
638FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_525sd )
639   FLOPPY_BBC_SSD_525_FORMAT,
640   FLOPPY_BBC_DSD_525_FORMAT
682641FLOPPY_FORMATS_END
683642
684FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_bbcm )
685   FLOPPY_BBC_DFS_FORMAT,
686   FLOPPY_BBC_ADFS_FORMAT,
687   FLOPPY_BBC_CPM_FORMAT,
688   FLOPPY_BBC_DOS_FORMAT
689   //FLOPPY_FSD_FORMAT
643FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_525dd )
644   FLOPPY_BBC_SSD_525_FORMAT,
645   FLOPPY_BBC_DSD_525_FORMAT,
646   FLOPPY_BBC_ADF_525_FORMAT
690647FLOPPY_FORMATS_END
691648
692FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_bbcmc )
693   FLOPPY_BBC_ADFS_FORMAT
649FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_35dd )
650   FLOPPY_BBC_ADF_35_FORMAT
694651FLOPPY_FORMATS_END
695652
696653static SLOT_INTERFACE_START( bbc_floppies_525 )
r249889r249890
741698
742699static MACHINE_CONFIG_START( bbca, bbc_state )
743700   /* basic machine hardware */
744   MCFG_CPU_ADD("maincpu", M6502, XTAL_16MHz/8)         /* 2.00 MHz */
701   MCFG_CPU_ADD("maincpu", M6502, 2000000)         /* 2.00 MHz */
745702   MCFG_CPU_PROGRAM_MAP(bbca_mem)
746703   MCFG_CPU_VBLANK_INT_DRIVER("screen", bbc_state, bbcb_vsync)      /* screen refresh interrupts */
747704   MCFG_CPU_PERIODIC_INT_DRIVER(bbc_state, bbcb_keyscan, 1000)        /* scan keyboard */
r249889r249890
768725   MCFG_PALETTE_INIT_OWNER(bbc_state,bbc)
769726
770727   MCFG_DEVICE_ADD("saa5050", SAA5050, XTAL_12MHz/2)
771   MCFG_SAA5050_SCREEN_SIZE(40, 25, 40)
728   MCFG_SAA5050_SCREEN_SIZE(40, 24, 40)
772729
773730   /* crtc */
774731   MCFG_MC6845_ADD("mc6845", MC6845, "screen", 2000000)
775732   MCFG_MC6845_SHOW_BORDER_AREA(false)
776   MCFG_MC6845_CHAR_WIDTH(12)
733   MCFG_MC6845_CHAR_WIDTH(8)
777734   MCFG_MC6845_UPDATE_ROW_CB(bbc_state, crtc_update_row)
778   //MCFG_MC6845_OUT_DE_CB(WRITELINE(bbc_state, bbc_de_changed))
779   //MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(bbc_state, bbc_hsync))
780735   MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(bbc_state, bbc_vsync))
781736
782737   MCFG_VIDEO_START_OVERRIDE(bbc_state, bbca)
r249889r249890
785740
786741   /* sound hardware */
787742   MCFG_SPEAKER_STANDARD_MONO("mono")
788   MCFG_SOUND_ADD("sn76489", SN76489, XTAL_16MHz/4) /* 4 MHz */
743   MCFG_SOUND_ADD("sn76489", SN76489, 4000000) /* 4 MHz */
789744   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
790745
791746   /* cassette */
r249889r249890
812767   MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(bbc_state, write_acia_clock))
813768
814769   /* system via */
815   MCFG_DEVICE_ADD("via6522_0", VIA6522, XTAL_16MHz / 16)
770   MCFG_DEVICE_ADD("via6522_0", VIA6522, 1000000)
816771   MCFG_VIA6522_READPA_HANDLER(READ8(bbc_state, bbcb_via_system_read_porta))
817772   MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_system_read_portb))
818773   MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(bbc_state, bbcb_via_system_write_porta))
r249889r249890
842797   MCFG_DEVICE_ADD("vsm", SPEECHROM, 0)
843798   MCFG_SOUND_ADD("tms5220", TMS5220, 640000)
844799   MCFG_TMS52XX_SPEECHROM("vsm")
845   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
846800
847801   /* user via */
848   MCFG_DEVICE_ADD("via6522_1", VIA6522, XTAL_16MHz / 16)
802   MCFG_DEVICE_ADD("via6522_1", VIA6522, 1000000)
849803   MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_user_read_portb))
850804   MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8("cent_data_out", output_latch_device, write))
851805   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(bbc_state, bbcb_via_user_write_portb))
r249889r249890
864818
865819   /* fdc */
866820   MCFG_DEVICE_ADD("i8271" , I8271 , 0)
867   MCFG_I8271_IRQ_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
821   MCFG_I8271_IRQ_CALLBACK(WRITELINE(bbc_state, bbc_i8271_interrupt))
868822   MCFG_I8271_HDL_CALLBACK(WRITELINE(bbc_state, motor_w))
869823   MCFG_I8271_OPT_CALLBACK(WRITELINE(bbc_state, side_w))
870   MCFG_FLOPPY_DRIVE_ADD("i8271:0", bbc_floppies_525, "qd", bbc_state::floppy_formats_bbc)
871   MCFG_FLOPPY_DRIVE_SOUND(true)
872   MCFG_FLOPPY_DRIVE_ADD("i8271:1", bbc_floppies_525, "qd", bbc_state::floppy_formats_bbc)
873   MCFG_FLOPPY_DRIVE_SOUND(true)
824   MCFG_FLOPPY_DRIVE_ADD("i8271:0", bbc_floppies_525, "qd", bbc_state::floppy_formats_525sd)
825   MCFG_FLOPPY_DRIVE_ADD("i8271:1", bbc_floppies_525, "qd", bbc_state::floppy_formats_525sd)
874826
875827   /* software lists */
828   MCFG_DEVICE_REMOVE("cass_ls_a")
876829   MCFG_SOFTWARE_LIST_ADD("cass_ls_b", "bbcb_cass")
877   MCFG_SOFTWARE_LIST_ADD("flop_ls_b", "bbcb_flop")
878   MCFG_SOFTWARE_LIST_ADD("flop_ls_z80", "bbc_z80_flop")
879   MCFG_SOFTWARE_LIST_ADD("flop_ls_32016", "bbc_32016_flop")
830   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_a", "bbca_cass")
880831MACHINE_CONFIG_END
881832
882833
r249889r249890
889840   MCFG_DEVICE_REMOVE("i8271")
890841
891842   MCFG_WD1770_ADD("wd1770", XTAL_16MHz / 2)
892   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, fdc_intrq_w))
893   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, fdc_drq_w))
843   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
844   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
894845
895   MCFG_FLOPPY_DRIVE_ADD("wd1770:0", bbc_floppies_525, "qd", bbc_state::floppy_formats_bbcm)
846   MCFG_FLOPPY_DRIVE_ADD("wd1770:0", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd)
896847   MCFG_FLOPPY_DRIVE_SOUND(true)
897   MCFG_FLOPPY_DRIVE_ADD("wd1770:1", bbc_floppies_525, "qd", bbc_state::floppy_formats_bbcm)
848   MCFG_FLOPPY_DRIVE_ADD("wd1770:1", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd)
898849   MCFG_FLOPPY_DRIVE_SOUND(true)
899850MACHINE_CONFIG_END
900851
901852
902853static MACHINE_CONFIG_DERIVED( bbcb_de, bbcb )
903854   /* software lists */
855   MCFG_DEVICE_REMOVE("cass_ls_b")
904856   MCFG_SOFTWARE_LIST_ADD("flop_ls_b_de", "bbcb_de_cass")
857   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_b", "bbcb_cass")
905858MACHINE_CONFIG_END
906859
907860
r249889r249890
913866   MCFG_SCREEN_REFRESH_RATE(60)
914867
915868   /* software lists */
869   MCFG_DEVICE_REMOVE("cass_ls_b")
916870   MCFG_SOFTWARE_LIST_ADD("flop_ls_b_us", "bbcb_us_flop")
871   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_b", "bbcb_cass")
917872MACHINE_CONFIG_END
918873
919874
r249889r249890
966921
967922   /* Add 10MB ST-412 Winchester */
968923
969   /* software lists */
970   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a")
971   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
972   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b")
973   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_32016")
974924MACHINE_CONFIG_END
975925
976926
977static MACHINE_CONFIG_DERIVED( acw443, bbcbp )
927static MACHINE_CONFIG_DERIVED( abc210, bbcbp )
978928   /* fdc */
979929   MCFG_DEVICE_REMOVE("wd1770:1")
980930
r249889r249890
986936
987937   /* Add 20MB ST-412 Winchester Cambridge */
988938
989   /* software lists */
990   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a")
991   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
992   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b")
993   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_z80")
994939MACHINE_CONFIG_END
995940
996941
r249889r249890
1004949
1005950   /* Add 10MB ST-412 Winchester */
1006951
1007   /* software lists */
1008   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a")
1009   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
1010   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b")
1011   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_z80")
1012   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_32016")
1013952MACHINE_CONFIG_END
1014953
1015954
r249889r249890
1038977   MCFG_DEVICE_REMOVE("wd1770")
1039978
1040979   /* software lists */
1041   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a")
1042   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
1043   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b")
1044   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_z80")
1045   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_32016")
980   MCFG_DEVICE_REMOVE("cass_ls_a")
981   MCFG_DEVICE_REMOVE("cass_ls_b")
1046982MACHINE_CONFIG_END
1047983
1048984
r249889r249890
1055991
1056992static MACHINE_CONFIG_START( bbcm, bbc_state )
1057993   /* basic machine hardware */
1058   MCFG_CPU_ADD("maincpu", M65SC02, XTAL_16MHz/8)        /* 2.00 MHz */
994   MCFG_CPU_ADD("maincpu", M65SC02, 2000000)        /* 2.00 MHz */
1059995   MCFG_CPU_PROGRAM_MAP(bbcm_mem)
1060996   MCFG_CPU_VBLANK_INT_DRIVER("screen", bbc_state, bbcb_vsync)      /* screen refresh interrupts */
1061997   MCFG_CPU_PERIODIC_INT_DRIVER(bbc_state, bbcb_keyscan, 1000)        /* scan keyboard */
r249889r249890
10821018   MCFG_PALETTE_INIT_OWNER(bbc_state,bbc)
10831019
10841020   MCFG_DEVICE_ADD("saa5050", SAA5050, XTAL_12MHz/2)
1085   MCFG_SAA5050_SCREEN_SIZE(40, 25, 40)
1021   MCFG_SAA5050_SCREEN_SIZE(40, 24, 40)
10861022
10871023   /* crtc */
10881024   MCFG_MC6845_ADD("mc6845", MC6845, "screen", 2000000)
10891025   MCFG_MC6845_SHOW_BORDER_AREA(false)
1090   MCFG_MC6845_CHAR_WIDTH(12)
1026   MCFG_MC6845_CHAR_WIDTH(8)
10911027   MCFG_MC6845_UPDATE_ROW_CB(bbc_state, crtc_update_row)
10921028   MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(bbc_state, bbc_vsync))
10931029
r249889r249890
10951031
10961032   /* sound hardware */
10971033   MCFG_SPEAKER_STANDARD_MONO("mono")
1098   MCFG_SOUND_ADD("sn76489", SN76489, XTAL_16MHz/4) /* 4 MHz */
1034   MCFG_SOUND_ADD("sn76489", SN76489, 4000000) /* 4 MHz */
10991035   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
11001036
11011037   /* rtc and cmos */
r249889r249890
11211057
11221058   /* software lists */
11231059   MCFG_SOFTWARE_LIST_ADD("cass_ls_m", "bbcm_cass")
1124   MCFG_SOFTWARE_LIST_ADD("flop_ls_m", "bbcm_flop")
1125   MCFG_SOFTWARE_LIST_ADD("cart_ls_m", "bbcm_cart")
1126   MCFG_SOFTWARE_LIST_ADD("flop_ls_z80", "bbc_z80_flop")
1127   MCFG_SOFTWARE_LIST_ADD("flop_ls_32016", "bbc_32016_flop")
11281060   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_a", "bbca_cass")
11291061   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_b", "bbcb_cass")
1130   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("flop_ls_b", "bbcb_flop")
1062   MCFG_SOFTWARE_LIST_ADD("cart_ls_m", "bbcm_cart")
11311063
11321064   /* acia */
11331065   MCFG_DEVICE_ADD("acia6850", ACIA6850, 0)
r249889r249890
11491081   MCFG_UPD7002_EOC_CB(bbc_state, BBC_uPD7002_EOC)
11501082
11511083   /* system via */
1152   MCFG_DEVICE_ADD("via6522_0", VIA6522, XTAL_16MHz / 16)
1084   MCFG_DEVICE_ADD("via6522_0", VIA6522, 1000000)
11531085   MCFG_VIA6522_READPA_HANDLER(READ8(bbc_state, bbcb_via_system_read_porta))
11541086   MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_system_read_portb))
11551087   MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(bbc_state, bbcb_via_system_write_porta))
r249889r249890
11571089   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_system_irq_w))
11581090
11591091   /* user via */
1160   MCFG_DEVICE_ADD("via6522_1", VIA6522, XTAL_16MHz / 16)
1092   MCFG_DEVICE_ADD("via6522_1", VIA6522, 1000000)
11611093   MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_user_read_portb))
11621094   MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8("cent_data_out", output_latch_device, write))
11631095   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(bbc_state, bbcb_via_user_write_portb))
r249889r249890
11661098
11671099   /* fdc */
11681100   MCFG_WD1770_ADD("wd1770", XTAL_16MHz / 2)
1169   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, fdc_intrq_w))
1170   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, fdc_drq_w))
1101   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
1102   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
11711103
1172   MCFG_FLOPPY_DRIVE_ADD("wd1770:0", bbc_floppies_525, "qd", bbc_state::floppy_formats_bbcm)
1104   MCFG_FLOPPY_DRIVE_ADD("wd1770:0", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd)
11731105   MCFG_FLOPPY_DRIVE_SOUND(true)
1174   MCFG_FLOPPY_DRIVE_ADD("wd1770:1", bbc_floppies_525, "qd", bbc_state::floppy_formats_bbcm)
1106   MCFG_FLOPPY_DRIVE_ADD("wd1770:1", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd)
11751107   MCFG_FLOPPY_DRIVE_SOUND(true)
11761108
11771109   /* econet */
r249889r249890
11881120
11891121   /* Add 65C102 co-processor */
11901122
1191   /* software lists */
1192   MCFG_SOFTWARE_LIST_ADD("flop_ls_65c102", "bbc_65c102_flop")
11931123MACHINE_CONFIG_END
11941124
11951125
r249889r249890
12051135
12061136
12071137static MACHINE_CONFIG_DERIVED( bbcmet, bbcm )
1138   /* sound hardware */
1139   MCFG_DEVICE_REMOVE("mono")
1140   MCFG_DEVICE_REMOVE("sn76489")
1141
12081142   /* printer */
12091143   MCFG_DEVICE_REMOVE("centronics")
12101144
r249889r249890
12151149   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_m")
12161150   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a")
12171151   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
1218   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_m")
1219   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b")
1220   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_z80")
1221   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_32016")
12221152
12231153   /* acia */
12241154   MCFG_DEVICE_REMOVE("acia6850")
r249889r249890
12381168
12391169   /* Add Intel 80186 co-processor */
12401170
1241   /* software lists */
1242   MCFG_SOFTWARE_LIST_ADD("flop_ls_80186", "bbc_80186_flop")
12431171MACHINE_CONFIG_END
12441172
12451173
r249889r249890
12471175
12481176   /* Add ARM co-processor */
12491177
1250   /* software lists */
1251   MCFG_SOFTWARE_LIST_ADD("flop_ls_arm", "bbc_arm_flop")
12521178MACHINE_CONFIG_END
12531179
12541180
r249889r249890
12671193   MCFG_DEVICE_REMOVE("wd1770")
12681194
12691195   MCFG_WD1772_ADD("wd1772", XTAL_16MHz / 2)
1270   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, fdc_intrq_w))
1271   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, fdc_drq_w))
1196   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
1197   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
12721198
1273   MCFG_FLOPPY_DRIVE_ADD("wd1772:0", bbc_floppies_35, "qd", bbc_state::floppy_formats_bbcmc)
1199   MCFG_FLOPPY_DRIVE_ADD("wd1772:0", bbc_floppies_35, "qd", bbc_state::floppy_formats_35dd)
12741200   MCFG_FLOPPY_DRIVE_SOUND(true)
1275   MCFG_FLOPPY_DRIVE_ADD("wd1772:1", bbc_floppies_35, NULL, bbc_state::floppy_formats_bbcmc)
1201   MCFG_FLOPPY_DRIVE_ADD("wd1772:1", bbc_floppies_35, NULL, bbc_state::floppy_formats_35dd)
12761202   MCFG_FLOPPY_DRIVE_SOUND(true)
12771203
12781204   /* eeprom pcd8572 */
r249889r249890
12821208   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_m")
12831209   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a")
12841210   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
1285   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_m")
1286   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b")
1287   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_z80")
1288   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_32016")
12891211   MCFG_SOFTWARE_LIST_REMOVE("cart_ls_m")
12901212   MCFG_SOFTWARE_LIST_ADD("flop_ls_mc", "bbcmc_flop")
1291   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("flop_ls_pro128s", "pro128s_flop")
12921213MACHINE_CONFIG_END
12931214
12941215
12951216static MACHINE_CONFIG_DERIVED(pro128s, bbcmc)
12961217   /* software lists */
12971218   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_mc")
1298   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_pro128s")
12991219   MCFG_SOFTWARE_LIST_ADD("flop_ls_pro128s", "pro128s_flop")
13001220   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("flop_ls_mc", "bbcmc_flop")
13011221MACHINE_CONFIG_END
r249889r249890
13091229   ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */
13101230
13111231   ROM_REGION(0x14000,"option",0) /* ROM */
1312   /* rom page 12 00000 IC52  SPARE SOCKET */
1313   /* rom page 13 04000 IC88  SPARE SOCKET */
1314   /* rom page 14 08000 IC100 SPARE SOCKET */
1315   /* rom page 15 0c000 IC101 BASIC */
1232   /* rom page 0  00000 SPARE SOCKET */
1233   /* rom page 1  04000 SPARE SOCKET */
1234   /* rom page 2  08000 SPARE SOCKET */
1235   /* rom page 3  0c000 BASIC */
13161236   ROM_DEFAULT_BIOS("os12b2")
13171237   ROM_SYSTEM_BIOS( 0, "os12b2", "OS 1.20 / BASIC2" )
13181238   ROMX_LOAD("os12.rom",   0x10000, 0x4000, CRC(3c14fc70) SHA1(0d9bcaf6a393c9ce2359ed700ddb53c232c2c45d), ROM_BIOS(1)) /* os */
r249889r249890
13261246   ROM_SYSTEM_BIOS( 3, "os10b1", "OS 1.00 / BASIC1" )
13271247   ROMX_LOAD("os10.rom",   0x10000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(4)) /* os */
13281248   ROMX_LOAD("basic1.rom", 0x0c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(4)) /* rom page 3  0c000 */
1329   ROM_SYSTEM_BIOS( 4, "os01b1", "OS 0.10 / BASIC1" )
1249   /* OS0.1 does not support rom paging, load BASIC into all pages */
1250   ROM_SYSTEM_BIOS( 4, "os01b2", "OS 0.10 / BASIC2" )
13301251   ROMX_LOAD("os01.rom",   0x10000, 0x4000, CRC(45ee0980) SHA1(4b0ece6dc139d5d3f4fabd023716fb6f25149b80), ROM_BIOS(5)) /* os */
1331   /* OS0.1 does not support rom paging, load BASIC into all pages */
1332   ROMX_LOAD("basic1.rom", 0x00000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(5)) /* rom page 0  00000 */
1333   ROM_RELOAD(             0x04000, 0x4000 )
1334   ROM_RELOAD(             0x08000, 0x4000 )
1335   ROM_RELOAD(             0x0c000, 0x4000 )
1252   ROMX_LOAD("basic2.rom", 0x00000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(5)) /* rom page 0  00000 */
1253   ROMX_LOAD("basic2.rom", 0x04000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(5)) /* rom page 1  04000 */
1254   ROMX_LOAD("basic2.rom", 0x08000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(5)) /* rom page 2  08000 */
1255   ROMX_LOAD("basic2.rom", 0x0c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(5)) /* rom page 3  0c000 */
1256   ROM_SYSTEM_BIOS( 5, "os01b1", "OS 0.10 / BASIC1" )
1257   ROMX_LOAD("os01.rom",   0x10000, 0x4000, CRC(45ee0980) SHA1(4b0ece6dc139d5d3f4fabd023716fb6f25149b80), ROM_BIOS(6)) /* os */
1258   ROMX_LOAD("basic1.rom", 0x00000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(6)) /* rom page 0  00000 */
1259   ROMX_LOAD("basic1.rom", 0x04000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(6)) /* rom page 1  04000 */
1260   ROMX_LOAD("basic1.rom", 0x08000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(6)) /* rom page 2  08000 */
1261   ROMX_LOAD("basic1.rom", 0x0c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(6)) /* rom page 3  0c000 */
13361262
13371263   ROM_REGION(0x4000, "os", 0)
13381264   ROM_COPY("option", 0x10000, 0, 0x4000)
r249889r249890
13601286   /* rom page 9  24000 */
13611287   /* rom page 10 28000 */
13621288   /* rom page 11 2c000 */
1363   /* rom page 12 30000 IC52  SPARE SOCKET */
1364   /* rom page 13 34000 IC88  SPARE SOCKET */
1365   /* rom page 14 38000 IC100 DFS */
1366   /* rom page 15 3c000 IC101 BASIC */
1289   /* rom page 12 30000 SPARE SOCKET */
1290   /* rom page 13 34000 SPARE SOCKET */
1291   /* rom page 14 38000 DFS */
1292   /* rom page 15 3c000 BASIC */
13671293   ROM_DEFAULT_BIOS("os12b2")
13681294   ROM_SYSTEM_BIOS( 0, "os12b2", "OS 1.20 / BASIC2" )
13691295   ROMX_LOAD("os12.rom",   0x40000, 0x4000, CRC(3c14fc70) SHA1(0d9bcaf6a393c9ce2359ed700ddb53c232c2c45d), ROM_BIOS(1)) /* os */
r249889r249890
13771303   ROM_SYSTEM_BIOS( 3, "os10b1", "OS 1.00 / BASIC1" )
13781304   ROMX_LOAD("os10.rom",   0x40000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(4)) /* os */
13791305   ROMX_LOAD("basic1.rom", 0x3c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(4)) /* rom page 15 3c000 */
1380   ROM_SYSTEM_BIOS( 4, "os01b1", "OS 0.10 / BASIC1" )
1381   ROMX_LOAD("os01.rom",   0x40000, 0x4000, CRC(45ee0980) SHA1(4b0ece6dc139d5d3f4fabd023716fb6f25149b80), ROM_BIOS(5)) /* os */
1382   /* OS0.1 does not support rom paging, load BASIC into all pages */
1383   ROMX_LOAD("basic1.rom", 0x00000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(5)) /* rom page 0 00000 */
1384   ROM_RELOAD(             0x04000, 0x4000 )
1385   ROM_RELOAD(             0x08000, 0x4000 )
1386   ROM_RELOAD(             0x0c000, 0x4000 )
13871306
1388   ROM_LOAD("dnfs120-201666.rom", 0x38000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232))
1307   ROM_LOAD("dnfs.rom",    0x38000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232))
13891308
13901309   ROM_REGION(0x4000, "os", 0)
13911310   ROM_COPY("option", 0x40000, 0, 0x4000)
r249889r249890
14111330   /* rom page 9  24000 */
14121331   /* rom page 10 28000 */
14131332   /* rom page 11 2c000 */
1414   /* rom page 12 30000 IC52  SPARE SOCKET */
1415   /* rom page 13 34000 IC88  SPARE SOCKET */
1416   /* rom page 14 38000 IC100 DDFS */
1417   /* rom page 15 3c000 IC101 BASIC */
1333   /* rom page 12 30000 SPARE SOCKET */
1334   /* rom page 13 34000 SPARE SOCKET */
1335   /* rom page 14 38000 DDFS */
1336   /* rom page 15 3c000 BASIC */
14181337   ROM_DEFAULT_BIOS("os12b2")
14191338   ROM_SYSTEM_BIOS( 0, "os12b2", "OS 1.20 / BASIC2" )
14201339   ROMX_LOAD("os12.rom",   0x40000, 0x4000, CRC(3c14fc70) SHA1(0d9bcaf6a393c9ce2359ed700ddb53c232c2c45d), ROM_BIOS(1)) /* os */
r249889r249890
14551374   /* rom page 9  24000 */
14561375   /* rom page 10 28000 */
14571376   /* rom page 11 2c000 */
1458   /* rom page 12 30000 IC72 SPARE SOCKET */
1459   /* rom page 13 34000 IC73 SPARE SOCKET */
1460   /* rom page 14 38000 IC74 DFS */
1461   /* rom page 15 3c000 IC75 BASIC */
1377   /* rom page 12 30000 SPARE SOCKET */
1378   /* rom page 13 34000 SPARE SOCKET */
1379   /* rom page 14 38000 DFS */
1380   /* rom page 15 3c000 BASIC */
14621381   ROM_DEFAULT_BIOS("os12")
14631382   ROM_SYSTEM_BIOS( 0, "os12", "OS 1.20 / BASIC2" )
14641383   ROMX_LOAD("os_de.rom",   0x40000, 0x4000, CRC(b7262caf) SHA1(aadf90338ee9d1c85dfa73beba50e930c2a38f10), ROM_BIOS(1))
r249889r249890
14901409   /* rom page 9  24000 */
14911410   /* rom page 10 28000 */
14921411   /* rom page 11 2c000 */
1493   /* rom page 12 30000 IC72 VIEW */
1494   /* rom page 13 34000 IC73 US DNFS */
1495   /* rom page 14 38000 IC74 US BASIC */
1496   /* rom page 15 3c000 IC75 SPARE SOCKET */
1412   /* rom page 12 30000 SPARE SOCKET */
1413   /* rom page 13 34000 SPARE SOCKET */
1414   /* rom page 14 38000 DFS */
1415   /* rom page 15 3c000 BASIC */
14971416   ROM_DEFAULT_BIOS("os10b3")
14981417   ROM_SYSTEM_BIOS( 0, "os10b3", "OS A1.0 / BASIC3" )
1499   ROMX_LOAD("usmos10.rom",  0x40000, 0x4000, CRC(c8e946a9) SHA1(83d91d089dca092d2c8b7c3650ff8143c9069b89), ROM_BIOS(1))
1500   ROMX_LOAD("usbasic3.rom", 0x3c000, 0x4000, CRC(161b9539) SHA1(b39014610a968789afd7695aa04d1277d874405c), ROM_BIOS(1)) /* rom page 15 3c000 */
1418   ROMX_LOAD("os10_us.rom", 0x40000, 0x4000, CRC(c8e946a9) SHA1(83d91d089dca092d2c8b7c3650ff8143c9069b89), ROM_BIOS(1))
1419   ROMX_LOAD("basic3.rom",  0x3c000, 0x4000, CRC(161b9539) SHA1(b39014610a968789afd7695aa04d1277d874405c), ROM_BIOS(1)) /* rom page 15 3c000 */
15011420
1502   ROM_LOAD("viewa210.rom", 0x30000, 0x4000, CRC(4345359f) SHA1(88c93df1854f5fbe6cd6e5f0e29a8bf4ea3b5614))
1503   ROM_LOAD("usdnfs10.rom", 0x38000, 0x4000, CRC(7e367e8c) SHA1(161f585dc45665ea77433c84afd2f95049f7f5a0))
1421   ROM_LOAD("dfs10.rom",    0x38000, 0x4000, CRC(7e367e8c) SHA1(161f585dc45665ea77433c84afd2f95049f7f5a0))
15041422
15051423   ROM_REGION(0x4000, "os", 0)
15061424   ROM_COPY("option", 0x40000, 0, 0x4000)
r249889r249890
15181436   ROM_SYSTEM_BIOS( 0, "os20", "OS 2.00" )
15191437   ROMX_LOAD("bpos2.ic71", 0x3c000, 0x4000, CRC(9f356396) SHA1(ea7d3a7e3ee1ecfaa1483af994048057362b01f2), ROM_BIOS(1)) /* rom page 15 3C000 BASIC */
15201438   ROM_CONTINUE(           0x40000, 0x4000)  /* OS */
1521   /* rom page 0  00000 SWRAM (B+ 128K only) */
1522   /* rom page 1  04000 SWRAM (B+ 128K only) */
1523   /* rom page 2  08000 IC35 32K IN PAGE 3 */
1524   /* rom page 3  0c000 IC35 SPARE SOCKET */
1525   /* rom page 4  10000 IC44 32K IN PAGE 5 */
1526   /* rom page 5  14000 IC44 ADFS */
1527   /* rom page 6  18000 IC57 32K IN PAGE 7 */
1528   /* rom page 7  1c000 IC57 DDFS */
1529   /* rom page 8  20000 IC62 32K IN PAGE 9 */
1530   /* rom page 9  24000 IC62 SPARE SOCKET */
1531   /* rom page 10 28000 IC68 32K IN PAGE 11 */
1532   /* rom page 11 2c000 IC68 SPARE SOCKET */
1533   /* rom page 12 30000 SWRAM (B+ 128K only) */
1534   /* rom page 13 34000 SWRAM (B+ 128K only) */
1439   /* rom page 0  00000 */
1440   /* rom page 1  04000 */
1441   /* rom page 2  08000  32K IN PAGE 3 */
1442   /* rom page 3  0c000  SPARE SOCKET */
1443   /* rom page 4  10000  32K IN PAGE 5 */
1444   /* rom page 5  14000  ADFS */
1445   /* rom page 6  18000  32K IN PAGE 7 */
1446   /* rom page 7  1c000  DDFS */
1447   /* rom page 8  20000  32K IN PAGE 9 */
1448   /* rom page 9  24000  SPARE SOCKET */
1449   /* rom page 10 28000  32K IN PAGE 11 */
1450   /* rom page 11 2c000  SPARE SOCKET */
1451   /* rom page 12 30000 */
1452   /* rom page 13 34000 */
15351453   /* rom page 14 38000  32K IN PAGE 15 */
1536   /* rom page 15 3C000 IC71 BASIC */
1454   /* rom page 15 3C000  BASIC */
15371455   ROM_LOAD("adfs130.rom", 0x14000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
15381456   ROM_LOAD("ddfs223.rom", 0x1c000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
15391457
r249889r249890
15451463ROM_END
15461464
15471465
1548#define rom_bbcbp128 rom_bbcbp
1466ROM_START(bbcbp128)
1467   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
15491468
1469   ROM_REGION(0x44000,"option",0) /* ROM */
1470   ROM_DEFAULT_BIOS("os20")
1471   ROM_SYSTEM_BIOS( 0, "os20", "OS 2.00" )
1472   ROMX_LOAD("bpos2.ic71", 0x3c000, 0x4000, CRC(9f356396) SHA1(ea7d3a7e3ee1ecfaa1483af994048057362b01f2), ROM_BIOS(1)) /* rom page 15 3C000 BASIC */
1473   ROM_CONTINUE(           0x40000, 0x4000)  /* OS */
1474   /* rom page 0  00000 */
1475   /* rom page 1  04000 */
1476   /* rom page 2  08000  32K IN PAGE 3 */
1477   /* rom page 3  0c000  SPARE SOCKET */
1478   /* rom page 4  10000  32K IN PAGE 5 */
1479   /* rom page 5  14000  ADFS */
1480   /* rom page 6  18000  32K IN PAGE 7 */
1481   /* rom page 7  1c000  DDFS */
1482   /* rom page 8  20000  32K IN PAGE 9 */
1483   /* rom page 9  24000  SPARE SOCKET */
1484   /* rom page 10 28000  32K IN PAGE 11 */
1485   /* rom page 11 2c000  SPARE SOCKET */
1486   /* rom page 12 30000 */
1487   /* rom page 13 34000 */
1488   /* rom page 14 38000  32K IN PAGE 15 */
1489   /* rom page 15 3C000  BASIC */
1490   ROM_LOAD("adfs130.rom", 0x14000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
1491   ROM_LOAD("ddfs223.rom", 0x1c000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
15501492
1493   ROM_REGION(0x4000, "os", 0)
1494   ROM_COPY("option", 0x40000, 0, 0x4000)
1495
1496   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1497   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
1498ROM_END
1499
1500
15511501ROM_START(abc110)
15521502   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
15531503
r249889r249890
15551505   ROM_DEFAULT_BIOS("mos200")
15561506   ROM_SYSTEM_BIOS( 0, "mos200", "MOS2.00" )
15571507   ROMX_LOAD("mos200.rom", 0x40000, 0x4000, CRC(5e88f994) SHA1(76235ff15d736f5def338f73ac7497c41b916505), ROM_BIOS(1))
1558   ROMX_LOAD("basic200.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(1))
1559   ROM_SYSTEM_BIOS( 1, "mos123stor", "MOS1.23 + ViewStore" )
1560   ROMX_LOAD("mos123stor.rom", 0x3c000, 0x4000, CRC(4e84f452) SHA1(145ee54f04b3eb4d0e5afaabe21915be48db3c54), ROM_BIOS(2)) /* rom page 15 3C000 ViewStore */
1561   ROM_CONTINUE(               0x40000, 0x4000)  /* OS */
1562   ROM_SYSTEM_BIOS( 2, "mos123", "MOS1.23" )
1563   ROMX_LOAD("mos123.rom", 0x40000, 0x4000, CRC(90d31d08) SHA1(42a01892cf8bd2ada4db1c8b36aff80c85eb5dcb), ROM_BIOS(3))
1564   ROMX_LOAD("basic200.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(3))
1565   ROM_SYSTEM_BIOS( 3, "mos120", "MOS1.20" )
1566   ROMX_LOAD("mos120.rom", 0x40000, 0x4000, CRC(0a1e83a0) SHA1(21dc3a94eef7c003b194686730fb461779f44925), ROM_BIOS(4))
1567   ROMX_LOAD("basic200.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(4))
1508   ROM_SYSTEM_BIOS( 1, "mos123", "MOS1.23" )
1509   ROMX_LOAD("mos123.rom", 0x40000, 0x4000, CRC(90d31d08) SHA1(42a01892cf8bd2ada4db1c8b36aff80c85eb5dcb), ROM_BIOS(2))
1510   ROM_SYSTEM_BIOS( 2, "mos120", "MOS1.20" )
1511   ROMX_LOAD("mos120.rom", 0x40000, 0x4000, CRC(0a1e83a0) SHA1(21dc3a94eef7c003b194686730fb461779f44925), ROM_BIOS(3))
15681512   /* rom page 0  00000 */
1569   /* rom page 1  04000 IC71 selectable with link S13 */
1570   /* rom page 2  08000 IC35 32K IN PAGE 3 */
1571   /* rom page 3  0c000 IC35 SPARE SOCKET */
1572   /* rom page 4  10000 IC44 32K IN PAGE 5 */
1573   /* rom page 5  14000 IC44 DDFS */
1574   /* rom page 6  18000 IC57 32K IN PAGE 7 */
1575   /* rom page 7  1c000 IC57 ADFS */
1576   /* rom page 8  20000 IC62 32K IN PAGE 9 */
1577   /* rom page 9  24000 IC62 SPARE SOCKET */
1578   /* rom page 10 28000 IC68 32K IN PAGE 11 */
1579   /* rom page 11 2c000 IC68 SPARE SOCKET */
1513   /* rom page 1  04000 */
1514   /* rom page 2  08000  32K IN PAGE 3 */
1515   /* rom page 3  0c000  SPARE SOCKET */
1516   /* rom page 4  10000  32K IN PAGE 5 */
1517   /* rom page 5  14000  DDFS */
1518   /* rom page 6  18000  32K IN PAGE 7 */
1519   /* rom page 7  1c000  ADFS */
1520   /* rom page 8  20000  32K IN PAGE 9 */
1521   /* rom page 9  24000  SPARE SOCKET */
1522   /* rom page 10 28000  32K IN PAGE 11 */
1523   /* rom page 11 2c000  SPARE SOCKET */
15801524   /* rom page 12 30000 */
15811525   /* rom page 13 34000 */
1582   /* rom page 14 38000 */
1583   /* rom page 15 3C000 IC71 BASIC */
1584   //ROM_LOAD("ddfs223.rom", 0x14000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
1585   ROM_LOAD("acwddfs225.rom", 0x14000, 0x4000, CRC(7d0f9016) SHA1(bdfe44c79e18142d747436627e71a362a04cf746))
1526   /* rom page 14 38000  32K IN PAGE 15 */
1527   /* rom page 15 3C000  BASIC */
1528   ROM_LOAD("ddfs223.rom", 0x14000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
15861529   ROM_LOAD("adfs130.rom", 0x1c000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
1530   ROM_LOAD("basic200.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281))
15871531
15881532   ROM_REGION(0x4000, "os", 0)
15891533   ROM_COPY("option", 0x40000, 0, 0x4000)
r249889r249890
15931537ROM_END
15941538
15951539
1596#define rom_abc310 rom_abc110
1540ROM_START(abc210)
1541   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
15971542
1543   ROM_REGION(0x44000,"option",0) /* ROM */
1544   ROM_DEFAULT_BIOS("mos200")
1545   ROM_SYSTEM_BIOS( 0, "mos200", "MOS2.00" )
1546   ROMX_LOAD("mos200.rom", 0x40000, 0x4000, CRC(5e88f994) SHA1(76235ff15d736f5def338f73ac7497c41b916505), ROM_BIOS(1))
1547   ROM_SYSTEM_BIOS( 1, "mos123", "MOS1.23" )
1548   ROMX_LOAD("mos123.rom", 0x40000, 0x4000, CRC(90d31d08) SHA1(42a01892cf8bd2ada4db1c8b36aff80c85eb5dcb), ROM_BIOS(2))
1549   ROM_SYSTEM_BIOS( 2, "mos120", "MOS1.20" )
1550   ROMX_LOAD("mos120.rom", 0x40000, 0x4000, CRC(0a1e83a0) SHA1(21dc3a94eef7c003b194686730fb461779f44925), ROM_BIOS(3))
1551   /* rom page 0  00000 */
1552   /* rom page 1  04000 */
1553   /* rom page 2  08000  32K IN PAGE 3 */
1554   /* rom page 3  0c000  SPARE SOCKET */
1555   /* rom page 4  10000  32K IN PAGE 5 */
1556   /* rom page 5  14000  DDFS */
1557   /* rom page 6  18000  32K IN PAGE 7 */
1558   /* rom page 7  1c000  ADFS */
1559   /* rom page 8  20000  32K IN PAGE 9 */
1560   /* rom page 9  24000  SPARE SOCKET */
1561   /* rom page 10 28000  32K IN PAGE 11 */
1562   /* rom page 11 2c000  SPARE SOCKET */
1563   /* rom page 12 30000 */
1564   /* rom page 13 34000 */
1565   /* rom page 14 38000  32K IN PAGE 15 */
1566   /* rom page 15 3C000  BASIC */
1567   ROM_LOAD("ddfs223.rom",  0x14000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
1568   ROM_LOAD("adfs130.rom",  0x1c000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
1569   ROM_LOAD("basic200.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281))
15981570
1599ROM_START(acw443)
1571   ROM_REGION(0x4000, "os", 0)
1572   ROM_COPY("option", 0x40000, 0, 0x4000)
1573
1574   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1575   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
1576ROM_END
1577
1578
1579ROM_START(abc310)
16001580   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
16011581
16021582   ROM_REGION(0x44000,"option",0) /* ROM */
1603   ROM_DEFAULT_BIOS("mos210")
1604   ROM_SYSTEM_BIOS( 0, "mos210", "MOS2.10" )
1605   ROMX_LOAD("acwmos210.rom", 0x40000, 0x4000, CRC(168d6753) SHA1(dcd01d8f5f6e0cd92ae626ca52a3db71abf5d282), ROM_BIOS(1))
1606   ROM_SYSTEM_BIOS( 1, "mos200", "MOS2.00" )
1607   ROMX_LOAD("mos200.rom", 0x40000, 0x4000, CRC(5e88f994) SHA1(76235ff15d736f5def338f73ac7497c41b916505), ROM_BIOS(2))
1583   ROM_DEFAULT_BIOS("mos200")
1584   ROM_SYSTEM_BIOS( 0, "mos200", "MOS2.00" )
1585   ROMX_LOAD("mos200.rom", 0x40000, 0x4000, CRC(5e88f994) SHA1(76235ff15d736f5def338f73ac7497c41b916505), ROM_BIOS(1))
1586   ROM_SYSTEM_BIOS( 1, "mos123", "MOS1.23" )
1587   ROMX_LOAD("mos123.rom", 0x40000, 0x4000, CRC(90d31d08) SHA1(42a01892cf8bd2ada4db1c8b36aff80c85eb5dcb), ROM_BIOS(2))
1588   ROM_SYSTEM_BIOS( 2, "mos120", "MOS1.20" )
1589   ROMX_LOAD("mos120.rom", 0x40000, 0x4000, CRC(0a1e83a0) SHA1(21dc3a94eef7c003b194686730fb461779f44925), ROM_BIOS(3))
16081590   /* rom page 0  00000 */
1609   /* rom page 1  04000  IC71 selectable with link S13 */
1610   /* rom page 2  08000  IC35 32K IN PAGE 3 */
1611   /* rom page 3  0c000  IC35 DNFS */
1612   /* rom page 4  10000  IC44 32K IN PAGE 5 */
1613   /* rom page 5  14000  IC44 ACW DFS */
1614   /* rom page 6  18000  IC57 32K IN PAGE 7 */
1615   /* rom page 7  1c000  IC57 TERMINAL */
1616   /* rom page 8  20000  IC62 32K IN PAGE 9 */
1617   /* rom page 9  24000  IC62 ADFS */
1618   /* rom page 10 28000  IC68 BASIC */
1619   /* rom page 11 2c000  IC68 Unused OS? */
1591   /* rom page 1  04000 */
1592   /* rom page 2  08000  32K IN PAGE 3 */
1593   /* rom page 3  0c000  SPARE SOCKET */
1594   /* rom page 4  10000  32K IN PAGE 5 */
1595   /* rom page 5  14000  DDFS */
1596   /* rom page 6  18000  32K IN PAGE 7 */
1597   /* rom page 7  1c000  ADFS */
1598   /* rom page 8  20000  32K IN PAGE 9 */
1599   /* rom page 9  24000  SPARE SOCKET */
1600   /* rom page 10 28000  32K IN PAGE 11 */
1601   /* rom page 11 2c000  SPARE SOCKET */
16201602   /* rom page 12 30000 */
16211603   /* rom page 13 34000 */
1622   /* rom page 14 38000 */
1623   /* rom page 15 3C000  IC71 selectable with link S13 */
1624   ROM_LOAD("dnfs120-201666.rom", 0x0c000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232))
1625   ROM_LOAD("acwddfs225.rom", 0x14000, 0x4000, CRC(7d0f9016) SHA1(bdfe44c79e18142d747436627e71a362a04cf746))
1626   ROM_LOAD("acwterminal.rom", 0x1c000, 0x4000, CRC(81afaeb9) SHA1(6618ed9158776b4b8aa030957bd19ba77e4a993c))
1627   ROM_LOAD("adfs130.rom", 0x24000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
1628   ROM_LOAD("basic200.rom", 0x28000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281))
1604   /* rom page 14 38000  32K IN PAGE 15 */
1605   /* rom page 15 3C000  BASIC */
1606   ROM_LOAD("ddfs223.rom",  0x14000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
1607   ROM_LOAD("adfs130.rom",  0x1c000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
1608   ROM_LOAD("basic200.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281))
16291609
16301610   ROM_REGION(0x4000, "os", 0)
16311611   ROM_COPY("option", 0x40000, 0, 0x4000)
r249889r249890
16711651   ROM_SYSTEM_BIOS( 0, "mos350", "Enhanced MOS 3.50" )
16721652   ROMX_LOAD("mos350.ic24", 0x20000, 0x20000, CRC(141027b9) SHA1(85211b5bc7c7a269952d2b063b7ec0e1f0196803), ROM_BIOS(1))
16731653   ROM_SYSTEM_BIOS( 1, "mos320", "Original MOS 3.20" )
1674   ROMX_LOAD("mos320.ic24", 0x20000, 0x20000, CRC(0f747ebe) SHA1(eacacbec3892dc4809ad5800e6c8299ff9eb528f), ROM_BIOS(2))
1654   ROMX_LOAD("mos320.ic24", 0x20000, 0x20000, CRC(0cfad2ce) SHA1(0275719aa7746dd3b627f95ccc4362b564063a5e), ROM_BIOS(2))
16751655   ROM_COPY("option", 0x20000, 0x40000, 0x4000) /* Move loaded roms into place */
16761656   ROM_FILL(0x20000, 0x4000, 0xFFFF)
1677   /* 00000 rom 0   SK3 Rear Cartridge bottom 16K */
1678   /* 04000 rom 1   SK3 Rear Cartridge top 16K */
1679   /* 08000 rom 2   SK4 Front Cartridge bottom 16K */
1680   /* 0c000 rom 3   SK4 Front Cartridge top 16K */
1681   /* 10000 rom 4   IC41 SWRAM or bottom 16K */
1682   /* 14000 rom 5   IC41 SWRAM or top 16K */
1683   /* 18000 rom 6   IC37 SWRAM or bottom 16K */
1684   /* 1c000 rom 7   IC37 SWRAM or top 16K */
1685   /* 20000 rom 8   IC27 ANFS */
1686   /* 24000 rom 9   IC24 DFS + SRAM */
1687   /* 28000 rom 10  IC24 Viewsheet */
1688   /* 2c000 rom 11  IC24 Edit */
1689   /* 30000 rom 12  IC24 BASIC */
1690   /* 34000 rom 13  IC24 ADFS */
1691   /* 38000 rom 14  IC24 View + MOS code */
1692   /* 3c000 rom 15  IC24 Terminal + Tube host + CFS */
1693   //ROM_LOAD("anfs424.rom", 0x20000, 0x4000, CRC(1b9f75fd) SHA1(875f71edd48f87c3a55371409d0cc2015d8b5853))
1657   /* 00000 rom 0   Rear Cartridge bottom 16K */
1658   /* 04000 rom 1   Rear Cartridge top 16K */
1659   /* 08000 rom 2   Front Cartridge bottom 16K */
1660   /* 0c000 rom 3   Front Cartridge top 16K */
1661   /* 10000 rom 4   SWRAM */
1662   /* 14000 rom 5   SWRAM */
1663   /* 18000 rom 6   SWRAM */
1664   /* 1c000 rom 7   SWRAM */
1665   /* 20000 rom 8   SPARE SOCKET */
1666   /* 24000 rom 9   DFS + SRAM */
1667   /* 28000 rom 10  Viewsheet */
1668   /* 2c000 rom 11  Edit */
1669   /* 30000 rom 12  BASIC */
1670   /* 34000 rom 13  ADFS */
1671   /* 38000 rom 14  View + MOS code */
1672   /* 3c000 rom 15  Terminal + Tube host + CFS */
1673//  ROM_LOAD("anfs424.rom", 0x20000, 0x4000, CRC(1b9f75fd) SHA1(875f71edd48f87c3a55371409d0cc2015d8b5853) ) // TODO where to load this?
16941674
16951675   ROM_REGION(0x4000, "os", 0)
16961676   ROM_COPY("option", 0x40000, 0, 0x4000)
r249889r249890
17021682ROM_END
17031683
17041684
1705#define rom_bbcmt rom_bbcm
1706#define rom_bbcm512 rom_bbcm
1685ROM_START(bbcmt)
1686   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
17071687
1688   ROM_REGION(0x44000,"option",0) /* ROM */
1689   ROM_DEFAULT_BIOS("mos350")
1690   ROM_SYSTEM_BIOS( 0, "mos350", "Enhanced MOS 3.50" )
1691   ROMX_LOAD("mos350.ic24", 0x20000, 0x20000, CRC(141027b9) SHA1(85211b5bc7c7a269952d2b063b7ec0e1f0196803), ROM_BIOS(1))
1692   ROM_SYSTEM_BIOS( 1, "mos320", "Original MOS 3.20" )
1693   ROMX_LOAD("mos320.ic24", 0x20000, 0x20000, CRC(0cfad2ce) SHA1(0275719aa7746dd3b627f95ccc4362b564063a5e), ROM_BIOS(2))
1694   ROM_COPY("option", 0x20000, 0x40000, 0x4000) /* Move loaded roms into place */
1695   ROM_FILL(0x20000, 0x4000, 0xFFFF)
1696   /* 00000 rom 0   Rear Cartridge bottom 16K */
1697   /* 04000 rom 1   Rear Cartridge top 16K */
1698   /* 08000 rom 2   Front Cartridge bottom 16K */
1699   /* 0c000 rom 3   Front Cartridge top 16K */
1700   /* 10000 rom 4   SWRAM */
1701   /* 14000 rom 5   SWRAM */
1702   /* 18000 rom 6   SWRAM */
1703   /* 1c000 rom 7   SWRAM */
1704   /* 20000 rom 8   SPARE SOCKET */
1705   /* 24000 rom 9   DFS + SRAM */
1706   /* 28000 rom 10  Viewsheet */
1707   /* 2c000 rom 11  Edit */
1708   /* 30000 rom 12  BASIC */
1709   /* 34000 rom 13  ADFS */
1710   /* 38000 rom 14  View + MOS code */
1711   /* 3c000 rom 15  Terminal + Tube host + CFS */
1712//  ROM_LOAD("anfs424.ic27", 0x20000, 0x4000, CRC(1b9f75fd) SHA1(875f71edd48f87c3a55371409d0cc2015d8b5853) ) // TODO where to load this?
17081713
1714   ROM_REGION(0x4000, "os", 0)
1715   ROM_COPY("option", 0x40000, 0, 0x4000)
1716
1717   ROM_REGION(0x40,"rtc",0) /* mc146818 */
1718   /* Factory defaulted CMOS RAM, sets default language ROM, etc. */
1719   ROMX_LOAD("mos350.cmos", 0x00, 0x40, CRC(e84c1854) SHA1(f3cb7f12b7432caba28d067f01af575779220aac), ROM_BIOS(1))
1720   ROMX_LOAD("mos320.cmos", 0x00, 0x40, CRC(c7f9e85a) SHA1(f24cc9db0525910689219f7204bf8b864033ee94), ROM_BIOS(2))
1721ROM_END
1722
1723
17091724ROM_START(bbcmaiv)
17101725   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
17111726
17121727   ROM_REGION(0x44000,"option",0) /* ROM */
17131728   ROM_DEFAULT_BIOS("mos320")
17141729   ROM_SYSTEM_BIOS( 0, "mos320", "MOS 3.20" )
1715   ROMX_LOAD("mos320.ic24", 0x20000, 0x20000, CRC(0f747ebe) SHA1(eacacbec3892dc4809ad5800e6c8299ff9eb528f), ROM_BIOS(1))
1730   ROMX_LOAD("mos320.ic24", 0x20000, 0x20000, CRC(0cfad2ce) SHA1(0275719aa7746dd3b627f95ccc4362b564063a5e), ROM_BIOS(1))
17161731   ROM_COPY("option", 0x20000, 0x40000, 0x4000) /* Move loaded roms into place */
17171732   ROM_FILL(0x20000, 0x4000, 0xFFFF)
1718   /* 00000 rom 0   SK3 Rear Cartridge bottom 16K */
1719   /* 04000 rom 1   SK3 Rear Cartridge top 16K */
1720   /* 08000 rom 2   SK4 Front Cartridge bottom 16K */
1721   /* 0c000 rom 3   SK4 Front Cartridge top 16K */
1722   /* 10000 rom 4   IC41 SWRAM or bottom 16K */
1723   /* 14000 rom 5   IC41 SWRAM or top 16K */
1724   /* 18000 rom 6   IC37 SWRAM or bottom 16K */
1725   /* 1c000 rom 7   IC37 SWRAM or top 16K */
1726   /* 20000 rom 8   IC27 VFS */
1727   /* 24000 rom 9   IC24 DFS + SRAM */
1728   /* 28000 rom 10  IC24 Viewsheet */
1729   /* 2c000 rom 11  IC24 Edit */
1730   /* 30000 rom 12  IC24 BASIC */
1731   /* 34000 rom 13  IC24 ADFS */
1732   /* 38000 rom 14  IC24 View + MOS code */
1733   /* 3c000 rom 15  IC24 Terminal + Tube host + CFS */
1733   /* 00000 rom 0   Rear Cartridge bottom 16K */
1734   /* 04000 rom 1   Rear Cartridge top 16K */
1735   /* 08000 rom 2   Front Cartridge bottom 16K */
1736   /* 0c000 rom 3   Front Cartridge top 16K */
1737   /* 10000 rom 4   SWRAM */
1738   /* 14000 rom 5   SWRAM */
1739   /* 18000 rom 6   SWRAM */
1740   /* 1c000 rom 7   SWRAM */
1741   /* 20000 rom 8   VFS */
1742   /* 24000 rom 9   DFS + SRAM */
1743   /* 28000 rom 10  Viewsheet */
1744   /* 2c000 rom 11  Edit */
1745   /* 30000 rom 12  BASIC */
1746   /* 34000 rom 13  ADFS */
1747   /* 38000 rom 14  View + MOS code */
1748   /* 3c000 rom 15  Terminal + Tube host + CFS */
17341749   ROM_LOAD("vfs170.rom", 0x20000, 0x4000, CRC(b124a0bb) SHA1(ba31c757815cf470402d7829a70a0e1d3fb1355b) )
17351750
17361751   ROM_REGION(0x4000, "os", 0)
r249889r249890
17481763   ROM_REGION(0x44000,"option",0) /* ROM */
17491764   ROM_DEFAULT_BIOS("mos400")
17501765   ROM_SYSTEM_BIOS( 0, "mos400", "Econet MOS 4.00" )
1751   ROMX_LOAD("mos400.ic24", 0x30000, 0x10000, CRC(81729034) SHA1(d4bc2c7f5e66b5298786138f395908e70c772971), ROM_BIOS(1))
1766   ROMX_LOAD("mos400.ic24", 0x30000, 0x10000, BAD_DUMP CRC(81729034) SHA1(d4bc2c7f5e66b5298786138f395908e70c772971), ROM_BIOS(1)) /* Merged individual ROM bank dumps */
17521767   ROM_COPY("option", 0x34000, 0x24000, 0xC000) /* Mirror */
17531768   ROM_COPY("option", 0x30000, 0x40000, 0x4000) /* Move loaded roms into place */
17541769   ROM_FILL(0x30000, 0x4000, 0xFFFF)
1755   /* 00000 rom 0   SK3 Rear Cartridge bottom 16K */
1756   /* 04000 rom 1   SK3 Rear Cartridge top 16K */
1757   /* 08000 rom 2   SK4 Front Cartridge bottom 16K */
1758   /* 0c000 rom 3   SK4 Front Cartridge top 16K */
1759   /* 10000 rom 4   IC41 SWRAM or bottom 16K */
1760   /* 14000 rom 5   IC41 SWRAM or top 16K */
1761   /* 18000 rom 6   IC37 SWRAM or bottom 16K */
1762   /* 1c000 rom 7   IC37 SWRAM or top 16K */
1770   /* 00000 rom 0   Rear Cartridge bottom 16K */
1771   /* 04000 rom 1   Rear Cartridge top 16K */
1772   /* 08000 rom 2   Front Cartridge bottom 16K */
1773   /* 0c000 rom 3   Front Cartridge top 16K */
1774   /* 10000 rom 4   SWRAM */
1775   /* 14000 rom 5   SWRAM */
1776   /* 18000 rom 6   SWRAM */
1777   /* 1c000 rom 7   SWRAM */
17631778   /* 20000 rom 8   NO SOCKET */
1764   /* 24000 rom 9   IC24 BASIC */
1765   /* 28000 rom 10  IC24 ANFS */
1766   /* 2c000 rom 11  IC24 MOS code */
1767   /* 30000 rom 12  IC24 UNUSED */
1768   /* 34000 rom 13  IC24 BASIC */
1769   /* 38000 rom 14  IC24 ANFS */
1770   /* 3c000 rom 15  IC24 MOS code */
1779   /* 24000 rom 9   BASIC */
1780   /* 28000 rom 10  ANFS */
1781   /* 2c000 rom 11  MOS code */
1782   /* 30000 rom 12  UNUSED */
1783   /* 34000 rom 13  BASIC */
1784   /* 38000 rom 14  ANFS */
1785   /* 3c000 rom 15  MOS code */
17711786
17721787   ROM_REGION(0x4000, "os", 0)
17731788   ROM_COPY("option", 0x40000, 0, 0x4000)
r249889r249890
17781793ROM_END
17791794
17801795
1796ROM_START(bbcm512)
1797   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
1798
1799   ROM_REGION(0x44000,"option",0) /* ROM */
1800   ROM_DEFAULT_BIOS("mos350")
1801   ROM_SYSTEM_BIOS( 0, "mos350", "Enhanced MOS 3.50" )
1802   ROMX_LOAD("mos350.ic24", 0x20000, 0x20000, CRC(141027b9) SHA1(85211b5bc7c7a269952d2b063b7ec0e1f0196803), ROM_BIOS(1))
1803   ROM_SYSTEM_BIOS( 1, "mos320", "Original MOS 3.20" )
1804   ROMX_LOAD("mos320.ic24", 0x20000, 0x20000, CRC(0cfad2ce) SHA1(0275719aa7746dd3b627f95ccc4362b564063a5e), ROM_BIOS(2))
1805   ROM_COPY("option", 0x20000, 0x40000, 0x4000) /* Move loaded roms into place */
1806   ROM_FILL(0x20000, 0x4000, 0xFFFF)
1807   /* 00000 rom 0   Rear Cartridge bottom 16K */
1808   /* 04000 rom 1   Rear Cartridge top 16K */
1809   /* 08000 rom 2   Front Cartridge bottom 16K */
1810   /* 0c000 rom 3   Front Cartridge top 16K */
1811   /* 10000 rom 4   SWRAM */
1812   /* 14000 rom 5   SWRAM */
1813   /* 18000 rom 6   SWRAM */
1814   /* 1c000 rom 7   SWRAM */
1815   /* 20000 rom 8   SPARE SOCKET */
1816   /* 24000 rom 9   DFS + SRAM */
1817   /* 28000 rom 10  Viewsheet */
1818   /* 2c000 rom 11  Edit */
1819   /* 30000 rom 12  BASIC */
1820   /* 34000 rom 13  ADFS */
1821   /* 38000 rom 14  View + MOS code */
1822   /* 3c000 rom 15  Terminal + Tube host + CFS */
1823//  ROM_LOAD("anfs424.ic27", 0x20000, 0x4000, CRC(1b9f75fd) SHA1(875f71edd48f87c3a55371409d0cc2015d8b5853) )
1824
1825   ROM_REGION(0x4000, "os", 0)
1826   ROM_COPY("option", 0x40000, 0, 0x4000)
1827
1828   ROM_REGION(0x40,"rtc",0) /* mc146818 */
1829   /* Factory defaulted CMOS RAM, sets default language ROM, etc. */
1830   ROMX_LOAD("mos350.cmos", 0x00, 0x40, CRC(e84c1854) SHA1(f3cb7f12b7432caba28d067f01af575779220aac), ROM_BIOS(1))
1831   ROMX_LOAD("mos320.cmos", 0x00, 0x40, CRC(c7f9e85a) SHA1(f24cc9db0525910689219f7204bf8b864033ee94), ROM_BIOS(2))
1832ROM_END
1833
1834
17811835ROM_START(bbcmarm)
17821836   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
17831837
17841838   ROM_REGION(0x44000,"option",0) /* ROM */
17851839   ROM_DEFAULT_BIOS("mos320")
17861840   ROM_SYSTEM_BIOS( 0, "mos320", "Original MOS 3.20" )
1787   ROMX_LOAD("mos320.ic24", 0x20000, 0x20000, CRC(0f747ebe) SHA1(eacacbec3892dc4809ad5800e6c8299ff9eb528f), ROM_BIOS(1))
1841   ROMX_LOAD("mos320.ic24", 0x20000, 0x20000, CRC(0cfad2ce) SHA1(0275719aa7746dd3b627f95ccc4362b564063a5e), ROM_BIOS(1))
17881842   ROM_COPY("option", 0x20000, 0x40000, 0x4000) /* Move loaded roms into place */
17891843   ROM_FILL(0x20000, 0x4000, 0xFFFF)
1790   /* 00000 rom 0   SK3 Rear Cartridge bottom 16K */
1791   /* 04000 rom 1   SK3 Rear Cartridge top 16K */
1792   /* 08000 rom 2   SK4 Front Cartridge bottom 16K */
1793   /* 0c000 rom 3   SK4 Front Cartridge top 16K */
1794   /* 10000 rom 4   IC41 SWRAM or bottom 16K */
1795   /* 14000 rom 5   IC41 SWRAM or top 16K */
1796   /* 18000 rom 6   IC37 SWRAM or bottom 16K */
1797   /* 1c000 rom 7   IC37 SWRAM or top 16K */
1798   /* 20000 rom 8   IC27 ANFS */
1799   /* 24000 rom 9   IC24 DFS + SRAM */
1800   /* 28000 rom 10  IC24 Viewsheet */
1801   /* 2c000 rom 11  IC24 Edit */
1802   /* 30000 rom 12  IC24 BASIC */
1803   /* 34000 rom 13  IC24 ADFS */
1804   /* 38000 rom 14  IC24 View + MOS code */
1805   /* 3c000 rom 15  IC24 Terminal + Tube host + CFS */
1806   //ROM_LOAD("anfs424.rom", 0x20000, 0x4000, CRC(1b9f75fd) SHA1(875f71edd48f87c3a55371409d0cc2015d8b5853))
1844   /* 00000 rom 0   Rear Cartridge bottom 16K */
1845   /* 04000 rom 1   Rear Cartridge top 16K */
1846   /* 08000 rom 2   Front Cartridge bottom 16K */
1847   /* 0c000 rom 3   Front Cartridge top 16K */
1848   /* 10000 rom 4   SWRAM */
1849   /* 14000 rom 5   SWRAM */
1850   /* 18000 rom 6   SWRAM */
1851   /* 1c000 rom 7   SWRAM */
1852   /* 20000 rom 8   SPARE SOCKET */
1853   /* 24000 rom 9   DFS + SRAM */
1854   /* 28000 rom 10  Viewsheet */
1855   /* 2c000 rom 11  Edit */
1856   /* 30000 rom 12  BASIC */
1857   /* 34000 rom 13  ADFS */
1858   /* 38000 rom 14  View + MOS code */
1859   /* 3c000 rom 15  Terminal + Tube host + CFS */
1860//  ROM_LOAD("anfs424.ic27", 0x20000, 0x4000, CRC(1b9f75fd) SHA1(875f71edd48f87c3a55371409d0cc2015d8b5853) )
18071861
18081862   ROM_REGION(0x4000, "os", 0)
18091863   ROM_COPY("option", 0x40000, 0, 0x4000)
r249889r249890
18221876   ROM_SYSTEM_BIOS( 0, "mos510", "Enhanced MOS 5.10" )
18231877   ROMX_LOAD("mos510.ic49", 0x30000, 0x10000, BAD_DUMP CRC(9a2a6086) SHA1(094ab37b0b6437c4f1653eaa0602ef102737adb6), ROM_BIOS(1)) /* Merged individual ROM bank dumps */
18241878   ROM_SYSTEM_BIOS( 1, "mos500", "Original MOS 5.00" )
1825   ROMX_LOAD("mos500.ic49", 0x30000, 0x10000, CRC(f6170023) SHA1(140d002d2d9cd34b47197a2ba823505af2a84633), ROM_BIOS(2))
1879   ROMX_LOAD("mos500.ic49", 0x30000, 0x10000, BAD_DUMP CRC(f6170023) SHA1(140d002d2d9cd34b47197a2ba823505af2a84633), ROM_BIOS(2)) /* Merged individual ROM bank dumps */
18261880   ROM_COPY("option", 0x30000, 0x40000, 0x4000) /* Move loaded roms into place */
18271881   ROM_FILL(0x30000, 0x4000, 0xFFFF)
18281882   /* 00000 rom 0   EXTERNAL */
18291883   /* 04000 rom 1   EXTERNAL */
1830   /* 08000 rom 2   IC23 SPARE SOCKET */
1831   /* 0c000 rom 3   IC17 SPARE SOCKET */
1884   /* 08000 rom 2   SPARE SOCKET */
1885   /* 0c000 rom 3   SPARE SOCKET */
18321886   /* 10000 rom 4   SWRAM */
18331887   /* 14000 rom 5   SWRAM */
18341888   /* 18000 rom 6   SWRAM */
18351889   /* 1c000 rom 7   SWRAM */
1836   /* 20000 rom 8   IC29 SPARE SOCKET */
1890   /* 20000 rom 8   SPARE SOCKET */
18371891   /* 24000 rom 9   UNUSED */
18381892   /* 28000 rom 10  UNUSED */
18391893   /* 2c000 rom 11  UNUSED */
18401894   /* 30000 rom 12  UNUSED */
1841   /* 34000 rom 13  IC16 ADFS */
1842   /* 38000 rom 14  IC16 BASIC */
1843   /* 3c000 rom 15  IC16 Utils */
1895   /* 34000 rom 13  ADFS */
1896   /* 38000 rom 14  BASIC */
1897   /* 3c000 rom 15  Utils */
18441898
18451899   ROM_REGION(0x4000, "os", 0)
18461900   ROM_COPY("option", 0x40000, 0, 0x4000)
r249889r249890
18621916   ROM_FILL(0x30000, 0x4000, 0xFFFF)
18631917   /* 00000 rom 0   EXTERNAL */
18641918   /* 04000 rom 1   EXTERNAL */
1865   /* 08000 rom 2   IC23 International */
1866   /* 0c000 rom 3   IC17 SPARE SOCKET */
1919   /* 08000 rom 2   International */
1920   /* 0c000 rom 3   SPARE SOCKET */
18671921   /* 10000 rom 4   SWRAM */
18681922   /* 14000 rom 5   SWRAM */
18691923   /* 18000 rom 6   SWRAM */
18701924   /* 1c000 rom 7   SWRAM */
1871   /* 20000 rom 8   IC29 Arabian */
1925   /* 20000 rom 8   Arabian */
18721926   /* 24000 rom 9   UNUSED */
18731927   /* 28000 rom 10  UNUSED */
18741928   /* 2c000 rom 11  UNUSED */
18751929   /* 30000 rom 12  UNUSED */
1876   /* 34000 rom 13  IC16 ADFS */
1877   /* 38000 rom 14  IC16 BASIC */
1878   /* 3c000 rom 15  IC16 Utils */
1930   /* 34000 rom 13  ADFS */
1931   /* 38000 rom 14  BASIC */
1932   /* 3c000 rom 15  Utils */
18791933   ROM_LOAD("international16.rom", 0x8000 , 0x4000, CRC(0ef527b1) SHA1(dc5149ccf588cd591a6ad47727474ef3313272ce) )
18801934   ROM_LOAD("arabian-c22.rom"    , 0x20000, 0x4000, CRC(4f3aadff) SHA1(2bbf61ba68264ce5845aab9c54e750b0efe219c8) )
18811935
r249889r249890
18991953   ROM_FILL(0x30000, 0x4000, 0xFFFF)
19001954   /* 00000 rom 0   EXTERNAL */
19011955   /* 04000 rom 1   EXTERNAL */
1902   /* 08000 rom 2   IC23 SPARE SOCKET */
1903   /* 0c000 rom 3   IC17 SPARE SOCKET */
1956   /* 08000 rom 2   SPARE SOCKET */
1957   /* 0c000 rom 3   SPARE SOCKET */
19041958   /* 10000 rom 4   SWRAM */
19051959   /* 14000 rom 5   SWRAM */
19061960   /* 18000 rom 6   SWRAM */
19071961   /* 1c000 rom 7   SWRAM */
1908   /* 20000 rom 8   IC29 SPARE SOCKET */
1962   /* 20000 rom 8   SPARE SOCKET */
19091963   /* 24000 rom 9   UNUSED */
19101964   /* 28000 rom 10  UNUSED */
19111965   /* 2c000 rom 11  UNUSED */
19121966   /* 30000 rom 12  UNUSED */
1913   /* 34000 rom 13  IC16 ADFS */
1914   /* 38000 rom 14  IC16 BASIC */
1915   /* 3c000 rom 15  IC16 Utils */
1967   /* 34000 rom 13  ADFS */
1968   /* 38000 rom 14  BASIC */
1969   /* 3c000 rom 15  Utils */
19161970
19171971   ROM_REGION(0x4000, "os", 0)
19181972   ROM_COPY("option", 0x40000, 0, 0x4000)
r249889r249890
19251979/*     YEAR  NAME      PARENT    COMPAT MACHINE   INPUT  CLASS        INIT     COMPANY     FULLNAME                         FLAGS */
19261980COMP ( 1981, bbcb,     0,        bbca,  bbcb,     bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B w/8271 FDC",  MACHINE_IMPERFECT_GRAPHICS)
19271981COMP ( 1981, bbca,     bbcb,     0,     bbca,     bbca,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model A",             MACHINE_IMPERFECT_GRAPHICS)
1928COMP ( 1982, bbcb_de,  bbcb,     0,     bbcb_de,  bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B (German)",    MACHINE_IMPERFECT_GRAPHICS)
1982COMP ( 1981, bbcb_de,  bbcb,     0,     bbcb_de,  bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B (German)",    MACHINE_IMPERFECT_GRAPHICS)
19291983COMP ( 1983, bbcb_us,  bbcb,     0,     bbcb_us,  bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B (US)",        MACHINE_IMPERFECT_GRAPHICS)
1930COMP ( 1984, bbcb1770, bbcb,     0,     bbcb1770, bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B w/1770 FDC",  MACHINE_IMPERFECT_GRAPHICS)
1931COMP ( 1985, bbcbp,    0,        bbcb,  bbcbp,    bbcbp, bbc_state,   bbc,     "Acorn",    "BBC Micro Model B+ 64K",        MACHINE_IMPERFECT_GRAPHICS)
1932COMP ( 1985, bbcbp128, bbcbp,    0,     bbcbp128, bbcbp, bbc_state,   bbc,     "Acorn",    "BBC Micro Model B+ 128K",       MACHINE_IMPERFECT_GRAPHICS)
1933COMP ( 1985, acw443,   0,        0,     acw443,   abc,   bbc_state,   bbc,     "Acorn",    "ABC 210/Cambridge Workstation", MACHINE_NOT_WORKING)
1934COMP ( 1985, abc110,   acw443,   0,     abc110,   abc,   bbc_state,   bbc,     "Acorn",    "ABC 110",                       MACHINE_NOT_WORKING)
1935COMP ( 1985, abc310,   acw443,   0,     abc310,   abc,   bbc_state,   bbc,     "Acorn",    "ABC 310",                       MACHINE_NOT_WORKING)
1984COMP ( 1985, bbcb1770, bbcb,     0,     bbcb1770, bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B w/1770 FDC",  MACHINE_IMPERFECT_GRAPHICS)
1985COMP ( 1985, bbcbp,    0,        bbcb,  bbcbp,    bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B+ 64K",        MACHINE_IMPERFECT_GRAPHICS)
1986COMP ( 1985, bbcbp128, bbcbp,    0,     bbcbp128, bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B+ 128K",       MACHINE_IMPERFECT_GRAPHICS)
1987COMP ( 1985, abc110,   abc210,   0,     abc110,   abc,   bbc_state,   bbc,     "Acorn",    "ABC 110",                       MACHINE_NOT_WORKING)
1988COMP ( 1985, abc210,   0,        0,     abc210,   abc,   bbc_state,   bbc,     "Acorn",    "ABC 210/Cambridge Workstation", MACHINE_NOT_WORKING)
1989COMP ( 1985, abc310,   abc210,   0,     abc310,   abc,   bbc_state,   bbc,     "Acorn",    "ABC 310",                       MACHINE_NOT_WORKING)
19361990COMP ( 1985, reutapm,  0,        0,     reutapm,  bbcb,  bbc_state,   bbc,     "Acorn",    "Reuters APM",                   MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
19371991COMP ( 1986, bbcm,     0,        bbcb,  bbcm,     bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master 128",                MACHINE_IMPERFECT_GRAPHICS)
19381992COMP ( 1986, bbcmt,    bbcm,     0,     bbcmt,    bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master Turbo",              MACHINE_NOT_WORKING)
19391993COMP ( 1986, bbcmaiv,  bbcm,     0,     bbcmaiv,  bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master AIV",                MACHINE_NOT_WORKING)
1940COMP ( 1986, bbcmet,   bbcm,     0,     bbcmet,   bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master ET",                 MACHINE_IMPERFECT_GRAPHICS)
1994COMP ( 1986, bbcmet,   bbcm,     0,     bbcmet,   bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master ET",                 MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS)
19411995COMP ( 1986, bbcm512,  bbcm,     0,     bbcm512,  bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master 512",                MACHINE_NOT_WORKING)
19421996COMP ( 1986, bbcmarm,  bbcm,     0,     bbcmarm,  bbcm,  bbc_state,   bbc,     "Acorn",    "ARM Evaluation System",         MACHINE_NOT_WORKING)
19431997COMP ( 1986, bbcmc,    0,        bbcm,  bbcmc,    bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master Compact",            MACHINE_IMPERFECT_GRAPHICS)
trunk/src/mame/drivers/by17.c
r249889r249890
11// license:BSD-3-Clause
2// copyright-holders:Robbbert, Quench
2// copyright-holders:Robbbert
33/********************************************************************************************
44
55    PINBALL
66    Bally MPU AS-2518-17
77
8    These are some very early and well known Solid State machines, such as 'Eight Ball'.
8    These are some very early and well known SS machines, such as 'Eight Ball'.
99
10    They have orange digital 6 digit displays, and a mechanical chime unit for sounds.
10    They have an orange digital display, and a chime unit.
1111
1212
1313ToDo:
r249889r249890
2222#include "cpu/m6800/m6800.h"
2323#include "machine/6821pia.h"
2424#include "by17.lh"
25#include "by17_pwerplay.lh"
26#include "by17_matahari.lh"
2725
2826
2927class by17_state : public genpin_class
r249889r249890
3230   by17_state(const machine_config &mconfig, device_type type, const char *tag)
3331      : genpin_class(mconfig, type, tag)
3432      , m_maincpu(*this, "maincpu")
35      , m_nvram(*this, "nvram")
3633      , m_pia_u10(*this, "pia_u10")
3734      , m_pia_u11(*this, "pia_u11")
3835      , m_io_test(*this, "TEST")
r249889r249890
4744      , m_io_x4(*this, "X4")
4845   { }
4946
50   DECLARE_DRIVER_INIT(by17);
51   DECLARE_DRIVER_INIT(matahari);
52   DECLARE_DRIVER_INIT(pwerplay);
5347   DECLARE_READ8_MEMBER(u10_a_r);
5448   DECLARE_WRITE8_MEMBER(u10_a_w);
5549   DECLARE_READ8_MEMBER(u10_b_r);
r249889r249890
5751   DECLARE_READ8_MEMBER(u11_a_r);
5852   DECLARE_WRITE8_MEMBER(u11_a_w);
5953   DECLARE_WRITE8_MEMBER(u11_b_w);
60   DECLARE_READ8_MEMBER(nibble_nvram_r);
61   DECLARE_WRITE8_MEMBER(nibble_nvram_w);
62   DECLARE_READ_LINE_MEMBER(u10_ca1_r);
63   DECLARE_READ_LINE_MEMBER(u10_cb1_r);
6454   DECLARE_WRITE_LINE_MEMBER(u10_ca2_w);
6555   DECLARE_WRITE_LINE_MEMBER(u10_cb2_w);
66   DECLARE_READ_LINE_MEMBER(u11_ca1_r);
67   DECLARE_READ_LINE_MEMBER(u11_cb1_r);
6856   DECLARE_WRITE_LINE_MEMBER(u11_ca2_w);
6957   DECLARE_WRITE_LINE_MEMBER(u11_cb2_w);
70   DECLARE_INPUT_CHANGED_MEMBER(activity_button);
58   DECLARE_INPUT_CHANGED_MEMBER(activity_test);
7159   DECLARE_INPUT_CHANGED_MEMBER(self_test);
72   DECLARE_CUSTOM_INPUT_MEMBER(outhole_x0);
73   DECLARE_CUSTOM_INPUT_MEMBER(saucer_x3);
74   DECLARE_CUSTOM_INPUT_MEMBER(drop_target_x2);
75   DECLARE_MACHINE_RESET(by17);
76   TIMER_DEVICE_CALLBACK_MEMBER(timer_z_freq);
77   TIMER_DEVICE_CALLBACK_MEMBER(timer_z_pulse);
60   TIMER_DEVICE_CALLBACK_MEMBER(timer_x);
7861   TIMER_DEVICE_CALLBACK_MEMBER(u11_timer);
79   TIMER_DEVICE_CALLBACK_MEMBER(timer_d_pulse);
8062private:
8163   UINT8 m_u10a;
8264   UINT8 m_u10b;
8365   UINT8 m_u11a;
8466   UINT8 m_u11b;
8567   bool m_u10_ca2;
86   bool m_u10_cb1;
8768   bool m_u10_cb2;
88   bool m_u11_ca1;
8969   bool m_u11_cb2;
70   bool m_timer_x;
71   bool m_u11_timer;
9072   UINT8 m_digit;
91   UINT8 m_segment[6];
92   UINT8 m_lamp_decode;
93   UINT8 m_solenoid_features[20][4];
94   UINT8 m_io_hold_x[5];      // Used to hold switches closed (drop targets, balls in outholes/saucers etc). Solenoid activity release them.
73   UINT8 m_counter;
74   UINT8 m_segment[5];
75   virtual void machine_reset();
9576   required_device<m6800_cpu_device> m_maincpu;
96   required_shared_ptr<UINT8> m_nvram;
9777   required_device<pia6821_device> m_pia_u10;
9878   required_device<pia6821_device> m_pia_u11;
9979   required_ioport m_io_test;
r249889r249890
11191
11292static ADDRESS_MAP_START( by17_map, AS_PROGRAM, 8, by17_state )
11393   ADDRESS_MAP_GLOBAL_MASK(0x1fff)
114   AM_RANGE(0x0000, 0x007f) AM_RAM
94   AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu
11595   AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("pia_u10", pia6821_device, read, write)
11696   AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("pia_u11", pia6821_device, read, write)
117   AM_RANGE(0x0200, 0x02ff) AM_RAM AM_READWRITE(nibble_nvram_r, nibble_nvram_w) AM_SHARE("nvram")
97   AM_RANGE(0x0200, 0x02ff) AM_RAM AM_SHARE("nvram")
11898   AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("roms", 0 )
11999ADDRESS_MAP_END
120100
121
122101static INPUT_PORTS_START( by17 )
123102   PORT_START("TEST")
124   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Self Test") PORT_CHANGED_MEMBER(DEVICE_SELF, by17_state, self_test, NULL)
125   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Activity")  PORT_CHANGED_MEMBER(DEVICE_SELF, by17_state, activity_button, NULL)
103   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Self Test") PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, by17_state, self_test, 0)
104   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Activity") PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, by17_state, activity_test, 0)
126105
127106   PORT_START("DSW0")
128   PORT_DIPNAME( 0x1f, 0x02, "Coin Slot 1")            PORT_DIPLOCATION("SW0:!1,!2,!3,!4,!5") // same as 03
129   PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ))
107   PORT_DIPNAME( 0x1f, 0x02, "Coin Slot 1")
108   PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C )) // same as 01
130109   PORT_DIPSETTING(    0x02, DEF_STR( 1C_1C ))
131110   PORT_DIPSETTING(    0x03, DEF_STR( 2C_1C ))
132111   PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ))
r249889r249890
144123   PORT_DIPSETTING(    0x10, DEF_STR( 1C_8C ))
145124   PORT_DIPSETTING(    0x11, DEF_STR( 2C_8C ))
146125   PORT_DIPSETTING(    0x12, DEF_STR( 1C_9C ))
147   PORT_DIPSETTING(    0x13, "2 Coins/9 Credits")
148   PORT_DIPSETTING(    0x14, "1 Coin/10 Credits")
149   PORT_DIPSETTING(    0x15, "2 Coins/10 Credits")
150   PORT_DIPSETTING(    0x16, "1 Coin/11 Credits")
151   PORT_DIPSETTING(    0x17, "2 Coins/11 Credits")
152   PORT_DIPSETTING(    0x18, "1 Coin/12 Credits")
153   PORT_DIPSETTING(    0x19, "2 Coins/12 Credits")
154   PORT_DIPSETTING(    0x1a, "1 Coin/13 Credits")
155   PORT_DIPSETTING(    0x1b, "2 Coins/13 Credits")
156   PORT_DIPSETTING(    0x1c, "1 Coin/14 Credits")
157   PORT_DIPSETTING(    0x1d, "2 Coins/14 Credits")
158   PORT_DIPSETTING(    0x1e, "1 Coin/15 Credits")
159   PORT_DIPSETTING(    0x1f, "2 Coins/15 Credits")
160   PORT_DIPNAME( 0x20, 0x20, "Score Level Award")         PORT_DIPLOCATION("SW0:!6")
126   PORT_DIPSETTING(    0x13, "2 coins 9 credits")
127   PORT_DIPSETTING(    0x14, "1 coin 10 credits")
128   PORT_DIPSETTING(    0x15, "2 coins 10 credits")
129   PORT_DIPSETTING(    0x16, "1 coin 11 credits")
130   PORT_DIPSETTING(    0x17, "2 coins 11 credits")
131   PORT_DIPSETTING(    0x18, "1 coin 12 credits")
132   PORT_DIPSETTING(    0x19, "2 coins 12 credits")
133   PORT_DIPSETTING(    0x1a, "1 coin 13 credits")
134   PORT_DIPSETTING(    0x1b, "2 coins 13 credits")
135   PORT_DIPSETTING(    0x1c, "1 coin 14 credits")
136   PORT_DIPSETTING(    0x1d, "2 coins 14 credits")
137   PORT_DIPSETTING(    0x1e, "1 coin 15 credits")
138   PORT_DIPSETTING(    0x1f, "2 coins 15 credits")
139   PORT_DIPNAME( 0x20, 0x20, "Award")
161140   PORT_DIPSETTING(    0x00, "Extra Ball")
162   PORT_DIPSETTING(    0x20, "Replay")
163   PORT_DIPNAME( 0x40, 0x00, "S07")                  PORT_DIPLOCATION("SW0:!7")
141   PORT_DIPSETTING(    0x20, "Free Game")
142   PORT_DIPNAME( 0x40, 0x00, "S07")
164143   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
165144   PORT_DIPSETTING(    0x40, DEF_STR( On ))
166   PORT_DIPNAME( 0x80, 0x80, "Play Melodies")            PORT_DIPLOCATION("SW0:!8")
145   PORT_DIPNAME( 0x80, 0x00, "Play melody always")
167146   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
168147   PORT_DIPSETTING(    0x80, DEF_STR( On ))
169148
170149   PORT_START("DSW1")
171   PORT_DIPNAME( 0x1f, 0x02, "Coin Slot 3")            PORT_DIPLOCATION("SW1:!1,!2,!3,!4,!5") // same as 01
172   PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ))
150   PORT_DIPNAME( 0x1f, 0x02, "Coin Slot 3")
151   PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C )) // same as 01
173152   PORT_DIPSETTING(    0x02, DEF_STR( 1C_1C ))
174153   PORT_DIPSETTING(    0x03, DEF_STR( 2C_1C ))
175154   PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ))
r249889r249890
187166   PORT_DIPSETTING(    0x10, DEF_STR( 1C_8C ))
188167   PORT_DIPSETTING(    0x11, DEF_STR( 2C_8C ))
189168   PORT_DIPSETTING(    0x12, DEF_STR( 1C_9C ))
190   PORT_DIPSETTING(    0x13, "2 Coins/9 Credits")
191   PORT_DIPSETTING(    0x14, "1 Coin/10 Credits")
192   PORT_DIPSETTING(    0x15, "2 Coins/10 Credits")
193   PORT_DIPSETTING(    0x16, "1 Coin/11 Credits")
194   PORT_DIPSETTING(    0x17, "2 Coins/11 Credits")
195   PORT_DIPSETTING(    0x18, "1 Coin/12 Credits")
196   PORT_DIPSETTING(    0x19, "2 Coins/12 Credits")
197   PORT_DIPSETTING(    0x1a, "1 Coin/13 Credits")
198   PORT_DIPSETTING(    0x1b, "2 Coins/13 Credits")
199   PORT_DIPSETTING(    0x1c, "1 Coin/14 Credits")
200   PORT_DIPSETTING(    0x1d, "2 Coins/14 Credits")
201   PORT_DIPSETTING(    0x1e, "1 Coin/15 Credits")
202   PORT_DIPSETTING(    0x1f, "2 Coins/15 Credits")
203   PORT_DIPNAME( 0x20, 0x00, "S14")                        PORT_DIPLOCATION("SW1:!6")
169   PORT_DIPSETTING(    0x13, "2 coins 9 credits")
170   PORT_DIPSETTING(    0x14, "1 coin 10 credits")
171   PORT_DIPSETTING(    0x15, "2 coins 10 credits")
172   PORT_DIPSETTING(    0x16, "1 coin 11 credits")
173   PORT_DIPSETTING(    0x17, "2 coins 11 credits")
174   PORT_DIPSETTING(    0x18, "1 coin 12 credits")
175   PORT_DIPSETTING(    0x19, "2 coins 12 credits")
176   PORT_DIPSETTING(    0x1a, "1 coin 13 credits")
177   PORT_DIPSETTING(    0x1b, "2 coins 13 credits")
178   PORT_DIPSETTING(    0x1c, "1 coin 14 credits")
179   PORT_DIPSETTING(    0x1d, "2 coins 14 credits")
180   PORT_DIPSETTING(    0x1e, "1 coin 15 credits")
181   PORT_DIPSETTING(    0x1f, "2 coins 15 credits")
182   PORT_DIPNAME( 0x20, 0x00, "S14")
204183   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
205184   PORT_DIPSETTING(    0x20, DEF_STR( On ))
206   PORT_DIPNAME( 0x40, 0x40, "Award for Beating Highest Score")   PORT_DIPLOCATION("SW1:!7")
185   PORT_DIPNAME( 0x40, 0x00, "Award for beating high score")
207186   PORT_DIPSETTING(    0x00, "Novelty")
208   PORT_DIPSETTING(    0x40, "3 Credits")
209   PORT_DIPNAME( 0x80, 0x80, "Balls per Game")                  PORT_DIPLOCATION("SW1:!8")
187   PORT_DIPSETTING(    0x40, "3 Free Games")
188   PORT_DIPNAME( 0x80, 0x00, "Balls")
210189   PORT_DIPSETTING(    0x00, "3")
211190   PORT_DIPSETTING(    0x80, "5")
212191
213192   PORT_START("DSW2")
214   PORT_DIPNAME( 0x07, 0x01, "Maximum Credits")      PORT_DIPLOCATION("SW2:!1,!2,!3")
193   PORT_DIPNAME( 0x07, 0x02, "Maximum Credits")
215194   PORT_DIPSETTING(    0x00, "5")
216195   PORT_DIPSETTING(    0x01, "10")
217196   PORT_DIPSETTING(    0x02, "15")
218   PORT_DIPSETTING(    0x03, "20")
219   PORT_DIPSETTING(    0x04, "25")
220   PORT_DIPSETTING(    0x05, "30")
221   PORT_DIPSETTING(    0x06, "35")
222   PORT_DIPSETTING(    0x07, "40")
223   PORT_DIPNAME( 0x08, 0x08, "Credits Displayed")      PORT_DIPLOCATION("SW2:!4")
197   PORT_DIPSETTING(    0x00, "20")
198   PORT_DIPSETTING(    0x00, "25")
199   PORT_DIPSETTING(    0x00, "30")
200   PORT_DIPSETTING(    0x00, "35")
201   PORT_DIPSETTING(    0x00, "40")
202   PORT_DIPNAME( 0x08, 0x08, "Credits displayed")
224203   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
225204   PORT_DIPSETTING(    0x08, DEF_STR( On ))
226205   PORT_DIPNAME( 0x10, 0x10, "Match")
227   PORT_DIPSETTING(    0x00, DEF_STR( Off ))         PORT_DIPLOCATION("SW2:!5")
206   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
228207   PORT_DIPSETTING(    0x10, DEF_STR( On ))
229208   // from here, game-specific options
230   PORT_DIPNAME( 0x20, 0x00, "S22 (game specific)")   PORT_DIPLOCATION("SW2:!6")
209   PORT_DIPNAME( 0x20, 0x00, "S22")
231210   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
232211   PORT_DIPSETTING(    0x20, DEF_STR( On ))
233   PORT_DIPNAME( 0x40, 0x00, "S23 (game specific)")   PORT_DIPLOCATION("SW2:!7")
212   PORT_DIPNAME( 0x40, 0x00, "S23")
234213   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
235214   PORT_DIPSETTING(    0x40, DEF_STR( On ))
236   PORT_DIPNAME( 0x80, 0x00, "No Free Balls or Games")   PORT_DIPLOCATION("SW2:!8")  // night rider
215   PORT_DIPNAME( 0x80, 0x00, "No free balls or games") // night rider
237216   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
238217   PORT_DIPSETTING(    0x80, DEF_STR( On ))
239218
240219   PORT_START("DSW3")
241   PORT_DIPNAME( 0x0f, 0x00, "Coin Slot 2")         PORT_DIPLOCATION("SW3:!1,!2,!3,!4")
242   PORT_DIPSETTING(    0x00, "Same as Slot 1")
243   PORT_DIPSETTING(    0x01, DEF_STR( 1C_1C ))
244   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ))
245   PORT_DIPSETTING(    0x03, DEF_STR( 1C_3C ))
246   PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ))
247   PORT_DIPSETTING(    0x05, DEF_STR( 1C_5C ))
248   PORT_DIPSETTING(    0x06, DEF_STR( 1C_6C ))
249   PORT_DIPSETTING(    0x07, DEF_STR( 1C_7C ))
250   PORT_DIPSETTING(    0x08, DEF_STR( 1C_8C ))
251   PORT_DIPSETTING(    0x09, DEF_STR( 1C_9C ))
252   PORT_DIPSETTING(    0x0a, "1 Coin/10 Credits")
253   PORT_DIPSETTING(    0x0b, "1 Coin/11 Credits")
254   PORT_DIPSETTING(    0x0c, "1 Coin/12 Credits")
255   PORT_DIPSETTING(    0x0d, "1 Coin/13 Credits")
256   PORT_DIPSETTING(    0x0e, "1 Coin/14 Credits")
257   PORT_DIPSETTING(    0x0f, "1 Coin/15 Credits")
258   PORT_DIPNAME( 0x10, 0x00, "S29 (game specific)")   PORT_DIPLOCATION("SW3:!5")
220   PORT_DIPNAME( 0x01, 0x00, "S25")
259221   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
222   PORT_DIPSETTING(    0x01, DEF_STR( On ))
223   PORT_DIPNAME( 0x02, 0x00, "S26")
224   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
225   PORT_DIPSETTING(    0x02, DEF_STR( On ))
226   PORT_DIPNAME( 0x04, 0x00, "S27")
227   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
228   PORT_DIPSETTING(    0x04, DEF_STR( On ))
229   PORT_DIPNAME( 0x08, 0x00, "S28")
230   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
231   PORT_DIPSETTING(    0x08, DEF_STR( On ))
232   PORT_DIPNAME( 0x10, 0x00, "S29")
233   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
260234   PORT_DIPSETTING(    0x10, DEF_STR( On ))
261   PORT_DIPNAME( 0x20, 0x00, "S30 (game specific)")   PORT_DIPLOCATION("SW3:!6")
235   PORT_DIPNAME( 0x20, 0x00, "S30")
262236   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
263237   PORT_DIPSETTING(    0x20, DEF_STR( On ))
264   PORT_DIPNAME( 0x40, 0x00, "Awards")               PORT_DIPLOCATION("SW3:!7") // night rider
238   PORT_DIPNAME( 0x40, 0x00, "Awards") // night rider
265239   PORT_DIPSETTING(    0x00, "Conservative")
266240   PORT_DIPSETTING(    0x40, "Liberal")
267   PORT_DIPNAME( 0x80, 0x00, "Lane Adjustment")      PORT_DIPLOCATION("SW3:!8") // night rider
241   PORT_DIPNAME( 0x80, 0x00, "Lane Adjustment") // night rider
268242   PORT_DIPSETTING(    0x00, "Conservative")
269243   PORT_DIPSETTING(    0x80, "Liberal")
270244
271245   PORT_START("X0")
272246   // custom
273   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_STOP)
274   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH)
275   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE)
276   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE)
277   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH)
247   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH)
248   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COLON)
249   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE)
250   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH)
251   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE)
278252   // standard
279253   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
280254   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_TILT )
281//   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Outhole") PORT_CODE(KEYCODE_BACKSPACE)
282   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, outhole_x0, (void *)0x07)   //  PORT_CODE(KEYCODE_BACKSPACE)
255   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Outhole") PORT_CODE(KEYCODE_X)
283256
284257   PORT_START("X1")
285258   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN3 )
286259   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 )
287260   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 )
288   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER)
289   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE)
290   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COLON)
291   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_L)
292   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_TILT2 ) PORT_NAME("Slam Tilt") PORT_CODE(KEYCODE_EQUALS)
261   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_L)
262   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE)
263   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE)
264   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER)
265   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_TILT1 ) PORT_NAME("Slam Tilt")
293266
294267   // custom
295268   PORT_START("X2")
296   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_K)
297   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_J)
298   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_H)
299   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_G)
300   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_F)
301   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_D)
302   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_S)
303   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_A)
269   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_A)
270   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_S)
271   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_D)
272   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_F)
273   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_G)
274   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_H)
275   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_J)
276   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_K)
304277
305278   PORT_START("X3")
306   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_O)
307   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_I)
308   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_U)
309   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Y)
310   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_R)
311   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_E)
312   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_W)
313   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Q)
279   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Q)
280   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_W)
281   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_E)
282   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_R)
283   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Y)
284   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_U)
285   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_I)
286   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_O)
314287
315288   PORT_START("X4")
316   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA)
317   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_M)
318   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_N)
289   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Z)
290   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_C)
291   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_V)
319292   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_B)
320   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_V)
321   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_C)
322   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_X)
323   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Z)
293   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_N)
294   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_M)
295   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA)
296   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_STOP)
324297INPUT_PORTS_END
325298
326static INPUT_PORTS_START( matahari )
327   PORT_INCLUDE( by17 )
328
329   PORT_MODIFY("DSW0")
330   PORT_DIPNAME( 0x60, 0x60, "Award for Beating Highest Score")      PORT_DIPLOCATION("SW0:!6,!7")
331   PORT_DIPSETTING(    0x00, "Nothing")
332   PORT_DIPSETTING(    0x20, "1 Credit")
333   PORT_DIPSETTING(    0x40, "2 Credits")
334   PORT_DIPSETTING(    0x60, "3 Credits")
335
336   PORT_MODIFY("DSW1")
337   PORT_DIPNAME( 0x40, 0x00, "S15")                           PORT_DIPLOCATION("SW1:!7")
338   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
339   PORT_DIPSETTING(    0x40, DEF_STR( On ))
340
341   PORT_MODIFY("DSW2")
342   PORT_DIPNAME( 0x20, 0x00, "S22")                           PORT_DIPLOCATION("SW2:!6")
343   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
344   PORT_DIPSETTING(    0x20, DEF_STR( On ))
345   PORT_DIPNAME( 0x40, 0x00, "Saucer Award Feature")               PORT_DIPLOCATION("SW2:!7")
346   PORT_DIPSETTING(    0x00, "Start at 3000 Points")
347   PORT_DIPSETTING(    0x40, "Start at 2X Bonus")
348   PORT_DIPNAME( 0x80, 0x00, "A & B Special Award Feature Per Ball")   PORT_DIPLOCATION("SW2:!8")
349   PORT_DIPSETTING(    0x00, "Award Special Once")
350   PORT_DIPSETTING(    0x80, "Award Special Alternates")
351
352   PORT_MODIFY("DSW3")
353   PORT_DIPNAME( 0x10, 0x00, "S29")                           PORT_DIPLOCATION("SW3:!5")
354   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
355   PORT_DIPSETTING(    0x10, DEF_STR( On ))
356   PORT_DIPNAME( 0x60, 0x60, "Extra Ball / Specials Award Mode")      PORT_DIPLOCATION("SW3:!6,!7")
357   PORT_DIPSETTING(    0x00, "Novelty / 50,000")
358//   PORT_DIPSETTING(    0x20, "")
359   PORT_DIPSETTING(    0x40, "Extra Ball / 50,000")
360   PORT_DIPSETTING(    0x60, "Extra Ball / Replay")
361   PORT_DIPNAME( 0x80, 0x80, "Score Level Award")                  PORT_DIPLOCATION("SW3:!8")
362   PORT_DIPSETTING(    0x00, "Extra Ball")
363   PORT_DIPSETTING(    0x80, "Replay")
364
365   PORT_MODIFY("X2")   /* Drop Target switches */
366   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, drop_target_x2, (void *)0x20)   // PORT_CODE(KEYCODE_K)
367   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, drop_target_x2, (void *)0x21)   // PORT_CODE(KEYCODE_J)
368   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, drop_target_x2, (void *)0x22)   // PORT_CODE(KEYCODE_H)
369   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, drop_target_x2, (void *)0x23)   // PORT_CODE(KEYCODE_G)
370   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, drop_target_x2, (void *)0x24)   // PORT_CODE(KEYCODE_F)
371   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, drop_target_x2, (void *)0x25)   // PORT_CODE(KEYCODE_D)
372   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, drop_target_x2, (void *)0x26)   // PORT_CODE(KEYCODE_S)
373   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, drop_target_x2, (void *)0x27)   // PORT_CODE(KEYCODE_A)
374
375   PORT_MODIFY("X3")
376   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, saucer_x3, (void *)0x37)   // PORT_CODE(KEYCODE_Q)
377INPUT_PORTS_END
378
379static INPUT_PORTS_START( pwerplay )
380   PORT_INCLUDE( by17 )
381
382   PORT_MODIFY("DSW0")
383   PORT_DIPNAME( 0x60, 0x60, "Award for Beating Highest Score")   PORT_DIPLOCATION("SW0:!6,!7")
384   PORT_DIPSETTING(    0x00, "Nothing")
385   PORT_DIPSETTING(    0x20, "1 Credit")
386   PORT_DIPSETTING(    0x40, "2 Credits")
387   PORT_DIPSETTING(    0x60, "3 Credits")
388
389   PORT_MODIFY("DSW1")
390   PORT_DIPNAME( 0x20, 0x00, "Drop Target Award Sequence")         PORT_DIPLOCATION("SW1:!6")
391   PORT_DIPSETTING(    0x00, "5X then Extra Ball")
392   PORT_DIPSETTING(    0x20, "5X and Extra Ball")
393   PORT_DIPNAME( 0x40, 0x00, "Rollover Button Score")            PORT_DIPLOCATION("SW1:!7")
394   PORT_DIPSETTING(    0x00, "Conservative - 100 Points")
395   PORT_DIPSETTING(    0x40, "Liberal - 1,000 Points")
396
397   PORT_MODIFY("DSW2")
398   PORT_DIPNAME( 0x20, 0x00, "Drop Target Bank Reset")            PORT_DIPLOCATION("SW2:!6")
399   PORT_DIPSETTING(    0x00, "Reset Both Banks")
400   PORT_DIPSETTING(    0x20, "Reset Completed Bank Only")
401   PORT_DIPNAME( 0x40, 0x00, "Pop Bumper Scores")               PORT_DIPLOCATION("SW2:!7")
402   PORT_DIPSETTING(    0x00, "Alternate 1,000 Points Top and Bottom")
403   PORT_DIPSETTING(    0x40, "All score 1,000 Points When Lit")
404
405   PORT_MODIFY("DSW3")
406   PORT_DIPNAME( 0x30, 0x20, "Top Saucer Specials Feature")      PORT_DIPLOCATION("SW3:!5,!6")
407   PORT_DIPSETTING(    0x00, "Outlane Specials do Not Light")
408//   PORT_DIPSETTING(    0x10, "")
409   PORT_DIPSETTING(    0x20, "Outlane Specials Alternate")
410   PORT_DIPSETTING(    0x30, "Outlane Specials Both Light")
411   PORT_DIPNAME( 0xc0, 0xc0, "Award Mode")                     PORT_DIPLOCATION("SW3:!7,!8")
412   PORT_DIPSETTING(    0x00, "Novelty / 50,000")
413//   PORT_DIPSETTING(    0x40, "")
414   PORT_DIPSETTING(    0x80, "Extra Ball / 50,000")
415   PORT_DIPSETTING(    0xc0, "Extra Ball / Replay")
416
417   PORT_MODIFY("X2")   /* Drop Target switches */
418   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, drop_target_x2, (void *)0x20)   // PORT_CODE(KEYCODE_K)
419   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, drop_target_x2, (void *)0x21)   // PORT_CODE(KEYCODE_J)
420   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, drop_target_x2, (void *)0x22)   // PORT_CODE(KEYCODE_H)
421   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, drop_target_x2, (void *)0x23)   // PORT_CODE(KEYCODE_G)
422   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, drop_target_x2, (void *)0x24)   // PORT_CODE(KEYCODE_F)
423   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, drop_target_x2, (void *)0x25)   // PORT_CODE(KEYCODE_D)
424   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, drop_target_x2, (void *)0x26)   // PORT_CODE(KEYCODE_S)
425   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, drop_target_x2, (void *)0x27)   // PORT_CODE(KEYCODE_A)
426
427   PORT_MODIFY("X3")
428   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by17_state, saucer_x3, (void *)0x37)   // PORT_CODE(KEYCODE_Q)
429INPUT_PORTS_END
430
431
432CUSTOM_INPUT_MEMBER( by17_state::outhole_x0 )
299INPUT_CHANGED_MEMBER( by17_state::activity_test )
433300{
434   int bit_shift = ((FPTR)param & 0x07);
435   int port = (((FPTR)param >> 4) & 0x07);
436
437   /* Here we simulate the ball sitting in the Outhole so the Outhole Solenoid can release it */
438
439   if (machine().input().code_pressed_once(KEYCODE_BACKSPACE))
440      m_io_hold_x[port] |= (1 << bit_shift);
441
442   return ((m_io_hold_x[port] >> bit_shift) & 1);
301   if(newval)
302      m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
443303}
444304
445CUSTOM_INPUT_MEMBER( by17_state::saucer_x3 )
446{
447   int bit_shift = ((FPTR)param & 0x07);
448   int port = (((FPTR)param >> 4) & 0x07);
449
450   /* Here we simulate the ball sitting in a Saucer so the Saucer Solenoid can release it */
451
452   if (machine().input().code_pressed_once(KEYCODE_Q))
453      m_io_hold_x[port] |= (1 << bit_shift);
454
455   return ((m_io_hold_x[port] >> bit_shift) & 1);
456}
457
458
459CUSTOM_INPUT_MEMBER( by17_state::drop_target_x2 )
460{
461   /* Here we simulate fallen Drop Targets so the Drop Target Reset Solenoids can release the switches */
462
463   int bit_shift = ((FPTR)param & 0x07);
464   int port = (((FPTR)param >> 4) & 0x07);
465
466   switch (bit_shift)
467   {
468      case 0:   if (machine().input().code_pressed_once(KEYCODE_K))
469                  m_io_hold_x[port] |= (1 << bit_shift);
470               break;
471      case 1:   if (machine().input().code_pressed_once(KEYCODE_J))
472                  m_io_hold_x[port] |= (1 << bit_shift);
473               break;
474      case 2:   if (machine().input().code_pressed_once(KEYCODE_H))
475                  m_io_hold_x[port] |= (1 << bit_shift);
476               break;
477      case 3:   if (machine().input().code_pressed_once(KEYCODE_G))
478                  m_io_hold_x[port] |= (1 << bit_shift);
479               break;
480      case 4:   if (machine().input().code_pressed_once(KEYCODE_F))
481                  m_io_hold_x[port] |= (1 << bit_shift);
482               break;
483      case 5:   if (machine().input().code_pressed_once(KEYCODE_D))
484                  m_io_hold_x[port] |= (1 << bit_shift);
485               break;
486      case 6:   if (machine().input().code_pressed_once(KEYCODE_S))
487                  m_io_hold_x[port] |= (1 << bit_shift);
488               break;
489      case 7:   if (machine().input().code_pressed_once(KEYCODE_A))
490                  m_io_hold_x[port] |= (1 << bit_shift);
491               break;
492   }
493   return ((m_io_hold_x[port] >> bit_shift) & 1);
494}
495
496
497READ8_MEMBER(by17_state::nibble_nvram_r)
498{
499   return (m_nvram[offset] | 0x0f);
500}
501
502WRITE8_MEMBER(by17_state::nibble_nvram_w)
503{
504   m_nvram[offset] = (data | 0x0f);
505}
506
507INPUT_CHANGED_MEMBER( by17_state::activity_button )
508{
509   if (newval != oldval)
510      m_maincpu->set_input_line(INPUT_LINE_NMI, (newval ? ASSERT_LINE : CLEAR_LINE));
511}
512
513305INPUT_CHANGED_MEMBER( by17_state::self_test )
514306{
515307   m_pia_u10->ca1_w(newval);
516308}
517309
518READ_LINE_MEMBER( by17_state::u10_ca1_r )
519{
520   return m_io_test->read() & 0x01;
521}
522READ_LINE_MEMBER( by17_state::u10_cb1_r )
523{
524   return m_u10_cb1;
525}
526
527310WRITE_LINE_MEMBER( by17_state::u10_ca2_w )
528311{
529#if 0               // Display Blanking - Out of sync with video redraw rate and causes flicker so it's disabled
530   if (state == 0)
531   {
532      int digit;
533
534      for (digit=1; digit<=8; digit++)
535      {
536         output_set_digit_value(10+digit, 0);
537         output_set_digit_value(20+digit, 0);
538         output_set_digit_value(30+digit, 0);
539         output_set_digit_value(40+digit, 0);
540         output_set_digit_value(50+digit, 0);
541      }
542   }
543#endif
544
545312   m_u10_ca2 = state;
313   if (!state)
314      m_counter = 0;
546315}
547316
548317WRITE_LINE_MEMBER( by17_state::u10_cb2_w )
549318{
550//   logerror("New U10 CB2 state %01x, was %01x.   PIA=%02x\n", state, m_u10_cb2, m_u10a);
551
552   if (state == TRUE)
553      m_lamp_decode = m_u10a & 0x0f;
554
555   m_u10_cb2 = state;
556319}
557320
558321WRITE_LINE_MEMBER( by17_state::u11_ca2_w )
559322{
560   output_set_value("led0", state);
323   output_set_value("led0", !state);
561324}
562325
563READ_LINE_MEMBER( by17_state::u11_ca1_r )
564{
565   return m_u11_ca1;
566}
567
568READ_LINE_MEMBER( by17_state::u11_cb1_r )
569{
570   /* Pin 32 on MPU J5 AID connector tied low */
571   return 0;
572}
573
574326WRITE_LINE_MEMBER( by17_state::u11_cb2_w )
575327{
576328   m_u11_cb2 = state;
r249889r249890
583335
584336WRITE8_MEMBER( by17_state::u10_a_w )
585337{
586//   logerror("Writing %02x to U10 PIA, CB2 state is %01x,  CA2 state is %01x, Lamp_Dec is %02x\n",data, m_u10_cb2, m_u10_ca2, (m_lamp_decode & 0x0f));
338   m_u10a = data;
587339
588340   if (!m_u10_ca2)
589341   {
590      if (BIT(data, 0)==0)         // Display 1
342      m_counter++;
343
344      if (m_counter==1)
345         m_segment[0] = data>>4;
346      else
347      if (m_counter==3)
591348         m_segment[1] = data>>4;
592349      else
593      if (BIT(data, 1)==0)         // Display 2
350      if (m_counter==5)
594351         m_segment[2] = data>>4;
595352      else
596      if (BIT(data, 2)==0)         // Display 3
353      if (m_counter==7)
597354         m_segment[3] = data>>4;
598355      else
599      if (BIT(data, 3)==0)         // Display 4
356      if (m_counter==9)
600357         m_segment[4] = data>>4;
601358   }
602
603   /*** Update the Lamp latched outputs ***/
604   if ((data & 0x0f) == 0x0f)
605   {
606      if ((m_lamp_decode & 0x0f) < 0x0f)
607      {
608         if (output_get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+00) ) ==0 ) output_set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+00), ((data & 0x10) ? FALSE : TRUE));
609         if (output_get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+15) ) ==0 ) output_set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+15), ((data & 0x20) ? FALSE : TRUE));
610         if (output_get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+30) ) ==0 ) output_set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+30), ((data & 0x40) ? FALSE : TRUE));
611         if (output_get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+45) ) ==0 ) output_set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+45), ((data & 0x80) ? FALSE : TRUE));
612      }
613      else
614      {
615         // Rest output - all lamps are off
616      }
617   }
618
619   m_u10a = data;
620359}
621360
622361READ8_MEMBER( by17_state::u10_b_r )
r249889r249890
665404
666405WRITE8_MEMBER( by17_state::u11_a_w )
667406{
668   if (BIT(data, 0)==0)         // Display Credit/Ball
669   {
670      m_segment[5] = m_u10a>>4;
671   }
407   m_u11a = data;
672408
673
674   m_digit = 0;
675
676   if BIT(data, 7)
677      m_digit = 1;
678   else
679   if BIT(data, 6)
680      m_digit = 2;
681   else
682   if BIT(data, 5)
683      m_digit = 3;
684   else
685   if BIT(data, 4)
686      m_digit = 4;
687   else
688   if BIT(data, 3)
689      m_digit = 5;
690   else
691   if BIT(data, 2)
692      m_digit = 6;
693   else
694   if (BIT(data, 2) && BIT(data, 3))   // Aftermarket 7th digit strobe for 6 digit games
695      m_digit = 7;
696
697   if ((m_u10_ca2==0) && m_digit)
409   if (!m_u10_ca2)
698410   {
699      static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543 - BCD to 7 Segment Display Decoder
411      if BIT(data, 2)
412         m_digit = 5;
413      else
414      if BIT(data, 3)
415         m_digit = 4;
416      else
417      if BIT(data, 4)
418         m_digit = 3;
419      else
420      if BIT(data, 5)
421         m_digit = 2;
422      else
423      if BIT(data, 6)
424         m_digit = 1;
425      else
426      if BIT(data, 7)
427         m_digit = 0;
700428
701      output_set_digit_value(10+m_digit, patterns[m_segment[1]]);
702      output_set_digit_value(20+m_digit, patterns[m_segment[2]]);
703      output_set_digit_value(30+m_digit, patterns[m_segment[3]]);
704      output_set_digit_value(40+m_digit, patterns[m_segment[4]]);
705      output_set_digit_value(50+m_digit, patterns[m_segment[5]]);
706
429      if (BIT(data, 0) && (m_counter > 8))
430      {
431         static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
432         output_set_digit_value(m_digit, patterns[m_segment[0]]);
433         output_set_digit_value(10+m_digit, patterns[m_segment[1]]);
434         output_set_digit_value(20+m_digit, patterns[m_segment[2]]);
435         output_set_digit_value(30+m_digit, patterns[m_segment[3]]);
436         output_set_digit_value(40+m_digit, patterns[m_segment[4]]);
437      }
707438   }
708
709   m_u11a = data;
710439}
711440
712441WRITE8_MEMBER( by17_state::u11_b_w )
713442{
443   m_u11b = data;
714444   if (!m_u11_cb2)
715445   {
716      if ((data & 0x0f) < 0x0f)   // Momentary Solenoids
446      switch (data & 15)
717447      {
718         output_set_indexed_value( "solenoid", (data & 0x0f), TRUE);
719
720         if (m_solenoid_features[(data & 0x0f)][3])   // Reset/release relevant switch after firing Solenoid
721            m_io_hold_x[(m_solenoid_features[(data & 0x0f)][2])] &= (m_solenoid_features[(data & 0x0f)][3]);
722
723         if (m_solenoid_features[(data & 0x0f)][0] != 0xff)   // Play solenoid audio sample
724            m_samples->start(m_solenoid_features[(data & 0x0f)][0], m_solenoid_features[(data & 0x0f)][1]);
448         case 0x0: // chime 10
449            m_samples->start(1, 1);
450            break;
451         case 0x1: // chime 100
452            m_samples->start(2, 2);
453            break;
454         case 0x2: // chime 1000
455            m_samples->start(3, 3);
456            break;
457         case 0x3: // chime 10000
458            m_samples->start(0, 4);
459            break;
460         case 0x4:
461            break;
462         case 0x5: // knocker
463            m_samples->start(0, 6);
464            break;
465         case 0x6: // outhole
466            m_samples->start(0, 5);
467            break;
468         // from here, vary per game
469         case 0x7:
470         case 0x8:
471         case 0x9:
472            break;
473         case 0xa:
474         case 0xb:
475         case 0xc: // bumpers
476            m_samples->start(0, 0);
477            break;
478         case 0xd:
479         case 0xe:
480         case 0xf:
481            break;
725482      }
726      else                  // Rest output - all momentary solenoids are off
727      {
728         for (int i=0; i<15; i++)
729         {
730            output_set_indexed_value( "solenoid", i, FALSE);
731         }
732      }
733483   }
484}
734485
735
736   if ((m_u11b & 0x10) && ((data & 0x10)==0))
737   {
738      output_set_value("solenoid16", TRUE);
739      if (m_solenoid_features[16][0] != 0xff)
740         m_samples->start(m_solenoid_features[16][0], m_solenoid_features[16][1]);
741   }
742   else if ((data & 0x10) && ((m_u11b & 0x10)==0))
743   {
744      output_set_value("solenoid16", FALSE);
745      if (m_solenoid_features[16][0] != 0xff)
746         m_samples->start(m_solenoid_features[16][0], m_solenoid_features[16][2]);
747   }
748   if ((m_u11b & 0x20) && ((data & 0x20)==0))
749   {
750      output_set_value("solenoid17", TRUE);               // Coin Lockout Coil engage
751      if (m_solenoid_features[17][0] != 0xff)
752         m_samples->start(m_solenoid_features[17][0], m_solenoid_features[17][1]);
753   }
754   else if ((data & 0x20) && ((m_u11b & 0x20)==0))
755   {
756      output_set_value("solenoid17", FALSE);               // Coin Lockout Coil release
757      if (m_solenoid_features[17][0] != 0xff)
758         m_samples->start(m_solenoid_features[17][0], m_solenoid_features[17][2]);
759   }
760   if ((m_u11b & 0x40) && ((data & 0x40)==0))
761   {
762      output_set_value("solenoid18", TRUE);               // Flipper Enable Relay engage
763      if (m_solenoid_features[18][0] != 0xff)
764         m_samples->start(m_solenoid_features[18][0], m_solenoid_features[18][1]);
765   }
766   else if ((data & 0x40) && ((m_u11b & 0x40)==0))
767   {
768      output_set_value("solenoid18", FALSE);               // Flipper Enable Relay release
769      if (m_solenoid_features[18][0] != 0xff)
770         m_samples->start(m_solenoid_features[18][0], m_solenoid_features[18][2]);
771   }
772   if ((m_u11b & 0x80) && ((data & 0x80)==0))
773   {
774      output_set_value("solenoid19", TRUE);
775      if (m_solenoid_features[19][0] != 0xff)
776         m_samples->start(m_solenoid_features[19][0], m_solenoid_features[19][1]);
777   }
778   else if ((data & 0x80) && ((m_u11b & 0x80)==0))
779   {
780      output_set_value("solenoid19", FALSE);
781      if (m_solenoid_features[19][0] != 0xff)
782         m_samples->start(m_solenoid_features[19][0], m_solenoid_features[19][2]);
783   }
784
785   m_u11b = data;
486void by17_state::machine_reset()
487{
488   m_u10a = 0;
489   m_u10b = 0;
490   m_u10_cb2 = 0;
491   m_u11a = 0;
492   m_u11b = 0;
493   m_timer_x = 0;
494   m_u11_timer = 0;
786495}
787496
788
789497// zero-cross detection
790TIMER_DEVICE_CALLBACK_MEMBER( by17_state::timer_z_freq )
498TIMER_DEVICE_CALLBACK_MEMBER( by17_state::timer_x )
791499{
792
793/*  Zero Crossing Detector - this timing is based on 50Hz AC line power input converted to unregulated DC
794
795   -+                          +---+
796     |                          |   |
797     |<-------- 9.30ms -------->|<->|700us
798     |                          |   |
799    +--------------------------+   +-----
800*/
801
802   timer_device *zero_crossing_active_timer = machine().device<timer_device>("timer_z_pulse");
803
804   zero_crossing_active_timer->adjust(attotime::from_usec(700));
805
806   m_u10_cb1 = true;
807   m_pia_u10->cb1_w(m_u10_cb1);
808
809   /*** Zero Crossing - power to all Lamp SCRs is cut off and reset ***/
810
811   for (int i=0; i<60; i++)
812   {
813      output_set_indexed_value( "lamp", i, 0 );
814   }
815
500   m_timer_x ^= 1;
501   m_pia_u10->cb1_w(m_timer_x);
816502}
817TIMER_DEVICE_CALLBACK_MEMBER( by17_state::timer_z_pulse )
818{
819   /*** Line Power to DC Zero Crossing has ended ***/
820503
821   m_u10_cb1 = false;
822   m_pia_u10->cb1_w(m_u10_cb1);
823}
824
825504// 555 timer for display refresh
826505TIMER_DEVICE_CALLBACK_MEMBER( by17_state::u11_timer )
827506{
828
829/*   +--------------------------+   +-----
830     |                          |   |
831     |<-------- 2.85ms -------->|<->|300us
832     |                          |   |
833    -+                          +---+
834*/
835
836   timer_device *display_refresh_timer = machine().device<timer_device>("timer_d_pulse");
837
838   display_refresh_timer->adjust(attotime::from_msec(2.85));
839
840   m_u11_ca1 = true;
841   m_pia_u11->ca1_w(m_u11_ca1);
507   m_u11_timer ^= 1;
508   m_pia_u11->ca1_w(m_u11_timer);
842509}
843510
844TIMER_DEVICE_CALLBACK_MEMBER( by17_state::timer_d_pulse )
845{
846   m_u11_ca1 = false;
847   m_pia_u11->ca1_w(m_u11_ca1);
848}
849
850
851
852DRIVER_INIT_MEMBER( by17_state, by17 )
853{
854
855   static const UINT8 solenoid_features_default[20][4] =
856   {
857   // This table serves two functions and is configured on a per game basis:
858   // Assign a particular sound sample corresponding to a solenoid function, and
859   // release any switches being held closed eg. drop targets, ball in saucer/outhole, etc
860
861   //  { Sound Channel, Sound Sample, Switch Strobe, Switch Return Mask }
862   /*00*/  { 0x00, 0x00,  0x00, 0x00 },
863   /*01*/  { 0x05, 0x01,  0x00, 0x00 },      // Chime 10
864   /*02*/  { 0x05, 0x02,  0x00, 0x00 },      // Chime 100
865   /*03*/  { 0x05, 0x03,  0x00, 0x00 },      // Chime 1000
866   /*04*/  { 0x05, 0x04,  0x00, 0x00 },      // Chime 10000
867   /*05*/  { 0x04, 0x00,  0x00, 0x00 },      // Knocker
868   /*06*/  { 0x01, 0x09,  0x00, 0x7f },      // Outhole
869   /*07*/  { 0x00, 0x00,  0x00, 0x00 },
870   /*08*/  { 0x02, 0x00,  0x00, 0x00 },
871   /*09*/  { 0x02, 0x00,  0x00, 0x00 },
872   /*10*/  { 0x02, 0x00,  0x00, 0x00 },
873   /*11*/  { 0x02, 0x00,  0x00, 0x00 },
874   /*12*/  { 0x00, 0x00,  0x00, 0x00 },
875   /*13*/  { 0x02, 0x00,  0x00, 0x00 },
876   /*14*/  { 0x00, 0x00,  0x00, 0x00 },
877   /*15*/  { 0xff, 0xff,  0x00, 0x00 },      // None - all momentary solenoids off
878   //  { Sound Channel, Sound engage, Sound release, Not Used }
879   /*16*/  { 0xff, 0xff, 0xff,  0x00 },
880   /*17*/  { 0x00, 0x0c, 0x0d,  0x00 },      // Coin Lockout coil
881   /*18*/  { 0x00, 0x0e, 0x0f,  0x00 },      // Flipper Enable relay
882   /*19*/  { 0xff, 0xff, 0xff,  0x00 }
883   };
884
885   for (int i=0; i<20; i++)
886   {
887      for (int j=0; j<4; j++)
888         m_solenoid_features[i][j] = solenoid_features_default[i][j];
889   }
890}
891
892
893DRIVER_INIT_MEMBER( by17_state, matahari )
894{
895
896   static const UINT8 solenoid_features_matahari[20][4] =
897   {
898   //  { Sound Channel, Sound Sample, Switch Strobe, Switch Return Mask }
899   /*00*/  { 0x02, 0x05,  0x03, 0x7f },      // Saucer
900   /*01*/  { 0x05, 0x01,  0x00, 0x00 },      // Chime 10
901   /*02*/  { 0x05, 0x02,  0x00, 0x00 },      // Chime 100
902   /*03*/  { 0x05, 0x03,  0x00, 0x00 },      // Chime 1000
903   /*04*/  { 0x05, 0x04,  0x00, 0x00 },      // Chime 10000
904   /*05*/  { 0x04, 0x06,  0x00, 0x00 },      // Knocker
905   /*06*/  { 0x01, 0x09,  0x00, 0x7f },      // Outhole
906   /*07*/  { 0x02, 0x00,  0x00, 0x00 },      // Pop Bumper Left Bottom
907   /*08*/  { 0x02, 0x00,  0x00, 0x00 },      // Pop Bumper Left Top
908   /*09*/  { 0x02, 0x00,  0x00, 0x00 },      // Pop Bumper Right Top
909   /*10*/  { 0x02, 0x00,  0x00, 0x00 },      // Pop Bumper Right Bottom
910   /*11*/  { 0x02, 0x07,  0x00, 0x00 },      // Slingshot Left
911   /*12*/  { 0x00, 0x0b,  0x02, 0x0f },      // Drop Target Reset Left
912   /*13*/  { 0x02, 0x07,  0x00, 0x00 },      // Slingshot Right
913   /*14*/  { 0x03, 0x0b,  0x02, 0xf0 },      // Drop Target Reset Right
914   /*15*/  { 0xff, 0xff,  0x00, 0x00 },      // None - all momentary solenoids off
915   //  { Sound Channel, Sound engage, Sound release, Not Used }
916   /*16*/  { 0xff, 0xff, 0xff,  0x00 },
917   /*17*/  { 0x00, 0x0c, 0x0d,  0x00 },      // Coin Lockout coil
918   /*18*/  { 0x00, 0x0e, 0x0f,  0x00 },      // Flipper Enable relay
919   /*19*/  { 0xff, 0xff, 0xff,  0x00 }
920   };
921
922   for (int i=0; i<20; i++)
923   {
924      for (int j=0; j<4; j++)
925         m_solenoid_features[i][j] = solenoid_features_matahari[i][j];
926   }
927}
928
929
930DRIVER_INIT_MEMBER( by17_state, pwerplay )
931{
932
933   static const UINT8 solenoid_features_pwerplay[20][4] =
934   {
935   //  { Sound Channel, Sound Sample, Switch Strobe, Switch Return Mask }
936   /*00*/  { 0x00, 0x10,  0x00, 0x00 },      // Post Down
937   /*01*/  { 0x05, 0x01,  0x00, 0x00 },      // Chime 10
938   /*02*/  { 0x05, 0x02,  0x00, 0x00 },      // Chime 100
939   /*03*/  { 0x05, 0x03,  0x00, 0x00 },      // Chime 1000
940   /*04*/  { 0x05, 0x04,  0x00, 0x00 },      // Chime 10000
941   /*05*/  { 0x04, 0x06,  0x00, 0x00 },      // Knocker
942   /*06*/  { 0x01, 0x09,  0x00, 0x7f },      // Outhole
943   /*07*/  { 0x02, 0x05,  0x03, 0x7f },      // Saucer
944   /*08*/  { 0x02, 0x00,  0x00, 0x00 },      // Pop Bumper Left
945   /*09*/  { 0x02, 0x00,  0x00, 0x00 },      // Pop Bumper Right
946   /*10*/  { 0x02, 0x00,  0x00, 0x00 },      // Pop Bumper Bottom
947   /*11*/  { 0x02, 0x07,  0x00, 0x00 },      // Slingshot Left
948   /*12*/  { 0x00, 0x0b,  0x02, 0x0f },      // Drop Target Reset Left
949   /*13*/  { 0x02, 0x07,  0x00, 0x00 },      // Slingshot Right
950   /*14*/  { 0x03, 0x0b,  0x02, 0xf0 },      // Drop Target Reset Right
951   /*15*/  { 0xff, 0xff,  0x00, 0x00 },      // None - all momentary solenoids off
952   //  { Sound Channel, Sound engage, Sound release, Not Used }
953   /*16*/  { 0x00, 0x11, 0x0f,  0x00 },      // Post Up
954   /*17*/  { 0x00, 0x0c, 0x0d,  0x00 },      // Coin Lockout coil
955   /*18*/  { 0x00, 0x0e, 0x0f,  0x00 },      // Flipper Enable relay
956   /*19*/  { 0xff, 0xff, 0xff,  0x00 }
957   };
958
959
960   for (int i=0; i<20; i++)
961   {
962      for (int j=0; j<4; j++)
963         m_solenoid_features[i][j] = solenoid_features_pwerplay[i][j];
964   }
965}
966
967
968
969MACHINE_RESET_MEMBER( by17_state, by17 )
970{
971   render_target *target = machine().render().first_target();
972
973   target->set_view(0);
974
975   m_u10a = 0;
976   m_u10b = 0;
977   m_u11a = 0;
978   m_u11b = 0;
979   m_lamp_decode = 0x0f;
980   m_io_hold_x[0] = 0x80;   // Put ball in Outhole on startup
981   m_io_hold_x[1] = m_io_hold_x[2] = m_io_hold_x[3] = m_io_hold_x[4] = 0;
982}
983
984
985
986511static MACHINE_CONFIG_START( by17, by17_state )
987512   /* basic machine hardware */
988   MCFG_CPU_ADD("maincpu", M6800, 530000)   // No xtal, just 2 chips forming a multivibrator oscillator around 530KHz
513   MCFG_CPU_ADD("maincpu", M6800, 1000000) // no xtal, just 2 chips forming a random oscillator
989514   MCFG_CPU_PROGRAM_MAP(by17_map)
990515
991   MCFG_MACHINE_RESET_OVERRIDE( by17_state, by17 )
516   MCFG_NVRAM_ADD_0FILL("nvram")
992517
993   MCFG_NVRAM_ADD_0FILL("nvram")   // 'F' filled causes Credit Display to be blank on first startup
994
995518   /* Video */
996519   MCFG_DEFAULT_LAYOUT(layout_by17)
997520
r249889r249890
1004527   MCFG_PIA_WRITEPA_HANDLER(WRITE8(by17_state, u10_a_w))
1005528   MCFG_PIA_READPB_HANDLER(READ8(by17_state, u10_b_r))
1006529   MCFG_PIA_WRITEPB_HANDLER(WRITE8(by17_state, u10_b_w))
1007   MCFG_PIA_READCA1_HANDLER(READLINE(by17_state, u10_ca1_r))
1008   MCFG_PIA_READCB1_HANDLER(READLINE(by17_state, u10_cb1_r))
1009530   MCFG_PIA_CA2_HANDLER(WRITELINE(by17_state, u10_ca2_w))
1010531   MCFG_PIA_CB2_HANDLER(WRITELINE(by17_state, u10_cb2_w))
1011532   MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
1012533   MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
1013   MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_z_freq", by17_state, timer_z_freq, attotime::from_hz(100)) // Mains Line Frequency * 2
1014   MCFG_TIMER_DRIVER_ADD("timer_z_pulse", by17_state, timer_z_pulse)                                // Active pulse length from Zero Crossing detector
534   MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_x", by17_state, timer_x, attotime::from_hz(120)) // mains freq*2
1015535
1016536   MCFG_DEVICE_ADD("pia_u11", PIA6821, 0)
1017537   MCFG_PIA_READPA_HANDLER(READ8(by17_state, u11_a_r))
1018538   MCFG_PIA_WRITEPA_HANDLER(WRITE8(by17_state, u11_a_w))
1019539   MCFG_PIA_WRITEPB_HANDLER(WRITE8(by17_state, u11_b_w))
1020   MCFG_PIA_READCA1_HANDLER(READLINE(by17_state, u11_ca1_r))
1021   MCFG_PIA_READCB1_HANDLER(READLINE(by17_state, u11_cb1_r))
1022540   MCFG_PIA_CA2_HANDLER(WRITELINE(by17_state, u11_ca2_w))
1023541   MCFG_PIA_CB2_HANDLER(WRITELINE(by17_state, u11_cb2_w))
1024542   MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
1025543   MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
1026   MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_d_freq", by17_state, u11_timer, attotime::from_hz(317)) // 555 timer
1027   MCFG_TIMER_DRIVER_ADD("timer_d_pulse", by17_state, timer_d_pulse)                             // 555 Active pulse length
544   MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_d", by17_state, u11_timer, attotime::from_hz(634)) // 555 timer*2
1028545MACHINE_CONFIG_END
1029546
1030
1031
1032
1033547/*------------------------------------------------------------------
1034548/ Bow and Arrow #1033 (prototype only, slightly different hardware)
1035549/ not sure yet if it belongs in this driver
r249889r249890
1128642/---------------------------------------------------------------*/
1129643
1130644
1131GAME(  1976, bowarrow, 0,        by17, by17,     by17_state, by17,     ROT0, "Bally", "Bow & Arrow (Prototype)", MACHINE_IS_SKELETON_MECHANICAL)
1132GAME(  1977, freedom,  0,        by17, by17,     by17_state, by17,     ROT0, "Bally", "Freedom", MACHINE_IS_SKELETON_MECHANICAL)
1133GAME(  1977, nightrdr, 0,        by17, by17,     by17_state, by17,     ROT0, "Bally", "Night Rider (rev. 21)", MACHINE_IS_SKELETON_MECHANICAL)
1134GAME(  1977, nightr20, nightrdr, by17, by17,     by17_state, by17,     ROT0, "Bally", "Night Rider (rev. 20)", MACHINE_IS_SKELETON_MECHANICAL)
1135GAME(  1978, blackjck, 0,        by17, by17,     by17_state, by17,     ROT0, "Bally", "Black Jack (Pinball)", MACHINE_IS_SKELETON_MECHANICAL)
1136GAME(  1977, evelknie, 0,        by17, by17,     by17_state, by17,     ROT0, "Bally", "Evel Knievel", MACHINE_IS_SKELETON_MECHANICAL)
1137GAMEL( 1978, matahari, 0,        by17, matahari, by17_state, matahari, ROT0, "Bally", "Mata Hari", MACHINE_MECHANICAL, layout_by17_matahari)
1138GAME(  1977, eightbll, 0,        by17, by17,     by17_state, by17,     ROT0, "Bally", "Eight Ball", MACHINE_IS_SKELETON_MECHANICAL)
1139GAMEL( 1978, pwerplay, 0,        by17, pwerplay, by17_state, pwerplay, ROT0, "Bally", "Power Play (Pinball)", MACHINE_MECHANICAL, layout_by17_pwerplay)
1140GAME(  1978, stk_sprs, 0,        by17, by17,     by17_state, by17,     ROT0, "Bally", "Strikes and Spares", MACHINE_IS_SKELETON_MECHANICAL)
645GAME( 1976, bowarrow, 0,        by17, by17, driver_device, 0, ROT0, "Bally", "Bow & Arrow (Prototype)", MACHINE_IS_SKELETON_MECHANICAL)
646GAME( 1977, freedom,  0,        by17, by17, driver_device, 0, ROT0, "Bally", "Freedom", MACHINE_MECHANICAL)
647GAME( 1977, nightrdr, 0,        by17, by17, driver_device, 0, ROT0, "Bally", "Night Rider (rev. 21)", MACHINE_MECHANICAL)
648GAME( 1977, nightr20, nightrdr, by17, by17, driver_device, 0, ROT0, "Bally", "Night Rider (rev. 20)", MACHINE_MECHANICAL)
649GAME( 1978, blackjck, 0,        by17, by17, driver_device, 0, ROT0, "Bally", "Black Jack (Pinball)", MACHINE_MECHANICAL)
650GAME( 1977, evelknie, 0,        by17, by17, driver_device, 0, ROT0, "Bally", "Evel Knievel", MACHINE_MECHANICAL)
651GAME( 1978, matahari, 0,        by17, by17, driver_device, 0, ROT0, "Bally", "Mata Hari", MACHINE_MECHANICAL)
652GAME( 1977, eightbll, 0,        by17, by17, driver_device, 0, ROT0, "Bally", "Eight Ball", MACHINE_MECHANICAL)
653GAME( 1978, pwerplay, 0,        by17, by17, driver_device, 0, ROT0, "Bally", "Power Play (Pinball)", MACHINE_MECHANICAL)
654GAME( 1978, stk_sprs, 0,        by17, by17, driver_device, 0, ROT0, "Bally", "Strikes and Spares", MACHINE_MECHANICAL)
trunk/src/mame/drivers/by35.c
r249889r249890
11// license:BSD-3-Clause
2// copyright-holders:Robbbert, Quench
2// copyright-holders:Robbbert
33/********************************************************************************************
44
55    PINBALL
r249889r249890
5050(unknown)       1370 (Centaur II - Manual has the correct cover but insides are for Centaur #1239)
5151
5252
53- The Nuova Bell Games from Dark Shadow onwards use inhouse designed circuit boards. The MPU board contains enhancements for full
54  CPU address space, larger ROMs, 6802 CPU, Toshiba TC5517 CMOS RAM (2kb) for battery backup that can be jumpered in nibble or byte mode, etc.
55
5653ToDo:
57- The Nuova Bell games don't boot.
54- The Nuova Bell games don't boot
5855- The Bell games have major problems
5956- Sound
6057- Dips, Inputs, Solenoids vary per game
61- Bally: Add Strobe 5 (ST5) for extra inputs on later games
62- Bally: Add support for Solenoid Expanders on later games
63- Bally: Add support for Aux Lamp Expander on later games
6458- Mechanical
6559
6660*********************************************************************************************/
r249889r249890
7064#include "cpu/m6800/m6800.h"
7165#include "machine/6821pia.h"
7266#include "by35.lh"
73#include "by35_playboy.lh"
74#include "sound/discrete.h"
7567
7668
7769class by35_state : public genpin_class
r249889r249890
8072   by35_state(const machine_config &mconfig, device_type type, const char *tag)
8173      : genpin_class(mconfig, type, tag)
8274      , m_maincpu(*this, "maincpu")
83      , m_nvram(*this, "nvram")
8475      , m_pia_u10(*this, "pia_u10")
8576      , m_pia_u11(*this, "pia_u11")
8677      , m_io_test(*this, "TEST")
r249889r249890
9384      , m_io_x2(*this, "X2")
9485      , m_io_x3(*this, "X3")
9586      , m_io_x4(*this, "X4")
96      , m_discrete(*this, "discrete")
97      , m_timer_s_freq(*this, "timer_s_freq")
9887   { }
9988
10089   DECLARE_DRIVER_INIT(by35_6);
10190   DECLARE_DRIVER_INIT(by35_7);
102   DECLARE_DRIVER_INIT(playboy);
10391   DECLARE_READ8_MEMBER(u10_a_r);
10492   DECLARE_WRITE8_MEMBER(u10_a_w);
10593   DECLARE_READ8_MEMBER(u10_b_r);
r249889r249890
10795   DECLARE_READ8_MEMBER(u11_a_r);
10896   DECLARE_WRITE8_MEMBER(u11_a_w);
10997   DECLARE_WRITE8_MEMBER(u11_b_w);
110   DECLARE_WRITE8_MEMBER(u11_b_as2888_w);
111   DECLARE_READ8_MEMBER(nibble_nvram_r);
112   DECLARE_WRITE8_MEMBER(nibble_nvram_w);
113   DECLARE_READ_LINE_MEMBER(u10_ca1_r);
114   DECLARE_READ_LINE_MEMBER(u10_cb1_r);
11598   DECLARE_WRITE_LINE_MEMBER(u10_ca2_w);
11699   DECLARE_WRITE_LINE_MEMBER(u10_cb2_w);
117   DECLARE_READ_LINE_MEMBER(u11_ca1_r);
118   DECLARE_READ_LINE_MEMBER(u11_cb1_r);
119100   DECLARE_WRITE_LINE_MEMBER(u11_ca2_w);
120101   DECLARE_WRITE_LINE_MEMBER(u11_cb2_w);
121   DECLARE_WRITE_LINE_MEMBER(u11_cb2_as2888_w);
122   DECLARE_INPUT_CHANGED_MEMBER(activity_button);
102   DECLARE_INPUT_CHANGED_MEMBER(activity_test);
123103   DECLARE_INPUT_CHANGED_MEMBER(self_test);
124   DECLARE_CUSTOM_INPUT_MEMBER(outhole_x0);
125   DECLARE_CUSTOM_INPUT_MEMBER(drop_target_x0);
126   DECLARE_CUSTOM_INPUT_MEMBER(kickback_x3);
127   DECLARE_MACHINE_START(as2888);
128   DECLARE_MACHINE_RESET(by35);
129   TIMER_DEVICE_CALLBACK_MEMBER(timer_z_freq);
130   TIMER_DEVICE_CALLBACK_MEMBER(timer_z_pulse);
104   TIMER_DEVICE_CALLBACK_MEMBER(timer_x);
131105   TIMER_DEVICE_CALLBACK_MEMBER(u11_timer);
132   TIMER_DEVICE_CALLBACK_MEMBER(timer_d_pulse);
133   TIMER_DEVICE_CALLBACK_MEMBER(timer_s);
134   TIMER_DEVICE_CALLBACK_MEMBER(timer_as2888);
135106private:
136107   UINT8 m_u10a;
137108   UINT8 m_u10b;
138109   UINT8 m_u11a;
139110   UINT8 m_u11b;
140111   bool m_u10_ca2;
141   bool m_u10_cb1;
142112   bool m_u10_cb2;
143   bool m_u11_ca1;
144113   bool m_u11_cb2;
145   bool m_timer_as2888;
114   bool m_timer_x;
115   bool m_u11_timer;
146116   bool m_7d;
147117   UINT8 m_digit;
148   UINT8 m_segment[6];
149   UINT8 m_lamp_decode;
150   UINT8 m_solenoid_features[20][4];
151   UINT8 m_io_hold_x[6];
152   UINT8 m_snd_sel;
153   UINT8 m_snd_tone_gen;
154   UINT8 m_snd_div;
155   UINT8 *m_snd_prom;
118   UINT8 m_counter;
119   UINT8 m_segment[5];
120   virtual void machine_reset();
156121   required_device<m6800_cpu_device> m_maincpu;
157   required_shared_ptr<UINT8> m_nvram;
158122   required_device<pia6821_device> m_pia_u10;
159123   required_device<pia6821_device> m_pia_u11;
160124   required_ioport m_io_test;
r249889r249890
167131   required_ioport m_io_x2;
168132   required_ioport m_io_x3;
169133   required_ioport m_io_x4;
170   optional_device<discrete_device> m_discrete;
171   optional_device<timer_device> m_timer_s_freq;
172134};
173135
174136
175137static ADDRESS_MAP_START( by35_map, AS_PROGRAM, 8, by35_state )
176   ADDRESS_MAP_GLOBAL_MASK(0x7fff)      // A15 is not connected
177   AM_RANGE(0x0000, 0x007f) AM_RAM
138   //ADDRESS_MAP_GLOBAL_MASK(0x7fff)
139   AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu
178140   AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("pia_u10", pia6821_device, read, write)
179141   AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("pia_u11", pia6821_device, read, write)
180   AM_RANGE(0x0200, 0x02ff) AM_RAM AM_READWRITE(nibble_nvram_r, nibble_nvram_w) AM_SHARE("nvram")
181   AM_RANGE(0x1000, 0x7fff) AM_ROM // AM_REGION("roms", 0 )
142   AM_RANGE(0x0200, 0x02ff) AM_RAM AM_SHARE("nvram")
143   AM_RANGE(0x1000, 0xffff) AM_ROM //AM_REGION("roms", 0 )
182144ADDRESS_MAP_END
183145
184static ADDRESS_MAP_START( nuovo_map, AS_PROGRAM, 8, by35_state )
185//   AM_RANGE(0x0000, 0x007f) AM_RAM    // Schematics infer that the M6802 internal RAM is disabled.
186   AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("pia_u10", pia6821_device, read, write)
187   AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("pia_u11", pia6821_device, read, write)
188   AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
189   AM_RANGE(0x1000, 0xffff) AM_ROM
190ADDRESS_MAP_END
191
192
193
194146static INPUT_PORTS_START( by35 )
195147   PORT_START("TEST")
196   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Self Test") PORT_CHANGED_MEMBER(DEVICE_SELF, by35_state, self_test, 0)
197   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Activity")  PORT_CHANGED_MEMBER(DEVICE_SELF, by35_state, activity_button, 0)
148   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Self Test") PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, by35_state, self_test, 0)
149   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Activity") PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, by35_state, activity_test, 0)
198150
199151   PORT_START("DSW0")
200   PORT_DIPNAME( 0x1f, 0x02, "Coin Slot 1")         PORT_DIPLOCATION("SW0:!1,!2,!3,!4,!5") // same as 03
201   PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ))
152   PORT_DIPNAME( 0x1f, 0x02, "Coin Slot 1")
153   PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C )) // same as 01
202154   PORT_DIPSETTING(    0x02, DEF_STR( 1C_1C ))
203155   PORT_DIPSETTING(    0x03, DEF_STR( 2C_1C ))
204156   PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ))
r249889r249890
216168   PORT_DIPSETTING(    0x10, DEF_STR( 1C_8C ))
217169   PORT_DIPSETTING(    0x11, DEF_STR( 2C_8C ))
218170   PORT_DIPSETTING(    0x12, DEF_STR( 1C_9C ))
219   PORT_DIPSETTING(    0x13, "2 Coins/9 Credits")
220   PORT_DIPSETTING(    0x14, "1 Coin/10 Credits")
221   PORT_DIPSETTING(    0x15, "2 Coins/10 Credits")
222   PORT_DIPSETTING(    0x16, "1 Coin/11 Credits")
223   PORT_DIPSETTING(    0x17, "2 Coins/11 Credits")
224   PORT_DIPSETTING(    0x18, "1 Coin/12 Credits")
225   PORT_DIPSETTING(    0x19, "2 Coins/12 Credits")
226   PORT_DIPSETTING(    0x1a, "1 Coin/13 Credits")
227   PORT_DIPSETTING(    0x1b, "2 Coins/13 Credits")
228   PORT_DIPSETTING(    0x1c, "1 Coin/14 Credits")
229   PORT_DIPSETTING(    0x1d, "2 Coins/14 Credits")
230   PORT_DIPSETTING(    0x1e, "1 Coin/15 Credits")
231   PORT_DIPSETTING(    0x1f, "2 Coins/15 Credits")
232   PORT_DIPNAME( 0x60, 0x40, "Award for Beating Highest Score")   PORT_DIPLOCATION("SW0:!6,!7")
171   PORT_DIPSETTING(    0x13, "2 coins 9 credits")
172   PORT_DIPSETTING(    0x14, "1 coin 10 credits")
173   PORT_DIPSETTING(    0x15, "2 coins 10 credits")
174   PORT_DIPSETTING(    0x16, "1 coin 11 credits")
175   PORT_DIPSETTING(    0x17, "2 coins 11 credits")
176   PORT_DIPSETTING(    0x18, "1 coin 12 credits")
177   PORT_DIPSETTING(    0x19, "2 coins 12 credits")
178   PORT_DIPSETTING(    0x1a, "1 coin 13 credits")
179   PORT_DIPSETTING(    0x1b, "2 coins 13 credits")
180   PORT_DIPSETTING(    0x1c, "1 coin 14 credits")
181   PORT_DIPSETTING(    0x1d, "2 coins 14 credits")
182   PORT_DIPSETTING(    0x1e, "1 coin 15 credits")
183   PORT_DIPSETTING(    0x1f, "2 coins 15 credits")
184   PORT_DIPNAME( 0x60, 0x40, "Award for beating high score")
233185   PORT_DIPSETTING(    0x00, "Nothing")
234   PORT_DIPSETTING(    0x20, "1 Credit")
235   PORT_DIPSETTING(    0x40, "2 Credits")
236   PORT_DIPSETTING(    0x60, "3 Credits")
237   PORT_DIPNAME( 0x80, 0x80, "Melody Option 1")               PORT_DIPLOCATION("SW0:!8")
186   PORT_DIPSETTING(    0x20, "1 free game")
187   PORT_DIPSETTING(    0x40, "2 free games")
188   PORT_DIPSETTING(    0x60, "3 free games")
189   PORT_DIPNAME( 0x80, 0x00, "Melody option 1")
238190   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
239191   PORT_DIPSETTING(    0x80, DEF_STR( On ))
240192
241193   PORT_START("DSW1")
242   PORT_DIPNAME( 0x1f, 0x02, "Coin Slot 3")         PORT_DIPLOCATION("SW1:!1,!2,!3,!4,!5") // same as 01
243   PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ))
194   PORT_DIPNAME( 0x1f, 0x02, "Coin Slot 3")
195   PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C )) // same as 01
244196   PORT_DIPSETTING(    0x02, DEF_STR( 1C_1C ))
245197   PORT_DIPSETTING(    0x03, DEF_STR( 2C_1C ))
246198   PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ))
r249889r249890
258210   PORT_DIPSETTING(    0x10, DEF_STR( 1C_8C ))
259211   PORT_DIPSETTING(    0x11, DEF_STR( 2C_8C ))
260212   PORT_DIPSETTING(    0x12, DEF_STR( 1C_9C ))
261   PORT_DIPSETTING(    0x13, "2 Coins/9 Credits")
262   PORT_DIPSETTING(    0x14, "1 Coin/10 Credits")
263   PORT_DIPSETTING(    0x15, "2 Coins/10 Credits")
264   PORT_DIPSETTING(    0x16, "1 Coin/11 Credits")
265   PORT_DIPSETTING(    0x17, "2 Coins/11 Credits")
266   PORT_DIPSETTING(    0x18, "1 Coin/12 Credits")
267   PORT_DIPSETTING(    0x19, "2 Coins/12 Credits")
268   PORT_DIPSETTING(    0x1a, "1 Coin/13 Credits")
269   PORT_DIPSETTING(    0x1b, "2 Coins/13 Credits")
270   PORT_DIPSETTING(    0x1c, "1 Coin/14 Credits")
271   PORT_DIPSETTING(    0x1d, "2 Coins/14 Credits")
272   PORT_DIPSETTING(    0x1e, "1 Coin/15 Credits")
273   PORT_DIPSETTING(    0x1f, "2 Coins/15 Credits")
274   PORT_DIPNAME( 0x60, 0x60, "Score Level Award")      PORT_DIPLOCATION("SW1:!6,!7")
213   PORT_DIPSETTING(    0x13, "2 coins 9 credits")
214   PORT_DIPSETTING(    0x14, "1 coin 10 credits")
215   PORT_DIPSETTING(    0x15, "2 coins 10 credits")
216   PORT_DIPSETTING(    0x16, "1 coin 11 credits")
217   PORT_DIPSETTING(    0x17, "2 coins 11 credits")
218   PORT_DIPSETTING(    0x18, "1 coin 12 credits")
219   PORT_DIPSETTING(    0x19, "2 coins 12 credits")
220   PORT_DIPSETTING(    0x1a, "1 coin 13 credits")
221   PORT_DIPSETTING(    0x1b, "2 coins 13 credits")
222   PORT_DIPSETTING(    0x1c, "1 coin 14 credits")
223   PORT_DIPSETTING(    0x1d, "2 coins 14 credits")
224   PORT_DIPSETTING(    0x1e, "1 coin 15 credits")
225   PORT_DIPSETTING(    0x1f, "2 coins 15 credits")
226   PORT_DIPNAME( 0x60, 0x60, "Award")
275227   PORT_DIPSETTING(    0x00, "Nothing")
276228   PORT_DIPSETTING(    0x40, "Extra Ball")
277   PORT_DIPSETTING(    0x60, "Replay")
278   PORT_DIPNAME( 0x80, 0x80, "Balls Per Game")         PORT_DIPLOCATION("SW1:!8")
229   PORT_DIPSETTING(    0x60, "Free Game")
230   PORT_DIPNAME( 0x80, 0x00, "Balls")
279231   PORT_DIPSETTING(    0x00, "3")
280232   PORT_DIPSETTING(    0x80, "5")
281233
282234   PORT_START("DSW2")
283   PORT_DIPNAME( 0x07, 0x01, "Maximum Credits")      PORT_DIPLOCATION("SW2:!1,!2,!3")
235   PORT_DIPNAME( 0x07, 0x02, "Maximum Credits")
284236   PORT_DIPSETTING(    0x00, "5")
285237   PORT_DIPSETTING(    0x01, "10")
286238   PORT_DIPSETTING(    0x02, "15")
r249889r249890
289241   PORT_DIPSETTING(    0x05, "30")
290242   PORT_DIPSETTING(    0x06, "35")
291243   PORT_DIPSETTING(    0x07, "40")
292   PORT_DIPNAME( 0x08, 0x08, "Credits Displayed")      PORT_DIPLOCATION("SW2:!4")
244   PORT_DIPNAME( 0x08, 0x08, "Credits displayed")
293245   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
294246   PORT_DIPSETTING(    0x08, DEF_STR( On ))
295   PORT_DIPNAME( 0x10, 0x10, "Match Feature")         PORT_DIPLOCATION("SW2:!5")
247   PORT_DIPNAME( 0x10, 0x10, "Match")
296248   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
297249   PORT_DIPSETTING(    0x10, DEF_STR( On ))
298   PORT_DIPNAME( 0x20, 0x00, "S22 (game specific)")   PORT_DIPLOCATION("SW2:!6")
250   PORT_DIPNAME( 0x20, 0x00, "S22 (game specific)")
299251   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
300252   PORT_DIPSETTING(    0x20, DEF_STR( On ))
301   PORT_DIPNAME( 0x40, 0x00, "S23 (game specific)")   PORT_DIPLOCATION("SW2:!7")
253   PORT_DIPNAME( 0x40, 0x00, "S23 (game specific)")
302254   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
303255   PORT_DIPSETTING(    0x40, DEF_STR( On ))
304   PORT_DIPNAME( 0x80, 0x00, "S24 (game specific)")   PORT_DIPLOCATION("SW2:!8")
256   PORT_DIPNAME( 0x80, 0x00, "S24 (game specific)")
305257   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
306258   PORT_DIPSETTING(    0x80, DEF_STR( On ))
307259
308260   PORT_START("DSW3")
309   PORT_DIPNAME( 0x0f, 0x00, "Coin Slot 2")         PORT_DIPLOCATION("SW3:!1,!2,!3,!4")
310   PORT_DIPSETTING(    0x00, "Same as Slot 1")
261   PORT_DIPNAME( 0x0f, 0x00, "Coin Slot 2")
262   PORT_DIPSETTING(    0x00, "Same as slot 1")
311263   PORT_DIPSETTING(    0x01, DEF_STR( 1C_1C ))
312264   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ))
313265   PORT_DIPSETTING(    0x03, DEF_STR( 1C_3C ))
r249889r249890
317269   PORT_DIPSETTING(    0x07, DEF_STR( 1C_7C ))
318270   PORT_DIPSETTING(    0x08, DEF_STR( 1C_8C ))
319271   PORT_DIPSETTING(    0x09, DEF_STR( 1C_9C ))
320   PORT_DIPSETTING(    0x0a, "1 Coin/10 Credits")
321   PORT_DIPSETTING(    0x0b, "1 Coin/11 Credits")
322   PORT_DIPSETTING(    0x0c, "1 Coin/12 Credits")
323   PORT_DIPSETTING(    0x0d, "1 Coin/13 Credits")
324   PORT_DIPSETTING(    0x0e, "1 Coin/14 Credits")
325   PORT_DIPSETTING(    0x0f, "1 Coin/15 Credits")
326   PORT_DIPNAME( 0x10, 0x00, "S29 (game specific)")   PORT_DIPLOCATION("SW3:!5")
272   PORT_DIPSETTING(    0x0a, "1 coin 10 credits")
273   PORT_DIPSETTING(    0x0b, "1 coin 11 credits")
274   PORT_DIPSETTING(    0x0c, "1 coin 12 credits")
275   PORT_DIPSETTING(    0x0d, "1 coin 13 credits")
276   PORT_DIPSETTING(    0x0e, "1 coin 14 credits")
277   PORT_DIPSETTING(    0x0f, "1 coin 15 credits")
278   PORT_DIPNAME( 0x10, 0x00, "S29")
327279   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
328280   PORT_DIPSETTING(    0x10, DEF_STR( On ))
329   PORT_DIPNAME( 0x20, 0x00, "S30 (game specific)")   PORT_DIPLOCATION("SW3:!6")
281   PORT_DIPNAME( 0x20, 0x00, "S30")
330282   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
331283   PORT_DIPSETTING(    0x20, DEF_STR( On ))
332   PORT_DIPNAME( 0x40, 0x00, "S31 (game specific)")   PORT_DIPLOCATION("SW3:!7")
284   PORT_DIPNAME( 0x40, 0x00, "S31 (game specific)")
333285   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
334286   PORT_DIPSETTING(    0x40, DEF_STR( On ))
335   PORT_DIPNAME( 0x80, 0x80, "Melody Option 2")      PORT_DIPLOCATION("SW3:!8")
287   PORT_DIPNAME( 0x80, 0x00, "Melody option 2")
336288   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
337289   PORT_DIPSETTING(    0x80, DEF_STR( On ))
338290
339291   PORT_START("X0")
340   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_STOP)
341   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH)
342   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE)
343   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE)
344   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH)
292   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH)
293   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COLON)
294   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE)
295   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH)
296   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE)
345297   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
346298   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_TILT )
347//   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Outhole") PORT_CODE(KEYCODE_BACKSPACE)
348   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by35_state, outhole_x0, (void *)0x07) // PORT_CODE(KEYCODE_BACKSPACE)
299   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Outhole") PORT_CODE(KEYCODE_X)
349300
350301   PORT_START("X1")
351302   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN3 )
352303   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 )
353304   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 )
354   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER)
355   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE)
356   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COLON)
357   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_L)
358   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_TILT2 ) PORT_NAME("Slam Tilt") PORT_CODE(KEYCODE_EQUALS)
305   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_L)
306   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE)
307   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE)
308   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER)
309   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_TILT1 ) PORT_NAME("Slam Tilt")
359310
360311   PORT_START("X2")
361   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_K)
362   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_J)
363   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_H)
364   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_G)
365   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_F)
366   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_D)
367   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_S)
368   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_A)
312   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_A)
313   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_S)
314   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_D)
315   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_F)
316   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_G)
317   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_H)
318   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_J)
319   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_K)
369320
370321   PORT_START("X3")
371   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_O)
372   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_I)
373   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_U)
374   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Y)
375   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_R)
376   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_E)
377   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_W)
378   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Q)
322   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Q)
323   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_W)
324   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_E)
325   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_R)
326   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Y)
327   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_U)
328   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_I)
329   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_O)
379330
380331   PORT_START("X4")
381   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA)
382   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_M)
383   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_N)
332   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Z)
333   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_C)
334   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_V)
384335   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_B)
385   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_V)
386   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_C)
387   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_X)
388   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Z)
336   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_N)
337   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_M)
338   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA)
339   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_STOP)
389340INPUT_PORTS_END
390341
391static INPUT_PORTS_START( playboy )
392   PORT_INCLUDE( by35 )
393
394   PORT_MODIFY("DSW2")
395   PORT_DIPNAME( 0x20, 0x00, "Drop Target Special")      PORT_DIPLOCATION("SW2:!6")
396   PORT_DIPSETTING(    0x00, "Lit Until Next Ball")
397   PORT_DIPSETTING(    0x20, "Lit Until Collected")
398   PORT_DIPNAME( 0x40, 0x00, "Playmate Keys")            PORT_DIPLOCATION("SW2:!7")
399   PORT_DIPSETTING(    0x00, "Reset At Next Ball")
400   PORT_DIPSETTING(    0x40, "Remembered Next Ball")
401   PORT_DIPNAME( 0x80, 0x00, "25000 Outlanes")            PORT_DIPLOCATION("SW2:!8")
402   PORT_DIPSETTING(    0x00, "Alternate")
403   PORT_DIPSETTING(    0x80, "Both")
404
405   PORT_MODIFY("DSW3")
406   PORT_DIPNAME( 0x10, 0x00, "2 and 3 Key Lanes")         PORT_DIPLOCATION("SW3:!5")
407   PORT_DIPSETTING(    0x00, "Separate")
408   PORT_DIPSETTING(    0x10, "Tied Together")
409   PORT_DIPNAME( 0x20, 0x00, "1 and 4 Key Lanes")         PORT_DIPLOCATION("SW3:!6")
410   PORT_DIPSETTING(    0x00, "Separate")
411   PORT_DIPSETTING(    0x20, "Tied Together")
412   PORT_DIPNAME( 0x40, 0x00, "Rollover Button Award")      PORT_DIPLOCATION("SW3:!7")
413   PORT_DIPSETTING(    0x00, "Extra Ball or Special Reset At Next Ball")
414   PORT_DIPSETTING(    0x40, "Extra Ball or Special Held Until Collected")
415
416   PORT_MODIFY("X0")   /* Drop Target switches */
417   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by35_state, drop_target_x0, (void *)0x00) // PORT_CODE(KEYCODE_STOP)
418   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by35_state, drop_target_x0, (void *)0x01) // PORT_CODE(KEYCODE_SLASH)
419   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by35_state, drop_target_x0, (void *)0x02) // PORT_CODE(KEYCODE_OPENBRACE)
420   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by35_state, drop_target_x0, (void *)0x03) // PORT_CODE(KEYCODE_CLOSEBRACE)
421   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by35_state, drop_target_x0, (void *)0x04) // PORT_CODE(KEYCODE_BACKSLASH)
422
423   PORT_MODIFY("X3")
424   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, by35_state, kickback_x3, (void *)0x37) // PORT_CODE(KEYCODE_Q)
425
426   PORT_START("RT2")
427   PORT_ADJUSTER( 50, "RT2 - Tone Sustain" )
428INPUT_PORTS_END
429
430
431CUSTOM_INPUT_MEMBER( by35_state::outhole_x0 )
342INPUT_CHANGED_MEMBER( by35_state::activity_test )
432343{
433   int bit_shift = ((FPTR)param & 0x07);
434   int port = (((FPTR)param >> 4) & 0x07);
435
436   /* Here we simulate the ball sitting in the Outhole so the Outhole Solenoid can release it */
437
438   if (machine().input().code_pressed_once(KEYCODE_BACKSPACE))
439      m_io_hold_x[port] |= (1 << bit_shift);
440
441   return ((m_io_hold_x[port] >> bit_shift) & 1);
344   if(newval)
345      m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
442346}
443347
444CUSTOM_INPUT_MEMBER( by35_state::kickback_x3 )
445{
446   int bit_shift = ((FPTR)param & 0x07);
447   int port = (((FPTR)param >> 4) & 0x07);
448
449   /* Here we simulate the ball sitting in a Saucer so the Saucer Solenoid can release it */
450
451   if (machine().input().code_pressed_once(KEYCODE_Q))
452      m_io_hold_x[port] |= (1 << bit_shift);
453
454   return ((m_io_hold_x[port] >> bit_shift) & 1);
455}
456
457CUSTOM_INPUT_MEMBER( by35_state::drop_target_x0 )
458{
459   /* Here we simulate the Drop Target switch states so the Drop Target Reset Solenoid can also release the switches */
460
461   int bit_shift = ((FPTR)param & 0x07);
462   int port = (((FPTR)param >> 4) & 0x07);
463
464   switch (bit_shift)
465   {
466      case 0:   if (machine().input().code_pressed_once(KEYCODE_STOP))
467                  m_io_hold_x[port] |= (1 << bit_shift);
468               break;
469      case 1:   if (machine().input().code_pressed_once(KEYCODE_SLASH))
470                  m_io_hold_x[port] |= (1 << bit_shift);
471               break;
472      case 2:   if (machine().input().code_pressed_once(KEYCODE_OPENBRACE))
473                  m_io_hold_x[port] |= (1 << bit_shift);
474               break;
475      case 3:   if (machine().input().code_pressed_once(KEYCODE_CLOSEBRACE))
476                  m_io_hold_x[port] |= (1 << bit_shift);
477               break;
478      case 4:   if (machine().input().code_pressed_once(KEYCODE_BACKSLASH))
479                  m_io_hold_x[port] |= (1 << bit_shift);
480               break;
481   }
482   return ((m_io_hold_x[port] >> bit_shift) & 1);
483}
484
485READ8_MEMBER(by35_state::nibble_nvram_r)
486{
487   return (m_nvram[offset] | 0x0f);
488}
489
490WRITE8_MEMBER(by35_state::nibble_nvram_w)
491{
492   m_nvram[offset] = (data | 0x0f);
493}
494
495INPUT_CHANGED_MEMBER( by35_state::activity_button )
496{
497   if (newval != oldval)
498      m_maincpu->set_input_line(INPUT_LINE_NMI, (newval ? ASSERT_LINE : CLEAR_LINE));
499}
500
501348INPUT_CHANGED_MEMBER( by35_state::self_test )
502349{
503350   m_pia_u10->ca1_w(newval);
504351}
505352
506READ_LINE_MEMBER( by35_state::u10_ca1_r )
507{
508   return m_io_test->read() & 0x01;
509}
510READ_LINE_MEMBER( by35_state::u10_cb1_r )
511{
512   return m_u10_cb1;
513}
514
515353WRITE_LINE_MEMBER( by35_state::u10_ca2_w )
516354{
517#if 0               // Display Blanking - Out of sync with video redraw rate and causes flicker so it's disabled
518   if (state == 0)
519   {
520      int digit;
521
522      for (digit=1; digit<=8; digit++)
523      {
524         output_set_digit_value(10+digit, 0);
525         output_set_digit_value(20+digit, 0);
526         output_set_digit_value(30+digit, 0);
527         output_set_digit_value(40+digit, 0);
528         output_set_digit_value(50+digit, 0);
529      }
530   }
531#endif
532
533355   m_u10_ca2 = state;
356   if (!state)
357      m_counter = 0;
534358}
535359
536360WRITE_LINE_MEMBER( by35_state::u10_cb2_w )
537361{
538//   logerror("New U10 CB2 state %01x, was %01x.   PIA=%02x\n", state, m_u10_cb2, m_u10a);
539
540   if (state == TRUE)
541      m_lamp_decode = m_u10a & 0x0f;
542
543   m_u10_cb2 = state;
544362}
545363
546364WRITE_LINE_MEMBER( by35_state::u11_ca2_w )
547365{
548   output_set_value("led0", state);
366   output_set_value("led0", !state);
549367}
550368
551READ_LINE_MEMBER( by35_state::u11_ca1_r )
552{
553   return m_u11_ca1;
554}
555
556READ_LINE_MEMBER( by35_state::u11_cb1_r )
557{
558   /* Pin 32 on MPU J5 AID connector tied low */
559   return 0;
560}
561
562369WRITE_LINE_MEMBER( by35_state::u11_cb2_w )
563370{
564371   m_u11_cb2 = state;
565372}
566373
567WRITE_LINE_MEMBER( by35_state::u11_cb2_as2888_w )
568{
569   if (state)
570   {
571      address_space &space = m_maincpu->space(AS_PROGRAM);
572
573      timer_device *snd_sustain_timer = machine().device<timer_device>("timer_as2888");
574      snd_sustain_timer->adjust(attotime::from_msec(5));
575      m_timer_as2888 = true;
576
577      m_discrete->write(space, NODE_08, 11);   // 11 volt pulse
578   }
579
580   m_u11_cb2 = state;
581}
582
583374READ8_MEMBER( by35_state::u10_a_r )
584375{
585376   return m_u10a;
r249889r249890
587378
588379WRITE8_MEMBER( by35_state::u10_a_w )
589380{
590//   logerror("Writing %02x to U10 PIA, CB2 state is %01x,  CA2 state is %01x, Lamp_Dec is %02x\n",data, m_u10_cb2, m_u10_ca2, (m_lamp_decode & 0x0f));
381   m_u10a = data;
591382
592383   if (!m_u10_ca2)
593384   {
594      if (BIT(data, 0)==0)         // Display 1
385      m_counter++;
386
387      if (m_counter==1)
388         m_segment[0] = data>>4;
389      else
390      if (m_counter==3)
595391         m_segment[1] = data>>4;
596392      else
597      if (BIT(data, 1)==0)         // Display 2
393      if (m_counter==5)
598394         m_segment[2] = data>>4;
599395      else
600      if (BIT(data, 2)==0)         // Display 3
396      if (m_counter==7)
601397         m_segment[3] = data>>4;
602398      else
603      if (BIT(data, 3)==0)         // Display 4
399      if (m_counter==9)
604400         m_segment[4] = data>>4;
605401   }
606
607   /*** Update the Lamp latched outputs ***/
608   if ((data & 0x0f) == 0x0f)
609   {
610      if ((m_lamp_decode & 0x0f) < 0x0f)
611      {
612         if (output_get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+00) ) ==0 ) output_set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+00), ((data & 0x10) ? FALSE : TRUE));
613         if (output_get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+15) ) ==0 ) output_set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+15), ((data & 0x20) ? FALSE : TRUE));
614         if (output_get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+30) ) ==0 ) output_set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+30), ((data & 0x40) ? FALSE : TRUE));
615         if (output_get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+45) ) ==0 ) output_set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+45), ((data & 0x80) ? FALSE : TRUE));
616      }
617      else
618      {
619         // Rest output - all lamps are off
620      }
621   }
622
623   m_u10a = data;
624402}
625403
626404READ8_MEMBER( by35_state::u10_b_r )
r249889r249890
669447
670448WRITE8_MEMBER( by35_state::u11_a_w )
671449{
672   if (BIT(data, 0)==0)         // Display Credit/Ball
673   {
674      m_segment[5] = m_u10a>>4;
675   }
450   m_u11a = data;
676451
677
678   m_digit = 0;
679
680   if BIT(data, 7)
681      m_digit = 1;
682   else
683   if BIT(data, 6)
684      m_digit = 2;
685   else
686   if BIT(data, 5)
687      m_digit = 3;
688   else
689   if BIT(data, 4)
690      m_digit = 4;
691   else
692   if BIT(data, 3)
693      m_digit = 5;
694   else
695   if BIT(data, 2)
696      m_digit = 6;
697   else
698   if (BIT(data, 2) && BIT(data, 3))   // Aftermarket 7th digit strobe for 6 digit games
699      m_digit = 7;
700   else
701   if (BIT(data, 1) && m_7d)
702      m_digit = 7;
703
704   if ((m_u10_ca2==0) && m_digit)
452   if (!m_u10_ca2)
705453   {
706      static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543 - BCD to 7 Segment Display Decoder
454      if (m_7d & BIT(data, 1))
455         m_digit = 6;
456      else
457      if BIT(data, 2)
458         m_digit = 5;
459      else
460      if BIT(data, 3)
461         m_digit = 4;
462      else
463      if BIT(data, 4)
464         m_digit = 3;
465      else
466      if BIT(data, 5)
467         m_digit = 2;
468      else
469      if BIT(data, 6)
470         m_digit = 1;
471      else
472      if BIT(data, 7)
473         m_digit = 0;
707474
708      output_set_digit_value(10+m_digit, patterns[m_segment[1]]);
709      output_set_digit_value(20+m_digit, patterns[m_segment[2]]);
710      output_set_digit_value(30+m_digit, patterns[m_segment[3]]);
711      output_set_digit_value(40+m_digit, patterns[m_segment[4]]);
712      output_set_digit_value(50+m_digit, patterns[m_segment[5]]);
713
475      if (BIT(data, 0) && (m_counter > 8))
476      {
477         static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
478         output_set_digit_value(m_digit, patterns[m_segment[0]]);
479         output_set_digit_value(10+m_digit, patterns[m_segment[1]]);
480         output_set_digit_value(20+m_digit, patterns[m_segment[2]]);
481         output_set_digit_value(30+m_digit, patterns[m_segment[3]]);
482         output_set_digit_value(40+m_digit, patterns[m_segment[4]]);
483      }
714484   }
715
716   m_u11a = data;
717485}
718486
719487WRITE8_MEMBER( by35_state::u11_b_w )
720488{
489   m_u11b = data;
721490   if (!m_u11_cb2)
722491   {
723      if ((data & 0x0f) < 0x0f)   // Momentary Solenoids
492      switch (data & 15)
724493      {
725         if (m_solenoid_features[(data & 0x0f)][0] != 0xff) {   // Play solenoid audio sample
726            if (output_get_indexed_value("solenoid", (data & 0x0f)) == FALSE)
727               m_samples->start(m_solenoid_features[(data & 0x0f)][0], m_solenoid_features[(data & 0x0f)][1]);
728         }
729
730         output_set_indexed_value( "solenoid", (data & 0x0f), TRUE);
731
732         if (m_solenoid_features[(data & 0x0f)][3])   // Reset/release relevant switch after firing Solenoid
733            m_io_hold_x[(m_solenoid_features[(data & 0x0f)][2])] &= (m_solenoid_features[(data & 0x0f)][3]);
494         // these vary per game
495         case 0x0: //
496            //m_samples->start(0, 3);
497            break;
498         case 0x1: // chime 10
499            //m_samples->start(1, 1);
500            break;
501         case 0x2: // chime 100
502            //m_samples->start(2, 2);
503            break;
504         case 0x3: // chime 1000
505            //m_samples->start(3, 3);
506            break;
507         case 0x4: // chime 10000
508            //m_samples->start(0, 4);
509            break;
510         // these 2 are standard
511         case 0x5: // knocker
512            m_samples->start(0, 6);
513            break;
514         case 0x6: // outhole
515            m_samples->start(0, 5);
516            break;
517         // these vary per game
518         case 0x7:
519         case 0x8:
520         case 0x9:
521            //m_samples->start(0, 5);
522            break;
523         case 0xa:
524            //m_samples->start(0, 5);
525            break;
526         case 0xb:
527            //m_samples->start(0, 0);
528            break;
529         case 0xc:
530            //m_samples->start(0, 5);
531            break;
532         case 0xd:
533            //m_samples->start(0, 0);
534            break;
535         case 0xe:
536            //m_samples->start(0, 5);
537            break;
538         case 0xf: // not used
539            break;
734540      }
735      else                  // Rest output - all momentary solenoids are off
736      {
737         for (int i=0; i<15; i++)
738         {
739            output_set_indexed_value( "solenoid", i, FALSE);
740         }
741      }
742541   }
743
744
745   if ((m_u11b & 0x10) && ((data & 0x10)==0))
746   {
747      output_set_value("solenoid16", TRUE);
748      if (m_solenoid_features[16][0] != 0xff)
749         m_samples->start(m_solenoid_features[16][0], m_solenoid_features[16][1]);
750   }
751   else if ((data & 0x10) && ((m_u11b & 0x10)==0))
752   {
753      output_set_value("solenoid16", FALSE);
754      if (m_solenoid_features[16][0] != 0xff)
755         m_samples->start(m_solenoid_features[16][0], m_solenoid_features[16][2]);
756   }
757   if ((m_u11b & 0x20) && ((data & 0x20)==0))
758   {
759      output_set_value("solenoid17", TRUE);               // Coin Lockout Coil engage
760      if (m_solenoid_features[17][0] != 0xff)
761         m_samples->start(m_solenoid_features[17][0], m_solenoid_features[17][1]);
762   }
763   else if ((data & 0x20) && ((m_u11b & 0x20)==0))
764   {
765      output_set_value("solenoid17", FALSE);               // Coin Lockout Coil release
766      if (m_solenoid_features[17][0] != 0xff)
767         m_samples->start(m_solenoid_features[17][0], m_solenoid_features[17][2]);
768   }
769   if ((m_u11b & 0x40) && ((data & 0x40)==0))
770   {
771      output_set_value("solenoid18", TRUE);               // Flipper Enable Relay engage
772      if (m_solenoid_features[18][0] != 0xff)
773         m_samples->start(m_solenoid_features[18][0], m_solenoid_features[18][1]);
774   }
775   else if ((data & 0x40) && ((m_u11b & 0x40)==0))
776   {
777      output_set_value("solenoid18", FALSE);               // Flipper Enable Relay release
778      if (m_solenoid_features[18][0] != 0xff)
779         m_samples->start(m_solenoid_features[18][0], m_solenoid_features[18][2]);
780   }
781   if ((m_u11b & 0x80) && ((data & 0x80)==0))
782   {
783      output_set_value("solenoid19", TRUE);
784      if (m_solenoid_features[19][0] != 0xff)
785         m_samples->start(m_solenoid_features[19][0], m_solenoid_features[19][1]);
786   }
787   else if ((data & 0x80) && ((m_u11b & 0x80)==0))
788   {
789      output_set_value("solenoid19", FALSE);
790      if (m_solenoid_features[19][0] != 0xff)
791         m_samples->start(m_solenoid_features[19][0], m_solenoid_features[19][2]);
792   }
793
794   m_u11b = data;
795542}
796543
797WRITE8_MEMBER( by35_state::u11_b_as2888_w )
544void by35_state::machine_reset()
798545{
799   u11_b_w( space, offset, data );
546   m_u10a = 0;
547   m_u10b = 0;
548   m_u10_cb2 = 0;
549   m_u11a = 0;
550   m_u11b = 0;
800551}
801552
802
803// zero-cross detection
804TIMER_DEVICE_CALLBACK_MEMBER( by35_state::timer_z_freq )
805{
806
807/*  Zero Crossing Detector - this timing is based on 50Hz AC line power input converted to unregulated DC
808
809   -+                          +---+
810     |                          |   |
811     |<-------- 9.30ms -------->|<->|700us
812     |                          |   |
813    +--------------------------+   +-----
814*/
815
816   timer_device *zero_crossing_active_timer = machine().device<timer_device>("timer_z_pulse");
817
818   zero_crossing_active_timer->adjust(attotime::from_usec(700));
819
820   m_u10_cb1 = true;
821   m_pia_u10->cb1_w(m_u10_cb1);
822
823   /*** Zero Crossing - power to all Lamp SCRs is cut off and reset ***/
824
825   for (int i=0; i<60; i++)
826   {
827      output_set_indexed_value( "lamp", i, 0 );
828   }
829
830}
831TIMER_DEVICE_CALLBACK_MEMBER( by35_state::timer_z_pulse )
832{
833   /*** Line Power to DC Zero Crossing has ended ***/
834
835   m_u10_cb1 = false;
836   m_pia_u10->cb1_w(m_u10_cb1);
837}
838
839// 555 timer for display refresh
840TIMER_DEVICE_CALLBACK_MEMBER( by35_state::u11_timer )
841{
842
843/*   +--------------------------+   +-----
844     |                          |   |
845     |<-------- 2.85ms -------->|<->|300us
846     |                          |   |
847    -+                          +---+
848*/
849
850   timer_device *display_refresh_timer = machine().device<timer_device>("timer_d_pulse");
851
852   display_refresh_timer->adjust(attotime::from_msec(2.85));
853
854   m_u11_ca1 = true;
855   m_pia_u11->ca1_w(m_u11_ca1);
856}
857
858TIMER_DEVICE_CALLBACK_MEMBER( by35_state::timer_d_pulse )
859{
860   m_u11_ca1 = false;
861   m_pia_u11->ca1_w(m_u11_ca1);
862}
863
864TIMER_DEVICE_CALLBACK_MEMBER( by35_state::timer_s )
865{
866   m_snd_tone_gen--;
867
868   if ((m_snd_tone_gen == 0) && (m_snd_sel != 0x01))
869   {
870      address_space &space = m_maincpu->space(AS_PROGRAM);
871
872      m_snd_tone_gen = m_snd_sel;
873      m_snd_div++;
874
875      m_discrete->write(space, NODE_04, ((m_snd_div & 0x04)>>2) * 1);
876      m_discrete->write(space, NODE_01, ((m_snd_div & 0x01)>>0) * 1);
877
878//      if (m_snd_sel == 0x01) logerror("SndSel=%02x, Tone=%02x, Div=%02x\n",m_snd_sel, m_snd_tone_gen, m_snd_div);
879   }
880}
881
882TIMER_DEVICE_CALLBACK_MEMBER( by35_state::timer_as2888 )
883{
884   address_space &space = m_maincpu->space(AS_PROGRAM);
885
886   offs_t offs = (m_u11b & 0x0f);
887   if ((m_u11a & 0x02) == 0) offs |= 0x10;
888   {
889      m_snd_sel = m_snd_prom[offs];
890//      logerror("SndSel read %02x from PROM addr %02x\n",m_snd_sel, offs );
891      m_snd_sel = BITSWAP8(m_snd_sel,0,1,2,3,4,5,6,7);
892
893      m_snd_tone_gen = m_snd_sel;
894//      logerror("SndSel=%02x, Tone=%02x, Div=%02x\n",m_snd_sel, m_snd_tone_gen, m_snd_div);
895   }
896
897   m_discrete->write(space, NODE_08, 0);
898   timer.adjust(attotime::never);
899   m_timer_as2888 = false;
900
901// logerror("Sustain off\n");
902}
903
904
905
906553DRIVER_INIT_MEMBER( by35_state, by35_6 )
907554{
908
909   static const UINT8 solenoid_features_default[20][4] =
910   {
911   // This table serves two functions and is configured on a per game basis:
912   // Assign a particular sound sample corresponding to a solenoid function, and
913   // release any switches being held closed eg. drop targets, ball in saucer/outhole, etc
914
915   //  { Sound Channel, Sound Sample, Switch Strobe, Switch Return Mask }
916   /*00*/  { 0x00, 0x00,  0x00, 0x00 },
917   /*01*/  { 0x00, 0x00,  0x00, 0x00 },
918   /*02*/  { 0x00, 0x00,  0x00, 0x00 },
919   /*03*/  { 0x00, 0x00,  0x00, 0x00 },
920   /*04*/  { 0x00, 0x00,  0x00, 0x00 },
921   /*05*/  { 0x04, 0x06,  0x00, 0x00 },      // Knocker
922   /*06*/  { 0x01, 0x09,  0x00, 0x7f },      // Outhole
923   /*07*/  { 0x00, 0x0a,  0x00, 0x00 },
924   /*08*/  { 0x02, 0x00,  0x00, 0x00 },
925   /*09*/  { 0x02, 0x00,  0x00, 0x00 },
926   /*10*/  { 0x02, 0x00,  0x00, 0x00 },
927   /*11*/  { 0x02, 0x07,  0x00, 0x00 },
928   /*12*/  { 0x00, 0x0b,  0x00, 0x00 },
929   /*13*/  { 0x02, 0x07,  0x00, 0x00 },
930   /*14*/  { 0x00, 0x00,  0x00, 0x00 },
931   /*15*/  { 0xff, 0xff,  0x00, 0x00 },      // None - all momentary solenoids off
932   //  { Sound Channel, Sound engage, Sound release, Not Used }
933   /*16*/  { 0xff, 0xff, 0xff,  0x00 },
934   /*17*/  { 0x00, 0x0c, 0x0d,  0x00 },      // Coin Lockout coil
935   /*18*/  { 0x00, 0x0e, 0x0f,  0x00 },      // Flipper enable relay
936   /*19*/  { 0xff, 0xff, 0xff,  0x00 }
937   };
938
939
940   for (int i=0; i<20; i++)
941   {
942      for (int j=0; j<4; j++)
943         m_solenoid_features[i][j] = solenoid_features_default[i][j];
944   }
945
946
947555   m_7d = 0;
948556}
949557
950DRIVER_INIT_MEMBER( by35_state, playboy )
951{
952
953   static const UINT8 solenoid_features_playboy[20][4] =
954   {
955   //  { Sound Channel, Sound Sample, Switch Strobe, Switch Return Mask }
956   /*00*/  { 0xff, 0xff,  0x00, 0x00 },
957   /*01*/  { 0xff, 0xff,  0x00, 0x00 },
958   /*02*/  { 0xff, 0xff,  0x00, 0x00 },
959   /*03*/  { 0xff, 0xff,  0x00, 0x00 },
960   /*04*/  { 0xff, 0xff,  0x00, 0x00 },
961   /*05*/  { 0x04, 0x06,  0x00, 0x00 },      // Knocker
962   /*06*/  { 0x01, 0x09,  0x00, 0x7f },      // Outhole
963   /*07*/  { 0x02, 0x0a,  0x03, 0x7f },      // Kickback Grotto
964   /*08*/  { 0x02, 0x00,  0x00, 0x00 },      // Pop Bumper Left
965   /*09*/  { 0x02, 0x00,  0x00, 0x00 },      // Pop Bumper Right
966   /*10*/  { 0x02, 0x00,  0x00, 0x00 },      // Pop Bumper Bottom
967   /*11*/  { 0x02, 0x07,  0x00, 0x00 },      // Slingshot Left
968   /*12*/  { 0x03, 0x0b,  0x00, 0xe0 },      // Drop Target Reset
969   /*13*/  { 0x02, 0x07,  0x00, 0x00 },      // Slingshot Right
970   /*14*/  { 0xff, 0xff,  0x00, 0x00 },
971   /*15*/  { 0xff, 0xff,  0x00, 0x00 },      // None - all momentary solenoids off
972   //  { Sound Channel, Sound engage, Sound release, Not Used }
973   /*16*/  { 0xff, 0xff, 0xff,  0x00 },
974   /*17*/  { 0x00, 0x0c, 0x0d,  0x00 },      // Coin Lockout coil
975   /*18*/  { 0x00, 0x0e, 0x0f,  0x00 },      // Flipper enable relay
976   /*19*/  { 0xff, 0xff, 0xff,  0x00 }
977   };
978
979
980   DRIVER_INIT_CALL( by35_6 );
981
982   for (int i=0; i<20; i++)
983   {
984      for (int j=0; j<4; j++)
985         m_solenoid_features[i][j] = solenoid_features_playboy[i][j];
986   }
987
988
989   m_7d = 0;
990}
991
992
993558DRIVER_INIT_MEMBER( by35_state, by35_7 )
994559{
995   DRIVER_INIT_CALL(by35_6);
996
997560   m_7d = 1;
998561}
999562
1000
1001MACHINE_RESET_MEMBER( by35_state, by35 )
563// zero-cross detection
564TIMER_DEVICE_CALLBACK_MEMBER( by35_state::timer_x )
1002565{
1003   render_target *target = machine().render().first_target();
1004
1005   target->set_view(0);
1006
1007   m_u10a = 0;
1008   m_u10b = 0;
1009   m_u11a = 0;
1010   m_u11b = 0;
1011   m_lamp_decode = 0x0f;
1012   m_io_hold_x[0] = 0x80;   // Put ball in Outhole on startup
1013   m_io_hold_x[1] = m_io_hold_x[2] = m_io_hold_x[3] = m_io_hold_x[4] = m_io_hold_x[5] = 0;
566   m_timer_x ^= 1;
567   m_pia_u10->cb1_w(m_timer_x);
1014568}
1015569
1016MACHINE_START_MEMBER( by35_state, as2888 )
570// 555 timer for display refresh
571TIMER_DEVICE_CALLBACK_MEMBER( by35_state::u11_timer )
1017572{
1018   MACHINE_RESET_CALL_MEMBER( by35 );
1019   m_snd_prom = memregion("sound1")->base();
573   m_u11_timer ^= 1;
574   m_pia_u11->ca1_w(m_u11_timer);
1020575}
1021576
1022static const discrete_mixer_desc as2888_digital_mixer_info =
1023{
1024      DISC_MIXER_IS_RESISTOR,                       /* type */
1025      {RES_K(33), RES_K(3.9)},                      /* r{} */
1026      {0, 0, 0, 0},                                 /* r_node */
1027      {0, 0},                                       /* c{} */
1028      0,                                            /* rI  */
1029//      RES_VOLTAGE_DIVIDER(RES_K(10), RES_R(360)),   /* rF  */
1030      RES_K(10),                                    /* rF  */   // not really
1031      CAP_U(0.01),                                  /* cF  */
1032      0,                                            /* cAmp */
1033      0,                                            /* vRef */
1034      0.00002                                       /* gain */
1035};
1036
1037static const discrete_op_amp_filt_info as2888_preamp_info = {
1038      RES_K(10), 0, RES_R(470), 0,      /* r1 .. r4 */
1039      RES_K(10),                        /* rF */
1040      CAP_U(1),                         /* C1 */
1041      0,                                /* C2 */
1042      0,                                /* C3 */
1043      0.0,                              /* vRef */
1044      12.0,                             /* vP */
1045      -12.0,                            /* vN */
1046};
1047
1048
1049static DISCRETE_SOUND_START(as2888)
1050
1051   DISCRETE_INPUT_DATA(NODE_08)      // Start Sustain Attenuation from 555 circuit
1052   DISCRETE_INPUT_LOGIC(NODE_01)      // Binary Counter B output (divide by 1) T2
1053   DISCRETE_INPUT_LOGIC(NODE_04)      // Binary Counter D output (divide by 4) T3
1054
1055   DISCRETE_DIVIDE(NODE_11, 1, NODE_01, 1)   // 2
1056   DISCRETE_DIVIDE(NODE_14, 1, NODE_04, 1)
1057
1058
1059   DISCRETE_RCFILTER(NODE_06, NODE_14, RES_K(15), CAP_U(0.1))      // T4 filter
1060#if 0
1061   DISCRETE_RCFILTER(NODE_05, NODE_11, RES_K(33), CAP_U(0.01))      // T1 filter
1062   DISCRETE_ADDER2(NODE_07, 1, NODE_05, NODE_06)
1063#else
1064
1065   DISCRETE_MIXER2(NODE_07, 1, NODE_11, NODE_06, &as2888_digital_mixer_info)   // Mix and filter T1 and T4 together
1066#endif
1067   DISCRETE_RCDISC5(NODE_87, 1, NODE_08, RES_K(150), CAP_U(1.0))
1068
1069   DISCRETE_RCFILTER_VREF(NODE_88,NODE_87,RES_M(1),CAP_U(0.01),2)
1070   DISCRETE_MULTIPLY(NODE_09, NODE_07, NODE_88)   // Apply sustain
1071
1072   DISCRETE_OP_AMP_FILTER(NODE_20, 1, NODE_09, 0, DISC_OP_AMP_FILTER_IS_HIGH_PASS_1, &as2888_preamp_info)
1073
1074   DISCRETE_CRFILTER(NODE_25, NODE_20, RES_M(100), CAP_U(0.05))   // Resistor is fake. Capacitor in series between pre-amp and output amp.
1075
1076   DISCRETE_GAIN(NODE_30, NODE_25, 50)   // Output amplifier LM380 fixed inbuilt gain of 50
1077
1078   DISCRETE_OUTPUT(NODE_30, 10000000)  //  17000000
1079DISCRETE_SOUND_END
1080
1081
1082
1083577static MACHINE_CONFIG_START( by35, by35_state )
1084578   /* basic machine hardware */
1085   MCFG_CPU_ADD("maincpu", M6800, 530000) // No xtal, just 2 chips forming a multivibrator oscillator around 530KHz
579   MCFG_CPU_ADD("maincpu", M6800, 1000000) // no xtal, just 2 chips forming a random oscillator
1086580   MCFG_CPU_PROGRAM_MAP(by35_map)
1087581
1088   MCFG_MACHINE_RESET_OVERRIDE( by35_state, by35 )
582   MCFG_NVRAM_ADD_0FILL("nvram")
1089583
1090   MCFG_NVRAM_ADD_0FILL("nvram")   // 'F' filled causes Credit Display to be blank on first startup
1091
1092584   /* Video */
1093585   MCFG_DEFAULT_LAYOUT(layout_by35)
1094586
r249889r249890
1101593   MCFG_PIA_WRITEPA_HANDLER(WRITE8(by35_state, u10_a_w))
1102594   MCFG_PIA_READPB_HANDLER(READ8(by35_state, u10_b_r))
1103595   MCFG_PIA_WRITEPB_HANDLER(WRITE8(by35_state, u10_b_w))
1104   MCFG_PIA_READCA1_HANDLER(READLINE(by35_state, u10_ca1_r))
1105   MCFG_PIA_READCB1_HANDLER(READLINE(by35_state, u10_cb1_r))
1106596   MCFG_PIA_CA2_HANDLER(WRITELINE(by35_state, u10_ca2_w))
1107597   MCFG_PIA_CB2_HANDLER(WRITELINE(by35_state, u10_cb2_w))
1108598   MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
1109599   MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
1110   MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_z_freq", by35_state, timer_z_freq, attotime::from_hz(100)) // Mains Line Frequency * 2
1111   MCFG_TIMER_DRIVER_ADD("timer_z_pulse", by35_state, timer_z_pulse)                                // Active pulse length from Zero Crossing detector
600   MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_x", by35_state, timer_x, attotime::from_hz(120)) // mains freq*2
1112601
1113602   MCFG_DEVICE_ADD("pia_u11", PIA6821, 0)
1114603   MCFG_PIA_READPA_HANDLER(READ8(by35_state, u11_a_r))
1115604   MCFG_PIA_WRITEPA_HANDLER(WRITE8(by35_state, u11_a_w))
1116605   MCFG_PIA_WRITEPB_HANDLER(WRITE8(by35_state, u11_b_w))
1117   MCFG_PIA_READCA1_HANDLER(READLINE(by35_state, u11_ca1_r))
1118   MCFG_PIA_READCB1_HANDLER(READLINE(by35_state, u11_cb1_r))
1119606   MCFG_PIA_CA2_HANDLER(WRITELINE(by35_state, u11_ca2_w))
1120607   MCFG_PIA_CB2_HANDLER(WRITELINE(by35_state, u11_cb2_w))
1121608   MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
1122609   MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
1123   MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_d_freq", by35_state, u11_timer, attotime::from_hz(317)) // 555 timer
1124   MCFG_TIMER_DRIVER_ADD("timer_d_pulse", by35_state, timer_d_pulse)                             // 555 Active pulse length
610   MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_d", by35_state, u11_timer, attotime::from_hz(634)) // 555 timer*2
1125611MACHINE_CONFIG_END
1126612
1127MACHINE_CONFIG_FRAGMENT( as2888_audio )
1128613
1129   MCFG_MACHINE_START_OVERRIDE( by35_state, as2888 )
1130
1131   MCFG_SPEAKER_STANDARD_MONO("mono")
1132   MCFG_SOUND_ADD("discrete", DISCRETE, 0)
1133   MCFG_DISCRETE_INTF(as2888)
1134   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
1135
1136   MCFG_DEVICE_MODIFY("pia_u11")
1137   MCFG_PIA_WRITEPB_HANDLER(WRITE8(by35_state, u11_b_as2888_w))
1138   MCFG_PIA_CB2_HANDLER(WRITELINE(by35_state, u11_cb2_as2888_w))
1139
1140   MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_s_freq", by35_state, timer_s, attotime::from_hz(353000))     // Inverter clock on AS-2888 sound board
1141   MCFG_TIMER_DRIVER_ADD("timer_as2888", by35_state, timer_as2888)
1142MACHINE_CONFIG_END
1143
1144
1145static MACHINE_CONFIG_DERIVED( as2888, by35 )
1146
1147   MCFG_FRAGMENT_ADD( as2888_audio  )
1148MACHINE_CONFIG_END
1149
1150
1151static MACHINE_CONFIG_DERIVED( nuovo, by35 )
1152
1153   MCFG_CPU_REPLACE("maincpu", M6802, 2000000) // ? MHz ?  Large crystal next to CPU, schematics don't indicate speed.
1154   MCFG_CPU_PROGRAM_MAP(nuovo_map)
1155
1156MACHINE_CONFIG_END
1157
1158
1159
1160
1161614/*--------------------------------
1162615/ Supersonic #1106
1163616/-------------------------------*/
1164617ROM_START(sst)
1165   ROM_REGION(0x8000, "maincpu", 0)
618   ROM_REGION(0x10000, "maincpu", 0)
1166619   ROM_LOAD( "741-10_1.716", 0x1000, 0x0800, CRC(5e4cd81a) SHA1(d2a4a3599ad7271cd0ddc376c31c9b2e8defa379))
1167620   ROM_LOAD( "741-08_2.716", 0x5000, 0x0800, CRC(2789cbe6) SHA1(8230657cb5ee793354a5d4a80a9348639ec9af8f))
1168621   ROM_LOAD( "720-30_6.716", 0x5800, 0x0800, CRC(4be8aab0) SHA1(b6ae0c4f27b7dd7fb13c0632617a2559f86f29ae))
1169   ROM_RELOAD( 0x7800, 0x0800)
622   ROM_RELOAD( 0xf800, 0x0800)
1170623   ROM_REGION(0x0020, "sound1", 0)
1171624   ROM_LOAD( "729-18_3.123", 0x0000, 0x0020, CRC(7b6b7d45) SHA1(22f791bac0baab71754b2f6c00c217a342c92df5))
1172625ROM_END
r249889r249890
1175628/ Playboy #1116
1176629/-------------------------------*/
1177630ROM_START(playboy)
1178   ROM_REGION(0x8000, "maincpu", 0)
631   ROM_REGION(0x10000, "maincpu", 0)
1179632   ROM_LOAD( "743-14_1.716", 0x1000, 0x0800, CRC(5c40984a) SHA1(dea104242fcb6d604faa0f01f087bc58bd43cd9d))
1180633   ROM_LOAD( "743-12_2.716", 0x5000, 0x0800, CRC(6fa66664) SHA1(4943220942ce74d4620eb5fbbab8f8a763f65a2e))
1181634   ROM_LOAD( "720-30_6.716", 0x5800, 0x0800, CRC(4be8aab0) SHA1(b6ae0c4f27b7dd7fb13c0632617a2559f86f29ae))
1182   ROM_RELOAD( 0x7800, 0x0800)
635   ROM_RELOAD( 0xf800, 0x0800)
1183636   ROM_REGION(0x0020, "sound1", 0)
1184637   ROM_LOAD( "729-18_3.123", 0x0000, 0x0020, CRC(7b6b7d45) SHA1(22f791bac0baab71754b2f6c00c217a342c92df5))
1185638ROM_END
r249889r249890
1188641/ Lost World #1119
1189642/-------------------------------*/
1190643ROM_START(lostwrlp)
1191   ROM_REGION(0x8000, "maincpu", 0)
644   ROM_REGION(0x10000, "maincpu", 0)
1192645   ROM_LOAD( "729-33_1.716", 0x1000, 0x0800, CRC(4ca40b95) SHA1(4b4a3fbffb0aa99dab6330e24f93605eee35ac54))
1193646   ROM_LOAD( "729-48_2.716", 0x5000, 0x0800, CRC(963bffd8) SHA1(5144092d019132946b396fd7134866a878b3ca62))
1194647   ROM_LOAD( "720-28_6.716", 0x5800, 0x0800, CRC(f24cce3e) SHA1(0dfeaeb5b1cf4c950ff530ee56966ac0f2257111))
1195   ROM_RELOAD( 0x7800, 0x0800)
648   ROM_RELOAD( 0xf800, 0x0800)
1196649   ROM_REGION(0x0020, "sound1", 0)
1197650   ROM_LOAD( "729-18_3.123", 0x0000, 0x0020, CRC(7b6b7d45) SHA1(22f791bac0baab71754b2f6c00c217a342c92df5))
1198651ROM_END
r249889r249890
1201654/ Six Million Dollar Man #1138
1202655/-------------------------------*/
1203656ROM_START(smman)
1204   ROM_REGION(0x8000, "maincpu", 0)
657   ROM_REGION(0x10000, "maincpu", 0)
1205658   ROM_LOAD( "742-20_1.716", 0x1000, 0x0800, CRC(33e55a75) SHA1(98fbec07c9d03557654e5b67e29738c66156ec62))
1206659   ROM_LOAD( "742-18_2.716", 0x5000, 0x0800, CRC(5365d36c) SHA1(1db651d31e28cf3fda00bef5289bb14d3b37b3c1))
1207660   ROM_LOAD( "720-30_6.716", 0x5800, 0x0800, CRC(4be8aab0) SHA1(b6ae0c4f27b7dd7fb13c0632617a2559f86f29ae))
1208   ROM_RELOAD( 0x7800, 0x0800)
661   ROM_RELOAD( 0xf800, 0x0800)
1209662   ROM_REGION(0x0020, "sound1", 0)
1210663   ROM_LOAD( "729-18_3.123", 0x0000, 0x0020, CRC(7b6b7d45) SHA1(22f791bac0baab71754b2f6c00c217a342c92df5))
1211664ROM_END
r249889r249890
1214667/ Voltan Escapes Cosmic Doom #1147
1215668/-----------------------------------*/
1216669ROM_START(voltan)
1217   ROM_REGION(0x8000, "maincpu", 0)
670   ROM_REGION(0x10000, "maincpu", 0)
1218671   ROM_LOAD( "744-03_1.716", 0x1000, 0x0800, CRC(ad2467ae) SHA1(58c4de1ea696372bce9146a4c48a296ebcb2c431))
1219672   ROM_LOAD( "744-04_2.716", 0x5000, 0x0800, CRC(dbf58b83) SHA1(2d5e1c42fb8987eec81d89a4fe758ff0b88a1889))
1220673   ROM_LOAD( "720-30_6.716", 0x5800, 0x0800, CRC(4be8aab0) SHA1(b6ae0c4f27b7dd7fb13c0632617a2559f86f29ae))
1221   ROM_RELOAD( 0x7800, 0x0800)
674   ROM_RELOAD( 0xf800, 0x0800)
1222675   ROM_REGION(0x0020, "sound1", 0)
1223676   ROM_LOAD( "729-18_3.123", 0x0000, 0x0020, CRC(7b6b7d45) SHA1(22f791bac0baab71754b2f6c00c217a342c92df5))
1224677ROM_END
r249889r249890
1227680/ Star Trek #1148
1228681/-------------------------------*/
1229682ROM_START(startrep)
1230   ROM_REGION(0x8000, "maincpu", 0)
683   ROM_REGION(0x10000, "maincpu", 0)
1231684   ROM_LOAD( "745-11_1.716", 0x1000, 0x0800, CRC(a077efca) SHA1(6f78d9a43db0b99c3818a73a04d15aa300194a6d))
1232685   ROM_LOAD( "745-12_2.716", 0x5000, 0x0800, CRC(f683210a) SHA1(6120909d97269d9abfcc34eef2c79b56a9cf53bc))
1233686   ROM_LOAD( "720-30_6.716", 0x5800, 0x0800, CRC(4be8aab0) SHA1(b6ae0c4f27b7dd7fb13c0632617a2559f86f29ae))
1234   ROM_RELOAD( 0x7800, 0x0800)
687   ROM_RELOAD( 0xf800, 0x0800)
1235688   ROM_REGION(0x0020, "sound1", 0)
1236689   ROM_LOAD( "729-18_3.123", 0x0000, 0x0020, CRC(7b6b7d45) SHA1(22f791bac0baab71754b2f6c00c217a342c92df5))
1237690ROM_END
r249889r249890
1240693/ Kiss #1152
1241694/-------------------------------*/
1242695ROM_START(kiss)
1243   ROM_REGION(0x8000, "maincpu", 0)
696   ROM_REGION(0x10000, "maincpu", 0)
1244697   ROM_LOAD( "746-11_1.716", 0x1000, 0x0800, CRC(78ec7fad) SHA1(b7e47ed14be08571b620de71cd5006faaddc88d5))
1245698   ROM_LOAD( "746-14_2.716", 0x5000, 0x0800, CRC(0fc8922d) SHA1(dc6bd4d2d744df69b33ec69896cf71ac10c14a35))
1246699   ROM_LOAD( "720-30_6.716", 0x5800, 0x0800, CRC(4be8aab0) SHA1(b6ae0c4f27b7dd7fb13c0632617a2559f86f29ae))
1247   ROM_RELOAD( 0x7800, 0x0800)
700   ROM_RELOAD( 0xf800, 0x0800)
1248701   ROM_REGION(0x0020, "sound1", 0)
1249702   ROM_LOAD( "729-18_3.123", 0x0000, 0x0020, CRC(7b6b7d45) SHA1(22f791bac0baab71754b2f6c00c217a342c92df5))
1250703ROM_END
r249889r249890
1253706/ Nitro Ground Shaker #1154
1254707/-------------------------------*/
1255708ROM_START(ngndshkr)
1256   ROM_REGION(0x8000, "maincpu", 0)
709   ROM_REGION(0x10000, "maincpu", 0)
1257710   ROM_LOAD( "776-17_1.716", 0x1000, 0x0800, CRC(f2d44235) SHA1(282106767b5ec5180fa8e7eb2eb5b4766849c920))
1258711   ROM_LOAD( "776-11_2.716", 0x5000, 0x0800, CRC(b0396b55) SHA1(2d10c4af7ecfa23b64ffb640111b582f44256fd5))
1259712   ROM_LOAD( "720-35_6.716", 0x5800, 0x0800, CRC(78d6d289) SHA1(47c3005790119294309f12ea68b7e573f360b9ef))
1260   ROM_RELOAD( 0x7800, 0x0800)
713   ROM_RELOAD( 0xf800, 0x0800)
1261714   ROM_REGION(0x10000, "cpu2", 0)
1262715   ROM_LOAD("776-15_4.716", 0xf000, 0x0800, CRC(63c80c52) SHA1(3350919fce237b308b8f960948f70d01d312e9c0))
1263716   ROM_RELOAD(0xf800, 0x0800)
r249889r249890
1269722/ Silverball Mania #1157
1270723/-------------------------------*/
1271724ROM_START(slbmania)
1272   ROM_REGION(0x8000, "maincpu", 0)
725   ROM_REGION(0x10000, "maincpu", 0)
1273726   ROM_LOAD( "786-16_1.716", 0x1000, 0x0800, CRC(c054733f) SHA1(2699cf940ce40012e2d7554b0b130adcb2bec6d1))
1274727   ROM_LOAD( "786-17_2.716", 0x5000, 0x0800, CRC(94af0298) SHA1(579eb0290283194d92b172f787d8a9ff54f16a07))
1275728   ROM_LOAD( "720-35_6.716", 0x5800, 0x0800, CRC(78d6d289) SHA1(47c3005790119294309f12ea68b7e573f360b9ef))
1276   ROM_RELOAD( 0x7800, 0x0800)
729   ROM_RELOAD( 0xf800, 0x0800)
1277730   ROM_REGION(0x10000, "cpu2", 0)
1278731   ROM_LOAD("786-11_4.716", 0xf000, 0x0800, CRC(2a3641e6) SHA1(64693d424277e2aaf5fd4af33b2d348a8a455448))
1279732   ROM_RELOAD(0xf800, 0x0800)
r249889r249890
1285738/ Harlem Globetrotters On Tour #1161
1286739/------------------------------------*/
1287740ROM_START(hglbtrtr)
1288   ROM_REGION(0x8000, "maincpu", 0)
741   ROM_REGION(0x10000, "maincpu", 0)
1289742   ROM_LOAD( "750-07_1.716", 0x1000, 0x0800, CRC(da594719) SHA1(0aaa50e7d62da64f88d82b00cf0747945be88818))
1290743   ROM_LOAD( "750-08_2.716", 0x5000, 0x0800, CRC(3c783931) SHA1(ee260511063aff1b72e18b3bc5a5be81aecf10c9))
1291744   ROM_LOAD( "720-35_6.716", 0x5800, 0x0800, CRC(78d6d289) SHA1(47c3005790119294309f12ea68b7e573f360b9ef))
1292   ROM_RELOAD( 0x7800, 0x0800)
745   ROM_RELOAD( 0xf800, 0x0800)
1293746   ROM_REGION(0x0020, "sound1", 0)
1294747   ROM_LOAD( "729-51_3.123", 0x0000, 0x0020, CRC(6e7d3e8b) SHA1(7a93d82a05213ffa6eacfa318051414f872a701d))
1295748ROM_END
r249889r249890
1298751/ Dolly Parton #1162
1299752/-------------------------------*/
1300753ROM_START(dollyptn)
1301   ROM_REGION(0x8000, "maincpu", 0)
754   ROM_REGION(0x10000, "maincpu", 0)
1302755   ROM_LOAD( "777-10_1.716", 0x1000, 0x0800, CRC(ca88cb9a) SHA1(0deac1c02b2121635af4bd76a6695d8abc09d694))
1303756   ROM_LOAD( "777-13_2.716", 0x5000, 0x0800, CRC(7fc93ea3) SHA1(534ac5ed34397fe622dcf7cc90eaf38a311fa871))
1304757   ROM_LOAD( "720-35_6.716", 0x5800, 0x0800, CRC(78d6d289) SHA1(47c3005790119294309f12ea68b7e573f360b9ef))
1305   ROM_RELOAD( 0x7800, 0x0800)
758   ROM_RELOAD( 0xf800, 0x0800)
1306759   ROM_REGION(0x0020, "sound1", 0)
1307760   ROM_LOAD( "729-51_3.123", 0x0000, 0x0020, CRC(6e7d3e8b) SHA1(7a93d82a05213ffa6eacfa318051414f872a701d))
1308761ROM_END
r249889r249890
1311764/ Paragon #1167
1312765/-------------------------------*/
1313766ROM_START(paragon)
1314   ROM_REGION(0x8000, "maincpu", 0)
767   ROM_REGION(0x10000, "maincpu", 0)
1315768   ROM_LOAD( "748-17_1.716", 0x1000, 0x0800, CRC(08dbdf32) SHA1(43d1380d809683e74d67b6cf57c6eb0ad248a813))
1316769   ROM_LOAD( "748-15_2.716", 0x5000, 0x0800, CRC(26cc05c1) SHA1(6e11a0f2327dbf15f6c149ddd873d9af96597d9d))
1317770   ROM_LOAD( "720-30_6.716", 0x5800, 0x0800, CRC(4be8aab0) SHA1(b6ae0c4f27b7dd7fb13c0632617a2559f86f29ae))
1318   ROM_RELOAD( 0x7800, 0x0800)
771   ROM_RELOAD( 0xf800, 0x0800)
1319772   ROM_REGION(0x0020, "sound1", 0)
1320773   ROM_LOAD( "729-51_3.123", 0x0000, 0x0020, CRC(6e7d3e8b) SHA1(7a93d82a05213ffa6eacfa318051414f872a701d))
1321774ROM_END
r249889r249890
1324777/ Future Spa #1173
1325778/-------------------------------*/
1326779ROM_START(futurspa)
1327   ROM_REGION(0x8000, "maincpu", 0)
780   ROM_REGION(0x10000, "maincpu", 0)
1328781   ROM_LOAD( "781-07_1.716", 0x1000, 0x0800, CRC(4c716a6a) SHA1(a19ff17079b7ef0b9e6933ffc718dee0236bae10))
1329782   ROM_LOAD( "781-09_2.716", 0x5000, 0x0800, CRC(316617ed) SHA1(749d63cefe9541885b51db89302ad8a23e8f5b0a))
1330783   ROM_LOAD( "720-35_6.716", 0x5800, 0x0800, CRC(78d6d289) SHA1(47c3005790119294309f12ea68b7e573f360b9ef))
1331   ROM_RELOAD( 0x7800, 0x0800)
784   ROM_RELOAD( 0xf800, 0x0800)
1332785   ROM_REGION(0x10000, "cpu2", 0)
1333786   ROM_LOAD("781-02_4.716", 0xf000, 0x0800, CRC(364f7c9a) SHA1(e6a3d425317eaeba4109712c6949f11c50b82892))
1334787   ROM_RELOAD(0xf800, 0x0800)
r249889r249890
1340793/ Space Invaders #1178
1341794/-------------------------------*/
1342795ROM_START(spaceinv)
1343   ROM_REGION(0x8000, "maincpu", 0)
796   ROM_REGION(0x10000, "maincpu", 0)
1344797   ROM_LOAD( "792-10_1.716", 0x1000, 0x0800, CRC(075eba5a) SHA1(7147c2dfb6af1c39bbfb9e98f409baae10d09628))
1345798   ROM_LOAD( "792-13_2.716", 0x5000, 0x0800, CRC(b87b9e6b) SHA1(eab787ea81409ba88e30a342564944e1fade8124))
1346799   ROM_LOAD( "720-37_6.716", 0x5800, 0x0800, CRC(ceff6993) SHA1(bc91e7afdfc441ff47a37031f2d6caeb9ab64143))
1347   ROM_RELOAD( 0x7800, 0x0800)
800   ROM_RELOAD( 0xf800, 0x0800)
1348801   ROM_REGION(0x10000, "cpu2", 0)
1349802   ROM_LOAD("792-07_4.716", 0xf000, 0x0800, CRC(787ffd5e) SHA1(4dadad7095de27622c2120311a84555dacdc3364))
1350803   ROM_RELOAD(0xf800, 0x0800)
r249889r249890
1356809/ Rolling Stones #1187
1357810/-------------------------------*/
1358811ROM_START(rollston)
1359   ROM_REGION(0x8000, "maincpu", 0)
812   ROM_REGION(0x10000, "maincpu", 0)
1360813   ROM_LOAD( "796-17_1.716", 0x1000, 0x0800, CRC(51a826d7) SHA1(6811149c8948066b85b4018802afd409dbe8c2e1))
1361814   ROM_LOAD( "796-18_2.716", 0x5000, 0x0800, CRC(08c75b1a) SHA1(792a535514fe4d9476914f7f61c696a7a1bdb549))
1362815   ROM_LOAD( "720-35_6.716", 0x5800, 0x0800, CRC(78d6d289) SHA1(47c3005790119294309f12ea68b7e573f360b9ef))
1363   ROM_RELOAD( 0x7800, 0x0800)
816   ROM_RELOAD( 0xf800, 0x0800)
1364817   ROM_REGION(0x10000, "cpu2", 0)
1365818   ROM_LOAD("796-19_4.716", 0xf000, 0x0800, CRC(b740d047) SHA1(710edb6bbba0a03e4f516b501f019493a3a4033e))
1366819   ROM_RELOAD(0xf800, 0x0800)
r249889r249890
1372825/ Mystic #1192
1373826/-------------------------------*/
1374827ROM_START(mystic)
1375   ROM_REGION(0x8000, "maincpu", 0)
828   ROM_REGION(0x10000, "maincpu", 0)
1376829   ROM_LOAD( "798-03_1.716", 0x1000, 0x0800, CRC(f9c91e3b) SHA1(a3e6600b7b809cdd51a2d61b679f4f45ecf16e99))
1377830   ROM_LOAD( "798-04_2.716", 0x5000, 0x0800, CRC(f54e5785) SHA1(425304512b70ef0f17ca9854af96cbb63c5ee33e))
1378831   ROM_LOAD( "720-35_6.716", 0x5800, 0x0800, CRC(78d6d289) SHA1(47c3005790119294309f12ea68b7e573f360b9ef))
1379   ROM_RELOAD( 0x7800, 0x0800)
832   ROM_RELOAD( 0xf800, 0x0800)
1380833   ROM_REGION(0x10000, "cpu2", 0)
1381834   ROM_LOAD("798-05_4.716", 0xf000, 0x0800, CRC(e759e093) SHA1(e635dac4aa925804ec658e856f7830290bfbc7b8))
1382835   ROM_RELOAD(0xf800, 0x0800)
r249889r249890
1388841/ Xenon #1196
1389842/-------------------------------*/
1390843ROM_START(xenon)
1391   ROM_REGION(0x8000, "maincpu", 0)
844   ROM_REGION(0x10000, "maincpu", 0)
1392845   ROM_LOAD( "811-40_1.716", 0x1000, 0x0800, CRC(0fba871b) SHA1(52bc0ef65507f0f7422c319d0dc2059e12deab6d))
1393846   ROM_LOAD( "811-41_2.716", 0x5000, 0x0800, CRC(1ea0d891) SHA1(98cd8cfed5c0f437d2b9423b31205f1e8b7436f9))
1394847   ROM_LOAD( "720-40_6.732", 0x1800, 0x0800, CRC(d7aaaa03) SHA1(4e0b901645e509bcb59bf81a6ffc1612b4fb16ee))
1395848   ROM_CONTINUE( 0x5800, 0x0800 )
1396   ROM_RELOAD( 0x7000, 0x1000 )
849   ROM_RELOAD( 0xf000, 0x1000 )
1397850   ROM_REGION(0x10000, "cpu2", 0)
1398851   ROM_LOAD("811-35_4.532", 0xf000, 0x1000, CRC(e9caccbb) SHA1(e2e09ac738c48342212bf38687299876b40cecbb))
1399852   ROM_LOAD("811-22_1.532", 0x8000, 0x1000, CRC(c49a968e) SHA1(86680e8cbb82e69c232313e5fdd7a0058b7eef13))
r249889r249890
1406859ROM_END
1407860
1408861ROM_START(xenonf)
1409   ROM_REGION(0x8000, "maincpu", 0)
862   ROM_REGION(0x10000, "maincpu", 0)
1410863   ROM_LOAD( "811-40_1.716", 0x1000, 0x0800, CRC(0fba871b) SHA1(52bc0ef65507f0f7422c319d0dc2059e12deab6d))
1411864   ROM_LOAD( "811-41_2.716", 0x5000, 0x0800, CRC(1ea0d891) SHA1(98cd8cfed5c0f437d2b9423b31205f1e8b7436f9))
1412865   ROM_LOAD( "720-40_6.732", 0x1800, 0x0800, CRC(d7aaaa03) SHA1(4e0b901645e509bcb59bf81a6ffc1612b4fb16ee))
1413866   ROM_CONTINUE( 0x5800, 0x0800 )
1414   ROM_RELOAD( 0x7000, 0x1000 )
867   ROM_RELOAD( 0xf000, 0x1000 )
1415868   ROM_REGION(0x10000, "cpu2", 0)
1416869   ROM_LOAD("811-36_4.532", 0xf000, 0x1000, CRC(73156c6e) SHA1(b0b3ecb44428c01849189adf6c86be3e95a99012))
1417870   ROM_LOAD("811-22_1.532", 0x8000, 0x1000, CRC(c49a968e) SHA1(86680e8cbb82e69c232313e5fdd7a0058b7eef13))
r249889r249890
1427880/ Viking #1198
1428881/-------------------------------*/
1429882ROM_START(viking)
1430   ROM_REGION(0x8000, "maincpu", 0)
883   ROM_REGION(0x10000, "maincpu", 0)
1431884   ROM_LOAD( "802-05_1.716", 0x1000, 0x0800, CRC(a5db0574) SHA1(d9836679ed797b649f2c1e22bc24e8a9fe1c3000))
1432885   ROM_LOAD( "802-06_2.716", 0x5000, 0x0800, CRC(40410760) SHA1(b0b87d8600a03de7090e42f6ebdeeb5feccf87f6))
1433886   ROM_LOAD( "720-35_6.716", 0x5800, 0x0800, CRC(78d6d289) SHA1(47c3005790119294309f12ea68b7e573f360b9ef))
1434   ROM_RELOAD( 0x7800, 0x0800)
887   ROM_RELOAD( 0xf800, 0x0800)
1435888   ROM_REGION(0x10000, "cpu2", 0)
1436889   ROM_LOAD("802-07-4.716", 0xf000, 0x0800, CRC(62bc5030) SHA1(5a696f784a415d5b16ee23cd72a905264a2bbeac))
1437890   ROM_RELOAD(0xf800, 0x0800)
r249889r249890
1443896/ Hot Doggin' #1199
1444897/-------------------------------*/
1445898ROM_START(hotdoggn)
1446   ROM_REGION(0x8000, "maincpu", 0)
899   ROM_REGION(0x10000, "maincpu", 0)
1447900   ROM_LOAD( "809-05_1.716", 0x1000, 0x0800, CRC(2744abcb) SHA1(b45bd58c365785d12f9bec381574058e29f33fd2))
1448901   ROM_LOAD( "809-06_2.716", 0x5000, 0x0800, CRC(03db3d4d) SHA1(b8eed2d22474d2b0a1667eef2fdd4ecfa5fd35f3))
1449902   ROM_LOAD( "720-35_6.716", 0x5800, 0x0800, CRC(78d6d289) SHA1(47c3005790119294309f12ea68b7e573f360b9ef))
1450   ROM_RELOAD( 0x7800, 0x0800)
903   ROM_RELOAD( 0xf800, 0x0800)
1451904   ROM_REGION(0x10000, "cpu2", 0)
1452905   ROM_LOAD("809-07_4.716", 0xf000, 0x0800, CRC(43f28d7f) SHA1(01fca0ee0137a0715421eaa3582ff8d324340ecf))
1453906   ROM_RELOAD(0xf800, 0x0800)
r249889r249890
1457910
1458911#ifdef MISSING_GAME
1459912ROM_START(hotdoggb) // check to see if this is the same as above but with a different split
1460   ROM_REGION(0x8000, "maincpu", 0)
913   ROM_REGION(0x10000, "maincpu", 0)
1461914   ROM_LOAD( "hotd2732.u2", 0x1000, 0x0800, CRC(709305ee) SHA1(37d5e681a1a2b8b2782dae3007db3e5036003e00))
1462915   ROM_CONTINUE( 0x5000, 0x0800)
1463916   ROM_LOAD( "720-3532.u6b", 0x1800, 0x0800, CRC(b5e6a3d5) SHA1(fa1593eeed449dbac87965e613b501108a015eb2) )
1464917   ROM_CONTINUE( 0x5800, 0x0800)
1465   ROM_RELOAD( 0x7000, 0x1000)
918   ROM_RELOAD( 0xf000, 0x1000)
1466919   ROM_REGION(0x10000, "cpu2", 0)
1467920   ROM_LOAD("809-07_4.716", 0xf000, 0x0800, CRC(43f28d7f) SHA1(01fca0ee0137a0715421eaa3582ff8d324340ecf))
1468921   ROM_RELOAD(0xf800, 0x0800)
r249889r249890
1475928/ Skateball #1210
1476929/-------------------------------*/
1477930ROM_START(skatebll)
1478   ROM_REGION(0x8000, "maincpu", 0)
931   ROM_REGION(0x10000, "maincpu", 0)
1479932   ROM_LOAD( "823-24_1.716", 0x1000, 0x0800, CRC(46e797d1) SHA1(7ddbf6047b8d95af8727c32b056bee1c4aa228e4))
1480933   ROM_LOAD( "823-25_2.716", 0x5000, 0x0800, CRC(960cb8c3) SHA1(3a4499cab85d3563961b0a01c78fa1f3ba2188fe))
1481934   ROM_LOAD( "720-40_6.732", 0x1800, 0x0800, CRC(d7aaaa03) SHA1(4e0b901645e509bcb59bf81a6ffc1612b4fb16ee))
1482935   ROM_CONTINUE( 0x5800, 0x0800 )
1483   ROM_RELOAD( 0x7000, 0x1000 )
936   ROM_RELOAD( 0xf000, 0x1000 )
1484937   ROM_REGION(0x10000, "cpu2", 0)
1485938   ROM_LOAD("823-02_4.716", 0xf000, 0x0800, CRC(d1037b20) SHA1(8784728540573be5e8ebb940ec0046b778f9413b))
1486939   ROM_RELOAD(0xf800, 0x0800)
r249889r249890
1492945/ Flash Gordon #1215
1493946/-------------------------------*/
1494947ROM_START(flashgdn)
1495   ROM_REGION(0x8000, "maincpu", 0)
948   ROM_REGION(0x10000, "maincpu", 0)
1496949   ROM_LOAD( "834-23_2.732", 0x1000, 0x0800, CRC(0c7a0d91) SHA1(1f79be15817975acbc35cb08591e2289e2eca938))
1497950   ROM_CONTINUE( 0x5000, 0x0800)
1498951   ROM_LOAD( "720-52_6.732", 0x1800, 0x0800, CRC(2a43d9fb) SHA1(9ff903c32b80780383578a9abaa3ef9d3bcecbc7))
1499952   ROM_CONTINUE( 0x5800, 0x0800)
1500   ROM_RELOAD( 0x7000, 0x1000)
953   ROM_RELOAD( 0xf000, 0x1000)
1501954   ROM_REGION(0x10000, "cpu2", 0)
1502955   ROM_LOAD("834-20_2.532", 0xc000, 0x1000, CRC(2f8ced3e) SHA1(ecdeb07c31c22ec313b55774f4358a9923c5e9e7))
1503956   ROM_LOAD("834-18_5.532", 0xf000, 0x1000, CRC(8799e80e) SHA1(f255b4e7964967c82cfc2de20ebe4b8d501e3cb0))
1504957ROM_END
1505958
1506959ROM_START(flashgdnf)
1507   ROM_REGION(0x8000, "maincpu", 0)
960   ROM_REGION(0x10000, "maincpu", 0)
1508961   ROM_LOAD( "834-23_2.732", 0x1000, 0x0800, CRC(0c7a0d91) SHA1(1f79be15817975acbc35cb08591e2289e2eca938))
1509962   ROM_CONTINUE( 0x5000, 0x0800)
1510963   ROM_LOAD( "720-52_6.732", 0x1800, 0x0800, CRC(2a43d9fb) SHA1(9ff903c32b80780383578a9abaa3ef9d3bcecbc7))
1511964   ROM_CONTINUE( 0x5800, 0x0800)
1512   ROM_RELOAD( 0x7000, 0x1000)
965   ROM_RELOAD( 0xf000, 0x1000)
1513966   ROM_REGION(0x10000, "cpu2", 0)
1514967   ROM_LOAD("834-35_2.532", 0xc000, 0x1000, CRC(dff3f711) SHA1(254a5670775ecb6c347f33af8ba7c350e4cfa550))
1515968   ROM_LOAD("834-36_5.532", 0xf000, 0x1000, CRC(18691897) SHA1(3b445e0756c07d80f14c01af5a7f87744474ae15))
1516969ROM_END
1517970
1518971ROM_START(flashgdnv)
1519   ROM_REGION(0x8000, "maincpu", 0)
972   ROM_REGION(0x10000, "maincpu", 0)
1520973   ROM_LOAD( "834-23_2.732", 0x1000, 0x0800, CRC(0c7a0d91) SHA1(1f79be15817975acbc35cb08591e2289e2eca938))
1521974   ROM_CONTINUE( 0x5000, 0x0800)
1522975   ROM_LOAD( "720-52_6.732", 0x1800, 0x0800, CRC(2a43d9fb) SHA1(9ff903c32b80780383578a9abaa3ef9d3bcecbc7) )
1523976   ROM_CONTINUE( 0x5800, 0x0800)
1524   ROM_RELOAD( 0x7000, 0x1000)
977   ROM_RELOAD( 0xf000, 0x1000)
1525978   ROM_REGION(0x10000, "cpu2", 0)
1526979   ROM_LOAD("834-02_4.532", 0xf000, 0x1000, CRC(f1eb0a12) SHA1(a58567665547aacf9a1b2c39295d963527ef8696))
1527980   ROM_LOAD("834-03_1.532", 0x8000, 0x1000, CRC(88bef6f4) SHA1(561e0bde04661b700552e4fbb6141c39f2789c99))
r249889r249890
1537990/ Frontier #1217
1538991/-------------------------------*/
1539992ROM_START(frontier)
1540   ROM_REGION(0x8000, "maincpu", 0)
993   ROM_REGION(0x10000, "maincpu", 0)
1541994   ROM_LOAD( "819-08_1.716", 0x1000, 0x0800, CRC(e2f8ce9d) SHA1(03b38486e12f1677dcabcd0f14d194c59b3bd214))
1542995   ROM_LOAD( "819-07_2.716", 0x5000, 0x0800, CRC(af023a85) SHA1(95df232ba654293066beccbad158146259a764b7))
1543996   ROM_LOAD( "720-40_6.732", 0x1800, 0x0800, CRC(d7aaaa03) SHA1(4e0b901645e509bcb59bf81a6ffc1612b4fb16ee))
1544997   ROM_CONTINUE( 0x5800, 0x0800 )
1545   ROM_RELOAD( 0x7000, 0x1000 )
998   ROM_RELOAD( 0xf000, 0x1000 )
1546999   ROM_REGION(0x10000, "cpu2", 0)
15471000   ROM_LOAD("819-09_4.716", 0xf000, 0x0800, CRC(a62059ca) SHA1(75e139ea2573a8c3b666c9a1024d9308da9875c7))
15481001   ROM_RELOAD(0xf800, 0x0800)
r249889r249890
15541007/ Fireball II #1219
15551008/-------------------------------*/
15561009ROM_START(fball_ii)
1557   ROM_REGION(0x8000, "maincpu", 0)
1010   ROM_REGION(0x10000, "maincpu", 0)
15581011   ROM_LOAD( "839-12_2.732", 0x1000, 0x0800, CRC(45e768ad) SHA1(b706cb5f3dcfa2db54d8d15de180fcbf36b3768f))
15591012   ROM_CONTINUE( 0x5000, 0x0800)
15601013   ROM_LOAD( "720-52_6.732", 0x1800, 0x0800, CRC(2a43d9fb) SHA1(9ff903c32b80780383578a9abaa3ef9d3bcecbc7) )
15611014   ROM_CONTINUE( 0x5800, 0x0800)
1562   ROM_RELOAD( 0x7000, 0x1000)
1015   ROM_RELOAD( 0xf000, 0x1000)
15631016   ROM_REGION(0x10000, "cpu2", 0)
15641017   ROM_LOAD("839-01_2.532", 0xc000, 0x1000, CRC(4aa473bd) SHA1(eaa12ded76f9999d33ce0fe6198df1708e007e12))
15651018   ROM_LOAD("839-02_5.532", 0xf000, 0x1000, CRC(8bf904ff) SHA1(de78d08bddd546abac65c2f95f1d52797e716362))
r249889r249890
15691022/ Eight Ball Deluxe #1220
15701023/-------------------------------*/
15711024ROM_START(eballdlx)
1572   ROM_REGION(0x8000, "maincpu", 0)
1025   ROM_REGION(0x10000, "maincpu", 0)
15731026   ROM_LOAD( "838-15_2.732", 0x1000, 0x0800, CRC(68d92acc) SHA1(f37b16d2953677cd779073bc3eac4b586d62fad8))
15741027   ROM_CONTINUE( 0x5000, 0x0800)
15751028   ROM_LOAD( "720-52_6.732", 0x1800, 0x0800, CRC(2a43d9fb) SHA1(9ff903c32b80780383578a9abaa3ef9d3bcecbc7) )
15761029   ROM_CONTINUE( 0x5800, 0x0800)
1577   ROM_RELOAD( 0x7000, 0x1000)
1030   ROM_RELOAD( 0xf000, 0x1000)
15781031   ROM_REGION(0x10000, "cpu2", 0)
15791032   ROM_LOAD("838-08_3.532", 0xd000, 0x1000, CRC(c39478d7) SHA1(8148aca7c4113921ab882da32d6d88e66abb22cc))
15801033   ROM_LOAD("838-09_4.716", 0xe000, 0x0800, CRC(518ea89e) SHA1(a387274ef530bb57f31819733b35615a39260126))
r249889r249890
15831036ROM_END
15841037
15851038ROM_START(eballd14)
1586   ROM_REGION(0x8000, "maincpu", 0)
1039   ROM_REGION(0x10000, "maincpu", 0)
15871040   ROM_LOAD( "838-14_2.732", 0x1000, 0x0800, CRC(27eeabde) SHA1(a8f81dbb70202bdad1c9734d629e8a5c27f2a835))
15881041   ROM_CONTINUE( 0x5000, 0x0800)
15891042   ROM_LOAD( "720-52_6.732", 0x1800, 0x0800, CRC(2a43d9fb) SHA1(9ff903c32b80780383578a9abaa3ef9d3bcecbc7) )
15901043   ROM_CONTINUE( 0x5800, 0x0800)
1591   ROM_RELOAD( 0x7000, 0x1000)
1044   ROM_RELOAD( 0xf000, 0x1000)
15921045   ROM_REGION(0x10000, "cpu2", 0)
15931046   ROM_LOAD("838-08_3.532", 0xd000, 0x1000, CRC(c39478d7) SHA1(8148aca7c4113921ab882da32d6d88e66abb22cc))
15941047   ROM_LOAD("838-09_4.716", 0xe000, 0x0800, CRC(518ea89e) SHA1(a387274ef530bb57f31819733b35615a39260126))
r249889r249890
16001053/ Embryon #1222
16011054/-------------------------------*/
16021055ROM_START(embryon)
1603   ROM_REGION(0x8000, "maincpu", 0)
1056   ROM_REGION(0x10000, "maincpu", 0)
16041057   ROM_LOAD( "841-06_2.732", 0x1000, 0x0800, CRC(80ab18e7) SHA1(52e5b1709e6f21919fc9efed67f51934d883dbb7))
16051058   ROM_CONTINUE( 0x5000, 0x0800)
16061059   ROM_LOAD( "720-52_6.732", 0x1800, 0x0800, CRC(2a43d9fb) SHA1(9ff903c32b80780383578a9abaa3ef9d3bcecbc7) )
16071060   ROM_CONTINUE( 0x5800, 0x0800)
1608   ROM_RELOAD( 0x7000, 0x1000)
1061   ROM_RELOAD( 0xf000, 0x1000)
16091062   ROM_REGION(0x10000, "cpu2", 0)
16101063   ROM_LOAD("841-01_4.716", 0xe000, 0x0800, CRC(e8b234e3) SHA1(584e553748b1c6571491150e346d815005948b68))
16111064   ROM_RELOAD(0xe800, 0x0800)
r249889r249890
16161069/ Fathom #1233
16171070/-------------------------------*/
16181071ROM_START(fathom)
1619   ROM_REGION(0x8000, "maincpu", 0)
1072   ROM_REGION(0x10000, "maincpu", 0)
16201073   ROM_LOAD( "842-08_2.732", 0x1000, 0x0800, CRC(1180f284) SHA1(78be1fa54faba5c5b14f580e41546be685846391))
16211074   ROM_CONTINUE( 0x5000, 0x0800)
16221075   ROM_LOAD( "720-53_6.732", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad) )
16231076   ROM_CONTINUE( 0x5800, 0x0800)
1624   ROM_RELOAD( 0x7000, 0x1000)
1077   ROM_RELOAD( 0xf000, 0x1000)
16251078   ROM_REGION(0x10000, "cpu2", 0)
16261079   ROM_LOAD("842-01_4.532", 0xe000, 0x1000, CRC(2ac02093) SHA1(a89c1d24f4f3e1f58ca4e476f408835efb368a90))
16271080   ROM_LOAD("842-02_5.532", 0xf000, 0x1000, CRC(736800bc) SHA1(2679d4d76e7258ad18ffe05cf333f21c35adfe0e))
r249889r249890
16311084/ Centaur #1239
16321085/-------------------------------*/
16331086ROM_START(centaur)
1634   ROM_REGION(0x8000, "maincpu", 0)
1087   ROM_REGION(0x10000, "maincpu", 0)
16351088   ROM_LOAD( "848-08_2.732", 0x1000, 0x0800, CRC(8bdcd32b) SHA1(39f64393d3a39a8172b3d80d196253aac1342f40))
16361089   ROM_CONTINUE( 0x5000, 0x0800)
16371090   ROM_LOAD( "720-53_6.732", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad) )
16381091   ROM_CONTINUE( 0x5800, 0x0800)
1639   ROM_RELOAD( 0x7000, 0x1000)
1092   ROM_RELOAD( 0xf000, 0x1000)
16401093   ROM_REGION(0x10000, "cpu2", 0)
16411094   ROM_LOAD("848-01_3.532", 0xd000, 0x1000, CRC(88322c8a) SHA1(424fd2b107f5fbc3ab8b58e3fa8c285170b1f09a))
16421095   ROM_LOAD("848-02_4.532", 0xe000, 0x1000, CRC(d6dbd0e4) SHA1(62e4c8c1a747c5f6a3a4bf4d0bc80b06a1f70d13))
r249889r249890
16481101/ Medusa #1245
16491102/-------------------------------*/
16501103ROM_START(medusa)
1651   ROM_REGION(0x8000, "maincpu", 0)
1104   ROM_REGION(0x10000, "maincpu", 0)
16521105   ROM_LOAD( "845-16_2.732", 0x1000, 0x0800, CRC(b0fbd1ac) SHA1(e876eced0c02a2b4b3c308494e8c453074d0e561))
16531106   ROM_CONTINUE( 0x5000, 0x0800)
16541107   ROM_LOAD( "720-53_6.732", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad) )
16551108   ROM_CONTINUE( 0x5800, 0x0800)
1656   ROM_RELOAD( 0x7000, 0x1000)
1109   ROM_RELOAD( 0xf000, 0x1000)
16571110   ROM_REGION(0x10000, "cpu2", 0)
16581111   ROM_LOAD("845-01_3.532", 0xd000, 0x1000, CRC(32200e02) SHA1(e75356a20f81a68e6b27d2fa04b8cc9b17f3976a))
16591112   ROM_LOAD("845-02_4.532", 0xe000, 0x1000, CRC(ab95885a) SHA1(fa91cef2a244d25d408585d1e14e1ed8fdc8c845))
r249889r249890
16651118/ Vector #1247
16661119/-------------------------------*/
16671120ROM_START(vector)
1668   ROM_REGION(0x8000, "maincpu", 0)
1121   ROM_REGION(0x10000, "maincpu", 0)
16691122   ROM_LOAD( "858-11_2.732", 0x1000, 0x0800, CRC(323e286b) SHA1(998387900363fd46d392a931c1f092c886a23c69))
16701123   ROM_CONTINUE( 0x5000, 0x0800)
16711124   ROM_LOAD( "720-53_6.732", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad) )
16721125   ROM_CONTINUE( 0x5800, 0x0800)
1673   ROM_RELOAD( 0x7000, 0x1000)
1126   ROM_RELOAD( 0xf000, 0x1000)
16741127   ROM_REGION(0x10000, "cpu2", 0)
16751128   ROM_LOAD("858-01_2.532", 0xc000, 0x1000, CRC(bd2edef9) SHA1(8f129016440bad5e78d4b073268e76e542b61684))
16761129   ROM_LOAD("858-02_3.532", 0xd000, 0x1000, CRC(c592fb35) SHA1(5201824f129812c907e7d8a4600de23d95fd1eb0))
r249889r249890
16821135/ Elektra #1248
16831136/-------------------------------*/
16841137ROM_START(elektra)
1685   ROM_REGION(0x8000, "maincpu", 0)
1138   ROM_REGION(0x10000, "maincpu", 0)
16861139   ROM_LOAD( "857-04_2.732", 0x1000, 0x0800, CRC(d2476720) SHA1(372c210c4f19302ffe25722bba6bcaaa85c4b90d))
16871140   ROM_CONTINUE( 0x5000, 0x0800)
16881141   ROM_LOAD( "720-53_6.732", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad) )
16891142   ROM_CONTINUE( 0x5800, 0x0800)
1690   ROM_RELOAD( 0x7000, 0x1000)
1143   ROM_RELOAD( 0xf000, 0x1000)
16911144   ROM_REGION(0x10000, "cpu2", 0)
16921145   ROM_LOAD("857-01_3.532", 0xd000, 0x1000, CRC(031548cc) SHA1(1f0204afd32dc07a301f404b4b064e34a83bd783))
16931146   ROM_LOAD("857-02_4.532", 0xe000, 0x1000, CRC(efc870d9) SHA1(45132c123b3191d616e2e9372948ab66ff221228))
r249889r249890
16991152/ Spectrum #1262
17001153/-------------------------------*/
17011154ROM_START(spectrm)
1702   ROM_REGION(0x8000, "maincpu", 0)
1155   ROM_REGION(0x10000, "maincpu", 0)
17031156   ROM_LOAD( "868-00_2.732", 0x1000, 0x0800, NO_DUMP)
17041157   ROM_CONTINUE( 0x5000, 0x0800)
17051158   ROM_LOAD( "720-53_6.732", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad) )
17061159   ROM_CONTINUE( 0x5800, 0x0800)
1707   ROM_RELOAD( 0x7000, 0x1000)
1160   ROM_RELOAD( 0xf000, 0x1000)
17081161   ROM_REGION(0x10000, "cpu2", 0)
17091162   ROM_LOAD("868-01_3.532", 0xd000, 0x1000, CRC(c3a16c66) SHA1(8c0a8b50fac0e218515b471621e80000ae475296))
17101163   ROM_LOAD("868-02_4.532", 0xe000, 0x1000, CRC(6b441399) SHA1(aae9e805f76cd6bc264bf69dd2d57629ee58bfc2))
r249889r249890
17131166ROM_END
17141167
17151168ROM_START(spectrm4)
1716   ROM_REGION(0x8000, "maincpu", 0)
1169   ROM_REGION(0x10000, "maincpu", 0)
17171170   ROM_LOAD( "868-04_2.732", 0x1000, 0x0800, CRC(b377f5f1) SHA1(adc40204da90ef1a4470a478520b949c6ded07b5))
17181171   ROM_CONTINUE( 0x5000, 0x0800)
17191172   ROM_LOAD( "720-53_6.732", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad) )
17201173   ROM_CONTINUE( 0x5800, 0x0800)
1721   ROM_RELOAD( 0x7000, 0x1000)
1174   ROM_RELOAD( 0xf000, 0x1000)
17221175   ROM_REGION(0x10000, "cpu2", 0)
17231176   ROM_LOAD("868-01_3.532", 0xd000, 0x1000, CRC(c3a16c66) SHA1(8c0a8b50fac0e218515b471621e80000ae475296))
17241177   ROM_LOAD("868-02_4.532", 0xe000, 0x1000, CRC(6b441399) SHA1(aae9e805f76cd6bc264bf69dd2d57629ee58bfc2))
r249889r249890
17301183/ Speakeasy #1273
17311184/--------------------------------------------------*/
17321185ROM_START(speakesy)
1733   ROM_REGION(0x8000, "maincpu", 0)
1186   ROM_REGION(0x10000, "maincpu", 0)
17341187   ROM_LOAD( "877-03_2.732", 0x1000, 0x0800, CRC(34b28bbc) SHA1(c649a04664e694cfbd6b4d496bf76f5e802d492a))
17351188   ROM_CONTINUE( 0x5000, 0x0800)
17361189   ROM_LOAD( "720-53_6.732", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad) )
17371190   ROM_CONTINUE( 0x5800, 0x0800)
1738   ROM_RELOAD( 0x7000, 0x1000)
1191   ROM_RELOAD( 0xf000, 0x1000)
17391192   ROM_REGION(0x10000, "cpu2", 0)
17401193   ROM_LOAD("877-01_4.716", 0xf000, 0x0800, CRC(6534e826) SHA1(580653636f8d33e758e6631c9ce495f42fe3747a))
17411194   ROM_RELOAD(0xf800, 0x0800)
r249889r249890
17441197ROM_END
17451198
17461199ROM_START(speakesy4p)
1747   ROM_REGION(0x8000, "maincpu", 0)
1200   ROM_REGION(0x10000, "maincpu", 0)
17481201   ROM_LOAD( "877-04_2.732", 0x1000, 0x0800, CRC(8926f2bb) SHA1(617c032ce949007d6bcb52268f17bec5a02f8651))
17491202   ROM_CONTINUE( 0x5000, 0x0800)
17501203   ROM_LOAD( "720-53_6.732", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad) )
17511204   ROM_CONTINUE( 0x5800, 0x0800)
1752   ROM_RELOAD( 0x7000, 0x1000)
1205   ROM_RELOAD( 0xf000, 0x1000)
17531206   ROM_REGION(0x10000, "cpu2", 0)
17541207   ROM_LOAD("877-01_4.716", 0xf000, 0x0800, CRC(6534e826) SHA1(580653636f8d33e758e6631c9ce495f42fe3747a))
17551208   ROM_RELOAD(0xf800, 0x0800)
r249889r249890
17611214/ BMX #1276
17621215/----------------------------------------------------*/
17631216ROM_START(bmx)
1764   ROM_REGION(0x8000, "maincpu", 0)
1217   ROM_REGION(0x10000, "maincpu", 0)
17651218   ROM_LOAD( "888-03_2.732", 0x1000, 0x0800, CRC(038cf1be) SHA1(b000a3d84623db6a7644551e5e2f0d7b533acb13))
17661219   ROM_CONTINUE( 0x5000, 0x0800)
17671220   ROM_LOAD( "720-53_6.732", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad) )
17681221   ROM_CONTINUE( 0x5800, 0x0800)
1769   ROM_RELOAD( 0x7000, 0x1000)
1222   ROM_RELOAD( 0xf000, 0x1000)
17701223   ROM_REGION(0x10000, "cpu2", 0)
17711224   ROM_LOAD("888-02_4.532", 0xf000, 0x1000, CRC(5692c679) SHA1(7eef074d16cde589cde7500c4dc76c9a902c7fe3))
17721225   ROM_RELOAD(0x1000, 0x1000)
r249889r249890
17761229/ Rapid Fire #1282
17771230/-------------------------------*/
17781231ROM_START(rapidfip)
1779   ROM_REGION(0x8000, "maincpu", 0)
1232   ROM_REGION(0x10000, "maincpu", 0)
17801233   ROM_LOAD( "869-04_2.732", 0x1000, 0x0800, CRC(26fdf048) SHA1(15787345e7162a530334bff98d877e525d4a1295))
17811234   ROM_CONTINUE( 0x5000, 0x0800)
17821235   ROM_LOAD( "869-03_6.732", 0x1800, 0x0800, CRC(f6af5e8d) SHA1(3cf782d4a0ca38e3953a20d23d0eb01af87ba445) )
17831236   ROM_CONTINUE( 0x5800, 0x0800)
1784   ROM_RELOAD( 0x7000, 0x1000)
1237   ROM_RELOAD( 0xf000, 0x1000)
17851238   ROM_REGION(0x10000, "cpu2", 0)
17861239   ROM_LOAD("869-02_5.532", 0xf000, 0x1000, CRC(5a74cb86) SHA1(4fd09b0bc4257cb7b48cd8087b8b15fe768f7ddf))
17871240ROM_END
r249889r249890
17901243/ Mr. and Mrs. Pacman #1283
17911244/--------------------------------------*/
17921245ROM_START(m_mpac)
1793   ROM_REGION(0x8000, "maincpu", 0)
1246   ROM_REGION(0x10000, "maincpu", 0)
17941247   ROM_LOAD( "872-04_2.732", 0x1000, 0x0800, CRC(5e542882) SHA1(bec5f56cd5192e0a12ea1226a49a2b7d8eaaa5cf))
17951248   ROM_CONTINUE( 0x5000, 0x0800)
17961249   ROM_LOAD( "720-53_6.732", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad) )
17971250   ROM_CONTINUE( 0x5800, 0x0800)
1798   ROM_RELOAD( 0x7000, 0x1000)
1251   ROM_RELOAD( 0xf000, 0x1000)
17991252   ROM_REGION(0x10000, "cpu2", 0)
18001253   ROM_LOAD("872-01_4.532", 0xe000, 0x1000, CRC(d21ce16d) SHA1(3ee6e2629530e7e6e4d7eac713d34c48297a1047))
18011254   ROM_LOAD("872-03_5.532", 0xf000, 0x1000, CRC(8fcdf853) SHA1(7c6bffcd974d2684e7f2c69d926f6cabb53e2f90))
r249889r249890
18051258/ Grand Slam #1311
18061259/-----------------------------------------------------------*/
18071260ROM_START(granslam)
1808   ROM_REGION(0x8000, "maincpu", 0)
1261   ROM_REGION(0x10000, "maincpu", 0)
18091262   ROM_LOAD( "grndslam.u2", 0x1000, 0x0800, CRC(66aea9dc) SHA1(76c017dc83a63b7f1e6035e228370219eb9c0678))
18101263   ROM_CONTINUE( 0x5000, 0x0800)
18111264   ROM_LOAD( "grndslam.u6", 0x1800, 0x0800, CRC(9e6ccea1) SHA1(5e158e021e0f3eed063577ae22cf5f1bc9655065) )
18121265   ROM_CONTINUE( 0x5800, 0x0800)
1813   ROM_RELOAD( 0x7000, 0x1000)
1266   ROM_RELOAD( 0xf000, 0x1000)
18141267   ROM_REGION(0x10000, "cpu2", 0)
18151268   ROM_LOAD("grndslam.u4", 0xf000, 0x1000, CRC(ac34bc38) SHA1(376ceb53cb51d250b5bc222001291b0c85e42e8a))
18161269   ROM_RELOAD(0x1000, 0x1000)
18171270ROM_END
18181271
18191272ROM_START(granslam4)
1820   ROM_REGION(0x8000, "maincpu", 0)
1273   ROM_REGION(0x10000, "maincpu", 0)
18211274   ROM_LOAD( "gr_slam.u2b", 0x1000, 0x0800, CRC(552d9423) SHA1(16b86d5b7539fd803f458f1633ecc249ef15243d))
18221275   ROM_CONTINUE( 0x5000, 0x0800)
18231276   ROM_LOAD( "grndslam.u6", 0x1800, 0x0800, CRC(9e6ccea1) SHA1(5e158e021e0f3eed063577ae22cf5f1bc9655065) )
18241277   ROM_CONTINUE( 0x5800, 0x0800)
1825   ROM_RELOAD( 0x7000, 0x1000)
1278   ROM_RELOAD( 0xf000, 0x1000)
18261279   ROM_REGION(0x10000, "cpu2", 0)
18271280   ROM_LOAD("grndslam.u4", 0xf000, 0x1000, CRC(ac34bc38) SHA1(376ceb53cb51d250b5bc222001291b0c85e42e8a))
18281281   ROM_RELOAD(0x1000, 0x1000)
r249889r249890
18371290/ Gold Ball #1371
18381291/----------------------------------------------------------*/
18391292ROM_START(goldball)
1840   ROM_REGION(0x8000, "maincpu", 0)
1293   ROM_REGION(0x10000, "maincpu", 0)
18411294   ROM_LOAD( "gold2732.u2", 0x1000, 0x0800, CRC(3169493c) SHA1(1335fcdfb2d6970d78c636748ff419baf85ef78b))
18421295   ROM_CONTINUE( 0x5000, 0x0800)
18431296   ROM_LOAD( "goldball.u6", 0x1800, 0x0800, CRC(9b6e79d0) SHA1(4fcda91bbe930e6131d94964a08459e395f841af))
18441297   ROM_CONTINUE( 0x5800, 0x0800)
1845   ROM_RELOAD( 0x7000, 0x1000)
1298   ROM_RELOAD( 0xf000, 0x1000)
18461299   ROM_REGION(0x10000, "cpu2", 0)
18471300   ROM_LOAD("gb_u4.532", 0xf000, 0x1000, CRC(2dcb0315) SHA1(8cb9c9f627f0c8420d3b3d9f0d10d77a82c8be56))
18481301   ROM_RELOAD(0x1000, 0x1000)
18491302ROM_END
18501303
18511304ROM_START(goldballn)
1852   ROM_REGION(0x8000, "maincpu", 0)
1305   ROM_REGION(0x10000, "maincpu", 0)
18531306   ROM_LOAD( "u2.532", 0x1000, 0x0800, CRC(aa6eb9d6) SHA1(a73cc832450e718d9b8484e409a1f8093d91d786))
18541307   ROM_CONTINUE( 0x5000, 0x0800)
18551308   ROM_LOAD( "goldball.u6", 0x1800, 0x0800, CRC(9b6e79d0) SHA1(4fcda91bbe930e6131d94964a08459e395f841af) )
18561309   ROM_CONTINUE( 0x5800, 0x0800)
1857   ROM_RELOAD( 0x7000, 0x1000)
1310   ROM_RELOAD( 0xf000, 0x1000)
18581311   ROM_REGION(0x10000, "cpu2", 0)
18591312   ROM_LOAD("gb_u4.532", 0xf000, 0x1000, CRC(2dcb0315) SHA1(8cb9c9f627f0c8420d3b3d9f0d10d77a82c8be56))
18601313   ROM_RELOAD(0x1000, 0x1000)
r249889r249890
18641317/ Kings of Steel #1390
18651318/-------------------------------*/
18661319ROM_START(kosteel)
1867   ROM_REGION(0x8000, "maincpu", 0)
1320   ROM_REGION(0x10000, "maincpu", 0)
18681321   ROM_LOAD( "kngs2732.u2", 0x1000, 0x0800, CRC(f876d8f2) SHA1(581f4b98e0a69f4ae879caeafdbf2eb979514ad1))
18691322   ROM_CONTINUE( 0x5000, 0x0800)
18701323   ROM_LOAD( "720-5332.u6", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad) )
18711324   ROM_CONTINUE( 0x5800, 0x0800)
1872   ROM_RELOAD( 0x7000, 0x1000)
1325   ROM_RELOAD( 0xf000, 0x1000)
18731326   ROM_REGION(0x10000, "cpu2", 0)
18741327   ROM_LOAD("kngsu4.snd", 0x8000, 0x1000, CRC(f3e4d2f6) SHA1(93f4e9e1348b1225bc02db38c994e3338afb175c))
18751328   ROM_RELOAD(0x9000, 0x1000)
r249889r249890
18851338/ X's & O's #1391
18861339/-------------------------------*/
18871340ROM_START(xsandos)
1888   ROM_REGION(0x8000, "maincpu", 0)
1341   ROM_REGION(0x10000, "maincpu", 0)
18891342   ROM_LOAD( "x&os2732.u2", 0x1000, 0x0800, CRC(068dfe5a) SHA1(028baf79852b14cac51a7cdc8e751a8173beeccb))
18901343   ROM_CONTINUE( 0x5000, 0x0800)
18911344   ROM_LOAD( "720-5332.u6", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad) )
18921345   ROM_CONTINUE( 0x5800, 0x0800)
1893   ROM_RELOAD( 0x7000, 0x1000)
1346   ROM_RELOAD( 0xf000, 0x1000)
18941347   ROM_REGION(0x10000, "cpu2", 0)
18951348   ROM_LOAD("720_u3.snd", 0xc000, 0x2000, CRC(5d8e2adb) SHA1(901a26f5e598386295a1298ee3a634941bd58b3e))
18961349   ROM_RELOAD(0xe000, 0x2000)
r249889r249890
19001353/ Spy Hunter #0A17
19011354/-------------------------------*/
19021355ROM_START(spyhuntr)
1903   ROM_REGION(0x8000, "maincpu", 0)
1356   ROM_REGION(0x10000, "maincpu", 0)
19041357   ROM_LOAD( "spy-2732.u2", 0x1000, 0x0800, CRC(9e930f2d) SHA1(fb48ce0d8d8f8a695827c0eea57510b53daa7c39))
19051358   ROM_CONTINUE( 0x5000, 0x0800)
19061359   ROM_LOAD( "720-5332.u6", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad) )
19071360   ROM_CONTINUE( 0x5800, 0x0800)
1908   ROM_RELOAD( 0x7000, 0x1000)
1361   ROM_RELOAD( 0xf000, 0x1000)
19091362   ROM_REGION(0x10000, "cpu2", 0)
19101363   ROM_LOAD("spy_u4.532", 0x8000, 0x1000, CRC(a43887d0) SHA1(6bbc55943fa9f0cd97f946767f21652e19d85265))
19111364   ROM_RELOAD(0x9000, 0x1000)
r249889r249890
19211374/ Fireball Classic #0A40
19221375/------------------------------------*/
19231376ROM_START(fbclass)
1924   ROM_REGION(0x8000, "maincpu", 0)
1377   ROM_REGION(0x10000, "maincpu", 0)
19251378   ROM_LOAD( "fb-class.u2", 0x1000, 0x0800, CRC(32faac6c) SHA1(589020d09f26326dab266bc7c74ca0e10de565e6))
19261379   ROM_CONTINUE( 0x5000, 0x0800)
19271380   ROM_LOAD( "720-5332.u6", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad) )
19281381   ROM_CONTINUE( 0x5800, 0x0800)
1929   ROM_RELOAD( 0x7000, 0x1000)
1382   ROM_RELOAD( 0xf000, 0x1000)
19301383   ROM_REGION(0x10000, "cpu2", 0)
19311384   ROM_LOAD("fbcu4.snd", 0x8000, 0x1000, CRC(697ab16f) SHA1(7beed02e6cb042f90d2048778408b1f744ffe242))
19321385   ROM_RELOAD(0x9000, 0x1000)
r249889r249890
19421395/ Black Pyramid #0A44
19431396/-------------------------------*/
19441397ROM_START(blakpyra)
1945   ROM_REGION(0x8000, "maincpu", 0)
1398   ROM_REGION(0x10000, "maincpu", 0)
19461399   ROM_LOAD( "blkp2732.u2", 0x1000, 0x0800, CRC(600535b0) SHA1(33d080f4430ad9c33ee9de1bfbb5cfde50f0776e))
19471400   ROM_CONTINUE( 0x5000, 0x0800)
19481401   ROM_LOAD( "720-5332.u6", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad) )
19491402   ROM_CONTINUE( 0x5800, 0x0800)
1950   ROM_RELOAD( 0x7000, 0x1000)
1403   ROM_RELOAD( 0xf000, 0x1000)
19511404   ROM_REGION(0x10000, "cpu2", 0)
19521405   ROM_LOAD("bp_u4.532", 0x8000, 0x1000, CRC(57978b4a) SHA1(4995837790d81b02325d39b548fb882a591769c5))
19531406   ROM_RELOAD(0x9000, 0x1000)
r249889r249890
19631416/ Cybernaut #0B42
19641417/-------------------------------*/
19651418ROM_START(cybrnaut)
1966   ROM_REGION(0x8000, "maincpu", 0)
1419   ROM_REGION(0x10000, "maincpu", 0)
19671420   ROM_LOAD( "cybe2732.u2", 0x1000, 0x0800, CRC(0610b0e0) SHA1(92f5e8a83240ad03ecc16ece4824b047b77816f7))
19681421   ROM_CONTINUE( 0x5000, 0x0800)
19691422   ROM_LOAD( "720-5332.u6", 0x1800, 0x0800, CRC(c2e92f80) SHA1(61de956a4b6e9fb9ef2b25c01bff1fb5972284ad) )
19701423   ROM_CONTINUE( 0x5800, 0x0800)
1971   ROM_RELOAD( 0x7000, 0x1000)
1424   ROM_RELOAD( 0xf000, 0x1000)
19721425   ROM_REGION(0x10000, "cpu2", 0)
19731426   ROM_LOAD("cybu3.snd", 0xc000, 0x2000, CRC(a3c1f6e7) SHA1(35a5e828a6f2dd9009e165328a005fa079bad6cb))
19741427   ROM_RELOAD(0xe000, 0x2000)
r249889r249890
19781431/ Cosmic Flash (Flash Gordon Clone)
19791432/-------------------------------*/
19801433ROM_START(cosflash)
1981   ROM_REGION(0x8000, "maincpu", 0)
1434   ROM_REGION(0x10000, "maincpu", 0)
19821435   ROM_LOAD( "cf2d.532", 0x1000, 0x0800, CRC(939e941d) SHA1(889862043f351762e8c866aefb36a9ea75cbf828))
19831436   ROM_CONTINUE( 0x5000, 0x0800)
19841437   ROM_LOAD( "cf6d.532", 0x1800, 0x0800, CRC(7af93d2f) SHA1(2d939b14f7fe79f836e12926f44b70037630cd3f) )
19851438   ROM_CONTINUE( 0x5800, 0x0800)
1986   ROM_RELOAD( 0x7000, 0x1000)
1439   ROM_RELOAD( 0xf000, 0x1000)
19871440   ROM_REGION(0x10000, "cpu2", 0)
19881441   ROM_LOAD("834-20_2.532", 0xc000, 0x1000, CRC(2f8ced3e) SHA1(ecdeb07c31c22ec313b55774f4358a9923c5e9e7))
19891442   ROM_LOAD("834-18_5.532", 0xf000, 0x1000, CRC(8799e80e) SHA1(f255b4e7964967c82cfc2de20ebe4b8d501e3cb0))
r249889r249890
20131466/ Mystic Star
20141467/-------------------------------*/
20151468ROM_START(myststar)
2016   ROM_REGION(0x8000, "maincpu", 0)
1469   ROM_REGION(0x10000, "maincpu", 0)
20171470   ROM_LOAD( "rom1.bin", 0x1000, 0x0800, CRC(9a12dc91) SHA1(8961c22b2aeabac04d36d124f283409e11faee8a))
20181471   ROM_LOAD( "rom2.bin", 0x5000, 0x0800, CRC(888ee5ae) SHA1(d99746c7c9a9a0a83b4bc15473fe9ebd3b02ffe4))
20191472   ROM_LOAD( "rom3.bin", 0x5800, 0x0800, CRC(9e0a4619) SHA1(82065b74d39ba932704514e83d432262d360f1e1))
2020   ROM_RELOAD( 0x7800, 0x0800)
1473   ROM_RELOAD( 0xf800, 0x0800)
20211474   ROM_REGION(0x0020, "sound1", 0)
20221475   ROM_LOAD( "snd.123", 0x0000, 0x0020, NO_DUMP)
20231476ROM_END
r249889r249890
20261479/ New Wave (Black Pyramid Clone)
20271480/-------------------------------*/
20281481ROM_START(newwave)
2029   ROM_REGION(0x8000, "maincpu", 0)
1482   ROM_REGION(0x10000, "maincpu", 0)
20301483   ROM_LOAD( "blkp2732.u2", 0x1000, 0x0800, CRC(600535b0) SHA1(33d080f4430ad9c33ee9de1bfbb5cfde50f0776e))
20311484   ROM_CONTINUE( 0x5000, 0x0800)
20321485   ROM_LOAD( "newwu6.532", 0x1800, 0x0800, CRC(ca72a96b) SHA1(efcd8b41bf0c19ebd7db492632e046b348619460) )
20331486   ROM_CONTINUE( 0x5800, 0x0800)
2034   ROM_RELOAD( 0x7000, 0x1000)
1487   ROM_RELOAD( 0xf000, 0x1000)
20351488   ROM_REGION(0x10000, "cpu2", 0)
20361489   ROM_LOAD("newwu4.532", 0x8000, 0x1000, CRC(6f4f2a95) SHA1(a7a375827c0429b8b3d2ee9e471f557152492993))
20371490   ROM_RELOAD(0x9000, 0x1000)
r249889r249890
20551508/ Saturn 2 (Spy Hunter Clone)
20561509/-------------------------------*/
20571510ROM_START(saturn2)
2058   ROM_REGION(0x8000, "maincpu", 0)
1511   ROM_REGION(0x10000, "maincpu", 0)
20591512   ROM_LOAD( "spy-2732.u2", 0x1000, 0x0800, CRC(9e930f2d) SHA1(fb48ce0d8d8f8a695827c0eea57510b53daa7c39))
20601513   ROM_CONTINUE( 0x5000, 0x0800)
20611514   ROM_LOAD( "saturn2.u6", 0x1800, 0x0800, CRC(ca72a96b) SHA1(efcd8b41bf0c19ebd7db492632e046b348619460) )
20621515   ROM_CONTINUE( 0x5800, 0x0800)
2063   ROM_RELOAD( 0x7000, 0x1000)
1516   ROM_RELOAD( 0xf000, 0x1000)
20641517   ROM_REGION(0x10000, "cpu2", 0)
20651518   ROM_LOAD("spy_u4.532", 0x8000, 0x1000, CRC(a43887d0) SHA1(6bbc55943fa9f0cd97f946767f21652e19d85265))
20661519   ROM_RELOAD(0x9000, 0x1000)
r249889r249890
20801533/ Space Hawks (Cybernaut Clone)
20811534/-------------------------------*/
20821535ROM_START(spacehaw)
2083   ROM_REGION(0x8000, "maincpu", 0)
1536   ROM_REGION(0x10000, "maincpu", 0)
20841537   ROM_LOAD( "cybe2732.u2g", 0x1000, 0x0800, CRC(d4a5e2f6) SHA1(841e940632993919a68c905546f533ff38a0ce31))
20851538   ROM_CONTINUE( 0x5000, 0x0800)
20861539   ROM_LOAD( "spacehaw.u6", 0x1800, 0x0800, CRC(b154a3a3) SHA1(d632c5eddd0582ba2ca778ab03e11ca3f6f4e1ed) )
20871540   ROM_CONTINUE( 0x5800, 0x0800)
2088   ROM_RELOAD( 0x7000, 0x1000)
1541   ROM_RELOAD( 0xf000, 0x1000)
20891542   ROM_REGION(0x10000, "cpu2", 0)
20901543   ROM_LOAD("cybu3.snd", 0xc000, 0x2000, CRC(a3c1f6e7) SHA1(35a5e828a6f2dd9009e165328a005fa079bad6cb))
20911544   ROM_RELOAD(0xe000, 0x2000)
r249889r249890
21031556/ Tiger Rag (Kings Of Steel Clone)
21041557/-------------------------------*/
21051558ROM_START(tigerrag)
2106   ROM_REGION(0x8000, "maincpu", 0)
2107   ROM_LOAD("tigerrag.mpu", 0x6000, 0x2000, CRC(3eb389ba) SHA1(bdfdcf00f4a2200d39d7e469fe633e0b7b8f1676))
2108   ROM_COPY("maincpu", 0x6000, 0x1000,0x0800)
2109   ROM_COPY("maincpu", 0x6800, 0x5000,0x0800)
2110   ROM_COPY("maincpu", 0x7000, 0x1800,0x0800)
2111   ROM_COPY("maincpu", 0x7800, 0x5800,0x0800)
1559   ROM_REGION(0x10000, "maincpu", 0)
1560   ROM_LOAD("tigerrag.mpu", 0xe000, 0x2000, CRC(3eb389ba) SHA1(bdfdcf00f4a2200d39d7e469fe633e0b7b8f1676))
1561   ROM_COPY("maincpu", 0xe000, 0x1000,0x0800)
1562   ROM_COPY("maincpu", 0xe800, 0x5000,0x0800)
1563   ROM_COPY("maincpu", 0xf000, 0x1800,0x0800)
1564   ROM_COPY("maincpu", 0xf800, 0x5800,0x0800)
21121565   ROM_REGION(0x10000, "cpu2", 0)
21131566   ROM_LOAD("kngsu4.snd", 0x8000, 0x1000, CRC(f3e4d2f6) SHA1(93f4e9e1348b1225bc02db38c994e3338afb175c))
21141567   ROM_RELOAD(0x9000, 0x1000)
r249889r249890
21271580/ 301/Bulls Eye
21281581/-------------------------------*/
21291582ROM_START(bullseye)
2130   ROM_REGION(0x8000, "maincpu", 0)   // Actually seems to have an address mask of 0x3fff
2131   ROM_LOAD("bull.u2", 0x2000, 0x1000, CRC(a2951aa2) SHA1(f9c0826c5d1d6d904286678ed90de3850a13b5f4))
2132   ROM_LOAD("bull.u6", 0x3000, 0x1000, CRC(64d4b9c4) SHA1(bf4d0671372fd3a445c4c7330b9849171ca8048c))
2133   ROM_RELOAD( 0x7000, 0x1000)
1583   ROM_REGION(0x10000, "maincpu", 0)
1584   ROM_LOAD("bull.u2", 0x2000, 0x0800, CRC(a2951aa2) SHA1(f9c0826c5d1d6d904286678ed90de3850a13b5f4))
1585   ROM_CONTINUE( 0x2800, 0x0800)
1586   ROM_LOAD("bull.u6", 0x3000, 0x0800, CRC(64d4b9c4) SHA1(bf4d0671372fd3a445c4c7330b9849171ca8048c))
1587   ROM_CONTINUE( 0x3800, 0x0800)
1588   ROM_RELOAD( 0xf000, 0x1000)
21341589   ROM_REGION(0x10000, "cpu2", 0)
21351590   ROM_LOAD("bull.snd", 0x8000, 0x0800, CRC(c0482a2f) SHA1(a6aa698ad517cdc078129d702ee936af576260ed))
21361591   ROM_RELOAD(0x8800, 0x0800)
r249889r249890
21411596/ World Defender
21421597/-------------------------------*/
21431598ROM_START(worlddef)
2144   ROM_REGION(0x8000, "maincpu", 0)
2145   ROM_LOAD("worlddef.764", 0x1000, 0x0800, CRC(ad1a7ba3) SHA1(d799b6d1cd252cd6d9fb72586099c43de7c22a00))
2146   ROM_CONTINUE( 0x5000, 0x0800)
2147   ROM_CONTINUE( 0x1800, 0x0800)
2148   ROM_CONTINUE( 0x5800, 0x0800)
2149   ROM_COPY("maincpu", 0x5800, 0x7800,0x0800)
1599   ROM_REGION(0x10000, "maincpu", 0)
1600   ROM_LOAD("worlddef.764", 0xe000, 0x2000, CRC(ad1a7ba3) SHA1(d799b6d1cd252cd6d9fb72586099c43de7c22a00))
1601   ROM_COPY("maincpu", 0xe000, 0x1000,0x0800)
1602   ROM_COPY("maincpu", 0xe800, 0x5000,0x0800)
1603   ROM_COPY("maincpu", 0xf000, 0x1800,0x0800)
1604   ROM_COPY("maincpu", 0xf800, 0x5800,0x0800)
21501605   ROM_REGION(0x10000, "cpu2", 0)
21511606   ROM_LOAD("wodefsnd.764", 0xc000, 0x2000, CRC(b8d4dc20) SHA1(5aecac4a2deb7ea8e0ff0600ea459ef272dcd5f0))
21521607   ROM_RELOAD(0xe000, 0x2000)
r249889r249890
21571612/-------------------------------*/
21581613ROM_START(darkshad)
21591614   ROM_REGION(0x10000, "maincpu", 0)
2160   ROM_LOAD("cpu_u7.bin", 0x1000, 0x0800, CRC(8d04c546) SHA1(951e75d9867b85a0bf9f04fe9aa647a53b6830bc))
2161   ROM_CONTINUE( 0x1800, 0x0800)
2162   ROM_CONTINUE( 0x5000, 0x0800)
2163   ROM_CONTINUE( 0x5800, 0x0800)
2164   ROM_COPY("maincpu", 0x5800, 0xf800,0x0800)
1615   ROM_LOAD("cpu_u7.bin", 0xe000, 0x2000, CRC(8d04c546) SHA1(951e75d9867b85a0bf9f04fe9aa647a53b6830bc))
1616   ROM_COPY("maincpu", 0xe000, 0x1000,0x0800)
1617   ROM_COPY("maincpu", 0xe800, 0x1800,0x0800)
1618   ROM_COPY("maincpu", 0xf000, 0x5000,0x0800)
1619   ROM_COPY("maincpu", 0xf800, 0x5800,0x0800)
21651620   ROM_REGION(0x10000, "cpu2", 0)
21661621   ROM_LOAD("bp_u4.532", 0x8000, 0x1000, CRC(57978b4a) SHA1(4995837790d81b02325d39b548fb882a591769c5))
21671622   ROM_RELOAD(0x9000, 0x1000)
r249889r249890
23291784/ Big Ball Bowling (Bowler)
23301785/-------------------------------*/
23311786ROM_START(bbbowlin)
2332   ROM_REGION(0x8000, "maincpu", 0)
1787   ROM_REGION(0x10000, "maincpu", 0)
23331788   ROM_LOAD( "cpu_u2.716", 0x1000, 0x0800, CRC(179e0c69) SHA1(7921839d2014a00b99ce7c44b325ea4403df9eea))
23341789   ROM_LOAD( "cpu_u6.716", 0x1800, 0x0800, CRC(7b48e45b) SHA1(ac32292ef593bf8350e8bbc41113b6c1cb78a79e))
2335   ROM_RELOAD( 0x7800, 0x0800)
1790   ROM_RELOAD( 0xf800, 0x0800)
23361791ROM_END
23371792
23381793/*----------------------------
23391794/ Stars & Strikes (Bowler)
23401795/----------------------------*/
23411796ROM_START(monrobwl)
2342   ROM_REGION(0x8000, "maincpu", 0)
1797   ROM_REGION(0x10000, "maincpu", 0)
23431798   ROM_LOAD( "cpu_u1.716", 0x1000, 0x0800, CRC(42592cc9) SHA1(22452072199c4b82a413065f8dfe235a39fe3825))
23441799   ROM_LOAD( "cpu_u5.716", 0x1800, 0x0800, CRC(78e2dcd2) SHA1(7fbe9f7adc69af5afa489d9fd953640f3466de3f))
23451800   ROM_LOAD( "cpu_u2.716", 0x5000, 0x0800, CRC(73534680) SHA1(d5233a9d4600fa28b767ee1a251ed1a1ffbaf9c4))
23461801   ROM_LOAD( "cpu_u6.716", 0x5800, 0x0800, CRC(ad77d719) SHA1(f8f8d0d183d639d19fea552d35a7be3aa7f07c17))
2347   ROM_RELOAD( 0x7800, 0x0800)
1802   ROM_RELOAD( 0xf800, 0x0800)
23481803ROM_END
23491804
23501805/*-----------------------------------------------------------------------------------------------
23511806/ Midnight Marauders (Gun game) different hardware, not a pinball, to be moved to its own driver
23521807/------------------------------------------------------------------------------------------------*/
23531808ROM_START(mdntmrdr)
2354   ROM_REGION(0x8000, "maincpu", 0)
1809   ROM_REGION(0x10000, "maincpu", 0)
23551810   ROM_LOAD( "mdru2.532", 0x1000, 0x0800, CRC(f72668bc) SHA1(25b984e1828905190c73c359ee6c9858ed1b2224))
23561811   ROM_CONTINUE( 0x5000, 0x0800)
23571812   ROM_LOAD( "mdru6.732", 0x1800, 0x0800, CRC(ff55fb57) SHA1(4a44fc8732c8cbce38c9605c7958b02a6bc95da1))
23581813   ROM_CONTINUE( 0x5800, 0x0800)
2359   ROM_RELOAD( 0x7000, 0x1000)
1814   ROM_RELOAD( 0xf000, 0x1000)
23601815   ROM_REGION(0x10000, "cpu2", 0)
23611816   ROM_LOAD("u3.bin", 0xd000, 0x1000, CRC(3ba474e4) SHA1(4ee5c3ad2c9dca49e9394521506e97a95e3d9a17))
23621817   ROM_LOAD("u5.bin", 0xf000, 0x1000, CRC(3ab40e35) SHA1(63b2ee074e5993a2616e67d3383bc3d3ac51b400))
r249889r249890
23661821/ Black Beauty (Shuffle)
23671822/----------------------------*/
23681823ROM_START(blbeauty)
2369   ROM_REGION(0x8000, "maincpu", 0)
1824   ROM_REGION(0x10000, "maincpu", 0)
23701825   ROM_LOAD( "cpu_u1.716", 0x1000, 0x0800, CRC(e2550957) SHA1(e445548b650fec5d593ca7da587300799ef94991))
23711826   ROM_LOAD( "cpu_u5.716", 0x1800, 0x0800, CRC(70fcd9f7) SHA1(ca5c2ea09f45f5ba50526880c158aaac61f007d5))
23721827   ROM_LOAD( "cpu_u2.716", 0x5000, 0x0800, CRC(3f55d17f) SHA1(e6333e53570fb05a841a7f141872c8bd14143f9c))
23731828   ROM_LOAD( "cpu_u6.716", 0x5800, 0x0800, CRC(842cd307) SHA1(8429d84e8bc4343b437801d0236150e04de79b75))
2374   ROM_RELOAD( 0x7800, 0x0800)
1829   ROM_RELOAD( 0xf800, 0x0800)
23751830ROM_END
23761831
23771832/*--------------------------------
23781833/ Super Bowl (X's & O's Clone)
23791834/-------------------------------*/
23801835ROM_START(suprbowl)
2381   ROM_REGION(0x8000, "maincpu", 0)
1836   ROM_REGION(0x10000, "maincpu", 0)
23821837   ROM_LOAD( "sbowlu2.732", 0x1000, 0x0800, CRC(bc497a13) SHA1(f428373bde72f0302c45c326aebbe56e8b09c2d6))
23831838   ROM_CONTINUE( 0x5000, 0x0800)
23841839   ROM_LOAD( "sbowlu6.732", 0x1800, 0x0800, CRC(a9c92719) SHA1(972da0cf87863b637b88575c329f1d8162098d6f))
23851840   ROM_CONTINUE( 0x5800, 0x0800)
2386   ROM_RELOAD( 0x7000, 0x1000)
1841   ROM_RELOAD( 0xf000, 0x1000)
23871842   ROM_REGION(0x10000, "cpu2", 0)
23881843   ROM_LOAD("720_u3.snd", 0xc000, 0x2000, CRC(5d8e2adb) SHA1(901a26f5e598386295a1298ee3a634941bd58b3e))
23891844   ROM_RELOAD(0xe000, 0x2000)
23901845ROM_END
23911846
23921847// AS-2888 sound
2393GAME( 1979, sst,        0,        as2888, by35,    by35_state, by35_6,  ROT0, "Bally", "Supersonic", MACHINE_IS_SKELETON_MECHANICAL)
2394GAMEL(1978, playboy,    0,        as2888, playboy, by35_state, playboy, ROT0, "Bally", "Playboy", MACHINE_MECHANICAL, layout_by35_playboy)
2395GAME( 1978, lostwrlp,   0,        as2888, by35,    by35_state, by35_6,  ROT0, "Bally", "Lost World", MACHINE_IS_SKELETON_MECHANICAL)
2396GAME( 1978, smman,      0,        as2888, by35,    by35_state, by35_6,  ROT0, "Bally", "Six Million Dollar Man", MACHINE_IS_SKELETON_MECHANICAL)
2397GAME( 1978, voltan,     0,        as2888, by35,    by35_state, by35_6,  ROT0, "Bally", "Voltan Escapes Cosmic Doom", MACHINE_IS_SKELETON_MECHANICAL)
2398GAME( 1979, startrep,   0,        as2888, by35,    by35_state, by35_6,  ROT0, "Bally", "Star Trek (Pinball)", MACHINE_IS_SKELETON_MECHANICAL)
2399GAME( 1979, kiss,       0,        as2888, by35,    by35_state, by35_6,  ROT0, "Bally", "Kiss", MACHINE_IS_SKELETON_MECHANICAL)
2400GAME( 1979, hglbtrtr,   0,        as2888, by35,    by35_state, by35_6,  ROT0, "Bally", "Harlem Globetrotters On Tour", MACHINE_IS_SKELETON_MECHANICAL)
2401GAME( 1979, dollyptn,   0,        as2888, by35,    by35_state, by35_6,  ROT0, "Bally", "Dolly Parton", MACHINE_IS_SKELETON_MECHANICAL)
2402GAME( 1979, paragon,    0,        as2888, by35,    by35_state, by35_6,  ROT0, "Bally", "Paragon", MACHINE_IS_SKELETON_MECHANICAL)
1848GAME( 1979, sst,        0,        by35, by35, by35_state, by35_6, ROT0, "Bally", "Supersonic", MACHINE_IS_SKELETON_MECHANICAL)
1849GAME( 1978, playboy,    0,        by35, by35, by35_state, by35_6, ROT0, "Bally", "Playboy", MACHINE_IS_SKELETON_MECHANICAL)
1850GAME( 1978, lostwrlp,   0,        by35, by35, by35_state, by35_6, ROT0, "Bally", "Lost World", MACHINE_IS_SKELETON_MECHANICAL)
1851GAME( 1978, smman,      0,        by35, by35, by35_state, by35_6, ROT0, "Bally", "Six Million Dollar Man", MACHINE_IS_SKELETON_MECHANICAL)
1852GAME( 1978, voltan,     0,        by35, by35, by35_state, by35_6, ROT0, "Bally", "Voltan Escapes Cosmic Doom", MACHINE_IS_SKELETON_MECHANICAL)
1853GAME( 1979, startrep,   0,        by35, by35, by35_state, by35_6, ROT0, "Bally", "Star Trek (Pinball)", MACHINE_IS_SKELETON_MECHANICAL)
1854GAME( 1979, kiss,       0,        by35, by35, by35_state, by35_6, ROT0, "Bally", "Kiss", MACHINE_IS_SKELETON_MECHANICAL)
1855GAME( 1979, hglbtrtr,   0,        by35, by35, by35_state, by35_6, ROT0, "Bally", "Harlem Globetrotters On Tour", MACHINE_IS_SKELETON_MECHANICAL)
1856GAME( 1979, dollyptn,   0,        by35, by35, by35_state, by35_6, ROT0, "Bally", "Dolly Parton", MACHINE_IS_SKELETON_MECHANICAL)
1857GAME( 1979, paragon,    0,        by35, by35, by35_state, by35_6, ROT0, "Bally", "Paragon", MACHINE_IS_SKELETON_MECHANICAL)
24031858
24041859// AS-3022 sound
24051860GAME( 1980, ngndshkr,   0,        by35, by35, by35_state, by35_6, ROT0, "Bally", "Nitro Ground Shaker", MACHINE_IS_SKELETON_MECHANICAL)
r249889r249890
24201875GAME( 1983, granslam,   0,        by35, by35, by35_state, by35_7, ROT0, "Bally", "Grand Slam", MACHINE_IS_SKELETON_MECHANICAL)
24211876GAME( 1983, granslam4,  granslam, by35, by35, by35_state, by35_7, ROT0, "Bally", "Grand Slam (4 Players)", MACHINE_IS_SKELETON_MECHANICAL)
24221877GAME( 1983, goldball,   0,        by35, by35, by35_state, by35_7, ROT0, "Bally", "Gold Ball (set 1)", MACHINE_IS_SKELETON_MECHANICAL)
2423GAME( 1983, goldballn,  goldball, by35, by35, by35_state, by35_7, ROT0, "Bally", "Gold Ball (Field Service Upgrade)", MACHINE_IS_SKELETON_MECHANICAL)
1878GAME( 1983, goldballn,  goldball, by35, by35, by35_state, by35_7, ROT0, "Bally / Oliver", "Gold Ball (set 2)", MACHINE_IS_SKELETON_MECHANICAL)
24241879
24251880// Squawk & Talk sound
24261881GAME( 1981, flashgdn,   0,        by35, by35, by35_state, by35_7, ROT0, "Bally", "Flash Gordon", MACHINE_IS_SKELETON_MECHANICAL)
r249889r249890
24491904GAME( 1985, cybrnaut,   0,        by35, by35, by35_state, by35_7, ROT0, "Bally", "Cybernaut", MACHINE_IS_SKELETON_MECHANICAL)
24501905
24511906// Other manufacturers
2452GAME( 1984, suprbowl,   xsandos,  by35,  by35, by35_state, by35_7, ROT0, "Bell Games", "Super Bowl", MACHINE_IS_SKELETON_MECHANICAL)
2453GAME( 1984, tigerrag,   kosteel,  by35,  by35, by35_state, by35_7, ROT0, "Bell Games", "Tiger Rag", MACHINE_IS_SKELETON_MECHANICAL)
2454GAME( 1985, cosflash,   flashgdn, by35,  by35, by35_state, by35_7, ROT0, "Bell Games", "Cosmic Flash", MACHINE_IS_SKELETON_MECHANICAL)
2455GAME( 1985, newwave,    blakpyra, by35,  by35, by35_state, by35_7, ROT0, "Bell Games", "New Wave", MACHINE_IS_SKELETON_MECHANICAL)
2456GAME( 1985, saturn2,    spyhuntr, by35,  by35, by35_state, by35_7, ROT0, "Bell Games", "Saturn 2", MACHINE_IS_SKELETON_MECHANICAL)
2457GAME( 1985, worlddef,   0,        by35,  by35, by35_state, by35_7, ROT0, "Bell Games", "World Defender", MACHINE_IS_SKELETON_MECHANICAL)
2458GAME( 1986, spacehaw,   cybrnaut, by35,  by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Space Hawks", MACHINE_IS_SKELETON_MECHANICAL)
2459GAME( 1986, darkshad,   0,        nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Dark Shadow", MACHINE_IS_SKELETON_MECHANICAL)
2460GAME( 1986, skflight,   0,        nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Skill Flight", MACHINE_IS_SKELETON_MECHANICAL)
2461GAME( 1987, cobrap,     0,        nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Cobra", MACHINE_IS_SKELETON_MECHANICAL)
2462GAME( 1987, futrquen,   0,        nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Future Queen", MACHINE_IS_SKELETON_MECHANICAL)
2463GAME( 1987, f1gpp,      0,        nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "F1 Grand Prix", MACHINE_IS_SKELETON_MECHANICAL)
2464GAME( 1988, toppin,     0,        nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Top Pin", MACHINE_IS_SKELETON_MECHANICAL)
2465GAME( 1988, uboat65,    0,        nuovo, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "U-boat 65", MACHINE_IS_SKELETON_MECHANICAL)
2466GAME( 1986, bullseye,   0,        by35,  by35, by35_state, by35_7, ROT0, "Grand Products", "301/Bullseye", MACHINE_IS_SKELETON_MECHANICAL)
2467GAME( 1988, bbbowlin,   0,        by35,  by35, by35_state, by35_7, ROT0, "United", "Big Ball Bowling (Bowler)", MACHINE_IS_SKELETON_MECHANICAL)
2468GAME( 1988, monrobwl,   0,        by35,  by35, by35_state, by35_7, ROT0, "Monroe Bowling Co.", "Stars & Strikes (Bowler)", MACHINE_IS_SKELETON_MECHANICAL)
2469GAME( 1984, mdntmrdr,   0,        by35,  by35, by35_state, by35_6, ROT0, "Bally Midway", "Midnight Marauders (Gun game)", MACHINE_IS_SKELETON_MECHANICAL)
2470GAME( 1988, blbeauty,   0,        by35,  by35, by35_state, by35_7, ROT0, "Stern", "Black Beauty (Shuffle)", MACHINE_IS_SKELETON_MECHANICAL)
2471GAME( 1984, myststar,   0,        by35,  by35, by35_state, by35_6, ROT0, "Zaccaria", "Mystic Star", MACHINE_IS_SKELETON_MECHANICAL)
1907GAME( 1984, suprbowl,   xsandos,  by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Super Bowl", MACHINE_IS_SKELETON_MECHANICAL)
1908GAME( 1984, tigerrag,   kosteel,  by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Tiger Rag", MACHINE_IS_SKELETON_MECHANICAL)
1909GAME( 1985, cosflash,   flashgdn, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Cosmic Flash", MACHINE_IS_SKELETON_MECHANICAL)
1910GAME( 1985, newwave,    blakpyra, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "New Wave", MACHINE_IS_SKELETON_MECHANICAL)
1911GAME( 1985, saturn2,    spyhuntr, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Saturn 2", MACHINE_IS_SKELETON_MECHANICAL)
1912GAME( 1985, worlddef,   0,        by35, by35, by35_state, by35_7, ROT0, "Bell Games", "World Defender", MACHINE_IS_SKELETON_MECHANICAL)
1913GAME( 1986, spacehaw,   cybrnaut, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Space Hawks", MACHINE_IS_SKELETON_MECHANICAL)
1914GAME( 1986, darkshad,   0,        by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Dark Shadow", MACHINE_IS_SKELETON_MECHANICAL)
1915GAME( 1986, skflight,   0,        by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Skill Flight", MACHINE_IS_SKELETON_MECHANICAL)
1916GAME( 1987, cobrap,     0,        by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Cobra", MACHINE_IS_SKELETON_MECHANICAL)
1917GAME( 1987, futrquen,   0,        by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Future Queen", MACHINE_IS_SKELETON_MECHANICAL)
1918GAME( 1987, f1gpp,      0,        by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "F1 Grand Prix", MACHINE_IS_SKELETON_MECHANICAL)
1919GAME( 1988, toppin,     0,        by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Top Pin", MACHINE_IS_SKELETON_MECHANICAL)
1920GAME( 1988, uboat65,    0,        by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "U-boat 65", MACHINE_IS_SKELETON_MECHANICAL)
1921GAME( 1986, bullseye,   0,        by35, by35, by35_state, by35_7, ROT0, "Grand Products", "301/Bullseye", MACHINE_IS_SKELETON_MECHANICAL)
1922GAME( 1988, bbbowlin,   0,        by35, by35, by35_state, by35_7, ROT0, "United", "Big Ball Bowling (Bowler)", MACHINE_IS_SKELETON_MECHANICAL)
1923GAME( 1988, monrobwl,   0,        by35, by35, by35_state, by35_7, ROT0, "Monroe Bowling Co.", "Stars & Strikes (Bowler)", MACHINE_IS_SKELETON_MECHANICAL)
1924GAME( 1984, mdntmrdr,   0,        by35, by35, by35_state, by35_6, ROT0, "Bally Midway", "Midnight Marauders (Gun game)", MACHINE_IS_SKELETON_MECHANICAL)
1925GAME( 1988, blbeauty,   0,        by35, by35, by35_state, by35_7, ROT0, "Stern", "Black Beauty (Shuffle)", MACHINE_IS_SKELETON_MECHANICAL)
1926GAME( 1984, myststar,   0,        by35, by35, by35_state, by35_6, ROT0, "Zaccaria", "Mystic Star", MACHINE_IS_SKELETON_MECHANICAL)
trunk/src/mame/drivers/camplynx.c
r249889r249890
44
55      Camputers Lynx
66
7      2009-05 Skeleton driver.
8      2015-10-23 Working
7      05/2009 Skeleton driver.
98
109      The Lynx was an 8-bit British home computer that was first released
1110      in early 1983 as a 48 kB model.
r249889r249890
6362
6463
6564
66    48k and 96k are basically the same machine. 128k is different. Most software for
67    one won't work properly on the other, due to major hardware differences.
65    48k and 96k are basically the same machine. 128k is different.
6866
6967    This computer is weird, because it allows reads and writes from multiple banks
7068    at the same time. We can write to multiple banks, but we must limit ourselves
r249889r249890
8381    - Cassette tapes made on 128k are a different speed to 48k tapes. To load a 128k
8482      tape on a 48k system, enter TAPE 3 before loading. (2,3,4,5 all seem to work).
8583    - When loading, there's no wildcard; you must specify the name.
86    - INT should be activated by the MC6845 CURS pin, but this doesn't happen. Using
87      VSYNC instead. Required for CP/M to boot.
88    - Info about disks:
89      - You must firstly do XROM to initialise the DOS ROM.
90      - Then do EXT DIR with a Lynx-formatted disk, or EXT BOOT with a CP/M disk.
91      - Then, on a Lynx-formatted disk, do EXT LOAD "name" or EXT MLOAD "name".
84    - INT should be activated by the MC6845 CURS pin (inverted), or by holding down
85      the BREAK key. However, the rom leaves interrupts disabled, so none of this works.
9286
9387    To Do:
88    - Need disk-based software (only ones found are LDF format)
89    - finish memory banking
90    - disk (only partially done)
9491    - printer
9592    - joysticks
96    - UART type COM8017 (48k,96k only) (not used by any programs)
97    - There's a few games that are not perfectly perfect, but it runs at least
98      as well as any other Lynx emulator.
99
93    - UART type COM8017
94    Bugs:
95    - YNXVADERS: Top row of invaders is missing and can't be killed, but they
96      continue to fire at you. This makes the game unwinnable.
10097    Game bugs (reproducible in Jynx):
10198    - 3D Monster Craze: When attacked, garbage on screen
10299    - 3D Monster Craze: When you find the key, the game freezes
103    - YNXVADERS: Colours of top 2 rows of invaders should be white and yellow
104      but they show as magenta and red. After game ends, title screen has wrong
105      colours.
100    - LogiChess: unable to enter an acceptable move
101    - Power Blaster: Bad Tape
106102
107      Game Hints:
108      Most games have instructions or are quite obvious.
109      - Power Blaster. Using debug.exe, change byte 1965 from FE to F2 to fix
110        the loading. Then, arrows to turn, Shift to clean out a whole row of dots.
111        You can then move into the vacated areas. Even though it says you have
112        3 lives, you actually only have 1.
113      - Backgammon. This is just the instructions. The game is missing.
114      - LogiChess. The page at http://www.nascomhomepage.com/games/logichess.html
115        should provide enough clues to enable you to work out how to play.
116
117103****************************************************************************/
118104
119105#include "emu.h"
r249889r249890
124110#include "sound/wave.h"
125111#include "formats/camplynx_cas.h"
126112#include "machine/wd_fdc.h"
127#include "formats/camplynx_dsk.h"
128113
129114class camplynx_state : public driver_device
130115{
r249889r249890
142127      , m_floppy1(*this, "fdc:1")
143128   { }
144129
130   // 48k
145131   DECLARE_WRITE8_MEMBER(bank1_w);
132   DECLARE_WRITE8_MEMBER(bank5_w);
146133   DECLARE_WRITE8_MEMBER(bank6_w);
134   DECLARE_WRITE8_MEMBER(bank7_w);
135   DECLARE_WRITE8_MEMBER(bank8_w);
147136   DECLARE_WRITE8_MEMBER(port58_w); // drive select etc
148137   DECLARE_WRITE8_MEMBER(port7f_w); // banking 48k
149138   DECLARE_READ8_MEMBER(port80_r); // cassin for 48k
r249889r249890
151140   DECLARE_READ8_MEMBER(port82_r); // cassin for 128k
152141   DECLARE_WRITE8_MEMBER(port82_w); // banking 128k
153142   DECLARE_WRITE8_MEMBER(port84_w); // dac port 48k
154   DECLARE_INPUT_CHANGED_MEMBER(brk_key);
155143   DECLARE_MACHINE_RESET(lynx48k);
156144   DECLARE_MACHINE_RESET(lynx128k);
157145   DECLARE_DRIVER_INIT(lynx48k);
158146   DECLARE_DRIVER_INIT(lynx128k);
159   DECLARE_FLOPPY_FORMATS(camplynx_floppy_formats);
160147   MC6845_UPDATE_ROW(lynx48k_update_row);
161148   MC6845_UPDATE_ROW(lynx128k_update_row);
162149   required_device<palette_device> m_palette;
r249889r249890
213200         membank("bankr5")->set_entry(0);
214201         membank("bankr6")->set_entry(1);
215202         membank("bankr7")->set_entry(2);
216         membank("bankr8")->set_entry(7);
203         membank("bankr8")->set_entry(3);
217204         break;
218205      case 0x20:
219206      case 0x24:
r249889r249890
226213         membank("bankr5")->set_entry(12);
227214         membank("bankr6")->set_entry(13);
228215         membank("bankr7")->set_entry(14);
229         membank("bankr8")->set_entry(BIT(m_port58, 4) ? 15 : 7);
216         membank("bankr8")->set_entry(15);
230217         break;
231218      case 0x30:
232219      case 0x34:
r249889r249890
248235         membank("bankr3")->set_entry(26);
249236         membank("bankr4")->set_entry(27);
250237         membank("bankr5")->set_entry(28);
251         membank("bankr6")->set_entry(29);
238         membank("bankr6")->set_entry(28);
252239         membank("bankr7")->set_entry(30);
253         membank("bankr8")->set_entry(31);
240         membank("bankr8")->set_entry(30);
254241         break;
255242      case 0x40:
256243      case 0x60:
r249889r249890
263250         membank("bankr3")->set_entry(18);
264251         membank("bankr4")->set_entry(19);
265252         membank("bankr5")->set_entry(20);
266         membank("bankr6")->set_entry(21);
253         membank("bankr6")->set_entry(20);
267254         membank("bankr7")->set_entry(22);
268         membank("bankr8")->set_entry(23);
255         membank("bankr8")->set_entry(22);
269256         break;
270257      case 0x54:
271258      case 0x74:
r249889r249890
274261         membank("bankr3")->set_entry(2);
275262         membank("bankr4")->set_entry(27);
276263         membank("bankr5")->set_entry(28);
277         membank("bankr6")->set_entry(29);
264         membank("bankr6")->set_entry(28);
278265         membank("bankr7")->set_entry(30);
279         membank("bankr8")->set_entry(31);
266         membank("bankr8")->set_entry(30);
280267         break;
281268      case 0x50:
282269      case 0x70:
r249889r249890
289276         membank("bankr3")->set_entry(2);
290277         membank("bankr4")->set_entry(19);
291278         membank("bankr5")->set_entry(20);
292         membank("bankr6")->set_entry(21);
279         membank("bankr6")->set_entry(20);
293280         membank("bankr7")->set_entry(22);
294         membank("bankr8")->set_entry(23);
281         membank("bankr8")->set_entry(22);
295282         break;
296283      default:
297284         printf("Banking code %X not handled\n", m_bankdata);
r249889r249890
332319         membank("bankr8")->set_entry(7);
333320         break;
334321      case 0x02:
322      case 0x06:
335323      case 0x0a:
324      case 0x0e:
336325         membank("bankr1")->set_entry(8);
337326         membank("bankr2")->set_entry(9);
338327         membank("bankr3")->set_entry(10);
r249889r249890
356345         membank("bankr8")->set_entry(BIT(m_port58, 4) ? 15 : 7);
357346         break;
358347      case 0x04:
359      case 0x06:
360348      case 0x0c:
361      case 0x0e:
362349         membank("bankr1")->set_entry(16);
363350         membank("bankr2")->set_entry(17);
364351         membank("bankr3")->set_entry(18);
r249889r249890
410397   AM_RANGE(0x2000,0x3fff) AM_READ_BANK("bankr2")
411398   AM_RANGE(0x4000,0x5fff) AM_READ_BANK("bankr3")
412399   AM_RANGE(0x6000,0x7fff) AM_READ_BANK("bankr4")
413   AM_RANGE(0x8000,0x9fff) AM_READ_BANK("bankr5")
414   AM_RANGE(0xa000,0xbfff) AM_READ_BANK("bankr6")
415   AM_RANGE(0xc000,0xdfff) AM_READ_BANK("bankr7")
416   AM_RANGE(0xe000,0xffff) AM_READ_BANK("bankr8")
417   AM_RANGE(0x0000,0xffff) AM_WRITE(bank6_w)
400   AM_RANGE(0x8000,0x9fff) AM_READ_BANK("bankr5") AM_WRITE(bank5_w)
401   AM_RANGE(0xa000,0xbfff) AM_READ_BANK("bankr6") AM_WRITE(bank6_w)
402   AM_RANGE(0xc000,0xdfff) AM_READ_BANK("bankr7") AM_WRITE(bank7_w)
403   AM_RANGE(0xe000,0xffff) AM_READ_BANK("bankr8") AM_WRITE(bank8_w)
404   AM_RANGE(0x0000,0x7fff) AM_WRITE(bank1_w)
418405ADDRESS_MAP_END
419406
420407static ADDRESS_MAP_START( lynx128k_mem, AS_PROGRAM, 8, camplynx_state )
r249889r249890
486473static INPUT_PORTS_START( lynx48k )
487474   PORT_START("LINE0")
488475   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
489   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27) PORT_CHANGED_MEMBER(DEVICE_SELF, camplynx_state, brk_key, 0)
476   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27)
490477   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
491478   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
492479   PORT_BIT(0x0e, IP_ACTIVE_LOW, IPT_UNUSED)
r249889r249890
562549   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Delete") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
563550INPUT_PORTS_END
564551
565INPUT_CHANGED_MEMBER( camplynx_state::brk_key )
566{
567   m_maincpu->set_input_line(0, newval ? CLEAR_LINE : ASSERT_LINE);
568}
569
570552WRITE8_MEMBER( camplynx_state::bank1_w )
571553{
572554   if BIT(m_wbyte, 0)
r249889r249890
579561      m_p_ram[offset+0x40000] = data;
580562}
581563
564WRITE8_MEMBER( camplynx_state::bank5_w )
565{
566   if BIT(m_wbyte, 0)
567      m_p_ram[offset+0x18000] = data;
568   if ((m_wbyte & 0x22) == 0x02)
569      m_p_ram[offset+0x28000] = data;
570   if ((m_wbyte & 0x44) == 0x04)
571      m_p_ram[offset+0x38000] = data;
572}
573
582574WRITE8_MEMBER( camplynx_state::bank6_w )
583575{
584576   if BIT(m_wbyte, 0)
585      m_p_ram[offset+0x10000] = data;
577      m_p_ram[offset+0x1a000] = data;
578   if ((m_wbyte & 0x22) == 0x02)
579      m_p_ram[offset+0x28000] = data;
580   if ((m_wbyte & 0x44) == 0x04)
581      m_p_ram[offset+0x38000] = data;
582}
586583
587   offset &= 0x5fff;
588
584WRITE8_MEMBER( camplynx_state::bank7_w )
585{
586   if BIT(m_wbyte, 0)
587      m_p_ram[offset+0x1c000] = data;
589588   if ((m_wbyte & 0x22) == 0x02)
590   {
591      m_p_ram[offset | 0x20000] = data;
592      m_p_ram[offset | 0x22000] = data;
593      m_p_ram[offset | 0x28000] = data;
594      m_p_ram[offset | 0x2a000] = data;
595   }
589      m_p_ram[offset+0x2c000] = data;
590   if ((m_wbyte & 0x44) == 0x04)
591      m_p_ram[offset+0x3c000] = data;
592}
596593
594WRITE8_MEMBER( camplynx_state::bank8_w )
595{
596   if BIT(m_wbyte, 0)
597      m_p_ram[offset+0x1e000] = data;
598   if ((m_wbyte & 0x22) == 0x02)
599      m_p_ram[offset+0x2c000] = data;
597600   if ((m_wbyte & 0x44) == 0x04)
598   {
599      m_p_ram[offset | 0x30000] = data;
600      m_p_ram[offset | 0x32000] = data;
601      m_p_ram[offset | 0x38000] = data;
602      m_p_ram[offset | 0x3a000] = data;
603   }
601      m_p_ram[offset+0x3c000] = data;
604602}
605603
606604READ8_MEMBER( camplynx_state::port80_r )
r249889r249890
759757      else
760758         port7f_w(space, 0, m_bankdata);
761759   }
760   m_fdc->dden_w(BIT(data, 7));
762761
763762   floppy_image_device *floppy = NULL;
764763   if ((data & 3) == 0) floppy = m_floppy0->get_device();
r249889r249890
774773   m_floppy1->get_device()->mon_w(BIT(data, 3));
775774}
776775
777FLOPPY_FORMATS_MEMBER( camplynx_state::camplynx_floppy_formats )
778   FLOPPY_CAMPLYNX_FORMAT
779FLOPPY_FORMATS_END
780776
781777static SLOT_INTERFACE_START( camplynx_floppies )
782778   SLOT_INTERFACE( "drive0", FLOPPY_525_QD )
r249889r249890
795791MACHINE_CONFIG_END
796792
797793static MACHINE_CONFIG_FRAGMENT( lynx_disk )
798   MCFG_FD1793_ADD("fdc", XTAL_24MHz / 24)
799   MCFG_FLOPPY_DRIVE_ADD("fdc:0", camplynx_floppies, "drive0", camplynx_state::camplynx_floppy_formats)
794   MCFG_FD1793_ADD("fdc", XTAL_24MHz / 3) // no idea what crystal, no schematic of fdc found
795   MCFG_FLOPPY_DRIVE_ADD("fdc:0", camplynx_floppies, "drive0", floppy_image_device::default_floppy_formats)
800796   MCFG_FLOPPY_DRIVE_SOUND(true)
801   MCFG_FLOPPY_DRIVE_ADD("fdc:1", camplynx_floppies, "drive1", camplynx_state::camplynx_floppy_formats)
797   MCFG_FLOPPY_DRIVE_ADD("fdc:1", camplynx_floppies, "drive1", floppy_image_device::default_floppy_formats)
802798   MCFG_FLOPPY_DRIVE_SOUND(true)
803799MACHINE_CONFIG_END
804800
r249889r249890
831827   MCFG_MC6845_SHOW_BORDER_AREA(false)
832828   MCFG_MC6845_CHAR_WIDTH(8)
833829   MCFG_MC6845_UPDATE_ROW_CB(camplynx_state, lynx48k_update_row)
834   MCFG_MC6845_OUT_VSYNC_CB(DEVWRITELINE("maincpu", z80_device, irq_line))
830   MCFG_MC6845_OUT_CUR_CB(DEVWRITELINE("maincpu", z80_device, irq_line))
835831MACHINE_CONFIG_END
836832
837833static MACHINE_CONFIG_DERIVED( lynx96k, lynx48k )
r249889r249890
871867   MCFG_MC6845_SHOW_BORDER_AREA(false)
872868   MCFG_MC6845_CHAR_WIDTH(8)
873869   MCFG_MC6845_UPDATE_ROW_CB(camplynx_state, lynx128k_update_row)
874   MCFG_MC6845_OUT_VSYNC_CB(DEVWRITELINE("maincpu", z80_device, irq_line))
870   MCFG_MC6845_OUT_CUR_CB(DEVWRITELINE("maincpu", z80_device, irq_line))
875871
876872   MCFG_FRAGMENT_ADD(lynx_disk)
877873MACHINE_CONFIG_END
r249889r249890
936932/* Driver */
937933/*    YEAR  NAME       PARENT     COMPAT   MACHINE    INPUT    CLASS            INIT         COMPANY     FULLNAME     FLAGS */
938934COMP( 1983, lynx48k,   0,         0,       lynx48k,   lynx48k, camplynx_state,  lynx48k,  "Camputers",  "Lynx 48k", 0 )
939COMP( 1983, lynx96k,   lynx48k,   0,       lynx96k,   lynx48k, camplynx_state,  lynx48k,  "Camputers",  "Lynx 96k", 0 )
940COMP( 1983, lynx128k,  lynx48k,   0,       lynx128k,  lynx48k, camplynx_state,  lynx128k, "Camputers",  "Lynx 128k", 0 )
935COMP( 1983, lynx96k,   lynx48k,   0,       lynx96k,   lynx48k, camplynx_state,  lynx48k,  "Camputers",  "Lynx 96k",   MACHINE_NOT_WORKING)
936COMP( 1983, lynx128k,  lynx48k,   0,       lynx128k,  lynx48k, camplynx_state,  lynx128k, "Camputers",  "Lynx 128k",  MACHINE_NOT_WORKING)
trunk/src/mame/drivers/cat.c
r249889r249890
33/***************************************************************************
44
55    Canon Cat, Model V777
6    IAI Swyft Model P0001
67    Copyright (C) 2009-2013 Miodrag Milanovic and Jonathan Gevaryahu AKA Lord Nightmare
78    With information and help from John "Sandy" Bumgarner, Dwight Elvey,
89    Charles Springer, Terry Holmes, Jonathan Sand, Aza Raskin and others.
r249889r249890
111112which is fairly close but may actually be too SHORT compared to the real thing.
112113
113114
115Swyft versions:
116There are at least 4 variants of machines called 'swyft':
117* The earliest desktop units which use plexi or rubber-tooled case and an
118  angled monitor; about a dozen were made and at least two of clear plexi.
119  These are sometimes called "wrinkled" swyfts. 5.25" drive, they may be able
120  to read Apple2 Swyftware/Swyftdisk and Swyftcard-created disks.
121  It is possible no prototypes of this type got beyond the 'runs forth console only' stage.
122  http://archive.computerhistory.org/resources/access/physical-object/2011/09/102746929.01.01.lg.JPG
123  http://www.digibarn.com/collections/systems/swyft/Swyft-No2-05-1271.jpg
124  http://www.digibarn.com/friends/jef-raskin/slides/iai/A%20-687%20SWYFTPRO.JPG
125* The early "flat cat" or "roadkill" portable LCD screen units with a white
126  case and just a keyboard. Model SP0001
127  http://www.digibarn.com/collections/systems/swyft/Image82.jpg
128* The later "ur-cat" desktop units which use a machine tooled case and look
129  more or less like the canon cat. Around 100-200 were made. 3.5" drive.
130  These have a fully functional EDDE editor as the cat does, and can even compile
131  forth programs.
132  (the 'swyft' driver is based on one of these)
133* The very late portable LCD units with a dark grey case and a row of hotkey
134  buttons below the screen. Not dumped yet. At least one functional prototype exists.
135  At least one plastic mockup exists with no innards.
136  http://www.digibarn.com/collections/systems/swyft/swyft.jpg
137
114138Canon Cat versions:
115139There is really only one version of the cat which saw wide release, the US version.
116140* It is possible a very small number of UK/European units were released as a test.
r249889r249890
137161X2: 3.579545Mhz, used by the DTMF generator chip AMI S2579 at IC40
138162X3: 2.4576Mhz, used by the modem chip AMI S35213 at IC37
139163
164IAI Swyft:
165Board name: 950-0001C
166"INFORMATION APPLIANCE INC. COPYRIGHT 1985"
167 _________________|||||||||___________________________________________________________________________________
168|                     J8               [=======J3=======]  ____                              Trans-           |
169==                                                        /    \  (E2)                       former           |
170==Jx                   74LS107   J5                       |PB1 |        uA339     MC3403                 -----|
171|                                          7407           \____/                                         J7   =
172| Y1       "TIMING B" 74LS132    74LS175                                                                 -----|
173|                                                  ____________                            4N37  Relay   -----|
174| TMS4256   74LS161  "DECODE E" "DISK 3.5C"       |            |                                         J6   =
175|                                                 |  MC6850P   |                                         -----|
176| TMS4256   74LS166   74HCT259   74LS299          '------------'        MC3403    MC3403                 _____|
177|                      ___________________     ___________________             ||                       |     =
178| TMS4256   74LS373   |                   |   |                   |            J2                       | J1  =
179|                     |   MC68008P8       |   |       R6522P      |            ||              I   P R  |     =
180| TMS4256   74F153    '-------------------'   '-------------------'     MN4053 || MN4053       N   R E  | B   =
181|                                    (E1)                                                      D   O S  | R   =
182| TMS4256   74F153    74HCT08     __________   ___________________      MC14412   DS1489       U E T I  | E   =
183|                                |          | |                   | ||                         C S E S  | A   =
184| TMS4256   74F153    74HC4040E  | AM27256  | |       R6522P      | ||                         T D C T  | K   =
185|                                '----------' '-------------------' ||  INFORMATION            O   T O  | O   =
186| TMS4256   74F153    "VIDEO 2B" .----------.                       J4  APPLIANCE INC.         R   I R  | U   =
187|                                | AM27256  |   74HC02     74HC374  ||  Copyright 1985         S   O S  | T   =
188| TMS4256   74F153    74LS393  B1|__________|                       ||  UM95089  Y2                N    |     =
189|_____________________________[________J9___]__________________________________________________D13______|_____=
140190
191*Devices of interest:
192J1: breakout of joystick, serial/rs232, hex-keypad, parallel port, and forth switch (and maybe cassette?) pins
193    DIL 60 pin 2-row right-angle rectangular connector with metal shield contact;
194    not all 60 pins are populated in the connector, only pins 1-6, 8, 13-15, 17-18, 23-30, 35-60 are present
195    (traced partly by dwight)
196J2: unpopulated 8-pin sip header, serial/rs232-related?
197    (vcc ? ? ? ? ? ? gnd) (random guess: txd, rxd, rts, cts, dsr, dtr, and one pin could be cd/ri though the modem circuit may do that separately?)
198J3: Floppy Connector
199    (standard DIL 34 pin 2-row rectangular connector for mini-shugart/pc floppy cable; pin 2 IS connected somewhere and ?probably? is used for /DISKCHANGE like on an Amiga, with pin 34 being /TRUEREADY?)
200    (as opposed to normal ibm pc 3.5" drives where pin 2 is unconnected or is /DENSITY *input to drive*, and pin 34 is /DISKCHANGE)
201J4: 18-pin sip header for keyboard ribbon cable; bottom edge of board is pin 1
202    Pins:
203    1: GND through 220k resistor r78
204    2: ? phone hook related? anode of diode d7; one of the pins of relay k2; topmost (boardwise) pin of transistor Q10
205    3: 74HCT34 pin
206
207J5: locking-tab-type "CONN HEADER VERT 4POS .100 TIN" connector for supplying power
208    through a small cable with a berg connector at the other end, to the floppy drive
209    (5v gnd gnd 12v)
210J6: Phone connector, rj11 jack
211J7: Line connector, rj11 jack
212J8: 9-pin Video out/power in connector "CONN RECEPT 6POS .156 R/A PCB" plus "CONN RECEPT 3POS .156 R/A PCB" acting as one 9-pin connector
213    (NC ? ? ? NC NC ? 12v 5v) (video, vsync, hsync and case/video-gnd are likely here)
214    (the video pinout of the cat is: (Video Vsync Hsync SyncGnd PwrGnd PwrGnd +5v(VCC) +12v(VDD) -12v(VEE)) which is not the same as the swyft.
215J9: unpopulated DIL 40-pin straight connector for a ROM debug/expansion/RAM-shadow daughterboard
216    the pins after pin 12 connect to that of the ROM-LO 27256 pinout counting pins 1,28,2,27,3,26,etc
217    the ROM-HI rom has a different /HICE pin which is not connected to this connector
218    /LOCE is a15
219    /HICE is !a15
220    /ROM_OE comes from pin 14 of DECODE_E pal, and is shorted to /ROM_OE' by the cuttable jumper B1 which is not cut
221    /ROM_OE' goes to the two EPROMS
222    DECODE_18 is DECODE_E pal pin 18
223    pin 1 (GND) is in the lower left and the pins count low-high then to the right
224    (gnd N/C   E_CLK     R/W    /ROM_OE a17 vcc a14 a13 a8 a9 a11 /ROM_OE' a10 a15 d7 d6 d5 d4 d3 )
225    (GND /IPL1 DECODE_18 /RESET gnd     a16 vcc a12 a7  a6 a5 a4  a3       a2  a1  a0 d0 d1 d2 gnd)
226Jx: 4 pin on top side, 6 pin on bottom side edge ?debug? connector (doesn't have a Jx number)
227    (trace me!)
228B1: a cuttable trace on the pcb. Not cut, affects one of the pins on the unpopulated J9 connector only.
229E1: jumper, unknown purpose, not set
230E2: jumper, unknown purpose, not set
231D13: LED
232R6522P (upper): parallel port via
233R6522P (lower): keyboard via
234UM95089: DTMF Tone generator chip (if you read the datasheet this is technically ROM based!)
235Y1: 15.8976Mhz, main clock?
236Y2: 3.579545Mhz, used by the DTMF generator chip UM95089 (connects to pins 7 and 8 of it)
237TMS4256-15NL - 262144 x 1 DRAM
238PB1 - piezo speaker
239
240*Pals:
241"TIMING B" - AMPAL16R4APC (marked on silkscreen "TIMING PAL")
242"DECODE E" - AMPAL16L8PC (marked on silkscreen "DECODE PAL")
243"VIDEO 2B" - AMPAL16R4PC (marked on silkscreen "VIDEO PAL")
244"DISK 3.5C" - AMPAL16R4PC (marked on silkscreen "DISK PAL")
245
246*Deviations from silkscreen:
2474N37 (marked on silkscreen "4N35")
24874F153 (marked on silkscreen "74ALS153")
24974HCT259 is socketed, possibly intended that the rom expansion daughterboard will have a ribbon cable fit in its socket?
250
251
141252ToDo:
142253* Canon Cat
143254- Find the mirrors for the write-only video control register and figure out
r249889r249890
188299- Hook the floppy control register readback up properly, things seem to get
189300  confused.
190301
302
303* Swyft
304- Figure out the keyboard (interrupts are involved? or maybe an NMI on a
305  timer/vblank? It is possible this uses a similar 'keyboard read int'
306  to what the cat does)
307- get the keyboard scanning actually working; the VIAs are going nuts right now.
308- Beeper (on one of the vias?)
309- vblank/hblank stuff
310- Get the 6850 ACIA working for communications
311- Floppy (probably similar to the Cat)
312- Centronics port (attached to one of the VIAs)
313- Joystick port (also likely on a via)
314- Keypad? (also likely on a via done as a grid scan?)
315- Forth button (on the port on the back; keep in mind shift-usefront-space ALWAYS enables forth on a swyft)
316- Multple undumped firmware revisions exist (330 and 331 are dumped)
317
318// 74ls107 @ u18 pin 1 is 68008 /BERR pin
319
320// mc6850 @ u33 pin 2 (RX_DATA) is
321// mc6850 @ u33 pin 3 (RX_CLK) is 6522 @ u35 pin 17 (PB7)
322// mc6850 @ u33 pin 4 (TX_CLK) is 6522 @ u35 pin 17 (PB7)
323// mc6850 @ u33 pin 5 (/RTS) is
324// mc6850 @ u33 pin 6 (TX_DATA) is
325// mc6850 @ u33 pin 7 (/IRQ) is 68008 /IPL1 pin 41
326// mc6850 @ u33 pin 8 (CS0) is 68008 A12 pin 10
327// mc6850 @ u33 pin 9 (CS2) is DECODE E pin 18
328// mc6850 @ u33 pin 10 (CS1) is 68008 /BERR pin 40
329// mc6850 @ u33 pin 11 (RS) is 68008 A0 pin 46
330// mc6850 @ u33 pin 13 (R/W) is 68008 R/W pin 30
331// mc6850 @ u33 pin 14 (E) is 68008 E pin 38
332// mc6850 @ u33 pin 15-22 (D7-D0) are 68008 D7 to D0 pins 20-27
333// mc6850 @ u33 pin 23 (/DCD) is 74hc02 @ u35 pin 1
334// mc6850 @ u33 pin 24 (/CTS) is N/C?
335
336// 6522 @ u34:
337// pin 2 (PA0) :
338// pin 3 (PA1) :
339// pin 4 (PA2) :
340// pin 5 (PA3) :
341// pin 6 (PA4) :
342// pin 7 (PA5) :
343// pin 8 (PA6) :
344// pin 9 (PA7) :
345// pin 10 (PB0) :
346// pin 11 (PB1) :
347// pin 12 (PB2) :
348// pin 13 (PB3) :
349// pin 14 (PB4) :
350// pin 15 (PB5) :
351// pin 16 (PB6) :
352// pin 17 (PB7) :
353// pin 18 (CB1) : ?from/to? Floppy connector j3 pin 8
354// pin 19 (CB2) : ?from/to? 6522 @ u35 pin 16 (PB6)
355// pin 21 (/IRQ) : out to 68008 /IPL1 pin 41
356// pin 22 (R/W) : in from 68008 R/W pin 30
357// pin 23 (/CS2) : in from DECODE E pin 18
358// pin 24 (CS1) : in from 68008 A13 pin 11
359// pin 25 (Phi2) : in from 68008 E pin 38
360// pins 26-33 : in/out from/to 68008 D7 to D0 pins 20-27
361// pin 34 (/RES) : in from 68008 /RESET pin 37 AND 68008 /HALT pin 36
362// pins 35-38 (RS3-RS0) are 68008 A9-A6 pins 7-4
363// pin 39 (CA2) is through inductor L11 and resistor r128 to peripheral connector pin 35 <end minus 26>
364// pin 40 (CA1) is through inductor L30 and resistor r138 to peripheral connector pin 53 <end minus 8>
365
366// 6522 @ u35
367// pin 2 (PA0) :
368// pin 3 (PA1) :
369// pin 4 (PA2) :
370// pin 5 (PA3) :
371// pin 6 (PA4) :
372// pin 7 (PA5) :
373// pin 8 (PA6) :
374// pin 9 (PA7) :
375// pin 10 (PB0) :
376// pin 11 (PB1) : in from 74hc02 @ u36 pin 4
377// pin 12 (PB2) :
378// pin 13 (PB3) :
379// pin 14 (PB4) :
380// pin 15 (PB5) :
381// pin 16 (PB6) : 6522 @ u34 pin 19 (CB2)
382// pin 17 (PB7) : mc6850 @ u33 pins 3 and 4 (RX_CLK, TX_CLK)
383// pin 18 (CB1) : ds1489an @ u45 pin 11
384// pin 19 (CB2) : mn4053b @ u40 pin 11 and mc14412 @ u41 pin 10
385// pin 21 (/IRQ) : out to 68008 /IPL1 pin 41
386// pin 22 (R/W) : in from 68008 R/W pin 30
387// pin 23 (/CS2) : in from DECODE E pin 18
388// pin 24 (CS1) : in from 68008 A14 pin 12
389// pin 25 (Phi2) : in from 68008 E pin 38
390// pins 26-33 : in/out from/to 68008 D7 to D0 pins 20-27
391// pin 34 (/RES) : in from 68008 /RESET pin 37 AND 68008 /HALT pin 36
392// pins 35-38 (RS3-RS0) : in from 68008 A9-A6 pins 7-4
393// pin 39 (CA2) : out to 74HCT34 pin 11 (CLK) (keyboard column latch)
394// pin 40 (CA1) : out? to? ds1489an @ u45 pin 8
395
396// 74hc02 @ u36:
397// pin 1 (Y1) : out to mc6850 @ u33 pin 23 /DCD
398// pin 2 (A1) : in from (2 places: resistor R58 to ua339 @ u38 pin 4 (In1-)) <where does this actually come from? modem offhook?>
399// pin 3 (B1) : in from mn4053b @ u40  pin 10 <probably from rs232>
400// pin 4 (Y2) : out to 6522 @u35 pin 11
401// pin 5 (A2) : in from 4N37 @ u48 pin 5 (output side emitter pin) (tied via R189 to gnd) <ring indicator?>
402// pin 6 (B2) : in from 4N37 @ u48 pin 5 (output side emitter pin) (tied via R189 to gnd) <ring indicator?>
403// pin 8 (B3) :
404// pin 9 (A3) :
405// pin 10 (Y3) :
406// pin 11 (B4) : in from 68008 A15
407// pin 12 (A4) : in from 68008 A15
408// pin 13 (Y4) : out to EPROM @ U31 /CE
409
191410****************************************************************************/
192411
193412// Defines
r249889r249890
226445#include "cpu/m68000/m68000.h"
227446#include "machine/clock.h"
228447#include "machine/mc68681.h"
448#include "machine/6850acia.h"
449#include "machine/6522via.h"
229450#include "machine/nvram.h"
230451#include "sound/speaker.h"
231452#include "bus/centronics/ctronics.h"
r249889r249890
246467      m_duart(*this, "duartn68681"),
247468      m_ctx(*this, "ctx"),
248469      m_ctx_data_out(*this, "ctx_data_out"),
470      m_acia6850(*this, "acia6850"),
471      m_via0(*this, "via6522_0"),
472      m_via1(*this, "via6522_1"),
249473      m_speaker(*this, "speaker"),
250474      m_svram(*this, "svram"), // nvram
251475      m_p_cat_videoram(*this, "p_cat_vram"),
476      m_p_swyft_videoram(*this, "p_swyft_vram"),
252477      m_y0(*this, "Y0"),
253478      m_y1(*this, "Y1"),
254479      m_y2(*this, "Y2"),
r249889r249890
262487
263488   required_device<cpu_device> m_maincpu;
264489   //optional_device<nvram_device> m_nvram;
265   required_device<mc68681_device> m_duart;
266   required_device<centronics_device> m_ctx;
267   required_device<output_latch_device> m_ctx_data_out;
268   required_device<speaker_sound_device> m_speaker;
269   required_shared_ptr<UINT16> m_svram;
270   required_shared_ptr<UINT16> m_p_cat_videoram;
271   required_ioport m_y0;
272   required_ioport m_y1;
273   required_ioport m_y2;
274   required_ioport m_y3;
275   required_ioport m_y4;
276   required_ioport m_y5;
277   required_ioport m_y6;
278   required_ioport m_y7;
279   required_ioport m_dipsw;
490   optional_device<mc68681_device> m_duart; // only cat uses this
491   optional_device<centronics_device> m_ctx;
492   optional_device<output_latch_device> m_ctx_data_out;
493   optional_device<acia6850_device> m_acia6850; // only swyft uses this
494   optional_device<via6522_device> m_via0; // only swyft uses this
495   optional_device<via6522_device> m_via1; // only swyft uses this
496   optional_device<speaker_sound_device> m_speaker;
497   optional_shared_ptr<UINT16> m_svram;
498   optional_shared_ptr<UINT16> m_p_cat_videoram;
499   optional_shared_ptr<UINT8> m_p_swyft_videoram;
500   optional_ioport m_y0;
501   optional_ioport m_y1;
502   optional_ioport m_y2;
503   optional_ioport m_y3;
504   optional_ioport m_y4;
505   optional_ioport m_y5;
506   optional_ioport m_y6;
507   optional_ioport m_y7;
508   optional_ioport m_dipsw;
280509   emu_timer *m_keyboard_timer;
281510   emu_timer *m_6ms_timer;
282511
r249889r249890
284513   DECLARE_MACHINE_RESET(cat);
285514   DECLARE_VIDEO_START(cat);
286515   DECLARE_DRIVER_INIT(cat);
516   DECLARE_MACHINE_START(swyft);
517   DECLARE_MACHINE_RESET(swyft);
518   DECLARE_VIDEO_START(swyft);
287519
288520   UINT32 screen_update_cat(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
521   UINT32 screen_update_swyft(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
289522
290523   DECLARE_WRITE_LINE_MEMBER(cat_duart_irq_handler);
291524   DECLARE_WRITE_LINE_MEMBER(cat_duart_txa);
r249889r249890
314547   DECLARE_READ16_MEMBER(cat_0080_r);
315548   DECLARE_READ16_MEMBER(cat_0000_r);
316549
550   DECLARE_READ8_MEMBER(swyft_d0000);
317551
552   DECLARE_READ8_MEMBER(swyft_via0_r);
553   DECLARE_WRITE8_MEMBER(swyft_via0_w);
554   DECLARE_READ8_MEMBER(via0_pa_r);
555   DECLARE_WRITE8_MEMBER(via0_pa_w);
556   DECLARE_WRITE_LINE_MEMBER(via0_ca2_w);
557   DECLARE_READ8_MEMBER(via0_pb_r);
558   DECLARE_WRITE8_MEMBER(via0_pb_w);
559   DECLARE_WRITE_LINE_MEMBER(via0_cb1_w);
560   DECLARE_WRITE_LINE_MEMBER(via0_cb2_w);
561   DECLARE_WRITE_LINE_MEMBER(via0_int_w);
562
563   DECLARE_READ8_MEMBER(swyft_via1_r);
564   DECLARE_WRITE8_MEMBER(swyft_via1_w);
565   DECLARE_READ8_MEMBER(via1_pa_r);
566   DECLARE_WRITE8_MEMBER(via1_pa_w);
567   DECLARE_WRITE_LINE_MEMBER(via1_ca2_w);
568   DECLARE_READ8_MEMBER(via1_pb_r);
569   DECLARE_WRITE8_MEMBER(via1_pb_w);
570   DECLARE_WRITE_LINE_MEMBER(via1_cb1_w);
571   DECLARE_WRITE_LINE_MEMBER(via1_cb2_w);
572   DECLARE_WRITE_LINE_MEMBER(via1_int_w);
573
574   DECLARE_WRITE_LINE_MEMBER(write_acia_clock);
575
318576   /* gate array 2 has a 16-bit counter inside which counts at 10mhz and
319577      rolls over at FFFF->0000; on roll-over (or likely at FFFF terminal count)
320578      it triggers the KTOBF output. It does this every 6.5535ms, which causes
r249889r249890
8781136   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('\xb1') PORT_CHAR('\xb0') // PORT_CHAR('\\') PORT_CHAR('~')
8791137INPUT_PORTS_END
8801138
1139static INPUT_PORTS_START( swyft )
1140// insert dwight and sandy's swyft keyboard map here once we figure out the byte line order
1141INPUT_PORTS_END
8811142
1143
8821144void cat_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
8831145{
8841146   switch (id)
r249889r249890
10721334   MCFG_NVRAM_ADD_0FILL("nvram")
10731335MACHINE_CONFIG_END
10741336
1337
1338/* Swyft Memory map, based on watching the infoapp roms do their thing:
133968k address map:
1340(a23,a22,a21,a20 lines don't exist on the 68008 so are considered unconnected)
1341a23 a22 a21 a20 a19 a18 a17 a16 a15 a14 a13 a12 a11 a10 a9  a8  a7  a6  a5  a4  a3  a2  a1  a0
1342x   x   x   x   0   0   ?   ?   0   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *        R   ROM-LO (/LOCE is 0, /HICE is 1)
1343x   x   x   x   0   0   ?   ?   1   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *        R   ROM-HI (/LOCE is 1, /HICE is 0)
1344x   x   x   x   0   1   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   a        RW  RAM
1345x   x   x   x   1   1  ?0? ?1?  ?   ?   ?   ?   ?   ?   ?   ?   ?   ?   ?   ?   *   *   *   *        R   ? status of something? floppy?
1346x   x   x   x   1   1  ?1? ?0?  ?   0   0   1   x   x   x   x   x   x   x   x   x   x   x   *        RW  6850 acia @U33, gets 0x55 steadystate and 0x57 written to it to reset it
1347x   x   x   x   1   1  ?1? ?0?  ?   0   1   0   x   x   *   *   *   *   x   x   x   x   x   x        RW  Parallel VIA 0 @ U34
1348x   x   x   x   1   1  ?1? ?0?  ?   1   0   0   x   x   *   *   *   *   x   x   x   x   x   x        RW  Keyboard VIA 1 @ U35
1349              ^               ^               ^               ^               ^
1350
1351*/
1352
1353/* Swyft rom and ram notes:
1354rom:
1355**Vectors:
13560x0000-0x0003: SP boot vector
13570x0004-0x0007: PC boot vector
1358**unknown:
13590x0009-0x00BF: ? table
13600x00C0-0x01DF: ? table
13610x01E0-0x02DF: ? table (may be part of next table)
13620x02E0-0x03DF: ? table
13630x03E0-0x0B3F: int16-packed jump table (expanded to int32s at ram at 0x46000-0x46EC0 on boot)
13640x0B40-0x0E83: ? function index tables?
13650x0E84-0x1544: binary code (purpose?)
13660x1545-0x24CF: ?
1367**Fonts:
13680x24D0-0x254F: ? (likely font 1 width lookup table)
13690x2550-0x2BCF: Font 1 data
13700x2BD0-0x2C4F: ? (likely font 2 width lookup table)
13710x2C50-0x32CF: Font 2 data
1372**unknown?:
13730x32D0-0x360F: String data (and control codes?)
13740x3610-0x364F: ? fill (0x03 0xe8)
13750x3650-0x369F: ? fill (0x03 0x20)
13760x36A0-0x384d: ? forth code?
13770x384e-0x385d: Lookup table for phone keypad
13780x385e-...: ?
1379...-0xC951: ?
13800xC952: boot vector
13810xC952-0xCAAE: binary code (purpose?)
1382    0xCD26-0xCD3B: ?init forth bytecode?
13830xCD3C-0xCEBA: 0xFF fill (unused?)
13840xCEEB-0xFFFE: Forth dictionaries for compiling, with <word> then <3 bytes> afterward? (or before it? most likely afterward)
1385
1386ram: (system dram ranges from 0x40000-0x7FFFF)
13870x40000-0x425CF - the screen display ram
1388(?0x425D0-0x44BA0 - ?unknown (maybe screen ram page 2?))
13890x44DC6 - SP vector
13900x46000-0x46EC0 - jump tables to instructions for ? (each forth word?)
1391
1392
1393on boot:
1394copy/expand packed rom short words 0x3E0-0xB3F to long words at 0x46000-0x46EC0
1395copy 0x24f longwords of zero beyond that up to 0x47800
1396CD26->A5 <?pointer to init stream function?>
139744DC6->A7 <reset SP... why it does this twice, once by the vector and once here, i'm gonna guess has to do with running the code in a debugger or on a development daughterboard like the cat had, where the 68008 wouldn't get explicitly reset>
139844F2A->A6 <?pointer to work ram space?>
1399EA2->A4 <?function>
1400E94->A3 <?function>
1401EAE->A2 <?function>
140241800->D7 <?forth? opcode index base; the '1800' portion gets the opcode type added to it then is multiplied by 4 to produce the jump table offset within the 0x46000-0x46EC0 range>
140346e3c->D4 <?pointer to more work ram space?>
1404CD22->D5 <?pointer to another function?>
1405write 0xFFFF to d0004.l
1406jump to A4(EA2)
1407
1408read first stream byte (which is 0x03) from address pointed to by A5 (which is CD26), inc A5, OR the opcode (0x03) to D7
1409 (Note: if the forth opcodes are in order in the dictionary, then 0x03 is "!char" which is used to read a char from an arbitrary address)
1410copy D7 to A0
1411Add A0 low word to itself
1412Add A0 low word to itself again
1413move the long word from address pointed to by A0 (i.e. the specific opcode's area at the 46xxx part of ram) to A1
1414Jump to A1(11A4)
1415
141611A4: move 41b00 to D0 (select an opcode "page" 1bxx)
1417jump to 118E
1418
1419118E: read next stream byte (in this case, 0x8E) from address pointed to by A5 (which is CD27), inc A5, OR the opcode (0x8e) to D7
1420add to 41b00 in d0, for 41b8E
1421Add A0 low word to itself
1422Add A0 low word to itself again
1423move the long word from address pointed to by A0 (i.e. the specific opcode's area at the 46xxx part of ram) to A1
1424Jump to A1(CD06)
1425
1426CD06: jump to A3 (E94)
1427
1428E94: subtract D5 from A5 (cd28 - cd22 = 0x0006)
1429write 6 to address @A5(44f28) and decrement A5
1430write D4(46e3c) to address @a6(44f26) and decrement a5
1431lea ($2, A1), A5 - i.e. increment A1 by 2, and write that to A5, so write CD06+2=CD08 to A5
1432A1->D5
1433A0->D4
1434read next stream byte (in this case, 0x03) from address pointed to by A5 (which is CD08), inc A5, OR the opcode (0x03) to D7
1435
1436*/
1437
1438static ADDRESS_MAP_START(swyft_mem, AS_PROGRAM, 8, cat_state)
1439   ADDRESS_MAP_UNMAP_HIGH
1440   AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_MIRROR(0xF00000) // 64 KB ROM
1441   AM_RANGE(0x040000, 0x07ffff) AM_RAM AM_MIRROR(0xF00000) AM_SHARE("p_swyft_vram") // 256 KB RAM
1442   AM_RANGE(0x0d0000, 0x0d000f) AM_READ(swyft_d0000) AM_MIRROR(0xF00000) // status of something? reads from d0000, d0004, d0008, d000a, d000e
1443   AM_RANGE(0x0e1000, 0x0e1000) AM_DEVWRITE("acia6850", acia6850_device, control_w) AM_MIRROR(0xF00000) // 6850 ACIA lives here
1444   AM_RANGE(0x0e2000, 0x0e2fff) AM_READWRITE(swyft_via0_r, swyft_via0_w) AM_MIRROR(0xF00000)// io area with selector on a9 a8 a7 a6?
1445   AM_RANGE(0x0e4000, 0x0e4fff) AM_READWRITE(swyft_via1_r, swyft_via1_w) AM_MIRROR(0xF00000)
1446ADDRESS_MAP_END
1447
1448MACHINE_START_MEMBER(cat_state,swyft)
1449{
1450   m_via0->write_ca1(1);
1451   m_via0->write_ca2(1);
1452   m_via0->write_cb1(1);
1453   m_via0->write_cb2(1);
1454
1455   m_via1->write_ca1(1);
1456   m_via1->write_ca2(1);
1457   m_via1->write_cb1(1);
1458   m_via1->write_cb2(1);
1459}
1460
1461MACHINE_RESET_MEMBER(cat_state,swyft)
1462{
1463}
1464
1465VIDEO_START_MEMBER(cat_state,swyft)
1466{
1467}
1468
1469UINT32 cat_state::screen_update_swyft(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
1470{
1471   UINT16 code;
1472   int y, x, b;
1473
1474   int addr = 0;
1475   for (y = 0; y < 242; y++)
1476   {
1477      int horpos = 0;
1478      for (x = 0; x < 40; x++)
1479      {
1480         code = m_p_swyft_videoram[addr++];
1481         for (b = 7; b >= 0; b--)
1482         {
1483            bitmap.pix16(y, horpos++) = (code >> b) & 0x01;
1484         }
1485      }
1486   }
1487   return 0;
1488}
1489
1490READ8_MEMBER( cat_state::swyft_d0000 )
1491{
1492   // wtf is this supposed to be?
1493   UINT8 byte = 0xFF; // ?
1494   logerror("mystery device: read from 0x%5X, returning %02X\n", offset+0xD0000, byte);
1495   return byte;
1496}
1497
1498
1499// if bit is 1 enable: (obviously don't set more than one bit or you get bus contention!)
1500//                                           acia
1501//                                       via0
1502//                                    via1
1503// x   x   x   x   1   1  ?1? ?0?  ?   ^   ^   ^   ?   ?   *   *   *   *  ?*?  ?   ?   ?   ?   ?
1504//                                                         ^   ^   ^   ^  <- these four bits address the VIA registers? is this correct?
1505static const char *const swyft_via_regnames[] = { "0: ORB/IRB", "1: ORA/IRA", "2: DDRB", "3: DDRA", "4: T1C-L", "5: T1C-H", "6: T1L-L", "7: T1L-H", "8: T2C-L" "9: T2C-H", "A: SR", "B: ACR", "C: PCR", "D: IFR", "E: IER", "F: ORA/IRA*" };
1506
1507READ8_MEMBER( cat_state::swyft_via0_r )
1508{
1509   if (offset&0x000C3F) fprintf(stderr,"VIA0: read from invalid offset in 68k space: %06X!\n", offset);
1510   UINT8 data = m_via0->read(space, (offset>>6)&0xF);
1511#ifdef DEBUG_SWYFT_VIA0
1512   logerror("VIA0 register %s read by cpu: returning %02x\n", swyft_via_regnames[(offset>>5)&0xF], data);
1513#endif
1514   return data;
1515}
1516
1517WRITE8_MEMBER( cat_state::swyft_via0_w )
1518{
1519#ifdef DEBUG_SWYFT_VIA0
1520   logerror("VIA0 register %s written by cpu with data %02x\n", swyft_via_regnames[(offset>>5)&0xF], data);
1521#endif
1522   if (offset&0x000C3F) fprintf(stderr,"VIA0: write to invalid offset in 68k space: %06X, data: %02X!\n", offset, data);
1523   m_via1->write(space, (offset>>6)&0xF, data);
1524}
1525
1526READ8_MEMBER( cat_state::swyft_via1_r )
1527{
1528   if (offset&0x000C3F) fprintf(stderr," VIA1: read from invalid offset in 68k space: %06X!\n", offset);
1529   UINT8 data = m_via1->read(space, (offset>>6)&0xF);
1530#ifdef DEBUG_SWYFT_VIA1
1531   logerror(" VIA1 register %s read by cpu: returning %02x\n", swyft_via_regnames[(offset>>5)&0xF], data);
1532#endif
1533   return data;
1534}
1535
1536WRITE8_MEMBER( cat_state::swyft_via1_w )
1537{
1538#ifdef DEBUG_SWYFT_VIA1
1539   logerror(" VIA1 register %s written by cpu with data %02x\n", swyft_via_regnames[(offset>>5)&0xF], data);
1540#endif
1541   if (offset&0x000C3F) fprintf(stderr," VIA1: write to invalid offset in 68k space: %06X, data: %02X!\n", offset, data);
1542   m_via0->write(space, (offset>>6)&0xF, data);
1543}
1544
1545// first via
1546READ8_MEMBER( cat_state::via0_pa_r )
1547{
1548   logerror("VIA0: Port A read!\n");
1549   return 0xFF;
1550}
1551
1552WRITE8_MEMBER( cat_state::via0_pa_w )
1553{
1554   logerror("VIA0: Port A written with data of 0x%02x!\n", data);
1555}
1556
1557WRITE_LINE_MEMBER ( cat_state::via0_ca2_w )
1558{
1559   logerror("VIA0: CA2 written with %d!\n", state);
1560}
1561
1562READ8_MEMBER( cat_state::via0_pb_r )
1563{
1564   logerror("VIA0: Port B read!\n");
1565   return 0xFF;
1566}
1567
1568WRITE8_MEMBER( cat_state::via0_pb_w )
1569{
1570   logerror("VIA0: Port B written with data of 0x%02x!\n", data);
1571}
1572
1573WRITE_LINE_MEMBER ( cat_state::via0_cb1_w )
1574{
1575   logerror("VIA0: CB1 written with %d!\n", state);
1576}
1577
1578WRITE_LINE_MEMBER ( cat_state::via0_cb2_w )
1579{
1580   logerror("VIA0: CB2 written with %d!\n", state);
1581}
1582
1583WRITE_LINE_MEMBER ( cat_state::via0_int_w )
1584{
1585   logerror("VIA0: INT output set to %d!\n", state);
1586}
1587
1588// second via
1589READ8_MEMBER( cat_state::via1_pa_r )
1590{
1591   logerror(" VIA1: Port A read!\n");
1592   return 0xFF;
1593}
1594
1595WRITE8_MEMBER( cat_state::via1_pa_w )
1596{
1597   logerror(" VIA1: Port A written with data of 0x%02x!\n", data);
1598}
1599
1600WRITE_LINE_MEMBER ( cat_state::via1_ca2_w )
1601{
1602   logerror(" VIA1: CA2 written with %d!\n", state);
1603}
1604
1605READ8_MEMBER( cat_state::via1_pb_r )
1606{
1607   logerror(" VIA1: Port B read!\n");
1608   return 0xFF;
1609}
1610
1611WRITE8_MEMBER( cat_state::via1_pb_w )
1612{
1613   logerror(" VIA1: Port B written with data of 0x%02x!\n", data);
1614}
1615
1616WRITE_LINE_MEMBER ( cat_state::via1_cb1_w )
1617{
1618   logerror(" VIA1: CB1 written with %d!\n", state);
1619}
1620
1621WRITE_LINE_MEMBER ( cat_state::via1_cb2_w )
1622{
1623   logerror(" VIA1: CB2 written with %d!\n", state);
1624}
1625
1626WRITE_LINE_MEMBER ( cat_state::via1_int_w )
1627{
1628   logerror(" VIA1: INT output set to %d!\n", state);
1629}
1630
1631WRITE_LINE_MEMBER( cat_state::write_acia_clock )
1632{
1633   m_acia6850->write_txc(state);
1634   m_acia6850->write_rxc(state);
1635}
1636
1637static MACHINE_CONFIG_START( swyft, cat_state )
1638
1639   /* basic machine hardware */
1640   MCFG_CPU_ADD("maincpu",M68008, XTAL_15_8976MHz/2) //MC68008P8, Y1=15.8976Mhz, clock GUESSED at Y1 / 2
1641   MCFG_CPU_PROGRAM_MAP(swyft_mem)
1642
1643   MCFG_MACHINE_START_OVERRIDE(cat_state,swyft)
1644   MCFG_MACHINE_RESET_OVERRIDE(cat_state,swyft)
1645
1646   /* video hardware */
1647   MCFG_SCREEN_ADD("screen", RASTER)
1648   MCFG_SCREEN_REFRESH_RATE(50)
1649   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
1650   MCFG_SCREEN_SIZE(320, 242)
1651   MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 242-1)
1652   MCFG_SCREEN_UPDATE_DRIVER(cat_state, screen_update_swyft)
1653   MCFG_SCREEN_PALETTE("palette")
1654
1655   MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
1656
1657   MCFG_VIDEO_START_OVERRIDE(cat_state,swyft)
1658
1659   MCFG_DEVICE_ADD("acia6850", ACIA6850, 0)
1660   // acia rx and tx clocks come from one of the VIA pins and are tied together, fix this below? acia e clock comes from 68008
1661   MCFG_DEVICE_ADD("acia_clock", CLOCK, (XTAL_15_8976MHz/2)/5) // out e clock from 68008, ~ 10in clocks per out clock
1662   MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(cat_state, write_acia_clock))
1663
1664   MCFG_DEVICE_ADD("via6522_0", VIA6522, (XTAL_15_8976MHz/2)/5) // out e clock from 68008
1665   MCFG_VIA6522_READPA_HANDLER(READ8(cat_state, via0_pa_r))
1666   MCFG_VIA6522_READPB_HANDLER(READ8(cat_state, via0_pb_r))
1667   MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(cat_state, via0_pa_w))
1668   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(cat_state, via0_pb_w))
1669   MCFG_VIA6522_CB1_HANDLER(WRITELINE(cat_state, via0_cb1_w))
1670   MCFG_VIA6522_CA2_HANDLER(WRITELINE(cat_state, via0_ca2_w))
1671   MCFG_VIA6522_CB2_HANDLER(WRITELINE(cat_state, via0_cb2_w))
1672   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(cat_state, via0_int_w))
1673
1674   MCFG_DEVICE_ADD("via6522_1", VIA6522, (XTAL_15_8976MHz/2)/5) // out e clock from 68008
1675   MCFG_VIA6522_READPA_HANDLER(READ8(cat_state, via1_pa_r))
1676   MCFG_VIA6522_READPB_HANDLER(READ8(cat_state, via1_pb_r))
1677   MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(cat_state, via1_pa_w))
1678   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(cat_state, via1_pb_w))
1679   MCFG_VIA6522_CB1_HANDLER(WRITELINE(cat_state, via1_cb1_w))
1680   MCFG_VIA6522_CA2_HANDLER(WRITELINE(cat_state, via1_ca2_w))
1681   MCFG_VIA6522_CB2_HANDLER(WRITELINE(cat_state, via1_cb2_w))
1682   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(cat_state, via1_int_w))
1683MACHINE_CONFIG_END
1684
1685/* ROM definition */
1686ROM_START( swyft )
1687   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
1688   ROM_SYSTEM_BIOS( 0, "v331", "IAI Swyft Version 331 Firmware")
1689   ROMX_LOAD( "331-lo.u30", 0x0000, 0x8000, CRC(d6cc2e2f) SHA1(39ff26c18b1cf589fc48793263f280ef3780cc61), ROM_BIOS(1))
1690   ROMX_LOAD( "331-hi.u31", 0x8000, 0x8000, CRC(4677630a) SHA1(8845d702fa8b8e1a08352f4c59d3076cc2e1307e), ROM_BIOS(1))
1691   /* this version of the swyft code identifies itself at 0x3FCB as version 330 */
1692   ROM_SYSTEM_BIOS( 1, "v330", "IAI Swyft Version 330 Firmware")
1693   ROMX_LOAD( "infoapp.lo.u30", 0x0000, 0x8000, CRC(52c1bd66) SHA1(b3266d72970f9d64d94d405965b694f5dcb23bca), ROM_BIOS(2))
1694   ROMX_LOAD( "infoapp.hi.u31", 0x8000, 0x8000, CRC(83505015) SHA1(693c914819dd171114a8c408f399b56b470f6be0), ROM_BIOS(2))
1695   ROM_REGION( 0x4000, "pals", ROMREGION_ERASEFF )
1696   /* Swyft PALs:
1697    * The Swyft has four PALs, whose rough function can be derived from their names:
1698    * TIMING - state machine for DRAM refresh/access; handles ras/cas and choosing whether the video out shifter or the 68k is accessing ram. also divides clock
1699    * DECODE - address decoder for the 68008
1700    * VIDEO - state machine for the video shifter (and vblank/hblank?)
1701    * DISK 3.5 - state machine for the floppy drive interface
1702    */
1703   /* U9: Timing AMPAL16R4
1704    *
1705    * pins:
1706    * 111111111000000000
1707    * 987654321987654321
1708    * ??QQQQ??EIIIIIIIIC
1709    * |||||||||||||||||\-< /CK input - 15.8976mhz crystal and transistor oscillator
1710    * ||||||||||||||||\--< ?
1711    * |||||||||||||||\---< ?
1712    * ||||||||||||||\----< ?
1713    * |||||||||||||\-----< ?<also input to decode pal pin 1, video pal pin 1, source is ?>
1714    * ||||||||||||\------< ?
1715    * |||||||||||\-------< ?
1716    * ||||||||||\--------< ?
1717    * |||||||||\---------< ?
1718    * ||||||||\----------< /OE input - shorted to GND
1719    * |||||||\-----------? ?
1720    * ||||||\------------? ?
1721    * |||||\------------Q> /ROM_OE (to both eproms through jumper b1 and optionally j9 connector)
1722    * ||||\-------------Q? ?
1723    * |||\--------------Q? ?
1724    * ||\---------------Q> output to decode pal pin 2
1725    * |\----------------->? output? to ram multiplexer 'A' pins
1726    * \------------------< ?
1727    */
1728   ROM_LOAD( "timing_b.ampal16r4a.u9.jed", 0x0000, 0xb08, CRC(643e6e83) SHA1(7db167883f9d6cf385ce496d08976dc16fc3e2c3))
1729   /* U20: Decode AMPAL16L8
1730    *
1731    * pins:
1732    * 111111111000000000
1733    * 987654321987654321
1734    * O??????OIIIIIIIIII
1735    * |||||||||||||||||\-< TIMING PAL pin 5
1736    * ||||||||||||||||\--< TIMING PAL pin 17
1737    * |||||||||||||||\---< 68008 R/W (pin 30)
1738    * ||||||||||||||\----< 68008 /DS (pin 29)
1739    * |||||||||||||\-----< 68008 E (pin 38)
1740    * ||||||||||||\------< 68008 A19
1741    * |||||||||||\-------< 68008 A18
1742    * ||||||||||\--------< 68008 A17
1743    * |||||||||\---------< 68008 A16
1744    * ||||||||\----------< ?
1745    * |||||||\-----------> ?
1746    * ||||||\------------? 68008 /VPA (pin 39)
1747    * |||||\-------------> /ROM_OE (to both eproms through jumper b1 and optionally j9 connector)
1748    * ||||\--------------? ?
1749    * |||\---------------? ?
1750    * ||\----------------? ?
1751    * |\-----------------? goes to j9 connector pin 5
1752    * \------------------< ?
1753    */
1754   ROM_LOAD( "decode_e.ampal16l8.u20.jed", 0x1000, 0xb08, CRC(0b1dbd76) SHA1(08c144ad7a7bbdd53eefd271b2f6813f8b3b1594))
1755   ROM_LOAD( "video_2b.ampal16r4.u25.jed", 0x2000, 0xb08, CRC(caf91148) SHA1(3f8ddcb512a1c05395c74ad9a6ba7b87027ce4ec))
1756   ROM_LOAD( "disk_3.5c.ampal16r4.u28.jed", 0x3000, 0xb08, CRC(fd994d02) SHA1(f910ab16587dd248d63017da1e5b37855e4c1a0c))
1757ROM_END
1758
10751759ROM_START( cat )
10761760   ROM_REGION( 0x40000, "maincpu", ROMREGION_ERASEFF )
10771761   // SYS ROM
r249889r249890
11551839/* Driver */
11561840
11571841/*    YEAR  NAME  PARENT  COMPAT   MACHINE    INPUT    DEVICE         INIT     COMPANY   FULLNAME       FLAGS */
1158COMP( 1987, cat,  0,  0,       cat,       cat,     driver_device, 0,       "Canon",  "Cat", MACHINE_NOT_WORKING)
1842COMP( 1985, swyft,0,      0,       swyft,     swyft,   driver_device, 0,       "Information Applicance Inc", "Swyft", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
1843COMP( 1987, cat,  swyft,  0,       cat,       cat,     driver_device, 0,       "Canon",  "Cat", MACHINE_NOT_WORKING)
trunk/src/mame/drivers/champbas.c
r249889r249890
40407001      8910 control
41418ff0-8fff sprites
4242a000      ?
43a006      MCU HALT control
43a006      MCU HALT controll
4444a007      NOP (MCU shared RAM switch)
4545a060-a06f sprites
4646a080      command for the sound CPU
r249889r249890
8686#include "emu.h"
8787#include "cpu/z80/z80.h"
8888#include "cpu/alph8201/alph8201.h"
89//#include "cpu/hmcs40/hmcs40.h"
9089#include "sound/ay8910.h"
9190#include "sound/dac.h"
9291#include "includes/champbas.h"
r249889r249890
568567
569568/*************************************
570569 *
571 *  Machine drivers
570 *  Machine driver
572571 *
573572 *************************************/
574573
r249889r249890
582581MACHINE_START_MEMBER(champbas_state,exctsccr)
583582{
584583   // FIXME
585   // I dun wanna
586584   machine().scheduler().timer_pulse(attotime::from_hz(75), timer_expired_delegate(FUNC(champbas_state::exctsccr_fm_callback),this)); /* updates fm */
587585
588586   MACHINE_START_CALL_MEMBER(champbas);
r249889r249890
597595
598596INTERRUPT_GEN_MEMBER(champbas_state::vblank_irq)
599597{
600   if (m_irq_mask)
598   if(m_irq_mask)
601599      device.execute().set_input_line(0, ASSERT_LINE);
602600}
603601
r249889r249890
610608   MCFG_CPU_VBLANK_INT_DRIVER("screen", champbas_state,  vblank_irq)
611609
612610   /* MCU */
613   MCFG_CPU_ADD("mcu", ALPHA8201, XTAL_18_432MHz/6/8)
611   MCFG_CPU_ADD(CPUTAG_MCU, ALPHA8201, XTAL_18_432MHz/6/8)
614612   MCFG_CPU_PROGRAM_MAP(mcu_map)
615613
616614   MCFG_MACHINE_START_OVERRIDE(champbas_state,champbas)
r249889r249890
683681   /* basic machine hardware */
684682
685683   /* MCU */
686   MCFG_CPU_ADD("mcu", ALPHA8201, XTAL_18_432MHz/6/8)
684   MCFG_CPU_ADD(CPUTAG_MCU, ALPHA8201, XTAL_18_432MHz/6/8)
687685   MCFG_CPU_PROGRAM_MAP(mcu_map)
688686
689687   /* to MCU timeout champbbj */
r249889r249890
704702   MCFG_CPU_PERIODIC_INT_DRIVER(champbas_state, nmi_line_pulse,  4000) /* 4 kHz, updates the dac */
705703
706704   /* MCU */
707   MCFG_CPU_ADD("mcu", ALPHA8301, XTAL_18_432MHz/6/8)     /* Actually 8302 */
705   MCFG_CPU_ADD(CPUTAG_MCU, ALPHA8301, XTAL_18_432MHz/6/8)     /* Actually 8302 */
708706   MCFG_CPU_PROGRAM_MAP(mcu_map)
709707
710708   MCFG_MACHINE_START_OVERRIDE(champbas_state,exctsccr)
trunk/src/mame/drivers/cosmic.c
r249889r249890
978978static MACHINE_CONFIG_START( cosmic, cosmic_state )
979979
980980   /* basic machine hardware */
981   MCFG_CPU_ADD("maincpu", Z80,Z80_MASTER_CLOCK/6) /* 1.8026 MHz */
981   MCFG_CPU_ADD("maincpu", Z80,Z80_MASTER_CLOCK/6) /* 1.8026 MHz*/
982982
983983   MCFG_MACHINE_START_OVERRIDE(cosmic_state,cosmic)
984984   MCFG_MACHINE_RESET_OVERRIDE(cosmic_state,cosmic)
r249889r249890
10991099static MACHINE_CONFIG_DERIVED( magspot, cosmic )
11001100
11011101   /* basic machine hardware */
1102   MCFG_CPU_REPLACE("maincpu", Z80, Z80_MASTER_CLOCK/4) /* 2.704 MHz, verified via schematics */
1102   MCFG_CPU_MODIFY("maincpu")
11031103   MCFG_CPU_PROGRAM_MAP(magspot_map)
11041104
11051105   /* video hardware */
trunk/src/mame/drivers/dec0.c
r249889r249890
16311631   MCFG_SOUND_MODIFY("ym2")
16321632   MCFG_YM3812_IRQ_HANDLER(WRITELINE(dec0_state, sound_irq))
16331633   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
1634
1635   // bootleg doesn't seem to support row/col scroll (or enable is different)
1636//   MCFG_DEVICE_MODIFY("tilegen1")
1637//   MCFG_BAC06_BOOTLEG_DISABLE_16x16
1638//   MCFG_BAC06_BOOTLEG_DISABLE_RC_SCROLL
1639   MCFG_DEVICE_MODIFY("tilegen2")
1640//   MCFG_BAC06_BOOTLEG_DISABLE_8x8
1641   MCFG_BAC06_BOOTLEG_DISABLE_RC_SCROLL
1642   MCFG_DEVICE_MODIFY("tilegen3")
1643//   MCFG_BAC06_BOOTLEG_DISABLE_8x8
1644   MCFG_BAC06_BOOTLEG_DISABLE_RC_SCROLL
1645
16461634MACHINE_CONFIG_END
16471635
16481636/******************************************************************************/
trunk/src/mame/drivers/ec184x.c
r249889r249890
1818#include "cpu/i86/i86.h"
1919#include "machine/ram.h"
2020
21#define EC1841_MEMBOARD_SIZE   (512*1024)
21#define EC1841_MEMBOARD_SIZE   512*1024
2222
2323#define VERBOSE_DBG 1       /* general debug messages */
2424
r249889r249890
4343
4444   required_device<cpu_device> m_maincpu;
4545
46   DECLARE_MACHINE_RESET(ec1841);
46   DECLARE_MACHINE_RESET(ec184x);
4747   DECLARE_DRIVER_INIT(ec1841);
4848
4949   struct {
r249889r249890
7979   UINT8 data;
8080
8181   data = offset % 4;
82   if (data >= m_memory.boards)
82   if (data > m_memory.boards)
8383      data = 0xff;
8484   else
8585      data = m_memory.enable[data];
86   DBG_LOG(1,"ec1841_memboard",("R (%d of %d) == %02X\n", offset+1, m_memory.boards, data ));
86   DBG_LOG(1,"ec1841_memboard",("R (%d of %d) == %02X\n", offset, m_memory.boards, data ));
8787
8888   return data;
8989}
r249889r249890
9696
9797   current = m_memory.enable[offset];
9898
99   DBG_LOG(1,"ec1841_memboard",("W (%d of %d) <- %02X (%02X)\n", offset+1, m_memory.boards, data, current));
99   DBG_LOG(1,"ec1841_memboard",("W (%d of %d) <- %02X (%02X)\n", offset, m_memory.boards, data, current));
100100
101   if (offset >= m_memory.boards) {
101   if (offset > m_memory.boards) {
102102      return;
103103   }
104104
r249889r249890
140140   address_space &program = m_maincpu->space(AS_PROGRAM);
141141   ram_device *m_ram = machine().device<ram_device>(RAM_TAG);
142142
143   m_memory.boards = m_ram->size()/EC1841_MEMBOARD_SIZE;
144   if (m_memory.boards > 4)
145      m_memory.boards = 4;
143   m_memory.boards = m_ram->size()/EC1841_MEMBOARD_SIZE - 1;
144   if (m_memory.boards > 3)
145      m_memory.boards = 3;
146146
147147   // 640K configuration is special -- 512K board mapped at 0 + 128K board mapped at 512K
148148   // XXX verify this was actually the case
r249889r249890
157157   membank( "bank20" )->set_base( m_ram->pointer() );
158158}
159159
160MACHINE_RESET_MEMBER( ec184x_state, ec1841 )
160MACHINE_RESET_MEMBER( ec184x_state, ec184x )
161161{
162162   memset(m_memory.enable, 0, sizeof(m_memory.enable));
163163   // mark 1st board enabled
r249889r249890
255255   MCFG_CPU_IO_MAP(ec1841_io)
256256   MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
257257
258   MCFG_MACHINE_RESET_OVERRIDE(ec184x_state, ec1841)
258   MCFG_MACHINE_RESET_OVERRIDE(ec184x_state, ec184x)
259259
260260   MCFG_EC1841_MOTHERBOARD_ADD("mb", "maincpu")
261261   MCFG_DEVICE_INPUT_DEFAULTS(ec1841)
trunk/src/mame/drivers/gatron.c
r249889r249890
77
88  Games running on this hardware:
99
10  * Four In One Poker,  1983, Game-A-Tron.
11  * Pull Tabs,          1983, Game-A-Tron.
12  * Bingo,              1983, Game-A-Tron.
10  * Poker 4-1,  1983, Game-A-Tron.
11  * Pull Tabs,  1983, Game-A-Tron.
12  * Bingo,      1983, Game-A-Tron.
1313
1414
1515*****************************************************************************************
r249889r249890
6565
6666
6767  Identified the unknown writes as a init sequence for 1x PSG sound device.
68  Is a SN76489/496 family device, and can't be identified accurately due to
69  almost all devices are plastic covered.
68  The type/class is unknown due to almost all devices are plastic covered.
7069
7170
7271  * PCB 3: BINGO.
r249889r249890
133132  You must to RESET (F3) the machine to initialize the NVRAM properly.
134133
135134  NOTE: These games are intended to be for amusement only.
136  There is not such a payout system, so... Dont ask about it!
135  There is not such a payout system, so...Dont ask about it!
137136
138137
139  * Four In One Poker:
138  * Four in One Poker:
140139
141140  Pressing SERVICE 1 (key 9) you enter the Test/Settings Mode. You can test
142141  inputs there, and change all the game settings. Press "DISCARD 1" (key Z)
r249889r249890
187186  Press "LADY LUCK TICKET" (key X) to play with Lady Luck (center) Ticket.
188187  Press "BIG BAR TICKET" (key C) to play with Big Bar (right) Ticket.
189188
190  A curiosity...
191 
192  The Pull Tabs flyer shows the following paytable:
193189
194  - Super Star -      - Lady Luck -         - Big Bar -
195   3x Stars  75     3x Oranges     100     3x Bars     75
196   3x Hearts  8     3x Watermelons  25     3x Cherries 10
197   3x Cups    4     3x Horseshoes   10     3x Pears     6
198   3x Clubs   3     3x Licquors      5     3x Plums     4
199   3x Crowns  1     3x Bells         2     3x Bananas   2
200
201  ...but the game seems to have inverted objects importance:
202 
203  - Super Star -      - Lady Luck -         - Big Bar -
204   3x Crowns 75     3x Bells       100     3x Bananas  75
205   3x Clubs   8     3x Licquors     25     3x Plums    10
206   3x Cups    4     3x Horseshoes   10     3x Pears     6
207   3x Hearts  3     3x Watermelons   5     3x Cherries  4
208   3x Stars   1     3x Oranges       2     3x Bars      2
209 
210  Can't get an input or combination of them that change this logic.
211  Maybe the paytable is different in this set, or just the flyer doesn't
212  reflect the real thing.
213
214
215190  * Bingo:
216191
217192  Pressing SERVICE 1 (key 9) you enter the Test/Settings Mode. You can test
r249889r249890
269244
270245  DRIVER UPDATES:
271246
272  [2015-10-22]
273  - Added siren/alarm input to Pull Tabs, and beeps/alarm input
274     to Four In One Poker. All these are present in the Test Mode.
275     However, their functions aren't clear.
276  - Switched the PSG to SN76489, since it's present in the Bingo PCB.
277  - Added technical notes and more documentation.
278
279247  [2014-02-04]
280248  - Added Bingo (1983). PCB seems bootleg, but the game looks legit.
281249  - Worked from the scratch a whole set of inputs and button-lamps support for this game.
282  - Changed the poker41 description to Four In One Poker (as seen in the official brochure).
250  - Changed the poker41 description to Four in One Poker (as seen in the official brochure).
283251  - Added game and technical notes.
284252
285253  [2008-10-14]
r249889r249890
447415   AM_RANGE(0x0000, 0x5fff) AM_ROM
448416   AM_RANGE(0x6000, 0x63ff) AM_RAM_WRITE(gat_videoram_w) AM_SHARE("videoram")
449417   AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")                          /* battery backed RAM */
450   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("snsnd", sn76489_device, write)       /* PSG */
418   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("snsnd", sn76496_device, write)       /* PSG */
451419   AM_RANGE(0xe000, 0xe000) AM_WRITE(output_port_0_w)                         /* lamps */
452420ADDRESS_MAP_END
453421
r249889r249890
466434   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )  PORT_NAME("Discard 4")
467435   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_BET )   PORT_NAME("Bet / Ante")
468436   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )  PORT_NAME("Deal / Hit")
469   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )        PORT_IMPULSE(2)
437   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
470438   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_STAND ) PORT_NAME("Free Bonus Draw / Stand")
471439   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )       PORT_NAME("Start")
472440   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )  PORT_NAME("Discard 5 / High / Double Down")
473441   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )  PORT_NAME("Discard 3")
474442
475443   PORT_START("IN1")
476   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 )     PORT_NAME("Service 3 (Trigger bips/alarm in Test Mode)") PORT_CODE(KEYCODE_8)
444   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
477445   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )  PORT_NAME("Discard 2")
478446   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )  PORT_NAME("Service 2 (Test Mode Out / Coin Stuck)")
479   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )      /* Payout? */
447   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* Payout? */
480448   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
481449   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Service 1 (Test/Settings)")
482450   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
r249889r249890
486454static INPUT_PORTS_START( pulltabs )
487455   PORT_START("IN0")
488456   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
489   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Ante") PORT_CODE(KEYCODE_1)
457   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Ante") PORT_CODE(KEYCODE_1)
490458   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
491   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )    PORT_IMPULSE(2) /* Coin A */
459   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )  PORT_IMPULSE(2) /* Coin A */
492460   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
493461   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
494   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON4 )  PORT_NAME("Big Bar Ticket") PORT_CODE(KEYCODE_C)
495   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 )  PORT_NAME("Lady Luck Ticket") PORT_CODE(KEYCODE_X)
462   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Big Bar Ticket") PORT_CODE(KEYCODE_C)
463   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Lady Luck Ticket") PORT_CODE(KEYCODE_X)
496464
497465   PORT_START("IN1")
498   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Service 3 (Trigger siren/alarm in Test Mode)") PORT_CODE(KEYCODE_8)
466   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
499467   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
500468   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Service 2 (Test Mode Out / Coin Stuck)") PORT_CODE(KEYCODE_0)
501469   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
r249889r249890
510478   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
511479   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Ante") PORT_CODE(KEYCODE_1)                // bet/ante
512480   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Change Game / High") PORT_CODE(KEYCODE_C)  // change game (lucky game X-L-T-C-N-U) / change values in settings.
513   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )  PORT_IMPULSE(2)                                       // coin in
481   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )  PORT_IMPULSE(2)                                        // coin in
514482   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Change Card / Low")  PORT_CODE(KEYCODE_Z)  // change card / move down in settings
515483   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Start") PORT_CODE(KEYCODE_X)               // start
516484   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
517485   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
518486
519487   PORT_START("IN1")
520   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Service 3 (Trigger beeps/alarm in Test Mode)") PORT_CODE(KEYCODE_8)
488   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Service 3 (Trigger beeps in Test Mode)") PORT_CODE(KEYCODE_8) // beeps in test-settings mode
521489   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
522490   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Service 2 (Test Mode Out / Coin Stuck)") PORT_CODE(KEYCODE_0) // exit test-settings mode
523491   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
r249889r249890
589557
590558   /* sound hardware */
591559   MCFG_SPEAKER_STANDARD_MONO("mono")
592   MCFG_SOUND_ADD("snsnd", SN76489, MASTER_CLOCK/8 )   // Present in Bingo PCB. Clock need to be verified.
560   MCFG_SOUND_ADD("snsnd", SN76496, MASTER_CLOCK/8 )   /* 2 MHz, guess */
593561   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.00)
594562MACHINE_CONFIG_END
595563
r249889r249890
635603*************************/
636604
637605/*     YEAR  NAME      PARENT  MACHINE  INPUT      STATE           INIT  ROT    COMPANY         FULLNAME             FLAGS  LAYOUT   */
638GAMEL( 1983, poker41,  0,      gat,     poker41,   driver_device,  0,    ROT0, "Game-A-Tron",  "Four In One Poker",  0,     layout_poker41  )
606GAMEL( 1983, poker41,  0,      gat,     poker41,   driver_device,  0,    ROT0, "Game-A-Tron",  "Four in One Poker",  0,     layout_poker41  )
639607GAMEL( 1983, pulltabs, 0,      gat,     pulltabs,  driver_device,  0,    ROT0, "Game-A-Tron",  "Pull Tabs",          0,     layout_pulltabs )
640608GAMEL( 1983, bingo,    0,      gat,     bingo,     driver_device,  0,    ROT0, "Game-A-Tron",  "Bingo",              0,     layout_bingo  )
trunk/src/mame/drivers/ibmpcjr.c
r249889r249890
117117   m_pc_int_delay_timer = timer_alloc(TIMER_IRQ_DELAY);
118118   m_pcjr_watchdog = timer_alloc(TIMER_WATCHDOG);
119119   m_keyb_signal_timer = timer_alloc(TIMER_KB_SIGNAL);
120   membank( "bank10" )->set_base( m_ram->pointer() );
121120}
122121
123122void pcjr_state::machine_reset()
trunk/src/mame/drivers/imds2.c
r249889r249890
172172   m_ioctimer(*this , "ioctimer"),
173173   m_iocfdc(*this , "iocfdc"),
174174   m_flop0(*this, "iocfdc:0"),
175   m_flop1(*this, "iocfdc:1"),
175176   m_iocpio(*this , "iocpio"),
176177   m_kbcpu(*this , "kbcpu"),
177178   m_palette(*this , "palette"),
r249889r249890
551552   }
552553}
553554
555int imds2_state::floppy_load(floppy_image_device *dev)
556{
557   dev->mon_w(0);
558   return IMAGE_INIT_PASS;
559}
560
561void imds2_state::floppy_unload(floppy_image_device *dev)
562{
563   dev->mon_w(1);
564}
565
554566void imds2_state::driver_start()
555567{
556568   // Allocate 64k for IPC RAM
r249889r249890
566578
567579void imds2_state::machine_start()
568580{
569        m_iocfdc->set_ready_line_connected(true);
581   // As far as I can tell from the schmatic, there's no software motor control
582   m_flop0->get_device()->setup_load_cb(floppy_image_device::load_cb(FUNC(imds2_state::floppy_load), this));
583   m_flop0->get_device()->setup_unload_cb(floppy_image_device::unload_cb(FUNC(imds2_state::floppy_unload), this));
584   m_flop1->get_device()->setup_load_cb(floppy_image_device::load_cb(FUNC(imds2_state::floppy_load), this));
585   m_flop1->get_device()->setup_unload_cb(floppy_image_device::unload_cb(FUNC(imds2_state::floppy_unload), this));
570586}
571587
572588void imds2_state::video_start()
r249889r249890
579595   m_iocbeep->set_frequency(IOC_BEEP_FREQ);
580596   m_ipc_control = 0x00;
581597   m_ipc_ioc_status = 0x0f;
598   m_flop0->get_device()->mon_w(!m_flop0->get_device()->exists());
599   m_flop1->get_device()->mon_w(!m_flop1->get_device()->exists());
582600
583601   m_iocfdc->set_rate(500000); // The IMD images show a rate of 500kbps
584602}
r249889r249890
812830      MCFG_DEVICE_ADD("iocfdc" , I8271 , IOC_XTAL_Y1 / 2)
813831      MCFG_I8271_DRQ_CALLBACK(DEVWRITELINE("iocdma" , i8257_device , dreq1_w))
814832      MCFG_FLOPPY_DRIVE_ADD("iocfdc:0", imds2_floppies, "8sssd", floppy_image_device::default_floppy_formats)
815                MCFG_SLOT_FIXED(true)
833      MCFG_FLOPPY_DRIVE_ADD("iocfdc:1", imds2_floppies, "8sssd", floppy_image_device::default_floppy_formats)
816834
817835      MCFG_CPU_ADD("iocpio" , I8041 , IOC_XTAL_Y3)
818836      MCFG_CPU_IO_MAP(pio_io_map)
trunk/src/mame/drivers/konamim2.c
r249889r249890
191191#include "emu.h"
192192#include "cdrom.h"
193193#include "cpu/powerpc/ppc.h"
194#include "imagedev/chd_cd.h"
195194
195
196196struct CDE_DMA
197197{
198198   UINT32 dst_addr;
r249889r249890
11871187
11881188   MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
11891189
1190        /*cd-rom*/
1191   MCFG_CDROM_ADD( "cdrom" )
1192   MCFG_CDROM_INTERFACE("3do_m2_cdrom")
11931190
1194   MCFG_SOFTWARE_LIST_ADD("cd_list","3do_m2")
1195
11961191MACHINE_CONFIG_END
11971192
11981193
trunk/src/mame/drivers/macpci.c
r249889r249890
110110   MCFG_SOUND_ROUTE( 1, "rspeaker", 1.00 )
111111
112112   MCFG_CDROM_ADD("cdrom")
113   MCFG_CDROM_INTERFACE("pippin_cdrom")
114   MCFG_SOFTWARE_LIST_ADD("cd_list","pippin")   
115113
116114   MCFG_RAM_ADD(RAM_TAG)
117115   MCFG_RAM_DEFAULT_SIZE("32M")
trunk/src/mame/drivers/megadriv.c
r249889r249890
735735   MCFG_SOFTWARE_LIST_ADD("cd_list","megacdj")
736736MACHINE_CONFIG_END
737737
738/******************SEGA CD + 32X****************************/
739738
740739static MACHINE_CONFIG_DERIVED( genesis_32x_scd, genesis_32x )
741740
r249889r249890
753752   MCFG_GENERIC_LOAD(md_cons_state, _32x_cart)
754753
755754   //MCFG_QUANTUM_PERFECT_CPU("32x_master_sh2")
756   MCFG_SOFTWARE_LIST_ADD("cd_list", "segacd")
757755MACHINE_CONFIG_END
758756
759static MACHINE_CONFIG_DERIVED( md_32x_scd, md_32x )
760757
761   MCFG_DEVICE_ADD("segacd", SEGA_SEGACD_EUROPE, 0)
762   MCFG_GFX_PALETTE("gen_vdp:palette")
763758
764   MCFG_CDROM_ADD( "cdrom" )
765   MCFG_CDROM_INTERFACE("scd_cdrom")
766
767   MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd)
768
769   MCFG_DEVICE_REMOVE("cartslot")
770   MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "_32x_cart")
771   MCFG_GENERIC_EXTENSIONS("32x,bin")
772   MCFG_GENERIC_LOAD(md_cons_state, _32x_cart)
773
774   //MCFG_QUANTUM_PERFECT_CPU("32x_master_sh2")
775   MCFG_SOFTWARE_LIST_ADD("cd_list", "megacd")
776MACHINE_CONFIG_END
777
778static MACHINE_CONFIG_DERIVED( mdj_32x_scd, mdj_32x )
779
780   MCFG_DEVICE_ADD("segacd", SEGA_SEGACD_JAPAN, 0)
781   MCFG_GFX_PALETTE("gen_vdp:palette")
782
783   MCFG_CDROM_ADD( "cdrom" )
784   MCFG_CDROM_INTERFACE("scd_cdrom")
785
786   MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd)
787
788   MCFG_DEVICE_REMOVE("cartslot")
789   MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "_32x_cart")
790   MCFG_GENERIC_EXTENSIONS("32x,bin")
791   MCFG_GENERIC_LOAD(md_cons_state, _32x_cart)
792
793   //MCFG_QUANTUM_PERFECT_CPU("32x_master_sh2")
794   MCFG_SOFTWARE_LIST_ADD("cd_list", "megacdj")
795MACHINE_CONFIG_END
796
797759/* We need proper names for most of these BIOS ROMs! */
798760ROM_START( segacd )
799761   ROM_REGION16_BE( 0x400000, "maincpu", ROMREGION_ERASE00 )
r249889r249890
940902   ROM_LOAD( "32x_s_bios.bin", 0x000000,  0x000400, CRC(bfda1fe5) SHA1(4103668c1bbd66c5e24558e73d4f3f92061a109a) )
941903ROM_END
942904
943ROM_START( 32x_mcd )
944   ROM_REGION16_BE( 0x400000, "maincpu", ROMREGION_ERASE00 )
945905
946   ROM_REGION16_BE( 0x400000, "gamecart", 0 ) /* 68000 Code */
947   ROM_LOAD( "megacd_model1_bios_1_00_e.bin", 0x000000,  0x020000, CRC(529ac15a) SHA1(f891e0ea651e2232af0c5c4cb46a0cae2ee8f356) )
948906
949   ROM_REGION32_BE( 0x400000, "gamecart_sh2", 0 ) /* Copy for the SH2 */
950   ROM_COPY( "gamecart", 0x0, 0x0, 0x400000)
951
952   ROM_REGION16_BE( 0x400000, "32x_68k_bios", 0 ) /* 68000 Code */
953   ROM_LOAD( "32x_g_bios.bin", 0x000000,  0x000100, CRC(5c12eae8) SHA1(dbebd76a448447cb6e524ac3cb0fd19fc065d944) )
954
955   ROM_REGION32_BE( 0x400000, "master", 0 ) /* SH2 Code */
956   ROM_LOAD( "32x_m_bios.bin", 0x000000,  0x000800, CRC(dd9c46b8) SHA1(1e5b0b2441a4979b6966d942b20cc76c413b8c5e) )
957
958   ROM_REGION32_BE( 0x400000, "slave", 0 ) /* SH2 Code */
959   ROM_LOAD( "32x_s_bios.bin", 0x000000,  0x000400, CRC(bfda1fe5) SHA1(4103668c1bbd66c5e24558e73d4f3f92061a109a) )
960ROM_END
961
962ROM_START( 32x_mcdj )
963   ROM_REGION16_BE( 0x400000, "maincpu", ROMREGION_ERASE00 )
964
965   ROM_REGION16_BE( 0x400000, "gamecart", 0 ) /* 68000 Code */
966   ROM_DEFAULT_BIOS("v100g")   // this seems the only revision where the cursor in CD menu works, allowing to boot games
967   /* Confirmed by ElBarto */
968   ROM_SYSTEM_BIOS(0, "v100s", "v1.00S")
969   ROMX_LOAD( "mpr-14088h.bin", 0x000000,  0x020000, CRC(3773d5aa) SHA1(bbf729a1aaa1667b783749299e1ad932aaf5f253), ROM_BIOS(1) | ROM_GROUPWORD | ROM_REVERSE)
970   /* Confirmed by ElBarto */
971   ROM_SYSTEM_BIOS(1, "v100g", "v1.00G")
972   ROMX_LOAD( "epr-14088b.bin", 0x000000,  0x020000, CRC(69ed6ccd) SHA1(27d11c3836506f01ee81cd142c0cd8b51abebbd2), ROM_BIOS(2) | ROM_GROUPWORD | ROM_REVERSE)
973   /* Confirmed by ElBarto */
974   ROM_SYSTEM_BIOS(2, "v100l", "v1.00L")
975   ROMX_LOAD( "mpr-14088c.bin", 0x000000,  0x020000, CRC(03134289) SHA1(d60cb5a53f26d6b13e354bc149217587f2301718), ROM_BIOS(3) | ROM_GROUPWORD | ROM_REVERSE)
976   /* Confirmed by ElBarto */
977   ROM_SYSTEM_BIOS(3, "v100o", "v1.00O")
978   ROMX_LOAD( "epr-14088d.bin", 0x000000,  0x020000, CRC(dfa95ee9) SHA1(e13666c76fa0a2e94e2f651b26b0fd625bf55f07), ROM_BIOS(4) | ROM_GROUPWORD | ROM_REVERSE)
979   ROM_SYSTEM_BIOS(4, "v100p", "v1.00P")   // CRC: e2e70bc8 when byteswapped
980   ROMX_LOAD( "epr-14088e.bin", 0x000000,  0x020000, CRC(9d2da8f2) SHA1(4846f448160059a7da0215a5df12ca160f26dd69), ROM_BIOS(5) )
981
982   ROM_REGION32_BE( 0x400000, "gamecart_sh2", 0 ) /* Copy for the SH2 */
983   ROM_COPY( "gamecart", 0x0, 0x0, 0x400000)
984
985   ROM_REGION16_BE( 0x400000, "32x_68k_bios", 0 ) /* 68000 Code */
986   ROM_LOAD( "32x_g_bios.bin", 0x000000,  0x000100, CRC(5c12eae8) SHA1(dbebd76a448447cb6e524ac3cb0fd19fc065d944) )
987
988   ROM_REGION32_BE( 0x400000, "master", 0 ) /* SH2 Code */
989   ROM_LOAD( "32x_m_bios.bin", 0x000000,  0x000800, CRC(dd9c46b8) SHA1(1e5b0b2441a4979b6966d942b20cc76c413b8c5e) )
990
991   ROM_REGION32_BE( 0x400000, "slave", 0 ) /* SH2 Code */
992   ROM_LOAD( "32x_s_bios.bin", 0x000000,  0x000400, CRC(bfda1fe5) SHA1(4103668c1bbd66c5e24558e73d4f3f92061a109a) )
993ROM_END
994
995
996
997907/***************************************************************************
998908
999909  Game driver(s)
r249889r249890
1026936CONS( 1993, wmegam2,    xeye,      0,      mdj_scd,         md, md_cons_state,     md_jpn,    "Victor", "Wondermega M2 (Japan, NTSC)", MACHINE_NOT_WORKING )
1027937CONS( 1994, cdx,        0,         0,      genesis_scd,     md, md_cons_state,     genesis,   "Sega",   "CDX (USA, NTSC)", MACHINE_NOT_WORKING )
1028938CONS( 1994, multmega,   cdx,       0,      md_scd,          md, md_cons_state,     md_eur,    "Sega",   "Multi-Mega (Europe, PAL)", MACHINE_NOT_WORKING )
1029
1030//32X plugged in the cart slot + SegaCD plugged into the expansion port..
1031CONS( 1994, 32x_scd,    0,         0,      genesis_32x_scd, md, md_cons_state,     genesis,   "Sega",   "Sega CD with 32X (USA, NTSC)", MACHINE_NOT_WORKING )
1032CONS( 1995, 32x_mcd,    32x_scd,   0,      md_32x_scd,      md, md_cons_state,     md_eur,    "Sega",   "Mega-CD with 32X (Europe, PAL)", MACHINE_NOT_WORKING )
1033CONS( 1994, 32x_mcdj,   32x_scd,   0,      mdj_32x_scd,     md, md_cons_state,     md_jpn,    "Sega",   "Mega-CD with 32X (Japan, NTSC)", MACHINE_NOT_WORKING )
939CONS( 1994, 32x_scd,    0,         0,      genesis_32x_scd, md, md_cons_state,     genesis,   "Sega",   "Sega CD (USA, NTSC, w/32X)", MACHINE_NOT_WORKING )
trunk/src/mame/drivers/namcos23.c
r249889r249890
12861286{
12871287   running_machine *machine;
12881288   const pen_t *pens;
1289   bitmap_rgb32 *bitmap;
12901289   UINT32 (*texture_lookup)(running_machine &machine, const pen_t *pens, float x, float y);
12911290};
12921291
12931292class namcos23_state;
12941293
1295class namcos23_renderer : public poly_manager<float, namcos23_render_data, 4, POLY_MAX_ENTRIES>
1294class namcos23_renderer : public poly_manager<float, namcos23_render_data, 5, POLY_MAX_ENTRIES>
12961295{
12971296public:
12981297   namcos23_renderer(namcos23_state &state);
r249889r249890
13021301
13031302private:
13041303   namcos23_state& m_state;
1304   bitmap_rgb32 m_bitmap;
13051305   float* m_zBuffer;
13061306};
13071307
r249889r249890
13121312   namcos23_render_data rd;
13131313   int front;
13141314   int vertex_count;
1315   float zkey;
13161315   poly_vertex pv[16];
13171316};
13181317
r249889r249890
13681367   int count[2];
13691368   namcos23_render_entry entries[2][RENDER_MAX_ENTRIES];
13701369   namcos23_poly_entry polys[POLY_MAX_ENTRIES];
1371   namcos23_poly_entry *poly_order[POLY_MAX_ENTRIES];
13721370};
13731371
13741372class namcos23_state : public driver_device
r249889r249890
15851583***************************************************************************/
15861584
15871585namcos23_renderer::namcos23_renderer(namcos23_state &state)
1588   : poly_manager<float, namcos23_render_data, 4, POLY_MAX_ENTRIES>(state.machine()),
1589     m_state(state)
1586   : poly_manager<float, namcos23_render_data, 5, POLY_MAX_ENTRIES>(state.machine()),
1587     m_state(state),
1588     m_bitmap(state.m_screen->width(), state.m_screen->height())
15901589{
1590   const INT32 bufferSize = state.m_screen->visible_area().width() * state.m_screen->visible_area().height();
1591   m_zBuffer = auto_alloc_array(state.machine(), float, bufferSize);
15911592}
15921593
15931594// 3D hardware, to throw at least in part in video/namcos23.c
r249889r249890
18841885{
18851886   const namcos23_render_data& rd = object;
18861887
1887   float w = extent.param[0].start;
1888   float u = extent.param[1].start;
1889   float v = extent.param[2].start;
1890   float l = extent.param[3].start;
1891   float dw = extent.param[0].dpdx;
1892   float du = extent.param[1].dpdx;
1893   float dv = extent.param[2].dpdx;
1894   float dl = extent.param[3].dpdx;
1888   float zz = extent.param[0].start;
1889   float w = extent.param[1].start;
1890   float u = extent.param[2].start;
1891   float v = extent.param[3].start;
1892   float l = extent.param[4].start;
1893   float dz = extent.param[0].dpdx;
1894   float dw = extent.param[1].dpdx;
1895   float du = extent.param[2].dpdx;
1896   float dv = extent.param[3].dpdx;
1897   float dl = extent.param[4].dpdx;
18951898   
1896   UINT32 *img = &object.bitmap->pix32(scanline, extent.startx);
1899   UINT32 *img = &m_bitmap.pix32(scanline, extent.startx);
1900   float* zBuffer = &m_zBuffer[(scanline * m_state.m_screen->visible_area().width()) + extent.startx];
18971901   
18981902   for(int x = extent.startx; x < extent.stopx; x++) {
1899      float z = w ? 1/w : 0;
1900      UINT32 pcol = rd.texture_lookup(*rd.machine, rd.pens, u*z, v*z);
1901      float ll = l*z;
1902      *img = (light(pcol >> 16, ll) << 16) | (light(pcol >> 8, ll) << 8) | light(pcol, ll);
1903      if (zz < *zBuffer)
1904      {
1905         float z = w ? 1/w : 0;
1906         UINT32 pcol = rd.texture_lookup(*rd.machine, rd.pens, u*z, v*z);
1907         float ll = l*z;
1908         *img = (light(pcol >> 16, ll) << 16) | (light(pcol >> 8, ll) << 8) | light(pcol, ll);
1909   
1910         *zBuffer = zz;
1911      }
19031912     
1913      zz += dz;
19041914      w += dw;
19051915      u += du;
19061916      v += dv;
19071917      l += dl;
19081918      img++;
1919      zBuffer++;
19091920   }
19101921}
19111922
r249889r249890
19321943
19331944   pv.x = 320 + 768 * pv.x;
19341945   pv.y = 240 - 768 * pv.y;
1935   pv.p[0] = 1.0f / pv.p[0];
1946   pv.p[1] = 1.0f / pv.p[1];
19361947}
19371948
19381949static UINT32 render_texture_lookup_nocache_point(running_machine &machine, const pen_t *pens, float x, float y)
r249889r249890
20352046
20362047      namcos23_poly_entry *p = render.polys + render.poly_count;
20372048
2038        // Should be unnecessary now that frustum clipping happens, but this still culls polys behind the camera
2039      p->vertex_count = render.polymgr->zclip_if_less(ne, pv, p->pv, 4, 0.00001f);
2040       
2041        // Project if you don't clip on the near plane
2049      // Should be unnecessary now that frustum clipping happens, but this still culls polys behind the camera
2050      p->vertex_count = render.polymgr->zclip_if_less(ne, pv, p->pv, 5, 0.001f);
2051     
2052      // Project if you don't clip on the near plane
20422053      if(p->vertex_count >= 3) {
2043            // Project the eye points
2044            frustum_clip_vertex<float, 3> clipVerts[10];
2045            for(int i=0; i<p->vertex_count; i++) {
2046                // Construct a frustum clipping vert from the NDCoords
2047                const float Z = p->pv[i].p[0];
2048                clipVerts[i].x = p->pv[i].x / Z;
2049                clipVerts[i].y = p->pv[i].y / Z;
2050                clipVerts[i].z = Z;
2051                clipVerts[i].w = Z;
2052                clipVerts[i].p[0] = p->pv[i].p[1];
2053                clipVerts[i].p[1] = p->pv[i].p[2];
2054                clipVerts[i].p[2] = p->pv[i].p[3];
2055            }
2054         // Project the eye points
2055         frustum_clip_vertex<float, 3> clipVerts[10];
2056         for(int i=0; i<p->vertex_count; i++) {
2057            // A basic perspective transform
2058            const float Z = p->pv[i].p[0];
2059            const float projX = p->pv[i].x / Z;
2060            const float projY = p->pv[i].y / Z;
2061           
2062            const float near = 0.001f;
2063            const float far = 1000.0f;
2064            const float m22 = -(far / (far-near));
2065            const float m23 = -((far * near) / (far - near));
2066            const float projZ = -(Z * m22) + m23;
2067           
2068            // Construct a frustum clipping vert from the NDCoords
2069            clipVerts[i].x = projX;
2070            clipVerts[i].y = projY;
2071            clipVerts[i].z = projZ;
2072            clipVerts[i].w = p->pv[i].p[0];
2073            clipVerts[i].p[0] = p->pv[i].p[1];
2074            clipVerts[i].p[1] = p->pv[i].p[2];
2075            clipVerts[i].p[2] = p->pv[i].p[3];
2076         }
20562077
2057            // Clip against all edges of the view frustum
2058            int num_vertices = frustum_clip_all<float, 3>(clipVerts, p->vertex_count, clipVerts);
2059           
2060            if (num_vertices != 0)
2061            {
2062                // Push the results back into the main vertices
2063                for (int i=0; i < num_vertices; i++)
2064                {
2065                    p->pv[i].x = clipVerts[i].x;
2066                    p->pv[i].y = clipVerts[i].y;
2067                    p->pv[i].p[0] = clipVerts[i].w;
2068                    p->pv[i].p[1] = clipVerts[i].p[0];
2069                    p->pv[i].p[2] = clipVerts[i].p[1];
2070                    p->pv[i].p[3] = clipVerts[i].p[2];
2071                }
2072                p->vertex_count = num_vertices;
2073               
2074                // This is our poor-man's projection matrix
2075                for(int i=0; i<p->vertex_count; i++)
2076                {
2077                    render_project(p->pv[i]);
2078                   
2079                    float w = p->pv[i].p[0];
2080                    p->pv[i].p[1] *= w;
2081                    p->pv[i].p[2] *= w;
2082                    p->pv[i].p[3] *= w;
2083                }
2084               
2085                // Compute an odd sorta'-Z thing that can situate the polygon wherever you want in Z-depth
2086                p->zkey = 0.5f*(minz+maxz);
2087                p->front = !(h & 0x00000001);
2088                p->rd.machine = &machine();
2089                p->rd.texture_lookup = render_texture_lookup_nocache_point;
2090                p->rd.pens = m_palette->pens() + (color << 8);
2091                render.poly_count++;
2092            }
2078         // Clip against all edges of the view frustum
2079         int num_vertices = frustum_clip_all<float, 3>(clipVerts, p->vertex_count, clipVerts);
2080         
2081         if (num_vertices != 0)
2082         {
2083            // Push the results back into the main vertices
2084            for (int i=0; i < num_vertices; i++)
2085            {
2086               p->pv[i].x = clipVerts[i].x;
2087               p->pv[i].y = clipVerts[i].y;
2088               p->pv[i].p[0] = clipVerts[i].z;
2089               p->pv[i].p[1] = clipVerts[i].w;
2090               p->pv[i].p[2] = clipVerts[i].p[0];
2091               p->pv[i].p[3] = clipVerts[i].p[1];
2092               p->pv[i].p[4] = clipVerts[i].p[2];
2093            }
2094            p->vertex_count = num_vertices;
2095           
2096            // This is our poor-man's projection matrix
2097            for(int i=0; i<p->vertex_count; i++)
2098            {
2099               render_project(p->pv[i]);
2100               
2101               const float w = p->pv[i].p[1];
2102               p->pv[i].p[2] *= w;
2103               p->pv[i].p[3] *= w;
2104               p->pv[i].p[4] *= w;
2105            }
2106           
2107            // Compute an odd sorta'-Z thing that can situate the polygon wherever you want in Z-depth
2108            p->front = !(h & 0x00000001);
2109            p->rd.machine = &machine();
2110            p->rd.texture_lookup = render_texture_lookup_nocache_point;
2111            p->rd.pens = m_palette->pens() + (color << 8);
2112            render.poly_count++;
2113         }
20932114      }
20942115
20952116      if(type & 0x000010000)
r249889r249890
20972118   }
20982119}
20992120
2100static int render_poly_compare(const void *i1, const void *i2)
2101{
2102   const namcos23_poly_entry *p1 = *(const namcos23_poly_entry **)i1;
2103   const namcos23_poly_entry *p2 = *(const namcos23_poly_entry **)i2;
2104
2105   if(p1->front != p2->front)
2106      return p1->front ? 1 : -1;
2107
2108   return p1->zkey < p2->zkey ? 1 : p1->zkey > p2->zkey ? -1 : 0;
2109}
2110
21112121void namcos23_renderer::render_flush(bitmap_rgb32& bitmap)
21122122{
21132123   render_t &render = m_state.m_render;
r249889r249890
21152125   if(!render.poly_count)
21162126      return;
21172127
2118   for(int i=0; i<render.poly_count; i++)
2119      render.poly_order[i] = &render.polys[i];
2120
2121   qsort(render.poly_order, render.poly_count, sizeof(namcos23_poly_entry *), render_poly_compare);
2122
21232128   const static rectangle scissor(0, 639, 0, 479);
21242129
21252130   for(int i=0; i<render.poly_count; i++) {
2126      const namcos23_poly_entry *p = render.poly_order[i];
2131      const namcos23_poly_entry *p = &render.polys[i];
21272132      namcos23_render_data& extra = render.polymgr->object_data_alloc();
21282133      extra = p->rd;
2129      extra.bitmap = &bitmap;
2130
2134     
21312135      // We should probably split the polygons into triangles ourselves to insure everything is being rendered properly
21322136      if (p->vertex_count == 3)
2133         render_triangle(scissor, render_delegate(FUNC(namcos23_renderer::render_scanline), this), 4, p->pv[0], p->pv[1], p->pv[2]);
2137         render_triangle(scissor, render_delegate(FUNC(namcos23_renderer::render_scanline), this), 5, p->pv[0], p->pv[1], p->pv[2]);
21342138      else if (p->vertex_count == 4)
2135         render_polygon<4>(scissor, render_delegate(FUNC(namcos23_renderer::render_scanline), this), 4, p->pv);
2139         render_polygon<4>(scissor, render_delegate(FUNC(namcos23_renderer::render_scanline), this), 5, p->pv);
21362140      else if (p->vertex_count == 5)
2137         render_polygon<5>(scissor, render_delegate(FUNC(namcos23_renderer::render_scanline), this), 4, p->pv);
2141         render_polygon<5>(scissor, render_delegate(FUNC(namcos23_renderer::render_scanline), this), 5, p->pv);
21382142      else if (p->vertex_count == 6)
2139         render_polygon<6>(scissor, render_delegate(FUNC(namcos23_renderer::render_scanline), this), 4, p->pv);
2143         render_polygon<6>(scissor, render_delegate(FUNC(namcos23_renderer::render_scanline), this), 5, p->pv);
21402144   }
21412145   render.poly_count = 0;
2146   
2147   copybitmap(bitmap, m_bitmap, 0, 0, 0, 0, scissor);
2148
2149   // Reset the buffers
2150   for (int i = 0; i < (m_state.m_screen->visible_area().width())*(m_state.m_screen->visible_area().height()); i++)
2151   {
2152      m_zBuffer[i] = 1000.0f;     // TODO: set to far clipping plane value
2153   }
21422154}
21432155
21442156void namcos23_state::render_run(bitmap_rgb32 &bitmap)
trunk/src/mame/drivers/osborne1.c
r249889r249890
141141   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
142142   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
143143   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
144
145   PORT_START("CNF")
146   PORT_CONFNAME(0x01, 0x00, "Video Output")
147   PORT_CONFSETTING(0x00, "Standard")
148   PORT_CONFSETTING(0x01, "SCREEN-PAC")
149144INPUT_PORTS_END
150145
151146
r249889r249890
202197
203198   MCFG_SCREEN_ADD("screen", RASTER)
204199   MCFG_SCREEN_UPDATE_DRIVER(osborne1_state, screen_update)
205   MCFG_SCREEN_RAW_PARAMS( MAIN_CLOCK, 1024, 0, 104*8, 260, 0, 24*10 )
200   MCFG_SCREEN_RAW_PARAMS( MAIN_CLOCK/2, 512, 0, 416, 260, 0, 240 )
206201   MCFG_SCREEN_PALETTE("palette")
207202   MCFG_GFXDECODE_ADD("gfxdecode", "palette", osborne1)
208203   MCFG_PALETTE_ADD_MONOCHROME_GREEN_HIGHLIGHT("palette")
trunk/src/mame/drivers/pc.c
r249889r249890
2222IBM5550
2323=======
2424Information can be found at http://homepage3.nifty.com/ibm5550/index-e.html
25It's a heavily modified IBM PC-XT machine, with a completely different
25It's an heavily modified IBM PC-XT machine, with a completely different
2626video HW too.
2727
2828***************************************************************************/
r249889r249890
173173   DEVICE_INPUT_DEFAULTS("DSW0", 0x30, 0x20)
174174DEVICE_INPUT_DEFAULTS_END
175175
176static DEVICE_INPUT_DEFAULTS_START( siemens )
177   DEVICE_INPUT_DEFAULTS("DSW0", 0x30, 0x30)
178DEVICE_INPUT_DEFAULTS_END
179
180176#define MCFG_CPU_PC(mem, port, type, clock) \
181177   MCFG_CPU_ADD("maincpu", type, clock)                \
182178   MCFG_CPU_PROGRAM_MAP(mem##_map) \
r249889r249890
272268   MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150")
273269MACHINE_CONFIG_END
274270
275
276
277static MACHINE_CONFIG_START( siemens, pc_state )
278   /* basic machine hardware */
279   MCFG_CPU_PC(pc8, pc8, I8088, XTAL_14_31818MHz/3) /* 4,77 MHz */
280
281   MCFG_IBM5150_MOTHERBOARD_ADD("mb", "maincpu")
282   MCFG_DEVICE_INPUT_DEFAULTS(siemens)
283
284   MCFG_ISA8_SLOT_ADD("mb:isa", "isa1", pc_isa8_cards, "hercules", false)
285   MCFG_ISA8_SLOT_ADD("mb:isa", "isa2", pc_isa8_cards, "fdc_xt", false)
286   MCFG_ISA8_SLOT_ADD("mb:isa", "isa3", pc_isa8_cards, "lpt", false)
287   MCFG_ISA8_SLOT_ADD("mb:isa", "isa4", pc_isa8_cards, "com", false)
288
289   /* keyboard */
290   MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83)
291   /* internal ram */
292   MCFG_RAM_ADD(RAM_TAG)
293   MCFG_RAM_DEFAULT_SIZE("640K")
294
295MACHINE_CONFIG_END
296
297271static MACHINE_CONFIG_START( ibm5550, pc_state )
298272   /* basic machine hardware */
299273   MCFG_CPU_PC(ibm5550, ibm5550, I8086, 8000000)
r249889r249890
323297   MCFG_SLOT_DEFAULT_OPTION("cga_ec1841")
324298MACHINE_CONFIG_END
325299
326static MACHINE_CONFIG_DERIVED(eagle1600, pccga)
327   MCFG_DEVICE_REMOVE("maincpu")
328   MCFG_CPU_PC(pc16, pc16, I8086, 8000000)
329MACHINE_CONFIG_END
330
331300ROM_START( bw230 )
332301   ROM_REGION(0x100000,"maincpu", 0)
333302   ROM_LOAD("bondwell.bin", 0xfe000, 0x2000, CRC(d435a405) SHA1(a57c705d1144c7b61940b6f5c05d785c272fc9bb))
334303ROM_END
335304
336ROM_START( sicpc1605 )
337   ROM_REGION(0x100000,"maincpu", 0)
338   ROM_LOAD("multitech pc-700 3.1.bin", 0xfe000, 0x2000, CRC(0ac7a2e1) SHA1(b9c8504e21213d81a068dde9f51f9c973d726e7b))
339ROM_END
340
341305ROM_START( zdsupers )
342306   ROM_REGION(0x100000,"maincpu", 0)
343307   ROM_SYSTEM_BIOS( 0, "v31d", "v3.1d" )
r249889r249890
479443   ROM_LOAD( "c101681 6ffb.u60",0x000, 0x100, NO_DUMP ) // PAL20L10NC
480444ROM_END
481445
482ROM_START( eagle1600 )
483   ROM_REGION(0x100000,"maincpu", 0)
484   ROMX_LOAD( "eagle 1600 62-2732-001 rev e u403.bin",0xfe000, 0x1000, CRC(3da1e96a) SHA1(77861ba5ebd056da1daf048f5abd459e0528666d), ROM_SKIP(1))
485   ROMX_LOAD( "eagle 1600 62-2732-002 rev e u404.bin",0xfe001, 0x1000, CRC(be6492d4) SHA1(ef25faf33e8336121d030e38e177be39be8afb7a), ROM_SKIP(1))
486
487   ROM_REGION(0x8000,"gfx1", 0)
488   ROM_LOAD("eagle 1600 video char gen u301.bin", 0x00000, 0x1000, CRC(1a7e552f) SHA1(749058783eec9d96a70dc5fdbfccb56196f889dc))
489ROM_END
490
491446/***************************************************************************
492447
493448  Game driver(s)
r249889r249890
500455COMP( 1984, compc1,     ibm5150,    0,          pccga,      pccga, driver_device,      0,      "Commodore Business Machines", "Commodore PC-1" , MACHINE_NOT_WORKING)
501456COMP( 1987, pc10iii,    ibm5150,    0,          pccga,      pccga, driver_device,      0,      "Commodore Business Machines", "Commodore PC-10 III" , MACHINE_NOT_WORKING)
502457
503
504458COMP( 1992, iskr3104,   ibm5150,    0,          iskr3104,   pccga, driver_device,      0,      "Schetmash", "Iskra 3104", MACHINE_NOT_WORKING)
505459COMP( 1989, mk88,       ibm5150,    0,          mk88,       pccga, driver_device,      0,      "<unknown>", "MK-88", MACHINE_NOT_WORKING)
506460COMP( 1991, poisk2,     ibm5150,    0,          poisk2,     pccga, driver_device,      0,      "<unknown>", "Poisk-2", MACHINE_NOT_WORKING)
507461COMP( 1990, mc1702,     ibm5150,    0,          pccga,      pccga, driver_device,      0,      "<unknown>", "Elektronika MC-1702", MACHINE_NOT_WORKING)
508462
509463COMP( 1987, zdsupers,   ibm5150,    0,          zenith,     pccga, driver_device,      0,      "Zenith Data Systems", "SuperSport", 0)
510COMP( 1985, sicpc1605,  ibm5150,    0,          siemens,    pccga, driver_device,      0,      "Siemens", "Sicomp PC16-05", 0)
511464
512465COMP( 198?, olivm15,    ibm5150,    0,          pccga,      pccga, driver_device,      0,      "Olivetti", "M15", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) // is this a pc clone or not?
513466
r249889r249890
520473
521474COMP( 198?, ataripc3,   ibm5150,    0,          pccga,      pccga, driver_device,      0,      "Atari", "PC-3" , MACHINE_NOT_WORKING)
522475COMP( 1989, ssam88s,    ibm5150,    0,          pccga,      pccga, driver_device,      0,      "Samsung", "Samtron 88S" , MACHINE_NOT_WORKING)
523COMP( 1983, eagle1600,  ibm5150,    0,          eagle1600,  pccga, driver_device,      0,      "Eagle", "1600" , MACHINE_NOT_WORKING)
trunk/src/mame/drivers/pcd.c
r249889r249890
538538   MCFG_MC146818_ADD("rtc", XTAL_32_768kHz)
539539   MCFG_MC146818_IRQ_HANDLER(DEVWRITELINE("pic1", pic8259_device, ir7_w))
540540   MCFG_MC146818_BINARY(true)
541   MCFG_MC146818_BINARY_YEAR(true)
542541   MCFG_MC146818_EPOCH(1900)
543542   MCFG_MC146818_24_12(true)
544543
trunk/src/mame/drivers/saturn.c
r249889r249890
22// copyright-holders:David Haywood, Angelo Salese, Olivier Galibert, Mariusz Wojcieszek, R. Belmont
33/**************************************************************************************************
44
5    Sega Saturn & Sega ST-V (Sega Titan Video) HW (c) 1994 Sega
6
57    Driver by David Haywood, Angelo Salese, Olivier Galibert & Mariusz Wojcieszek
68    SCSP driver provided by R. Belmont, based on ElSemi's SCSP sound chip emulator
79    Many thanks to Guru, Fabien, Runik and Charles MacDonald for the help given.
810
9***************************************************************************************************
11===================================================================================================
1012
11Sega Saturn
12(C) Sega 1994/1995/1996/1997
13
14The Sega Saturn is a 32-bit 5th-generation home video game console that was developed by Sega and released
15on November 22nd 1994 in Japan, May 11th 1995 in North America, and July 8th 1995 in Europe as the successor
16to the Sega Genesis. The Saturn has a dual-CPU architecture and a total of eight processors.
17The games are on CD-ROM.
18
19Basic Hardware:
20
21Processors (8)
22----------
23Two Hitachi SH2 32-bit RISC @ 28.63636MHz
24One Hitachi SH1 32-bit RISC @ 20.0MHz
25Two 32-bit video display processors (VDP 1 / VDP 2)
26One Saturn Control Unit processor (SCU) @ 14.31818MHz
27One Motorola 68EC000 sound processor @ 11.2896MHz
28One Yamaha YMF292-F DSP sound processor @ 28.63636MHz
29
30Memory
31------
3216 Megabits DRAM
3312 Megabits VRAM (Video RAM)
344 Megabits Audio DRAM
354 Megabits CD-ROM Cache DRAM
36256 Kbits battery-backed SRAM
37
38Video
39-----
40VDP 1
41- 32-bit video display processor
42- Sprite, polygon, and geometry engine
43- Dual 256Kb frame buffers for rotation and scaling effects
44- Texture Mapping
45- Goraud Shading
46- 512Kb cache for textures
47VDP 2
48- 32-bit background and scroll plane video display processor
49- Background engine
50- 5 simulataneous scrolling backgrounds
51- 2 simultaneous rotating playfields
52- 200,000 Texture Mapped Polygons/Second
53- 500,000 Flat Shaded Polygons/Second
54- Up to 60 frames per second animation
55- 24-bit True Color Graphics
56- 16 Million Available Colors
57- 320x224, 640x224, and 720x576 Resolution
58
59Audio
60-----
61Motorola 68EC000 sound processor @ 11.2896MHz
62Yamaha 24-bit Digital Signal Processor @ 28.63636MHz
63- 32 PCM (Pulse Code Modulation) Channels
64- 8 FM (Frequency Modulation) Channels
65- 44.1 kHz Sampling Rate
66
67Storage
68-------
69CD-ROM (2X)
70- 320 Kb/Second transfer speed
71- Compatible with Audio CD, CD+G, CD+EG, CD Single (8cm)
72  and with optional hardware; Video CD, Photo CD & Digital Karaoke
73- Optional additional memory cartridge
74
75Input/Output
76------------
77High speed serial communications port
78Internal 32-bit expansion port
79Internal Multi AV port for optional Video CD (MPEG) decoder board
80Composite video & stereo audio (Standard)
81Optional RF(TV), S-Video & RGB outputs
822 ports for analog control pad, light gun or other controllers
83
84
85PCB Layouts
86-----------
87There were *many* main board revisions. The two general 'sizes' are documented here.
88
89Small board (VA revision documented)
90-----------
91Main board with a separate small sub-board for the controller ports, power LED and reset button.
92The power supply is slightly longer than the main board, has a 5 pin connector and outputs 9VDC, 5VDC and 3.3VDC
93
94837-12126 IC BD SATURN MAIN VA SG
95171-7128B (C) SEGA 1995 PC BD SATURN MAIN VA SG
96(This PCB was found in a USA Saturn, Model MK-80000, also known as Saturn model 1 with BIOS MPR-17941)
97
98837-12135 IC BD SATURN MAIN VA PAL SD
99171-7131A (C) SEGA 1995 PC BD SATURN MAIN VA PAL SD
100(This PCB was found in a PAL Saturn, Model MK-80200-50, also known as Saturn model 1 PAL with BIOS MPR-17942)
101
102(note both of these PCBs listed above are almost identical)
103
104|VIDEO--COMM-----------------------------------------------|
105|                        CART_SLOT            SW1 BATTERY  |
106|ADAC         CXA1645M   |--------| |-------|    20MHz     |
107|     SW2                |315-5688| |YGR019B|   TC514260   |
108| ^4502161               |        | |       |   |-------|  |
109| ^4502161    |--------| |--------| |-------|   |HD6437097 |
110| |--------|  |315-5890|   *D489020             |       |  |
111| |315-5883|  |        |    81141625 81141625   |-------|  |
112| |        |  |--------|                        CARD_SLOT  |
113| |--------|  ^4502161                    HC08             |
114| ^5241605    ^4502161          |----| |----|   |--------| |
115|  514270 |--------|HC04        |SH-2| |SH-2|   |315-5914| |
116| |-----| |315-5687|HC04        |----| |----|   |--------| |
117| |68000| |        |      |------|32.768kHz                |
118| |-----| |--------|      315-5744       LS245  TC514260   |
119|       ^74HC157 315-5746 |------|        ^62257  ^ROM  CN4|
120|  CN3      CN7  &14.31818MHz  CN2       LS245  TC514260   |
121|----------------------------------------------------------|
122Notes: (all IC's shown. ^ denotes these parts are on the other side of the PCB)
123             ROM - SOP40 mask ROM for BIOS.
124                   Chip is pin-compatible with Toshiba TC574200 or MX27C4100 and can be read with a simple 1:1 DIP40 to SOP40 adapter
125                   JAPAN BIOS marked 'MPR-17940-MX' or 'MPR-17940-T'
126                   USA BIOS   marked 'MPR-17941-MX' or 'MPR-17941-T'
127                   PAL BIOS   marked 'MPR-17942-MX' or 'MPR-17942-T'
128                   T = Toshiba, MX = Macronix. Both contain identical data
129                   Other BIOSes known to exist include:
130                   (These are mainly on the very       MPR-16605-T
131                    early version main boards VA0/VA1  MPR-16606-T
132                    and are all DIP chips)             MPR-16606A-T
133                                                       MPR-17577-T
134                                                       EPR-17578 HI-SATURN BOOT ROM VER 1.01 SUM AA44 '95 1/27 (EPROM)
135        81141625 - Fujitsu 81141625-017 128k x16-bit x 2 banks (4Mbit) SDRAM                     \ compatible
136         5241605 - Hitachi HM5241605TT17S or HM524165CTT17S 128k x16-bit x 2 banks (4Mbit) SDRAM /
137                   The two 81141625 are the WORK RAM HIGH and the two TC514260 (near the ROM) make up the WORK RAM LOW
138                   The 5241605 is the VDP1 Sprite RAM
139         D489020 - NEC D489020GF-A15 SGRAM (probably 8Mbit). *- This single chip is replaced by two 81141625 IC's on some boards
140         4502161 - NEC D4502161G5-A12 or Sanyo LC382161T-17 64k x16-bit x 2 banks (2Mbit) SDRAM
141                   Two chips are used for the VDP1 Frame RAM, the other two are for the VDP2 Video RAM
142        TC514260 - 256k x16-bit (4Mbit) DRAM. Any of the following compatible chips are used....
143                   Hitachi HM514260AJ7 / HM514260CJ7
144                   Toshiba TC514260BJ-70
145                   Fujitsu 814260-70
146                   Mitsubishi M5M44260CJ
147                   Samsung KM416C256BJ-7
148                   Hyundai HY514260B JC-70
149                   Vanguard VG264260AJ
150                   Panasonic MN414260CSJ-07
151        HM514270 - Hitachi HM514270 256k x16-bit (4Mbit) DRAM, used for the sound WORK RAM
152           62257 - Epson SRM20257LLM10 32k x8-bit (256kbit) battery-backed SRAM (also used SONY CXK58257AM-10L, NEC UPD43257B-10LL, UM62257AM-70LL)
153            ADAC - Dual CMOS Audio DAC. Either Burr-Brown BBPCM1710U or Philips TDA1386T
154        CXA1645M - Sony CXA1645M RGB to Composite Video Encoder
155            SH-2 - Hitachi HD6417095 SH-2 CPU. Clock input 28.63636MHz (14.31818*2)
156           68000 - Motorola MC68EC000FN12 CPU. Clock input 11.2896MHz
157               & - Master Clock. 14.31818MHz for USA revision or 17.7344MHz for PAL revision
158        315-5744 - Sega 315-5744 Hitachi HD404920 microcontroller used as the System Manager and Peripheral Controller (SMPC)
159        315-5746 - Sega 315-5746 Phase-locked Loop (PLL) clock generator IC
160        315-5883 - Sega 315-5883 Hitachi HD64440 Video Display Processor 1 (VDP1). Earliest revision is 315-5689
161        315-5687 - Sega 315-5687 Yamaha YMF292-F Saturn Custom Sound Processor (SCSP). Clock input 28.63636MHz (14.31818*2)
162        315-5688 - Sega 315-5688 System Control Unit (SCU). Clock input 14.31818MHz
163        315-5890 - Sega 315-5890 Video Display Processor 2 (VDP2)
164        315-5914 - Sega 315-5914 DRAM controller. Earliest revision is 315-5778. Later revision is 315-5963
165       HD6437097 - Hitachi HD6437097F20 SH1 (SH7034 family) microcontroller with 64k internal ROM. Clock input 20.000MHz
166         YGR019B - Hitachi YGR019B CD-Subsystem LSI. Earlier revision is YGR019A. Later revision combines this IC and the SH1 together
167                   into one IC (YGR022 315-5962). The SH1 and the YGR019B make up the 'CD Block' CD Authentication and CD I/O data controller.
168                   Another of it's functions is to prevent copied CDs from being played
169           VIDEO - 10-pin Mini-DIN video output port
170            COMM - Communication port
171       CARD_SLOT - Expansion slot for MPEG decoder card and other optional expansions
172       CART_SLOT - Expansion slot for plug-in RAM or ROM carts
173             SW1 - Master reset switch accessible behind the card slot/battery cover. Pressing this clears the battery-backed SRAM, resets the system
174                   and the user has to set the language, date and time
175         BATTERY - CR2032 3V lithium coin battery. When the system is off the battery provides power to the backup SRAM and SMPC which contains an RTC
176             SW2 - CDROM cover open/close detection switch
177             CN2 - 24-pin flat cable connector for control port board
178             CN3 - 5-pin power connector
179             CN4 - Flat cable connector for CDROM data cable. On some main board revisions the connector is reversed and the cable is folded so it
180                   is also reversed/flipped 180 degrees at the other end
181             CN7 - 5-pin connector for CDROM power
182
183
184Control Port board
185------------------
186839-0820 EXPORT
187839-0821 PAL
188PC BD SATURN PIO VA EXPORT 171-7112A (C) SEGA 1995 CSPD CAD-TEAM
189|---------------------------------|
190|               FLAT-CABLE        |
191|                                 |
192| GREEN-LED         RED-LED  RESET|
193|--PORT1-----PORT2----------------|
19413Notes:
195      PORT1/2 - Controller ports for controller/joystick/lightgun etc
196    GREEN-LED - Power LED
197      RED-LED - CDROM drive access LED
198        RESET - Push-button reset switch
199   FLAT-CABLE - 24-pin flat cable joined to main board CN2
200
201
202Large board (VA7 revision documented)
203-----------
204This is a single main board containing everything.
205
206837-12643 IC BD SATURN MAIN VA7 USA SD
207171-7208C (C) SEGA 1996 PC BD SATURN MAIN VA7 USA SD
208(This PCB was found in a USA Saturn, Model MK-80000A, also known as Saturn model 2 with BIOS MPR-17941)
209
210837-12992 IC BD SATURN MAIN VA7 PAL
211171-7424A (C) SEGA 1996 PC BD SATURN MAIN VA7 PAL
212(This PCB was found in a PAL Saturn, Model MK-80200A-50, also known as Saturn model 2 PAL with BIOS MPR-17942)
213
214(note both of these PCBs listed above are almost identical)
215
216|VIDEO--COMM-----------------------------------------------|
217|                        CART_SLOT                BATTERY  |
218|     SW2                |--------|                        |
219|ADAC       RGB          |315-5966|   |--------| ^TC514260 |
220|                        |        |   |YGR022  |           |
221|                        |--------|   |315-5962|           |
222|                                     |--------|           |
223| |--------|  |--------|                   20MHz           |
224| |315-5687|  |315-5964|                        CARD_SLOT  |
225| |        |  |        |                                   |
226| |--------|  |--------|           |----|   LS245 HC08     |
227| ^HM514270  ^524165     HC04      |SH-2|                  |
228| ^5221605   ^5221605              |----|         TC514260 |
229| ^5221605   ^5221605                                      |
230|           |--------|                            TC514260 |
231|  |-----|  |315-5883|   HC04                              |
232|  |68000|  |        |&14.31818MHz |----|  |--------|      |
233|  |-----|  |--------|  %CY2292    |SH-2|  |315-5977-01    |
234|CN3             |------|          |----|  |--------|      |
235|                315-5744                         62257 CN4|
236|            CN7 |------|                                  |
237|--|             32.768kHz LS245 81141625 81141625  ROM |--|
238   |            GREEN-LED                  RESET        |
239   |-------------------PORT1-----PORT2------------------|
240Notes: (all IC's shown. ^ denotes these parts are on the other side of the PCB)
241             ROM - SOP40 mask ROM for BIOS.
242                   Chip is pin-compatible with Toshiba TC574200 or MX27C4100 and can be read with a simple 1:1 DIP40 to SOP40 adapter
243                   JAPAN BIOS marked 'MPR-17940-MX' or 'MPR-17940-T'
244                   USA BIOS   marked 'MPR-17941-MX' or 'MPR-17941-T'
245                   PAL BIOS   marked 'MPR-17942-MX' or 'MPR-17942-T'
246                   T = Toshiba, MX = Macronix. Both contain identical data
247        81141625 - Fujitsu 81141625-017 128k x16-bit x 2 banks (4Mbit) SDRAM
248                   The two 81141625 are the WORK RAM HIGH and two TC514260 (near the SH-2) make up the WORK RAM LOW
249          524165 - Hitachi HM524165CTT17S 128k x16-bit x 2 banks (4Mbit) SDRAM. This is the VDP1 Sprite RAM
250         5221605 - Hitachi HM5221605TT17S 64k x16-bit x 2 banks (2Mbit) SDRAM
251                   Two chips are used for the VDP1 Frame RAM, the other two are for the VDP2 Video RAM
252        TC514260 - 256k x16-bit (4Mbit) DRAM. Any of the following compatible chips are used....
253                   Hitachi HM514260AJ7 / HM514260CJ7
254                   Toshiba TC514260BJ-70
255                   Fujitsu 814260-70
256                   Mitsubishi M5M44260CJ
257                   Samsung KM416C256BJ-7
258                   Hyundai HY514260B JC-70
259                   Vanguard VG264260AJ
260                   Panasonic MN414260CSJ-07
261        HM514270 - Hitachi HM514270 256k x16-bit (4Mbit) DRAM, used for the sound WORK RAM
262           62257 - Epson SRM20257LLM10 32k x8-bit (256kbit) battery-backed SRAM (also used SONY CXK58257AM-10L, NEC UPD43257B-10LL, UM62257AM-70LL)
263            ADAC - Dual CMOS Audio DAC. Either Burr-Brown BBPCM1710U or Philips TDA1386T
264             RGB - RGB to Composite Video Encoder with PAL & NTSC output capability. IC is either Fujitsu MB3516A or ROHM BH7236AF
265            SH-2 - Hitachi HD6417095 SH-2 CPU. Clock input 28.63636MHz (14.31818*2)
266           68000 - Motorola MC68EC000FN12 CPU. Clock input 11.2896MHz
267          CY2292 - Cypress CY2292SC-04 PLL clock generator IC. % = On the VA7 PAL version this chip is replaced with the older Sega PLL (315-5746)
268               & - Master Clock. 14.31818MHz for USA revision or 17.7344MHz for PAL revision
269        315-5744 - Sega 315-5744 Hitachi HD404920 microcontroller used as the System Manager and Peripheral Controller (SMPC)
270        315-5883 - Sega 315-5883 Hitachi HD64440 Video Display Processor 1 (VDP1).
271        315-5687 - Sega 315-5687 Yamaha YMF292-F Saturn Custom Sound Processor (SCSP). Clock input 28.63636MHz (14.31818*2)
272        315-5964 - Sega 315-5964 Video Display Processor 2 (VDP2)
273        315-5966 - Sega 315-5966 System Control Unit (SCU). Clock input 14.31818MHz
274     315-5977-01 - Sega 315-5977-01 DRAM controller
275          YGR022 - Hitachi YGR022 Sega 315-5962 single IC containing CD-Subsystem LSI and Hitachi SH-1 microcontroller with 64k internal ROM. Clock input 20.000MHz
276           VIDEO - 10-pin Mini-DIN video output port
277            COMM - Communication port
278       CARD_SLOT - Expansion slot for MPEG decoder card and other optional expansions
279       CART_SLOT - Expansion slot for plug-in RAM or ROM carts
280         BATTERY - CR2032 3V lithium coin battery. When the system is off the battery provides power to the backup SRAM and SMPC which contains an RTC
281             SW2 - CDROM cover open/close detection switch
282             CN3 - 4-pin or 5-pin power connector
283             CN4 - Flat cable connector for CDROM data cable
284             CN7 - 5-pin connector for CDROM power
285         PORT1/2 - Controller ports for controller/joystick/lightgun etc
286       GREEN-LED - Power LED
287           RESET - Push-button reset switch
288
289
290Motherboard List
291----------------
292Board types used in Model 1: VA0 to VA3
293Board types used in Model 2: VA2 to VA15
294If the VA-number is an even number the board uses a single 8Mbit SGRAM for some of the work RAM, if an odd number it uses two 4Mbit SDRAMs.
295Note there are MANY missing. Please help to update this list if you have info for others not listed here.
296
297837-11076    IC BD SATURN MAIN VA0.5        171-6874E PC BD SATURN MAIN VA0.5      (C) SEGA 1994
298837-11076-01 IC BD SATURN MAIN VA0 CCI      171-6874D PC BD SATURN MAIN VA0.5      (C) SEGA 1994
299837-11491    IC BD SATURN MAIN VA0          171-6962A PC BD SATURN MAIN VA0 USA    (C) SEGA 1995
300837-11493    IC BD SATURN MAIN VA0 PAL      171-6963B PC BD SATURN MAIN VA0 PAL    (C) SEGA 1995
301837-11613-01 IC BD SATURN MAIN VA1          171-7006C PC BD SATURN MAIN VA1        (C) SEGA 1995
302837-11892-01 PAL                            171-7069B MAIN                         (C) SEGA 1995
303837-12126    IC BD SATURN MAIN VA SG        171-7128B PC BD SATURN MAIN VA SG      (C) SEGA 1995
304837-12126    IC BD SATURN MAIN VA SG        171-7128C PC BD SATURN MAIN VA SG      (C) SEGA 1995
305837-12133    IC BD SATURN MAIN VA SD        171-7130C PC BD SATURN MAIN VA SD      (C) SEGA 1995
306837-12134    IC BD SATURN MAIN VA USA SD    171-7130C PC BD SATURN MAIN VA USA SD  (C) SEGA 1995
307837-12135    IC BD SATURN MAIN VA PAL SD    171-7131A PC BD SATURN MAIN VA PAL SD  (C) SEGA 1995
308837-12459    IC BD SATURN MAIN VA6 JPN SG   171-7207A PC BD SATURN MAIN VA6 SG     (C) SEGA 1996
309837-12468    IC BD SATURN MAIN VA8 JPN OCU  171-7209C PC BD SATURN MAIN VA8 OCU    (C) SEGA 1996
310837-12643    IC BD SATURN MAIN VA7 USA SD   171-7208C PC BD SATURN MAIN VA7 USA SD (C) SEGA 1996
311(none)                                      171-7291B PC BD SATURN MAIN VA9 PAL    (C) SEGA 1996
312(none)                                      171-7291C PC BD SATURN MAIN VA9        (C) SEGA 1996
313837-12650    IC BD SATURN MAIN VA13 JPN     171-7???? PC BD SATURN MAIN VA13       (C) SEGA 1996
314837-12845    IC BD SATURN MAIN VA13 USA     171-7???? PC BD SATURN MAIN VA13       (C) SEGA 1996
315837-12992    IC BD SATURN MAIN VA7 PAL      171-7424A PC BD SATURN MAIN VA7 PAL    (C) SEGA 1996
316837-13100    IC BD SATURN MAIN VA13 PAL     171-7455D PC BD SATURN MAIN VA13 PAL   (C) SEGA 1997
317837-13137    IC BD SATURN MAIN VA15 JPN     171-7462B PC BD SATURN MAIN VA15       (C) SEGA 1997
318
319
320Motherboard Variations Summary
321------------------------------
322
323NTSC
324----
325- VA0: First revision. CD Block (YGR019A & HD6437097) is on a daughterboard. Power supply mounted on top casing.
326  Has 40 pin DIP EPROM or mask ROM for BIOS. Larger board with control ports on the main board. Uses JVC CD drive units ENR-007B/ENR-007D.
327- VA1: marked as 'VA' on the main board. Power supply is now bottom mounted and plugs in on top into 5 pins on the main board. Most sub boards
328  integrated into the main board except the controller ports which are on a small sub board. BIOS is SOP40 mask ROM located on the bottom side of
329  the main board. Battery-backup RAM and the VRAM are also on the bottom side of the main board. Uses ENR-007D CD drive units.
330- VA2 & VA3: Mostly same as VA1. VA2 is marked as 'VA SG' (uses SGRAM), and VA3 is marked as VA SD (uses SDRAM). Uses ENR-011A CD drive units.
331- VA4 & VA5: Same as VA2 and VA3 but in a cheaper model 2 case. Uses ENR-011A CD drive units.
332- VA6: One single PCB for everything. Uses an off-the-shelf PLL chip (CY2292). Some custom chips have been revised and have different 315-xxxx numbers.
333  BIOS and battery-backed RAM moved to the top side of the main board. Power supply has 4 pins and generates only +5VDC. Uses ENR-013A CD drive unit
334  or Sanyo 610-6185-30 CD drive unit.
335- VA6 & VA7 has the CD Block reduced to a single IC (YGR022). Some custom chips have been revised and have different 315-xxxx numbers.
336- VA8 & VA9 still has the CD Block ICs separated. VA9 uses the old type PLL chip (315-5746).
337- VA10 to VA15: uses HQA-001A CD drive unit or Sanyo 610-6294-30 / 610-6473-30 CD drive unit. 68000 & YMF292 integrated into a single IC (315-5965).
338  The integrated sound IC has a bug with certain 68000 commands.
339- VA11 has a small daughter board mounted on the main board to fix a design fault (possibly to fix the above sound IC problem?)
340- VA11+ boards use a smaller TSSOP20 audio DAC, VA10 uses the old one.
341- VA12, VA14 and VA16 might not exist.
342- VA13 fixes the design fault on VA11 so the patch board is no longer needed.
343- VA15 integrates the two SH-2 main CPUs into a larger single IC (HD6417098 / 315-6018).
344
345PAL (only the main differences to the above are listed)
346---
347- No PAL board ever used SGRAM.
348- All PAL boards have an odd VA-number.
349- All PAL boards have a 5 pin power connector and use a 5 pin power supply.
350- All PAL boards use different region & video output jumpers when compared to NTSC machines.
351- All PAL boards use a 17.7344MHz master clock (NTSC units use 14.31818MHz).
352- All PAL boards replace the composite sync output on the A/V OUT connector with 9VDC which is used for SCART auto switching. The 9VDC power comes from
353  pin 5 of the power supplies with a 5 pin connector. Composite sync is still there at TP4 on the bottom of the board but not wired into the A/V OUT port.
354- VA0 PAL - has extra jumpers to set the master clock divider (JP18 & 19), functional but unpopulated 50/60Hz switch on the back (SW4).
355- VA1 PAL - unpopulated 50/60Hz switch on the back (SW4). There is a design fault as it is still connected to the master clock divider select pin.
356  Therefore the switch does not work on its own, you have to cut or raise & ground the PLL pin 1 for the switch to work.
357- VA3 PAL - has extra jumpers to set the master clock divider (JP20 & 21), functional but unpopulated 50/60Hz switch on the back (SW4).
358- VA5 PAL - same as VA3 PAL.
359- VA7 PAL - Unlike NTSC boards, this still uses the old PLL (315-5746) and pin 1 is connected to the PAL/NTSC and 50/60Hz selection pins on the video
360            encoder and the VDP2.
361- VA9 - same as VA7 PAL.
362- VA13 PAL - Other than a 5 pin power connector it's identical to the NTSC VA13 board.
363- VA17 PAL - probably the final revision specifically for EU/PAL regions. Differences are unknown.
364
365Power supplies
366--------------
367Type A is used on VA0 main boards and is mounted to the top casing. Pinout is GND, GND, 3.3V, 5V, (empty pin), 9V. (5 pins total)
368Type B is used on VA1 to VA5 main boards and is bottom mounted. Pinout is GND, GND, 3.3V, 5V, 9V. (5 pins total)
369Type C is used on VA6+ main boards and is bottom mounted. Pinout is GND, GND, 5V, 5V (4 pins total).
370PAL units use either Type B or a 5-pin version of Type C power supplies. On earlier boards such as 'VA' the 9V pin is connected to pin 1 of the CD ROM
371unit power supply cable connector on the main board. On later boards it's also connected to the A/V OUT port for SCART auto switching.
372
373CD Drives
374---------
375With 20 pin flat cable connector, VA0-VA1:
376- JVC ENR-007B EMW10447-003E
377- JVC ENR-007B EMW10447-004E
378- JVC ENR-007D EMW10447-005E
379- JVC ENR-007D EMW10447-006E
380- Hitachi JA00292
381
382With 21 pin flat cable connector, VA2-VA5:
383- JVC ENR-011A EMW10589-002
384- JVC ENR-011A EMW10589-003
385
386With 21 pin flat cable connector, VA6-VA9:
387- JVC ENR-013A EMW20035-002 610-6185-20
388- Sanyo 610-6185-30 (sometimes with an extra protection board where the flat cable plugs in)
389
390With 21 pin flat cable connector, VA10-VA15:
391- JVC HQA-001A HQ100002-002 610-6294-20
392- Sanyo 610-6294-30 \
393- Sanyo 610-6473-30 / (sometimes with an extra protection board where the flat cable plugs in)
394These are the same as the VA6-VA9 units but lack an oscillator and have a white border on the edges of the PCB.
395
396Optical pickups used - JVC drive: Optima-6, Hitachi drive: HOP-6, Sanyo drive: SF-P101 is used in the 610-6185-30
397
398****************************************************************************************************
399
400Emulation Notes:
40114-To enter into an Advanced Test Mode,keep pressed the Test Button (F2) on the start-up.
40215-Memo: Some tests done on the original & working PCB,to be implemented:
40316 -The AD-Stick returns 0x00 or a similar value.
trunk/src/mame/drivers/segac2.c
r249889r249890
3030    1992  Puyo Puyo                  Sega / Compile    317-0203         C2     171-5992A
3131    1992  Tant-R (Japan)             Sega              317-0211         C2
3232    1992  Tant-R (Korea)             Sega              ?                C2
33   1993  SegaSonic Popcorn Shop     Sega              317-0140         C2
3433    1994  PotoPoto (Japan)           Sega              317-0218         C2
3534    1994  Stack Columns (Japan)      Sega              317-0219         C2
3635    1994  Stack Columns (World)      Sega              317-0223         C2
r249889r249890
932931INPUT_PORTS_END
933932
934933
935
936static INPUT_PORTS_START( sonicpop )
937   PORT_INCLUDE( systemc_generic )
938
939   PORT_MODIFY("P1")
940   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Relay")  // relay (must be ON by default or machine will instantly give an 'assistance' error)
941   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Coinblock") // coinblock (inverted)
942   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Sensor") // sensor
943   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
944   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Cup Select 1")  // cup select 2
945   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Cup Select 1") // cup select 1
946   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Handle B")  // handle B
947   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Handle A")  // handle A
948
949   PORT_MODIFY("P2")
950   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON9 )  PORT_NAME("Sold Out LED1") // sold out LED 1
951   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON10 ) PORT_NAME("Sold Out LED2") // sold out LED 2
952   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON11 ) PORT_NAME("Sold Out LED3") // sold out LED 3
953   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
954   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Sold Out SW2") // sold out SW 2
955   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_NAME("Sold Out SW3") // sold out SW 3
956   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
957   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("Sold Out SW1") // sold out SW 1
958
959   PORT_MODIFY("SERVICE")
960   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) // coin
961   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE2 ) // 'reset'
962   PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW )
963   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
964   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
965   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
966   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
967   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
968
969   PORT_MODIFY("DSW")
970   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:1")
971   PORT_DIPSETTING(    0x01, DEF_STR( On ) )
972   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
973   PORT_DIPNAME( 0x02, 0x02, "Trouble BGM" ) PORT_DIPLOCATION("SW2:2")
974   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
975   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
976   PORT_DIPNAME( 0x0c, 0x00, "Region" ) PORT_DIPLOCATION("SW2:3,4")
977   PORT_DIPSETTING(    0x00, DEF_STR( USA ) )
978   PORT_DIPSETTING(    0x04, "Export" )
979   PORT_DIPSETTING(    0x08, "USA (duplicate)" )
980   PORT_DIPSETTING(    0x0c, DEF_STR( Japan ) )
981   PORT_DIPNAME( 0x10, 0x10, "Sensor Advertise" ) PORT_DIPLOCATION("SW2:5")
982   PORT_DIPSETTING(    0x10, DEF_STR( On ) )
983   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
984   PORT_DIPUNUSED_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW2:6" )
985   PORT_DIPUNUSED_DIPLOC( 0x40, IP_ACTIVE_LOW, "SW2:7" )
986   PORT_DIPUNUSED_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW2:8" )
987INPUT_PORTS_END
988
989
990934static INPUT_PORTS_START( ribbit )
991935   PORT_INCLUDE( systemc_generic )
992936
r249889r249890
16911635   ROM_LOAD( "epr-14394.ic4", 0x000000, 0x040000, CRC(476e30dd) SHA1(c9d381160c58b05763ea286a53c7ca6de074fda2) )
16921636ROM_END
16931637
1694ROM_START( sonicpop ) /* Sega Sonic Popcorn Shop (Rev.B) (c)1993 Sega - 834-9555-02 (EMP5032 labeled 317-0140) */
1695   ROM_REGION( 0x200000, "maincpu", 0 )
1696   ROM_LOAD16_BYTE( "epr-14592b.ic32", 0x000000, 0x040000, CRC(bac586a1) SHA1(0208213bfa1a5093e76edb1a7e0ba5ebc862801d) )
1697   ROM_LOAD16_BYTE( "epr-15491b.ic31", 0x000001, 0x040000, CRC(527106c3) SHA1(97f08006bba4b87c304c7ad3b1480b77e99dff10) )
1698   ROM_LOAD16_BYTE( "epr-15494.ic34", 0x100000, 0x040000, CRC(0520df5e) SHA1(5a795a1630d841406a106a566228223583deef44) )
1699   ROM_LOAD16_BYTE( "epr-15493.ic33", 0x100001, 0x040000, CRC(d51b3b85) SHA1(66f6b4656841ab70ffde0141a613eaf91c06f86b) )
17001638
1701   ROM_REGION( 0x040000, "upd", 0 )
1702   ROM_LOAD( "epr-15495.ic4", 0x000000, 0x040000, CRC(d3ee4c68) SHA1(557c57b22521339d94d9a3e6fd2af68a67a153b6) )
1703ROM_END
1704
17051639ROM_START( ribbit ) /* Ribbit  (c)1991 Sega */
17061640   ROM_REGION( 0x200000, "maincpu", 0 )
17071641   ROM_LOAD16_BYTE( "epr-13833.ic32", 0x000000, 0x040000, CRC(5347f8ce) SHA1(b95b99536157edfbf0d74a42f64235f47dca7ee1) )
r249889r249890
23852319//    YEAR, NAME,      PARENT,   MACHINE,INPUT,    INIT,     MONITOR,COMPANY,FULLNAME,FLAGS
23862320/* System C Games */
23872321GAME( 1989, bloxeedc,  bloxeed,  segac,  bloxeedc, segac2_state, bloxeedc, ROT0,   "Sega / Elorg", "Bloxeed (World, C System)", 0 )
2388GAME( 1989, bloxeedu,  bloxeed,  segac,  bloxeedc, segac2_state, bloxeedc, ROT0,   "Sega / Elorg", "Bloxeed (US, C System, Rev A)", 0 )
2322GAME( 1989, bloxeedu,  bloxeed,  segac,  bloxeedc, segac2_state, bloxeedc, ROT0,   "Sega / Elorg", "Bloxeed (US, C System)", 0 )
23892323
23902324GAME( 1990, columns,   0,        segac,  columns, segac2_state,  columns,  ROT0,   "Sega", "Columns (World)", 0 )
2391GAME( 1990, columnsu,  columns,  segac,  columnsu, segac2_state, columns,  ROT0,   "Sega", "Columns (US, cocktail, Rev A)", 0 ) // has cocktail mode dsw
2325GAME( 1990, columnsu,  columns,  segac,  columnsu, segac2_state, columns,  ROT0,   "Sega", "Columns (US, cocktail)", 0 ) // has cocktail mode dsw
23922326GAME( 1990, columnsj,  columns,  segac,  columns, segac2_state,  columns,  ROT0,   "Sega", "Columns (Japan)", 0 )
23932327
23942328GAME( 1990, columns2,  0,        segac,  columns2, segac2_state, columns2, ROT0,   "Sega", "Columns II: The Voyage Through Time (World)", 0 )
r249889r249890
24192353GAME( 1994, tantrbl2,  tantr,    segac,  ichir, segac2_state,    tantr,    ROT0,   "bootleg", "Puzzle & Action: Tant-R (Japan) (bootleg set 2)", 0 ) // Common bootleg in Europe, C board, no samples
24202354GAME( 1994, tantrbl3,  tantr,    segac,  ichir, segac2_state,    tantr,    ROT0,   "bootleg", "Puzzle & Action: Tant-R (Japan) (bootleg set 3)", 0 ) // Common bootleg in Europe, C board, no samples
24212355
2422// not really sure how this should hook up, things like the 'sold out' flags could be mechanical sensors, or from another MCU / CPU board in the actual popcorn part of the machine?
2423GAME( 1993, sonicpop,   0,       segac2, sonicpop, segac2_state, bloxeedc, ROT0,   "Sega", "SegaSonic Popcorn Shop (Rev B)", MACHINE_MECHANICAL ) // region DSW for USA / Export / Japan, still speaks Japanese tho.  'Mechanical' part isn't emulated
2424
24252356GAME( 1994, potopoto,  0,        segac2, potopoto, segac2_state, potopoto, ROT0,   "Sega", "Poto Poto (Japan)", 0 )
24262357
24272358GAME( 1994, stkclmns,  0,        segac2, stkclmns, segac2_state, stkclmns, ROT0,   "Sega", "Stack Columns (World)", 0 )
trunk/src/mame/drivers/shougi.c
r249889r249890
6262DIPSW : 6 position (x1)
6363       Positions 1, 5 & 6 not used
6464
65    4    3    2
66    ------------------------------
67    OFF  OFF  OFF  1 minutes (time for the opponent to make his decision)
68    OFF  OFF  ON   2
69    OFF  ON   OFF  3
70    OFF  ON   ON   4
71    ON   OFF  OFF  5
72    ON   OFF  ON   10
73    ON   ON   OFF  20
74    ON   ON   ON   30
65    4   3   2
66       ------------------------------
67       OFF  OFF OFF 1 minutes (time for the opponent to make his decision)
68       OFF  OFF ON  2
69       OFF  ON  OFF 3
70       OFF  ON  ON  4
71       ON   OFF OFF 5
72       ON   OFF ON  10
73       ON   ON  OFF 20
74       ON   ON  ON  30
7575
7676ROMs  : All type 2732
7777PROM  : Type MB7051
7878
79
80
81
7982**************************************************************************/
8083
84
85
8186#include "emu.h"
8287#include "cpu/alph8201/alph8201.h"
83//#include "cpu/hmcs40/hmcs40.h"
8488#include "cpu/z80/z80.h"
8589#include "sound/ay8910.h"
8690#include "video/resnet.h"
8791
88
8992class shougi_state : public driver_device
9093{
9194public:
r249889r249890
9497      m_maincpu(*this, "maincpu"),
9598      m_subcpu(*this, "sub"),
9699      m_mcu(*this, "mcu"),
97      m_videoram(*this, "videoram")
98   { }
100      m_videoram(*this, "videoram") { }
99101
100102   required_device<cpu_device> m_maincpu;
101103   required_device<cpu_device> m_subcpu;
r249889r249890
105107
106108   int m_nmi_enabled;
107109   int m_r;
110   //UINT8 *m_cpu_sharedram;
111   //UINT8 m_cpu_sharedram_control_val;
108112
109   DECLARE_WRITE8_MEMBER(control_w);
113   DECLARE_WRITE8_MEMBER(cpu_sharedram_sub_w);
114   DECLARE_WRITE8_MEMBER(cpu_sharedram_main_w);
115   DECLARE_READ8_MEMBER(cpu_sharedram_r);
116   DECLARE_WRITE8_MEMBER(cpu_shared_ctrl_sub_w);
117   DECLARE_WRITE8_MEMBER(cpu_shared_ctrl_main_w);
118   DECLARE_WRITE8_MEMBER(mcu_halt_off_w);
119   DECLARE_WRITE8_MEMBER(mcu_halt_on_w);
120   DECLARE_WRITE8_MEMBER(nmi_disable_and_clear_line_w);
121   DECLARE_WRITE8_MEMBER(nmi_enable_w);
110122   DECLARE_READ8_MEMBER(dummy_r);
111123
112124   DECLARE_PALETTE_INIT(shougi);
r249889r249890
120132
121133void shougi_state::machine_start()
122134{
123   m_nmi_enabled = 0;
124   m_r = 0;
125   
126135   save_item(NAME(m_nmi_enabled));
127136   save_item(NAME(m_r));
128137}
129138
130139
131
132140/***************************************************************************
133141
134  Video
142  Convert the color PROMs into a more useable format.
135143
136***************************************************************************/
137144
138/***************************************************************************
139
140  Convert the color PROMs into a more useable format.
141
142145  bit 0 -- 1000 ohm resistor--\
143146  bit 1 -- 470 ohm resistor --+--+--> RED
144147  bit 2 -- 220 ohm resistor --/  \---------------1000 ohm resistor---\
r249889r249890
150153
151154***************************************************************************/
152155
156
153157PALETTE_INIT_MEMBER(shougi_state, shougi)
154158{
155159   const UINT8 *color_prom = memregion("proms")->base();
160   int i;
156161   static const int resistances_b[2]  = { 470, 220 };
157162   static const int resistances_rg[3] = { 1000, 470, 220 };
158163   double weights_r[3], weights_g[3], weights_b[2];
159164
160   compute_resistor_weights(0, 255, -1.0,
165
166   compute_resistor_weights(0, 255,    -1.0,
161167         3,  resistances_rg, weights_r,  1000, 0,
162168         3,  resistances_rg, weights_g,  1000, 0,
163169         2,  resistances_b,  weights_b,  1000, 0);
164170
165   for (int i = 0; i < palette.entries(); i++)
171   for (i = 0;i < palette.entries();i++)
166172   {
167173      int bit0,bit1,bit2,r,g,b;
168174
r249889r249890
188194}
189195
190196
197
198
191199UINT32 shougi_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
192200{
193   for (int offs = 0; offs < 0x4000; offs++)
201   int offs;
202
203   for (offs = 0;offs <0x4000; offs++)
194204   {
195205      int sx, sy, x, data1, data2, color, data;
196206
197207      sx = offs >> 8;     /*00..0x3f (64*4=256)*/
198208      sy = offs & 0xff;   /*00..0xff*/
209      //if (flipscreen[0]) sx = 31 - sx;
210      //if (flipscreen[1]) sy = 31 - sy;
199211
200      data1 = m_videoram[offs];           /* color */
212      data1 = m_videoram[offs];               /* color */
201213      data2 = m_videoram[0x4000 + offs];  /* pixel data */
202214
203215      for (x=0; x<4; x++) /*4 pixels per byte (2 bitplanes in 2 nibbles: 1st=bits 7-4, 2nd=bits 3-0)*/
r249889r249890
212224   return 0;
213225}
214226
227#if 0
215228
229//to do:
230// add separate sharedram/r/w() for both CPUs and use control value to verify access
216231
217/***************************************************************************
232WRITE8_MEMBER(shougi_state::cpu_sharedram_sub_w)
233{
234   if (m_cpu_sharedram_control_val!=0) logerror("sub CPU access to shared RAM when access set for main cpu\n");
235   m_cpu_sharedram[offset] = data;
236}
218237
219  I/O
238WRITE8_MEMBER(shougi_state::cpu_sharedram_main_w)
239{
240   if (m_cpu_sharedram_control_val!=1) logerror("main CPU access to shared RAM when access set for sub cpu\n");
241   m_cpu_sharedram[offset] = data;
242}
220243
221***************************************************************************/
244READ8_MEMBER(shougi_state::cpu_sharedram_r)
245{
246   return m_cpu_sharedram[offset];
247}
222248
223// maincpu side
249#endif
224250
225WRITE8_MEMBER(shougi_state::control_w)
251WRITE8_MEMBER(shougi_state::cpu_shared_ctrl_sub_w)
226252{
227   // 4800-480f connected to the 74LS259, A3 is data line
228   // so 4800-4807 write 0, and 4808-480f write 1
229   data = offset >> 3 & 1;
230   offset &= 7;
253   //m_cpu_sharedram_control_val = 0;
254   //logerror("cpu_sharedram_ctrl=SUB");
255}
231256
232   switch (offset)
257WRITE8_MEMBER(shougi_state::cpu_shared_ctrl_main_w)
258{
259   //m_cpu_sharedram_control_val = 1;
260   //logerror("cpu_sharedram_ctrl=MAIN");
261}
262
263WRITE8_MEMBER(shougi_state::mcu_halt_off_w)
264{
265   /* logerror("mcu HALT OFF"); */
266   m_mcu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
267}
268
269WRITE8_MEMBER(shougi_state::mcu_halt_on_w)
270{
271   /* logerror("mcu HALT ON"); */
272   m_mcu->set_input_line(INPUT_LINE_HALT,ASSERT_LINE);
273}
274
275
276WRITE8_MEMBER(shougi_state::nmi_disable_and_clear_line_w)
277{
278   m_nmi_enabled = 0; /* disable NMIs */
279
280   /* NMI lines are tied together on both CPUs and connected to the LS74 /Q output */
281   m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
282   m_subcpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
283}
284
285WRITE8_MEMBER(shougi_state::nmi_enable_w)
286{
287   m_nmi_enabled = 1; /* enable NMIs */
288}
289
290INTERRUPT_GEN_MEMBER(shougi_state::vblank_nmi)
291{
292   if ( m_nmi_enabled == 1 )
233293   {
234      case 0:
235         // TODO
236         // 0: sharedram = sub
237         // 1: sharedram = main
238         break;
239     
240      case 1:
241         m_nmi_enabled = data;
242
243         // NMI lines are tied together on both CPUs and connected to the LS74 /Q output
244         if (!m_nmi_enabled)
245         {
246            m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
247            m_subcpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
248         }
249         break;
250     
251      case 4:
252         m_mcu->set_input_line(INPUT_LINE_HALT, data ? ASSERT_LINE : CLEAR_LINE);
253         break;
254     
255      default:
256         // 7: ?????? connected to +5v via resistor
257         break;
294      /* NMI lines are tied together on both CPUs and connected to the LS74 /Q output */
295      m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
296      m_subcpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
258297   }
259298}
260299
261300
262301static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, shougi_state )
263302   AM_RANGE(0x0000, 0x3fff) AM_ROM
264   AM_RANGE(0x4000, 0x43ff) AM_RAM /* 2114 x 2 (0x400 x 4bit each) */
265   AM_RANGE(0x4800, 0x480f) AM_WRITE(control_w)
266   AM_RANGE(0x4800, 0x4800) AM_READ_PORT("DSW")
303   AM_RANGE(0x4000, 0x43ff) AM_RAM     /* 2114 x 2 (0x400 x 4bit each) */
304
305   /* 4800-480f connected to the 74LS259, A3 is data line so 4800-4807 write 0, and 4808-480f write 1 */
306   AM_RANGE(0x4800, 0x4800) AM_READ_PORT("DSW") AM_WRITE(cpu_shared_ctrl_sub_w)
307   AM_RANGE(0x4801, 0x4801) AM_WRITE(nmi_disable_and_clear_line_w)
308   AM_RANGE(0x4802, 0x4802) AM_NOP
309   AM_RANGE(0x4803, 0x4803) AM_NOP
310   AM_RANGE(0x4804, 0x4804) AM_WRITE(mcu_halt_off_w)
311   AM_RANGE(0x4807, 0x4807) AM_WRITENOP    //?????? connected to +5v via resistor
312   AM_RANGE(0x4808, 0x4808) AM_WRITE(cpu_shared_ctrl_main_w)
313   AM_RANGE(0x4809, 0x4809) AM_WRITE(nmi_enable_w)
314   AM_RANGE(0x480a, 0x480a) AM_NOP
315   AM_RANGE(0x480b, 0x480b) AM_NOP
316   AM_RANGE(0x480c, 0x480c) AM_WRITE(mcu_halt_on_w)
317   AM_RANGE(0x480f, 0x480f) AM_NOP
318
267319   AM_RANGE(0x5000, 0x5000) AM_READ_PORT("P1")
268   AM_RANGE(0x5800, 0x5800) AM_READ_PORT("P2") AM_WRITE(watchdog_reset_w) /* game won't boot if watchdog doesn't work */
320   AM_RANGE(0x5800, 0x5800) AM_READ_PORT("P2") AM_WRITE(watchdog_reset_w)   /* game won't boot if watchdog doesn't work */
269321   AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("aysnd", ay8910_device, address_w)
270322   AM_RANGE(0x6800, 0x6800) AM_DEVWRITE("aysnd", ay8910_device, data_w)
271323   AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("share1") /* 2114 x 2 (0x400 x 4bit each) */
272324   AM_RANGE(0x7800, 0x7bff) AM_RAM AM_SHARE("share2") /* 2114 x 2 (0x400 x 4bit each) */
273   AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("videoram") /* 4116 x 16 (32K) */
325
326   AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("videoram")    /* 4116 x 16 (32K) */
274327ADDRESS_MAP_END
275328
276
277// subcpu side
278
329/* sub */
279330READ8_MEMBER(shougi_state::dummy_r)
280331{
281   // ?
282332   m_r ^= 1;
283333
284   if (m_r)
334   if(m_r)
285335      return 0xff;
286336   else
287337      return 0;
288338}
289339
340static ADDRESS_MAP_START( readport_sub, AS_IO, 8, shougi_state )
341   ADDRESS_MAP_GLOBAL_MASK( 0x00ff )
342   AM_RANGE(0x00, 0x00) AM_READ(dummy_r)
343ADDRESS_MAP_END
290344
291345static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 8, shougi_state )
292346   AM_RANGE(0x0000, 0x5fff) AM_ROM
293347   AM_RANGE(0x6000, 0x63ff) AM_RAM AM_SHARE("share2") /* 2114 x 2 (0x400 x 4bit each) */
294348ADDRESS_MAP_END
295349
296static ADDRESS_MAP_START( readport_sub, AS_IO, 8, shougi_state )
297   ADDRESS_MAP_GLOBAL_MASK(0x00ff)
298   AM_RANGE(0x00, 0x00) AM_READ(dummy_r)
299ADDRESS_MAP_END
300
301
302// mcu side (fake!)
303
304350static ADDRESS_MAP_START( mcu_map, AS_PROGRAM, 8, shougi_state )
305351   AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("share1")
306352ADDRESS_MAP_END
307353
308354
309355
310/***************************************************************************
311
312  Inputs
313
314***************************************************************************/
315
316356static INPUT_PORTS_START( shougi )
317357   PORT_START("P1")
318358   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START2 )
319359   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START1 )
320   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 )
321   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
322   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
323   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
324   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
325   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
360   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)
361   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
362   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
363   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
364   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
365   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
326366
327367   PORT_START("P2")
328368   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
329369   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
330370   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)
331371   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
332   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
333   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
334   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
335   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP  ) PORT_PLAYER(2)
372   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
373   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
374   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
375   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP  ) PORT_8WAY PORT_PLAYER(2)
336376
337377   // dip switch order is not sequential. Only 2,3,4, and 5 identified.
338378   // 1 and 6 missing, with three possible positions (the third available
r249889r249890
373413
374414
375415
376/***************************************************************************
377
378  Machine Config
379
380***************************************************************************/
381
382INTERRUPT_GEN_MEMBER(shougi_state::vblank_nmi)
383{
384   if (m_nmi_enabled)
385   {
386      m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
387      m_subcpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
388   }
389}
390
391
392416static MACHINE_CONFIG_START( shougi, shougi_state )
393417
394   /* basic machine hardware */
395   MCFG_CPU_ADD("maincpu", Z80, XTAL_10MHz/4)
418   MCFG_CPU_ADD("maincpu", Z80,10000000/4)
396419   MCFG_CPU_PROGRAM_MAP(main_map)
397420   MCFG_CPU_VBLANK_INT_DRIVER("screen", shougi_state, vblank_nmi)
398421
399   MCFG_CPU_ADD("sub", Z80, XTAL_10MHz/4)
422   MCFG_CPU_ADD("sub", Z80,10000000/4)
400423   MCFG_CPU_PROGRAM_MAP(sub_map)
401424   MCFG_CPU_IO_MAP(readport_sub)
425   /* NMIs triggered in vblank_nmi() */
402426
403   MCFG_CPU_ADD("mcu", ALPHA8201, XTAL_10MHz/4/8)
427   /* MCU */
428   MCFG_CPU_ADD("mcu", ALPHA8201, 10000000/4/8)
404429   MCFG_CPU_PROGRAM_MAP(mcu_map)
405430
406   MCFG_QUANTUM_PERFECT_CPU("maincpu")
407   MCFG_WATCHDOG_VBLANK_INIT(16) // assuming it's the same as champbas
431   MCFG_QUANTUM_TIME(attotime::from_hz(600))
432   MCFG_WATCHDOG_VBLANK_INIT(16)   // assuming it's the same as champbas
408433
409434   /* video hardware */
410435   MCFG_SCREEN_ADD("screen", RASTER)
r249889r249890
421446   /* sound hardware */
422447   MCFG_SPEAKER_STANDARD_MONO("mono")
423448
424   MCFG_SOUND_ADD("aysnd", AY8910, XTAL_10MHz/8)
449   MCFG_SOUND_ADD("aysnd", AY8910, 10000000/8)
425450   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
426451MACHINE_CONFIG_END
427452
428453
429454
430/***************************************************************************
431
432  Game driver(s)
433
434***************************************************************************/
435
436455ROM_START( shougi )
437456   ROM_REGION( 0x10000, "maincpu", 0 )
438457   ROM_LOAD( "1.3a",    0x0000, 0x1000, CRC(b601303f) SHA1(ed07fb09053e15be49f4cb66e8916d1bdff48336) )
r249889r249890
440459   ROM_LOAD( "2.3b",    0x2000, 0x1000, CRC(09cb831f) SHA1(5a83a22d9245f980fe6a495433e51437d1f95644) )
441460   ROM_LOAD( "4.3d",    0x3000, 0x1000, CRC(ad1a642a) SHA1(d12b10f94a568d1126384e14af4b53c5e5b1a0d0) )
442461
443   ROM_REGION( 0x10000, "sub", ROMREGION_ERASE00 )
462   ROM_REGION( 0x10000, "sub", 0 )
444463   ROM_LOAD( "5.3e",    0x0000, 0x1000, CRC(ff1f07d0) SHA1(ae5bab09916b6d4ad8d3568ea39501850bdc6991) )
445464   ROM_LOAD( "8.3j",    0x1000, 0x1000, CRC(6230c4c1) SHA1(0b2c81bb02c270ed3bb5b42c4bd4eb25023090cb) )
446465   ROM_LOAD( "6.3f",    0x2000, 0x1000, CRC(d5a91b16) SHA1(1d21295667c3eb186f9e7f867763f2f2697fd350) )
r249889r249890
455474   ROM_LOAD( "pr.2l",   0x0000, 0x0020, CRC(cd3559ff) SHA1(a1291b06a8a337943660b2ef62c94c49d58a6fb5) )
456475ROM_END
457476
458
459477ROM_START( shougi2 )
460478   ROM_REGION( 0x10000, "maincpu", 0 )
461479   ROM_LOAD( "1-2.3a",    0x0000, 0x1000, CRC(16d75306) SHA1(2d090396abd1fe2b31cb8450cc5d2fbde75e0230) )
r249889r249890
479497ROM_END
480498
481499
482/*    YEAR  NAME     PARENT  MACHINE  INPUT    INIT              MONITOR, COMPANY, FULLNAME, FLAGS */
483GAME( 1982, shougi,  0,      shougi,  shougi,  driver_device, 0, ROT0, "Alpha Denshi Co. (Tehkan license)", "Shougi", MACHINE_SUPPORTS_SAVE )
484GAME( 1982, shougi2, 0,      shougi,  shougi2, driver_device, 0, ROT0, "Alpha Denshi Co. (Tehkan license)", "Shougi Part II", MACHINE_SUPPORTS_SAVE )
500
501GAME( 1982, shougi,  0,      shougi, shougi, driver_device,  0, ROT0, "Alpha Denshi Co.", "Shougi", MACHINE_SUPPORTS_SAVE )
502GAME( 1982, shougi2, shougi, shougi, shougi2, driver_device, 0, ROT0, "Alpha Denshi Co.", "Shougi 2", MACHINE_SUPPORTS_SAVE )
trunk/src/mame/drivers/sorcerer.c
r249889r249890
489489***************************************************************************/
490490ROM_START(sorcerer)
491491   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
492   ROM_LOAD("exmo1-1.1e",   0xe000, 0x0800, CRC(ac924f67) SHA1(72fcad6dd1ed5ec0527f967604401284d0e4b6a1) ) /* monitor roms */
493   ROM_LOAD("exmo1-2.2e",   0xe800, 0x0800, CRC(ead1d0f6) SHA1(c68bed7344091bca135e427b4793cc7d49ca01be) )
494   ROM_LOAD("exchr-1.20d",  0xf800, 0x0400, CRC(4a7e1cdd) SHA1(2bf07a59c506b6e0c01ec721fb7b747b20f5dced) ) /* char rom */
492   ROM_LOAD("exmo1-1.dat", 0xe000, 0x0800, CRC(ac924f67) SHA1(72fcad6dd1ed5ec0527f967604401284d0e4b6a1) ) /* monitor roms */
493   ROM_LOAD("exmo1-2.dat", 0xe800, 0x0800, CRC(ead1d0f6) SHA1(c68bed7344091bca135e427b4793cc7d49ca01be) )
494   ROM_LOAD("exchr-1.dat", 0xf800, 0x0400, CRC(4a7e1cdd) SHA1(2bf07a59c506b6e0c01ec721fb7b747b20f5dced) ) /* char rom */
495495ROM_END
496496
497497ROM_START(sorcererd)
498498   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
499   ROM_LOAD("diskboot.dat", 0xbc00, 0x0100, CRC(d82a40d6) SHA1(cd1ef5fb0312cd1640e0853d2442d7d858bc3e3b) )
500   ROM_LOAD("exmo1-1.1e",   0xe000, 0x0800, CRC(ac924f67) SHA1(72fcad6dd1ed5ec0527f967604401284d0e4b6a1) ) /* monitor roms */
501   ROM_LOAD("exmo1-2.2e",   0xe800, 0x0800, CRC(ead1d0f6) SHA1(c68bed7344091bca135e427b4793cc7d49ca01be) )
502   ROM_LOAD("exchr-1.20d",  0xf800, 0x0400, CRC(4a7e1cdd) SHA1(2bf07a59c506b6e0c01ec721fb7b747b20f5dced) ) /* char rom */
499   ROM_LOAD("diskboot.dat",0xbc00, 0x0100, CRC(d82a40d6) SHA1(cd1ef5fb0312cd1640e0853d2442d7d858bc3e3b) )
500   ROM_LOAD("exmo1-1.dat", 0xe000, 0x0800, CRC(ac924f67) SHA1(72fcad6dd1ed5ec0527f967604401284d0e4b6a1) ) /* monitor roms */
501   ROM_LOAD("exmo1-2.dat", 0xe800, 0x0800, CRC(ead1d0f6) SHA1(c68bed7344091bca135e427b4793cc7d49ca01be) )
502   ROM_LOAD("exchr-1.dat", 0xf800, 0x0400, CRC(4a7e1cdd) SHA1(2bf07a59c506b6e0c01ec721fb7b747b20f5dced) ) /* char rom */
503503
504504   ROM_REGION( 0x200, "proms", 0 )
505   ROM_LOAD_OPTIONAL("bruce.15b",  0x0000, 0x0020, CRC(fae922cb) SHA1(470a86844cfeab0d9282242e03ff1d8a1b2238d1) ) /* video prom type 6331 */
505   ROM_LOAD_OPTIONAL("bruce.dat",  0x0000, 0x0020, CRC(fae922cb) SHA1(470a86844cfeab0d9282242e03ff1d8a1b2238d1) ) /* video prom */
506506ROM_END
507507
508ROM_START(sorcerer2)
509   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
510   ROM_LOAD("exchr-1.20d",  0xf800, 0x0400, CRC(4a7e1cdd) SHA1(2bf07a59c506b6e0c01ec721fb7b747b20f5dced) ) /* char rom */
511   ROM_SYSTEM_BIOS(0, "standard", "Standard")
512   ROMX_LOAD("exm011-1.1e", 0xe000, 0x0800, CRC(af9394dc) SHA1(d7e0ada64d72d33e0790690be86a36020b41fd0d), ROM_BIOS(1) )
513   ROMX_LOAD("exm011-2.2e", 0xe800, 0x0800, CRC(49978d6c) SHA1(b94127bfe99e5dc1cf5dbbb7d1b099b0ca036cd0), ROM_BIOS(1) )
514   ROM_SYSTEM_BIOS(1, "tvc", "TVI-MON-C-V1.5")
515   ROMX_LOAD("tvc-1.1e",    0xe000, 0x0800, CRC(efc15a18) SHA1(3dee821270a0d83453b18baed88a024dfd0d7a6c), ROM_BIOS(2) )
516   ROMX_LOAD("tvc-2.2e",    0xe800, 0x0800, CRC(bc194487) SHA1(dcfd916558e3e3be22091c5558ea633c332cf6c7), ROM_BIOS(2) )
517ROM_END
518
519508/*   YEAR  NAME       PARENT    COMPAT    MACHINE    INPUT     INIT        COMPANY     FULLNAME */
520509COMP(1979, sorcerer,  0,        0,        sorcerer,  sorcerer, sorcerer_state, sorcerer, "Exidy Inc", "Sorcerer", 0 )
521COMP(1979, sorcerer2, sorcerer, 0,        sorcerer,  sorcerer, sorcerer_state, sorcerer, "Exidy Inc", "Sorcerer 2", 0 )
522510COMP(1979, sorcererd, sorcerer, 0,        sorcererd, sorcerer, sorcerer_state, sorcerer, "Exidy Inc", "Sorcerer (with floppy disks)", 0 )
trunk/src/mame/drivers/subhuntr.c
r249889r249890
1// license:BSD-3-Clause
2// copyright-holders:David Haywood
3/*
4
5QTY    Type    clock    position    function
62x    2636          Programmable Video Interface
71x    2650    OSC/2 = 1.7897725 MHz       8-bit Microprocessor - main
81x    oscillator    3.579545 MHz       
9
10ROMs
11QTY    Type    position    status
124x    2708    6F,6H,6L,6N    dumped
131x    N82S115    2B    dumped
14
15RAMs
16QTY    Type    position
172x    2101   
18
19*/
20
21#include "emu.h"
22#include "cpu/s2650/s2650.h"
23#include "machine/s2636.h"
24
25
26class subhuntr_state : public driver_device
27{
28public:
29   subhuntr_state(const machine_config &mconfig, device_type type, const char *tag)
30      : driver_device(mconfig, type, tag),
31      m_maincpu(*this, "maincpu")
32   {
33   }
34
35   required_device<cpu_device> m_maincpu;
36   
37   INTERRUPT_GEN_MEMBER(subhuntr_interrupt);
38
39   virtual void machine_start();
40   virtual void machine_reset();
41   virtual void video_start();
42   DECLARE_PALETTE_INIT(subhuntr);
43   UINT32 screen_update_subhuntr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
44};
45
46
47/***************************************************************************
48
49  Video
50
51***************************************************************************/
52
53PALETTE_INIT_MEMBER(subhuntr_state, subhuntr)
54{
55}
56
57UINT32 subhuntr_state::screen_update_subhuntr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
58{
59   return 0;
60}
61
62void subhuntr_state::video_start()
63{
64}
65
66
67/***************************************************************************
68
69  Memory Maps, I/O
70
71***************************************************************************/
72
73static ADDRESS_MAP_START( subhuntr_map, AS_PROGRAM, 8, subhuntr_state )
74   AM_RANGE(0x0000, 0x0fff) AM_ROM
75   AM_RANGE(0x1c00, 0x1fff) AM_RAM
76ADDRESS_MAP_END
77
78static ADDRESS_MAP_START( subhuntr_io_map, AS_IO, 8, subhuntr_state )
79//   AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE( ,  )
80//   AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE( ,  )
81//   AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ_PORT("SENSE")
82ADDRESS_MAP_END
83
84/***************************************************************************
85
86  Inputs
87
88***************************************************************************/
89
90static INPUT_PORTS_START( subhuntr )
91   PORT_START("SENSE")
92   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
93INPUT_PORTS_END
94
95
96/***************************************************************************
97
98  Machine Config/Interface
99
100***************************************************************************/
101
102void subhuntr_state::machine_start()
103{
104}
105
106void subhuntr_state::machine_reset()
107{
108}
109
110INTERRUPT_GEN_MEMBER(subhuntr_state::subhuntr_interrupt)
111{
112//   device.execute().set_input_line_and_vector(0, HOLD_LINE, 0x03);
113}
114
115static const gfx_layout tiles8x8_layout =
116{
117   8,8,
118   RGN_FRAC(1,1),
119   1,
120   { 0 },
121   { 0, 1, 2, 3, 4, 5, 6, 7 },
122   { 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8 },
123   8*8
124};
125
126static GFXDECODE_START( subhuntr )
127   GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 1 )
128GFXDECODE_END
129
130
131static MACHINE_CONFIG_START( subhuntr, subhuntr_state )
132
133   /* basic machine hardware */
134   MCFG_CPU_ADD("maincpu", S2650, 14318180/4/2)
135   MCFG_CPU_PROGRAM_MAP(subhuntr_map)
136   MCFG_CPU_IO_MAP(subhuntr_io_map)
137   MCFG_CPU_VBLANK_INT_DRIVER("screen", subhuntr_state, subhuntr_interrupt)
138
139//   MCFG_DEVICE_ADD("s2636", S2636, 0)
140//   MCFG_S2636_WORKRAM_SIZE(0x100)
141//   MCFG_S2636_OFFSETS(3, -21)
142//   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
143
144   /* video hardware */
145   MCFG_SCREEN_ADD("screen", RASTER)
146   MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
147   MCFG_SCREEN_REFRESH_RATE(50)
148   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
149   MCFG_SCREEN_SIZE(256, 256)
150   MCFG_SCREEN_VISIBLE_AREA(1*8, 29*8-1, 2*8, 32*8-1)
151   MCFG_SCREEN_UPDATE_DRIVER(subhuntr_state, screen_update_subhuntr)
152   MCFG_SCREEN_PALETTE("palette")
153   
154   MCFG_GFXDECODE_ADD("gfxdecode", "palette", subhuntr)
155
156   MCFG_PALETTE_ADD("palette", 26)
157   MCFG_PALETTE_INIT_OWNER(subhuntr_state, subhuntr)
158
159   /* sound hardware */
160   MCFG_SPEAKER_STANDARD_MONO("mono")
161
162   /* discrete sound */
163MACHINE_CONFIG_END
164
165
166
167/******************************************************************************/
168
169ROM_START( subhuntr )
170   ROM_REGION( 0x1000, "maincpu", 0 )
171   ROM_LOAD( "MR21.6F",  0x0000, 0x0400, CRC(27847939) SHA1(e6b41b511fefac1e1e207eff2dac8c2963d47c5c) )
172   ROM_LOAD( "MR22.6G",  0x0400, 0x0400, CRC(e9af1ee8) SHA1(451e88407a120444377a58b06b65152c57503533) )
173   ROM_LOAD( "MR25.6L",  0x0800, 0x0400, CRC(8271c975) SHA1(c7192658b50d781ab1b94c2e8cb75c5be3539820) )
174   ROM_LOAD( "MR24.6N",  0x0c00, 0x0400, CRC(385c4944) SHA1(84050b0356c9a3a36528dba768f2684e28c6c7c4) )
175
176   ROM_REGION( 0x0200, "gfx1", 0 )
177   ROM_LOAD( "82S115.2B",   0x0000, 0x0200, CRC(6946c9de) SHA1(956b4bebe6960a73609deb75e1493c4127fd7f77) ) // ASCII, not much else
178ROM_END
179
180GAME(1979, subhuntr,  0,        subhuntr, subhuntr, driver_device, 0, ROT0, "Model Racing", "Sub Hunter (Model Racing)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
trunk/src/mame/drivers/suna16.c
r249889r249890
939939
940940   MCFG_QUANTUM_TIME(attotime::from_hz(6000))
941941
942   MCFG_MACHINE_START_OVERRIDE(suna16_state,uballoon)
943   MCFG_MACHINE_RESET_OVERRIDE(suna16_state,uballoon)
944
945
946942   /* video hardware */
947943   MCFG_SCREEN_ADD("screen", RASTER)
948944   MCFG_SCREEN_REFRESH_RATE(60)
trunk/src/mame/drivers/swyft.c
r249889r249890
1// license:BSD-3-Clause
2// copyright-holders:Miodrag Milanovic, Jonathan Gevaryahu
3/***************************************************************************
4
5    IAI Swyft Model P0001
6    Copyright (C) 2009-2013 Miodrag Milanovic and Jonathan Gevaryahu AKA Lord Nightmare
7    With information and help from John "Sandy" Bumgarner, Dwight Elvey,
8    Charles Springer, Terry Holmes, Jonathan Sand, Aza Raskin and others.
9
10    See cat.c for the machine which the swyft later became.
11
12    This driver is dedicated in memory of Jef Raskin and Dave Boulton
13
14IAI detailed credits:
15Scott Kim - responsible for fonts on swyft and cat
16Ralph Voorhees - Model construction and mockups (swyft 'flat cat')
17
18Cat HLSL stuff:
19*scanlines:
20the cat has somewhat visible and fairly close scanlines with very little fuzziness
21try hlsl options:
22hlsl_prescale_x           4
23hlsl_prescale_y           4
24scanline_alpha            0.3
25scanline_size             1.0
26scanline_height           0.7
27scanline_bright_scale     1.0
28scanline_bright_offset    0.6
29*phosphor persistence of the original cat CRT is VERY LONG and fades to a greenish-yellow color, though the main color itself is white
30try hlsl option:
31phosphor_life             0.93,0.95,0.87
32which is fairly close but may actually be too SHORT compared to the real thing.
33
34
35Swyft versions:
36There are at least 4 variants of machines called 'swyft':
37* The earliest desktop units which use plexi or rubber-tooled case and an
38  angled monitor; about a dozen were made and at least two of clear plexi.
39  These are sometimes called "wrinkled" swyfts. 5.25" drive, they may be able
40  to read Apple2 Swyftware/Swyftdisk and Swyftcard-created disks.
41  It is possible no prototypes of this type got beyond the 'runs forth console only' stage.
42  http://archive.computerhistory.org/resources/access/physical-object/2011/09/102746929.01.01.lg.JPG
43  http://www.digibarn.com/collections/systems/swyft/Swyft-No2-05-1271.jpg
44  http://www.digibarn.com/friends/jef-raskin/slides/iai/A%20-687%20SWYFTPRO.JPG
45* The early "flat cat" or "roadkill" portable LCD screen units with a white
46  case and just a keyboard. Model SP0001
47  http://www.digibarn.com/collections/systems/swyft/Image82.jpg
48* The later "ur-cat" desktop units which use a machine tooled case and look
49  more or less like the canon cat. Around 100-200 were made. 3.5" drive.
50  These have a fully functional EDDE editor as the cat does, and can even compile
51  forth programs.
52  (the 'swyft' driver is based on one of these)
53* The very late portable LCD units with a dark grey case and a row of hotkey
54  buttons below the screen. Not dumped yet. At least one functional prototype exists.
55  At least one plastic mockup exists with no innards.
56  http://www.digibarn.com/collections/systems/swyft/swyft.jpg
57
58IAI Swyft:
59Board name: 950-0001C
60"INFORMATION APPLIANCE INC. COPYRIGHT 1985"
61 _________________|||||||||___________________________________________________________________________________
62|                     J8               [=======J3=======]  ____                              Trans-           |
63==                                                        /    \  (E2)                       former           |
64==Jx                   74LS107   J5                       |PB1 |        uA339     MC3403                 -----|
65|                                          7407           \____/                                         J7   =
66| Y1       "TIMING B" 74LS132    74LS175                                                                 -----|
67|                                                  ____________                            4N37  Relay   -----|
68| TMS4256   74LS161  "DECODE E" "DISK 3.5C"       |            |                                         J6   =
69|                                                 |  MC6850P   |                                         -----|
70| TMS4256   74LS166   74HCT259   74LS299          '------------'        MC3403    MC3403                 _____|
71|                      ___________________     ___________________             ||                       |     =
72| TMS4256   74LS373   |                   |   |                   |            J2                       | J1  =
73|                     |   MC68008P8       |   |       R6522P      |            ||              I   P R  |     =
74| TMS4256   74F153    '-------------------'   '-------------------'     MN4053 || MN4053       N   R E  | B   =
75|                                    (E1)                                                      D   O S  | R   =
76| TMS4256   74F153    74HCT08     __________   ___________________      MC14412   DS1489       U E T I  | E   =
77|                                |          | |                   | ||                         C S E S  | A   =
78| TMS4256   74F153    74HC4040E  | AM27256  | |       R6522P      | ||                         T D C T  | K   =
79|                                '----------' '-------------------' ||  INFORMATION            O   T O  | O   =
80| TMS4256   74F153    "VIDEO 2B" .----------.                       J4  APPLIANCE INC.         R   I R  | U   =
81|                                | AM27256  |   74HC02     74HC374  ||  Copyright 1985         S   O S  | T   =
82| TMS4256   74F153    74LS393  B1|__________|                       ||  UM95089  Y2                N    |     =
83|_____________________________[________J9___]__________________________________________________D13______|_____=
84
85*Devices of interest:
86J1: breakout of joystick, serial/rs232, hex-keypad, parallel port, and forth switch (and maybe cassette?) pins
87    DIL 60 pin 2-row right-angle rectangular connector with metal shield contact;
88    not all 60 pins are populated in the connector, only pins 1-6, 8, 13-15, 17-18, 23-30, 35-60 are present
89    (traced partly by dwight)
90J2: unpopulated 8-pin sip header, serial/rs232-related?
91    (vcc ? ? ? ? ? ? gnd) (random guess: txd, rxd, rts, cts, dsr, dtr, and one pin could be cd/ri though the modem circuit may do that separately?)
92J3: Floppy Connector
93    (standard DIL 34 pin 2-row rectangular connector for mini-shugart/pc floppy cable; pin 2 IS connected somewhere and ?probably? is used for /DISKCHANGE like on an Amiga, with pin 34 being /TRUEREADY?)
94    (as opposed to normal ibm pc 3.5" drives where pin 2 is unconnected or is /DENSITY *input to drive*, and pin 34 is /DISKCHANGE)
95J4: 18-pin sip header for keyboard ribbon cable; bottom edge of board is pin 1
96    Pins:
97    1: GND through 220k resistor r78
98    2: ? phone hook related? anode of diode d7; one of the pins of relay k2; topmost (boardwise) pin of transistor Q10
99    3: 74HCT34 pin
100
101J5: locking-tab-type "CONN HEADER VERT 4POS .100 TIN" connector for supplying power
102    through a small cable with a berg connector at the other end, to the floppy drive
103    (5v gnd gnd 12v)
104J6: Phone connector, rj11 jack
105J7: Line connector, rj11 jack
106J8: 9-pin Video out/power in connector "CONN RECEPT 6POS .156 R/A PCB" plus "CONN RECEPT 3POS .156 R/A PCB" acting as one 9-pin connector
107    (NC ? ? ? NC NC ? 12v 5v) (video, vsync, hsync and case/video-gnd are likely here)
108    (the video pinout of the cat is: (Video Vsync Hsync SyncGnd PwrGnd PwrGnd +5v(VCC) +12v(VDD) -12v(VEE)) which is not the same as the swyft.
109J9: unpopulated DIL 40-pin straight connector for a ROM debug/expansion/RAM-shadow daughterboard
110    the pins after pin 12 connect to that of the ROM-LO 27256 pinout counting pins 1,28,2,27,3,26,etc
111    the ROM-HI rom has a different /HICE pin which is not connected to this connector
112    /LOCE is a15
113    /HICE is !a15
114    /ROM_OE comes from pin 14 of DECODE_E pal, and is shorted to /ROM_OE' by the cuttable jumper B1 which is not cut
115    /ROM_OE' goes to the two EPROMS
116    DECODE_18 is DECODE_E pal pin 18
117    pin 1 (GND) is in the lower left and the pins count low-high then to the right
118    (gnd N/C   E_CLK     R/W    /ROM_OE a17 vcc a14 a13 a8 a9 a11 /ROM_OE' a10 a15 d7 d6 d5 d4 d3 )
119    (GND /IPL1 DECODE_18 /RESET gnd     a16 vcc a12 a7  a6 a5 a4  a3       a2  a1  a0 d0 d1 d2 gnd)
120Jx: 4 pin on top side, 6 pin on bottom side edge ?debug? connector (doesn't have a Jx number)
121    (trace me!)
122B1: a cuttable trace on the pcb. Not cut, affects one of the pins on the unpopulated J9 connector only.
123E1: jumper, unknown purpose, not set
124E2: jumper, unknown purpose, not set
125D13: LED
126R6522P (upper): parallel port via
127R6522P (lower): keyboard via
128UM95089: DTMF Tone generator chip (if you read the datasheet this is technically ROM based!)
129Y1: 15.8976Mhz, main clock?
130Y2: 3.579545Mhz, used by the DTMF generator chip UM95089 (connects to pins 7 and 8 of it)
131TMS4256-15NL - 262144 x 1 DRAM
132PB1 - piezo speaker
133
134*Pals:
135"TIMING B" - AMPAL16R4APC (marked on silkscreen "TIMING PAL")
136"DECODE E" - AMPAL16L8PC (marked on silkscreen "DECODE PAL")
137"VIDEO 2B" - AMPAL16R4PC (marked on silkscreen "VIDEO PAL")
138"DISK 3.5C" - AMPAL16R4PC (marked on silkscreen "DISK PAL")
139
140*Deviations from silkscreen:
1414N37 (marked on silkscreen "4N35")
14274F153 (marked on silkscreen "74ALS153")
14374HCT259 is socketed, possibly intended that the rom expansion daughterboard will have a ribbon cable fit in its socket?
144
145
146ToDo:
147* Swyft
148- Figure out the keyboard (interrupts are involved? or maybe an NMI on a
149  timer/vblank? It is possible this uses a similar 'keyboard read int'
150  to what the cat does)
151- get the keyboard scanning actually working; the VIAs are going nuts right now.
152- Beeper (on one of the vias?)
153- vblank/hblank stuff
154- Get the 6850 ACIA working for communications
155- Floppy (probably similar to the Cat)
156- Centronics port (attached to one of the VIAs)
157- Joystick port (also likely on a via)
158- Keypad? (also likely on a via done as a grid scan?)
159- Forth button (on the port on the back; keep in mind shift-usefront-space ALWAYS enables forth on a swyft)
160- Multple undumped firmware revisions exist (330 and 331 are dumped)
161
162// 74ls107 @ u18 pin 1 is 68008 /BERR pin
163
164// mc6850 @ u33 pin 2 (RX_DATA) is
165// mc6850 @ u33 pin 3 (RX_CLK) is 6522 @ u35 pin 17 (PB7)
166// mc6850 @ u33 pin 4 (TX_CLK) is 6522 @ u35 pin 17 (PB7)
167// mc6850 @ u33 pin 5 (/RTS) is
168// mc6850 @ u33 pin 6 (TX_DATA) is
169// mc6850 @ u33 pin 7 (/IRQ) is 68008 /IPL1 pin 41
170// mc6850 @ u33 pin 8 (CS0) is 68008 A12 pin 10
171// mc6850 @ u33 pin 9 (CS2) is DECODE E pin 18
172// mc6850 @ u33 pin 10 (CS1) is 68008 /BERR pin 40
173// mc6850 @ u33 pin 11 (RS) is 68008 A0 pin 46
174// mc6850 @ u33 pin 13 (R/W) is 68008 R/W pin 30
175// mc6850 @ u33 pin 14 (E) is 68008 E pin 38
176// mc6850 @ u33 pin 15-22 (D7-D0) are 68008 D7 to D0 pins 20-27
177// mc6850 @ u33 pin 23 (/DCD) is 74hc02 @ u35 pin 1
178// mc6850 @ u33 pin 24 (/CTS) is N/C?
179
180// 6522 @ u34:
181// pin 2 (PA0) :
182// pin 3 (PA1) :
183// pin 4 (PA2) :
184// pin 5 (PA3) :
185// pin 6 (PA4) :
186// pin 7 (PA5) :
187// pin 8 (PA6) :
188// pin 9 (PA7) :
189// pin 10 (PB0) :
190// pin 11 (PB1) :
191// pin 12 (PB2) :
192// pin 13 (PB3) :
193// pin 14 (PB4) :
194// pin 15 (PB5) :
195// pin 16 (PB6) :
196// pin 17 (PB7) :
197// pin 18 (CB1) : ?from/to? Floppy connector j3 pin 8
198// pin 19 (CB2) : ?from/to? 6522 @ u35 pin 16 (PB6)
199// pin 21 (/IRQ) : out to 68008 /IPL1 pin 41
200// pin 22 (R/W) : in from 68008 R/W pin 30
201// pin 23 (/CS2) : in from DECODE E pin 18
202// pin 24 (CS1) : in from 68008 A13 pin 11
203// pin 25 (Phi2) : in from 68008 E pin 38
204// pins 26-33 : in/out from/to 68008 D7 to D0 pins 20-27
205// pin 34 (/RES) : in from 68008 /RESET pin 37 AND 68008 /HALT pin 36
206// pins 35-38 (RS3-RS0) are 68008 A9-A6 pins 7-4
207// pin 39 (CA2) is through inductor L11 and resistor r128 to peripheral connector pin 35 <end minus 26>
208// pin 40 (CA1) is through inductor L30 and resistor r138 to peripheral connector pin 53 <end minus 8>
209
210// 6522 @ u35
211// pin 2 (PA0) :
212// pin 3 (PA1) :
213// pin 4 (PA2) :
214// pin 5 (PA3) :
215// pin 6 (PA4) :
216// pin 7 (PA5) :
217// pin 8 (PA6) :
218// pin 9 (PA7) :
219// pin 10 (PB0) :
220// pin 11 (PB1) : in from 74hc02 @ u36 pin 4
221// pin 12 (PB2) :
222// pin 13 (PB3) :
223// pin 14 (PB4) :
224// pin 15 (PB5) :
225// pin 16 (PB6) : 6522 @ u34 pin 19 (CB2)
226// pin 17 (PB7) : mc6850 @ u33 pins 3 and 4 (RX_CLK, TX_CLK)
227// pin 18 (CB1) : ds1489an @ u45 pin 11
228// pin 19 (CB2) : mn4053b @ u40 pin 11 and mc14412 @ u41 pin 10
229// pin 21 (/IRQ) : out to 68008 /IPL1 pin 41
230// pin 22 (R/W) : in from 68008 R/W pin 30
231// pin 23 (/CS2) : in from DECODE E pin 18
232// pin 24 (CS1) : in from 68008 A14 pin 12
233// pin 25 (Phi2) : in from 68008 E pin 38
234// pins 26-33 : in/out from/to 68008 D7 to D0 pins 20-27
235// pin 34 (/RES) : in from 68008 /RESET pin 37 AND 68008 /HALT pin 36
236// pins 35-38 (RS3-RS0) : in from 68008 A9-A6 pins 7-4
237// pin 39 (CA2) : out to 74HCT34 pin 11 (CLK) (keyboard column latch)
238// pin 40 (CA1) : out? to? ds1489an @ u45 pin 8
239
240// 74hc02 @ u36:
241// pin 1 (Y1) : out to mc6850 @ u33 pin 23 /DCD
242// pin 2 (A1) : in from (2 places: resistor R58 to ua339 @ u38 pin 4 (In1-)) <where does this actually come from? modem offhook?>
243// pin 3 (B1) : in from mn4053b @ u40  pin 10 <probably from rs232>
244// pin 4 (Y2) : out to 6522 @u35 pin 11
245// pin 5 (A2) : in from 4N37 @ u48 pin 5 (output side emitter pin) (tied via R189 to gnd) <ring indicator?>
246// pin 6 (B2) : in from 4N37 @ u48 pin 5 (output side emitter pin) (tied via R189 to gnd) <ring indicator?>
247// pin 8 (B3) :
248// pin 9 (A3) :
249// pin 10 (Y3) :
250// pin 11 (B4) : in from 68008 A15
251// pin 12 (A4) : in from 68008 A15
252// pin 13 (Y4) : out to EPROM @ U31 /CE
253
254****************************************************************************/
255
256// Defines
257
258#undef DEBUG_GA2OPR_W
259#undef DEBUG_VIDEO_CONTROL_W
260
261#undef DEBUG_FLOPPY_CONTROL_W
262#undef DEBUG_FLOPPY_CONTROL_R
263#undef DEBUG_FLOPPY_DATA_W
264#undef DEBUG_FLOPPY_DATA_R
265#undef DEBUG_FLOPPY_STATUS_R
266
267#undef DEBUG_PRINTER_DATA_W
268#undef DEBUG_PRINTER_CONTROL_W
269
270#undef DEBUG_MODEM_R
271#undef DEBUG_MODEM_W
272
273#undef DEBUG_DUART_OUTPUT_LINES
274// data sent to rs232 port
275#undef DEBUG_DUART_TXA
276// data sent to modem chip
277#undef DEBUG_DUART_TXB
278#undef DEBUG_DUART_IRQ_HANDLER
279#undef DEBUG_PRN_FF
280
281#undef DEBUG_TEST_W
282
283#define DEBUG_SWYFT_VIA0 1
284#define DEBUG_SWYFT_VIA1 1
285
286
287// Includes
288#include "emu.h"
289#include "cpu/m68000/m68000.h"
290#include "machine/clock.h"
291#include "machine/6850acia.h"
292#include "machine/6522via.h"
293#include "sound/speaker.h"
294#include "bus/centronics/ctronics.h"
295
296class swyft_state : public driver_device
297{
298public:
299   swyft_state(const machine_config &mconfig, device_type type, const char *tag)
300      : driver_device(mconfig, type, tag),
301      m_maincpu(*this, "maincpu"),
302      m_ctx(*this, "ctx"),
303      m_ctx_data_out(*this, "ctx_data_out"),
304      m_acia6850(*this, "acia6850"),
305      m_via0(*this, "via6522_0"),
306      m_via1(*this, "via6522_1"),
307      m_speaker(*this, "speaker"),
308      m_p_swyft_videoram(*this, "p_swyft_vram")
309      /*m_y0(*this, "Y0"),
310      m_y1(*this, "Y1"),
311      m_y2(*this, "Y2"),
312      m_y3(*this, "Y3"),
313      m_y4(*this, "Y4"),
314      m_y5(*this, "Y5"),
315      m_y6(*this, "Y6"),
316      m_y7(*this, "Y7")*/
317      { }
318
319   required_device<cpu_device> m_maincpu;
320   optional_device<centronics_device> m_ctx;
321   optional_device<output_latch_device> m_ctx_data_out;
322   required_device<acia6850_device> m_acia6850; // only swyft uses this
323   required_device<via6522_device> m_via0; // only swyft uses this
324   required_device<via6522_device> m_via1; // only swyft uses this
325   optional_device<speaker_sound_device> m_speaker;
326   required_shared_ptr<UINT8> m_p_swyft_videoram;
327   /*optional_ioport m_y0;
328   optional_ioport m_y1;
329   optional_ioport m_y2;
330   optional_ioport m_y3;
331   optional_ioport m_y4;
332   optional_ioport m_y5;
333   optional_ioport m_y6;
334   optional_ioport m_y7;*/
335
336   DECLARE_MACHINE_START(swyft);
337   DECLARE_MACHINE_RESET(swyft);
338   DECLARE_VIDEO_START(swyft);
339
340   UINT32 screen_update_swyft(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
341
342   DECLARE_READ8_MEMBER(swyft_d0000);
343
344   DECLARE_READ8_MEMBER(swyft_via0_r);
345   DECLARE_WRITE8_MEMBER(swyft_via0_w);
346   DECLARE_READ8_MEMBER(via0_pa_r);
347   DECLARE_WRITE8_MEMBER(via0_pa_w);
348   DECLARE_WRITE_LINE_MEMBER(via0_ca2_w);
349   DECLARE_READ8_MEMBER(via0_pb_r);
350   DECLARE_WRITE8_MEMBER(via0_pb_w);
351   DECLARE_WRITE_LINE_MEMBER(via0_cb1_w);
352   DECLARE_WRITE_LINE_MEMBER(via0_cb2_w);
353   DECLARE_WRITE_LINE_MEMBER(via0_int_w);
354
355   DECLARE_READ8_MEMBER(swyft_via1_r);
356   DECLARE_WRITE8_MEMBER(swyft_via1_w);
357   DECLARE_READ8_MEMBER(via1_pa_r);
358   DECLARE_WRITE8_MEMBER(via1_pa_w);
359   DECLARE_WRITE_LINE_MEMBER(via1_ca2_w);
360   DECLARE_READ8_MEMBER(via1_pb_r);
361   DECLARE_WRITE8_MEMBER(via1_pb_w);
362   DECLARE_WRITE_LINE_MEMBER(via1_cb1_w);
363   DECLARE_WRITE_LINE_MEMBER(via1_cb2_w);
364   DECLARE_WRITE_LINE_MEMBER(via1_int_w);
365
366   DECLARE_WRITE_LINE_MEMBER(write_acia_clock);
367
368   /* gate array 2 has a 16-bit counter inside which counts at 10mhz and
369      rolls over at FFFF->0000; on roll-over (or likely at FFFF terminal count)
370      it triggers the KTOBF output. It does this every 6.5535ms, which causes
371      a 74LS74 d-latch at IC100 to invert the state of the DUART IP2 line;
372      this causes the DUART to fire an interrupt, which makes the 68000 read
373      the keyboard.
374      The watchdog counter and the 6ms counter are both incremented
375      every time the KTOBF pulses.
376    */
377   UINT8 m_keyboard_line;
378   UINT8 m_floppy_control;
379
380//protected:
381   //virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
382};
383
384
385static INPUT_PORTS_START( swyft )
386// insert dwight and sandy's swyft keyboard map here once we figure out the byte line order
387   PORT_START("Y0")
388   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
389   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
390   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
391   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
392   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
393   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
394   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('\xa2')
395   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
396
397   PORT_START("Y1")
398   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('n') PORT_CHAR('B')
399   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
400   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
401   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
402   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
403   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
404   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
405   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
406
407   PORT_START("Y2")
408   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
409   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
410   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
411   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
412   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
413   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED) // totally unused
414   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('*')
415   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
416
417   PORT_START("Y3")
418   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
419   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left USE FRONT") PORT_CODE(KEYCODE_LCONTROL)
420   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('"')
421   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
422   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
423   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
424   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(')
425   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) // totally unused
426
427   PORT_START("Y4")
428   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
429   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right USE FRONT") PORT_CODE(KEYCODE_RCONTROL)
430   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right Shift") PORT_CODE(KEYCODE_F2) // intl only: latin diaresis and latin !; norway, danish and finnish * and '; others
431   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
432   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
433   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
434   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')')
435   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@')
436
437   PORT_START("Y5")
438   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
439   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
440   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
441   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
442   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('\xbd') PORT_CHAR('\xbc') //PORT_CHAR('}') PORT_CHAR('{')
443   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
444   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
445   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
446
447   PORT_START("Y6")
448   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_F1) // intl only: latin inv ? and inv !; norway and danish ! and |; finnish <>; others
449   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left LEAP") PORT_CODE(KEYCODE_LALT)
450   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
451   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
452   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('[')
453   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t')
454   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+')
455   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) // totally unused
456
457   PORT_START("Y7")
458   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
459   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right Leap") PORT_CODE(KEYCODE_RALT)
460   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Page") PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_PGDN)
461   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift Lock") PORT_CODE(KEYCODE_CAPSLOCK)
462   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Erase") PORT_CODE(KEYCODE_BACKSPACE)
463   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED) // totally unused
464   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("UNDO") PORT_CODE(KEYCODE_BACKSLASH)
465   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('\xb1') PORT_CHAR('\xb0') // PORT_CHAR('\\') PORT_CHAR('~')
466INPUT_PORTS_END
467
468
469/* Swyft rom and ram notes:
470rom:
471**Vectors:
4720x0000-0x0003: SP boot vector
4730x0004-0x0007: PC boot vector
474**unknown:
4750x0009-0x00BF: ? table
4760x00C0-0x01DF: ? table
4770x01E0-0x02DF: ? table (may be part of next table)
4780x02E0-0x03DF: ? table
4790x03E0-0x0B3F: int16-packed jump table (expanded to int32s at ram at 0x46000-0x46EC0 on boot)
4800x0B40-0x0E83: ? function index tables?
4810x0E84-0x1544: binary code (purpose?)
4820x1545-0x24CF: ?
483**Fonts:
4840x24D0-0x254F: ? (likely font 1 width lookup table)
4850x2550-0x2BCF: Font 1 data
4860x2BD0-0x2C4F: ? (likely font 2 width lookup table)
4870x2C50-0x32CF: Font 2 data
488**unknown?:
4890x32D0-0x360F: String data (and control codes?)
4900x3610-0x364F: ? fill (0x03 0xe8)
4910x3650-0x369F: ? fill (0x03 0x20)
4920x36A0-0x384d: ? forth code?
4930x384e-0x385d: Lookup table for phone keypad
4940x385e-...: ?
495...-0xC951: ?
4960xC952: boot vector
4970xC952-0xCAAE: binary code (purpose?)
498    0xCD26-0xCD3B: ?init forth bytecode?
4990xCD3C-0xCEBA: 0xFF fill (unused?)
5000xCEEB-0xFFFE: Forth dictionaries for compiling, with <word> then <3 bytes> afterward? (or before it? most likely afterward)
501
502ram: (system dram ranges from 0x40000-0x7FFFF)
5030x40000-0x425CF - the screen display ram
504(?0x425D0-0x44BA0 - ?unknown (maybe screen ram page 2?))
5050x44DC6 - SP vector
5060x46000-0x46EC0 - jump tables to instructions for ? (each forth word?)
507
508
509on boot:
510copy/expand packed rom short words 0x3E0-0xB3F to long words at 0x46000-0x46EC0
511copy 0x24f longwords of zero beyond that up to 0x47800
512CD26->A5 <?pointer to init stream function?>
51344DC6->A7 <reset SP... why it does this twice, once by the vector and once here, i'm gonna guess has to do with running the code in a debugger or on a development daughterboard like the cat had, where the 68008 wouldn't get explicitly reset>
51444F2A->A6 <?pointer to work ram space?>
515EA2->A4 <?function>
516E94->A3 <?function>
517EAE->A2 <?function>
51841800->D7 <?forth? opcode index base; the '1800' portion gets the opcode type added to it then is multiplied by 4 to produce the jump table offset within the 0x46000-0x46EC0 range>
51946e3c->D4 <?pointer to more work ram space?>
520CD22->D5 <?pointer to another function?>
521write 0xFFFF to d0004.l
522jump to A4(EA2)
523
524read first stream byte (which is 0x03) from address pointed to by A5 (which is CD26), inc A5, OR the opcode (0x03) to D7
525 (Note: if the forth opcodes are in order in the dictionary, then 0x03 is "!char" which is used to read a char from an arbitrary address)
526copy D7 to A0
527Add A0 low word to itself
528Add A0 low word to itself again
529move the long word from address pointed to by A0 (i.e. the specific opcode's area at the 46xxx part of ram) to A1
530Jump to A1(11A4)
531
53211A4: move 41b00 to D0 (select an opcode "page" 1bxx)
533jump to 118E
534
535118E: read next stream byte (in this case, 0x8E) from address pointed to by A5 (which is CD27), inc A5, OR the opcode (0x8e) to D7
536add to 41b00 in d0, for 41b8E
537Add A0 low word to itself
538Add A0 low word to itself again
539move the long word from address pointed to by A0 (i.e. the specific opcode's area at the 46xxx part of ram) to A1
540Jump to A1(CD06)
541
542CD06: jump to A3 (E94)
543
544E94: subtract D5 from A5 (cd28 - cd22 = 0x0006)
545write 6 to address @A5(44f28) and decrement A5
546write D4(46e3c) to address @a6(44f26) and decrement a5
547lea ($2, A1), A5 - i.e. increment A1 by 2, and write that to A5, so write CD06+2=CD08 to A5
548A1->D5
549A0->D4
550read next stream byte (in this case, 0x03) from address pointed to by A5 (which is CD08), inc A5, OR the opcode (0x03) to D7
551
552*/
553
554/* Swyft Memory map, based on watching the infoapp roms do their thing:
55568k address map:
556(a23,a22,a21,a20 lines don't exist on the 68008 so are considered unconnected)
557a23 a22 a21 a20 a19 a18 a17 a16 a15 a14 a13 a12 a11 a10 a9  a8  a7  a6  a5  a4  a3  a2  a1  a0
558x   x   x   x   0   0   ?   ?   0   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *        R   ROM-LO (/LOCE is 0, /HICE is 1)
559x   x   x   x   0   0   ?   ?   1   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *        R   ROM-HI (/LOCE is 1, /HICE is 0)
560x   x   x   x   0   1   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   a        RW  RAM
561x   x   x   x   1   1  ?0? ?1?  ?   ?   ?   ?   ?   ?   ?   ?   ?   ?   ?   ?   *   *   *   *        R   ? status of something? floppy?
562x   x   x   x   1   1  ?1? ?0?  ?   0   0   1   x   x   x   x   x   x   x   x   x   x   x   *        RW  6850 acia @U33, gets 0x55 steadystate and 0x57 written to it to reset it
563x   x   x   x   1   1  ?1? ?0?  ?   0   1   0   x   x   *   *   *   *   x   x   x   x   x   x        RW  Parallel VIA 0 @ U34
564x   x   x   x   1   1  ?1? ?0?  ?   1   0   0   x   x   *   *   *   *   x   x   x   x   x   x        RW  Keyboard VIA 1 @ U35
565              ^               ^               ^               ^               ^
566
567*/
568
569static ADDRESS_MAP_START(swyft_mem, AS_PROGRAM, 8, swyft_state)
570   ADDRESS_MAP_UNMAP_HIGH
571   AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_MIRROR(0xF00000) // 64 KB ROM
572   AM_RANGE(0x040000, 0x07ffff) AM_RAM AM_MIRROR(0xF00000) AM_SHARE("p_swyft_vram") // 256 KB RAM
573   AM_RANGE(0x0d0000, 0x0d000f) AM_READ(swyft_d0000) AM_MIRROR(0xF00000) // status of something? reads from d0000, d0004, d0008, d000a, d000e
574   AM_RANGE(0x0e1000, 0x0e1000) AM_DEVWRITE("acia6850", acia6850_device, control_w) AM_MIRROR(0xF00000) // 6850 ACIA lives here
575   AM_RANGE(0x0e2000, 0x0e2fff) AM_READWRITE(swyft_via0_r, swyft_via0_w) AM_MIRROR(0xF00000)// io area with selector on a9 a8 a7 a6?
576   AM_RANGE(0x0e4000, 0x0e4fff) AM_READWRITE(swyft_via1_r, swyft_via1_w) AM_MIRROR(0xF00000)
577ADDRESS_MAP_END
578
579MACHINE_START_MEMBER(swyft_state,swyft)
580{
581   m_via0->write_ca1(1);
582   m_via0->write_ca2(1);
583   m_via0->write_cb1(1);
584   m_via0->write_cb2(1);
585
586   m_via1->write_ca1(1);
587   m_via1->write_ca2(1);
588   m_via1->write_cb1(1);
589   m_via1->write_cb2(1);
590}
591
592MACHINE_RESET_MEMBER(swyft_state,swyft)
593{
594}
595
596VIDEO_START_MEMBER(swyft_state,swyft)
597{
598}
599
600UINT32 swyft_state::screen_update_swyft(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
601{
602   UINT16 code;
603   int y, x, b;
604
605   int addr = 0;
606   for (y = 0; y < 242; y++)
607   {
608      int horpos = 0;
609      for (x = 0; x < 40; x++)
610      {
611         code = m_p_swyft_videoram[addr++];
612         for (b = 7; b >= 0; b--)
613         {
614            bitmap.pix16(y, horpos++) = (code >> b) & 0x01;
615         }
616      }
617   }
618   return 0;
619}
620
621READ8_MEMBER( swyft_state::swyft_d0000 )
622{
623   // wtf is this supposed to be?
624   UINT8 byte = 0xFF; // ?
625   logerror("mystery device: read from 0x%5X, returning %02X\n", offset+0xD0000, byte);
626   return byte;
627}
628
629
630// if bit is 1 enable: (obviously don't set more than one bit or you get bus contention!)
631//                                           acia
632//                                       via0
633//                                    via1
634// x   x   x   x   1   1  ?1? ?0?  ?   ^   ^   ^   ?   ?   *   *   *   *  ?*?  ?   ?   ?   ?   ?
635//                                                         ^   ^   ^   ^  <- these four bits address the VIA registers? is this correct?
636static const char *const swyft_via_regnames[] = { "0: ORB/IRB", "1: ORA/IRA", "2: DDRB", "3: DDRA", "4: T1C-L", "5: T1C-H", "6: T1L-L", "7: T1L-H", "8: T2C-L" "9: T2C-H", "A: SR", "B: ACR", "C: PCR", "D: IFR", "E: IER", "F: ORA/IRA*" };
637
638READ8_MEMBER( swyft_state::swyft_via0_r )
639{
640   if (offset&0x000C3F) fprintf(stderr,"VIA0: read from invalid offset in 68k space: %06X!\n", offset);
641   UINT8 data = m_via0->read(space, (offset>>6)&0xF);
642#ifdef DEBUG_SWYFT_VIA0
643   logerror("VIA0 register %s read by cpu: returning %02x\n", swyft_via_regnames[(offset>>5)&0xF], data);
644#endif
645   return data;
646}
647
648WRITE8_MEMBER( swyft_state::swyft_via0_w )
649{
650#ifdef DEBUG_SWYFT_VIA0
651   logerror("VIA0 register %s written by cpu with data %02x\n", swyft_via_regnames[(offset>>5)&0xF], data);
652#endif
653   if (offset&0x000C3F) fprintf(stderr,"VIA0: write to invalid offset in 68k space: %06X, data: %02X!\n", offset, data);
654   m_via1->write(space, (offset>>6)&0xF, data);
655}
656
657READ8_MEMBER( swyft_state::swyft_via1_r )
658{
659   if (offset&0x000C3F) fprintf(stderr," VIA1: read from invalid offset in 68k space: %06X!\n", offset);
660   UINT8 data = m_via1->read(space, (offset>>6)&0xF);
661#ifdef DEBUG_SWYFT_VIA1
662   logerror(" VIA1 register %s read by cpu: returning %02x\n", swyft_via_regnames[(offset>>5)&0xF], data);
663#endif
664   return data;
665}
666
667WRITE8_MEMBER( swyft_state::swyft_via1_w )
668{
669#ifdef DEBUG_SWYFT_VIA1
670   logerror(" VIA1 register %s written by cpu with data %02x\n", swyft_via_regnames[(offset>>5)&0xF], data);
671#endif
672   if (offset&0x000C3F) fprintf(stderr," VIA1: write to invalid offset in 68k space: %06X, data: %02X!\n", offset, data);
673   m_via0->write(space, (offset>>6)&0xF, data);
674}
675
676// first via
677READ8_MEMBER( swyft_state::via0_pa_r )
678{
679   logerror("VIA0: Port A read!\n");
680   return 0xFF;
681}
682
683WRITE8_MEMBER( swyft_state::via0_pa_w )
684{
685   logerror("VIA0: Port A written with data of 0x%02x!\n", data);
686}
687
688WRITE_LINE_MEMBER ( swyft_state::via0_ca2_w )
689{
690   logerror("VIA0: CA2 written with %d!\n", state);
691}
692
693READ8_MEMBER( swyft_state::via0_pb_r )
694{
695   logerror("VIA0: Port B read!\n");
696   return 0xFF;
697}
698
699WRITE8_MEMBER( swyft_state::via0_pb_w )
700{
701   logerror("VIA0: Port B written with data of 0x%02x!\n", data);
702}
703
704WRITE_LINE_MEMBER ( swyft_state::via0_cb1_w )
705{
706   logerror("VIA0: CB1 written with %d!\n", state);
707}
708
709WRITE_LINE_MEMBER ( swyft_state::via0_cb2_w )
710{
711   logerror("VIA0: CB2 written with %d!\n", state);
712}
713
714WRITE_LINE_MEMBER ( swyft_state::via0_int_w )
715{
716   logerror("VIA0: INT output set to %d!\n", state);
717}
718
719// second via
720READ8_MEMBER( swyft_state::via1_pa_r )
721{
722   logerror(" VIA1: Port A read!\n");
723   return 0xFF;
724}
725
726WRITE8_MEMBER( swyft_state::via1_pa_w )
727{
728   logerror(" VIA1: Port A written with data of 0x%02x!\n", data);
729}
730
731WRITE_LINE_MEMBER ( swyft_state::via1_ca2_w )
732{
733   logerror(" VIA1: CA2 written with %d!\n", state);
734}
735
736READ8_MEMBER( swyft_state::via1_pb_r )
737{
738   logerror(" VIA1: Port B read!\n");
739   return 0xFF;
740}
741
742WRITE8_MEMBER( swyft_state::via1_pb_w )
743{
744   logerror(" VIA1: Port B written with data of 0x%02x!\n", data);
745}
746
747WRITE_LINE_MEMBER ( swyft_state::via1_cb1_w )
748{
749   logerror(" VIA1: CB1 written with %d!\n", state);
750}
751
752WRITE_LINE_MEMBER ( swyft_state::via1_cb2_w )
753{
754   logerror(" VIA1: CB2 written with %d!\n", state);
755}
756
757WRITE_LINE_MEMBER ( swyft_state::via1_int_w )
758{
759   logerror(" VIA1: INT output set to %d!\n", state);
760}
761
762WRITE_LINE_MEMBER( swyft_state::write_acia_clock )
763{
764   m_acia6850->write_txc(state);
765   m_acia6850->write_rxc(state);
766}
767
768static MACHINE_CONFIG_START( swyft, swyft_state )
769
770   /* basic machine hardware */
771   MCFG_CPU_ADD("maincpu",M68008, XTAL_15_8976MHz/2) //MC68008P8, Y1=15.8976Mhz, clock GUESSED at Y1 / 2
772   MCFG_CPU_PROGRAM_MAP(swyft_mem)
773
774   MCFG_MACHINE_START_OVERRIDE(swyft_state,swyft)
775   MCFG_MACHINE_RESET_OVERRIDE(swyft_state,swyft)
776
777   /* video hardware */
778   MCFG_SCREEN_ADD("screen", RASTER)
779   MCFG_SCREEN_REFRESH_RATE(50)
780   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
781   MCFG_SCREEN_SIZE(320, 242)
782   MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 242-1)
783   MCFG_SCREEN_UPDATE_DRIVER(swyft_state, screen_update_swyft)
784   MCFG_SCREEN_PALETTE("palette")
785
786   MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
787
788   MCFG_VIDEO_START_OVERRIDE(swyft_state,swyft)
789
790   MCFG_DEVICE_ADD("acia6850", ACIA6850, 0)
791   // acia rx and tx clocks come from one of the VIA pins and are tied together, fix this below? acia e clock comes from 68008
792   MCFG_DEVICE_ADD("acia_clock", CLOCK, (XTAL_15_8976MHz/2)/5) // out e clock from 68008, ~ 10in clocks per out clock
793   MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(swyft_state, write_acia_clock))
794
795   MCFG_DEVICE_ADD("via6522_0", VIA6522, (XTAL_15_8976MHz/2)/5) // out e clock from 68008
796   MCFG_VIA6522_READPA_HANDLER(READ8(swyft_state, via0_pa_r))
797   MCFG_VIA6522_READPB_HANDLER(READ8(swyft_state, via0_pb_r))
798   MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(swyft_state, via0_pa_w))
799   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(swyft_state, via0_pb_w))
800   MCFG_VIA6522_CB1_HANDLER(WRITELINE(swyft_state, via0_cb1_w))
801   MCFG_VIA6522_CA2_HANDLER(WRITELINE(swyft_state, via0_ca2_w))
802   MCFG_VIA6522_CB2_HANDLER(WRITELINE(swyft_state, via0_cb2_w))
803   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(swyft_state, via0_int_w))
804
805   MCFG_DEVICE_ADD("via6522_1", VIA6522, (XTAL_15_8976MHz/2)/5) // out e clock from 68008
806   MCFG_VIA6522_READPA_HANDLER(READ8(swyft_state, via1_pa_r))
807   MCFG_VIA6522_READPB_HANDLER(READ8(swyft_state, via1_pb_r))
808   MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(swyft_state, via1_pa_w))
809   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(swyft_state, via1_pb_w))
810   MCFG_VIA6522_CB1_HANDLER(WRITELINE(swyft_state, via1_cb1_w))
811   MCFG_VIA6522_CA2_HANDLER(WRITELINE(swyft_state, via1_ca2_w))
812   MCFG_VIA6522_CB2_HANDLER(WRITELINE(swyft_state, via1_cb2_w))
813   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(swyft_state, via1_int_w))
814MACHINE_CONFIG_END
815
816/* ROM definition */
817ROM_START( swyft )
818   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
819   ROM_SYSTEM_BIOS( 0, "v331", "IAI Swyft Version 331 Firmware")
820   ROMX_LOAD( "331-lo.u30", 0x0000, 0x8000, CRC(d6cc2e2f) SHA1(39ff26c18b1cf589fc48793263f280ef3780cc61), ROM_BIOS(1))
821   ROMX_LOAD( "331-hi.u31", 0x8000, 0x8000, CRC(4677630a) SHA1(8845d702fa8b8e1a08352f4c59d3076cc2e1307e), ROM_BIOS(1))
822   /* this version of the swyft code identifies itself at 0x3FCB as version 330 */
823   ROM_SYSTEM_BIOS( 1, "v330", "IAI Swyft Version 330 Firmware")
824   ROMX_LOAD( "infoapp.lo.u30", 0x0000, 0x8000, CRC(52c1bd66) SHA1(b3266d72970f9d64d94d405965b694f5dcb23bca), ROM_BIOS(2))
825   ROMX_LOAD( "infoapp.hi.u31", 0x8000, 0x8000, CRC(83505015) SHA1(693c914819dd171114a8c408f399b56b470f6be0), ROM_BIOS(2))
826   ROM_REGION( 0x4000, "pals", ROMREGION_ERASEFF )
827   /* Swyft PALs:
828    * The Swyft has four PALs, whose rough function can be derived from their names:
829    * TIMING - state machine for DRAM refresh/access; handles ras/cas and choosing whether the video out shifter or the 68k is accessing ram. also divides clock
830    * DECODE - address decoder for the 68008
831    * VIDEO - state machine for the video shifter (and vblank/hblank?)
832    * DISK 3.5 - state machine for the floppy drive interface
833    */
834   /* U9: Timing AMPAL16R4
835    *
836    * pins:
837    * 111111111000000000
838    * 987654321987654321
839    * ??QQQQ??EIIIIIIIIC
840    * |||||||||||||||||\-< /CK input - 15.8976mhz crystal and transistor oscillator
841    * ||||||||||||||||\--< ?
842    * |||||||||||||||\---< ?
843    * ||||||||||||||\----< ?
844    * |||||||||||||\-----< ?<also input to decode pal pin 1, video pal pin 1, source is ?>
845    * ||||||||||||\------< ?
846    * |||||||||||\-------< ?
847    * ||||||||||\--------< ?
848    * |||||||||\---------< ?
849    * ||||||||\----------< /OE input - shorted to GND
850    * |||||||\-----------? ?
851    * ||||||\------------? ?
852    * |||||\------------Q> /ROM_OE (to both eproms through jumper b1 and optionally j9 connector)
853    * ||||\-------------Q? ?
854    * |||\--------------Q? ?
855    * ||\---------------Q> output to decode pal pin 2
856    * |\----------------->? output? to ram multiplexer 'A' pins
857    * \------------------< ?
858    */
859   ROM_LOAD( "timing_b.ampal16r4a.u9.jed", 0x0000, 0xb08, CRC(643e6e83) SHA1(7db167883f9d6cf385ce496d08976dc16fc3e2c3))
860   /* U20: Decode AMPAL16L8
861    *
862    * pins:
863    * 111111111000000000
864    * 987654321987654321
865    * O??????OIIIIIIIIII
866    * |||||||||||||||||\-< TIMING PAL pin 5
867    * ||||||||||||||||\--< TIMING PAL pin 17
868    * |||||||||||||||\---< 68008 R/W (pin 30)
869    * ||||||||||||||\----< 68008 /DS (pin 29)
870    * |||||||||||||\-----< 68008 E (pin 38)
871    * ||||||||||||\------< 68008 A19
872    * |||||||||||\-------< 68008 A18
873    * ||||||||||\--------< 68008 A17
874    * |||||||||\---------< 68008 A16
875    * ||||||||\----------< ?
876    * |||||||\-----------> ?
877    * ||||||\------------? 68008 /VPA (pin 39)
878    * |||||\-------------> /ROM_OE (to both eproms through jumper b1 and optionally j9 connector)
879    * ||||\--------------? ?
880    * |||\---------------? ?
881    * ||\----------------? ?
882    * |\-----------------? goes to j9 connector pin 5
883    * \------------------< ?
884    */
885   ROM_LOAD( "decode_e.ampal16l8.u20.jed", 0x1000, 0xb08, CRC(0b1dbd76) SHA1(08c144ad7a7bbdd53eefd271b2f6813f8b3b1594))
886   ROM_LOAD( "video_2b.ampal16r4.u25.jed", 0x2000, 0xb08, CRC(caf91148) SHA1(3f8ddcb512a1c05395c74ad9a6ba7b87027ce4ec))
887   ROM_LOAD( "disk_3.5c.ampal16r4.u28.jed", 0x3000, 0xb08, CRC(fd994d02) SHA1(f910ab16587dd248d63017da1e5b37855e4c1a0c))
888ROM_END
889
890/* Driver */
891
892/*    YEAR  NAME  PARENT  COMPAT   MACHINE    INPUT    DEVICE         INIT     COMPANY   FULLNAME       FLAGS */
893COMP( 1985, swyft,0,      0,       swyft,     swyft,   driver_device, 0,       "Information Applicance Inc", "Swyft", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
trunk/src/mame/drivers/system1.c
r249889r249890
41504150   ROM_LOAD( "pr5317.4",     0x0000, 0x0100, CRC(648350b8) SHA1(c7986aa9127ef5b50b845434cb4e81dff9861cd2) )
41514151ROM_END
41524152
4153ROM_START( gardiaj )
4154   ROM_REGION( 0x20000, "maincpu", 0 )
4155   ROM_LOAD( "epr-10250.ic90",   0x00000, 0x8000, CRC(c97943a7) SHA1(eb201987c7a78f7eb6838211c0af3394c0b2d95f) ) /* encrypted */
4156   ROM_LOAD( "epr-10251.ic91",   0x10000, 0x8000, CRC(b2ed05dc) SHA1(c520bf7024c85dc759c27eccb0a31998f4d72b5f) )
4157   ROM_LOAD( "epr-10252.ic92",   0x18000, 0x8000, CRC(0a490588) SHA1(18df754ebdf062096f2d631a722b168901610345) )
41584153
4159   ROM_REGION( 0x10000, "soundcpu", 0 )
4160   ROM_LOAD( "epr-10243.ic126", 0x0000, 0x4000, CRC(87220660) SHA1(3f2bfc03e0f1053a4aa0ec5ebb0d573f2e20964c) )
4161
4162   ROM_REGION( 0x18000, "tiles", 0 )
4163   ROM_LOAD( "epr-10240.ic4",   0x00000, 0x8000, CRC(998ce090) SHA1(78929f471c5aa8b32d1693e8af2ef3e86efd3d7d) )
4164   ROM_LOAD( "epr-10241.ic5",   0x08000, 0x8000, CRC(81ab0b07) SHA1(7f776dccd66ad097a1a906823786a52d31a8c4e8) )
4165   ROM_LOAD( "epr-10242.ic6",   0x10000, 0x8000, CRC(2dc4c4c7) SHA1(0347170b941a5c567eed114833656e8abd16a8ab) )
4166
4167   ROM_REGION( 0x20000, "sprites", 0 )
4168   ROM_LOAD( "epr-10234.ic87", 0x00000, 0x8000, CRC(8a6aed33) SHA1(044836885ace8294124b1be9b3a4828f772bb9ee) )
4169   ROM_LOAD( "epr-10233.ic86", 0x08000, 0x8000, CRC(c52784d3) SHA1(b37d7f261be12616dbe11dfa375eaf6878e4a0f3) )
4170   ROM_LOAD( "epr-10236.ic89", 0x10000, 0x8000, CRC(b35ab227) SHA1(616f6097afddffa9af89fe84d8b6df59c567c1e6) )
4171   ROM_LOAD( "epr-10235.ic88", 0x18000, 0x8000, CRC(006a3151) SHA1(a575f9d5c026e6b18e990720ec7520b6b5ae94e3) )
4172
4173   ROM_REGION( 0x0300, "palette", 0 )
4174   ROM_LOAD( "pr-7345.ic20",      0x0000, 0x0100, CRC(8eee0f72) SHA1(b5694c120f604a5f7cc95618a71ab16a1a6151ed) ) /* palette red component */
4175   ROM_LOAD( "pr-7344.ic14",      0x0100, 0x0100, CRC(3e7babd7) SHA1(d4f8790db4dce75e27156a4c6de2dcef2baf6d76) ) /* palette green component */
4176   ROM_LOAD( "pr-7343.ic8",       0x0200, 0x0100, CRC(371c44a6) SHA1(ac37458d1feb6566b09a795b20c21953d4ab109d) ) /* palette blue component */
4177
4178   ROM_REGION( 0x0100, "proms", 0 )
4179   ROM_LOAD( "pr5317.ic28",     0x0000, 0x0100, CRC(648350b8) SHA1(c7986aa9127ef5b50b845434cb4e81dff9861cd2) )
4180ROM_END
4181
4182
41834154ROM_START( brain )
41844155   ROM_REGION( 0x20000, "maincpu", 0 )
41854156   ROM_LOAD( "brain.1",      0x00000, 0x8000, CRC(2d2aec31) SHA1(02dfbb0e9ca01b864e3aa594cf38306fe82a4b5d) )
r249889r249890
57275698GAME( 1985, shtngmst,   0,        sys2m,     shtngmst,  system1_state, shtngmst, ROT0,   "Sega", "Shooting Master (8751 315-5159)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
57285699GAME( 1985, shtngmste,  shtngmst, sys2m,     shtngmst,  system1_state, shtngmst, ROT0,   "Sega / EVG", "Shooting Master (EVG, 8751 315-5159a)", MACHINE_SUPPORTS_SAVE )
57295700GAME( 1986, gardiab,    gardia,   sys2x,     gardia,    system1_state, gardiab,  ROT270, "bootleg", "Gardia (317-0007?, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
5730GAME( 1986, gardiaj,    gardia,   sys2x,     gardia,    system1_state, gardia,   ROT270, "Coreland / Sega", "Gardia (Japan, 317-0006)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
57315701GAME( 1986, wboysys2,   wboy,     sys2x,     wboysys2,  system1_state, wboysys2, ROT0,   "Escape (Sega license)", "Wonder Boy (system 2)", MACHINE_SUPPORTS_SAVE )
57325702GAME( 1987, tokisens,   0,        sys2,      tokisens,  system1_state, bank0c,   ROT90,  "Sega", "Toki no Senshi - Chrono Soldier", MACHINE_SUPPORTS_SAVE )
57335703GAME( 1987, wbml,       0,        sys2xb,    wbml,      system1_state, wbml,     ROT0,   "Sega / Westone", "Wonder Boy in Monster Land (Japan New Ver., MC-8123, 317-0043)", MACHINE_SUPPORTS_SAVE )
trunk/src/mame/drivers/ti99_4x.c
r249889r249890
468468         // the line enough to make the TMS9901 sense the low level.
469469         // A reported, feasible fix was to cut the line and insert a diode
470470         // below the Alphalock key.
471         if ((m_model!=MODEL_4) && (ioport("ALPHABUG")->read()!=0) ) answer |= (ioport("ALPHA")->read() | ioport("ALPHA1")->read());
471         if ((ioport("ALPHABUG")!=0) && (m_model!=MODEL_4)) answer |= (ioport("ALPHA")->read() | ioport("ALPHA1")->read());
472472      }
473473      else
474474      {
trunk/src/mame/drivers/timeplt.c
r249889r249890
3434    c300      interrupt enable
3535    c302      flip screen
3636    c304      trigger interrupt on audio CPU
37    c308      video enable (?). Protection ??? Stuffs in some values computed
38              from ROM content
37    c308      Protection ???  Stuffs in some values computed from ROM content
3938    c30a      coin counter 1
4039    c30c      coin counter 2
4140
r249889r249890
6261 *
6362 *************************************/
6463
65INTERRUPT_GEN_MEMBER(timeplt_state::interrupt)
64INTERRUPT_GEN_MEMBER(timeplt_state::timeplt_interrupt)
6665{
6766   if (m_nmi_enable)
6867      device.execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
6968}
7069
7170
72WRITE8_MEMBER(timeplt_state::nmi_enable_w)
71WRITE8_MEMBER(timeplt_state::timeplt_nmi_enable_w)
7372{
7473   m_nmi_enable = data & 1;
7574   if (!m_nmi_enable)
r249889r249890
8483 *
8584 *************************************/
8685
87WRITE8_MEMBER(timeplt_state::coincounter_w)
86WRITE8_MEMBER(timeplt_state::timeplt_coin_counter_w)
8887{
8988   coin_counter_w(machine(), offset >> 1, data);
9089}
r249889r249890
122121 *
123122 *************************************/
124123
125static ADDRESS_MAP_START( common_main_map, AS_PROGRAM, 8, timeplt_state )
124static ADDRESS_MAP_START( timeplt_main_map, AS_PROGRAM, 8, timeplt_state )
126125   ADDRESS_MAP_UNMAP_HIGH
127126   AM_RANGE(0x0000, 0x5fff) AM_ROM
128   AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
129   AM_RANGE(0xa400, 0xa7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
127   AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(timeplt_colorram_w) AM_SHARE("colorram")
128   AM_RANGE(0xa400, 0xa7ff) AM_RAM_WRITE(timeplt_videoram_w) AM_SHARE("videoram")
130129   AM_RANGE(0xa800, 0xafff) AM_RAM
131130   AM_RANGE(0xb000, 0xb0ff) AM_MIRROR(0x0b00) AM_RAM AM_SHARE("spriteram")
132131   AM_RANGE(0xb400, 0xb4ff) AM_MIRROR(0x0b00) AM_RAM AM_SHARE("spriteram2")
133   AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0cff) AM_READ(scanline_r) AM_WRITE(soundlatch_byte_w)
134   AM_RANGE(0xc200, 0xc200) AM_MIRROR(0x0cff) AM_READ_PORT("DSW1") AM_WRITE(watchdog_reset_w)
132   AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0cff) AM_WRITE(soundlatch_byte_w)
133   AM_RANGE(0xc200, 0xc200) AM_MIRROR(0x0cff) AM_WRITE(watchdog_reset_w)
134   AM_RANGE(0xc300, 0xc300) AM_MIRROR(0x0cf1) AM_WRITE(timeplt_nmi_enable_w)
135   AM_RANGE(0xc302, 0xc302) AM_MIRROR(0x0cf1) AM_WRITE(timeplt_flipscreen_w)
136   AM_RANGE(0xc304, 0xc304) AM_MIRROR(0x0cf1) AM_DEVWRITE("timeplt_audio", timeplt_audio_device, sh_irqtrigger_w)
137   AM_RANGE(0xc30a, 0xc30c) AM_MIRROR(0x0cf1) AM_WRITE(timeplt_coin_counter_w)
138   AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0cff) AM_READ(timeplt_scanline_r)
139   AM_RANGE(0xc200, 0xc200) AM_MIRROR(0x0cff) AM_READ_PORT("DSW1")
135140   AM_RANGE(0xc300, 0xc300) AM_MIRROR(0x0c9f) AM_READ_PORT("IN0")
136   AM_RANGE(0xc302, 0xc302) AM_MIRROR(0x0cf1) AM_WRITE(flipscreen_w)
137   AM_RANGE(0xc304, 0xc304) AM_MIRROR(0x0cf1) AM_DEVWRITE("timeplt_audio", timeplt_audio_device, sh_irqtrigger_w)
138   AM_RANGE(0xc30a, 0xc30c) AM_MIRROR(0x0cf1) AM_WRITE(coincounter_w)
139141   AM_RANGE(0xc320, 0xc320) AM_MIRROR(0x0c9f) AM_READ_PORT("IN1")
140142   AM_RANGE(0xc340, 0xc340) AM_MIRROR(0x0c9f) AM_READ_PORT("IN2")
141143   AM_RANGE(0xc360, 0xc360) AM_MIRROR(0x0c9f) AM_READ_PORT("DSW0")
142144ADDRESS_MAP_END
143145
144static ADDRESS_MAP_START( timeplt_main_map, AS_PROGRAM, 8, timeplt_state )
145   AM_IMPORT_FROM(common_main_map)
146   AM_RANGE(0xc300, 0xc300) AM_MIRROR(0x0cf1) AM_WRITE(nmi_enable_w)
147   AM_RANGE(0xc308, 0xc308) AM_MIRROR(0x0cf1) AM_WRITE(video_enable_w)
148ADDRESS_MAP_END
149
150146static ADDRESS_MAP_START( psurge_main_map, AS_PROGRAM, 8, timeplt_state )
151   AM_IMPORT_FROM(common_main_map)
147   ADDRESS_MAP_UNMAP_HIGH
148   AM_RANGE(0x0000, 0x5fff) AM_ROM
152149   AM_RANGE(0x6004, 0x6004) AM_READ(psurge_protection_r)
150   AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(timeplt_colorram_w) AM_SHARE("colorram")
151   AM_RANGE(0xa400, 0xa7ff) AM_RAM_WRITE(timeplt_videoram_w) AM_SHARE("videoram")
152   AM_RANGE(0xa800, 0xafff) AM_RAM
153   AM_RANGE(0xb000, 0xb0ff) AM_MIRROR(0x0b00) AM_RAM AM_SHARE("spriteram")
154   AM_RANGE(0xb400, 0xb4ff) AM_MIRROR(0x0b00) AM_RAM AM_SHARE("spriteram2")
155   AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0cff) AM_WRITE(soundlatch_byte_w)
156   AM_RANGE(0xc200, 0xc200) AM_MIRROR(0x0cff) AM_WRITE(watchdog_reset_w)
157   AM_RANGE(0xc302, 0xc302) AM_MIRROR(0x0cf1) AM_WRITE(timeplt_flipscreen_w)
158   AM_RANGE(0xc304, 0xc304) AM_MIRROR(0x0cf1) AM_DEVWRITE("timeplt_audio", timeplt_audio_device, sh_irqtrigger_w)
159   AM_RANGE(0xc30a, 0xc30c) AM_MIRROR(0x0cf1) AM_WRITE(timeplt_coin_counter_w)
160   AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0cff) AM_READ(timeplt_scanline_r)
161   AM_RANGE(0xc200, 0xc200) AM_MIRROR(0x0cff) AM_READ_PORT("DSW1")
162   AM_RANGE(0xc300, 0xc300) AM_MIRROR(0x0c9f) AM_READ_PORT("IN0")
163   AM_RANGE(0xc320, 0xc320) AM_MIRROR(0x0c9f) AM_READ_PORT("IN1")
164   AM_RANGE(0xc340, 0xc340) AM_MIRROR(0x0c9f) AM_READ_PORT("IN2")
165   AM_RANGE(0xc360, 0xc360) AM_MIRROR(0x0c9f) AM_READ_PORT("DSW0")
153166ADDRESS_MAP_END
154167
155168static ADDRESS_MAP_START( chkun_main_map, AS_PROGRAM, 8, timeplt_state )
156   AM_IMPORT_FROM(timeplt_main_map)
169   ADDRESS_MAP_UNMAP_HIGH
170   AM_RANGE(0x0000, 0x5fff) AM_ROM
157171   AM_RANGE(0x6000, 0x67ff) AM_RAM
172   AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(timeplt_colorram_w) AM_SHARE("colorram")
173   AM_RANGE(0xa400, 0xa7ff) AM_RAM_WRITE(timeplt_videoram_w) AM_SHARE("videoram")
174   AM_RANGE(0xa800, 0xafff) AM_RAM
175   AM_RANGE(0xb000, 0xb0ff) AM_MIRROR(0x0b00) AM_RAM AM_SHARE("spriteram")
176   AM_RANGE(0xb400, 0xb4ff) AM_MIRROR(0x0b00) AM_RAM AM_SHARE("spriteram2")
177   AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0cff) AM_WRITE(soundlatch_byte_w)
178   AM_RANGE(0xc200, 0xc200) AM_MIRROR(0x0cff) AM_WRITE(watchdog_reset_w)
179   AM_RANGE(0xc300, 0xc300) AM_MIRROR(0x0cf1) AM_WRITE(timeplt_nmi_enable_w)
180   AM_RANGE(0xc302, 0xc302) AM_MIRROR(0x0cf1) AM_WRITE(timeplt_flipscreen_w)
181   AM_RANGE(0xc304, 0xc304) AM_MIRROR(0x0cf1) AM_DEVWRITE("timeplt_audio", timeplt_audio_device, sh_irqtrigger_w)
182   AM_RANGE(0xc30a, 0xc30c) AM_MIRROR(0x0cf1) AM_WRITE(timeplt_coin_counter_w)
183   AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0cff) AM_READ(timeplt_scanline_r)
184   AM_RANGE(0xc200, 0xc200) AM_MIRROR(0x0cff) AM_READ_PORT("DSW1")
185   AM_RANGE(0xc300, 0xc300) AM_MIRROR(0x0c9f) AM_READ_PORT("IN0")
186   AM_RANGE(0xc320, 0xc320) AM_MIRROR(0x0c9f) AM_READ_PORT("IN1")
187   AM_RANGE(0xc340, 0xc340) AM_MIRROR(0x0c9f) AM_READ_PORT("IN2")
188   AM_RANGE(0xc360, 0xc360) AM_MIRROR(0x0c9f) AM_READ_PORT("DSW0")
158189ADDRESS_MAP_END
159190
160191
r249889r249890
426457   /* basic machine hardware */
427458   MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/3/2)  /* not confirmed, but common for Konami games of the era */
428459   MCFG_CPU_PROGRAM_MAP(timeplt_main_map)
429   MCFG_CPU_VBLANK_INT_DRIVER("screen", timeplt_state,  interrupt)
460   MCFG_CPU_VBLANK_INT_DRIVER("screen", timeplt_state,  timeplt_interrupt)
430461
431462   /* video hardware */
432463   MCFG_SCREEN_ADD("screen", RASTER)
r249889r249890
434465   MCFG_SCREEN_REFRESH_RATE(60)
435466   MCFG_SCREEN_SIZE(32*8, 32*8)
436467   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
437   MCFG_SCREEN_UPDATE_DRIVER(timeplt_state, screen_update)
468   MCFG_SCREEN_UPDATE_DRIVER(timeplt_state, screen_update_timeplt)
438469   MCFG_SCREEN_PALETTE("palette")
439470
440471   MCFG_GFXDECODE_ADD("gfxdecode", "palette", timeplt)
r249889r249890
452483   MCFG_CPU_MODIFY("maincpu")
453484   MCFG_CPU_PROGRAM_MAP(psurge_main_map)
454485   MCFG_CPU_VBLANK_INT_DRIVER("screen", timeplt_state,  nmi_line_pulse)
455   
456   MCFG_VIDEO_START_OVERRIDE(timeplt_state,psurge)
457486MACHINE_CONFIG_END
458487
459488static MACHINE_CONFIG_DERIVED( bikkuric, timeplt )
trunk/src/mame/drivers/unichamp.c
r249889r249890
1// license:BSD-3-Clause
2// copyright-holders:David Viens
3/************************************************************************
4 *  Unisonic Champion 2711 (late 1977 based on part dates)
5 *
6 *  Driver from plgDavid (David Viens)
7 *
8 *  Thanks to Sylvain De Chantal (Sly D.C.) for the 2 test units,
9 *  carts and FAQ: http://www.ccjvq.com/slydc/index/faq/2711
10 *
11 *  Thanks to Paul Robson for the GIC font rom.
12 *  (http://worstconsole.blogspot.ca/2012/12/the-worstconsoleever.html)
13 *  Note a spare dead GIC has been given to Lord Nightmare and should be sent for decap!
14 *
15 *  The Unisonc Champion is the only known GI "Gimini Mid-Range 8950 Programmable Game Set"
16 *  to ever reach the market, and only in limited quantities (aprox 500 units ever built)
17 *
18 *  Architecture:
19 *  Master IC : AY-3-8800-1 Graphics Interface (A.K.A. GIC, 40 pin)
20 *  Slave  IC : CP1610 CPU (40 pin, same as in the Intellivision)
21 *  EXEC ROM  : 9501-01009 (40 pin) at 0x0800 (factory mapped)
22 *
23 *  The GIC generates the CPU Clock, the video signals and the audio.
24 *  The CPU does NOT access the GIC directly.
25 *  One way CPU->GIC 'communication' takes place through 256 bytes of shared RAM
26 *  (using two 4x256 TMS4043NL-2 (2112-1) Static Rams at U3 and U4)
27 *
28 *  In this design the GIC only allows the CPU to use the BUS (and shared RAM)
29 *  a fraction of the frame time. (4.33ms for each 16.69ms, or 26% of the time)
30 *  (the real ratio of clocks is 7752/29868 )
31 *
32 *  Boot: When the GIC let go of !RESET_OUT the EXEC Rom pushes 0x800 onto
33 *  the bus for the CPU to fetch and place in R7 to start execution.
34 *  This first CPU slice only last 3ms, then the GIC sets the CPU's BUSRQ low,
35 *  stalling it for 12.36ms, then sets it high for 4.33ms etc...
36 *  59.95 times a second - NTSC
37 ************************************************************************/
38
39#include "emu.h"
40#include "cpu/cp1610/cp1610.h"
41#include "video/gic.h"
42
43#include "bus/generic/slot.h"
44#include "bus/generic/carts.h"
45
46class unichamp_state : public driver_device
47{
48public:
49   unichamp_state(const machine_config &mconfig, device_type type, const char *tag)
50      : driver_device(mconfig, type, tag),
51      m_maincpu(*this, "maincpu"),
52      m_gic(*this, "gic"),
53      m_cart(*this, "cartslot"),
54      m_ctrls(*this, "CTRLS"){}
55
56   required_device<cpu_device> m_maincpu;
57   required_device<gic_device> m_gic;
58   required_device<generic_slot_device> m_cart;
59
60   UINT8 m_ram[256];
61   DECLARE_DRIVER_INIT(unichamp);
62   virtual void machine_start();
63   virtual void machine_reset();
64   DECLARE_PALETTE_INIT(unichamp);
65   
66   DECLARE_READ8_MEMBER(bext_r);
67
68   DECLARE_READ16_MEMBER(unichamp_gicram_r);
69   DECLARE_WRITE16_MEMBER(unichamp_gicram_w);
70
71   DECLARE_READ16_MEMBER(unichamp_trapl_r);
72   DECLARE_WRITE16_MEMBER(unichamp_trapl_w);
73   
74   UINT32 screen_update_unichamp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
75
76protected:
77   required_ioport m_ctrls;
78   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
79};
80
81PALETTE_INIT_MEMBER(unichamp_state, unichamp)
82{
83   /*
84   palette.set_pen_color(GIC_BLACK, rgb_t(0x00, 0x00, 0x00));
85   palette.set_pen_color(GIC_RED,   rgb_t(0xAE, 0x49, 0x41));//(from box shot)
86   palette.set_pen_color(GIC_GREEN, rgb_t(0x62, 0x95, 0x88));//(from box shot)
87   palette.set_pen_color(GIC_WHITE, rgb_t(0xFF, 0xFF, 0xFF));
88   */
89   
90   //using from intv.c instead as suggested by RB
91   palette.set_pen_color(GIC_BLACK, rgb_t(0x00, 0x00, 0x00));
92   palette.set_pen_color(GIC_RED,   rgb_t(0xFF, 0x3D, 0x10));
93  //palette.set_pen_color(GIC_GREEN, rgb_t(0x38, 0x6B, 0x3F)); //intv's DARK GREEN
94   palette.set_pen_color(GIC_GREEN, rgb_t(0x00, 0xA7, 0x56)); //intv's GREEN
95   palette.set_pen_color(GIC_WHITE, rgb_t(0xFF, 0xFC, 0xFF));   
96}
97
98
99static ADDRESS_MAP_START( unichamp_mem, AS_PROGRAM, 16, unichamp_state )
100   ADDRESS_MAP_GLOBAL_MASK(0x1FFF) //B13/B14/B15 are grounded!
101   AM_RANGE(0x0000, 0x00FF) AM_READWRITE(unichamp_gicram_r, unichamp_gicram_w)
102   AM_RANGE(0x0100, 0x07FF) AM_READWRITE(unichamp_trapl_r, unichamp_trapl_w)   
103   AM_RANGE(0x0800, 0x17FF) AM_ROM AM_REGION("maincpu", 0x0800 << 1)   // Carts and EXE ROM, 10-bits wide
104ADDRESS_MAP_END
105
106
107static INPUT_PORTS_START( unichamp )
108   PORT_START( "CTRLS" )
109   PORT_BIT( 0x01,  IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_CHAR('Y')// P1 YES (EBCA0)
110   PORT_BIT( 0x02,  IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_CHAR('N')// P1 NO  (EBCA1)
111   PORT_BIT( 0x04,  IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('A')// P2 YES (EBCA2)
112   PORT_BIT( 0x08,  IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('S')// P2 NO  (EBCA3)
113   PORT_BIT( 0x10,  IP_ACTIVE_HIGH, IPT_UNUSED )   PORT_UNUSED
114   PORT_BIT( 0x20,  IP_ACTIVE_HIGH, IPT_UNUSED )   PORT_UNUSED
115   PORT_BIT( 0x40,  IP_ACTIVE_HIGH, IPT_UNUSED )   PORT_UNUSED     
116   PORT_BIT( 0x80,  IP_ACTIVE_HIGH, IPT_UNUSED )   PORT_UNUSED   
117INPUT_PORTS_END
118
119
120void unichamp_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
121{
122   //TODO should we add an explicit Reset button in there just like the controller?
123}
124
125
126READ8_MEMBER(unichamp_state::bext_r)
127{
128   //The BEXT instruction pushes a user-defined nibble out on the four EBCA pins (EBCA0 to EBCA3)
129   //and reads the ECBI input pin for HIGH or LOW signal to know whether or not to branch
130
131   //The unisonic control system couldnt be simpler in desing.
132   //Each of the two player controllers has three buttons:
133   //one tying !RESET(GIC pin 21) to ground when closed - resetting the WHOLE system.
134   //a YES button (connecting EBCA0 to EBCI for Player1 and EBC2 to EBCI for Player2)
135   //a NO  button (connecting EBCA1 to EBCI for Player1 and EBC3 to EBCI for Player2)
136
137   //The CPU outputs a MASK of whatever it needs and checks the result.
138   //EG: Any player can choose if one or two players are going to play the game for instance
139
140   UINT8 port = ioport("CTRLS")->read() & 0x0F; ////only lower nibble
141         
142   //We need to return logical high or low on the EBCI pin
143   return (port & offset)>0?1:0;
144}
145
146
147DRIVER_INIT_MEMBER(unichamp_state,unichamp)
148{
149   m_gic->set_shared_memory(m_ram);
150}
151
152void unichamp_state::machine_start()
153{
154   m_gic->set_shared_memory(m_ram);
155   
156   if (m_cart->exists()){     
157      //flip endians in more "this surely exists in MAME" way?
158      //NOTE The unichamp roms have the same endianness as intv on disk and in memory
159      UINT8*ptr   = m_cart->get_rom_base();
160      size_t size = m_cart->get_rom_size();
161      for(size_t i=0;i<size;i+=2){
162         UINT8 TEMP = ptr[i];
163         ptr[i] = ptr[i+1];
164         ptr[i+1] = TEMP;
165      }
166     
167      m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x1800,
168                  read16_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart));   
169   }
170}
171
172/* Set Reset and INTR/INTRM Vector */
173void unichamp_state::machine_reset()
174{
175   /*
176   the intv driver did not explain this but from the CP1600 manual:
177   When MSYNC* goes inactive (high), the bus control signals issue lAB, 
178    and the CPU inputs from the bus into the PC the starting address of the main program. 
179   Note that the initialization address can be defined by the user at any desired bus address or
180   can be the default address resulting from the logical state of the non-driven bus   
181   */
182   
183   //The Unisonic EXEC ROM chip (9501-01009) is self mapped at 0x0800
184   //The cart ROMS are self mapped to 0x1000
185   //upon boot the EXEC ROM puts 0x0800 on the bus for the CPU to use as first INT vector
186
187   m_maincpu->set_input_line_vector(CP1610_RESET,     0x0800);
188   m_maincpu->set_input_line_vector(CP1610_INT_INTRM, 0x0804);//not used anyway
189   m_maincpu->set_input_line_vector(CP1610_INT_INTR,  0x0804);//not used anyway
190
191   /* Set initial PC */
192   m_maincpu->set_state_int(CP1610_R7, 0x0800);
193}
194
195
196UINT32 unichamp_state::screen_update_unichamp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
197{
198   return m_gic->screen_update(screen, bitmap, cliprect);
199}
200
201READ16_MEMBER( unichamp_state::unichamp_gicram_r )
202{
203   return (int)m_ram[offset];
204}
205
206WRITE16_MEMBER( unichamp_state::unichamp_gicram_w )
207{
208   m_ram[offset] = data&0xff;
209}
210
211READ16_MEMBER( unichamp_state::unichamp_trapl_r )
212{
213   logerror("trapl_r(%x)\n",offset);
214   return (int)0;
215}
216
217WRITE16_MEMBER( unichamp_state::unichamp_trapl_w )
218{
219   logerror("trapl_w(%x) = %x\n",offset,data);
220}
221
222static MACHINE_CONFIG_START( unichamp, unichamp_state )
223   /* basic machine hardware */
224   
225   //The CPU is really clocked this way:
226   //MCFG_CPU_ADD("maincpu", CP1610, XTAL_3_579545MHz/4)   
227   //But since it is only running 7752/29868 th's of the time...
228   //TODO find a more accurate method? (the emulation will me the same though)
229   MCFG_CPU_ADD("maincpu", CP1610, (int)((7752.0/29868.0)*XTAL_3_579545MHz/4))
230   
231   MCFG_CPU_PROGRAM_MAP(unichamp_mem)
232   MCFG_QUANTUM_TIME(attotime::from_hz(60))
233    MCFG_CP1610_BEXT_CALLBACK(READ8(unichamp_state, bext_r))
234   
235   /* video hardware */
236   MCFG_SCREEN_ADD("screen", RASTER)
237   MCFG_SCREEN_RAW_PARAMS( XTAL_3_579545MHz,
238                           gic_device::LINE_CLOCKS,
239                     gic_device::START_ACTIVE_SCAN,
240                     gic_device::END_ACTIVE_SCAN,
241                     gic_device::LINES,
242                     gic_device::START_Y,
243                     gic_device::START_Y + gic_device::SCREEN_HEIGHT )
244                     
245   MCFG_SCREEN_UPDATE_DRIVER(unichamp_state, screen_update_unichamp)
246   MCFG_SCREEN_PALETTE("palette")
247   
248   MCFG_PALETTE_ADD("palette", 4)
249   MCFG_PALETTE_INIT_OWNER(unichamp_state, unichamp)
250   
251   /* sound hardware */
252   MCFG_SPEAKER_STANDARD_MONO("mono")
253   MCFG_GIC_ADD( "gic", XTAL_3_579545MHz, "screen" )
254   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
255   
256   /* cartridge */
257   MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_linear_slot, "unichamp_cart")
258   MCFG_GENERIC_EXTENSIONS("bin,rom")
259   MCFG_SOFTWARE_LIST_ADD("cart_list", "unichamp")
260   
261MACHINE_CONFIG_END
262
263
264ROM_START(unichamp)   
265   ROM_REGION(0x10000<<1,"maincpu", ROMREGION_ERASEFF)
266   
267   ROM_LOAD16_WORD( "9501-01009.u2", 0x0800<<1, 0x1000, CRC(49a0bd8f) SHA1(f4d126d3462ad351da4b75d76c75942d5a6f27ef))
268
269   //these below are for local tests. you can use them in softlist or -cart
270   //ROM_LOAD16_WORD( "pac-02.bin",   0x1000<<1, 0x1000, CRC(fe3213be) SHA1(5b9c407fe86865f3454d4be824a7f2bf53478f73))   
271   //ROM_LOAD16_WORD( "pac-03.bin",   0x1000<<1, 0x1000, CRC(f81f04bd) SHA1(82e2a0fda1787d5835c457ee5745b0db0cebe079))   
272   //ROM_LOAD16_WORD( "pac-04.bin",   0x1000<<1, 0x1000, CRC(cac09841) SHA1(bc9db83f26ed0810938156db6b104b4576754225))
273   //ROM_LOAD16_WORD( "pac-05.bin",   0x1000<<1, 0x1000, CRC(d54a6090) SHA1(e85593096f43dcf14b08fd2c9fda277008a8df8b))
274ROM_END
275
276
277CONS( 1977, unichamp, 0,  0, unichamp, unichamp,  unichamp_state,   unichamp,  "Unisonic", "Champion 2711", 0/*MACHINE_IMPERFECT_GRAPHICS*/)
trunk/src/mame/drivers/vicdual.c
r249889r249890
36053605
36063606GAMEL(1977, depthch,    0,        depthch,   depthch,   driver_device, 0, ROT0,   "Gremlin", "Depthcharge", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_depthch )
36073607GAMEL(1977, depthcho,   depthch,  depthch,   depthch,   driver_device, 0, ROT0,   "Gremlin", "Depthcharge (older)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_depthch )
3608GAMEL(1977, subhunt,    depthch,  depthch,   depthch,   driver_device, 0, ROT0,   "Gremlin (Taito license)", "Sub Hunter (Gremlin / Taito)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_depthch )
3608GAMEL(1977, subhunt,    depthch,  depthch,   depthch,   driver_device, 0, ROT0,   "Gremlin (Taito license)", "Sub Hunter", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_depthch )
36093609GAME( 1977, safari,     0,        safari,    safari,    driver_device, 0, ROT0,   "Gremlin", "Safari (set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
36103610GAME( 1977, safaria,    safari,   safari,    safari,    driver_device, 0, ROT0,   "Gremlin", "Safari (set 2, bootleg?)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // on a bootleg board, but seems a different code revision too
36113611GAME( 1978, frogs,      0,        frogs,     frogs,     driver_device, 0, ROT0,   "Gremlin", "Frogs", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
trunk/src/mame/drivers/wacky_gator.c
r249889r249890
1010   Most of this driver is based on guessing since I do not have access to the actual pcb for this game.
1111   Once we get a pcb, please review the correctness of the code in this driver before deleting this comment.
1212
13   TODO:
14   - IRQ and NMI sources are unknown
15   - proper PMM8713 and steppers emulation
13   There's a bunch of memory accesses that are not yet properly understood.
14   Supposedly these are reponsible for things like:
15
16   * controlling playback of samples of the OKI sound chip
17   * reading the status of the rear & front limit switches for each of the
18     5 alligators
19   * reading the hit sensors for the 5 alligators
20   * reading coin insertion and start button
21   * flashing lamps in the backglass (apparently there's a total of
22     20 lamps around the backframe)
23   * flashing the status lamps to indicate how good was the game of a player
24     (there are 5 different levels that can be shown inthe end of the game)
25   * controlling the 7-seg displays with:
26     - number of times the player successfully hit an alligator
27     - number of times the player was caught by an alligator
28     - final score
29     - highest score
1630*/
1731
1832#include "emu.h"
1933#include "cpu/m6809/m6809.h"
20#include "machine/i8255.h"
21#include "machine/pit8253.h"
22#include "machine/ticket.h"
23#include "sound/2413intf.h"
2434#include "sound/msm5205.h"
2535
26#include "wackygtr.lh"
27
28
2936class wackygtr_state : public driver_device
3037{
3138public:
3239   wackygtr_state(const machine_config &mconfig, device_type type, const char *tag)
3340      : driver_device(mconfig, type, tag),
34      m_maincpu(*this, "maincpu"),
35      m_msm(*this, "msm"),
36      m_pit8253_0(*this, "pit8253_0"),
37      m_pit8253_1(*this, "pit8253_1"),
38      m_ticket(*this, "ticket"),
39      m_samples(*this, "oki")
41   m_msm(*this, "msm"),
42   m_maincpu(*this, "maincpu")
4043   { }
4144
42   required_device<cpu_device> m_maincpu;
43   required_device<msm5205_device> m_msm;
44   required_device<pit8253_device> m_pit8253_0;
45   required_device<pit8253_device> m_pit8253_1;
46   required_device<ticket_dispenser_device> m_ticket;
47   required_memory_region m_samples;
45   UINT8* m_samples;
46   int m_adpcm_data;
47   int m_adpcm_pos;
48   int m_adpcm_length;
4849
50   required_device<msm5205_device> m_msm;
51   required_device<cpu_device> m_maincpu;
4952   DECLARE_DRIVER_INIT(wackygtr);
50   void machine_reset();
5153
54   INTERRUPT_GEN_MEMBER(wackygtr_interrupt);
5255   DECLARE_WRITE_LINE_MEMBER(adpcm_int);
53   DECLARE_WRITE8_MEMBER(sample_ctrl_w);
54   DECLARE_WRITE8_MEMBER(alligators_ctrl1_w);
55   DECLARE_WRITE8_MEMBER(alligators_ctrl2_w);
56   DECLARE_CUSTOM_INPUT_MEMBER(alligators_rear_sensors_r);
57   DECLARE_CUSTOM_INPUT_MEMBER(alligators_front_sensors_r);
58
59   void set_lamps(int p, UINT8 value);
60   DECLARE_WRITE8_MEMBER(status_lamps_w);
61   DECLARE_WRITE8_MEMBER(timing_lamps_0_w)     { set_lamps(8 , data); }
62   DECLARE_WRITE8_MEMBER(timing_lamps_1_w)     { set_lamps(16, data); }
63   DECLARE_WRITE8_MEMBER(timing_lamps_2_w)     { set_lamps(24, data); }
64
65   void set_digits(int p, UINT8 value);
66   DECLARE_WRITE8_MEMBER(disp0_w)              { set_digits(0, data); }
67   DECLARE_WRITE8_MEMBER(disp1_w)              { set_digits(2, data); }
68   DECLARE_WRITE8_MEMBER(disp2_w)              { set_digits(4, data); }
69   DECLARE_WRITE8_MEMBER(disp3_w)              { set_digits(6, data); }
70
71   void pmm8713_ck(int i, int state);
72   DECLARE_WRITE_LINE_MEMBER(alligator0_ck)    { pmm8713_ck(0, state); }
73   DECLARE_WRITE_LINE_MEMBER(alligator1_ck)    { pmm8713_ck(1, state); }
74   DECLARE_WRITE_LINE_MEMBER(alligator2_ck)    { pmm8713_ck(2, state); }
75   DECLARE_WRITE_LINE_MEMBER(alligator3_ck)    { pmm8713_ck(3, state); }
76   DECLARE_WRITE_LINE_MEMBER(alligator4_ck)    { pmm8713_ck(4, state); }
77
78   DECLARE_WRITE8_MEMBER(irq_ack_w)            { m_maincpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE); }
79   DECLARE_WRITE8_MEMBER(firq_ack_w)           { m_maincpu->set_input_line(M6809_FIRQ_LINE, CLEAR_LINE); }
80
81   TIMER_DEVICE_CALLBACK_MEMBER(nmi_timer)     { m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); }
82
83private:
84   int     m_adpcm_sel;
85   UINT16  m_adpcm_pos;
86   UINT8   m_adpcm_ctrl;
87
88   UINT8   m_alligators_ctrl;
89   int     m_motors_pos[5];
56   DECLARE_READ8_MEMBER(_0x6000_r);
57   DECLARE_READ8_MEMBER(_0x6001_r);
58   DECLARE_READ8_MEMBER(_0x6002_r);
59   DECLARE_READ8_MEMBER(_0x71d0_r);
60   DECLARE_READ8_MEMBER(_0x71d5_r);
61   DECLARE_WRITE8_MEMBER(sample_pos_w);
62   DECLARE_WRITE8_MEMBER(sample_length_w);
9063};
9164
9265
9366DRIVER_INIT_MEMBER(wackygtr_state, wackygtr)
9467{
68   m_adpcm_data = -1;
69   m_adpcm_pos = 0;
70   m_adpcm_length = 0;
71   m_samples = memregion("oki")->base();
9572}
9673
97WRITE8_MEMBER(wackygtr_state::status_lamps_w)
98{
99   /*
100       ---x xxxx   status lamps
101       --x- ----   game over lamp
102       -x-- ----   coin counter
103       x--- ----   ticket dispenser
104   */
105
106   set_lamps(0, data & 0x3f);
107
108   coin_counter_w(machine(), 0, BIT(data, 6));
109   m_ticket->write(space, 0, data & 0x80);
74/*
75 * The read handlers below are only boiler-plate for actual peripheral emulation
76 * and may be completely wrong, so should not yet be understood as hardware documentation.
77 */
78READ8_MEMBER(wackygtr_state::_0x6000_r){
79   return 0x00;
11080}
11181
112WRITE8_MEMBER(wackygtr_state::sample_ctrl_w)
113{
114   /*
115       --xx xxxx    sample index
116       -x-- ----    ???
117       x--- ----    5205 reset
118   */
119
120   m_adpcm_ctrl = data;
121   m_adpcm_pos = (data & 0x3f) * 0x400;
122   m_adpcm_sel = 0;
123   m_msm->reset_w(BIT(data, 7));
82READ8_MEMBER(wackygtr_state::_0x6001_r){
83   return 0x00;
12484}
12585
126WRITE8_MEMBER(wackygtr_state::alligators_ctrl1_w)
127{
128   m_pit8253_0->write_gate0(BIT(data, 0));
129   m_pit8253_0->write_gate1(BIT(data, 1));
130   m_pit8253_0->write_gate2(BIT(data, 2));
131   m_pit8253_1->write_gate1(BIT(data, 3));
132   m_pit8253_1->write_gate2(BIT(data, 4));
133
134   coin_lockout_w(machine(), 0, data & 0x40 ? 0 : 1);
86READ8_MEMBER(wackygtr_state::_0x6002_r){
87   return 0x00;
13588}
13689
137WRITE8_MEMBER(wackygtr_state::alligators_ctrl2_w)
138{
139   /*
140       ---- ---x    PMM8713 0 U/D
141       ---- --x-    PMM8713 1 U/D
142       ---- -x--    PMM8713 2 U/D
143       ---- x---    PMM8713 3 U/D
144       ---x ----    PMM8713 4 U/D
145   */
146
147   m_alligators_ctrl = data & 0x1f;
90READ8_MEMBER(wackygtr_state::_0x71d0_r){
91   return 0;
14892}
14993
150void wackygtr_state::pmm8713_ck(int i, int state)
151{
152   if (state)
153   {
154      m_motors_pos[i] += (BIT(m_alligators_ctrl, i) ? +1 : -1);
155
156      int alligator_state = m_motors_pos[i] / 10;
157      if (alligator_state > 5)    alligator_state = 5;
158      if (alligator_state < 0)    alligator_state = 0;
159      output_set_indexed_value("alligator", i, alligator_state);
160   }
94READ8_MEMBER(wackygtr_state::_0x71d5_r){
95   return 0xFF;
16196}
16297
163CUSTOM_INPUT_MEMBER(wackygtr_state::alligators_rear_sensors_r)
164{
165   return  ((m_motors_pos[0] < 10) ? 0x01 : 0) |
166         ((m_motors_pos[1] < 10) ? 0x02 : 0) |
167         ((m_motors_pos[2] < 10) ? 0x04 : 0) |
168         ((m_motors_pos[3] < 10) ? 0x08 : 0) |
169         ((m_motors_pos[4] < 10) ? 0x10 : 0) |
170         (m_alligators_ctrl ^ 0x1f);
98/* The handling of sample playback is also guessed.
99 * Someone with access to the actual hardware could help
100 * better understand how this is actually hooked up on the original boards;
101 */
102WRITE8_MEMBER(wackygtr_state::sample_pos_w){
103   m_adpcm_pos = (m_adpcm_pos & 0xFF) << 8 | (data & 0xFF);
171104}
172105
173CUSTOM_INPUT_MEMBER(wackygtr_state::alligators_front_sensors_r)
174{
175   return  ((m_motors_pos[0] < 5 || m_motors_pos[0] > 55) ? 0x01 : 0) |
176         ((m_motors_pos[1] < 5 || m_motors_pos[1] > 55) ? 0x02 : 0) |
177         ((m_motors_pos[2] < 5 || m_motors_pos[2] > 55) ? 0x04 : 0) |
178         ((m_motors_pos[3] < 5 || m_motors_pos[3] > 55) ? 0x08 : 0) |
179         ((m_motors_pos[4] < 5 || m_motors_pos[4] > 55) ? 0x10 : 0);
106WRITE8_MEMBER(wackygtr_state::sample_length_w){
107   m_adpcm_length = (m_adpcm_length & 0xFF) << 8 | (data & 0xFF);
180108}
181109
182void wackygtr_state::machine_reset()
183{
184   m_adpcm_pos = 0;
185   m_adpcm_sel = 0;
186   m_adpcm_ctrl = 0x80;
187}
188
189void wackygtr_state::set_digits(int p, UINT8 value)
190{
191   static UINT8 bcd2hex[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 };  // not accurate
192   output_set_digit_value(p + 0, bcd2hex[value & 0x0f]);
193   output_set_digit_value(p + 1, bcd2hex[(value >> 4) & 0x0f]);
194}
195
196void wackygtr_state::set_lamps(int p, UINT8 value)
197{
198   for(int i=0; i<8; i++)
199      output_set_lamp_value(p + i, BIT(value, i));
200}
201
202110static INPUT_PORTS_START( wackygtr )
203   PORT_START("IN0")
204   PORT_BIT(0x1f, IP_ACTIVE_LOW, IPT_SPECIAL)  PORT_CUSTOM_MEMBER(DEVICE_SELF, wackygtr_state, alligators_rear_sensors_r, NULL)
205   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_SERVICE)
206   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_SERVICE1)
207   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_COIN1)
208
209   PORT_START("IN1")
210   PORT_BIT(0x1f, IP_ACTIVE_LOW, IPT_SPECIAL)   PORT_CUSTOM_MEMBER(DEVICE_SELF, wackygtr_state, alligators_front_sensors_r, NULL)
211   PORT_DIPNAME( 0xe0, 0x00, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW:1,2,3")
212   PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
213   PORT_DIPSETTING(    0x20, DEF_STR( 1C_1C ) )
214   PORT_DIPSETTING(    0x40, DEF_STR( 1C_1C ) )
215   PORT_DIPSETTING(    0x60, DEF_STR( 2C_1C ) )
216   PORT_DIPSETTING(    0x80, DEF_STR( 1C_1C ) )
217   PORT_DIPSETTING(    0xa0, DEF_STR( 2C_1C ) )
218   PORT_DIPSETTING(    0xc0, DEF_STR( 1C_1C ) )
219   PORT_DIPSETTING(    0xe0, DEF_STR( 2C_1C ) )
220
221   PORT_START("IN2")
222   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1)
223   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2)
224   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3)
225   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4)
226   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5)
227   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Test ) ) PORT_DIPLOCATION("SW:4")   // For factory Test use ONLY! Do not change
228   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
229   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
230   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW:5")
231   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
232   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
233   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Test ) ) PORT_DIPLOCATION("SW:6")   // For factory Test use ONLY! Do not change
234   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
235   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
111   PORT_START("INP0")
112   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
236113INPUT_PORTS_END
237114
238115WRITE_LINE_MEMBER(wackygtr_state::adpcm_int)
239116{
240   if (!(m_adpcm_ctrl & 0x80))
117/* This looks almost correct, but I am not yet completely sure. */
118   if (m_adpcm_length > 0)
241119   {
242      UINT8 data = m_samples->base()[m_adpcm_pos & 0xffff];
243      m_msm->data_w((m_adpcm_sel ? data : (data >> 4)) & 0x0f);
244      m_adpcm_pos += m_adpcm_sel;
245      m_adpcm_sel ^= 1;
120      m_adpcm_length--;
121      if (m_adpcm_data == -1)
122      {
123         /* transferring 1st nibble */
124         m_adpcm_data = m_samples[m_adpcm_pos];
125         m_adpcm_pos = (m_adpcm_pos + 1) & 0xffff;
126         m_msm->data_w((m_adpcm_data >> 4) & 0xf);
127      }
128      else
129      {
130         /* transferring 2nd nibble */
131         m_msm->data_w(m_adpcm_data & 0x0f);
132         m_adpcm_data = -1;
133      }
246134   }
247135}
248136
249137static ADDRESS_MAP_START( program_map, AS_PROGRAM, 8, wackygtr_state )
250   AM_RANGE(0x0200, 0x0200) AM_READNOP AM_WRITE(irq_ack_w)
251   AM_RANGE(0x0400, 0x0400) AM_READNOP AM_WRITE(firq_ack_w)
252   AM_RANGE(0x0600, 0x0600) AM_WRITE(disp0_w)
253   AM_RANGE(0x0800, 0x0800) AM_WRITE(disp1_w)
254   AM_RANGE(0x0a00, 0x0a00) AM_WRITE(disp2_w)
255   AM_RANGE(0x0c00, 0x0c00) AM_WRITE(disp3_w)
256   AM_RANGE(0x0e00, 0x0e00) AM_WRITE(sample_ctrl_w)
257
258   AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ymsnd", ym2413_device, write)
259
260   AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("pit8253_0", pit8253_device, read, write)
261   AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pit8253_1", pit8253_device, read, write)
262
263   AM_RANGE(0x4000, 0x4003) AM_DEVREADWRITE("i8255_0", i8255_device, read, write)
264   AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("i8255_1", i8255_device, read, write)
265   AM_RANGE(0x6000, 0x6003) AM_DEVREADWRITE("i8255_2", i8255_device, read, write)
266
138   AM_RANGE(0x3000, 0x3000) AM_WRITE(sample_length_w)
139   AM_RANGE(0x3001, 0x3001) AM_WRITE(sample_pos_w)
140   AM_RANGE(0x6000, 0x6000) AM_READ(_0x6000_r) /* guessed hw peripheral address */
141   AM_RANGE(0x6001, 0x6001) AM_READ(_0x6001_r) /* guessed hw peripheral address */
142   AM_RANGE(0x6002, 0x6002) AM_READ(_0x6002_r) /* guessed hw peripheral address */
143   AM_RANGE(0x71d0, 0x71d0) AM_READ(_0x71d0_r) /* guessed hw peripheral address */
144   AM_RANGE(0x71d5, 0x71d5) AM_READ(_0x71d5_r) /* guessed hw peripheral address */
267145   AM_RANGE(0x7000, 0x7fff) AM_RAM
268146   AM_RANGE(0x8000, 0xffff) AM_ROM
269147ADDRESS_MAP_END
270148
271149static MACHINE_CONFIG_START( wackygtr, wackygtr_state )
272150
273   MCFG_CPU_ADD("maincpu", M6809E, XTAL_3_579545MHz)   // HD68B09P
151   MCFG_CPU_ADD("maincpu", M6809E, XTAL_8MHz)
274152   MCFG_CPU_PROGRAM_MAP(program_map)
275   MCFG_CPU_PERIODIC_INT_DRIVER(wackygtr_state, irq0_line_assert, 50)  // FIXME
276153
277   MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", wackygtr_state, nmi_timer, attotime::from_hz(100))  // FIXME
278
279154   /* Video */
280   MCFG_DEFAULT_LAYOUT(layout_wackygtr)
155//    MCFG_DEFAULT_LAYOUT(layout_wackygtr)
281156
282157   /* Sound */
283158   MCFG_SPEAKER_STANDARD_MONO("mono")
r249889r249890
286161   MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B)      /* 8 KHz, 4 Bits  */
287162   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
288163
289   MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz )
290   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
291
292   MCFG_DEVICE_ADD("i8255_0", I8255, 0)
293   MCFG_I8255_OUT_PORTA_CB(WRITE8(wackygtr_state, status_lamps_w))
294   MCFG_I8255_OUT_PORTB_CB(WRITE8(wackygtr_state, alligators_ctrl1_w))
295   MCFG_I8255_OUT_PORTC_CB(WRITE8(wackygtr_state, alligators_ctrl2_w))
296
297   MCFG_DEVICE_ADD("i8255_1", I8255, 0)
298   MCFG_I8255_OUT_PORTA_CB(WRITE8(wackygtr_state, timing_lamps_0_w))
299   MCFG_I8255_OUT_PORTB_CB(WRITE8(wackygtr_state, timing_lamps_1_w))
300   MCFG_I8255_OUT_PORTC_CB(WRITE8(wackygtr_state, timing_lamps_2_w))
301
302   MCFG_DEVICE_ADD("i8255_2", I8255, 0)
303   MCFG_I8255_IN_PORTA_CB(IOPORT("IN0"))
304   MCFG_I8255_IN_PORTB_CB(IOPORT("IN1"))
305   MCFG_I8255_IN_PORTC_CB(IOPORT("IN2"))
306
307   MCFG_DEVICE_ADD("pit8253_0", PIT8253, 0)
308   MCFG_PIT8253_CLK0(XTAL_3_579545MHz/16)  // this is a guess
309   MCFG_PIT8253_OUT0_HANDLER(WRITELINE(wackygtr_state, alligator0_ck))
310   MCFG_PIT8253_CLK1(XTAL_3_579545MHz/16)  // this is a guess
311   MCFG_PIT8253_OUT1_HANDLER(WRITELINE(wackygtr_state, alligator1_ck))
312   MCFG_PIT8253_CLK2(XTAL_3_579545MHz/16)  // this is a guess
313   MCFG_PIT8253_OUT2_HANDLER(WRITELINE(wackygtr_state, alligator2_ck))
314
315   MCFG_DEVICE_ADD("pit8253_1", PIT8253, 0)
316   MCFG_PIT8253_CLK0(XTAL_3_579545MHz/16)  // this is a guess
317   MCFG_PIT8253_OUT0_HANDLER(INPUTLINE("maincpu", M6809_FIRQ_LINE))
318   MCFG_PIT8253_CLK1(XTAL_3_579545MHz/16)  // this is a guess
319   MCFG_PIT8253_OUT1_HANDLER(WRITELINE(wackygtr_state, alligator3_ck))
320   MCFG_PIT8253_CLK2(XTAL_3_579545MHz/16)  // this is a guess
321   MCFG_PIT8253_OUT2_HANDLER(WRITELINE(wackygtr_state, alligator4_ck))
322
323   MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
164   /* I have a hunch that this board may also
165    * contain a YM2151 sound chip for background music...
166    */
324167MACHINE_CONFIG_END
325168
326169
trunk/src/mame/includes/abc80x.h
r249889r249890
4444#define ABC806_ATTR_RAM_SIZE    0x800
4545#define ABC806_VIDEO_RAM_SIZE   0x20000
4646
47#define ABC800_CHAR_WIDTH   12
47#define ABC800_CHAR_WIDTH   6
4848#define ABC800_CCLK         ABC800_X01/ABC800_CHAR_WIDTH
4949
5050#define SCREEN_TAG          "screen"
trunk/src/mame/includes/amstrad.h
r249889r249890
3030#include "bus/cpc/brunword4.h"
3131#include "bus/cpc/hd20.h"
3232#include "bus/cpc/magicsound.h"
33#include "bus/cpc/doubler.h"
3433#include "machine/ram.h"
3534#include "imagedev/cassette.h"
3635#include "bus/centronics/ctronics.h"
trunk/src/mame/includes/apollo.h
r249889r249890
4646#define MLOG(x)  { logerror ("%s: ", apollo_cpu_context(machine().device(MAINCPU))); LOG(x) }
4747#define MLOG1(x) { if (VERBOSE > 0) MLOG(x) }
4848#define MLOG2(x) { if (VERBOSE > 1) MLOG(x) }
49#define SLOG(x)  { logerror ("%s: ", apollo_cpu_context(m_maincpu)); LOG(x) }
49#define SLOG(x)  { logerror ("%s: ", apollo_cpu_context(&space.device())); LOG(x) }
5050#define SLOG1(x) { if (VERBOSE > 0) SLOG(x) }
5151#define SLOG2(x) { if (VERBOSE > 1) SLOG(x) }
5252
5353#define  MAINCPU "maincpu"
5454
55// Enabling this is >NOT< supported by MESSdev
56// Do *not* report any issues on Mametesters if this is enabled!
57// #define APOLLO_XXL
58
5955/*----------- machine/apollo_dbg.c -----------*/
6056
6157int apollo_debug_instruction_hook(m68000_base_device *device, offs_t curpc);
r249889r249890
7470// return 1 if node is DN3000 or DSP3000, 0 otherwise
7571int apollo_is_dn3000(void);
7672
77// return 1 if node is DN5500 or DSP5500, 0 otherwise
78int apollo_is_dn5500(void);
79
8073// return 1 if node is DSP3000 or DSP3500, 0 otherwise
8174int apollo_is_dsp3x00(void);
8275
r249889r249890
10598#define APOLLO_SIO_TAG  "sio"
10699#define APOLLO_SIO2_TAG "sio2"
107100#define APOLLO_ETH_TAG  "3c505"
108#define APOLLO_NI_TAG  "node_id"
109101#define APOLLO_ISA_TAG "isabus"
110102
111103// forward declaration
112104class apollo_sio;
113class apollo_ni;
114105
115106class apollo_state : public driver_device
116107{
r249889r249890
127118         m_sio(*this, APOLLO_SIO_TAG),
128119         m_sio2(*this, APOLLO_SIO2_TAG),
129120         m_rtc(*this, APOLLO_RTC_TAG),
130         m_node_id(*this, APOLLO_NI_TAG),
131121         m_isa(*this, APOLLO_ISA_TAG)
132122         { }
133123
r249889r249890
142132   required_device<apollo_sio> m_sio;
143133   optional_device<apollo_sio> m_sio2;
144134   required_device<mc146818_device> m_rtc;
145   required_device<apollo_ni> m_node_id;
146135   required_device<isa16_device> m_isa;
147136
148137   DECLARE_WRITE16_MEMBER(apollo_csr_status_register_w);
r249889r249890
184173   DECLARE_WRITE16_MEMBER(apollo_atbus_io_w);
185174   DECLARE_READ16_MEMBER(apollo_atbus_memory_r);
186175   DECLARE_WRITE16_MEMBER(apollo_atbus_memory_w);
187   DECLARE_READ16_MEMBER(apollo_atbus_unmap_io_r);
188   DECLARE_WRITE16_MEMBER(apollo_atbus_unmap_io_w);
189   DECLARE_READ8_MEMBER(apollo_atbus_unmap_r);
190   DECLARE_WRITE8_MEMBER(apollo_atbus_unmap_w);
191176   DECLARE_WRITE8_MEMBER(dn5500_memory_present_register_w);
192177   DECLARE_READ8_MEMBER(dn5500_memory_present_register_r);
193178   DECLARE_WRITE8_MEMBER(dn5500_11500_w);
r249889r249890
350335
351336extern const device_type APOLLO_SIO;
352337
353/*----------- machine/apollo_ni.c -----------*/
354
355#define MCFG_APOLLO_NI_ADD(_tag, _xtal) \
356   MCFG_DEVICE_ADD(_tag, APOLLO_NI, _xtal)
357
358/*** Apollo Node ID device ***/
359
360class apollo_ni: public device_t, public device_image_interface
361{
362public:
363   // construction/destruction
364   apollo_ni(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
365   virtual ~apollo_ni();
366
367   virtual iodevice_t image_type() const { return IO_ROM; }
368
369   virtual bool is_readable()  const { return 1; }
370   virtual bool is_writeable() const { return 1; }
371   virtual bool is_creatable() const { return 1; }
372   virtual bool must_be_loaded() const { return 0; }
373   virtual bool is_reset_on_load() const { return 0; }
374   virtual const char *image_interface() const { return NULL; }
375   virtual const char *file_extensions() const { return "ani,bin"; }
376   virtual const option_guide *create_option_guide() const { return NULL; }
377
378   DECLARE_WRITE16_MEMBER(write);
379   DECLARE_READ16_MEMBER(read);
380
381   // image-level overrides
382   virtual bool call_load();
383   virtual bool call_create(int format_type, option_resolution *format_options);
384   virtual void call_unload();
385
386   void set_node_id_from_disk();
387
388protected:
389   // device-level overrides
390   virtual void device_config_complete() ;
391   virtual void device_start();
392   virtual void device_reset();
393
394private:
395   void set_node_id(UINT32 node_id);
396   UINT32 m_node_id;
397};
398
399// device type definition
400extern const device_type APOLLO_NI;
401
402338/*----------- video/apollo.c -----------*/
403339
404340#define APOLLO_SCREEN_TAG "apollo_screen"
r249889r249890
663599
664600MACHINE_CONFIG_EXTERN( apollo_mono19i );
665601
666#ifdef APOLLO_XXL
667
668/*----------- machine/apollo_stdio.c -----------*/
669
670//**************************************************************************
671//  DEVICE CONFIGURATION MACROS
672//**************************************************************************
673
674#define MCFG_APOLLO_STDIO_TX_CALLBACK(_cb) \
675   devcb = &apollo_stdio_device::set_tx_cb(*device, DEVCB_##_cb);
676
677//**************************************************************************
678//  TYPE DEFINITIONS
679//**************************************************************************
680
681// ======================> apollo_stdio_device
682
683class apollo_stdio_device: public device_t, public device_serial_interface
684{
685public:
686   // construction/destruction
687   apollo_stdio_device(const machine_config &mconfig, const char *tag,
688         device_t *owner, UINT32 clock);
689
690   template<class _Object> static devcb_base &set_tx_cb(device_t &device, _Object object)
691   {
692      return downcast<apollo_stdio_device &> (device).m_tx_w.set_callback(object);
693   }
694
695   devcb_write_line m_tx_w;
696
697private:
698   // device-level overrides
699   virtual void device_start();
700   virtual void device_reset();
701   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
702
703   // serial overrides
704   virtual void rcv_complete(); // Rx completed receiving byte
705   virtual void tra_complete(); // Tx completed sending byte
706   virtual void tra_callback(); // Tx send bit
707
708   TIMER_CALLBACK_MEMBER( poll_timer );
709   void xmit_char(UINT8 data);
710
711   static const int XMIT_RING_SIZE = 64;
712
713   UINT8 m_xmitring[XMIT_RING_SIZE];
714   int m_xmit_read, m_xmit_write;
715   bool m_tx_busy;
716
717   emu_timer* m_poll_timer;
718};
719
720// device type definition
721extern const device_type APOLLO_STDIO;
722#endif /* APOLLO_XXL */
723
724602#endif /* APOLLO_H_ */
trunk/src/mame/includes/bbc.h
r249889r249890
8383      m_palette(*this, "palette")
8484   { }
8585
86   DECLARE_FLOPPY_FORMATS(floppy_formats_bbc);
87   DECLARE_FLOPPY_FORMATS(floppy_formats_bbcm);
88   DECLARE_FLOPPY_FORMATS(floppy_formats_bbcmc);
86   DECLARE_FLOPPY_FORMATS(floppy_formats_525sd);
87   DECLARE_FLOPPY_FORMATS(floppy_formats_525dd);
88   DECLARE_FLOPPY_FORMATS(floppy_formats_35dd);
8989
9090   DECLARE_WRITE8_MEMBER(bbc_page_selecta_w);
9191   DECLARE_WRITE8_MEMBER(bbc_memorya1_w);
r249889r249890
154154   DECLARE_READ8_MEMBER(bbcb_via_user_read_portb);
155155   DECLARE_WRITE8_MEMBER(bbcb_via_user_write_portb);
156156   DECLARE_WRITE_LINE_MEMBER(bbcb_via_user_irq_w);
157   DECLARE_WRITE_LINE_MEMBER(bbc_wd177x_intrq_w);
158   DECLARE_WRITE_LINE_MEMBER(bbc_wd177x_drq_w);
157159   DECLARE_WRITE_LINE_MEMBER(bbc_vsync);
158160   void update_acia_rxd();
159161   void update_acia_dcd();
r249889r249890
164166   DECLARE_WRITE_LINE_MEMBER(write_dcd_serial);
165167   DECLARE_WRITE_LINE_MEMBER(write_cts_serial);
166168   DECLARE_INPUT_CHANGED_MEMBER( trigger_reset );
167   DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w);
168   DECLARE_WRITE_LINE_MEMBER(fdc_drq_w);
169   DECLARE_WRITE_LINE_MEMBER(bbc_i8271_interrupt);
169170   DECLARE_WRITE_LINE_MEMBER(motor_w);
170171   DECLARE_WRITE_LINE_MEMBER(side_w);
171172
r249889r249890
175176   void bbc_setup_banks(memory_bank *membank, int banks, UINT32 shift, UINT32 size);
176177   void bbcm_setup_banks(memory_bank *membank, int banks, UINT32 shift, UINT32 size);
177178
178   int bbc_load_rom(device_image_interface &image, generic_slot_device *slot);
179   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(exp1_load) { return bbc_load_rom(image, m_exp1); }
180   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(exp2_load) { return bbc_load_rom(image, m_exp2); }
181   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(exp3_load) { return bbc_load_rom(image, m_exp3); }
182   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(exp4_load) { return bbc_load_rom(image, m_exp4); }
179   int bbc_load_cart(device_image_interface &image, generic_slot_device *slot);
180   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(exp1_load) { return bbc_load_cart(image, m_exp1); }
181   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(exp2_load) { return bbc_load_cart(image, m_exp2); }
182   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(exp3_load) { return bbc_load_cart(image, m_exp3); }
183   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(exp4_load) { return bbc_load_cart(image, m_exp4); }
183184
184185   int bbcm_load_cart(device_image_interface &image, generic_slot_device *slot);
185186   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(bbcm_exp1_load) { return bbcm_load_cart(image, m_exp1); }
r249889r249890
227228
228229   void check_interrupts();
229230
230   bool m_os01;            // flag indicating whether OS 0.1 is being used
231231   int m_SWRAMtype;        // this stores the DIP switch setting for the SWRAM type being used
232232   int m_Speech;           // this stores the CONF setting for Speech enabled/disabled
233233
r249889r249890
344344
345345
346346                     /**************************************
347                        i8271 disc control
348                     ***************************************/
349
350   int m_previous_i8271_int_state; // 8271 interrupt status
351
352                     /**************************************
347353                        WD1770 disc control
348354                     ***************************************/
349355
350356   int m_drive_control;
351   int m_fdc_irq;
352   int m_fdc_drq;
357   int m_wd177x_irq_state;
358   int m_wd177x_drq_state;
359   int m_previous_wd177x_int_state;
360   int m_177x_IntEnabled;
353361
354362                     /**************************************
355363                        Video Code
r249889r249890
378386   int m_BBC_HSync;
379387   int m_BBC_VSync;
380388
389
381390   int m_Teletext_Latch;
382391   int m_VideoULA_CR;
383392   int m_VideoULA_CR_counter;
r249889r249890
389398   int m_videoULA_teletext_normal_select;
390399   int m_videoULA_flash_colour_select;
391400
401
392402   int m_pixels_per_byte;
393403   int m_emulation_pixels_per_real_pixel;
394404   int m_emulation_pixels_per_byte;
r249889r249890
396406   int m_emulation_cursor_size;
397407   int m_cursor_state;
398408
399   int m_videoULA_palette0[16];
400   int m_videoULA_palette1[16];
401   int *m_videoULA_palette_lookup;
409   int m_videoULA_pallet0[16];
410   int m_videoULA_pallet1[16];
411   int *m_videoULA_pallet_lookup;
402412
403   void bbc_setvideoshadow(int vdusel);
413   void (*m_draw_function)(running_machine &machine);
414
415   void bbcbp_setvideoshadow(int vdusel);
404416   void common_init(int memorySize);
405417   void set_pixel_lookup();
406418   void set_cursor(bbc_state *state);
407419   void BBC_Clock_CR(bbc_state *state);
420   void BBC_draw_teletext();
421   void BBC_ula_drawpixel(bbc_state *state, int col, int number_of_pixels);
422   void BBC_draw_hi_res();
408423   void BBC_Set_HSync(int offset, int data);
409424   void BBC_Set_VSync(int offset, int data);
410425   void BBC_Set_CRE(int offset, int data);
426   void bbc_frameclock();
411427   int vdudriverset();
412428   int bbcm_vdudriverset();
413429   int bbc_keyboard(address_space &space, int data);
414430   void bbcb_IC32_initialise(bbc_state *state);
415431   void MC146818_set(address_space &space);
432   void bbc_TMSint(int status);
416433   void MC6850_Receive_Clock(int new_clock);
417434   void BBC_Cassette_motor(unsigned char status);
418   void bbc_update_nmi();
435   void bbc_update_fdq_int(int state);
419436   unsigned int calculate_video_address(int ma,int ra);
420437   required_device<palette_device> m_palette;
421438};
trunk/src/mame/includes/champbas.h
r249889r249890
66
77*************************************************************************/
88
9
10#define CPUTAG_MCU "mcu"
911#include "sound/dac.h"
1012
11
1213class champbas_state : public driver_device
1314{
1415public:
r249889r249890
1920      m_spriteram_2(*this, "spriteram_2"),
2021      m_maincpu(*this, "maincpu"),
2122      m_audiocpu(*this, "audiocpu"),
22      m_mcu(*this, "mcu"),
23      m_mcu(*this, CPUTAG_MCU),
2324      m_dac(*this, "dac"),
2425      m_dac1(*this, "dac1"),
2526      m_dac2(*this, "dac2"),
2627      m_gfxdecode(*this, "gfxdecode"),
27      m_palette(*this, "palette")
28   { }
28      m_palette(*this, "palette"){ }
2929
3030   /* memory pointers */
3131   required_shared_ptr<UINT8> m_bg_videoram;
trunk/src/mame/includes/imds2.h
r249889r249890
8080   required_device<pit8253_device> m_ioctimer;
8181   required_device<i8271_device> m_iocfdc;
8282   required_device<floppy_connector> m_flop0;
83   required_device<floppy_connector> m_flop1;
8384   required_device<i8041_device> m_iocpio;
8485   required_device<i8741_device> m_kbcpu;
8586   required_device<palette_device> m_palette;
r249889r249890
101102
102103   void imds2_update_beeper(void);
103104   void imds2_update_printer(void);
105   int floppy_load(floppy_image_device *dev);
106   void floppy_unload(floppy_image_device *dev);
104107
105108   // IPC control port
106109   UINT8 m_ipc_control;
trunk/src/mame/includes/osborne1.h
r249889r249890
4747      m_row5(*this, "ROW5"),
4848      m_row6(*this, "ROW6"),
4949      m_row7(*this, "ROW7"),
50      m_cnf(*this, "CNF"),
5150      m_bank1(*this, "bank1"),
5251      m_bank2(*this, "bank2"),
5352      m_bank3(*this, "bank3"),
r249889r249890
9493   bool m_pia_0_irq_state;
9594   bool m_pia_1_irq_state;
9695   /* video related */
97   UINT8   m_screen_pac;
98   UINT8   m_resolution;
99   UINT8   m_hc_left;
10096   UINT8   m_new_start_x;
10197   UINT8   m_new_start_y;
10298   emu_timer *m_video_timer;
r249889r249890
119115   required_ioport m_row5;
120116   required_ioport m_row6;
121117   required_ioport m_row7;
122   required_ioport m_cnf;
123118   required_memory_bank m_bank1;
124119   required_memory_bank m_bank2;
125120   required_memory_bank m_bank3;
trunk/src/mame/includes/timeplt.h
r249889r249890
1515      : driver_device(mconfig, type, tag),
1616      m_maincpu(*this, "maincpu"),
1717      m_tc8830f(*this, "tc8830f"),
18      m_gfxdecode(*this, "gfxdecode"),
19      m_screen(*this, "screen"),
20      m_palette(*this, "palette"),
2118      m_colorram(*this, "colorram"),
2219      m_videoram(*this, "videoram"),
2320      m_spriteram(*this, "spriteram"),
24      m_spriteram2(*this, "spriteram2")
21      m_spriteram2(*this, "spriteram2"),
22      m_gfxdecode(*this, "gfxdecode"),
23      m_screen(*this, "screen"),
24      m_palette(*this, "palette")
2525   { }
2626
2727   required_device<cpu_device> m_maincpu;
2828   optional_device<tc8830f_device> m_tc8830f;
29   required_device<gfxdecode_device> m_gfxdecode;
30   required_device<screen_device> m_screen;
31   required_device<palette_device> m_palette;
3229
3330   /* memory pointers */
3431   required_shared_ptr<UINT8> m_colorram;
r249889r249890
3633   required_shared_ptr<UINT8> m_spriteram;
3734   required_shared_ptr<UINT8> m_spriteram2;
3835
36   required_device<gfxdecode_device> m_gfxdecode;
37   required_device<screen_device> m_screen;
38   required_device<palette_device> m_palette;
39
3940   /* video-related */
4041   tilemap_t  *m_bg_tilemap;
4142
4243   /* misc */
4344   UINT8    m_nmi_enable;
44   bool    m_video_enable;
4545
46   /* common */
47   DECLARE_WRITE8_MEMBER(coincounter_w);
48   DECLARE_WRITE8_MEMBER(videoram_w);
49   DECLARE_WRITE8_MEMBER(colorram_w);
50   DECLARE_WRITE8_MEMBER(flipscreen_w);
51   DECLARE_READ8_MEMBER(scanline_r);
52
53   /* all but psurge */
54   DECLARE_WRITE8_MEMBER(nmi_enable_w);
55   DECLARE_WRITE8_MEMBER(video_enable_w);
56
57   /* psurge */
46   DECLARE_WRITE8_MEMBER(timeplt_nmi_enable_w);
47   DECLARE_WRITE8_MEMBER(timeplt_coin_counter_w);
5848   DECLARE_READ8_MEMBER(psurge_protection_r);
59
60   /* chkun */
49   DECLARE_WRITE8_MEMBER(timeplt_videoram_w);
50   DECLARE_WRITE8_MEMBER(timeplt_colorram_w);
51   DECLARE_WRITE8_MEMBER(timeplt_flipscreen_w);
52   DECLARE_READ8_MEMBER(timeplt_scanline_r);
6153   DECLARE_CUSTOM_INPUT_MEMBER(chkun_hopper_status_r);
6254   DECLARE_WRITE8_MEMBER(chkun_sound_w);
63
6455   TILE_GET_INFO_MEMBER(get_tile_info);
6556   TILE_GET_INFO_MEMBER(get_chkun_tile_info);
66
6757   virtual void machine_start();
6858   virtual void machine_reset();
6959   virtual void video_start();
7060   DECLARE_PALETTE_INIT(timeplt);
7161   DECLARE_VIDEO_START(chkun);
72   DECLARE_VIDEO_START(psurge);
73
74   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
62   UINT32 screen_update_timeplt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
63   INTERRUPT_GEN_MEMBER(timeplt_interrupt);
7564   void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
76
77   INTERRUPT_GEN_MEMBER(interrupt);
7865};
trunk/src/mame/layout/by17.lay
r249889r249890
1<!-- Pinball Machine, Bally ~ Template -17 MPU board -->
1<!-- BY17 copied from gp_1.lay -->
22
33<!-- 2014-07-26: Initial version.  [Robbbert] -->
4<!-- 2015-August: Added Lamp states, Solenoid states, Switch Matrix and a kit of playfield objects.  [Quench] -->
54
6
7<!-- Any state="9" items are not displayed and are only used for object alignment -->
8
95<mamelayout version="2">
106
11   <element name="Title_Bally">   <text string="Bally"><color red="0.25" green="0.5" blue="1.0" /></text></element>
12
13   <element name="Text_Playfield"><text string="See PowerPlay and MataHari for mockup Playfield layouts"><color red="1.0" green="0.0" blue="1.0" /></text></element>
14   <element name="Text_Legend">   <text string="Consult game schematic for Switch, Lamp and Solenoid allocation"><color red="0.0" green="1.0" blue="0.0" /></text></element>
15   <element name="Text_Switch">   <text string="Switch Matrix"><color red="0.0" green="1.0" blue="1.0" /></text></element>
16
17
18
19<!-- Switches -->
20
21   <element name="Switch_SlamTilt">
22      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="00" width="25" height="01" /></rect>
23      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="08" width="13" height="01.5" /></rect>
24      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="01" width="04" height="02" /></rect>
25      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="06" width="04" height="02" /></rect>
26
27      <rect state="0"><color red="0.70" green="0.70" blue="0.70" /><bounds x="19" y="01" width="06" height="04" /></rect>
28      <rect state="1"><color red="0.70" green="0.70" blue="0.70" /><bounds x="19" y="04" width="06" height="04" /></rect>
29
30      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="00" width="08" height="01" /></rect>
31      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="08" y="01" width="08" height="01" /></rect>
32      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="16" y="02" width="09" height="01" /></rect>
33
34
35      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="08"  width="13" height="01.5" /></rect>
36      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="03"  width="04" height="02" /></rect>
37      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="06"  width="04" height="02" /></rect>
7   <element name="digit" defstate="0">
8      <led7seg>
9         <color red="1.0" green="0.75" blue="0.0" />
10      </led7seg>
3811   </element>
39
40   <element name="Switch_Tilt">
41      <rect          ><color red="0.80" green="0.80" blue="0.00" /><bounds x="00" y="00" width="17" height="17" /></rect>
42      <disk          ><color red="0.00" green="0.00" blue="0.00" /><bounds x="01" y="01" width="15" height="15" /></disk>
43      <disk state="0"><color red="0.50" green="0.50" blue="0.50" /><bounds x="04" y="04" width="09" height="09" /></disk>
44      <disk state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="07" width="02" height="02" /></disk>
45
46      <disk state="1"><color red="0.50" green="0.50" blue="0.50" /><bounds x="07" y="04" width="09" height="09" /></disk>
47      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="11" y="07" width="02" height="02" /></disk>
12   <element name="red_led">
13      <disk><color red="1.0" green="0.0" blue="0.0" /></disk>
4814   </element>
49
50
51   <element name="Switch_Leaf_Vertical">
52      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="0" y="00" width="01"   height="06" /></rect>
53      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="8" y="00" width="01.5" height="06" /></rect>
54      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="1" y="01" width="02"   height="04" /></rect>
55      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="6" y="01" width="02"   height="04" /></rect>
56
57      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="1.5" y="00" width="01" height="06" /></rect>
58      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="6.5" y="00" width="01" height="06" /></rect>
59      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="2"   y="01" width="02" height="04" /></rect>
60      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="4.5" y="01" width="02" height="04" /></rect>
61   </element>
62
63   <element name="Switch_RollOn_WireForm_Left">
64      <text string=">" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="8" y="0" width="11"  height="11"  /></text>
65      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="0.1" height="04"  /></rect>
66      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="09"  height="0.1" /></rect>
67      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="8" width="09"  height="0.1" /></rect>
68      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="3" y="6" width="08"  height="0.1" /></rect>
69      <text string=">" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="8" y="0" width="11"  height="11"  /></text>
70      <rect            state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="0.1" height="04"  /></rect>
71      <rect            state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="09"  height="0.1" /></rect>
72      <rect            state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="8" width="09"  height="0.1" /></rect>
73   </element>
74
75   <element name="Switch_RollOn_WireForm_Down">
76      <text string="/\" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="00" width="07"  height="10" /></text>
77      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="17" width="04"  height="0.1" /></rect>
78      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="09" width="0.1" height="09" /></rect>
79      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="5" y="09" width="0.1" height="09" /></rect>
80      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="3" y="07" width="0.1" height="08" /></rect>
81      <text string="/\" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="00" width="07"  height="10" /></text>
82      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="17" width="04"  height="0.1" /></rect>
83      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="09" width="0.1" height="09" /></rect>
84      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="5" y="09" width="0.1" height="09" /></rect>
85   </element>
86
87   <element name="Switch_RollOver_WireForm_Vertical">
88      <text string="/\" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="00" width="07"  height="10" /></text>
89      <text string="\/" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="17" width="07"  height="10" /></text>
90      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="09" width="0.1" height="09" /></rect>
91      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="5" y="09" width="0.1" height="09" /></rect>
92      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="3" y="07" width="0.1" height="13" /></rect>
93      <text string="/\" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="00" width="07"  height="10" /></text>
94      <text string="\/" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="17" width="07"  height="10" /></text>
95      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="09" width="0.1" height="09" /></rect>
96      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="5" y="09" width="0.1" height="09" /></rect>
97   </element>
98
99   <element name="Switch_Target_Red_Forward" defstate="0">
100      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="00" width="10" height="01" /></rect>
101      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="00" width="01" height="05" /></rect>
102      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="16" y="00" width="01" height="05" /></rect>
103
104      <disk state="0"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="05" width="24" height="06" /></disk>
105      <disk state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="02" width="24" height="06" /></disk>
106   </element>
107
108   <element name="Target_White_Left" defstate="0">
109      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="06" width="01" height="10" /></rect>
110      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="06" width="05" height="01" /></rect>
111      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="16" width="05" height="01" /></rect>
112      <disk state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="05" y="00" width="06" height="24" /></disk>
113      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="02" y="00" width="06" height="24" /></disk>
114   </element>
115
116
117   <element name="Switch_RollOver_Button">
118      <text string="*" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="-10" y="-6" width="35" height="35" /></text>
119      <text string="*" state="1"><color red="0.00" green="0.00" blue="0.00" /><bounds x="-10" y="-6" width="35" height="35" /></text>
120   </element>
121
122   <element name="Lamp_RollOver_Button" defstate="0">
123      <disk state="0"><color red="0.15" green="0.04" blue="0.00" /><bounds x="0" y="0" width="15" height="15" /></disk>
124      <disk state="1"><color red="1.00" green="0.30" blue="0.00" /><bounds x="0" y="0" width="15" height="15" /></disk>
125   </element>
126
127   <element name="Lamp_RollOver_Button_On">
128      <disk><color red="1.00" green="0.30" blue="0.00" /><bounds x="0" y="0" width="15" height="15" /></disk>
129   </element>
130
131
132   <element name="Switch_Push-Button" defstate="0">
133      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="04" width="16" height="01" /></rect>
134      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="00" width="01" height="04" /></rect>
135      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="17" y="00" width="01" height="04" /></rect>
136      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="00" width="05" height="01" /></rect>
137      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="08.5" width="16" height="01" /></rect>
138      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="04.5" width="01" height="04" /></rect>
139      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="17" y="04.5" width="01" height="04" /></rect>
140      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="04.5" width="05" height="01" /></rect>
141      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="12" width="09" height="01" /></rect>
142      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="21" y="12" width="09" height="01" /></rect>
143      <disk          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="10" width="06" height="06" /></disk>
144      <disk          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="18" y="10" width="06" height="06" /></disk>
145   </element>
146
147
148
149   <element name="Key_Z">     <text string="Z"><color red="1.00" green="0.66" blue="0.66" /></text></element>
150   <element name="Key_X">     <text string="X"><color red="1.00" green="0.66" blue="0.66" /></text></element>
151   <element name="Key_C">     <text string="C"><color red="1.00" green="0.66" blue="0.66" /></text></element>
152   <element name="Key_V">     <text string="V"><color red="1.00" green="0.66" blue="0.66" /></text></element>
153   <element name="Key_B">     <text string="B"><color red="1.00" green="0.66" blue="0.66" /></text></element>
154   <element name="Key_N">     <text string="N"><color red="1.00" green="0.66" blue="0.66" /></text></element>
155   <element name="Key_M">     <text string="M"><color red="1.00" green="0.66" blue="0.66" /></text></element>
156   <element name="Key_Comma"> <text string=","><color red="1.00" green="0.66" blue="0.66" /></text></element>
157   <element name="Key_Dot">   <text string="."><color red="1.00" green="0.66" blue="0.66" /></text></element>
158   <element name="Key_FSlash"><text string="/"><color red="1.00" green="0.66" blue="0.66" /></text></element>
159
160   <element name="Key_A">     <text string="A"><color red="1.00" green="0.66" blue="0.66" /></text></element>
161   <element name="Key_S">     <text string="S"><color red="1.00" green="0.66" blue="0.66" /></text></element>
162   <element name="Key_D">     <text string="D"><color red="1.00" green="0.66" blue="0.66" /></text></element>
163   <element name="Key_F">     <text string="F"><color red="1.00" green="0.66" blue="0.66" /></text></element>
164   <element name="Key_G">     <text string="G"><color red="1.00" green="0.66" blue="0.66" /></text></element>
165   <element name="Key_H">     <text string="H"><color red="1.00" green="0.66" blue="0.66" /></text></element>
166   <element name="Key_J">     <text string="J"><color red="1.00" green="0.66" blue="0.66" /></text></element>
167   <element name="Key_K">     <text string="K"><color red="1.00" green="0.66" blue="0.66" /></text></element>
168   <element name="Key_L">     <text string="L"><color red="1.00" green="0.66" blue="0.66" /></text></element>
169   <element name="Key_SColon"><text string=";"><color red="1.00" green="0.66" blue="0.66" /></text></element>
170   <element name="Key_Quote"> <text string="'"><color red="1.00" green="0.66" blue="0.66" /></text></element>
171   <element name="Key_Enter">
172      <text string="&#60;"><color red="1.00" green="0.66" blue="0.66" /><bounds x="00" y="00" width="07"  height="10" /></text>
173      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="00" y="00" width="07"  height="10" /></text>
174      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="02" y="00" width="07"  height="10" /></text>
175      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="04" y="00" width="07"  height="10" /></text>
176      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="06" y="00" width="07"  height="10" /></text>
177      <disk           >    <color red="1.00" green="0.66" blue="0.66" /><bounds x="10" y="02" width="0.5" height="03" /></disk>
178   </element>
179
180   <element name="Key_Q">     <text string="Q"><color red="1.00" green="0.66" blue="0.66" /></text></element>
181   <element name="Key_W">     <text string="W"><color red="1.00" green="0.66" blue="0.66" /></text></element>
182   <element name="Key_E">     <text string="E"><color red="1.00" green="0.66" blue="0.66" /></text></element>
183   <element name="Key_R">     <text string="R"><color red="1.00" green="0.66" blue="0.66" /></text></element>
184   <element name="Key_T">     <text string="T"><color red="1.00" green="0.66" blue="0.66" /></text></element>
185   <element name="Key_Y">     <text string="Y"><color red="1.00" green="0.66" blue="0.66" /></text></element>
186   <element name="Key_U">     <text string="U"><color red="1.00" green="0.66" blue="0.66" /></text></element>
187   <element name="Key_I">     <text string="I"><color red="1.00" green="0.66" blue="0.66" /></text></element>
188   <element name="Key_O">     <text string="O"><color red="1.00" green="0.66" blue="0.66" /></text></element>
189   <element name="Key_P">     <text string="P"><color red="1.00" green="0.66" blue="0.66" /></text></element>
190   <element name="Key_OBrkt"> <text string="["><color red="1.00" green="0.66" blue="0.66" /></text></element>
191   <element name="Key_CBrkt"> <text string="]"><color red="1.00" green="0.66" blue="0.66" /></text></element>
192   <element name="Key_BSlash"><text string="\"><color red="1.00" green="0.66" blue="0.66" /></text></element>
193
194   <element name="Key_1">     <text string="1"><color red="1.00" green="0.66" blue="0.66" /></text></element>
195   <element name="Key_5">     <text string="5"><color red="1.00" green="0.66" blue="0.66" /></text></element>
196   <element name="Key_6">     <text string="6"><color red="1.00" green="0.66" blue="0.66" /></text></element>
197   <element name="Key_7">     <text string="7"><color red="1.00" green="0.66" blue="0.66" /></text></element>
198   <element name="Key_9">     <text string="9"><color red="1.00" green="0.66" blue="0.66" /></text></element>
199   <element name="Key_0">     <text string="0"><color red="1.00" green="0.66" blue="0.66" /></text></element>
200   <element name="Key_BSpace">
201      <text string="&#60;"><color red="1.00" green="0.66" blue="0.66" /><bounds x="0" y="00" width="07" height="10" /></text>
202      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="0" y="00" width="07" height="10" /></text>
203      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="2" y="00" width="07" height="10" /></text>
204      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="4" y="00" width="07" height="10" /></text>
205      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="6" y="00" width="07" height="10" /></text>
206   </element>
207   <element name="Key_Equals"><text string="="><color red="1.00" green="0.66" blue="0.66" /></text></element>
208
209   <element name="ST0"><text string="ST0"><color red="0.0" green="1.0" blue="1.0" /></text></element>
210   <element name="ST1"><text string="ST1"><color red="0.0" green="1.0" blue="1.0" /></text></element>
211   <element name="ST2"><text string="ST2"><color red="0.0" green="1.0" blue="1.0" /></text></element>
212   <element name="ST3"><text string="ST3"><color red="0.0" green="1.0" blue="1.0" /></text></element>
213   <element name="ST4"><text string="ST4"><color red="0.0" green="1.0" blue="1.0" /></text></element>
214   <element name="ST5"><text string="ST5"><color red="0.0" green="1.0" blue="1.0" /></text></element>
215   <element name="I0"> <text string="I0"> <color red="0.0" green="1.0" blue="1.0" /></text></element>
216   <element name="I1"> <text string="I1"> <color red="0.0" green="1.0" blue="1.0" /></text></element>
217   <element name="I2"> <text string="I2"> <color red="0.0" green="1.0" blue="1.0" /></text></element>
218   <element name="I3"> <text string="I3"> <color red="0.0" green="1.0" blue="1.0" /></text></element>
219   <element name="I4"> <text string="I4"> <color red="0.0" green="1.0" blue="1.0" /></text></element>
220   <element name="I5"> <text string="I5"> <color red="0.0" green="1.0" blue="1.0" /></text></element>
221   <element name="I6"> <text string="I6"> <color red="0.0" green="1.0" blue="1.0" /></text></element>
222   <element name="I7"> <text string="I7"> <color red="0.0" green="1.0" blue="1.0" /></text></element>
223
224
225
226
227   <element name="Solenoid_DropTarget_Tall" defstate="0">
228      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="00" width="07" height="15" /></rect>
229      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="01" y="01" width="04" height="12" /></rect>
230   </element>
231   <element name="DropTarget_Tall" defstate="0">
232      <rect state="1"><color red="0.25" green="0.25" blue="0.25" /><bounds x="01" y="01" width="04" height="12" /></rect>
233      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="01" y="01" width="04" height="12" /></rect>
234      <rect state="9"><color red="0.00" green="1.00" blue="0.00" /><bounds x="00" y="00" width="07" height="15" /></rect>
235   </element>
236
237   <element name="Solenoid_DropTarget_Wide" defstate="0">
238      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="00" width="15" height="07" /></rect>
239      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="01" y="01" width="12" height="04" /></rect>
240   </element>
241   <element name="DropTarget_Wide" defstate="0">
242      <rect state="1"><color red="0.25" green="0.25" blue="0.25" /><bounds x="01" y="01" width="12" height="04" /></rect>
243      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="01" y="01" width="12" height="04" /></rect>
244      <rect state="9"><color red="0.00" green="1.00" blue="0.00" /><bounds x="00" y="00" width="15" height="07" /></rect>
245   </element>
246
247
248<!-- Lamps -->
249
250   <element name="Lamp_White" defstate="0">
251      <disk state="0"><color red="0.15" green="0.15" blue="0.15" /></disk>
252      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
253   </element>
254   <element name="Lamp_Yellow" defstate="0">
255      <disk state="0"><color red="0.15" green="0.15" blue="0.00" /></disk>
256      <disk state="1"><color red="1.00" green="1.00" blue="0.00" /></disk>
257   </element>
258   <element name="Lamp_Red" defstate="0">                              <!-- Usually for Specials -->
259      <disk state="0"><color red="0.15" green="0.00" blue="0.00" /></disk>
260      <disk state="1"><color red="1.00" green="0.00" blue="0.00" /></disk>
261   </element>
262   <element name="Lamp_Amber" defstate="0">                           <!-- Usually for Extra Ball-->
263      <disk state="0"><color red="0.15" green="0.06" blue="0.00" /></disk>
264      <disk state="1"><color red="1.00" green="0.40" blue="0.00" /></disk>
265   </element>
266
267
268   <element name="Lamp_P1">
269      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
270      <text string="1" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
271      <text string="1" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
272   </element>
273   <element name="Lamp_P2">
274      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
275      <text string="2" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
276      <text string="2" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
277   </element>
278   <element name="Lamp_P3">
279      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
280      <text string="3" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
281      <text string="3" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
282   </element>
283   <element name="Lamp_P4">
284      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
285      <text string="4" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
286      <text string="4" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
287   </element>
288
289   <element name="Lamp_1P">
290      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
291      <text string="1" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
292      <text string="1" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
293   </element>
294   <element name="Lamp_2P">
295      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
296      <text string="2" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
297      <text string="2" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
298   </element>
299   <element name="Lamp_3P">
300      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
301      <text string="3" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
302      <text string="3" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
303   </element>
304   <element name="Lamp_4P">
305      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
306      <text string="4" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
307      <text string="4" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
308   </element>
309
310
311   <element name="Lamp_2x" defstate="0">
312      <disk state="0"><color red="0.0" green="0.15" blue="0.0" /></disk>
313      <disk state="1"><color red="0.0" green="1.00" blue="0.0" /></disk>
314      <text string="2x"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
315   </element>
316   <element name="Lamp_3x" defstate="0">
317      <disk state="0"><color red="0.15" green="0.15" blue="0.0" /></disk>
318      <disk state="1"><color red="1.00" green="1.00" blue="0.0" /></disk>
319      <text string="3x"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
320   </element>
321   <element name="Lamp_4x" defstate="0">
322      <disk state="0"><color red="0.15" green="0.15" blue="0.0" /></disk>
323      <disk state="1"><color red="1.00" green="1.00" blue="0.0" /></disk>
324      <text string="4x"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
325   </element>
326   <element name="Lamp_5x" defstate="0">
327      <disk state="0"><color red="0.15" green="0.15" blue="0.15" /></disk>
328      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
329      <text string="5x"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
330   </element>
331
332
333   <element name="Lamp_White_1k">
334      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
335      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
336      <text string="1k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
337   </element>
338   <element name="Lamp_White_2k">
339      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
340      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
341      <text string="2k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
342   </element>
343   <element name="Lamp_White_3k">
344      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
345      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
346      <text string="3k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
347   </element>
348   <element name="Lamp_White_4k">
349      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
350      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
351      <text string="4k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
352   </element>
353   <element name="Lamp_White_5k">
354      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
355      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
356      <text string="5k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
357   </element>
358   <element name="Lamp_White_6k">
359      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
360      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
361      <text string="6k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
362   </element>
363   <element name="Lamp_White_7k">
364      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
365      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
366      <text string="7k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
367   </element>
368   <element name="Lamp_White_8k">
369      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
370      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
371      <text string="8k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
372   </element>
373   <element name="Lamp_White_9k">
374      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
375      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
376      <text string="9k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
377   </element>
378   <element name="Lamp_White_10k">
379      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
380      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
381      <text string="10k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
382   </element>
383   <element name="Lamp_White_12k">
384      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
385      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
386      <text string="12k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
387   </element>
388   <element name="Lamp_White_15k">
389      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
390      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
391      <text string="15k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
392   </element>
393   <element name="Lamp_White_20k">
394      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
395      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
396      <text string="20k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
397   </element>
398   <element name="Lamp_White_25k">
399      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
400      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
401      <text string="25k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
402   </element>
403   <element name="Lamp_White_50k">
404      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
405      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
406      <text string="50k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
407   </element>
408
409
410   <element name="Lamp_White_1">
411      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
412      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
413      <text string="1"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
414   </element>
415   <element name="Lamp_White_2">
416      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
417      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
418      <text string="2"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
419   </element>
420   <element name="Lamp_White_3">
421      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
422      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
423      <text string="3"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
424   </element>
425   <element name="Lamp_White_4">
426      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
427      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
428      <text string="4"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
429   </element>
430   <element name="Lamp_White_5">
431      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
432      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
433      <text string="5"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
434   </element>
435
436   <element name="Lamp_White_A">
437      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
438      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
439      <text string="A"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
440   </element>
441   <element name="Lamp_White_B">
442      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
443      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
444      <text string="B"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
445   </element>
446
447
448   <element name="Credit_Indicator">
449      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="2.5" y="0" width="1.0" height="1.0" /></disk>
450      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="2.5" y="0" width="1.0" height="1.0" /></disk>
451      <text string="Credit Indicator"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="1.1" width="6.5" height="0.90" /></text>
452   </element>
453
454
455   <element name="Lamp_Green_Arrow_Up_2x" defstate="1">
456      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="10" y="00" width="02" height="03" /></rect>
457      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="10" y="00" width="02" height="03" /></rect>
458      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="08" y="03" width="06" height="03" /></rect>
459      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="08" y="03" width="06" height="03" /></rect>
460      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="06" y="06" width="10" height="03" /></rect>
461      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="06" y="06" width="10" height="03" /></rect>
462      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="04" y="09" width="14" height="03" /></rect>
463      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="04" y="09" width="14" height="03" /></rect>
464      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="02" y="12" width="18" height="03" /></rect>
465      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="02" y="12" width="18" height="03" /></rect>
466      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="00" y="15" width="22" height="03" /></rect>
467      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="00" y="15" width="22" height="03" /></rect>
468      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="09" y="06" width="04" height="30" /></rect>
469      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="09" y="06" width="04" height="30" /></rect>
470      <text string="2x"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="06" y="08" width="12" height="12" /></text>
471   </element>
472
473   <element name="Lamp_Yellow_Arrow_Up_3x" defstate="1">
474      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="10" y="00" width="02" height="03" /></rect>
475      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="10" y="00" width="02" height="03" /></rect>
476      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="03" width="06" height="03" /></rect>
477      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="08" y="03" width="06" height="03" /></rect>
478      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="06" y="06" width="10" height="03" /></rect>
479      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="06" y="06" width="10" height="03" /></rect>
480      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="04" y="09" width="14" height="03" /></rect>
481      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="04" y="09" width="14" height="03" /></rect>
482      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="02" y="12" width="18" height="03" /></rect>
483      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="02" y="12" width="18" height="03" /></rect>
484      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="00" y="15" width="22" height="03" /></rect>
485      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="00" y="15" width="22" height="03" /></rect>
486      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="09" y="06" width="04" height="30" /></rect>
487      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="09" y="06" width="04" height="30" /></rect>
488      <text string="3x"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="06" y="08" width="12" height="12" /></text>
489   </element>
490
491   <element name="Lamp_White_Arrow_Up_5x" defstate="1">
492      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="10" y="00" width="02" height="03" /></rect>
493      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="10" y="00" width="02" height="03" /></rect>
494      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="08" y="03" width="06" height="03" /></rect>
495      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="08" y="03" width="06" height="03" /></rect>
496      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="06" width="10" height="03" /></rect>
497      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="06" width="10" height="03" /></rect>
498      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="04" y="09" width="14" height="03" /></rect>
499      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="04" y="09" width="14" height="03" /></rect>
500      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="02" y="12" width="18" height="03" /></rect>
501      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="02" y="12" width="18" height="03" /></rect>
502      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="15" width="22" height="03" /></rect>
503      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="00" y="15" width="22" height="03" /></rect>
504      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="09" y="06" width="04" height="30" /></rect>
505      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="09" y="06" width="04" height="30" /></rect>
506      <text string="5x"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="06" y="08" width="12" height="12" /></text>
507   </element>
508
509   <element name="Lamp_White_Arrow_Up_3k" defstate="0">
510      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="10" y="00" width="02" height="03" /></rect>
511      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="08" y="03" width="06" height="03" /></rect>
512      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="06" width="10" height="03" /></rect>
513      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="04" y="09" width="14" height="03" /></rect>
514      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="02" y="12" width="18" height="03" /></rect>
515      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="15" width="22" height="03" /></rect>
516      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="09" y="06" width="04" height="30" /></rect>
517      <text string="3k"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="06" y="08" width="12" height="12" /></text>
518   </element>
519
520   <element name="Lamp_Green_Arrow_04_2x" defstate="1">   <!-- Point at 4 o clock -->
521      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="00" y="00" width="08" height="03" /></rect>
522      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="00" y="00" width="08" height="03" /></rect>
523      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="05" y="03" width="08" height="03" /></rect>
524      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="05" y="03" width="08" height="03" /></rect>
525      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="10" y="06" width="08" height="03" /></rect>
526      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="10" y="06" width="08" height="03" /></rect>
527      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="24" y="03" width="02" height="03" /></rect>
528      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="24" y="03" width="02" height="03" /></rect>
529      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="22" y="06" width="06" height="03" /></rect>
530      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="22" y="06" width="06" height="03" /></rect>
531      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="15" y="09" width="15" height="03" /></rect>
532      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="15" y="09" width="15" height="03" /></rect>
533      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="18" y="12" width="14" height="03" /></rect>
534      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="18" y="12" width="14" height="03" /></rect>
535      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="17" y="15" width="17" height="03" /></rect>
536      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="17" y="15" width="17" height="03" /></rect>
537      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="16" y="18" width="20" height="03" /></rect>
538      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="16" y="18" width="20" height="03" /></rect>
539      <text string="2x"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="18" y="08" width="15" height="15" /></text>
540   </element>
541
542   <element name="Lamp_Yellow_Arrow_04_3x" defstate="1">   <!-- Point at 4 o clock -->
543      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="00" y="00" width="08" height="03" /></rect>
544      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="00" y="00" width="08" height="03" /></rect>
545      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="05" y="03" width="08" height="03" /></rect>
546      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="05" y="03" width="08" height="03" /></rect>
547      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="10" y="06" width="08" height="03" /></rect>
548      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="10" y="06" width="08" height="03" /></rect>
549      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="24" y="03" width="02" height="03" /></rect>
550      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="24" y="03" width="02" height="03" /></rect>
551      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="22" y="06" width="06" height="03" /></rect>
552      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="22" y="06" width="06" height="03" /></rect>
553      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="15" y="09" width="15" height="03" /></rect>
554      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="15" y="09" width="15" height="03" /></rect>
555      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="18" y="12" width="14" height="03" /></rect>
556      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="18" y="12" width="14" height="03" /></rect>
557      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="17" y="15" width="17" height="03" /></rect>
558      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="17" y="15" width="17" height="03" /></rect>
559      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="16" y="18" width="20" height="03" /></rect>
560      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="16" y="18" width="20" height="03" /></rect>
561      <text string="3x"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="18" y="08" width="15" height="15" /></text>
562   </element>
563
564   <element name="Lamp_White_Arrow_08_5x" defstate="1">   <!-- Point at 8 o clock -->
565      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="28" y="00" width="08" height="03" /></rect>
566      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="28" y="00" width="08" height="03" /></rect>
567      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="23" y="03" width="08" height="03" /></rect>
568      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="23" y="03" width="08" height="03" /></rect>
569      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="18" y="06" width="08" height="03" /></rect>
570      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="18" y="06" width="08" height="03" /></rect>
571      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="10" y="03" width="02" height="03" /></rect>
572      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="10" y="03" width="02" height="03" /></rect>
573      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="08" y="06" width="06" height="03" /></rect>
574      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="08" y="06" width="06" height="03" /></rect>
575      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
576      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="09" width="15" height="03" /></rect>
577      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="04" y="12" width="14" height="03" /></rect>
578      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="04" y="12" width="14" height="03" /></rect>
579      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="02" y="15" width="17" height="03" /></rect>
580      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="02" y="15" width="17" height="03" /></rect>
581      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="18" width="20" height="03" /></rect>
582      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="00" y="18" width="20" height="03" /></rect>
583      <text string="5x"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="06" y="08" width="15" height="15" /></text>
584   </element>
585
586   <element name="Lamp_White_Arrow_01" defstate="1">   <!-- Point at 1 o clock -->
587      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="18" y="00" width="03" height="20" /></rect>
588      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="18" y="00" width="03" height="20" /></rect>
589      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="15" y="02" width="03" height="17" /></rect>
590      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="15" y="02" width="03" height="17" /></rect>
591      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="04" width="03" height="14" /></rect>
592      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="12" y="04" width="03" height="14" /></rect>
593      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="09" y="06" width="03" height="15" /></rect>
594      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="09" y="06" width="03" height="15" /></rect>
595      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="08" width="03" height="06" /></rect>
596      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="08" width="03" height="06" /></rect>
597      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="03" y="10" width="03" height="02" /></rect>
598      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="03" y="10" width="03" height="02" /></rect>
599      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="18" width="03" height="08" /></rect>
600      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="18" width="03" height="08" /></rect>
601      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="03" y="23" width="03" height="08" /></rect>
602      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="03" y="23" width="03" height="08" /></rect>
603      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="28" width="03" height="08" /></rect>
604      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="00" y="28" width="03" height="08" /></rect>
605   </element>
606
607   <element name="Lamp_Amber_Arrow_08" defstate="1">   <!-- Point at 8 o clock -->
608      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="28" y="00" width="08" height="03" /></rect>
609      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="28" y="00" width="08" height="03" /></rect>
610      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="23" y="03" width="08" height="03" /></rect>
611      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="23" y="03" width="08" height="03" /></rect>
612      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="18" y="06" width="08" height="03" /></rect>
613      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="18" y="06" width="08" height="03" /></rect>
614      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="10" y="03" width="02" height="03" /></rect>
615      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="10" y="03" width="02" height="03" /></rect>
616      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="08" y="06" width="06" height="03" /></rect>
617      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="08" y="06" width="06" height="03" /></rect>
618      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
619      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
620      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="04" y="12" width="14" height="03" /></rect>
621      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="04" y="12" width="14" height="03" /></rect>
622      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="02" y="15" width="17" height="03" /></rect>
623      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="02" y="15" width="17" height="03" /></rect>
624      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="00" y="18" width="20" height="03" /></rect>
625      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="00" y="18" width="20" height="03" /></rect>
626   </element>
627
628   <element name="Lamp_Amber_Arrow_10" defstate="1">   <!-- Point at 10 o clock -->
629      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="28" y="18" width="08" height="03" /></rect>
630      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="28" y="18" width="08" height="03" /></rect>
631      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="23" y="15" width="08" height="03" /></rect>
632      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="23" y="15" width="08" height="03" /></rect>
633      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="18" y="12" width="08" height="03" /></rect>
634      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="18" y="12" width="08" height="03" /></rect>
635      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="10" y="15" width="02" height="03" /></rect>
636      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="10" y="15" width="02" height="03" /></rect>
637      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="08" y="12" width="06" height="03" /></rect>
638      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="08" y="12" width="06" height="03" /></rect>
639      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
640      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
641      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="04" y="06" width="14" height="03" /></rect>
642      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="04" y="06" width="14" height="03" /></rect>
643      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="02" y="03" width="17" height="03" /></rect>
644      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="02" y="03" width="17" height="03" /></rect>
645      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="00" y="00" width="20" height="03" /></rect>
646      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="00" y="00" width="20" height="03" /></rect>
647   </element>
648
649   <element name="Lamp_Red_Arrow_08" defstate="1">   <!-- Point at 8 o clock -->
650      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="28" y="00" width="08" height="03" /></rect>
651      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="28" y="00" width="08" height="03" /></rect>
652      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="23" y="03" width="08" height="03" /></rect>
653      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="23" y="03" width="08" height="03" /></rect>
654      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="18" y="06" width="08" height="03" /></rect>
655      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="18" y="06" width="08" height="03" /></rect>
656      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="10" y="03" width="02" height="03" /></rect>
657      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="10" y="03" width="02" height="03" /></rect>
658      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="08" y="06" width="06" height="03" /></rect>
659      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="08" y="06" width="06" height="03" /></rect>
660      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
661      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
662      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="04" y="12" width="14" height="03" /></rect>
663      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="04" y="12" width="14" height="03" /></rect>
664      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="02" y="15" width="17" height="03" /></rect>
665      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="02" y="15" width="17" height="03" /></rect>
666      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="18" width="20" height="03" /></rect>
667      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="00" y="18" width="20" height="03" /></rect>
668   </element>
669
670   <element name="Lamp_White_Arrow_11_A" defstate="1">   <!-- Point at 11 o clock -->
671      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="00" width="03" height="20" /></rect>
672      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="00" y="00" width="03" height="20" /></rect>
673      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="03" y="02" width="03" height="17" /></rect>
674      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="03" y="02" width="03" height="17" /></rect>
675      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="04" width="03" height="14" /></rect>
676      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="04" width="03" height="14" /></rect>
677      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="09" y="06" width="03" height="15" /></rect>
678      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="09" y="06" width="03" height="15" /></rect>
679      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="08" width="03" height="06" /></rect>
680      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="12" y="08" width="03" height="06" /></rect>
681      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="15" y="10" width="03" height="02" /></rect>
682      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="15" y="10" width="03" height="02" /></rect>
683      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="18" width="03" height="08" /></rect>
684      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="12" y="18" width="03" height="08" /></rect>
685      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="15" y="23" width="03" height="08" /></rect>
686      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="15" y="23" width="03" height="08" /></rect>
687      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="18" y="28" width="03" height="08" /></rect>
688      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="18" y="28" width="03" height="08" /></rect>
689      <text string="A"><color red="0.0" green="0.0" blue="0.0"   /><bounds x="-2" y="03" width="18" height="18" /></text>
690   </element>
691
692   <element name="Lamp_White_Arrow_01_B" defstate="1">   <!-- Point at 1 o clock -->
693      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="18" y="00" width="03" height="20" /></rect>
694      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="18" y="00" width="03" height="20" /></rect>
695      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="15" y="02" width="03" height="17" /></rect>
696      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="15" y="02" width="03" height="17" /></rect>
697      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="04" width="03" height="14" /></rect>
698      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="12" y="04" width="03" height="14" /></rect>
699      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="09" y="06" width="03" height="15" /></rect>
700      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="09" y="06" width="03" height="15" /></rect>
701      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="08" width="03" height="06" /></rect>
702      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="08" width="03" height="06" /></rect>
703      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="03" y="10" width="03" height="02" /></rect>
704      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="03" y="10" width="03" height="02" /></rect>
705      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="18" width="03" height="08" /></rect>
706      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="18" width="03" height="08" /></rect>
707      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="03" y="23" width="03" height="08" /></rect>
708      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="03" y="23" width="03" height="08" /></rect>
709      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="28" width="03" height="08" /></rect>
710      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="00" y="28" width="03" height="08" /></rect>
711      <text string="B"><color red="0.0" green="0.0" blue="0.0"   /><bounds x="06" y="03" width="18" height="18" /></text>
712   </element>
713
714
715<!-- Backbox Indicators -->
716
717   <element name="Text_Credit"><text string="CREDIT"><color red="1.0" green="1.0" blue="1.0" /></text></element>
718   <element name="Text_Lamps"><text string="Lamps"><color red="1.0" green="1.0" blue="1.0" /></text></element>
719   <element name="Text_15"><text string="U1 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
720   <element name="Text_30"><text string="U2 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
721   <element name="Text_45"><text string="U3 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
722   <element name="Text_60"><text string="U4 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
723   <element name="Text_Solenoids"><text string="Momentary Solenoids"><color red="1.0" green="1.0" blue="1.0" /></text></element>
724   <element name="Text_Coils"><text string="Coils"><color red="1.0" green="1.0" blue="1.0" /></text></element>
725   <element name="Text_MPU_LED"><text string="MPU LED"><color red="1.0" green="1.0" blue="1.0" /></text></element>
726   <element name="Text_Activity"><text string="Activity Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
727   <element name="Text_Service"><text string="Service Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
728   <element name="Text_Slam"><text string="Slam Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
729   <element name="Text_Tilt"><text string="Tilt Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
730   <element name="Text_Knocker"><text string="Knocker"><color red="1.0" green="1.0" blue="1.0" /></text></element>
731
732
733   <element name="High_Score_To_Date" defstate="0">
734      <text string="HIGH SCORE TO DATE" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="1" /></text>
735      <text string="HIGH SCORE TO DATE" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="1" /></text>
736   </element>
737   <element name="Ball_In_Play" defstate="0">
738      <text string="BALL IN PLAY" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.1" y="0.1" width="1" height="0.8" /></text>
739      <text string="BALL IN PLAY" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0.1" y="0.1" width="1" height="0.8" /></text>
740   </element>
741   <element name="Match" defstate="0">
742      <text string="MATCH" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
743      <text string="MATCH" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
744   </element>
745   <element name="Game_Over" defstate="0">
746      <text string="GAME OVER" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
747      <text string="GAME OVER" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
748   </element>
749   <element name="Tilt" defstate="0">
750      <text string="TILT" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
751      <text string="TILT" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
752   </element>
753   <element name="Shoot_Again" defstate="0">
754      <text string="SAME PLAYER"  state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
755      <text string="SAME PLAYER"  state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
756      <text string="SHOOTS AGAIN" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.9" width="1" height="0.8" /></text>
757      <text string="SHOOTS AGAIN" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.9" width="1" height="0.8" /></text>
758   </element>
759
760
761   <element name="Digit" defstate="0">
762      <led7seg><color red="1.0" green="0.35" blue="0.0" /></led7seg>
763   </element>
764
765   <element name="LED_Green" defstate="1">
766      <disk state="0"><color red="0.0" green="0.25" blue="0.0" /></disk>
767      <disk state="1"><color red="0.0" green="1.00" blue="0.0" /></disk>
768   </element>
769
770   <element name="LED_Red" defstate="1">
771      <disk state="0"><color red="0.25" green="0.0" blue="0.0" /></disk>
772      <disk state="1"><color red="1.00" green="0.0" blue="0.0" /></disk>
773   </element>
774
775
776
777<!-- Solenoids -->
778
779   <element name="Solenoid_PullDown">
780      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="3" y="0" width="03" height="09" /></rect>
781      <rect state="0"><color red="0.0" green="1.0" blue="1.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
782      <rect state="1"><color red="1.0" green="1.0" blue="0.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
783   </element>
784
785   <element name="Coil_PullDown">
786      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="8" y="0" width="02" height="01" /></rect>
787      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="6" y="1" width="02" height="01" /></rect>
788      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="4" y="2" width="02" height="01" /></rect>
789      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="2" y="3" width="02" height="01" /></rect>
790      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="4" width="02" height="01" /></rect>
791      <rect          ><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="5" width="02" height="02" /></rect>
792      <rect state="1"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="4" width="10" height="01" /></rect>
793
794      <rect state="0"><color red="0.0" green="1.0" blue="1.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
795      <rect state="1"><color red="1.0" green="1.0" blue="0.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
796   </element>
797
798
799   <element name="Solenoid_Knocker" defstate="0">
800      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="03" y="14" width="03" height="08" /></rect>
801      <rect state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="03" y="00" width="03" height="04" /></rect>
802      <rect state="0"><color red="0.0" green="1.0" blue="1.0" /><bounds x="00" y="04" width="10" height="11" /></rect>
803      <rect state="1"><color red="1.0" green="1.0" blue="0.0" /><bounds x="00" y="04" width="10" height="11" /></rect>
804   </element>
805
806   <element name="Solenoid_Outhole" defstate="0">
807      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="17" y="00" width="05" height="16" /></text>
808      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="02" y="00" width="05" height="16" /></text>
809      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="18" y="00" width="05" height="16" /></text>
810      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="03" y="00" width="05" height="16" /></text>
811      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="19" y="00" width="05" height="16" /></text>
812      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="04" y="00" width="05" height="16" /></text>
813      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="20" y="00" width="05" height="16" /></text>
814      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="05" y="00" width="05" height="16" /></text>
815      <rect            state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="02" y="02" width="18" height="10" /></rect>
816      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="00" y="14" width="25" height="02" /></rect>
817      <text string="Outhole"    ><color red="1.0" green="1.0" blue="1.0" /><bounds x="30" y="12" width="28" height="9.5" /></text>
818   </element>
819
820   <element name="Solenoid_Kickback" defstate="0">
821      <rect state="1"><color red="1.0" green="1.0" blue="1.0" /><bounds x="3" y="00" width="03" height="15" /></rect>
822      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="3" y="07" width="03" height="08" /></rect>
823      <rect state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="0" y="00" width="10" height="04" /></rect>
824      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="07" width="10" height="04" /></rect>
825   </element>
826
827   <element name="Solenoid_SlingShot_Left" defstate="0">
828      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="05" y="00" width="65"   height="80" /></text>
829      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="00" y="00" width="65"   height="80" /></text>
830      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="20" y="16" width="04"   height="60" /></rect>
831      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="20" y="76" width="24.5" height="04" /></rect>
832   </element>
833   <element name="Solenoid_SlingShot_Right" defstate="0">
834      <text string="/" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="-5"   y="00" width="65" height="80" /></text>
835      <text string="/" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="00"   y="00" width="65" height="80" /></text>
836      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="40"   y="16" width="04" height="60" /></rect>
837      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="19.5" y="76" width="24" height="04" /></rect>
838   </element>
839
840
841   <element name="Solenoid_Bumper_Blue_Star" defstate="0">
842      <disk state="0"> <color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
843      <disk state="1"> <color red="1.0" green="0.0" blue="0.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
844      <text string="*"><color red="0.3" green="0.5" blue="1.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
845      <disk>           <color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
846   </element>
847   <element name="Switch_Bumper_Blue_Star" defstate="0">
848      <text string="*" state="9"><color red="0.3" green="0.5" blue="1.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
849      <disk            state="0"><color red="0.3" green="0.3" blue="1.0" /><bounds x="14" y="15" width="50" height="50" /></disk>
850      <disk            state="1"><color red="0.5" green="0.5" blue="0.5" /><bounds x="14" y="15" width="50" height="50" /></disk>
851   </element>
852   <element name="Lamp_Bumper_Blue_1000" defstate="1">
853      <text string="*" state="9"><color red="0.3" green="0.5" blue="1.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
854      <disk            state="0"><color red="0.7" green="0.7" blue="0.7" /><bounds x="18" y="18" width="44" height="44" /></disk>
855      <disk            state="1"><color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
856      <text string="1000">       <color red="0.3" green="0.5" blue="1.0" /><bounds x="07" y="29" width="70" height="23" /></text>
857   </element>
858
859   <element name="Solenoid_Bumper_Red_Star" defstate="0">
860      <disk state="0"> <color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
861      <disk state="1"> <color red="1.0" green="0.0" blue="0.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
862      <text string="*"><color red="1.0" green="0.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
863      <disk>           <color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
864   </element>
865   <element name="Switch_Bumper_Red_Star" defstate="0">
866      <text string="*" state="9"><color red="1.0" green="0.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
867      <disk            state="0"><color red="1.0" green="0.0" blue="0.0" /><bounds x="14" y="15" width="50" height="50" /></disk>
868      <disk            state="1"><color red="0.5" green="0.5" blue="0.5" /><bounds x="14" y="15" width="50" height="50" /></disk>
869   </element>
870   <element name="Lamp_Bumper_Red_1000" defstate="0">
871      <text string="*" state="9"><color red="0.0" green="0.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
872      <disk            state="0"><color red="0.7" green="0.7" blue="0.7" /><bounds x="18" y="18" width="44" height="44" /></disk>
873      <disk            state="1"><color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
874      <text string="1000">       <color red="1.0" green="0.0" blue="0.0" /><bounds x="07" y="29" width="70" height="23" /></text>
875   </element>
876
877   <element name="Solenoid_Bumper_Yellow_Star" defstate="0">
878      <disk state="0"> <color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
879      <disk state="1"> <color red="1.0" green="0.0" blue="0.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
880      <text string="*"><color red="1.0" green="1.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
881      <disk>           <color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
882   </element>
883   <element name="Switch_Bumper_Yellow_Star" defstate="0">
884      <text string="*" state="9"><color red="1.0" green="1.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
885      <disk            state="0"><color red="1.0" green="1.0" blue="0.0" /><bounds x="14" y="15" width="50" height="50" /></disk>
886      <disk            state="1"><color red="0.5" green="0.5" blue="0.5" /><bounds x="14" y="15" width="50" height="50" /></disk>
887   </element>
888
889   <element name="Solenoid_Bumper_Green_Star" defstate="0">
890      <disk state="0"> <color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
891      <disk state="1"> <color red="1.0" green="0.0" blue="0.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
892      <text string="*"><color red="0.0" green="1.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
893      <disk>           <color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
894   </element>
895   <element name="Switch_Bumper_Green_Star" defstate="0">
896      <text string="*" state="9"><color red="0.0" green="1.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
897      <disk            state="0"><color red="0.0" green="1.0" blue="0.0" /><bounds x="14" y="15" width="50" height="50" /></disk>
898      <disk            state="1"><color red="0.5" green="0.5" blue="0.5" /><bounds x="14" y="15" width="50" height="50" /></disk>
899   </element>
900
901   <element name="Lamp_Bumper_Silver_100" defstate="1">
902      <text string="*" state="9"><color red="0.5" green="0.5" blue="0.5" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
903      <disk                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
904      <text string="100">        <color red="0.5" green="0.5" blue="0.5" /><bounds x="07" y="29" width="66" height="23" /></text>
905   </element>
906   <element name="Lamp_Bumper_Silver_1000" defstate="1">
907      <text string="*" state="9"><color red="0.5" green="0.5" blue="0.5" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
908      <disk            state="0"><color red="0.7" green="0.7" blue="0.7" /><bounds x="18" y="18" width="44" height="44" /></disk>
909      <disk            state="1"><color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
910      <text string="1000">       <color red="0.5" green="0.5" blue="0.5" /><bounds x="07" y="29" width="70" height="23" /></text>
911   </element>
912
913
914   <element name="Solenoid_Saucer" defstate="0">
915      <disk>          <color red="1.0" green="0.8" blue="0.5" /><bounds x="00" y="00" width="70" height="70" /></disk> <!-- 71 -->
916      <disk>          <color red="0.7" green="0.7" blue="0.7" /><bounds x="10" y="10" width="49" height="49" /></disk> <!-- 51 -->
917      <rect state="0"><color red="0.3" green="0.3" blue="0.3" /><bounds x="31" y="07" width="07" height="25" /></rect>
918      <rect state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="31" y="07" width="07" height="25" /></rect>
919      <disk>          <color red="0.0" green="0.0" blue="0.0" /><bounds x="27" y="40" width="15" height="15" /></disk>
920   </element>
921   <element name="Switch_Saucer" defstate="0">
922      <disk state="9"><color red="1.0" green="0.8" blue="0.5" /><bounds x="00" y="00" width="70" height="70" /></disk>
923      <disk state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="30" y="43" width="09" height="09" /></disk>
924      <disk state="1"><color red="0.0" green="0.0" blue="0.0" /><bounds x="30" y="43" width="09" height="09" /></disk>
925   </element>
926
927   <element name="Solenoid_Saucer_Large" defstate="0">
928      <disk>          <color red="1.0" green="0.8" blue="0.5" /><bounds x="00" y="00" width="70" height="70" /></disk>
929      <disk>          <color red="0.7" green="0.7" blue="0.7" /><bounds x="17" y="17" width="36" height="36" /></disk>
930      <rect state="0"><color red="0.3" green="0.3" blue="0.3" /><bounds x="33" y="14" width="04" height="21" /></rect>
931      <rect state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="33" y="14" width="04" height="21" /></rect>
932      <disk>          <color red="0.0" green="0.0" blue="0.0" /><bounds x="29" y="40" width="12" height="12" /></disk>
933   </element>
934   <element name="Switch_Saucer_Large" defstate="0">
935      <disk state="9"><color red="1.0" green="0.8" blue="0.5" /><bounds x="00" y="00" width="70" height="70" /></disk>
936      <disk state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="31" y="42" width="08" height="08" /></disk>
937      <disk state="1"><color red="0.0" green="0.0" blue="0.0" /><bounds x="31" y="42" width="08" height="08" /></disk>
938   </element>
939
940
941   <element name="Coil_Post_Up" defstate="0">
942      <disk state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="00" y="00" width="21" height="21" /></disk>
943   </element>
944   <element name="Solenoid_Post_Down" defstate="0">
945      <disk state="9"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="00" width="21" height="21" /></disk>
946      <disk state="1"><color red="0.50" green="0.10" blue="0.00" /><bounds x="01" y="01" width="19" height="19" /></disk>
947      <disk state="1"><color red="0.15" green="0.06" blue="0.00" /><bounds x="02" y="02" width="17" height="17" /></disk>
948      <rect state="1"><color red="0.50" green="0.10" blue="0.00" /><bounds x="10" y="02" width="01" height="17" /></rect>
949      <rect state="1"><color red="0.50" green="0.10" blue="0.00" /><bounds x="02" y="10" width="17" height="01" /></rect>
950      <disk state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="08" y="08" width="06" height="06" /></disk>
951   </element>
952   <element name="Lamp_Post" defstate="0">
953      <disk state="9"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="00" width="21" height="21" /></disk>
954      <disk          ><color red="0.50" green="0.10" blue="0.00" /><bounds x="01" y="01" width="19" height="19" /></disk>
955      <disk state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="02" y="02" width="17" height="17" /></disk>
956      <disk state="1"><color red="0.80" green="0.20" blue="0.00" /><bounds x="02" y="02" width="17" height="17" /></disk>
957      <rect          ><color red="0.50" green="0.10" blue="0.00" /><bounds x="10" y="02" width="01" height="17" /></rect>
958      <rect          ><color red="0.50" green="0.10" blue="0.00" /><bounds x="02" y="10" width="17" height="01" /></rect>
959   </element>
960
961
962<!-- Line colours -->
963
964   <element name="Draw_White" defstate="1">
965      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
966      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
967   </element>
968   <element name="Draw_Red" defstate="1">
969      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
970      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
971   </element>
972   <element name="Draw_Amber" defstate="1">
973      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
974      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
975   </element>
976
977   <element name="Canvas">
15   <element name="background">
97816      <rect>
979         <color red="0.0" green="0.0" blue="0.0" />
98017         <bounds left="0" top="0" right="1" bottom="1" />
18         <color red="0.0" green="0.0" blue="0.0" />
98119      </rect>
98220   </element>
21   <element name="P0"><text string="Ball / Match"><color red="1.0" green="1.0" blue="1.0" /></text></element>
22   <element name="P1"><text string="Credits"><color red="1.0" green="1.0" blue="1.0" /></text></element>
23   <element name="P2"><text string="Players"><color red="1.0" green="1.0" blue="1.0" /></text></element>
24   <element name="P3"><text string="Player 1"><color red="1.0" green="1.0" blue="1.0" /></text></element>
25   <element name="P4"><text string="Player 2"><color red="1.0" green="1.0" blue="1.0" /></text></element>
26   <element name="P5"><text string="Player 3"><color red="1.0" green="1.0" blue="1.0" /></text></element>
27   <element name="P6"><text string="Player 4"><color red="1.0" green="1.0" blue="1.0" /></text></element>
98328
29   <view name="Default Layout">
98430
985
986
987
988   <view name="Blank Playfield">
989
99031      <!-- Background -->
991      <backdrop element="Canvas"><bounds x="000" y="000" width="640" height="480" /></backdrop>
32      <backdrop element="background">
33         <bounds left="0" top="20" right="274" bottom="394" />
34      </backdrop>
99235
993      <bezel element="Draw_White"><bounds x="000" y="000" width="640" height="001" /></bezel>
994      <bezel element="Draw_White"><bounds x="000" y="000" width="001" height="480" /></bezel>
995      <bezel element="Draw_White"><bounds x="640" y="000" width="001" height="480" /></bezel>
996      <bezel element="Draw_White"><bounds x="000" y="480" width="640" height="001" /></bezel>
997      <bezel element="Draw_White"><bounds x="320" y="000" width="001" height="480" /></bezel>
998      <bezel element="Draw_White"><bounds x="320" y="320" width="320" height="001" /></bezel>
999      <!--   <bezel element="Draw_White"><bounds x="159" y="000" width="001" height="480" /></bezel>   -->
36      <!-- LEDs -->
100037
1001
1002      <bezel element="Title_Bally"><bounds x="430" y="18" width="105" height="30" /></bezel>
1003
1004      <bezel element="Text_Playfield"><bounds x="040" y="010" width="250" height="14" /></bezel>
1005      <bezel element="Text_Legend"><bounds x="018" y="35" width="300" height="12" /></bezel>
1006
1007
1008      <!-- Backbox -->
1009
1010      <!-- MPU Board Power On Self Test LED -->
1011      <bezel element="Text_MPU_LED">         <bounds x="609" y="342" width="30" height="10" /></bezel>
1012      <bezel name="led0" element="LED_Green"><bounds x="618" y="328" width="10" height="10" /></bezel>
1013
1014      <!-- MPU Board Activity Switch -->
1015      <bezel element="Text_Activity">                                      <bounds x="540" y="342" width="50" height="10" /></bezel>
1016      <bezel element="Switch_Push-Button" inputtag="TEST" inputmask="0x02"><bounds x="550" y="331" width="20" height="10" /></bezel>
1017      <bezel element="Key_0">                                              <bounds x="571" y="330" width="10" height="10" /></bezel>
1018
1019
102038      <!-- Player 1 Score -->
1021      <bezel name="lamp14" element="Lamp_P1"><bounds x="330" y="55" width="15" height="15" /></bezel>         <!-- Backbox ~ 1st Player Up -->
1022      <bezel name="digit17" element="Digit"><bounds x="360" y="55" width="10" height="15" /></bezel>
1023      <bezel name="digit16" element="Digit"><bounds x="374" y="55" width="10" height="15" /></bezel>
1024      <bezel name="digit15" element="Digit"><bounds x="388" y="55" width="10" height="15" /></bezel>
1025      <bezel name="digit14" element="Digit"><bounds x="402" y="55" width="10" height="15" /></bezel>
1026      <bezel name="digit13" element="Digit"><bounds x="416" y="55" width="10" height="15" /></bezel>
1027      <bezel name="digit12" element="Digit"><bounds x="430" y="55" width="10" height="15" /></bezel>
1028      <bezel name="digit11" element="Digit"><bounds x="444" y="55" width="10" height="15" /></bezel>
102939
40      <bezel name="digit5" element="digit">
41         <bounds left="10" top="45" right="44" bottom="84" />
42      </bezel>
43      <bezel name="digit4" element="digit">
44         <bounds left="54" top="45" right="88" bottom="84" />
45      </bezel>
46      <bezel name="digit3" element="digit">
47         <bounds left="98" top="45" right="132" bottom="84" />
48      </bezel>
49      <bezel name="digit2" element="digit">
50         <bounds left="142" top="45" right="176" bottom="84" />
51      </bezel>
52      <bezel name="digit1" element="digit">
53         <bounds left="186" top="45" right="220" bottom="84" />
54      </bezel>
55      <bezel name="digit0" element="digit">
56         <bounds left="230" top="45" right="264" bottom="84" />
57      </bezel>
58
103059      <!-- Player 2 Score -->
1031      <bezel name="lamp29" element="Lamp_P2"><bounds x="615" y="55" width="15" height="15" /></bezel>         <!-- Backbox ~ 2nd Player Up -->
1032      <bezel name="digit27" element="Digit"><bounds x="506" y="55" width="10" height="15" /></bezel>
1033      <bezel name="digit26" element="Digit"><bounds x="520" y="55" width="10" height="15" /></bezel>
1034      <bezel name="digit25" element="Digit"><bounds x="534" y="55" width="10" height="15" /></bezel>
1035      <bezel name="digit24" element="Digit"><bounds x="548" y="55" width="10" height="15" /></bezel>
1036      <bezel name="digit23" element="Digit"><bounds x="562" y="55" width="10" height="15" /></bezel>
1037      <bezel name="digit22" element="Digit"><bounds x="576" y="55" width="10" height="15" /></bezel>
1038      <bezel name="digit21" element="Digit"><bounds x="590" y="55" width="10" height="15" /></bezel>
60      <bezel name="digit15" element="digit">
61         <bounds left="10" top="105" right="44" bottom="144" />
62      </bezel>
63      <bezel name="digit14" element="digit">
64         <bounds left="54" top="105" right="88" bottom="144" />
65      </bezel>
66      <bezel name="digit13" element="digit">
67         <bounds left="98" top="105" right="132" bottom="144" />
68      </bezel>
69      <bezel name="digit12" element="digit">
70         <bounds left="142" top="105" right="176" bottom="144" />
71      </bezel>
72      <bezel name="digit11" element="digit">
73         <bounds left="186" top="105" right="220" bottom="144" />
74      </bezel>
75      <bezel name="digit10" element="digit">
76         <bounds left="230" top="105" right="264" bottom="144" />
77      </bezel>
103978
104079      <!-- Player 3 Score -->
1041      <bezel name="lamp44" element="Lamp_P3"><bounds x="330" y="250" width="15" height="15" /></bezel>      <!-- Backbox ~ 3rd Player Up -->
1042      <bezel name="digit37" element="Digit"><bounds x="360" y="250" width="10" height="15" /></bezel>
1043      <bezel name="digit36" element="Digit"><bounds x="374" y="250" width="10" height="15" /></bezel>
1044      <bezel name="digit35" element="Digit"><bounds x="388" y="250" width="10" height="15" /></bezel>
1045      <bezel name="digit34" element="Digit"><bounds x="402" y="250" width="10" height="15" /></bezel>
1046      <bezel name="digit33" element="Digit"><bounds x="416" y="250" width="10" height="15" /></bezel>
1047      <bezel name="digit32" element="Digit"><bounds x="430" y="250" width="10" height="15" /></bezel>
1048      <bezel name="digit31" element="Digit"><bounds x="444" y="250" width="10" height="15" /></bezel>
80      <bezel name="digit25" element="digit">
81         <bounds left="10" top="165" right="44" bottom="204" />
82      </bezel>
83      <bezel name="digit24" element="digit">
84         <bounds left="54" top="165" right="88" bottom="204" />
85      </bezel>
86      <bezel name="digit23" element="digit">
87         <bounds left="98" top="165" right="132" bottom="204" />
88      </bezel>
89      <bezel name="digit22" element="digit">
90         <bounds left="142" top="165" right="176" bottom="204" />
91      </bezel>
92      <bezel name="digit21" element="digit">
93         <bounds left="186" top="165" right="220" bottom="204" />
94      </bezel>
95      <bezel name="digit20" element="digit">
96         <bounds left="230" top="165" right="264" bottom="204" />
97      </bezel>
104998
105099      <!-- Player 4 Score -->
1051      <bezel name="lamp59" element="Lamp_P4"><bounds x="615" y="250" width="15" height="15" /></bezel>      <!-- Backbox ~ 4th Player Up -->
1052      <bezel name="digit47" element="Digit"><bounds x="506" y="250" width="10" height="15" /></bezel>
1053      <bezel name="digit46" element="Digit"><bounds x="520" y="250" width="10" height="15" /></bezel>
1054      <bezel name="digit45" element="Digit"><bounds x="534" y="250" width="10" height="15" /></bezel>
1055      <bezel name="digit44" element="Digit"><bounds x="548" y="250" width="10" height="15" /></bezel>
1056      <bezel name="digit43" element="Digit"><bounds x="562" y="250" width="10" height="15" /></bezel>
1057      <bezel name="digit42" element="Digit"><bounds x="576" y="250" width="10" height="15" /></bezel>
1058      <bezel name="digit41" element="Digit"><bounds x="590" y="250" width="10" height="15" /></bezel>
100      <bezel name="digit35" element="digit">
101         <bounds left="10" top="225" right="44" bottom="264" />
102      </bezel>
103      <bezel name="digit34" element="digit">
104         <bounds left="54" top="225" right="88" bottom="264" />
105      </bezel>
106      <bezel name="digit33" element="digit">
107         <bounds left="98" top="225" right="132" bottom="264" />
108      </bezel>
109      <bezel name="digit32" element="digit">
110         <bounds left="142" top="225" right="176" bottom="264" />
111      </bezel>
112      <bezel name="digit31" element="digit">
113         <bounds left="186" top="225" right="220" bottom="264" />
114      </bezel>
115      <bezel name="digit30" element="digit">
116         <bounds left="230" top="225" right="264" bottom="264" />
117      </bezel>
1059118
1060      <!-- Credits and Ball In Play / Match -->
1061      <bezel element="Text_Credit"><bounds x="542" y="142" width="48" height="8" /></bezel>
1062      <bezel name="lamp12"  element="Ball_In_Play"><bounds x="586" y="105" width="50" height="11" /></bezel>   <!-- Backbox ~ Ball In Play -->
1063      <bezel name="lamp25"  element="Match"><bounds x="596" y="152" width="25" height="11" /></bezel>         <!-- Backbox ~ Match -->
1064      <bezel name="digit55" element="Digit"><bounds x="554" y="125" width="10" height="15" /></bezel>
1065      <bezel name="digit54" element="Digit"><bounds x="568" y="125" width="10" height="15" /></bezel>
1066      <bezel name="digit52" element="Digit"><bounds x="596" y="125" width="10" height="15" /></bezel>
1067      <bezel name="digit51" element="Digit"><bounds x="610" y="125" width="10" height="15" /></bezel>
119      <!-- Credits and Balls -->
120      <bezel name="digit44" element="digit">
121         <bounds left="10" top="345" right="44" bottom="384" />
122      </bezel>
123      <bezel name="digit43" element="digit">
124         <bounds left="54" top="345" right="88" bottom="384" />
125      </bezel>
126      <bezel name="digit41" element="digit">
127         <bounds left="186" top="345" right="220" bottom="384" />
128      </bezel>
129      <bezel name="digit40" element="digit">
130         <bounds left="230" top="345" right="264" bottom="384" />
131      </bezel>
1068132
1069      <bezel name="lamp10" element="Shoot_Again"><bounds x="420" y="295" width="60" height="19" /></bezel>   <!-- Backbox ~ Same Player Shoots Again -->
1070      <bezel name="lamp13" element="Lamp_1P"><bounds x="345" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 1 Player Game -->
1071      <bezel name="lamp28" element="Lamp_2P"><bounds x="360" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 2 Player Game -->
1072      <bezel name="lamp43" element="Lamp_3P"><bounds x="375" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 3 Player Game -->
1073      <bezel name="lamp58" element="Lamp_4P"><bounds x="390" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 4 Player Game -->
1074      <bezel name="lamp27" element="High_Score_To_Date"><bounds x="438" y="6" width="90" height="11" /></bezel>   <!-- Backbox ~ High Score To Date -->
1075      <bezel name="lamp42" element="Game_Over"><bounds x="580" y="300" width="45" height="11" /></bezel>      <!-- Backbox ~ Game Over -->
1076      <bezel name="lamp57" element="Tilt"><bounds x="480" y="297" width="50" height="16" /></bezel>         <!-- Backbox ~ Tilt -->
1077
1078
1079
1080      <bezel element="Text_Lamps"><bounds x="410" y="360" width="60" height="11" /></bezel>
1081      <bezel element="Text_15"><bounds x="552" y="373" width="30" height="11" /></bezel>
1082      <bezel element="Text_30"><bounds x="552" y="388" width="30" height="11" /></bezel>
1083      <bezel element="Text_45"><bounds x="552" y="403" width="30" height="11" /></bezel>
1084      <bezel element="Text_60"><bounds x="552" y="418" width="30" height="11" /></bezel>
1085
1086      <!-- Lamps controlled by U1 on Lamp Driver Board -->
1087      <bezel name="lamp0"  element="Lamp_White"><bounds x="330" y="375" width="8" height="8" /></bezel>
1088      <bezel name="lamp1"  element="Lamp_White"><bounds x="345" y="375" width="8" height="8" /></bezel>
1089      <bezel name="lamp2"  element="Lamp_White"><bounds x="360" y="375" width="8" height="8" /></bezel>
1090      <bezel name="lamp3"  element="Lamp_White"><bounds x="375" y="375" width="8" height="8" /></bezel>
1091      <bezel name="lamp4"  element="Lamp_White"><bounds x="390" y="375" width="8" height="8" /></bezel>
1092      <bezel name="lamp5"  element="Lamp_White"><bounds x="405" y="375" width="8" height="8" /></bezel>
1093      <bezel name="lamp6"  element="Lamp_White"><bounds x="420" y="375" width="8" height="8" /></bezel>
1094      <bezel name="lamp7"  element="Lamp_White"><bounds x="435" y="375" width="8" height="8" /></bezel>
1095      <bezel name="lamp8"  element="Lamp_White"><bounds x="450" y="375" width="8" height="8" /></bezel>
1096      <bezel name="lamp9"  element="Lamp_White"><bounds x="465" y="375" width="8" height="8" /></bezel>
1097      <bezel name="lamp10" element="Lamp_White"><bounds x="480" y="375" width="8" height="8" /></bezel>
1098      <bezel name="lamp11" element="Lamp_White"><bounds x="495" y="375" width="8" height="8" /></bezel>
1099      <bezel name="lamp12" element="Lamp_White"><bounds x="510" y="375" width="8" height="8" /></bezel>
1100      <bezel name="lamp13" element="Lamp_White"><bounds x="525" y="375" width="8" height="8" /></bezel>
1101      <bezel name="lamp14" element="Lamp_White"><bounds x="540" y="375" width="8" height="8" /></bezel>
1102
1103      <!-- Lamps controlled by U2 on Lamp Driver Board -->
1104      <bezel name="lamp15" element="Lamp_White"><bounds x="330" y="390" width="8" height="8" /></bezel>
1105      <bezel name="lamp16" element="Lamp_White"><bounds x="345" y="390" width="8" height="8" /></bezel>
1106      <bezel name="lamp17" element="Lamp_White"><bounds x="360" y="390" width="8" height="8" /></bezel>
1107      <bezel name="lamp18" element="Lamp_White"><bounds x="375" y="390" width="8" height="8" /></bezel>
1108      <bezel name="lamp19" element="Lamp_White"><bounds x="390" y="390" width="8" height="8" /></bezel>
1109      <bezel name="lamp20" element="Lamp_White"><bounds x="405" y="390" width="8" height="8" /></bezel>
1110      <bezel name="lamp21" element="Lamp_White"><bounds x="420" y="390" width="8" height="8" /></bezel>
1111      <bezel name="lamp22" element="Lamp_White"><bounds x="435" y="390" width="8" height="8" /></bezel>
1112      <bezel name="lamp23" element="Lamp_White"><bounds x="450" y="390" width="8" height="8" /></bezel>
1113      <bezel name="lamp24" element="Lamp_White"><bounds x="465" y="390" width="8" height="8" /></bezel>
1114      <bezel name="lamp25" element="Lamp_White"><bounds x="480" y="390" width="8" height="8" /></bezel>
1115      <bezel name="lamp26" element="Lamp_White"><bounds x="495" y="390" width="8" height="8" /></bezel>
1116      <bezel name="lamp27" element="Lamp_White"><bounds x="510" y="390" width="8" height="8" /></bezel>
1117      <bezel name="lamp28" element="Lamp_White"><bounds x="525" y="390" width="8" height="8" /></bezel>
1118      <bezel name="lamp29" element="Lamp_White"><bounds x="540" y="390" width="8" height="8" /></bezel>
1119
1120      <!-- Lamps controlled by U3 on Lamp Driver Board -->
1121      <bezel name="lamp30" element="Lamp_White"><bounds x="330" y="405" width="8" height="8" /></bezel>
1122      <bezel name="lamp31" element="Lamp_White"><bounds x="345" y="405" width="8" height="8" /></bezel>
1123      <bezel name="lamp32" element="Lamp_White"><bounds x="360" y="405" width="8" height="8" /></bezel>
1124      <bezel name="lamp33" element="Lamp_White"><bounds x="375" y="405" width="8" height="8" /></bezel>
1125      <bezel name="lamp34" element="Lamp_White"><bounds x="390" y="405" width="8" height="8" /></bezel>
1126      <bezel name="lamp35" element="Lamp_White"><bounds x="405" y="405" width="8" height="8" /></bezel>
1127      <bezel name="lamp36" element="Lamp_White"><bounds x="420" y="405" width="8" height="8" /></bezel>
1128      <bezel name="lamp37" element="Lamp_White"><bounds x="435" y="405" width="8" height="8" /></bezel>
1129      <bezel name="lamp38" element="Lamp_White"><bounds x="450" y="405" width="8" height="8" /></bezel>
1130      <bezel name="lamp39" element="Lamp_White"><bounds x="465" y="405" width="8" height="8" /></bezel>
1131      <bezel name="lamp40" element="Lamp_White"><bounds x="480" y="405" width="8" height="8" /></bezel>
1132      <bezel name="lamp41" element="Lamp_White"><bounds x="495" y="405" width="8" height="8" /></bezel>
1133      <bezel name="lamp42" element="Lamp_White"><bounds x="510" y="405" width="8" height="8" /></bezel>
1134      <bezel name="lamp43" element="Lamp_White"><bounds x="525" y="405" width="8" height="8" /></bezel>
1135      <bezel name="lamp44" element="Lamp_White"><bounds x="540" y="405" width="8" height="8" /></bezel>
1136
1137      <!-- Lamps controlled by U4 on Lamp Driver Board -->
1138      <bezel name="lamp45" element="Lamp_White"><bounds x="330" y="420" width="8" height="8" /></bezel>
1139      <bezel name="lamp46" element="Lamp_White"><bounds x="345" y="420" width="8" height="8" /></bezel>
1140      <bezel name="lamp47" element="Lamp_White"><bounds x="360" y="420" width="8" height="8" /></bezel>
1141      <bezel name="lamp48" element="Lamp_White"><bounds x="375" y="420" width="8" height="8" /></bezel>
1142      <bezel name="lamp49" element="Lamp_White"><bounds x="390" y="420" width="8" height="8" /></bezel>
1143      <bezel name="lamp50" element="Lamp_White"><bounds x="405" y="420" width="8" height="8" /></bezel>
1144      <bezel name="lamp51" element="Lamp_White"><bounds x="420" y="420" width="8" height="8" /></bezel>
1145      <bezel name="lamp52" element="Lamp_White"><bounds x="435" y="420" width="8" height="8" /></bezel>
1146      <bezel name="lamp53" element="Lamp_White"><bounds x="450" y="420" width="8" height="8" /></bezel>
1147      <bezel name="lamp54" element="Lamp_White"><bounds x="465" y="420" width="8" height="8" /></bezel>
1148      <bezel name="lamp55" element="Lamp_White"><bounds x="480" y="420" width="8" height="8" /></bezel>
1149      <bezel name="lamp56" element="Lamp_White"><bounds x="495" y="420" width="8" height="8" /></bezel>
1150      <bezel name="lamp57" element="Lamp_White"><bounds x="510" y="420" width="8" height="8" /></bezel>
1151      <bezel name="lamp58" element="Lamp_White"><bounds x="525" y="420" width="8" height="8" /></bezel>
1152      <bezel name="lamp59" element="Lamp_White"><bounds x="540" y="420" width="8" height="8" /></bezel>
1153
1154
1155      <bezel element="Text_Solenoids"><bounds x="382" y="437" width="100" height="11" /></bezel>
1156      <bezel name="solenoid0"  element="Solenoid_PullDown"><bounds x="330" y="452" width="9" height="19" /></bezel>
1157      <bezel name="solenoid1"  element="Solenoid_PullDown"><bounds x="345" y="452" width="9" height="19" /></bezel>
1158      <bezel name="solenoid2"  element="Solenoid_PullDown"><bounds x="360" y="452" width="9" height="19" /></bezel>
1159      <bezel name="solenoid3"  element="Solenoid_PullDown"><bounds x="375" y="452" width="9" height="19" /></bezel>
1160      <bezel name="solenoid4"  element="Solenoid_PullDown"><bounds x="390" y="452" width="9" height="19" /></bezel>
1161      <bezel name="solenoid5"  element="Solenoid_PullDown"><bounds x="405" y="452" width="9" height="19" /></bezel>
1162      <bezel name="solenoid6"  element="Solenoid_PullDown"><bounds x="420" y="452" width="9" height="19" /></bezel>
1163      <bezel name="solenoid7"  element="Solenoid_PullDown"><bounds x="435" y="452" width="9" height="19" /></bezel>
1164      <bezel name="solenoid8"  element="Solenoid_PullDown"><bounds x="450" y="452" width="9" height="19" /></bezel>
1165      <bezel name="solenoid9"  element="Solenoid_PullDown"><bounds x="465" y="452" width="9" height="19" /></bezel>
1166      <bezel name="solenoid10" element="Solenoid_PullDown"><bounds x="480" y="452" width="9" height="19" /></bezel>
1167      <bezel name="solenoid11" element="Solenoid_PullDown"><bounds x="495" y="452" width="9" height="19" /></bezel>
1168      <bezel name="solenoid12" element="Solenoid_PullDown"><bounds x="510" y="452" width="9" height="19" /></bezel>
1169      <bezel name="solenoid13" element="Solenoid_PullDown"><bounds x="525" y="452" width="9" height="19" /></bezel>
1170      <bezel name="solenoid14" element="Solenoid_PullDown"><bounds x="540" y="452" width="9" height="19" /></bezel>
1171
1172      <bezel element="Text_Coils"><bounds x="572" y="437" width="50" height="11" /></bezel>
1173      <bezel name="solenoid16" element="Coil_PullDown"><bounds x="570" y="459" width="09" height="12" /></bezel>
1174      <bezel name="solenoid17" element="Coil_PullDown"><bounds x="585" y="459" width="09" height="12" /></bezel>
1175      <bezel name="solenoid18" element="Coil_PullDown"><bounds x="600" y="459" width="09" height="12" /></bezel>
1176      <bezel name="solenoid19" element="Coil_PullDown"><bounds x="615" y="459" width="09" height="12" /></bezel>
1177
1178
1179
1180      <!-- Cabinet Switches -->
1181      <bezel element="Text_Service">                                       <bounds x="485" y="342" width="50" height="10" /></bezel>
1182      <bezel element="Switch_Push-Button" inputtag="TEST" inputmask="0x01"><bounds x="495" y="331" width="20" height="10" /></bezel>
1183      <bezel element="Key_9">                                              <bounds x="516" y="330" width="10" height="10" /></bezel>
1184
1185      <bezel element="Text_Slam">                                     <bounds x="430" y="342" width="50" height="10" /></bezel>
1186      <bezel element="Switch_SlamTilt" inputtag="X1" inputmask="0x80"><bounds x="434" y="331" width="25" height="08" /></bezel>
1187      <bezel element="Key_Equals">                                    <bounds x="461" y="330" width="10" height="10" /></bezel>
1188
1189      <bezel element="Text_Tilt">                                 <bounds x="380" y="342" width="50" height="10" /></bezel>
1190      <bezel element="Switch_Tilt" inputtag="X0" inputmask="0x40"><bounds x="390" y="324" width="17" height="17" /></bezel>
1191      <bezel element="Key_T">                                     <bounds x="411" y="330" width="10" height="10" /></bezel>
1192
1193
1194      <!-- Misc Solenoids -->
1195      <bezel name="solenoid5"  element="Solenoid_Knocker"><bounds x="336" y="321" width="09" height="22" /></bezel>
1196      <bezel element="Text_Knocker">   <!-- Knocker -->   <bounds x="322" y="342" width="40" height="10" /></bezel>
1197
1198      <!-- Misc Lamps -->
1199      <bezel name="lamp55" element="Credit_Indicator"><bounds x="23" y="456" width="70" height="21" /></bezel>   <!-- Credit Indicator -->
1200
1201
1202      <!-- Outhole -->
1203      <bezel name="solenoid6"  element="Solenoid_Outhole">                        <bounds x="150" y="455" width="58" height="22" /></bezel>
1204      <bezel element="Switch_RollOn_WireForm_Left" inputtag="X0" inputmask="0x80"><bounds x="163" y="453" width="20" height="16" /></bezel>
1205      <bezel element="Key_BSpace">                                                <bounds x="185" y="455" width="15" height="14" /></bezel>
1206
1207
1208
1209      <bezel element="Text_Switch"><bounds x="070" y="65" width="70" height="12" /></bezel>
1210      <bezel element="ST0">        <bounds x="020" y="080" width="30" height="11" /></bezel>
1211      <bezel element="ST1">        <bounds x="055" y="080" width="30" height="11" /></bezel>
1212      <bezel element="ST2">        <bounds x="090" y="080" width="30" height="11" /></bezel>
1213      <bezel element="ST3">        <bounds x="125" y="080" width="30" height="11" /></bezel>
1214      <bezel element="ST4">        <bounds x="160" y="080" width="30" height="11" /></bezel>
1215      <bezel element="I0">         <bounds x="001" y="100" width="20" height="11" /></bezel>
1216      <bezel element="I1">         <bounds x="001" y="130" width="20" height="11" /></bezel>
1217      <bezel element="I2">         <bounds x="001" y="160" width="20" height="11" /></bezel>
1218      <bezel element="I3">         <bounds x="001" y="190" width="20" height="11" /></bezel>
1219      <bezel element="I4">         <bounds x="001" y="220" width="20" height="11" /></bezel>
1220      <bezel element="I5">         <bounds x="001" y="250" width="20" height="11" /></bezel>
1221      <bezel element="I6">         <bounds x="001" y="280" width="20" height="11" /></bezel>
1222      <bezel element="I7">         <bounds x="001" y="310" width="20" height="11" /></bezel>
1223
1224
1225      <bezel element="Switch_Push-Button" inputtag="X0" inputmask="0x01"><bounds x="25" y="100" width="20" height="10" /></bezel>
1226      <bezel element="Key_Dot">                                          <bounds x="28" y="107" width="14" height="14" /></bezel>
1227      <bezel element="Switch_Push-Button" inputtag="X0" inputmask="0x02"><bounds x="25" y="130" width="20" height="10" /></bezel>
1228      <bezel element="Key_FSlash">                                       <bounds x="31" y="141" width="10" height="10" /></bezel>
1229      <bezel element="Switch_Push-Button" inputtag="X0" inputmask="0x04"><bounds x="25" y="160" width="20" height="10" /></bezel>
1230      <bezel element="Key_OBrkt">                                        <bounds x="31" y="171" width="10" height="10" /></bezel>
1231      <bezel element="Switch_Push-Button" inputtag="X0" inputmask="0x08"><bounds x="25" y="190" width="20" height="10" /></bezel>
1232      <bezel element="Key_CBrkt">                                        <bounds x="31" y="201" width="10" height="10" /></bezel>
1233      <bezel element="Switch_Push-Button" inputtag="X0" inputmask="0x10"><bounds x="25" y="220" width="20" height="10" /></bezel>
1234      <bezel element="Key_BSlash">                                       <bounds x="31" y="231" width="10" height="10" /></bezel>
1235      <bezel element="Switch_Push-Button" inputtag="X0" inputmask="0x20"><bounds x="25" y="250" width="20" height="10" /></bezel>
1236      <bezel element="Key_1">                                            <bounds x="31" y="261" width="10" height="10" /></bezel>
1237      <bezel element="Switch_Push-Button" inputtag="X0" inputmask="0x40"><bounds x="25" y="280" width="20" height="10" /></bezel>
1238      <bezel element="Key_T">                                            <bounds x="31" y="291" width="10" height="10" /></bezel>
1239      <bezel element="Switch_Push-Button" inputtag="X0" inputmask="0x80"><bounds x="25" y="310" width="20" height="10" /></bezel>
1240      <bezel element="Key_BSpace">                                       <bounds x="28" y="320" width="15" height="14" /></bezel>
1241
1242
1243      <bezel element="Switch_Push-Button" inputtag="X1" inputmask="0x01"><bounds x="60" y="100" width="20" height="10" /></bezel>
1244      <bezel element="Key_7">                                            <bounds x="66" y="111" width="10" height="10" /></bezel>
1245      <bezel element="Switch_Push-Button" inputtag="X1" inputmask="0x02"><bounds x="60" y="130" width="20" height="10" /></bezel>
1246      <bezel element="Key_5">                                            <bounds x="66" y="141" width="10" height="10" /></bezel>
1247      <bezel element="Switch_Push-Button" inputtag="X1" inputmask="0x04"><bounds x="60" y="160" width="20" height="10" /></bezel>
1248      <bezel element="Key_6">                                            <bounds x="66" y="171" width="10" height="10" /></bezel>
1249      <bezel element="Switch_Push-Button" inputtag="X1" inputmask="0x08"><bounds x="60" y="190" width="20" height="10" /></bezel>
1250      <bezel element="Key_Enter">                                        <bounds x="63" y="199" width="15" height="14" /></bezel>
1251      <bezel element="Switch_Push-Button" inputtag="X1" inputmask="0x10"><bounds x="60" y="220" width="20" height="10" /></bezel>
1252      <bezel element="Key_Quote">                                        <bounds x="64" y="230" width="14" height="14" /></bezel>
1253      <bezel element="Switch_Push-Button" inputtag="X1" inputmask="0x20"><bounds x="60" y="250" width="20" height="10" /></bezel>
1254      <bezel element="Key_SColon">                                       <bounds x="65" y="259" width="11" height="11" /></bezel>
1255      <bezel element="Switch_Push-Button" inputtag="X1" inputmask="0x40"><bounds x="60" y="280" width="20" height="10" /></bezel>
1256      <bezel element="Key_L">                                            <bounds x="66" y="291" width="10" height="10" /></bezel>
1257      <bezel element="Switch_Push-Button" inputtag="X1" inputmask="0x80"><bounds x="60" y="310" width="20" height="10" /></bezel>
1258      <bezel element="Key_Equals">                                       <bounds x="66" y="321" width="10" height="10" /></bezel>
1259
1260
1261      <bezel element="Switch_Push-Button" inputtag="X2" inputmask="0x01"><bounds x="095" y="100" width="20" height="10" /></bezel>
1262      <bezel element="Key_K">                                            <bounds x="101" y="111" width="10" height="10" /></bezel>
1263      <bezel element="Switch_Push-Button" inputtag="X2" inputmask="0x02"><bounds x="095" y="130" width="20" height="10" /></bezel>
1264      <bezel element="Key_J">                                            <bounds x="101" y="141" width="10" height="10" /></bezel>
1265      <bezel element="Switch_Push-Button" inputtag="X2" inputmask="0x04"><bounds x="095" y="160" width="20" height="10" /></bezel>
1266      <bezel element="Key_H">                                            <bounds x="101" y="171" width="10" height="10" /></bezel>
1267      <bezel element="Switch_Push-Button" inputtag="X2" inputmask="0x08"><bounds x="095" y="190" width="20" height="10" /></bezel>
1268      <bezel element="Key_G">                                            <bounds x="101" y="201" width="10" height="10" /></bezel>
1269      <bezel element="Switch_Push-Button" inputtag="X2" inputmask="0x10"><bounds x="095" y="220" width="20" height="10" /></bezel>
1270      <bezel element="Key_F">                                            <bounds x="101" y="231" width="10" height="10" /></bezel>
1271      <bezel element="Switch_Push-Button" inputtag="X2" inputmask="0x20"><bounds x="095" y="250" width="20" height="10" /></bezel>
1272      <bezel element="Key_D">                                            <bounds x="101" y="261" width="10" height="10" /></bezel>
1273      <bezel element="Switch_Push-Button" inputtag="X2" inputmask="0x40"><bounds x="095" y="280" width="20" height="10" /></bezel>
1274      <bezel element="Key_S">                                            <bounds x="101" y="291" width="10" height="10" /></bezel>
1275      <bezel element="Switch_Push-Button" inputtag="X2" inputmask="0x80"><bounds x="095" y="310" width="20" height="10" /></bezel>
1276      <bezel element="Key_A">                                            <bounds x="101" y="321" width="10" height="10" /></bezel>
1277
1278
1279      <bezel element="Switch_Push-Button" inputtag="X3" inputmask="0x01"><bounds x="130" y="100" width="20" height="10" /></bezel>
1280      <bezel element="Key_O">                                            <bounds x="136" y="111" width="10" height="10" /></bezel>
1281      <bezel element="Switch_Push-Button" inputtag="X3" inputmask="0x02"><bounds x="130" y="130" width="20" height="10" /></bezel>
1282      <bezel element="Key_I">                                            <bounds x="136" y="141" width="10" height="10" /></bezel>
1283      <bezel element="Switch_Push-Button" inputtag="X3" inputmask="0x04"><bounds x="130" y="160" width="20" height="10" /></bezel>
1284      <bezel element="Key_U">                                            <bounds x="136" y="171" width="10" height="10" /></bezel>
1285      <bezel element="Switch_Push-Button" inputtag="X3" inputmask="0x08"><bounds x="130" y="190" width="20" height="10" /></bezel>
1286      <bezel element="Key_Y">                                            <bounds x="136" y="201" width="10" height="10" /></bezel>
1287      <bezel element="Switch_Push-Button" inputtag="X3" inputmask="0x10"><bounds x="130" y="220" width="20" height="10" /></bezel>
1288      <bezel element="Key_R">                                            <bounds x="136" y="231" width="10" height="10" /></bezel>
1289      <bezel element="Switch_Push-Button" inputtag="X3" inputmask="0x20"><bounds x="130" y="250" width="20" height="10" /></bezel>
1290      <bezel element="Key_E">                                            <bounds x="136" y="261" width="10" height="10" /></bezel>
1291      <bezel element="Switch_Push-Button" inputtag="X3" inputmask="0x40"><bounds x="130" y="280" width="20" height="10" /></bezel>
1292      <bezel element="Key_W">                                            <bounds x="136" y="291" width="10" height="10" /></bezel>
1293      <bezel element="Switch_Push-Button" inputtag="X3" inputmask="0x80"><bounds x="130" y="310" width="20" height="10" /></bezel>
1294      <bezel element="Key_Q">                                            <bounds x="136" y="321" width="10" height="10" /></bezel>
1295
1296
1297      <bezel element="Switch_Push-Button" inputtag="X4" inputmask="0x01"><bounds x="165" y="100" width="20" height="10" /></bezel>
1298      <bezel element="Key_Comma">                                        <bounds x="168" y="107" width="14" height="14" /></bezel>
1299      <bezel element="Switch_Push-Button" inputtag="X4" inputmask="0x02"><bounds x="165" y="130" width="20" height="10" /></bezel>
1300      <bezel element="Key_M">                                            <bounds x="171" y="141" width="10" height="10" /></bezel>
1301      <bezel element="Switch_Push-Button" inputtag="X4" inputmask="0x04"><bounds x="165" y="160" width="20" height="10" /></bezel>
1302      <bezel element="Key_N">                                            <bounds x="171" y="171" width="10" height="10" /></bezel>
1303      <bezel element="Switch_Push-Button" inputtag="X4" inputmask="0x08"><bounds x="165" y="190" width="20" height="10" /></bezel>
1304      <bezel element="Key_B">                                            <bounds x="171" y="201" width="10" height="10" /></bezel>
1305      <bezel element="Switch_Push-Button" inputtag="X4" inputmask="0x10"><bounds x="165" y="220" width="20" height="10" /></bezel>
1306      <bezel element="Key_V">                                            <bounds x="171" y="231" width="10" height="10" /></bezel>
1307      <bezel element="Switch_Push-Button" inputtag="X4" inputmask="0x20"><bounds x="165" y="250" width="20" height="10" /></bezel>
1308      <bezel element="Key_C">                                            <bounds x="171" y="261" width="10" height="10" /></bezel>
1309      <bezel element="Switch_Push-Button" inputtag="X4" inputmask="0x40"><bounds x="165" y="280" width="20" height="10" /></bezel>
1310      <bezel element="Key_X">                                            <bounds x="171" y="291" width="10" height="10" /></bezel>
1311      <bezel element="Switch_Push-Button" inputtag="X4" inputmask="0x80"><bounds x="165" y="310" width="20" height="10" /></bezel>
1312      <bezel element="Key_Z">                                            <bounds x="171" y="321" width="10" height="10" /></bezel>
1313
133      <bezel element="P0"><bounds left="200" right="258" top="330" bottom="342" /></bezel>
134      <bezel element="P1"><bounds left="30" right="88" top="330" bottom="342" /></bezel>
135      <bezel name="text3" element="P3"><bounds left="100" right="180" top="30" bottom="42" /></bezel>
136      <bezel name="text2" element="P4"><bounds left="100" right="180" top="90" bottom="102" /></bezel>
137      <bezel name="text1" element="P5"><bounds left="100" right="180" top="150" bottom="162" /></bezel>
138      <bezel name="text0" element="P6"><bounds left="100" right="180" top="210" bottom="222" /></bezel>
139      <bezel name="led0" element="red_led">
140         <bounds left="110" right="125" top="360" bottom="375" /></bezel>
1314141   </view>
1315
1316142</mamelayout>
trunk/src/mame/layout/by17_matahari.lay
r249889r249890
1<!-- Pinball Machine, Bally ~ Mata Hari -->
2<!-- [Quench] October 2015 -->
3
4
5<!-- Any state="9" items are not displayed and are only used for object alignment -->
6
7<mamelayout version="2">
8
9   <element name="Title_MataHari"><text string="Mata Hari"><color red="1.00" green="0.0" blue="0.0" /></text></element>
10
11
12
13<!-- Switches -->
14
15   <element name="Switch_SlamTilt">
16      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="00" width="25" height="01" /></rect>
17      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="08" width="13" height="01.5" /></rect>
18      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="01" width="04" height="02" /></rect>
19      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="06" width="04" height="02" /></rect>
20
21      <rect state="0"><color red="0.70" green="0.70" blue="0.70" /><bounds x="19" y="01" width="06" height="04" /></rect>
22      <rect state="1"><color red="0.70" green="0.70" blue="0.70" /><bounds x="19" y="04" width="06" height="04" /></rect>
23
24      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="00" width="08" height="01" /></rect>
25      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="08" y="01" width="08" height="01" /></rect>
26      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="16" y="02" width="09" height="01" /></rect>
27
28
29      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="08"  width="13" height="01.5" /></rect>
30      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="03"  width="04" height="02" /></rect>
31      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="06"  width="04" height="02" /></rect>
32   </element>
33
34   <element name="Switch_Tilt">
35      <rect          ><color red="0.80" green="0.80" blue="0.00" /><bounds x="00" y="00" width="17" height="17" /></rect>
36      <disk          ><color red="0.00" green="0.00" blue="0.00" /><bounds x="01" y="01" width="15" height="15" /></disk>
37      <disk state="0"><color red="0.50" green="0.50" blue="0.50" /><bounds x="04" y="04" width="09" height="09" /></disk>
38      <disk state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="07" width="02" height="02" /></disk>
39
40      <disk state="1"><color red="0.50" green="0.50" blue="0.50" /><bounds x="07" y="04" width="09" height="09" /></disk>
41      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="11" y="07" width="02" height="02" /></disk>
42   </element>
43
44
45   <element name="Switch_Leaf_Vertical">
46      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="0" y="00" width="01"   height="06" /></rect>
47      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="8" y="00" width="01.5" height="06" /></rect>
48      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="1" y="01" width="02"   height="04" /></rect>
49      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="6" y="01" width="02"   height="04" /></rect>
50
51      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="1.5" y="00" width="01" height="06" /></rect>
52      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="6.5" y="00" width="01" height="06" /></rect>
53      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="2"   y="01" width="02" height="04" /></rect>
54      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="4.5" y="01" width="02" height="04" /></rect>
55   </element>
56
57   <element name="Switch_RollOn_WireForm_Left">
58      <text string=">" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="8" y="0" width="11"  height="11"  /></text>
59      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="0.1" height="04"  /></rect>
60      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="09"  height="0.1" /></rect>
61      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="8" width="09"  height="0.1" /></rect>
62      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="3" y="6" width="08"  height="0.1" /></rect>
63      <text string=">" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="8" y="0" width="11"  height="11"  /></text>
64      <rect            state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="0.1" height="04"  /></rect>
65      <rect            state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="09"  height="0.1" /></rect>
66      <rect            state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="8" width="09"  height="0.1" /></rect>
67   </element>
68
69   <element name="Switch_RollOver_WireForm_Vertical">
70      <text string="/\" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="00" width="07"  height="10" /></text>
71      <text string="\/" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="17" width="07"  height="10" /></text>
72      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="09" width="0.1" height="09" /></rect>
73      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="5" y="09" width="0.1" height="09" /></rect>
74      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="3" y="07" width="0.1" height="13" /></rect>
75      <text string="/\" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="00" width="07"  height="10" /></text>
76      <text string="\/" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="17" width="07"  height="10" /></text>
77      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="09" width="0.1" height="09" /></rect>
78      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="5" y="09" width="0.1" height="09" /></rect>
79   </element>
80
81
82   <element name="Switch_Push-Button" defstate="0">
83      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="04" width="16" height="01" /></rect>
84      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="00" width="01" height="04" /></rect>
85      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="17" y="00" width="01" height="04" /></rect>
86      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="00" width="05" height="01" /></rect>
87      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="08.5" width="16" height="01" /></rect>
88      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="04.5" width="01" height="04" /></rect>
89      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="17" y="04.5" width="01" height="04" /></rect>
90      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="04.5" width="05" height="01" /></rect>
91      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="12" width="09" height="01" /></rect>
92      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="21" y="12" width="09" height="01" /></rect>
93      <disk          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="10" width="06" height="06" /></disk>
94      <disk          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="18" y="10" width="06" height="06" /></disk>
95   </element>
96
97
98
99   <element name="Key_Z">     <text string="Z"><color red="1.00" green="0.66" blue="0.66" /></text></element>
100   <element name="Key_X">     <text string="X"><color red="1.00" green="0.66" blue="0.66" /></text></element>
101   <element name="Key_C">     <text string="C"><color red="1.00" green="0.66" blue="0.66" /></text></element>
102   <element name="Key_V">     <text string="V"><color red="1.00" green="0.66" blue="0.66" /></text></element>
103   <element name="Key_B">     <text string="B"><color red="1.00" green="0.66" blue="0.66" /></text></element>
104   <element name="Key_N">     <text string="N"><color red="1.00" green="0.66" blue="0.66" /></text></element>
105   <element name="Key_M">     <text string="M"><color red="1.00" green="0.66" blue="0.66" /></text></element>
106   <element name="Key_Comma"> <text string=","><color red="1.00" green="0.66" blue="0.66" /></text></element>
107   <element name="Key_Dot">   <text string="."><color red="1.00" green="0.66" blue="0.66" /></text></element>
108   <element name="Key_FSlash"><text string="/"><color red="1.00" green="0.66" blue="0.66" /></text></element>
109
110   <element name="Key_A">     <text string="A"><color red="1.00" green="0.66" blue="0.66" /></text></element>
111   <element name="Key_S">     <text string="S"><color red="1.00" green="0.66" blue="0.66" /></text></element>
112   <element name="Key_D">     <text string="D"><color red="1.00" green="0.66" blue="0.66" /></text></element>
113   <element name="Key_F">     <text string="F"><color red="1.00" green="0.66" blue="0.66" /></text></element>
114   <element name="Key_G">     <text string="G"><color red="1.00" green="0.66" blue="0.66" /></text></element>
115   <element name="Key_H">     <text string="H"><color red="1.00" green="0.66" blue="0.66" /></text></element>
116   <element name="Key_J">     <text string="J"><color red="1.00" green="0.66" blue="0.66" /></text></element>
117   <element name="Key_K">     <text string="K"><color red="1.00" green="0.66" blue="0.66" /></text></element>
118   <element name="Key_L">     <text string="L"><color red="1.00" green="0.66" blue="0.66" /></text></element>
119   <element name="Key_SColon"><text string=";"><color red="1.00" green="0.66" blue="0.66" /></text></element>
120   <element name="Key_Quote"> <text string="'"><color red="1.00" green="0.66" blue="0.66" /></text></element>
121   <element name="Key_Enter">
122      <text string="&#60;"><color red="1.00" green="0.66" blue="0.66" /><bounds x="00" y="00" width="07"  height="10" /></text>
123      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="00" y="00" width="07"  height="10" /></text>
124      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="02" y="00" width="07"  height="10" /></text>
125      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="04" y="00" width="07"  height="10" /></text>
126      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="06" y="00" width="07"  height="10" /></text>
127      <disk           >    <color red="1.00" green="0.66" blue="0.66" /><bounds x="10" y="02" width="0.5" height="03" /></disk>
128   </element>
129
130   <element name="Key_Q">     <text string="Q"><color red="1.00" green="0.66" blue="0.66" /></text></element>
131   <element name="Key_W">     <text string="W"><color red="1.00" green="0.66" blue="0.66" /></text></element>
132   <element name="Key_E">     <text string="E"><color red="1.00" green="0.66" blue="0.66" /></text></element>
133   <element name="Key_R">     <text string="R"><color red="1.00" green="0.66" blue="0.66" /></text></element>
134   <element name="Key_T">     <text string="T"><color red="1.00" green="0.66" blue="0.66" /></text></element>
135   <element name="Key_Y">     <text string="Y"><color red="1.00" green="0.66" blue="0.66" /></text></element>
136   <element name="Key_U">     <text string="U"><color red="1.00" green="0.66" blue="0.66" /></text></element>
137   <element name="Key_I">     <text string="I"><color red="1.00" green="0.66" blue="0.66" /></text></element>
138   <element name="Key_O">     <text string="O"><color red="1.00" green="0.66" blue="0.66" /></text></element>
139   <element name="Key_P">     <text string="P"><color red="1.00" green="0.66" blue="0.66" /></text></element>
140   <element name="Key_OBrkt"> <text string="["><color red="1.00" green="0.66" blue="0.66" /></text></element>
141   <element name="Key_CBrkt"> <text string="]"><color red="1.00" green="0.66" blue="0.66" /></text></element>
142   <element name="Key_BSlash"><text string="\"><color red="1.00" green="0.66" blue="0.66" /></text></element>
143
144   <element name="Key_1">     <text string="1"><color red="1.00" green="0.66" blue="0.66" /></text></element>
145   <element name="Key_5">     <text string="5"><color red="1.00" green="0.66" blue="0.66" /></text></element>
146   <element name="Key_6">     <text string="6"><color red="1.00" green="0.66" blue="0.66" /></text></element>
147   <element name="Key_7">     <text string="7"><color red="1.00" green="0.66" blue="0.66" /></text></element>
148   <element name="Key_9">     <text string="9"><color red="1.00" green="0.66" blue="0.66" /></text></element>
149   <element name="Key_0">     <text string="0"><color red="1.00" green="0.66" blue="0.66" /></text></element>
150   <element name="Key_BSpace">
151      <text string="&#60;"><color red="1.00" green="0.66" blue="0.66" /><bounds x="0" y="00" width="07" height="10" /></text>
152      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="0" y="00" width="07" height="10" /></text>
153      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="2" y="00" width="07" height="10" /></text>
154      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="4" y="00" width="07" height="10" /></text>
155      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="6" y="00" width="07" height="10" /></text>
156   </element>
157   <element name="Key_Equals"><text string="="><color red="1.00" green="0.66" blue="0.66" /></text></element>
158
159
160
161   <element name="Solenoid_DropTarget_Tall" defstate="0">
162      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="00" width="07" height="15" /></rect>
163      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="01" y="01" width="04" height="12" /></rect>
164   </element>
165   <element name="DropTarget_Tall" defstate="0">
166      <rect state="1"><color red="0.25" green="0.25" blue="0.25" /><bounds x="01" y="01" width="04" height="12" /></rect>
167      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="01" y="01" width="04" height="12" /></rect>
168      <rect state="9"><color red="0.00" green="1.00" blue="0.00" /><bounds x="00" y="00" width="07" height="15" /></rect>
169   </element>
170
171   <element name="Solenoid_DropTarget_Wide" defstate="0">
172      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="00" width="15" height="07" /></rect>
173      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="01" y="01" width="12" height="04" /></rect>
174   </element>
175   <element name="DropTarget_Wide" defstate="0">
176      <rect state="1"><color red="0.25" green="0.25" blue="0.25" /><bounds x="01" y="01" width="12" height="04" /></rect>
177      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="01" y="01" width="12" height="04" /></rect>
178      <rect state="9"><color red="0.00" green="1.00" blue="0.00" /><bounds x="00" y="00" width="15" height="07" /></rect>
179   </element>
180
181
182<!-- Lamps -->
183
184   <element name="Lamp_White" defstate="0">
185      <disk state="0"><color red="0.15" green="0.15" blue="0.15" /></disk>
186      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
187   </element>
188   <element name="Lamp_Red" defstate="0">                              <!-- Usually for Specials -->
189      <disk state="0"><color red="0.15" green="0.00" blue="0.00" /></disk>
190      <disk state="1"><color red="1.00" green="0.00" blue="0.00" /></disk>
191   </element>
192   <element name="Lamp_Amber" defstate="0">                           <!-- Usually for Extra Ball-->
193      <disk state="0"><color red="0.15" green="0.06" blue="0.00" /></disk>
194      <disk state="1"><color red="1.00" green="0.40" blue="0.00" /></disk>
195   </element>
196
197
198   <element name="Lamp_P1">
199      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
200      <text string="1" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
201      <text string="1" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
202   </element>
203   <element name="Lamp_P2">
204      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
205      <text string="2" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
206      <text string="2" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
207   </element>
208   <element name="Lamp_P3">
209      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
210      <text string="3" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
211      <text string="3" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
212   </element>
213   <element name="Lamp_P4">
214      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
215      <text string="4" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
216      <text string="4" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
217   </element>
218
219   <element name="Lamp_1P">
220      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
221      <text string="1" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
222      <text string="1" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
223   </element>
224   <element name="Lamp_2P">
225      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
226      <text string="2" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
227      <text string="2" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
228   </element>
229   <element name="Lamp_3P">
230      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
231      <text string="3" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
232      <text string="3" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
233   </element>
234   <element name="Lamp_4P">
235      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
236      <text string="4" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
237      <text string="4" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
238   </element>
239
240
241   <element name="Lamp_White_1k">
242      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
243      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
244      <text string="1k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
245   </element>
246   <element name="Lamp_White_2k">
247      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
248      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
249      <text string="2k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
250   </element>
251   <element name="Lamp_White_3k">
252      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
253      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
254      <text string="3k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
255   </element>
256   <element name="Lamp_White_4k">
257      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
258      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
259      <text string="4k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
260   </element>
261   <element name="Lamp_White_5k">
262      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
263      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
264      <text string="5k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
265   </element>
266   <element name="Lamp_White_6k">
267      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
268      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
269      <text string="6k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
270   </element>
271   <element name="Lamp_White_7k">
272      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
273      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
274      <text string="7k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
275   </element>
276   <element name="Lamp_White_8k">
277      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
278      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
279      <text string="8k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
280   </element>
281   <element name="Lamp_White_9k">
282      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
283      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
284      <text string="9k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
285   </element>
286   <element name="Lamp_White_10k">
287      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
288      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
289      <text string="10k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
290   </element>
291   <element name="Lamp_White_20k">
292      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
293      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
294      <text string="20k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
295   </element>
296   <element name="Lamp_White_50k">
297      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
298      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
299      <text string="50k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
300   </element>
301
302
303   <element name="Lamp_White_A">
304      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
305      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
306      <text string="A"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
307   </element>
308   <element name="Lamp_White_B">
309      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
310      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
311      <text string="B"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
312   </element>
313
314
315   <element name="Credit_Indicator">
316      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="2.5" y="0" width="1.0" height="1.0" /></disk>
317      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="2.5" y="0" width="1.0" height="1.0" /></disk>
318      <text string="Credit Indicator"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="1.1" width="6.5" height="0.90" /></text>
319   </element>
320
321
322   <element name="Lamp_Green_Arrow_Up_2x" defstate="1">
323      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="10" y="00" width="02" height="03" /></rect>
324      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="10" y="00" width="02" height="03" /></rect>
325      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="08" y="03" width="06" height="03" /></rect>
326      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="08" y="03" width="06" height="03" /></rect>
327      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="06" y="06" width="10" height="03" /></rect>
328      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="06" y="06" width="10" height="03" /></rect>
329      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="04" y="09" width="14" height="03" /></rect>
330      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="04" y="09" width="14" height="03" /></rect>
331      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="02" y="12" width="18" height="03" /></rect>
332      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="02" y="12" width="18" height="03" /></rect>
333      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="00" y="15" width="22" height="03" /></rect>
334      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="00" y="15" width="22" height="03" /></rect>
335      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="09" y="06" width="04" height="30" /></rect>
336      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="09" y="06" width="04" height="30" /></rect>
337      <text string="2x"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="06" y="08" width="12" height="12" /></text>
338   </element>
339
340   <element name="Lamp_Yellow_Arrow_Up_3x" defstate="1">
341      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="10" y="00" width="02" height="03" /></rect>
342      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="10" y="00" width="02" height="03" /></rect>
343      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="03" width="06" height="03" /></rect>
344      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="08" y="03" width="06" height="03" /></rect>
345      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="06" y="06" width="10" height="03" /></rect>
346      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="06" y="06" width="10" height="03" /></rect>
347      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="04" y="09" width="14" height="03" /></rect>
348      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="04" y="09" width="14" height="03" /></rect>
349      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="02" y="12" width="18" height="03" /></rect>
350      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="02" y="12" width="18" height="03" /></rect>
351      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="00" y="15" width="22" height="03" /></rect>
352      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="00" y="15" width="22" height="03" /></rect>
353      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="09" y="06" width="04" height="30" /></rect>
354      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="09" y="06" width="04" height="30" /></rect>
355      <text string="3x"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="06" y="08" width="12" height="12" /></text>
356   </element>
357
358   <element name="Lamp_White_Arrow_Up_5x" defstate="1">
359      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="10" y="00" width="02" height="03" /></rect>
360      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="10" y="00" width="02" height="03" /></rect>
361      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="08" y="03" width="06" height="03" /></rect>
362      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="08" y="03" width="06" height="03" /></rect>
363      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="06" width="10" height="03" /></rect>
364      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="06" width="10" height="03" /></rect>
365      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="04" y="09" width="14" height="03" /></rect>
366      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="04" y="09" width="14" height="03" /></rect>
367      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="02" y="12" width="18" height="03" /></rect>
368      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="02" y="12" width="18" height="03" /></rect>
369      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="15" width="22" height="03" /></rect>
370      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="00" y="15" width="22" height="03" /></rect>
371      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="09" y="06" width="04" height="30" /></rect>
372      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="09" y="06" width="04" height="30" /></rect>
373      <text string="5x"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="06" y="08" width="12" height="12" /></text>
374   </element>
375
376   <element name="Lamp_White_Arrow_Up_3k" defstate="0">
377      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="10" y="00" width="02" height="03" /></rect>
378      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="08" y="03" width="06" height="03" /></rect>
379      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="06" width="10" height="03" /></rect>
380      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="04" y="09" width="14" height="03" /></rect>
381      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="02" y="12" width="18" height="03" /></rect>
382      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="15" width="22" height="03" /></rect>
383      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="09" y="06" width="04" height="30" /></rect>
384      <text string="3k"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="06" y="08" width="12" height="12" /></text>
385   </element>
386
387   <element name="Lamp_Green_Arrow_04_2x" defstate="1">   <!-- Point at 4 o clock -->
388      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="00" y="00" width="08" height="03" /></rect>
389      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="00" y="00" width="08" height="03" /></rect>
390      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="05" y="03" width="08" height="03" /></rect>
391      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="05" y="03" width="08" height="03" /></rect>
392      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="10" y="06" width="08" height="03" /></rect>
393      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="10" y="06" width="08" height="03" /></rect>
394      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="24" y="03" width="02" height="03" /></rect>
395      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="24" y="03" width="02" height="03" /></rect>
396      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="22" y="06" width="06" height="03" /></rect>
397      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="22" y="06" width="06" height="03" /></rect>
398      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="15" y="09" width="15" height="03" /></rect>
399      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="15" y="09" width="15" height="03" /></rect>
400      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="18" y="12" width="14" height="03" /></rect>
401      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="18" y="12" width="14" height="03" /></rect>
402      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="17" y="15" width="17" height="03" /></rect>
403      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="17" y="15" width="17" height="03" /></rect>
404      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="16" y="18" width="20" height="03" /></rect>
405      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="16" y="18" width="20" height="03" /></rect>
406      <text string="2x"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="18" y="08" width="15" height="15" /></text>
407   </element>
408
409   <element name="Lamp_Yellow_Arrow_04_3x" defstate="1">   <!-- Point at 4 o clock -->
410      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="00" y="00" width="08" height="03" /></rect>
411      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="00" y="00" width="08" height="03" /></rect>
412      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="05" y="03" width="08" height="03" /></rect>
413      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="05" y="03" width="08" height="03" /></rect>
414      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="10" y="06" width="08" height="03" /></rect>
415      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="10" y="06" width="08" height="03" /></rect>
416      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="24" y="03" width="02" height="03" /></rect>
417      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="24" y="03" width="02" height="03" /></rect>
418      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="22" y="06" width="06" height="03" /></rect>
419      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="22" y="06" width="06" height="03" /></rect>
420      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="15" y="09" width="15" height="03" /></rect>
421      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="15" y="09" width="15" height="03" /></rect>
422      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="18" y="12" width="14" height="03" /></rect>
423      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="18" y="12" width="14" height="03" /></rect>
424      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="17" y="15" width="17" height="03" /></rect>
425      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="17" y="15" width="17" height="03" /></rect>
426      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="16" y="18" width="20" height="03" /></rect>
427      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="16" y="18" width="20" height="03" /></rect>
428      <text string="3x"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="18" y="08" width="15" height="15" /></text>
429   </element>
430
431   <element name="Lamp_White_Arrow_08_5x" defstate="1">   <!-- Point at 8 o clock -->
432      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="28" y="00" width="08" height="03" /></rect>
433      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="28" y="00" width="08" height="03" /></rect>
434      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="23" y="03" width="08" height="03" /></rect>
435      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="23" y="03" width="08" height="03" /></rect>
436      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="18" y="06" width="08" height="03" /></rect>
437      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="18" y="06" width="08" height="03" /></rect>
438      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="10" y="03" width="02" height="03" /></rect>
439      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="10" y="03" width="02" height="03" /></rect>
440      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="08" y="06" width="06" height="03" /></rect>
441      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="08" y="06" width="06" height="03" /></rect>
442      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
443      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="09" width="15" height="03" /></rect>
444      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="04" y="12" width="14" height="03" /></rect>
445      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="04" y="12" width="14" height="03" /></rect>
446      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="02" y="15" width="17" height="03" /></rect>
447      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="02" y="15" width="17" height="03" /></rect>
448      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="18" width="20" height="03" /></rect>
449      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="00" y="18" width="20" height="03" /></rect>
450      <text string="5x"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="06" y="08" width="15" height="15" /></text>
451   </element>
452
453   <element name="Lamp_Amber_Arrow_08" defstate="1">   <!-- Point at 8 o clock -->
454      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="28" y="00" width="08" height="03" /></rect>
455      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="28" y="00" width="08" height="03" /></rect>
456      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="23" y="03" width="08" height="03" /></rect>
457      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="23" y="03" width="08" height="03" /></rect>
458      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="18" y="06" width="08" height="03" /></rect>
459      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="18" y="06" width="08" height="03" /></rect>
460      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="10" y="03" width="02" height="03" /></rect>
461      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="10" y="03" width="02" height="03" /></rect>
462      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="08" y="06" width="06" height="03" /></rect>
463      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="08" y="06" width="06" height="03" /></rect>
464      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
465      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
466      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="04" y="12" width="14" height="03" /></rect>
467      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="04" y="12" width="14" height="03" /></rect>
468      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="02" y="15" width="17" height="03" /></rect>
469      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="02" y="15" width="17" height="03" /></rect>
470      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="00" y="18" width="20" height="03" /></rect>
471      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="00" y="18" width="20" height="03" /></rect>
472   </element>
473
474   <element name="Lamp_White_Arrow_11_A" defstate="1">   <!-- Point at 11 o clock -->
475      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="00" width="03" height="20" /></rect>
476      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="00" y="00" width="03" height="20" /></rect>
477      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="03" y="02" width="03" height="17" /></rect>
478      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="03" y="02" width="03" height="17" /></rect>
479      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="04" width="03" height="14" /></rect>
480      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="04" width="03" height="14" /></rect>
481      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="09" y="06" width="03" height="15" /></rect>
482      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="09" y="06" width="03" height="15" /></rect>
483      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="08" width="03" height="06" /></rect>
484      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="12" y="08" width="03" height="06" /></rect>
485      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="15" y="10" width="03" height="02" /></rect>
486      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="15" y="10" width="03" height="02" /></rect>
487      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="18" width="03" height="08" /></rect>
488      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="12" y="18" width="03" height="08" /></rect>
489      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="15" y="23" width="03" height="08" /></rect>
490      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="15" y="23" width="03" height="08" /></rect>
491      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="18" y="28" width="03" height="08" /></rect>
492      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="18" y="28" width="03" height="08" /></rect>
493      <text string="A"><color red="0.0" green="0.0" blue="0.0"   /><bounds x="-2" y="03" width="18" height="18" /></text>
494   </element>
495
496   <element name="Lamp_White_Arrow_01_B" defstate="1">   <!-- Point at 1 o clock -->
497      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="18" y="00" width="03" height="20" /></rect>
498      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="18" y="00" width="03" height="20" /></rect>
499      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="15" y="02" width="03" height="17" /></rect>
500      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="15" y="02" width="03" height="17" /></rect>
501      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="04" width="03" height="14" /></rect>
502      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="12" y="04" width="03" height="14" /></rect>
503      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="09" y="06" width="03" height="15" /></rect>
504      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="09" y="06" width="03" height="15" /></rect>
505      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="08" width="03" height="06" /></rect>
506      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="08" width="03" height="06" /></rect>
507      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="03" y="10" width="03" height="02" /></rect>
508      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="03" y="10" width="03" height="02" /></rect>
509      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="18" width="03" height="08" /></rect>
510      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="18" width="03" height="08" /></rect>
511      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="03" y="23" width="03" height="08" /></rect>
512      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="03" y="23" width="03" height="08" /></rect>
513      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="28" width="03" height="08" /></rect>
514      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="00" y="28" width="03" height="08" /></rect>
515      <text string="B"><color red="0.0" green="0.0" blue="0.0"   /><bounds x="06" y="03" width="18" height="18" /></text>
516   </element>
517
518
519<!-- Backbox Indicators -->
520
521   <element name="Text_Credit"><text string="CREDIT"><color red="1.0" green="1.0" blue="1.0" /></text></element>
522   <element name="Text_Lamps"><text string="Lamps"><color red="1.0" green="1.0" blue="1.0" /></text></element>
523   <element name="Text_15"><text string="U1 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
524   <element name="Text_30"><text string="U2 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
525   <element name="Text_45"><text string="U3 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
526   <element name="Text_60"><text string="U4 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
527   <element name="Text_Solenoids"><text string="Momentary Solenoids"><color red="1.0" green="1.0" blue="1.0" /></text></element>
528   <element name="Text_Coils"><text string="Coils"><color red="1.0" green="1.0" blue="1.0" /></text></element>
529   <element name="Text_MPU_LED"><text string="MPU LED"><color red="1.0" green="1.0" blue="1.0" /></text></element>
530   <element name="Text_Activity"><text string="Activity Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
531   <element name="Text_Service"><text string="Service Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
532   <element name="Text_Slam"><text string="Slam Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
533   <element name="Text_Tilt"><text string="Tilt Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
534   <element name="Text_Knocker"><text string="Knocker"><color red="1.0" green="1.0" blue="1.0" /></text></element>
535
536
537   <element name="High_Score_To_Date" defstate="0">
538      <text string="HIGH SCORE TO DATE" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="1" /></text>
539      <text string="HIGH SCORE TO DATE" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="1" /></text>
540   </element>
541   <element name="Ball_In_Play" defstate="0">
542      <text string="BALL IN PLAY" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.1" y="0.1" width="1" height="0.8" /></text>
543      <text string="BALL IN PLAY" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0.1" y="0.1" width="1" height="0.8" /></text>
544   </element>
545   <element name="Match" defstate="0">
546      <text string="MATCH" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
547      <text string="MATCH" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
548   </element>
549   <element name="Game_Over" defstate="0">
550      <text string="GAME OVER" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
551      <text string="GAME OVER" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
552   </element>
553   <element name="Tilt" defstate="0">
554      <text string="TILT" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
555      <text string="TILT" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
556   </element>
557   <element name="Shoot_Again" defstate="0">
558      <text string="SAME PLAYER"  state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
559      <text string="SAME PLAYER"  state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
560      <text string="SHOOTS AGAIN" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.9" width="1" height="0.8" /></text>
561      <text string="SHOOTS AGAIN" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.9" width="1" height="0.8" /></text>
562   </element>
563
564
565   <element name="Digit" defstate="0">
566      <led7seg><color red="1.0" green="0.35" blue="0.0" /></led7seg>
567   </element>
568
569   <element name="LED_Green" defstate="1">
570      <disk state="0"><color red="0.0" green="0.25" blue="0.0" /></disk>
571      <disk state="1"><color red="0.0" green="1.00" blue="0.0" /></disk>
572   </element>
573
574
575
576<!-- Solenoids -->
577
578   <element name="Solenoid_PullDown">
579      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="3" y="0" width="03" height="09" /></rect>
580      <rect state="0"><color red="0.0" green="1.0" blue="1.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
581      <rect state="1"><color red="1.0" green="1.0" blue="0.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
582   </element>
583
584   <element name="Coil_PullDown">
585      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="8" y="0" width="02" height="01" /></rect>
586      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="6" y="1" width="02" height="01" /></rect>
587      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="4" y="2" width="02" height="01" /></rect>
588      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="2" y="3" width="02" height="01" /></rect>
589      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="4" width="02" height="01" /></rect>
590      <rect          ><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="5" width="02" height="02" /></rect>
591      <rect state="1"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="4" width="10" height="01" /></rect>
592
593      <rect state="0"><color red="0.0" green="1.0" blue="1.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
594      <rect state="1"><color red="1.0" green="1.0" blue="0.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
595   </element>
596
597
598   <element name="Solenoid_Knocker" defstate="0">
599      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="03" y="14" width="03" height="08" /></rect>
600      <rect state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="03" y="00" width="03" height="04" /></rect>
601      <rect state="0"><color red="0.0" green="1.0" blue="1.0" /><bounds x="00" y="04" width="10" height="11" /></rect>
602      <rect state="1"><color red="1.0" green="1.0" blue="0.0" /><bounds x="00" y="04" width="10" height="11" /></rect>
603   </element>
604
605   <element name="Solenoid_Outhole" defstate="0">
606      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="17" y="00" width="05" height="16" /></text>
607      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="02" y="00" width="05" height="16" /></text>
608      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="18" y="00" width="05" height="16" /></text>
609      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="03" y="00" width="05" height="16" /></text>
610      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="19" y="00" width="05" height="16" /></text>
611      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="04" y="00" width="05" height="16" /></text>
612      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="20" y="00" width="05" height="16" /></text>
613      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="05" y="00" width="05" height="16" /></text>
614      <rect            state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="02" y="02" width="18" height="10" /></rect>
615      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="00" y="14" width="25" height="02" /></rect>
616      <text string="Outhole"    ><color red="1.0" green="1.0" blue="1.0" /><bounds x="30" y="12" width="28" height="9.5" /></text>
617   </element>
618
619   <element name="Solenoid_SlingShot_Left" defstate="0">
620      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="05" y="00" width="65"   height="80" /></text>
621      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="00" y="00" width="65"   height="80" /></text>
622      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="20" y="16" width="04"   height="60" /></rect>
623      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="20" y="76" width="24.5" height="04" /></rect>
624   </element>
625   <element name="Solenoid_SlingShot_Right" defstate="0">
626      <text string="/" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="-5"   y="00" width="65" height="80" /></text>
627      <text string="/" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="00"   y="00" width="65" height="80" /></text>
628      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="40"   y="16" width="04" height="60" /></rect>
629      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="19.5" y="76" width="24" height="04" /></rect>
630   </element>
631
632
633   <element name="Solenoid_Bumper_Red_Star" defstate="0">
634      <disk state="0"> <color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
635      <disk state="1"> <color red="1.0" green="0.0" blue="0.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
636      <text string="*"><color red="1.0" green="0.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
637      <disk>           <color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
638   </element>
639   <element name="Switch_Bumper_Red_Star" defstate="0">
640      <text string="*" state="9"><color red="1.0" green="0.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
641      <disk            state="0"><color red="1.0" green="0.0" blue="0.0" /><bounds x="14" y="15" width="50" height="50" /></disk>
642      <disk            state="1"><color red="0.5" green="0.5" blue="0.5" /><bounds x="14" y="15" width="50" height="50" /></disk>
643   </element>
644   <element name="Lamp_Bumper_Silver_1000" defstate="1">
645      <text string="*" state="9"><color red="0.5" green="0.5" blue="0.5" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
646      <disk            state="0"><color red="0.7" green="0.7" blue="0.7" /><bounds x="18" y="18" width="44" height="44" /></disk>
647      <disk            state="1"><color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
648      <text string="1000">       <color red="0.5" green="0.5" blue="0.5" /><bounds x="07" y="29" width="70" height="23" /></text>
649   </element>
650
651   <element name="Solenoid_Bumper_Yellow_Star" defstate="0">
652      <disk state="0"> <color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
653      <disk state="1"> <color red="1.0" green="0.0" blue="0.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
654      <text string="*"><color red="1.0" green="1.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
655      <disk>           <color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
656   </element>
657   <element name="Switch_Bumper_Yellow_Star" defstate="0">
658      <text string="*" state="9"><color red="1.0" green="1.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
659      <disk            state="0"><color red="1.0" green="1.0" blue="0.0" /><bounds x="14" y="15" width="50" height="50" /></disk>
660      <disk            state="1"><color red="0.5" green="0.5" blue="0.5" /><bounds x="14" y="15" width="50" height="50" /></disk>
661   </element>
662   <element name="Lamp_Bumper_Silver_100" defstate="1">
663      <text string="*" state="9"><color red="0.5" green="0.5" blue="0.5" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
664      <disk                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
665      <text string="100">        <color red="0.5" green="0.5" blue="0.5" /><bounds x="07" y="29" width="66" height="23" /></text>
666   </element>
667
668
669   <element name="Solenoid_Saucer_Large" defstate="0">
670      <disk>          <color red="1.0" green="0.8" blue="0.5" /><bounds x="00" y="00" width="70" height="70" /></disk>
671      <disk>          <color red="0.7" green="0.7" blue="0.7" /><bounds x="17" y="17" width="36" height="36" /></disk>
672      <rect state="0"><color red="0.3" green="0.3" blue="0.3" /><bounds x="33" y="14" width="04" height="21" /></rect>
673      <rect state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="33" y="14" width="04" height="21" /></rect>
674      <disk>          <color red="0.0" green="0.0" blue="0.0" /><bounds x="29" y="40" width="12" height="12" /></disk>
675   </element>
676   <element name="Switch_Saucer_Large" defstate="0">
677      <disk state="9"><color red="1.0" green="0.8" blue="0.5" /><bounds x="00" y="00" width="70" height="70" /></disk>
678      <disk state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="31" y="42" width="08" height="08" /></disk>
679      <disk state="1"><color red="0.0" green="0.0" blue="0.0" /><bounds x="31" y="42" width="08" height="08" /></disk>
680   </element>
681
682
683<!-- Line colours -->
684
685   <element name="Draw_White" defstate="1">
686      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
687      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
688   </element>
689   <element name="Draw_Red" defstate="1">
690      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
691      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
692   </element>
693   <element name="Draw_Amber" defstate="1">
694      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
695      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
696   </element>
697
698   <element name="Canvas">
699      <rect>
700         <color red="0.0" green="0.0" blue="0.0" />
701         <bounds left="0" top="0" right="1" bottom="1" />
702      </rect>
703   </element>
704
705
706
707
708
709   <view name="Mata Hari Playfield">
710
711      <!-- Background -->
712      <backdrop element="Canvas"><bounds x="0" y="0" width="640" height="480" /></backdrop>
713     
714      <bezel element="Draw_White"><bounds x="0" y="0" width="640" height="1" /></bezel>
715      <bezel element="Draw_White"><bounds x="0" y="0" width="1" height="480" /></bezel>
716      <bezel element="Draw_White"><bounds x="640" y="0" width="1" height="480" /></bezel>
717      <bezel element="Draw_White"><bounds x="0" y="480" width="640" height="1" /></bezel>
718      <bezel element="Draw_White"><bounds x="320" y="0" width="1" height="480" /></bezel>
719      <bezel element="Draw_White"><bounds x="320" y="320" width="320" height="1" /></bezel>
720      <!--     <bezel element="Draw_White"><bounds x="159" y="0" width="1" height="480" /></bezel>     -->
721
722      <bezel element="Title_MataHari"><bounds x="430" y="18" width="105" height="30" /></bezel>
723
724
725      <!-- Backbox -->
726
727      <!-- MPU Board Power On Self Test LED -->
728      <bezel element="Text_MPU_LED">         <bounds x="609" y="342" width="30" height="10" /></bezel>
729      <bezel name="led0" element="LED_Green"><bounds x="618" y="328" width="10" height="10" /></bezel>
730
731      <!-- MPU Board Activity Switch -->
732      <bezel element="Text_Activity">                                      <bounds x="540" y="342" width="50" height="10" /></bezel>
733      <bezel element="Switch_Push-Button" inputtag="TEST" inputmask="0x02"><bounds x="550" y="331" width="20" height="10" /></bezel>
734      <bezel element="Key_0">                                              <bounds x="571" y="330" width="10" height="10" /></bezel>
735
736
737      <!-- Player 1 Score -->
738      <bezel name="lamp14" element="Lamp_P1"><bounds x="330" y="55" width="15" height="15" /></bezel>         <!-- Backbox ~ 1st Player Up -->
739      <bezel name="digit17" element="Digit"><bounds x="360" y="55" width="10" height="15" /></bezel>
740      <bezel name="digit16" element="Digit"><bounds x="374" y="55" width="10" height="15" /></bezel>
741      <bezel name="digit15" element="Digit"><bounds x="388" y="55" width="10" height="15" /></bezel>
742      <bezel name="digit14" element="Digit"><bounds x="402" y="55" width="10" height="15" /></bezel>
743      <bezel name="digit13" element="Digit"><bounds x="416" y="55" width="10" height="15" /></bezel>
744      <bezel name="digit12" element="Digit"><bounds x="430" y="55" width="10" height="15" /></bezel>
745      <bezel name="digit11" element="Digit"><bounds x="444" y="55" width="10" height="15" /></bezel>
746
747      <!-- Player 2 Score -->
748      <bezel name="lamp29" element="Lamp_P2"><bounds x="615" y="55" width="15" height="15" /></bezel>         <!-- Backbox ~ 2nd Player Up -->
749      <bezel name="digit27" element="Digit"><bounds x="506" y="55" width="10" height="15" /></bezel>
750      <bezel name="digit26" element="Digit"><bounds x="520" y="55" width="10" height="15" /></bezel>
751      <bezel name="digit25" element="Digit"><bounds x="534" y="55" width="10" height="15" /></bezel>
752      <bezel name="digit24" element="Digit"><bounds x="548" y="55" width="10" height="15" /></bezel>
753      <bezel name="digit23" element="Digit"><bounds x="562" y="55" width="10" height="15" /></bezel>
754      <bezel name="digit22" element="Digit"><bounds x="576" y="55" width="10" height="15" /></bezel>
755      <bezel name="digit21" element="Digit"><bounds x="590" y="55" width="10" height="15" /></bezel>
756
757      <!-- Player 3 Score -->
758      <bezel name="lamp44" element="Lamp_P3"><bounds x="330" y="250" width="15" height="15" /></bezel>      <!-- Backbox ~ 3rd Player Up -->
759      <bezel name="digit37" element="Digit"><bounds x="360" y="250" width="10" height="15" /></bezel>
760      <bezel name="digit36" element="Digit"><bounds x="374" y="250" width="10" height="15" /></bezel>
761      <bezel name="digit35" element="Digit"><bounds x="388" y="250" width="10" height="15" /></bezel>
762      <bezel name="digit34" element="Digit"><bounds x="402" y="250" width="10" height="15" /></bezel>
763      <bezel name="digit33" element="Digit"><bounds x="416" y="250" width="10" height="15" /></bezel>
764      <bezel name="digit32" element="Digit"><bounds x="430" y="250" width="10" height="15" /></bezel>
765      <bezel name="digit31" element="Digit"><bounds x="444" y="250" width="10" height="15" /></bezel>
766
767      <!-- Player 4 Score -->
768      <bezel name="lamp59" element="Lamp_P4"><bounds x="615" y="250" width="15" height="15" /></bezel>      <!-- Backbox ~ 4th Player Up -->
769      <bezel name="digit47" element="Digit"><bounds x="506" y="250" width="10" height="15" /></bezel>
770      <bezel name="digit46" element="Digit"><bounds x="520" y="250" width="10" height="15" /></bezel>
771      <bezel name="digit45" element="Digit"><bounds x="534" y="250" width="10" height="15" /></bezel>
772      <bezel name="digit44" element="Digit"><bounds x="548" y="250" width="10" height="15" /></bezel>
773      <bezel name="digit43" element="Digit"><bounds x="562" y="250" width="10" height="15" /></bezel>
774      <bezel name="digit42" element="Digit"><bounds x="576" y="250" width="10" height="15" /></bezel>
775      <bezel name="digit41" element="Digit"><bounds x="590" y="250" width="10" height="15" /></bezel>
776
777      <!-- Credits and Ball In Play / Match -->
778      <bezel element="Text_Credit"><bounds x="542" y="142" width="48" height="8" /></bezel>
779      <bezel name="lamp12"  element="Ball_In_Play"><bounds x="586" y="105" width="50" height="11" /></bezel>   <!-- Backbox ~ Ball In Play -->
780      <bezel name="lamp25"  element="Match"><bounds x="596" y="152" width="25" height="11" /></bezel>         <!-- Backbox ~ Match -->
781      <bezel name="digit55" element="Digit"><bounds x="554" y="125" width="10" height="15" /></bezel>
782      <bezel name="digit54" element="Digit"><bounds x="568" y="125" width="10" height="15" /></bezel>
783      <bezel name="digit52" element="Digit"><bounds x="596" y="125" width="10" height="15" /></bezel>
784      <bezel name="digit51" element="Digit"><bounds x="610" y="125" width="10" height="15" /></bezel>
785
786      <bezel name="lamp10" element="Shoot_Again"><bounds x="420" y="295" width="60" height="19" /></bezel>   <!-- Backbox ~ Same Player Shoots Again -->
787      <bezel name="lamp13" element="Lamp_1P"><bounds x="345" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 1 Player Game -->
788      <bezel name="lamp28" element="Lamp_2P"><bounds x="360" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 2 Player Game -->
789      <bezel name="lamp43" element="Lamp_3P"><bounds x="375" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 3 Player Game -->
790      <bezel name="lamp58" element="Lamp_4P"><bounds x="390" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 4 Player Game -->
791      <bezel name="lamp27" element="High_Score_To_Date"><bounds x="438" y="6" width="90" height="11" /></bezel>   <!-- Backbox ~ High Score To Date -->
792      <bezel name="lamp42" element="Game_Over"><bounds x="580" y="300" width="45" height="11" /></bezel>      <!-- Backbox ~ Game Over -->
793      <bezel name="lamp57" element="Tilt"><bounds x="480" y="297" width="50" height="16" /></bezel>         <!-- Backbox ~ Tilt -->
794
795
796
797      <bezel element="Text_Lamps"><bounds x="410" y="360" width="60" height="11" /></bezel>
798      <bezel element="Text_15"><bounds x="552" y="373" width="30" height="11" /></bezel>
799      <bezel element="Text_30"><bounds x="552" y="388" width="30" height="11" /></bezel>
800      <bezel element="Text_45"><bounds x="552" y="403" width="30" height="11" /></bezel>
801      <bezel element="Text_60"><bounds x="552" y="418" width="30" height="11" /></bezel>
802
803      <!-- Lamps controlled by U1 on Lamp Driver Board -->
804      <bezel name="lamp0"  element="Lamp_White"><bounds x="330" y="375" width="8" height="8" /></bezel>   <!-- U1 00 -->
805      <bezel name="lamp1"  element="Lamp_White"><bounds x="345" y="375" width="8" height="8" /></bezel>   <!-- U1 01 -->
806      <bezel name="lamp2"  element="Lamp_White"><bounds x="360" y="375" width="8" height="8" /></bezel>   <!-- U1 02 -->
807      <bezel name="lamp3"  element="Lamp_White"><bounds x="375" y="375" width="8" height="8" /></bezel>   <!-- U1 03 -->
808      <bezel name="lamp4"  element="Lamp_White"><bounds x="390" y="375" width="8" height="8" /></bezel>   <!-- U1 04 -->
809      <bezel name="lamp5"  element="Lamp_White"><bounds x="405" y="375" width="8" height="8" /></bezel>   <!-- U1 05 -->
810      <bezel name="lamp6"  element="Lamp_White"><bounds x="420" y="375" width="8" height="8" /></bezel>   <!-- U1 06 -->
811      <bezel name="lamp7"  element="Lamp_White"><bounds x="435" y="375" width="8" height="8" /></bezel>   <!-- U1 07 -->
812      <bezel name="lamp8"  element="Lamp_White"><bounds x="450" y="375" width="8" height="8" /></bezel>   <!-- U1 08 -->
813      <bezel name="lamp9"  element="Lamp_White"><bounds x="465" y="375" width="8" height="8" /></bezel>   <!-- U1 09 -->
814      <bezel name="lamp10" element="Lamp_White"><bounds x="480" y="375" width="8" height="8" /></bezel>   <!-- U1 10 -->
815      <bezel name="lamp11" element="Lamp_White"><bounds x="495" y="375" width="8" height="8" /></bezel>   <!-- U1 11 -->
816      <bezel name="lamp12" element="Lamp_White"><bounds x="510" y="375" width="8" height="8" /></bezel>   <!-- U1 12 -->
817      <bezel name="lamp13" element="Lamp_White"><bounds x="525" y="375" width="8" height="8" /></bezel>   <!-- U1 13 -->
818      <bezel name="lamp14" element="Lamp_White"><bounds x="540" y="375" width="8" height="8" /></bezel>   <!-- U1 14 -->
819
820      <!-- Lamps controlled by U2 on Lamp Driver Board -->
821      <bezel name="lamp15" element="Lamp_White"><bounds x="330" y="390" width="8" height="8" /></bezel>   <!-- U2 00 -->
822      <bezel name="lamp16" element="Lamp_White"><bounds x="345" y="390" width="8" height="8" /></bezel>   <!-- U2 01 -->
823      <bezel name="lamp17" element="Lamp_White"><bounds x="360" y="390" width="8" height="8" /></bezel>   <!-- U2 02 -->
824      <bezel name="lamp18" element="Lamp_White"><bounds x="375" y="390" width="8" height="8" /></bezel>   <!-- U2 03 -->
825      <bezel name="lamp19" element="Lamp_White"><bounds x="390" y="390" width="8" height="8" /></bezel>   <!-- U2 04 -->
826      <bezel name="lamp20" element="Lamp_White"><bounds x="405" y="390" width="8" height="8" /></bezel>   <!-- U2 05 -->
827      <bezel name="lamp21" element="Lamp_White"><bounds x="420" y="390" width="8" height="8" /></bezel>   <!-- U2 06 -->
828      <bezel name="lamp22" element="Lamp_White"><bounds x="435" y="390" width="8" height="8" /></bezel>   <!-- U2 07 -->
829      <bezel name="lamp23" element="Lamp_White"><bounds x="450" y="390" width="8" height="8" /></bezel>   <!-- U2 08 -->
830      <bezel name="lamp24" element="Lamp_White"><bounds x="465" y="390" width="8" height="8" /></bezel>   <!-- U2 09 -->
831      <bezel name="lamp25" element="Lamp_White"><bounds x="480" y="390" width="8" height="8" /></bezel>   <!-- U2 10 -->
832      <bezel name="lamp26" element="Lamp_White"><bounds x="495" y="390" width="8" height="8" /></bezel>   <!-- U2 11 -->
833      <bezel name="lamp27" element="Lamp_White"><bounds x="510" y="390" width="8" height="8" /></bezel>   <!-- U2 12 -->
834      <bezel name="lamp28" element="Lamp_White"><bounds x="525" y="390" width="8" height="8" /></bezel>   <!-- U2 13 -->
835      <bezel name="lamp29" element="Lamp_White"><bounds x="540" y="390" width="8" height="8" /></bezel>   <!-- U2 14 -->
836
837      <!-- Lamps controlled by U3 on Lamp Driver Board -->
838      <bezel name="lamp30" element="Lamp_White"><bounds x="330" y="405" width="8" height="8" /></bezel>   <!-- U3 00 -->
839      <bezel name="lamp31" element="Lamp_White"><bounds x="345" y="405" width="8" height="8" /></bezel>   <!-- U3 01 -->
840      <bezel name="lamp32" element="Lamp_White"><bounds x="360" y="405" width="8" height="8" /></bezel>   <!-- U3 02 -->
841      <bezel name="lamp33" element="Lamp_White"><bounds x="375" y="405" width="8" height="8" /></bezel>   <!-- U3 03 -->
842      <bezel name="lamp34" element="Lamp_White"><bounds x="390" y="405" width="8" height="8" /></bezel>   <!-- U3 04 -->
843      <bezel name="lamp35" element="Lamp_White"><bounds x="405" y="405" width="8" height="8" /></bezel>   <!-- U3 05 -->
844      <bezel name="lamp36" element="Lamp_White"><bounds x="420" y="405" width="8" height="8" /></bezel>   <!-- U3 06 -->
845      <bezel name="lamp37" element="Lamp_White"><bounds x="435" y="405" width="8" height="8" /></bezel>   <!-- U3 07 -->
846      <bezel name="lamp38" element="Lamp_White"><bounds x="450" y="405" width="8" height="8" /></bezel>   <!-- U3 08 -->
847      <bezel name="lamp39" element="Lamp_White"><bounds x="465" y="405" width="8" height="8" /></bezel>   <!-- U3 09 -->
848      <bezel name="lamp40" element="Lamp_White"><bounds x="480" y="405" width="8" height="8" /></bezel>   <!-- U3 10 -->
849      <bezel name="lamp41" element="Lamp_White"><bounds x="495" y="405" width="8" height="8" /></bezel>   <!-- U3 11 -->
850      <bezel name="lamp42" element="Lamp_White"><bounds x="510" y="405" width="8" height="8" /></bezel>   <!-- U3 12 -->
851      <bezel name="lamp43" element="Lamp_White"><bounds x="525" y="405" width="8" height="8" /></bezel>   <!-- U3 13 -->
852      <bezel name="lamp44" element="Lamp_White"><bounds x="540" y="405" width="8" height="8" /></bezel>   <!-- U3 14 -->
853
854      <!-- Lamps controlled by U4 on Lamp Driver Board -->
855      <bezel name="lamp45" element="Lamp_White"><bounds x="330" y="420" width="8" height="8" /></bezel>   <!-- U4 00 -->
856      <bezel name="lamp46" element="Lamp_White"><bounds x="345" y="420" width="8" height="8" /></bezel>   <!-- U4 01 -->
857      <bezel name="lamp47" element="Lamp_White"><bounds x="360" y="420" width="8" height="8" /></bezel>   <!-- U4 02 -->
858      <bezel name="lamp48" element="Lamp_White"><bounds x="375" y="420" width="8" height="8" /></bezel>   <!-- U4 03 -->
859      <bezel name="lamp49" element="Lamp_White"><bounds x="390" y="420" width="8" height="8" /></bezel>   <!-- U4 04 -->
860      <bezel name="lamp50" element="Lamp_White"><bounds x="405" y="420" width="8" height="8" /></bezel>   <!-- U4 05 -->
861      <bezel name="lamp51" element="Lamp_White"><bounds x="420" y="420" width="8" height="8" /></bezel>   <!-- U4 06 -->
862      <bezel name="lamp52" element="Lamp_White"><bounds x="435" y="420" width="8" height="8" /></bezel>   <!-- U4 07 -->
863      <bezel name="lamp53" element="Lamp_White"><bounds x="450" y="420" width="8" height="8" /></bezel>   <!-- U4 08 -->
864      <bezel name="lamp54" element="Lamp_White"><bounds x="465" y="420" width="8" height="8" /></bezel>   <!-- U4 09 -->
865      <bezel name="lamp55" element="Lamp_White"><bounds x="480" y="420" width="8" height="8" /></bezel>   <!-- U4 10 -->
866      <bezel name="lamp56" element="Lamp_White"><bounds x="495" y="420" width="8" height="8" /></bezel>   <!-- U4 11 -->
867      <bezel name="lamp57" element="Lamp_White"><bounds x="510" y="420" width="8" height="8" /></bezel>   <!-- U4 12 -->
868      <bezel name="lamp58" element="Lamp_White"><bounds x="525" y="420" width="8" height="8" /></bezel>   <!-- U4 13 -->
869      <bezel name="lamp59" element="Lamp_White"><bounds x="540" y="420" width="8" height="8" /></bezel>   <!-- U4 14 -->
870
871
872      <bezel element="Text_Solenoids"><bounds x="382" y="437" width="100" height="11" /></bezel>
873      <bezel name="solenoid0"  element="Solenoid_PullDown"><bounds x="330" y="452" width="9" height="19" /></bezel>
874      <bezel name="solenoid1"  element="Solenoid_PullDown"><bounds x="345" y="452" width="9" height="19" /></bezel>
875      <bezel name="solenoid2"  element="Solenoid_PullDown"><bounds x="360" y="452" width="9" height="19" /></bezel>
876      <bezel name="solenoid3"  element="Solenoid_PullDown"><bounds x="375" y="452" width="9" height="19" /></bezel>
877      <bezel name="solenoid4"  element="Solenoid_PullDown"><bounds x="390" y="452" width="9" height="19" /></bezel>
878      <bezel name="solenoid5"  element="Solenoid_PullDown"><bounds x="405" y="452" width="9" height="19" /></bezel>
879      <bezel name="solenoid6"  element="Solenoid_PullDown"><bounds x="420" y="452" width="9" height="19" /></bezel>
880      <bezel name="solenoid7"  element="Solenoid_PullDown"><bounds x="435" y="452" width="9" height="19" /></bezel>
881      <bezel name="solenoid8"  element="Solenoid_PullDown"><bounds x="450" y="452" width="9" height="19" /></bezel>
882      <bezel name="solenoid9"  element="Solenoid_PullDown"><bounds x="465" y="452" width="9" height="19" /></bezel>
883      <bezel name="solenoid10" element="Solenoid_PullDown"><bounds x="480" y="452" width="9" height="19" /></bezel>
884      <bezel name="solenoid11" element="Solenoid_PullDown"><bounds x="495" y="452" width="9" height="19" /></bezel>
885      <bezel name="solenoid12" element="Solenoid_PullDown"><bounds x="510" y="452" width="9" height="19" /></bezel>
886      <bezel name="solenoid13" element="Solenoid_PullDown"><bounds x="525" y="452" width="9" height="19" /></bezel>
887      <bezel name="solenoid14" element="Solenoid_PullDown"><bounds x="540" y="452" width="9" height="19" /></bezel>
888
889      <bezel element="Text_Coils"><bounds x="572" y="437" width="50" height="11" /></bezel>
890      <bezel name="solenoid16" element="Coil_PullDown"><bounds x="570" y="459" width="09" height="12" /></bezel>
891      <bezel name="solenoid17" element="Coil_PullDown"><bounds x="585" y="459" width="09" height="12" /></bezel>
892      <bezel name="solenoid18" element="Coil_PullDown"><bounds x="600" y="459" width="09" height="12" /></bezel>
893      <bezel name="solenoid19" element="Coil_PullDown"><bounds x="615" y="459" width="09" height="12" /></bezel>
894
895
896
897      <!-- Cabinet Switches -->
898      <bezel element="Text_Service">                                       <bounds x="485" y="342" width="50" height="10" /></bezel>
899      <bezel element="Switch_Push-Button" inputtag="TEST" inputmask="0x01"><bounds x="495" y="331" width="20" height="10" /></bezel>
900      <bezel element="Key_9">                                              <bounds x="516" y="330" width="10" height="10" /></bezel>
901
902      <bezel element="Text_Slam">                                     <bounds x="430" y="342" width="50" height="10" /></bezel>
903      <bezel element="Switch_SlamTilt" inputtag="X1" inputmask="0x80"><bounds x="434" y="331" width="25" height="08" /></bezel>
904      <bezel element="Key_Equals">                                    <bounds x="461" y="330" width="10" height="10" /></bezel>
905
906      <bezel element="Text_Tilt">                                 <bounds x="380" y="342" width="50" height="10" /></bezel>
907      <bezel element="Switch_Tilt" inputtag="X0" inputmask="0x40"><bounds x="390" y="324" width="17" height="17" /></bezel>
908      <bezel element="Key_T">                                     <bounds x="411" y="330" width="10" height="10" /></bezel>
909
910
911      <!-- Misc Solenoids -->
912      <bezel name="solenoid5"  element="Solenoid_Knocker"><bounds x="336" y="321" width="09" height="22" /></bezel>
913      <bezel element="Text_Knocker">   <!-- Knocker -->   <bounds x="322" y="342" width="40" height="10" /></bezel>
914
915
916      <!-- Misc Lamps -->
917      <bezel name="lamp55" element="Credit_Indicator"><bounds x="23" y="456" width="70" height="21" /></bezel>   <!-- Credit Indicator -->
918
919      <bezel name="lamp52" element="Lamp_White_50k"><bounds x="009" y="322" width="09" height="09" /></bezel>      <!-- 50,000 Outlane Left -->
920      <bezel name="lamp37" element="Lamp_White_50k"><bounds x="301" y="322" width="09" height="09" /></bezel>      <!-- 50,000 Outlane Right -->
921      <!-- Bonus End of Ball Lamps -->
922      <bezel name="lamp0"  element="Lamp_White_1k"> <bounds x="155" y="413" width="09" height="09" /></bezel>      <!-- Bonus 1000 -->
923      <bezel name="lamp15" element="Lamp_White_2k"> <bounds x="155" y="400" width="09" height="09" /></bezel>      <!-- Bonus 2000 -->
924      <bezel name="lamp30" element="Lamp_White_3k"> <bounds x="155" y="387" width="09" height="09" /></bezel>      <!-- Bonus 3000 -->
925      <bezel name="lamp45" element="Lamp_White_4k"> <bounds x="155" y="374" width="09" height="09" /></bezel>      <!-- Bonus 4000 -->
926      <bezel name="lamp1"  element="Lamp_White_5k"> <bounds x="155" y="361" width="09" height="09" /></bezel>      <!-- Bonus 5000 -->
927      <bezel name="lamp16" element="Lamp_White_6k"> <bounds x="155" y="348" width="09" height="09" /></bezel>      <!-- Bonus 6000 -->
928      <bezel name="lamp31" element="Lamp_White_7k"> <bounds x="155" y="335" width="09" height="09" /></bezel>      <!-- Bonus 7000 -->
929      <bezel name="lamp46" element="Lamp_White_8k"> <bounds x="155" y="322" width="09" height="09" /></bezel>      <!-- Bonus 8000 -->
930      <bezel name="lamp2"  element="Lamp_White_9k"> <bounds x="155" y="309" width="09" height="09" /></bezel>      <!-- Bonus 9000 -->
931      <bezel name="lamp17" element="Lamp_White_10k"><bounds x="140" y="292" width="12" height="12" /></bezel>      <!-- Bonus 10000 -->
932      <bezel name="lamp32" element="Lamp_White_20k"><bounds x="167" y="292" width="12" height="12" /></bezel>      <!-- Bonus 20000 -->
933      <!-- Bonus Multiplier Lamps -->
934      <bezel name="lamp56" element="Lamp_Green_Arrow_04_2x"> <bounds x="111" y="317" width="20" height="12.5" /></bezel>      <!-- 2X Bonus -->
935      <bezel name="lamp41" element="Lamp_Yellow_Arrow_04_3x"><bounds x="111" y="337" width="20" height="12.5" /></bezel>      <!-- 3X Bonus -->
936      <bezel name="lamp26" element="Lamp_White_Arrow_08_5x"> <bounds x="188" y="317" width="20" height="12.5" /></bezel>      <!-- 5X Bonus -->
937      <bezel name="lamp40" element="Lamp_Amber_Arrow_08">    <bounds x="188" y="337" width="20" height="12.5" /></bezel>      <!-- Extra Ball -->
938
939      <!-- Saucer Lamps -->
940      <bezel name="lamp24" element="Lamp_White_Arrow_Up_5x"> <bounds x="154" y="102" width="11" height="22" /></bezel>   <!-- 5X Bonus Potential -->
941      <bezel name="lamp39" element="Lamp_Yellow_Arrow_Up_3x"><bounds x="154" y="128" width="11" height="22" /></bezel>   <!-- 3X Bonus Potential -->
942      <bezel name="lamp54" element="Lamp_Green_Arrow_Up_2x"> <bounds x="154" y="154" width="11" height="22" /></bezel>   <!-- 2X Bonus Potential -->
943      <bezel               element="Lamp_White_Arrow_Up_3k"> <bounds x="154" y="180" width="11" height="22" /></bezel>   <!-- Upper 3000 -->
944
945      <!-- "A" & "B" Potential Lamps -->
946      <bezel name="lamp5"  element="Lamp_White_1k"><bounds x="095" y="265" width="10" height="10" /></bezel>      <!-- Upper 1000 -->
947      <bezel name="lamp20" element="Lamp_White_2k"><bounds x="115" y="265" width="10" height="10" /></bezel>      <!-- Upper 2000 -->
948      <bezel name="lamp35" element="Lamp_White_3k"><bounds x="135" y="265" width="10" height="10" /></bezel>      <!-- Upper 3000 -->
949      <bezel name="lamp50" element="Lamp_White_4k"><bounds x="155" y="265" width="10" height="10" /></bezel>      <!-- Upper 4000 -->
950      <bezel name="lamp6"  element="Lamp_White_5k"><bounds x="175" y="265" width="10" height="10" /></bezel>      <!-- Upper 5000 -->
951      <bezel name="lamp21" element="Lamp_Amber">   <bounds x="195" y="265" width="10" height="10" /></bezel>      <!-- Extra Ball Potential -->
952      <bezel name="lamp36" element="Lamp_Red">     <bounds x="215" y="265" width="10" height="10" /></bezel>      <!-- Special Potential -->
953
954      <!-- Drop Target Lamps -->
955      <bezel name="lamp47" element="Lamp_Red"><bounds x="153" y="225" width="14" height="14" /></bezel>         <!-- Special Potential -->
956
957      <!-- Outhole -->
958      <bezel name="solenoid6"  element="Solenoid_Outhole">                        <bounds x="150" y="455" width="58" height="22" /></bezel>
959      <bezel element="Switch_RollOn_WireForm_Left" inputtag="X0" inputmask="0x80"><bounds x="163" y="453" width="20" height="16" /></bezel>
960      <bezel element="Key_BSpace">                                                <bounds x="185" y="455" width="15" height="14" /></bezel>
961
962
963      <!-- Pop Bumper Left Upper -->
964      <bezel name="solenoid8"  element="Solenoid_Bumper_Yellow_Star">           <bounds x="084" y="095" width="80" height="80" /></bezel>
965      <bezel element="Switch_Bumper_Yellow_Star" inputtag="X4" inputmask="0x80"><bounds x="084" y="095" width="80" height="80" /></bezel>
966      <bezel element="Lamp_Bumper_Silver_100">                                  <bounds x="084" y="095" width="80" height="80" /></bezel>
967      <bezel element="Key_Z">                                                   <bounds x="119" y="144" width="09" height="09" /></bezel>
968
969      <!-- Pop Bumper Right Upper -->
970      <bezel name="solenoid9"  element="Solenoid_Bumper_Yellow_Star">           <bounds x="157" y="095" width="80" height="80" /></bezel>
971      <bezel element="Switch_Bumper_Yellow_Star" inputtag="X4" inputmask="0x40"><bounds x="157" y="095" width="80" height="80" /></bezel>
972      <bezel element="Lamp_Bumper_Silver_100">                                  <bounds x="157" y="095" width="80" height="80" /></bezel>
973      <bezel element="Key_X">                                                   <bounds x="191" y="144" width="09" height="09" /></bezel>
974
975      <!-- Pop Bumper Left Bottom -->
976      <bezel name="solenoid7"  element="Solenoid_Bumper_Red_Star">           <bounds x="039" y="136" width="80" height="80" /></bezel>
977      <bezel element="Switch_Bumper_Red_Star" inputtag="X4" inputmask="0x20"><bounds x="039" y="136" width="80" height="80" /></bezel>
978      <bezel name="lamp53" element="Lamp_Bumper_Silver_1000">                <bounds x="039" y="136" width="80" height="80" /></bezel>
979      <bezel element="Key_C">                                                <bounds x="073" y="140" width="09" height="09" /></bezel>
980
981      <!-- Pop Bumper Right Bottom -->
982      <bezel name="solenoid10" element="Solenoid_Bumper_Red_Star">           <bounds x="202" y="136" width="80" height="80" /></bezel>
983      <bezel element="Switch_Bumper_Red_Star" inputtag="X4" inputmask="0x10"><bounds x="202" y="136" width="80" height="80" /></bezel>
984      <bezel name="lamp38" element="Lamp_Bumper_Silver_1000">                <bounds x="202" y="136" width="80" height="80" /></bezel>
985      <bezel element="Key_V">                                                <bounds x="236" y="140" width="09" height="09" /></bezel>
986
987      <!-- Slingshot Left -->
988      <bezel name="solenoid11" element="Solenoid_SlingShot_Left">          <bounds x="035" y="320" width="69" height="80" /></bezel>
989      <bezel element="Switch_Leaf_Vertical" inputtag="X4" inputmask="0x08"><bounds x="060" y="384" width="08" height="09" /></bezel>
990      <bezel element="Key_B">                                              <bounds x="060" y="375" width="09" height="09" /></bezel>
991
992      <!-- Slingshot Right -->
993      <bezel name="solenoid13" element="Solenoid_SlingShot_Right">         <bounds x="221" y="320" width="69" height="80" /></bezel>
994      <bezel element="Switch_Leaf_Vertical" inputtag="X4" inputmask="0x04"><bounds x="257" y="384" width="08" height="09" /></bezel>
995      <bezel element="Key_N">                                              <bounds x="257" y="375" width="09" height="09" /></bezel>
996
997
998      <!-- Saucer -->
999      <bezel name="solenoid0"  element="Solenoid_Saucer_Large">           <bounds x="141" y="40" width="35" height="35" /></bezel>
1000      <bezel element="Switch_Saucer_Large" inputtag="X3" inputmask="0x80"><bounds x="141" y="40" width="35" height="35" /></bezel>
1001      <bezel element="Key_Q">                                             <bounds x="155" y="28" width="09" height="09" /></bezel>
1002
1003
1004      <!-- Drop Targets Leftside -->
1005      <bezel name="solenoid12" element="Solenoid_DropTarget_Wide">    <bounds x="093" y="184" width="15" height="07" /></bezel>
1006      <bezel element="DropTarget_Wide" inputtag="X2" inputmask="0x80"><bounds x="093" y="184" width="15" height="07" /></bezel>
1007      <bezel element="Key_A">                                         <bounds x="108" y="188" width="09" height="09" /></bezel>
1008      <bezel name="solenoid12" element="Solenoid_DropTarget_Wide">    <bounds x="078" y="195" width="15" height="07" /></bezel>
1009      <bezel element="DropTarget_Wide" inputtag="X2" inputmask="0x40"><bounds x="078" y="195" width="15" height="07" /></bezel>
1010      <bezel element="Key_S">                                         <bounds x="093" y="199" width="09" height="09" /></bezel>
1011      <bezel name="solenoid12" element="Solenoid_DropTarget_Wide">    <bounds x="063" y="206" width="15" height="07" /></bezel>
1012      <bezel element="DropTarget_Wide" inputtag="X2" inputmask="0x20"><bounds x="063" y="206" width="15" height="07" /></bezel>
1013      <bezel element="Key_D">                                         <bounds x="078" y="210" width="09" height="09" /></bezel>
1014      <bezel name="solenoid12" element="Solenoid_DropTarget_Wide">    <bounds x="048" y="217" width="15" height="07" /></bezel>
1015      <bezel element="DropTarget_Wide" inputtag="X2" inputmask="0x10"><bounds x="048" y="217" width="15" height="07" /></bezel>
1016      <bezel element="Key_F">                                         <bounds x="063" y="221" width="09" height="09" /></bezel>
1017
1018      <!-- Drop Targets Rightside -->
1019      <bezel name="solenoid14" element="Solenoid_DropTarget_Wide">    <bounds x="213" y="184" width="15" height="07" /></bezel>
1020      <bezel element="DropTarget_Wide" inputtag="X2" inputmask="0x08"><bounds x="213" y="184" width="15" height="07" /></bezel>
1021      <bezel element="Key_G">                                         <bounds x="205" y="188" width="09" height="09" /></bezel>
1022      <bezel name="solenoid14" element="Solenoid_DropTarget_Wide">    <bounds x="228" y="195" width="15" height="07" /></bezel>
1023      <bezel element="DropTarget_Wide" inputtag="X2" inputmask="0x04"><bounds x="228" y="195" width="15" height="07" /></bezel>
1024      <bezel element="Key_H">                                         <bounds x="220" y="199" width="09" height="09" /></bezel>
1025      <bezel name="solenoid14" element="Solenoid_DropTarget_Wide">    <bounds x="243" y="206" width="15" height="07" /></bezel>
1026      <bezel element="DropTarget_Wide" inputtag="X2" inputmask="0x02"><bounds x="243" y="206" width="15" height="07" /></bezel>
1027      <bezel element="Key_J">                                         <bounds x="235" y="210" width="09" height="09" /></bezel>
1028      <bezel name="solenoid14" element="Solenoid_DropTarget_Wide">    <bounds x="258" y="217" width="15" height="07" /></bezel>
1029      <bezel element="DropTarget_Wide" inputtag="X2" inputmask="0x01"><bounds x="258" y="217" width="15" height="07" /></bezel>
1030      <bezel element="Key_K">                                         <bounds x="250" y="221" width="09" height="09" /></bezel>
1031
1032      <!-- Drop Target Area Rebound switches -->
1033      <bezel element="Switch_Leaf_Vertical" inputtag="X3" inputmask="0x04"><bounds x="252" y="190" width="08" height="09" /></bezel>
1034      <bezel element="Key_U">                                              <bounds x="264" y="190" width="09" height="09" /></bezel>
1035      <bezel element="Switch_Leaf_Vertical" inputtag="X3" inputmask="0x04"><bounds x="061" y="190" width="08" height="09" /></bezel>
1036      <bezel element="Key_U">                                              <bounds x="050" y="190" width="09" height="09" /></bezel>
1037
1038
1039      <!-- A & B Upper Lanes -->
1040      <bezel name="lamp48" element="Lamp_White_A">                                      <bounds x="098" y="033" width="14" height="14" /></bezel>
1041      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X3" inputmask="0x40"><bounds x="100" y="060" width="09" height="27" /></bezel>
1042      <bezel element="Key_W">                                                           <bounds x="100" y="090" width="09" height="09" /></bezel>
1043      <bezel name="lamp33" element="Lamp_White_B">                                      <bounds x="206" y="033" width="14" height="14" /></bezel>
1044      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X3" inputmask="0x20"><bounds x="208" y="060" width="09" height="27" /></bezel>
1045      <bezel element="Key_E">                                                           <bounds x="208" y="090" width="09" height="09" /></bezel>
1046
1047      <!-- A & B Side Lanes -->
1048      <bezel name="lamp48" element="Lamp_White_Arrow_11_A">   <!-- 11 o clock -->       <bounds x="020" y="240" width="12.5" height="20" /></bezel>
1049      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X3" inputmask="0x10"><bounds x="009" y="150" width="09" height="27" /></bezel>
1050      <bezel element="Key_R">                                                           <bounds x="009" y="180" width="09" height="09" /></bezel>
1051      <bezel name="lamp33" element="Lamp_White_Arrow_01_B">   <!-- 1 o clock -->        <bounds x="286" y="240" width="12.5" height="20" /></bezel>
1052      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X3" inputmask="0x08"><bounds x="301" y="150" width="09" height="27" /></bezel>
1053      <bezel element="Key_Y">                                                           <bounds x="301" y="180" width="09" height="09" /></bezel>
1054
1055
1056      <!-- Outlane switches / lamps -->
1057      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X4" inputmask="0x02"><bounds x="009" y="346" width="09" height="27" /></bezel>
1058      <bezel element="Key_M">                                                           <bounds x="009" y="376" width="09" height="09" /></bezel>
1059      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X4" inputmask="0x01"><bounds x="301" y="346" width="09" height="27" /></bezel>
1060      <bezel element="Key_Comma">                                                       <bounds x="301" y="376" width="09" height="09" /></bezel>
1061
1062      <!-- Flipper Return Lane switches -->
1063      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X3" inputmask="0x02"><bounds x="030" y="348" width="09" height="27" /></bezel>
1064      <bezel element="Key_I">                                                           <bounds x="030" y="378" width="09" height="09" /></bezel>
1065      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X3" inputmask="0x01"><bounds x="280" y="348" width="09" height="27" /></bezel>
1066      <bezel element="Key_O">                                                           <bounds x="280" y="378" width="09" height="09" /></bezel>
1067
1068   </view>
1069
1070</mamelayout>
trunk/src/mame/layout/by17_pwerplay.lay
r249889r249890
1<!-- Pinball Machine, Bally ~ PowerPlay -->
2<!-- [Quench] September 2015 -->
3
4
5<!-- Any state="9" items are not displayed and are only used for object alignment -->
6
7<mamelayout version="2">
8
9   <element name="Title_PowerPlay"><text string="PowerPlay"><color red="1.00" green="0.0" blue="0.5" /></text></element>
10
11
12
13<!-- Switches -->
14
15   <element name="Switch_SlamTilt">
16      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="00" width="25" height="01" /></rect>
17      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="08" width="13" height="01.5" /></rect>
18      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="01" width="04" height="02" /></rect>
19      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="06" width="04" height="02" /></rect>
20
21      <rect state="0"><color red="0.70" green="0.70" blue="0.70" /><bounds x="19" y="01" width="06" height="04" /></rect>
22      <rect state="1"><color red="0.70" green="0.70" blue="0.70" /><bounds x="19" y="04" width="06" height="04" /></rect>
23
24      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="00" width="08" height="01" /></rect>
25      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="08" y="01" width="08" height="01" /></rect>
26      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="16" y="02" width="09" height="01" /></rect>
27
28
29      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="08"  width="13" height="01.5" /></rect>
30      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="03"  width="04" height="02" /></rect>
31      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="06"  width="04" height="02" /></rect>
32   </element>
33
34   <element name="Switch_Tilt">
35      <rect          ><color red="0.80" green="0.80" blue="0.00" /><bounds x="00" y="00" width="17" height="17" /></rect>
36      <disk          ><color red="0.00" green="0.00" blue="0.00" /><bounds x="01" y="01" width="15" height="15" /></disk>
37      <disk state="0"><color red="0.50" green="0.50" blue="0.50" /><bounds x="04" y="04" width="09" height="09" /></disk>
38      <disk state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="07" width="02" height="02" /></disk>
39
40      <disk state="1"><color red="0.50" green="0.50" blue="0.50" /><bounds x="07" y="04" width="09" height="09" /></disk>
41      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="11" y="07" width="02" height="02" /></disk>
42   </element>
43
44
45   <element name="Switch_Leaf_Vertical">
46      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="0" y="00" width="01"   height="06" /></rect>
47      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="8" y="00" width="01.5" height="06" /></rect>
48      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="1" y="01" width="02"   height="04" /></rect>
49      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="6" y="01" width="02"   height="04" /></rect>
50
51      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="1.5" y="00" width="01" height="06" /></rect>
52      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="6.5" y="00" width="01" height="06" /></rect>
53      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="2"   y="01" width="02" height="04" /></rect>
54      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="4.5" y="01" width="02" height="04" /></rect>
55   </element>
56
57   <element name="Switch_RollOn_WireForm_Left">
58      <text string=">" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="8" y="0" width="11"  height="11"  /></text>
59      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="0.1" height="04"  /></rect>
60      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="09"  height="0.1" /></rect>
61      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="8" width="09"  height="0.1" /></rect>
62      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="3" y="6" width="08"  height="0.1" /></rect>
63      <text string=">" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="8" y="0" width="11"  height="11"  /></text>
64      <rect            state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="0.1" height="04"  /></rect>
65      <rect            state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="09"  height="0.1" /></rect>
66      <rect            state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="8" width="09"  height="0.1" /></rect>
67   </element>
68
69   <element name="Switch_RollOver_WireForm_Vertical">
70      <text string="/\" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="00" width="07"  height="10" /></text>
71      <text string="\/" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="17" width="07"  height="10" /></text>
72      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="09" width="0.1" height="09" /></rect>
73      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="5" y="09" width="0.1" height="09" /></rect>
74      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="3" y="07" width="0.1" height="13" /></rect>
75      <text string="/\" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="00" width="07"  height="10" /></text>
76      <text string="\/" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="17" width="07"  height="10" /></text>
77      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="09" width="0.1" height="09" /></rect>
78      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="5" y="09" width="0.1" height="09" /></rect>
79   </element>
80
81   <element name="Switch_Target_Red_Forward" defstate="0">
82      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="00" width="10" height="01" /></rect>
83      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="00" width="01" height="05" /></rect>
84      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="16" y="00" width="01" height="05" /></rect>
85
86      <disk state="0"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="05" width="24" height="06" /></disk>
87      <disk state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="02" width="24" height="06" /></disk>
88   </element>
89
90   <element name="Switch_RollOver_Button">
91      <text string="*" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="-10" y="-6" width="35" height="35" /></text>
92      <text string="*" state="1"><color red="0.00" green="0.00" blue="0.00" /><bounds x="-10" y="-6" width="35" height="35" /></text>
93   </element>
94
95   <element name="Lamp_RollOver_Button" defstate="0">
96      <disk state="0"><color red="0.15" green="0.04" blue="0.00" /><bounds x="0" y="0" width="15" height="15" /></disk>
97      <disk state="1"><color red="1.00" green="0.30" blue="0.00" /><bounds x="0" y="0" width="15" height="15" /></disk>
98   </element>
99
100   <element name="Lamp_RollOver_Button_On">
101      <disk><color red="1.00" green="0.30" blue="0.00" /><bounds x="0" y="0" width="15" height="15" /></disk>
102   </element>
103
104
105   <element name="Switch_Push-Button" defstate="0">
106      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="04" width="16" height="01" /></rect>
107      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="00" width="01" height="04" /></rect>
108      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="17" y="00" width="01" height="04" /></rect>
109      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="00" width="05" height="01" /></rect>
110      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="08.5" width="16" height="01" /></rect>
111      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="04.5" width="01" height="04" /></rect>
112      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="17" y="04.5" width="01" height="04" /></rect>
113      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="04.5" width="05" height="01" /></rect>
114      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="12" width="09" height="01" /></rect>
115      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="21" y="12" width="09" height="01" /></rect>
116      <disk          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="10" width="06" height="06" /></disk>
117      <disk          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="18" y="10" width="06" height="06" /></disk>
118   </element>
119
120
121
122   <element name="Key_Z">     <text string="Z"><color red="1.00" green="0.66" blue="0.66" /></text></element>
123   <element name="Key_X">     <text string="X"><color red="1.00" green="0.66" blue="0.66" /></text></element>
124   <element name="Key_C">     <text string="C"><color red="1.00" green="0.66" blue="0.66" /></text></element>
125   <element name="Key_V">     <text string="V"><color red="1.00" green="0.66" blue="0.66" /></text></element>
126   <element name="Key_B">     <text string="B"><color red="1.00" green="0.66" blue="0.66" /></text></element>
127   <element name="Key_N">     <text string="N"><color red="1.00" green="0.66" blue="0.66" /></text></element>
128   <element name="Key_M">     <text string="M"><color red="1.00" green="0.66" blue="0.66" /></text></element>
129   <element name="Key_Comma"> <text string=","><color red="1.00" green="0.66" blue="0.66" /></text></element>
130   <element name="Key_Dot">   <text string="."><color red="1.00" green="0.66" blue="0.66" /></text></element>
131   <element name="Key_FSlash"><text string="/"><color red="1.00" green="0.66" blue="0.66" /></text></element>
132
133   <element name="Key_A">     <text string="A"><color red="1.00" green="0.66" blue="0.66" /></text></element>
134   <element name="Key_S">     <text string="S"><color red="1.00" green="0.66" blue="0.66" /></text></element>
135   <element name="Key_D">     <text string="D"><color red="1.00" green="0.66" blue="0.66" /></text></element>
136   <element name="Key_F">     <text string="F"><color red="1.00" green="0.66" blue="0.66" /></text></element>
137   <element name="Key_G">     <text string="G"><color red="1.00" green="0.66" blue="0.66" /></text></element>
138   <element name="Key_H">     <text string="H"><color red="1.00" green="0.66" blue="0.66" /></text></element>
139   <element name="Key_J">     <text string="J"><color red="1.00" green="0.66" blue="0.66" /></text></element>
140   <element name="Key_K">     <text string="K"><color red="1.00" green="0.66" blue="0.66" /></text></element>
141   <element name="Key_L">     <text string="L"><color red="1.00" green="0.66" blue="0.66" /></text></element>
142   <element name="Key_SColon"><text string=";"><color red="1.00" green="0.66" blue="0.66" /></text></element>
143   <element name="Key_Quote"> <text string="'"><color red="1.00" green="0.66" blue="0.66" /></text></element>
144   <element name="Key_Enter">
145      <text string="&#60;"><color red="1.00" green="0.66" blue="0.66" /><bounds x="00" y="00" width="07"  height="10" /></text>
146      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="00" y="00" width="07"  height="10" /></text>
147      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="02" y="00" width="07"  height="10" /></text>
148      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="04" y="00" width="07"  height="10" /></text>
149      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="06" y="00" width="07"  height="10" /></text>
150      <disk           >    <color red="1.00" green="0.66" blue="0.66" /><bounds x="10" y="02" width="0.5" height="03" /></disk>
151   </element>
152
153   <element name="Key_Q">     <text string="Q"><color red="1.00" green="0.66" blue="0.66" /></text></element>
154   <element name="Key_W">     <text string="W"><color red="1.00" green="0.66" blue="0.66" /></text></element>
155   <element name="Key_E">     <text string="E"><color red="1.00" green="0.66" blue="0.66" /></text></element>
156   <element name="Key_R">     <text string="R"><color red="1.00" green="0.66" blue="0.66" /></text></element>
157   <element name="Key_T">     <text string="T"><color red="1.00" green="0.66" blue="0.66" /></text></element>
158   <element name="Key_Y">     <text string="Y"><color red="1.00" green="0.66" blue="0.66" /></text></element>
159   <element name="Key_U">     <text string="U"><color red="1.00" green="0.66" blue="0.66" /></text></element>
160   <element name="Key_I">     <text string="I"><color red="1.00" green="0.66" blue="0.66" /></text></element>
161   <element name="Key_O">     <text string="O"><color red="1.00" green="0.66" blue="0.66" /></text></element>
162   <element name="Key_P">     <text string="P"><color red="1.00" green="0.66" blue="0.66" /></text></element>
163   <element name="Key_OBrkt"> <text string="["><color red="1.00" green="0.66" blue="0.66" /></text></element>
164   <element name="Key_CBrkt"> <text string="]"><color red="1.00" green="0.66" blue="0.66" /></text></element>
165   <element name="Key_BSlash"><text string="\"><color red="1.00" green="0.66" blue="0.66" /></text></element>
166
167   <element name="Key_1">     <text string="1"><color red="1.00" green="0.66" blue="0.66" /></text></element>
168   <element name="Key_5">     <text string="5"><color red="1.00" green="0.66" blue="0.66" /></text></element>
169   <element name="Key_6">     <text string="6"><color red="1.00" green="0.66" blue="0.66" /></text></element>
170   <element name="Key_7">     <text string="7"><color red="1.00" green="0.66" blue="0.66" /></text></element>
171   <element name="Key_9">     <text string="9"><color red="1.00" green="0.66" blue="0.66" /></text></element>
172   <element name="Key_0">     <text string="0"><color red="1.00" green="0.66" blue="0.66" /></text></element>
173   <element name="Key_BSpace">
174      <text string="&#60;"><color red="1.00" green="0.66" blue="0.66" /><bounds x="0" y="00" width="07" height="10" /></text>
175      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="0" y="00" width="07" height="10" /></text>
176      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="2" y="00" width="07" height="10" /></text>
177      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="4" y="00" width="07" height="10" /></text>
178      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="6" y="00" width="07" height="10" /></text>
179   </element>
180   <element name="Key_Equals"><text string="="><color red="1.00" green="0.66" blue="0.66" /></text></element>
181
182
183
184   <element name="Solenoid_DropTarget_Tall" defstate="0">
185      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="00" width="07" height="15" /></rect>
186      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="01" y="01" width="04" height="12" /></rect>
187   </element>
188   <element name="DropTarget_Tall" defstate="0">
189      <rect state="1"><color red="0.25" green="0.25" blue="0.25" /><bounds x="01" y="01" width="04" height="12" /></rect>
190      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="01" y="01" width="04" height="12" /></rect>
191      <rect state="9"><color red="0.00" green="1.00" blue="0.00" /><bounds x="00" y="00" width="07" height="15" /></rect>
192   </element>
193
194
195<!-- Lamps -->
196
197   <element name="Lamp_White" defstate="0">
198      <disk state="0"><color red="0.15" green="0.15" blue="0.15" /></disk>
199      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
200   </element>
201   <element name="Lamp_Red" defstate="0">                              <!-- Usually for Specials -->
202      <disk state="0"><color red="0.15" green="0.00" blue="0.00" /></disk>
203      <disk state="1"><color red="1.00" green="0.00" blue="0.00" /></disk>
204   </element>
205   <element name="Lamp_Amber" defstate="0">                           <!-- Usually for Extra Ball-->
206      <disk state="0"><color red="0.15" green="0.06" blue="0.00" /></disk>
207      <disk state="1"><color red="1.00" green="0.40" blue="0.00" /></disk>
208   </element>
209
210
211   <element name="Lamp_P1">
212      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
213      <text string="1" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
214      <text string="1" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
215   </element>
216   <element name="Lamp_P2">
217      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
218      <text string="2" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
219      <text string="2" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
220   </element>
221   <element name="Lamp_P3">
222      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
223      <text string="3" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
224      <text string="3" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
225   </element>
226   <element name="Lamp_P4">
227      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
228      <text string="4" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
229      <text string="4" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
230   </element>
231
232   <element name="Lamp_1P">
233      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
234      <text string="1" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
235      <text string="1" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
236   </element>
237   <element name="Lamp_2P">
238      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
239      <text string="2" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
240      <text string="2" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
241   </element>
242   <element name="Lamp_3P">
243      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
244      <text string="3" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
245      <text string="3" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
246   </element>
247   <element name="Lamp_4P">
248      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
249      <text string="4" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
250      <text string="4" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
251   </element>
252
253
254   <element name="Lamp_2x" defstate="0">
255      <disk state="0"><color red="0.0" green="0.15" blue="0.0" /></disk>
256      <disk state="1"><color red="0.0" green="1.00" blue="0.0" /></disk>
257      <text string="2x"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
258   </element>
259   <element name="Lamp_3x" defstate="0">
260      <disk state="0"><color red="0.15" green="0.15" blue="0.0" /></disk>
261      <disk state="1"><color red="1.00" green="1.00" blue="0.0" /></disk>
262      <text string="3x"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
263   </element>
264   <element name="Lamp_5x" defstate="0">
265      <disk state="0"><color red="0.15" green="0.15" blue="0.15" /></disk>
266      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
267      <text string="5x"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
268   </element>
269
270
271   <element name="Lamp_White_1k">
272      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
273      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
274      <text string="1k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
275   </element>
276   <element name="Lamp_White_2k">
277      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
278      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
279      <text string="2k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
280   </element>
281   <element name="Lamp_White_3k">
282      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
283      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
284      <text string="3k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
285   </element>
286   <element name="Lamp_White_4k">
287      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
288      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
289      <text string="4k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
290   </element>
291   <element name="Lamp_White_5k">
292      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
293      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
294      <text string="5k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
295   </element>
296   <element name="Lamp_White_6k">
297      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
298      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
299      <text string="6k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
300   </element>
301   <element name="Lamp_White_7k">
302      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
303      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
304      <text string="7k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
305   </element>
306   <element name="Lamp_White_8k">
307      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
308      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
309      <text string="8k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
310   </element>
311   <element name="Lamp_White_9k">
312      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
313      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
314      <text string="9k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
315   </element>
316   <element name="Lamp_White_10k">
317      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
318      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
319      <text string="10k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
320   </element>
321   <element name="Lamp_White_12k">
322      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
323      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
324      <text string="12k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
325   </element>
326   <element name="Lamp_White_15k">
327      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
328      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
329      <text string="15k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
330   </element>
331   <element name="Lamp_White_20k">
332      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
333      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
334      <text string="20k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
335   </element>
336
337
338   <element name="Credit_Indicator">
339      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="2.5" y="0" width="1.0" height="1.0" /></disk>
340      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="2.5" y="0" width="1.0" height="1.0" /></disk>
341      <text string="Credit Indicator"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="1.1" width="6.5" height="0.90" /></text>
342   </element>
343
344
345<!-- Backbox Indicators -->
346
347   <element name="Text_Credit"><text string="CREDIT"><color red="1.0" green="1.0" blue="1.0" /></text></element>
348   <element name="Text_Lamps"><text string="Lamps"><color red="1.0" green="1.0" blue="1.0" /></text></element>
349   <element name="Text_15"><text string="U1 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
350   <element name="Text_30"><text string="U2 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
351   <element name="Text_45"><text string="U3 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
352   <element name="Text_60"><text string="U4 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
353   <element name="Text_Solenoids"><text string="Momentary Solenoids"><color red="1.0" green="1.0" blue="1.0" /></text></element>
354   <element name="Text_Coils"><text string="Coils"><color red="1.0" green="1.0" blue="1.0" /></text></element>
355   <element name="Text_MPU_LED"><text string="MPU LED"><color red="1.0" green="1.0" blue="1.0" /></text></element>
356   <element name="Text_Activity"><text string="Activity Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
357   <element name="Text_Service"><text string="Service Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
358   <element name="Text_Slam"><text string="Slam Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
359   <element name="Text_Tilt"><text string="Tilt Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
360   <element name="Text_Knocker"><text string="Knocker"><color red="1.0" green="1.0" blue="1.0" /></text></element>
361
362
363   <element name="High_Score_To_Date" defstate="0">
364      <text string="HIGH SCORE TO DATE" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="1" /></text>
365      <text string="HIGH SCORE TO DATE" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="1" /></text>
366   </element>
367   <element name="Ball_In_Play" defstate="0">
368      <text string="BALL IN PLAY" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.1" y="0.1" width="1" height="0.8" /></text>
369      <text string="BALL IN PLAY" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0.1" y="0.1" width="1" height="0.8" /></text>
370   </element>
371   <element name="Match" defstate="0">
372      <text string="MATCH" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
373      <text string="MATCH" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
374   </element>
375   <element name="Game_Over" defstate="0">
376      <text string="GAME OVER" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
377      <text string="GAME OVER" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
378   </element>
379   <element name="Tilt" defstate="0">
380      <text string="TILT" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
381      <text string="TILT" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
382   </element>
383   <element name="Shoot_Again" defstate="0">
384      <text string="SAME PLAYER"  state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
385      <text string="SAME PLAYER"  state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
386      <text string="SHOOTS AGAIN" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.9" width="1" height="0.8" /></text>
387      <text string="SHOOTS AGAIN" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.9" width="1" height="0.8" /></text>
388   </element>
389
390
391   <element name="Digit" defstate="0">
392      <led7seg><color red="1.0" green="0.35" blue="0.0" /></led7seg>
393   </element>
394
395   <element name="LED_Green" defstate="1">
396      <disk state="0"><color red="0.0" green="0.25" blue="0.0" /></disk>
397      <disk state="1"><color red="0.0" green="1.00" blue="0.0" /></disk>
398   </element>
399
400
401
402<!-- Solenoids -->
403
404   <element name="Solenoid_PullDown">
405      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="3" y="0" width="03" height="09" /></rect>
406      <rect state="0"><color red="0.0" green="1.0" blue="1.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
407      <rect state="1"><color red="1.0" green="1.0" blue="0.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
408   </element>
409
410   <element name="Coil_PullDown">
411      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="8" y="0" width="02" height="01" /></rect>
412      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="6" y="1" width="02" height="01" /></rect>
413      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="4" y="2" width="02" height="01" /></rect>
414      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="2" y="3" width="02" height="01" /></rect>
415      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="4" width="02" height="01" /></rect>
416      <rect          ><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="5" width="02" height="02" /></rect>
417      <rect state="1"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="4" width="10" height="01" /></rect>
418
419      <rect state="0"><color red="0.0" green="1.0" blue="1.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
420      <rect state="1"><color red="1.0" green="1.0" blue="0.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
421   </element>
422
423
424   <element name="Solenoid_Knocker" defstate="0">
425      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="03" y="14" width="03" height="08" /></rect>
426      <rect state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="03" y="00" width="03" height="04" /></rect>
427      <rect state="0"><color red="0.0" green="1.0" blue="1.0" /><bounds x="00" y="04" width="10" height="11" /></rect>
428      <rect state="1"><color red="1.0" green="1.0" blue="0.0" /><bounds x="00" y="04" width="10" height="11" /></rect>
429   </element>
430
431   <element name="Solenoid_Outhole" defstate="0">
432      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="17" y="00" width="05" height="16" /></text>
433      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="02" y="00" width="05" height="16" /></text>
434      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="18" y="00" width="05" height="16" /></text>
435      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="03" y="00" width="05" height="16" /></text>
436      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="19" y="00" width="05" height="16" /></text>
437      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="04" y="00" width="05" height="16" /></text>
438      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="20" y="00" width="05" height="16" /></text>
439      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="05" y="00" width="05" height="16" /></text>
440      <rect            state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="02" y="02" width="18" height="10" /></rect>
441      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="00" y="14" width="25" height="02" /></rect>
442      <text string="Outhole"    ><color red="1.0" green="1.0" blue="1.0" /><bounds x="30" y="12" width="28" height="9.5" /></text>
443   </element>
444
445   <element name="Solenoid_SlingShot_Left" defstate="0">
446      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="05" y="00" width="65"   height="80" /></text>
447      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="00" y="00" width="65"   height="80" /></text>
448      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="20" y="16" width="04"   height="60" /></rect>
449      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="20" y="76" width="24.5" height="04" /></rect>
450   </element>
451   <element name="Solenoid_SlingShot_Right" defstate="0">
452      <text string="/" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="-5"   y="00" width="65" height="80" /></text>
453      <text string="/" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="00"   y="00" width="65" height="80" /></text>
454      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="40"   y="16" width="04" height="60" /></rect>
455      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="19.5" y="76" width="24" height="04" /></rect>
456   </element>
457
458
459   <element name="Solenoid_Bumper_Red_Star" defstate="0">
460      <disk state="0"> <color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
461      <disk state="1"> <color red="1.0" green="0.0" blue="0.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
462      <text string="*"><color red="1.0" green="0.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
463      <disk>           <color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
464   </element>
465   <element name="Switch_Bumper_Red_Star" defstate="0">
466      <text string="*" state="9"><color red="1.0" green="0.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
467      <disk            state="0"><color red="1.0" green="0.0" blue="0.0" /><bounds x="14" y="15" width="50" height="50" /></disk>
468      <disk            state="1"><color red="0.5" green="0.5" blue="0.5" /><bounds x="14" y="15" width="50" height="50" /></disk>
469   </element>
470   <element name="Lamp_Bumper_Red_1000" defstate="0">
471      <text string="*" state="9"><color red="0.0" green="0.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
472      <disk            state="0"><color red="0.7" green="0.7" blue="0.7" /><bounds x="18" y="18" width="44" height="44" /></disk>
473      <disk            state="1"><color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
474      <text string="1000">       <color red="1.0" green="0.0" blue="0.0" /><bounds x="07" y="29" width="70" height="23" /></text>
475   </element>
476
477
478   <element name="Solenoid_Saucer" defstate="0">
479      <disk>          <color red="1.0" green="0.8" blue="0.5" /><bounds x="00" y="00" width="70" height="70" /></disk> <!-- 71 -->
480      <disk>          <color red="0.7" green="0.7" blue="0.7" /><bounds x="10" y="10" width="49" height="49" /></disk> <!-- 51 -->
481      <rect state="0"><color red="0.3" green="0.3" blue="0.3" /><bounds x="31" y="07" width="07" height="25" /></rect>
482      <rect state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="31" y="07" width="07" height="25" /></rect>
483      <disk>          <color red="0.0" green="0.0" blue="0.0" /><bounds x="27" y="40" width="15" height="15" /></disk>
484   </element>
485   <element name="Switch_Saucer" defstate="0">
486      <disk state="9"><color red="1.0" green="0.8" blue="0.5" /><bounds x="00" y="00" width="70" height="70" /></disk>
487      <disk state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="30" y="43" width="09" height="09" /></disk>
488      <disk state="1"><color red="0.0" green="0.0" blue="0.0" /><bounds x="30" y="43" width="09" height="09" /></disk>
489   </element>
490
491
492   <element name="Coil_Post_Up" defstate="0">
493      <disk state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="00" y="00" width="21" height="21" /></disk>
494   </element>
495   <element name="Solenoid_Post_Down" defstate="0">
496      <disk state="9"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="00" width="21" height="21" /></disk>
497      <disk state="1"><color red="0.50" green="0.10" blue="0.00" /><bounds x="01" y="01" width="19" height="19" /></disk>
498      <disk state="1"><color red="0.15" green="0.06" blue="0.00" /><bounds x="02" y="02" width="17" height="17" /></disk>
499      <rect state="1"><color red="0.50" green="0.10" blue="0.00" /><bounds x="10" y="02" width="01" height="17" /></rect>
500      <rect state="1"><color red="0.50" green="0.10" blue="0.00" /><bounds x="02" y="10" width="17" height="01" /></rect>
501      <disk state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="08" y="08" width="06" height="06" /></disk>
502   </element>
503   <element name="Lamp_Post" defstate="0">
504      <disk state="9"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="00" width="21" height="21" /></disk>
505      <disk          ><color red="0.50" green="0.10" blue="0.00" /><bounds x="01" y="01" width="19" height="19" /></disk>
506      <disk state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="02" y="02" width="17" height="17" /></disk>
507      <disk state="1"><color red="0.80" green="0.20" blue="0.00" /><bounds x="02" y="02" width="17" height="17" /></disk>
508      <rect          ><color red="0.50" green="0.10" blue="0.00" /><bounds x="10" y="02" width="01" height="17" /></rect>
509      <rect          ><color red="0.50" green="0.10" blue="0.00" /><bounds x="02" y="10" width="17" height="01" /></rect>
510   </element>
511
512
513<!-- Line colours -->
514
515   <element name="Draw_White" defstate="1">
516      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
517      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
518   </element>
519   <element name="Draw_Red" defstate="1">
520      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
521      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
522   </element>
523   <element name="Draw_Amber" defstate="1">
524      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
525      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
526   </element>
527
528   <element name="Canvas">
529      <rect>
530         <color red="0.0" green="0.0" blue="0.0" />
531         <bounds left="0" top="0" right="1" bottom="1" />
532      </rect>
533   </element>
534
535
536
537
538
539   <view name="PowerPlay Playfield">
540
541      <!-- Background -->
542      <backdrop element="Canvas"><bounds x="000" y="000" width="640" height="480" /></backdrop>
543     
544      <bezel element="Draw_White"><bounds x="000" y="000" width="640" height="001" /></bezel>
545      <bezel element="Draw_White"><bounds x="000" y="000" width="001" height="480" /></bezel>
546      <bezel element="Draw_White"><bounds x="640" y="000" width="001" height="480" /></bezel>
547      <bezel element="Draw_White"><bounds x="000" y="480" width="640" height="001" /></bezel>
548      <bezel element="Draw_White"><bounds x="320" y="000" width="001" height="480" /></bezel>
549      <bezel element="Draw_White"><bounds x="320" y="320" width="320" height="001" /></bezel>
550      <!--   <bezel element="Draw_White"><bounds x="159" y="000" width="001" height="480" /></bezel>   -->
551
552      <bezel element="Title_PowerPlay"><bounds x="430" y="18" width="105" height="30" /></bezel>
553
554
555      <!-- Backbox -->
556
557      <!-- MPU Board Power On Self Test LED -->
558      <bezel element="Text_MPU_LED">         <bounds x="609" y="342" width="30" height="10" /></bezel>
559      <bezel name="led0" element="LED_Green"><bounds x="618" y="328" width="10" height="10" /></bezel>
560
561      <!-- MPU Board Activity Switch -->
562      <bezel element="Text_Activity">                                      <bounds x="540" y="342" width="50" height="10" /></bezel>
563      <bezel element="Switch_Push-Button" inputtag="TEST" inputmask="0x02"><bounds x="550" y="331" width="20" height="10" /></bezel>
564      <bezel element="Key_0">                                              <bounds x="571" y="330" width="10" height="10" /></bezel>
565
566
567      <!-- Player 1 Score -->
568      <bezel name="lamp14" element="Lamp_P1"><bounds x="330" y="55" width="15" height="15" /></bezel>         <!-- Backbox ~ 1st Player Up -->
569      <bezel name="digit17" element="Digit"><bounds x="360" y="55" width="10" height="15" /></bezel>
570      <bezel name="digit16" element="Digit"><bounds x="374" y="55" width="10" height="15" /></bezel>
571      <bezel name="digit15" element="Digit"><bounds x="388" y="55" width="10" height="15" /></bezel>
572      <bezel name="digit14" element="Digit"><bounds x="402" y="55" width="10" height="15" /></bezel>
573      <bezel name="digit13" element="Digit"><bounds x="416" y="55" width="10" height="15" /></bezel>
574      <bezel name="digit12" element="Digit"><bounds x="430" y="55" width="10" height="15" /></bezel>
575      <bezel name="digit11" element="Digit"><bounds x="444" y="55" width="10" height="15" /></bezel>
576
577      <!-- Player 2 Score -->
578      <bezel name="lamp29" element="Lamp_P2"><bounds x="615" y="55" width="15" height="15" /></bezel>         <!-- Backbox ~ 2nd Player Up -->
579      <bezel name="digit27" element="Digit"><bounds x="506" y="55" width="10" height="15" /></bezel>
580      <bezel name="digit26" element="Digit"><bounds x="520" y="55" width="10" height="15" /></bezel>
581      <bezel name="digit25" element="Digit"><bounds x="534" y="55" width="10" height="15" /></bezel>
582      <bezel name="digit24" element="Digit"><bounds x="548" y="55" width="10" height="15" /></bezel>
583      <bezel name="digit23" element="Digit"><bounds x="562" y="55" width="10" height="15" /></bezel>
584      <bezel name="digit22" element="Digit"><bounds x="576" y="55" width="10" height="15" /></bezel>
585      <bezel name="digit21" element="Digit"><bounds x="590" y="55" width="10" height="15" /></bezel>
586
587      <!-- Player 3 Score -->
588      <bezel name="lamp44" element="Lamp_P3"><bounds x="330" y="250" width="15" height="15" /></bezel>      <!-- Backbox ~ 3rd Player Up -->
589      <bezel name="digit37" element="Digit"><bounds x="360" y="250" width="10" height="15" /></bezel>
590      <bezel name="digit36" element="Digit"><bounds x="374" y="250" width="10" height="15" /></bezel>
591      <bezel name="digit35" element="Digit"><bounds x="388" y="250" width="10" height="15" /></bezel>
592      <bezel name="digit34" element="Digit"><bounds x="402" y="250" width="10" height="15" /></bezel>
593      <bezel name="digit33" element="Digit"><bounds x="416" y="250" width="10" height="15" /></bezel>
594      <bezel name="digit32" element="Digit"><bounds x="430" y="250" width="10" height="15" /></bezel>
595      <bezel name="digit31" element="Digit"><bounds x="444" y="250" width="10" height="15" /></bezel>
596
597      <!-- Player 4 Score -->
598      <bezel name="lamp59" element="Lamp_P4"><bounds x="615" y="250" width="15" height="15" /></bezel>      <!-- Backbox ~ 4th Player Up -->
599      <bezel name="digit47" element="Digit"><bounds x="506" y="250" width="10" height="15" /></bezel>
600      <bezel name="digit46" element="Digit"><bounds x="520" y="250" width="10" height="15" /></bezel>
601      <bezel name="digit45" element="Digit"><bounds x="534" y="250" width="10" height="15" /></bezel>
602      <bezel name="digit44" element="Digit"><bounds x="548" y="250" width="10" height="15" /></bezel>
603      <bezel name="digit43" element="Digit"><bounds x="562" y="250" width="10" height="15" /></bezel>
604      <bezel name="digit42" element="Digit"><bounds x="576" y="250" width="10" height="15" /></bezel>
605      <bezel name="digit41" element="Digit"><bounds x="590" y="250" width="10" height="15" /></bezel>
606
607      <!-- Credits and Ball In Play / Match -->
608      <bezel element="Text_Credit"><bounds x="542" y="142" width="48" height="8" /></bezel>
609      <bezel name="lamp12"  element="Ball_In_Play"><bounds x="586" y="105" width="50" height="11" /></bezel>   <!-- Backbox ~ Ball In Play -->
610      <bezel name="lamp25"  element="Match"><bounds x="596" y="152" width="25" height="11" /></bezel>         <!-- Backbox ~ Match -->
611      <bezel name="digit55" element="Digit"><bounds x="554" y="125" width="10" height="15" /></bezel>
612      <bezel name="digit54" element="Digit"><bounds x="568" y="125" width="10" height="15" /></bezel>
613      <bezel name="digit52" element="Digit"><bounds x="596" y="125" width="10" height="15" /></bezel>
614      <bezel name="digit51" element="Digit"><bounds x="610" y="125" width="10" height="15" /></bezel>
615
616      <bezel name="lamp10" element="Shoot_Again"><bounds x="420" y="295" width="60" height="19" /></bezel>   <!-- Backbox ~ Same Player Shoots Again -->
617      <bezel name="lamp13" element="Lamp_1P"><bounds x="345" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 1 Player Game -->
618      <bezel name="lamp28" element="Lamp_2P"><bounds x="360" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 2 Player Game -->
619      <bezel name="lamp43" element="Lamp_3P"><bounds x="375" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 3 Player Game -->
620      <bezel name="lamp58" element="Lamp_4P"><bounds x="390" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 4 Player Game -->
621      <bezel name="lamp27" element="High_Score_To_Date"><bounds x="438" y="6" width="90" height="11" /></bezel>   <!-- Backbox ~ High Score To Date -->
622      <bezel name="lamp42" element="Game_Over"><bounds x="580" y="300" width="45" height="11" /></bezel>      <!-- Backbox ~ Game Over -->
623      <bezel name="lamp57" element="Tilt"><bounds x="480" y="297" width="50" height="16" /></bezel>         <!-- Backbox ~ Tilt -->
624
625
626
627      <bezel element="Text_Lamps"><bounds x="410" y="360" width="60" height="11" /></bezel>
628      <bezel element="Text_15"><bounds x="552" y="373" width="30" height="11" /></bezel>
629      <bezel element="Text_30"><bounds x="552" y="388" width="30" height="11" /></bezel>
630      <bezel element="Text_45"><bounds x="552" y="403" width="30" height="11" /></bezel>
631      <bezel element="Text_60"><bounds x="552" y="418" width="30" height="11" /></bezel>
632
633      <!-- Lamps controlled by U1 on Lamp Driver Board -->
634      <bezel name="lamp0"  element="Lamp_White"><bounds x="330" y="375" width="8" height="8" /></bezel>
635      <bezel name="lamp1"  element="Lamp_White"><bounds x="345" y="375" width="8" height="8" /></bezel>
636      <bezel name="lamp2"  element="Lamp_White"><bounds x="360" y="375" width="8" height="8" /></bezel>
637      <bezel name="lamp3"  element="Lamp_White"><bounds x="375" y="375" width="8" height="8" /></bezel>
638      <bezel name="lamp4"  element="Lamp_White"><bounds x="390" y="375" width="8" height="8" /></bezel>
639      <bezel name="lamp5"  element="Lamp_White"><bounds x="405" y="375" width="8" height="8" /></bezel>
640      <bezel name="lamp6"  element="Lamp_White"><bounds x="420" y="375" width="8" height="8" /></bezel>
641      <bezel name="lamp7"  element="Lamp_White"><bounds x="435" y="375" width="8" height="8" /></bezel>
642      <bezel name="lamp8"  element="Lamp_White"><bounds x="450" y="375" width="8" height="8" /></bezel>
643      <bezel name="lamp9"  element="Lamp_White"><bounds x="465" y="375" width="8" height="8" /></bezel>
644      <bezel name="lamp10" element="Lamp_White"><bounds x="480" y="375" width="8" height="8" /></bezel>
645      <bezel name="lamp11" element="Lamp_White"><bounds x="495" y="375" width="8" height="8" /></bezel>
646      <bezel name="lamp12" element="Lamp_White"><bounds x="510" y="375" width="8" height="8" /></bezel>
647      <bezel name="lamp13" element="Lamp_White"><bounds x="525" y="375" width="8" height="8" /></bezel>
648      <bezel name="lamp14" element="Lamp_White"><bounds x="540" y="375" width="8" height="8" /></bezel>
649
650      <!-- Lamps controlled by U2 on Lamp Driver Board -->
651      <bezel name="lamp15" element="Lamp_White"><bounds x="330" y="390" width="8" height="8" /></bezel>
652      <bezel name="lamp16" element="Lamp_White"><bounds x="345" y="390" width="8" height="8" /></bezel>
653      <bezel name="lamp17" element="Lamp_White"><bounds x="360" y="390" width="8" height="8" /></bezel>
654      <bezel name="lamp18" element="Lamp_White"><bounds x="375" y="390" width="8" height="8" /></bezel>
655      <bezel name="lamp19" element="Lamp_White"><bounds x="390" y="390" width="8" height="8" /></bezel>
656      <bezel name="lamp20" element="Lamp_White"><bounds x="405" y="390" width="8" height="8" /></bezel>
657      <bezel name="lamp21" element="Lamp_White"><bounds x="420" y="390" width="8" height="8" /></bezel>
658      <bezel name="lamp22" element="Lamp_White"><bounds x="435" y="390" width="8" height="8" /></bezel>
659      <bezel name="lamp23" element="Lamp_White"><bounds x="450" y="390" width="8" height="8" /></bezel>
660      <bezel name="lamp24" element="Lamp_White"><bounds x="465" y="390" width="8" height="8" /></bezel>
661      <bezel name="lamp25" element="Lamp_White"><bounds x="480" y="390" width="8" height="8" /></bezel>
662      <bezel name="lamp26" element="Lamp_White"><bounds x="495" y="390" width="8" height="8" /></bezel>
663      <bezel name="lamp27" element="Lamp_White"><bounds x="510" y="390" width="8" height="8" /></bezel>
664      <bezel name="lamp28" element="Lamp_White"><bounds x="525" y="390" width="8" height="8" /></bezel>
665      <bezel name="lamp29" element="Lamp_White"><bounds x="540" y="390" width="8" height="8" /></bezel>
666
667      <!-- Lamps controlled by U3 on Lamp Driver Board -->
668      <bezel name="lamp30" element="Lamp_White"><bounds x="330" y="405" width="8" height="8" /></bezel>
669      <bezel name="lamp31" element="Lamp_White"><bounds x="345" y="405" width="8" height="8" /></bezel>
670      <bezel name="lamp32" element="Lamp_White"><bounds x="360" y="405" width="8" height="8" /></bezel>
671      <bezel name="lamp33" element="Lamp_White"><bounds x="375" y="405" width="8" height="8" /></bezel>
672      <bezel name="lamp34" element="Lamp_White"><bounds x="390" y="405" width="8" height="8" /></bezel>
673      <bezel name="lamp35" element="Lamp_White"><bounds x="405" y="405" width="8" height="8" /></bezel>
674      <bezel name="lamp36" element="Lamp_White"><bounds x="420" y="405" width="8" height="8" /></bezel>
675      <bezel name="lamp37" element="Lamp_White"><bounds x="435" y="405" width="8" height="8" /></bezel>
676      <bezel name="lamp38" element="Lamp_White"><bounds x="450" y="405" width="8" height="8" /></bezel>
677      <bezel name="lamp39" element="Lamp_White"><bounds x="465" y="405" width="8" height="8" /></bezel>
678      <bezel name="lamp40" element="Lamp_White"><bounds x="480" y="405" width="8" height="8" /></bezel>
679      <bezel name="lamp41" element="Lamp_White"><bounds x="495" y="405" width="8" height="8" /></bezel>
680      <bezel name="lamp42" element="Lamp_White"><bounds x="510" y="405" width="8" height="8" /></bezel>
681      <bezel name="lamp43" element="Lamp_White"><bounds x="525" y="405" width="8" height="8" /></bezel>
682      <bezel name="lamp44" element="Lamp_White"><bounds x="540" y="405" width="8" height="8" /></bezel>
683
684      <!-- Lamps controlled by U4 on Lamp Driver Board -->
685      <bezel name="lamp45" element="Lamp_White"><bounds x="330" y="420" width="8" height="8" /></bezel>
686      <bezel name="lamp46" element="Lamp_White"><bounds x="345" y="420" width="8" height="8" /></bezel>
687      <bezel name="lamp47" element="Lamp_White"><bounds x="360" y="420" width="8" height="8" /></bezel>
688      <bezel name="lamp48" element="Lamp_White"><bounds x="375" y="420" width="8" height="8" /></bezel>
689      <bezel name="lamp49" element="Lamp_White"><bounds x="390" y="420" width="8" height="8" /></bezel>
690      <bezel name="lamp50" element="Lamp_White"><bounds x="405" y="420" width="8" height="8" /></bezel>
691      <bezel name="lamp51" element="Lamp_White"><bounds x="420" y="420" width="8" height="8" /></bezel>
692      <bezel name="lamp52" element="Lamp_White"><bounds x="435" y="420" width="8" height="8" /></bezel>
693      <bezel name="lamp53" element="Lamp_White"><bounds x="450" y="420" width="8" height="8" /></bezel>
694      <bezel name="lamp54" element="Lamp_White"><bounds x="465" y="420" width="8" height="8" /></bezel>
695      <bezel name="lamp55" element="Lamp_White"><bounds x="480" y="420" width="8" height="8" /></bezel>
696      <bezel name="lamp56" element="Lamp_White"><bounds x="495" y="420" width="8" height="8" /></bezel>
697      <bezel name="lamp57" element="Lamp_White"><bounds x="510" y="420" width="8" height="8" /></bezel>
698      <bezel name="lamp58" element="Lamp_White"><bounds x="525" y="420" width="8" height="8" /></bezel>
699      <bezel name="lamp59" element="Lamp_White"><bounds x="540" y="420" width="8" height="8" /></bezel>
700
701
702      <bezel element="Text_Solenoids"><bounds x="382" y="437" width="100" height="11" /></bezel>
703      <bezel name="solenoid0"  element="Solenoid_PullDown"><bounds x="330" y="452" width="9" height="19" /></bezel>
704      <bezel name="solenoid1"  element="Solenoid_PullDown"><bounds x="345" y="452" width="9" height="19" /></bezel>
705      <bezel name="solenoid2"  element="Solenoid_PullDown"><bounds x="360" y="452" width="9" height="19" /></bezel>
706      <bezel name="solenoid3"  element="Solenoid_PullDown"><bounds x="375" y="452" width="9" height="19" /></bezel>
707      <bezel name="solenoid4"  element="Solenoid_PullDown"><bounds x="390" y="452" width="9" height="19" /></bezel>
708      <bezel name="solenoid5"  element="Solenoid_PullDown"><bounds x="405" y="452" width="9" height="19" /></bezel>
709      <bezel name="solenoid6"  element="Solenoid_PullDown"><bounds x="420" y="452" width="9" height="19" /></bezel>
710      <bezel name="solenoid7"  element="Solenoid_PullDown"><bounds x="435" y="452" width="9" height="19" /></bezel>
711      <bezel name="solenoid8"  element="Solenoid_PullDown"><bounds x="450" y="452" width="9" height="19" /></bezel>
712      <bezel name="solenoid9"  element="Solenoid_PullDown"><bounds x="465" y="452" width="9" height="19" /></bezel>
713      <bezel name="solenoid10" element="Solenoid_PullDown"><bounds x="480" y="452" width="9" height="19" /></bezel>
714      <bezel name="solenoid11" element="Solenoid_PullDown"><bounds x="495" y="452" width="9" height="19" /></bezel>
715      <bezel name="solenoid12" element="Solenoid_PullDown"><bounds x="510" y="452" width="9" height="19" /></bezel>
716      <bezel name="solenoid13" element="Solenoid_PullDown"><bounds x="525" y="452" width="9" height="19" /></bezel>
717      <bezel name="solenoid14" element="Solenoid_PullDown"><bounds x="540" y="452" width="9" height="19" /></bezel>
718
719      <bezel element="Text_Coils"><bounds x="572" y="437" width="50" height="11" /></bezel>
720      <bezel name="solenoid16" element="Coil_PullDown"><bounds x="570" y="459" width="09" height="12" /></bezel>
721      <bezel name="solenoid17" element="Coil_PullDown"><bounds x="585" y="459" width="09" height="12" /></bezel>
722      <bezel name="solenoid18" element="Coil_PullDown"><bounds x="600" y="459" width="09" height="12" /></bezel>
723      <bezel name="solenoid19" element="Coil_PullDown"><bounds x="615" y="459" width="09" height="12" /></bezel>
724
725
726
727      <!-- Cabinet Switches -->
728      <bezel element="Text_Service">                                       <bounds x="485" y="342" width="50" height="10" /></bezel>
729      <bezel element="Switch_Push-Button" inputtag="TEST" inputmask="0x01"><bounds x="495" y="331" width="20" height="10" /></bezel>
730      <bezel element="Key_9">                                              <bounds x="516" y="330" width="10" height="10" /></bezel>
731
732      <bezel element="Text_Slam">                                     <bounds x="430" y="342" width="50" height="10" /></bezel>
733      <bezel element="Switch_SlamTilt" inputtag="X1" inputmask="0x80"><bounds x="434" y="331" width="25" height="08" /></bezel>
734      <bezel element="Key_Equals">                                    <bounds x="461" y="330" width="10" height="10" /></bezel>
735
736      <bezel element="Text_Tilt">                                 <bounds x="380" y="342" width="50" height="10" /></bezel>
737      <bezel element="Switch_Tilt" inputtag="X0" inputmask="0x40"><bounds x="390" y="324" width="17" height="17" /></bezel>
738      <bezel element="Key_T">                                     <bounds x="411" y="330" width="10" height="10" /></bezel>
739
740
741      <!-- Misc Solenoids -->
742      <bezel name="solenoid5"  element="Solenoid_Knocker"><bounds x="336" y="321" width="09" height="22" /></bezel>
743      <bezel element="Text_Knocker">   <!-- Knocker -->   <bounds x="322" y="342" width="40" height="10" /></bezel>
744
745
746      <!-- Misc Lamps -->
747      <bezel name="lamp55" element="Credit_Indicator"><bounds x="23" y="456" width="70" height="21" /></bezel><!-- Credit Indicator -->
748      <bezel name="lamp40" element="Lamp_Amber"><bounds x="100" y="330" width="13" height="13" /></bezel>      <!-- Extra Ball -->
749      <bezel name="lamp56" element="Lamp_Red">  <bounds x="009" y="318" width="09" height="09" /></bezel>      <!-- Special Outlane Left -->
750      <bezel name="lamp41" element="Lamp_Red">  <bounds x="301" y="318" width="09" height="09" /></bezel>      <!-- Special Outlane Right -->
751      <!-- Bonus End of Ball Lamps -->
752      <bezel name="lamp0"  element="Lamp_White_1k"> <bounds x="126" y="298" width="09" height="09" /></bezel>   <!-- Bonus 1000 -->
753      <bezel name="lamp15" element="Lamp_White_2k"> <bounds x="133" y="316" width="09" height="09" /></bezel>   <!-- Bonus 2000 -->
754      <bezel name="lamp30" element="Lamp_White_3k"> <bounds x="140" y="334" width="09" height="09" /></bezel>   <!-- Bonus 3000 -->
755      <bezel name="lamp45" element="Lamp_White_4k"> <bounds x="148" y="352" width="09" height="09" /></bezel>   <!-- Bonus 4000 -->
756      <bezel name="lamp1"  element="Lamp_White_5k"> <bounds x="155" y="370" width="09" height="09" /></bezel>   <!-- Bonus 5000 -->
757      <bezel name="lamp16" element="Lamp_White_6k"> <bounds x="162" y="352" width="09" height="09" /></bezel>   <!-- Bonus 6000 -->
758      <bezel name="lamp31" element="Lamp_White_7k"> <bounds x="170" y="334" width="09" height="09" /></bezel>   <!-- Bonus 7000 -->
759      <bezel name="lamp46" element="Lamp_White_8k"> <bounds x="177" y="316" width="09" height="09" /></bezel>   <!-- Bonus 8000 -->
760      <bezel name="lamp2"  element="Lamp_White_9k"> <bounds x="184" y="298" width="09" height="09" /></bezel>   <!-- Bonus 9000 -->
761      <bezel name="lamp17" element="Lamp_White_10k"><bounds x="154" y="320" width="12" height="12" /></bezel>   <!-- Bonus 10000 -->
762      <bezel name="lamp32" element="Lamp_White_20k"><bounds x="154" y="296" width="12" height="12" /></bezel>   <!-- Bonus 20000 -->
763      <!-- Bonus Multiplier Lamps -->
764      <bezel name="lamp53" element="Lamp_2x"><bounds x="135" y="392" width="10" height="10" /></bezel>      <!-- 2X Bonus -->
765      <bezel name="lamp38" element="Lamp_3x"><bounds x="155" y="390" width="10" height="10" /></bezel>      <!-- 3X Bonus -->
766      <bezel name="lamp23" element="Lamp_5x"><bounds x="175" y="392" width="10" height="10" /></bezel>      <!-- 5X Bonus -->
767      <!-- Drop Target Lamps -->
768      <bezel name="lamp4"  element="Lamp_2x">   <bounds x="125" y="198" width="10" height="10" /></bezel>      <!-- 2X Bonus Potential -->
769      <bezel name="lamp19" element="Lamp_3x">   <bounds x="140" y="198" width="10" height="10" /></bezel>      <!-- 3X Bonus Potential -->
770      <bezel name="lamp34" element="Lamp_5x">   <bounds x="155" y="198" width="10" height="10" /></bezel>      <!-- 5X Bonus Potential -->
771      <bezel name="lamp49" element="Lamp_Amber"><bounds x="170" y="198" width="10" height="10" /></bezel>      <!-- Extra Ball Potential -->
772      <bezel name="lamp5"  element="Lamp_Red">  <bounds x="185" y="198" width="10" height="10" /></bezel>      <!-- Special Potential -->
773      <!-- Saucer Lamps -->
774      <bezel name="lamp6"  element="Lamp_White_3k"> <bounds x="128" y="30" width="9" height="9" /></bezel>   <!-- Upper 3000 -->
775      <bezel name="lamp21" element="Lamp_White_6k"> <bounds x="142" y="42" width="9" height="9" /></bezel>   <!-- Upper 6000 -->
776      <bezel name="lamp36" element="Lamp_White_9k"> <bounds x="156" y="54" width="9" height="9" /></bezel>   <!-- Upper 9000 -->
777      <bezel name="lamp51" element="Lamp_White_12k"><bounds x="170" y="42" width="9" height="9" /></bezel>   <!-- Upper 12000 -->
778      <bezel name="lamp7"  element="Lamp_White_15k"><bounds x="184" y="30" width="9" height="9" /></bezel>   <!-- Upper 15000 -->
779
780
781
782      <!-- Outhole -->
783      <bezel name="solenoid6"  element="Solenoid_Outhole">                        <bounds x="150" y="455" width="58" height="22" /></bezel>
784      <bezel element="Switch_RollOn_WireForm_Left" inputtag="X0" inputmask="0x80"><bounds x="163" y="453" width="20" height="16" /></bezel>
785      <bezel element="Key_BSpace">                                                <bounds x="185" y="455" width="15" height="14" /></bezel>
786
787
788      <!-- Pop Bumper Left -->
789      <bezel name="solenoid8"  element="Solenoid_Bumper_Red_Star">           <bounds x="064" y="090" width="80" height="80" /></bezel>
790      <bezel element="Switch_Bumper_Red_Star" inputtag="X4" inputmask="0x80"><bounds x="064" y="090" width="80" height="80" /></bezel>
791      <bezel name="lamp39" element="Lamp_Bumper_Red_1000">                   <bounds x="064" y="090" width="80" height="80" /></bezel>
792      <bezel element="Key_Z">                                                <bounds x="121" y="116" width="09" height="09" /></bezel>
793
794      <!-- Pop Bumper Right -->
795      <bezel name="solenoid9"  element="Solenoid_Bumper_Red_Star">           <bounds x="177" y="090" width="80" height="80" /></bezel>
796      <bezel element="Switch_Bumper_Red_Star" inputtag="X4" inputmask="0x40"><bounds x="177" y="090" width="80" height="80" /></bezel>
797      <bezel name="lamp39" element="Lamp_Bumper_Red_1000">                   <bounds x="177" y="090" width="80" height="80" /></bezel>
798      <bezel element="Key_X">                                                <bounds x="188" y="116" width="09" height="09" /></bezel>
799
800      <!-- Pop Bumper Middle -->
801      <bezel name="solenoid10" element="Solenoid_Bumper_Red_Star">           <bounds x="121" y="123" width="80" height="80" /></bezel>
802      <bezel element="Switch_Bumper_Red_Star" inputtag="X4" inputmask="0x20"><bounds x="121" y="123" width="80" height="80" /></bezel>
803      <bezel name="lamp54" element="Lamp_Bumper_Red_1000">                   <bounds x="121" y="123" width="80" height="80" /></bezel>
804      <bezel element="Key_C">                                                <bounds x="156" y="128" width="09" height="09" /></bezel>
805
806
807      <!-- Slingshot Left -->
808      <bezel name="solenoid11" element="Solenoid_SlingShot_Left">          <bounds x="035" y="320" width="69" height="80" /></bezel>
809      <bezel element="Switch_Leaf_Vertical" inputtag="X4" inputmask="0x10"><bounds x="060" y="384" width="08" height="09" /></bezel>
810      <bezel element="Key_V">                                              <bounds x="060" y="375" width="09" height="09" /></bezel>
811
812      <!-- Slingshot Right -->
813      <bezel name="solenoid13" element="Solenoid_SlingShot_Right">         <bounds x="221" y="320" width="69" height="80" /></bezel>
814      <bezel element="Switch_Leaf_Vertical" inputtag="X4" inputmask="0x08"><bounds x="257" y="384" width="08" height="09" /></bezel>
815      <bezel element="Key_B">                                              <bounds x="257" y="375" width="09" height="09" /></bezel>
816
817
818      <!-- Saucer -->
819      <bezel name="solenoid7"  element="Solenoid_Saucer">           <bounds x="149" y="67" width="23" height="23" /></bezel>
820      <bezel element="Switch_Saucer" inputtag="X3" inputmask="0x80"><bounds x="149" y="67" width="23" height="23" /></bezel>
821      <bezel element="Key_Q">                                       <bounds x="156" y="91" width="09" height="09" /></bezel>
822
823
824      <!-- Drop Targets Leftside -->
825      <bezel name="solenoid12" element="Solenoid_DropTarget_Tall">    <bounds x="090" y="166" width="07" height="15" /></bezel>
826      <bezel element="DropTarget_Tall" inputtag="X2" inputmask="0x80"><bounds x="090" y="166" width="07" height="15" /></bezel>
827      <bezel element="Key_A">                                         <bounds x="098" y="169" width="09" height="09" /></bezel>
828      <bezel name="solenoid12" element="Solenoid_DropTarget_Tall">    <bounds x="084" y="181" width="07" height="15" /></bezel>
829      <bezel element="DropTarget_Tall" inputtag="X2" inputmask="0x40"><bounds x="084" y="181" width="07" height="15" /></bezel>
830      <bezel element="Key_S">                                         <bounds x="092" y="184" width="09" height="09" /></bezel>
831      <bezel name="solenoid12" element="Solenoid_DropTarget_Tall">    <bounds x="078" y="196" width="07" height="15" /></bezel>
832      <bezel element="DropTarget_Tall" inputtag="X2" inputmask="0x20"><bounds x="078" y="196" width="07" height="15" /></bezel>
833      <bezel element="Key_D">                                         <bounds x="086" y="199" width="09" height="09" /></bezel>
834      <bezel name="solenoid12" element="Solenoid_DropTarget_Tall">    <bounds x="072" y="211" width="07" height="15" /></bezel>
835      <bezel element="DropTarget_Tall" inputtag="X2" inputmask="0x10"><bounds x="072" y="211" width="07" height="15" /></bezel>
836      <bezel element="Key_F">                                         <bounds x="080" y="214" width="09" height="09" /></bezel>
837
838      <!-- Drop Targets Rightside -->
839      <bezel name="solenoid14" element="Solenoid_DropTarget_Tall">    <bounds x="222" y="166" width="07" height="15" /></bezel>
840      <bezel element="DropTarget_Tall" inputtag="X2" inputmask="0x08"><bounds x="222" y="166" width="07" height="15" /></bezel>
841      <bezel element="Key_G">                                         <bounds x="214" y="169" width="09" height="09" /></bezel>
842      <bezel name="solenoid14" element="Solenoid_DropTarget_Tall">    <bounds x="228" y="181" width="07" height="15" /></bezel>
843      <bezel element="DropTarget_Tall" inputtag="X2" inputmask="0x04"><bounds x="228" y="181" width="07" height="15" /></bezel>
844      <bezel element="Key_H">                                         <bounds x="220" y="184" width="09" height="09" /></bezel>
845      <bezel name="solenoid14" element="Solenoid_DropTarget_Tall">    <bounds x="234" y="196" width="07" height="15" /></bezel>
846      <bezel element="DropTarget_Tall" inputtag="X2" inputmask="0x02"><bounds x="234" y="196" width="07" height="15" /></bezel>
847      <bezel element="Key_J">                                         <bounds x="226" y="199" width="09" height="09" /></bezel>
848      <bezel name="solenoid14" element="Solenoid_DropTarget_Tall">    <bounds x="240" y="211" width="07" height="15" /></bezel>
849      <bezel element="DropTarget_Tall" inputtag="X2" inputmask="0x01"><bounds x="240" y="211" width="07" height="15" /></bezel>
850      <bezel element="Key_K">                                         <bounds x="232" y="214" width="09" height="09" /></bezel>
851
852      <!-- Drop Target Area Rebound switches -->
853      <bezel element="Switch_Leaf_Vertical" inputtag="X0" inputmask="0x04"><bounds x="249" y="188" width="08" height="09" /></bezel>
854      <bezel element="Key_OBrkt">                                          <bounds x="247" y="174" width="10" height="10" /></bezel>
855      <bezel element="Switch_Leaf_Vertical" inputtag="X0" inputmask="0x04"><bounds x="062" y="188" width="08" height="09" /></bezel>
856      <bezel element="Key_OBrkt">                                          <bounds x="060" y="174" width="10" height="10" /></bezel>
857
858
859      <!-- Upper Rebound switch -->
860      <bezel element="Switch_Leaf_Vertical" inputtag="X0" inputmask="0x02"><bounds x="259" y="42" width="08" height="09" /></bezel>
861      <bezel element="Key_FSlash">                                         <bounds x="257" y="28" width="10" height="10" /></bezel>
862
863
864      <!-- Rollover Buttons Left Alley switches -->
865      <bezel name="lamp48" element="Lamp_RollOver_Button">  <!-- Upper -->   <bounds x="17" y="105" width="15" height="15" /></bezel>
866      <bezel element="Switch_RollOver_Button" inputtag="X3" inputmask="0x10"><bounds x="07" y="099" width="35" height="35" /></bezel>
867      <bezel element="Key_R">                                                <bounds x="33" y="109" width="09" height="09" /></bezel>
868      <bezel name="lamp48" element="Lamp_RollOver_Button">  <!-- Middle -->  <bounds x="12" y="135" width="15" height="15" /></bezel>
869      <bezel element="Switch_RollOver_Button" inputtag="X4" inputmask="0x02"><bounds x="02" y="129" width="35" height="35" /></bezel>
870      <bezel element="Key_M">                                                <bounds x="28" y="139" width="09" height="09" /></bezel>
871      <bezel name="lamp33" element="Lamp_RollOver_Button">  <!-- Lower -->   <bounds x="12" y="165" width="15" height="15" /></bezel>
872      <bezel element="Switch_RollOver_Button" inputtag="X0" inputmask="0x08"><bounds x="02" y="159" width="35" height="35" /></bezel>
873      <bezel element="Key_CBrkt">                                            <bounds x="28" y="168" width="10" height="10" /></bezel>
874
875
876      <!-- Rollover Buttons Right Alley -->
877      <bezel name="lamp18" element="Lamp_RollOver_Button">  <!-- Upper -->   <bounds x="290" y="105" width="15" height="15" /></bezel>
878      <bezel element="Switch_RollOver_Button" inputtag="X3" inputmask="0x20"><bounds x="280" y="099" width="35" height="35" /></bezel>
879      <bezel element="Key_E">                                                <bounds x="280" y="109" width="09" height="09" /></bezel>
880      <bezel name="lamp18" element="Lamp_RollOver_Button">  <!-- Middle -->  <bounds x="295" y="135" width="15" height="15" /></bezel>
881      <bezel element="Switch_RollOver_Button" inputtag="X4" inputmask="0x04"><bounds x="285" y="129" width="35" height="35" /></bezel>
882      <bezel element="Key_N">                                                <bounds x="285" y="139" width="09" height="09" /></bezel>
883      <bezel name="lamp3"  element="Lamp_RollOver_Button">  <!-- Lower -->   <bounds x="295" y="165" width="15" height="15" /></bezel>
884      <bezel element="Switch_RollOver_Button" inputtag="X0" inputmask="0x10"><bounds x="285" y="159" width="35" height="35" /></bezel>
885      <bezel element="Key_BSlash">                                           <bounds x="285" y="169" width="10" height="10" /></bezel>
886
887
888      <!-- Rollover Button Centre switch -->
889      <bezel element="Lamp_RollOver_Button_On">                              <bounds x="153" y="228" width="15" height="15" /></bezel>
890      <bezel element="Switch_RollOver_Button" inputtag="X3" inputmask="0x02"><bounds x="143" y="222" width="35" height="35" /></bezel>
891      <bezel element="Key_I">                                                <bounds x="156" y="245" width="09" height="09" /></bezel>
892
893
894      <!-- Post Between Flippers -->
895      <bezel name="lamp24" element="Lamp_Post"><bounds x="148" y="420" width="22" height="22" /></bezel>
896
897      <!-- Post Up and Advance - Upper Rollover button and Middle Target switch -->
898      <bezel name="solenoid16" element="Coil_Post_Up">                          <bounds x="148" y="420" width="22" height="22" /></bezel>
899      <bezel element="Lamp_RollOver_Button_On">                                 <bounds x="153" y="28" width="15" height="15" /></bezel>
900      <bezel element="Switch_RollOver_Button"    inputtag="X4" inputmask="0x01"><bounds x="143" y="22" width="35" height="35" /></bezel>
901      <bezel element="Key_Comma">                                               <bounds x="153" y="12" width="14" height="14" /></bezel>
902      <bezel element="Switch_Target_Red_Forward" inputtag="X4" inputmask="0x01"><bounds x="153.5" y="172" width="12" height="08" /></bezel>
903      <bezel element="Key_Comma">                                               <bounds x="153" y="176" width="14" height="14" /></bezel>
904
905      <!-- Post Down - Middle Left and Middle Right Rollover Button switches -->
906      <bezel name="solenoid0"  element="Solenoid_Post_Down">                 <bounds x="148" y="420" width="22" height="22" /></bezel>
907      <bezel element="Lamp_RollOver_Button_On">                              <bounds x="126" y="254" width="15" height="15" /></bezel>
908      <bezel element="Switch_RollOver_Button" inputtag="X3" inputmask="0x01"><bounds x="116" y="248" width="35" height="35" /></bezel>
909      <bezel element="Key_O">                                                <bounds x="129" y="271" width="09" height="09" /></bezel>
910      <bezel element="Lamp_RollOver_Button_On">                              <bounds x="180" y="254" width="15" height="15" /></bezel>
911      <bezel element="Switch_RollOver_Button" inputtag="X3" inputmask="0x01"><bounds x="170" y="248" width="35" height="35" /></bezel>
912      <bezel element="Key_O">                                                <bounds x="183" y="271" width="09" height="09" /></bezel>
913
914
915      <!-- Outlane switches / lamps -->
916      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X3" inputmask="0x08"><bounds x="009" y="346" width="09" height="27" /></bezel>
917      <bezel element="Key_Y">                                                           <bounds x="009" y="376" width="09" height="09" /></bezel>
918      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X3" inputmask="0x04"><bounds x="301" y="346" width="09" height="27" /></bezel>
919      <bezel element="Key_U">                                                           <bounds x="301" y="376" width="09" height="09" /></bezel>
920
921      <!-- Flipper Return Lane switches -->
922      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X0" inputmask="0x01"><bounds x="030" y="348" width="09" height="27" /></bezel>
923      <bezel element="Key_Dot">                                                         <bounds x="028" y="374" width="14" height="14" /></bezel>
924      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X0" inputmask="0x01"><bounds x="280" y="348" width="09" height="27" /></bezel>
925      <bezel element="Key_Dot">                                                         <bounds x="278" y="374" width="14" height="14" /></bezel>
926
927   </view>
928
929</mamelayout>
trunk/src/mame/layout/by35.lay
r249889r249890
1<!-- Pinball Machine, Bally ~ Template -35 MPU board -->
1<!-- BY35 copied from by17.lay -->
22
33<!-- 2014-07-29: Initial version.  [Robbbert] -->
4<!-- 2015-August: Added Lamp states, Solenoid states, Switch Matrix and a kit of playfield objects.  [Quench] -->
54
6
7<!-- Any state="9" items are not displayed and are only used for object alignment -->
8
95<mamelayout version="2">
106
11   <element name="Title_Bally">   <text string="Bally"><color red="0.25" green="0.5" blue="1.0" /></text></element>
12
13   <element name="Text_Playfield"><text string="See Playboy for a mockup Playfield layout"><color red="1.0" green="0.0" blue="1.0" /></text></element>
14   <element name="Text_Legend">   <text string="Consult game schematic for Switch, Lamp and Solenoid allocation"><color red="0.0" green="1.0" blue="0.0" /></text></element>
15   <element name="Text_Switch">   <text string="Switch Matrix"><color red="0.0" green="1.0" blue="1.0" /></text></element>
16   <element name="Text_Multiball"><text string="Some Multi-ball games require balls in all Outholes to complete startup"><color red="0.0" green="1.0" blue="0.0" /></text></element>
17
18
19
20<!-- Switches -->
21
22   <element name="Switch_SlamTilt">
23      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="00" width="25" height="01" /></rect>
24      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="08" width="13" height="01.5" /></rect>
25      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="01" width="04" height="02" /></rect>
26      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="06" width="04" height="02" /></rect>
27
28      <rect state="0"><color red="0.70" green="0.70" blue="0.70" /><bounds x="19" y="01" width="06" height="04" /></rect>
29      <rect state="1"><color red="0.70" green="0.70" blue="0.70" /><bounds x="19" y="04" width="06" height="04" /></rect>
30
31      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="00" width="08" height="01" /></rect>
32      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="08" y="01" width="08" height="01" /></rect>
33      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="16" y="02" width="09" height="01" /></rect>
34
35
36      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="08"  width="13" height="01.5" /></rect>
37      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="03"  width="04" height="02" /></rect>
38      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="06"  width="04" height="02" /></rect>
7   <element name="digit" defstate="0">
8      <led7seg>
9         <color red="1.0" green="0.75" blue="0.0" />
10      </led7seg>
3911   </element>
40
41   <element name="Switch_Tilt">
42      <rect          ><color red="0.80" green="0.80" blue="0.00" /><bounds x="00" y="00" width="17" height="17" /></rect>
43      <disk          ><color red="0.00" green="0.00" blue="0.00" /><bounds x="01" y="01" width="15" height="15" /></disk>
44      <disk state="0"><color red="0.50" green="0.50" blue="0.50" /><bounds x="04" y="04" width="09" height="09" /></disk>
45      <disk state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="07" width="02" height="02" /></disk>
46
47      <disk state="1"><color red="0.50" green="0.50" blue="0.50" /><bounds x="07" y="04" width="09" height="09" /></disk>
48      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="11" y="07" width="02" height="02" /></disk>
12   <element name="red_led">
13      <disk><color red="1.0" green="0.0" blue="0.0" /></disk>
4914   </element>
50
51
52   <element name="Switch_Leaf_Vertical">
53      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="0" y="00" width="01"   height="06" /></rect>
54      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="8" y="00" width="01.5" height="06" /></rect>
55      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="1" y="01" width="02"   height="04" /></rect>
56      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="6" y="01" width="02"   height="04" /></rect>
57
58      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="1.5" y="00" width="01" height="06" /></rect>
59      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="6.5" y="00" width="01" height="06" /></rect>
60      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="2"   y="01" width="02" height="04" /></rect>
61      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="4.5" y="01" width="02" height="04" /></rect>
62   </element>
63
64   <element name="Switch_RollOn_WireForm_Left">
65      <text string=">" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="8" y="0" width="11"  height="11"  /></text>
66      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="0.1" height="04"  /></rect>
67      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="09"  height="0.1" /></rect>
68      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="8" width="09"  height="0.1" /></rect>
69      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="3" y="6" width="08"  height="0.1" /></rect>
70      <text string=">" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="8" y="0" width="11"  height="11"  /></text>
71      <rect            state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="0.1" height="04"  /></rect>
72      <rect            state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="09"  height="0.1" /></rect>
73      <rect            state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="8" width="09"  height="0.1" /></rect>
74   </element>
75
76   <element name="Switch_RollOn_WireForm_Down">
77      <text string="/\" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="00" width="07"  height="10" /></text>
78      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="17" width="04"  height="0.1" /></rect>
79      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="09" width="0.1" height="09" /></rect>
80      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="5" y="09" width="0.1" height="09" /></rect>
81      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="3" y="07" width="0.1" height="08" /></rect>
82      <text string="/\" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="00" width="07"  height="10" /></text>
83      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="17" width="04"  height="0.1" /></rect>
84      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="09" width="0.1" height="09" /></rect>
85      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="5" y="09" width="0.1" height="09" /></rect>
86   </element>
87
88   <element name="Switch_RollOver_WireForm_Vertical">
89      <text string="/\" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="00" width="07"  height="10" /></text>
90      <text string="\/" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="17" width="07"  height="10" /></text>
91      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="09" width="0.1" height="09" /></rect>
92      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="5" y="09" width="0.1" height="09" /></rect>
93      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="3" y="07" width="0.1" height="13" /></rect>
94      <text string="/\" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="00" width="07"  height="10" /></text>
95      <text string="\/" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="17" width="07"  height="10" /></text>
96      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="09" width="0.1" height="09" /></rect>
97      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="5" y="09" width="0.1" height="09" /></rect>
98   </element>
99
100   <element name="Switch_Target_Red_Forward" defstate="0">
101      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="00" width="10" height="01" /></rect>
102      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="00" width="01" height="05" /></rect>
103      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="16" y="00" width="01" height="05" /></rect>
104
105      <disk state="0"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="05" width="24" height="06" /></disk>
106      <disk state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="02" width="24" height="06" /></disk>
107   </element>
108
109   <element name="Target_White_Left" defstate="0">
110      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="06" width="01" height="10" /></rect>
111      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="06" width="05" height="01" /></rect>
112      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="16" width="05" height="01" /></rect>
113      <disk state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="05" y="00" width="06" height="24" /></disk>
114      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="02" y="00" width="06" height="24" /></disk>
115   </element>
116
117
118   <element name="Switch_RollOver_Button">
119      <text string="*" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="-10" y="-6" width="35" height="35" /></text>
120      <text string="*" state="1"><color red="0.00" green="0.00" blue="0.00" /><bounds x="-10" y="-6" width="35" height="35" /></text>
121   </element>
122
123   <element name="Lamp_RollOver_Button" defstate="0">
124      <disk state="0"><color red="0.15" green="0.04" blue="0.00" /><bounds x="0" y="0" width="15" height="15" /></disk>
125      <disk state="1"><color red="1.00" green="0.30" blue="0.00" /><bounds x="0" y="0" width="15" height="15" /></disk>
126   </element>
127
128   <element name="Lamp_RollOver_Button_On">
129      <disk><color red="1.00" green="0.30" blue="0.00" /><bounds x="0" y="0" width="15" height="15" /></disk>
130   </element>
131
132
133   <element name="Switch_Push-Button" defstate="0">
134      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="04" width="16" height="01" /></rect>
135      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="00" width="01" height="04" /></rect>
136      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="17" y="00" width="01" height="04" /></rect>
137      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="00" width="05" height="01" /></rect>
138      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="08.5" width="16" height="01" /></rect>
139      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="04.5" width="01" height="04" /></rect>
140      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="17" y="04.5" width="01" height="04" /></rect>
141      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="04.5" width="05" height="01" /></rect>
142      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="12" width="09" height="01" /></rect>
143      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="21" y="12" width="09" height="01" /></rect>
144      <disk          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="10" width="06" height="06" /></disk>
145      <disk          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="18" y="10" width="06" height="06" /></disk>
146   </element>
147
148
149
150   <element name="Key_Z">     <text string="Z"><color red="1.00" green="0.66" blue="0.66" /></text></element>
151   <element name="Key_X">     <text string="X"><color red="1.00" green="0.66" blue="0.66" /></text></element>
152   <element name="Key_C">     <text string="C"><color red="1.00" green="0.66" blue="0.66" /></text></element>
153   <element name="Key_V">     <text string="V"><color red="1.00" green="0.66" blue="0.66" /></text></element>
154   <element name="Key_B">     <text string="B"><color red="1.00" green="0.66" blue="0.66" /></text></element>
155   <element name="Key_N">     <text string="N"><color red="1.00" green="0.66" blue="0.66" /></text></element>
156   <element name="Key_M">     <text string="M"><color red="1.00" green="0.66" blue="0.66" /></text></element>
157   <element name="Key_Comma"> <text string=","><color red="1.00" green="0.66" blue="0.66" /></text></element>
158   <element name="Key_Dot">   <text string="."><color red="1.00" green="0.66" blue="0.66" /></text></element>
159   <element name="Key_FSlash"><text string="/"><color red="1.00" green="0.66" blue="0.66" /></text></element>
160
161   <element name="Key_A">     <text string="A"><color red="1.00" green="0.66" blue="0.66" /></text></element>
162   <element name="Key_S">     <text string="S"><color red="1.00" green="0.66" blue="0.66" /></text></element>
163   <element name="Key_D">     <text string="D"><color red="1.00" green="0.66" blue="0.66" /></text></element>
164   <element name="Key_F">     <text string="F"><color red="1.00" green="0.66" blue="0.66" /></text></element>
165   <element name="Key_G">     <text string="G"><color red="1.00" green="0.66" blue="0.66" /></text></element>
166   <element name="Key_H">     <text string="H"><color red="1.00" green="0.66" blue="0.66" /></text></element>
167   <element name="Key_J">     <text string="J"><color red="1.00" green="0.66" blue="0.66" /></text></element>
168   <element name="Key_K">     <text string="K"><color red="1.00" green="0.66" blue="0.66" /></text></element>
169   <element name="Key_L">     <text string="L"><color red="1.00" green="0.66" blue="0.66" /></text></element>
170   <element name="Key_SColon"><text string=";"><color red="1.00" green="0.66" blue="0.66" /></text></element>
171   <element name="Key_Quote"> <text string="'"><color red="1.00" green="0.66" blue="0.66" /></text></element>
172   <element name="Key_Enter">
173      <text string="&#60;"><color red="1.00" green="0.66" blue="0.66" /><bounds x="00" y="00" width="07"  height="10" /></text>
174      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="00" y="00" width="07"  height="10" /></text>
175      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="02" y="00" width="07"  height="10" /></text>
176      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="04" y="00" width="07"  height="10" /></text>
177      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="06" y="00" width="07"  height="10" /></text>
178      <disk           >    <color red="1.00" green="0.66" blue="0.66" /><bounds x="10" y="02" width="0.5" height="03" /></disk>
179   </element>
180
181   <element name="Key_Q">     <text string="Q"><color red="1.00" green="0.66" blue="0.66" /></text></element>
182   <element name="Key_W">     <text string="W"><color red="1.00" green="0.66" blue="0.66" /></text></element>
183   <element name="Key_E">     <text string="E"><color red="1.00" green="0.66" blue="0.66" /></text></element>
184   <element name="Key_R">     <text string="R"><color red="1.00" green="0.66" blue="0.66" /></text></element>
185   <element name="Key_T">     <text string="T"><color red="1.00" green="0.66" blue="0.66" /></text></element>
186   <element name="Key_Y">     <text string="Y"><color red="1.00" green="0.66" blue="0.66" /></text></element>
187   <element name="Key_U">     <text string="U"><color red="1.00" green="0.66" blue="0.66" /></text></element>
188   <element name="Key_I">     <text string="I"><color red="1.00" green="0.66" blue="0.66" /></text></element>
189   <element name="Key_O">     <text string="O"><color red="1.00" green="0.66" blue="0.66" /></text></element>
190   <element name="Key_P">     <text string="P"><color red="1.00" green="0.66" blue="0.66" /></text></element>
191   <element name="Key_OBrkt"> <text string="["><color red="1.00" green="0.66" blue="0.66" /></text></element>
192   <element name="Key_CBrkt"> <text string="]"><color red="1.00" green="0.66" blue="0.66" /></text></element>
193   <element name="Key_BSlash"><text string="\"><color red="1.00" green="0.66" blue="0.66" /></text></element>
194
195   <element name="Key_1">     <text string="1"><color red="1.00" green="0.66" blue="0.66" /></text></element>
196   <element name="Key_5">     <text string="5"><color red="1.00" green="0.66" blue="0.66" /></text></element>
197   <element name="Key_6">     <text string="6"><color red="1.00" green="0.66" blue="0.66" /></text></element>
198   <element name="Key_7">     <text string="7"><color red="1.00" green="0.66" blue="0.66" /></text></element>
199   <element name="Key_9">     <text string="9"><color red="1.00" green="0.66" blue="0.66" /></text></element>
200   <element name="Key_0">     <text string="0"><color red="1.00" green="0.66" blue="0.66" /></text></element>
201   <element name="Key_BSpace">
202      <text string="&#60;"><color red="1.00" green="0.66" blue="0.66" /><bounds x="0" y="00" width="07" height="10" /></text>
203      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="0" y="00" width="07" height="10" /></text>
204      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="2" y="00" width="07" height="10" /></text>
205      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="4" y="00" width="07" height="10" /></text>
206      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="6" y="00" width="07" height="10" /></text>
207   </element>
208   <element name="Key_Equals"><text string="="><color red="1.00" green="0.66" blue="0.66" /></text></element>
209
210   <element name="ST0"><text string="ST0"><color red="0.0" green="1.0" blue="1.0" /></text></element>
211   <element name="ST1"><text string="ST1"><color red="0.0" green="1.0" blue="1.0" /></text></element>
212   <element name="ST2"><text string="ST2"><color red="0.0" green="1.0" blue="1.0" /></text></element>
213   <element name="ST3"><text string="ST3"><color red="0.0" green="1.0" blue="1.0" /></text></element>
214   <element name="ST4"><text string="ST4"><color red="0.0" green="1.0" blue="1.0" /></text></element>
215   <element name="ST5"><text string="ST5"><color red="0.0" green="1.0" blue="1.0" /></text></element>
216   <element name="I0"> <text string="I0"> <color red="0.0" green="1.0" blue="1.0" /></text></element>
217   <element name="I1"> <text string="I1"> <color red="0.0" green="1.0" blue="1.0" /></text></element>
218   <element name="I2"> <text string="I2"> <color red="0.0" green="1.0" blue="1.0" /></text></element>
219   <element name="I3"> <text string="I3"> <color red="0.0" green="1.0" blue="1.0" /></text></element>
220   <element name="I4"> <text string="I4"> <color red="0.0" green="1.0" blue="1.0" /></text></element>
221   <element name="I5"> <text string="I5"> <color red="0.0" green="1.0" blue="1.0" /></text></element>
222   <element name="I6"> <text string="I6"> <color red="0.0" green="1.0" blue="1.0" /></text></element>
223   <element name="I7"> <text string="I7"> <color red="0.0" green="1.0" blue="1.0" /></text></element>
224
225
226
227
228   <element name="Solenoid_DropTarget_Tall" defstate="0">
229      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="00" width="07" height="15" /></rect>
230      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="01" y="01" width="04" height="12" /></rect>
231   </element>
232   <element name="DropTarget_Tall" defstate="0">
233      <rect state="1"><color red="0.25" green="0.25" blue="0.25" /><bounds x="01" y="01" width="04" height="12" /></rect>
234      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="01" y="01" width="04" height="12" /></rect>
235      <rect state="9"><color red="0.00" green="1.00" blue="0.00" /><bounds x="00" y="00" width="07" height="15" /></rect>
236   </element>
237
238   <element name="Solenoid_DropTarget_Wide" defstate="0">
239      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="00" width="15" height="07" /></rect>
240      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="01" y="01" width="12" height="04" /></rect>
241   </element>
242   <element name="DropTarget_Wide" defstate="0">
243      <rect state="1"><color red="0.25" green="0.25" blue="0.25" /><bounds x="01" y="01" width="12" height="04" /></rect>
244      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="01" y="01" width="12" height="04" /></rect>
245      <rect state="9"><color red="0.00" green="1.00" blue="0.00" /><bounds x="00" y="00" width="15" height="07" /></rect>
246   </element>
247
248
249<!-- Lamps -->
250
251   <element name="Lamp_White" defstate="0">
252      <disk state="0"><color red="0.15" green="0.15" blue="0.15" /></disk>
253      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
254   </element>
255   <element name="Lamp_Yellow" defstate="0">
256      <disk state="0"><color red="0.15" green="0.15" blue="0.00" /></disk>
257      <disk state="1"><color red="1.00" green="1.00" blue="0.00" /></disk>
258   </element>
259   <element name="Lamp_Red" defstate="0">                              <!-- Usually for Specials -->
260      <disk state="0"><color red="0.15" green="0.00" blue="0.00" /></disk>
261      <disk state="1"><color red="1.00" green="0.00" blue="0.00" /></disk>
262   </element>
263   <element name="Lamp_Amber" defstate="0">                           <!-- Usually for Extra Ball-->
264      <disk state="0"><color red="0.15" green="0.06" blue="0.00" /></disk>
265      <disk state="1"><color red="1.00" green="0.40" blue="0.00" /></disk>
266   </element>
267
268
269   <element name="Lamp_P1">
270      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
271      <text string="1" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
272      <text string="1" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
273   </element>
274   <element name="Lamp_P2">
275      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
276      <text string="2" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
277      <text string="2" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
278   </element>
279   <element name="Lamp_P3">
280      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
281      <text string="3" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
282      <text string="3" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
283   </element>
284   <element name="Lamp_P4">
285      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
286      <text string="4" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
287      <text string="4" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
288   </element>
289
290   <element name="Lamp_1P">
291      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
292      <text string="1" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
293      <text string="1" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
294   </element>
295   <element name="Lamp_2P">
296      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
297      <text string="2" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
298      <text string="2" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
299   </element>
300   <element name="Lamp_3P">
301      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
302      <text string="3" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
303      <text string="3" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
304   </element>
305   <element name="Lamp_4P">
306      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
307      <text string="4" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
308      <text string="4" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
309   </element>
310
311
312   <element name="Lamp_2x" defstate="0">
313      <disk state="0"><color red="0.0" green="0.15" blue="0.0" /></disk>
314      <disk state="1"><color red="0.0" green="1.00" blue="0.0" /></disk>
315      <text string="2x"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
316   </element>
317   <element name="Lamp_3x" defstate="0">
318      <disk state="0"><color red="0.15" green="0.15" blue="0.0" /></disk>
319      <disk state="1"><color red="1.00" green="1.00" blue="0.0" /></disk>
320      <text string="3x"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
321   </element>
322   <element name="Lamp_4x" defstate="0">
323      <disk state="0"><color red="0.15" green="0.15" blue="0.0" /></disk>
324      <disk state="1"><color red="1.00" green="1.00" blue="0.0" /></disk>
325      <text string="4x"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
326   </element>
327   <element name="Lamp_5x" defstate="0">
328      <disk state="0"><color red="0.15" green="0.15" blue="0.15" /></disk>
329      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
330      <text string="5x"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
331   </element>
332
333
334   <element name="Lamp_White_1k">
335      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
336      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
337      <text string="1k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
338   </element>
339   <element name="Lamp_White_2k">
340      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
341      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
342      <text string="2k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
343   </element>
344   <element name="Lamp_White_3k">
345      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
346      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
347      <text string="3k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
348   </element>
349   <element name="Lamp_White_4k">
350      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
351      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
352      <text string="4k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
353   </element>
354   <element name="Lamp_White_5k">
355      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
356      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
357      <text string="5k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
358   </element>
359   <element name="Lamp_White_6k">
360      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
361      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
362      <text string="6k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
363   </element>
364   <element name="Lamp_White_7k">
365      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
366      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
367      <text string="7k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
368   </element>
369   <element name="Lamp_White_8k">
370      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
371      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
372      <text string="8k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
373   </element>
374   <element name="Lamp_White_9k">
375      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
376      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
377      <text string="9k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
378   </element>
379   <element name="Lamp_White_10k">
380      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
381      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
382      <text string="10k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.0" y="0.1" width="1.00" height="0.75" /></text>
383   </element>
384   <element name="Lamp_White_12k">
385      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
386      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
387      <text string="12k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
388   </element>
389   <element name="Lamp_White_15k">
390      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
391      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
392      <text string="15k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
393   </element>
394   <element name="Lamp_White_20k">
395      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
396      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
397      <text string="20k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
398   </element>
399   <element name="Lamp_White_25k">
400      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
401      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
402      <text string="25k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
403   </element>
404   <element name="Lamp_White_50k">
405      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
406      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
407      <text string="50k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
408   </element>
409
410
411   <element name="Lamp_White_1">
412      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
413      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
414      <text string="1"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
415   </element>
416   <element name="Lamp_White_2">
417      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
418      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
419      <text string="2"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
420   </element>
421   <element name="Lamp_White_3">
422      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
423      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
424      <text string="3"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
425   </element>
426   <element name="Lamp_White_4">
427      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
428      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
429      <text string="4"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
430   </element>
431   <element name="Lamp_White_5">
432      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
433      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
434      <text string="5"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
435   </element>
436
437   <element name="Lamp_White_A">
438      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
439      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
440      <text string="A"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
441   </element>
442   <element name="Lamp_White_B">
443      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
444      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
445      <text string="B"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
446   </element>
447
448
449   <element name="Credit_Indicator">
450      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="2.5" y="0" width="1.0" height="1.0" /></disk>
451      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="2.5" y="0" width="1.0" height="1.0" /></disk>
452      <text string="Credit Indicator"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="1.1" width="6.5" height="0.90" /></text>
453   </element>
454
455
456   <element name="Lamp_Green_Arrow_Up_2x" defstate="1">
457      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="10" y="00" width="02" height="03" /></rect>
458      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="10" y="00" width="02" height="03" /></rect>
459      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="08" y="03" width="06" height="03" /></rect>
460      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="08" y="03" width="06" height="03" /></rect>
461      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="06" y="06" width="10" height="03" /></rect>
462      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="06" y="06" width="10" height="03" /></rect>
463      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="04" y="09" width="14" height="03" /></rect>
464      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="04" y="09" width="14" height="03" /></rect>
465      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="02" y="12" width="18" height="03" /></rect>
466      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="02" y="12" width="18" height="03" /></rect>
467      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="00" y="15" width="22" height="03" /></rect>
468      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="00" y="15" width="22" height="03" /></rect>
469      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="09" y="06" width="04" height="30" /></rect>
470      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="09" y="06" width="04" height="30" /></rect>
471      <text string="2x"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="06" y="08" width="12" height="12" /></text>
472   </element>
473
474   <element name="Lamp_Yellow_Arrow_Up_3x" defstate="1">
475      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="10" y="00" width="02" height="03" /></rect>
476      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="10" y="00" width="02" height="03" /></rect>
477      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="03" width="06" height="03" /></rect>
478      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="08" y="03" width="06" height="03" /></rect>
479      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="06" y="06" width="10" height="03" /></rect>
480      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="06" y="06" width="10" height="03" /></rect>
481      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="04" y="09" width="14" height="03" /></rect>
482      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="04" y="09" width="14" height="03" /></rect>
483      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="02" y="12" width="18" height="03" /></rect>
484      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="02" y="12" width="18" height="03" /></rect>
485      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="00" y="15" width="22" height="03" /></rect>
486      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="00" y="15" width="22" height="03" /></rect>
487      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="09" y="06" width="04" height="30" /></rect>
488      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="09" y="06" width="04" height="30" /></rect>
489      <text string="3x"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="06" y="08" width="12" height="12" /></text>
490   </element>
491
492   <element name="Lamp_White_Arrow_Up_5x" defstate="1">
493      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="10" y="00" width="02" height="03" /></rect>
494      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="10" y="00" width="02" height="03" /></rect>
495      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="08" y="03" width="06" height="03" /></rect>
496      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="08" y="03" width="06" height="03" /></rect>
497      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="06" width="10" height="03" /></rect>
498      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="06" width="10" height="03" /></rect>
499      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="04" y="09" width="14" height="03" /></rect>
500      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="04" y="09" width="14" height="03" /></rect>
501      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="02" y="12" width="18" height="03" /></rect>
502      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="02" y="12" width="18" height="03" /></rect>
503      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="15" width="22" height="03" /></rect>
504      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="00" y="15" width="22" height="03" /></rect>
505      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="09" y="06" width="04" height="30" /></rect>
506      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="09" y="06" width="04" height="30" /></rect>
507      <text string="5x"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="06" y="08" width="12" height="12" /></text>
508   </element>
509
510   <element name="Lamp_White_Arrow_Up_3k" defstate="0">
511      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="10" y="00" width="02" height="03" /></rect>
512      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="08" y="03" width="06" height="03" /></rect>
513      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="06" width="10" height="03" /></rect>
514      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="04" y="09" width="14" height="03" /></rect>
515      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="02" y="12" width="18" height="03" /></rect>
516      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="15" width="22" height="03" /></rect>
517      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="09" y="06" width="04" height="30" /></rect>
518      <text string="3k"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="06" y="08" width="12" height="12" /></text>
519   </element>
520
521   <element name="Lamp_Green_Arrow_04_2x" defstate="1">   <!-- Point at 4 o clock -->
522      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="00" y="00" width="08" height="03" /></rect>
523      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="00" y="00" width="08" height="03" /></rect>
524      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="05" y="03" width="08" height="03" /></rect>
525      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="05" y="03" width="08" height="03" /></rect>
526      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="10" y="06" width="08" height="03" /></rect>
527      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="10" y="06" width="08" height="03" /></rect>
528      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="24" y="03" width="02" height="03" /></rect>
529      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="24" y="03" width="02" height="03" /></rect>
530      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="22" y="06" width="06" height="03" /></rect>
531      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="22" y="06" width="06" height="03" /></rect>
532      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="15" y="09" width="15" height="03" /></rect>
533      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="15" y="09" width="15" height="03" /></rect>
534      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="18" y="12" width="14" height="03" /></rect>
535      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="18" y="12" width="14" height="03" /></rect>
536      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="17" y="15" width="17" height="03" /></rect>
537      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="17" y="15" width="17" height="03" /></rect>
538      <rect state="1"><color red="0.00" green="1.00" blue="0.00" /><bounds x="16" y="18" width="20" height="03" /></rect>
539      <rect state="0"><color red="0.00" green="0.15" blue="0.00" /><bounds x="16" y="18" width="20" height="03" /></rect>
540      <text string="2x"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="18" y="08" width="15" height="15" /></text>
541   </element>
542
543   <element name="Lamp_Yellow_Arrow_04_3x" defstate="1">   <!-- Point at 4 o clock -->
544      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="00" y="00" width="08" height="03" /></rect>
545      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="00" y="00" width="08" height="03" /></rect>
546      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="05" y="03" width="08" height="03" /></rect>
547      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="05" y="03" width="08" height="03" /></rect>
548      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="10" y="06" width="08" height="03" /></rect>
549      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="10" y="06" width="08" height="03" /></rect>
550      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="24" y="03" width="02" height="03" /></rect>
551      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="24" y="03" width="02" height="03" /></rect>
552      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="22" y="06" width="06" height="03" /></rect>
553      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="22" y="06" width="06" height="03" /></rect>
554      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="15" y="09" width="15" height="03" /></rect>
555      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="15" y="09" width="15" height="03" /></rect>
556      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="18" y="12" width="14" height="03" /></rect>
557      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="18" y="12" width="14" height="03" /></rect>
558      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="17" y="15" width="17" height="03" /></rect>
559      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="17" y="15" width="17" height="03" /></rect>
560      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="16" y="18" width="20" height="03" /></rect>
561      <rect state="0"><color red="0.15" green="0.15" blue="0.00" /><bounds x="16" y="18" width="20" height="03" /></rect>
562      <text string="3x"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="18" y="08" width="15" height="15" /></text>
563   </element>
564
565   <element name="Lamp_White_Arrow_08_5x" defstate="1">   <!-- Point at 8 o clock -->
566      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="28" y="00" width="08" height="03" /></rect>
567      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="28" y="00" width="08" height="03" /></rect>
568      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="23" y="03" width="08" height="03" /></rect>
569      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="23" y="03" width="08" height="03" /></rect>
570      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="18" y="06" width="08" height="03" /></rect>
571      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="18" y="06" width="08" height="03" /></rect>
572      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="10" y="03" width="02" height="03" /></rect>
573      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="10" y="03" width="02" height="03" /></rect>
574      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="08" y="06" width="06" height="03" /></rect>
575      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="08" y="06" width="06" height="03" /></rect>
576      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
577      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="09" width="15" height="03" /></rect>
578      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="04" y="12" width="14" height="03" /></rect>
579      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="04" y="12" width="14" height="03" /></rect>
580      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="02" y="15" width="17" height="03" /></rect>
581      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="02" y="15" width="17" height="03" /></rect>
582      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="18" width="20" height="03" /></rect>
583      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="00" y="18" width="20" height="03" /></rect>
584      <text string="5x"><color red="0.0" green="0.0" blue="0.0"  /><bounds x="06" y="08" width="15" height="15" /></text>
585   </element>
586
587   <element name="Lamp_White_Arrow_01" defstate="1">   <!-- Point at 1 o clock -->
588      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="18" y="00" width="03" height="20" /></rect>
589      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="18" y="00" width="03" height="20" /></rect>
590      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="15" y="02" width="03" height="17" /></rect>
591      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="15" y="02" width="03" height="17" /></rect>
592      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="04" width="03" height="14" /></rect>
593      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="12" y="04" width="03" height="14" /></rect>
594      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="09" y="06" width="03" height="15" /></rect>
595      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="09" y="06" width="03" height="15" /></rect>
596      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="08" width="03" height="06" /></rect>
597      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="08" width="03" height="06" /></rect>
598      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="03" y="10" width="03" height="02" /></rect>
599      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="03" y="10" width="03" height="02" /></rect>
600      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="18" width="03" height="08" /></rect>
601      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="18" width="03" height="08" /></rect>
602      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="03" y="23" width="03" height="08" /></rect>
603      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="03" y="23" width="03" height="08" /></rect>
604      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="28" width="03" height="08" /></rect>
605      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="00" y="28" width="03" height="08" /></rect>
606   </element>
607
608   <element name="Lamp_Amber_Arrow_08" defstate="1">   <!-- Point at 8 o clock -->
609      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="28" y="00" width="08" height="03" /></rect>
610      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="28" y="00" width="08" height="03" /></rect>
611      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="23" y="03" width="08" height="03" /></rect>
612      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="23" y="03" width="08" height="03" /></rect>
613      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="18" y="06" width="08" height="03" /></rect>
614      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="18" y="06" width="08" height="03" /></rect>
615      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="10" y="03" width="02" height="03" /></rect>
616      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="10" y="03" width="02" height="03" /></rect>
617      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="08" y="06" width="06" height="03" /></rect>
618      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="08" y="06" width="06" height="03" /></rect>
619      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
620      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
621      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="04" y="12" width="14" height="03" /></rect>
622      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="04" y="12" width="14" height="03" /></rect>
623      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="02" y="15" width="17" height="03" /></rect>
624      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="02" y="15" width="17" height="03" /></rect>
625      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="00" y="18" width="20" height="03" /></rect>
626      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="00" y="18" width="20" height="03" /></rect>
627   </element>
628
629   <element name="Lamp_Amber_Arrow_10" defstate="1">   <!-- Point at 10 o clock -->
630      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="28" y="18" width="08" height="03" /></rect>
631      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="28" y="18" width="08" height="03" /></rect>
632      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="23" y="15" width="08" height="03" /></rect>
633      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="23" y="15" width="08" height="03" /></rect>
634      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="18" y="12" width="08" height="03" /></rect>
635      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="18" y="12" width="08" height="03" /></rect>
636      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="10" y="15" width="02" height="03" /></rect>
637      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="10" y="15" width="02" height="03" /></rect>
638      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="08" y="12" width="06" height="03" /></rect>
639      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="08" y="12" width="06" height="03" /></rect>
640      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
641      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
642      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="04" y="06" width="14" height="03" /></rect>
643      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="04" y="06" width="14" height="03" /></rect>
644      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="02" y="03" width="17" height="03" /></rect>
645      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="02" y="03" width="17" height="03" /></rect>
646      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="00" y="00" width="20" height="03" /></rect>
647      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="00" y="00" width="20" height="03" /></rect>
648   </element>
649
650   <element name="Lamp_Red_Arrow_08" defstate="1">   <!-- Point at 8 o clock -->
651      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="28" y="00" width="08" height="03" /></rect>
652      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="28" y="00" width="08" height="03" /></rect>
653      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="23" y="03" width="08" height="03" /></rect>
654      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="23" y="03" width="08" height="03" /></rect>
655      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="18" y="06" width="08" height="03" /></rect>
656      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="18" y="06" width="08" height="03" /></rect>
657      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="10" y="03" width="02" height="03" /></rect>
658      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="10" y="03" width="02" height="03" /></rect>
659      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="08" y="06" width="06" height="03" /></rect>
660      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="08" y="06" width="06" height="03" /></rect>
661      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
662      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
663      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="04" y="12" width="14" height="03" /></rect>
664      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="04" y="12" width="14" height="03" /></rect>
665      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="02" y="15" width="17" height="03" /></rect>
666      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="02" y="15" width="17" height="03" /></rect>
667      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="18" width="20" height="03" /></rect>
668      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="00" y="18" width="20" height="03" /></rect>
669   </element>
670
671   <element name="Lamp_White_Arrow_11_A" defstate="1">   <!-- Point at 11 o clock -->
672      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="00" width="03" height="20" /></rect>
673      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="00" y="00" width="03" height="20" /></rect>
674      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="03" y="02" width="03" height="17" /></rect>
675      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="03" y="02" width="03" height="17" /></rect>
676      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="04" width="03" height="14" /></rect>
677      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="04" width="03" height="14" /></rect>
678      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="09" y="06" width="03" height="15" /></rect>
679      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="09" y="06" width="03" height="15" /></rect>
680      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="08" width="03" height="06" /></rect>
681      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="12" y="08" width="03" height="06" /></rect>
682      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="15" y="10" width="03" height="02" /></rect>
683      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="15" y="10" width="03" height="02" /></rect>
684      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="18" width="03" height="08" /></rect>
685      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="12" y="18" width="03" height="08" /></rect>
686      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="15" y="23" width="03" height="08" /></rect>
687      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="15" y="23" width="03" height="08" /></rect>
688      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="18" y="28" width="03" height="08" /></rect>
689      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="18" y="28" width="03" height="08" /></rect>
690      <text string="A"><color red="0.0" green="0.0" blue="0.0"   /><bounds x="-2" y="03" width="18" height="18" /></text>
691   </element>
692
693   <element name="Lamp_White_Arrow_01_B" defstate="1">   <!-- Point at 1 o clock -->
694      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="18" y="00" width="03" height="20" /></rect>
695      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="18" y="00" width="03" height="20" /></rect>
696      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="15" y="02" width="03" height="17" /></rect>
697      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="15" y="02" width="03" height="17" /></rect>
698      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="04" width="03" height="14" /></rect>
699      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="12" y="04" width="03" height="14" /></rect>
700      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="09" y="06" width="03" height="15" /></rect>
701      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="09" y="06" width="03" height="15" /></rect>
702      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="08" width="03" height="06" /></rect>
703      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="08" width="03" height="06" /></rect>
704      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="03" y="10" width="03" height="02" /></rect>
705      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="03" y="10" width="03" height="02" /></rect>
706      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="18" width="03" height="08" /></rect>
707      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="18" width="03" height="08" /></rect>
708      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="03" y="23" width="03" height="08" /></rect>
709      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="03" y="23" width="03" height="08" /></rect>
710      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="28" width="03" height="08" /></rect>
711      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="00" y="28" width="03" height="08" /></rect>
712      <text string="B"><color red="0.0" green="0.0" blue="0.0"   /><bounds x="06" y="03" width="18" height="18" /></text>
713   </element>
714
715
716<!-- Backbox Indicators -->
717
718   <element name="Text_Credit"><text string="CREDIT"><color red="1.0" green="1.0" blue="1.0" /></text></element>
719   <element name="Text_Lamps"><text string="Lamps"><color red="1.0" green="1.0" blue="1.0" /></text></element>
720   <element name="Text_15"><text string="U1 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
721   <element name="Text_30"><text string="U2 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
722   <element name="Text_45"><text string="U3 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
723   <element name="Text_60"><text string="U4 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
724   <element name="Text_Solenoids"><text string="Momentary Solenoids"><color red="1.0" green="1.0" blue="1.0" /></text></element>
725   <element name="Text_Coils"><text string="Coils"><color red="1.0" green="1.0" blue="1.0" /></text></element>
726   <element name="Text_MPU_LED"><text string="MPU LED"><color red="1.0" green="1.0" blue="1.0" /></text></element>
727   <element name="Text_Activity"><text string="Activity Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
728   <element name="Text_Service"><text string="Service Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
729   <element name="Text_Slam"><text string="Slam Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
730   <element name="Text_Tilt"><text string="Tilt Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
731   <element name="Text_Knocker"><text string="Knocker"><color red="1.0" green="1.0" blue="1.0" /></text></element>
732
733
734   <element name="High_Score_To_Date" defstate="0">
735      <text string="HIGH SCORE TO DATE" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="1" /></text>
736      <text string="HIGH SCORE TO DATE" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="1" /></text>
737   </element>
738   <element name="Ball_In_Play" defstate="0">
739      <text string="BALL IN PLAY" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.1" y="0.1" width="1" height="0.8" /></text>
740      <text string="BALL IN PLAY" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0.1" y="0.1" width="1" height="0.8" /></text>
741   </element>
742   <element name="Match" defstate="0">
743      <text string="MATCH" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
744      <text string="MATCH" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
745   </element>
746   <element name="Game_Over" defstate="0">
747      <text string="GAME OVER" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
748      <text string="GAME OVER" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
749   </element>
750   <element name="Tilt" defstate="0">
751      <text string="TILT" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
752      <text string="TILT" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
753   </element>
754   <element name="Shoot_Again" defstate="0">
755      <text string="SAME PLAYER"  state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
756      <text string="SAME PLAYER"  state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
757      <text string="SHOOTS AGAIN" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.9" width="1" height="0.8" /></text>
758      <text string="SHOOTS AGAIN" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.9" width="1" height="0.8" /></text>
759   </element>
760
761
762   <element name="Digit" defstate="0">
763      <led7seg><color red="1.0" green="0.35" blue="0.0" /></led7seg>
764   </element>
765
766   <element name="LED_Green" defstate="1">
767      <disk state="0"><color red="0.0" green="0.25" blue="0.0" /></disk>
768      <disk state="1"><color red="0.0" green="1.00" blue="0.0" /></disk>
769   </element>
770
771   <element name="LED_Red" defstate="1">
772      <disk state="0"><color red="0.25" green="0.0" blue="0.0" /></disk>
773      <disk state="1"><color red="1.00" green="0.0" blue="0.0" /></disk>
774   </element>
775
776
777
778<!-- Solenoids -->
779
780   <element name="Solenoid_PullDown">
781      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="3" y="0" width="03" height="09" /></rect>
782      <rect state="0"><color red="0.0" green="1.0" blue="1.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
783      <rect state="1"><color red="1.0" green="1.0" blue="0.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
784   </element>
785
786   <element name="Coil_PullDown">
787      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="8" y="0" width="02" height="01" /></rect>
788      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="6" y="1" width="02" height="01" /></rect>
789      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="4" y="2" width="02" height="01" /></rect>
790      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="2" y="3" width="02" height="01" /></rect>
791      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="4" width="02" height="01" /></rect>
792      <rect          ><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="5" width="02" height="02" /></rect>
793      <rect state="1"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="4" width="10" height="01" /></rect>
794
795      <rect state="0"><color red="0.0" green="1.0" blue="1.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
796      <rect state="1"><color red="1.0" green="1.0" blue="0.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
797   </element>
798
799
800   <element name="Solenoid_Knocker" defstate="0">
801      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="00" y="03" width="09" height="03" /></rect>
802      <rect state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="18" y="03" width="05" height="03" /></rect>
803      <rect state="0"><color red="0.0" green="1.0" blue="1.0" /><bounds x="08" y="00" width="11" height="10" /></rect>
804      <rect state="1"><color red="1.0" green="1.0" blue="0.0" /><bounds x="08" y="00" width="11" height="10" /></rect>
805   </element>
806
807   <element name="Solenoid_Outhole" defstate="0">
808      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="17" y="00" width="05" height="16" /></text>
809      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="02" y="00" width="05" height="16" /></text>
810      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="18" y="00" width="05" height="16" /></text>
811      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="03" y="00" width="05" height="16" /></text>
812      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="19" y="00" width="05" height="16" /></text>
813      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="04" y="00" width="05" height="16" /></text>
814      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="20" y="00" width="05" height="16" /></text>
815      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="05" y="00" width="05" height="16" /></text>
816      <rect            state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="02" y="02" width="18" height="10" /></rect>
817      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="00" y="13" width="25" height="03" /></rect>
818      <text string="Outhole"    ><color red="1.0" green="1.0" blue="1.0" /><bounds x="30" y="12" width="28" height="9.5" /></text>
819   </element>
820
821   <element name="Solenoid_Kickback" defstate="0">
822      <rect state="1"><color red="1.0" green="1.0" blue="1.0" /><bounds x="3" y="00" width="03" height="15" /></rect>
823      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="3" y="07" width="03" height="08" /></rect>
824      <rect state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="0" y="00" width="10" height="04" /></rect>
825      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="07" width="10" height="04" /></rect>
826   </element>
827
828   <element name="Solenoid_SlingShot_Left" defstate="0">
829      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="05" y="00" width="65"   height="80" /></text>
830      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="00" y="00" width="65"   height="80" /></text>
831      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="20" y="16" width="04"   height="60" /></rect>
832      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="20" y="76" width="24.5" height="04" /></rect>
833   </element>
834   <element name="Solenoid_SlingShot_Right" defstate="0">
835      <text string="/" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="-5"   y="00" width="65" height="80" /></text>
836      <text string="/" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="00"   y="00" width="65" height="80" /></text>
837      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="40"   y="16" width="04" height="60" /></rect>
838      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="19.5" y="76" width="24" height="04" /></rect>
839   </element>
840
841
842   <element name="Solenoid_Bumper_Black_Star" defstate="0">
843      <disk state="0"> <color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
844      <disk state="1"> <color red="1.0" green="0.0" blue="0.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
845      <text string="*"><color red="0.0" green="0.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
846      <disk>           <color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
847   </element>
848   <element name="Switch_Bumper_Black_Star" defstate="0">
849      <text string="*" state="9"><color red="0.0" green="0.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
850      <disk            state="0"><color red="0.0" green="0.0" blue="0.0" /><bounds x="14" y="15" width="50" height="50" /></disk>
851      <disk            state="1"><color red="0.5" green="0.5" blue="0.5" /><bounds x="14" y="15" width="50" height="50" /></disk>
852   </element>
853   <element name="Lamp_Bumper_GI">
854      <text string="*" state="9"><color red="0.0" green="0.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
855      <disk                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
856   </element>
857
858   <element name="Solenoid_Bumper_Blue_Star" defstate="0">
859      <disk state="0"> <color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
860      <disk state="1"> <color red="1.0" green="0.0" blue="0.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
861      <text string="*"><color red="0.3" green="0.5" blue="1.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
862      <disk>           <color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
863   </element>
864   <element name="Switch_Bumper_Blue_Star" defstate="0">
865      <text string="*" state="9"><color red="0.3" green="0.5" blue="1.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
866      <disk            state="0"><color red="0.3" green="0.3" blue="1.0" /><bounds x="14" y="15" width="50" height="50" /></disk>
867      <disk            state="1"><color red="0.5" green="0.5" blue="0.5" /><bounds x="14" y="15" width="50" height="50" /></disk>
868   </element>
869   <element name="Lamp_Bumper_Blue_1000" defstate="1">
870      <text string="*" state="9"><color red="0.3" green="0.5" blue="1.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
871      <disk            state="0"><color red="0.7" green="0.7" blue="0.7" /><bounds x="18" y="18" width="44" height="44" /></disk>
872      <disk            state="1"><color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
873      <text string="1000">       <color red="0.3" green="0.5" blue="1.0" /><bounds x="07" y="29" width="70" height="23" /></text>
874   </element>
875
876   <element name="Solenoid_Bumper_Red_Star" defstate="0">
877      <disk state="0"> <color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
878      <disk state="1"> <color red="1.0" green="0.0" blue="0.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
879      <text string="*"><color red="1.0" green="0.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
880      <disk>           <color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
881   </element>
882   <element name="Switch_Bumper_Red_Star" defstate="0">
883      <text string="*" state="9"><color red="1.0" green="0.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
884      <disk            state="0"><color red="1.0" green="0.0" blue="0.0" /><bounds x="14" y="15" width="50" height="50" /></disk>
885      <disk            state="1"><color red="0.5" green="0.5" blue="0.5" /><bounds x="14" y="15" width="50" height="50" /></disk>
886   </element>
887   <element name="Lamp_Bumper_Red_1000" defstate="0">
888      <text string="*" state="9"><color red="0.0" green="0.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
889      <disk            state="0"><color red="0.7" green="0.7" blue="0.7" /><bounds x="18" y="18" width="44" height="44" /></disk>
890      <disk            state="1"><color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
891      <text string="1000">       <color red="1.0" green="0.0" blue="0.0" /><bounds x="07" y="29" width="70" height="23" /></text>
892   </element>
893
894   <element name="Solenoid_Bumper_Yellow_Star" defstate="0">
895      <disk state="0"> <color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
896      <disk state="1"> <color red="1.0" green="0.0" blue="0.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
897      <text string="*"><color red="1.0" green="1.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
898      <disk>           <color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
899   </element>
900   <element name="Switch_Bumper_Yellow_Star" defstate="0">
901      <text string="*" state="9"><color red="1.0" green="1.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
902      <disk            state="0"><color red="1.0" green="1.0" blue="0.0" /><bounds x="14" y="15" width="50" height="50" /></disk>
903      <disk            state="1"><color red="0.5" green="0.5" blue="0.5" /><bounds x="14" y="15" width="50" height="50" /></disk>
904   </element>
905
906   <element name="Solenoid_Bumper_Green_Star" defstate="0">
907      <disk state="0"> <color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
908      <disk state="1"> <color red="1.0" green="0.0" blue="0.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
909      <text string="*"><color red="0.0" green="1.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
910      <disk>           <color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
911   </element>
912   <element name="Switch_Bumper_Green_Star" defstate="0">
913      <text string="*" state="9"><color red="0.0" green="1.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
914      <disk            state="0"><color red="0.0" green="1.0" blue="0.0" /><bounds x="14" y="15" width="50" height="50" /></disk>
915      <disk            state="1"><color red="0.5" green="0.5" blue="0.5" /><bounds x="14" y="15" width="50" height="50" /></disk>
916   </element>
917
918   <element name="Lamp_Bumper_Silver_100" defstate="1">
919      <text string="*" state="9"><color red="0.5" green="0.5" blue="0.5" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
920      <disk            state="0"><color red="0.7" green="0.7" blue="0.7" /><bounds x="18" y="18" width="44" height="44" /></disk>
921      <disk            state="1"><color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
922      <text string="100">        <color red="0.5" green="0.5" blue="0.5" /><bounds x="07" y="29" width="66" height="23" /></text>
923   </element>
924   <element name="Lamp_Bumper_Silver_1000" defstate="1">
925      <text string="*" state="9"><color red="0.5" green="0.5" blue="0.5" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
926      <disk            state="0"><color red="0.7" green="0.7" blue="0.7" /><bounds x="18" y="18" width="44" height="44" /></disk>
927      <disk            state="1"><color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
928      <text string="1000">       <color red="0.5" green="0.5" blue="0.5" /><bounds x="07" y="29" width="70" height="23" /></text>
929   </element>
930
931
932   <element name="Solenoid_Saucer" defstate="0">
933      <disk>          <color red="1.0" green="0.8" blue="0.5" /><bounds x="00" y="00" width="70" height="70" /></disk> <!-- 71 -->
934      <disk>          <color red="0.7" green="0.7" blue="0.7" /><bounds x="10" y="10" width="49" height="49" /></disk> <!-- 51 -->
935      <rect state="0"><color red="0.3" green="0.3" blue="0.3" /><bounds x="31" y="07" width="07" height="25" /></rect>
936      <rect state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="31" y="07" width="07" height="25" /></rect>
937      <disk>          <color red="0.0" green="0.0" blue="0.0" /><bounds x="27" y="40" width="15" height="15" /></disk>
938   </element>
939   <element name="Switch_Saucer" defstate="0">
940      <disk state="9"><color red="1.0" green="0.8" blue="0.5" /><bounds x="00" y="00" width="70" height="70" /></disk>
941      <disk state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="30" y="43" width="09" height="09" /></disk>
942      <disk state="1"><color red="0.0" green="0.0" blue="0.0" /><bounds x="30" y="43" width="09" height="09" /></disk>
943   </element>
944
945
946   <element name="Coil_Post_Up" defstate="0">
947      <disk state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="00" y="00" width="21" height="21" /></disk>
948   </element>
949   <element name="Solenoid_Post_Down" defstate="0">
950      <disk state="9"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="00" width="21" height="21" /></disk>
951      <disk state="1"><color red="0.50" green="0.10" blue="0.00" /><bounds x="01" y="01" width="19" height="19" /></disk>
952      <disk state="1"><color red="0.15" green="0.06" blue="0.00" /><bounds x="02" y="02" width="17" height="17" /></disk>
953      <rect state="1"><color red="0.50" green="0.10" blue="0.00" /><bounds x="10" y="02" width="01" height="17" /></rect>
954      <rect state="1"><color red="0.50" green="0.10" blue="0.00" /><bounds x="02" y="10" width="17" height="01" /></rect>
955      <disk state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="08" y="08" width="06" height="06" /></disk>
956   </element>
957   <element name="Lamp_Post" defstate="0">
958      <disk state="9"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="00" width="21" height="21" /></disk>
959      <disk          ><color red="0.50" green="0.10" blue="0.00" /><bounds x="01" y="01" width="19" height="19" /></disk>
960      <disk state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="02" y="02" width="17" height="17" /></disk>
961      <disk state="1"><color red="0.80" green="0.20" blue="0.00" /><bounds x="02" y="02" width="17" height="17" /></disk>
962      <rect          ><color red="0.50" green="0.10" blue="0.00" /><bounds x="10" y="02" width="01" height="17" /></rect>
963      <rect          ><color red="0.50" green="0.10" blue="0.00" /><bounds x="02" y="10" width="17" height="01" /></rect>
964   </element>
965
966
967<!-- Line colours -->
968
969   <element name="Draw_White" defstate="1">
970      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
971      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
972   </element>
973   <element name="Draw_Red" defstate="1">
974      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
975      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
976   </element>
977   <element name="Draw_Amber" defstate="1">
978      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
979      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
980   </element>
981
982   <element name="Canvas">
15   <element name="background">
98316      <rect>
984         <color red="0.0" green="0.0" blue="0.0" />
98517         <bounds left="0" top="0" right="1" bottom="1" />
18         <color red="0.0" green="0.0" blue="0.0" />
98619      </rect>
98720   </element>
21   <element name="P0"><text string="Ball / Match"><color red="1.0" green="1.0" blue="1.0" /></text></element>
22   <element name="P1"><text string="Credits"><color red="1.0" green="1.0" blue="1.0" /></text></element>
23   <element name="P2"><text string="Players"><color red="1.0" green="1.0" blue="1.0" /></text></element>
24   <element name="P3"><text string="Player 1"><color red="1.0" green="1.0" blue="1.0" /></text></element>
25   <element name="P4"><text string="Player 2"><color red="1.0" green="1.0" blue="1.0" /></text></element>
26   <element name="P5"><text string="Player 3"><color red="1.0" green="1.0" blue="1.0" /></text></element>
27   <element name="P6"><text string="Player 4"><color red="1.0" green="1.0" blue="1.0" /></text></element>
98828
29   <view name="Default Layout">
98930
990
991
992
993   <view name="Blank Playfield">
994
99531      <!-- Background -->
996      <backdrop element="Canvas"><bounds x="000" y="000" width="640" height="480" /></backdrop>
32      <backdrop element="background">
33         <bounds left="0" top="20" right="318" bottom="394" />
34      </backdrop>
99735
998      <bezel element="Draw_White"><bounds x="000" y="000" width="640" height="001" /></bezel>
999      <bezel element="Draw_White"><bounds x="000" y="000" width="001" height="480" /></bezel>
1000      <bezel element="Draw_White"><bounds x="640" y="000" width="001" height="480" /></bezel>
1001      <bezel element="Draw_White"><bounds x="000" y="480" width="640" height="001" /></bezel>
1002      <bezel element="Draw_White"><bounds x="320" y="000" width="001" height="480" /></bezel>
1003      <bezel element="Draw_White"><bounds x="320" y="320" width="320" height="001" /></bezel>
1004      <!--   <bezel element="Draw_White"><bounds x="159" y="000" width="001" height="480" /></bezel>   -->
36      <!-- LEDs -->
100537
1006
1007      <bezel element="Title_Bally"><bounds x="430" y="18" width="105" height="30" /></bezel>
1008
1009      <bezel element="Text_Playfield"><bounds x="040" y="010" width="250" height="14" /></bezel>
1010      <bezel element="Text_Legend"><bounds x="018" y="35" width="300" height="12" /></bezel>
1011      <bezel element="Text_Multiball"><bounds x="013" y="350" width="314" height="12" /></bezel>
1012
1013
1014      <!-- Backbox -->
1015
1016      <!-- MPU Board Power On Self Test LED -->
1017      <bezel element="Text_MPU_LED">         <bounds x="609" y="342" width="30" height="10" /></bezel>
1018      <bezel name="led0" element="LED_Green"><bounds x="618" y="328" width="10" height="10" /></bezel>
1019
1020      <!-- MPU Board Activity Switch -->
1021      <bezel element="Text_Activity">                                      <bounds x="540" y="342" width="50" height="10" /></bezel>
1022      <bezel element="Switch_Push-Button" inputtag="TEST" inputmask="0x02"><bounds x="550" y="331" width="20" height="10" /></bezel>
1023      <bezel element="Key_0">                                              <bounds x="571" y="330" width="10" height="10" /></bezel>
1024
1025
102638      <!-- Player 1 Score -->
1027      <bezel name="lamp14" element="Lamp_P1"><bounds x="330" y="55" width="15" height="15" /></bezel>         <!-- Backbox ~ 1st Player Up -->
1028      <bezel name="digit17" element="Digit"><bounds x="360" y="55" width="10" height="15" /></bezel>
1029      <bezel name="digit16" element="Digit"><bounds x="374" y="55" width="10" height="15" /></bezel>
1030      <bezel name="digit15" element="Digit"><bounds x="388" y="55" width="10" height="15" /></bezel>
1031      <bezel name="digit14" element="Digit"><bounds x="402" y="55" width="10" height="15" /></bezel>
1032      <bezel name="digit13" element="Digit"><bounds x="416" y="55" width="10" height="15" /></bezel>
1033      <bezel name="digit12" element="Digit"><bounds x="430" y="55" width="10" height="15" /></bezel>
1034      <bezel name="digit11" element="Digit"><bounds x="444" y="55" width="10" height="15" /></bezel>
103539
40      <bezel name="digit6" element="digit">
41         <bounds left="10" top="45" right="44" bottom="84" />
42      </bezel>
43      <bezel name="digit5" element="digit">
44         <bounds left="54" top="45" right="88" bottom="84" />
45      </bezel>
46      <bezel name="digit4" element="digit">
47         <bounds left="98" top="45" right="132" bottom="84" />
48      </bezel>
49      <bezel name="digit3" element="digit">
50         <bounds left="142" top="45" right="176" bottom="84" />
51      </bezel>
52      <bezel name="digit2" element="digit">
53         <bounds left="186" top="45" right="220" bottom="84" />
54      </bezel>
55      <bezel name="digit1" element="digit">
56         <bounds left="230" top="45" right="264" bottom="84" />
57      </bezel>
58      <bezel name="digit0" element="digit">
59         <bounds left="274" top="45" right="308" bottom="84" />
60      </bezel>
61
103662      <!-- Player 2 Score -->
1037      <bezel name="lamp29" element="Lamp_P2"><bounds x="615" y="55" width="15" height="15" /></bezel>         <!-- Backbox ~ 2nd Player Up -->
1038      <bezel name="digit27" element="Digit"><bounds x="506" y="55" width="10" height="15" /></bezel>
1039      <bezel name="digit26" element="Digit"><bounds x="520" y="55" width="10" height="15" /></bezel>
1040      <bezel name="digit25" element="Digit"><bounds x="534" y="55" width="10" height="15" /></bezel>
1041      <bezel name="digit24" element="Digit"><bounds x="548" y="55" width="10" height="15" /></bezel>
1042      <bezel name="digit23" element="Digit"><bounds x="562" y="55" width="10" height="15" /></bezel>
1043      <bezel name="digit22" element="Digit"><bounds x="576" y="55" width="10" height="15" /></bezel>
1044      <bezel name="digit21" element="Digit"><bounds x="590" y="55" width="10" height="15" /></bezel>
63      <bezel name="digit16" element="digit">
64         <bounds left="10" top="105" right="44" bottom="144" />
65      </bezel>
66      <bezel name="digit15" element="digit">
67         <bounds left="54" top="105" right="88" bottom="144" />
68      </bezel>
69      <bezel name="digit14" element="digit">
70         <bounds left="98" top="105" right="132" bottom="144" />
71      </bezel>
72      <bezel name="digit13" element="digit">
73         <bounds left="142" top="105" right="176" bottom="144" />
74      </bezel>
75      <bezel name="digit12" element="digit">
76         <bounds left="186" top="105" right="220" bottom="144" />
77      </bezel>
78      <bezel name="digit11" element="digit">
79         <bounds left="230" top="105" right="264" bottom="144" />
80      </bezel>
81      <bezel name="digit10" element="digit">
82         <bounds left="274" top="105" right="308" bottom="144" />
83      </bezel>
104584
104685      <!-- Player 3 Score -->
1047      <bezel name="lamp44" element="Lamp_P3"><bounds x="330" y="250" width="15" height="15" /></bezel>      <!-- Backbox ~ 3rd Player Up -->
1048      <bezel name="digit37" element="Digit"><bounds x="360" y="250" width="10" height="15" /></bezel>
1049      <bezel name="digit36" element="Digit"><bounds x="374" y="250" width="10" height="15" /></bezel>
1050      <bezel name="digit35" element="Digit"><bounds x="388" y="250" width="10" height="15" /></bezel>
1051      <bezel name="digit34" element="Digit"><bounds x="402" y="250" width="10" height="15" /></bezel>
1052      <bezel name="digit33" element="Digit"><bounds x="416" y="250" width="10" height="15" /></bezel>
1053      <bezel name="digit32" element="Digit"><bounds x="430" y="250" width="10" height="15" /></bezel>
1054      <bezel name="digit31" element="Digit"><bounds x="444" y="250" width="10" height="15" /></bezel>
86      <bezel name="digit26" element="digit">
87         <bounds left="10" top="165" right="44" bottom="204" />
88      </bezel>
89      <bezel name="digit25" element="digit">
90         <bounds left="54" top="165" right="88" bottom="204" />
91      </bezel>
92      <bezel name="digit24" element="digit">
93         <bounds left="98" top="165" right="132" bottom="204" />
94      </bezel>
95      <bezel name="digit23" element="digit">
96         <bounds left="142" top="165" right="176" bottom="204" />
97      </bezel>
98      <bezel name="digit22" element="digit">
99         <bounds left="186" top="165" right="220" bottom="204" />
100      </bezel>
101      <bezel name="digit21" element="digit">
102         <bounds left="230" top="165" right="264" bottom="204" />
103      </bezel>
104      <bezel name="digit20" element="digit">
105         <bounds left="274" top="165" right="308" bottom="204" />
106      </bezel>
1055107
1056108      <!-- Player 4 Score -->
1057      <bezel name="lamp59" element="Lamp_P4"><bounds x="615" y="250" width="15" height="15" /></bezel>      <!-- Backbox ~ 4th Player Up -->
1058      <bezel name="digit47" element="Digit"><bounds x="506" y="250" width="10" height="15" /></bezel>
1059      <bezel name="digit46" element="Digit"><bounds x="520" y="250" width="10" height="15" /></bezel>
1060      <bezel name="digit45" element="Digit"><bounds x="534" y="250" width="10" height="15" /></bezel>
1061      <bezel name="digit44" element="Digit"><bounds x="548" y="250" width="10" height="15" /></bezel>
1062      <bezel name="digit43" element="Digit"><bounds x="562" y="250" width="10" height="15" /></bezel>
1063      <bezel name="digit42" element="Digit"><bounds x="576" y="250" width="10" height="15" /></bezel>
1064      <bezel name="digit41" element="Digit"><bounds x="590" y="250" width="10" height="15" /></bezel>
109      <bezel name="digit36" element="digit">
110         <bounds left="10" top="225" right="44" bottom="264" />
111      </bezel>
112      <bezel name="digit35" element="digit">
113         <bounds left="54" top="225" right="88" bottom="264" />
114      </bezel>
115      <bezel name="digit34" element="digit">
116         <bounds left="98" top="225" right="132" bottom="264" />
117      </bezel>
118      <bezel name="digit33" element="digit">
119         <bounds left="142" top="225" right="176" bottom="264" />
120      </bezel>
121      <bezel name="digit32" element="digit">
122         <bounds left="186" top="225" right="220" bottom="264" />
123      </bezel>
124      <bezel name="digit31" element="digit">
125         <bounds left="230" top="225" right="264" bottom="264" />
126      </bezel>
127      <bezel name="digit30" element="digit">
128         <bounds left="274" top="225" right="308" bottom="264" />
129      </bezel>
1065130
1066      <!-- Credits and Ball In Play / Match -->
1067      <bezel element="Text_Credit"><bounds x="542" y="142" width="48" height="8" /></bezel>
1068      <bezel name="lamp12"  element="Ball_In_Play"><bounds x="586" y="105" width="50" height="11" /></bezel>   <!-- Backbox ~ Ball In Play -->
1069      <bezel name="lamp25"  element="Match"><bounds x="596" y="152" width="25" height="11" /></bezel>         <!-- Backbox ~ Match -->
1070      <bezel name="digit55" element="Digit"><bounds x="554" y="125" width="10" height="15" /></bezel>
1071      <bezel name="digit54" element="Digit"><bounds x="568" y="125" width="10" height="15" /></bezel>
1072      <bezel name="digit52" element="Digit"><bounds x="596" y="125" width="10" height="15" /></bezel>
1073      <bezel name="digit51" element="Digit"><bounds x="610" y="125" width="10" height="15" /></bezel>
131      <!-- Credits and Balls -->
132      <bezel name="digit44" element="digit">
133         <bounds left="10" top="345" right="44" bottom="384" />
134      </bezel>
135      <bezel name="digit43" element="digit">
136         <bounds left="54" top="345" right="88" bottom="384" />
137      </bezel>
138      <bezel name="digit41" element="digit">
139         <bounds left="186" top="345" right="220" bottom="384" />
140      </bezel>
141      <bezel name="digit40" element="digit">
142         <bounds left="230" top="345" right="264" bottom="384" />
143      </bezel>
1074144
1075      <bezel name="lamp10" element="Shoot_Again"><bounds x="420" y="295" width="60" height="19" /></bezel>   <!-- Backbox ~ Same Player Shoots Again -->
1076      <bezel name="lamp13" element="Lamp_1P"><bounds x="345" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 1 Player Game -->
1077      <bezel name="lamp28" element="Lamp_2P"><bounds x="360" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 2 Player Game -->
1078      <bezel name="lamp43" element="Lamp_3P"><bounds x="375" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 3 Player Game -->
1079      <bezel name="lamp58" element="Lamp_4P"><bounds x="390" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 4 Player Game -->
1080      <bezel name="lamp27" element="High_Score_To_Date"><bounds x="438" y="6" width="90" height="11" /></bezel>   <!-- Backbox ~ High Score To Date -->
1081      <bezel name="lamp42" element="Game_Over"><bounds x="580" y="300" width="45" height="11" /></bezel>      <!-- Backbox ~ Game Over -->
1082      <bezel name="lamp57" element="Tilt"><bounds x="480" y="297" width="50" height="16" /></bezel>         <!-- Backbox ~ Tilt -->
1083
1084
1085
1086      <bezel element="Text_Lamps"><bounds x="410" y="360" width="60" height="11" /></bezel>
1087      <bezel element="Text_15"><bounds x="552" y="373" width="30" height="11" /></bezel>
1088      <bezel element="Text_30"><bounds x="552" y="388" width="30" height="11" /></bezel>
1089      <bezel element="Text_45"><bounds x="552" y="403" width="30" height="11" /></bezel>
1090      <bezel element="Text_60"><bounds x="552" y="418" width="30" height="11" /></bezel>
1091
1092      <!-- Lamps controlled by U1 on Lamp Driver Board -->
1093      <bezel name="lamp0"  element="Lamp_White"><bounds x="330" y="375" width="8" height="8" /></bezel>
1094      <bezel name="lamp1"  element="Lamp_White"><bounds x="345" y="375" width="8" height="8" /></bezel>
1095      <bezel name="lamp2"  element="Lamp_White"><bounds x="360" y="375" width="8" height="8" /></bezel>
1096      <bezel name="lamp3"  element="Lamp_White"><bounds x="375" y="375" width="8" height="8" /></bezel>
1097      <bezel name="lamp4"  element="Lamp_White"><bounds x="390" y="375" width="8" height="8" /></bezel>
1098      <bezel name="lamp5"  element="Lamp_White"><bounds x="405" y="375" width="8" height="8" /></bezel>
1099      <bezel name="lamp6"  element="Lamp_White"><bounds x="420" y="375" width="8" height="8" /></bezel>
1100      <bezel name="lamp7"  element="Lamp_White"><bounds x="435" y="375" width="8" height="8" /></bezel>
1101      <bezel name="lamp8"  element="Lamp_White"><bounds x="450" y="375" width="8" height="8" /></bezel>
1102      <bezel name="lamp9"  element="Lamp_White"><bounds x="465" y="375" width="8" height="8" /></bezel>
1103      <bezel name="lamp10" element="Lamp_White"><bounds x="480" y="375" width="8" height="8" /></bezel>
1104      <bezel name="lamp11" element="Lamp_White"><bounds x="495" y="375" width="8" height="8" /></bezel>
1105      <bezel name="lamp12" element="Lamp_White"><bounds x="510" y="375" width="8" height="8" /></bezel>
1106      <bezel name="lamp13" element="Lamp_White"><bounds x="525" y="375" width="8" height="8" /></bezel>
1107      <bezel name="lamp14" element="Lamp_White"><bounds x="540" y="375" width="8" height="8" /></bezel>
1108
1109      <!-- Lamps controlled by U2 on Lamp Driver Board -->
1110      <bezel name="lamp15" element="Lamp_White"><bounds x="330" y="390" width="8" height="8" /></bezel>
1111      <bezel name="lamp16" element="Lamp_White"><bounds x="345" y="390" width="8" height="8" /></bezel>
1112      <bezel name="lamp17" element="Lamp_White"><bounds x="360" y="390" width="8" height="8" /></bezel>
1113      <bezel name="lamp18" element="Lamp_White"><bounds x="375" y="390" width="8" height="8" /></bezel>
1114      <bezel name="lamp19" element="Lamp_White"><bounds x="390" y="390" width="8" height="8" /></bezel>
1115      <bezel name="lamp20" element="Lamp_White"><bounds x="405" y="390" width="8" height="8" /></bezel>
1116      <bezel name="lamp21" element="Lamp_White"><bounds x="420" y="390" width="8" height="8" /></bezel>
1117      <bezel name="lamp22" element="Lamp_White"><bounds x="435" y="390" width="8" height="8" /></bezel>
1118      <bezel name="lamp23" element="Lamp_White"><bounds x="450" y="390" width="8" height="8" /></bezel>
1119      <bezel name="lamp24" element="Lamp_White"><bounds x="465" y="390" width="8" height="8" /></bezel>
1120      <bezel name="lamp25" element="Lamp_White"><bounds x="480" y="390" width="8" height="8" /></bezel>
1121      <bezel name="lamp26" element="Lamp_White"><bounds x="495" y="390" width="8" height="8" /></bezel>
1122      <bezel name="lamp27" element="Lamp_White"><bounds x="510" y="390" width="8" height="8" /></bezel>
1123      <bezel name="lamp28" element="Lamp_White"><bounds x="525" y="390" width="8" height="8" /></bezel>
1124      <bezel name="lamp29" element="Lamp_White"><bounds x="540" y="390" width="8" height="8" /></bezel>
1125
1126      <!-- Lamps controlled by U3 on Lamp Driver Board -->
1127      <bezel name="lamp30" element="Lamp_White"><bounds x="330" y="405" width="8" height="8" /></bezel>
1128      <bezel name="lamp31" element="Lamp_White"><bounds x="345" y="405" width="8" height="8" /></bezel>
1129      <bezel name="lamp32" element="Lamp_White"><bounds x="360" y="405" width="8" height="8" /></bezel>
1130      <bezel name="lamp33" element="Lamp_White"><bounds x="375" y="405" width="8" height="8" /></bezel>
1131      <bezel name="lamp34" element="Lamp_White"><bounds x="390" y="405" width="8" height="8" /></bezel>
1132      <bezel name="lamp35" element="Lamp_White"><bounds x="405" y="405" width="8" height="8" /></bezel>
1133      <bezel name="lamp36" element="Lamp_White"><bounds x="420" y="405" width="8" height="8" /></bezel>
1134      <bezel name="lamp37" element="Lamp_White"><bounds x="435" y="405" width="8" height="8" /></bezel>
1135      <bezel name="lamp38" element="Lamp_White"><bounds x="450" y="405" width="8" height="8" /></bezel>
1136      <bezel name="lamp39" element="Lamp_White"><bounds x="465" y="405" width="8" height="8" /></bezel>
1137      <bezel name="lamp40" element="Lamp_White"><bounds x="480" y="405" width="8" height="8" /></bezel>
1138      <bezel name="lamp41" element="Lamp_White"><bounds x="495" y="405" width="8" height="8" /></bezel>
1139      <bezel name="lamp42" element="Lamp_White"><bounds x="510" y="405" width="8" height="8" /></bezel>
1140      <bezel name="lamp43" element="Lamp_White"><bounds x="525" y="405" width="8" height="8" /></bezel>
1141      <bezel name="lamp44" element="Lamp_White"><bounds x="540" y="405" width="8" height="8" /></bezel>
1142
1143      <!-- Lamps controlled by U4 on Lamp Driver Board -->
1144      <bezel name="lamp45" element="Lamp_White"><bounds x="330" y="420" width="8" height="8" /></bezel>
1145      <bezel name="lamp46" element="Lamp_White"><bounds x="345" y="420" width="8" height="8" /></bezel>
1146      <bezel name="lamp47" element="Lamp_White"><bounds x="360" y="420" width="8" height="8" /></bezel>
1147      <bezel name="lamp48" element="Lamp_White"><bounds x="375" y="420" width="8" height="8" /></bezel>
1148      <bezel name="lamp49" element="Lamp_White"><bounds x="390" y="420" width="8" height="8" /></bezel>
1149      <bezel name="lamp50" element="Lamp_White"><bounds x="405" y="420" width="8" height="8" /></bezel>
1150      <bezel name="lamp51" element="Lamp_White"><bounds x="420" y="420" width="8" height="8" /></bezel>
1151      <bezel name="lamp52" element="Lamp_White"><bounds x="435" y="420" width="8" height="8" /></bezel>
1152      <bezel name="lamp53" element="Lamp_White"><bounds x="450" y="420" width="8" height="8" /></bezel>
1153      <bezel name="lamp54" element="Lamp_White"><bounds x="465" y="420" width="8" height="8" /></bezel>
1154      <bezel name="lamp55" element="Lamp_White"><bounds x="480" y="420" width="8" height="8" /></bezel>
1155      <bezel name="lamp56" element="Lamp_White"><bounds x="495" y="420" width="8" height="8" /></bezel>
1156      <bezel name="lamp57" element="Lamp_White"><bounds x="510" y="420" width="8" height="8" /></bezel>
1157      <bezel name="lamp58" element="Lamp_White"><bounds x="525" y="420" width="8" height="8" /></bezel>
1158      <bezel name="lamp59" element="Lamp_White"><bounds x="540" y="420" width="8" height="8" /></bezel>
1159
1160
1161
1162      <bezel element="Text_Solenoids"><bounds x="382" y="437" width="100" height="11" /></bezel>
1163      <bezel name="solenoid0"  element="Solenoid_PullDown"><bounds x="330" y="452" width="9" height="19" /></bezel>
1164      <bezel name="solenoid1"  element="Solenoid_PullDown"><bounds x="345" y="452" width="9" height="19" /></bezel>
1165      <bezel name="solenoid2"  element="Solenoid_PullDown"><bounds x="360" y="452" width="9" height="19" /></bezel>
1166      <bezel name="solenoid3"  element="Solenoid_PullDown"><bounds x="375" y="452" width="9" height="19" /></bezel>
1167      <bezel name="solenoid4"  element="Solenoid_PullDown"><bounds x="390" y="452" width="9" height="19" /></bezel>
1168      <bezel name="solenoid5"  element="Solenoid_PullDown"><bounds x="405" y="452" width="9" height="19" /></bezel>
1169      <bezel name="solenoid6"  element="Solenoid_PullDown"><bounds x="420" y="452" width="9" height="19" /></bezel>
1170      <bezel name="solenoid7"  element="Solenoid_PullDown"><bounds x="435" y="452" width="9" height="19" /></bezel>
1171      <bezel name="solenoid8"  element="Solenoid_PullDown"><bounds x="450" y="452" width="9" height="19" /></bezel>
1172      <bezel name="solenoid9"  element="Solenoid_PullDown"><bounds x="465" y="452" width="9" height="19" /></bezel>
1173      <bezel name="solenoid10" element="Solenoid_PullDown"><bounds x="480" y="452" width="9" height="19" /></bezel>
1174      <bezel name="solenoid11" element="Solenoid_PullDown"><bounds x="495" y="452" width="9" height="19" /></bezel>
1175      <bezel name="solenoid12" element="Solenoid_PullDown"><bounds x="510" y="452" width="9" height="19" /></bezel>
1176      <bezel name="solenoid13" element="Solenoid_PullDown"><bounds x="525" y="452" width="9" height="19" /></bezel>
1177      <bezel name="solenoid14" element="Solenoid_PullDown"><bounds x="540" y="452" width="9" height="19" /></bezel>
1178
1179      <bezel element="Text_Coils"><bounds x="572" y="437" width="50" height="11" /></bezel>
1180      <bezel name="solenoid16" element="Coil_PullDown"><bounds x="570" y="459" width="09" height="12" /></bezel>
1181      <bezel name="solenoid17" element="Coil_PullDown"><bounds x="585" y="459" width="09" height="12" /></bezel>
1182      <bezel name="solenoid18" element="Coil_PullDown"><bounds x="600" y="459" width="09" height="12" /></bezel>
1183      <bezel name="solenoid19" element="Coil_PullDown"><bounds x="615" y="459" width="09" height="12" /></bezel>
1184
1185
1186
1187      <!-- Cabinet Switches -->
1188      <bezel element="Text_Service">                                       <bounds x="485" y="342" width="50" height="10" /></bezel>
1189      <bezel element="Switch_Push-Button" inputtag="TEST" inputmask="0x01"><bounds x="495" y="331" width="20" height="10" /></bezel>
1190      <bezel element="Key_9">                                              <bounds x="516" y="330" width="10" height="10" /></bezel>
1191
1192      <bezel element="Text_Slam">                                     <bounds x="430" y="342" width="50" height="10" /></bezel>
1193      <bezel element="Switch_SlamTilt" inputtag="X1" inputmask="0x80"><bounds x="434" y="331" width="25" height="08" /></bezel>
1194      <bezel element="Key_Equals">                                    <bounds x="461" y="330" width="10" height="10" /></bezel>
1195
1196      <bezel element="Text_Tilt">                                 <bounds x="380" y="342" width="50" height="10" /></bezel>
1197      <bezel element="Switch_Tilt" inputtag="X0" inputmask="0x40"><bounds x="390" y="324" width="17" height="17" /></bezel>
1198      <bezel element="Key_T">                                     <bounds x="411" y="330" width="10" height="10" /></bezel>
1199
1200
1201      <!-- Misc Solenoids -->
1202      <bezel name="solenoid5"  element="Solenoid_Knocker"><bounds x="297" y="457" width="23" height="09" /></bezel>
1203      <bezel element="Text_Knocker">   <!-- Knocker -->   <bounds x="290" y="467" width="30" height="10" /></bezel>
1204
1205      <!-- Misc Lamps -->
1206      <bezel name="lamp55" element="Credit_Indicator"><bounds x="23" y="456" width="70" height="21" /></bezel><!-- Credit Indicator -->
1207
1208
1209      <!-- Outhole -->
1210      <bezel name="solenoid6"  element="Solenoid_Outhole">                        <bounds x="150" y="455" width="58" height="22" /></bezel>
1211      <bezel element="Switch_RollOn_WireForm_Left" inputtag="X0" inputmask="0x80"><bounds x="163" y="453" width="20" height="16" /></bezel>
1212      <bezel element="Key_BSpace">                                                <bounds x="185" y="455" width="15" height="14" /></bezel>
1213
1214
1215
1216      <bezel element="Text_Switch"><bounds x="070" y="65" width="70" height="12" /></bezel>
1217      <bezel element="ST0">        <bounds x="020" y="080" width="30" height="11" /></bezel>
1218      <bezel element="ST1">        <bounds x="055" y="080" width="30" height="11" /></bezel>
1219      <bezel element="ST2">        <bounds x="090" y="080" width="30" height="11" /></bezel>
1220      <bezel element="ST3">        <bounds x="125" y="080" width="30" height="11" /></bezel>
1221      <bezel element="ST4">        <bounds x="160" y="080" width="30" height="11" /></bezel>
1222      <bezel element="I0">         <bounds x="001" y="100" width="20" height="11" /></bezel>
1223      <bezel element="I1">         <bounds x="001" y="130" width="20" height="11" /></bezel>
1224      <bezel element="I2">         <bounds x="001" y="160" width="20" height="11" /></bezel>
1225      <bezel element="I3">         <bounds x="001" y="190" width="20" height="11" /></bezel>
1226      <bezel element="I4">         <bounds x="001" y="220" width="20" height="11" /></bezel>
1227      <bezel element="I5">         <bounds x="001" y="250" width="20" height="11" /></bezel>
1228      <bezel element="I6">         <bounds x="001" y="280" width="20" height="11" /></bezel>
1229      <bezel element="I7">         <bounds x="001" y="310" width="20" height="11" /></bezel>
1230
1231
1232      <bezel element="Switch_Push-Button" inputtag="X0" inputmask="0x01"><bounds x="25" y="100" width="20" height="10" /></bezel>
1233      <bezel element="Key_Dot">                                          <bounds x="28" y="107" width="14" height="14" /></bezel>
1234      <bezel element="Switch_Push-Button" inputtag="X0" inputmask="0x02"><bounds x="25" y="130" width="20" height="10" /></bezel>
1235      <bezel element="Key_FSlash">                                       <bounds x="31" y="141" width="10" height="10" /></bezel>
1236      <bezel element="Switch_Push-Button" inputtag="X0" inputmask="0x04"><bounds x="25" y="160" width="20" height="10" /></bezel>
1237      <bezel element="Key_OBrkt">                                        <bounds x="31" y="171" width="10" height="10" /></bezel>
1238      <bezel element="Switch_Push-Button" inputtag="X0" inputmask="0x08"><bounds x="25" y="190" width="20" height="10" /></bezel>
1239      <bezel element="Key_CBrkt">                                        <bounds x="31" y="201" width="10" height="10" /></bezel>
1240      <bezel element="Switch_Push-Button" inputtag="X0" inputmask="0x10"><bounds x="25" y="220" width="20" height="10" /></bezel>
1241      <bezel element="Key_BSlash">                                       <bounds x="31" y="231" width="10" height="10" /></bezel>
1242      <bezel element="Switch_Push-Button" inputtag="X0" inputmask="0x20"><bounds x="25" y="250" width="20" height="10" /></bezel>
1243      <bezel element="Key_1">                                            <bounds x="31" y="261" width="10" height="10" /></bezel>
1244      <bezel element="Switch_Push-Button" inputtag="X0" inputmask="0x40"><bounds x="25" y="280" width="20" height="10" /></bezel>
1245      <bezel element="Key_T">                                            <bounds x="31" y="291" width="10" height="10" /></bezel>
1246      <bezel element="Switch_Push-Button" inputtag="X0" inputmask="0x80"><bounds x="25" y="310" width="20" height="10" /></bezel>
1247      <bezel element="Key_BSpace">                                       <bounds x="28" y="320" width="15" height="14" /></bezel>
1248
1249
1250      <bezel element="Switch_Push-Button" inputtag="X1" inputmask="0x01"><bounds x="60" y="100" width="20" height="10" /></bezel>
1251      <bezel element="Key_7">                                            <bounds x="66" y="111" width="10" height="10" /></bezel>
1252      <bezel element="Switch_Push-Button" inputtag="X1" inputmask="0x02"><bounds x="60" y="130" width="20" height="10" /></bezel>
1253      <bezel element="Key_5">                                            <bounds x="66" y="141" width="10" height="10" /></bezel>
1254      <bezel element="Switch_Push-Button" inputtag="X1" inputmask="0x04"><bounds x="60" y="160" width="20" height="10" /></bezel>
1255      <bezel element="Key_6">                                            <bounds x="66" y="171" width="10" height="10" /></bezel>
1256      <bezel element="Switch_Push-Button" inputtag="X1" inputmask="0x08"><bounds x="60" y="190" width="20" height="10" /></bezel>
1257      <bezel element="Key_Enter">                                        <bounds x="63" y="199" width="15" height="14" /></bezel>
1258      <bezel element="Switch_Push-Button" inputtag="X1" inputmask="0x10"><bounds x="60" y="220" width="20" height="10" /></bezel>
1259      <bezel element="Key_Quote">                                        <bounds x="64" y="230" width="14" height="14" /></bezel>
1260      <bezel element="Switch_Push-Button" inputtag="X1" inputmask="0x20"><bounds x="60" y="250" width="20" height="10" /></bezel>
1261      <bezel element="Key_SColon">                                       <bounds x="65" y="259" width="11" height="11" /></bezel>
1262      <bezel element="Switch_Push-Button" inputtag="X1" inputmask="0x40"><bounds x="60" y="280" width="20" height="10" /></bezel>
1263      <bezel element="Key_L">                                            <bounds x="66" y="291" width="10" height="10" /></bezel>
1264      <bezel element="Switch_Push-Button" inputtag="X1" inputmask="0x80"><bounds x="60" y="310" width="20" height="10" /></bezel>
1265      <bezel element="Key_Equals">                                       <bounds x="66" y="321" width="10" height="10" /></bezel>
1266
1267
1268      <bezel element="Switch_Push-Button" inputtag="X2" inputmask="0x01"><bounds x="095" y="100" width="20" height="10" /></bezel>
1269      <bezel element="Key_K">                                            <bounds x="101" y="111" width="10" height="10" /></bezel>
1270      <bezel element="Switch_Push-Button" inputtag="X2" inputmask="0x02"><bounds x="095" y="130" width="20" height="10" /></bezel>
1271      <bezel element="Key_J">                                            <bounds x="101" y="141" width="10" height="10" /></bezel>
1272      <bezel element="Switch_Push-Button" inputtag="X2" inputmask="0x04"><bounds x="095" y="160" width="20" height="10" /></bezel>
1273      <bezel element="Key_H">                                            <bounds x="101" y="171" width="10" height="10" /></bezel>
1274      <bezel element="Switch_Push-Button" inputtag="X2" inputmask="0x08"><bounds x="095" y="190" width="20" height="10" /></bezel>
1275      <bezel element="Key_G">                                            <bounds x="101" y="201" width="10" height="10" /></bezel>
1276      <bezel element="Switch_Push-Button" inputtag="X2" inputmask="0x10"><bounds x="095" y="220" width="20" height="10" /></bezel>
1277      <bezel element="Key_F">                                            <bounds x="101" y="231" width="10" height="10" /></bezel>
1278      <bezel element="Switch_Push-Button" inputtag="X2" inputmask="0x20"><bounds x="095" y="250" width="20" height="10" /></bezel>
1279      <bezel element="Key_D">                                            <bounds x="101" y="261" width="10" height="10" /></bezel>
1280      <bezel element="Switch_Push-Button" inputtag="X2" inputmask="0x40"><bounds x="095" y="280" width="20" height="10" /></bezel>
1281      <bezel element="Key_S">                                            <bounds x="101" y="291" width="10" height="10" /></bezel>
1282      <bezel element="Switch_Push-Button" inputtag="X2" inputmask="0x80"><bounds x="095" y="310" width="20" height="10" /></bezel>
1283      <bezel element="Key_A">                                            <bounds x="101" y="321" width="10" height="10" /></bezel>
1284
1285
1286      <bezel element="Switch_Push-Button" inputtag="X3" inputmask="0x01"><bounds x="130" y="100" width="20" height="10" /></bezel>
1287      <bezel element="Key_O">                                            <bounds x="136" y="111" width="10" height="10" /></bezel>
1288      <bezel element="Switch_Push-Button" inputtag="X3" inputmask="0x02"><bounds x="130" y="130" width="20" height="10" /></bezel>
1289      <bezel element="Key_I">                                            <bounds x="136" y="141" width="10" height="10" /></bezel>
1290      <bezel element="Switch_Push-Button" inputtag="X3" inputmask="0x04"><bounds x="130" y="160" width="20" height="10" /></bezel>
1291      <bezel element="Key_U">                                            <bounds x="136" y="171" width="10" height="10" /></bezel>
1292      <bezel element="Switch_Push-Button" inputtag="X3" inputmask="0x08"><bounds x="130" y="190" width="20" height="10" /></bezel>
1293      <bezel element="Key_Y">                                            <bounds x="136" y="201" width="10" height="10" /></bezel>
1294      <bezel element="Switch_Push-Button" inputtag="X3" inputmask="0x10"><bounds x="130" y="220" width="20" height="10" /></bezel>
1295      <bezel element="Key_R">                                            <bounds x="136" y="231" width="10" height="10" /></bezel>
1296      <bezel element="Switch_Push-Button" inputtag="X3" inputmask="0x20"><bounds x="130" y="250" width="20" height="10" /></bezel>
1297      <bezel element="Key_E">                                            <bounds x="136" y="261" width="10" height="10" /></bezel>
1298      <bezel element="Switch_Push-Button" inputtag="X3" inputmask="0x40"><bounds x="130" y="280" width="20" height="10" /></bezel>
1299      <bezel element="Key_W">                                            <bounds x="136" y="291" width="10" height="10" /></bezel>
1300      <bezel element="Switch_Push-Button" inputtag="X3" inputmask="0x80"><bounds x="130" y="310" width="20" height="10" /></bezel>
1301      <bezel element="Key_Q">                                            <bounds x="136" y="321" width="10" height="10" /></bezel>
1302
1303
1304      <bezel element="Switch_Push-Button" inputtag="X4" inputmask="0x01"><bounds x="165" y="100" width="20" height="10" /></bezel>
1305      <bezel element="Key_Comma">                                        <bounds x="168" y="107" width="14" height="14" /></bezel>
1306      <bezel element="Switch_Push-Button" inputtag="X4" inputmask="0x02"><bounds x="165" y="130" width="20" height="10" /></bezel>
1307      <bezel element="Key_M">                                            <bounds x="171" y="141" width="10" height="10" /></bezel>
1308      <bezel element="Switch_Push-Button" inputtag="X4" inputmask="0x04"><bounds x="165" y="160" width="20" height="10" /></bezel>
1309      <bezel element="Key_N">                                            <bounds x="171" y="171" width="10" height="10" /></bezel>
1310      <bezel element="Switch_Push-Button" inputtag="X4" inputmask="0x08"><bounds x="165" y="190" width="20" height="10" /></bezel>
1311      <bezel element="Key_B">                                            <bounds x="171" y="201" width="10" height="10" /></bezel>
1312      <bezel element="Switch_Push-Button" inputtag="X4" inputmask="0x10"><bounds x="165" y="220" width="20" height="10" /></bezel>
1313      <bezel element="Key_V">                                            <bounds x="171" y="231" width="10" height="10" /></bezel>
1314      <bezel element="Switch_Push-Button" inputtag="X4" inputmask="0x20"><bounds x="165" y="250" width="20" height="10" /></bezel>
1315      <bezel element="Key_C">                                            <bounds x="171" y="261" width="10" height="10" /></bezel>
1316      <bezel element="Switch_Push-Button" inputtag="X4" inputmask="0x40"><bounds x="165" y="280" width="20" height="10" /></bezel>
1317      <bezel element="Key_X">                                            <bounds x="171" y="291" width="10" height="10" /></bezel>
1318      <bezel element="Switch_Push-Button" inputtag="X4" inputmask="0x80"><bounds x="165" y="310" width="20" height="10" /></bezel>
1319      <bezel element="Key_Z">                                            <bounds x="171" y="321" width="10" height="10" /></bezel>
1320
145      <bezel element="P0"><bounds left="200" right="258" top="330" bottom="342" /></bezel>
146      <bezel element="P1"><bounds left="30" right="88" top="330" bottom="342" /></bezel>
147      <bezel name="text3" element="P3"><bounds left="100" right="180" top="30" bottom="42" /></bezel>
148      <bezel name="text2" element="P4"><bounds left="100" right="180" top="90" bottom="102" /></bezel>
149      <bezel name="text1" element="P5"><bounds left="100" right="180" top="150" bottom="162" /></bezel>
150      <bezel name="text0" element="P6"><bounds left="100" right="180" top="210" bottom="222" /></bezel>
151      <bezel name="led0" element="red_led">
152         <bounds left="110" right="125" top="360" bottom="375" /></bezel>
1321153   </view>
1322
1323154</mamelayout>
trunk/src/mame/layout/by35_playboy.lay
r249889r249890
1<!-- Pinball Machine, Bally ~ Playboy -->
2<!-- [Quench] June 2015 -->
3
4
5<!-- Any state="9" items are not displayed and are only used for object alignment -->
6
7<mamelayout version="2">
8
9   <element name="Title_Playboy"><text string="PLAYBOY"><color red="1.0" green="0.0" blue="1.0" /></text></element>
10
11
12
13<!-- Switches -->
14
15   <element name="Switch_SlamTilt">
16      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="00" width="25" height="01" /></rect>
17      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="08" width="13" height="01.5" /></rect>
18      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="01" width="04" height="02" /></rect>
19      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="06" width="04" height="02" /></rect>
20
21      <rect state="0"><color red="0.70" green="0.70" blue="0.70" /><bounds x="19" y="01" width="06" height="04" /></rect>
22      <rect state="1"><color red="0.70" green="0.70" blue="0.70" /><bounds x="19" y="04" width="06" height="04" /></rect>
23
24      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="00" width="08" height="01" /></rect>
25      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="08" y="01" width="08" height="01" /></rect>
26      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="16" y="02" width="09" height="01" /></rect>
27
28
29      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="00" y="08"  width="13" height="01.5" /></rect>
30      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="03"  width="04" height="02" /></rect>
31      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="08" y="06"  width="04" height="02" /></rect>
32   </element>
33
34   <element name="Switch_Tilt">
35      <rect          ><color red="0.80" green="0.80" blue="0.00" /><bounds x="00" y="00" width="17" height="17" /></rect>
36      <disk          ><color red="0.00" green="0.00" blue="0.00" /><bounds x="01" y="01" width="15" height="15" /></disk>
37      <disk state="0"><color red="0.50" green="0.50" blue="0.50" /><bounds x="04" y="04" width="09" height="09" /></disk>
38      <disk state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="07" width="02" height="02" /></disk>
39
40      <disk state="1"><color red="0.50" green="0.50" blue="0.50" /><bounds x="07" y="04" width="09" height="09" /></disk>
41      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="11" y="07" width="02" height="02" /></disk>
42   </element>
43
44
45   <element name="Switch_Leaf_Vertical">
46      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="0" y="00" width="01"   height="06" /></rect>
47      <rect state="0"><color red="0.80" green="0.80" blue="0.80" /><bounds x="8" y="00" width="01.5" height="06" /></rect>
48      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="1" y="01" width="02"   height="04" /></rect>
49      <rect state="0"><color red="1.00" green="1.00" blue="0.00" /><bounds x="6" y="01" width="02"   height="04" /></rect>
50
51      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="1.5" y="00" width="01" height="06" /></rect>
52      <rect state="1"><color red="0.80" green="0.80" blue="0.80" /><bounds x="6.5" y="00" width="01" height="06" /></rect>
53      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="2"   y="01" width="02" height="04" /></rect>
54      <rect state="1"><color red="1.00" green="1.00" blue="0.00" /><bounds x="4.5" y="01" width="02" height="04" /></rect>
55   </element>
56
57   <element name="Switch_RollOn_WireForm_Left">
58      <text string=">" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="8" y="0" width="11"  height="11"  /></text>
59      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="0.1" height="04"  /></rect>
60      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="09"  height="0.1" /></rect>
61      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="8" width="09"  height="0.1" /></rect>
62      <rect            state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="3" y="6" width="08"  height="0.1" /></rect>
63      <text string=">" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="8" y="0" width="11"  height="11"  /></text>
64      <rect            state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="0.1" height="04"  /></rect>
65      <rect            state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="4" width="09"  height="0.1" /></rect>
66      <rect            state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="8" width="09"  height="0.1" /></rect>
67   </element>
68
69   <element name="Switch_RollOn_WireForm_Down">
70      <text string="/\" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="00" width="07"  height="10" /></text>
71      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="17" width="04"  height="0.1" /></rect>
72      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="09" width="0.1" height="09" /></rect>
73      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="5" y="09" width="0.1" height="09" /></rect>
74      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="3" y="07" width="0.1" height="08" /></rect>
75      <text string="/\" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="00" width="07"  height="10" /></text>
76      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="17" width="04"  height="0.1" /></rect>
77      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="09" width="0.1" height="09" /></rect>
78      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="5" y="09" width="0.1" height="09" /></rect>
79   </element>
80
81   <element name="Switch_RollOver_WireForm_Vertical">
82      <text string="/\" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="00" width="07"  height="10" /></text>
83      <text string="\/" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="17" width="07"  height="10" /></text>
84      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="09" width="0.1" height="09" /></rect>
85      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="5" y="09" width="0.1" height="09" /></rect>
86      <rect             state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="3" y="07" width="0.1" height="13" /></rect>
87      <text string="/\" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="00" width="07"  height="10" /></text>
88      <text string="\/" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="17" width="07"  height="10" /></text>
89      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="1" y="09" width="0.1" height="09" /></rect>
90      <rect             state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="5" y="09" width="0.1" height="09" /></rect>
91   </element>
92
93   <element name="Switch_Target_Red_Forward" defstate="0">
94      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="00" width="10" height="01" /></rect>
95      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="00" width="01" height="05" /></rect>
96      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="16" y="00" width="01" height="05" /></rect>
97
98      <disk state="0"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="05" width="24" height="06" /></disk>
99      <disk state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="02" width="24" height="06" /></disk>
100   </element>
101
102   <element name="Target_White_Left" defstate="0">
103      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="06" width="01" height="10" /></rect>
104      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="06" width="05" height="01" /></rect>
105      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="16" width="05" height="01" /></rect>
106      <disk state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="05" y="00" width="06" height="24" /></disk>
107      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="02" y="00" width="06" height="24" /></disk>
108   </element>
109
110
111   <element name="Switch_RollOver_Button">
112      <text string="*" state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="-10" y="-6" width="35" height="35" /></text>
113      <text string="*" state="1"><color red="0.00" green="0.00" blue="0.00" /><bounds x="-10" y="-6" width="35" height="35" /></text>
114   </element>
115
116   <element name="Lamp_RollOver_Button" defstate="0">
117      <disk state="0"><color red="0.15" green="0.04" blue="0.00" /><bounds x="0" y="0" width="15" height="15" /></disk>
118      <disk state="1"><color red="1.00" green="0.30" blue="0.00" /><bounds x="0" y="0" width="15" height="15" /></disk>
119   </element>
120
121
122   <element name="Switch_Push-Button" defstate="0">
123      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="04" width="16" height="01" /></rect>
124      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="00" width="01" height="04" /></rect>
125      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="17" y="00" width="01" height="04" /></rect>
126      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="00" width="05" height="01" /></rect>
127      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="08.5" width="16" height="01" /></rect>
128      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="04.5" width="01" height="04" /></rect>
129      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="17" y="04.5" width="01" height="04" /></rect>
130      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="04.5" width="05" height="01" /></rect>
131      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="12" width="09" height="01" /></rect>
132      <rect          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="21" y="12" width="09" height="01" /></rect>
133      <disk          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="07" y="10" width="06" height="06" /></disk>
134      <disk          ><color red="1.00" green="1.00" blue="1.00" /><bounds x="18" y="10" width="06" height="06" /></disk>
135   </element>
136
137
138
139   <element name="Key_Z">     <text string="Z"><color red="1.00" green="0.66" blue="0.66" /></text></element>
140   <element name="Key_X">     <text string="X"><color red="1.00" green="0.66" blue="0.66" /></text></element>
141   <element name="Key_C">     <text string="C"><color red="1.00" green="0.66" blue="0.66" /></text></element>
142   <element name="Key_V">     <text string="V"><color red="1.00" green="0.66" blue="0.66" /></text></element>
143   <element name="Key_B">     <text string="B"><color red="1.00" green="0.66" blue="0.66" /></text></element>
144   <element name="Key_N">     <text string="N"><color red="1.00" green="0.66" blue="0.66" /></text></element>
145   <element name="Key_M">     <text string="M"><color red="1.00" green="0.66" blue="0.66" /></text></element>
146   <element name="Key_Comma"> <text string=","><color red="1.00" green="0.66" blue="0.66" /></text></element>
147   <element name="Key_Dot">   <text string="."><color red="1.00" green="0.66" blue="0.66" /></text></element>
148   <element name="Key_FSlash"><text string="/"><color red="1.00" green="0.66" blue="0.66" /></text></element>
149
150   <element name="Key_A">     <text string="A"><color red="1.00" green="0.66" blue="0.66" /></text></element>
151   <element name="Key_S">     <text string="S"><color red="1.00" green="0.66" blue="0.66" /></text></element>
152   <element name="Key_D">     <text string="D"><color red="1.00" green="0.66" blue="0.66" /></text></element>
153   <element name="Key_F">     <text string="F"><color red="1.00" green="0.66" blue="0.66" /></text></element>
154   <element name="Key_G">     <text string="G"><color red="1.00" green="0.66" blue="0.66" /></text></element>
155   <element name="Key_H">     <text string="H"><color red="1.00" green="0.66" blue="0.66" /></text></element>
156   <element name="Key_J">     <text string="J"><color red="1.00" green="0.66" blue="0.66" /></text></element>
157   <element name="Key_K">     <text string="K"><color red="1.00" green="0.66" blue="0.66" /></text></element>
158   <element name="Key_L">     <text string="L"><color red="1.00" green="0.66" blue="0.66" /></text></element>
159   <element name="Key_SColon"><text string=";"><color red="1.00" green="0.66" blue="0.66" /></text></element>
160   <element name="Key_Quote"> <text string="'"><color red="1.00" green="0.66" blue="0.66" /></text></element>
161   <element name="Key_Enter">
162      <text string="&#60;"><color red="1.00" green="0.66" blue="0.66" /><bounds x="00" y="00" width="07"  height="10" /></text>
163      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="00" y="00" width="07"  height="10" /></text>
164      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="02" y="00" width="07"  height="10" /></text>
165      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="04" y="00" width="07"  height="10" /></text>
166      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="06" y="00" width="07"  height="10" /></text>
167      <disk           >    <color red="1.00" green="0.66" blue="0.66" /><bounds x="10" y="02" width="0.5" height="03" /></disk>
168   </element>
169
170   <element name="Key_Q">     <text string="Q"><color red="1.00" green="0.66" blue="0.66" /></text></element>
171   <element name="Key_W">     <text string="W"><color red="1.00" green="0.66" blue="0.66" /></text></element>
172   <element name="Key_E">     <text string="E"><color red="1.00" green="0.66" blue="0.66" /></text></element>
173   <element name="Key_R">     <text string="R"><color red="1.00" green="0.66" blue="0.66" /></text></element>
174   <element name="Key_T">     <text string="T"><color red="1.00" green="0.66" blue="0.66" /></text></element>
175   <element name="Key_Y">     <text string="Y"><color red="1.00" green="0.66" blue="0.66" /></text></element>
176   <element name="Key_U">     <text string="U"><color red="1.00" green="0.66" blue="0.66" /></text></element>
177   <element name="Key_I">     <text string="I"><color red="1.00" green="0.66" blue="0.66" /></text></element>
178   <element name="Key_O">     <text string="O"><color red="1.00" green="0.66" blue="0.66" /></text></element>
179   <element name="Key_P">     <text string="P"><color red="1.00" green="0.66" blue="0.66" /></text></element>
180   <element name="Key_OBrkt"> <text string="["><color red="1.00" green="0.66" blue="0.66" /></text></element>
181   <element name="Key_CBrkt"> <text string="]"><color red="1.00" green="0.66" blue="0.66" /></text></element>
182   <element name="Key_BSlash"><text string="\"><color red="1.00" green="0.66" blue="0.66" /></text></element>
183
184   <element name="Key_1">     <text string="1"><color red="1.00" green="0.66" blue="0.66" /></text></element>
185   <element name="Key_5">     <text string="5"><color red="1.00" green="0.66" blue="0.66" /></text></element>
186   <element name="Key_6">     <text string="6"><color red="1.00" green="0.66" blue="0.66" /></text></element>
187   <element name="Key_7">     <text string="7"><color red="1.00" green="0.66" blue="0.66" /></text></element>
188   <element name="Key_9">     <text string="9"><color red="1.00" green="0.66" blue="0.66" /></text></element>
189   <element name="Key_0">     <text string="0"><color red="1.00" green="0.66" blue="0.66" /></text></element>
190   <element name="Key_BSpace">
191      <text string="&#60;"><color red="1.00" green="0.66" blue="0.66" /><bounds x="0" y="00" width="07" height="10" /></text>
192      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="0" y="00" width="07" height="10" /></text>
193      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="2" y="00" width="07" height="10" /></text>
194      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="4" y="00" width="07" height="10" /></text>
195      <text string="-">    <color red="1.00" green="0.66" blue="0.66" /><bounds x="6" y="00" width="07" height="10" /></text>
196   </element>
197   <element name="Key_Equals"><text string="="><color red="1.00" green="0.66" blue="0.66" /></text></element>
198
199
200
201   <element name="Solenoid_DropTarget_Tall" defstate="0">
202      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="00" width="07" height="15" /></rect>
203      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="01" y="01" width="04" height="12" /></rect>
204   </element>
205   <element name="DropTarget_Tall" defstate="0">
206      <rect state="1"><color red="0.25" green="0.25" blue="0.25" /><bounds x="01" y="01" width="04" height="12" /></rect>
207      <rect state="0"><color red="1.00" green="1.00" blue="1.00" /><bounds x="01" y="01" width="04" height="12" /></rect>
208      <rect state="9"><color red="0.00" green="1.00" blue="0.00" /><bounds x="00" y="00" width="07" height="15" /></rect>
209   </element>
210
211
212
213<!-- Lamps -->
214
215   <element name="Lamp_White" defstate="0">
216      <disk state="0"><color red="0.15" green="0.15" blue="0.15" /></disk>
217      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
218   </element>
219   <element name="Lamp_Red" defstate="0">                              <!-- Usually for Specials -->
220      <disk state="0"><color red="0.15" green="0.00" blue="0.00" /></disk>
221      <disk state="1"><color red="1.00" green="0.00" blue="0.00" /></disk>
222   </element>
223   <element name="Lamp_Amber" defstate="0">                           <!-- Usually for Extra Ball-->
224      <disk state="0"><color red="0.15" green="0.06" blue="0.00" /></disk>
225      <disk state="1"><color red="1.00" green="0.40" blue="0.00" /></disk>
226   </element>
227
228
229   <element name="Lamp_P1">
230      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
231      <text string="1" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
232      <text string="1" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
233   </element>
234   <element name="Lamp_P2">
235      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
236      <text string="2" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
237      <text string="2" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
238   </element>
239   <element name="Lamp_P3">
240      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
241      <text string="3" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
242      <text string="3" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
243   </element>
244   <element name="Lamp_P4">
245      <rect><color red="0.10" green="0.10" blue="0.10" /></rect>
246      <text string="4" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
247      <text string="4" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
248   </element>
249
250   <element name="Lamp_1P">
251      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
252      <text string="1" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
253      <text string="1" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
254   </element>
255   <element name="Lamp_2P">
256      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
257      <text string="2" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
258      <text string="2" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
259   </element>
260   <element name="Lamp_3P">
261      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
262      <text string="3" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
263      <text string="3" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.1" y="0" width="1" height="0.9" /></text>
264   </element>
265   <element name="Lamp_4P">
266      <disk><color red="0.10" green="0.10" blue="0.10" /></disk>
267      <text string="4" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="1" height="0.9" /></text>
268      <text string="4" state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="1" height="0.9" /></text>
269   </element>
270
271
272   <element name="Lamp_2x" defstate="0">
273      <disk state="0"><color red="0.0" green="0.15" blue="0.0" /></disk>
274      <disk state="1"><color red="0.0" green="1.00" blue="0.0" /></disk>
275      <text string="2x"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
276   </element>
277   <element name="Lamp_3x" defstate="0">
278      <disk state="0"><color red="0.15" green="0.15" blue="0.0" /></disk>
279      <disk state="1"><color red="1.00" green="1.00" blue="0.0" /></disk>
280      <text string="3x"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
281   </element>
282   <element name="Lamp_5x" defstate="0">
283      <disk state="0"><color red="0.15" green="0.15" blue="0.15" /></disk>
284      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
285      <text string="5x"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
286   </element>
287
288
289   <element name="Lamp_White_1k">
290      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
291      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
292      <text string="1k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
293   </element>
294   <element name="Lamp_White_2k">
295      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
296      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
297      <text string="2k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
298   </element>
299   <element name="Lamp_White_3k">
300      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
301      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
302      <text string="3k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
303   </element>
304   <element name="Lamp_White_4k">
305      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
306      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
307      <text string="4k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
308   </element>
309   <element name="Lamp_White_5k">
310      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
311      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
312      <text string="5k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
313   </element>
314   <element name="Lamp_White_6k">
315      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
316      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
317      <text string="6k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
318   </element>
319   <element name="Lamp_White_7k">
320      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
321      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
322      <text string="7k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
323   </element>
324   <element name="Lamp_White_8k">
325      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
326      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
327      <text string="8k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
328   </element>
329   <element name="Lamp_White_9k">
330      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
331      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
332      <text string="9k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
333   </element>
334   <element name="Lamp_White_10k">
335      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
336      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
337      <text string="10k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.0" y="0.1" width="1.00" height="0.75" /></text>
338   </element>
339   <element name="Lamp_White_20k">
340      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
341      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
342      <text string="20k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
343   </element>
344   <element name="Lamp_White_25k">
345      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
346      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0.0" y="0.0" width="1.10" height="1.00" /></disk>
347      <text string="25k"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0.1" y="0.1" width="1.00" height="0.75" /></text>
348   </element>
349
350
351   <element name="Lamp_White_March">
352      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="8.3" height="8.3" /></disk>
353      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="8.3" height="8.3" /></disk>
354      <text string="MARCH"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="9" width="21" height="09" /></text>
355   </element>
356   <element name="Lamp_White_May">
357      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="8.3" height="8.3" /></disk>
358      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="8.3" height="8.3" /></disk>
359      <text string="MAY"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="9" width="13" height="09" /></text>
360   </element>
361   <element name="Lamp_White_January">
362      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="8.3" height="8.3" /></disk>
363      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="8.3" height="8.3" /></disk>
364      <text string="JANUARY"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="9" width="29" height="09" /></text>
365   </element>
366   <element name="Lamp_White_July">
367      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="8.3" height="8.3" /></disk>
368      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="8.3" height="8.3" /></disk>
369      <text string="JULY"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="9" width="16" height="09" /></text>
370   </element>
371   <element name="Lamp_White_September">
372      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0" width="8.3" height="8.3" /></disk>
373      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="0" y="0" width="8.3" height="8.3" /></disk>
374      <text string="SEPTEMBER"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="9" width="37" height="09" /></text>
375   </element>
376
377
378   <element name="Lamp_White_1">
379      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
380      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
381      <text string="1"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
382   </element>
383   <element name="Lamp_White_2">
384      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
385      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
386      <text string="2"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
387   </element>
388   <element name="Lamp_White_3">
389      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
390      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
391      <text string="3"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
392   </element>
393   <element name="Lamp_White_4">
394      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
395      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
396      <text string="4"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
397   </element>
398   <element name="Lamp_White_5">
399      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /></disk>
400      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
401      <text string="5"><color red="0.0" green="0.0" blue="0.0" /><bounds x="0" y="0.1" width="1" height="0.75" /></text>
402   </element>
403
404
405   <element name="Credit_Indicator">
406      <disk state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="2.5" y="0" width="1.0" height="1.0" /></disk>
407      <disk state="0"><color red="0.25" green="0.25" blue="0.25" /><bounds x="2.5" y="0" width="1.0" height="1.0" /></disk>
408      <text string="Credit Indicator"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="1.1" width="6.5" height="0.90" /></text>
409   </element>
410
411
412   <element name="Lamp_Red_Arrow_08" defstate="1">   <!-- Point at 8 o clock -->
413      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="28" y="00" width="08" height="03" /></rect>
414      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="28" y="00" width="08" height="03" /></rect>
415      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="23" y="03" width="08" height="03" /></rect>
416      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="23" y="03" width="08" height="03" /></rect>
417      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="18" y="06" width="08" height="03" /></rect>
418      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="18" y="06" width="08" height="03" /></rect>
419      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="10" y="03" width="02" height="03" /></rect>
420      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="10" y="03" width="02" height="03" /></rect>
421      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="08" y="06" width="06" height="03" /></rect>
422      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="08" y="06" width="06" height="03" /></rect>
423      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
424      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
425      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="04" y="12" width="14" height="03" /></rect>
426      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="04" y="12" width="14" height="03" /></rect>
427      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="02" y="15" width="17" height="03" /></rect>
428      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="02" y="15" width="17" height="03" /></rect>
429      <rect state="1"><color red="1.00" green="0.00" blue="0.00" /><bounds x="00" y="18" width="20" height="03" /></rect>
430      <rect state="0"><color red="0.15" green="0.00" blue="0.00" /><bounds x="00" y="18" width="20" height="03" /></rect>
431   </element>
432
433   <element name="Lamp_Amber_Arrow_10" defstate="1">   <!-- Point at 10 o clock -->
434      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="28" y="18" width="08" height="03" /></rect>
435      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="28" y="18" width="08" height="03" /></rect>
436      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="23" y="15" width="08" height="03" /></rect>
437      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="23" y="15" width="08" height="03" /></rect>
438      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="18" y="12" width="08" height="03" /></rect>
439      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="18" y="12" width="08" height="03" /></rect>
440      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="10" y="15" width="02" height="03" /></rect>
441      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="10" y="15" width="02" height="03" /></rect>
442      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="08" y="12" width="06" height="03" /></rect>
443      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="08" y="12" width="06" height="03" /></rect>
444      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
445      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="06" y="09" width="15" height="03" /></rect>
446      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="04" y="06" width="14" height="03" /></rect>
447      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="04" y="06" width="14" height="03" /></rect>
448      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="02" y="03" width="17" height="03" /></rect>
449      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="02" y="03" width="17" height="03" /></rect>
450      <rect state="1"><color red="1.00" green="0.40" blue="0.00" /><bounds x="00" y="00" width="20" height="03" /></rect>
451      <rect state="0"><color red="0.15" green="0.06" blue="0.00" /><bounds x="00" y="00" width="20" height="03" /></rect>
452   </element>
453
454   <element name="Lamp_White_Arrow_01" defstate="1">   <!-- Point at 1 o clock -->
455      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="18" y="00" width="03" height="20" /></rect>
456      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="18" y="00" width="03" height="20" /></rect>
457      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="15" y="02" width="03" height="17" /></rect>
458      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="15" y="02" width="03" height="17" /></rect>
459      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="12" y="04" width="03" height="14" /></rect>
460      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="12" y="04" width="03" height="14" /></rect>
461      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="09" y="06" width="03" height="15" /></rect>
462      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="09" y="06" width="03" height="15" /></rect>
463      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="08" width="03" height="06" /></rect>
464      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="08" width="03" height="06" /></rect>
465      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="03" y="10" width="03" height="02" /></rect>
466      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="03" y="10" width="03" height="02" /></rect>
467      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="06" y="18" width="03" height="08" /></rect>
468      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="06" y="18" width="03" height="08" /></rect>
469      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="03" y="23" width="03" height="08" /></rect>
470      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="03" y="23" width="03" height="08" /></rect>
471      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="00" y="28" width="03" height="08" /></rect>
472      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="00" y="28" width="03" height="08" /></rect>
473   </element>
474
475
476<!-- Backbox Indicators -->
477
478   <element name="Text_Credit"><text string="CREDIT"><color red="1.0" green="1.0" blue="1.0" /></text></element>
479   <element name="Text_Lamps"><text string="Lamps"><color red="1.0" green="1.0" blue="1.0" /></text></element>
480   <element name="Text_15"><text string="U1 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
481   <element name="Text_30"><text string="U2 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
482   <element name="Text_45"><text string="U3 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
483   <element name="Text_60"><text string="U4 0-14"><color red="1.0" green="1.0" blue="1.0" /></text></element>
484   <element name="Text_Solenoids"><text string="Momentary Solenoids"><color red="1.0" green="1.0" blue="1.0" /></text></element>
485   <element name="Text_Coils"><text string="Coils"><color red="1.0" green="1.0" blue="1.0" /></text></element>
486   <element name="Text_MPU_LED"><text string="MPU LED"><color red="1.0" green="1.0" blue="1.0" /></text></element>
487   <element name="Text_Activity"><text string="Activity Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
488   <element name="Text_Service"><text string="Service Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
489   <element name="Text_Slam"><text string="Slam Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
490   <element name="Text_Tilt"><text string="Tilt Switch"><color red="1.0" green="1.0" blue="1.0" /></text></element>
491   <element name="Text_Knocker"><text string="Knocker"><color red="1.0" green="1.0" blue="1.0" /></text></element>
492
493
494   <element name="High_Score_To_Date" defstate="0">
495      <text string="HIGH SCORE TO DATE" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="1" /></text>
496      <text string="HIGH SCORE TO DATE" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="1" /></text>
497   </element>
498   <element name="Ball_In_Play" defstate="0">
499      <text string="BALL IN PLAY" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0.1" y="0.1" width="1" height="0.8" /></text>
500      <text string="BALL IN PLAY" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0.1" y="0.1" width="1" height="0.8" /></text>
501   </element>
502   <element name="Match" defstate="0">
503      <text string="MATCH" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
504      <text string="MATCH" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
505   </element>
506   <element name="Game_Over" defstate="0">
507      <text string="GAME OVER" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
508      <text string="GAME OVER" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
509   </element>
510   <element name="Tilt" defstate="0">
511      <text string="TILT" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
512      <text string="TILT" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
513   </element>
514   <element name="Shoot_Again" defstate="0">
515      <text string="SAME PLAYER"  state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
516      <text string="SAME PLAYER"  state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.1" width="1" height="0.8" /></text>
517      <text string="SHOOTS AGAIN" state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds x="0" y="0.9" width="1" height="0.8" /></text>
518      <text string="SHOOTS AGAIN" state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds x="0" y="0.9" width="1" height="0.8" /></text>
519   </element>
520
521
522   <element name="Digit" defstate="0">
523      <led7seg><color red="1.0" green="0.35" blue="0.0" /></led7seg>
524   </element>
525
526   <element name="LED_Green" defstate="1">
527      <disk state="0"><color red="0.0" green="0.25" blue="0.0" /></disk>
528      <disk state="1"><color red="0.0" green="1.00" blue="0.0" /></disk>
529   </element>
530   
531
532
533<!-- Solenoids -->
534
535   <element name="Solenoid_PullDown">
536      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="3" y="0" width="03" height="09" /></rect>
537      <rect state="0"><color red="0.0" green="1.0" blue="1.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
538      <rect state="1"><color red="1.0" green="1.0" blue="0.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
539   </element>
540
541   <element name="Coil_PullDown">
542      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="8" y="0" width="02" height="01" /></rect>
543      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="6" y="1" width="02" height="01" /></rect>
544      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="4" y="2" width="02" height="01" /></rect>
545      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="2" y="3" width="02" height="01" /></rect>
546      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="4" width="02" height="01" /></rect>
547      <rect          ><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="5" width="02" height="02" /></rect>
548      <rect state="1"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="4" width="10" height="01" /></rect>
549
550      <rect state="0"><color red="0.0" green="1.0" blue="1.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
551      <rect state="1"><color red="1.0" green="1.0" blue="0.0" /><bounds x="0" y="8" width="10" height="11" /></rect>
552   </element>
553
554
555   <element name="Solenoid_Knocker" defstate="0">
556      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="00" y="03" width="09" height="03" /></rect>
557      <rect state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="18" y="03" width="05" height="03" /></rect>
558      <rect state="0"><color red="0.0" green="1.0" blue="1.0" /><bounds x="08" y="00" width="11" height="10" /></rect>
559      <rect state="1"><color red="1.0" green="1.0" blue="0.0" /><bounds x="08" y="00" width="11" height="10" /></rect>
560   </element>
561
562   <element name="Solenoid_Outhole" defstate="0">
563      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="17" y="00" width="05" height="16" /></text>
564      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="02" y="00" width="05" height="16" /></text>
565      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="18" y="00" width="05" height="16" /></text>
566      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="03" y="00" width="05" height="16" /></text>
567      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="19" y="00" width="05" height="16" /></text>
568      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="04" y="00" width="05" height="16" /></text>
569      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="20" y="00" width="05" height="16" /></text>
570      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="05" y="00" width="05" height="16" /></text>
571      <rect            state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="02" y="02" width="18" height="10" /></rect>
572      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="00" y="13" width="25" height="03" /></rect>
573      <text string="Outhole"    ><color red="1.0" green="1.0" blue="1.0" /><bounds x="30" y="12" width="28" height="9.5" /></text>
574   </element>
575
576   <element name="Solenoid_Kickback" defstate="0">
577      <rect state="1"><color red="1.0" green="1.0" blue="1.0" /><bounds x="3" y="00" width="03" height="15" /></rect>
578      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="3" y="07" width="03" height="08" /></rect>
579      <rect state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="0" y="00" width="10" height="04" /></rect>
580      <rect state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="07" width="10" height="04" /></rect>
581   </element>
582
583   <element name="Solenoid_SlingShot_Left" defstate="0">
584      <text string="\" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="05" y="00" width="65"   height="80" /></text>
585      <text string="\" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="00" y="00" width="65"   height="80" /></text>
586      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="20" y="16" width="04"   height="60" /></rect>
587      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="20" y="76" width="24.5" height="04" /></rect>
588   </element>
589   <element name="Solenoid_SlingShot_Right" defstate="0">
590      <text string="/" state="1"><color red="1.0" green="0.0" blue="0.0" /><bounds x="-5"   y="00" width="65" height="80" /></text>
591      <text string="/" state="0"><color red="1.0" green="1.0" blue="1.0" /><bounds x="00"   y="00" width="65" height="80" /></text>
592      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="40"   y="16" width="04" height="60" /></rect>
593      <rect                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="19.5" y="76" width="24" height="04" /></rect>
594   </element>
595
596
597   <element name="Solenoid_Bumper_Black_Star" defstate="0">
598      <disk state="0"> <color red="1.0" green="1.0" blue="1.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
599      <disk state="1"> <color red="1.0" green="0.0" blue="0.0" /><bounds x="0" y="0" width="80" height="80" /></disk>
600      <text string="*"><color red="0.0" green="0.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
601      <disk>           <color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
602   </element>
603   <element name="Switch_Bumper_Black_Star" defstate="0">
604      <text string="*" state="9"><color red="0.0" green="0.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
605      <disk            state="0"><color red="0.0" green="0.0" blue="0.0" /><bounds x="14" y="15" width="50" height="50" /></disk>
606      <disk            state="1"><color red="0.5" green="0.5" blue="0.5" /><bounds x="14" y="15" width="50" height="50" /></disk>
607   </element>
608   <element name="Lamp_Bumper_GI">
609      <text string="*" state="9"><color red="0.0" green="0.0" blue="0.0" /><bounds x="-61" y="-38.5" width="206" height="206" /></text>
610      <disk                     ><color red="1.0" green="1.0" blue="1.0" /><bounds x="18" y="18" width="44" height="44" /></disk>
611   </element>
612
613
614<!-- Line colours -->
615
616   <element name="Draw_White" defstate="1">
617      <rect state="1"><color red="1.00" green="1.00" blue="1.00" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
618      <rect state="0"><color red="0.15" green="0.15" blue="0.15" /><bounds left="0" top="0" right="1" bottom="1" /></rect>
619   </element>
620
621   <element name="Canvas">
622      <rect>
623         <color red="0.0" green="0.0" blue="0.0" />
624         <bounds left="0" top="0" right="1" bottom="1" />
625      </rect>
626   </element>
627
628
629
630
631
632   <view name="Playboy Playfield">
633
634      <!-- Background -->
635      <backdrop element="Canvas"><bounds x="000" y="000" width="640" height="480" /></backdrop>
636     
637      <bezel element="Draw_White"><bounds x="000" y="000" width="640" height="001" /></bezel>
638      <bezel element="Draw_White"><bounds x="000" y="000" width="001" height="480" /></bezel>
639      <bezel element="Draw_White"><bounds x="640" y="000" width="001" height="480" /></bezel>
640      <bezel element="Draw_White"><bounds x="000" y="480" width="640" height="001" /></bezel>
641      <bezel element="Draw_White"><bounds x="320" y="000" width="001" height="480" /></bezel>
642      <bezel element="Draw_White"><bounds x="320" y="320" width="320" height="001" /></bezel>
643      <!--   <bezel element="Draw_White"><bounds x="159" y="000" width="001" height="480" /></bezel>   -->
644
645      <bezel element="Title_Playboy"><bounds x="430" y="18" width="105" height="30" /></bezel>
646
647
648      <!-- Backbox -->
649
650      <!-- MPU Board Power On Self Test LED -->
651      <bezel element="Text_MPU_LED">         <bounds x="609" y="342" width="30" height="10" /></bezel>
652      <bezel name="led0" element="LED_Green"><bounds x="618" y="328" width="10" height="10" /></bezel>
653
654      <!-- MPU Board Activity Switch -->
655      <bezel element="Text_Activity">                                      <bounds x="540" y="342" width="50" height="10" /></bezel>
656      <bezel element="Switch_Push-Button" inputtag="TEST" inputmask="0x02"><bounds x="550" y="331" width="20" height="10" /></bezel>
657      <bezel element="Key_0">                                              <bounds x="571" y="330" width="10" height="10" /></bezel>
658
659
660      <!-- Player 1 Score -->
661      <bezel name="lamp14" element="Lamp_P1"><bounds x="330" y="55" width="15" height="15" /></bezel>         <!-- Backbox ~ 1st Player Up -->
662      <bezel name="digit17" element="Digit"><bounds x="360" y="55" width="10" height="15" /></bezel>
663      <bezel name="digit16" element="Digit"><bounds x="374" y="55" width="10" height="15" /></bezel>
664      <bezel name="digit15" element="Digit"><bounds x="388" y="55" width="10" height="15" /></bezel>
665      <bezel name="digit14" element="Digit"><bounds x="402" y="55" width="10" height="15" /></bezel>
666      <bezel name="digit13" element="Digit"><bounds x="416" y="55" width="10" height="15" /></bezel>
667      <bezel name="digit12" element="Digit"><bounds x="430" y="55" width="10" height="15" /></bezel>
668      <bezel name="digit11" element="Digit"><bounds x="444" y="55" width="10" height="15" /></bezel>
669
670      <!-- Player 2 Score -->
671      <bezel name="lamp29" element="Lamp_P2"><bounds x="615" y="55" width="15" height="15" /></bezel>         <!-- Backbox ~ 2nd Player Up -->
672      <bezel name="digit27" element="Digit"><bounds x="506" y="55" width="10" height="15" /></bezel>
673      <bezel name="digit26" element="Digit"><bounds x="520" y="55" width="10" height="15" /></bezel>
674      <bezel name="digit25" element="Digit"><bounds x="534" y="55" width="10" height="15" /></bezel>
675      <bezel name="digit24" element="Digit"><bounds x="548" y="55" width="10" height="15" /></bezel>
676      <bezel name="digit23" element="Digit"><bounds x="562" y="55" width="10" height="15" /></bezel>
677      <bezel name="digit22" element="Digit"><bounds x="576" y="55" width="10" height="15" /></bezel>
678      <bezel name="digit21" element="Digit"><bounds x="590" y="55" width="10" height="15" /></bezel>
679
680      <!-- Player 3 Score -->
681      <bezel name="lamp44" element="Lamp_P3"><bounds x="330" y="250" width="15" height="15" /></bezel>      <!-- Backbox ~ 3rd Player Up -->
682      <bezel name="digit37" element="Digit"><bounds x="360" y="250" width="10" height="15" /></bezel>
683      <bezel name="digit36" element="Digit"><bounds x="374" y="250" width="10" height="15" /></bezel>
684      <bezel name="digit35" element="Digit"><bounds x="388" y="250" width="10" height="15" /></bezel>
685      <bezel name="digit34" element="Digit"><bounds x="402" y="250" width="10" height="15" /></bezel>
686      <bezel name="digit33" element="Digit"><bounds x="416" y="250" width="10" height="15" /></bezel>
687      <bezel name="digit32" element="Digit"><bounds x="430" y="250" width="10" height="15" /></bezel>
688      <bezel name="digit31" element="Digit"><bounds x="444" y="250" width="10" height="15" /></bezel>
689
690      <!-- Player 4 Score -->
691      <bezel name="lamp59" element="Lamp_P4"><bounds x="615" y="250" width="15" height="15" /></bezel>      <!-- Backbox ~ 4th Player Up -->
692      <bezel name="digit47" element="Digit"><bounds x="506" y="250" width="10" height="15" /></bezel>
693      <bezel name="digit46" element="Digit"><bounds x="520" y="250" width="10" height="15" /></bezel>
694      <bezel name="digit45" element="Digit"><bounds x="534" y="250" width="10" height="15" /></bezel>
695      <bezel name="digit44" element="Digit"><bounds x="548" y="250" width="10" height="15" /></bezel>
696      <bezel name="digit43" element="Digit"><bounds x="562" y="250" width="10" height="15" /></bezel>
697      <bezel name="digit42" element="Digit"><bounds x="576" y="250" width="10" height="15" /></bezel>
698      <bezel name="digit41" element="Digit"><bounds x="590" y="250" width="10" height="15" /></bezel>
699
700      <!-- Credits and Ball In Play / Match -->
701      <bezel element="Text_Credit"><bounds x="542" y="142" width="48" height="8" /></bezel>
702      <bezel name="lamp12"  element="Ball_In_Play"><bounds x="586" y="105" width="50" height="11" /></bezel>   <!-- Backbox ~ Ball In Play -->
703      <bezel name="lamp25"  element="Match"><bounds x="596" y="152" width="25" height="11" /></bezel>         <!-- Backbox ~ Match -->
704      <bezel name="digit55" element="Digit"><bounds x="554" y="125" width="10" height="15" /></bezel>
705      <bezel name="digit54" element="Digit"><bounds x="568" y="125" width="10" height="15" /></bezel>
706      <bezel name="digit52" element="Digit"><bounds x="596" y="125" width="10" height="15" /></bezel>
707      <bezel name="digit51" element="Digit"><bounds x="610" y="125" width="10" height="15" /></bezel>
708
709      <bezel name="lamp10" element="Shoot_Again"><bounds x="420" y="295" width="60" height="19" /></bezel>   <!-- Backbox ~ Same Player Shoots Again -->
710      <bezel name="lamp13" element="Lamp_1P"><bounds x="345" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 1 Player Game -->
711      <bezel name="lamp28" element="Lamp_2P"><bounds x="360" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 2 Player Game -->
712      <bezel name="lamp43" element="Lamp_3P"><bounds x="375" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 3 Player Game -->
713      <bezel name="lamp58" element="Lamp_4P"><bounds x="390" y="297" width="15" height="15" /></bezel>      <!-- Backbox ~ 4 Player Game -->
714      <bezel name="lamp27" element="High_Score_To_Date"><bounds x="438" y="6" width="90" height="11" /></bezel>   <!-- Backbox ~ High Score To Date -->
715      <bezel name="lamp42" element="Game_Over"><bounds x="580" y="300" width="45" height="11" /></bezel>      <!-- Backbox ~ Game Over -->
716      <bezel name="lamp57" element="Tilt"><bounds x="480" y="297" width="50" height="16" /></bezel>         <!-- Backbox ~ Tilt -->
717
718
719
720      <bezel element="Text_Lamps"><bounds x="410" y="360" width="60" height="11" /></bezel>
721      <bezel element="Text_15"><bounds x="552" y="373" width="30" height="11" /></bezel>
722      <bezel element="Text_30"><bounds x="552" y="388" width="30" height="11" /></bezel>
723      <bezel element="Text_45"><bounds x="552" y="403" width="30" height="11" /></bezel>
724      <bezel element="Text_60"><bounds x="552" y="418" width="30" height="11" /></bezel>
725
726      <!-- Lamps controlled by U1 on Lamp Driver Board -->
727      <bezel name="lamp0"  element="Lamp_White"><bounds x="330" y="375" width="8" height="8" /></bezel>   <!-- U1 00 -->
728      <bezel name="lamp1"  element="Lamp_White"><bounds x="345" y="375" width="8" height="8" /></bezel>   <!-- U1 01 -->
729      <bezel name="lamp2"  element="Lamp_White"><bounds x="360" y="375" width="8" height="8" /></bezel>   <!-- U1 02 -->
730      <bezel name="lamp3"  element="Lamp_White"><bounds x="375" y="375" width="8" height="8" /></bezel>   <!-- U1 03 -->
731      <bezel name="lamp4"  element="Lamp_White"><bounds x="390" y="375" width="8" height="8" /></bezel>   <!-- U1 04 -->
732      <bezel name="lamp5"  element="Lamp_White"><bounds x="405" y="375" width="8" height="8" /></bezel>   <!-- U1 05 -->
733      <bezel name="lamp6"  element="Lamp_White"><bounds x="420" y="375" width="8" height="8" /></bezel>   <!-- U1 06 -->
734      <bezel name="lamp7"  element="Lamp_White"><bounds x="435" y="375" width="8" height="8" /></bezel>   <!-- U1 07 -->
735      <bezel name="lamp8"  element="Lamp_White"><bounds x="450" y="375" width="8" height="8" /></bezel>   <!-- U1 08 -->
736      <bezel name="lamp9"  element="Lamp_White"><bounds x="465" y="375" width="8" height="8" /></bezel>   <!-- U1 09 -->
737      <bezel name="lamp10" element="Lamp_White"><bounds x="480" y="375" width="8" height="8" /></bezel>   <!-- U1 10 -->
738      <bezel name="lamp11" element="Lamp_White"><bounds x="495" y="375" width="8" height="8" /></bezel>   <!-- U1 11 -->
739      <bezel name="lamp12" element="Lamp_White"><bounds x="510" y="375" width="8" height="8" /></bezel>   <!-- U1 12 -->
740      <bezel name="lamp13" element="Lamp_White"><bounds x="525" y="375" width="8" height="8" /></bezel>   <!-- U1 13 -->
741      <bezel name="lamp14" element="Lamp_White"><bounds x="540" y="375" width="8" height="8" /></bezel>   <!-- U1 14 -->
742
743      <!-- Lamps controlled by U2 on Lamp Driver Board -->
744      <bezel name="lamp15" element="Lamp_White"><bounds x="330" y="390" width="8" height="8" /></bezel>   <!-- U2 00 -->
745      <bezel name="lamp16" element="Lamp_White"><bounds x="345" y="390" width="8" height="8" /></bezel>   <!-- U2 01 -->
746      <bezel name="lamp17" element="Lamp_White"><bounds x="360" y="390" width="8" height="8" /></bezel>   <!-- U2 02 -->
747      <bezel name="lamp18" element="Lamp_White"><bounds x="375" y="390" width="8" height="8" /></bezel>   <!-- U2 03 -->
748      <bezel name="lamp19" element="Lamp_White"><bounds x="390" y="390" width="8" height="8" /></bezel>   <!-- U2 04 -->
749      <bezel name="lamp20" element="Lamp_White"><bounds x="405" y="390" width="8" height="8" /></bezel>   <!-- U2 05 -->
750      <bezel name="lamp21" element="Lamp_White"><bounds x="420" y="390" width="8" height="8" /></bezel>   <!-- U2 06 -->
751      <bezel name="lamp22" element="Lamp_White"><bounds x="435" y="390" width="8" height="8" /></bezel>   <!-- U2 07 -->
752      <bezel name="lamp23" element="Lamp_White"><bounds x="450" y="390" width="8" height="8" /></bezel>   <!-- U2 08 -->
753      <bezel name="lamp24" element="Lamp_White"><bounds x="465" y="390" width="8" height="8" /></bezel>   <!-- U2 09 -->
754      <bezel name="lamp25" element="Lamp_White"><bounds x="480" y="390" width="8" height="8" /></bezel>   <!-- U2 10 -->
755      <bezel name="lamp26" element="Lamp_White"><bounds x="495" y="390" width="8" height="8" /></bezel>   <!-- U2 11 -->
756      <bezel name="lamp27" element="Lamp_White"><bounds x="510" y="390" width="8" height="8" /></bezel>   <!-- U2 12 -->
757      <bezel name="lamp28" element="Lamp_White"><bounds x="525" y="390" width="8" height="8" /></bezel>   <!-- U2 13 -->
758      <bezel name="lamp29" element="Lamp_White"><bounds x="540" y="390" width="8" height="8" /></bezel>   <!-- U2 14 -->
759
760      <!-- Lamps controlled by U3 on Lamp Driver Board -->
761      <bezel name="lamp30" element="Lamp_White"><bounds x="330" y="405" width="8" height="8" /></bezel>   <!-- U3 00 -->
762      <bezel name="lamp31" element="Lamp_White"><bounds x="345" y="405" width="8" height="8" /></bezel>   <!-- U3 01 -->
763      <bezel name="lamp32" element="Lamp_White"><bounds x="360" y="405" width="8" height="8" /></bezel>   <!-- U3 02 -->
764      <bezel name="lamp33" element="Lamp_White"><bounds x="375" y="405" width="8" height="8" /></bezel>   <!-- U3 03 -->
765      <bezel name="lamp34" element="Lamp_White"><bounds x="390" y="405" width="8" height="8" /></bezel>   <!-- U3 04 -->
766      <bezel name="lamp35" element="Lamp_White"><bounds x="405" y="405" width="8" height="8" /></bezel>   <!-- U3 05 -->
767      <bezel name="lamp36" element="Lamp_White"><bounds x="420" y="405" width="8" height="8" /></bezel>   <!-- U3 06 -->
768      <bezel name="lamp37" element="Lamp_White"><bounds x="435" y="405" width="8" height="8" /></bezel>   <!-- U3 07 -->
769      <bezel name="lamp38" element="Lamp_White"><bounds x="450" y="405" width="8" height="8" /></bezel>   <!-- U3 08 -->
770      <bezel name="lamp39" element="Lamp_White"><bounds x="465" y="405" width="8" height="8" /></bezel>   <!-- U3 09 -->
771      <bezel name="lamp40" element="Lamp_White"><bounds x="480" y="405" width="8" height="8" /></bezel>   <!-- U3 10 -->
772      <bezel name="lamp41" element="Lamp_White"><bounds x="495" y="405" width="8" height="8" /></bezel>   <!-- U3 11 -->
773      <bezel name="lamp42" element="Lamp_White"><bounds x="510" y="405" width="8" height="8" /></bezel>   <!-- U3 12 -->
774      <bezel name="lamp43" element="Lamp_White"><bounds x="525" y="405" width="8" height="8" /></bezel>   <!-- U3 13 -->
775      <bezel name="lamp44" element="Lamp_White"><bounds x="540" y="405" width="8" height="8" /></bezel>   <!-- U3 14 -->
776
777      <!-- Lamps controlled by U4 on Lamp Driver Board -->
778      <bezel name="lamp45" element="Lamp_White"><bounds x="330" y="420" width="8" height="8" /></bezel>   <!-- U4 00 -->
779      <bezel name="lamp46" element="Lamp_White"><bounds x="345" y="420" width="8" height="8" /></bezel>   <!-- U4 01 -->
780      <bezel name="lamp47" element="Lamp_White"><bounds x="360" y="420" width="8" height="8" /></bezel>   <!-- U4 02 -->
781      <bezel name="lamp48" element="Lamp_White"><bounds x="375" y="420" width="8" height="8" /></bezel>   <!-- U4 03 -->
782      <bezel name="lamp49" element="Lamp_White"><bounds x="390" y="420" width="8" height="8" /></bezel>   <!-- U4 04 -->
783      <bezel name="lamp50" element="Lamp_White"><bounds x="405" y="420" width="8" height="8" /></bezel>   <!-- U4 05 -->
784      <bezel name="lamp51" element="Lamp_White"><bounds x="420" y="420" width="8" height="8" /></bezel>   <!-- U4 06 -->
785      <bezel name="lamp52" element="Lamp_White"><bounds x="435" y="420" width="8" height="8" /></bezel>   <!-- U4 07 -->
786      <bezel name="lamp53" element="Lamp_White"><bounds x="450" y="420" width="8" height="8" /></bezel>   <!-- U4 08 -->
787      <bezel name="lamp54" element="Lamp_White"><bounds x="465" y="420" width="8" height="8" /></bezel>   <!-- U4 09 -->
788      <bezel name="lamp55" element="Lamp_White"><bounds x="480" y="420" width="8" height="8" /></bezel>   <!-- U4 10 -->
789      <bezel name="lamp56" element="Lamp_White"><bounds x="495" y="420" width="8" height="8" /></bezel>   <!-- U4 11 -->
790      <bezel name="lamp57" element="Lamp_White"><bounds x="510" y="420" width="8" height="8" /></bezel>   <!-- U4 12 -->
791      <bezel name="lamp58" element="Lamp_White"><bounds x="525" y="420" width="8" height="8" /></bezel>   <!-- U4 13 -->
792      <bezel name="lamp59" element="Lamp_White"><bounds x="540" y="420" width="8" height="8" /></bezel>   <!-- U4 14 -->
793
794
795      <bezel element="Text_Solenoids"><bounds x="382" y="437" width="100" height="11" /></bezel>
796      <bezel name="solenoid0"  element="Solenoid_PullDown"><bounds x="330" y="452" width="9" height="19" /></bezel>
797      <bezel name="solenoid1"  element="Solenoid_PullDown"><bounds x="345" y="452" width="9" height="19" /></bezel>
798      <bezel name="solenoid2"  element="Solenoid_PullDown"><bounds x="360" y="452" width="9" height="19" /></bezel>
799      <bezel name="solenoid3"  element="Solenoid_PullDown"><bounds x="375" y="452" width="9" height="19" /></bezel>
800      <bezel name="solenoid4"  element="Solenoid_PullDown"><bounds x="390" y="452" width="9" height="19" /></bezel>
801      <bezel name="solenoid5"  element="Solenoid_PullDown"><bounds x="405" y="452" width="9" height="19" /></bezel>
802      <bezel name="solenoid6"  element="Solenoid_PullDown"><bounds x="420" y="452" width="9" height="19" /></bezel>
803      <bezel name="solenoid7"  element="Solenoid_PullDown"><bounds x="435" y="452" width="9" height="19" /></bezel>
804      <bezel name="solenoid8"  element="Solenoid_PullDown"><bounds x="450" y="452" width="9" height="19" /></bezel>
805      <bezel name="solenoid9"  element="Solenoid_PullDown"><bounds x="465" y="452" width="9" height="19" /></bezel>
806      <bezel name="solenoid10" element="Solenoid_PullDown"><bounds x="480" y="452" width="9" height="19" /></bezel>
807      <bezel name="solenoid11" element="Solenoid_PullDown"><bounds x="495" y="452" width="9" height="19" /></bezel>
808      <bezel name="solenoid12" element="Solenoid_PullDown"><bounds x="510" y="452" width="9" height="19" /></bezel>
809      <bezel name="solenoid13" element="Solenoid_PullDown"><bounds x="525" y="452" width="9" height="19" /></bezel>
810      <bezel name="solenoid14" element="Solenoid_PullDown"><bounds x="540" y="452" width="9" height="19" /></bezel>
811
812      <bezel element="Text_Coils"><bounds x="572" y="437" width="50" height="11" /></bezel>
813      <bezel name="solenoid16" element="Coil_PullDown"><bounds x="570" y="459" width="09" height="12" /></bezel>
814      <bezel name="solenoid17" element="Coil_PullDown"><bounds x="585" y="459" width="09" height="12" /></bezel>
815      <bezel name="solenoid18" element="Coil_PullDown"><bounds x="600" y="459" width="09" height="12" /></bezel>
816      <bezel name="solenoid19" element="Coil_PullDown"><bounds x="615" y="459" width="09" height="12" /></bezel>
817
818
819
820      <!-- Cabinet Switches -->
821      <bezel element="Text_Service">                                       <bounds x="485" y="342" width="50" height="10" /></bezel>
822      <bezel element="Switch_Push-Button" inputtag="TEST" inputmask="0x01"><bounds x="495" y="331" width="20" height="10" /></bezel>
823      <bezel element="Key_9">                                              <bounds x="516" y="330" width="10" height="10" /></bezel>
824
825      <bezel element="Text_Slam">                                     <bounds x="430" y="342" width="50" height="10" /></bezel>
826      <bezel element="Switch_SlamTilt" inputtag="X1" inputmask="0x80"><bounds x="434" y="331" width="25" height="08" /></bezel>
827      <bezel element="Key_Equals">                                    <bounds x="461" y="330" width="10" height="10" /></bezel>
828
829      <bezel element="Text_Tilt">                                 <bounds x="380" y="342" width="50" height="10" /></bezel>
830      <bezel element="Switch_Tilt" inputtag="X0" inputmask="0x40"><bounds x="390" y="324" width="17" height="17" /></bezel>
831      <bezel element="Key_T">                                     <bounds x="411" y="330" width="10" height="10" /></bezel>
832
833
834      <!-- Misc Solenoids -->
835      <bezel name="solenoid5"  element="Solenoid_Knocker"><bounds x="297" y="457" width="23" height="09" /></bezel>
836      <bezel element="Text_Knocker">   <!-- Knocker -->   <bounds x="290" y="467" width="30" height="10" /></bezel>
837
838
839      <!-- Misc Lamps -->
840      <bezel name="lamp55" element="Credit_Indicator">   <bounds x="023"   y="456" width="70"   height="21" /></bezel>   <!-- Credit Indicator -->
841      <bezel name="lamp40" element="Lamp_Amber">         <bounds x="153.5" y="420" width="12"   height="12" /></bezel>   <!-- Extra Ball -->
842      <bezel name="lamp49" element="Lamp_Red">           <bounds x="209"   y="192" width="14"   height="14" /></bezel>   <!-- Special Drop Targets -->
843      <bezel name="lamp47" element="Lamp_Red">           <bounds x="155"   y="023" width="09"   height="9" /></bezel>      <!-- Special 1 - 5 Keys -->
844      <bezel name="lamp56" element="Lamp_White_25k">     <bounds x="009"   y="333" width="09"   height="9" /></bezel>      <!-- 25,000 Outlane Left -->
845      <bezel name="lamp41" element="Lamp_White_25k">     <bounds x="301"   y="333" width="09"   height="9" /></bezel>      <!-- 25,000 Outlane Right -->
846      <bezel name="lamp53" element="Lamp_Amber_Arrow_10"><bounds x="055"   y="198" width="20"   height="12.5" /></bezel>   <!-- Extra Ball Potential Rollover Button -->
847      <bezel name="lamp38" element="Lamp_Red_Arrow_08">  <bounds x="055"   y="148" width="20"   height="12.5" /></bezel>   <!-- Special Potential Rollover Button -->
848      <!-- Bonus End of Ball Lamps -->
849      <bezel name="lamp0"  element="Lamp_White_1k"> <bounds x="126" y="395" width="09" height="09" /></bezel>
850      <bezel name="lamp15" element="Lamp_White_2k"> <bounds x="126" y="380" width="09" height="09" /></bezel>
851      <bezel name="lamp30" element="Lamp_White_3k"> <bounds x="126" y="355" width="09" height="09" /></bezel>
852      <bezel name="lamp45" element="Lamp_White_4k"> <bounds x="126" y="340" width="09" height="09" /></bezel>
853      <bezel name="lamp1"  element="Lamp_White_5k"> <bounds x="141" y="340" width="09" height="09" /></bezel>
854      <bezel name="lamp16" element="Lamp_White_6k"> <bounds x="169" y="340" width="09" height="09" /></bezel>
855      <bezel name="lamp31" element="Lamp_White_7k"> <bounds x="184" y="340" width="09" height="09" /></bezel>
856      <bezel name="lamp46" element="Lamp_White_8k"> <bounds x="184" y="355" width="09" height="09" /></bezel>
857      <bezel name="lamp2"  element="Lamp_White_9k"> <bounds x="184" y="380" width="09" height="09" /></bezel>
858      <bezel name="lamp17" element="Lamp_White_10k"><bounds x="184" y="395" width="09" height="09" /></bezel>
859      <bezel name="lamp32" element="Lamp_White_20k"><bounds x="154" y="330" width="12" height="12" /></bezel>
860      <!-- Bonus Multiplier Lamps -->
861      <bezel name="lamp51" element="Lamp_2x"><bounds x="134" y="318" width="14" height="14" /></bezel>      <!-- 2X Bonus -->
862      <bezel name="lamp36" element="Lamp_3x"><bounds x="172" y="318" width="14" height="14" /></bezel>      <!-- 3X Bonus -->
863      <bezel name="lamp21" element="Lamp_5x"><bounds x="153" y="310" width="14" height="14" /></bezel>      <!-- 5X Bonus -->
864      <!-- Grotto Lamps -->
865      <bezel name="lamp19" element="Lamp_White_25k"><bounds x="17" y="090" width="12" height="12" /></bezel>      <!-- 25,000 Grotto -->
866      <bezel name="lamp5"  element="Lamp_White_1">  <bounds x="09" y="132" width="09" height="09" /></bezel>      <!-- 1 -->
867      <bezel name="lamp20" element="Lamp_White_2">  <bounds x="09" y="147" width="09" height="09" /></bezel>      <!-- 2 -->
868      <bezel name="lamp35" element="Lamp_White_3">  <bounds x="09" y="162" width="09" height="09" /></bezel>      <!-- 3 -->
869      <bezel name="lamp50" element="Lamp_White_4">  <bounds x="09" y="177" width="09" height="09" /></bezel>      <!-- 4 -->
870      <bezel name="lamp6"  element="Lamp_White_5">  <bounds x="09" y="192" width="09" height="09" /></bezel>      <!-- 5 -->
871      <!-- Playmate of the Month Lamps -->
872      <bezel name="lamp7"  element="Lamp_White_March">    <bounds x="56" y="225" width="21" height="18" /></bezel>   <!-- March -->
873      <bezel name="lamp22" element="Lamp_White_May">      <bounds x="50" y="244" width="13" height="18" /></bezel>   <!-- May -->
874      <bezel name="lamp37" element="Lamp_White_January">  <bounds x="44" y="263" width="29" height="18" /></bezel>   <!-- January -->
875      <bezel name="lamp52" element="Lamp_White_July">     <bounds x="38" y="282" width="16" height="18" /></bezel>   <!-- July -->
876      <bezel name="lamp8"  element="Lamp_White_September"><bounds x="32" y="301" width="37" height="18" /></bezel>   <!-- September -->
877
878
879
880      <!-- Outhole -->
881      <bezel name="solenoid6"  element="Solenoid_Outhole">                        <bounds x="150" y="455" width="58" height="22" /></bezel>
882      <bezel element="Switch_RollOn_WireForm_Left" inputtag="X0" inputmask="0x80"><bounds x="163" y="453" width="20" height="16" /></bezel>
883      <bezel element="Key_BSpace">                                                <bounds x="185" y="455" width="15" height="14" /></bezel>
884
885
886      <!-- Pop Bumper Left -->
887      <bezel name="solenoid8"  element="Solenoid_Bumper_Black_Star">           <bounds x="084" y="100" width="80" height="80" /></bezel>
888      <bezel element="Switch_Bumper_Black_Star" inputtag="X4" inputmask="0x80"><bounds x="084" y="100" width="80" height="80" /></bezel>
889      <bezel element="Lamp_Bumper_GI">                                         <bounds x="084" y="100" width="80" height="80" /></bezel>
890      <bezel element="Key_Z">                                                  <bounds x="141" y="126" width="09" height="09" /></bezel>
891
892      <!-- Pop Bumper Right -->
893      <bezel name="solenoid9"  element="Solenoid_Bumper_Black_Star">           <bounds x="157" y="100" width="80" height="80" /></bezel>
894      <bezel element="Switch_Bumper_Black_Star" inputtag="X4" inputmask="0x40"><bounds x="157" y="100" width="80" height="80" /></bezel>
895      <bezel element="Lamp_Bumper_GI">                                         <bounds x="157" y="100" width="80" height="80" /></bezel>
896      <bezel element="Key_X">                                                  <bounds x="169" y="126" width="09" height="09" /></bezel>
897
898      <!-- Pop Bumper Middle -->
899      <bezel name="solenoid10" element="Solenoid_Bumper_Black_Star">           <bounds x="121" y="153" width="80" height="80" /></bezel>
900      <bezel element="Switch_Bumper_Black_Star" inputtag="X4" inputmask="0x20"><bounds x="121" y="153" width="80" height="80" /></bezel>
901      <bezel element="Lamp_Bumper_GI">                                         <bounds x="121" y="153" width="80" height="80" /></bezel>
902      <bezel element="Key_C">                                                  <bounds x="155" y="157" width="09" height="09" /></bezel>
903
904
905      <!-- Slingshot Left -->
906      <bezel name="solenoid13" element="Solenoid_SlingShot_Right">         <bounds x="221" y="335" width="69" height="80" /></bezel>
907      <bezel element="Switch_Leaf_Vertical" inputtag="X4" inputmask="0x10"><bounds x="060" y="399" width="08" height="09" /></bezel>
908      <bezel element="Key_V">                                              <bounds x="060" y="390" width="09" height="09" /></bezel>
909
910      <!-- Slingshot Right -->
911      <bezel name="solenoid11" element="Solenoid_SlingShot_Left">          <bounds x="35" y="335" width="69" height="80" /></bezel>
912      <bezel element="Switch_Leaf_Vertical" inputtag="X4" inputmask="0x08"><bounds x="257" y="399" width="08" height="09" /></bezel>
913      <bezel element="Key_B">                                              <bounds x="257" y="390" width="09" height="09" /></bezel>
914
915
916      <!-- Kickback Grotto -->
917      <bezel name="solenoid7"  element="Solenoid_Kickback">                       <bounds x="008" y="230" width="10" height="15" /></bezel>
918      <bezel element="Switch_RollOn_WireForm_Down" inputtag="X3" inputmask="0x80"><bounds x="009" y="210" width="09" height="18" /></bezel>
919      <bezel element="Key_Q">                                                     <bounds x="017" y="210" width="09" height="09" /></bezel>
920
921
922      <!-- Drop Targets Rightside -->
923      <bezel name="solenoid12" element="Solenoid_DropTarget_Tall">    <bounds x="222" y="156" width="07" height="15" /></bezel>
924      <bezel element="DropTarget_Tall" inputtag="X0" inputmask="0x10"><bounds x="222" y="156" width="07" height="15" /></bezel>
925      <bezel element="Key_BSlash">                                    <bounds x="230" y="156" width="10" height="10" /></bezel>
926      <bezel name="solenoid12" element="Solenoid_DropTarget_Tall">    <bounds x="228" y="171" width="07" height="15" /></bezel>
927      <bezel element="DropTarget_Tall" inputtag="X0" inputmask="0x08"><bounds x="228" y="171" width="07" height="15" /></bezel>
928      <bezel element="Key_CBrkt">                                     <bounds x="236" y="171" width="10" height="10" /></bezel>
929      <bezel name="solenoid12" element="Solenoid_DropTarget_Tall">    <bounds x="234" y="186" width="07" height="15" /></bezel>
930      <bezel element="DropTarget_Tall" inputtag="X0" inputmask="0x04"><bounds x="234" y="186" width="07" height="15" /></bezel>
931      <bezel element="Key_OBrkt">                                     <bounds x="240" y="186" width="10" height="10" /></bezel>
932      <bezel name="solenoid12" element="Solenoid_DropTarget_Tall">    <bounds x="240" y="201" width="07" height="15" /></bezel>
933      <bezel element="DropTarget_Tall" inputtag="X0" inputmask="0x02"><bounds x="240" y="201" width="07" height="15" /></bezel>
934      <bezel element="Key_FSlash">                                    <bounds x="248" y="201" width="10" height="10" /></bezel>
935      <bezel name="solenoid12" element="Solenoid_DropTarget_Tall">    <bounds x="246" y="216" width="07" height="15" /></bezel>
936      <bezel element="DropTarget_Tall" inputtag="X0" inputmask="0x01"><bounds x="246" y="216" width="07" height="15" /></bezel>
937      <bezel element="Key_Dot">                                       <bounds x="252" y="216" width="14" height="14" /></bezel>
938
939      <!-- Drop Target Area Rebound Switch -->
940      <bezel element="Switch_Leaf_Vertical" inputtag="X4" inputmask="0x01"><bounds x="260" y="186" width="08" height="09" /></bezel>
941      <bezel element="Key_Comma"><bounds x="258" y="169" width="14" height="14" /></bezel>
942
943
944      <!-- 1 - 5 Key Lanes / Target -->
945      <bezel name="lamp3"  element="Lamp_White_1">                                      <bounds x="098" y="037" width="14" height="14" /></bezel>
946      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X2" inputmask="0x10"><bounds x="100" y="060" width="09" height="27" /></bezel>
947      <bezel element="Key_F">                                                           <bounds x="100" y="090" width="09" height="09" /></bezel>
948      <bezel name="lamp18" element="Lamp_White_2">                                      <bounds x="134" y="037" width="14" height="14" /></bezel>
949      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X2" inputmask="0x08"><bounds x="136" y="060" width="09" height="27" /></bezel>
950      <bezel element="Key_G">                                                           <bounds x="136" y="090" width="09" height="09" /></bezel>
951      <bezel name="lamp33" element="Lamp_White_3">                                      <bounds x="171" y="037" width="14" height="14" /></bezel>
952      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X2" inputmask="0x04"><bounds x="173" y="060" width="09" height="27" /></bezel>
953      <bezel element="Key_H">                                                           <bounds x="173" y="090" width="09" height="09" /></bezel>
954      <bezel name="lamp48" element="Lamp_White_4">                                      <bounds x="206" y="037" width="14" height="14" /></bezel>
955      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X2" inputmask="0x02"><bounds x="208" y="060" width="09" height="27" /></bezel>
956      <bezel element="Key_J">                                                           <bounds x="208" y="090" width="09" height="09" /></bezel>
957      <bezel name="lamp4"  element="Lamp_White_5">                                      <bounds x="153" y="225" width="14" height="14" /></bezel>
958      <bezel element="Switch_Target_Red_Forward"         inputtag="X2" inputmask="0x01"><bounds x="153.5" y="212" width="12" height="08" /></bezel>
959      <bezel element="Key_K">                                                           <bounds x="155"   y="202" width="09" height="09" /></bezel>
960
961
962      <!-- Right Middle 500/5000 Lane -->
963      <bezel name="lamp34" element="Lamp_White_Arrow_01">                               <bounds x="283" y="248" width="12.5" height="20" /></bezel>
964      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X3" inputmask="0x40"><bounds x="301" y="155" width="09"   height="27" /></bezel>
965      <bezel element="Key_W">                                                           <bounds x="301" y="185" width="09"   height="09" /></bezel>
966
967      <!-- Outlane Switches -->
968      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X2" inputmask="0x40"><bounds x="009" y="361" width="09" height="27" /></bezel>
969      <bezel element="Key_S">                                                           <bounds x="009" y="391" width="09" height="09" /></bezel>
970      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X2" inputmask="0x20"><bounds x="301" y="361" width="09" height="27" /></bezel>
971      <bezel element="Key_D">                                                           <bounds x="301" y="391" width="09" height="09" /></bezel>
972
973      <!-- Flipper Return Lane Switches -->
974      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X2" inputmask="0x80"><bounds x="030" y="361" width="09" height="27" /></bezel>
975      <bezel element="Key_A">                                                           <bounds x="030" y="391" width="09" height="09" /></bezel>
976      <bezel element="Switch_RollOver_WireForm_Vertical" inputtag="X2" inputmask="0x80"><bounds x="280" y="361" width="09" height="27" /></bezel>
977      <bezel element="Key_A">                                                           <bounds x="280" y="391" width="09" height="09" /></bezel>
978
979      <!-- Extra Ball / Special Rollover Button Switch -->
980      <bezel name="lamp23" element="Lamp_RollOver_Button"><bounds x="35" y="170" width="15" height="15" /></bezel>
981      <bezel element="Switch_RollOver_Button" inputtag="X3" inputmask="0x20"><bounds x="25" y="164" width="35" height="35" /></bezel>
982      <bezel element="Key_E">                                                <bounds x="50" y="173" width="09" height="09" /></bezel>
983
984      <!-- Playmate Targets Leftside -->
985      <bezel element="Target_White_Left" inputtag="X3" inputmask="0x10"><bounds x="40" y="223" width="08" height="12" /></bezel>
986      <bezel element="Key_R">                                           <bounds x="30" y="223" width="09" height="09" /></bezel>
987      <bezel element="Target_White_Left" inputtag="X3" inputmask="0x08"><bounds x="34" y="242" width="08" height="12" /></bezel>
988      <bezel element="Key_Y">                                           <bounds x="24" y="242" width="09" height="09" /></bezel>
989      <bezel element="Target_White_Left" inputtag="X3" inputmask="0x04"><bounds x="28" y="261" width="08" height="12" /></bezel>
990      <bezel element="Key_U">                                           <bounds x="18" y="261" width="09" height="09" /></bezel>
991      <bezel element="Target_White_Left" inputtag="X3" inputmask="0x02"><bounds x="22" y="280" width="08" height="12" /></bezel>
992      <bezel element="Key_I">                                           <bounds x="12" y="280" width="09" height="09" /></bezel>
993      <bezel element="Target_White_Left" inputtag="X3" inputmask="0x01"><bounds x="16" y="299" width="08" height="12" /></bezel>
994      <bezel element="Key_O">                                           <bounds x="06" y="299" width="09" height="09" /></bezel>
995
996   </view>
997
998</mamelayout>
trunk/src/mame/layout/wackygtr.lay
r249889r249890
1<?xml version="1.0"?>
2<mamelayout version="2">
3   <element name="digit" defstate="0">
4      <led7seg>
5         <color red="1.0" green="0.0" blue="0.0" />
6      </led7seg>
7   </element>
8
9   <element name="lamp" defstate="0">
10      <disk state="0">
11         <color red="0.2" green="0.2" blue="0" />
12         <bounds x="0" y="0"  width="1" height="1" />
13      </disk>
14      <disk state="1">
15         <color red="1" green="1" blue="0" />
16         <bounds x="0" y="0"  width="1" height="1" />
17      </disk>
18   </element>
19
20   <element name="rect" defstate="0">
21      <rect state="0">
22         <color red="1" green="1" blue="0" />
23         <bounds x="0" y="0"  width="1" height="1" />
24      </rect>
25   </element>
26
27   <element name="alligator" defstate="0">
28      <rect state="0">
29         <color red="0" green="1" blue="0" />
30         <bounds x="0" y="0"  width="10" height="2" />
31      </rect>
32      <disk state="0">
33         <color red="0" green="1" blue="0" />
34         <bounds x="0" y="0"  width="10" height="4" />
35      </disk>
36
37      <rect state="1">
38         <color red="0" green="1" blue="0" />
39         <bounds x="0" y="0"  width="10" height="5" />
40      </rect>
41      <disk state="1">
42         <color red="0" green="1" blue="0" />
43         <bounds x="0" y="0"  width="10" height="10" />
44      </disk>
45
46      <rect state="2">
47         <color red="0" green="1" blue="0" />
48         <bounds x="0" y="0"  width="10" height="8" />
49      </rect>
50      <disk state="2">
51         <color red="0" green="1" blue="0" />
52         <bounds x="0" y="0"  width="10" height="16" />
53      </disk>
54
55      <rect state="3">
56         <color red="0" green="1" blue="0" />
57         <bounds x="0" y="0"  width="10" height="13" />
58      </rect>
59      <disk state="3">
60         <color red="0" green="1" blue="0" />
61         <bounds x="0" y="5"  width="10" height="16" />
62      </disk>
63
64      <rect state="4">
65         <color red="0" green="1" blue="0" />
66         <bounds x="0" y="0"  width="10" height="18" />
67      </rect>
68      <disk state="4">
69         <color red="0" green="1" blue="0" />
70         <bounds x="0" y="10"  width="10" height="16" />
71      </disk>
72
73      <rect state="5">
74         <color red="0" green="1" blue="0" />
75         <bounds x="0" y="0"  width="10" height="23" />
76      </rect>
77      <disk state="5">
78         <color red="0" green="1" blue="0" />
79         <bounds x="0" y="15"  width="10" height="16" />
80      </disk>
81   </element>
82
83   <view name="Default Layout">
84
85      <!-- wacks -->
86      <bezel name="digit5" element="digit">
87         <bounds x="25" y="10"  width="8" height="10" />
88      </bezel>
89      <bezel name="digit4" element="digit">
90         <bounds x="35" y="10"  width="8" height="10" />
91      </bezel>
92
93      <!-- bites -->
94      <bezel name="digit3" element="digit">
95         <bounds x="25" y="25"  width="8" height="10" />
96      </bezel>
97      <bezel name="digit2" element="digit">
98         <bounds x="35" y="25"  width="8" height="10" />
99      </bezel>
100
101      <!-- score -->
102      <bezel name="digit1" element="digit">
103         <bounds x="25" y="40"  width="8" height="10" />
104      </bezel>
105      <bezel name="digit0" element="digit">
106         <bounds x="35" y="40"  width="8" height="10" />
107      </bezel>
108
109      <!-- high score -->
110      <bezel name="digit7" element="digit">
111         <bounds x="55" y="25"  width="8" height="10" />
112      </bezel>
113      <bezel name="digit6" element="digit">
114         <bounds x="65" y="25"  width="8" height="10" />
115      </bezel>
116
117      <!-- shadow box lamps -->
118      <bezel name="lamp4" element="lamp">
119         <bounds x="10" y="10"  width="10" height="4" />
120      </bezel>
121      <bezel name="lamp3" element="lamp">
122         <bounds x="10" y="18"  width="10" height="4" />
123      </bezel>
124      <bezel name="lamp2" element="lamp">
125         <bounds x="10" y="26"  width="10" height="4" />
126      </bezel>
127      <bezel name="lamp1" element="lamp">
128         <bounds x="10" y="34"  width="10" height="4" />
129      </bezel>
130      <bezel name="lamp0" element="lamp">
131         <bounds x="10" y="42"  width="10" height="4" />
132      </bezel>
133
134      <!-- game over lamp -->
135      <bezel name="lamp5" element="lamp">
136         <bounds x="35" y="55"  width="9" height="4" />
137      </bezel>
138
139      <!-- left timing lamps -->
140      <bezel name="lamp8" element="lamp">
141         <bounds x="25" y="0"  width="4" height="4" />
142      </bezel>
143      <bezel name="lamp9" element="lamp">
144         <bounds x="15" y="0"  width="4" height="4" />
145      </bezel>
146      <bezel name="lamp11" element="lamp">
147         <bounds x="5" y="2"  width="4" height="4" />
148      </bezel>
149      <bezel name="lamp10" element="lamp">
150         <bounds x="0" y="10"  width="4" height="4" />
151      </bezel>
152      <bezel name="lamp12" element="lamp">
153         <bounds x="0" y="21"  width="4" height="4" />
154      </bezel>
155      <bezel name="lamp13" element="lamp">
156         <bounds x="0" y="33"  width="4" height="4" />
157      </bezel>
158      <bezel name="lamp15" element="lamp">
159         <bounds x="0" y="45"  width="4" height="4" />
160      </bezel>
161      <bezel name="lamp14" element="lamp">
162         <bounds x="5" y="53"  width="4" height="4" />
163      </bezel>
164      <bezel name="lamp16" element="lamp">
165         <bounds x="15" y="55"  width="4" height="4" />
166      </bezel>
167      <bezel name="lamp17" element="lamp">
168         <bounds x="25" y="55"  width="4" height="4" />
169      </bezel>
170
171      <!-- right timing lamps -->
172      <bezel name="lamp27" element="lamp">
173         <bounds x="50" y="0"  width="4" height="4" />
174      </bezel>
175      <bezel name="lamp26" element="lamp">
176         <bounds x="60" y="0"  width="4" height="4" />
177      </bezel>
178      <bezel name="lamp24" element="lamp">
179         <bounds x="70" y="2"  width="4" height="4" />
180      </bezel>
181      <bezel name="lamp25" element="lamp">
182         <bounds x="75" y="10"  width="4" height="4" />
183      </bezel>
184      <bezel name="lamp23" element="lamp">
185         <bounds x="75" y="21"  width="4" height="4" />
186      </bezel>
187      <bezel name="lamp22" element="lamp">
188         <bounds x="75" y="33"  width="4" height="4" />
189      </bezel>
190      <bezel name="lamp20" element="lamp">
191         <bounds x="75" y="45"  width="4" height="4" />
192      </bezel>
193      <bezel name="lamp21" element="lamp">
194         <bounds x="70" y="53"  width="4" height="4" />
195      </bezel>
196      <bezel name="lamp19" element="lamp">
197         <bounds x="60" y="55"  width="4" height="4" />
198      </bezel>
199      <bezel name="lamp18" element="lamp">
200         <bounds x="50" y="55"  width="4" height="4" />
201      </bezel>
202
203      <!-- alligators -->
204      <bezel name="alligator0" element="alligator" inputtag="IN2" inputmask="0x01">
205         <bounds x="5" y="65"  width="10" height="40" />
206      </bezel>
207      <bezel name="alligator1" element="alligator" inputtag="IN2" inputmask="0x02">
208         <bounds x="20" y="65"  width="10" height="40" />
209      </bezel>
210      <bezel name="alligator2" element="alligator" inputtag="IN2" inputmask="0x04">
211         <bounds x="35" y="65"  width="10" height="40" />
212      </bezel>
213      <bezel name="alligator3" element="alligator" inputtag="IN2" inputmask="0x08">
214         <bounds x="50" y="65"  width="10" height="40" />
215      </bezel>
216      <bezel name="alligator4" element="alligator" inputtag="IN2" inputmask="0x10">
217         <bounds x="65" y="65"  width="10" height="40" />
218      </bezel>
219      <bezel name="cave" element="rect">
220         <bounds x="0" y="65"  width="80" height="4" />
221      </bezel>
222
223   </view>
224</mamelayout>
trunk/src/mame/machine/amstrad.c
r249889r249890
11401140      }
11411141      m_bank1->set_base(bank_base);
11421142      m_bank2->set_base(bank_base+0x02000);
1143      if ((m_gate_array.mrer & (1<<2)) == 0 && m_gate_array.romdis == 0)
1144      {
1145         if (m_exp)
1146            m_exp->set_mapping(MAP_LOWER);
1147      }
11481143   }
11491144   else  // CPC+/GX4000
11501145   {
r249889r249890
12091204         {
12101205            m_bank1->set_base(m_region_cart->base());
12111206            m_bank2->set_base(m_region_cart->base() + 0x2000);
1212            if (m_exp)
1213               m_exp->set_mapping(MAP_LOWER);
12141207         }
12151208      }
12161209   }
r249889r249890
12421235      m_bank7->set_base(bank_base);
12431236      m_bank8->set_base(bank_base+0x2000);
12441237   }
1245   if ( ! ( m_gate_array.mrer & 0x08 ) && m_gate_array.romdis == 0)
1246   {
1247      if (m_exp)
1248         m_exp->set_mapping(MAP_UPPER);
1249   }
1250
12511238}
12521239
12531240
r249889r249890
16731660      /* b3b2 != 0 then change the state of upper or lower rom area and rethink memory */
16741661      if (m_exp)
16751662      {
1676         if((dataToGateArray & 0x0c) != 0x0c)
1663         if((dataToGateArray & 0x0c) != 0)
16771664            m_exp->romen_w(0);  // active low
16781665         else
16791666            m_exp->romen_w(1);
16801667      }
1668
16811669      amstrad_setLowerRom();
16821670      amstrad_setUpperRom();
16831671
r249889r249890
24082396
24092397   /* mappings for other expansion devices */
24102398   if (m_exp)
2411      m_exp->set_mapping(MAP_OTHER);
2399      m_exp->set_mapping();
24122400}
24132401
24142402
r249889r249890
29642952   m_gate_array.hsync = 0;
29652953   m_GateArray_RamConfiguration = 0;
29662954   m_gate_array.hsync_counter = 2;
2967   AmstradCPC_GA_SetRamConfiguration();
2955
29682956/*  space.install_read_bank(0x0000, 0x1fff, "bank1");
29692957    space.install_read_bank(0x2000, 0x3fff, "bank2");
29702958
trunk/src/mame/machine/apollo.c
r249889r249890
9595      PORT_CONFNAME(APOLLO_CONF_25_YEARS_AGO, APOLLO_CONF_25_YEARS_AGO, "25 Years Ago ...")
9696      PORT_CONFSETTING(0x00, DEF_STR ( Off ) )
9797      PORT_CONFSETTING(APOLLO_CONF_25_YEARS_AGO, DEF_STR ( On ) )
98#ifdef APOLLO_XXL
99      PORT_CONFNAME(APOLLO_CONF_NODE_ID, APOLLO_CONF_NODE_ID, "Node ID from Disk")
100      PORT_CONFSETTING(0x00, DEF_STR ( Off ) )
101      PORT_CONFSETTING(APOLLO_CONF_NODE_ID, DEF_STR ( On ) )
102#endif
98
99//      PORT_CONFNAME(APOLLO_CONF_NODE_ID, APOLLO_CONF_NODE_ID, "Node ID from Disk")
100//      PORT_CONFSETTING(0x00, DEF_STR ( Off ) )
101//      PORT_CONFSETTING(APOLLO_CONF_NODE_ID, DEF_STR ( On ) )
102
103103//      PORT_CONFNAME(APOLLO_CONF_IDLE_SLEEP, 0x00, "Idle Sleep")
104104//      PORT_CONFSETTING(0x00, DEF_STR ( Off ) )
105105//      PORT_CONFSETTING(APOLLO_CONF_IDLE_SLEEP, DEF_STR ( On ) )
r249889r249890
111111      PORT_CONFNAME(APOLLO_CONF_FPU_TRACE, 0x00, "FPU Trace")
112112      PORT_CONFSETTING(0x00, DEF_STR ( Off ) )
113113      PORT_CONFSETTING(APOLLO_CONF_FPU_TRACE, DEF_STR ( On ) )
114#ifdef APOLLO_XXL
115      PORT_CONFNAME(APOLLO_CONF_DISK_TRACE, 0x00, "Disk Trace")
116      PORT_CONFSETTING(0x00, DEF_STR ( Off ) )
117      PORT_CONFSETTING(APOLLO_CONF_DISK_TRACE, DEF_STR ( On ) )
118114
119      PORT_CONFNAME(APOLLO_CONF_NET_TRACE, 0x00, "Network Trace")
120      PORT_CONFSETTING(0x00, DEF_STR ( Off ) )
121      PORT_CONFSETTING(APOLLO_CONF_NET_TRACE, DEF_STR ( On ) )
122#endif
115//      PORT_CONFNAME(APOLLO_CONF_DISK_TRACE, 0x00, "Disk Trace")
116//      PORT_CONFSETTING(0x00, DEF_STR ( Off ) )
117//      PORT_CONFSETTING(APOLLO_CONF_DISK_TRACE, DEF_STR ( On ) )
118
119//      PORT_CONFNAME(APOLLO_CONF_NET_TRACE, 0x00, "Network Trace")
120//      PORT_CONFSETTING(0x00, DEF_STR ( Off ) )
121//      PORT_CONFSETTING(APOLLO_CONF_NET_TRACE, DEF_STR ( On ) )
122
123123INPUT_PORTS_END
124124
125125class apollo_config_device : public device_t
r249889r249890
857857}
858858
859859//##########################################################################
860// machine/apollo_ni.c - APOLLO DS3500 node ID
861//##########################################################################
862
863#undef VERBOSE
864#define VERBOSE 0
865
866#define DEFAULT_NODE_ID 0x12345
867
868/***************************************************************************
869 IMPLEMENTATION
870 ***************************************************************************/
871
872/*** Apollo Node ID device ***/
873
874// device type definition
875const device_type APOLLO_NI = &device_creator<apollo_ni> ;
876
877//-------------------------------------------------
878//  apollo_ni - constructor
879//-------------------------------------------------
880
881apollo_ni::apollo_ni(const machine_config &mconfig, const char *tag,
882      device_t *owner, UINT32 clock) :
883   device_t(mconfig, APOLLO_NI, "Node ID", tag, owner, clock, "node_id",
884         __FILE__), device_image_interface(mconfig, *this)
885{
886}
887
888//-------------------------------------------------
889//  apollo_ni - destructor
890//-------------------------------------------------
891
892apollo_ni::~apollo_ni()
893{
894}
895
896void apollo_ni::device_config_complete()
897{
898   update_names(APOLLO_NI, "node_id", "ni");
899}
900
901//-------------------------------------------------
902//  device_start - device-specific startup
903//-------------------------------------------------
904
905void apollo_ni::device_start()
906{
907   CLOG1(("apollo_ni::device_start"));
908   set_node_id(DEFAULT_NODE_ID);
909}
910
911//-------------------------------------------------
912//  device_reset - device-specific reset
913//-------------------------------------------------
914
915void apollo_ni::device_reset()
916{
917   CLOG1(("apollo_ni::device_reset"));
918}
919
920//-------------------------------------------------
921//  set node ID
922//-------------------------------------------------
923
924void apollo_ni::set_node_id(UINT32 node_id)
925{
926   m_node_id = node_id;
927   CLOG1(("apollo_ni::set_node_id: node ID is %x", node_id));
928}
929
930//-------------------------------------------------
931//  read/write
932//-------------------------------------------------
933
934WRITE16_MEMBER(apollo_ni::write)
935{
936   CLOG1(("Error: writing node id ROM at offset %02x = %04x & %04x", offset, data, mem_mask));
937}
938
939READ16_MEMBER(apollo_ni::read)
940{
941   UINT16 data = 0;
942   switch (offset & 0x0f)
943   {
944   case 1: // msb
945      data = (m_node_id >> 16) & 0xff;
946      break;
947   case 2:
948      data = (m_node_id >> 8) & 0xff;
949      break;
950   case 3: // lsb
951      data = m_node_id & 0xff;
952      break;
953   case 15: // checksum
954      data = ((m_node_id >> 16) + (m_node_id >> 8) + m_node_id) & 0xff;
955      break;
956   default:
957      data = 0;
958      break;
959   }
960   data <<= 8;
961   CLOG2(("reading node id ROM at offset %02x = %04x & %04x", offset, data, mem_mask));
962   return data;
963}
964
965/*-------------------------------------------------
966 DEVICE_IMAGE_LOAD( rom )
967 -------------------------------------------------*/
968bool apollo_ni::call_load()
969{
970   CLOG1(("apollo_ni::call_load: %s", filename()));
971
972   UINT64 size = length();
973    if (size != 32)
974   {
975      CLOG(("apollo_ni::call_load: %s has unexpected file size %" I64FMT "d", filename(), size));
976   }
977   else
978   {
979      UINT8 data[32];
980      fread(data, sizeof(data));
981
982      UINT8 checksum = data[2] + data[4] + data[6];
983      if (checksum != data[30])
984      {
985         CLOG(("apollo_ni::call_load: checksum is %02x - should be %02x", checksum, data[30]));
986      }
987      else
988      {
989         m_node_id = (((data[2] << 8) | data[4]) << 8) | (data[6]);
990         CLOG1(("apollo_ni::call_load: node ID is %x", m_node_id));
991         return IMAGE_INIT_PASS;
992      }
993   }
994   return IMAGE_INIT_FAIL;
995}
996
997/*-------------------------------------------------
998 DEVICE_IMAGE_CREATE( rom )
999 -------------------------------------------------*/
1000
1001bool apollo_ni::call_create(int format_type, option_resolution *format_options)
1002{
1003   CLOG1(("apollo_ni::call_create:"));
1004
1005   if (length() > 0)
1006   {
1007      CLOG(("apollo_ni::call_create: %s already exists", filename()));
1008   }
1009   else
1010   {
1011      UINT32 node_id = 0;
1012      sscanf(basename_noext(), "%x", &node_id);
1013      if (node_id == 0 || node_id > 0xfffff)
1014      {
1015         CLOG(("apollo_ni::call_create: filename %s is no valid node ID", basename()));
1016      }
1017      else
1018      {
1019         UINT8 data[32];
1020         memset(data, 0, sizeof(data));
1021         data[2] = node_id >> 16;
1022         data[4] = node_id >> 8;
1023         data[6] = node_id;
1024         data[30] = data[2] + data[4] + data[6];
1025         fwrite(data, sizeof(data));
1026         CLOG(("apollo_ni::call_create: created %s with node ID %x", filename(), node_id));
1027         set_node_id(node_id);
1028         return IMAGE_INIT_PASS;
1029      }
1030   }
1031   return IMAGE_INIT_FAIL;
1032}
1033
1034/*-------------------------------------------------
1035 DEVICE_IMAGE_UNLOAD( rom )
1036 -------------------------------------------------*/
1037void apollo_ni::call_unload()
1038{
1039   CLOG1(("apollo_ni::call_unload:"));
1040}
1041
1042//-------------------------------------------------
1043//  set node ID from disk
1044//-------------------------------------------------
1045
1046void apollo_ni::set_node_id_from_disk()
1047{
1048#ifdef APOLLO_XXL
1049   // set node ID from UID of logical volume 1 of logical unit 0
1050   UINT8 db[0x50];
1051
1052   // check label of physical volume and get sector data of logical volume 1
1053   // Note: sector data starts with 32 byte block header
1054   if (omti8621_device::get_sector(0, db, sizeof(db), 0) == sizeof(db)
1055         && memcmp(db + 0x22, "APOLLO", 6) == 0)
1056   {
1057      UINT16 sector1 = apollo_is_dn5500() ? 4 : 1;
1058
1059      if (omti8621_device::get_sector(sector1, db, sizeof(db), 0) == sizeof(db))
1060      {
1061         // set node_id from UID of logical volume 1 of logical unit 0
1062         m_node_id = (((db[0x49] << 8) | db[0x4a]) << 8) | db[0x4b];
1063         CLOG1(("apollo_ni::set_node_id_from_disk: node ID is %x", m_node_id));
1064      }
1065   }
1066#endif
1067}
1068
1069//##########################################################################
1070860// machine/apollo.c - APOLLO DS3500 CPU Board
1071861//##########################################################################
1072862
r249889r249890
1126916
1127917   MCFG_MC146818_ADD( APOLLO_RTC_TAG, XTAL_32_768kHz )
1128918   MCFG_MC146818_UTC( true )
1129   MCFG_MC146818_BINARY( false )
1130   MCFG_MC146818_24_12( false )
1131   MCFG_MC146818_EPOCH( 0 )
1132919
1133   MCFG_APOLLO_NI_ADD( APOLLO_NI_TAG, 0 )
1134
1135920   MCFG_APOLLO_SIO_ADD( APOLLO_SIO2_TAG, XTAL_3_6864MHz )
1136921   MCFG_APOLLO_SIO_IRQ_CALLBACK(WRITELINE(apollo_state, sio2_irq_handler))
1137922
r249889r249890
1174959   MCFG_APOLLO_SIO_IRQ_CALLBACK(WRITELINE(apollo_state, sio_irq_handler))
1175960   MCFG_APOLLO_SIO_OUTPORT_CALLBACK(WRITE8(apollo_state, sio_output))
1176961   MCFG_APOLLO_SIO_A_TX_CALLBACK(DEVWRITELINE(APOLLO_KBD_TAG, apollo_kbd_device, rx_w))
1177
1178#ifdef APOLLO_XXL
1179   MCFG_APOLLO_SIO_B_TX_CALLBACK(DEVWRITELINE(APOLLO_STDIO_TAG, apollo_stdio_device, rx_w))
1180#endif
1181962MACHINE_CONFIG_END
1182963
1183964static DEVICE_INPUT_DEFAULTS_START( apollo_terminal )
r249889r249890
12341015   apollo_csr_set_servicemode(apollo_config(APOLLO_CONF_SERVICE_MODE));
12351016
12361017   // change year according to configuration settings
1237   if (year < 25 && apollo_config(APOLLO_CONF_25_YEARS_AGO))
1018   if (year < 20 && apollo_config(APOLLO_CONF_20_YEARS_AGO))
12381019   {
1239      year += 75;
1020      year+=80;
12401021      apollo_rtc_w(space, 9, year);
12411022   }
1242   else if (year < 20 && apollo_config(APOLLO_CONF_20_YEARS_AGO))
1023   else if (year < 25 && apollo_config(APOLLO_CONF_25_YEARS_AGO))
12431024   {
1244      year += 80;
1025      year += 75;
12451026      apollo_rtc_w(space, 9, year);
12461027   }
12471028   else if (year >= 80 && !apollo_config(APOLLO_CONF_20_YEARS_AGO)
12481029         && !apollo_config(APOLLO_CONF_25_YEARS_AGO))
12491030   {
1250      year -= 80;
1031      year -=80;
12511032      apollo_rtc_w(space, 9, year);
12521033   }
12531034
r249889r249890
12591040      m_dn3000_timer->adjust(attotime::from_hz(2), 0, attotime::from_hz(2));
12601041   }
12611042}
1262
1263#ifdef APOLLO_XXL
1264
1265//##########################################################################
1266// machine/apollo_stdio.c - stdio terminal for mess
1267//##########################################################################
1268
1269#undef VERBOSE
1270#define VERBOSE 0
1271
1272#if defined(__linux__)
1273#include <fcntl.h>
1274#include <unistd.h>
1275#endif
1276
1277/***************************************************************************
1278 IMPLEMENTATION
1279 ***************************************************************************/
1280
1281// device type definition
1282const device_type APOLLO_STDIO = &device_creator<apollo_stdio_device> ;
1283
1284//-------------------------------------------------
1285// apollo_stdio_device - constructor
1286//-------------------------------------------------
1287
1288apollo_stdio_device::apollo_stdio_device(const machine_config &mconfig,
1289      const char *tag, device_t *owner, UINT32 clock) :
1290   device_t(mconfig, APOLLO_STDIO, "Apollo STDIO", tag, owner, clock,
1291         "apollo_stdio", __FILE__), device_serial_interface(mconfig, *this),
1292         m_tx_w(*this)
1293{
1294}
1295
1296//-------------------------------------------------
1297//  device_start - device-specific startup
1298//-------------------------------------------------
1299
1300void apollo_stdio_device::device_start()
1301{
1302   CLOG1(("device_start"));
1303
1304   m_tx_w.resolve_safe();
1305
1306   m_poll_timer = machine().scheduler().timer_alloc(timer_expired_delegate(
1307         FUNC(apollo_stdio_device::poll_timer), this));
1308}
1309
1310//-------------------------------------------------
1311//  device_reset - device-specific reset
1312//-------------------------------------------------
1313
1314void apollo_stdio_device::device_reset()
1315{
1316   CLOG1(("device_reset"));
1317
1318   // comms is at 8N1, 9600 baud
1319   set_data_frame(1, 8, PARITY_NONE, STOP_BITS_1);
1320   set_rcv_rate(9600);
1321   set_tra_rate(9600);
1322
1323   m_tx_busy = false;
1324   m_xmit_read = m_xmit_write = 0;
1325
1326#if defined(__linux__)
1327   // FIXME: unavailable in mingw
1328   // set stdin to nonblocking to allow polling
1329   fcntl(STDIN_FILENO, F_SETFL, fcntl(STDIN_FILENO, F_GETFL) | O_NONBLOCK);
1330#endif
1331
1332   // start timer
1333   m_poll_timer->adjust(attotime::zero, 0, attotime::from_msec(1)); // every 1ms
1334}
1335
1336void apollo_stdio_device::device_timer(emu_timer &timer, device_timer_id id,
1337      int param, void *ptr)
1338{
1339   device_serial_interface::device_timer(timer, id, param, ptr);
1340}
1341
1342void apollo_stdio_device::rcv_complete() // Rx completed receiving byte
1343{
1344   receive_register_extract();
1345   UINT8 data = get_received_char();
1346
1347   // output data to stdout (FIXME: '\r' may confuse ceterm)
1348   if (data != '\r')
1349   {
1350      ::putchar(data);
1351      ::fflush(stdout);
1352   }
1353   CLOG1(("rcv_complete %02x - %c", data, data));
1354}
1355
1356void apollo_stdio_device::tra_complete() // Tx completed sending byte
1357{
1358   // is there more waiting to send?
1359   if (m_xmit_read != m_xmit_write)
1360   {
1361      transmit_register_setup(m_xmitring[m_xmit_read++]);
1362      if (m_xmit_read >= XMIT_RING_SIZE)
1363      {
1364         m_xmit_read = 0;
1365      }
1366   }
1367   else
1368   {
1369      m_tx_busy = false;
1370   }
1371}
1372
1373void apollo_stdio_device::tra_callback() // Tx send bit
1374{
1375   int bit = transmit_register_get_data_bit();
1376   m_tx_w(bit);
1377
1378   CLOG2(("tra_callback %02x", bit));
1379}
1380
1381TIMER_CALLBACK_MEMBER(apollo_stdio_device::poll_timer)
1382{
1383#if defined(__linux__)
1384   UINT8 data;
1385   while (::read(STDIN_FILENO, &data, 1) == 1)
1386   {
1387      xmit_char(data == '\n' ? '\r' : data);
1388   }
1389#endif
1390}
1391
1392void apollo_stdio_device::xmit_char(UINT8 data)
1393{
1394   CLOG1(("xmit_char %02x - %c", data, data));
1395
1396   // if tx is busy it'll pick this up automatically when it completes
1397   if (!m_tx_busy)
1398   {
1399      m_tx_busy = true;
1400      transmit_register_setup(data);
1401   }
1402   else
1403   {
1404      // tx is busy, it'll pick this up next time
1405      m_xmitring[m_xmit_write++] = data;
1406      if (m_xmit_write >= XMIT_RING_SIZE)
1407      {
1408         m_xmit_write = 0;
1409      }
1410   }
1411}
1412#endif
trunk/src/mame/machine/bbc.c
r249889r249890
115115{
116116   if ((offset&0x04)==0)
117117   {
118      m_pagedRAM = BIT(data,7);
118      m_pagedRAM = (data >> 7) & 0x01;
119119      m_rombank =  data & 0x0f;
120120
121121      if (m_pagedRAM)
r249889r249890
135135   else
136136   {
137137      //the video display should now use this flag to display the shadow ram memory
138      m_vdusel=BIT(data,7);
139      bbc_setvideoshadow(m_vdusel);
138      m_vdusel=(data>>7)&0x01;
139      bbcbp_setvideoshadow(m_vdusel);
140140      //need to make the video display do a full screen refresh for the new memory area
141141      m_bank2->set_base(m_region_maincpu->base() + 0x3000);
142142   }
r249889r249890
291291
292292ACCCON is a read/write register
293293
294HAZEL is the 8K of RAM used by the MOS, filing system, and other ROMs at &C000-&DFFF
294HAZEL is the 8K of RAM used by the MOS, filing system, and other Roms at &C000-&DFFF
295295
296296ANDY is the name of the 4K of RAM used by the MOS at &8000-&8FFF
297297
r249889r249890
326326
327327   tempIRR=m_ACCCON_IRR;
328328
329   m_ACCCON_IRR = BIT(data,7);
330   m_ACCCON_TST = BIT(data,6);
331   m_ACCCON_IFJ = BIT(data,5);
332   m_ACCCON_ITU = BIT(data,4);
333   m_ACCCON_Y   = BIT(data,3);
334   m_ACCCON_X   = BIT(data,2);
335   m_ACCCON_E   = BIT(data,1);
336   m_ACCCON_D   = BIT(data,0);
329   m_ACCCON_IRR=(data>>7)&1;
330   m_ACCCON_TST=(data>>6)&1;
331   m_ACCCON_IFJ=(data>>5)&1;
332   m_ACCCON_ITU=(data>>4)&1;
333   m_ACCCON_Y  =(data>>3)&1;
334   m_ACCCON_X  =(data>>2)&1;
335   m_ACCCON_E  =(data>>1)&1;
336   m_ACCCON_D  =(data>>0)&1;
337337
338338   if (tempIRR!=m_ACCCON_IRR)
339339   {
r249889r249890
349349      m_bank7->set_base(m_region_os->base());
350350   }
351351
352   bbc_setvideoshadow(m_ACCCON_D);
352   bbcbp_setvideoshadow(m_ACCCON_D);
353353
354354
355355   if (m_ACCCON_X)
r249889r249890
558558      if ((myo>=0x10) && (myo<=0x17))                   return 0xfe;                                                    /* Serial System Chip */
559559      if ((myo>=0x18) && (myo<=0x1f))                   return m_upd7002 ? m_upd7002->read(space, myo-0x18) : 0xfe;     /* A to D converter */
560560      if ((myo>=0x20) && (myo<=0x23))                   return 0xfe;                                                    /* VideoULA */
561      if ((myo>=0x24) && (myo<=0x27))                   return bbcm_wd177xl_read(space, myo-0x24);                      /* 177x Control Latch */
561      if ((myo>=0x24) && (myo<=0x27))                   return bbcm_wd177xl_read(space, myo - 0x24);                    /* 177x Control Latch */
562562      if ((myo>=0x28) && (myo<=0x2f) && (m_wd1770))     return m_wd1770->read(space, myo-0x28);                         /* 1770 Controller */
563563      if ((myo>=0x28) && (myo<=0x2f) && (m_wd1772))     return m_wd1772->read(space, myo-0x28);                         /* 1772 Controller */
564564      if ((myo>=0x28) && (myo<=0x2f))                   return 0xfe;                                                    /* No Controller */
r249889r249890
726726      /* keyboard not enabled so increment counter */
727727      m_column = (m_column + 1) % 16;
728728
729      /* OS 0.1 programs CA2 to interrupt on negative edge and expects the keyboard to still work */
730      //int set = (m_os01 ? 0 : 1);
731
732729      if (m_column < 13)
733730      {
734731         /* KBD IC4 8 input NAND gate */
r249889r249890
782779      bit = 1;
783780   }
784781
785   /* OS 0.1 programs CA2 to interrupt on negative edge and expects the keyboard to still work */
786   //int set = (m_os01 ? 0 : 1);
787
788782   if ((res | 1) != 0xff)
789783   {
790784      m_via6522_0->write_ca2(1);
r249889r249890
878872{
879873   int bit, value;
880874   bit = data & 0x07;
881   value = BIT(data,3);
875   value = (data >> 3) & 0x01;
882876
883877   //logerror("SYSTEM write portb %d %d %d\n",data,bit,value);
884878
r249889r249890
10541048   if (m_rtc)
10551049   {
10561050      //set the Address Select
1057      if (m_MC146818_AS != BIT(data,7))
1051      if (m_MC146818_AS != ((data>>7)&1))
10581052      {
1059         m_MC146818_AS = BIT(data,7);
1053         m_MC146818_AS=(data>>7)&1;
10601054         MC146818_set(space);
10611055      }
10621056
10631057      //if CE changes
1064      if (m_MC146818_CE != BIT(data,6))
1058      if (m_MC146818_CE != ((data>>6)&1))
10651059      {
1066         m_MC146818_CE = BIT(data,6);
1060         m_MC146818_CE=(data>>6)&1;
10671061         MC146818_set(space);
10681062      }
10691063   }
r249889r249890
14241418***************************************/
14251419
14261420
1421WRITE_LINE_MEMBER(bbc_state::bbc_i8271_interrupt)
1422{
1423   /* I'm assuming that the nmi is edge triggered */
1424   /* a interrupt from the fdc will cause a change in line state, and
1425   the nmi will be triggered, but when the state changes because the int
1426   is cleared this will not cause another nmi */
1427   /* I'll emulate it like this to be sure */
1428
1429   if (state!=m_previous_i8271_int_state)
1430   {
1431      if (state)
1432      {
1433         /* I'll pulse it because if I used hold-line I'm not sure
1434         it would clear - to be checked */
1435         m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
1436      }
1437   }
1438
1439   m_previous_i8271_int_state = state;
1440}
1441
14271442WRITE_LINE_MEMBER(bbc_state::motor_w)
14281443{
14291444   m_i8271->subdevice<floppy_connector>("0")->get_device()->mon_w(!state);
r249889r249890
14361451   m_i8271->subdevice<floppy_connector>("1")->get_device()->ss_w(state);
14371452}
14381453
1439
14401454/**************************************
14411455   WD1770 disc control function
14421456***************************************/
14431457
14441458
1459/*
1460   B/ B+ drive control:
1461
1462        Bit       Meaning
1463        -----------------
1464        7,6       Not used.
1465         5        Reset drive controller chip. (0 = reset controller, 1 = no reset)
1466         4        Interrupt Enable (0 = enable int, 1 = disable int)
1467         3        Double density select (0 = double, 1 = single).
1468         2        Side select (0 = side 0, 1 = side 1).
1469         1        Drive select 1.
1470         0        Drive select 0.
1471*/
1472
1473/*
1474density select
1475single density is as the 8271 disc format
1476double density is as the 8271 disc format but with 16 sectors per track
1477*/
1478
1479
14451480/* wd177x_IRQ_SET and latch bit 4 (nmi_enable) are NAND'ED together
14461481   wd177x_DRQ_SET and latch bit 4 (nmi_enable) are NAND'ED together
14471482   the output of the above two NAND gates are then OR'ED together and sent to the 6502 NMI line.
r249889r249890
14541489  The nmi is edge triggered, and triggers on a +ve edge.
14551490*/
14561491
1492void bbc_state::bbc_update_fdq_int(int state)
1493{
1494   int bbc_state;
14571495
1458void bbc_state::bbc_update_nmi()
1459{
1460   if (m_fdc_irq || m_fdc_drq)
1461      m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
1496   /* if drq or irq is set, and interrupt is enabled */
1497   if ((m_wd177x_irq_state || m_wd177x_drq_state) && (m_177x_IntEnabled))
1498   {
1499      /* int trigger */
1500      bbc_state = 1;
1501   }
1502   else
1503   {
1504      /* do not trigger int */
1505      bbc_state = 0;
1506   }
1507   /* nmi is edge triggered, and triggers when the state goes from clear->set.
1508   Here we are checking this transition before triggering the nmi */
1509   if (bbc_state != m_previous_wd177x_int_state)
1510   {
1511      if (bbc_state)
1512      {
1513         /* I'll pulse it because if I used hold-line I'm not sure
1514         it would clear - to be checked */
1515         m_maincpu->set_input_line(INPUT_LINE_NMI,PULSE_LINE);
1516      }
1517   }
1518
1519   m_previous_wd177x_int_state = bbc_state;
14621520}
14631521
1464WRITE_LINE_MEMBER(bbc_state::fdc_intrq_w)
1522WRITE_LINE_MEMBER(bbc_state::bbc_wd177x_intrq_w)
14651523{
1466   m_fdc_irq = state;
1467   bbc_update_nmi();
1468
1524   m_wd177x_irq_state = state;
1525   bbc_update_fdq_int(state);
14691526}
14701527
1471WRITE_LINE_MEMBER(bbc_state::fdc_drq_w)
1528WRITE_LINE_MEMBER(bbc_state::bbc_wd177x_drq_w)
14721529{
1473   m_fdc_drq = state;
1474   bbc_update_nmi();
1530   m_wd177x_drq_state = state;
1531   bbc_update_fdq_int(state);
14751532}
14761533
1477/*
1478   B/ B+ drive control:
1479
1480        Bit       Meaning
1481        -----------------
1482        7,6       Not used.
1483         5        Reset drive controller chip. (0 = reset controller, 1 = no reset)
1484         4        Interrupt Enable (0 = enable int, 1 = disable int)
1485         3        Double density select (0 = double, 1 = single).
1486         2        Side select (0 = side 0, 1 = side 1).
1487         1        Drive select 1.
1488         0        Drive select 0.
1489*/
1490
14911534WRITE8_MEMBER(bbc_state::bbc_wd1770_status_w)
14921535{
14931536   floppy_image_device *floppy = NULL;
14941537
14951538   m_drive_control = data;
1539   logerror("Drive control %d \n", data);
14961540
1541   // bit 5: reset
1542   if (!BIT(data, 5)) m_wd1770->reset();
1543
14971544   // bit 0, 1: drive select
14981545   if (BIT(data, 0)) floppy = m_wd1770->subdevice<floppy_connector>("0")->get_device();
14991546   if (BIT(data, 1)) floppy = m_wd1770->subdevice<floppy_connector>("1")->get_device();
r249889r249890
15061553   // bit 3: density
15071554   m_wd1770->dden_w(BIT(data, 3));
15081555
1509   // bit 5: reset
1510   if (!BIT(data, 5)) m_wd1770->soft_reset();
1556   // bit 4: interrupt enable
1557   m_177x_IntEnabled = !BIT(data, 4);
15111558}
15121559
1513/*
1514   Master drive control:
1560/***************************************
1561BBC MASTER DISC SUPPORT
1562***************************************/
15151563
1516        Bit       Meaning
1517        -----------------
1518        7,6       Not used.
1519         5        Double density select (0 = double, 1 = single).
1520         4        Side select (0 = side 0, 1 = side 1).
1521         3        Drive select 2.
1522         2        Reset drive controller chip. (0 = reset controller, 1 = no reset)
1523         1        Drive select 1.
1524         0        Drive select 0.
1525*/
1526
15271564READ8_MEMBER(bbc_state::bbcm_wd177xl_read)
15281565{
15291566   return m_drive_control;
r249889r249890
15341571   floppy_image_device *floppy = NULL;
15351572
15361573   m_drive_control = data;
1574   //logerror("Drive control %d \n", data);
15371575
1576   // bit 2: reset
1577   if (!BIT(data, 2)) m_wd1770->reset();
1578
15381579   // bit 0, 1, 3: drive select
15391580   if (BIT(data, 0)) floppy = m_wd1770->subdevice<floppy_connector>("0")->get_device();
15401581   if (BIT(data, 1)) floppy = m_wd1770->subdevice<floppy_connector>("1")->get_device();
r249889r249890
15481589   // bit 5: density
15491590   m_wd1770->dden_w(BIT(data, 5));
15501591
1551   // bit 2: reset
1552   if (!BIT(data, 2)) m_wd1770->soft_reset();
1592   m_177x_IntEnabled = 1;
15531593}
15541594
15551595WRITE8_MEMBER(bbc_state::bbcm_wd1772l_write)
r249889r249890
15571597   floppy_image_device *floppy = NULL;
15581598
15591599   m_drive_control = data;
1600   //logerror("Drive control %d \n", data);
15601601
1602   // bit 2: reset
1603   if (!BIT(data, 2)) m_wd1772->reset();
1604
15611605   // bit 0, 1, 3: drive select
15621606   if (BIT(data, 0)) floppy = m_wd1772->subdevice<floppy_connector>("0")->get_device();
15631607   if (BIT(data, 1)) floppy = m_wd1772->subdevice<floppy_connector>("1")->get_device();
r249889r249890
15711615   // bit 5: density
15721616   m_wd1772->dden_w(BIT(data, 5));
15731617
1574   // bit 2: reset
1575   if (!BIT(data, 2)) m_wd1772->soft_reset();
1618   m_177x_IntEnabled = 1;
15761619}
15771620
15781621/**************************************
15791622   BBC B Rom loading functions
15801623***************************************/
15811624
1582int bbc_state::bbc_load_rom(device_image_interface &image, generic_slot_device *slot)
1625int bbc_state::bbc_load_cart(device_image_interface &image, generic_slot_device *slot)
15831626{
15841627   UINT32 size = slot->common_get_size("rom");
15851628
15861629   if (size != 0x2000 && size != 0x4000)
15871630   {
1588      image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported ROM size");
1631      image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size");
15891632      return IMAGE_INIT_FAIL;
15901633   }
15911634
r249889r249890
16411684
16421685DRIVER_INIT_MEMBER(bbc_state,bbc)
16431686{
1644   m_os01 = false;
1645
16461687   m_rxd_cass = 0;
16471688   m_nr_high_tones = 0;
16481689   m_serproc_data = 0;
r249889r249890
16561697   m_via6522_0->write_cb2(1);
16571698}
16581699
1659
16601700// setup pointers for optional EPROMs
16611701void bbc_state::bbc_setup_banks(memory_bank *membank, int banks, UINT32 shift, UINT32 size)
16621702{
r249889r249890
17501790MACHINE_START_MEMBER(bbc_state, bbcb)
17511791{
17521792   m_mc6850_clock = 0;
1793   m_previous_i8271_int_state=0;
1794   m_previous_wd177x_int_state=1;
17531795   bbc_setup_banks(m_bank4, 16, 0, 0x4000);
17541796}
17551797
r249889r249890
17841826{
17851827   m_Speech = 1;
17861828   m_bank1->set_base(m_region_maincpu->base());
1787   m_bank2->set_base(m_region_maincpu->base() + 0x3000);  /* bank 2 screen/shadow ram     from 3000 to 7fff */
1829   m_bank2->set_base(m_region_maincpu->base() + 0x03000);  /* bank 2 screen/shadow ram     from 3000 to 7fff */
17881830   m_bank4->set_entry(0);
17891831   m_bank6->set_entry(0);
1790   m_bank7->set_base(m_region_os->base());                /* bank 7 points at the OS rom  from c000 to ffff */
1832   m_bank7->set_base(m_region_os->base());                /* bank 7 points at the OS rom  from c000 to ffff */
17911833
17921834   bbcb_IC32_initialise(this);
1835
1836   m_previous_wd177x_int_state=1;
17931837}
17941838
17951839
r249889r249890
18171861   m_bank7->set_base(m_region_os->base());                /* bank 6 OS rom of RAM         from c000 to dfff */
18181862
18191863   bbcb_IC32_initialise(this);
1864
1865   m_previous_wd177x_int_state=1;
18201866}
trunk/src/mame/machine/genpin.h
r249889r249890
2121   "knocker",
2222   "sling",
2323   "coinin",
24   "outhole",
25   "kickback",
26   "drop_target_reset",
27   "coil_coinlockout_engage",
28   "coil_coinlockout_release",
29   "relay_engage",
30   "relay_release",
31   "solenoid_engage",
32   "solenoid_release",
3324   0   /* end of array */
3425};
3526
trunk/src/mame/machine/osborne1.c
r249889r249890
7575         /* Row 7 */
7676         if ( offset & 0x80 )    data &= m_row7->read();
7777         break;
78      case 0x400: /* SCREEN-PAC */
79         if (m_screen_pac) data &= 0xFB;
80         break;
8178      case 0x900: /* IEEE488 PIA */
8279         data = m_pia0->read(space, offset & 0x03 );
8380         break;
r249889r249890
111108      case 0x100: /* Floppy */
112109         m_fdc->write(space, offset & 0x03, data );
113110         break;
114      case 0x400: /* SCREEN-PAC */
115         m_resolution = data & 0x01;
116         m_hc_left = (data >> 1) & 0x01;
117         break;
118111      case 0x900: /* IEEE488 PIA */
119112         m_pia0->write(space, offset & 0x03, data );
120113         break;
r249889r249890
343336
344337TIMER_CALLBACK_MEMBER(osborne1_state::osborne1_video_callback)
345338{
346   int const y = machine().first_screen()->vpos();
347   UINT8 ra=0;
339   int y = machine().first_screen()->vpos();
340   UINT8 ra=0,chr,gfx,dim;
341   UINT16 x,ma;
348342
349343   /* Check for start of frame */
350344   if ( y == 0 )
r249889r249890
361355   {
362356      ra = y % 10;
363357      /* Draw a line of the display */
364      bool const hires = m_screen_pac & m_resolution;
365      UINT16 const row = (m_new_start_y + (y/10)) * 128 & 0xF80;
366      UINT16 const col = (m_new_start_x & (hires ? 0x60 : 0x7F)) - ((hires && m_hc_left) ? 8 : 0);
358      ma = (m_new_start_y + (y/10)) * 128 + m_new_start_x;
367359      UINT16 *p = &m_bitmap.pix16(y);
368360
369      for ( UINT16 x = 0; x < (hires ? 104 : 52); x++ )
361      for ( x = 0; x < 52; x++ )
370362      {
371         UINT16 offs = row | ((col + x) & 0x7F);
372         UINT8 const chr = m_ram->pointer()[ 0xF000 + offs ];
373         UINT8 const dim = m_ram->pointer()[ 0x10000 + offs ] & 0x80;
363         chr = m_ram->pointer()[ 0xF000 + ( (ma+x) & 0xFFF ) ];
364         dim = m_ram->pointer()[ 0x10000 + ( (ma+x) & 0xFFF ) ] & 0x80;
374365
375         UINT8 const gfx = ((chr & 0x80) && (ra == 9)) ? 0xFF : m_p_chargen[ (ra << 7) | (chr & 0x7F) ];
366         if ( (chr & 0x80) && (ra == 9) )
367            gfx = 0xFF;
368         else
369            gfx = m_p_chargen[ (ra << 7) | ( chr & 0x7F ) ];
376370
377371         /* Display a scanline of a character */
378372         *p++ = BIT(gfx, 7) ? ( dim ? 2 : 1 ) : 0;
379         if (!hires) { p[0] = p[-1]; p++; }
380373         *p++ = BIT(gfx, 6) ? ( dim ? 2 : 1 ) : 0;
381         if (!hires) { p[0] = p[-1]; p++; }
382374         *p++ = BIT(gfx, 5) ? ( dim ? 2 : 1 ) : 0;
383         if (!hires) { p[0] = p[-1]; p++; }
384375         *p++ = BIT(gfx, 4) ? ( dim ? 2 : 1 ) : 0;
385         if (!hires) { p[0] = p[-1]; p++; }
386376         *p++ = BIT(gfx, 3) ? ( dim ? 2 : 1 ) : 0;
387         if (!hires) { p[0] = p[-1]; p++; }
388377         *p++ = BIT(gfx, 2) ? ( dim ? 2 : 1 ) : 0;
389         if (!hires) { p[0] = p[-1]; p++; }
390378         *p++ = BIT(gfx, 1) ? ( dim ? 2 : 1 ) : 0;
391         if (!hires) { p[0] = p[-1]; p++; }
392379         *p++ = BIT(gfx, 0) ? ( dim ? 2 : 1 ) : 0;
393         if (!hires) { p[0] = p[-1]; p++; }
394380      }
395381   }
396382
r249889r249890
423409   m_pia_1_irq_state = FALSE;
424410   m_in_irq_handler = 0;
425411
426   m_screen_pac = 0 != (m_cnf->read() & 0x01);
427   m_resolution = 0;
428   m_hc_left = 0;
429412   m_p_chargen = memregion( "chargen" )->base();
430413
431414   memset( m_ram->pointer() + 0x10000, 0xFF, 0x1000 );
trunk/src/mame/machine/psxcd.c
r249889r249890
12321232   }
12331233   fatalerror("psxcd: out of timers\n");
12341234}
1235
1236/*
1237 * TODO:
1238 * Declare the MCU (Motorola 68HC05 [?] at 4MHz [?]) and hookup
1239 * these ROM images so that we actually emulate the PSX CDROM unit
1240 *
1241 * More technical info is available at these links:
1242 *  http://www.psxdev.net/forum/viewtopic.php?f=60&t=573
1243 *  http://www.psxdev.net/forum/viewtopic.php?f=70&t=557
1244 *
1245 */
1246ROM_START( psxcd )
1247    ROM_REGION( 0x10000, "cdrom_mcu", 0 )
1248
1249    /* Retail PlayStation CD-ROM Firmware:
1250     *
1251     * Still missing:
1252     * SCPH-1001, 3000, 3500, 5003, 5502, 5503, 7000W, 7001, 7002, 7003, 7503, 9003, 100, 101, 102 and 103.
1253     */
1254
1255    ROM_SYSTEM_BIOS( 0, "SCPH-1000-later", "SCPH-1000 NTSC:J (Later Ver.) [424660]" )
1256    ROMX_LOAD( "424660.bin", 0x0000, 0x4200, CRC(f82a2a46) SHA1(095434948d4c71cdfaa069e91053443887a6d139), ROM_BIOS(1) )
1257
1258    ROM_SYSTEM_BIOS( 1, "SCPH-1000-early", "SCPH-1000 NTSC:J (Early Ver.) [424666]" )
1259    ROMX_LOAD( "424666.bin", 0x0000, 0x4200, CRC(60bc954e) SHA1(80674353daf95ffb4bd15cc4bb8cfa713370dd45), ROM_BIOS(2) )
1260
1261    ROM_SYSTEM_BIOS( 2, "SCPH-1002-early", "SCPH-1002 PAL (Early PU-8) [424684]" )
1262    ROMX_LOAD( "424684.bin", 0x0000, 0x4200, CRC(84d46b2a) SHA1(9b06b1d407b784095ddbd45aeabafd689d2ee347), ROM_BIOS(3) )
1263
1264    /* Chip markings: C 1021 / SC430916PB / G63C 185 / JSAB9624F */
1265    ROM_SYSTEM_BIOS( 3, "SCPH-5000", "SCPH-5000 NTSC:J [SC430916]" )
1266    ROMX_LOAD( "sc430916.s19", 0x0000, 0xb195, CRC(487c8a40) SHA1(0ae8348fb43ab80845b0166494edc3e1565a3ef7), ROM_BIOS(4) )
1267
1268    /* Chip markings: C 1030 / SC430925PB / G63C 185 / JSBK9708C
1269       Board Type: PU-18 / 1-664-537-11 */
1270    ROM_SYSTEM_BIOS( 4, "SCPH-5500", "SCPH-5500 NTSC:J [SC430925]" )
1271    ROMX_LOAD( "sc430925.s19", 0x0000, 0xb195, CRC(c09aa0c2) SHA1(b9ad66cc8ea4d6e2eb2709ffb77c9647f679097a), ROM_BIOS(5) )
1272
1273    /* Chip markings: C 2030 / SC430930PB / G63C 185 / SSJZ9748A
1274       Board Type: PU-18 / 1-664-537-62 */
1275    ROM_SYSTEM_BIOS( 5, "SCPH-5501", "SCPH-5501 NTSC:U/C [SC430930]" )
1276    ROMX_LOAD( "sc430930.s19", 0x0000, 0xb195, CRC(587b84c2) SHA1(556c3adc37e4eb64fd463c54f7a310c483e0e835), ROM_BIOS(6) )
1277
1278    /* ROM dump is the same as SCPH-5552 */
1279    ROM_SYSTEM_BIOS( 6, "SCPH-5502", "SCPH-5502 PAL [SC430929]" )
1280    ROMX_LOAD( "sc430929.bin", 0x0000, 0x4200, CRC(ba87a3e0) SHA1(f23458d13a518616a8592b8ddd668c052bc9be5a), ROM_BIOS(7) )
1281
1282    ROM_SYSTEM_BIOS( 7, "SCPH-5903", "SCPH-5903 NTSC:J [SC430924PB]" )
1283    ROMX_LOAD( "sc430924.s19", 0x0000, 0xb195, CRC(dbe694b2) SHA1(ac72cb616b1449fe29e52faf6aad389118852d73), ROM_BIOS(8) )
1284
1285    /* Chip markings: C 1040 / SC430934PB / G63C 185 / SSDG9745D */
1286    ROM_SYSTEM_BIOS( 8, "SCPH-7000", "SCPH-7000 NTSC:J [SC430934]" )
1287    ROMX_LOAD( "sc430934.s19", 0x0000, 0xb195, CRC(6443740c) SHA1(d9734c7135c75dbe7733079a2d4244a28c9e966e), ROM_BIOS(9) )
1288
1289    /* Chip markings: C 1050 / SC430938PB / G63C 185 / SSAM9850C */
1290    ROM_SYSTEM_BIOS( 9, "SCPH-7500", "SCPH-7500 NTSC:J [SC430938]" )
1291    ROMX_LOAD( "sc430938.s19", 0x0000, 0xb195, CRC(9744977a) SHA1(f017d34a98a8a023f6752ba9ed749bb9e2b836d5), ROM_BIOS(10) )
1292
1293    /* Chip markings: C 2050 / SC430940PB / G63C 185 / SSDL9838A */
1294    ROM_SYSTEM_BIOS( 10, "SCPH-7501", "SCPH-7501 NTSC:U/C [SC430940]" )
1295    ROMX_LOAD( "sc430940.s19", 0x0000, 0xb195, CRC(fd1c6ee7) SHA1(e72b5093a3e25de1548be7668179ff3e001e3ec5), ROM_BIOS(11) )
1296
1297    ROM_SYSTEM_BIOS( 11, "SCPH-7502", "SCPH-7502 PAL [SC430939]" )
1298    ROMX_LOAD( "sc430939.bin", 0x0000, 0x4200, CRC(9eafb045) SHA1(25d98454e567e064c06f840d57f763fb7c8b7219), ROM_BIOS(12) )
1299
1300    ROM_SYSTEM_BIOS( 12, "SCPH-9000", "SCPH-9000 NTSC:J [SC430942]" )
1301    ROMX_LOAD( "sc430942.bin", 0x0000, 0x4200, NO_DUMP, ROM_BIOS(13) )
1302
1303    /* Chip markings: C 2060 / SC430944PB / G63C 185 / SSBR9924C */
1304    ROM_SYSTEM_BIOS( 13, "SCPH-9001", "SCPH-9001 NTSC:U/C [SC430944]" )
1305    ROMX_LOAD( "sc430944.s19", 0x0000, 0xb195, CRC(24011dfd) SHA1(db72ba02466942d1a1a07c4d855edd18f84de92e), ROM_BIOS(14) )
1306
1307    ROM_SYSTEM_BIOS( 14, "SCPH-9002", "SCPH-9002 PAL [SC430943]" )
1308    ROMX_LOAD( "sc430943.bin", 0x0000, 0x4200, CRC(2669a1a7) SHA1(62999e7f8429f381e19d44d2399b6017959f4f13), ROM_BIOS(15) )
1309
1310    /* Development PlayStation CD-ROM Firmware:
1311     *
1312     * Still missing:
1313     * DTL-H1000, 1000H, 1001, 1001H, 1002, 1100, 1101, 1102, 1200, 1201, 2000, 2500, 2700, 3000, 3001 and 3002.
1314     */
1315
1316    /* Chip markings: D 2021 / SC430920PB / G63C 185 / JSAA9810A
1317     * Note: Although this is a PAL unit, the ID string in the
1318     * code is "for US/AEP", so it may be the same for all the
1319     * debug consoles.
1320     */
1321    ROM_SYSTEM_BIOS( 15, "DTL-H1202", "DTL-H1202 PAL [SC430920]" )
1322    ROMX_LOAD( "sc430920.s19", 0x0000, 0xb195, CRC(8380a5a2) SHA1(6fe45fd6fb96b12a25a45f39b5efd0be5e3f3e86), ROM_BIOS(16) )
1323ROM_END
1324
1325const rom_entry *psxcd_device::device_rom_region() const
1326{
1327   return ROM_NAME( psxcd );
1328}
1329
trunk/src/mame/machine/psxcd.h
r249889r249890
3838   virtual void device_stop();
3939   virtual void device_reset();
4040   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
41   virtual const rom_entry *device_rom_region() const;
4241
4342private:
4443   void write_command(UINT8 byte);
trunk/src/mame/machine/xbox.c
r249889r249890
14121412}
14131413
14141414ADDRESS_MAP_START(xbox_base_map, AS_PROGRAM, 32, xbox_base_state)
1415   AM_RANGE(0x00000000, 0x07ffffff) AM_RAM AM_SHARE("nv2a_share") // 128 megabytes
1416   AM_RANGE(0xf0000000, 0xf7ffffff) AM_RAM AM_SHARE("nv2a_share") // 3d accelerator wants this
1415   AM_RANGE(0x00000000, 0x07ffffff) AM_RAM // 128 megabytes
1416   AM_RANGE(0xf0000000, 0xf0ffffff) AM_RAM
14171417   AM_RANGE(0xfd000000, 0xfdffffff) AM_RAM AM_READWRITE(geforce_r, geforce_w)
14181418   AM_RANGE(0xfed00000, 0xfed003ff) AM_READWRITE(usbctrl_r, usbctrl_w)
14191419   AM_RANGE(0xfe800000, 0xfe85ffff) AM_READWRITE(audio_apu_r, audio_apu_w)
trunk/src/mame/mess.lst
r249889r249890
10010032xe
10110132xj
10210232x_scd   // 1994 Sega Sega CD (USA w/32X addon)
10332x_mcd   // 1995 Sega Mega-CD (Europe w/32X addon)
10432x_mcdj   // 1994 Sega Mega-CD (Japan w/32X addon)
105103segapm    // 1996 Sega Picture Magic (32x type hardware)
106104
107105saturnjp  // 1994 Sega Saturn (Japan)
r249889r249890
346344//prophet2
347345bbca      // 1981 BBC Micro Model A
348346bbcb      // 1981 BBC Micro Model B w/8271 FDC
349bbcb_de   // 1982 BBC Micro Model B (German)
347bbcb_de   // 1981 BBC Micro Model B (German)
350348bbcb_us   // 1983 BBC Micro Model B (US)
351349electron  // 1983 Acorn Electron
352bbcb1770  // 1984 BBC Micro Model B w/1770 FDC
350bbcb1770  // 1985 BBC Micro Model B w/1770 FDC
353351bbcbp     // 1985 BBC Micro Model B+ 64K
354352bbcbp128  // 1985 BBC Micro Model B+ 128K
355353abc110    // 1985 ABC 110
356acw443    // 1985 ABC 210/Cambridge Workstation
354abc210    // 1985 ABC 210/Cambridge Workstation
357355abc310    // 1985 ABC 310
358356reutapm   // 1985 Reuters APM Board
359357bbcm      // 1986 BBC Master 128
r249889r249890
761759mbc16   // Sanyo MBC-16
762760ataripc3
763761ssam88s
764sicpc1605
765eagle1600
766762
767763// Non-PC msdos
768764pcd     // Siemens PC-D
r249889r249890
16631659
16641660// Exidy, Inc.
16651661sorcerer     // Sorcerer
1666sorcerer2   // monitor 1.1 1979
16671662sorcererd    // Sorcerer with floppies
16681663
16691664// Galaksija
r249889r249890
27642759micral
27652760rd100
27662761proteus3
2767unichamp
trunk/src/mame/video/apple2.c
r249889r249890
12361236   UINT32 w;
12371237   UINT16 *artifact_map_ptr;
12381238   int mon_type = m_sysconfig & 0x03;
1239   int begincol = 0, endcol = 40;
12401239
12411240   /* sanity checks */
12421241   if (beginrow < cliprect.min_y)
r249889r249890
12461245   if (endrow < beginrow)
12471246      return;
12481247
1249   // we generate 2 pixels per "column" so adjust
1250   if (begincol < (cliprect.min_x/14))
1251      begincol = (cliprect.min_x/14);
1252   if (endcol > (cliprect.max_x/14))
1253      endcol = (cliprect.max_x/14);
1254   if (cliprect.max_x > 39*14)
1255      endcol = 40;
1256   if (endcol < begincol)
1257      return;
1258
1259   //printf("HGR draw: page %c, rows %d-%d cols %d-%d\n", m_page2 ? '2' : '1', beginrow, endrow, begincol, endcol);
1260
12611248   vram = &m_ram_ptr[(m_page2 ? 0x4000 : 0x2000)];
12621249
12631250   vram_row[0] = 0;
r249889r249890
12651252
12661253   for (row = beginrow; row <= endrow; row++)
12671254   {
1268      for (col = begincol; col < endcol; col++)
1255      for (col = 0; col < 40; col++)
12691256      {
12701257         offset = ((((row/8) & 0x07) << 7) | (((row/8) & 0x18) * 5 + col)) | ((row & 7) << 10);
12711258         vram_row[1+col] = vram[offset];
r249889r249890
12791266            |   (((UINT32) vram_row[col+1] & 0x7f) <<  7)
12801267            |   (((UINT32) vram_row[col+2] & 0x7f) << 14);
12811268
1282
1283         // verified on h/w: setting dhires w/o 80col emulates a rev. 0 Apple ][ with no orange/blue
1284         if (m_dhires)
1285         {
1286            artifact_map_ptr = m_hires_artifact_map;
1287         }
1288         else
1289         {
1290            artifact_map_ptr = &m_hires_artifact_map[((vram_row[col + 1] & 0x80) >> 7) * 16];
1291         }
1292
12931269         switch (mon_type)
12941270         {
12951271            case 0:
1272               // verified on h/w: setting dhires w/o 80col emulates a rev. 0 Apple ][ with no orange/blue
1273               if (m_dhires)
1274               {
1275                  artifact_map_ptr = m_hires_artifact_map;
1276               }
1277               else
1278               {
1279                  artifact_map_ptr = &m_hires_artifact_map[((vram_row[col + 1] & 0x80) >> 7) * 16];
1280               }
12961281               for (b = 0; b < 7; b++)
12971282               {
12981283                  v = artifact_map_ptr[((w >> (b + 7-1)) & 0x07) | (((b ^ col) & 0x01) << 3)];
r249889r249890
13171302               for (b = 0; b < 7; b++)
13181303               {
13191304                  v = (w & 1);
1320                  w >>= 1;                           
1305                  w >>= 1;
13211306                  *(p++) = v ? GREEN : BLACK;
13221307                  *(p++) = v ? GREEN : BLACK;
13231308               }
trunk/src/mame/video/bbc.c
r249889r249890
4040{
4141   // ma = output from IC2 6845 MA address
4242
43   int c0 = m_b4_video0; // output from IC32 74LS259 bits 4 and 5
44   int c1 = m_b5_video1;
43   int c0=m_b4_video0; // output from IC32 74LS259 bits 4 and 5
44   int c1=m_b5_video1;
4545
4646   /* the 4 bit input port b on IC39 are produced by 4 NAND gates.
4747   these NAND gates take their
4848   inputs from c0 and c1 (from IC32) and ma12 (from the 6845) */
4949
5050   /* get bit m12 from the 6845 */
51   int ma12 = BIT(ma,12);
51   int ma12=(ma>>12)&1;
5252
5353   // 4 bit input B on IC39 74LS283 (4 bit adder)
5454   /* 3 input NAND part of IC 36 */
5555   int b1=(~(c1 & c0 & ma12)) & 1;
5656   /* 2 input NAND part of IC40 (b3 is calculated before b2 and b4 because b3 feed back into b2 and b4) */
57   int b3 = (~(c0 & ma12)) & 1;
57   int b3=(~(c0 & ma12)) & 1;
5858   /* 3 input NAND part of IC 36 */
59   int b2 = (~(c1 & b3 & ma12)) & 1;
59   int b2=(~(c1 & b3 & ma12)) & 1;
6060   /* 2 input NAND part of IC 27 */
61   int b4 = (~(b3 & ma12)) & 1;
61   int b4=(~(b3 & ma12)) & 1;
6262
6363   /* inputs port b to IC39 are taken from the NAND gates b1 to b4 */
64   int b = (b1<<0) | (b2<<1) | (b3<<2) | (b4<<3);
64   int b=(b1<<0)|(b2<<1)|(b3<<2)|(b4<<3);
6565
6666   /* inputs port a to IC39 are MA8 to MA11 from the 6845 */
67   int a = (ma>>8) & 0xf;
67   int a=(ma>>8)&0xf;
6868
6969   /* IC39 performs the 4 bit add with the carry input set high */
70   int s = (a+b+1) & 0xf;
70   int s=(a+b+1)&0xf;
7171
7272   /* if MA13 (TTXVDU) is low then IC8 and IC9 are used to calculate
7373      the memory location required for the hi res video.
74      if MA13 is high then IC10 and IC11 are used to calculate the memory location for the teletext chip */
74      if MA13 is hight then IC10 and IC11 are used to calculate the memory location for the teletext chip*/
7575   unsigned int m;
76   if (BIT(ma,13))
76   if ((ma>>13)&1)
7777   {
7878      // IC 10 and IC 11
79      m = ((ma&0x3ff) | 0x3c00) | ((s&0x8)<<11);
79      m=((ma&0x3ff)|0x3c00)|((s&0x8)<<11);
8080   } else {
8181      // IC 8 and IC 9
82      m = ((ma&0xff)<<3) | (s<<11) | (ra&0x7);
82      m=((ma&0xff)<<3)|(s<<11)|(ra&0x7);
8383   }
84   if (m_memorySize == 16)
84   if (m_memorySize==16)
8585      return  m & 0x3fff;
8686
8787   return m;
8888}
8989
90/***************************************************************************
91 * Palette
92 ***************************************************************************/
93
94static const rgb_t bbc_palette[8] =
95{
96   rgb_t(0x0ff, 0x0ff, 0x0ff),
97   rgb_t(0x000, 0x0ff, 0x0ff),
98   rgb_t(0x0ff, 0x000, 0x0ff),
99   rgb_t(0x000, 0x000, 0x0ff),
100   rgb_t(0x0ff, 0x0ff, 0x000),
101   rgb_t(0x000, 0x0ff, 0x000),
102   rgb_t(0x0ff, 0x000, 0x000),
103   rgb_t(0x000, 0x000, 0x000)
104};
105
106PALETTE_INIT_MEMBER(bbc_state, bbc)
107{
108   palette.set_pen_colors(0, bbc_palette, ARRAY_LENGTH(bbc_palette));
109}
110
11190/************************************************************************
11291 * VideoULA
11392 ************************************************************************/
r249889r249890
122101{
123102   for (int i=0; i<256; i++)
124103   {
125      m_pixel_bits[i] = (BIT(i,7)<<3) | (BIT(i,5)<<2) | (BIT(i,3)<<1) | (BIT(i,1)<<0);
104      m_pixel_bits[i] = (((i>>7)&1)<<3) | (((i>>5)&1)<<2) | (((i>>3)&1)<<1) | (((i>>1)&1)<<0);
126105   }
127106}
128107
r249889r249890
143122   {
144123   // Set the control register in the Video ULA
145124   case 0:
146      m_videoULA_Reg = data;
147      m_videoULA_master_cursor_size     = (m_videoULA_Reg>>7)&0x01;
148      m_videoULA_width_of_cursor        = (m_videoULA_Reg>>5)&0x03;
149      m_videoULA_6845_clock_rate        = (m_videoULA_Reg>>4)&0x01;
150      m_videoULA_characters_per_line    = (m_videoULA_Reg>>2)&0x03;
151      m_videoULA_teletext_normal_select = (m_videoULA_Reg>>1)&0x01;
152      m_videoULA_flash_colour_select    =  m_videoULA_Reg    &0x01;
125      {
126      m_videoULA_Reg=data;
127      m_videoULA_master_cursor_size=    (m_videoULA_Reg>>7)&0x01;
128      m_videoULA_width_of_cursor=       (m_videoULA_Reg>>5)&0x03;
129      m_videoULA_6845_clock_rate=       (m_videoULA_Reg>>4)&0x01;
130      m_videoULA_characters_per_line=   (m_videoULA_Reg>>2)&0x03;
131      m_videoULA_teletext_normal_select=(m_videoULA_Reg>>1)&0x01;
132      m_videoULA_flash_colour_select=    m_videoULA_Reg    &0x01;
153133
154      m_videoULA_palette_lookup = m_videoULA_flash_colour_select ? m_videoULA_palette0 : m_videoULA_palette1;
134      m_videoULA_pallet_lookup=m_videoULA_flash_colour_select?m_videoULA_pallet0:m_videoULA_pallet1;
155135
156      m_emulation_cursor_size = width_of_cursor_set[m_videoULA_width_of_cursor | (m_videoULA_master_cursor_size<<2)];
136      m_emulation_cursor_size=width_of_cursor_set[m_videoULA_width_of_cursor|(m_videoULA_master_cursor_size<<2)];
157137
158138      // this is the number of BBC pixels held in each byte
159139      if (m_videoULA_teletext_normal_select)
160         m_pixels_per_byte = 12;
161      else
162         m_pixels_per_byte = pixels_per_byte_set[m_videoULA_characters_per_line | (m_videoULA_6845_clock_rate<<2)];
163
140      {
141         m_pixels_per_byte=6;
142      } else {
143         m_pixels_per_byte=pixels_per_byte_set[m_videoULA_characters_per_line|(m_videoULA_6845_clock_rate<<2)];
144      }
164145      m_mc6845->set_hpixels_per_column(m_pixels_per_byte);
165146      if (m_videoULA_6845_clock_rate)
166         m_mc6845->set_clock(XTAL_16MHz/8);
147         m_mc6845->set_clock(2000000);
167148      else
168         m_mc6845->set_clock(XTAL_16MHz/16);
149         m_mc6845->set_clock(1000000);
150      }
169151      break;
170   // Set a palette register in the Video ULA
152   // Set a pallet register in the Video ULA
171153   case 1:
172      int tpal = (data >> 4)&0x0f;
173      int tcol = data&0x0f;
174      m_videoULA_palette0[tpal] = tcol;
175      m_videoULA_palette1[tpal] = tcol<8 ? tcol : tcol^7;
154      int tpal=(data>>4)&0x0f;
155      int tcol=data&0x0f;
156      m_videoULA_pallet0[tpal]=tcol;
157      m_videoULA_pallet1[tpal]=tcol<8?tcol:tcol^7;
176158      break;
177159   }
178160}
r249889r249890
196178         //Teletext Latch bit 6 is only passed onto bits 6 on the Teletext chip if DE is true
197179         //Teletext Latch bit 7 goes to LOSE on the Teletext chip
198180
199         if (BIT(ma,13) == 0)
181         if (((ma>>13)&1)==0)
200182         {
201            m_Teletext_Latch = 0;
183            m_Teletext_Latch=0;
202184         }
203185         else
204186         {
205            m_Teletext_Latch = m_BBC_Video_RAM[calculate_video_address(ma+x_pos,ra)];
187            m_Teletext_Latch=(m_BBC_Video_RAM[calculate_video_address(ma+x_pos,ra)]);
206188         }
207189
208         m_trom->write((m_Teletext_Latch&0x3f) | (m_Teletext_Latch&0x40));
190         m_trom->write((m_Teletext_Latch&0x3f)|(m_Teletext_Latch&0x40));
209191
210192         m_trom->f1_w(1);
211193         m_trom->f1_w(0);
212194
213         for(int pixelno=0; pixelno<12; pixelno++)
195         for(int pixelno=0;pixelno<6;pixelno++)
214196         {
215197            m_trom->tr6_w(1);
216198            m_trom->tr6_w(0);
r249889r249890
242224      {
243225         for(int x_pos=0; x_pos<x_count; x_pos++)
244226         {
245            int vmem = calculate_video_address(ma+x_pos,ra);
246            unsigned char i = m_BBC_Video_RAM[vmem];
227            int vmem=calculate_video_address(ma+x_pos,ra);
228            unsigned char i=m_BBC_Video_RAM[vmem];
247229
248            for(int pixelno=0; pixelno<m_pixels_per_byte; pixelno++)
230            for(int pixelno=0;pixelno<m_pixels_per_byte;pixelno++)
249231            {
250               int col = m_videoULA_palette_lookup[m_pixel_bits[i]] ^ ((x_pos==cursor_x) ? 7 : 0);
251               bitmap.pix32(y, (x_pos*m_pixels_per_byte)+pixelno) = palette[col];
252               i = (i<<1) | 1;
232               int col=m_videoULA_pallet_lookup[m_pixel_bits[i]] ^ ((x_pos==cursor_x) ? 7 : 0);
233               bitmap.pix32(y, (x_pos*m_pixels_per_byte)+pixelno)=palette[col];
234               i=(i<<1)|1;
253235            }
254236         }
255237      }
r249889r249890
257239      {
258240         for(int x_pos=0; x_pos<x_count; x_pos++)
259241         {
260            for(int pixelno=0; pixelno<m_pixels_per_byte; pixelno++)
242            for(int pixelno=0;pixelno<m_pixels_per_byte;pixelno++)
261243            {
262               bitmap.pix32(y, (x_pos*m_pixels_per_byte)+pixelno) = palette[7];
244               bitmap.pix32(y, (x_pos*m_pixels_per_byte)+pixelno)=palette[7];
263245            }
264246         }
265247      }
r249889r249890
272254}
273255
274256
275/**** BBC B+/Master Shadow Ram change ****/
257/**** BBC B+ Shadow Ram change ****/
276258
277void bbc_state::bbc_setvideoshadow(int vdusel)
259void bbc_state::bbcbp_setvideoshadow(int vdusel)
278260{
279   // LYNNE lives at 0xb000 in our map, but the offset we use here is 0x8000
280   // as the video circuitry will already be looking at 0x3000 or so above
281   // the offset.
282261   if (vdusel)
283      m_BBC_Video_RAM = m_region_maincpu->base()+0x8000;
284   else
285      m_BBC_Video_RAM = m_region_maincpu->base();
262   {
263      m_BBC_Video_RAM= m_region_maincpu->base()+0x8000;
264   } else {
265      m_BBC_Video_RAM= m_region_maincpu->base();
266   }
286267}
287268
288269/************************************************************************
r249889r249890
294275{
295276   m_emulation_cursor_size = 1;
296277
278   m_VideoULA_CR = 7;
279   m_VideoULA_CR_counter = 0;
280
297281   set_pixel_lookup();
298282
299283   m_BBC_Video_RAM = m_region_maincpu->base();
300   m_memorySize = memorySize;
284   m_memorySize=memorySize;
301285
302286}
303287
trunk/src/mame/video/champbas.c
r249889r249890
11// license:BSD-3-Clause
22// copyright-holders:Ernesto Corvi, Jarek Parchanski, Nicola Salmoria
3/*************************************************************************
4
5    Talbot - Champion Base Ball - Exciting Soccer
6
7*************************************************************************/
8
93#include "emu.h"
104#include "video/resnet.h"
115#include "includes/champbas.h"
r249889r249890
3428   static const int resistances_rg[3] = { 1000, 470, 220 };
3529   static const int resistances_b [2] = { 470, 220 };
3630   double rweights[3], gweights[3], bweights[2];
31   int i;
3732
3833   /* compute the color output resistor weights */
3934   compute_resistor_weights(0, 255, -1.0,
r249889r249890
4237         2, &resistances_b[0],  bweights, 0, 0);
4338
4439   /* create a lookup table for the palette */
45   for (int i = 0; i < 0x20; i++)
40   for (i = 0; i < 0x20; i++)
4641   {
4742      int bit0, bit1, bit2;
4843      int r, g, b;
r249889r249890
6964
7065   color_prom += 0x20;
7166
72   for (int i = 0; i < 0x200; i++)
67   for (i = 0; i < 0x200; i++)
7368   {
7469      UINT8 ctabentry = (color_prom[i & 0xff] & 0x0f) | ((i & 0x100) >> 4);
7570      palette.set_pen_indirect(i, ctabentry);
r249889r249890
8075PALETTE_INIT_MEMBER(champbas_state,exctsccr)
8176{
8277   const UINT8 *color_prom = memregion("proms")->base();
78   int i;
8379
8480   /* create a lookup table for the palette */
85   for (int i = 0; i < 0x20; i++)
81   for (i = 0; i < 0x20; i++)
8682   {
8783      int bit0, bit1, bit2;
8884      int r, g, b;
r249889r249890
112108   color_prom += 0x20;
113109
114110   /* characters / sprites (3bpp) */
115   for (int i = 0; i < 0x100; i++)
111   for (i = 0; i < 0x100; i++)
116112   {
117113      int swapped_i = BITSWAP8(i, 2, 7, 6, 5, 4, 3, 1, 0);
118114      UINT8 ctabentry = (color_prom[swapped_i] & 0x0f) | ((i & 0x80) >> 3);
r249889r249890
120116   }
121117
122118   /* sprites (4bpp) */
123   for (int i = 0; i < 0x100; i++)
119   for (i = 0; i < 0x100; i++)
124120   {
125121      UINT8 ctabentry = (color_prom[0x100 + i] & 0x0f) | 0x10;
126122      palette.set_pen_indirect(i + 0x100, ctabentry);
r249889r249890
190186
191187void champbas_state::champbas_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
192188{
189   int offs;
193190   gfx_element* const gfx = m_gfxdecode->gfx(1);
194191
195   for (int offs = m_spriteram.bytes() - 2; offs >= 0; offs -= 2)
192   for (offs = m_spriteram.bytes() - 2; offs >= 0; offs -= 2)
196193   {
197194      int code = (m_spriteram[offs] >> 2) | (m_gfx_bank << 6);
198195      int color = (m_spriteram[offs + 1] & 0x1f) | (m_palette_bank << 6);
r249889r249890
201198      int sx = m_spriteram_2[offs + 1] - 16;
202199      int sy = 255 - m_spriteram_2[offs];
203200
204      gfx->transmask(bitmap,cliprect,
205         code, color,
206         flipx, flipy,
207         sx, sy,
208         m_palette->transpen_mask(*gfx, color, 0));
209201
202            gfx->transmask(bitmap,cliprect,
203            code, color,
204            flipx, flipy,
205            sx, sy,
206            m_palette->transpen_mask(*gfx, color, 0));
207
210208      // wraparound
211      gfx->transmask(bitmap,cliprect,
212         code, color,
213         flipx, flipy,
214         sx + 256, sy,
215         m_palette->transpen_mask(*gfx, color, 0));
209
210            gfx->transmask(bitmap,cliprect,
211            code, color,
212            flipx, flipy,
213            sx + 256, sy,
214            m_palette->transpen_mask(*gfx, color, 0));
216215   }
217216}
218217
219218void champbas_state::exctsccr_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
220219{
220   int offs;
221221   UINT8 *obj1, *obj2;
222222
223223   obj1 = m_bg_videoram;
224224   obj2 = &(m_spriteram[0x20]);
225225
226   for (int offs = 0x0e; offs >= 0; offs -= 2)
226   for (offs = 0x0e; offs >= 0; offs -= 2)
227227   {
228228      int sx, sy, code, bank, flipx, flipy, color;
229229
r249889r249890
236236      color = (obj1[offs + 1]) & 0x0f;
237237      bank = ((obj1[offs + 1] >> 4) & 1);
238238
239      m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
240         code + (bank << 6),
241         color,
242         flipx, flipy,
243         sx,sy,0);
239
240            m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
241            code + (bank << 6),
242            color,
243            flipx, flipy,
244            sx,sy,0);
244245   }
245246
246247   obj1 = m_spriteram_2;
247248   obj2 = m_spriteram;
248249
249   for (int offs = 0x0e; offs >= 0; offs -= 2)
250   for (offs = 0x0e; offs >= 0; offs -= 2)
250251   {
251252      int sx, sy, code, flipx, flipy, color;
252253
r249889r249890
258259      flipy = (~obj1[offs]) & 0x02;
259260      color = (obj1[offs + 1]) & 0x0f;
260261
261      m_gfxdecode->gfx(2)->transmask(bitmap,cliprect,
262         code,
263         color,
264         flipx, flipy,
265         sx,sy,
266         m_palette->transpen_mask(*m_gfxdecode->gfx(2), color, 0x10));
262
263            m_gfxdecode->gfx(2)->transmask(bitmap,cliprect,
264            code,
265            color,
266            flipx, flipy,
267            sx,sy,
268            m_palette->transpen_mask(*m_gfxdecode->gfx(2), color, 0x10));
267269   }
268270}
269271
trunk/src/mame/video/chihiro.c
r249889r249890
66#include "machine/pic8259.h"
77#include "includes/chihiro.h"
88
9// #define LOG_NV2A
9//#define LOG_NV2A
1010
1111const char *vertex_program_disassembler::srctypes[] = { "??", "Rn", "Vn", "Cn" };
1212const char *vertex_program_disassembler::scaops[] = { "NOP", "IMV", "RCP", "RCC", "RSQ", "EXP", "LOG", "LIT", "???", "???", "???", "???", "???", "???", "???", "???", "???" };
r249889r249890
23352335{
23362336   int m;
23372337
2338   if (what == 0)
2339      return;
23402338   m = antialias_control;
23412339   if (antialiasing_rendertarget != 0)
23422340      m = 2;
r249889r249890
40274025   int countlen;
40284026   int ret;
40294027   address_space *space = puller_space;
4028#ifdef LOG_NV2A
40304029   UINT32 subch;
4030#endif
40314031
40324032   chanel = puller_channel;
40334033   subchannel = puller_subchannel;
40344034   dmaput = &channel[chanel][subchannel].regs[0x40 / 4];
40354035   dmaget = &channel[chanel][subchannel].regs[0x44 / 4];
4036   chanel = puller_channel;
4037   subchannel = puller_subchannel;
40364038   while (*dmaget != *dmaput) {
40374039      cmd = space->read_dword(*dmaget);
40384040      *dmaget += 4;
r249889r249890
40504052         break;
40514053      case 0: // increasing method
40524054         method = (cmd >> 2) & 2047; // method*4 is address // if method >= 0x40 send it to assigned object
4055#ifdef LOG_NV2A
40534056         subch = (cmd >> 13) & 7;
4057#endif
40544058         count = (cmd >> 18) & 2047;
40554059         if ((method == 0) && (count == 1)) {
40564060            handle = space->read_dword(*dmaget);
40574061            handle = geforce_object_offset(handle);
40584062#ifdef LOG_NV2A
4059            logerror("  assign to subchannel %d object at %d", subch, handle);
4063            logerror("  assign to subchannel %d object at %d\n", subch, handle);
40604064#endif
4061            channel[chanel][subch].object.objhandle = handle;
4065            channel[chanel][subchannel].object.objhandle = handle;
40624066            handle = ramin[handle / 4];
40634067            objclass = handle & 0xff;
4064#ifdef LOG_NV2A
4065            logerror(" class %03X\n", objclass);
4066#endif
4067            channel[chanel][subch].object.objclass = objclass;
4068            channel[chanel][subchannel].object.objclass = objclass;
40684069            *dmaget += 4;
40694070         }
40704071         else {
r249889r249890
40744075            ret = 0;
40754076            while (count > 0) {
40764077               countlen = 1;
4077               ret=geforce_exec_method(*space, chanel, subch, method, *dmaget, countlen);
4078               ret=geforce_exec_method(*space, chanel, subchannel, method, *dmaget, countlen);
40784079               count--;
40794080               method++;
40804081               *dmaget += 4;
r249889r249890
40904091         break;
40914092      case 5: // non-increasing method
40924093         method = (cmd >> 2) & 2047;
4094#ifdef LOG_NV2A
40934095         subch = (cmd >> 13) & 7;
4096#endif
40944097         count = (cmd >> 18) & 2047;
40954098         if ((method == 0) && (count == 1)) {
4099#ifdef LOG_NV2A
4100            logerror("  assign channel %d\n", subch);
4101#endif
40964102            handle = space->read_dword(*dmaget);
40974103            handle = geforce_object_offset(handle);
40984104#ifdef LOG_NV2A
4099            logerror("  assign to subchannel %d object at %d", subch, handle);
4105            logerror("  assign to subchannel %d object at %d\n", subch, handle);
41004106#endif
4101            channel[chanel][subch].object.objhandle = handle;
4107            channel[chanel][subchannel].object.objhandle = handle;
41024108            handle = ramin[handle / 4];
41034109            objclass = handle & 0xff;
4104#ifdef LOG_NV2A
4105            logerror(" class %03X\n", objclass);
4106#endif
4107            channel[chanel][subch].object.objclass = objclass;
4110            channel[chanel][subchannel].object.objclass = objclass;
41084111            *dmaget += 4;
41094112         }
41104113         else {
r249889r249890
41134116#endif
41144117            while (count > 0) {
41154118               countlen = count;
4116               ret=geforce_exec_method(*space, chanel, subch, method, *dmaget, countlen);
4119               ret=geforce_exec_method(*space, chanel, subchannel, method, *dmaget, countlen);
41174120               *dmaget += 4 * (count - countlen);
41184121               count = countlen;
41194122            }
r249889r249890
41214124         break;
41224125      case 3: // long non-increasing method
41234126         method = (cmd >> 2) & 2047;
4127#ifdef LOG_NV2A
41244128         subch = (cmd >> 13) & 7;
4129#endif
41254130         count = space->read_dword(*dmaget);
41264131         *dmaget += 4;
41274132         if ((method == 0) && (count == 1)) {
41284133            handle = space->read_dword(*dmaget);
41294134            handle = geforce_object_offset(handle);
41304135#ifdef LOG_NV2A
4131            logerror("  assign to subchannel %d object at %d", subch, handle);
4136            logerror("  assign to subchannel %d object at %d\n", subch, handle);
41324137#endif
4133            channel[chanel][subch].object.objhandle = handle;
4138            channel[chanel][subchannel].object.objhandle = handle;
41344139            handle = ramin[handle / 4];
41354140            objclass = handle & 0xff;
4136#ifdef LOG_NV2A
4137            logerror(" class %03X\n", objclass);
4138#endif
4139            channel[chanel][subch].object.objclass = objclass;
4141            channel[chanel][subchannel].object.objclass = objclass;
41404142            *dmaget += 4;
41414143         }
41424144         else {
r249889r249890
41454147#endif
41464148            while (count > 0) {
41474149               countlen = count;
4148               ret=geforce_exec_method(*space, chanel, subch, method, *dmaget, countlen);
4150               ret=geforce_exec_method(*space, chanel, subchannel, method, *dmaget, countlen);
41494151               *dmaget += 4 * (count - countlen);
41504152               count = countlen;
41514153            }
trunk/src/mame/video/decbac06.c
r249889r249890
7272      m_pf_data(NULL),
7373      m_pf_rowscroll(NULL),
7474      m_pf_colscroll(NULL),
75      m_tile_region_8(0),
76      m_tile_region_16(0),
77      m_supports_8x8(true),
78      m_supports_16x16(true),
79      m_supports_rc_scroll(true),
75      m_tile_region(0),
8076      m_gfxcolmask(0),
8177      m_rambank(0),
8278      m_gfxregion8x8(0),
r249889r249890
175171   if (m_rambank&1) tile_index+=0x1000;
176172   int tile=m_pf_data[tile_index];
177173   int colourpri=(tile>>12);
178   SET_TILE_INFO_MEMBER(m_tile_region_8,tile&0xfff,0,0);
174   SET_TILE_INFO_MEMBER(m_tile_region,tile&0xfff,0,0);
179175   tileinfo.category = colourpri;
180176}
181177
r249889r249890
184180   if (m_rambank&1) tile_index+=0x1000;
185181   int tile=m_pf_data[tile_index];
186182   int colourpri=(tile>>12);
187   SET_TILE_INFO_MEMBER(m_tile_region_16,tile&0xfff,0,0);
183   SET_TILE_INFO_MEMBER(m_tile_region,tile&0xfff,0,0);
188184   tileinfo.category = colourpri;
189185}
190186
191187void deco_bac06_device::create_tilemaps(int region8x8, int region16x16)
192188{
193   m_tile_region_8 = region8x8;
194   m_tile_region_16 = region16x16;
189   m_tile_region = region8x8;
195190
196191   m_pf8x8_tilemap[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf8x8_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape0_8x8_scan),this), 8, 8,128, 32);
197192   m_pf8x8_tilemap[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf8x8_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape1_8x8_scan),this), 8, 8, 64, 64);
198193   m_pf8x8_tilemap[2] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf8x8_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape2_8x8_scan),this), 8, 8, 32,128);
199194
195   m_tile_region = region16x16;
200196
201197   if (m_wide==2)
202198   {
r249889r249890
250246   int row_scroll_enabled = 0;
251247   int col_scroll_enabled = 0;
252248
253   if (m_supports_rc_scroll)
249   if (control0)
254250   {
255      if (control0)
256      {
257         row_scroll_enabled = (rowscroll_ptr && (control0[0] & 0x4));
258         col_scroll_enabled = (colscroll_ptr && (control0[0] & 0x8));
259      }
251      row_scroll_enabled = (rowscroll_ptr && (control0[0]&0x4));
252      col_scroll_enabled = (colscroll_ptr && (control0[0]&0x8));
260253   }
261254
262255   width_mask = src_bitmap.width() - 1;
r249889r249890
317310{
318311   tilemap_t* tm = 0;
319312
320   int tm_dimensions = m_pf_control_0[3] & 0x3;
321   if (tm_dimensions == 3) tm_dimensions = 1; // 3 is invalid / the same as 1?
313   switch (m_pf_control_0[3]&0x3) {
314      case 0: /* 4x1 */
315         if (m_pf_control_0[0]&0x1)
316            tm = m_pf8x8_tilemap[0];
317         else
318            tm = m_pf16x16_tilemap[0];
319         break;
322320
323   if (m_pf_control_0[0]&0x1) // is 8x8 tiles mode selected?
324   {
325      if (m_supports_8x8)
326      {
327         tm = m_pf8x8_tilemap[tm_dimensions];
328      }
329      else if (m_supports_16x16)
330      {
331         tm = m_pf16x16_tilemap[tm_dimensions];
332      }
333   }
334   else // 16x16 tiles mode is selected
335   {
336      if (m_supports_16x16)
337      {
338         tm = m_pf16x16_tilemap[tm_dimensions];
339      }
340      else if (m_supports_8x8)
341      {
342         tm = m_pf8x8_tilemap[tm_dimensions];
343      }
344   }
321      case 1: /* 2x2 */
322      default:
323         if (m_pf_control_0[0]&0x1)
324            tm = m_pf8x8_tilemap[1];
325         else
326            tm = m_pf16x16_tilemap[1];
327         break;
345328
329      case 2: /* 1x4 */
330         if (m_pf_control_0[0]&0x1)
331            tm = m_pf8x8_tilemap[2];
332         else
333            tm = m_pf16x16_tilemap[2];
334         break;
335   };
336
346337   if (tm)
347338      custom_tilemap_draw(bitmap,cliprect,tm,m_pf_rowscroll,m_pf_colscroll,m_pf_control_0,m_pf_control_1,flags, penmask, pencondition, colprimask, colpricondition);
348339
trunk/src/mame/video/decbac06.h
r249889r249890
22// copyright-holders:Bryan McPhail, David Haywood
33/* BAC06 */
44
5#define MCFG_BAC06_BOOTLEG_DISABLE_8x8 \
6   deco_bac06_device::disable_8x8(*device);
75
8#define MCFG_BAC06_BOOTLEG_DISABLE_16x16 \
9   deco_bac06_device::disable_16x16(*device);
10
11#define MCFG_BAC06_BOOTLEG_DISABLE_RC_SCROLL \
12   deco_bac06_device::disable_rc_scroll(*device);
13
14
156class deco_bac06_device : public device_t
167{
178public:
r249889r249890
2617
2718   tilemap_t* m_pf8x8_tilemap[3];
2819   tilemap_t* m_pf16x16_tilemap[3];
29   int    m_tile_region_8;
30   int    m_tile_region_16;
31
32   // some bootlegs (eg midresb / midresbj) don't appear to actually support the alt modes, they set them and end up with broken gfx on later levels.
33   bool   m_supports_8x8;
34   bool    m_supports_16x16;
35   bool    m_supports_rc_scroll;
36
37   static void disable_8x8(device_t &device)
38   {
39      deco_bac06_device &dev = downcast<deco_bac06_device &>(device);
40      dev.m_supports_8x8 = false;
41   }
42
43   static void disable_16x16(device_t &device)
44   {
45      deco_bac06_device &dev = downcast<deco_bac06_device &>(device);
46      dev.m_supports_16x16 = false;
47   }
48
49   static void disable_rc_scroll(device_t &device)
50   {
51      deco_bac06_device &dev = downcast<deco_bac06_device &>(device);
52      dev.m_supports_rc_scroll = false;
53   }
54
20   int    m_tile_region;
5521   void create_tilemaps(int region8x8,int region16x16);
5622   UINT16 m_pf_control_0[8];
5723   UINT16 m_pf_control_1[8];
trunk/src/mame/video/gic.c
r249889r249890
1// license:BSD-3-Clause
2// copyright-holders:David Viens
3/***************************************************************************
4
5   gic.c
6
7   GI AY-3-8800-1 (Datasheet exists as AY-3-8500-1 Graphics Interface Chip)
8   For the GIMINI "Challenger" programmable game system.
9   
10   Really only ever used in the Unisonic Champion 2711
11
12   More LA tests made by plgDavid on hardware pretty much confirmed what is found
13   in the AY-3-8950-1 datasheet, but with more fine grained detail.
14
15   the GIC does not have internal ram of any sort apart from shift registers,
16   instead it relies on the external shared ram, (see page 7-85) Appendix AY-3-8950-1
17   
18   Unverified on LA (since the video pins are all connected into a composite mix):
19   at line 46 it lowers GIC_BUSY, until line 240
20
21   Verified using LA:
22   It will read the external ram areas continuously while GIC_BUSY is low (for 12.36ms)
23
24   (NOTE: OCTAL)
25   
26   000,001,002,003,004,005,  110,111,112,113,114,115,116,117,120,121,122,123,124,125 (15 times - No first bg line?)
27   006,007,010,011,012,013,  110,111,112,113,114,115,116,117,120,121,122,123,124,125 (16 times)
28   
29   014,015,016,017,020,021,  125,126,127,130,131,132,133,134,135,136,137,140,141,142 (16 times)
30   022,023,024,025,026,027,  125,126,127,130,131,132,133,134,135,136,137,140,141,142 (16 times)
31
32   030,031,032,033,034,035,  142,143,144,145,146,147,150,151,152,153,154,155,156,157 (16 times)
33   036,037,040,041,042,043,  142,143,144,145,146,147,150,151,152,153,154,155,156,157 (16 times)
34
35   044,045,046,047,050,051,  157,160,161,162,163,164,165,166,167,170,171,172,173,174 (16 times)
36   052,053,054,055,056,057,  157,160,161,162,163,164,165,166,167,170,171,172,173,174 (16 times)
37
38   060,061,062,063,064,065,  174,175,176,177,200,201,202,203,204,205,206,207,210,211 (16 times)
39   066,067,070,071,072,073,  174,175,176,177,200,201,202,203,204,205,206,207,210,211 (16 times)
40
41   074,075,076,077,100,101,  211,212,213,214,215,216,217,220,221,222,223,224,225,226 (16 times)
42   102,103,104,105,106,107,  211,212,213,214,215,216,217,220,221,222,223,224,225,226 (16 times)
43
44   000,001,002,003,004,005,  000,001,002,003,004,005,006,007,010,011,012,013,014,015 (once! padding?)
45
46   for a total of (12*20*16) = 3840 RAM reads (3 clocks per read at 1.79MHz)
47
48   Then it relingishes control to the CPU by raising BUSREQ.
49   
50   Cloking in more detail: (in 1.79MHz clocks)
51   boot:
52   busy:1  5360 clocks
53   busy:0 22116 clocks
54   busy:1  7752 clocks
55   busy:0 22116 clocks
56   busy:1  7752 clocks   
57   (...)
58
59   There are NO IRQ handshakes, just BUSREQ sync shared RAM
60
61***************************************************************************/
62
63#include "emu.h"
64#include "gic.h"
65
66// device type definition
67const device_type GIC = &device_creator<gic_device>;
68
69
70//Font data taken from Paul Robson's simulator
71//http://worstconsole.blogspot.ca/2012/12/the-worstconsoleever.html
72//A real AY-3-8800-1 (dead) is going to decap for a good dump
73ROM_START( gic_font )
74   ROM_REGION( 0x200, "cgrom", 0 )
75   ROM_LOAD( "ay-3-8800-1.bin", 0x0000, 0x200,  BAD_DUMP CRC(d9f11d2b) SHA1(60ef45d51d102cd3af78787008d9aed848137bee))
76ROM_END
77
78
79//-------------------------------------------------
80//  gic_device - constructor
81//-------------------------------------------------
82
83gic_device::gic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
84   : device_t(mconfig, GIC, "GIC", tag, owner, clock, "gic", __FILE__)
85   , device_sound_interface(mconfig, *this)
86   , device_video_interface(mconfig, *this)
87   , m_cgrom(0)
88   , m_audiocnt(0)
89   , m_audioval(0)   
90    , m_audioreset(0)
91    , m_ram(0)   
92{
93}
94
95
96gic_device::gic_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, int lines, const char *shortname, const char *source)
97   : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
98   , device_sound_interface(mconfig, *this)
99   , device_video_interface(mconfig, *this)
100   , m_cgrom(0)   
101   , m_audiocnt(0)
102   , m_audioval(0)
103    , m_audioreset(0)
104    , m_ram(0)   
105{
106}
107
108const rom_entry *gic_device::device_rom_region() const
109{
110   //there is only one... how do I get rid of this?
111   return ROM_NAME( gic_font );
112}
113
114//-------------------------------------------------
115//  device_start - device-specific startup
116//-------------------------------------------------
117
118void gic_device::device_start()
119{
120   m_cgrom = memregion("cgrom")->base();
121
122   // Let the screen create our temporary bitmap with the screen's dimensions
123   m_screen->register_screen_bitmap(m_bitmap);
124
125   m_vblank_timer = timer_alloc(TIMER_VBLANK);
126   m_vblank_timer->adjust( m_screen->time_until_pos(1, END_ACTIVE_SCAN + 18 ), 0, m_screen->scan_period() );
127
128   // allocate the audio stream
129   m_stream = stream_alloc( 0, 1, clock()/(2*228) );
130}
131
132
133//-------------------------------------------------
134//  device_reset - device-specific reset
135//-------------------------------------------------
136
137void gic_device::device_reset()
138{
139   m_audiocnt=0;
140   m_audioval=0;   
141   m_audioreset=0;
142}
143
144#define GIC_CLUB    28
145#define GIC_SPACE    0
146   
147void gic_device::draw_char_left(int startx, int starty, UINT8 code, bitmap_ind16 &bitmap){
148   
149   UINT8*ptr = &m_cgrom[code*GIC_CHAR_H];
150     
151   for (size_t y=0;y<GIC_CHAR_H;y++){
152      UINT8 current = *ptr++;   
153      UINT8 nextx=0;
154      UINT8 curry= starty+y;     
155      for(UINT8 x=0x20;x!=0;x=x/2){   
156         if (current&x)
157            m_bitmap.pix16(curry,startx+nextx) = GIC_WHITE;
158         nextx++;
159      }
160   }
161}
162
163void gic_device::draw_char_right(int startx, int starty, UINT8 code, bitmap_ind16 &bitmap, int bg_col){
164   
165   UINT8*ptr = &m_cgrom[code*GIC_CHAR_H];
166   
167   for (size_t y=0;y<GIC_CHAR_H;y++){
168      UINT8 current = *ptr++;   
169      UINT8 nextx=0;
170      UINT8 curry= starty+y;
171
172      m_bitmap.pix16(curry,startx+nextx) = bg_col;
173      nextx++;   
174      for(UINT8 x=0x20;x!=0;x=x/2){         
175         m_bitmap.pix16(curry,startx+nextx) = (current&x)?GIC_WHITE:bg_col;   
176         nextx++;
177      }
178      m_bitmap.pix16(curry,startx+nextx) = bg_col;
179      nextx++;     
180      m_bitmap.pix16(curry,startx+nextx) = bg_col;     
181   }
182}
183
184UINT32 gic_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
185{
186   m_bitmap.fill(GIC_GREEN);
187
188   size_t XSTART = BORDER_SIZE;
189   size_t YSTART = START_ACTIVE_SCAN;
190   
191   //left hand side first
192   UINT8 current=0;
193   for(UINT8 cy=0;cy<GIC_LEFT_H;cy++){
194      for(UINT8 cx=0;cx<GIC_LEFT_W;cx++){
195         draw_char_left(XSTART+(cx*GIC_CHAR_W),
196                        YSTART+(cy*GIC_CHAR_H),
197                        m_ram[current],
198                       m_bitmap);
199         current++;
200      }
201   }
202
203   //right hand side is next
204   current=0x48;//110 octal
205   XSTART+=(GIC_LEFT_W*GIC_CHAR_W)+1;
206   
207   for(UINT8 cy=0;cy<GIC_RIGHT_H;cy++){
208      for(UINT8 cx=0;cx<GIC_RIGHT_W;cx++){
209         //complex case
210         UINT8 data = m_ram[current++];
211         
212         size_t currX   = (XSTART+           (cx*(3+GIC_CHAR_W)));
213         size_t currUP  = (YSTART+           (cy*(2*GIC_CHAR_H)));
214         size_t currLOW = (YSTART+GIC_CHAR_H+(cy*(2*GIC_CHAR_H)));
215         
216         switch(data&0xC0){
217            case 0x00:{
218               //lower rectangle only, normal char
219               draw_char_right(currX,currLOW,data,m_bitmap,GIC_GREEN);
220            }break;
221           
222            //White block
223            case 0xC0:{
224               //upper rectangle
225               draw_char_right(currX,currUP, GIC_SPACE,m_bitmap,GIC_WHITE);   
226               //lower rectangle                   
227               draw_char_right(currX,currLOW,GIC_SPACE,m_bitmap,GIC_WHITE);
228            }break;
229           
230            //Draw a card
231            case 0x40:{
232               int bgColor = (data&0x10)?GIC_RED:GIC_BLACK;   
233               //upper rectangle
234               draw_char_right(currX,currUP,           (data&0xF)+0x30,m_bitmap,bgColor);               
235               //lower rectangle     
236               draw_char_right(currX,currLOW,GIC_CLUB+((data&0x30)>>4),m_bitmap,bgColor);   
237            }break;
238           
239            default:printf("gic unknown char! %02X\n",data); break;
240         }
241      }
242   }
243
244   copybitmap( bitmap, m_bitmap, 0, 0, 0, 0, cliprect );
245   return 0;
246}
247
248/* AUDIO SECTION */
249
250void gic_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
251{
252   switch ( id )
253   {
254      case TIMER_VBLANK:
255         //flag the audio to reset
256         m_audioreset = 1;//phase need to reset! on next clock/228
257      break;   
258   }
259}
260
261#define GIC_AUDIO_BYTE 0x96
262
263void gic_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
264{
265   stream_sample_t *buffer = outputs[0];
266
267    //Audio is basic and badly implemented (doubt that was the intent)
268   //The datasheet list the 3 different frequencies the GIC can generate: 500,1000 and 2000Hz
269   //but it is clear (for an audio guy at least) that the resulting spectrum
270   //is not a pure square wav. In fact, the counter is reset on vertical sync!
271   //http://twitter.com/plgDavid/status/527269086016077825
272   //...thus creating a buzzing sound.
273
274   //Dumping the audio pin value each time
275   // either (PHI2 made a 0->1 transition (1.789MHz)
276   //     or (PHI1 made a 1->1 transition (1.789MHz)
277   //I found that the granularity of audio transitions
278   //(including phase resets and silences) was 228 clocks
279   //The audio subsystem thus runs at 1.789MHz/228 = 7849.88Hz
280   
281   //when 1
282   //normal period:912 clocks (228*4)
283   //hi for 456 clocks
284   //lo for 456 clocks
285   //reset period: (each frame)
286   //hi for 228 clocks
287   //lo for 456 clocks
288   //when 2
289   //normal period lasts 1824 clocks (228*8)
290   //hi for 912 clocks
291   //lo for 912 clocks
292   //reset period: (each frame)
293   //hi for 912   (228*4)
294   //lo for 1596  (228*7)
295   //hi for 912   (228*4)
296   //when 4
297   //normal period lasts 3648 clocks (228*16)
298   //hi for 1824(228*8)
299   //lo for 1824(228*8)   
300   //Reset period:
301   //lo for 1824(228*8)
302   //hi for 2508(228*11)
303   //lo for 1824(228*8)
304   //hi for 1824(228*8)
305   
306   if(!m_ram) return;
307
308   UINT8 audioByte = m_ram[GIC_AUDIO_BYTE]*2;
309   
310   if(!audioByte){
311      for(size_t i = 0; i < samples; i++)
312         *buffer++ = 0;   
313
314         m_audioval   = 0;
315      m_audiocnt   = 0;     
316        m_audioreset = 0;
317      return;//early   
318   }
319   
320    //forced resynch @ 59.95Hz
321    if(m_audioreset){
322         m_audioval   = 0;//forced low
323      m_audiocnt   = 0;     
324        m_audioreset = 0;
325    }
326
327   for(size_t i=0; i < samples; i++){
328        m_audiocnt++;
329      if(m_audiocnt >= audioByte){
330         m_audioval = !m_audioval;
331         m_audiocnt=0;
332      }
333      *buffer++ = m_audioval<<13;
334    }
335}
trunk/src/mame/video/gic.h
r249889r249890
1// license:BSD-3-Clause
2// copyright-holders:David Viens
3/***************************************************************************
4
5    gic.h
6
7   GI AY-3-8800-1 (Datasheet exists as AY-3-8500-1 Graphics Interface Chip)
8   For the GIMINI "Challenger" programmable game system.
9   
10   Really only ever used in the Unisonic Champion 2711
11
12***************************************************************************/
13
14#pragma once
15
16#ifndef __GIC_H__
17#define __GIC_H__
18
19#include "emu.h"
20
21
22/***************************************************************************
23    DEVICE CONFIGURATION MACROS
24***************************************************************************/
25
26#define MCFG_GIC_ADD(_tag, _clock, _screen_tag) \
27   MCFG_DEVICE_ADD(_tag, GIC, _clock) \
28   MCFG_VIDEO_SET_SCREEN(_screen_tag)
29
30/***************************************************************************
31    TYPE DEFINITIONS
32***************************************************************************/
33
34// ======================> gic_device
35
36//Palette entries
37#define GIC_BLACK 0
38#define GIC_RED   1
39#define GIC_GREEN 2
40#define GIC_WHITE 3
41
42#define GIC_CHAR_W 6
43#define GIC_CHAR_H 8
44
45#define GIC_LEFT_H 12
46#define GIC_LEFT_W 6
47
48#define GIC_RIGHT_H 6
49#define GIC_RIGHT_W 13
50
51class gic_device :  public device_t
52              , public device_sound_interface
53              , public device_video_interface
54{
55public:
56   // construction/destruction
57   gic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
58   gic_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, int lines, const char *shortname, const char *source);
59
60   // static configuration helpers
61   static void set_screen_tag(device_t &device, const char *screen_tag) { downcast<gic_device &>(device).m_screen_tag = screen_tag; }
62
63   DECLARE_PALETTE_INIT(gic);
64
65   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
66
67   inline bitmap_ind16 *get_bitmap() { return &m_bitmap; }
68
69   //plgDavid please change this to a MESS friendly handshake
70   void set_shared_memory(const UINT8*m){ m_ram = m;};
71   
72   // Global constants (non mesured figures)
73   static const int START_ACTIVE_SCAN = 10;
74   static const int BORDER_SIZE       = GIC_CHAR_W*3;
75   static const int END_ACTIVE_SCAN   = 10 + GIC_CHAR_W*2 + 150 + GIC_CHAR_W*2;
76   static const int START_Y           = 1;
77   static const int SCREEN_HEIGHT     = GIC_CHAR_H*(GIC_LEFT_H+2);
78   static const int LINE_CLOCKS       = 455;
79   static const int LINES             = 262;
80
81protected:
82   // device-level overrides
83   virtual void device_start();
84   virtual void device_reset();
85   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
86
87   // optional information overrides
88   virtual const rom_entry *device_rom_region() const;
89   
90   // device_sound_interface overrides
91   virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
92
93   /* timers */
94   static const device_timer_id TIMER_VBLANK = 0;
95
96   void draw_char_left (int x, int y, UINT8 code, bitmap_ind16 &bitmap);
97   void draw_char_right(int x, int y, UINT8 code, bitmap_ind16 &bitmap,int bg_col);
98   
99   bitmap_ind16 m_bitmap;
100   UINT8 *      m_cgrom;          // internal chargen ROM
101   
102   emu_timer    *m_vblank_timer;
103   sound_stream *m_stream;
104   
105   int m_audiocnt;
106   int m_audioval;   
107   int m_audioreset;   
108   const UINT8* m_ram;
109};
110
111// device type definition
112extern const device_type GIC;
113
114#endif  /* __GIC_H__ */
trunk/src/mame/video/timeplt.c
r249889r249890
125125void timeplt_state::video_start()
126126{
127127   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(timeplt_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
128   m_video_enable = 0;
129   
130   save_item(NAME(m_video_enable));
131128}
132129
133VIDEO_START_MEMBER(timeplt_state,psurge)
134{
135   video_start();
136   m_video_enable = 1; //psurge doesn't seem to have the video enable
137}
138
139130VIDEO_START_MEMBER(timeplt_state,chkun)
140131{
141132   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(timeplt_state::get_chkun_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
r249889r249890
149140 *
150141 *************************************/
151142
152WRITE8_MEMBER(timeplt_state::videoram_w)
143WRITE8_MEMBER(timeplt_state::timeplt_videoram_w)
153144{
154145   m_videoram[offset] = data;
155146   m_bg_tilemap->mark_tile_dirty(offset);
156147}
157148
158149
159WRITE8_MEMBER(timeplt_state::colorram_w)
150WRITE8_MEMBER(timeplt_state::timeplt_colorram_w)
160151{
161152   m_colorram[offset] = data;
162153   m_bg_tilemap->mark_tile_dirty(offset);
163154}
164155
165156
166WRITE8_MEMBER(timeplt_state::flipscreen_w)
157WRITE8_MEMBER(timeplt_state::timeplt_flipscreen_w)
167158{
168159   flip_screen_set(~data & 1);
169160}
170161
171WRITE8_MEMBER(timeplt_state::video_enable_w)
172{
173   m_video_enable = data & 1;
174}
175162
176READ8_MEMBER(timeplt_state::scanline_r)
163READ8_MEMBER(timeplt_state::timeplt_scanline_r)
177164{
178165   return m_screen->vpos();
179166}
r249889r249890
188175
189176void timeplt_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
190177{
191   for (int offs = 0x3e;offs >= 0x10;offs -= 2)
178   UINT8 *spriteram = m_spriteram;
179   UINT8 *spriteram_2 = m_spriteram2;
180   int offs;
181
182   for (offs = 0x3e;offs >= 0x10;offs -= 2)
192183   {
193      int sx = m_spriteram[offs];
194      int sy = 241 - m_spriteram2[offs + 1];
184      int sx = spriteram[offs];
185      int sy = 241 - spriteram_2[offs + 1];
195186
196      int code = m_spriteram[offs + 1];
197      int color = m_spriteram2[offs] & 0x3f;
198      int flipx = ~m_spriteram2[offs] & 0x40;
199      int flipy = m_spriteram2[offs] & 0x80;
187      int code = spriteram[offs + 1];
188      int color = spriteram_2[offs] & 0x3f;
189      int flipx = ~spriteram_2[offs] & 0x40;
190      int flipy = spriteram_2[offs] & 0x80;
200191
201192      m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
202193            code,
r249889r249890
214205 *
215206 *************************************/
216207
217UINT32 timeplt_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
208UINT32 timeplt_state::screen_update_timeplt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
218209{
219   if (m_video_enable)
220   {
221      m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
222      draw_sprites(bitmap, cliprect);
223      m_bg_tilemap->draw(screen, bitmap, cliprect, 1, 0);
224   }
210   m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
211   draw_sprites(bitmap, cliprect);
212   m_bg_tilemap->draw(screen, bitmap, cliprect, 1, 0);
225213   return 0;
226214}
trunk/src/osd/modules/debugger/osx/debugview.m
r249889r249890
404404   [text addAttribute:NSFontAttributeName value:font range:run];
405405   NSPasteboard *const board = [NSPasteboard generalPasteboard];
406406   [board declareTypes:[NSArray arrayWithObject:NSRTFPboardType] owner:nil];
407   [board setData:[text RTFFromRange:run documentAttributes:[NSDictionary dictionary]] forType:NSRTFPboardType];
407   [board setData:[text RTFFromRange:run documentAttributes:@{}] forType:NSRTFPboardType];
408408   [text deleteCharactersInRange:run];
409409}
410410
trunk/src/osd/osdnet.c
r249889r249890
4949osd_netdev::~osd_netdev()
5050{
5151   m_stop = true;
52// nasty hack to prevent Segmentation fault on emulation stop
53//   m_timer->reset();
52   m_timer->reset();
5453}
5554
5655int osd_netdev::send(UINT8 *buf, int len)
trunk/src/osd/windows/input.c
r249889r249890
18261826{
18271827   device_info *devinfo = NULL;
18281828   TCHAR *tname = NULL;
1829   INT name_length = 0;
1829   INT name_length;
18301830
1831   // determine the length of the device name, allocate it, and fetch it if not nameless
1831   // determine the length of the device name, allocate it, and fetch it
18321832   if ((*get_rawinput_device_info)(device->hDevice, RIDI_DEVICENAME, NULL, &name_length) != 0)
18331833      goto error;
1834   tname = global_alloc_array_clear(TCHAR, name_length+1);
1835   if (name_length > 1 && (*get_rawinput_device_info)(device->hDevice, RIDI_DEVICENAME, tname, &name_length) == -1)
1834   tname = global_alloc_array(TCHAR, name_length);
1835   if ((*get_rawinput_device_info)(device->hDevice, RIDI_DEVICENAME, tname, &name_length) == -1)
18361836      goto error;
18371837
18381838   // if this is an RDP name, skip it


Previous 199869 Revisions Next


© 1997-2024 The MAME Team