Previous 199869 Revisions Next

r33241 Thursday 6th November, 2014 at 14:15:05 UTC by Cowering
Merge branch 'master' of https://github.com/mamedev/mame
[/trunk].gitignore makefile
[hash]amiga_workbench.xml apfimag_cass.xml* dmv.xml ec1841.xml epson_cpm.xml* fmtowns_cd.xml g7400.xml galaxy.xml gamate.xml* gamegear.xml gameking.xml gbcolor.xml hx20_flop.xml ibm5150.xml ibm5170.xml intv.xml m5.xml m5_cart.xml* m5_cass.xml* megadriv.xml mikrosha.xml msx1_cart.xml nes.xml orao.xml pecom_cass.xml pegasus_cart.xml pet_cass.xml pokemini.xml psion.xml psion1.xml* psion2.xml* radio86_cass.xml snes.xml sol20_cass.xml* sorcerer_cart.xml sorcerer_cass.xml spc1000_cass.xml specpls3_flop.xml* spectrum.xml spectrum_cart.xml* spectrum_flop.xml ut88.xml vreader.xml vsmile_cd.xml x07_cass.xml*
[src/build]flags_clang.mak
[src/emu/bus]bus.mak
[src/emu/bus/a2bus]a2pic.c
[src/emu/bus/abckb]abc99.c
[src/emu/bus/adam]ide.c
[src/emu/bus/adamnet]spi.c
[src/emu/bus/astrocde]exp.c* exp.h* ram.c* ram.h*
[src/emu/bus/c64]geocable.c
[src/emu/bus/cbmiec]c1541.c
[src/emu/bus/centronics]ctronics.c ctronics.h
[src/emu/bus/comx35]printer.c
[src/emu/bus/cpc]cpcexp.h playcity.c* playcity.h*
[src/emu/bus/dmv]dmvbus.c dmvbus.h k803.c* k803.h* k806.c k806.h
[src/emu/bus/ecbbus]grip.c
[src/emu/bus/econet]e01.c
[src/emu/bus/isa]isa_cards.c isa_cards.h lpt.c num9rev.c* num9rev.h* s3virge.c trident.c
[src/emu/bus/lpci]cirrus.c* cirrus.h* i82371ab.c* i82371ab.h* i82371sb.c* i82371sb.h* i82439tx.c* i82439tx.h* mpc105.c* mpc105.h* northbridge.c* northbridge.h* pci.c* pci.h* southbridge.c* southbridge.h*
[src/emu/bus/nes]ave.c nes_ines.inc
[src/emu/bus/pci]cirrus.c cirrus.h i82371ab.c i82371ab.h i82371sb.c i82371sb.h i82439tx.c i82439tx.h mpc105.c mpc105.h northbridge.c northbridge.h pci.c pci.h southbridge.c southbridge.h
[src/emu/bus/ql]sandy_superdisk.c sandy_superqboard.c
[src/emu/bus/snes]sa1.c
[src/emu/bus/vtech/ioexp]printer.c
[src/emu/cpu]drcfe.c drcuml.c
[src/emu/cpu/i386]i386.c i386op16.inc i386op32.inc
[src/emu/cpu/mips]mips3drc.c mips3fe.c
[src/emu/cpu/rsp]rsp.h rspdrc.c rspfe.c
[src/emu/cpu/tms0980]tms0980.c
[src/emu/cpu/tms57002]tms57002.c
[src/emu/cpu/upd7810]upd7810.c upd7810.h
[src/emu/drivers]xtal.h
[src/emu/machine]ataflash.c ataflash.h i6300esb.c* i6300esb.h* i82541.c* i82541.h* i82875p.c* i82875p.h* idehd.h lpci.c* lpci.h* machine.mak pc_lpt.c pci-apic.c* pci-apic.h* pci-sata.c* pci-sata.h* pci-smbus.c* pci-smbus.h* pci-usb.c* pci-usb.h* pci.c pci.h pic8259.c z80ctc.h
[src/emu/sound]pci-ac97.c* pci-ac97.h* sb0400.c* sb0400.h* sound.mak
[src/emu/video]gf6800gt.c* gf6800gt.h* pc_vga.c pc_vga.h snes_ppu.c snes_ppu.h upd7220.c upd7220.h video.mak
[src/lib]lib.mak
[src/lib/formats]cbm_crt.c d88_dsk.c esq16_dsk.c esq8_dsk.c flopimg.c flopimg.h p6001_cas.c p6001_cas.h pc98fdi_dsk.c victor9k_dsk.c* victor9k_dsk.h*
[src/lib/sqlite3]sqlite3.c
[src/lib/web]mongoose.c
[src/mame]mame.lst mame.mak
[src/mame/audio]harddriv.c
[src/mame/drivers]8080bw.c adp.c atarig1.c atarisy1.c atarisy2.c atetris.c bagman.c beaminv.c calchase.c cclimber.c chihiro.c cobra.c coolridr.c cps1.c cv1k.c cyberbal.c fruitpc.c funkball.c funworld.c galaxian.c gamecstl.c gammagic.c gauntlet.c harddriv.c kyugo.c lindbergh.c magictg.c maygay1b.c maygay1bsw.c mediagx.c midqslvr.c mpu4.c naomi.c ninjakd2.c pcxt.c peplus.c pgm.c pgm2.c photoply.c pinball2k.c psychic5.c queen.c rampart.c rockrage.c savquest.c segacoin.c* segas18.c segaufo.c starwars.c stv.c taito_f3.c taitowlf.c tmnt.c toaplan2.c uapce.c vigilant.c vindictr.c viper.c voyager.c xtom3d.c xybots.c yunsun16.c
[src/mame/includes]atarigx2.h atarisy2.h atetris.h harddriv.h konamigx.h maygay1b.h pgm.h psychic5.h segas18.h slapstic.h starwars.h stv.h tx1.h
[src/mame/layout]newufo.lay* racedrivpan.lay* ufo21.lay* ufo800.lay* ufomini.lay*
[src/mame/machine]315-5881_crypt.c* 315-5881_crypt.h* 315_5296.h asic65.c atarigen.c atarigen.h harddriv.c n64.c naomim2.c naomim2.h pgmprot_igs025_igs012.c segabb.c* segabb.h* slapstic.c stvprot.c zndip.h
[src/mame/video]atarisy2.c harddriv.c k007121.c konamigx.c konamiic.txt psychic5.c rdpspn16.c rdptpipe.c rockrage.c tia.c twin16.c tx1.c
[src/mess]mess.lst mess.mak
[src/mess/drivers]ace.c amiga.c amstrad.c apf.c applix.c apricot.c apricotf.c apricotp.c astrocde.c atarist.c atom.c bbc.c bebox.c bullet.c bw12.c bw2.c cat.c clcd.c compis.c crvision.c dmv.c dvk_ksm.c* einstein.c elwro800.c ep64.c fc100.c fm7.c fp1100.c gamate.c* gimix.c gmaster.c hx20.c isbc.c jtc.c kaypro.c kyocera.c lviv.c m5.c mbee.c mc1000.c mc1502.c merlin.c msx.c mtx.c mz700.c nc.c oric.c pasogo.c pc1512.c pc8001.c pc8801.c pc9801.c pencil2.c phc25.c portfoli.c prof180x.c psion.c ptcsol.c px4.c px8.c rmnimbus.c sage2.c samcoupe.c sg1000.c sh4robot.c simon.c* sorcerer.c spc1000.c specpls3.c spectrum.c super80.c svi318.c tandy2k.c thomson.c tiki100.c tmc600.c trs80.c trs80m2.c tutor.c tvc.c v1050.c victor9k.c wangpc.c wswan.c x07.c xerox820.c xor100.c
[src/mess/includes]amstrad.h at.h mc1502.h sorcerer.h ti85.h victor9k.h wswan.h xerox820.h
[src/mess/layout]merlin.lay simon.lay*
[src/mess/machine]at.c bebox.c coco.c genpc.c ms7004.c* ms7004.h* thomson.c ti85.c victor9k_fdc.c* victor9k_fdc.h* victor9kb.c victor9kb.h wswan.c x820kb.c* x820kb.h*
[src/mess/tools/castool]main.c
[src/mess/video]wswan.c wswan_video.c* wswan_video.h*
[src/osd/sdl]sdl.mak
[src/osd/sdl/man]castool.1 chdman.1 floptool.1* imgtool.1 jedutil.1 ldresample.1 ldverify.1 mame.6 mess.6 romcmp.1 testkeys.1

trunk/.gitignore
r241752r241753
88/cfg
99/diff
1010/ini
11/inp
1112/nvram
1213/obj
1314/snap
trunk/hash/amiga_workbench.xml
r241752r241753
212212      </part>
213213   </software>
214214
215   <software name="wb133r3434" cloneof="wbenc133">
216      <description>Workbench 1.3.3 (Rev. 34.34)</description>
215   <!-- 317746-01 Workbench 1.3 (US) -->
216   <!-- 317746-03 Workbench 1.3.2 (US) -->
217
218   <software name="wbenc133_us" cloneof="wbenc133">
219      <description>Workbench 1.3.3 (US)</description>
217220      <year>1990</year>
218221      <publisher>Commodore</publisher>
219
220222      <part name="flop1" interface="floppy_3_5">
221         <feature name="part_id" value="Amiga Workbench Version 1.3.3 (Rev. 34.34)" />
223         <feature name="part_id" value="Workbench 1.3.3 (US)" />
222224         <dataarea name="flop" size="901120">
223            <rom name="317746-04_workbench.adf" size="901120" crc="bf299bca" sha1="8bac53a89cd1fe5a7762de9bd61a1592f10af2df" offset="0"/>
225            <rom name="317746-04_workbench.adf" size="901120" crc="bf299bca" sha1="8bac53a89cd1fe5a7762de9bd61a1592f10af2df" status="baddump" offset="0"/>
224226         </dataarea>
225227      </part>
226
227228      <part name="flop2" interface="floppy_3_5">
228         <feature name="part_id" value="Amiga Extras Amiga Basic Printer Drivers Version 1.3" />
229         <feature name="part_id" value="Extras 1.3 (US)" />
229230         <dataarea name="flop" size="901120">
230231            <rom name="317748-02_extras.adf" size="901120" crc="256a4b82" sha1="465a65aa89fe4b016fee968ef75ab08de9bdfbc6" offset="0"/>
231232         </dataarea>
r241752r241753
496497      </part>
497498   </software>
498499
500   <!-- Version 3.5 -->
501
502   <software name="amigos35">
503      <description>AmigaOS 3.5</description>
504      <year>1999</year>
505      <publisher>Haage &amp; Partner</publisher>
506      <part name="disc" interface="cdrom">
507         <diskarea name="disc">
508            <disk name="amigaos35" sha1="6dcf1e5821717128ac2e763064f1ef31dee3ce8c"/>
509         </diskarea>
510      </part>
511   </software>
512
499513</softwarelist>
trunk/hash/apfimag_cass.xml
r0r241753
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<softwarelist name="apfimag_cass" description="APF Imagination cassettes">
5
6<!-- To load a tape, just start APF Imagination with the BASIC cart inserted, and type CLOAD followed by <Return>
7(by default mapped to your ']' key). Then start the tape from the Internal UI and press <Return>.
8
9If you don't press <Return>, the system won't read the tape (this is fairly unusual but it's the way the system works)
10
11Once the tape has finished loading, just type RUN to start the loaded program -->
12
13
14<!-- Games & Programs -->
15
16   <software name="16letter">
17      <description>16K Letter Writter</description>
18      <year>1982</year>
19      <publisher>Milt Perry</publisher>
20      <feature name="usage" value="Requires 16K RAM" />
21      <part name="cass" interface="apf_cass">
22         <dataarea name="cass" size="1743020">
23            <rom name="m_perry_16k_letter_writter(16k).wav" size="1743020" crc="d1ca5e2d" sha1="4c844e54836d4f1de0bf4d653860c5c20444d304" offset="0" />
24         </dataarea>
25      </part>
26   </software>
27
28   <software name="advmurdr">
29      <description>An Adventure in Murder</description>
30      <year>198?</year>
31      <publisher>R. Eisman</publisher>
32      <feature name="usage" value="Requires 16K RAM" />
33      <part name="cass" interface="apf_cass">
34         <dataarea name="cass" size="2030598">
35            <rom name="r_eisman_adventure_in_murder(16k).wav" size="2030598" crc="5fbd2aed" sha1="aca54da042c60b96fd7288f6a5df54d7239757c8" offset="0" />
36         </dataarea>
37      </part>
38   </software>
39
40   <software name="alphabit">
41      <description>ALPHAbit</description>
42      <year>19??</year>
43      <publisher>MR R's</publisher>
44      <feature name="usage" value="Requires 16K RAM" />
45      <part name="cass" interface="apf_cass">
46         <dataarea name="cass" size="1750444">
47            <rom name="mr_rs_alphabit(16k).wav" size="1750444" crc="f7eb904d" sha1="19dfca668cc5c54af0278553f5600ba3e8bdd9ee" offset="0" />
48         </dataarea>
49      </part>
50   </software>
51
52<!-- glitched gfx -->
53   <software name="alphacnt" supported="partial">
54      <description>Alpha Centurion</description>
55      <year>1983</year>
56      <publisher>G. Karabin</publisher>
57      <part name="cass" interface="apf_cass">
58         <dataarea name="cass" size="1735100">
59            <rom name="g_karabin_alpha_centurion.wav" size="1735100" crc="1ac5af69" sha1="d174a8bb9c739210e294fed005feabeb95b8c50d" offset="0" />
60         </dataarea>
61      </part>
62   </software>
63
64<!-- glitched gfx -->
65   <software name="alpinski" supported="partial">
66      <description>Alpine Skiing</description>
67      <year>19??</year>
68      <publisher>York 10 Computerware</publisher>
69      <part name="cass" interface="apf_cass">
70         <dataarea name="cass" size="1004972">
71            <rom name="york_10_computerware_alpine_skiing.wav" size="1004972" crc="1980dd7a" sha1="d919ae9c2cc90867321086fb7163353e5010a431" offset="0" />
72         </dataarea>
73      </part>
74   </software>
75
76   <software name="apfman">
77      <description>APF-MAN</description>
78      <year>1982</year>
79      <publisher>Carl A. Echols</publisher>
80      <part name="cass" interface="apf_cass">
81         <dataarea name="cass" size="1075884">
82            <rom name="carl_echols_apf-man.wav" size="1075884" crc="748df00d" sha1="01c70f9090f1d32a5b2493cfb70ba58574b92896" offset="0" />
83         </dataarea>
84      </part>
85   </software>
86
87<!-- it keeps telling "START ME WITH: GOTO100", but it does not recognize the command -->
88   <software name="artist" supported="no">
89      <description>Artist and Easel</description>
90      <year>1979</year>
91      <publisher>APF Electronics</publisher>
92      <part name="cass" interface="apf_cass">
93         <dataarea name="cass" size="3580144">
94            <rom name="apf_artistandeasel.wav" size="3580144" crc="268b1b70" sha1="587050373ea8582ffcd25214a734f47d89e35ce2" offset="0" />
95         </dataarea>
96      </part>
97   </software>
98
99<!-- glitched gfx -->
100   <software name="asteroid" supported="partial">
101      <description>Asteroids</description>
102      <year>19??</year>
103      <publisher>York 10 Computerware</publisher>
104      <part name="cass" interface="apf_cass">
105         <dataarea name="cass" size="1039532">
106            <rom name="york_10_computerware_asteroids.wav" size="1039532" crc="89564571" sha1="f71d83afce14586ac507f74f2e2b82338ac02b4c" offset="0" />
107         </dataarea>
108      </part>
109   </software>
110
111   <software name="astpatrl">
112      <description>Astroid Patrol</description>
113      <year>198?</year>
114      <publisher>Rief Games</publisher>
115      <part name="cass" interface="apf_cass">
116         <dataarea name="cass" size="906668">
117            <rom name="rief_games_astroid_patrol.wav" size="906668" crc="426ee685" sha1="5d6ee999b1868bb23686fb4a5fb6503e107a3bd1" offset="0" />
118         </dataarea>
119      </part>
120   </software>
121
122<!-- glitched gfx -->
123   <software name="baja" supported="partial">
124      <description>Baja</description>
125      <year>19??</year>
126      <publisher>York 10 Computerware</publisher>
127      <part name="cass" interface="apf_cass">
128         <dataarea name="cass" size="1009324">
129            <rom name="york_10_computerware_baja.wav" size="1009324" crc="45d6e690" sha1="090462adcb96c2525e7f3ecd981902b815eab5e7" offset="0" />
130         </dataarea>
131      </part>
132   </software>
133
134<!-- This requires the BASIC Tutor manual to be used in a profitable way. The program
135checks whether the user is typing the program printed in the manual, for each lesson -->
136   <software name="bastutor">
137      <description>Basic Tutor</description>
138      <year>1980</year>
139      <publisher>APF Electronics</publisher>
140      <part name="cass1" interface="apf_cass">
141         <feature name="part_id" value="Lessons 1-12"/>
142         <dataarea name="cass" size="41412556">
143            <rom name="apf_basictutor_tape1_lessons1-12.wav" size="41412556" crc="c712ccae" sha1="8aec7bc57edd9eac64c5b866d61c3522507ebcf2" offset="0" />
144         </dataarea>
145      </part>
146      <part name="cass2" interface="apf_cass">
147         <feature name="part_id" value="Lessons 13-22"/>
148         <dataarea name="cass" size="29458552">
149            <rom name="apf_basictutor_tape2_lessons13-22.wav" size="29458552" crc="969a7c6d" sha1="95aae528297016c8a01af537b4747cac838b110b" offset="0" />
150         </dataarea>
151      </part>
152   </software>
153
154   <software name="bzone">
155      <description>Battle Zone</description>
156      <year>19??</year>
157      <publisher>IM-1 Games</publisher>
158      <part name="cass" interface="apf_cass">
159         <dataarea name="cass" size="961708">
160            <rom name="im-1_games_battle_zone.wav" size="961708" crc="83f8b84d" sha1="d22e8ea1326fd12448d4ddc547e6496459789c36" offset="0" />
161         </dataarea>
162      </part>
163   </software>
164
165   <software name="biplane">
166      <description>Bi-Plane Rescue</description>
167      <year>19??</year>
168      <publisher>York 10 Computerware</publisher>
169      <part name="cass" interface="apf_cass">
170         <dataarea name="cass" size="1007788">
171            <rom name="york_10_computerware_bi-plane_rescue.wav" size="1007788" crc="f1dbccb6" sha1="b73651da4b73b170cc7e68e8076f9977febf0854" offset="0" />
172         </dataarea>
173      </part>
174   </software>
175
176<!-- how to trigger the actual program instead of the demo? -->
177   <software name="billbord">
178      <description>Electronic Billboard</description>
179      <year>1979</year>
180      <publisher>APF Electronics</publisher>
181      <part name="cass" interface="apf_cass">
182         <dataarea name="cass" size="1323044">
183            <rom name="apf_billboard.wav" size="1323044" crc="79d80e2d" sha1="08bc1e907ce7082041c475ed7bf91d792282d9ab" offset="0" />
184         </dataarea>
185      </part>
186   </software>
187
188   <software name="boxing">
189      <description>Boxing</description>
190      <year>198?</year>
191      <publisher>Millivision</publisher>
192      <part name="cass" interface="apf_cass">
193         <dataarea name="cass" size="1288876">
194            <rom name="millivision_boxing.wav" size="1288876" crc="881ab481" sha1="c9e1b34dab520c763c14af7e7203761c6ba9a567" offset="0" />
195         </dataarea>
196      </part>
197   </software>
198
199<!-- LINE XXX NO LINE REFERENCED error -->
200   <software name="bugger">
201      <description>Bugger (Bad?)</description>
202      <year>19??</year>
203      <publisher>MR R's</publisher>
204      <part name="cass" interface="apf_cass">
205         <dataarea name="cass" size="1089196">
206            <rom name="mr_rs_bugger.wav" size="1089196" crc="39bf5e65" sha1="29cb8ee3fc263126db659fffd34271015e6efc38" offset="0" />
207         </dataarea>
208      </part>
209   </software>
210
211   <software name="burgman">
212      <description>Burger Man</description>
213      <year>198?</year>
214      <publisher>Rief Games</publisher>
215      <part name="cass" interface="apf_cass">
216         <dataarea name="cass" size="1181612">
217            <rom name="rief_games_of_course_burgerman.wav" size="1181612" crc="a263bd55" sha1="212a77dac4a0533bf7f9bf67eae51a313dbdbdfe" offset="0" />
218         </dataarea>
219      </part>
220   </software>
221
222   <software name="centiped">
223      <description>Centipeed</description>
224      <year>198?</year>
225      <publisher>John Mechalas</publisher>
226      <part name="cass" interface="apf_cass">
227         <dataarea name="cass" size="1089452">
228            <rom name="john_machalas_centipeed.wav" size="1089452" crc="0cc4b9ae" sha1="b02402b99cefa0692cc4d37d7a3e5a62f6a85e82" offset="0" />
229         </dataarea>
230      </part>
231   </software>
232
233<!-- glitched gfx -->
234   <software name="choplift" supported="partial">
235      <description>Choplifter</description>
236      <year>19??</year>
237      <publisher>York 10 Computerware</publisher>
238      <part name="cass" interface="apf_cass">
239         <dataarea name="cass" size="1050796">
240            <rom name="york_10_computerware_choplifter.wav" size="1050796" crc="d42f556c" sha1="4c67a68ba328709bca14a9df724f57c2916e1468" offset="0" />
241         </dataarea>
242      </part>
243   </software>
244
245   <software name="choppint">
246      <description>Chopper Interceptor</description>
247      <year>19??</year>
248      <publisher>York 10 Computerware</publisher>
249      <part name="cass" interface="apf_cass">
250         <dataarea name="cass" size="1069484">
251            <rom name="york_10_computerware_chopper_interceptor.wav" size="1069484" crc="be8d0f60" sha1="8012bd1a1454526951f26ad3339044ebc932467b" offset="0" />
252         </dataarea>
253      </part>
254   </software>
255
256<!-- glitched gfx -->
257   <software name="concentr" supported="partial">
258      <description>Concentration</description>
259      <year>198?</year>
260      <publisher>G. R. Jones</publisher>
261      <part name="cass" interface="apf_cass">
262         <dataarea name="cass" size="1073188">
263            <rom name="g_r_jones_concentration.wav" size="1073188" crc="eafe98f5" sha1="c065c228d361e25b3074d94d9977acddf09c4249" offset="0" />
264         </dataarea>
265      </part>
266   </software>
267
268   <software name="copycat">
269      <description>Copy Cat</description>
270      <year>198?</year>
271      <publisher>R. Eisman</publisher>
272      <part name="cass" interface="apf_cass">
273         <dataarea name="cass" size="961964">
274            <rom name="r_eisman_copy_cat.wav" size="961964" crc="f4854e40" sha1="ef78ccb2dc2552be3026a5b309afe8877b718e96" offset="0" />
275         </dataarea>
276      </part>
277   </software>
278
279<!-- glitched gfx -->
280   <software name="deathtnk">
281      <description>Death Tank</description>
282      <year>19??</year>
283      <publisher>York 10 Computerware</publisher>
284      <part name="cass" interface="apf_cass">
285         <dataarea name="cass" size="1038252">
286            <rom name="york_10_computerware_death_tank.wav" size="1038252" crc="e9ed81f0" sha1="a357ec0e0acc06008570428f28a68cdb01cd4acb" offset="0" />
287         </dataarea>
288      </part>
289   </software>
290
291   <software name="defender">
292      <description>Defender (MR R)</description>
293      <year>19??</year>
294      <publisher>MR R's</publisher>
295      <part name="cass" interface="apf_cass">
296         <dataarea name="cass" size="1013676">
297            <rom name="mr_rs_defender.wav" size="1013676" crc="ac655b82" sha1="cfba2b58c3d2090467218505293c2b753b4ae377" offset="0" />
298         </dataarea>
299      </part>
300   </software>
301
302<!-- glitched gfx -->
303   <software name="defendyc" supported="partial">
304      <description>Defender (York 10 Computerware)</description>
305      <year>19??</year>
306      <publisher>York 10 Computerware</publisher>
307      <feature name="alt_title" value="Allien Defender II?" />
308      <part name="cass" interface="apf_cass">
309         <dataarea name="cass" size="1158572">
310            <rom name="york_10_computerware_allien_defender_ii.wav" size="1158572" crc="9a614370" sha1="9e626a3e32da1a5d2149c7c07b9554532857550f" offset="0" />
311         </dataarea>
312      </part>
313   </software>
314
315<!-- glitched gfx -->
316   <software name="defendyca" cloneof="defendyc" supported="partial">
317      <description>Defender (York 10 Computerware, Alt)</description>
318      <year>19??</year>
319      <publisher>York 10 Computerware</publisher>
320      <part name="cass" interface="apf_cass">
321         <dataarea name="cass" size="1150636">
322            <rom name="york_10_computerware_defender.wav" size="1150636" crc="1364f5e7" sha1="0ababf7ae66bc0c0f78be42de26a0132712f6d2a" offset="0" />
323         </dataarea>
324      </part>
325   </software>
326
327   <software name="demo">
328      <description>Demo</description>
329      <year>197?</year>
330      <publisher>APF Electronics</publisher>
331      <part name="cass" interface="apf_cass">
332         <dataarea name="cass" size="1202476">
333            <rom name="apf_demo.wav" size="1202476" crc="9dc09935" sha1="6ae8511a79cb62c1a8c61243b3b830fca8e47255" offset="0" />
334         </dataarea>
335      </part>
336   </software>
337
338   <software name="depthchg">
339      <description>Depth Charge!!</description>
340      <year>19??</year>
341      <publisher>MR R's</publisher>
342      <part name="cass" interface="apf_cass">
343         <dataarea name="cass" size="1067180">
344            <rom name="mr_rs_depth_charge.wav" size="1067180" crc="aecaabf0" sha1="095bab2792175e17c1fe0bd0f2bd23b82fcdd676" offset="0" />
345         </dataarea>
346      </part>
347   </software>
348
349   <software name="dkong2">
350      <description>Donkey Kong II</description>
351      <year>198?</year>
352      <publisher>Rief Games</publisher>
353      <part name="cass" interface="apf_cass">
354         <dataarea name="cass" size="1993004">
355            <rom name="rief_games_of_course_donkey_kong_ii.wav" size="1993004" crc="2428fdf1" sha1="393bb1a136ffa6afcd846b9ca588f2cc6950e0c9" offset="0" />
356         </dataarea>
357      </part>
358   </software>
359
360   <software name="dkong">
361      <description>Donki-Kong</description>
362      <year>198?</year>
363      <publisher>Millivision</publisher>
364      <part name="cass" interface="apf_cass">
365         <dataarea name="cass" size="1214636">
366            <rom name="millivision_donki-kong.wav" size="1214636" crc="941cb740" sha1="53cd0e2e0655c0a02654581a5d101952694dc3f3" offset="0" />
367         </dataarea>
368      </part>
369   </software>
370
371   <software name="dkongjr">
372      <description>Donki-Kong Jr</description>
373      <year>198?</year>
374      <publisher>Millivision</publisher>
375      <part name="cass" interface="apf_cass">
376         <dataarea name="cass" size="972972">
377            <rom name="millivision_donki-kong_jr.wav" size="972972" crc="ba1c0f50" sha1="afbeeec2ee6da4b6fe1fe70c6689b3937ca2001a" offset="0" />
378         </dataarea>
379      </part>
380   </software>
381
382<!-- I have not been able to paly the game! am I doing something wrong, or is the tape at fault? -->
383   <software name="drawdraw" supported="no">
384      <description>Draw Draw</description>
385      <year>198?</year>
386      <publisher>Rief Games</publisher>
387      <part name="cass" interface="apf_cass">
388         <dataarea name="cass" size="1102508">
389            <rom name="rief_games_draw_draw.wav" size="1102508" crc="9542e1b3" sha1="476183d19adccdb3e47d8efdad5784fb044a39e2" offset="0" />
390         </dataarea>
391      </part>
392   </software>
393
394<!-- Not sure whether I don't know how to play, or the game does not load correctly... -->
395   <software name="dungtres" supported="partial">
396      <description>Dungeon_Treasure</description>
397      <year>19??</year>
398      <publisher>IM-1 Games</publisher>
399      <part name="cass" interface="apf_cass">
400         <dataarea name="cass" size="1055148">
401            <rom name="im-1_games_dungeon_treasure.wav" size="1055148" crc="1cf4b27a" sha1="249bf24c3a50884d09368d661241ce14374ac9be" offset="0" />
402         </dataarea>
403      </part>
404   </software>
405
406   <software name="et">
407      <description>E.T.</description>
408      <year>19??</year>
409      <publisher>York 10 Computerware</publisher>
410      <part name="cass" interface="apf_cass">
411         <dataarea name="cass" size="1045164">
412            <rom name="york_10_computerware_et.wav" size="1045164" crc="13ed31b4" sha1="097a916acc88f27c75560a3d8736a28a98a8fca9" offset="0" />
413         </dataarea>
414      </part>
415   </software>
416
417<!-- Escape 2 does not load correctly -->
418   <software name="lg3in1" supported="partial">
419      <description>Escape + 21 + Escape 2 (Bad?)</description>
420      <year>198?</year>
421      <publisher>Lacroix Games</publisher>
422      <feature name="usage" value="Wait 1 or 2 secs from PLAY press and Return" />
423      <part name="cass" interface="apf_cass">
424         <dataarea name="cass" size="3539884">
425            <rom name="lacroix_games_(escape_21_escape2).wav" size="3539884" crc="3a799a9e" sha1="d3486a021c7ef45db0e5f553153affbb2accf09a" offset="0" />
426         </dataarea>
427      </part>
428   </software>
429
430<!-- LINE <>40 WHAT -->
431   <software name="escape" supported="no">
432      <description>Escape!!!</description>
433      <year>198?</year>
434      <publisher>E. Beckett</publisher>
435      <part name="cass" interface="apf_cass">
436         <dataarea name="cass" size="1271980">
437            <rom name="e_beckett_escape!!!.wav" size="1271980" crc="07d54612" sha1="866eba13c2cd0d051e927362b1d20b938107b1f2" offset="0" />
438         </dataarea>
439      </part>
440   </software>
441
442   <software name="emt">
443      <description>Excape Mommies Tumb</description>
444      <year>19??</year>
445      <publisher>Handy Dandy Games</publisher>
446      <part name="cass" interface="apf_cass">
447         <dataarea name="cass" size="1034156">
448            <rom name="handy_dandy_games_excape_mommies_tumb.wav" size="1034156" crc="abf7fd14" sha1="2ab25b82a6c9373f5561b698d20ba4ddf2c825bd" offset="0" />
449         </dataarea>
450      </part>
451   </software>
452
453   <software name="ferzerx">
454      <description>Ferzerx</description>
455      <year>1983</year>
456      <publisher>G. R. Jones</publisher>
457      <part name="cass" interface="apf_cass">
458         <dataarea name="cass" size="1503848">
459            <rom name="g_r_jones_ferzerx.wav" size="1503848" crc="0b90827a" sha1="9685d8d437bae8101c44da9ab5c0da8c056cfdd1" offset="0" />
460         </dataarea>
461      </part>
462   </software>
463
464   <software name="fire">
465      <description>Fire!</description>
466      <year>19??</year>
467      <publisher>MR R's</publisher>
468      <part name="cass" interface="apf_cass">
469         <dataarea name="cass" size="1056172">
470            <rom name="mr_rs_fire.wav" size="1056172" crc="516c170b" sha1="d8a7937fd947c1dc76e87909ee87fca5c3485b85" offset="0" />
471         </dataarea>
472      </part>
473   </software>
474
475   <software name="foosebal">
476      <description>FooseBall</description>
477      <year>198?</year>
478      <publisher>E. Beckett</publisher>
479      <part name="cass" interface="apf_cass">
480         <dataarea name="cass" size="1167276">
481            <rom name="e_beckett_fooseball.wav" size="1167276" crc="471f4623" sha1="99a65036eb1c9ccb9e648beb3af8b535b4b08b35" offset="0" />
482         </dataarea>
483      </part>
484   </software>
485
486<!-- glitched gfx -->
487   <software name="frogger" supported="partial">
488      <description>Frogger</description>
489      <year>19??</year>
490      <publisher>York 10 Computerware</publisher>
491      <part name="cass" interface="apf_cass">
492         <dataarea name="cass" size="1050796">
493            <rom name="york_10_computerware_frogger.wav" size="1050796" crc="5daf7f16" sha1="b0929f68c54f78ece0c7a3611c168647385ccfc0" offset="0" />
494         </dataarea>
495      </part>
496   </software>
497
498   <software name="froggy" supported="no">
499      <description>Froggy (Bad?)</description>
500      <year>198?</year>
501      <publisher>E. Beckett</publisher>
502      <part name="cass" interface="apf_cass">
503         <dataarea name="cass" size="1224492">
504            <rom name="e_beckett_froggy.wav" size="1224492" crc="ef0bf4b9" sha1="b35f53062117c98fbff2903cbd9ae52df91bf80e" offset="0" />
505         </dataarea>
506      </part>
507   </software>
508
509<!-- Saucer Shoot does not load correctly -->
510   <software name="mrr2in1" supported="partial">
511      <description>Gondola Pitts + Saucer Shoot</description>
512      <year>19??</year>
513      <publisher>MR R's</publisher>
514      <part name="cass" interface="apf_cass">
515         <dataarea name="cass" size="2550572">
516            <rom name="mr_rs_gondola_pitts_saucer_shoot.wav" size="2550572" crc="94d89b01" sha1="6e7441b143c4dec1f6795e4d710dcfe45c61edaf" offset="0" />
517         </dataarea>
518      </part>
519   </software>
520
521   <software name="gfxhelp">
522      <description>Graphics Helper</description>
523      <year>1982</year>
524      <publisher>Carl A. Echols</publisher>
525      <part name="cass" interface="apf_cass">
526         <dataarea name="cass" size="1162156">
527            <rom name="carl_echols_graphics_editor.wav" size="1162156" crc="d8160190" sha1="9e2f4a91aabf442191495085fd4dc05daafc1454" offset="0" />
528         </dataarea>
529      </part>
530   </software>
531
532<!-- glitched gfx -->
533   <software name="gskull" supported="partial">
534      <description>GraySkull</description>
535      <year>1984</year>
536      <publisher>G. Karabin</publisher>
537      <part name="cass" interface="apf_cass">
538         <dataarea name="cass" size="2033578">
539            <rom name="g_karabin_greyskull.wav" size="2033578" crc="977a672d" sha1="d35924b4b64d085a1b9e122d34ed2bcff6310898" offset="0" />
540         </dataarea>
541      </part>
542   </software>
543
544<!-- LINE XXX NO LINE REFERENCED error -->
545   <software name="headhunt" supported="no">
546      <description>Head-Hunter</description>
547      <year>198?</year>
548      <publisher>G. R. Jones</publisher>
549      <part name="cass" interface="apf_cass">
550         <dataarea name="cass" size="1388952">
551            <rom name="g_r_jones_head-hunter.wav" size="1388952" crc="f510ddc7" sha1="f83f55a8534571ba7a227b221772870d5a7decd0" offset="0" />
552         </dataarea>
553      </part>
554   </software>
555
556   <software name="heartatk">
557      <description>Heart Attack</description>
558      <year>1983</year>
559      <publisher>MR R's</publisher>
560      <part name="cass" interface="apf_cass">
561         <dataarea name="cass" size="1147052">
562            <rom name="mr_rs_ekg.wav" size="1147052" crc="95d1da13" sha1="e204cfaede58ef9df5d13b9162318a419191a28a" offset="0" />
563         </dataarea>
564      </part>
565   </software>
566
567<!-- It does not load properly -->
568   <software name="tape4" supported="no">
569      <description>IM-1 in a Million Club Newsletter Tape 4</description>
570      <year>19??</year>
571      <publisher>IM-1 in a Million Club Newsletter</publisher>
572      <part name="cass" interface="apf_cass">
573         <dataarea name="cass" size="5163564">
574            <rom name="im-1_in-a-million_club_tape_4.wav" size="5163564" crc="6b0f57f0" sha1="fc5673baa591dab4e18f4d2c34e13fd1f896ccf5" offset="0" />
575         </dataarea>
576      </part>
577   </software>
578
579   <software name="tape9">
580      <description>IM-1 in a Million Club Newsletter Tape 9</description>
581      <year>19??</year>
582      <publisher>IM-1 in a Million Club Newsletter</publisher>
583      <part name="cass" interface="apf_cass">
584         <dataarea name="cass" size="5218092">
585            <rom name="im-1_in-a-million_club_tape_9.wav" size="5218092" crc="55ec9fd7" sha1="c1ffc604183ce81d51c12143414ca44665cc3817" offset="0" />
586         </dataarea>
587      </part>
588   </software>
589
590   <software name="logiclck">
591      <description>Lord Logic-Locks</description>
592      <year>19??</year>
593      <publisher>IM-1 in a Million Club Newsletter</publisher>
594      <part name="cass" interface="apf_cass">
595         <dataarea name="cass" size="1042092">
596            <rom name="im-1_in-a-million_lord_logic-locks.wav" size="1042092" crc="17793917" sha1="84df70d73adb5ab04b2730362b3d3cfe1ab492f5" offset="0" />
597         </dataarea>
598      </part>
599   </software>
600
601<!-- It does not load properly -->
602   <software name="llander" supported="no">
603      <description>Lunar Lander (Bad?)</description>
604      <year>19??</year>
605      <publisher>IM-1 in a Million Club Newsletter</publisher>
606      <part name="cass" interface="apf_cass">
607         <dataarea name="cass" size="1356204">
608            <rom name="im-1_in_a_million_lunar_lander.wav" size="1356204" crc="327e6934" sha1="e8a9b9805c485342275dad13b5c47fb7bcc6877d" offset="0" />
609         </dataarea>
610      </part>
611   </software>
612
613   <software name="maze">
614      <description>Maze</description>
615      <year>198?</year>
616      <publisher>R. Eisman</publisher>
617      <part name="cass" interface="apf_cass">
618         <dataarea name="cass" size="1112748">
619            <rom name="r_eisman_maze.wav" size="1112748" crc="cdaa77d5" sha1="993f9b676e028186847208312af97aea1bea6a14" offset="0" />
620         </dataarea>
621      </part>
622   </software>
623
624   <software name="mimicmus">
625      <description>Mimic My Music</description>
626      <year>19??</year>
627      <publisher>IM-1 in a Million Club Newsletter</publisher>
628      <part name="cass" interface="apf_cass">
629         <dataarea name="cass" size="1036204">
630            <rom name="im-1_in-a-million_mimic_my_music.wav" size="1036204" crc="99595de5" sha1="c3628b1dae626e46da6697c17d9c07251faea99a" offset="0" />
631         </dataarea>
632      </part>
633   </software>
634
635   <software name="minotaur">
636      <description>Minotaur</description>
637      <year>1982</year>
638      <publisher>G. R. Jones</publisher>
639      <part name="cass" interface="apf_cass">
640         <dataarea name="cass" size="1082868">
641            <rom name="g_r_jones_minotaur.wav" size="1082868" crc="de2ac0a7" sha1="aaa79e082076bbffed958d9b61bf181f150ac883" offset="0" />
642         </dataarea>
643      </part>
644   </software>
645
646   <software name="missimpa">
647      <description>Mission: Improbable - Mission Alpha</description>
648      <year>1982</year>
649      <publisher>Geo-Grafix</publisher>
650      <feature name="usage" value="Requires 16K RAM" />
651      <part name="cass" interface="apf_cass">
652         <dataarea name="cass" size="10269596">
653            <rom name="geo_grafix_mission-improbable_alpha(16k).wav" size="10269596" crc="29a0d823" sha1="75e7b305f2004af57fa9b1347c3e2f12cb68d525" offset="0" />
654         </dataarea>
655      </part>
656   </software>
657
658<!-- LINE XXX NO LINE REFERENCED error -->
659   <software name="missimpb" supported="no">
660      <description>Mission: Improbable - Mission Bravo</description>
661      <year>198?</year>
662      <publisher>Geo-Grafix</publisher>
663      <part name="cass" interface="apf_cass">
664         <dataarea name="cass" size="1372972">
665            <rom name="geo_grafix_mission-improbable_bravo.wav" size="1372972" crc="cbe6c418" sha1="1565f15ffd3b1c5fb1d4df2e522e7ffce082acdf" offset="0" />
666         </dataarea>
667      </part>
668   </software>
669
670<!-- it complains about missing data and keeps asking to reload the tape -->
671   <software name="musicomp" supported="no">
672      <description>Music Composer Player Piano</description>
673      <year>1979</year>
674      <publisher>APF Electronics</publisher>
675      <part name="cass" interface="apf_cass">
676         <dataarea name="cass" size="3403952">
677            <rom name="apf_musiccomposer_playerpiano.wav" size="3403952" crc="c7507a6c" sha1="e5681cd13d79730c7f3118d451c0efa697899fde" offset="0" />
678         </dataarea>
679      </part>
680   </software>
681
682   <software name="mystmans">
683      <description>Mystry Mansion</description>
684      <year>19??</year>
685      <publisher>Handy Dandy Games</publisher>
686      <part name="cass" interface="apf_cass">
687         <dataarea name="cass" size="1070054">
688            <rom name="handy_dandy_games_mystry_mansion.wav" size="1070054" crc="2fc4c320" sha1="2c4eaef013f1d501accb6ec34bcec6b27995e229" offset="0" />
689         </dataarea>
690      </part>
691   </software>
692
693   <software name="pacrat">
694      <description>Pac-Rat</description>
695      <year>19??</year>
696      <publisher>MR R's</publisher>
697      <part name="cass" interface="apf_cass">
698         <dataarea name="cass" size="957868">
699            <rom name="mr_rs_pack_rat(audio lost).wav" size="957868" crc="dbb4f160" sha1="4d8e3475ee20eff4d25f23da816b5cb46ea12514" offset="0" />
700         </dataarea>
701      </part>
702   </software>
703
704   <software name="pakman">
705      <description>Pak-Man</description>
706      <year>198?</year>
707      <publisher>E. Beckett</publisher>
708      <part name="cass" interface="apf_cass">
709         <dataarea name="cass" size="1267116">
710            <rom name="e_beckett_pak-man.wav" size="1267116" crc="ea2e7f8f" sha1="a68f2d69ce5670485c0f9a65ed1bdfa64499fed2" offset="0" />
711         </dataarea>
712      </part>
713   </software>
714
715<!-- glitched gfx -->
716   <software name="pinbwiz" supported="partial">
717      <description>Pinball Wiz</description>
718      <year>1983</year>
719      <publisher>G. Karabin</publisher>
720      <part name="cass" interface="apf_cass">
721         <dataarea name="cass" size="1732970">
722            <rom name="g_karabin_wiz.wav" size="1732970" crc="f028bfc9" sha1="cfc24963a37a4e6a2e65a7b71806f0329a3efb4f" offset="0" />
723         </dataarea>
724      </part>
725   </software>
726
727   <software name="planetat">
728      <description>Planet Atack</description>
729      <year>198?</year>
730      <publisher>Rief Games</publisher>
731      <part name="cass" interface="apf_cass">
732         <dataarea name="cass" size="956076">
733            <rom name="rief_games_planet_atack.wav" size="956076" crc="ac2c4bd8" sha1="e42f49ec42d9c831f6eb43546e54568de11f9802" offset="0" />
734         </dataarea>
735      </part>
736   </software>
737
738   <software name="rattler">
739      <description>Rattler</description>
740      <year>198?</year>
741      <publisher>Geo-Grafix</publisher>
742      <part name="cass" interface="apf_cass">
743         <dataarea name="cass" size="1199276">
744            <rom name="geo_grafix_rattler.wav" size="1199276" crc="e69724fa" sha1="a997ecd76f164dd4762a5cde6cfb3a3192f47dc7" offset="0" />
745         </dataarea>
746      </part>
747   </software>
748
749   <software name="recollct">
750      <description>Recollection</description>
751      <year>19??</year>
752      <publisher>IM-1 in a Million Club Newsletter</publisher>
753      <part name="cass" interface="apf_cass">
754         <dataarea name="cass" size="1076652">
755            <rom name="im-1_in-a-million_recollection.wav" size="1076652" crc="02020981" sha1="0d83fff9da0ef86f52352238910a5a5f4ae97fc5" offset="0" />
756         </dataarea>
757      </part>
758   </software>
759
760   <software name="roadrunn">
761      <description>RoadRunner</description>
762      <year>19??</year>
763      <publisher>MR R's</publisher>
764      <part name="cass" interface="apf_cass">
765         <dataarea name="cass" size="1027884">
766            <rom name="mr_rs_roadrunner.wav" size="1027884" crc="dcdd8fbd" sha1="cbe17a0848fdff532fc9e8419b59732a3a8c9992" offset="0" />
767         </dataarea>
768      </part>
769   </software>
770
771   <software name="runar">
772      <description>Run Around</description>
773      <year>198?</year>
774      <publisher>Millivision</publisher>
775      <part name="cass" interface="apf_cass">
776         <dataarea name="cass" size="1010604">
777            <rom name="millivision_run_around.wav" size="1010604" crc="4a758098" sha1="46dea87e682d3df86cd970b9d0702005370a8c38" offset="0" />
778         </dataarea>
779      </part>
780   </software>
781
782   <software name="safari">
783      <description>Safari in Africa</description>
784      <year>198?</year>
785      <publisher>DataComp</publisher>
786      <part name="cass" interface="apf_cass">
787         <dataarea name="cass" size="1751482">
788            <rom name="datacomp_safari_in_africa.wav" size="1751482" crc="4025fe24" sha1="184c3751a99fcbcb15b1b4b769d74de0fb867592" offset="0" />
789         </dataarea>
790      </part>
791   </software>
792
793<!-- glitched gfx -->
794   <software name="sailing" supported="partial">
795      <description>Sailing</description>
796      <year>19??</year>
797      <publisher>York 10 Computerware</publisher>
798      <part name="cass" interface="apf_cass">
799         <dataarea name="cass" size="999340">
800            <rom name="york_10_computerware_sailing.wav" size="999340" crc="5113726f" sha1="210b76a4ef4945ed8a70c9d203f336953a31cd2d" offset="0" />
801         </dataarea>
802      </part>
803   </software>
804
805<!-- glitched gfx -->
806   <software name="skydiver" supported="partial">
807      <description>Sky Diver</description>
808      <year>19??</year>
809      <publisher>York 10 Computerware</publisher>
810      <part name="cass" interface="apf_cass">
811         <dataarea name="cass" size="1000108">
812            <rom name="york_10_computerware_sky_diver.wav" size="1000108" crc="0f396e8b" sha1="91b9425b1c7cb96020850b5c79eb24a8c97d9502" offset="0" />
813         </dataarea>
814      </part>
815   </software>
816
817<!-- Not sure if controls work fine... to investigate! -->
818   <software name="solarwar">
819      <description>Solar Wars!</description>
820      <year>1983</year>
821      <publisher>Handmade Games</publisher>
822      <part name="cass" interface="apf_cass">
823         <dataarea name="cass" size="2183084">
824            <rom name="r_k_kretschmer_solar_wars.wav" size="2183084" crc="6b1ad7f1" sha1="22fcc8b21279fad381b4357fb81df44ec8f9e680" offset="0" />
825         </dataarea>
826      </part>
827   </software>
828
829<!-- I have not been able to generate any sound! am I doing something wrong, or is the tape at fault? -->
830   <software name="soundfx" supported="partial">
831      <description>Sound Effects Demo Program</description>
832      <year>19??</year>
833      <publisher>Ralph A. Rodriguez</publisher>
834      <part name="cass" interface="apf_cass">
835         <dataarea name="cass" size="1219510">
836            <rom name="r_a_rodriguez_sound_effects_sub_porgram.wav" size="1219510" crc="30e5ae25" sha1="051306fd38482b36eaba75792ba01ce09da10ad2" offset="0" />
837         </dataarea>
838      </part>
839   </software>
840
841<!-- glitched gfx -->
842   <software name="spacedst" supported="partial">
843      <description>Space Destroyers</description>
844      <year>1980</year>
845      <publisher>APF Electronics</publisher>
846      <part name="cass" interface="apf_cass">
847         <dataarea name="cass" size="1672014">
848            <rom name="apf_space_destroyers.wav" size="1672014" crc="aa380a7f" sha1="2defa25ccac8fbbf594b2238d5f97bdf6188f312" offset="0" />
849         </dataarea>
850      </part>
851   </software>
852
853<!-- glitched gfx -->
854   <software name="sshuttle" supported="partial">
855      <description>Space Shuttle</description>
856      <year>19??</year>
857      <publisher>York 10 Computerware</publisher>
858      <feature name="usage" value="Requires 16K RAM" />
859      <part name="cass" interface="apf_cass">
860         <dataarea name="cass" size="1759916">
861            <rom name="york_10_computerware_space_shuttle(16k).wav" size="1759916" crc="66a43b5a" sha1="1644bc35920e81876de630feb59d4ab761b87563" offset="0" />
862         </dataarea>
863      </part>
864   </software>
865
866   <software name="starbtle">
867      <description>Star Battle</description>
868      <year>19??</year>
869      <publisher>Handy Dandy Games</publisher>
870      <part name="cass" interface="apf_cass">
871         <dataarea name="cass" size="1126572">
872            <rom name="handy_dandy_games_star_battle.wav" size="1126572" crc="2b5853b5" sha1="1f80dc16bf4d988fce82074e5f44d2075f3a7a43" offset="0" />
873         </dataarea>
874      </part>
875   </software>
876
877<!-- glitched gfx -->
878   <software name="starcstl" supported="partial">
879      <description>Star Castle</description>
880      <year>19??</year>
881      <publisher>York 10 Computerware</publisher>
882      <part name="cass" interface="apf_cass">
883         <dataarea name="cass" size="1021100">
884            <rom name="york_10_computerware_star_castle.wav" size="1021100" crc="be300f87" sha1="02b65e64bfa6b6e5779bed28163035def10f663f" offset="0" />
885         </dataarea>
886      </part>
887   </software>
888
889<!-- glitched gfx -->
890   <software name="starship" supported="partial">
891      <description>Star Ship</description>
892      <year>198?</year>
893      <publisher>R. Eisman</publisher>
894      <part name="cass" interface="apf_cass">
895         <dataarea name="cass" size="1064200">
896            <rom name="r_eisman_star_ship.wav" size="1064200" crc="5b36c175" sha1="287af2d590b308437b31a8ab71b8d827c7a6255e" offset="0" />
897         </dataarea>
898      </part>
899   </software>
900
901   <software name="startrex">
902      <description>Star Trex</description>
903      <year>1981</year>
904      <publisher>G. R. Jones</publisher>
905      <part name="cass" interface="apf_cass">
906         <dataarea name="cass" size="2250738">
907            <rom name="g_r_jones_star_trex.wav" size="2250738" crc="d8989166" sha1="3a71d7899c72d08e7ce15c4f12c03f8777b5664d" offset="0" />
908         </dataarea>
909      </part>
910   </software>
911
912   <software name="gg2in1">
913      <description>Super 21 + Space Hunt</description>
914      <year>1983</year>
915      <publisher>Geo-Grafix</publisher>
916      <part name="cass" interface="apf_cass">
917         <dataarea name="cass" size="2496414">
918            <rom name="geo_grafix_super_21_space_hunt.wav" size="2496414" crc="c937f096" sha1="9652b6478cf554062d6d6e6e8fb558873a8097f2" offset="0" />
919         </dataarea>
920      </part>
921   </software>
922
923<!-- Space Hunt does not seem to load fine, it was listed as an "Improved version of the above"... -->
924   <software name="gg2in1a" cloneof="gg2in1" supported="partial">
925      <description>Super 21 + Space Hunt (Alt?)</description>
926      <year>1983</year>
927      <publisher>Geo-Grafix</publisher>
928      <part name="cass" interface="apf_cass">
929         <dataarea name="cass" size="3931560">
930            <rom name="geo_grafix_super_21ii_space_huntii.wav" size="3931560" crc="d80d3a1b" sha1="41b90a8989a90fb36d1d52b780e7499f192e8519" offset="0" />
931         </dataarea>
932      </part>
933   </software>
934
935<!-- LINE <218 WHAT -->
936   <software name="suprfrog" supported="no">
937      <description>Super Frog</description>
938      <year>198?</year>
939      <publisher>E. Beckett</publisher>
940      <part name="cass" interface="apf_cass">
941         <dataarea name="cass" size="1244332">
942            <rom name="e_beckett_super_frog.wav" size="1244332" crc="30080597" sha1="349731435e305a117e9ad44b762f9ae852d0e81a" offset="0" />
943         </dataarea>
944      </part>
945   </software>
946
947<!-- LINE XXX NO LINE REFERENCED error -->
948   <software name="sy50diag" supported="no">
949      <description>SY-50 IM-1 Diagnostics</description>
950      <year>1979</year>
951      <publisher>APF Electronics</publisher>
952      <part name="cass" interface="apf_cass">
953         <dataarea name="cass" size="3598780">
954            <rom name="apf_sy-50_im-1_diagnostics.wav" size="3598780" crc="0b3f3d4e" sha1="9185dc1801d50538b636e9fe5a071fc40425a9ec" offset="0" />
955         </dataarea>
956      </part>
957   </software>
958
959<!-- LINE XXX NO LINE REFERENCED error -->
960   <software name="theftam" supported="no">
961      <description>Theft at the Art Museum</description>
962      <year>1982</year>
963      <publisher>Carl A. Echols</publisher>
964      <part name="cass" interface="apf_cass">
965         <dataarea name="cass" size="1106348">
966            <rom name="carl_echols_theft_at_the_art_museum.wav" size="1106348" crc="e4e408e6" sha1="b944b36ebc8b6ef9abdb1d560bc30418796e2e8d" offset="0" />
967         </dataarea>
968      </part>
969   </software>
970
971   <software name="thief">
972      <description>Thief</description>
973      <year>198?</year>
974      <publisher>Millivision</publisher>
975      <part name="cass" interface="apf_cass">
976         <dataarea name="cass" size="988972">
977            <rom name="millivision_thief.wav" size="988972" crc="df0cb1b5" sha1="b1933b1a7e923e57547b0abab3d1ce99f3628d4b" offset="0" />
978         </dataarea>
979      </part>
980   </software>
981
982<!-- I cannot load correctly either game -->
983   <software name="c2in1" supported="no">
984      <description>Transport + 15 Matches</description>
985      <year>19??</year>
986      <publisher>R. T. Carman</publisher>
987      <part name="cass" interface="apf_cass">
988      <feature name="usage" value="Transport requires 16K RAM" />
989         <dataarea name="cass" size="3680094">
990            <rom name="r_t_carman_transport(16k)_15_matches.wav" size="3680094" crc="5673884c" sha1="538ea35a11ce95243da6cb6bf568b8f840bbe40d" offset="0" />
991         </dataarea>
992      </part>
993   </software>
994
995<!-- it does not complete loading -->
996   <software name="treashnt" supported="no">
997      <description>Treasure Hunt (Bad?)</description>
998      <year>1982</year>
999      <publisher>Carl A. Echols</publisher>
1000      <part name="cass" interface="apf_cass">
1001         <dataarea name="cass" size="1079468">
1002            <rom name="carl_echols_treasure_hunt.wav" size="1079468" crc="7a3cbeb9" sha1="3661cf83211758cb6c5827169c077b17953924ef" offset="0" />
1003         </dataarea>
1004      </part>
1005   </software>
1006
1007<!-- third game does not load correctly -->
1008   <software name="3for1" supported="partial">
1009      <description>Three-for-One : Space War + Air Fortress + Squeeze Play</description>
1010      <year>19??</year>
1011      <publisher>&lt;unknown&gt;</publisher>
1012      <part name="cass" interface="apf_cass">
1013         <dataarea name="cass" size="4647596">
1014            <rom name="three_for_one.wav" size="4647596" crc="a5abc06d" sha1="e21a0276ccdbf07dbc84b61a79dcf1d494b2b293" offset="0" />
1015         </dataarea>
1016      </part>
1017   </software>
1018
1019   <software name="tronn">
1020      <description>Tronn</description>
1021      <year>19??</year>
1022      <publisher>MR R's</publisher>
1023      <part name="cass" interface="apf_cass">
1024         <dataarea name="cass" size="921452">
1025            <rom name="mr_rs_tronn.wav" size="921452" crc="69971170" sha1="45f0342cc55ceab089a3dfe6260da6ab4c505319" offset="0" />
1026         </dataarea>
1027      </part>
1028   </software>
1029
1030   <software name="turbo">
1031      <description>Turbo</description>
1032      <year>19??</year>
1033      <publisher>York 10 Computerware</publisher>
1034      <part name="cass" interface="apf_cass">
1035         <dataarea name="cass" size="1019052">
1036            <rom name="york_10_computerware_turbo.wav" size="1019052" crc="6b7dd4b4" sha1="d572934ed4752d78d527714f57944a81e3114eae" offset="0" />
1037         </dataarea>
1038      </part>
1039   </software>
1040
1041   <software name="ubet">
1042      <description>UBet</description>
1043      <year>19??</year>
1044      <publisher>MR R's</publisher>
1045      <part name="cass" interface="apf_cass">
1046         <dataarea name="cass" size="1092076">
1047            <rom name="mr_rs_ubet.wav" size="1092076" crc="c93dd547" sha1="795b321ca67a36a63c5cf58cb42433c316366f73" offset="0" />
1048         </dataarea>
1049      </part>
1050   </software>
1051
1052   <software name="wallstrt">
1053      <description>Wall Street Cartel</description>
1054      <year>19??</year>
1055      <publisher>IM-1 in a Million Club Newsletter</publisher>
1056      <part name="cass" interface="apf_cass">
1057         <dataarea name="cass" size="1125804">
1058            <rom name="im-1_in-a-million_wall_street_cartel.wav" size="1125804" crc="7fdef1c7" sha1="ada3b0fa518cd71c8522b391685562b0dedb5899" offset="0" />
1059         </dataarea>
1060      </part>
1061   </software>
1062
1063   <software name="zap">
1064      <description>Zap</description>
1065      <year>198?</year>
1066      <publisher>R. Eisman</publisher>
1067      <part name="cass" interface="apf_cass">
1068         <dataarea name="cass" size="1558316">
1069            <rom name="r_eisman_zap!!.wav" size="1558316" crc="6828de41" sha1="3f2e43c96a473c95e219e5605db682fdf4e574af" offset="0" />
1070         </dataarea>
1071      </part>
1072   </software>
1073
1074
1075
1076<!-- Utils -->
1077
1078   <software name="40tkinit">
1079      <description>40 Track Initialization Program</description>
1080      <year>1983</year>
1081      <publisher>Hex-Mart Software</publisher>
1082      <part name="cass" interface="apf_cass">
1083         <dataarea name="cass" size="1056684">
1084            <rom name="hex_mart_init40v.wav" size="1056684" crc="5b729323" sha1="fe7510d16f21d76d28a31b83099248b440c759bc" offset="0" />
1085         </dataarea>
1086      </part>
1087   </software>
1088
1089   <software name="basnum">
1090      <description>BasNum</description>
1091      <year>1983</year>
1092      <publisher>Hex-Mart Software</publisher>
1093      <part name="cass" interface="apf_cass">
1094         <dataarea name="cass" size="1183404">
1095            <rom name="hex_mart_super_basnum.wav" size="1183404" crc="d46bfbd5" sha1="7aba4ab227b838492b3c61f36fd149d6dd64ef10" offset="0" />
1096         </dataarea>
1097      </part>
1098   </software>
1099
1100   <software name="bastrace">
1101      <description>Basic Trace</description>
1102      <year>1982</year>
1103      <publisher>Carl A. Echols</publisher>
1104      <part name="cass" interface="apf_cass">
1105         <dataarea name="cass" size="983724">
1106            <rom name="carl_echols_basic_trace_function.wav" size="983724" crc="f5ab7059" sha1="43c90cfe44ec866e14ca9d520f6122419ddc1446" offset="0" />
1107         </dataarea>
1108      </part>
1109   </software>
1110
1111   <software name="diskmod">
1112      <description>Disk Modification Program</description>
1113      <year>1983</year>
1114      <publisher>Hex-Mart Software</publisher>
1115      <part name="cass" interface="apf_cass">
1116         <dataarea name="cass" size="1083308">
1117            <rom name="hex_mart_diskmod.wav" size="1083308" crc="8fd9a616" sha1="96eee304a5a64a1d42c12dfcfee600578d81e1b5" offset="0" />
1118         </dataarea>
1119      </part>
1120   </software>
1121
1122   <software name="disktest">
1123      <description>Disk Test</description>
1124      <year>19??</year>
1125      <publisher>IM-1 in a Million Club Newsletter</publisher>
1126      <part name="cass" interface="apf_cass">
1127         <dataarea name="cass" size="1268736">
1128            <rom name="im-1_in-a-million_disk_test.wav" size="1268736" crc="79ef0a19" sha1="9052bcd301c26c1aad8039c5066cfe3e1b32829c" offset="0" />
1129         </dataarea>
1130      </part>
1131   </software>
1132
1133   <software name="gfxtablt">
1134      <description>Graphics Tablet</description>
1135      <year>19??</year>
1136      <publisher>IM-1 in a Million Club Newsletter</publisher>
1137      <part name="cass" interface="apf_cass">
1138         <dataarea name="cass" size="1210540">
1139            <rom name="im-1_in-a-million_graphics_tablet.wav" size="1210540" crc="7550af5a" sha1="4a0a6e8f0c818c29f12f8867af1c7ee9af8f09ba" offset="0" />
1140         </dataarea>
1141      </part>
1142   </software>
1143
1144   <software name="hiresplt">
1145      <description>Hi-res Plot</description>
1146      <year>19??</year>
1147      <publisher>IM-1 in a Million Club Newsletter</publisher>
1148      <part name="cass" interface="apf_cass">
1149         <dataarea name="cass" size="997036">
1150            <rom name="im-1_in-a-million_hi-res_plot.wav" size="997036" crc="cfb5a4ed" sha1="466deacb1d28ab9bd62ac8401b10c2899d6633ad" offset="0" />
1151         </dataarea>
1152      </part>
1153   </software>
1154
1155   <software name="loresplt">
1156      <description>Lo-res Plot</description>
1157      <year>19??</year>
1158      <publisher>IM-1 in a Million Club Newsletter</publisher>
1159      <part name="cass" interface="apf_cass">
1160         <dataarea name="cass" size="983980">
1161            <rom name="im-1_in-a-million_lo-res_plot.wav" size="983980" crc="1e0a5894" sha1="54464ff325787478eca7bed1118350c37c8144a2" offset="0" />
1162         </dataarea>
1163      </part>
1164   </software>
1165
1166<!-- MAE stands for MacroAssemblerEditor -->
1167   <software name="mae">
1168      <description>MAE</description>
1169      <year>1981</year>
1170      <publisher>David Donnelly</publisher>
1171      <part name="cass" interface="apf_cass">
1172         <dataarea name="cass" size="5422378">
1173            <rom name="mae(macroassemblereditor).wav" size="5422378" crc="29c99097" sha1="b749f5d7a394f030001ec6e35882a6bb93a6dca0" offset="0" />
1174         </dataarea>
1175      </part>
1176   </software>
1177
1178   <software name="renumber">
1179      <description>Renumber</description>
1180      <year>1982</year>
1181      <publisher>Carl A. Echols</publisher>
1182      <part name="cass" interface="apf_cass">
1183         <dataarea name="cass" size="1035948">
1184            <rom name="carl_echols_basic_renumber.wav" size="1035948" crc="83a60951" sha1="e62769ffb7f85bd7948508f35f0a5d04c612c00d" offset="0" />
1185         </dataarea>
1186      </part>
1187   </software>
1188
1189   <software name="sy40dasm">
1190      <description>SY-40 Disassembler</description>
1191      <year>1979</year>
1192      <publisher>APF Electronics</publisher>
1193      <part name="cass" interface="apf_cass">
1194         <dataarea name="cass" size="1729574">
1195            <rom name="apf_sy-40 disassembler.wav" size="1729574" crc="601088a8" sha1="ce364a5e7544239b5167c70e5575568e225ab0bc" offset="0" />
1196         </dataarea>
1197      </part>
1198   </software>
1199
1200
1201<!-- Unsure what this is... Investigate! -->
1202
1203   <software name="primera">
1204      <description>Primera? (Bad?)</description>
1205      <year>19??</year>
1206      <publisher>&lt;unknown&gt;</publisher>
1207      <part name="cass" interface="apf_cass">
1208         <dataarea name="cass" size="226280">
1209            <rom name="primera.apt" size="226280" crc="15505290" sha1="c71e0fbc4dce843ef7c8be52109790a836af2bc7" offset="0" />
1210         </dataarea>
1211      </part>
1212   </software>
1213
1214</softwarelist>
trunk/hash/dmv.xml
r241752r241753
939939      </part>
940940   </software>
941941
942   <software name="drdrawc"> <!-- CP/M-86 -->
943      <description>DR Draw (Color)</description>
944      <year>1983</year>
945      <publisher>Digital Research</publisher>
946      <info name="usage" value="Requires K208, K235 and K806" />
947      <part name="flop" interface="floppy_5_25">
948         <dataarea name="flop" size="281212">
949            <rom name="86drdraw.td0" size="281212" crc="451350ce" sha1="3d710e12241850988c88ca8c16528da3cdbdc2fd" offset="0" />
950         </dataarea>
951      </part>
952   </software>
953
954   <software name="drdrawm"> <!-- CP/M-86 -->
955      <description>DR Draw (Monochrome)</description>
956      <year>1983</year>
957      <publisher>Digital Research</publisher>
958      <info name="usage" value="Requires CP/M-86" />
959      <part name="flop" interface="floppy_5_25">
960         <dataarea name="flop" size="189140">
961            <rom name="86drmo-m.td0" size="189140" crc="61543ccf" sha1="b8e33a0076bd1568a40d403bb6b391e6c45f9569" offset="0" />
962         </dataarea>
963      </part>
964   </software>
965
966   <software name="tgdemo"> <!-- CP/M-80 -->
967      <description>TUTBOGRAPH Demonstration Programs</description>
968      <year>198?</year>
969      <publisher>&lt;unknown&gt;</publisher>
970      <part name="flop" interface="floppy_5_25">
971         <dataarea name="flop" size="259406">
972            <rom name="80tgraf.td0" size="259406" crc="d22d403f" sha1="8b1182f42faa68c1e5d879e79375683e48dd8bae" offset="0" />
973         </dataarea>
974      </part>
975   </software>
976
977   <software name="cpm86qd"> <!-- CP/M-86 -->
978      <description>CP/M-86 1.1 with quad-density FDD support</description>
979      <year>1983</year>
980      <publisher>NCR Corporation</publisher>
981      <part name="flop" interface="floppy_5_25">
982         <dataarea name="flop" size="221628">
983            <rom name="586-4896.td0" size="221628" crc="383d54d3" sha1="be36d161f72c12bf6263f9577d609fd21b352c47" offset="0" />
984         </dataarea>
985      </part>
986   </software>
987
988   <software name="gsx86tst"> <!-- CP/M-86 -->
989      <description>GSX-86 Test Suite</description>
990      <year>198?</year>
991      <publisher>&lt;unknown&gt;</publisher>
992      <part name="flop" interface="floppy_5_25">
993         <dataarea name="flop" size="1128529">
994            <rom name="5-gsx86-test.mfi" size="1128529" crc="353821bc" sha1="ce977ea324ef6faf8245b4e1bcac84f2504f0c37" offset="0" />
995         </dataarea>
996      </part>
997   </software>
998
999   <software name="msdosqd"> <!-- MS-DOS -->
1000      <description>MS-DOS v2.11 with quad-density FDD support</description>
1001      <year>1983</year>
1002      <publisher>Microsoft</publisher>
1003      <part name="flop" interface="floppy_5_25">
1004         <dataarea name="flop" size="611287">
1005            <rom name="5_dos_96.mfi" size="611287" crc="c0f9d426" sha1="bccb7e04b320150435ee20e3d563dd163f6ab241" offset="0" />
1006         </dataarea>
1007      </part>
1008   </software>
1009
9421010   <software name="dbase238"> <!-- CP/M-80 -->
9431011      <description>dBASE II v2.38</description>
9441012      <year>198?</year>
r241752r241753
10431111      </part>
10441112   </software>
10451113
1046   <software name="acad" supported="no"> <!-- MS-DOS --> <!-- graphic mode doesn't works -->
1114   <software name="acad"> <!-- MS-DOS -->
10471115      <description>AutoCAD</description>
10481116      <year>1987</year>
10491117      <publisher>&lt;unknown&gt;</publisher>
r241752r241753
10601128      </part>
10611129   </software>
10621130
1063   <software name="acada" cloneof="acad" supported="no"> <!-- MS-DOS --> <!-- graphic mode doesn't works -->
1131   <software name="acada" cloneof="acad"> <!-- MS-DOS -->
10641132      <description>AutoCAD (Alt 1)</description>
10651133      <year>1987</year>
10661134      <publisher>&lt;unknown&gt;</publisher>
r241752r241753
10871155      </part>
10881156   </software>
10891157
1090   <software name="acadb" cloneof="acad" supported="no"> <!-- MS-DOS --> <!-- graphic mode doesn't works -->
1158   <software name="acadb" cloneof="acad"> <!-- MS-DOS -->
10911159      <description>AutoCAD (Alt 2)</description>
10921160      <year>1987</year>
10931161      <publisher>&lt;unknown&gt;</publisher>
trunk/hash/ec1841.xml
r241752r241753
131131      <publisher>??</publisher>
132132      <part name="flop1" interface="floppy_5_25">
133133         <dataarea name="flop" size="205475">
134            <rom name="ec1841-voice41.td0" size="205475" sha1="5561649fde90bccc743ce61a5d4a50e07cd5a674" crc="1f85afad" offset="0" />
134            <rom name="ec1841-voice41.td0" size="205475" sha1="5561649fde90bccc743ce61a5d4a50e07cd5a674" crc="f8082286" offset="0" />
135135         </dataarea>
136136      </part>
137137   </software>
trunk/hash/epson_cpm.xml
r0r241753
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- Generic software list for the Epson HX-20, PX-4 and PX-8 systems -->
5
6<softwarelist name="epson_cpm" description="Epson CPM systems floppy disks">
7
8    <!-- This disk is used to boot the intelligent TF-20 floppy drive -->
9
10    <software name="tf20boot">
11        <description>TF-20 boot disk</description>
12        <year>198?</year>
13        <publisher>Epson</publisher>
14        <part name="flop1" interface="floppy_5_25">
15            <feature name="part_id" value="TF-20 boot disk" />
16            <dataarea name="flop" size="35124">
17                <rom name="tf20boot.td0" size="35124" crc="806311eb" sha1="b67433746ed5ab84be06003f850846565e19f44c" offset="0"/>
18            </dataarea>
19        </part>
20    </software>
21
22    <!-- The following disks are part of the vfloppy distribution -->
23
24    <software name="arcs">
25        <description>Archivers</description>
26        <year>?????</year>
27        <publisher>&lt;unofficial&gt;</publisher>
28        <part name="flop1" interface="floppy_5_25">
29            <feature name="part_id" value="Archivers" />
30            <dataarea name="flop" size="348848">
31                <rom name="arcs.d88" size="348848" crc="ab56993a" sha1="1e7c0512bea0adf9673527c5976497531837e8a3" offset="0"/>
32            </dataarea>
33        </part>
34    </software>
35
36    <software name="editor">
37        <description>VDE 2.66</description>
38        <year>?????</year>
39        <publisher>&lt;unofficial&gt;</publisher>
40        <part name="flop1" interface="floppy_5_25">
41            <feature name="part_id" value="VDE 2.66" />
42            <dataarea name="flop" size="348848">
43                <rom name="editor.d88" size="348848" crc="871d30ce" sha1="4f0d8342e7d92ba78fd922f0a2e13b2724a921df" offset="0"/>
44            </dataarea>
45        </part>
46    </software>
47
48    <software name="extrauti">
49        <description>Extra Utilities</description>
50        <year>?????</year>
51        <publisher>&lt;unofficial&gt;</publisher>
52        <part name="flop1" interface="floppy_5_25">
53            <feature name="part_id" value="Extra Utilities" />
54            <dataarea name="flop" size="348848">
55                <rom name="extrautil.d88" size="348848" crc="baaeb509" sha1="bc339742cc6d087c11b8aae010311473edfdf734" offset="0"/>
56            </dataarea>
57        </part>
58    </software>
59
60    <software name="modems">
61        <description>Modem Sample &amp; M80 &amp; L80</description>
62        <year>?????</year>
63        <publisher>&lt;unofficial&gt;</publisher>
64        <part name="flop1" interface="floppy_5_25">
65            <feature name="part_id" value="Modem Sample &amp; M80 &amp; L80" />
66            <dataarea name="flop" size="348848">
67                <rom name="ms_m80_l80.d88" size="348848" crc="7af5815a" sha1="4e7bf6a4f7d5ac66ab432ec0e2760e265a53f72d" offset="0"/>
68            </dataarea>
69        </part>
70    </software>
71
72    <software name="promprog">
73        <description>PROM Progs</description>
74        <year>?????</year>
75        <publisher>&lt;unofficial&gt;</publisher>
76        <part name="flop1" interface="floppy_5_25">
77            <feature name="part_id" value="PROM Progs" />
78            <dataarea name="flop" size="348848">
79                <rom name="promprogs.d88" size="348848" crc="1cc048fc" sha1="6cbd0f9c1c36bca213accf9da9b0a69896c9a88a" offset="0"/>
80            </dataarea>
81        </part>
82    </software>
83
84    <software name="px4util1">
85        <description>PX-4 Utils</description>
86        <year>?????</year>
87        <publisher>&lt;unofficial&gt;</publisher>
88        <part name="flop1" interface="floppy_5_25">
89            <feature name="part_id" value="PX-4 Utils" />
90            <dataarea name="flop" size="348848">
91                <rom name="px4util.d88" size="348848" crc="f39d899d" sha1="c2e8051116d87e090025c41a260a85fb46b86b10" offset="0"/>
92            </dataarea>
93        </part>
94    </software>
95
96    <software name="px4util2">
97        <description>PX-4 Utility Disk</description>
98        <year>?????</year>
99        <publisher>&lt;unofficial&gt;</publisher>
100        <part name="flop1" interface="floppy_5_25">
101            <feature name="part_id" value="PX-4 Utility Disk" />
102            <dataarea name="flop" size="348848">
103                <rom name="px4utilitydisk.d88" size="348848" crc="df17aae8" sha1="4be08583c079f092db95bdad2abf693639e439b9" offset="0"/>
104            </dataarea>
105        </part>
106    </software>
107
108    <software name="px4util3">
109        <description>PX-4 Utility Disk 2</description>
110        <year>?????</year>
111        <publisher>&lt;unofficial&gt;</publisher>
112        <part name="flop1" interface="floppy_5_25">
113            <feature name="part_id" value="PX-4 Utility Disk 2" />
114            <dataarea name="flop" size="348848">
115                <rom name="px4utils.d88" size="348848" crc="93320c5f" sha1="a256f500bafab4e6eba7031e05267dc6cb39a64e" offset="0"/>
116            </dataarea>
117        </part>
118    </software>
119
120    <software name="px4wand">
121        <description>PX-4 Wanderer</description>
122        <year>?????</year>
123        <publisher>&lt;unofficial&gt;</publisher>
124        <part name="flop1" interface="floppy_5_25">
125            <feature name="part_id" value="PX-4 Wanderer" />
126            <dataarea name="flop" size="348848">
127                <rom name="px4wand.d88" size="348848" crc="1ab716cc" sha1="4f6a83476b76f1dc42f38b3c6cd0835181b523e3" offset="0"/>
128            </dataarea>
129        </part>
130    </software>
131
132    <software name="px8epstf">
133        <description>PX-8 EPS (TF-20 bootdisk)</description>
134        <year>?????</year>
135        <publisher>&lt;unofficial&gt;</publisher>
136        <part name="flop1" interface="floppy_5_25">
137            <feature name="part_id" value="PX-8 EPS (TF-20 bootdisk)" />
138            <dataarea name="flop" size="348848">
139                <rom name="px8_eps-tf20.d88" size="348848" crc="ed627d6e" sha1="eee223a63235ef6fa311527f0c961d003ca669f0" offset="0"/>
140            </dataarea>
141        </part>
142    </software>
143
144    <software name="px8games">
145        <description>PX-8 Games</description>
146        <year>?????</year>
147        <publisher>&lt;unofficial&gt;</publisher>
148        <part name="flop1" interface="floppy_5_25">
149            <feature name="part_id" value="PX-8 Games" />
150            <dataarea name="flop" size="348848">
151                <rom name="px8games.d88" size="348848" crc="c724e5df" sha1="a0bfc9af1f4fcd6949f9b667ea49879284d94ba2" offset="0"/>
152            </dataarea>
153        </part>
154    </software>
155
156    <software name="scratch">
157        <description>Scratch</description>
158        <year>?????</year>
159        <publisher>&lt;unofficial&gt;</publisher>
160        <part name="flop1" interface="floppy_5_25">
161            <feature name="part_id" value="Scratch" />
162            <dataarea name="flop" size="348848">
163                <rom name="scratch.d88" size="348848" crc="163fc594" sha1="ae2451d9226ff1a69db5f78f1101f60735ae2789" offset="0"/>
164            </dataarea>
165        </part>
166    </software>
167
168</softwarelist>
trunk/hash/fmtowns_cd.xml
r241752r241753
11<?xml version="1.0"?>
22<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3<softwarelist name="fmtowns" description="FM Towns CD-ROMs">
3<softwarelist name="fmtowns_cd" description="FM Towns CD-ROMs">
44<!-- skeleton test list -->
55
66   <!-- works well on fmtmarty, keyboard seems to interfere with movements on fmtowns -->
trunk/hash/g7400.xml
r241752r241753
3333
3434-->
3535
36<softwarelist name="vg7400" description="Philips Videopac Plus G7400 cartridges">
36<softwarelist name="g7400" description="Philips Videopac Plus G7400 cartridges">
3737
3838<!-- Phillips Videopac+ G7400 carts -->
3939
trunk/hash/galaxy.xml
r241752r241753
55
66   <software name="asteroid">
77      <description>Asteroidi</description>
8      <year>19??</year>
9      <publisher>&lt;unknown&gt;</publisher>
8      <year>1984</year>
9      <publisher>GAC Software</publisher>
1010      <part name="cass1" interface="galaxy_cass">
1111         <dataarea name="cass" size="1298">
12            <rom name="asteroidi.gtp" size="1298" crc="70aa80a3" sha1="1bc96cdf7602bbb24b02f5f9cb9aac709f3a7080" offset="0x0000" />
12            <rom name="asteroidi.gtp" size="1298" crc="70aa80a3" sha1="1bc96cdf7602bbb24b02f5f9cb9aac709f3a7080" offset="0" />
1313         </dataarea>
1414      </part>
1515   </software>
r241752r241753
2020      <publisher>&lt;unknown&gt;</publisher>
2121      <part name="cass1" interface="galaxy_cass">
2222         <dataarea name="cass" size="1017">
23            <rom name="biljar.gtp" size="1017" crc="469ba6a2" sha1="b93a3a968e3fe004958f61d6fcf63268be01517d" offset="0x0000" />
23            <rom name="biljar.gtp" size="1017" crc="469ba6a2" sha1="b93a3a968e3fe004958f61d6fcf63268be01517d" offset="0" />
2424         </dataarea>
2525      </part>
2626   </software>
2727
28   <software name="biorita1">
29      <description>Bioritam1</description>
30      <year>19??</year>
31      <publisher>&lt;unknown&gt;</publisher>
28   <software name="bioritam">
29      <description>Bioritam</description>
30      <year>1984</year>
31      <publisher>Galaxy Computer</publisher>
3232      <part name="cass1" interface="galaxy_cass">
3333         <dataarea name="cass" size="2996">
34            <rom name="bioritam1.gtp" size="2996" crc="86d9274a" sha1="b71ef12740d0cb10d8ae0b5eb30d6f3fd1f7fb86" offset="0x0000" />
34            <rom name="bioritam1.gtp" size="2996" crc="86d9274a" sha1="b71ef12740d0cb10d8ae0b5eb30d6f3fd1f7fb86" offset="0" />
3535         </dataarea>
3636      </part>
3737   </software>
3838
3939   <software name="biorita2">
40      <description>Bioritam2</description>
40      <description>Bioritam (Alt)</description>
4141      <year>19??</year>
4242      <publisher>&lt;unknown&gt;</publisher>
4343      <part name="cass1" interface="galaxy_cass">
4444         <dataarea name="cass" size="1366">
45            <rom name="bioritam2.gtp" size="1366" crc="997e491e" sha1="b61d390bc33e2568526af5a2116ec87d7ac7e505" offset="0x0000" />
45            <rom name="bioritam2.gtp" size="1366" crc="997e491e" sha1="b61d390bc33e2568526af5a2116ec87d7ac7e505" offset="0" />
4646         </dataarea>
4747      </part>
4848   </software>
4949
50   <software name="bladall">
51      <description>BladeAlley</description>
52      <year>19??</year>
53      <publisher>&lt;unknown&gt;</publisher>
50   <software name="bladeall">
51      <description>Blade Alley</description>
52      <year>1985</year>
53      <publisher>Jasmin Halilovic</publisher>
5454      <part name="cass1" interface="galaxy_cass">
5555         <dataarea name="cass" size="1879">
56            <rom name="bladealley.gtp" size="1879" crc="723da222" sha1="b8d7978a67595ef1107919771cbe7b9919ad2fe5" offset="0x0000" />
56            <rom name="bladealley.gtp" size="1879" crc="723da222" sha1="b8d7978a67595ef1107919771cbe7b9919ad2fe5" offset="0" />
5757         </dataarea>
5858      </part>
5959   </software>
r241752r241753
6161   <software name="bombard">
6262      <description>Bombarder</description>
6363      <year>19??</year>
64      <publisher>&lt;unknown&gt;</publisher>
64      <publisher>Nenad Balint</publisher>
6565      <part name="cass1" interface="galaxy_cass">
6666         <dataarea name="cass" size="1880">
67            <rom name="bombarder.gtp" size="1880" crc="7d584b08" sha1="a0629636f015381f8d4132af8d95577fdef12ed7" offset="0x0000" />
67            <rom name="bombarder.gtp" size="1880" crc="7d584b08" sha1="a0629636f015381f8d4132af8d95577fdef12ed7" offset="0" />
6868         </dataarea>
6969      </part>
7070   </software>
7171
7272   <software name="charfire">
73      <description>ChariotsOfFire</description>
73      <description>Chariots of Fire</description>
7474      <year>19??</year>
75      <publisher>&lt;unknown&gt;</publisher>
75      <publisher>Dragan Yujkov</publisher>
7676      <part name="cass1" interface="galaxy_cass">
7777         <dataarea name="cass" size="290">
78            <rom name="chariotsoffire.gtp" size="290" crc="33e9fad9" sha1="7e80787f2314c6dad333856b2a1683ddcffafdf4" offset="0x0000" />
78            <rom name="chariotsoffire.gtp" size="290" crc="33e9fad9" sha1="7e80787f2314c6dad333856b2a1683ddcffafdf4" offset="0" />
7979         </dataarea>
8080      </part>
8181   </software>
r241752r241753
8686      <publisher>&lt;unknown&gt;</publisher>
8787      <part name="cass1" interface="galaxy_cass">
8888         <dataarea name="cass" size="411">
89            <rom name="comets.gtp" size="411" crc="8ccc82a6" sha1="e283c077c660182ffba71f1f5300f893eaf13915" offset="0x0000" />
89            <rom name="comets.gtp" size="411" crc="8ccc82a6" sha1="e283c077c660182ffba71f1f5300f893eaf13915" offset="0" />
9090         </dataarea>
9191      </part>
9292   </software>
9393
9494   <software name="dijamant">
95      <description>DijamantskiRudnik</description>
96      <year>19??</year>
97      <publisher>&lt;unknown&gt;</publisher>
95      <description>Dijamantski Rudnik</description>
96      <year>1985</year>
97      <publisher>Nenad Balint</publisher>
9898      <part name="cass1" interface="galaxy_cass">
9999         <dataarea name="cass" size="2754">
100            <rom name="dijamantskirudnik.gtp" size="2754" crc="d7c5a9ba" sha1="f1669e88644fe4fca1387b00f617aff80162028e" offset="0x0000" />
100            <rom name="dijamantskirudnik.gtp" size="2754" crc="d7c5a9ba" sha1="f1669e88644fe4fca1387b00f617aff80162028e" offset="0" />
101101         </dataarea>
102102      </part>
103103   </software>
104104
105105   <software name="dijamanta" cloneof="dijamant">
106      <description>DijamantskiRudnik_ALT</description>
107      <year>19??</year>
108      <publisher>&lt;unknown&gt;</publisher>
106      <description>Dijamantski Rudnik (Alt Format)</description>
107      <year>1985</year>
108      <publisher>Nenad Balint</publisher>
109109      <part name="cass1" interface="galaxy_cass">
110110         <dataarea name="cass" size="8244">
111            <rom name="dr.gal" size="8244" crc="c73c2187" sha1="9e2fe7856657df1db846f54f008e7e8a823aa8ac" offset="0x0000" />
111            <rom name="dr.gal" size="8244" crc="c73c2187" sha1="9e2fe7856657df1db846f54f008e7e8a823aa8ac" offset="0" />
112112         </dataarea>
113113      </part>
114114   </software>
r241752r241753
119119      <publisher>&lt;unknown&gt;</publisher>
120120      <part name="cass1" interface="galaxy_cass">
121121         <dataarea name="cass" size="2913">
122            <rom name="egemond.gtp" size="2913" crc="7c85c513" sha1="ca001178ba823a3a7258147473723321f424c535" offset="0x0000" />
122            <rom name="egemond.gtp" size="2913" crc="7c85c513" sha1="ca001178ba823a3a7258147473723321f424c535" offset="0" />
123123         </dataarea>
124124      </part>
125125   </software>
126126
127127   <software name="evolucia">
128128      <description>Evolucija</description>
129      <year>19??</year>
130      <publisher>&lt;unknown&gt;</publisher>
129      <year>1984</year>
130      <publisher>Dejan Ristanovic</publisher>
131131      <part name="cass1" interface="galaxy_cass">
132132         <dataarea name="cass" size="1063">
133            <rom name="evolucija.gtp" size="1063" crc="c3a8c0f1" sha1="b195af2a260db880166aae754054d1a89a34f73f" offset="0x0000" />
133            <rom name="evolucija.gtp" size="1063" crc="c3a8c0f1" sha1="b195af2a260db880166aae754054d1a89a34f73f" offset="0" />
134134         </dataarea>
135135      </part>
136136   </software>
137137
138138   <software name="f1">
139      <description>Formula1</description>
139      <description>Formula 1</description>
140140      <year>19??</year>
141141      <publisher>&lt;unknown&gt;</publisher>
142142      <part name="cass1" interface="galaxy_cass">
143143         <dataarea name="cass" size="1194">
144            <rom name="formula1.gtp" size="1194" crc="3efb14c1" sha1="8a48a4bf98c59ae2ed373f6c2db30dfb1cbf14be" offset="0x0000" />
144            <rom name="formula1.gtp" size="1194" crc="3efb14c1" sha1="8a48a4bf98c59ae2ed373f6c2db30dfb1cbf14be" offset="0" />
145145         </dataarea>
146146      </part>
147147   </software>
148148
149149   <software name="four">
150150      <description>Four</description>
151      <year>19??</year>
152      <publisher>&lt;unknown&gt;</publisher>
151      <year>1986</year>
152      <publisher>Dragan Yujkov</publisher>
153153      <part name="cass1" interface="galaxy_cass">
154154         <dataarea name="cass" size="2631">
155            <rom name="four.gtp" size="2631" crc="9ee92e36" sha1="9c7b83ba138e77bc258d3e495146e8971779b4d2" offset="0x0000" />
155            <rom name="four.gtp" size="2631" crc="9ee92e36" sha1="9c7b83ba138e77bc258d3e495146e8971779b4d2" offset="0" />
156156         </dataarea>
157157      </part>
158158   </software>
159159
160160   <software name="galakrat">
161      <description>GalaktickiRat</description>
162      <year>19??</year>
163      <publisher>&lt;unknown&gt;</publisher>
161      <description>Galakticki Rat</description>
162      <year>1985</year>
163      <publisher>Antonic Voja</publisher>
164164      <part name="cass1" interface="galaxy_cass">
165165         <dataarea name="cass" size="2238">
166            <rom name="galaktickirat.gtp" size="2238" crc="e7a5260e" sha1="510c411b524b80b621655f4038581811818dc7d2" offset="0x0000" />
166            <rom name="galaktickirat.gtp" size="2238" crc="e7a5260e" sha1="510c411b524b80b621655f4038581811818dc7d2" offset="0" />
167167         </dataarea>
168168      </part>
169169   </software>
170170
171171   <software name="hhorace">
172      <description>HungryHorace</description>
172      <description>Hungry Horace</description>
173173      <year>19??</year>
174174      <publisher>&lt;unknown&gt;</publisher>
175175      <part name="cass1" interface="galaxy_cass">
176176         <dataarea name="cass" size="797">
177            <rom name="hungryhorace.gtp" size="797" crc="f3c15d57" sha1="e1217926da7560e9a6a6582df3bbe22ca59e2ed1" offset="0x0000" />
177            <rom name="hungryhorace.gtp" size="797" crc="f3c15d57" sha1="e1217926da7560e9a6a6582df3bbe22ca59e2ed1" offset="0" />
178178         </dataarea>
179179      </part>
180180   </software>
181181
182182   <software name="igradisk">
183      <description>IgraDiskova</description>
184      <year>19??</year>
185      <publisher>&lt;unknown&gt;</publisher>
183      <description>Igra Diskova</description>
184      <year>1985</year>
185      <publisher>Yojislav Mihailovic</publisher>
186186      <part name="cass1" interface="galaxy_cass">
187187         <dataarea name="cass" size="1768">
188            <rom name="igradiskova.gtp" size="1768" crc="7e37f44d" sha1="c60e55ff82287c7f0d610c1f403de7f75f206054" offset="0x0000" />
188            <rom name="igradiskova.gtp" size="1768" crc="7e37f44d" sha1="c60e55ff82287c7f0d610c1f403de7f75f206054" offset="0" />
189189         </dataarea>
190190      </part>
191191   </software>
192192
193193   <software name="spiridon">
194      <description>InspektorSpiridon</description>
194      <description>Inspektor Spiridon</description>
195195      <year>19??</year>
196196      <publisher>&lt;unknown&gt;</publisher>
197197      <part name="cass1" interface="galaxy_cass">
198198         <dataarea name="cass" size="4112">
199            <rom name="inspektorspiridon.gtp" size="4112" crc="15a1ef41" sha1="0f173c16aec2abde535fdb88438a8408c1c114ec" offset="0x0000" />
199            <rom name="inspektorspiridon.gtp" size="4112" crc="15a1ef41" sha1="0f173c16aec2abde535fdb88438a8408c1c114ec" offset="0" />
200200         </dataarea>
201201      </part>
202202      <part name="cass2" interface="galaxy_cass">
203203         <dataarea name="cass" size="2255">
204            <rom name="inspektorspiridonupustvo.gtp" size="2255" crc="01056c67" sha1="d658f2a5b749f20bdb0bd31b33e2a7a95cf3d378" offset="0x0000" />
204            <rom name="inspektorspiridonupustvo.gtp" size="2255" crc="01056c67" sha1="d658f2a5b749f20bdb0bd31b33e2a7a95cf3d378" offset="0" />
205205         </dataarea>
206206      </part>
207207      <part name="cass3" interface="galaxy_cass">
208208         <dataarea name="cass" size="549">
209            <rom name="inspektorspiridonvaranje.gtp" size="549" crc="3c780376" sha1="5bd7015082a350dda324ca8d497e5cbd0d73a289" offset="0x0000" />
209            <rom name="inspektorspiridonvaranje.gtp" size="549" crc="3c780376" sha1="5bd7015082a350dda324ca8d497e5cbd0d73a289" offset="0" />
210210         </dataarea>
211211      </part>
212212   </software>
213213
214214   <software name="jumpjack">
215      <description>JumpingJack</description>
216      <year>19??</year>
217      <publisher>&lt;unknown&gt;</publisher>
215      <description>Jumping Jack</description>
216      <year>1985</year>
217      <publisher>Antonic Voja</publisher>
218218      <part name="cass1" interface="galaxy_cass">
219219         <dataarea name="cass" size="1891">
220            <rom name="jumpingjack.gtp" size="1891" crc="4b158c1d" sha1="fb6019ac9fbefd87ffcba592178b6568607680b0" offset="0x0000" />
220            <rom name="jumpingjack.gtp" size="1891" crc="4b158c1d" sha1="fb6019ac9fbefd87ffcba592178b6568607680b0" offset="0" />
221221         </dataarea>
222222      </part>
223223   </software>
224224
225225   <software name="lightcyc">
226      <description>LightCycles</description>
227      <year>19??</year>
228      <publisher>&lt;unknown&gt;</publisher>
226      <description>Light Cycles</description>
227      <year>1985</year>
228      <publisher>Bojan Stanojevic</publisher>
229229      <part name="cass1" interface="galaxy_cass">
230230         <dataarea name="cass" size="1245">
231            <rom name="lightcycles.gtp" size="1245" crc="838cf2e2" sha1="6da589007fbf3688f63da88ced241907e8bee774" offset="0x0000" />
231            <rom name="lightcycles.gtp" size="1245" crc="838cf2e2" sha1="6da589007fbf3688f63da88ced241907e8bee774" offset="0" />
232232         </dataarea>
233233      </part>
234234   </software>
235235
236236   <software name="lightcy2">
237      <description>LightCycles2</description>
237      <description>Light Cycles (Alt)</description>
238238      <year>19??</year>
239239      <publisher>&lt;unknown&gt;</publisher>
240240      <part name="cass1" interface="galaxy_cass">
241241         <dataarea name="cass" size="1550">
242            <rom name="lightcycles2.gtp" size="1550" crc="f271a8a9" sha1="00dc59dfa6dd6a33edbbedc18f6300e445f170a0" offset="0x0000" />
242            <rom name="lightcycles2.gtp" size="1550" crc="f271a8a9" sha1="00dc59dfa6dd6a33edbbedc18f6300e445f170a0" offset="0" />
243243         </dataarea>
244244      </part>
245245   </software>
246246
247247   <software name="lightshw">
248      <description>LightShow</description>
249      <year>19??</year>
250      <publisher>&lt;unknown&gt;</publisher>
248      <description>Light Show</description>
249      <year>1987</year>
250      <publisher>Dragan Vujkov</publisher>
251251      <part name="cass1" interface="galaxy_cass">
252252         <dataarea name="cass" size="3001">
253            <rom name="lightshow.gtp" size="3001" crc="27ae9809" sha1="d8a95e689dd8c84b71cf375c5f57010e8a9ae4b4" offset="0x0000" />
253            <rom name="lightshow.gtp" size="3001" crc="27ae9809" sha1="d8a95e689dd8c84b71cf375c5f57010e8a9ae4b4" offset="0" />
254254         </dataarea>
255255      </part>
256256   </software>
257257
258258   <software name="mminer">
259      <description>ManicMiner</description>
259      <description>Manic Miner</description>
260260      <year>19??</year>
261261      <publisher>&lt;unknown&gt;</publisher>
262262      <part name="cass1" interface="galaxy_cass">
263263         <dataarea name="cass" size="4378">
264            <rom name="manicminer.gtp" size="4378" crc="2ab18f85" sha1="ad12006ccc3bc5c8e27c60eaeac83164ab1b86eb" offset="0x0000" />
264            <rom name="manicminer.gtp" size="4378" crc="2ab18f85" sha1="ad12006ccc3bc5c8e27c60eaeac83164ab1b86eb" offset="0" />
265265         </dataarea>
266266      </part>
267267   </software>
268268
269269   <software name="mastrmnd">
270270      <description>Mastermajnd</description>
271      <year>19??</year>
272      <publisher>&lt;unknown&gt;</publisher>
271      <year>1984</year>
272      <publisher>Dejan Ristanovic</publisher>
273273      <part name="cass1" interface="galaxy_cass">
274274         <dataarea name="cass" size="2077">
275            <rom name="mastermajnd.gtp" size="2077" crc="6daf8f56" sha1="fe6f3f6fbbc75cded96d3217c7f4475f81bb3065" offset="0x0000" />
275            <rom name="mastermajnd.gtp" size="2077" crc="6daf8f56" sha1="fe6f3f6fbbc75cded96d3217c7f4475f81bb3065" offset="0" />
276276         </dataarea>
277277      </part>
278278   </software>
279279
280280   <software name="mastrmn2">
281      <description>Mastermind2</description>
281      <description>Mastermind</description>
282282      <year>19??</year>
283283      <publisher>&lt;unknown&gt;</publisher>
284284      <part name="cass1" interface="galaxy_cass">
285285         <dataarea name="cass" size="1035">
286            <rom name="mastermind2.gtp" size="1035" crc="f27a7818" sha1="b8b93ce87792bd48e59e11e583838e2a8eea937d" offset="0x0000" />
286            <rom name="mastermind2.gtp" size="1035" crc="f27a7818" sha1="b8b93ce87792bd48e59e11e583838e2a8eea937d" offset="0" />
287287         </dataarea>
288288      </part>
289289   </software>
r241752r241753
294294      <publisher>&lt;unknown&gt;</publisher>
295295      <part name="cass1" interface="galaxy_cass">
296296         <dataarea name="cass" size="2530">
297            <rom name="maze.gtp" size="2530" crc="9a2eb6e9" sha1="89fc487ef0f8e505525e98396ecc5a16a70379d5" offset="0x0000" />
297            <rom name="maze.gtp" size="2530" crc="9a2eb6e9" sha1="89fc487ef0f8e505525e98396ecc5a16a70379d5" offset="0" />
298298         </dataarea>
299299      </part>
300300   </software>
r241752r241753
305305      <publisher>&lt;unknown&gt;</publisher>
306306      <part name="cass1" interface="galaxy_cass">
307307         <dataarea name="cass" size="2357">
308            <rom name="memorija.gtp" size="2357" crc="c5db1192" sha1="8d1c475f1b18f5b9e05583bfdafda1c2e45378c3" offset="0x0000" />
308            <rom name="memorija.gtp" size="2357" crc="c5db1192" sha1="8d1c475f1b18f5b9e05583bfdafda1c2e45378c3" offset="0" />
309309         </dataarea>
310310      </part>
311311   </software>
r241752r241753
313313   <software name="monitor">
314314      <description>Monitor</description>
315315      <year>19??</year>
316      <publisher>&lt;unknown&gt;</publisher>
316      <publisher>Antonic Voja</publisher>
317317      <part name="cass1" interface="galaxy_cass">
318318         <dataarea name="cass" size="2073">
319            <rom name="monitor.gtp" size="2073" crc="f22eceb3" sha1="c9830a9d419681b9f345b44b091c0d82d4239a08" offset="0x0000" />
319            <rom name="monitor.gtp" size="2073" crc="f22eceb3" sha1="c9830a9d419681b9f345b44b091c0d82d4239a08" offset="0" />
320320         </dataarea>
321321      </part>
322322   </software>
323323
324324   <software name="nightpil">
325      <description>NightPilot</description>
326      <year>19??</year>
327      <publisher>&lt;unknown&gt;</publisher>
325      <description>Night Pilot</description>
326      <year>1985</year>
327      <publisher>Dragutin Vukotic</publisher>
328328      <part name="cass1" interface="galaxy_cass">
329329         <dataarea name="cass" size="4854">
330            <rom name="nightpilot.gtp" size="4854" crc="97f02860" sha1="44c4cec4abb012e81dfdc4255f4c42b82e9ff167" offset="0x0000" />
330            <rom name="nightpilot.gtp" size="4854" crc="97f02860" sha1="44c4cec4abb012e81dfdc4255f4c42b82e9ff167" offset="0" />
331331         </dataarea>
332332      </part>
333333   </software>
r241752r241753
335335   <software name="oscil">
336336      <description>Oscilacije</description>
337337      <year>19??</year>
338      <publisher>&lt;unknown&gt;</publisher>
338      <publisher>Dragan Vujkov</publisher>
339339      <part name="cass1" interface="galaxy_cass">
340340         <dataarea name="cass" size="504">
341            <rom name="oscilacije.gtp" size="504" crc="83392fb3" sha1="bce729ee54a326ee7db9c9dd7dd33145b0cc64db" offset="0x0000" />
341            <rom name="oscilacije.gtp" size="504" crc="83392fb3" sha1="bce729ee54a326ee7db9c9dd7dd33145b0cc64db" offset="0" />
342342         </dataarea>
343343      </part>
344344   </software>
345345
346346   <software name="pacmanp">
347      <description>PacManPlus</description>
347      <description>Pac Man (Plus)</description>
348348      <year>19??</year>
349      <publisher>&lt;unknown&gt;</publisher>
349      <publisher>Josip Perusanec</publisher>
350350      <part name="cass1" interface="galaxy_cass">
351351         <dataarea name="cass" size="12572">
352            <rom name="pacmanplus.gtp" size="12572" crc="cbb8af07" sha1="e3f048454c4a9d62835f80256fdfebbfaef5561b" offset="0x0000" />
352            <rom name="pacmanplus.gtp" size="12572" crc="cbb8af07" sha1="e3f048454c4a9d62835f80256fdfebbfaef5561b" offset="0" />
353353         </dataarea>
354354      </part>
355355   </software>
356356
357357   <software name="pamtilic">
358358      <description>Pamtilice</description>
359      <year>19??</year>
360      <publisher>&lt;unknown&gt;</publisher>
359      <year>1985</year>
360      <publisher>Peca Milosavljevic</publisher>
361361      <part name="cass1" interface="galaxy_cass">
362362         <dataarea name="cass" size="3076">
363            <rom name="pamtilice.gtp" size="3076" crc="1ae4d73f" sha1="60332bc1ac30abe9f737a8524fcb581003fd7077" offset="0x0000" />
363            <rom name="pamtilice.gtp" size="3076" crc="1ae4d73f" sha1="60332bc1ac30abe9f737a8524fcb581003fd7077" offset="0" />
364364         </dataarea>
365365      </part>
366366   </software>
367367
368368   <software name="poker">
369369      <description>Poker</description>
370      <year>19??</year>
371      <publisher>&lt;unknown&gt;</publisher>
370      <year>1985</year>
371      <publisher>Nenad Balint</publisher>
372372      <part name="cass1" interface="galaxy_cass">
373373         <dataarea name="cass" size="4424">
374            <rom name="poker.gtp" size="4424" crc="ff4d5af3" sha1="59258c130121ac718ca8f256f293ef2e4e9742df" offset="0x0000" />
374            <rom name="poker.gtp" size="4424" crc="ff4d5af3" sha1="59258c130121ac718ca8f256f293ef2e4e9742df" offset="0" />
375375         </dataarea>
376376      </part>
377377   </software>
378378
379379   <software name="pozivniz">
380      <description>PozivniZnak</description>
380      <description>Pozivni Znak</description>
381381      <year>19??</year>
382      <publisher>&lt;unknown&gt;</publisher>
382      <publisher>Dragan Vujkov</publisher>
383383      <part name="cass1" interface="galaxy_cass">
384384         <dataarea name="cass" size="414">
385            <rom name="pozivniznak.gtp" size="414" crc="2d7273a3" sha1="694c770409781f96b422a5b55f9222700fa08531" offset="0x0000" />
385            <rom name="pozivniznak.gtp" size="414" crc="2d7273a3" sha1="694c770409781f96b422a5b55f9222700fa08531" offset="0" />
386386         </dataarea>
387387      </part>
388388   </software>
389389
390390   <software name="raindrop">
391      <description>RainDrops</description>
391      <description>Rain Drops</description>
392392      <year>19??</year>
393393      <publisher>&lt;unknown&gt;</publisher>
394394      <part name="cass1" interface="galaxy_cass">
395395         <dataarea name="cass" size="573">
396            <rom name="raindrops.gtp" size="573" crc="02642e02" sha1="d9880a1cb0180c8203cc71fab09687a808244d9a" offset="0x0000" />
396            <rom name="raindrops.gtp" size="573" crc="02642e02" sha1="d9880a1cb0180c8203cc71fab09687a808244d9a" offset="0" />
397397         </dataarea>
398398      </part>
399399   </software>
r241752r241753
404404      <publisher>&lt;unknown&gt;</publisher>
405405      <part name="cass1" interface="galaxy_cass">
406406         <dataarea name="cass" size="1892">
407            <rom name="scater.gtp" size="1892" crc="bd4be810" sha1="59d027a4111b15fd30b9290e87a2edb438e1614f" offset="0x0000" />
407            <rom name="scater.gtp" size="1892" crc="bd4be810" sha1="59d027a4111b15fd30b9290e87a2edb438e1614f" offset="0" />
408408         </dataarea>
409409      </part>
410410   </software>
r241752r241753
412412   <software name="sintesaj">
413413      <description>Sintesajzer</description>
414414      <year>19??</year>
415      <publisher>&lt;unknown&gt;</publisher>
415      <publisher>Dragan Vujkov</publisher>
416416      <part name="cass1" interface="galaxy_cass">
417417         <dataarea name="cass" size="901">
418            <rom name="sintesajzer.gtp" size="901" crc="f747478d" sha1="51b9f20f154f5631fbee88c6df906c95f8929de6" offset="0x0000" />
418            <rom name="sintesajzer.gtp" size="901" crc="f747478d" sha1="51b9f20f154f5631fbee88c6df906c95f8929de6" offset="0" />
419419         </dataarea>
420420      </part>
421421   </software>
422422
423423   <software name="slalom2">
424      <description>Slalom2</description>
425      <year>19??</year>
426      <publisher>&lt;unknown&gt;</publisher>
424      <description>Slalom II</description>
425      <year>1985</year>
426      <publisher>Zeljko Gerovac</publisher>
427427      <part name="cass1" interface="galaxy_cass">
428428         <dataarea name="cass" size="1328">
429            <rom name="slalom2.gtp" size="1328" crc="722f26ed" sha1="d9b87941fd19606d53b72cb319c4d3dc7e6880d6" offset="0x0000" />
429            <rom name="slalom2.gtp" size="1328" crc="722f26ed" sha1="d9b87941fd19606d53b72cb319c4d3dc7e6880d6" offset="0" />
430430         </dataarea>
431431      </part>
432432   </software>
433433
434434   <software name="snake">
435      <description>Snake</description>
436      <year>19??</year>
437      <publisher>&lt;unknown&gt;</publisher>
435      <description>Snake (Nenad Balint)</description>
436      <year>1984</year>
437      <publisher>Nenad Balint</publisher>
438438      <part name="cass1" interface="galaxy_cass">
439439         <dataarea name="cass" size="3173">
440            <rom name="snake.gtp" size="3173" crc="ae7e097b" sha1="8b90a3ba49711ea7bd6fc7058a71c0699fc49cb1" offset="0x0000" />
440            <rom name="snake.gtp" size="3173" crc="ae7e097b" sha1="8b90a3ba49711ea7bd6fc7058a71c0699fc49cb1" offset="0" />
441441         </dataarea>
442442      </part>
443443   </software>
444444
445   <software name="snake2">
446      <description>Snake2</description>
447      <year>19??</year>
448      <publisher>&lt;unknown&gt;</publisher>
445   <software name="snakedv">
446      <description>Snake (Dragan Vujkov)</description>
447      <year>1987</year>
448      <publisher>Dragan Vujkov</publisher>
449449      <part name="cass1" interface="galaxy_cass">
450450         <dataarea name="cass" size="1686">
451            <rom name="snake2.gtp" size="1686" crc="18127599" sha1="c37d5cf13704b374b3c76d4ac7b80787dfb88dc8" offset="0x0000" />
451            <rom name="snake2.gtp" size="1686" crc="18127599" sha1="c37d5cf13704b374b3c76d4ac7b80787dfb88dc8" offset="0" />
452452         </dataarea>
453453      </part>
454454   </software>
455455
456456   <software name="squash">
457457      <description>Squash</description>
458      <year>19??</year>
458      <year>1986</year>
459459      <publisher>&lt;unknown&gt;</publisher>
460460      <part name="cass1" interface="galaxy_cass">
461461         <dataarea name="cass" size="1504">
462            <rom name="squash.gtp" size="1504" crc="ad4657df" sha1="b5a781c1a97086a3ae2da08f1ed975253a4a035b" offset="0x0000" />
462            <rom name="squash.gtp" size="1504" crc="ad4657df" sha1="b5a781c1a97086a3ae2da08f1ed975253a4a035b" offset="0" />
463463         </dataarea>
464464      </part>
465465   </software>
466466
467467   <software name="squasha" cloneof="squash">
468      <description>Squash_ALT</description>
468      <description>Squash (Alt Format)</description>
469469      <year>19??</year>
470470      <publisher>&lt;unknown&gt;</publisher>
471471      <part name="cass1" interface="galaxy_cass">
472472         <dataarea name="cass" size="8244">
473            <rom name="squash.gal" size="8244" crc="a54b6d45" sha1="140530381ea8964bd32cecd13659f7131fcdb709" offset="0x0000" />
473            <rom name="squash.gal" size="8244" crc="a54b6d45" sha1="140530381ea8964bd32cecd13659f7131fcdb709" offset="0" />
474474         </dataarea>
475475      </part>
476476   </software>
477477
478478   <software name="scruiser">
479      <description>SuperCruiser</description>
480      <year>19??</year>
481      <publisher>&lt;unknown&gt;</publisher>
479      <description>Super Cruiser</description>
480      <year>1985</year>
481      <publisher>Jasmin Halilovic</publisher>
482482      <part name="cass1" interface="galaxy_cass">
483483         <dataarea name="cass" size="2569">
484            <rom name="supercruiser.gtp" size="2569" crc="b9faec35" sha1="a68d01975952c117e9620cfcdeb9ca7350964c54" offset="0x0000" />
484            <rom name="supercruiser.gtp" size="2569" crc="b9faec35" sha1="a68d01975952c117e9620cfcdeb9ca7350964c54" offset="0" />
485485         </dataarea>
486486      </part>
487487   </software>
488488
489489   <software name="scruisera" cloneof="scruiser">
490      <description>SuperCruiser_ALT</description>
491      <year>19??</year>
492      <publisher>&lt;unknown&gt;</publisher>
490      <description>Super Cruiser (Alt Format)</description>
491      <year>1985</year>
492      <publisher>Jasmin Halilovic</publisher>
493493      <part name="cass1" interface="galaxy_cass">
494494         <dataarea name="cass" size="8244">
495            <rom name="sc.gal" size="8244" crc="8ae78ffb" sha1="7e4217afd4d725dd14af55bf7d0796dd51cc868d" offset="0x0000" />
495            <rom name="sc.gal" size="8244" crc="8ae78ffb" sha1="7e4217afd4d725dd14af55bf7d0796dd51cc868d" offset="0" />
496496         </dataarea>
497497      </part>
498498   </software>
499499
500500   <software name="supersah">
501      <description>SuperSah</description>
502      <year>19??</year>
503      <publisher>&lt;unknown&gt;</publisher>
501      <description>Super-Sah</description>
502      <year>1984</year>
503      <publisher>Page Software</publisher>
504504      <part name="cass1" interface="galaxy_cass">
505505         <dataarea name="cass" size="5773">
506            <rom name="supersah.gtp" size="5773" crc="9d24e956" sha1="8bb4898a2e5a538ab6f896b0f0d9f796d9e366d5" offset="0x0000" />
506            <rom name="supersah.gtp" size="5773" crc="9d24e956" sha1="8bb4898a2e5a538ab6f896b0f0d9f796d9e366d5" offset="0" />
507507         </dataarea>
508508      </part>
509509   </software>
510510
511511   <software name="strgovac">
512      <description>SvemirskiTrgovac</description>
513      <year>19??</year>
514      <publisher>&lt;unknown&gt;</publisher>
512      <description>Svemirski Trgovac</description>
513      <year>198?</year>
514      <publisher>Ilija Vitanov</publisher>
515515      <part name="cass1" interface="galaxy_cass">
516516         <dataarea name="cass" size="2982">
517            <rom name="svemirskitrgovac.gtp" size="2982" crc="a01a1594" sha1="7cca6dc667a29de5f53b105287dc889869aad383" offset="0x0000" />
517            <rom name="svemirskitrgovac.gtp" size="2982" crc="a01a1594" sha1="7cca6dc667a29de5f53b105287dc889869aad383" offset="0" />
518518         </dataarea>
519519      </part>
520520   </software>
521521
522522   <software name="svetleci">
523      <description>SvetleciBicikliPlus</description>
524      <year>19??</year>
525      <publisher>&lt;unknown&gt;</publisher>
523      <description>Svetleci Bicikli (Plus)</description>
524      <year>1986</year>
525      <publisher>Nenad Balint</publisher>
526526      <part name="cass1" interface="galaxy_cass">
527527         <dataarea name="cass" size="2583">
528            <rom name="svetlecibicikliplus.gtp" size="2583" crc="2d4000fe" sha1="de2b47c73c3a324a223147e41c327a52c372875e" offset="0x0000" />
528            <rom name="svetlecibicikliplus.gtp" size="2583" crc="2d4000fe" sha1="de2b47c73c3a324a223147e41c327a52c372875e" offset="0" />
529529         </dataarea>
530530      </part>
531531   </software>
532532
533533   <software name="tenis">
534534      <description>Tenis</description>
535      <year>19??</year>
536      <publisher>&lt;unknown&gt;</publisher>
535      <year>1985</year>
536      <publisher>Nenad Balint</publisher>
537537      <part name="cass1" interface="galaxy_cass">
538538         <dataarea name="cass" size="2389">
539            <rom name="tenis.gtp" size="2389" crc="6f158ac7" sha1="3dd52ce8f6dbc1d5114c4a63ed5c40666e79c40f" offset="0x0000" />
539            <rom name="tenis.gtp" size="2389" crc="6f158ac7" sha1="3dd52ce8f6dbc1d5114c4a63ed5c40666e79c40f" offset="0" />
540540         </dataarea>
541541      </part>
542542   </software>
543543
544544   <software name="tenis3">
545      <description>Tenis3</description>
546      <year>19??</year>
547      <publisher>&lt;unknown&gt;</publisher>
545      <description>Tenis 3</description>
546      <year>1986</year>
547      <publisher>Dragan Yujkov</publisher>
548548      <part name="cass1" interface="galaxy_cass">
549549         <dataarea name="cass" size="1874">
550            <rom name="tenis3.gtp" size="1874" crc="bc263558" sha1="2bdfcc96e8e4844cc9edae7670710f72d7bf3e1f" offset="0x0000" />
550            <rom name="tenis3.gtp" size="1874" crc="bc263558" sha1="2bdfcc96e8e4844cc9edae7670710f72d7bf3e1f" offset="0" />
551551         </dataarea>
552552      </part>
553553   </software>
554554
555555   <software name="tetris">
556556      <description>Tetris</description>
557      <year>19??</year>
558      <publisher>&lt;unknown&gt;</publisher>
557      <year>1988</year>
558      <publisher>Dragoljub Obradovic</publisher>
559559      <part name="cass1" interface="galaxy_cass">
560560         <dataarea name="cass" size="2709">
561            <rom name="tetrisplus.gtp" size="2709" crc="5a6a819b" sha1="7a60930d6269b3ac9898ce0dc2bada8e5626f270" offset="0x0000" />
561            <rom name="tetrisplus.gtp" size="2709" crc="5a6a819b" sha1="7a60930d6269b3ac9898ce0dc2bada8e5626f270" offset="0" />
562562         </dataarea>
563563      </part>
564564   </software>
565565
566566   <software name="tetrisp">
567      <description>TetrisPlus</description>
568      <year>19??</year>
569      <publisher>&lt;unknown&gt;</publisher>
567      <description>Tetris (Plus)</description>
568      <year>1988</year>
569      <publisher>Dragoljub Obradovic</publisher>
570570      <part name="cass1" interface="galaxy_cass">
571571         <dataarea name="cass" size="2706">
572            <rom name="tetrisplusq.gtp" size="2706" crc="64015b12" sha1="1d062b4abd1bfdc977568378a61f2bbdf65e2602" offset="0x0000" />
572            <rom name="tetrisplusq.gtp" size="2706" crc="64015b12" sha1="1d062b4abd1bfdc977568378a61f2bbdf65e2602" offset="0" />
573573         </dataarea>
574574      </part>
575575   </software>
576576
577577   <software name="tetrisa" cloneof="tetris">
578      <description>Tetris_ALT</description>
578      <description>Tetris (Alt Format)</description>
579579      <year>19??</year>
580580      <publisher>&lt;unknown&gt;</publisher>
581581      <part name="cass1" interface="galaxy_cass">
582582         <dataarea name="cass" size="8244">
583            <rom name="tetris.gal" size="8244" crc="12bc9373" sha1="008d85b379861416c38e3300477a3772959344a1" offset="0x0000" />
583            <rom name="tetris.gal" size="8244" crc="12bc9373" sha1="008d85b379861416c38e3300477a3772959344a1" offset="0" />
584584         </dataarea>
585585      </part>
586586   </software>
587587
588588   <software name="wall">
589589      <description>Wall</description>
590      <year>19??</year>
591      <publisher>&lt;unknown&gt;</publisher>
590      <year>1986</year>
591      <publisher>Dragan Vujkov</publisher>
592592      <part name="cass1" interface="galaxy_cass">
593593         <dataarea name="cass" size="1328">
594            <rom name="wall.gtp" size="1328" crc="602db525" sha1="fe31a2455376427436e2638e3452633a2a0f2c9a" offset="0x0000" />
594            <rom name="wall.gtp" size="1328" crc="602db525" sha1="fe31a2455376427436e2638e3452633a2a0f2c9a" offset="0" />
595595         </dataarea>
596596      </part>
597597   </software>
r241752r241753
602602      <publisher>&lt;unknown&gt;</publisher>
603603      <part name="cass1" interface="galaxy_cass">
604604         <dataarea name="cass" size="2863">
605            <rom name="wonderer.gtp" size="2863" crc="0e7310b7" sha1="e7dd10af2970ada6ca4d7c3eaaa0b3c3b9b929e9" offset="0x0000" />
605            <rom name="wonderer.gtp" size="2863" crc="0e7310b7" sha1="e7dd10af2970ada6ca4d7c3eaaa0b3c3b9b929e9" offset="0" />
606606         </dataarea>
607607      </part>
608608   </software>
609609
610610   <software name="wonder2">
611      <description>Wonderer2</description>
611      <description>Wonderer 2</description>
612612      <year>19??</year>
613613      <publisher>&lt;unknown&gt;</publisher>
614614      <part name="cass1" interface="galaxy_cass">
615615         <dataarea name="cass" size="1866">
616            <rom name="wonderer2.gtp" size="1866" crc="cd4ae466" sha1="1e5f8e9be2be400ceed8d547d41f3cfe3d9eb072" offset="0x0000" />
616            <rom name="wonderer2.gtp" size="1866" crc="cd4ae466" sha1="1e5f8e9be2be400ceed8d547d41f3cfe3d9eb072" offset="0" />
617617         </dataarea>
618618      </part>
619619   </software>
620620
621621   <software name="zamak">
622622      <description>Zamak</description>
623      <year>19??</year>
624      <publisher>&lt;unknown&gt;</publisher>
623      <year>1984</year>
624      <publisher>Antonic Voja</publisher>
625625      <part name="cass1" interface="galaxy_cass">
626626         <dataarea name="cass" size="3015">
627            <rom name="zamak.gtp" size="3015" crc="7d0cc0c9" sha1="e10d2cf3be1a79febc062ade3f8d5c3713bd43ca" offset="0x0000" />
627            <rom name="zamak.gtp" size="3015" crc="7d0cc0c9" sha1="e10d2cf3be1a79febc062ade3f8d5c3713bd43ca" offset="0" />
628628         </dataarea>
629629      </part>
630630   </software>
631631
632632   <software name="zid">
633633      <description>Zid</description>
634      <year>19??</year>
635      <publisher>&lt;unknown&gt;</publisher>
634      <year>1984</year>
635      <publisher>GAC Software</publisher>
636636      <part name="cass1" interface="galaxy_cass">
637637         <dataarea name="cass" size="2142">
638            <rom name="zid.gtp" size="2142" crc="2302a824" sha1="19b34c1ad8ce33e638e297d68221fffc6c8e9e56" offset="0x0000" />
638            <rom name="zid.gtp" size="2142" crc="2302a824" sha1="19b34c1ad8ce33e638e297d68221fffc6c8e9e56" offset="0" />
639639         </dataarea>
640640      </part>
641641   </software>
642642
643643   <software name="ziul">
644644      <description>Ziul</description>
645      <year>19??</year>
646      <publisher>&lt;unknown&gt;</publisher>
645      <year>1984</year>
646      <publisher>Dejan Ristanovic</publisher>
647647      <part name="cass1" interface="galaxy_cass">
648648         <dataarea name="cass" size="6673">
649            <rom name="ziul.gtp" size="6673" crc="f8322dad" sha1="d2988be278dc7328257841789042976799cf39ef" offset="0x0000" />
649            <rom name="ziul.gtp" size="6673" crc="f8322dad" sha1="d2988be278dc7328257841789042976799cf39ef" offset="0" />
650650         </dataarea>
651651      </part>
652652   </software>
r241752r241753
657657      <publisher>&lt;unknown&gt;</publisher>
658658      <part name="cass1" interface="galaxy_cass">
659659         <dataarea name="cass" size="1584">
660            <rom name="zvezdice.gtp" size="1584" crc="d45e9a5b" sha1="63cf1089407873e2eb4a43703985e41f6b0623f7" offset="0x0000" />
660            <rom name="zvezdice.gtp" size="1584" crc="d45e9a5b" sha1="63cf1089407873e2eb4a43703985e41f6b0623f7" offset="0" />
661661         </dataarea>
662662      </part>
663663   </software>
664664
665665   <software name="zvjezdan">
666      <description>ZvjezdaneStaze</description>
667      <year>19??</year>
666      <description>Zvjezdane Staze</description>
667      <year>1985</year>
668668      <publisher>&lt;unknown&gt;</publisher>
669669      <part name="cass1" interface="galaxy_cass">
670670         <dataarea name="cass" size="4950">
671            <rom name="zvjezdanestaze.gtp" size="4950" crc="40fcf0b0" sha1="c44d72cead914b31d5f7f26eebb2f3dc9acea498" offset="0x0000" />
671            <rom name="zvjezdanestaze.gtp" size="4950" crc="40fcf0b0" sha1="c44d72cead914b31d5f7f26eebb2f3dc9acea498" offset="0" />
672672         </dataarea>
673673      </part>
674674   </software>
675675
676   <software name="fire">
677      <description>Fire</description>
678      <year>2007</year>
679      <publisher>Tomaz Solc</publisher>
680      <part name="cass1" interface="galaxy_cass">
681         <dataarea name="cass" size="772">
682            <rom name="fire (2007-06-27)(solc, tomaz).gtp" size="772" crc="4c5758a9" sha1="4d9072f6fa5180e70d7ad4b05555678daf61d4ea" offset="0" />
683         </dataarea>
684      </part>
685   </software>
686
687   <software name="hardware">
688      <description>Hardware</description>
689      <year>2007</year>
690      <publisher>Tomaz Solc</publisher>
691      <part name="cass1" interface="galaxy_cass">
692         <dataarea name="cass" size="670">
693            <rom name="hardware (2007-09-22)(solc, tomaz).gtp" size="670" crc="daf12925" sha1="46c9e4a8039a6e4a8e9a2c7715c05fb65da05f5a" offset="0" />
694         </dataarea>
695      </part>
696   </software>
697
698   <software name="highres">
699      <description>Highres</description>
700      <year>2009</year>
701      <publisher>Tomaz Solc</publisher>
702      <part name="cass1" interface="galaxy_cass">
703         <dataarea name="cass" size="2838">
704            <rom name="highres (2009-01-22)(solc, tomaz).gtp" size="2838" crc="663aaef2" sha1="bf60334e341682683bb658a5a5fa9dc00011dfbf" offset="0" />
705         </dataarea>
706      </part>
707   </software>
708
709   <software name="particle">
710      <description>Particle</description>
711      <year>2007</year>
712      <publisher>Tomaz Solc</publisher>
713      <part name="cass1" interface="galaxy_cass">
714         <dataarea name="cass" size="631">
715            <rom name="particle (2007-07-12)(solc, tomaz).gtp" size="631" crc="7f9a2b90" sha1="025169e080857de663f41d3a809325c544fb9de7" offset="0" />
716         </dataarea>
717      </part>
718   </software>
719
720   <software name="stars">
721      <description>Stars</description>
722      <year>2007</year>
723      <publisher>Tomaz Solc</publisher>
724      <part name="cass1" interface="galaxy_cass">
725         <dataarea name="cass" size="573">
726            <rom name="stars (2007-07-12)(solc, tomaz).gtp" size="573" crc="6329e68d" sha1="3c6657ae167ce5ff1076458530da75dc3228e739" offset="0" />
727          </dataarea>
728       </part>
729    </software>
730
676731</softwarelist>
trunk/hash/gamate.xml
r0r241753
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<softwarelist name="gamate" description="Bit Corp Gamate cartridges">
5
6   <software name="cubeup" supported="no">
7      <description>Cube Up</description>
8      <year>19??</year>
9      <publisher>Bit Corp</publisher>
10      <part name="cart" interface="gamate_cart">
11         <dataarea name="rom" size="16384">
12            <rom name="cube up.bin" size="16384" crc="2a911e57" sha1="9d3b28887b6f375600bff29f8f233087b9152a60" offset="0x00000" />
13         </dataarea>
14      </part>
15   </software>
16
17
18</softwarelist>
trunk/hash/gamegear.xml
r241752r241753
77  - NFL Quarterback Club 95 (Jpn) by Acclaim
88  - Robocop 3 (Jpn) by Acclaim
99  - Sonic Drift (Euro) by Sega
10  - Super Golf (USA) by Sage's Creations
1110  - Terminator 2 - Judgement Day (Jpn) by Acclaim
1211
1312Other undumped games:
r241752r241753
84158414   </software>
84168415
84178416   <software name="supgolf">
8417      <description>Super Golf (USA)</description>
8418      <year>1991</year>
8419      <publisher>Sage's Creations</publisher>
8420      <part name="cart" interface="gamegear_cart">
8421         <dataarea name="rom" size="131072">
8422            <rom name="super golf (usa).bin" size="131072" crc="e9570f36" sha1="ed9b5e1264b4ed6d8969ba1c4e3f2d9446c3c9ca" offset="000000" />
8423         </dataarea>
8424      </part>
8425   </software>
8426
8427   <software name="supgolfj" cloneof="supgolf">
84188428      <description>Super Golf (Jpn)</description>
84198429      <year>1991</year>
84208430      <publisher>Sigma Enterprises</publisher>
trunk/hash/gameking.xml
r241752r241753
55
66<softwarelist name="gameking" description="TimeTop GameKing cartridges">
77
8   <software name="2004">
8   <software name="2004" supported="no">
99      <description>2004</description>
1010      <year>200?</year>
1111      <publisher>TimeTop</publisher>
r241752r241753
1616      </part>
1717   </software>
1818
19   <software name="alcarlo">
19   <software name="alcarlo" supported="no">
2020      <description>Adventure Legend Carlo</description>
2121      <year>200?</year>
2222      <publisher>TimeTop</publisher>
r241752r241753
2727      </part>
2828   </software>
2929
30   <software name="aries">
30   <software name="aries" supported="no">
3131      <description>Aries</description>
3232      <year>200?</year>
3333      <publisher>TimeTop</publisher>
r241752r241753
3838      </part>
3939   </software>
4040
41   <software name="dinoadv">
41   <software name="dinoadv" supported="no">
4242      <description>Dino Adventure Legend</description>
4343      <year>200?</year>
4444      <publisher>TimeTop</publisher>
r241752r241753
4949      </part>
5050   </software>
5151
52   <software name="duckman">
52   <software name="duckman" supported="no">
5353      <description>Duck Man</description>
5454      <year>200?</year>
5555      <publisher>TimeTop</publisher>
r241752r241753
6060      </part>
6161   </software>
6262
63   <software name="happybal">
63   <software name="happybal" supported="no">
6464      <description>Happy Ball</description>
6565      <year>200?</year>
6666      <publisher>TimeTop</publisher>
r241752r241753
7171      </part>
7272   </software>
7373
74   <software name="happykil">
74   <software name="happykil" supported="no">
7575      <description>Happy Killer</description>
7676      <year>200?</year>
7777      <publisher>TimeTop</publisher>
r241752r241753
8282      </part>
8383   </software>
8484
85   <software name="lanner">
85   <software name="lanner" supported="no">
8686      <description>Lanneret</description>
8787      <year>200?</year>
8888      <publisher>TimeTop</publisher>
r241752r241753
9393      </part>
9494   </software>
9595
96   <software name="penguin">
96   <software name="penguin" supported="no">
9797      <description>Penguin</description>
9898      <year>200?</year>
9999      <publisher>TimeTop</publisher>
r241752r241753
104104      </part>
105105   </software>
106106
107   <software name="popper">
107   <software name="popper" supported="no">
108108      <description>Popper</description>
109109      <year>200?</year>
110110      <publisher>TimeTop</publisher>
r241752r241753
115115      </part>
116116   </software>
117117
118   <software name="sthero">
118   <software name="sthero" supported="no">
119119      <description>Street Hero</description>
120120      <year>200?</year>
121121      <publisher>TimeTop</publisher>
r241752r241753
126126      </part>
127127   </software>
128128
129   <software name="smotor">
129   <software name="smotor" supported="no">
130130      <description>Supermotor</description>
131131      <year>200?</year>
132132      <publisher>TimeTop</publisher>
r241752r241753
137137      </part>
138138   </software>
139139
140   <software name="trojanl">
140   <software name="trojanl" supported="no">
141141      <description>Trojan Legend</description>
142142      <year>200?</year>
143143      <publisher>TimeTop</publisher>
trunk/hash/gbcolor.xml
r241752r241753
1028610286         <feature name="slot" value="rom_mbc5" />
1028710287         <!-- cartridge ram -->
1028810288         <dataarea name="rom" size="1048576">
10289            <rom name="hello kitty no magical museum (japan).bin" size="1048576" crc="5174584f" sha1="f274c780fc3bf4f95b5c17afd0ec73824bedee5c" offset="000000" />
10289            <rom name="hello kitty no magical museum (japan).bin" size="1048576" crc="f6768930" sha1="462e5120831c2298bb5138bf25b4c8c72b372407" offset="000000" />
1029010290         </dataarea>
1029110291         <dataarea name="nvram" size="8192">
1029210292         </dataarea>
trunk/hash/hx20_flop.xml
r241752r241753
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3<softwarelist name="hx20_flop" description="Epson HX-20 diskettes">
4
5   <software name="hx20boot">
6      <description>Epson TF-20 / HX-20 boot disk</description>
7      <year>1982</year>
8      <publisher>Epson</publisher>
9
10      <part name="flop1" interface="floppy_5_25">
11         <dataarea name="flop" size="25002">
12            <rom name="hx20boot.imd" size="25002" crc="b8fea298" sha1="0ff2aed3ba9d32a8d9deaff9f8a45c7de4939afc" offset="0" />
13         </dataarea>
14      </part>
15   </software>
16
17</softwarelist>
trunk/hash/ibm5150.xml
r241752r241753
28222822         </dataarea>
28232823      </part>
28242824   </software>
2825
2826   <software name="kingqst4">
2827      <!-- Dumped via Kryoflux, shows as good and unmodified -->
2828      <description>King's Quest IV: The Perils of Rosella (Version #2.2, 3.5")</description>
2829      <year>1988</year>
2830      <publisher>Sierra</publisher>
2831      <part name="flop1" interface="floppy_3_5">
2832         <feature name="part_id" value="Disk 1 of 3" />
2833         <dataarea name="flop" size="737280">
2834            <rom name="disk1_35.img" size="737280" crc="afc8464c" sha1="a8a40b48be021b070378834d2ceb428f32f9b883" offset="0" />
2835         </dataarea>
2836      </part>
2837      <part name="flop2" interface="floppy_3_5">
2838         <feature name="part_id" value="Disk 2 of 3" />
2839         <dataarea name="flop" size="737280">
2840            <rom name="disk2_35.img" size="737280" crc="022c3c12" sha1="89a4b0a4145257ae4d4270d4546dcf238c6b8b1d" offset="0" />
2841         </dataarea>
2842      </part>
2843      <part name="flop3" interface="floppy_3_5">
2844         <feature name="part_id" value="Disk 3 of 3" />
2845         <dataarea name="flop" size="737280">
2846            <rom name="disk3_35.img" size="737280" crc="c2230f34" sha1="28173b45a4b605fa99234b3567bf49e606bae78f" offset="0" />
2847         </dataarea>
2848      </part>
2849   </software>
2850
2851   <software name="kingqst4m" cloneof="kingqst4">
2852      <!-- Dumped via Kryoflux, shows as good and unmodified -->
2853      <description>King's Quest IV: The Perils of Rosella (Version #2.2, 5.25")</description>
2854      <year>1988</year>
2855      <publisher>Sierra</publisher>
2856      <part name="flop1" interface="floppy_5_25">
2857         <feature name="part_id" value="Disk 1 of 6" />
2858         <dataarea name="flop" size="368640">
2859            <rom name="disk1_525.img" size="368640" crc="d183e114" sha1="1569458b0588a1667ca99ef0a5206102742a34b5" offset="0" />
2860         </dataarea>
2861      </part>
2862      <part name="flop2" interface="floppy_5_25">
2863         <feature name="part_id" value="Disk 2 of 6" />
2864         <dataarea name="flop" size="368640">
2865            <rom name="disk2_525.img" size="368640" crc="a22e8248" sha1="cf6b5e0bd7847d0021ccc992cc7fd10b5d01a754" offset="0" />
2866         </dataarea>
2867      </part>
2868      <part name="flop3" interface="floppy_5_25">
2869         <feature name="part_id" value="Disk 3 of 6" />
2870         <dataarea name="flop" size="368640">
2871            <rom name="disk3_525.img" size="368640" crc="43943dd4" sha1="375a2d158563a1148bd17b8c383d984ae43ea209" offset="0" />
2872         </dataarea>
2873      </part>
2874      <part name="flop4" interface="floppy_5_25">
2875         <feature name="part_id" value="Disk 4 of 6" />
2876         <dataarea name="flop" size="368640">
2877            <rom name="disk4_525.img" size="368640" crc="e39c62f4" sha1="8f579c93d72b1d362d94ba2fb493ebad77b4fafd" offset="0" />
2878         </dataarea>
2879      </part>
2880      <part name="flop5" interface="floppy_5_25">
2881         <feature name="part_id" value="Disk 5 of 6" />
2882         <dataarea name="flop" size="368640">
2883            <rom name="disk5_525.img" size="368640" crc="3d1517b0" sha1="8e5b3ff93b858e11e808776f440546da1858f20c" offset="0" />
2884         </dataarea>
2885      </part>
2886      <part name="flop6" interface="floppy_5_25">
2887         <feature name="part_id" value="Disk 6 of 6" />
2888         <dataarea name="flop" size="368640">
2889            <rom name="disk6_525.img" size="368640" crc="3852ba12" sha1="09767b94985c3ef81547bca74964d6bff95faf00" offset="0" />
2890         </dataarea>
2891      </part>
2892   </software>
28252893</softwarelist>
trunk/hash/ibm5170.xml
r241752r241753
39663966      </part>
39673967   </software>
39683968
3969   <software name="samnmax">
3970      <!-- Dumped via Kryoflux, track 0 shows as modified on all disks -->
3971      <description>Sam &amp; Max Hit the Road</description>
3972      <year>1993</year>
3973      <publisher>LucasArts</publisher>
3974      <part name="flop1" interface="floppy_3_5">
3975         <dataarea name="flop" size="1474560">
3976            <rom name="disk1.img" size="1474560" crc="918a2aee" sha1="9293235f0efbbe19e9bb7c979911a2371e61f773" offset="0" status="baddump" />
3977         </dataarea>
3978      </part>
3979      <part name="flop2" interface="floppy_3_5">
3980         <dataarea name="flop" size="1474560">
3981            <rom name="disk2.img" size="1474560" crc="59f7507a" sha1="e43bfd7cb3f120566845a9efe489f6c59d57d384" offset="0" status="baddump" />
3982         </dataarea>
3983      </part>
3984      <part name="flop3" interface="floppy_3_5">
3985         <dataarea name="flop" size="1474560">
3986            <rom name="disk3.img" size="1474560" crc="05541aff" sha1="03497aae8e443aada4c9234a6dd19563b8235450" offset="0" status="baddump" />
3987         </dataarea>
3988      </part>
3989      <part name="flop4" interface="floppy_3_5">
3990         <dataarea name="flop" size="1474560">
3991            <rom name="disk4.img" size="1474560" crc="2174d87c" sha1="407eeb5293c9e02b38b1c8c314a8b23ae8a24fc9" offset="0" status="baddump" />
3992         </dataarea>
3993      </part>
3994      <part name="flop5" interface="floppy_3_5">
3995         <dataarea name="flop" size="1474560">
3996            <rom name="disk5.img" size="1474560" crc="cfd03ddc" sha1="c7ce4de481715bd03f1ecca31af4ce1ceaa2be66" offset="0" status="baddump" />
3997         </dataarea>
3998      </part>
3999      <part name="flop6" interface="floppy_3_5">
4000         <dataarea name="flop" size="1474560">
4001            <rom name="disk6.img" size="1474560" crc="af792c0f" sha1="1df1e0b4ff74b5b4aa9b3c416da99880f58826cd" offset="0" status="baddump" />
4002         </dataarea>
4003      </part>
4004      <part name="flop7" interface="floppy_3_5">
4005         <dataarea name="flop" size="737280">
4006            <rom name="disk7.img" size="737280" crc="077b9c18" sha1="8d299cd5fe2ed0dd93253d383c12e3fa889a4b39" offset="0" status="baddump" />
4007         </dataarea>
4008      </part>
4009   </software>
4010
39694011   <software name="sserv2">
39704012      <!-- Dumped via Kryoflux, shows as good and unmodified -->
39714013      <description>Silent Service II (Version 457.01)</description>
trunk/hash/intv.xml
r241752r241753
3131      <year>1982</year>
3232      <publisher>Mattel Electronics</publisher>
3333      <info name="serial" value="3410"/>
34      <info name="alt_title" value="Advanced Dungeons &amp; Dragons - Cloudy Mountain"/>
3435      <part name="cart" interface="intv_cart">
3536         <feature name="slot" value="intv_rom" />
3637         <dataarea name="5000" size="0x3000">
r241752r241753
9091      </part>
9192   </software>
9293
94<!-- Originally AstroSmash was planned to be an Asteroid clone, titled Meteor. The code is still inside
95     the final AstroSmash cart, and this version makes the game selectable -->
96   <software name="astrosmsm" cloneof="astrosms">
97      <description>AstroSmash - Meteor (Hacked?)</description>
98      <year>1981</year>
99      <publisher>Mattel Electronics</publisher>
100      <part name="cart" interface="intv_cart">
101         <feature name="slot" value="intv_rom" />
102         <dataarea name="5000" size="8192">
103            <rom name="astrosmash - meteor (1981) (mattel).50" size="8192" crc="00be8bba" sha1="7da15a0b713cfc79e577650bd372b37cb3f6d7a4" offset="0x0000" />
104         </dataarea>
105      </part>
106   </software>
107
93108   <software name="atlantis">
94109      <description>Atlantis</description>
95110      <year>1982</year>
r241752r241753
502517      </part>
503518   </software>
504519
520<!-- At title screen, press 4+7 in both keypads to start Deadly Dogs, a TRON Deadly Disks hack with BurgerTime gfx -->
505521   <software name="digdug">
506522      <description>Dig Dug</description>
507523      <year>1987</year>
r241752r241753
18231839      </part>
18241840   </software>
18251841
1842   <software name="adventur" cloneof="add">
1843      <description>Adventure (Prototype)</description>
1844      <year>1982</year>
1845      <publisher>Mattel Electronics</publisher>
1846      <part name="cart" interface="intv_cart">
1847         <feature name="slot" value="intv_rom" />
1848         <dataarea name="5000" size="16384">
1849            <rom name="adventure (ad&amp;d - cloudy mountain) (1982) (mattel).50" size="16384" crc="11c3bcfa" sha1="009683f3a40adbdd97b7256d64614feff12469ae" offset="0x0000" />
1850         </dataarea>
1851      </part>
1852   </software>
1853
18261854   <software name="advtron">
18271855      <description>Adventures of TRON (Unreleased)</description>
18281856      <year>1982</year>
r241752r241753
18741902      </part>
18751903   </software>
18761904
1905   <software name="crazycln">
1906      <description>Crazy Clones (Unfinished)</description>
1907      <year>1981</year>
1908      <publisher>Mattel Electronics</publisher>
1909      <part name="cart" interface="intv_cart">
1910         <feature name="slot" value="intv_rom" />
1911         <dataarea name="5000" size="0x2000">
1912            <rom name="crazy clones.50" size="0x2000" crc="e1ee408f" sha1="9a45cd3b59ddb6c9e0fcff0cd4dc6f71afd6953d" offset="0x0000"/>
1913         </dataarea>
1914      </part>
1915   </software>
1916
18771917   <software name="choplift">
18781918      <description>Choplifter! (Prototype)</description>
18791919      <year>1983</year>
r241752r241753
19041944      </part>
19051945   </software>
19061946
1947   <software name="dfactorp" cloneof="dfactor">
1948      <description>The Dreadnaught Factor (Prototype)</description>
1949      <year>1982</year>
1950      <publisher>Activision</publisher>
1951      <part name="cart" interface="intv_cart">
1952         <feature name="slot" value="intv_rom" />
1953         <dataarea name="5000" size="16384">
1954            <rom name="dreadnaught factor, the (prototype) (1983) (activision).50" size="16384" crc="bf4d0e9b" sha1="bede92706fbd137de5c24cff335f80e3447718fc" offset="0x0000" />
1955         </dataarea>
1956      </part>
1957   </software>
1958
19071959   <software name="gftgold">
19081960      <description>Go for the Gold! (Prototype)</description>
19091961      <year>1983</year>
r241752r241753
20352087      </part>
20362088   </software>
20372089
2038   <software name="league">
2090   <software name="llight">
20392091      <description>League of Light (Prototype)</description>
20402092      <year>1983</year>
20412093      <publisher>Activision</publisher>
r241752r241753
20472099      </part>
20482100   </software>
20492101
2102   <software name="llight1" cloneof="llight">
2103      <description>League of Light (Prototype, Alt)</description>
2104      <year>1983</year>
2105      <publisher>Activision</publisher>
2106      <part name="cart" interface="intv_cart">
2107         <feature name="slot" value="intv_rom" />
2108         <dataarea name="5000" size="16384">
2109            <rom name="league of light (prototype) (1983) (activision) [a1][!].50" size="16384" crc="19360442" sha1="9c36d2fec6c1c2bc01bb3863997e267f74325e06" offset="0x0000" />
2110         </dataarea>
2111      </part>
2112   </software>
2113
2114   <software name="llight2" cloneof="llight" supported="no">
2115      <description>League of Light (Prototype, Alt 2)</description>
2116      <year>1983</year>
2117      <publisher>Activision</publisher>
2118      <part name="cart" interface="intv_cart">
2119         <feature name="slot" value="intv_rom" />
2120         <dataarea name="5000" size="16384">
2121            <rom name="league of light (prototype) (1983) (activision) [a2].50" size="16384" crc="75ee64f6" sha1="43693f63b502029a15b93fc63be8e06cafa38085" offset="0x0000" />
2122         </dataarea>
2123      </part>
2124   </software>
2125
20502126   <software name="magic">
20512127      <description>Magic Carousel (Prototype)</description>
20522128      <year>1983</year>
r241752r241753
20752151      </part>
20762152   </software>
20772153
2154   <software name="minotaur" cloneof="addtot">
2155      <description>Minotaur (Prototype)</description>
2156      <year>1981</year>
2157      <publisher>Mattel Electronics</publisher>
2158      <part name="cart" interface="intv_cart">
2159         <feature name="slot" value="intv_rom" />
2160         <dataarea name="5000" size="16384">
2161            <rom name="minotaur (1981) (mattel).50" size="16384" crc="bd731e3c" sha1="1cf301a48856cff7ac5e2162889fd0f3956d911c" offset="0x0000" />
2162         </dataarea>
2163      </part>
2164   </software>
2165
2166   <software name="minotaur2" cloneof="addtot">
2167      <description>Minotaur (Prototype, v2)</description>
2168      <year>1981</year>
2169      <publisher>Mattel Electronics</publisher>
2170      <part name="cart" interface="intv_cart">
2171         <feature name="slot" value="intv_rom" />
2172         <dataarea name="5000" size="16384">
2173            <rom name="minotaur v2 (1981) (mattel) [!].50" size="16384" crc="5a4ce519" sha1="3f6939a673f0ace5d02d7ebb5d9e44dfd4d80413" offset="0x0000" />
2174         </dataarea>
2175      </part>
2176   </software>
2177
2178   <software name="minotaur11" cloneof="addtot" supported="no">
2179      <description>Minotaur (Prototype, v1.1)</description>
2180      <year>1981</year>
2181      <publisher>Mattel Electronics</publisher>
2182      <part name="cart" interface="intv_cart">
2183         <feature name="slot" value="intv_rom" />
2184         <dataarea name="5000" size="16384">
2185            <rom name="minotaur v1.1 (1981) (mattel) [!].50" size="16384" crc="6746607b" sha1="227d64182bc8adf46a17903c57c553353dd5e65a" offset="0x0000" />
2186         </dataarea>
2187      </part>
2188   </software>
2189
20782190   <software name="mycastle" cloneof="thcastle">
20792191      <description>Mystic Castle (Prototype)</description>
20802192      <year>1982</year>
r241752r241753
21442256      </part>
21452257   </software>
21462258
2259   <software name="riveraidp" cloneof="riveraid">
2260      <description>River Raid (Prototype)</description>
2261      <year>1983?</year>
2262      <publisher>Activision</publisher>
2263      <part name="cart" interface="intv_cart">
2264         <feature name="slot" value="intv_rom" />
2265         <dataarea name="5000" size="16384">
2266            <rom name="river raid v1 (prototype) (1982-83) (activision).50" size="16384" crc="95466ad3" sha1="2e148e09261ed89be0578abbb568b7225fc8621b" offset="0x0000" />
2267         </dataarea>
2268      </part>
2269   </software>
2270
21472271   <software name="rrubble">
21482272      <description>Robot Rubble (Prototype)</description>
21492273      <year>1983</year>
r241752r241753
21562280      </part>
21572281   </software>
21582282
2283   <software name="rrubble2" cloneof="rrubble">
2284      <description>Robot Rubble (Prototype, v2)</description>
2285      <year>1983</year>
2286      <publisher>Activision</publisher>
2287      <part name="cart" interface="intv_cart">
2288         <feature name="slot" value="intv_rom" />
2289         <dataarea name="5000" size="8192">
2290            <rom name="robot rubble v2 (prototype) (1983) (activision).50" size="8192" crc="a5e28783" sha1="7dfc58a14d57c7bd520007b2fb7e9173f3175752" offset="0x0000" />
2291         </dataarea>
2292      </part>
2293   </software>
2294
2295   <software name="rrubble1" cloneof="rrubble">
2296      <description>Robot Rubble (Prototype, v1)</description>
2297      <year>1983</year>
2298      <publisher>Activision</publisher>
2299      <part name="cart" interface="intv_cart">
2300         <feature name="slot" value="intv_rom" />
2301         <dataarea name="5000" size="8192">
2302            <rom name="robot rubble v1 (prototype) (1983) (activision).50" size="8192" crc="7473916d" sha1="99da0316641a7639ef4be71e5904b2399f36d4cb" offset="0x0000" />
2303         </dataarea>
2304      </part>
2305   </software>
2306
21592307   <software name="rockybw">
21602308      <description>Rocky &amp; Bullwinckle (Unreleased)</description>
21612309      <year>1983</year>
r241752r241753
22432391      </part>
22442392   </software>
22452393
2394   <software name="thinicep" cloneof="thinice">
2395      <description>Thin Ice (Prototype)</description>
2396      <year>1983</year>
2397      <publisher>Mattel Electronics</publisher>
2398      <part name="cart" interface="intv_cart">
2399         <feature name="slot" value="intv_rom" />
2400         <dataarea name="5000" size="16384">
2401            <rom name="thin ice (prototype) (1983) (intv corp) [!].50" size="16384" crc="d6495910" sha1="e038024463fc6b5577983621d861152602b281a6" offset="0x0000" />
2402         </dataarea>
2403      </part>
2404   </software>
2405
22462406   <software name="yogi">
22472407      <description>Yogi's Frustration (Unreleased)</description>
22482408      <year>1983</year>
r241752r241753
23932553      </part>
23942554   </software>
23952555
2396   <software name="spacecnt">
2556   <software name="spacecnt" cloneof="sspartan">
23972557      <description>Space Cunt</description>
2398      <year>200?</year>
2399      <publisher>IntelligentVision</publisher>
2558      <year>1983</year>
2559      <publisher>Mattel Electronics</publisher>
24002560      <info name="usage" value="Uses Intellivoice"/>
24012561      <part name="cart" interface="intv_cart">
24022562         <feature name="slot" value="intv_rom" />
trunk/hash/m5.xml
r241752r241753
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!--
5
6Carts released in Japan
7
81. Dig Dug (ディグダグ)
92. Tank Battalion (タンクバタリアン)
103. Bosconian (ボスコニアン)
114. Galax (ギャラックス)
125. Power Pac (パワーパック)
136. Warp Warp (ワープ&ワープ)
147. Super Cobra (スーパーコブラ)
158. Guttang Guttong (ガッタンゴットン)
169. Moon Patrol (ムーンパトロール)
1710. Step Up (ステップアップ)
1811. Pooyan (プーヤン)
1912. Heavy Boxing (ヘビーボクシング)
2013. コミカルスキー [Fun Ski?]
2114. Real Tennis (リアルテニス)
2215. Word Maze (ワードメイズ)
2316. Wonder Hole (ワンダーホール)
2417. Apploon (アップルーン)
2518. Up Up Balloon (アップアップバルーン)
2619. Mappy (マッピー)
2720.  ??
2821. Dream Shopper (ドリームショッパー)
2922. Eskimon (エスキモン)
3023. Funny Mouse (ファニーマウス)
3124. Jankyo (ジャン狂)
32
33Simulation Games (probably separate series, box has red stripes!)
34
35- Fruit Search
36- Dragon Attack
37- Pit Chaser
38
39
40Super Adventure Series (cart + tape games)
41
42- Super Adventure (スーパーアドベンチャー ) [cart]
43- Ooi Tasukete Kure (おーいたすけてくれ ) [tape]
44- Nigero Nigero Nigero (にげろにげろにげろ ) [tape]
45
46
47Programs:
48
49- P-Editor (also available as tape)
50- M-Editor
51
52
53Learning Soft:
54
55- Mogura-Tataki Keyboard Renshu (by Stratford Soft)
56
57
58Programming Languages:
59
60 - FLAC
61 - FLAC-II
62 - BASIC-I
63 - BASIC-G
64 - BASIC-F
65 - DISK BASIC
66
67
68what about European carts?
69and why some of the dumps below have weird size?
70
71
72-->
73
74<softwarelist name="m5" description="Sord M5 cartridges">
75
76<!-- Games -->
77
78   <software name="digdug">
79      <description>Dig Dug</description>
80      <year>1982</year>
81      <publisher>Namco</publisher>
82      <info name="serial" value="1" />
83      <info name="alt_title" value="ディグダグ" />
84      <part name="cart" interface="m5_cart">
85         <dataarea name="rom" size="8192">
86            <rom name="digdug.bin" size="8192" crc="9b207054" sha1="971f7bc1b6247d17a488f6e07eabc07580219ed9" offset="00000" />
87         </dataarea>
88      </part>
89   </software>
90
91   <software name="tankbtl">
92      <description>Tank Battalion</description>
93      <year>1980</year>
94      <publisher>Namco</publisher>
95      <info name="serial" value="2" />
96      <info name="alt_title" value="タンクバタリアン" />
97      <info name="usage" value="Requires 36k RAM" />
98      <part name="cart" interface="m5_cart">
99         <dataarea name="rom" size="8192">
100            <rom name="tank battlaion (1980)(namco)(jp).bin" size="8192" crc="daa0d610" sha1="5867090fbe2584654dd2c2aaa215e69243f2f599" offset="00000" status="baddump" />
101         </dataarea>
102      </part>
103   </software>
104
105   <software name="bosco">
106      <description>Star Destroyer Bosconian</description>
107      <year>1981</year>
108      <publisher>Namco</publisher>
109      <info name="serial" value="3" />
110      <info name="alt_title" value="ボスコニアン" />
111      <part name="cart" interface="m5_cart">
112         <dataarea name="rom" size="8192">
113            <rom name="bosconian.bin" size="8192" crc="8b299b7f" sha1="b26b1289fc96778d3b3f50eee5ca3963a1948dff" offset="00000" />
114         </dataarea>
115      </part>
116   </software>
117
118   <software name="galax">
119      <description>Galax</description>
120      <year>1981</year>
121      <publisher>Namco</publisher>
122      <info name="serial" value="4" />
123      <info name="alt_title" value="ギャラックス" />
124      <part name="cart" interface="m5_cart">
125         <dataarea name="rom" size="8192">
126            <rom name="galax.bin" size="8192" crc="62c26c8c" sha1="5f73e90f9b551501e6fd5b9a63cfcfaea7691821" offset="00000" />
127         </dataarea>
128      </part>
129   </software>
130
131   <software name="powerpac">
132      <description>Power Pac</description>
133      <year>1982</year>
134      <publisher>Namco</publisher>
135      <info name="serial" value="5" />
136      <info name="alt_title" value="パワーパック" />
137      <part name="cart" interface="m5_cart">
138         <dataarea name="rom" size="8192">
139            <rom name="powerpac.bin" size="8192" crc="3ce70f7f" sha1="2ee74f02f0249ff7192b4f29c1a061fc4f1eb920" offset="00000" />
140         </dataarea>
141      </part>
142   </software>
143
144   <software name="warpwarp">
145      <description>Warp &amp; Warp</description>
146      <year>1981</year>
147      <publisher>Namco</publisher>
148      <info name="serial" value="6" />
149      <info name="alt_title" value="ワープ&amp;ワープ" />
150      <part name="cart" interface="m5_cart">
151         <dataarea name="rom" size="8192">
152            <rom name="warpwarp.bin" size="8192" crc="1b9e2e58" sha1="38c1721eb04188e1201c31dde2fc03963b685d69" offset="00000" />
153         </dataarea>
154      </part>
155   </software>
156
157   <software name="scobra">
158      <description>Super Cobra</description>
159      <year>1981</year>
160      <publisher>Konami</publisher>
161      <info name="serial" value="7" />
162      <info name="alt_title" value="スーパーコブラ" />
163      <part name="cart" interface="m5_cart">
164         <dataarea name="rom" size="8192">
165            <rom name="super cobra (1981)(konami)(jp).bin" size="8192" crc="55cbd90b" sha1="d29f1d1d88a0b6738b68cf8d2406fbf1f05ba39b" offset="00000" status="baddump" />
166         </dataarea>
167      </part>
168   </software>
169
170   <software name="gutangtn">
171      <description>Guttang Gottong</description>
172      <year>1981</year>
173      <publisher>Konami</publisher>
174      <info name="serial" value="8" />
175      <info name="alt_title" value="ガッタンゴットン" />
176      <info name="usage" value="Requires 36k RAM" />
177      <part name="cart" interface="m5_cart">
178         <dataarea name="rom" size="8448">
179            <rom name="guttang gottong (1981)(konami)(jp).bin" size="8448" crc="0f70fa69" sha1="4e4900f42cbc76e4e795ed32ee18b2e27246e90f" offset="00000" status="baddump" />
180         </dataarea>
181      </part>
182   </software>
183
184   <software name="mpatrol">
185      <description>Moon Patrol</description>
186      <year>1981</year>
187      <publisher>Irem</publisher>
188      <info name="serial" value="9" />
189      <info name="alt_title" value="ムーンパトロール" />
190      <part name="cart" interface="m5_cart">
191         <dataarea name="rom" size="8192">
192            <rom name="moonpatrol.bin" size="8192" crc="1324c6c0" sha1="fa61c047b0051efa23a6607e4c1f7726ff683caf" offset="00000" />
193         </dataarea>
194      </part>
195   </software>
196
197   <software name="stepupj" cloneof="stepup">
198      <description>Step Up (Jpn)</description>
199      <year>1983</year>
200      <publisher>Takara</publisher>
201      <info name="serial" value="10" />
202      <info name="alt_title" value="ステップアップ" />
203      <part name="cart" interface="m5_cart">
204         <dataarea name="rom" size="8192">
205            <rom name="stepup_jp.bin" size="8192" crc="db688ff8" sha1="abce8c52bcc73dd6a1b532b04bd7b1110d6ff4e9" offset="00000" />
206         </dataarea>
207      </part>
208   </software>
209
210   <software name="stepup">
211      <description>Step Up (Euro)</description>
212      <year>1983</year>
213      <publisher>Takara</publisher>
214      <part name="cart" interface="m5_cart">
215         <dataarea name="rom" size="8192">
216            <rom name="stepup_eu.bin" size="8192" crc="942cc7e8" sha1="9f61df71b6080c8ef5085b659179a10e2777a957" offset="00000" />
217         </dataarea>
218      </part>
219   </software>
220
221   <software name="pooyan">
222      <description>Pooyan</description>
223      <year>1982</year>
224      <publisher>Konami</publisher>
225      <info name="serial" value="11" />
226      <info name="alt_title" value="プーヤン" />
227      <part name="cart" interface="m5_cart">
228         <dataarea name="rom" size="8192">
229            <rom name="pooyan.bin" size="8192" crc="91ba5073" sha1="b659b0f029927c36287720654fb538e53a2fcb76" offset="00000" />
230         </dataarea>
231      </part>
232   </software>
233
234   <software name="pooyana" cloneof="pooyan">
235      <description>Pooyan (Alt)</description>
236      <year>1982</year>
237      <publisher>Konami</publisher>
238      <info name="serial" value="11" />
239      <info name="alt_title" value="プーヤン" />
240      <part name="cart" interface="m5_cart">
241         <dataarea name="rom" size="8192">
242            <rom name="pooyan (1982)(konami)(jp).bin" size="8192" crc="ded8b4f4" sha1="4c9e58e52d336b4c01a24e3ca2e62fb7757407fd" offset="00000" status="baddump" />
243         </dataarea>
244      </part>
245   </software>
246
247   <software name="heavybox">
248      <description>Heavy Boxing</description>
249      <year>1983</year>
250      <publisher>Takara</publisher>
251      <info name="serial" value="12" />
252      <info name="alt_title" value="ヘビーボクシング" />
253      <part name="cart" interface="m5_cart">
254         <dataarea name="rom" size="8192">
255            <rom name="heavy boxing (1983)(takara)(jp).bin" size="8192" crc="19540dce" sha1="388838ed501bcc3a9fd18e32488f13a6ce6a0689" offset="00000" status="baddump" />
256         </dataarea>
257      </part>
258   </software>
259
260   <software name="rtennis">
261      <description>Real Tennis</description>
262      <year>1983</year>
263      <publisher>Takara</publisher>
264      <info name="serial" value="14" />
265      <info name="alt_title" value="リアルテニス" />
266      <part name="cart" interface="m5_cart">
267         <dataarea name="rom" size="8192">
268            <rom name="real tennis (1983)(takara)(jp).bin" size="8192" crc="ed80d6c9" sha1="03f3385b360c3573edab1fca53f82b4d6a4f8736" offset="00000" status="baddump" />
269         </dataarea>
270      </part>
271   </software>
272
273   <software name="wordmaze">
274      <description>Word Maze</description>
275      <year>1983</year>
276      <publisher>Sord</publisher>
277      <info name="serial" value="15" />
278      <info name="alt_title" value="ワードメイズ" />
279      <part name="cart" interface="m5_cart">
280         <dataarea name="rom" size="8192">
281            <rom name="word maze (19xx)(sord)(jp).bin" size="8192" crc="fda88e0d" sha1="a0fbe727bfca773d3cc193eb7a9c77e7b418b0a2" offset="00000" status="baddump" />
282         </dataarea>
283      </part>
284   </software>
285
286   <software name="wondhole">
287      <description>Wonder Hole</description>
288      <year>1982</year>
289      <publisher>Irem</publisher>
290      <info name="serial" value="16" />
291      <info name="alt_title" value="ワンダーホール" />
292      <info name="usage" value="Requires 36k RAM" />
293      <part name="cart" interface="m5_cart">
294         <dataarea name="rom" size="8320">
295            <rom name="wonder hole (1982)(irem)(jp).bin" size="8320" crc="aba2cece" sha1="bcb7442c6d320eb166e224c3ac0f50514906ad4c" offset="00000" status="baddump" />
296         </dataarea>
297      </part>
298   </software>
299
300   <software name="apploon">
301      <description>Apploon</description>
302      <year>1983</year>
303      <publisher>Takara</publisher>
304      <info name="serial" value="17" />
305      <info name="alt_title" value="アップルーン" />
306      <part name="cart" interface="m5_cart">
307         <dataarea name="rom" size="8192">
308            <rom name="apploon.bin" size="8192" crc="558cf858" sha1="743906ecab6439766fe374ccdf64b9c2acecbf97" offset="00000" />
309         </dataarea>
310      </part>
311   </software>
312
313   <software name="upupball" supported="no">
314      <description>Up Up Balloon</description>
315      <year>1983</year>
316      <publisher>Takara ~ Monkey Punch</publisher>
317      <info name="serial" value="18" />
318      <info name="alt_title" value="アップアップバルーン" />
319      <part name="cart" interface="m5_cart">
320         <dataarea name="rom" size="8320">
321            <rom name="up up balloon (1983)(takara - monkey punch)(jp).bin" size="8320" crc="68c85890" sha1="0c94d2d55a6a6e66531137e124f2e0a3a176b252" offset="00000" status="baddump" />
322         </dataarea>
323      </part>
324   </software>
325
326   <software name="mappy">
327      <description>Mappy</description>
328      <year>1983</year>
329      <publisher>Namco</publisher>
330      <info name="serial" value="19" />
331      <info name="alt_title" value="マッピー" />
332      <part name="cart" interface="m5_cart">
333         <dataarea name="rom" size="8192">
334            <rom name="mappy.bin" size="8192" crc="b83f6d83" sha1="c94c4def1a64fade08179b08b1d6f6178ff56a3f" offset="00000" />
335         </dataarea>
336      </part>
337   </software>
338
339   <software name="eskimon">
340      <description>Eskimon</description>
341      <year>1984</year>
342      <publisher>Takara</publisher>
343      <info name="serial" value="22" />
344      <info name="alt_title" value="エスキモン" />
345      <part name="cart" interface="m5_cart">
346         <dataarea name="rom" size="8192">
347            <rom name="eskimon (1984)(takara)(jp).bin" size="8192" crc="96931021" sha1="115eee645e5213c16ad4a27bbeed5e2f3fa4be22" offset="00000" status="baddump" />
348         </dataarea>
349      </part>
350   </software>
351
352   <software name="funnym">
353      <description>Funny Mouse</description>
354      <year>1983</year>
355      <publisher>Takara</publisher>
356      <info name="serial" value="23" />
357      <info name="alt_title" value="ファニーマウス" />
358      <part name="cart" interface="m5_cart">
359         <dataarea name="rom" size="8192">
360            <rom name="funny mouse (1983)(takara)(jp).bin" size="8192" crc="94145074" sha1="43c2a1a5959ab8057c7d149472512a0c7996c798" offset="00000" status="baddump" />
361         </dataarea>
362      </part>
363   </software>
364
365   <software name="jongkyo">
366      <description>Jong Kyo</description>
367      <year>1983?</year>
368      <publisher>Hudson Soft</publisher>
369      <info name="serial" value="24" />
370      <info name="alt_title" value="ジャン狂" />
371      <part name="cart" interface="m5_cart">
372         <dataarea name="rom" size="16384">
373            <rom name="mahjong.bin" size="16384" crc="b32c9e08" sha1="0b24213ef49a6ad04bc8ecff616b94ccf0f7a8aa" offset="00000" />
374         </dataarea>
375      </part>
376   </software>
377
378
379   <software name="adidas">
380      <description>Adidas Lucky Shoot</description>
381      <year>198?</year>
382      <publisher>&lt;unknown&gt;</publisher>
383      <info name="alt_title" value="Adidas ラッキー シュート" />
384      <part name="cart" interface="m5_cart">
385         <dataarea name="rom" size="8192">
386            <rom name="adidas.bin" size="8192" crc="d6ef9cae" sha1="80314f4351b9c0ebeb48f7757694717950d5a9b0" offset="00000" />
387         </dataarea>
388      </part>
389   </software>
390
391   <software name="drgnatck">
392      <description>Dragon Attack</description>
393      <year>1983</year>
394      <publisher>Takara</publisher>
395      <part name="cart" interface="m5_cart">
396         <dataarea name="rom" size="4096">
397            <rom name="dragon attack (1983)(takara)(jp).bin" size="4096" crc="5862d06c" sha1="f2707ad6dd564df01e7f81a21a00842e17cd49a4" offset="00000" status="baddump" />
398         </dataarea>
399      </part>
400   </software>
401
402   <software name="fruitsrc">
403      <description>Fruit Search</description>
404      <year>1983</year>
405      <publisher>Takara</publisher>
406      <part name="cart" interface="m5_cart">
407         <dataarea name="rom" size="4096">
408            <rom name="fruit search (1983)(takara)(jp).bin" size="4096" crc="333ac50f" sha1="a838fbf0bc4513d3b6bcc3165f1eac33ca27d6fa" offset="00000" status="baddump" />
409         </dataarea>
410      </part>
411   </software>
412
413
414
415
416
417<!-- Program + Languages -->
418   <software name="basicf">
419      <description>BASIC-F</description>
420      <year>198?</year>
421      <publisher>Sord</publisher>
422      <part name="cart" interface="m5_cart">
423         <dataarea name="rom" size="20480">
424            <rom name="basic-f (198x)(sord)(jp).bin" size="20480" crc="47be051f" sha1="9942b8f05a441b5dee7ab31ec5b8a643f7e268b8" offset="00000" status="baddump" />
425         </dataarea>
426      </part>
427   </software>
428
429   <software name="basicg">
430      <description>BASIC-G</description>
431      <year>198?</year>
432      <publisher>Sord</publisher>
433      <part name="cart" interface="m5_cart">
434         <dataarea name="rom" size="16384">
435            <rom name="basic-g (198x)(sord)(jp).bin" size="16384" crc="107b5ddc" sha1="071fa84c7b10d9d7841c504564825609ebf66140" offset="00000" status="baddump" />
436         </dataarea>
437      </part>
438   </software>
439
440   <software name="basici">
441      <description>BASIC-I</description>
442      <year>198?</year>
443      <publisher>Sord</publisher>
444      <part name="cart" interface="m5_cart">
445         <dataarea name="rom" size="8192">
446            <rom name="basic-i (198x)(sord)(jp).bin" size="8192" crc="9a98e6ce" sha1="d11f7623919ee593e275e9f00f8a4acf7aed3cf5" offset="00000" status="baddump" />
447         </dataarea>
448      </part>
449   </software>
450
451   <software name="falc">
452      <description>FALC</description>
453      <year>198?</year>
454      <publisher>Sord</publisher>
455      <info name="usage" value="Requires 36k RAM" />
456      <part name="cart" interface="m5_cart">
457         <dataarea name="rom" size="16384">
458            <rom name="falc (198x)(sord)(jp).bin" size="16384" crc="78037f97" sha1="4cd917388a626d38dd8b16834c2e610d0ba6d505" offset="00000" status="baddump" />
459         </dataarea>
460      </part>
461   </software>
462
463   <software name="peditor">
464      <description>P-Editor</description>
465      <year>198?</year>
466      <publisher>Sord</publisher>
467      <part name="cart" interface="m5_cart">
468         <dataarea name="rom" size="16384">
469            <rom name="zzz-unk-pdesigne.bin" size="16384" crc="af987f7b" sha1="3a4cffc8d81a384f8bb2dfebf5e02cda1f0c7e21" offset="00000" status="baddump" />
470         </dataarea>
471      </part>
472   </software>
473
474<!-- Unidentified items -->
475   <software name="basicw">
476      <!-- is this legit?!? might it be Disk BASIC? -->
477      <description>BASIC-W</description>
478      <year>198?</year>
479      <publisher>Sord?</publisher>
480      <part name="cart" interface="m5_cart">
481         <dataarea name="rom" size="20480">
482            <rom name="basic-w (198x)(sord)(jp).bin" size="20480" crc="2b1087cf" sha1="aa8d7c6c405e1360f074590abdc3d82df07cb564" offset="00000" status="baddump" />
483         </dataarea>
484      </part>
485   </software>
486
487   <software name="m5term">
488      <!-- is this legit?!? might it be M-Editor? -->
489      <description>M5 Terminal</description>
490      <year>19??</year>
491      <publisher>&lt;unknown&gt;</publisher>
492      <part name="cart" interface="m5_cart">
493         <dataarea name="rom" size="7168">
494            <rom name="m5 terminal (19xx)(-).bin" size="7168" crc="2b73c483" sha1="53c093d4c3c5ba990bf8673963f9ff529e99a252" offset="00000" status="baddump" />
495         </dataarea>
496      </part>
497   </software>
498
499   <software name="zacbanic">
500      <description>Zac Banic</description>
501      <year>19??</year>
502      <publisher>&lt;unknown&gt;</publisher>
503      <part name="cart" interface="m5_cart">
504         <dataarea name="rom" size="4400">
505            <rom name="zac banic (19xx)(-).bin" size="4400" crc="fd421eea" sha1="6c3d5c15817617508de5f994c0a980ff6c6ca303" offset="00000" status="baddump" />
506         </dataarea>
507      </part>
508   </software>
509
510   <software name="baseball">
511      <description>Baseball</description>
512      <year>19??</year>
513      <publisher>&lt;unknown&gt;</publisher>
514      <info name="usage" value="Requires 36k RAM" />
515      <part name="cart" interface="m5_cart">
516         <dataarea name="rom" size="10904">
517            <rom name="baseball (19xx)(-).bin" size="10904" crc="46e94dae" sha1="56d11bb9e4e8431ff4f6dfa592b096dd613084c3" offset="00000" status="baddump" />
518         </dataarea>
519      </part>
520   </software>
521
522   <software name="drops">
523      <description>Drops</description>
524      <year>1986</year>
525      <publisher>SPC</publisher>
526      <info name="usage" value="Requires 36k RAM" />
527      <part name="cart" interface="m5_cart">
528         <dataarea name="rom" size="6176">
529            <rom name="drops (1986)(spc)(jp).bin" size="6176" crc="fa321348" sha1="e9a44e12eed9d51cdb40ce4b6f1cb19a1ebed35d" offset="00000" status="baddump" />
530         </dataarea>
531      </part>
532   </software>
533
534   <software name="jumpjack">
535      <description>Jumping Jack</description>
536      <year>1986</year>
537      <publisher>SPC</publisher>
538      <info name="usage" value="Requires 36k RAM" />
539      <part name="cart" interface="m5_cart">
540         <dataarea name="rom" size="5920">
541            <rom name="jumping jack (1986)(spc)(jp).bin" size="5920" crc="49030973" sha1="c8716276fe6c4b0808078086f505efce1137afc9" offset="00000" status="baddump" />
542         </dataarea>
543      </part>
544   </software>
545
546   <software name="mchess">
547      <description>Masterchess</description>
548      <year>19??</year>
549      <publisher>&lt;unknown&gt;</publisher>
550      <info name="usage" value="Requires 36k RAM" />
551      <part name="cart" interface="m5_cart">
552         <dataarea name="rom" size="12288">
553            <rom name="masterchess (19xx)(-).bin" size="12288" crc="c10a6e96" sha1="5dd24aae17c3a293ae91ef5086c1c4f3e59263ed" offset="00000" status="baddump" />
554         </dataarea>
555      </part>
556   </software>
557
558   <software name="reversi">
559      <description>Reversi</description>
560      <year>19??</year>
561      <publisher>&lt;unknown&gt;</publisher>
562      <info name="usage" value="Requires 36k RAM" />
563      <part name="cart" interface="m5_cart">
564         <dataarea name="rom" size="6392">
565            <rom name="reversi (19xx)(games of skill).bin" size="6392" crc="ca2cd257" sha1="a048a1055d175ace09155e50da0387986e150f92" offset="00000" status="baddump" />
566         </dataarea>
567      </part>
568   </software>
569
570<!-- these come from TOSEC: they do not work and it's not clear where they
571come from... they might be eventually removed -->
572
573<!-- the first contains Czech text strings so it might be a real Czech cart,
574but we need more info -->
575   <software name="unk_maze" supported="no">
576      <description>Unknown CSMAZE</description>
577      <year>19??</year>
578      <publisher>&lt;unknown&gt;</publisher>
579      <part name="cart" interface="m5_cart">
580         <dataarea name="rom" size="8448">
581            <rom name="zzz-unk-csmaze.bin" size="8448" crc="b7c9705b" sha1="f07f531eef82fd5b0d914c176d52b38814c36e3b" offset="00000" status="baddump" />
582         </dataarea>
583      </part>
584   </software>
585
586<!-- This displays garbage charset when launched with ramsize 36k or 68k -->
587   <software name="unk_intr" supported="no">
588      <description>Unknown Intruder</description>
589      <year>19??</year>
590      <publisher>&lt;unknown&gt;</publisher>
591      <info name="usage" value="Requires 36k or more RAM?" />
592      <part name="cart" interface="m5_cart">
593         <dataarea name="rom" size="5376">
594            <rom name="zzz-unk-intruder.bin" size="5376" crc="12859c5d" sha1="fd8fc752be6afcbf016f8a33e21ad9e1b7c50c48" offset="00000" status="baddump" />
595         </dataarea>
596      </part>
597   </software>
598
599</softwarelist>
trunk/hash/m5_cart.xml
r0r241753
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!--
5
6Carts released in Japan
7
81. Dig Dug (ディグダグ)
92. Tank Battalion (タンクバタリアン)
103. Bosconian (ボスコニアン)
114. Galax (ギャラックス)
125. Power Pac (パワーパック)
136. Warp Warp (ワープ&ワープ)
147. Super Cobra (スーパーコブラ)
158. Guttang Guttong (ガッタンゴットン)
169. Moon Patrol (ムーンパトロール)
1710. Step Up (ステップアップ)
1811. Pooyan (プーヤン)
1912. Heavy Boxing (ヘビーボクシング)
2013. コミカルスキー [Fun Ski?]
2114. Real Tennis (リアルテニス)
2215. Word Maze (ワードメイズ)
2316. Wonder Hole (ワンダーホール)
2417. Apploon (アップルーン)
2518. Up Up Balloon (アップアップバルーン)
2619. Mappy (マッピー)
2720.  ??
2821. Dream Shopper (ドリームショッパー)
2922. Eskimon (エスキモン)
3023. Funny Mouse (ファニーマウス)
3124. Jankyo (ジャン狂)
32
33Simulation Games (probably separate series, box has red stripes!)
34
35- Fruit Search
36- Dragon Attack
37- Pit Chaser
38
39
40Super Adventure Series (cart + tape games)
41
42- Super Adventure (スーパーアドベンチャー ) [cart]
43- Ooi Tasukete Kure (おーいたすけてくれ ) [tape]
44- Nigero Nigero Nigero (にげろにげろにげろ ) [tape]
45
46
47Programs:
48
49- P-Editor (also available as tape)
50- M-Editor
51
52
53Learning Soft:
54
55- Mogura-Tataki Keyboard Renshu (by Stratford Soft)
56
57
58Programming Languages:
59
60 - FLAC
61 - FLAC-II
62 - BASIC-I
63 - BASIC-G
64 - BASIC-F
65 - DISK BASIC
66
67
68what about European carts?
69and why some of the dumps below have weird size?
70
71
72-->
73
74<softwarelist name="m5_cart" description="Sord M5 cartridges">
75
76<!-- Games -->
77
78   <software name="digdug">
79      <description>Dig Dug</description>
80      <year>1982</year>
81      <publisher>Namco</publisher>
82      <info name="serial" value="1" />
83      <info name="alt_title" value="ディグダグ" />
84      <part name="cart" interface="m5_cart">
85         <dataarea name="rom" size="8192">
86            <rom name="digdug.bin" size="8192" crc="9b207054" sha1="971f7bc1b6247d17a488f6e07eabc07580219ed9" offset="00000" />
87         </dataarea>
88      </part>
89   </software>
90
91   <software name="tankbtl">
92      <description>Tank Battalion</description>
93      <year>1980</year>
94      <publisher>Namco</publisher>
95      <info name="serial" value="2" />
96      <info name="alt_title" value="タンクバタリアン" />
97      <info name="usage" value="Requires 36k RAM" />
98      <part name="cart" interface="m5_cart">
99         <dataarea name="rom" size="8192">
100            <rom name="tank battlaion (1980)(namco)(jp).bin" size="8192" crc="daa0d610" sha1="5867090fbe2584654dd2c2aaa215e69243f2f599" offset="00000" status="baddump" />
101         </dataarea>
102      </part>
103   </software>
104
105   <software name="bosco">
106      <description>Star Destroyer Bosconian</description>
107      <year>1981</year>
108      <publisher>Namco</publisher>
109      <info name="serial" value="3" />
110      <info name="alt_title" value="ボスコニアン" />
111      <part name="cart" interface="m5_cart">
112         <dataarea name="rom" size="8192">
113            <rom name="bosconian.bin" size="8192" crc="8b299b7f" sha1="b26b1289fc96778d3b3f50eee5ca3963a1948dff" offset="00000" />
114         </dataarea>
115      </part>
116   </software>
117
118   <software name="galax">
119      <description>Galax</description>
120      <year>1981</year>
121      <publisher>Namco</publisher>
122      <info name="serial" value="4" />
123      <info name="alt_title" value="ギャラックス" />
124      <part name="cart" interface="m5_cart">
125         <dataarea name="rom" size="8192">
126            <rom name="galax.bin" size="8192" crc="62c26c8c" sha1="5f73e90f9b551501e6fd5b9a63cfcfaea7691821" offset="00000" />
127         </dataarea>
128      </part>
129   </software>
130
131   <software name="powerpac">
132      <description>Power Pac</description>
133      <year>1982</year>
134      <publisher>Namco</publisher>
135      <info name="serial" value="5" />
136      <info name="alt_title" value="パワーパック" />
137      <part name="cart" interface="m5_cart">
138         <dataarea name="rom" size="8192">
139            <rom name="powerpac.bin" size="8192" crc="3ce70f7f" sha1="2ee74f02f0249ff7192b4f29c1a061fc4f1eb920" offset="00000" />
140         </dataarea>
141      </part>
142   </software>
143
144   <software name="warpwarp">
145      <description>Warp &amp; Warp</description>
146      <year>1981</year>
147      <publisher>Namco</publisher>
148      <info name="serial" value="6" />
149      <info name="alt_title" value="ワープ&amp;ワープ" />
150      <part name="cart" interface="m5_cart">
151         <dataarea name="rom" size="8192">
152            <rom name="warpwarp.bin" size="8192" crc="1b9e2e58" sha1="38c1721eb04188e1201c31dde2fc03963b685d69" offset="00000" />
153         </dataarea>
154      </part>
155   </software>
156
157   <software name="scobra">
158      <description>Super Cobra</description>
159      <year>1981</year>
160      <publisher>Konami</publisher>
161      <info name="serial" value="7" />
162      <info name="alt_title" value="スーパーコブラ" />
163      <part name="cart" interface="m5_cart">
164         <dataarea name="rom" size="8192">
165            <rom name="super cobra (1981)(konami)(jp).bin" size="8192" crc="55cbd90b" sha1="d29f1d1d88a0b6738b68cf8d2406fbf1f05ba39b" offset="00000" status="baddump" />
166         </dataarea>
167      </part>
168   </software>
169
170   <software name="gutangtn">
171      <description>Guttang Gottong</description>
172      <year>1981</year>
173      <publisher>Konami</publisher>
174      <info name="serial" value="8" />
175      <info name="alt_title" value="ガッタンゴットン" />
176      <info name="usage" value="Requires 36k RAM" />
177      <part name="cart" interface="m5_cart">
178         <dataarea name="rom" size="8448">
179            <rom name="guttang gottong (1981)(konami)(jp).bin" size="8448" crc="0f70fa69" sha1="4e4900f42cbc76e4e795ed32ee18b2e27246e90f" offset="00000" status="baddump" />
180         </dataarea>
181      </part>
182   </software>
183
184   <software name="mpatrol">
185      <description>Moon Patrol</description>
186      <year>1981</year>
187      <publisher>Irem</publisher>
188      <info name="serial" value="9" />
189      <info name="alt_title" value="ムーンパトロール" />
190      <part name="cart" interface="m5_cart">
191         <dataarea name="rom" size="8192">
192            <rom name="moonpatrol.bin" size="8192" crc="1324c6c0" sha1="fa61c047b0051efa23a6607e4c1f7726ff683caf" offset="00000" />
193         </dataarea>
194      </part>
195   </software>
196
197   <software name="stepupj" cloneof="stepup">
198      <description>Step Up (Jpn)</description>
199      <year>1983</year>
200      <publisher>Takara</publisher>
201      <info name="serial" value="10" />
202      <info name="alt_title" value="ステップアップ" />
203      <part name="cart" interface="m5_cart">
204         <dataarea name="rom" size="8192">
205            <rom name="stepup_jp.bin" size="8192" crc="db688ff8" sha1="abce8c52bcc73dd6a1b532b04bd7b1110d6ff4e9" offset="00000" />
206         </dataarea>
207      </part>
208   </software>
209
210   <software name="stepup">
211      <description>Step Up (Euro)</description>
212      <year>1983</year>
213      <publisher>Takara</publisher>
214      <part name="cart" interface="m5_cart">
215         <dataarea name="rom" size="8192">
216            <rom name="stepup_eu.bin" size="8192" crc="942cc7e8" sha1="9f61df71b6080c8ef5085b659179a10e2777a957" offset="00000" />
217         </dataarea>
218      </part>
219   </software>
220
221   <software name="pooyan">
222      <description>Pooyan</description>
223      <year>1982</year>
224      <publisher>Konami</publisher>
225      <info name="serial" value="11" />
226      <info name="alt_title" value="プーヤン" />
227      <part name="cart" interface="m5_cart">
228         <dataarea name="rom" size="8192">
229            <rom name="pooyan.bin" size="8192" crc="91ba5073" sha1="b659b0f029927c36287720654fb538e53a2fcb76" offset="00000" />
230         </dataarea>
231      </part>
232   </software>
233
234   <software name="pooyana" cloneof="pooyan">
235      <description>Pooyan (Alt)</description>
236      <year>1982</year>
237      <publisher>Konami</publisher>
238      <info name="serial" value="11" />
239      <info name="alt_title" value="プーヤン" />
240      <part name="cart" interface="m5_cart">
241         <dataarea name="rom" size="8192">
242            <rom name="pooyan (1982)(konami)(jp).bin" size="8192" crc="ded8b4f4" sha1="4c9e58e52d336b4c01a24e3ca2e62fb7757407fd" offset="00000" status="baddump" />
243         </dataarea>
244      </part>
245   </software>
246
247   <software name="heavybox">
248      <description>Heavy Boxing</description>
249      <year>1983</year>
250      <publisher>Takara</publisher>
251      <info name="serial" value="12" />
252      <info name="alt_title" value="ヘビーボクシング" />
253      <part name="cart" interface="m5_cart">
254         <dataarea name="rom" size="8192">
255            <rom name="heavy boxing (1983)(takara)(jp).bin" size="8192" crc="19540dce" sha1="388838ed501bcc3a9fd18e32488f13a6ce6a0689" offset="00000" status="baddump" />
256         </dataarea>
257      </part>
258   </software>
259
260   <software name="rtennis">
261      <description>Real Tennis</description>
262      <year>1983</year>
263      <publisher>Takara</publisher>
264      <info name="serial" value="14" />
265      <info name="alt_title" value="リアルテニス" />
266      <part name="cart" interface="m5_cart">
267         <dataarea name="rom" size="8192">
268            <rom name="real tennis (1983)(takara)(jp).bin" size="8192" crc="ed80d6c9" sha1="03f3385b360c3573edab1fca53f82b4d6a4f8736" offset="00000" status="baddump" />
269         </dataarea>
270      </part>
271   </software>
272
273   <software name="wordmaze">
274      <description>Word Maze</description>
275      <year>1983</year>
276      <publisher>Sord</publisher>
277      <info name="serial" value="15" />
278      <info name="alt_title" value="ワードメイズ" />
279      <part name="cart" interface="m5_cart">
280         <dataarea name="rom" size="8192">
281            <rom name="word maze (19xx)(sord)(jp).bin" size="8192" crc="fda88e0d" sha1="a0fbe727bfca773d3cc193eb7a9c77e7b418b0a2" offset="00000" status="baddump" />
282         </dataarea>
283      </part>
284   </software>
285
286   <software name="wondhole">
287      <description>Wonder Hole</description>
288      <year>1982</year>
289      <publisher>Irem</publisher>
290      <info name="serial" value="16" />
291      <info name="alt_title" value="ワンダーホール" />
292      <info name="usage" value="Requires 36k RAM" />
293      <part name="cart" interface="m5_cart">
294         <dataarea name="rom" size="8320">
295            <rom name="wonder hole (1982)(irem)(jp).bin" size="8320" crc="aba2cece" sha1="bcb7442c6d320eb166e224c3ac0f50514906ad4c" offset="00000" status="baddump" />
296         </dataarea>
297      </part>
298   </software>
299
300   <software name="apploon">
301      <description>Apploon</description>
302      <year>1983</year>
303      <publisher>Takara</publisher>
304      <info name="serial" value="17" />
305      <info name="alt_title" value="アップルーン" />
306      <part name="cart" interface="m5_cart">
307         <dataarea name="rom" size="8192">
308            <rom name="apploon.bin" size="8192" crc="558cf858" sha1="743906ecab6439766fe374ccdf64b9c2acecbf97" offset="00000" />
309         </dataarea>
310      </part>
311   </software>
312
313   <software name="upupball" supported="no">
314      <description>Up Up Balloon</description>
315      <year>1983</year>
316      <publisher>Takara ~ Monkey Punch</publisher>
317      <info name="serial" value="18" />
318      <info name="alt_title" value="アップアップバルーン" />
319      <part name="cart" interface="m5_cart">
320         <dataarea name="rom" size="8320">
321            <rom name="up up balloon (1983)(takara - monkey punch)(jp).bin" size="8320" crc="68c85890" sha1="0c94d2d55a6a6e66531137e124f2e0a3a176b252" offset="00000" status="baddump" />
322         </dataarea>
323      </part>
324   </software>
325
326   <software name="mappy">
327      <description>Mappy</description>
328      <year>1983</year>
329      <publisher>Namco</publisher>
330      <info name="serial" value="19" />
331      <info name="alt_title" value="マッピー" />
332      <part name="cart" interface="m5_cart">
333         <dataarea name="rom" size="8192">
334            <rom name="mappy.bin" size="8192" crc="b83f6d83" sha1="c94c4def1a64fade08179b08b1d6f6178ff56a3f" offset="00000" />
335         </dataarea>
336      </part>
337   </software>
338
339   <software name="eskimon">
340      <description>Eskimon</description>
341      <year>1984</year>
342      <publisher>Takara</publisher>
343      <info name="serial" value="22" />
344      <info name="alt_title" value="エスキモン" />
345      <part name="cart" interface="m5_cart">
346         <dataarea name="rom" size="8192">
347            <rom name="eskimon (1984)(takara)(jp).bin" size="8192" crc="96931021" sha1="115eee645e5213c16ad4a27bbeed5e2f3fa4be22" offset="00000" status="baddump" />
348         </dataarea>
349      </part>
350   </software>
351
352   <software name="funnym">
353      <description>Funny Mouse</description>
354      <year>1983</year>
355      <publisher>Takara</publisher>
356      <info name="serial" value="23" />
357      <info name="alt_title" value="ファニーマウス" />
358      <part name="cart" interface="m5_cart">
359         <dataarea name="rom" size="8192">
360            <rom name="funny mouse (1983)(takara)(jp).bin" size="8192" crc="94145074" sha1="43c2a1a5959ab8057c7d149472512a0c7996c798" offset="00000" status="baddump" />
361         </dataarea>
362      </part>
363   </software>
364
365   <software name="jongkyo">
366      <description>Jong Kyo</description>
367      <year>1983?</year>
368      <publisher>Hudson Soft</publisher>
369      <info name="serial" value="24" />
370      <info name="alt_title" value="ジャン狂" />
371      <part name="cart" interface="m5_cart">
372         <dataarea name="rom" size="16384">
373            <rom name="mahjong.bin" size="16384" crc="b32c9e08" sha1="0b24213ef49a6ad04bc8ecff616b94ccf0f7a8aa" offset="00000" />
374         </dataarea>
375      </part>
376   </software>
377
378
379   <software name="adidas">
380      <description>Adidas Lucky Shoot</description>
381      <year>198?</year>
382      <publisher>&lt;unknown&gt;</publisher>
383      <info name="alt_title" value="Adidas ラッキー シュート" />
384      <part name="cart" interface="m5_cart">
385         <dataarea name="rom" size="8192">
386            <rom name="adidas.bin" size="8192" crc="d6ef9cae" sha1="80314f4351b9c0ebeb48f7757694717950d5a9b0" offset="00000" />
387         </dataarea>
388      </part>
389   </software>
390
391   <software name="drgnatck">
392      <description>Dragon Attack</description>
393      <year>1983</year>
394      <publisher>Takara</publisher>
395      <part name="cart" interface="m5_cart">
396         <dataarea name="rom" size="4096">
397            <rom name="dragon attack (1983)(takara)(jp).bin" size="4096" crc="5862d06c" sha1="f2707ad6dd564df01e7f81a21a00842e17cd49a4" offset="00000" status="baddump" />
398         </dataarea>
399      </part>
400   </software>
401
402   <software name="fruitsrc">
403      <description>Fruit Search</description>
404      <year>1983</year>
405      <publisher>Takara</publisher>
406      <part name="cart" interface="m5_cart">
407         <dataarea name="rom" size="4096">
408            <rom name="fruit search (1983)(takara)(jp).bin" size="4096" crc="333ac50f" sha1="a838fbf0bc4513d3b6bcc3165f1eac33ca27d6fa" offset="00000" status="baddump" />
409         </dataarea>
410      </part>
411   </software>
412
413
414
415
416
417<!-- Program + Languages -->
418   <software name="basicf">
419      <description>BASIC-F</description>
420      <year>198?</year>
421      <publisher>Sord</publisher>
422      <part name="cart" interface="m5_cart">
423         <dataarea name="rom" size="20480">
424            <rom name="basic-f (198x)(sord)(jp).bin" size="20480" crc="47be051f" sha1="9942b8f05a441b5dee7ab31ec5b8a643f7e268b8" offset="00000" status="baddump" />
425         </dataarea>
426      </part>
427   </software>
428
429   <software name="basicg">
430      <description>BASIC-G</description>
431      <year>198?</year>
432      <publisher>Sord</publisher>
433      <part name="cart" interface="m5_cart">
434         <dataarea name="rom" size="16384">
435            <rom name="basic-g (198x)(sord)(jp).bin" size="16384" crc="107b5ddc" sha1="071fa84c7b10d9d7841c504564825609ebf66140" offset="00000" status="baddump" />
436         </dataarea>
437      </part>
438   </software>
439
440   <software name="basici">
441      <description>BASIC-I</description>
442      <year>198?</year>
443      <publisher>Sord</publisher>
444      <part name="cart" interface="m5_cart">
445         <dataarea name="rom" size="8192">
446            <rom name="basic-i (198x)(sord)(jp).bin" size="8192" crc="9a98e6ce" sha1="d11f7623919ee593e275e9f00f8a4acf7aed3cf5" offset="00000" status="baddump" />
447         </dataarea>
448      </part>
449   </software>
450
451   <software name="falc">
452      <description>FALC</description>
453      <year>198?</year>
454      <publisher>Sord</publisher>
455      <info name="usage" value="Requires 36k RAM" />
456      <part name="cart" interface="m5_cart">
457         <dataarea name="rom" size="16384">
458            <rom name="falc (198x)(sord)(jp).bin" size="16384" crc="78037f97" sha1="4cd917388a626d38dd8b16834c2e610d0ba6d505" offset="00000" status="baddump" />
459         </dataarea>
460      </part>
461   </software>
462
463   <software name="peditor">
464      <description>P-Editor</description>
465      <year>198?</year>
466      <publisher>Sord</publisher>
467      <part name="cart" interface="m5_cart">
468         <dataarea name="rom" size="16384">
469            <rom name="zzz-unk-pdesigne.bin" size="16384" crc="af987f7b" sha1="3a4cffc8d81a384f8bb2dfebf5e02cda1f0c7e21" offset="00000" status="baddump" />
470         </dataarea>
471      </part>
472   </software>
473
474<!-- Unidentified items -->
475   <software name="basicw">
476      <!-- is this legit?!? might it be Disk BASIC? -->
477      <description>BASIC-W</description>
478      <year>198?</year>
479      <publisher>Sord?</publisher>
480      <part name="cart" interface="m5_cart">
481         <dataarea name="rom" size="20480">
482            <rom name="basic-w (198x)(sord)(jp).bin" size="20480" crc="2b1087cf" sha1="aa8d7c6c405e1360f074590abdc3d82df07cb564" offset="00000" status="baddump" />
483         </dataarea>
484      </part>
485   </software>
486
487   <software name="m5term">
488      <!-- is this legit?!? might it be M-Editor? -->
489      <description>M5 Terminal</description>
490      <year>19??</year>
491      <publisher>&lt;unknown&gt;</publisher>
492      <part name="cart" interface="m5_cart">
493         <dataarea name="rom" size="7168">
494            <rom name="m5 terminal (19xx)(-).bin" size="7168" crc="2b73c483" sha1="53c093d4c3c5ba990bf8673963f9ff529e99a252" offset="00000" status="baddump" />
495         </dataarea>
496      </part>
497   </software>
498
499   <software name="zacbanic">
500      <description>Zac Banic</description>
501      <year>19??</year>
502      <publisher>&lt;unknown&gt;</publisher>
503      <part name="cart" interface="m5_cart">
504         <dataarea name="rom" size="4400">
505            <rom name="zac banic (19xx)(-).bin" size="4400" crc="fd421eea" sha1="6c3d5c15817617508de5f994c0a980ff6c6ca303" offset="00000" status="baddump" />
506         </dataarea>
507      </part>
508   </software>
509
510   <software name="baseball">
511      <description>Baseball</description>
512      <year>19??</year>
513      <publisher>&lt;unknown&gt;</publisher>
514      <info name="usage" value="Requires 36k RAM" />
515      <part name="cart" interface="m5_cart">
516         <dataarea name="rom" size="10904">
517            <rom name="baseball (19xx)(-).bin" size="10904" crc="46e94dae" sha1="56d11bb9e4e8431ff4f6dfa592b096dd613084c3" offset="00000" status="baddump" />
518         </dataarea>
519      </part>
520   </software>
521
522   <software name="drops">
523      <description>Drops</description>
524      <year>1986</year>
525      <publisher>SPC</publisher>
526      <info name="usage" value="Requires 36k RAM" />
527      <part name="cart" interface="m5_cart">
528         <dataarea name="rom" size="6176">
529            <rom name="drops (1986)(spc)(jp).bin" size="6176" crc="fa321348" sha1="e9a44e12eed9d51cdb40ce4b6f1cb19a1ebed35d" offset="00000" status="baddump" />
530         </dataarea>
531      </part>
532   </software>
533
534   <software name="jumpjack">
535      <description>Jumping Jack</description>
536      <year>1986</year>
537      <publisher>SPC</publisher>
538      <info name="usage" value="Requires 36k RAM" />
539      <part name="cart" interface="m5_cart">
540         <dataarea name="rom" size="5920">
541            <rom name="jumping jack (1986)(spc)(jp).bin" size="5920" crc="49030973" sha1="c8716276fe6c4b0808078086f505efce1137afc9" offset="00000" status="baddump" />
542         </dataarea>
543      </part>
544   </software>
545
546   <software name="mchess">
547      <description>Masterchess</description>
548      <year>19??</year>
549      <publisher>&lt;unknown&gt;</publisher>
550      <info name="usage" value="Requires 36k RAM" />
551      <part name="cart" interface="m5_cart">
552         <dataarea name="rom" size="12288">
553            <rom name="masterchess (19xx)(-).bin" size="12288" crc="c10a6e96" sha1="5dd24aae17c3a293ae91ef5086c1c4f3e59263ed" offset="00000" status="baddump" />
554         </dataarea>
555      </part>
556   </software>
557
558   <software name="reversi">
559      <description>Reversi</description>
560      <year>19??</year>
561      <publisher>&lt;unknown&gt;</publisher>
562      <info name="usage" value="Requires 36k RAM" />
563      <part name="cart" interface="m5_cart">
564         <dataarea name="rom" size="6392">
565            <rom name="reversi (19xx)(games of skill).bin" size="6392" crc="ca2cd257" sha1="a048a1055d175ace09155e50da0387986e150f92" offset="00000" status="baddump" />
566         </dataarea>
567      </part>
568   </software>
569
570<!-- these come from TOSEC: they do not work and it's not clear where they
571come from... they might be eventually removed -->
572
573<!-- the first contains Czech text strings so it might be a real Czech cart,
574but we need more info -->
575   <software name="unk_maze" supported="no">
576      <description>Unknown CSMAZE</description>
577      <year>19??</year>
578      <publisher>&lt;unknown&gt;</publisher>
579      <part name="cart" interface="m5_cart">
580         <dataarea name="rom" size="8448">
581            <rom name="zzz-unk-csmaze.bin" size="8448" crc="b7c9705b" sha1="f07f531eef82fd5b0d914c176d52b38814c36e3b" offset="00000" status="baddump" />
582         </dataarea>
583      </part>
584   </software>
585
586<!-- This displays garbage charset when launched with ramsize 36k or 68k -->
587   <software name="unk_intr" supported="no">
588      <description>Unknown Intruder</description>
589      <year>19??</year>
590      <publisher>&lt;unknown&gt;</publisher>
591      <info name="usage" value="Requires 36k or more RAM?" />
592      <part name="cart" interface="m5_cart">
593         <dataarea name="rom" size="5376">
594            <rom name="zzz-unk-intruder.bin" size="5376" crc="12859c5d" sha1="fd8fc752be6afcbf016f8a33e21ad9e1b7c50c48" offset="00000" status="baddump" />
595         </dataarea>
596      </part>
597   </software>
598
599</softwarelist>
trunk/hash/m5_cass.xml
r0r241753
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!--
5   Cassettes that load with CHAIN cannot auto-start correctly.
6   Mount the BASIC-I cart first, then the cassette to load + run them.
7   
8   Other tapes should auto-load and run.
9-->
10
11<softwarelist name="m5_cass" description="Sord M5 cassettes">
12   <software name="barricad">
13      <description>Barricade</description>
14      <year>19??</year>
15      <publisher>&lt;unknown&gt;</publisher>
16      <info name="usage" value="Mount together with &quot;BASIC-I&quot; and load with CHAIN"/>
17   <!--<sharedfeat name="requirement" value="m5_cart:basici"/>-->
18
19      <part name="cass1" interface="m5_cass">
20         <dataarea name="cass" size="3840">
21            <rom name="barricade.cas" size="3840" crc="453b03b7" sha1="4bd1fd674ecc1348de82705df65c9968d17f4371" offset="0" />
22         </dataarea>
23      </part>
24   </software>
25
26   <software name="barrier">
27      <description>Barrier Attack</description>
28      <year>19??</year>
29      <publisher>&lt;unknown&gt;</publisher>
30      <info name="usage" value="Mount together with &quot;BASIC-I&quot; and load with CHAIN"/>
31   <!--<sharedfeat name="requirement" value="m5_cart:basici"/>-->
32
33      <part name="cass1" interface="m5_cass">
34         <dataarea name="cass" size="3386">
35            <rom name="b.attack.cas" size="3386" crc="f84b6cf6" sha1="58007c3f59591717ea15f89c7cf0501a956d0e03" offset="0" />
36         </dataarea>
37      </part>
38   </software>
39
40   <software name="baseball">
41      <description>Baseball</description>
42      <year>19??</year>
43      <publisher>&lt;unknown&gt;</publisher>
44
45      <part name="cass1" interface="m5_cass">
46         <dataarea name="cass" size="11221">
47            <rom name="baseball.cas" size="11221" crc="91ba7884" sha1="5b15b6f9d1ec625c5fd12dbaa1108c0645a3c543" offset="0" />
48         </dataarea>
49      </part>
50   </software>
51
52   <software name="biorhyth">
53      <description>Biorhythm Diagnosis</description>
54      <year>19??</year>
55      <publisher>&lt;unknown&gt;</publisher>
56      <info name="usage" value="Mount together with &quot;BASIC-I&quot; and load with CHAIN"/>
57   <!--<sharedfeat name="requirement" value="m5_cart:basici"/>-->
58
59      <part name="cass1" interface="m5_cass">
60         <dataarea name="cass" size="19071">
61            <rom name="biorhythm.cas" size="19071" crc="7fdf95ff" sha1="c8a0d5dacb629e9793dce36036bd3e50cceb1640" offset="0" />
62         </dataarea>
63      </part>
64   </software>
65
66   <software name="blackjac">
67      <description>Blackjack</description>
68      <year>19??</year>
69      <publisher>&lt;unknown&gt;</publisher>
70      <info name="usage" value="Mount together with &quot;BASIC-I&quot; and load with CHAIN"/>
71   <!--<sharedfeat name="requirement" value="m5_cart:basici"/>-->
72
73      <part name="cass1" interface="m5_cass">
74         <dataarea name="cass" size="16980">
75            <rom name="blackjack.cas" size="16980" crc="0ba87b33" sha1="5fb0f2d186a3c1c32738e5162f32bf0831681367" offset="0" />
76         </dataarea>
77      </part>
78   </software>
79
80   <software name="cowboy">
81      <description>Cowboy</description>
82      <year>19??</year>
83      <publisher>&lt;unknown&gt;</publisher>
84      <info name="usage" value="Mount together with &quot;BASIC-I&quot; and load with CHAIN"/>
85   <!--<sharedfeat name="requirement" value="m5_cart:basici"/>-->
86
87      <part name="cass1" interface="m5_cass">
88         <dataarea name="cass" size="3767">
89            <rom name="cowboy.cas" size="3767" crc="f4cc6900" sha1="52bbfa6aed885c6c2d818a331423217971806dfa" offset="0" />
90         </dataarea>
91      </part>
92   </software>
93
94   <software name="graphic">
95      <description>Graphic Designer</description>
96      <year>19??</year>
97      <publisher>&lt;unknown&gt;</publisher>
98
99      <part name="cass1" interface="m5_cass">
100         <dataarea name="cass" size="3417">
101            <rom name="p-editor.cas" size="3417" crc="c57f6d10" sha1="e6774256941073e7d46472bfec1a1a47fb8d20fd" offset="0" />
102         </dataarea>
103      </part>
104   </software>
105
106   <software name="jogging">
107      <description>Jogging</description>
108      <year>19??</year>
109      <publisher>&lt;unknown&gt;</publisher>
110      <info name="usage" value="Mount together with &quot;BASIC-I&quot; and load with CHAIN"/>
111   <!--<sharedfeat name="requirement" value="m5_cart:basici"/>-->
112
113      <part name="cass1" interface="m5_cass">
114         <dataarea name="cass" size="8537">
115            <rom name="jogging.cas" size="8537" crc="ee87bee5" sha1="4e7a3a4a436aac78272384a160bd1118421efbd6" offset="0" />
116         </dataarea>
117      </part>
118   </software>
119
120   <software name="lastday">
121      <description>Last Day of the Earth</description>
122      <year>19??</year>
123      <publisher>&lt;unknown&gt;</publisher>
124      <info name="usage" value="Mount together with &quot;BASIC-I&quot; and load with CHAIN"/>
125   <!--<sharedfeat name="requirement" value="m5_cart:basici"/>-->
126
127      <part name="cass1" interface="m5_cass">
128         <dataarea name="cass" size="19184">
129            <rom name="neutron.cas" size="19184" crc="d8b699da" sha1="7e33a89c3bfcb5f73ef117a992dc67f74a3640d9" offset="0" />
130         </dataarea>
131      </part>
132   </software>
133
134   <software name="startrek">
135      <description>Mini Star Trek</description>
136      <year>19??</year>
137      <publisher>&lt;unknown&gt;</publisher>
138      <info name="usage" value="Mount together with &quot;BASIC-I&quot; and load with CHAIN"/>
139   <!--<sharedfeat name="requirement" value="m5_cart:basici"/>-->
140
141      <part name="cass1" interface="m5_cass">
142         <dataarea name="cass" size="4744">
143            <rom name="startrek.cas" size="4744" crc="bbc88a19" sha1="d066e9baf5576e338ba7122ecca497e01e451071" offset="0" />
144         </dataarea>
145      </part>
146   </software>
147
148   <software name="mustone">
149      <description>Music Tone</description>
150      <year>19??</year>
151      <publisher>&lt;unknown&gt;</publisher>
152      <info name="usage" value="Mount together with &quot;BASIC-I&quot; and load with CHAIN"/>
153   <!--<sharedfeat name="requirement" value="m5_cart:basici"/>-->
154
155      <part name="cass1" interface="m5_cass">
156         <dataarea name="cass" size="3423">
157            <rom name="music tone (19xx)(-)[chain].cas" size="3423" crc="296671e0" sha1="a5bd05aa110879317e19566936264de21ec34195" offset="0" />
158         </dataarea>
159      </part>
160   </software>
161
162   <software name="numsrch">
163      <description>Number Search</description>
164      <year>19??</year>
165      <publisher>&lt;unknown&gt;</publisher>
166      <info name="usage" value="Mount together with &quot;BASIC-I&quot; and load with CHAIN"/>
167   <!--<sharedfeat name="requirement" value="m5_cart:basici"/>-->
168
169      <part name="cass1" interface="m5_cass">
170         <dataarea name="cass" size="3244">
171            <rom name="n.search.cas" size="3244" crc="5ac28495" sha1="052e3696c2342df39cb35f4cef781cfce8d159c7" offset="0" />
172         </dataarea>
173      </part>
174   </software>
175
176   <software name="sidewind">
177      <description>Sidewinder</description>
178      <year>19??</year>
179      <publisher>&lt;unknown&gt;</publisher>
180      <info name="usage" value="Mount together with &quot;BASIC-I&quot; and load with CHAIN"/>
181   <!--<sharedfeat name="requirement" value="m5_cart:basici"/>-->
182
183      <part name="cass1" interface="m5_cass">
184         <dataarea name="cass" size="3628">
185            <rom name="s.winder.cas" size="3628" crc="a4405fe0" sha1="679969f20907cb4bd2fe62340b868316d2c3aaba" offset="0" />
186         </dataarea>
187      </part>
188   </software>
189
190   <software name="slotmach">
191      <description>Slot Machine</description>
192      <year>19??</year>
193      <publisher>&lt;unknown&gt;</publisher>
194      <info name="usage" value="Mount together with &quot;BASIC-I&quot; and load with CHAIN"/>
195   <!--<sharedfeat name="requirement" value="m5_cart:basici"/>-->
196
197      <part name="cass1" interface="m5_cass">
198         <dataarea name="cass" size="5207">
199            <rom name="slot.cas" size="5207" crc="60f5678b" sha1="4f11ddac8909af685f67c30c47ae472101f94c1e" offset="0" />
200         </dataarea>
201      </part>
202   </software>
203
204   <software name="snaky">
205      <description>Snaky</description>
206      <year>19??</year>
207      <publisher>&lt;unknown&gt;</publisher>
208      <info name="usage" value="Mount together with &quot;BASIC-I&quot; and load with CHAIN"/>
209   <!--<sharedfeat name="requirement" value="m5_cart:basici"/>-->
210
211      <part name="cass1" interface="m5_cass">
212         <dataarea name="cass" size="3213">
213            <rom name="snaky.cas" size="3213" crc="6f66a0b3" sha1="731fb6c43b240eb701ac10ed4c73103f11af0414" offset="0" />
214         </dataarea>
215      </part>
216   </software>
217
218   <software name="solitair">
219      <description>Solitaire</description>
220      <year>19??</year>
221      <publisher>&lt;unknown&gt;</publisher>
222      <info name="usage" value="Mount together with &quot;BASIC-I&quot; and load with CHAIN"/>
223   <!--<sharedfeat name="requirement" value="m5_cart:basici"/>-->   
224
225      <part name="cass1" interface="m5_cass">
226         <dataarea name="cass" size="3278">
227            <rom name="solitaire.cas" size="3278" crc="c7d4f0af" sha1="58938d626ee291e79783f9656d1e26701662808d" offset="0" />
228         </dataarea>
229      </part>
230   </software>
231
232   <software name="3circles">
233      <description>Three Circles</description>
234      <year>19??</year>
235      <publisher>&lt;unknown&gt;</publisher>
236      <info name="usage" value="Mount together with &quot;BASIC-I&quot; and load with CHAIN"/>
237   <!--<sharedfeat name="requirement" value="m5_cart:basici"/>-->
238
239      <part name="cass1" interface="m5_cass">
240         <dataarea name="cass" size="3568">
241            <rom name="3-circles.cas" size="3568" crc="c8436fcc" sha1="3c03ee9ee6ac3b51d0ca990f72fc83816d747ba1" offset="0" />
242         </dataarea>
243      </part>
244   </software>
245
246   <software name="hanoi">
247      <description>Tower of Hanoi</description>
248      <year>19??</year>
249      <publisher>&lt;unknown&gt;</publisher>
250      <info name="usage" value="Mount together with &quot;BASIC-I&quot; and load with CHAIN"/>
251   <!--<sharedfeat name="requirement" value="m5_cart:basici"/>-->
252
253      <part name="cass1" interface="m5_cass">
254         <dataarea name="cass" size="4108">
255            <rom name="hanoi.cas" size="4108" crc="a91c50be" sha1="b81e42cabf4b7d0d8389a4e4cae1ea8a49f628f2" offset="0" />
256         </dataarea>
257      </part>
258   </software>
259
260   <software name="tvadjust">
261      <description>TV Adjust</description>
262      <year>19??</year>
263      <publisher>&lt;unknown&gt;</publisher>
264
265      <part name="cass1" interface="m5_cass">
266         <dataarea name="cass" size="1345">
267            <rom name="tvadjust.cas" size="1345" crc="6b2980fc" sha1="88490185fae07f8ef848b2153fbd954c12066fcd" offset="0" />
268         </dataarea>
269      </part>
270   </software>
271
272   <software name="zacbanic">
273      <description>Zac Banic</description>
274      <year>19??</year>
275      <publisher>&lt;unknown&gt;</publisher>
276
277      <part name="cass1" interface="m5_cass">
278         <dataarea name="cass" size="4746">
279            <rom name="zacbanic.cas" size="4746" crc="05026a99" sha1="463bdea30de9e67db98f7c2a2c5bb7e3799ef96d" offset="0" />
280         </dataarea>
281      </part>
282   </software>
283
284</softwarelist>
trunk/hash/megadriv.xml
r241752r241753
33<!--
44    UNDUMPED / TO BE REDUMPED LIST
55
6    2IN1 (COSMIC SPACEHEAD FANTASTIC DIZZY) PAL
76    ADVANCED DAISENRYAKU            JAPAN       we have Rev A, Rev 0 needed (does it exist?)
87    CAPTAIN PLANET              ASIA
98    DAVIS CUP TENNIS                JAPAN
r241752r241753
1413    FERRARI GRAND PRIX CHALLENGE        PAL     we have Rev A, Rev 0 needed (does it exist?)
1514    FIFA SOCCER                 JAPAN
1615    FIRE SHARK                  PAL     dump check
17    GAIN GROUND                 PAL     revision order check
1816    GALAXY FORCE II             ALL     we have Rev B, Rev 0 and Rev A needed (does it exist?)
1917    INTERNATIONAL SUPERSTAR SOCCER      BRAZIL
2018    JEWEL MASTER                USA/PAL     we have Rev A, Rev 0 needed (does it match Japanese release?)
r241752r241753
4240  * Ghoul Patrol
4341  * Beethoven's 2nd
4442  * Iron Hammer (from http://www.youtube.com/watch?v=uQG0tZQaKUg )
45  * Bill's Tomato Game (from http://www.youtube.com/watch?v=GeCuBe2xd8A )
4643  * Total Carnage
4744  * Monster Hunter
4845  * Brown 60
r241752r241753
110107<!-- Fully documented: confirmed dumps + PCB pics -->
111108
112109
110   <!-- Game is switched on reset -->
111   <software name="2fdizcsp">
112      <description>2 in 1 - Fantastic Dizzy &amp; Cosmic Spacehead (Euro)</description>
113      <year>1994</year>
114      <publisher>Codemasters</publisher>
115      <part name="cart" interface="megadriv_cart">
116         <feature name="slot" value="rom_cm2in1"/>
117         <feature name="pcb" value="SR16V7-2"/>
118         <feature name="u1" value="COSMIC SPACEHEAD MD MDCS E4F7"/>   <!-- location not really marked on PCB, using u1 for consistency -->
119         <feature name="u2" value="FANTASTIC DIZZY MD MDFD BB07"/>    <!-- location not really marked on PCB, using u2 for consistency -->
120         <feature name="left" value="GD74HC00"/>
121         <feature name="right" value="GD74HC74"/>
122         <dataarea name="rom" width="16" endianness="big" size="2621440">
123                <rom name="cosmic spacehead md mdcs e4f7.u1" size="1048576" crc="cb89e605" sha1="b5bc4a786639d1b8ae6de76f40dbe907b3f0b642" offset="0x000000"/>
124                <rom name="fantastic dizzy md mdfd bb07.u2" size="524288" crc="46447e7a" sha1="b320174d3b43f30b477818a27b4da30462a52003" offset="0x200000"/>
125         </dataarea>
126      </part>
127   </software>
128
113129<!-- Both Euro and USA confirmed -->
114130   <software name="688atsub">
115131      <description>688 Attack Sub (Euro, USA)</description>
r241752r241753
825841   </software>
826842
827843
844<!-- Only Euro is confirmed -->
845   <software name="barkley">
846      <description>Barkley Shut Up and Jam! (Euro, USA)</description>
847      <year>1993</year>
848      <publisher>Accolade</publisher>
849      <part name="cart" interface="megadriv_cart">
850         <feature name="pcb" value="ACSGPC291 REV B"/>
851         <feature name="ic1" value="9406 LHR ACBBSG"/>
852         <dataarea name="rom" width="16" endianness="big" size="1048576">
853            <rom name="9406 lhr acbbsg.ic1" size="1048576" crc="63fbf497" sha1="fc60a682412b4f7f851c5eb7f6ae68fcee3d2dd1" offset="0x000000"/>
854         </dataarea>
855      </part>
856<!-- LABEL(S)
857
858    ACCOLADE, INC.
859    9406 LHR
860    ACBBSG
861    (C)1994 ACCOLADE
862-->
863   </software>
864
865
828866   <software name="batman">
829867      <description>Batman (Euro)</description>
830868      <year>1992</year>
r241752r241753
11061144
11071145
11081146<!-- Only Euro confirmed -->
1147   <software name="bubsy">
1148      <description>Bubsy in Claws Encounters of the Furred Kind (Euro, USA)</description>
1149      <year>1993</year>
1150      <publisher>Accolade</publisher>
1151      <part name="cart" interface="megadriv_cart">
1152         <feature name="pcb" value="ACSGPC291 REV B"/>
1153         <feature name="u1" value="9330 LHR ACBUSG"/>   <!-- location not really marked on PCB, using u1 for consistency -->
1154         <dataarea name="rom" width="16" endianness="big" size="2097152">
1155            <rom name="9330 lhr acbusg.u1" size="2097152" crc="3e30d365" sha1="719140754763e5062947ef9e76ee748cfad38202" offset="0x000000"/>
1156         </dataarea>
1157      </part>
1158   </software>
1159
1160
1161<!-- Only Euro confirmed -->
1162   <software name="bubsy2">
1163      <description>Bubsy II (Euro, USA)</description>
1164      <year>1994</year>
1165      <publisher>Accolade</publisher>
1166      <part name="cart" interface="megadriv_cart">
1167         <feature name="pcb" value="7100-00002 REV C"/>
1168         <feature name="ic1" value="BU2SG 7500-00032 B"/>
1169         <dataarea name="rom" width="16" endianness="big" size="2097152">
1170            <rom name="bu2sg 7500-00032 b.ic1" size="2097152" crc="f8beff56" sha1="0cfb6c619798ba47f35069dea094fbc96f974ecb" offset="0x000000"/>
1171         </dataarea>
1172      </part>
1173   </software>
1174
1175
1176<!-- Only Euro confirmed -->
11091177   <software name="buckrog">
11101178      <description>Buck Rogers - Countdown to Doomsday (Euro, USA)</description>
11111179      <year>1991</year>
r241752r241753
11531221   </software>
11541222
11551223
1224<!-- Only Euro is confirmed -->
1225   <software name="bullvsla">
1226      <description>Bulls Vs Lakers and the NBA Playoffs (Euro, USA)</description>
1227      <year>1992</year>
1228      <publisher>Electronic Arts</publisher>
1229      <part name="cart" interface="megadriv_cart">
1230         <feature name="pcb" value="PWB SC42X1 REV D"/>
1231         <feature name="u1" value="BULLS 7099 BUL04"/> <!-- location not really marked on PCB, using u1 for consistency -->
1232         <dataarea name="rom" width="16" endianness="big" size="1048576">
1233            <rom name="bulls 7099 bul04.u1" size="1048576" crc="e56023a0" sha1="102652dcd218e3420ea9c4116231fa62f8fcd770" offset="0x000000"/>
1234         </dataarea>
1235      </part>
1236   </software>
1237
1238
11561239   <software name="burnforc">
11571240      <!-- Namcot PCB (blob epoxy chip) -->
11581241      <description>Burning Force (Euro)</description>
r241752r241753
14811564   </software>
14821565
14831566
1567   <software name="clue">
1568      <description>Clue (USA)</description>
1569      <year>1992</year>
1570      <publisher>Parker Brothers</publisher>
1571      <part name="cart" interface="megadriv_cart">
1572         <feature name="pcb" value="171-5703"/>
1573         <feature name="ic1" value="MPR-15228-S"/>
1574         <dataarea name="rom" width="16" endianness="big" size="524288">
1575            <rom name="mpr-15228-s.ic1" size="524288" crc="7753a296" sha1="d1f9114f41a3d6237e24392629fea5fbeb3f0b87" offset="0x000000"/>
1576         </dataarea>
1577      </part>
1578   </software>
1579
1580
14841581   <software name="collslam">
14851582      <description>College Slam (USA)</description>
14861583      <year>1996</year>
r241752r241753
21972294   </software>
21982295
21992296
2297   <software name="ejim2">
2298      <description>Earthworm Jim 2 (Euro)</description>
2299      <year>1995</year>
2300      <publisher>Virgin Interactive</publisher>
2301      <part name="cart" interface="megadriv_cart">
2302         <feature name="pcb" value="171-6570A"/>
2303         <feature name="ic1" value="MPR-18589-MX"/>
2304         <feature name="ic2" value="MPR-18677-MX"/>
2305         <feature name="ic3" value="SN74HC00N"/>
2306         <dataarea name="rom" width="16" endianness="big" size="3145728">
2307            <rom name="mpr-18589-mx.ic1" size="2097152" crc="2619cfc6" sha1="e4effd2801e1825f62b548d58edad09af4c8a97a" offset="0x000000"/>
2308            <rom name="mpr-18677-mx.ic2" size="1048576" crc="8e6a0ea8" sha1="b853945408fb945437a485684880d16e27c6a939" offset="0x200000"/>
2309         </dataarea>
2310      </part>
2311   </software>
2312
2313
22002314<!-- Only Euro is confirmed -->
22012315   <software name="ecco">
22022316      <description>Ecco the Dolphin (Euro, USA, Kor)</description>
r241752r241753
29093023   </software>
29103024
29113025
3026   <software name="formula1" cloneof="f1">
3027      <description>Formula One (USA)</description>
3028      <year>1993</year>
3029      <publisher>Tengen</publisher>
3030      <part name="cart" interface="megadriv_cart">
3031         <feature name="pcb" value="171-5978B"/>
3032         <feature name="u1" value="MPR-15987-SM"/>   <!-- location not really marked on PCB, using u1 for consistency -->
3033         <dataarea name="rom" width="16" endianness="big" size="1048576">
3034            <rom name="mpr-15987-sm.u1" size="1048576" crc="ccd73738" sha1="8f8edd8e6846cbba1b46f8eb9015b195ccc4acf9" offset="0x000000"/>
3035         </dataarea>
3036      </part>
3037   </software>
3038
3039
3040   <software name="funngame">
3041      <description>Fun 'N Games (Euro)</description>
3042      <year>1993</year>
3043      <publisher>Sony Imagesoft</publisher>
3044      <part name="cart" interface="megadriv_cart">
3045         <feature name="pcb" value="171-5978BA"/>
3046         <feature name="u1" value="MPR-17016 T69"/>   <!-- location not really marked on PCB, using u1 for consistency -->
3047         <dataarea name="rom" width="16" endianness="big" size="1048576">
3048            <rom name="mpr-17016 t69.u1" size="1048576" crc="da4ab3cd" sha1="3677dfe5450c0800d29cfff31f226389696bfb32" offset="0x000000"/>
3049         </dataarea>
3050      </part>
3051   </software>
3052
3053
29123054<!-- Only Euro is confirmed -->
29133055   <software name="gground">
29143056      <description>Gain Ground (World, Rev. A)</description>
r241752r241753
30073149   </software>
30083150
30093151
3152   <software name="sbtank">
3153      <description>Garry Kitchen's Super Battletank - War in the Gulf (USA)</description>
3154      <year>1992</year>
3155      <publisher>Absolute Entertainment</publisher>
3156         <feature name="pcb" value="171-5703"/>
3157         <feature name="ic1" value="MPR-15273 W95"/>
3158      <part name="cart" interface="megadriv_cart">
3159         <dataarea name="rom" width="16" endianness="big" size="524288">
3160            <rom name="mpr-15273 w95.ic1" size="524288" crc="b0b5e3c9" sha1="4ce9aaaa9d3f98e1747af12ad488b6bdbde1afb4" offset="0x000000"/>
3161         </dataarea>
3162      </part>
3163   </software>
3164
3165
30103166<!-- Only Euro is confirmed -->
30113167   <software name="genchaos">
30123168      <description>General Chaos (Euro, USA)</description>
r241752r241753
33263482
33273483
33283484<!-- Only Euro is confirmed -->
3485   <software name="hardball">
3486      <description>HardBall! (Euro, USA)</description>
3487      <year>1991</year>
3488      <publisher>Ballistic</publisher>
3489      <part name="cart" interface="megadriv_cart">
3490         <feature name="pcb" value="ACSGPC291 REV B"/>
3491         <feature name="ic1" value="ACHBSG491 W40"/>
3492         <dataarea name="rom" width="16" endianness="big" size="1048576">
3493            <rom name="achbsg491 w40.ic1" size="1048576" crc="bd1b9a04" sha1="42d42af36b4a69f0adb38aaa7fec32eb8c44c349" offset="0x000000"/>
3494         </dataarea>
3495      </part>
3496   </software>
3497
3498
3499<!-- Only Euro is confirmed -->
33293500   <software name="hardbl94">
33303501      <description>HardBall '94 (Euro, USA)</description>
33313502      <year>1994</year>
r241752r241753
35543725   </software>
35553726
35563727
3728   <software name="indycrusu" cloneof="indycrus">
3729      <description>Indiana Jones and the Last Crusade (USA)</description>
3730      <year>1992</year>
3731      <publisher>U.S. Gold</publisher>
3732      <part name="cart" interface="megadriv_cart">
3733         <feature name="pcb" value="171-5978BA"/>
3734         <feature name="u1" value="MPR-15235-T"/>   <!-- location not really marked on PCB, using u1 for consistency -->
3735         <dataarea name="rom" width="16" endianness="big" size="1048576">
3736            <rom name="mpr-15235-t.u1" size="1048576" crc="3599a3fd" sha1="82758a8a47c4f1f0e990bd50b773b2c4300f616e" offset="0x000000"/>
3737         </dataarea>
3738      </part>
3739   </software>
3740
3741
35573742   <software name="intrugby">
35583743      <description>International Rugby (Euro)</description>
35593744      <year>1993</year>
r241752r241753
36423827   </software>
36433828
36443829
3830<!-- Only Euro is confirmed -->
3831   <software name="nicklaus">
3832      <description>Jack Nicklaus' Power Challenge Golf (Euro, USA)</description>
3833      <year>1993</year>
3834      <publisher>Accolade</publisher>
3835      <part name="cart" interface="megadriv_cart">
3836         <feature name="slot" value="rom_sram"/>
3837         <feature name="pcb" value="ACSGEE1191 REV A"/>
3838         <feature name="u1" value="9323 LHR ACJVSG"/>
3839         <feature name="u2" value="KM28C16-20"/>
3840         <feature name="u3" value="74HC00AP"/>
3841         <dataarea name="rom" width="16" endianness="big" size="1048576">
3842            <rom name="9323 lhr acjvsg.u1" size="1048576" crc="5545e909" sha1="8d7edfe87da732ecd9820a6afbb9c5700cce43b2" offset="0x000000"/>
3843         </dataarea>
3844         <dataarea name="sram" size="4096">
3845         </dataarea>
3846      </part>
3847   </software>
3848
3849
36453850<!-- Only Euro is confirmed, USA with label C55-01? needs to be verified -->
36463851   <software name="jbdougko">
36473852      <description>James 'Buster' Douglas Knockout Boxing (Euro, USA)</description>
r241752r241753
37363941   </software>
37373942
37383943
3944   <software name="jennifct" cloneof="grandsl">
3945      <description>Jennifer Capriati Tennis (USA)</description>
3946      <year>1992</year>
3947      <publisher>Renovation</publisher>
3948      <part name="cart" interface="megadriv_cart">
3949         <feature name="pcb" value="171-5703"/>
3950         <feature name="ic1" value="MPR-15055 W87"/>
3951         <dataarea name="rom" width="16" endianness="big" size="524288">
3952            <rom name="mpr-15055 w87.ic1" size="524288" crc="ab2abc8e" sha1="8d72ea31c87b1a229098407e9c59a46e65f996a2" offset="0x000000"/>
3953         </dataarea>
3954      </part>
3955   </software>
3956
3957
37393958<!-- Only Euro is confirmed -->
37403959   <software name="jewelms">
37413960      <description>Jewel Master (Euro, USA, Rev. A)</description>
r241752r241753
47804999   </software>
47815000
47825001
5002<!-- same dump confirmed on a no J-cart cart -->
5003   <software name="micromc2">
5004      <description>Micro Machines 2 - Turbo Tournament (Euro, J-Cart)</description>
5005      <year>1994</year>
5006      <publisher>Codemasters</publisher>
5007      <part name="cart" interface="megadriv_cart">
5008         <feature name="slot" value="rom_codemast"/>
5009         <feature name="pcb" value="SR16V4-1, SRJCV2-1 (J-CART)"/>
5010         <feature name="u1" value="MICRO MACHINES2 MDM 2BEAD"/> <!-- location not really marked on PCB, using u1 for consistency -->
5011         <!-- J-cart version also contains additional ICs for the controller ports -->
5012         <dataarea name="rom" width="16" endianness="big" size="1048576">
5013            <rom name="micro machines2 mdm 2bead.u1" size="1048576" crc="42bfb7eb" sha1="ab29077a6a5c2ccc777b0bf22f4d5908401f4d47" offset="0x000000"/>
5014         </dataarea>
5015      </part>
5016   </software>
5017
5018
5019<!-- Only Euro is confirmed -->
5020   <software name="cosmic">
5021      <description>Cosmic Spacehead (Euro, USA)</description>
5022      <year>1993</year>
5023      <publisher>Codemasters</publisher>
5024      <part name="cart" interface="megadriv_cart">
5025         <feature name="pcb" value="SR16V4-1"/>
5026         <feature name="u1" value="COSMIC SPACEHEAD MDCS 2D2E"/> <!-- location not really marked on PCB, using u1 for consistency -->
5027         <dataarea name="rom" width="16" endianness="big" size="1048576">
5028            <rom name="cosmic spacehead mdcs 2d2e.u1" size="1048576" crc="c593d31c" sha1="95a3eb13e5d28db8c8ea5ff3e95b0d3e614def69" offset="0x000000"/>
5029         </dataarea>
5030      </part>
5031   </software>
5032
5033
47835034   <software name="mmprtm">
47845035      <description>Mighty Morphin Power Rangers - The Movie (Euro)</description>
47855036      <year>1995</year>
r241752r241753
51305381   </software>
51315382
51325383
5384<!-- Only Euro is confirmed -->
5385   <software name="nbaliv97">
5386      <description>NBA Live 97 (Euro, USA)</description>
5387      <year>1996</year>
5388      <publisher>Electronic Arts</publisher>
5389      <part name="cart" interface="megadriv_cart">
5390         <feature name="slot" value="rom_sram"/>
5391         <feature name="pcb" value="PWA P10002 REV M"/>
5392         <feature name="u1" value="NBA 97 B2"/>
5393         <feature name="u2" value="GM76C88ALK-15"/>
5394         <feature name="u3" value="74HC138N"/>
5395         <feature name="u4" value="BA6162"/>
5396         <feature name="batt" value="(Lithium Cell)"/>
5397         <dataarea name="rom" width="16" endianness="big" size="2097152">
5398            <rom name="nba 97 b2.u1" size="2097152" crc="7024843a" sha1="1671451ab4ab6991e13db70671054c0f2c652a95" offset="0x000000"/>
5399         </dataarea>
5400         <dataarea name="sram" size="16384">
5401         </dataarea>
5402      </part>
5403   </software>
5404
5405
51335406   <software name="bullvslaj" cloneof="bullvsla">
51345407      <description>NBA Pro Basketball - Bulls Vs Lakers (Jpn)</description>
51355408      <year>1993</year>
r241752r241753
56335906
56345907
56355908<!-- Only Euro is confirmed -->
5909   <software name="pgaeuro">
5910      <description>PGA European Tour (Euro, USA)</description>
5911      <year>1994</year>
5912      <publisher>Electronic Arts</publisher>
5913      <part name="cart" interface="megadriv_cart">
5914         <feature name="slot" value="rom_sram"/>
5915         <feature name="pcb" value="PWA P10002 REV H"/>
5916         <feature name="u1" value="EURO EUR003"/>
5917         <feature name="u2" value="GM76C88ALK-15"/>
5918         <feature name="u3" value="GD74LS138"/>
5919         <feature name="u4" value="331-1026B"/>
5920         <feature name="batt" value="(Lithium Cell)"/>
5921         <dataarea name="rom" width="16" endianness="big" size="1048576">
5922            <rom name="euro euro03.u1" size="1048576" crc="8ca45acd" sha1="640615be6891a8457d94bb81b0e8e1fa7c5119a8" offset="0x000000"/>
5923         </dataarea>
5924         <dataarea name="sram" size="16384">
5925         </dataarea>
5926      </part>
5927   </software>
5928
5929
5930<!-- Only Euro is confirmed -->
56365931   <software name="pga96">
56375932      <description>PGA Tour 96 (Euro, USA)</description>
56385933      <year>1995</year>
r241752r241753
57236018   </software>
57246019
57256020
6021<!-- Only Euro is confirmed -->
6022   <software name="pga3">
6023      <description>PGA Tour Golf III (Euro, USA)</description>
6024      <year>1994</year>
6025      <publisher>Electronic Arts</publisher>
6026      <part name="cart" interface="megadriv_cart">
6027         <feature name="slot" value="rom_sram"/>
6028         <feature name="pcb" value="PWA P10002 REV K"/>
6029         <feature name="u1" value="PGA3 PGA3B2"/>
6030         <feature name="u2" value="GM76C88ALK-15"/>
6031         <feature name="u3" value="GD74LS138"/>
6032         <feature name="u4" value="438-1026B"/>
6033         <feature name="batt" value="(Lithium Cell)"/>
6034         <dataarea name="rom" width="16" endianness="big" size="2097152">
6035            <rom name="pga3 pga3b2.u1" size="2097152" crc="aeb3f65f" sha1="702707efcbfe229f6e190f2b6c71b6f53ae9ec36" offset="0x000000"/>
6036         </dataarea>
6037         <dataarea name="sram" size="16384">
6038         </dataarea>
6039      </part>
6040   </software>
6041
6042
57266043   <software name="phantom">
57276044      <description>Phantom 2040 (Euro)</description>
57286045      <year>1995</year>
r241752r241753
58736190   </software>
58746191
58756192
6193<!-- does mpr-18875 belong to the US version or to an alt PCB with a single ROM?  -->
6194   <software name="pocahont">
6195      <description>Pocahontas (Euro)</description>
6196      <year>1996</year>
6197      <publisher>Sega</publisher>
6198      <part name="cart" interface="megadriv_cart">
6199         <feature name="pcb" value="171-6570A"/>
6200         <feature name="ic1" value="MPR-19084-MX"/>
6201         <feature name="ic2" value="MPR-19085-MX"/>
6202         <feature name="ic3" value="SN74HC00N"/>
6203         <dataarea name="rom" width="16" endianness="big" size="4194304">
6204            <rom name="mpr-19084-mx.ic1" size="2097152" crc="6bcf72de" sha1="d1823b946980d9e0763e35e2d794f3c931c99db5" offset="0x000000"/>
6205            <rom name="mpr-19085-mx.ic2" size="2097152" crc="cc453625" sha1="a711ae8cf75d88af0d14ceda79c5c0bb3b318efe" offset="0x200000"/>
6206         </dataarea>
6207      </part>
6208   </software>
6209
6210
58766211   <software name="pdrive">
58776212      <description>Power Drive (Euro)</description>
58786213      <year>1994</year>
r241752r241753
59026237   </software>
59036238
59046239
5905<!-- Only Euro is confirmed -->
6240<!-- Both Euro and USA are confirmed -->
59066241   <software name="predatr2">
59076242      <description>Predator 2 (Euro, USA)</description>
59086243      <year>1992</year>
59096244      <publisher>Arena</publisher>
59106245      <part name="cart" interface="megadriv_cart">
5911         <feature name="pcb" value="670100 REV 1"/>
6246         <feature name="pcb" value="670100 REV 1 (EUR), 670100 REV 5 (USA)"/>
59126247         <feature name="ic1" value="MPR-15069 W71"/>
59136248         <dataarea name="rom" width="16" endianness="big" size="1048576">
59146249            <rom name="mpr-15069 w71.ic1" size="1048576" crc="bdba113e" sha1="0d482bae2922c81c8bc7500a62c396b038978114" offset="0x000000"/>
r241752r241753
59176252   </software>
59186253
59196254
6255   <software name="prmanger">
6256      <description>Premier Manager (Euro)</description>
6257      <year>1995</year>
6258      <publisher>Sega</publisher>
6259      <part name="cart" interface="megadriv_cart">
6260         <feature name="slot" value="rom_sram"/>
6261         <feature name="pcb" value="171-6021A"/>
6262         <feature name="ic1" value="MPR-18473-U"/>
6263         <feature name="ic2" value="UM62256D-70LL"/>
6264         <feature name="ic3" value="BA6162"/>
6265         <feature name="ic4" value="SN74HC00N"/>
6266         <feature name="ic5" value="SN74HC00N"/>
6267         <feature name="bat" value="(Lithium Cell)"/>
6268         <dataarea name="rom" width="16" endianness="big" size="1048576">
6269            <rom name="mpr-18473-u.ic1" size="1048576" crc="303b889f" sha1="2916e5ef628e077cde87be873e0ea2507ef5c844" offset="0x000000"/>
6270         </dataarea>
6271         <dataarea name="sram" size="65536">
6272         </dataarea>
6273      </part>
6274   </software>
6275
6276
59206277   <software name="prmang97">
59216278      <description>Premier Manager 97 (Euro)</description>
59226279      <year>1996</year>
r241752r241753
59856342   </software>
59866343
59876344
6345   <software name="psycho1" cloneof="psycho">
6346      <description>Psycho Pinball (Euro, 199409)</description>
6347      <year>1994</year>
6348      <publisher>Codemasters</publisher>
6349      <part name="cart" interface="megadriv_cart">
6350         <feature name="pcb" value="SR16V4-0"/>
6351         <feature name="u1" value="CODEMASTERS PSYCHO PINBALL MDPP021F"/>   <!-- location not really marked on PCB, using u1 for consistency -->
6352         <dataarea name="rom" width="16" endianness="big" size="2097152">
6353            <rom name="codemasters psycho pinball mdpp021f.u1" size="2097152" crc="1ab8f1a1" sha1="810688f1ffb736ae1790803e1c6804caaa24c15a" offset="0x000000"/>
6354         </dataarea>
6355      </part>
6356   </software>
6357
6358
59886359   <software name="puggsy">
59896360      <description>Puggsy (Euro)</description>
59906361      <year>1993</year>
r241752r241753
64266797   </software>
64276798
64286799
6800   <software name="slammast">
6801      <description>Saturday Night Slammasters (Euro)</description>
6802      <year>1994</year>
6803      <publisher>Capcom</publisher>
6804      <part name="cart" interface="megadriv_cart">
6805         <feature name="pcb" value="171-6570A"/>
6806         <feature name="ic1" value="MPR-17902-F"/>
6807         <feature name="ic2" value="MPR-17903-F"/>
6808         <feature name="ic3" value="74HC00N"/>
6809         <dataarea name="rom" width="16" endianness="big" size="4194304">
6810            <rom name="mpr-17902-f.ic1" size="2097152" crc="bfacdf54" sha1="2c9e878c0a9bb44ec7d71caf7da986f1a7ebdaf8" offset="0x000000"/>
6811            <rom name="mpr-17903-f.ic2" size="2097152" crc="3a20db0a" sha1="f48873b2662c1ccf5635d5331d92f58175982e6f" offset="0x200000"/>
6812         </dataarea>
6813      </part>
6814   </software>
6815
6816
64296817   <software name="slammastu" cloneof="slammast">
64306818      <description>Saturday Night Slammasters (USA)</description>
64316819      <year>1994</year>
r241752r241753
67327120   </software>
67337121
67347122
6735<!-- Only Euro is confirmed -->
7123<!-- Both Euro and USA are confirmed -->
67367124   <software name="bartnigh">
67377125      <description>The Simpsons - Bart's Nightmare (Euro, USA)</description>
67387126      <year>1993</year>
67397127      <publisher>Flying Edge</publisher>
67407128      <part name="cart" interface="megadriv_cart">
6741         <feature name="pcb" value="171-5978BA"/>
7129         <feature name="pcb" value="171-5978BA (EUR), 171-5978B (USA)"/>
67427130         <feature name="u1" value="MPR-15762 T53"/> <!-- location not really marked on PCB, using u1 for consistency -->
67437131         <dataarea name="rom" width="16" endianness="big" size="1048576">
67447132            <rom name="mpr-15762 t53.u1" size="1048576" crc="24d7507c" sha1="fb95b7fdf12dcf62883dabf65d2bf8ffa83786fc" offset="0x000000"/>
r241752r241753
68597247   </software>
68607248
68617249
7250   <software name="sspinu" cloneof="sspin">
7251      <description>Sonic Spinball (USA)</description>
7252      <year>1993</year>
7253      <publisher>Sega</publisher>
7254      <part name="cart" interface="megadriv_cart">
7255         <feature name="pcb" value="171-5978BA"/>
7256         <feature name="u1" value="MPR-15753 T71"/>   <!-- location not really marked on PCB, using u1 for consistency -->
7257         <dataarea name="rom" width="16" endianness="big" size="1048576">
7258            <rom name="mpr-15753 t71.u1" size="1048576" crc="677206cb" sha1="24bf6342b98c09775089c9f39cfb2f6fbe7806f7" offset="0x000000"/>
7259         </dataarea>
7260      </part>
7261   </software>
7262
7263
68627264<!-- Both Euro and USA confirmed -->
68637265   <software name="sonic">
68647266      <description>Sonic the Hedgehog (Euro, USA)</description>
r241752r241753
68747276   </software>
68757277
68767278
7279<!-- Jpn only is confirmed -->
7280   <software name="sonicj" cloneof="sonic">
7281      <description>Sonic the Hedgehog (Jpn, Kor)</description>
7282      <year>1991</year>
7283      <publisher>Sega</publisher>
7284      <info name="serial" value="G-4049"/>
7285      <info name="release" value="19910726"/>
7286      <info name="alt_title" value="ソニック・ザ・ヘッジホッグ"/>
7287      <part name="cart" interface="megadriv_cart">
7288         <feature name="pcb" value="171-5703"/>
7289         <feature name="ic1" value="MPR-13933 W33"/>
7290         <dataarea name="rom" width="16" endianness="big" size="524288">
7291            <rom name="mpr-13933 w33.ic1" size="524288" crc="afe05eee" sha1="69e102855d4389c3fd1a8f3dc7d193f8eee5fe5b" offset="0x000000"/>
7292         </dataarea>
7293      </part>
7294   </software>
7295
7296
68777297<!-- Euro and Jpn are confirmed -->
68787298   <software name="sonic2">
68797299      <description>Sonic the Hedgehog 2 (World, Rev. A)</description>
r241752r241753
69447364   </software>
69457365
69467366
7367   <software name="sparkstr">
7368      <description>Sparkster (Euro)</description>
7369      <year>1994</year>
7370      <publisher>Konami</publisher>
7371      <part name="cart" interface="megadriv_cart">
7372         <feature name="pcb" value="353536"/>
7373         <feature name="u1" value="FX011A1"/>   <!-- location not really marked on PCB, using u1 for consistency -->
7374         <dataarea name="rom" width="16" endianness="big" size="1048576">
7375            <rom name="fx011a1.u1" size="1048576" crc="d63e9f2d" sha1="91057f22c5cea9bf08edf62862c56b939d570770" offset="0x000000"/>
7376         </dataarea>
7377      </part>
7378   </software>
7379
7380
69477381   <software name="speedbl2">
69487382      <description>Speedball 2 (Euro)</description>
69497383      <year>1992</year>
r241752r241753
79488382   </software>
79498383
79508384
7951<!-- Only Euro is confirmed -->
8385<!-- Euro and USA confirmed -->
79528386   <software name="toejama" cloneof="toejam">
79538387      <description>Toe Jam &amp; Earl (World)</description>
79548388      <year>1992</year>
r241752r241753
79588392      <info name="alt_title" value="トージャム&amp;アール"/>
79598393      <part name="cart" interface="megadriv_cart">
79608394         <feature name="pcb" value="171-5978BA"/>
7961         <feature name="u1" value="MPR-14236-F"/>   <!-- location not really marked on PCB, using u1 for consistency -->
8395         <feature name="u1" value="MPR-14236-F, MPR-14236-H"/>   <!-- location not really marked on PCB, using u1 for consistency -->
79628396         <dataarea name="rom" width="16" endianness="big" size="1048576">
79638397            <rom name="mpr-14236-f.ic1" size="1048576" crc="d1b36786" sha1="7f82d8b57fff88bdca5d8aff85b01e231dc1239a" offset="0x000000"/>
79648398         </dataarea>
r241752r241753
83528786   </software>
83538787
83548788
8789<!-- Only Euro is confirmed -->
8790   <software name="vpinball">
8791      <description>Virtual Pinball (Euro, USA)</description>
8792      <year>1993</year>
8793      <publisher>Electronic Arts</publisher>
8794      <part name="cart" interface="megadriv_cart">
8795         <feature name="slot" value="rom_sram"/>
8796         <feature name="pcb" value="PWA P10002 REV H"/>
8797         <feature name="u1" value="PINBALL VPBALL03"/>
8798         <feature name="u2" value="GM76C88ALK-15"/>
8799         <feature name="u3" value="GD74LS138"/>
8800         <feature name="u4" value="365-1026B"/>
8801         <feature name="batt" value="(Lithium Cell)"/>
8802         <dataarea name="rom" width="16" endianness="big" size="1048576">
8803            <rom name="pinball vpball03.u1" size="1048576" crc="d63473aa" sha1="cd066bb54e0a4c21821639728893462b0218597e" offset="0x000000"/>
8804         </dataarea>
8805         <dataarea name="sram" size="16384">
8806         </dataarea>
8807      </part>
8808   </software>
8809
8810
83558811<!-- Both Euro and USA confirmed -->
83568812   <software name="vrtroop">
83578813      <description>VR Troopers (Euro, USA)</description>
r241752r241753
84658921      <publisher>Ballistic</publisher>
84668922      <part name="cart" interface="megadriv_cart">
84678923         <feature name="pcb" value="ACSGEE1191 REV A"/>
8468         <feature name="u1" value="9341 (c) 1/92 ACWCSG-1"/>
8924         <feature name="u1" value="9341 (c) 1/92 ACWCSG-1"/> <!-- Also found with 9341 replaced by 9240, and 9405 -->
84698925         <feature name="u2" value="AT28C1616E, KM28C16-20"/>
84708926         <feature name="u3" value="KS74HCTLS00N"/>
84718927         <dataarea name="rom" width="16" endianness="big" size="1048576">
r241752r241753
87569212
87579213<!-- Only Euro is confirmed -->
87589214   <software name="wwfroyal">
8759      <description>WWF Royal Rumble (World)</description>
9215      <description>WWF Royal Rumble (Euro)</description>
87609216      <year>1994</year>
8761      <publisher>Flying Edge</publisher> <!-- This has been published by Acclaim in Jpn, in fact -->
8762      <info name="serial" value="T-81043 (JPN)"/>
8763      <info name="release" value="19940325"/>
8764      <info name="alt_title" value="WWFロイヤルランブル"/>
9217      <publisher>Flying Edge</publisher>
87659218      <part name="cart" interface="megadriv_cart">
87669219         <feature name="pcb" value="670116 REV 2"/>
87679220         <feature name="ic1" value="WWFRR-GEN LO VER 1.00"/>
r241752r241753
87849237   </software>
87859238
87869239
9240<!-- Only USA is confirmed -->
9241   <software name="wwfroyalu" cloneof="wwfroyal">
9242      <description>WWF Royal Rumble (Jpn, USA)</description>
9243      <year>1994</year>
9244      <publisher>Flying Edge</publisher> <!-- This has been published by Acclaim in Jpn, in fact -->
9245      <info name="serial" value="T-81043 (JPN)"/>
9246      <info name="release" value="19940325"/>
9247      <info name="alt_title" value="WWFロイヤルランブル"/>
9248      <part name="cart" interface="megadriv_cart">
9249         <feature name="pcb" value="670115 REV 4"/>
9250         <feature name="ic1" value="MPR-15935-SM"/>
9251         <dataarea name="rom" width="16" endianness="big" size="2097152">
9252            <rom name="mpr-15935-sm.ic1" size="2097152" crc="b69dc53e" sha1="34e85015b8681ce15ad4777a60c81297ccf718b1" offset="0x000000"/>
9253         </dataarea>
9254      </part>
9255   </software>
9256
9257
87879258<!-- Only Euro is confirmed -->
87889259   <software name="wwfsup">
87899260      <description>WWF Super WrestleMania (Euro, USA)</description>
r241752r241753
89179388   </software>
89189389
89199390
9391   <software name="zool">
9392      <description>Zool (Euro)</description>
9393      <year>1993</year>
9394      <publisher>Electronic Arts</publisher>
9395      <info name="alt_title" value="Zool - Ninja of the &quot;Nth&quot; Dimension (Box)"/>
9396      <part name="cart" interface="megadriv_cart">
9397         <feature name="pcb" value="PWA P10001 REV H"/>
9398         <feature name="u1" value="ZOOL ZOOL04"/>
9399         <dataarea name="rom" width="16" endianness="big" size="1048576">
9400            <rom name="zool zool04.u1" size="1048576" crc="1ee58b03" sha1="cab14f63b7d00b35a11a3a7f60cf231199121dc8" offset="0x000000"/>
9401         </dataarea>
9402      </part>
9403   </software>
9404
9405
89209406<!-- Only Euro is confirmed -->
9407   <software name="rugbywc">
9408      <description>Rugby World Cup 1995 (Euro, USA)</description>
9409      <year>1994</year>
9410      <publisher>Electronic Arts</publisher>
9411      <part name="cart" interface="megadriv_cart">
9412         <feature name="pcb" value="PWA P10001 REV H"/>
9413         <feature name="u1" value="RUGBY RUGBYB21"/>
9414         <dataarea name="rom" width="16" endianness="big" size="2097152">
9415            <rom name="rugby rugbyb21.u1" size="2097152" crc="61f90a8a" sha1="9b435c82b612e23cb512efaebf4d35b203339e44" offset="0x000000"/>
9416         </dataarea>
9417      </part>
9418   </software>
9419
9420
9421<!-- Only Euro is confirmed -->
89219422   <software name="zoom">
89229423      <description>Zoom! (World)</description>
89239424      <year>1990</year>
r241752r241753
89389439
89399440<!-- Partially documented: confirmed dumps, missing additional info (a PCB pic would be of help to fill missing details) -->
89409441
8941   <software name="micromc2">
8942      <description>Micro Machines 2 - Turbo Tournament (Euro, J-Cart)</description>
8943      <year>1994</year>
8944      <publisher>Codemasters</publisher>
8945      <part name="cart" interface="megadriv_cart">
8946         <feature name="slot" value="rom_codemast"/>
8947         <feature name="pcb" value="SRJCV2-1"/>
8948         <feature name="u1" value="MICRO MACHINES2 MDM 2BEAD"/> <!-- location not really marked on PCB, using u1 for consistency -->
8949         <!-- J-cart version also contains additional ICs for the controller ports -->
8950         <dataarea name="rom" width="16" endianness="big" size="1048576">
8951            <rom name="micro machines2 mdm 2bead.u1" size="1048576" crc="42bfb7eb" sha1="ab29077a6a5c2ccc777b0bf22f4d5908401f4d47" offset="0x000000"/>
8952         </dataarea>
8953      </part>
8954   </software>
8955
8956
89579442   <software name="microm96">
89589443      <description>Micro Machines Turbo Tournament 96 (Euro, v1.1, J-Cart)</description>
89599444      <year>1995</year>
r241752r241753
90989583      </part>
90999584   </software>
91009585
9101   <software name="psycho1" cloneof="psycho">
9102      <description>Psycho Pinball (Euro, 199409)</description>
9103      <year>1994</year>
9104      <publisher>Codemasters</publisher>
9105      <part name="cart" interface="megadriv_cart">
9106         <feature name="pcb" value="SR16V4-0"/>
9107         <dataarea name="rom" width="16" endianness="big" size="2097152">
9108            <rom name="mdpp021f.bin" size="2097152" crc="1ab8f1a1" sha1="810688f1ffb736ae1790803e1c6804caaa24c15a" offset="0x000000"/>
9109         </dataarea>
9110      </part>
9111   </software>
9112
91139586   <software name="micromac">
91149587      <description>Micro Machines (Euro, USA)</description>
91159588      <year>1993</year>
r241752r241753
91319604         <feature name="slot" value="rom_cm2in1"/>
91329605         <dataarea name="rom" width="16" endianness="big" size="2621440">
91339606            <rom name="mdppf821.bin" size="2097152" crc="32dd8351" sha1="928f46ca87886c6e72d10f7c9db29b09e483bc49" offset="0x000000"/>
9134            <rom name="mdmm_acd3.bin" size="524288" crc="50081a0b" sha1="56a8844c376f2e79e92cf128681fa3fef81c36d6" offset="0x200000"/>
9607            <rom name="mdmm acd3.bin" size="524288" crc="50081a0b" sha1="56a8844c376f2e79e92cf128681fa3fef81c36d6" offset="0x200000"/>
91359608         </dataarea>
91369609      </part>
91379610   </software>
r241752r241753
990110374      </part>
990210375   </software>
990310376
9904   <software name="arrow1" cloneof="arrow">
9905      <description>Arrow Flash (World, Alt)</description>
10377<!-- This dump was originally tagged as Alt, but it matched Jeckidy's proto dump (cart with label ARROW FLASH #625A) -->
10378   <software name="arrowp" cloneof="arrow">
10379      <description>Arrow Flash (USA, Prototype)</description>
990610380      <year>1990</year>
9907      <publisher>Sega</publisher>
9908      <info name="serial" value="G-4039 (JPN)"/>
9909      <info name="release" value="19901020 (JPN)"/>
9910      <info name="alt_title" value="アローフラッシュ"/>
10381      <publisher>Renovation</publisher>
991110382      <part name="cart" interface="megadriv_cart">
991210383         <dataarea name="rom" width="16" endianness="big" size="524288">
9913            <rom name="arrow flash (world) (alt).bin" size="524288" crc="4d89e66b" sha1="916524d2b403a633108cf457eec13b4df7384d95" offset="0x000000"/>
10384            <rom name="arrowflash.a04c.bin" size="524288" crc="4d89e66b" sha1="916524d2b403a633108cf457eec13b4df7384d95" offset="0x000000"/>
991410385         </dataarea>
991510386      </part>
991610387   </software>
r241752r241753
1037410845      </part>
1037510846   </software>
1037610847
10377   <software name="barkley">
10378      <description>Barkley Shut Up and Jam! (Euro, USA)</description>
10379      <year>1993</year>
10380      <publisher>Accolade</publisher>
10381      <part name="cart" interface="megadriv_cart">
10382         <dataarea name="rom" width="16" endianness="big" size="1048576">
10383            <rom name="barkley shut up and jam! (euro, usa).bin" size="1048576" crc="63fbf497" sha1="fc60a682412b4f7f851c5eb7f6ae68fcee3d2dd1" offset="0x000000"/>
10384         </dataarea>
10385      </part>
10386   </software>
10387
1038810848   <software name="barkley2">
1038910849      <description>Barkley Shut Up and Jam! 2 (USA)</description>
1039010850      <year>1995</year>
r241752r241753
1138011840      </part>
1138111841   </software>
1138211842
11383   <software name="bubsy">
11384      <description>Bubsy in Claws Encounters of the Furred Kind (Euro, USA)</description>
11385      <year>1993</year>
11386      <publisher>Accolade</publisher>
11387      <part name="cart" interface="megadriv_cart">
11388         <!-- Dump To Be Confirmed -->
11389         <feature name="pcb" value="ACSGBSW"/>
11390         <feature name="u1" value="ACBUSGM"/>   <!-- location not really marked on PCB, using u1 for consistency -->
11391         <dataarea name="rom" width="16" endianness="big" size="2097152">
11392            <rom name="acbusgm.u1" size="2097152" crc="3e30d365" sha1="719140754763e5062947ef9e76ee748cfad38202" offset="0x000000"/>
11393         </dataarea>
11394      </part>
11395   </software>
11396
11397   <software name="bubsy2">
11398      <description>Bubsy II (Euro, USA)</description>
11399      <year>1994</year>
11400      <publisher>Accolade</publisher>
11401      <part name="cart" interface="megadriv_cart">
11402         <!-- Dump To Be Confirmed -->
11403         <feature name="pcb" value="7100 00002"/>
11404         <feature name="u1" value="BU2SG"/>   <!-- location not really marked on PCB, using u1 for consistency -->
11405         <dataarea name="rom" width="16" endianness="big" size="2097152">
11406            <rom name="bu2sg.u1" size="2097152" crc="f8beff56" sha1="0cfb6c619798ba47f35069dea094fbc96f974ecb" offset="0x000000"/>
11407         </dataarea>
11408      </part>
11409   </software>
11410
1141111843   <software name="budokanu" cloneof="budokan">
1141211844      <description>Budokan - The Martial Spirit (USA)</description>
1141311845      <year>1990</year>
r241752r241753
1144111873      </part>
1144211874   </software>
1144311875
11444   <software name="bullvsla">
11445      <description>Bulls Vs Lakers and the NBA Playoffs (Euro, USA)</description>
11446      <year>1992</year>
11447      <publisher>Electronic Arts</publisher>
11448      <part name="cart" interface="megadriv_cart">
11449         <dataarea name="rom" width="16" endianness="big" size="1048576">
11450            <rom name="bulls vs lakers and the nba playoffs (euro, usa).bin" size="1048576" crc="e56023a0" sha1="102652dcd218e3420ea9c4116231fa62f8fcd770" offset="0x000000"/>
11451         </dataarea>
11452      </part>
11453   </software>
11454
1145511876   <software name="burnforcu" cloneof="burnforc">
1145611877      <description>Burning Force (USA)</description>
1145711878      <year>1990</year>
r241752r241753
1188312304      </part>
1188412305   </software>
1188512306
11886   <software name="clue">
11887      <description>Clue (USA)</description>
11888      <year>1992</year>
11889      <publisher>Parker Brothers</publisher>
11890      <part name="cart" interface="megadriv_cart">
11891         <dataarea name="rom" width="16" endianness="big" size="524288">
11892            <rom name="clue (usa).bin" size="524288" crc="7753a296" sha1="d1f9114f41a3d6237e24392629fea5fbeb3f0b87" offset="0x000000"/>
11893         </dataarea>
11894      </part>
11895   </software>
11896
1189712307   <software name="coachk">
1189812308      <description>Coach K College Basketball (USA)</description>
1189912309      <year>1995</year>
r241752r241753
1251112921      </part>
1251212922   </software>
1251312923
12514   <software name="cosmic">
12515      <description>Cosmic Spacehead (Euro, USA)</description>
12516      <year>1993</year>
12517      <publisher>Codemasters</publisher>
12518      <part name="cart" interface="megadriv_cart">
12519         <dataarea name="rom" width="16" endianness="big" size="1048576">
12520            <rom name="cosmic spacehead (euro, usa).bin" size="1048576" crc="c593d31c" sha1="95a3eb13e5d28db8c8ea5ff3e95b0d3e614def69" offset="0x000000"/>
12521         </dataarea>
12522      </part>
12523   </software>
12524
1252512924   <software name="crkdownu" cloneof="crkdown">
1252612925      <description>Crack Down (USA)</description>
1252712926      <year>1991</year>
r241752r241753
1376114160      </part>
1376214161   </software>
1376314162
13764   <software name="ejim2">
13765      <description>Earthworm Jim 2 (Euro)</description>
13766      <year>1995</year>
13767      <publisher>Virgin Interactive</publisher>
13768      <part name="cart" interface="megadriv_cart">
13769         <dataarea name="rom" width="16" endianness="big" size="3145728">
13770            <rom name="earthworm jim 2 (euro).bin" size="3145728" crc="af235fdf" sha1="b8e93ea8b42c688a218b83797e4a18eda659f3e0" offset="0x000000"/>
13771         </dataarea>
13772      </part>
13773   </software>
13774
1377514163   <software name="ejim2u" cloneof="ejim2">
1377614164      <description>Earthworm Jim 2 (USA)</description>
1377714165      <year>1996</year>
r241752r241753
1441414802      </part>
1441514803   </software>
1441614804
14417   <software name="formula1" cloneof="f1">
14418      <description>Formula One (USA)</description>
14419      <year>1993</year>
14420      <publisher>Tengen</publisher>
14421      <part name="cart" interface="megadriv_cart">
14422         <dataarea name="rom" width="16" endianness="big" size="1048576">
14423            <rom name="formula one (usa).bin" size="1048576" crc="ccd73738" sha1="8f8edd8e6846cbba1b46f8eb9015b195ccc4acf9" offset="0x000000"/>
14424         </dataarea>
14425      </part>
14426   </software>
14427
1442814805   <software name="f1wcp" cloneof="f1wc">
1442914806      <description>F1 - World Championship Edition (Euro, Prototype)</description>
1443014807      <year>1993</year>
r241752r241753
1495215329      </part>
1495315330   </software>
1495415331
14955   <software name="funngame">
14956      <description>Fun 'N Games (Euro)</description>
14957      <year>1993</year>
14958      <publisher>Sony Imagesoft</publisher>
14959      <part name="cart" interface="megadriv_cart">
14960         <dataarea name="rom" width="16" endianness="big" size="1048576">
14961            <rom name="fun 'n' games (euro).bin" size="1048576" crc="da4ab3cd" sha1="3677dfe5450c0800d29cfff31f226389696bfb32" offset="0x000000"/>
14962         </dataarea>
14963      </part>
14964   </software>
14965
1496615332   <software name="funngameu" cloneof="funngame">
1496715333      <description>Fun 'N' Games (USA)</description>
1496815334      <year>1993</year>
r241752r241753
1502115387      </part>
1502215388   </software>
1502315389
15024   <software name="gground1a" cloneof="gground">
15025      <description>Gain Ground (World, Alt)</description>
15390<!-- This dump was originally tagged as Alt, but it matched Jeckidy's proto dump (cart with label GAIN GROUND #DFE7) -->
15391   <software name="gground1p" cloneof="gground">
15392      <description>Gain Ground (USA, Prototype)</description>
1502615393      <year>1991</year>
15027      <publisher>Sega</publisher>
15028      <info name="serial" value="G-4036 (JPN)"/>
15029      <info name="release" value="19910103 (JPN)"/>
15030      <info name="alt_title" value="ゲイングランド"/>
15394      <publisher>Renovation</publisher>
1503115395      <part name="cart" interface="megadriv_cart">
1503215396         <dataarea name="rom" width="16" endianness="big" size="524288">
15033            <rom name="gain ground (world) (alt).bin" size="524288" crc="83e7b8ae" sha1="3cc501086f794ac663aad14d5c5a75b648041151" offset="0x000000"/>
15397            <rom name="gainground.a760.bin" size="524288" crc="83e7b8ae" sha1="3cc501086f794ac663aad14d5c5a75b648041151" offset="0x000000"/>
1503415398         </dataarea>
1503515399      </part>
1503615400   </software>
r241752r241753
1545815822      </part>
1545915823   </software>
1546015824
15461   <software name="jennifct" cloneof="grandsl">
15462      <description>Jennifer Capriati Tennis (USA)</description>
15463      <year>1992</year>
15464      <publisher>Renovation</publisher>
15465      <part name="cart" interface="megadriv_cart">
15466         <dataarea name="rom" width="16" endianness="big" size="524288">
15467            <rom name="jennifer capriati tennis (usa).bin" size="524288" crc="ab2abc8e" sha1="8d72ea31c87b1a229098407e9c59a46e65f996a2" offset="0x000000"/>
15468         </dataarea>
15469      </part>
15470   </software>
15471
1547215825   <software name="greatcirj" cloneof="mickeycm">
1547315826      <description>Great Circus Mystery - Mickey to Minnie Magical Adventure 2 (Jpn)</description>
1547415827      <year>1994</year>
r241752r241753
1563715990      </part>
1563815991   </software>
1563915992
15640   <software name="hardball">
15641      <description>HardBall! (USA)</description>
15642      <year>1991</year>
15643      <publisher>Ballistic</publisher>
15644      <part name="cart" interface="megadriv_cart">
15645         <dataarea name="rom" width="16" endianness="big" size="1048576">
15646            <rom name="hardball! (usa).bin" size="1048576" crc="bd1b9a04" sha1="42d42af36b4a69f0adb38aaa7fec32eb8c44c349" offset="0x000000"/>
15647         </dataarea>
15648      </part>
15649   </software>
15650
1565115993   <software name="havocu" cloneof="havoc">
1565215994      <description>High Seas Havoc (USA)</description>
1565315995      <year>1993</year>
r241752r241753
1591716259      </part>
1591816260   </software>
1591916261
15920   <software name="indycrusu" cloneof="indycrus">
15921      <description>Indiana Jones and the Last Crusade (USA)</description>
15922      <year>1992</year>
15923      <publisher>U.S. Gold</publisher>
15924      <part name="cart" interface="megadriv_cart">
15925         <dataarea name="rom" width="16" endianness="big" size="1048576">
15926            <rom name="indiana jones and the last crusade (usa).bin" size="1048576" crc="3599a3fd" sha1="82758a8a47c4f1f0e990bd50b773b2c4300f616e" offset="0x000000"/>
15927         </dataarea>
15928      </part>
15929   </software>
15930
1593116262   <software name="insectx">
1593216263      <description>Insector X (USA)</description>
1593316264      <year>1990</year>
r241752r241753
1616616497      </part>
1616716498   </software>
1616816499
16169   <software name="nicklaus">
16170      <description>Jack Nicklaus' Power Challenge Golf (Euro, USA)</description>
16171      <year>1993</year>
16172      <publisher>Accolade</publisher>
16173      <part name="cart" interface="megadriv_cart">
16174         <feature name="slot" value="rom_sram"/>
16175         <dataarea name="rom" width="16" endianness="big" size="1048576">
16176            <rom name="jack nicklaus' power challenge golf (euro, usa).bin" size="1048576" crc="5545e909" sha1="8d7edfe87da732ecd9820a6afbb9c5700cce43b2" offset="0x000000"/>
16177         </dataarea>
16178         <!-- Correct? size taken from the header -->
16179         <dataarea name="sram" size="2048">
16180         </dataarea>
16181      </part>
16182   </software>
16183
1618416500   <software name="finalb" cloneof="jbdougko">
1618516501      <description>Final Blow (Jpn)</description>
1618616502      <year>1990</year>
r241752r241753
1915919475      </part>
1916019476   </software>
1916119477
19162   <software name="nbaliv97">
19163      <description>NBA Live 97 (Euro, USA)</description>
19164      <year>1996</year>
19165      <publisher>Electronic Arts</publisher>
19166      <part name="cart" interface="megadriv_cart">
19167         <feature name="slot" value="rom_sram"/>
19168         <dataarea name="rom" width="16" endianness="big" size="2097152">
19169            <rom name="nba live 97 (euro, usa).bin" size="2097152" crc="7024843a" sha1="1671451ab4ab6991e13db70671054c0f2c652a95" offset="0x000000"/>
19170         </dataarea>
19171         <dataarea name="sram" size="16384">
19172         </dataarea>
19173      </part>
19174   </software>
19175
1917619478   <software name="nbaliv98">
1917719479      <description>NBA Live 98 (USA)</description>
1917819480      <year>1997</year>
r241752r241753
2049420796      </part>
2049520797   </software>
2049620798
20799   <software name="pcottonp" cloneof="pcotton">
20800      <description>Panorama Cotton (Jpn, Prototype 19931127)</description>
20801      <year>1993</year>
20802      <publisher>Sunsoft</publisher>
20803      <info name="serial" value="T-15103"/>
20804      <info name="release" value="19940812"/>
20805      <info name="alt_title" value="パノラマコットン"/>
20806      <part name="cart" interface="megadriv_cart">
20807         <dataarea name="rom" width="16" endianness="big" size="4194304">
20808            <rom name="flying.bin" size="4194304" crc="54d82f86" sha1="aa7d052268ef439a3e289379003d7e7d6fc356f2" offset="0x000000"/>
20809         </dataarea>
20810      </part>
20811   </software>
20812
2049720813   <software name="paperboyj" cloneof="paperboy">
2049820814      <description>Paperboy (Jpn)</description>
2049920815      <year>1992</year>
r241752r241753
2062220938      </part>
2062320939   </software>
2062420940
20625   <software name="pgaeuro">
20626      <description>PGA European Tour (Euro, USA)</description>
20627      <year>1994</year>
20628      <publisher>Electronic Arts</publisher>
20629      <part name="cart" interface="megadriv_cart">
20630         <feature name="slot" value="rom_sram"/>
20631         <!-- Dump To Be Confirmed -->
20632         <feature name="pcb" value="PWA P10002 REV H"/>
20633         <feature name="u1" value="EURO EUR003"/>
20634         <feature name="u2" value="GM76C88ALK-15"/>
20635         <feature name="u3" value="GD74LS138"/>
20636         <feature name="u4" value="331-1026B"/>
20637         <feature name="batt" value="(Lithium Cell)"/>
20638         <dataarea name="rom" width="16" endianness="big" size="1048576">
20639            <rom name="euro euro03.u1" size="1048576" crc="8ca45acd" sha1="640615be6891a8457d94bb81b0e8e1fa7c5119a8" offset="0x000000"/>
20640         </dataarea>
20641         <dataarea name="sram" size="16384">
20642         </dataarea>
20643      </part>
20644   </software>
20645
2064620941   <software name="pga2">
2064720942      <description>PGA Tour Golf II (Euro, USA, v1.1)</description>
2064820943      <year>1992</year>
r241752r241753
2067420969      </part>
2067520970   </software>
2067620971
20677   <software name="pga3">
20678      <description>PGA Tour Golf III (Euro, USA)</description>
20679      <year>1994</year>
20680      <publisher>Electronic Arts</publisher>
20681      <part name="cart" interface="megadriv_cart">
20682         <feature name="slot" value="rom_sram"/>
20683         <dataarea name="rom" width="16" endianness="big" size="2097152">
20684            <rom name="pga tour golf iii (euro, usa).bin" size="2097152" crc="aeb3f65f" sha1="702707efcbfe229f6e190f2b6c71b6f53ae9ec36" offset="0x000000"/>
20685         </dataarea>
20686         <dataarea name="sram" size="16384">
20687         </dataarea>
20688      </part>
20689   </software>
20690
2069120972   <software name="pstar2a" cloneof="pstar2">
2069220973      <description>Phantasy Star II (Euro, USA)</description>
2069320974      <year>1989</year>
r241752r241753
2108621367      </part>
2108721368   </software>
2108821369
21089   <software name="pocahont">
21090      <description>Pocahontas (Euro)</description>
21091      <year>1996</year>
21092      <publisher>Sega</publisher>
21093      <part name="cart" interface="megadriv_cart">
21094         <dataarea name="rom" width="16" endianness="big" size="4194304">
21095            <rom name="mpr-18875.bin" size="4194304" crc="165e7987" sha1="5ffcdc3e01151837e707ae225a3a845a8b6d3394" offset="0x000000"/>
21096         </dataarea>
21097      </part>
21098   </software>
21099
2110021370   <software name="pocahontu" cloneof="pocahont">
2110121371      <description>Pocahontas (USA)</description>
2110221372      <year>1996</year>
r241752r241753
2124721517      </part>
2124821518   </software>
2124921519
21250   <software name="prmanger">
21251      <description>Premier Manager (Euro)</description>
21252      <year>1995</year>
21253      <publisher>Sega</publisher>
21254      <part name="cart" interface="megadriv_cart">
21255         <feature name="slot" value="rom_sram"/>
21256         <!-- Dump To Be Confirmed -->
21257         <feature name="pcb" value="?? (Sega)"/>
21258         <feature name="ic1" value="MPR-18473-U"/>
21259         <feature name="ic2" value="UM62256D-70LL"/>
21260         <feature name="ic3" value="BA6162"/>
21261         <feature name="ic4" value="74HC00N"/>
21262         <feature name="ic5" value="74HC00N"/>
21263         <feature name="bat" value="(Lithium Cell)"/>
21264         <dataarea name="rom" width="16" endianness="big" size="1048576">
21265            <rom name="mpr-18473-u.ic1" size="1048576" crc="303b889f" sha1="2916e5ef628e077cde87be873e0ea2507ef5c844" offset="0x000000"/>
21266         </dataarea>
21267         <dataarea name="sram" size="65536">
21268         </dataarea>
21269      </part>
21270   </software>
21271
2127221520   <software name="primetim">
2127321521      <description>Prime Time NFL Starring Deion Sanders (USA)</description>
2127421522      <year>1995</year>
r241752r241753
2232122569      </part>
2232222570   </software>
2232322571
22572   <software name="rocketup" cloneof="rocket">
22573      <description>Rocket Knight Adventures (USA, Prototype 19930615)</description>
22574      <year>1993</year>
22575      <publisher>Konami</publisher>
22576      <part name="cart" interface="megadriv_cart">
22577         <dataarea name="rom" width="16" endianness="big" size="1048576">
22578            <rom name="rocketknightadventcdfb.bin" size="1048576" crc="9cbee37b" sha1="9e2335dc00f95754a2cdce1f6bc7142e467d173d" offset="0x000000"/>
22579         </dataarea>
22580      </part>
22581   </software>
22582
2232422583   <software name="mvpbb">
2232522584      <description>Roger Clements MVP Baseball (USA)</description>
2232622585      <year>1992</year>
r241752r241753
2245822717      </part>
2245922718   </software>
2246022719
22461   <software name="rugbywc">
22462      <description>Rugby World Cup 1995 (Euro, USA)</description>
22463      <year>1994</year>
22464      <publisher>Electronic Arts</publisher>
22465      <part name="cart" interface="megadriv_cart">
22466         <dataarea name="rom" width="16" endianness="big" size="2097152">
22467            <rom name="rugby world cup 1995 (euro, usa).bin" size="2097152" crc="61f90a8a" sha1="9b435c82b612e23cb512efaebf4d35b203339e44" offset="0x000000"/>
22468         </dataarea>
22469      </part>
22470   </software>
22471
2247222720   <software name="sagaia">
2247322721      <description>Sagaia (USA)</description>
2247422722      <year>1991</year>
r241752r241753
2261522863      </part>
2261622864   </software>
2261722865
22618   <software name="slammast">
22619      <description>Saturday Night Slammasters (Euro)</description>
22620      <year>1994</year>
22621      <publisher>Capcom</publisher>
22622      <part name="cart" interface="megadriv_cart">
22623         <dataarea name="rom" width="16" endianness="big" size="4194304">
22624            <rom name="saturday night slammasters (euro).bin" size="4194304" crc="08fa5a3f" sha1="f67f324165abdf148f80aabb319375dc3a504e17" offset="0x000000"/>
22625         </dataarea>
22626      </part>
22627   </software>
22628
2262922866   <software name="scooby">
2263022867      <description>Scooby-Doo Mystery (USA)</description>
2263122868      <year>1995</year>
r241752r241753
2374523982      </part>
2374623983   </software>
2374723984
23748   <software name="sspinu" cloneof="sspin">
23749      <description>Sonic Spinball (USA)</description>
23750      <year>1993</year>
23751      <publisher>Sega</publisher>
23752      <part name="cart" interface="megadriv_cart">
23753         <dataarea name="rom" width="16" endianness="big" size="1048576">
23754            <rom name="sonic spinball (usa).bin" size="1048576" crc="677206cb" sha1="24bf6342b98c09775089c9f39cfb2f6fbe7806f7" offset="0x000000"/>
23755         </dataarea>
23756      </part>
23757   </software>
23758
2375923985   <software name="sspinua" cloneof="sspin">
2376023986      <description>Sonic Spinball (USA, Alt)</description>
2376123987      <year>1993</year>
r241752r241753
2376723993      </part>
2376823994   </software>
2376923995
23770   <software name="sonicj" cloneof="sonic">
23771      <description>Sonic the Hedgehog (Jpn, Kor)</description>
23772      <year>1991</year>
23773      <publisher>Sega</publisher>
23774      <info name="serial" value="G-4049"/>
23775      <info name="release" value="19910726"/>
23776      <info name="alt_title" value="ソニック・ザ・ヘッジホッグ"/>
23777      <part name="cart" interface="megadriv_cart">
23778         <dataarea name="rom" width="16" endianness="big" size="524288">
23779            <rom name="mpr-13933.bin" size="524288" crc="afe05eee" sha1="69e102855d4389c3fd1a8f3dc7d193f8eee5fe5b" offset="0x000000"/>
23780         </dataarea>
23781      </part>
23782   </software>
23783
2378423996   <software name="sonicpir" cloneof="sonic">
2378523997      <description>Sonic the Hedgehog (Pirate, Ripped from Golden 10 in 1)</description>
2378623998      <year>1991?</year>
r241752r241753
2405924271      </part>
2406024272   </software>
2406124273
24062   <software name="sparkstr">
24063      <description>Sparkster (Euro)</description>
24064      <year>1994</year>
24065      <publisher>Konami</publisher>
24066      <part name="cart" interface="megadriv_cart">
24067         <!-- Dump To Be Confirmed, PCB info based on US cart -->
24068         <feature name="pcb" value="353536"/>
24069         <feature name="u1" value="FX004"/>   <!-- location not really marked on PCB, using u1 for consistency -->
24070         <dataarea name="rom" width="16" endianness="big" size="1048576">
24071            <rom name="fx004.u1" size="1048576" crc="d63e9f2d" sha1="91057f22c5cea9bf08edf62862c56b939d570770" offset="0x000000"/>
24072         </dataarea>
24073      </part>
24074   </software>
24075
2407624274   <software name="sparkstru" cloneof="sparkstr">
2407724275      <description>Sparkster (USA)</description>
2407824276      <year>1994</year>
r241752r241753
2509625294      </part>
2509725295   </software>
2509825296
25099   <software name="sbtank">
25100      <description>Garry Kitchen's Super Battletank - War in the Gulf (USA)</description>
25101      <year>1992</year>
25102      <publisher>Absolute Entertainment</publisher>
25103      <part name="cart" interface="megadriv_cart">
25104         <dataarea name="rom" width="16" endianness="big" size="524288">
25105            <rom name="super battletank - war in the gulf (usa).bin" size="524288" crc="b0b5e3c9" sha1="4ce9aaaa9d3f98e1747af12ad488b6bdbde1afb4" offset="0x000000"/>
25106         </dataarea>
25107      </part>
25108   </software>
25109
2511025297   <software name="sfzone">
2511125298      <description>Super Fantasy Zone (Euro)</description>
2511225299      <year>1993</year>
r241752r241753
2707427261      </part>
2707527262   </software>
2707627263
27077   <software name="vpinball">
27078      <description>Virtual Pinball (Euro, USA)</description>
27079      <year>1993</year>
27080      <publisher>Electronic Arts</publisher>
27081      <part name="cart" interface="megadriv_cart">
27082         <feature name="slot" value="rom_sram"/>
27083         <dataarea name="rom" width="16" endianness="big" size="1048576">
27084            <rom name="virtual pinball (euro, usa).bin" size="1048576" crc="d63473aa" sha1="cd066bb54e0a4c21821639728893462b0218597e" offset="0x000000"/>
27085         </dataarea>
27086         <dataarea name="sram" size="16384">
27087         </dataarea>
27088      </part>
27089   </software>
27090
2709127264   <software name="vixen357">
2709227265      <description>Vixen 357 (Jpn)</description>
2709327266      <year>1992</year>
r241752r241753
2916629339      </part>
2916729340   </software>
2916829341
29169   <software name="zool">
29170      <description>Zool (Euro)</description>
29171      <year>1993</year>
29172      <publisher>Electronic Arts</publisher>
29173      <info name="alt_title" value="Zool - Ninja of the &quot;Nth&quot; Dimension (Box)"/>
29174      <part name="cart" interface="megadriv_cart">
29175         <!-- Dump To Be Confirmed -->
29176         <feature name="pcb" value="PWA P10001 REV H"/>
29177         <feature name="u1" value="ZOOL ZOOL04"/>
29178         <dataarea name="rom" width="16" endianness="big" size="1048576">
29179            <rom name="zool zool04.u1" size="1048576" crc="1ee58b03" sha1="cab14f63b7d00b35a11a3a7f60cf231199121dc8" offset="0x000000"/>
29180         </dataarea>
29181      </part>
29182   </software>
29183
2918429342   <software name="zoolu" cloneof="zool">
2918529343      <description>Zool (USA)</description>
2918629344      <year>1993</year>
trunk/hash/mikrosha.xml
r241752r241753
1616   </software>
1717
1818   <software name="alambush">
19      <description>ALAMBUSH</description>
20      <year>19??</year>
21      <publisher>&lt;unknown&gt;</publisher>
19      <description>Alien Ambush</description>
20      <year>1990</year>
21      <publisher>Sedov E. A.</publisher>
2222      <part name="cass" interface="mikrosha_cass">
2323         <dataarea name="cass" size="5604">
2424            <rom name="alambush.rkm" size="5604" crc="4b247561" sha1="5f6130c571bb4877b27c1e4c37a17db680e8b2ab" offset="0" />
r241752r241753
2727   </software>
2828
2929   <software name="ball">
30      <description>BALL</description>
31      <year>19??</year>
32      <publisher>&lt;unknown&gt;</publisher>
30      <description>The Ball Game</description>
31      <year>1990</year>
32      <publisher>Sandy Pat Corp.</publisher>
3333      <part name="cass" interface="mikrosha_cass">
3434         <dataarea name="cass" size="2620">
3535            <rom name="ball.rkm" size="2620" crc="ff43291b" sha1="f7fbdae6169c08a4140d685d0d504cc84be82375" offset="0" />
r241752r241753
3838   </software>
3939
4040   <software name="barmen">
41      <description>BARMEN</description>
42      <year>19??</year>
43      <publisher>&lt;unknown&gt;</publisher>
41      <description>Barmen (v1.5)</description>
42      <year>1988</year>
43      <publisher>ALG</publisher>
4444      <part name="cass" interface="mikrosha_cass">
4545         <dataarea name="cass" size="4102">
4646            <rom name="barmen.rkm" size="4102" crc="01a1e046" sha1="f129df0395d261edf50c4c79a8d3375249a935ef" offset="0" />
r241752r241753
4949   </software>
5050
5151   <software name="bomber">
52      <description>BOMBER</description>
53      <year>19??</year>
54      <publisher>&lt;unknown&gt;</publisher>
52      <description>Bomber Aircraft</description>
53      <year>1990</year>
54      <publisher>Jup Corp</publisher>
5555      <part name="cass" interface="mikrosha_cass">
5656         <dataarea name="cass" size="4627">
5757            <rom name="bomber.rkm" size="4627" crc="8ba227ef" sha1="a15ad12ec2981b53607f4ae755acecbb69939b3c" offset="0" />
r241752r241753
5959      </part>
6060   </software>
6161
62   <software name="boulder">
63      <description>BOULDER</description>
64      <year>19??</year>
65      <publisher>&lt;unknown&gt;</publisher>
62   <software name="bdash">
63      <description>Boulder Dash (v2)</description>
64      <year>1989</year>
65      <publisher>Clever Hands Software</publisher>
6666      <part name="cass" interface="mikrosha_cass">
6767         <dataarea name="cass" size="15367">
6868            <rom name="boulder.rkm" size="15367" crc="2da99b60" sha1="2620046d21618cf22607827c19334ba000902c27" offset="0" />
r241752r241753
7171   </software>
7272
7373   <software name="chess">
74      <description>CHESS</description>
74      <description>Chess</description>
7575      <year>19??</year>
7676      <publisher>&lt;unknown&gt;</publisher>
7777      <part name="cass" interface="mikrosha_cass">
r241752r241753
8181      </part>
8282   </software>
8383
84   <software name="circus">
85      <description>CIRCUS</description>
86      <year>19??</year>
87      <publisher>&lt;unknown&gt;</publisher>
84   <software name="cirk">
85      <description>Cirk (v1.2)</description>
86      <year>1986</year>
87      <publisher>Popov S.N.</publisher>
8888      <part name="cass" interface="mikrosha_cass">
8989         <dataarea name="cass" size="7655">
9090            <rom name="circus.rkm" size="7655" crc="bd44cf25" sha1="2cc3472632e962b0e32637a4eea9090b5307eba9" offset="0" />
r241752r241753
9393   </software>
9494
9595   <software name="crossfir">
96      <description>CROSSFIR</description>
97      <year>19??</year>
98      <publisher>&lt;unknown&gt;</publisher>
96      <description>Cross Fire (v004)</description>
97      <year>1988</year>
98      <publisher>Zyryanov A.V.</publisher>
9999      <part name="cass" interface="mikrosha_cass">
100100         <dataarea name="cass" size="11127">
101101            <rom name="crossfir.rkm" size="11127" crc="0e204a60" sha1="f41be5612ea4648ce51a2495fa2c2b20c4e910fb" offset="0" />
r241752r241753
566566   </software>
567567
568568   <software name="xonmicr">
569      <description>XONMICR</description>
569      <description>Xonix (Micron)</description>
570570      <year>19??</year>
571      <publisher>&lt;unknown&gt;</publisher>
571      <publisher>Micron</publisher>
572572      <part name="cass" interface="mikrosha_cass">
573573         <dataarea name="cass" size="2822">
574574            <rom name="xonmicr.rkm" size="2822" crc="a2658748" sha1="561ac9989c2b8605719d0b340a513fb5a691d7dd" offset="0" />
r241752r241753
576576      </part>
577577   </software>
578578
579   <software name="zstation">
580      <description>ZSTATION</description>
581      <year>19??</year>
582      <publisher>&lt;unknown&gt;</publisher>
579   <software name="zstanciy">
580      <description>Z-Stanciya</description>
581      <year>1987</year>
582      <publisher>SNP</publisher>
583583      <part name="cass" interface="mikrosha_cass">
584584         <dataarea name="cass" size="1895">
585585            <rom name="zstation.rkm" size="1895" crc="d496dea7" sha1="4aabce2dc4349a82c1ba59be8705f2f8cac77401" offset="0" />
r241752r241753
591591<!-- System -->
592592
593593   <software name="basic">
594      <description>BASIC</description>
594      <description>Mikrosha BASIC</description>
595595      <year>19??</year>
596596      <publisher>&lt;unknown&gt;</publisher>
597597      <part name="cass" interface="mikrosha_cass">
r241752r241753
602602   </software>
603603
604604   <software name="disasm">
605      <description>DISASM</description>
605      <description>Disassembler Mikron</description>
606606      <year>19??</year>
607607      <publisher>&lt;unknown&gt;</publisher>
608608      <part name="cass" interface="mikrosha_cass">
trunk/hash/msx1_cart.xml
r241752r241753
1365413654   <software name="cheese" supported="partial">
1365513655      <description>Cheese (Jpn)</description>
1365613656      <year>1984</year>
13657      <publisher>Nihon ELectronics</publisher>
13657      <publisher>Nihon Electronics</publisher>
1365813658      <part name="cart" interface="msx_cart">
1365913659         <feature name="mapper" value="NOMAPPER" />
1366013660         <dataarea name="rom" size="16384">
trunk/hash/nes.xml
r241752r241753
1121811218      <part name="cart" interface="nes_cart">
1121911219         <feature name="slot" value="nina006" />
1122011220         <feature name="pcb" value="AVE-NINA-06" />
11221         <feature name="mirroring" value="horizontal" />
1122111222         <dataarea name="prg" size="32768">
1122211223            <rom name="f-15 pgm rev 11 db78" size="32768" crc="e1b511cf" sha1="de66004bd0d88aee42c9efe6c65fb1937ab6b9bb" offset="00000" />
1122311224         </dataarea>
r241752r241753
2045420455      </part>
2045520456   </software>
2045620457
20457   <software name="krazykr" supported="no">
20458   <software name="krazykr">
2045820459      <description>Krazy Kreatures (USA, v1.1)</description>
2045920460      <year>1990</year>
2046020461      <publisher>American Video Entertainment</publisher>
r241752r241753
2047320474   </software>
2047420475
2047520476<!-- this was originally included as proto, but it's documented at bootgod's place as v1.0... was it really a prototype? track down the dump... -->
20476   <software name="krazykrp" cloneof="krazykr" supported="no">
20477   <software name="krazykrp" cloneof="krazykr">
2047720478      <description>Krazy Kreatures (USA, v1.0)</description>
2047820479      <year>1990</year>
2047920480      <publisher>American Video Entertainment</publisher>
r241752r241753
2381523816      </part>
2381623817   </software>
2381723818
23818   <software name="mermatl" supported="no">
23819   <software name="mermatl">
2381923820      <description>Mermaids of Atlantis - The Riddle of the Magic Bubble (USA)</description>
2382023821      <year>1991</year>
2382123822      <publisher>American Video Entertainment</publisher>
r241752r241753
4571745718      <part name="cart" interface="nes_cart">
4571845719         <feature name="slot" value="nina006" />
4571945720         <feature name="pcb" value="AVE-NINA-06" />
45721         <feature name="mirroring" value="horizontal" />
4572045722         <dataarea name="chr" size="65536">
4572145723            <rom name="futebol (brazil) (unl).chr" size="65536" crc="9fddfc61" sha1="feb234b9cb39996542ab4f9a0d76e0c6239fccc3" offset="00000" status="baddump" />
4572245724         </dataarea>
r241752r241753
4585545857      </part>
4585645858   </software>
4585745859
45860   <software name="ghostbstjp" cloneof="ghostbst">
45861      <description>Ghostbusters (Jpn, Prototype)</description>
45862      <year>1986</year>
45863      <publisher>Tokuma Shoten</publisher>
45864      <info name="alt_title" value="ゴーストバスターズ"/>
45865      <part name="cart" interface="nes_cart">
45866         <feature name="slot" value="cnrom" />
45867         <feature name="mirroring" value="horizontal" />
45868         <dataarea name="chr" size="32768">
45869            <rom name="ghostbusters (prototype).chr" size="32768" crc="b7e28707" sha1="ca3d601f1f8f3171c5d46777673159c9c79243c3" offset="00000" status="baddump" />
45870         </dataarea>
45871         <dataarea name="prg" size="32768">
45872            <rom name="ghostbusters (prototype).prg" size="32768" crc="56bd6db9" sha1="c7989b51c2a361c84c1d6829dc79006fef94537b" offset="00000" status="baddump" />
45873         </dataarea>
45874      </part>
45875   </software>
45876
4585845877   <software name="goalj" cloneof="goal2">
4585945878      <description>Goal!! (Jpn)</description>
4586045879      <year>1992</year>
r241752r241753
4839848417      <part name="cart" interface="nes_cart">
4839948418         <feature name="slot" value="nina006" />
4840048419         <feature name="pcb" value="AVE-NINA-06" />
48420         <feature name="mirroring" value="vertical" />
4840148421         <dataarea name="chr" size="32768">
4840248422            <rom name="robert byrnes pool challenge (usa) (proto) (unl).chr" size="32768" crc="01005a00" sha1="e47a5a225990eca7aa6dc3853ca2c243f7d29136" offset="00000" status="baddump" />
4840348423         </dataarea>
r241752r241753
4991149931      <part name="cart" interface="nes_cart">
4991249932         <feature name="slot" value="nina006" />
4991349933         <feature name="pcb" value="AVE-NINA-03" />
49934         <feature name="mirroring" value="horizontal" />
4991449935         <dataarea name="chr" size="65536">
4991549936            <rom name="ultimate league soccer (italy) (unl).chr" size="65536" crc="201e9c71" sha1="3ede735b03708783b1ebb9c203d6e702e90cf0c6" offset="00000" status="baddump" />
4991649937         </dataarea>
r241752r241753
5274552766      <part name="cart" interface="nes_cart">
5274652767         <feature name="slot" value="nina006" />
5274752768         <feature name="pcb" value="AVE-NINA-06" />
52769         <feature name="mirroring" value="horizontal" />
5274852770         <dataarea name="chr" size="32768">
5274952771            <rom name="poke block (asia) (unl).chr" size="32768" crc="edce1b2f" sha1="2628650db3c27b2b3232b627db4ed2bcc69d6e17" offset="00000" status="baddump" />
5275052772         </dataarea>
r241752r241753
5713657158      <part name="cart" interface="nes_cart">
5713757159         <feature name="slot" value="nina006" />
5713857160         <feature name="pcb" value="AVE-NINA-03" />
57161         <feature name="mirroring" value="horizontal" />
5713957162         <dataarea name="chr" size="65536">
5714057163            <rom name="av dragon mahjang (japan) (unl).chr" size="65536" crc="a203df20" sha1="2a24122bfb37b9a62771e740c911a5cbb349178e" offset="00000" status="baddump" />
5714157164         </dataarea>
r241752r241753
5744357466      <part name="cart" interface="nes_cart">
5744457467         <feature name="slot" value="nina006" />
5744557468         <feature name="pcb" value="AVE-NINA-06" />
57446         <feature name="mirroring" value="horizontal" />
57469         <feature name="mirroring" value="vertical" />
5744757470         <dataarea name="chr" size="32768">
5744857471            <rom name="metal fighter (asia) (hacker) (unl).chr" size="32768" crc="fe69de4b" sha1="11bcf115fa146923a87763f8f5f224a8ddb027ce" offset="00000" status="baddump" />
5744957472         </dataarea>
trunk/hash/orao.xml
r241752r241753
44<softwarelist name="orao" description="PEL Varazdin Orao cassettes">
55
66   <software name="6502step">
7      <description>6502Step</description>
7      <description>6502 Step (v1.0)</description>
88      <year>19??</year>
99      <publisher>&lt;unknown&gt;</publisher>
1010      <part name="cass1" interface="orao_cass">
1111         <dataarea name="cass" size="4099">
12            <rom name="6502step.tap" size="4099" crc="18b959be" sha1="9ded3c41aa3d56bc057a8db4ce5d562695723e37" offset="0x0000" />
12            <rom name="6502step.tap" size="4099" crc="18b959be" sha1="9ded3c41aa3d56bc057a8db4ce5d562695723e37" offset="0" />
1313         </dataarea>
1414      </part>
1515   </software>
r241752r241753
1717   <software name="ajnc">
1818      <description>Ajnc</description>
1919      <year>19??</year>
20      <publisher>&lt;unknown&gt;</publisher>
20      <publisher>PEL Soft</publisher>
2121      <part name="cass1" interface="orao_cass">
2222         <dataarea name="cass" size="17806">
23            <rom name="ajnc.tap" size="17806" crc="de341625" sha1="ea157993ea1c70e5f22cb4cf0e8cb1c7acd034da" offset="0x0000" />
23            <rom name="ajnc.tap" size="17806" crc="de341625" sha1="ea157993ea1c70e5f22cb4cf0e8cb1c7acd034da" offset="0" />
2424         </dataarea>
2525      </part>
2626   </software>
2727
2828   <software name="avion">
2929      <description>Avion</description>
30      <year>19??</year>
31      <publisher>&lt;unknown&gt;</publisher>
30      <year>1986</year>
31      <publisher>Emil Herceg - Igor Kos</publisher>
3232      <part name="cass1" interface="orao_cass">
3333         <dataarea name="cass" size="6798">
34            <rom name="avion.tap" size="6798" crc="eb4143a9" sha1="c350137a5c6084d8990b9b0856329f5b94aa338f" offset="0x0000" />
34            <rom name="avion.tap" size="6798" crc="eb4143a9" sha1="c350137a5c6084d8990b9b0856329f5b94aa338f" offset="0" />
3535         </dataarea>
3636      </part>
3737   </software>
3838
3939   <software name="bdash">
40      <description>BoulderDash</description>
40      <description>Boulder Dash</description>
4141      <year>19??</year>
42      <publisher>&lt;unknown&gt;</publisher>
42      <publisher>Nenad Mihailovic - Mihajlo Dapjas</publisher>
4343      <part name="cass1" interface="orao_cass">
4444         <dataarea name="cass" size="17998">
45            <rom name="boulderdash.tap" size="17998" crc="11ab14ed" sha1="4a7541bdcba4f03538c3659ad9c1bb36b6d34263" offset="0x0000" />
45            <rom name="boulderdash.tap" size="17998" crc="11ab14ed" sha1="4a7541bdcba4f03538c3659ad9c1bb36b6d34263" offset="0" />
4646         </dataarea>
4747      </part>
4848   </software>
r241752r241753
5050   <software name="breakout">
5151      <description>Breakout</description>
5252      <year>19??</year>
53      <publisher>&lt;unknown&gt;</publisher>
53      <publisher>Stan Rimox Software</publisher>
5454      <part name="cass1" interface="orao_cass">
5555         <dataarea name="cass" size="18992">
56            <rom name="breakout.tap" size="18992" crc="7737b9af" sha1="9d9a9e5b06ede99cb7326bab980d7f5a85ba0723" offset="0x0000" />
56            <rom name="breakout.tap" size="18992" crc="7737b9af" sha1="9d9a9e5b06ede99cb7326bab980d7f5a85ba0723" offset="0" />
5757         </dataarea>
5858      </part>
5959   </software>
r241752r241753
6464      <publisher>&lt;unknown&gt;</publisher>
6565      <part name="cass1" interface="orao_cass">
6666         <dataarea name="cass" size="4035">
67            <rom name="brojke.tap" size="4035" crc="f46a50c8" sha1="edf486d95df1935effa01f77a36d36c0a24829f8" offset="0x0000" />
67            <rom name="brojke.tap" size="4035" crc="f46a50c8" sha1="edf486d95df1935effa01f77a36d36c0a24829f8" offset="0" />
6868         </dataarea>
6969      </part>
7070   </software>
7171
7272   <software name="crtanje">
7373      <description>Crtanje</description>
74      <year>19??</year>
75      <publisher>&lt;unknown&gt;</publisher>
74      <year>1987</year>
75      <publisher>Suzy Soft</publisher>
7676      <part name="cass1" interface="orao_cass">
7777         <dataarea name="cass" size="4698">
78            <rom name="crtanje.tap" size="4698" crc="30ef56cb" sha1="7a77d75da0a0b34639b987e0d5cf14d7859d80c6" offset="0x0000" />
78            <rom name="crtanje.tap" size="4698" crc="30ef56cb" sha1="7a77d75da0a0b34639b987e0d5cf14d7859d80c6" offset="0" />
7979         </dataarea>
8080      </part>
8181   </software>
8282
8383   <software name="crvic">
8484      <description>Crvic</description>
85      <year>19??</year>
86      <publisher>&lt;unknown&gt;</publisher>
85      <year>1986</year>
86      <publisher>PEL Soft</publisher>
8787      <part name="cass1" interface="orao_cass">
8888         <dataarea name="cass" size="14050">
89            <rom name="crvic.tap" size="14050" crc="6feb9576" sha1="f9f31884a3899731350a2931818b5945afba0bae" offset="0x0000" />
89            <rom name="crvic.tap" size="14050" crc="6feb9576" sha1="f9f31884a3899731350a2931818b5945afba0bae" offset="0" />
9090         </dataarea>
9191      </part>
9292   </software>
9393
94   <software name="demo1">
95      <description>Demo 1</description>
96      <year>19??</year>
97      <publisher>&lt;unknown&gt;</publisher>
94   <software name="microrac">
95      <description>Mikroracunalo Orao</description>
96      <year>1988</year>
97      <publisher>PEL Varazdin</publisher>
9898      <part name="cass1" interface="orao_cass">
9999         <dataarea name="cass" size="31432">
100            <rom name="demo1.tap" size="31432" crc="9e7ba4ec" sha1="3a0c5c8412383a5cd676394308637a8a54238475" offset="0x0000" />
100            <rom name="demo1.tap" size="31432" crc="9e7ba4ec" sha1="3a0c5c8412383a5cd676394308637a8a54238475" offset="0" />
101101         </dataarea>
102102      </part>
103   </software>
104
105   <software name="demo2">
106      <description>Demo 2</description>
107      <year>19??</year>
108      <publisher>&lt;unknown&gt;</publisher>
109      <part name="cass1" interface="orao_cass">
103      <part name="cass2" interface="orao_cass">
110104         <dataarea name="cass" size="18450">
111            <rom name="demo2.tap" size="18450" crc="8bad5b68" sha1="155a06ebfc964642d902b47b49ee7a3ccf2cef0a" offset="0x0000" />
105            <rom name="demo2.tap" size="18450" crc="8bad5b68" sha1="155a06ebfc964642d902b47b49ee7a3ccf2cef0a" offset="0" />
112106         </dataarea>
113107      </part>
114108   </software>
115109
116110   <software name="demograf">
117      <description>DemoGrafika</description>
118      <year>19??</year>
119      <publisher>&lt;unknown&gt;</publisher>
111      <description>Demo Grafika</description>
112      <year>1985</year>
113      <publisher>KMI Borovo</publisher>
120114      <part name="cass1" interface="orao_cass">
121115         <dataarea name="cass" size="22996">
122            <rom name="demografika.tap" size="22996" crc="1a3f6740" sha1="aeca6893a530b27a0428f33d40fb10c683f450fb" offset="0x0000" />
116            <rom name="demografika.tap" size="22996" crc="1a3f6740" sha1="aeca6893a530b27a0428f33d40fb10c683f450fb" offset="0" />
123117         </dataarea>
124118      </part>
125119   </software>
126120
127121   <software name="eagle">
128122      <description>Eagle</description>
129      <year>19??</year>
130      <publisher>&lt;unknown&gt;</publisher>
123      <year>1986</year>
124      <publisher>KMI Borovo</publisher>
131125      <part name="cass1" interface="orao_cass">
132126         <dataarea name="cass" size="9132">
133            <rom name="eagle.tap" size="9132" crc="b3a8886c" sha1="80409c7ca7fe3fa70e4133a96f4f04c9806d6c5d" offset="0x0000" />
127            <rom name="eagle.tap" size="9132" crc="b3a8886c" sha1="80409c7ca7fe3fa70e4133a96f4f04c9806d6c5d" offset="0" />
134128         </dataarea>
135129      </part>
136130   </software>
r241752r241753
138132   <software name="jugador">
139133      <description>Jugador</description>
140134      <year>19??</year>
141      <publisher>&lt;unknown&gt;</publisher>
135      <publisher>Mario Vuletic</publisher>
142136      <part name="cass1" interface="orao_cass">
143137         <dataarea name="cass" size="4932">
144            <rom name="jugador.tap" size="4932" crc="a42f9cdf" sha1="adbf785606b093925eae1c42d1bb6611372c8f89" offset="0x0000" />
138            <rom name="jugador.tap" size="4932" crc="a42f9cdf" sha1="adbf785606b093925eae1c42d1bb6611372c8f89" offset="0" />
145139         </dataarea>
146140      </part>
147141   </software>
148142
149143   <software name="jumpjack">
150      <description>JumpingJack</description>
151      <year>19??</year>
152      <publisher>&lt;unknown&gt;</publisher>
144      <description>Jumping Jack</description>
145      <year>1986</year>
146      <publisher>KMI Borovo</publisher>
153147      <part name="cass1" interface="orao_cass">
154148         <dataarea name="cass" size="9133">
155            <rom name="jumpingjack.tap" size="9133" crc="2bb70986" sha1="269820989ab16c73594abeb6935736c08e07b5f3" offset="0x0000" />
149            <rom name="jumpingjack.tap" size="9133" crc="2bb70986" sha1="269820989ab16c73594abeb6935736c08e07b5f3" offset="0" />
156150         </dataarea>
157151      </part>
158152   </software>
159153
160154   <software name="karate">
161      <description>Karate</description>
155      <description>Internacional Karate</description>
162156      <year>19??</year>
163      <publisher>&lt;unknown&gt;</publisher>
157      <publisher>KMI Borovo</publisher>
164158      <part name="cass1" interface="orao_cass">
165159         <dataarea name="cass" size="25106">
166            <rom name="karate.tap" size="25106" crc="021024a0" sha1="90620ceafe258c7bbec195670b629426bf32b82c" offset="0x0000" />
160            <rom name="karate.tap" size="25106" crc="021024a0" sha1="90620ceafe258c7bbec195670b629426bf32b82c" offset="0" />
167161         </dataarea>
168162      </part>
169163   </software>
170164
171165   <software name="kuki">
172166      <description>Kuki</description>
173      <year>19??</year>
174      <publisher>&lt;unknown&gt;</publisher>
167      <year>1986</year>
168      <publisher>KMI Borovo</publisher>
175169      <part name="cass1" interface="orao_cass">
176170         <dataarea name="cass" size="9998">
177            <rom name="kuki.tap" size="9998" crc="90cddb34" sha1="211de24d98205f1b8dde0057f5294a7fb569483c" offset="0x0000" />
171            <rom name="kuki.tap" size="9998" crc="90cddb34" sha1="211de24d98205f1b8dde0057f5294a7fb569483c" offset="0" />
178172         </dataarea>
179173      </part>
180174   </software>
181175
182176   <software name="kvadrat">
183      <description>Kvadrat</description>
184      <year>19??</year>
185      <publisher>&lt;unknown&gt;</publisher>
177      <description>Magicni Kvadrat</description>
178      <year>1985</year>
179      <publisher>Mario Ranogajec - Boris Korpar</publisher>
186180      <part name="cass1" interface="orao_cass">
187181         <dataarea name="cass" size="17078">
188            <rom name="kvadrat.tap" size="17078" crc="9ee09595" sha1="9ac6e8046765b6656f27046955eeea3672c4509c" offset="0x0000" />
182            <rom name="kvadrat.tap" size="17078" crc="9ee09595" sha1="9ac6e8046765b6656f27046955eeea3672c4509c" offset="0" />
189183         </dataarea>
190184      </part>
191185   </software>
192186
193187   <software name="labirint">
194188      <description>Labirint</description>
195      <year>19??</year>
196      <publisher>&lt;unknown&gt;</publisher>
189      <year>1985</year>
190      <publisher>Bibi Soft</publisher>
197191      <part name="cass1" interface="orao_cass">
198192         <dataarea name="cass" size="5698">
199            <rom name="labirint.tap" size="5698" crc="864f7643" sha1="6201f6dfa20178ca782ac1cde73364d0c5f5ce64" offset="0x0000" />
193            <rom name="labirint.tap" size="5698" crc="864f7643" sha1="6201f6dfa20178ca782ac1cde73364d0c5f5ce64" offset="0" />
200194         </dataarea>
201195      </part>
202196   </software>
203197
204198   <software name="labirinm">
205      <description>LabirintM</description>
199      <description>Labirint M</description>
206200      <year>19??</year>
207201      <publisher>&lt;unknown&gt;</publisher>
208202      <part name="cass1" interface="orao_cass">
209203         <dataarea name="cass" size="15237">
210            <rom name="labirintm.tap" size="15237" crc="9e0790cf" sha1="89706cf82798956410facce1613c54a4c898979f" offset="0x0000" />
204            <rom name="labirintm.tap" size="15237" crc="9e0790cf" sha1="89706cf82798956410facce1613c54a4c898979f" offset="0" />
211205         </dataarea>
212206      </part>
213207   </software>
214208
215209   <software name="mminer">
216      <description>ManicMiner</description>
210      <description>Manic Miner</description>
217211      <year>19??</year>
218      <publisher>&lt;unknown&gt;</publisher>
212      <publisher>Nenad Mihailovic</publisher>
219213      <part name="cass1" interface="orao_cass">
220214         <dataarea name="cass" size="18001">
221            <rom name="manicminer.tap" size="18001" crc="27380ee9" sha1="b37abeb1df684a1ae3b5bd19795ac90e69853176" offset="0x0000" />
215            <rom name="manicminer.tap" size="18001" crc="27380ee9" sha1="b37abeb1df684a1ae3b5bd19795ac90e69853176" offset="0" />
222216         </dataarea>
223217      </part>
224218   </software>
225219
226220   <software name="matchfis">
227      <description>MatchFishing</description>
228      <year>19??</year>
229      <publisher>&lt;unknown&gt;</publisher>
221      <description>Match Fishing</description>
222      <year>1986</year>
223      <publisher>KMI Borovo</publisher>
230224      <part name="cass1" interface="orao_cass">
231225         <dataarea name="cass" size="23228">
232            <rom name="matchfishing.tap" size="23228" crc="fa01ad6c" sha1="88a3af7de00440910212aeb6f5360b32fc9062a1" offset="0x0000" />
226            <rom name="matchfishing.tap" size="23228" crc="fa01ad6c" sha1="88a3af7de00440910212aeb6f5360b32fc9062a1" offset="0" />
233227         </dataarea>
234228      </part>
235229   </software>
236230
237   <software name="memonona">
238      <description>MemoNoName</description>
231   <software name="memo">
232      <description>Memo</description>
239233      <year>19??</year>
240      <publisher>&lt;unknown&gt;</publisher>
234      <publisher>PEL Soft</publisher>
241235      <part name="cass1" interface="orao_cass">
242         <dataarea name="cass" size="10198">
243            <rom name="memononame.tap" size="10198" crc="1166e752" sha1="f17f7917ccf8399ef2231cc26be1e9056a3b0a86" offset="0x0000" />
236         <dataarea name="cass" size="16500">
237            <rom name="memopel.tap" size="16500" crc="128ffc0b" sha1="60daee51376dd59b5623a0072cd842ecd5db7257" offset="0" />
244238         </dataarea>
245239      </part>
246240   </software>
247241
248   <software name="memopel">
249      <description>Memo PEL</description>
242   <software name="memoa" cloneof="memo">
243      <description>Memo (No Loading Screen)</description>
250244      <year>19??</year>
251      <publisher>&lt;unknown&gt;</publisher>
245      <publisher>PEL Soft</publisher>
252246      <part name="cass1" interface="orao_cass">
253         <dataarea name="cass" size="16500">
254            <rom name="memopel.tap" size="16500" crc="128ffc0b" sha1="60daee51376dd59b5623a0072cd842ecd5db7257" offset="0x0000" />
247         <dataarea name="cass" size="10198">
248            <rom name="memononame.tap" size="10198" crc="1166e752" sha1="f17f7917ccf8399ef2231cc26be1e9056a3b0a86" offset="0" />
255249         </dataarea>
256250      </part>
257251   </software>
258252
259253   <software name="nevid">
260254      <description>Nevidljivi</description>
261      <year>19??</year>
262      <publisher>&lt;unknown&gt;</publisher>
255      <year>1987</year>
256      <publisher>Suzy Soft</publisher>
263257      <part name="cass1" interface="orao_cass">
264258         <dataarea name="cass" size="4198">
265            <rom name="nevidljivi.tap" size="4198" crc="513373fb" sha1="56bd74d57bafe8eccaeba5ac7d5ac6bae3412403" offset="0x0000" />
259            <rom name="nevidljivi.tap" size="4198" crc="513373fb" sha1="56bd74d57bafe8eccaeba5ac7d5ac6bae3412403" offset="0" />
266260         </dataarea>
267261      </part>
268262   </software>
r241752r241753
270264   <software name="obelix">
271265      <description>Obelix</description>
272266      <year>19??</year>
273      <publisher>&lt;unknown&gt;</publisher>
267      <publisher>KMI Borovo</publisher>
274268      <part name="cass1" interface="orao_cass">
275269         <dataarea name="cass" size="8639">
276            <rom name="obelix.tap" size="8639" crc="f79019d1" sha1="0de7854d67905fcc476838fba064924c27bbef4b" offset="0x0000" />
270            <rom name="obelix.tap" size="8639" crc="f79019d1" sha1="0de7854d67905fcc476838fba064924c27bbef4b" offset="0" />
277271         </dataarea>
278272      </part>
279273   </software>
280274
281275   <software name="othello">
282276      <description>Othello</description>
283      <year>19??</year>
284      <publisher>&lt;unknown&gt;</publisher>
277      <year>1985</year>
278      <publisher>Sasa Ivkovic</publisher>
285279      <part name="cass1" interface="orao_cass">
286280         <dataarea name="cass" size="18828">
287            <rom name="othello.tap" size="18828" crc="d488a8e3" sha1="a35d5b56882b07c10f98b011d6aa0006a1578452" offset="0x0000" />
281            <rom name="othello.tap" size="18828" crc="d488a8e3" sha1="a35d5b56882b07c10f98b011d6aa0006a1578452" offset="0" />
288282         </dataarea>
289283      </part>
290284   </software>
291285
292286   <software name="pacman">
293      <description>PacMan</description>
287      <description>Pac-Man</description>
294288      <year>19??</year>
295      <publisher>&lt;unknown&gt;</publisher>
289      <publisher>Sasa Ivkovic</publisher>
296290      <part name="cass1" interface="orao_cass">
297291         <dataarea name="cass" size="30114">
298            <rom name="pacman.tap" size="30114" crc="3a6479ea" sha1="b1cbde718d491b4324d9ed13e70e7df0c108f398" offset="0x0000" />
292            <rom name="pacman.tap" size="30114" crc="3a6479ea" sha1="b1cbde718d491b4324d9ed13e70e7df0c108f398" offset="0" />
299293         </dataarea>
300294      </part>
301295   </software>
302296
303297   <software name="pcelicam">
304      <description>PcelicaMaja</description>
298      <description>Pcelica Maja</description>
305299      <year>19??</year>
306300      <publisher>&lt;unknown&gt;</publisher>
307301      <part name="cass1" interface="orao_cass">
308302         <dataarea name="cass" size="16998">
309            <rom name="pcelicamaja.tap" size="16998" crc="e1add5c2" sha1="fcaca49c82855c5fe493bb4741c7e855b1bd1402" offset="0x0000" />
303            <rom name="pcelicamaja.tap" size="16998" crc="e1add5c2" sha1="fcaca49c82855c5fe493bb4741c7e855b1bd1402" offset="0" />
310304         </dataarea>
311305      </part>
312306   </software>
313307
314308   <software name="podsjet">
315309      <description>Podsjetnik</description>
316      <year>19??</year>
317      <publisher>&lt;unknown&gt;</publisher>
310      <year>1987</year>
311      <publisher>Suzy Soft</publisher>
318312      <part name="cass1" interface="orao_cass">
319313         <dataarea name="cass" size="10515">
320            <rom name="podsjetnik.tap" size="10515" crc="ea6c2bb4" sha1="fef66d98d23b1b2f675e3d0ed45ccb53829250da" offset="0x0000" />
314            <rom name="podsjetnik.tap" size="10515" crc="ea6c2bb4" sha1="fef66d98d23b1b2f675e3d0ed45ccb53829250da" offset="0" />
321315         </dataarea>
322316      </part>
323317   </software>
324318
325319   <software name="pomorska">
326      <description>PomorskaBitka</description>
320      <description>Pomorska Bitka</description>
327321      <year>19??</year>
328322      <publisher>&lt;unknown&gt;</publisher>
329323      <part name="cass1" interface="orao_cass">
330324         <dataarea name="cass" size="9608">
331            <rom name="pomorskabitka.tap" size="9608" crc="8c5dda11" sha1="d25fbedf844ce43ee2eb0cb32546c3abcc9111c0" offset="0x0000" />
325            <rom name="pomorskabitka.tap" size="9608" crc="8c5dda11" sha1="d25fbedf844ce43ee2eb0cb32546c3abcc9111c0" offset="0" />
332326         </dataarea>
333327      </part>
334328   </software>
r241752r241753
339333      <publisher>&lt;unknown&gt;</publisher>
340334      <part name="cass1" interface="orao_cass">
341335         <dataarea name="cass" size="3179">
342            <rom name="porno.tap" size="3179" crc="212bb659" sha1="ab422b4548d279a6961e77499f33b602eaacdd0b" offset="0x0000" />
336            <rom name="porno.tap" size="3179" crc="212bb659" sha1="ab422b4548d279a6961e77499f33b602eaacdd0b" offset="0" />
343337         </dataarea>
344338      </part>
345339   </software>
r241752r241753
350344      <publisher>&lt;unknown&gt;</publisher>
351345      <part name="cass1" interface="orao_cass">
352346         <dataarea name="cass" size="5950">
353            <rom name="reversi.tap" size="5950" crc="3964ff16" sha1="2a735bc3ab917c8b2f16d012318aed9f8aa62a52" offset="0x0000" />
347            <rom name="reversi.tap" size="5950" crc="3964ff16" sha1="2a735bc3ab917c8b2f16d012318aed9f8aa62a52" offset="0" />
354348         </dataarea>
355349      </part>
356350   </software>
357351
358   <software name="sah">
359      <description>Sah</description>
360      <year>19??</year>
361      <publisher>&lt;unknown&gt;</publisher>
352   <software name="figchess">
353      <description>Figure Chess</description>
354      <year>1986</year>
355      <publisher>KMI Borovo</publisher>
362356      <part name="cass1" interface="orao_cass">
363357         <dataarea name="cass" size="19745">
364            <rom name="sah.tap" size="19745" crc="02513ff4" sha1="29586a75f9a6ef7b9bb0f370b5eb7f9a00dee37a" offset="0x0000" />
358            <rom name="sah.tap" size="19745" crc="02513ff4" sha1="29586a75f9a6ef7b9bb0f370b5eb7f9a00dee37a" offset="0" />
365359         </dataarea>
366360      </part>
367361   </software>
368362
369363   <software name="sintetiz">
370      <description>SintetizatorZvuka</description>
371      <year>19??</year>
372      <publisher>&lt;unknown&gt;</publisher>
364      <description>Sintetizator Zvuka</description>
365      <year>1987</year>
366      <publisher>Suzy Soft</publisher>
373367      <part name="cass1" interface="orao_cass">
374368         <dataarea name="cass" size="3422">
375            <rom name="sintetizatorzvuka.tap" size="3422" crc="26da3240" sha1="96b4ec2a5b521e27e4fcc91081126aa274ab9230" offset="0x0000" />
369            <rom name="sintetizatorzvuka.tap" size="3422" crc="26da3240" sha1="96b4ec2a5b521e27e4fcc91081126aa274ab9230" offset="0" />
376370         </dataarea>
377371      </part>
378372   </software>
r241752r241753
380374   <software name="sokoban">
381375      <description>Sokoban</description>
382376      <year>19??</year>
383      <publisher>&lt;unknown&gt;</publisher>
377      <publisher>J.P.</publisher>
384378      <part name="cass1" interface="orao_cass">
385379         <dataarea name="cass" size="13829">
386            <rom name="sokoban.tap" size="13829" crc="ffcf7e0c" sha1="12c435c68b2203b68f29c2450740b958e16e0405" offset="0x0000" />
380            <rom name="sokoban.tap" size="13829" crc="ffcf7e0c" sha1="12c435c68b2203b68f29c2450740b958e16e0405" offset="0" />
387381         </dataarea>
388382      </part>
389383   </software>
390384
391385   <software name="spaceinv">
392      <description>SpaceInvaders</description>
386      <description>Space Invaders</description>
393387      <year>19??</year>
394      <publisher>&lt;unknown&gt;</publisher>
388      <publisher>PEL Soft</publisher>
395389      <part name="cass1" interface="orao_cass">
396390         <dataarea name="cass" size="21150">
397            <rom name="spaceinvaders.tap" size="21150" crc="31230e8b" sha1="8021e562130d2b11eb916f3623e65794d93b2a93" offset="0x0000" />
391            <rom name="spaceinvaders.tap" size="21150" crc="31230e8b" sha1="8021e562130d2b11eb916f3623e65794d93b2a93" offset="0" />
398392         </dataarea>
399393      </part>
400394   </software>
401395
402396   <software name="stripajn">
403      <description>StripAjnc</description>
404      <year>19??</year>
405      <publisher>&lt;unknown&gt;</publisher>
397      <description>Strip Ajnc</description>
398      <year>1985</year>
399      <publisher>Z. Bistrovic</publisher>
406400      <part name="cass1" interface="orao_cass">
407401         <dataarea name="cass" size="8750">
408            <rom name="stripajnc.tap" size="8750" crc="68032c11" sha1="3a49a90b7915491eecdec149a5cfb2f90e1a03da" offset="0x0000" />
402            <rom name="stripajnc.tap" size="8750" crc="68032c11" sha1="3a49a90b7915491eecdec149a5cfb2f90e1a03da" offset="0" />
409403         </dataarea>
410404      </part>
411405   </software>
412406
413407   <software name="stripgam">
414      <description>StripGameAinc</description>
408      <description>Strip Game Ainc</description>
415409      <year>19??</year>
416      <publisher>&lt;unknown&gt;</publisher>
410      <publisher>KMI Borovo</publisher>
417411      <part name="cass1" interface="orao_cass">
418412         <dataarea name="cass" size="31615">
419            <rom name="stripgameainc.tap" size="31615" crc="03e38de8" sha1="c5df30d030f44f19182c86fcb6448116f7f92be1" offset="0x0000" />
413            <rom name="stripgameainc.tap" size="31615" crc="03e38de8" sha1="c5df30d030f44f19182c86fcb6448116f7f92be1" offset="0" />
420414         </dataarea>
421415      </part>
422416   </software>
r241752r241753
424418   <software name="tornjev">
425419      <description>Tornjevi</description>
426420      <year>19??</year>
427      <publisher>&lt;unknown&gt;</publisher>
421      <publisher>Tom</publisher>
428422      <part name="cass1" interface="orao_cass">
429423         <dataarea name="cass" size="3966">
430            <rom name="tornjevi.tap" size="3966" crc="38d905d7" sha1="2b21e99b9e847a5bde4acadc03b62ca2e628c93d" offset="0x0000" />
424            <rom name="tornjevi.tap" size="3966" crc="38d905d7" sha1="2b21e99b9e847a5bde4acadc03b62ca2e628c93d" offset="0" />
431425         </dataarea>
432426      </part>
433427   </software>
434428
435429   <software name="ukletidv">
436      <description>UkletiDvorac</description>
430      <description>Ukleti Dvorac</description>
437431      <year>19??</year>
438432      <publisher>&lt;unknown&gt;</publisher>
439433      <part name="cass1" interface="orao_cass">
440434         <dataarea name="cass" size="12398">
441            <rom name="ukletidvorac.tap" size="12398" crc="850123a7" sha1="d867f072832e8c6dd87fe4bbda14cbb720e9ca25" offset="0x0000" />
435            <rom name="ukletidvorac.tap" size="12398" crc="850123a7" sha1="d867f072832e8c6dd87fe4bbda14cbb720e9ca25" offset="0" />
442436         </dataarea>
443437      </part>
444438   </software>
445439
446440   <software name="zid">
447441      <description>Zid</description>
448      <year>19??</year>
449      <publisher>&lt;unknown&gt;</publisher>
442      <year>1985</year>
443      <publisher>PEL Zabavni Programi</publisher>
450444      <part name="cass1" interface="orao_cass">
451445         <dataarea name="cass" size="11345">
452            <rom name="zid.tap" size="11345" crc="c7524e54" sha1="4ee43911a7c49899d2ef7e89308ab3213d1cedac" offset="0x0000" />
446            <rom name="zid.tap" size="11345" crc="c7524e54" sha1="4ee43911a7c49899d2ef7e89308ab3213d1cedac" offset="0" />
453447         </dataarea>
454448      </part>
455449   </software>
456450
457451   <software name="znakovi">
458452      <description>Znakovi</description>
459      <year>19??</year>
460      <publisher>&lt;unknown&gt;</publisher>
453      <year>1987</year>
454      <publisher>Suzy Soft</publisher>
461455      <part name="cass1" interface="orao_cass">
462456         <dataarea name="cass" size="4618">
463            <rom name="znakovi.tap" size="4618" crc="a834c22e" sha1="49340c62aa1f1109f610e95878eb75de24916928" offset="0x0000" />
457            <rom name="znakovi.tap" size="4618" crc="a834c22e" sha1="49340c62aa1f1109f610e95878eb75de24916928" offset="0" />
464458         </dataarea>
465459      </part>
466460   </software>
trunk/hash/pecom_cass.xml
r241752r241753
66   <software name="adresar">
77      <description>Adresar</description>
88      <year>19??</year>
9      <publisher>&lt;unknown&gt;</publisher>
9      <publisher>Ei Racunari</publisher>
1010      <part name="cass1" interface="pecom_cass">
1111         <dataarea name="cass" size="6382680">
12            <rom name="adresar.wav" size="6382680" crc="e0032321" sha1="f6c9d19941175561c942c803aedc87d5c2dd1903" offset="0x0000" />
12            <rom name="adresar.wav" size="6382680" crc="e0032321" sha1="f6c9d19941175561c942c803aedc87d5c2dd1903" offset="0" />
1313         </dataarea>
1414      </part>
1515   </software>
1616
1717   <software name="bioritam">
1818      <description>Bioritam</description>
19      <year>19??</year>
20      <publisher>&lt;unknown&gt;</publisher>
19      <year>1985</year>
20      <publisher>Ei Racunari</publisher>
2121      <part name="cass1" interface="pecom_cass">
2222         <dataarea name="cass" size="5094680">
23            <rom name="bioritam.wav" size="5094680" crc="9fead1c7" sha1="7ed80372fdd57cc68997acc3a7eb1e1628236dfe" offset="0x0000" />
23            <rom name="bioritam.wav" size="5094680" crc="9fead1c7" sha1="7ed80372fdd57cc68997acc3a7eb1e1628236dfe" offset="0" />
2424         </dataarea>
2525      </part>
2626   </software>
2727
2828   <software name="lavirint">
2929      <description>Lavirint</description>
30      <year>19??</year>
31      <publisher>&lt;unknown&gt;</publisher>
30      <year>1987</year>
31      <publisher>Ei Racunari</publisher>
3232      <part name="cass1" interface="pecom_cass">
3333         <dataarea name="cass" size="13222360">
34            <rom name="lavirint.wav" size="13222360" crc="9f0aa1b4" sha1="854e9bbe45e42e09c7e57b561b311a98ff078661" offset="0x0000" />
34            <rom name="lavirint.wav" size="13222360" crc="9f0aa1b4" sha1="854e9bbe45e42e09c7e57b561b311a98ff078661" offset="0" />
3535         </dataarea>
3636      </part>
3737   </software>
3838
3939   <software name="lopovbnk">
40      <description>LopovIBankar</description>
41      <year>19??</year>
42      <publisher>&lt;unknown&gt;</publisher>
40      <description>Lopov i Bankar</description>
41      <year>1985</year>
42      <publisher>Ei Racunari</publisher>
4343      <part name="cass1" interface="pecom_cass">
4444         <dataarea name="cass" size="7996248">
45            <rom name="lopov i bankar.wav" size="7996248" crc="e02b73bc" sha1="6b817af8638a94aa7f7c395467237adf3e226d12" offset="0x0000" />
45            <rom name="lopov i bankar.wav" size="7996248" crc="e02b73bc" sha1="6b817af8638a94aa7f7c395467237adf3e226d12" offset="0" />
4646         </dataarea>
4747      </part>
4848   </software>
4949
5050   <software name="osvajaci">
51      <description>OsvajaciSvemira</description>
52      <year>19??</year>
53      <publisher>&lt;unknown&gt;</publisher>
51      <description>Osvajaci Svemira</description>
52      <year>1985</year>
53      <publisher>Ei Racunari</publisher>
5454      <part name="cass1" interface="pecom_cass">
5555         <dataarea name="cass" size="19538520">
56            <rom name="osvajaci svemira.wav" size="19538520" crc="a9000525" sha1="6758cac948d3fd1400e4f90dd9c1d281dfd42d0e" offset="0x0000" />
56            <rom name="osvajaci svemira.wav" size="19538520" crc="a9000525" sha1="6758cac948d3fd1400e4f90dd9c1d281dfd42d0e" offset="0" />
5757         </dataarea>
5858      </part>
5959   </software>
6060
6161   <software name="pecomrat">
62      <description>PecomRatuje</description>
63      <year>19??</year>
64      <publisher>&lt;unknown&gt;</publisher>
62      <description>Pecom Ratuje</description>
63      <year>1985</year>
64      <publisher>Ei Racunari</publisher>
6565      <part name="cass1" interface="pecom_cass">
6666         <dataarea name="cass" size="7595800">
67            <rom name="pecom ratuje.wav" size="7595800" crc="9837c657" sha1="d481df682df097de3e9b87f28d0be47939e87098" offset="0x0000" />
67            <rom name="pecom ratuje.wav" size="7595800" crc="9837c657" sha1="d481df682df097de3e9b87f28d0be47939e87098" offset="0" />
6868         </dataarea>
6969      </part>
7070   </software>
7171
7272   <software name="kompozit">
73      <description>SamSvojKompozitor</description>
74      <year>19??</year>
75      <publisher>&lt;unknown&gt;</publisher>
73      <description>Sam Svoj Kompozitor</description>
74      <year>1987</year>
75      <publisher>Ei Racunari</publisher>
7676      <part name="cass1" interface="pecom_cass">
7777         <dataarea name="cass" size="3567832">
78            <rom name="sam svoj kompozitor.wav" size="3567832" crc="16a53a50" sha1="6ae2a28f0dfb8c6909240b28051c70149257847b" offset="0x0000" />
78            <rom name="sam svoj kompozitor.wav" size="3567832" crc="16a53a50" sha1="6ae2a28f0dfb8c6909240b28051c70149257847b" offset="0" />
7979         </dataarea>
8080      </part>
8181   </software>
8282
8383   <software name="sljive">
8484      <description>Sljive</description>
85      <year>19??</year>
86      <publisher>&lt;unknown&gt;</publisher>
85      <year>1986</year>
86      <publisher>Ei Racunari</publisher>
8787      <part name="cass1" interface="pecom_cass">
8888         <dataarea name="cass" size="7898072">
89            <rom name="shljive.wav" size="7898072" crc="1c5d5a07" sha1="d63a217571ee0e5216708380844f028875533c4b" offset="0x0000" />
89            <rom name="shljive.wav" size="7898072" crc="1c5d5a07" sha1="d63a217571ee0e5216708380844f028875533c4b" offset="0" />
9090         </dataarea>
9191      </part>
9292   </software>
9393
9494   <software name="suviajnc">
95      <description>SuviAjnc</description>
96      <year>19??</year>
97      <publisher>&lt;unknown&gt;</publisher>
95      <description>Suvi Ajnc</description>
96      <year>1986</year>
97      <publisher>Ei Racunari</publisher>
9898      <part name="cass1" interface="pecom_cass">
9999         <dataarea name="cass" size="11266136">
100            <rom name="suvi ajnc.wav" size="11266136" crc="c922dc59" sha1="8679f34599d6929ce969d3ff16c007358924bd80" offset="0x0000" />
100            <rom name="suvi ajnc.wav" size="11266136" crc="c922dc59" sha1="8679f34599d6929ce969d3ff16c007358924bd80" offset="0" />
101101         </dataarea>
102102      </part>
103103   </software>
104104
105105   <software name="trkakonj">
106      <description>TrkaKonja</description>
106      <description>Trka Konja</description>
107107      <year>19??</year>
108108      <publisher>&lt;unknown&gt;</publisher>
109109      <part name="cass1" interface="pecom_cass">
110110         <dataarea name="cass" size="6658904">
111            <rom name="trka konja.wav" size="6658904" crc="f388087b" sha1="5dfc064b154a06409e2f57832318097756384ba3" offset="0x0000" />
111            <rom name="trka konja.wav" size="6658904" crc="f388087b" sha1="5dfc064b154a06409e2f57832318097756384ba3" offset="0" />
112112         </dataarea>
113113      </part>
114114   </software>
trunk/hash/pegasus_cart.xml
r241752r241753
11<?xml version="1.0"?>
22<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3<softwarelist name="pegasus" description="Technosys Aamber Pegasus ROM expansions">
3<softwarelist name="pegasus_cart" description="Technosys Aamber Pegasus ROM expansions">
44
55
66   <software name="basic">
trunk/hash/pet_cass.xml
r241752r241753
7777      <publisher>Avalon Hill</publisher>
7878      <part name="cass" interface="cbm_cass">
7979         <dataarea name="cass" size="10001002">
80            <rom name="Bomber Attack (1982)(avalon hill).wav" size="10001002" crc="4ff57e9c" sha1="b795a4d8c2f7891088ee6cf7147d785948d7b887" offset="0" />
80            <rom name="bomber attack (1982)(avalon hill).wav" size="10001002" crc="4ff57e9c" sha1="b795a4d8c2f7891088ee6cf7147d785948d7b887" offset="0" />
8181         </dataarea>
8282      </part>
8383   </software>
trunk/hash/pokemini.xml
r241752r241753
101101   </software>
102102
103103   <software name="pokezcrd">
104      <description>Pok&#233;mon Zany Cards (Aus, Euro, USA)</description>
105      <year>2001</year>
106      <publisher>Nintendo</publisher>
107      <part name="cart" interface="pokemini_cart">
108         <dataarea name="rom" size="524288">
109            <rom name="cards_u.bin" size="524288" crc="8a2fc063" sha1="f34909ed7d1c1d432819ff774c0767ebfa42fb84" offset="000000" />
110         </dataarea>
111      </part>
112   </software>
113
114   <software name="pokezcrdf" cloneof="pokezcrd">
104115      <description>Pok&#233;mon Zany Cards (Fra)</description>
105116      <year>2001</year>
106117      <publisher>Nintendo</publisher>
r241752r241753
133144      </part>
134145   </software>
135146
147   <software name="ppartyj" cloneof="pparty" supported="partial">
148      <description>Pok&#233;mon Party Mini (Jpn)</description>
149      <year>2001</year>
150      <publisher>Nintendo</publisher>
151      <part name="cart" interface="pokemini_cart">
152         <dataarea name="rom" size="524288">
153            <rom name="party_j.bin" size="524288" crc="ae2dde60" sha1="4db4568b990077c21320b50dee6a3ceb258809db" offset="000000" />
154         </dataarea>
155      </part>
156   </software>
157
136158   <software name="ppartyu" cloneof="pparty" supported="partial">
137      <description>Pok&#233;mon Party Mini (USA)</description>
159      <description>Pok&#233;mon Party Mini (Aus, USA)</description>
138160      <year>2001</year>
139161      <publisher>Nintendo</publisher>
140162      <part name="cart" interface="pokemini_cart">
r241752r241753
145167   </software>
146168
147169   <software name="ppinb">
148      <description>Pok&#233;mon Pinball Mini (USA)</description>
170      <description>Pok&#233;mon Pinball Mini (Aus, Euro, USA)</description>
149171      <year>2001</year>
150172      <publisher>Nintendo</publisher>
151173      <part name="cart" interface="pokemini_cart">
r241752r241753
288310   </software>
289311
290312   <software name="ppuzzlc" supported="partial">
291      <description>Pok&#233;mon Puzzle Collection (USA)</description>
313      <description>Pok&#233;mon Puzzle Collection (Aus, Euro, USA)</description>
292314      <year>2001</year>
293315      <publisher>Nintendo</publisher>
294316      <part name="cart" interface="pokemini_cart">
r241752r241753
298320      </part>
299321   </software>
300322
301   <software name="ppuzzlc2" supported="partial">
302      <description>Pok&#233;mon Puzzle Collection Vol. 2 (Jpn)</description>
303      <year>2002</year>
323   <software name="ppuzzlcp" cloneof="ppuzzlc" supported="partial">
324      <description>Pok&#233;mon Puzzle Collection (USA, GameCube Preview)</description>
325      <year>2001</year>
304326      <publisher>Nintendo</publisher>
305327      <part name="cart" interface="pokemini_cart">
306328         <dataarea name="rom" size="524288">
307            <rom name="pokemon puzzle collection vol. 2 (japan).bin" size="524288" crc="76a1bbf8" sha1="11775bbac2e985ef90d4192ed6322dd3b8352ac9" offset="000000" />
329            <rom name="pokemon puzzle collection (usa) (gamecube preview).bin" size="524288" crc="6f8ae656" sha1="048bb1d30d6ff21be14dd123c52a375e12611238" offset="000000" />
308330         </dataarea>
309331      </part>
310332   </software>
311333
334   <software name="ppuzzlcf" cloneof="ppuzzlc" supported="partial">
335      <description>Pok&#233;mon Puzzle Collection (Fra)</description>
336      <year>2001</year>
337      <publisher>Nintendo</publisher>
338      <part name="cart" interface="pokemini_cart">
339         <dataarea name="rom" size="524288">
340            <rom name="puzzle_f.bin" size="524288" crc="3004c354" sha1="5a2927770c1e2c7df3f8cc80c9252bb1111ca3a6" offset="000000" />
341         </dataarea>
342      </part>
343   </software>
344
312345   <software name="ppuzzlcfp" cloneof="ppuzzlc" supported="partial">
313346      <description>Pok&#233;mon Puzzle Collection (Fra, GameCube Preview)</description>
314347      <year>2001</year>
r241752r241753
364397      </part>
365398   </software>
366399
367   <software name="ppuzzlcp" cloneof="ppuzzlc" supported="partial">
368      <description>Pok&#233;mon Puzzle Collection (USA, GameCube Preview)</description>
369      <year>2001</year>
400   <software name="ppuzzlc2" supported="partial">
401      <description>Pok&#233;mon Puzzle Collection Vol. 2 (Jpn)</description>
402      <year>2002</year>
370403      <publisher>Nintendo</publisher>
371404      <part name="cart" interface="pokemini_cart">
372405         <dataarea name="rom" size="524288">
373            <rom name="pokemon puzzle collection (usa) (gamecube preview).bin" size="524288" crc="6f8ae656" sha1="048bb1d30d6ff21be14dd123c52a375e12611238" offset="000000" />
406            <rom name="pokemon puzzle collection vol. 2 (japan).bin" size="524288" crc="76a1bbf8" sha1="11775bbac2e985ef90d4192ed6322dd3b8352ac9" offset="000000" />
374407         </dataarea>
375408      </part>
376409   </software>
trunk/hash/psion.xml
r241752r241753
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!--
5Info taken from: http://www.retroisle.com/others/psion/organiser2/software.php
6
7Undumped datapack:
8 - Backup (Gene Code Software)
9 - Banking(Psoftshare)
10 - BanKmaN (Computer Solutions)
11 - Calctime (Psoftshare)
12 - Carfax (CLS Software)
13 - ChrCodes (ZIP-Software)
14 - Data Organiser (Harvester Information Systems Ltd)
15 - Easy-Writer (Monad International Ltd)
16 - Enigma (ZIP-Software)
17 - Files (ZIP-Software)
18 - Games Organiser (Harvester Information Systems Ltd)
19 - Games 1 (Kirsta Products Ltd)
20 - HB Games Pack (HB Consultants)
21 - HB Games 2 (HB Consultants)
22 - IFILES (EMF In Control)
23 - Index Manager (EMF In Control)
24 - Informed Organiser (Harvester Information Systems Ltd)
25 - Justex (MHS)
26 - Keyb3 (Gene Code Software)
27 - KProg (Kirsta Products Ltd)
28 - LACE (Beachcomber Software)
29 - LACE II (Beachcomber Software)
30 - Language Prakpak (Mackay Language Software)
31 - Letter Organiser (Harvester Information Systems Ltd)
32 - List (ZIP-Software)
33 - Mfile
34 - Music Prakpak (Mackay Language Software)
35 - Notepad (Psoftshare)
36 - ODBTran (Sycom Services)
37 - Oxford Concise Spelling Checker  Psion Ltd)
38 - PEEK (ZIP-Software)
39 - Portfolio
40 - Pro Finance
41 - Psion Assembler (Transform Ltd)
42 - Pure Finance
43 - Qbase (Gene Code Software)
44 - Routewise (Titan Computers Ltd)
45 - SAMS (Harvester Information Systems Ltd)
46 - Sightmaster Navigation Program  Waypoint Software)
47 - Sums (ZIP-Software)
48 - Thesaurus & Spelling Checker (Psion Ltd)
49 - Utilities for Programmers
50 - Watch (ZIP-Software)
51 - XBase (Cubsoft|)
52 - Xday (ZIP-Software)
53 - XP-Booster (Mackay Language Software)
54 - Yahtzee (Psoftshare)
55
56-->
57
58<softwarelist name="psion" description="Psion Organiser II Datapack">
59   <software name="abcode">
60      <!-- Compatible series XP/LZ -->
61      <description>Anteta Barcode Reader</description>
62      <year>198?</year>
63      <publisher>Anteta</publisher>
64      <part name="cart" interface="psion_pack">
65         <dataarea name="rom" size="31046">
66            <rom name="abcode.opk" size="31046" crc="0ca68683" sha1="2599a7240f3d361a375e61e4d3d11e4ba2d63fef" offset="0" />
67         </dataarea>
68      </part>
69   </software>
70
71   <software name="airnav">
72      <!-- Compatible series LZ -->
73      <description>Airnav Professional 2c</description>
74      <year>198?</year>
75      <publisher>&lt;unknown&gt;</publisher>
76      <part name="cart" interface="psion_pack">
77         <dataarea name="rom" size="64978">
78            <rom name="airnav.opk" size="64978" crc="e5e5b8b4" sha1="0a11ee4eb491962faacdac4dfe296a97475c0b6e" offset="0" />
79         </dataarea>
80      </part>
81   </software>
82
83   <software name="ascribe">
84      <!-- Compatible series CM/XP/LZ -->
85      <description>AutoScribe Plus</description>
86      <year>1989</year>
87      <publisher>Widget Software</publisher>
88      <part name="cart" interface="psion_pack">
89         <dataarea name="rom" size="16328">
90            <rom name="ascribe.opk" size="16328" crc="62c9fda6" sha1="f49b48b82eed30e4dc862f1e7d256e94f3c80f24" offset="0" />
91         </dataarea>
92      </part>
93   </software>
94
95   <software name="assem">
96      <!-- Compatible series XP/LZ -->
97      <description>Assembler Pack 1.0</description>
98      <year>1989</year>
99      <publisher>AR Software</publisher>
100      <part name="cart" interface="psion_pack">
101         <dataarea name="rom" size="30276">
102            <rom name="assem.opk" size="30276" crc="a3f863c7" sha1="505afa975ed0068c5cce0a004c924824f8004674" offset="0" />
103         </dataarea>
104      </part>
105   </software>
106
107
108   <software name="clink" supported="no">
109      <!-- Internal software of Comms Link device -->
110      <description>Comms Link</description>
111      <year>1987</year>
112      <publisher>Psion Ltd</publisher>
113      <part name="cart" interface="psion_pack">
114         <dataarea name="rom" size="32312">
115            <rom name="commslink.opk" size="32312" crc="9d210b51" sha1="2307a773b30a95f3f09225821d619ff6cdd8ae7d" offset="0" />
116         </dataarea>
117      </part>
118   </software>
119
120   <software name="clip">
121      <!-- Compatible series LZ -->
122      <description>Clipboard Inspection System</description>
123      <year>1991</year>
124      <publisher>Rafiq Mahmood</publisher>
125      <part name="cart1" interface="psion_pack">
126         <dataarea name="rom" size="32270">
127            <rom name="clip.opk" size="32270" crc="6c7afbdd" sha1="6505cb269ec5cc63cd57cc54b0b12181f155f9f3" offset="0" />
128         </dataarea>
129      </part>
130      <part name="cart2" interface="psion_pack">
131         <dataarea name="rom" size="16007">
132            <rom name="notice.opk" size="16007" crc="e1a5d6e0" sha1="46e4f89ba13381e8684fe40194ea2ddaa4f8c924" offset="0" />
133         </dataarea>
134      </part>
135   </software>
136
137   <software name="coastal">
138      <!-- Compatible series CM/XP/LZ -->
139      <description>Coastal v4.2a</description>
140      <year>198?</year>
141      <publisher>Maritek Ltd</publisher>
142      <part name="cart" interface="psion_pack">
143         <dataarea name="rom" size="32659">
144            <rom name="coastal.opk" size="32659" crc="380bf6a2" sha1="46fd072f43bf92afadf0bb3e0f7a5beef9c8443d" offset="0" />
145         </dataarea>
146      </part>
147   </software>
148
149   <software name="finance">
150      <!-- Compatible series CM/XP/LZ -->
151      <description>Finance</description>
152      <year>198?</year>
153      <publisher>Aware</publisher>
154      <part name="cart" interface="psion_pack">
155         <dataarea name="rom" size="16379">
156            <rom name="finance.opk" size="16379" crc="1c34e46b" sha1="5ada96fe015abfc6712236c65d9e6644ac0826e7" offset="0" />
157         </dataarea>
158      </part>
159   </software>
160
161   <software name="finance2">
162      <!-- Compatible series XP/LZ -->
163      <description>Finance II</description>
164      <year>198?</year>
165      <publisher>Aware</publisher>
166      <part name="cart" interface="psion_pack">
167         <dataarea name="rom" size="32709">
168            <rom name="finance2.opk" size="32709" crc="e9295ae2" sha1="e168479fd171777e63441d7dd63ec6a46914d678" offset="0" />
169         </dataarea>
170      </part>
171   </software>
172
173   <software name="finger">
174      <!-- Compatible series CM/XP/LZ -->
175      <description>Finger Organiser</description>
176      <year>1988</year>
177      <publisher>Harvester Information Systems</publisher>
178      <part name="cart" interface="psion_pack">
179         <dataarea name="rom" size="13890">
180            <rom name="finger.opk" size="13890" crc="36785487" sha1="51a6abfcb68846425ae90e63ee228b39eba6ebb2" offset="0" />
181         </dataarea>
182      </part>
183   </software>
184
185   <software name="fish">
186      <!-- Compatible series CM/XP/LZ -->
187      <description>Fish</description>
188      <year>198?</year>
189      <publisher>&lt;unknown&gt;</publisher>
190      <part name="cart" interface="psion_pack">
191         <dataarea name="rom" size="9365">
192            <rom name="fish.opk" size="9365" crc="92bc7d19" sha1="feaf62bc4349e91ac9c7beb6bd4a5e5cb548d520" offset="0" />
193         </dataarea>
194      </part>
195   </software>
196
197   <software name="fm">
198      <!-- Compatible series CM/XP/LZ -->
199      <description>FileMaster v3.76</description>
200      <year>1988</year>
201      <publisher>Widget Software</publisher>
202      <part name="cart" interface="psion_pack">
203         <dataarea name="rom" size="16201">
204            <rom name="fm.opk" size="16201" crc="1c8cd832" sha1="6fe29328f19d3c36780a261c6df7e6cef5c291f8" offset="0" />
205         </dataarea>
206      </part>
207   </software>
208
209   <software name="fnkey">
210      <!-- Compatible series LZ -->
211      <description>FNkey v3.1</description>
212      <year>1989</year>
213      <publisher>Cubsoft</publisher>
214      <part name="cart" interface="psion_pack">
215         <dataarea name="rom" size="4333">
216            <rom name="fnkey.opk" size="4333" crc="46c198dc" sha1="1f9a94216c738649f00b51e3e5d07a0487a1bff9" offset="0" />
217         </dataarea>
218      </part>
219   </software>
220
221   <software name="gpack">
222      <!-- Compatible series LZ -->
223      <description>Game Pack</description>
224      <year>198?</year>
225      <publisher>&lt;unknown&gt;</publisher>
226      <part name="cart" interface="psion_pack">
227         <dataarea name="rom" size="16559">
228            <rom name="gpack.opk" size="16559" crc="508604b2" sha1="866639b6ae22011a40f47cbdfdee684790f073a0" offset="0" />
229         </dataarea>
230      </part>
231   </software>
232
233   <software name="inkas">
234      <!-- Compatible series LZ/POS -->
235      <description>Inkasencki v6.1</description>
236      <year>199?</year>
237      <publisher>&lt;unknown&gt;</publisher>
238      <part name="cart" interface="psion_pack">
239         <dataarea name="rom" size="48983">
240            <rom name="inkas.opk" size="48983" crc="fbade179" sha1="803c827124a59ff45ceaaf9f66b76b8ff08aba23" offset="0" />
241         </dataarea>
242      </part>
243   </software>
244
245   <software name="maths">
246      <!-- Compatible series CM/XP/LZ -->
247      <description>Maths</description>
248      <year>198?</year>
249      <publisher>Psion</publisher>
250      <part name="cart" interface="psion_pack">
251         <dataarea name="rom" size="16089">
252            <rom name="maths.opk" size="16089" crc="8cce0583" sha1="9b847068e2f6af575b1ba760245007f436bdf1dd" offset="0" />
253         </dataarea>
254      </part>
255   </software>
256
257   <software name="paralink">
258      <!-- Compatible series XP/LZ -->
259      <description>ParaLink v2.0</description>
260      <year>198?</year>
261      <publisher>Silvertree</publisher>
262      <part name="cart" interface="psion_pack">
263         <dataarea name="rom" size="6062">
264            <rom name="paralink.opk" size="6062" crc="75a3596d" sha1="43dfdd4b39d9da00ccb7aa74b66d610e90867b75" offset="0" />
265         </dataarea>
266      </part>
267   </software>
268
269   <software name="persfin">
270      <!-- Compatible series XP/LZ -->
271      <description>Personal Finance</description>
272      <year>1987</year>
273      <publisher>Willow Enterprises Limited</publisher>
274      <part name="cart" interface="psion_pack">
275         <dataarea name="rom" size="16179">
276            <rom name="persfin.opk" size="16179" crc="2fb0f433" sha1="21bedf9bd3de307650c9b6cad3f11dc9094d0a92" offset="0" />
277         </dataarea>
278      </part>
279   </software>
280
281   <software name="result">
282      <!-- Compatible series LZ -->
283      <description>Result Vers 4L</description>
284      <year>1989</year>
285      <publisher>Terrace Software</publisher>
286      <part name="cart" interface="psion_pack">
287         <dataarea name="rom" size="16382">
288            <rom name="result.opk" size="16382" crc="8a7cd79f" sha1="40a385ab126c4a6b5ee23ed2097da15ec73aceb1" offset="0" />
289         </dataarea>
290      </part>
291   </software>
292
293   <software name="ssheet">
294      <!-- Compatible series XP/LZ -->
295      <description>Spreadsheet</description>
296      <year>1987</year>
297      <publisher>Psion Ltd</publisher>
298      <part name="cart" interface="psion_pack">
299         <dataarea name="rom" size="32508">
300            <rom name="ssheet.opk" size="32508" crc="6afc6dcc" sha1="b0b2059fd1c59ba7c7b55235745fd36186bdd5ca" offset="0" />
301         </dataarea>
302      </part>
303   </software>
304
305   <software name="topfin">
306      <!-- Compatible series LZ -->
307      <description>Top Finance v2.1f</description>
308      <year>1988</year>
309      <publisher>Aware</publisher>
310      <part name="cart" interface="psion_pack">
311         <dataarea name="rom" size="16338">
312            <rom name="topfin.opk" size="16338" crc="480d3056" sha1="4d869fd7429465db78ceaa0f59ca5a447316474b" offset="0" />
313         </dataarea>
314      </part>
315   </software>
316
317   <software name="travel">
318      <!-- Compatible series XP/LZ -->
319      <description>Travel Pack 1.5</description>
320      <year>1988</year>
321      <publisher>Organized Solutions Ltd</publisher>
322      <part name="cart" interface="psion_pack">
323         <dataarea name="rom" size="65493">
324            <rom name="travel.opk" size="65493" crc="38310574" sha1="5be0e7b121998c7d238fe8c639b732d0272d70ea" offset="0" />
325         </dataarea>
326      </part>
327   </software>
328
329   <software name="xform">
330      <!-- Compatible series XP/LZ -->
331      <description>Formulator</description>
332      <year>198?</year>
333      <publisher>Psion Ltd</publisher>
334      <part name="cart" interface="psion_pack">
335         <dataarea name="rom" size="32407">
336            <rom name="xform.opk" size="32407" crc="cf3fd9c4" sha1="712ebace6fb711bd98ea7053105f3a072ffa695c" offset="0" />
337         </dataarea>
338      </part>
339   </software>
340
341   <software name="xforma">
342      <!-- Compatible series XP/LZ -->
343      <description>Formulator (Alt)</description>
344      <year>198?</year>
345      <publisher>Psion Ltd</publisher>
346      <part name="cart" interface="psion_pack">
347         <dataarea name="rom" size="32773">
348            <rom name="xforma.opk" size="32773" crc="462ad96e" sha1="221235da3ecf22ac71a7ab248afc2d681ccd6d6d" offset="0" />
349         </dataarea>
350      </part>
351   </software>
352
353   <software name="xformtop">
354      <!-- Compatible series XP/LZ -->
355      <description>Formulator Top</description>
356      <year>198?</year>
357      <publisher>Psion Ltd</publisher>
358      <part name="cart" interface="psion_pack">
359         <dataarea name="rom" size="47862">
360            <rom name="xformtop.opk" size="47862" crc="9e109d42" sha1="a91e9eb195ce865c38099cd56ceb29ec52323377" offset="0" />
361         </dataarea>
362      </part>
363   </software>
364</softwarelist>
trunk/hash/psion1.xml
r0r241753
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3<softwarelist name="psion1" description="Psion Organiser I Datapack">
4   <software name="financep" supported="no">
5      <description>Finance Pack</description>
6      <year>198?</year>
7      <publisher>Psion</publisher>
8      <part name="cart" interface="psion_pack">
9         <dataarea name="rom" size="16390">
10            <rom name="finance.op1" size="16390" crc="5e4b1e5a" sha1="b2bf3f2a79597dfaed454d97bcc5ff2740b32b3c" offset="0" />
11         </dataarea>
12      </part>
13   </software>
14
15   <software name="linkup" supported="no">
16      <description>Link Up Pack</description>
17      <year>198?</year>
18      <publisher>Psion</publisher>
19      <part name="cart" interface="psion_pack">
20         <dataarea name="rom" size="4299">
21            <rom name="link-up.op1" size="4299" crc="f6cd6491" sha1="12ed6ab4e05fd068e91736826ec7473824fdc54a" offset="0" />
22         </dataarea>
23      </part>
24   </software>
25
26   <software name="mathspac" supported="no">
27      <description>Maths Pack</description>
28      <year>198?</year>
29      <publisher>Psion</publisher>
30      <part name="cart" interface="psion_pack">
31         <dataarea name="rom" size="16317">
32            <rom name="maths.op1" size="16317" crc="5dc289af" sha1="31c08efc37313e866b4876be4114a0ebe5fb7979" offset="0" />
33         </dataarea>
34      </part>
35   </software>
36
37   <software name="sciencep" supported="no">
38      <description>Science Pack</description>
39      <year>198?</year>
40      <publisher>Psion</publisher>
41      <part name="cart1" interface="psion_pack">
42         <dataarea name="rom" size="16390">
43            <rom name="science1.op1" size="16390" crc="374728d0" sha1="55f1e1517640d694e05102d72dd01f2dcb852664" offset="0" />
44         </dataarea>
45      </part>
46      <part name="cart2" interface="psion_pack">
47         <dataarea name="rom" size="16390">
48            <rom name="science2.op1" size="16390" crc="6f9a3006" sha1="0f33b5f413fc658dc5c33623845e8236374cea0f" offset="0" />
49         </dataarea>
50      </part>
51   </software>
52
53   <software name="softpack" supported="no">
54      <description>Software Pack</description>
55      <year>198?</year>
56      <publisher>Psion</publisher>
57      <part name="cart" interface="psion_pack">
58         <dataarea name="rom" size="16390">
59            <rom name="software.op1" size="16390" crc="df02f390" sha1="aebfe3a74409b2c52b009d8d4f9d4c4d5732e222" offset="0" />
60         </dataarea>
61      </part>
62   </software>
63
64   <software name="utilityp" supported="no">
65      <description>Utility Pack</description>
66      <year>198?</year>
67      <publisher>Psion</publisher>
68      <part name="cart1" interface="psion_pack">
69         <dataarea name="rom" size="8198">
70            <rom name="utility1.op1" size="8198" crc="62460a38" sha1="ca299aebdafa5d80d6e6f838e0d4de5900db511d" offset="0" />
71         </dataarea>
72      </part>
73      <part name="cart2" interface="psion_pack">
74         <dataarea name="rom" size="8105">
75            <rom name="utility2.op1" size="8105" crc="5fded4c4" sha1="65f44d0ce0885fbbb219b3cdc2f48269a997b4f5" offset="0" />
76         </dataarea>
77      </part>
78   </software>
79
80   <software name="construc" supported="no">
81      <description>Construction Pack</description>
82      <year>198?</year>
83      <publisher>Wessex</publisher>
84      <part name="cart" interface="psion_pack">
85         <dataarea name="rom" size="15063">
86            <rom name="wessex.op1" size="15063" crc="44a1d7ef" sha1="3c5e0d103952aafd55c456692e9eaad1eb0f0ceb" offset="0" />
87         </dataarea>
88      </part>
89   </software>
90
91   <software name="restaur" supported="no">
92      <description>Restaurant Guide </description>
93      <year>198?</year>
94      <publisher>Psion</publisher>
95      <part name="cart" interface="psion_pack">
96         <dataarea name="rom" size="11343">
97            <rom name="restguide.op1" size="11343" crc="7224f817" sha1="37d2548f18556bd2fbb7d592fe2a36811a1b1aaf" offset="0" />
98         </dataarea>
99      </part>
100   </software>
101</softwarelist>
trunk/hash/psion2.xml
r0r241753
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!--
5Info taken from: http://www.retroisle.com/others/psion/organiser2/software.php
6
7Undumped datapack:
8 - Backup (Gene Code Software)
9 - Banking(Psoftshare)
10 - BanKmaN (Computer Solutions)
11 - Calctime (Psoftshare)
12 - Carfax (CLS Software)
13 - ChrCodes (ZIP-Software)
14 - Easy-Writer (Monad International Ltd)
15 - Enigma (ZIP-Software)
16 - Files (ZIP-Software)
17 - Games 1 (Kirsta Products Ltd)
18 - HB Games Pack (HB Consultants)
19 - HB Games 2 (HB Consultants)
20 - IFILES (EMF In Control)
21 - Index Manager (EMF In Control)
22 - Informed Organiser (Harvester Information Systems Ltd)
23 - Justex (MHS)
24 - Keyb3 (Gene Code Software)
25 - KProg (Kirsta Products Ltd)
26 - LACE (Beachcomber Software)
27 - LACE II (Beachcomber Software)
28 - Language Prakpak (Mackay Language Software)
29 - Letter Organiser (Harvester Information Systems Ltd)
30 - List (ZIP-Software)
31 - Mfile
32 - Music Prakpak (Mackay Language Software)
33 - Notepad (Psoftshare)
34 - ODBTran (Sycom Services)
35 - PEEK (ZIP-Software)
36 - Pro Finance
37 - Psion Assembler (Transform Ltd)
38 - Pure Finance
39 - Qbase (Gene Code Software)
40 - Routewise (Titan Computers Ltd)
41 - SAMS (Harvester Information Systems Ltd)
42 - Sightmaster Navigation Program (Waypoint Software)
43 - Sums (ZIP-Software)
44 - Utilities for Programmers
45 - Watch (ZIP-Software)
46 - Xday (ZIP-Software)
47 - XP-Booster (Mackay Language Software)
48 - Yahtzee (Psoftshare)
49
50-->
51
52<softwarelist name="psion2" description="Psion Organiser II Datapack">
53   <software name="abcode">
54      <description>Anteta Barcode Reader</description>
55      <year>198?</year>
56      <publisher>Anteta</publisher>
57      <sharedfeat name="compatibility" value="XP/LZ"/>
58      <part name="cart" interface="psion_pack">
59         <dataarea name="rom" size="31046">
60            <rom name="abcode.opk" size="31046" crc="0ca68683" sha1="2599a7240f3d361a375e61e4d3d11e4ba2d63fef" offset="0" />
61         </dataarea>
62      </part>
63   </software>
64
65   <software name="airnav">
66      <description>Airnav Professional 2c</description>
67      <year>198?</year>
68      <publisher>&lt;unknown&gt;</publisher>
69      <sharedfeat name="compatibility" value="LZ"/>
70      <part name="cart" interface="psion_pack">
71         <dataarea name="rom" size="64978">
72            <rom name="airnav.opk" size="64978" crc="e5e5b8b4" sha1="0a11ee4eb491962faacdac4dfe296a97475c0b6e" offset="0" />
73         </dataarea>
74      </part>
75   </software>
76
77   <software name="anglerpa">
78      <description>Angler Pack</description>
79      <year>198?</year>
80      <publisher>Skyfact Software</publisher>
81      <sharedfeat name="compatibility" value="CM/XP"/>
82      <part name="cart" interface="psion_pack">
83         <dataarea name="rom" size="9365">
84            <rom name="angler.opk" size="9365" crc="92bc7d19" sha1="feaf62bc4349e91ac9c7beb6bd4a5e5cb548d520" offset="0" />
85         </dataarea>
86      </part>
87   </software>
88
89   <software name="ascribe4">
90      <description>AutoScribe Plus v4.11</description>
91      <year>1989</year>
92      <publisher>Widget Software</publisher>
93      <sharedfeat name="compatibility" value="CM/XP/LZ"/>
94      <part name="cart" interface="psion_pack">
95         <dataarea name="rom" size="16328">
96            <rom name="ascribe411.opk" size="16328" crc="62c9fda6" sha1="f49b48b82eed30e4dc862f1e7d256e94f3c80f24" offset="0" />
97         </dataarea>
98      </part>
99   </software>
100
101   <software name="ascribe5">
102      <description>AutoScribe Plus v5.11</description>
103      <year>198?</year>
104      <publisher>Widget Software</publisher>
105      <sharedfeat name="compatibility" value="CM/XP/LZ"/>
106      <part name="cart" interface="psion_pack">
107         <dataarea name="rom" size="16026">
108            <rom name="ascribe511.opk" size="16026" crc="f15837ff" sha1="a23eba4ba8e94bdc3d3e3245cf13aad82093a03d" offset="0" />
109         </dataarea>
110      </part>
111   </software>
112
113   <software name="assem">
114      <description>Assembler Pack v1.0</description>
115      <year>1989</year>
116      <publisher>A.R. Software</publisher>
117      <sharedfeat name="compatibility" value="CM/XP"/>
118      <part name="cart" interface="psion_pack">
119         <dataarea name="rom" size="30276">
120            <rom name="assem.opk" size="30276" crc="a3f863c7" sha1="505afa975ed0068c5cce0a004c924824f8004674" offset="0" />
121         </dataarea>
122      </part>
123   </software>
124
125   <software name="bcprinte">
126      <description>Barcode Printer I v1.42</description>
127      <year>198?</year>
128      <publisher>Gaascom Ltd.</publisher>
129      <sharedfeat name="compatibility" value="CM/XP"/>
130      <part name="cart" interface="psion_pack">
131         <dataarea name="rom" size="16389">
132            <rom name="barcodeprinter.opk" size="16389" crc="9db80aad" sha1="2b39f10c9d09d3b473c816e434929893bffe8b62" offset="0" />
133         </dataarea>
134      </part>
135   </software>
136
137   <software name="clip">
138      <description>Clipboard Inspection System</description>
139      <year>1991</year>
140      <publisher>Rafiq Mahmood</publisher>
141      <sharedfeat name="compatibility" value="LZ"/>
142      <part name="cart1" interface="psion_pack">
143         <dataarea name="rom" size="32270">
144            <rom name="clip.opk" size="32270" crc="6c7afbdd" sha1="6505cb269ec5cc63cd57cc54b0b12181f155f9f3" offset="0" />
145         </dataarea>
146      </part>
147      <part name="cart2" interface="psion_pack">
148         <dataarea name="rom" size="16007">
149            <rom name="notice.opk" size="16007" crc="e1a5d6e0" sha1="46e4f89ba13381e8684fe40194ea2ddaa4f8c924" offset="0" />
150         </dataarea>
151      </part>
152   </software>
153
154   <software name="coastal">
155      <description>Coastal v4.2a</description>
156      <year>198?</year>
157      <publisher>Maritek Ltd</publisher>
158      <sharedfeat name="compatibility" value="CM/XP/LZ"/>
159      <part name="cart" interface="psion_pack">
160         <dataarea name="rom" size="32659">
161            <rom name="coastal.opk" size="32659" crc="380bf6a2" sha1="46fd072f43bf92afadf0bb3e0f7a5beef9c8443d" offset="0" />
162         </dataarea>
163      </part>
164   </software>
165
166   <software name="dataorg">
167      <description>The Data Organiser v2.4</description>
168      <year>198?</year>
169      <publisher>Harvester Information Systems</publisher>
170      <sharedfeat name="compatibility" value="CM/XP"/>
171      <part name="cart" interface="psion_pack">
172         <dataarea name="rom" size="16254">
173            <rom name="dataorg24.opk" size="16254" crc="c1718598" sha1="f18ee33dcdeb7ccb1d3d80ef9c4bd6c806476ff9" offset="0" />
174         </dataarea>
175      </part>
176   </software>
177
178   <software name="ferreth">
179      <description>Ferret Helper v5.1N</description>
180      <year>198?</year>
181      <publisher>Ferret Information Systems</publisher>
182      <sharedfeat name="compatibility" value="CM/XP"/>
183      <part name="cart" interface="psion_pack">
184         <dataarea name="rom" size="16357">
185            <rom name="ferret51n.opk" size="16357" crc="0c374de4" sha1="604308fbaeadc8f4bc0b6d79de1ac9e03bd7bfab" offset="0" />
186         </dataarea>
187      </part>
188   </software>
189
190   <software name="fm375">
191      <description>FileMaster v3.75</description>
192      <year>1988</year>
193      <publisher>Widget Software</publisher>
194      <sharedfeat name="compatibility" value="CM/XP"/>
195      <part name="cart" interface="psion_pack">
196         <dataarea name="rom" size="16335">
197            <rom name="filemaster375.opk" size="16335" crc="810554d7" sha1="505c7a52dc9f4563908532706d2b0e8122d59ce5" offset="0" />
198         </dataarea>
199      </part>
200   </software>
201
202   <software name="fm376">
203      <description>FileMaster v3.76</description>
204      <year>1988</year>
205      <publisher>Widget Software</publisher>
206      <sharedfeat name="compatibility" value="CM/XP"/>
207      <part name="cart" interface="psion_pack">
208         <dataarea name="rom" size="16201">
209            <rom name="filemaster376.opk" size="16201" crc="1c8cd832" sha1="6fe29328f19d3c36780a261c6df7e6cef5c291f8" offset="0" />
210         </dataarea>
211      </part>
212   </software>
213
214   <software name="fm3762">
215      <description>FileMaster v3.762</description>
216      <year>1988</year>
217      <publisher>Widget Software</publisher>
218      <sharedfeat name="compatibility" value="CM/XP"/>
219      <part name="cart" interface="psion_pack">
220         <dataarea name="rom" size="16194">
221            <rom name="filemaster3762.opk" size="16194" crc="f626ed8a" sha1="08d70630ecf3b0160ee7a5c509bece1e1cc5bc39" offset="0" />
222         </dataarea>
223      </part>
224   </software>
225
226   <software name="finance">
227      <description>Finance Pack</description>
228      <year>198?</year>
229      <publisher>Aware</publisher>
230      <sharedfeat name="compatibility" value="CM/XP"/>
231      <part name="cart1" interface="psion_pack">
232         <dataarea name="rom" size="16379">
233            <rom name="finance1b.opk" size="16379" crc="1c34e46b" sha1="5ada96fe015abfc6712236c65d9e6644ac0826e7" offset="0" />
234         </dataarea>
235      </part>
236      <part name="cart2" interface="psion_pack">
237         <dataarea name="rom" size="16359">
238            <rom name="finance1a.opk" size="16359" crc="33cca342" sha1="89d90fbeb27c30dae069db392cc06fd914dc2652" offset="0" />
239         </dataarea>
240      </part>
241   </software>
242
243   <software name="finance2">
244      <description>Finance Pack II</description>
245      <year>198?</year>
246      <publisher>Aware</publisher>
247      <sharedfeat name="compatibility" value="CM/XP/LZ"/>
248      <part name="cart" interface="psion_pack">
249         <dataarea name="rom" size="32709">
250            <rom name="finance2.opk" size="32709" crc="e9295ae2" sha1="e168479fd171777e63441d7dd63ec6a46914d678" offset="0" />
251         </dataarea>
252      </part>
253   </software>
254
255   <software name="finger13">
256      <description>Finger Organiser v1.3</description>
257      <year>198?</year>
258      <publisher>Harvester Information Systems</publisher>
259      <sharedfeat name="compatibility" value="CM/XP"/>
260      <part name="cart" interface="psion_pack">
261         <dataarea name="rom" size="13753">
262            <rom name="finger13.opk" size="13753" crc="84d9d158" sha1="9dcc8f2abfa9808e151686d5342dbfb0115167f4" offset="0" />
263         </dataarea>
264      </part>
265   </software>
266
267   <software name="finger14">
268      <description>Finger Organiser v1.4</description>
269      <year>198?</year>
270      <publisher>Harvester Information Systems</publisher>
271      <sharedfeat name="compatibility" value="CM/XP"/>
272      <part name="cart" interface="psion_pack">
273         <dataarea name="rom" size="13890">
274            <rom name="finger14.opk" size="13890" crc="36785487" sha1="51a6abfcb68846425ae90e63ee228b39eba6ebb2" offset="0" />
275         </dataarea>
276      </part>
277   </software>
278
279   <software name="flightma">
280      <description>Flightmaster v2.19</description>
281      <year>1993</year>
282      <publisher>Software 2000, Inc.</publisher>
283      <sharedfeat name="compatibility" value="CM/XP"/>
284      <part name="cart1" interface="psion_pack">
285         <dataarea name="rom" size="130236">
286            <rom name="flightmastr1.opk" size="130236" crc="47ad1343" sha1="f228c64bf9fc5a849f38fd52bc24f22f94c0c9b3" offset="0" />
287         </dataarea>
288      </part>
289      <part name="cart2" interface="psion_pack">
290         <dataarea name="rom" size="130806">
291            <rom name="flightmastr2.opk" size="130806" crc="a8dbcfd4" sha1="36826de1fcc552b4698ee6a10d06a269fc1f8977" offset="0" />
292         </dataarea>
293      </part>
294   </software>
295
296   <software name="fnkey31">
297      <description>FnKey v3.1</description>
298      <year>1989</year>
299      <publisher>Cubsoft</publisher>
300      <sharedfeat name="compatibility" value="CM/XP/LZ"/>
301      <part name="cart" interface="psion_pack">
302         <dataarea name="rom" size="4333">
303            <rom name="fnkey31.opk" size="4333" crc="46c198dc" sha1="1f9a94216c738649f00b51e3e5d07a0487a1bff9" offset="0" />
304         </dataarea>
305      </part>
306   </software>
307
308   <software name="fnkey40">
309      <description>FnKey v4.0</description>
310      <year>1989</year>
311      <publisher>Cubsoft</publisher>
312      <sharedfeat name="compatibility" value="CM/XP/LZ"/>
313      <part name="cart" interface="psion_pack">
314         <dataarea name="rom" size="6822">
315            <rom name="fnkey40.opk" size="6822" crc="39ca0011" sha1="6a40cdb13c895ff5ac8e37894389b99a2bfbc4fe" offset="0" />
316         </dataarea>
317      </part>
318   </software>
319
320   <software name="formmast">
321      <description>Form Master</description>
322      <year>198?</year>
323      <publisher>Cascade Systems Ltd.</publisher>
324      <sharedfeat name="compatibility" value="CM/XP"/>
325      <part name="cart" interface="psion_pack">
326         <dataarea name="rom" size="16234">
327            <rom name="formmaster.opk" size="16234" crc="9e457b90" sha1="04d1f60543faeec8d4aa7fd7134ed3a636c954c8" offset="0" />
328         </dataarea>
329      </part>
330   </software>
331
332   <software name="formul11">
333      <description>Formulator v1.1</description>
334      <year>198?</year>
335      <publisher>Psion</publisher>
336      <sharedfeat name="compatibility" value="CM/XP/LZ"/>
337      <part name="cart" interface="psion_pack">
338         <dataarea name="rom" size="31604">
339            <rom name="xform1.opk" size="31604" crc="5a690ead" sha1="c226ade8e78bbbcccadfb4cf5007107f1ffe06d2" offset="0" />
340         </dataarea>
341      </part>
342   </software>
343
344   <software name="formul21">
345      <description>Formulator v2.1</description>
346      <year>198?</year>
347      <publisher>Psion</publisher>
348      <sharedfeat name="compatibility" value="CM/XP/LZ"/>
349      <part name="cart" interface="psion_pack">
350         <dataarea name="rom" size="32407">
351            <rom name="xform2.opk" size="32407" crc="cf3fd9c4" sha1="712ebace6fb711bd98ea7053105f3a072ffa695c" offset="0" />
352         </dataarea>
353      </part>
354   </software>
355
356   <software name="gamesorg">
357      <description>Games Organiser v0.2</description>
358      <year>198?</year>
359      <publisher>Harvester Information Systems</publisher>
360      <sharedfeat name="compatibility" value="CM/XP"/>
361      <part name="cart" interface="psion_pack">
362         <dataarea name="rom" size="32770">
363            <rom name="harvgames.opk" size="32770" crc="7120b260" sha1="5e707aacb669960406ece6d1d304c1e1009502c0" offset="0" />
364         </dataarea>
365      </part>
366   </software>
367
368   <software name="gpack">
369      <description>Games Pack</description>
370      <year>198?</year>
371      <publisher>S.I.S. Ltd, Psion</publisher>
372      <sharedfeat name="compatibility" value="CM/XP/LZ"/>
373      <part name="cart" interface="psion_pack">
374         <dataarea name="rom" size="32633">
375            <rom name="games.opk" size="32633" crc="1e31b975" sha1="66cd712eb36ce145b465a32f5c256a315452a31c" offset="0" />
376         </dataarea>
377      </part>
378   </software>
379
380   <software name="gpackma">
381      <description>Games Pack (Mick Andon)</description>
382      <year>198?</year>
383      <publisher>Mick Andon</publisher>
384      <sharedfeat name="compatibility" value="LZ"/>
385      <part name="cart" interface="psion_pack">
386         <dataarea name="rom" size="16559">
387            <rom name="gpack.opk" size="16559" crc="508604b2" sha1="866639b6ae22011a40f47cbdfdee684790f073a0" offset="0" />
388         </dataarea>
389      </part>
390   </software>
391
392   <software name="superc">
393      <description>Harvester Superchip v1.2</description>
394      <year>198?</year>
395      <publisher>Harvester Information Systems</publisher>
396      <sharedfeat name="compatibility" value="CM/XP"/>
397      <part name="cart" interface="psion_pack">
398         <dataarea name="rom" size="31521">
399            <rom name="harvsup12.opk" size="31521" crc="51fe98ea" sha1="9579f63e3f2991ceeb1933645a038620eee62361" offset="0" />
400         </dataarea>
401      </part>
402   </software>
403
404   <software name="inkas">
405      <description>Inkasencki v6.1</description>
406      <year>199?</year>
407      <publisher>&lt;unknown&gt;</publisher>
408      <sharedfeat name="compatibility" value="LZ/POS"/>
409      <part name="cart" interface="psion_pack">
410         <dataarea name="rom" size="48983">
411            <rom name="inkas.opk" size="48983" crc="fbade179" sha1="803c827124a59ff45ceaaf9f66b76b8ff08aba23" offset="0" />
412         </dataarea>
413      </part>
414   </software>
415
416   <software name="jotter25">
417      <description>Jotter v2.5</description>
418      <year>198?</year>
419      <publisher>Camel Systems Ltd</publisher>
420      <sharedfeat name="compatibility" value="XP"/>
421      <part name="cart" interface="psion_pack">
422         <dataarea name="rom" size="32749">
423            <rom name="jotter25.opk" size="32749" crc="4129ad0a" sha1="8f602c2fb1d84c9315e204098f4a32af5a759cb5" offset="0" />
424         </dataarea>
425      </part>
426   </software>
427
428   <software name="maths">
429      <description>Maths Pack</description>
430      <year>198?</year>
431      <publisher>Psion</publisher>
432      <sharedfeat name="compatibility" value="CM/XP"/>
433      <part name="cart" interface="psion_pack">
434         <dataarea name="rom" size="16089">
435            <rom name="maths.opk" size="16089" crc="8cce0583" sha1="9b847068e2f6af575b1ba760245007f436bdf1dd" offset="0" />
436         </dataarea>
437      </part>
438   </software>
439
440   <software name="persfin">
441      <description>Personal Finance</description>
442      <year>1987</year>
443      <publisher>Willow Enterprises Ltd</publisher>
444      <sharedfeat name="compatibility" value="CM/XP"/>
445      <part name="cart" interface="psion_pack">
446         <dataarea name="rom" size="16179">
447            <rom name="persfin.opk" size="16179" crc="2fb0f433" sha1="21bedf9bd3de307650c9b6cad3f11dc9094d0a92" offset="0" />
448         </dataarea>
449      </part>
450   </software>
451
452   <software name="portfoli">
453      <description>Portfolio Pack</description>
454      <year>198?</year>
455      <publisher>DIP, Psion</publisher>
456      <sharedfeat name="compatibility" value="CM/XP"/>
457      <part name="cart" interface="psion_pack">
458         <dataarea name="rom" size="16361">
459            <rom name="portfolio.opk" size="16361" crc="d2836be1" sha1="ca207dedec6f14c0c32ed1092ef13bdb60431ad4" offset="0" />
460         </dataarea>
461      </part>
462   </software>
463
464   <software name="result">
465      <description>Result Vers 4L</description>
466      <year>1989</year>
467      <publisher>Terrace Software</publisher>
468      <sharedfeat name="compatibility" value="LZ"/>
469      <part name="cart" interface="psion_pack">
470         <dataarea name="rom" size="16382">
471            <rom name="result.opk" size="16382" crc="8a7cd79f" sha1="40a385ab126c4a6b5ee23ed2097da15ec73aceb1" offset="0" />
472         </dataarea>
473      </part>
474   </software>
475
476   <software name="sdrp">
477      <description>SDRP 01.05</description>
478      <year>198?</year>
479      <publisher>Datacom Group Ltd.</publisher>
480      <sharedfeat name="compatibility" value="CM/XP"/>
481      <part name="cart" interface="psion_pack">
482         <dataarea name="rom" size="52878">
483            <rom name="sdrp.opk" size="52878" crc="550d0a7e" sha1="53669d69ec7aada6ea73f86697cd2eca6ed98a90" offset="0" />
484         </dataarea>
485      </part>
486   </software>
487
488   <software name="cosc">
489      <description>Concise Oxford Spelling Checker</description>
490      <year>198?</year>
491      <publisher>Psion</publisher>
492      <sharedfeat name="compatibility" value="CM/XP"/>
493      <part name="cart" interface="psion_pack">
494         <dataarea name="rom" size="65537">
495            <rom name="spllchk.opk" size="65537" crc="39348a17" sha1="ba85c07037bcc84774d00c58811d664af5b0338b" offset="0" />
496         </dataarea>
497      </part>
498   </software>
499
500   <software name="ssheet12">
501      <description>Spreadsheet v1.2</description>
502      <year>198?</year>
503      <publisher>Psion</publisher>
504      <sharedfeat name="compatibility" value="XP"/>
505      <part name="cart" interface="psion_pack">
506         <dataarea name="rom" size="29806">
507            <rom name="sprdsht_v12.opk" size="29806" crc="3eaf213f" sha1="b0cbc97cc42a98738b3fcc3ea7af79415234d041" offset="0" />
508         </dataarea>
509      </part>
510   </software>
511
512   <software name="ssheet13">
513      <description>Spreadsheet v1.3</description>
514      <year>198?</year>
515      <publisher>Psion</publisher>
516      <sharedfeat name="compatibility" value="XP"/>
517      <part name="cart" interface="psion_pack">
518         <dataarea name="rom" size="30385">
519            <rom name="sprdsht_v13.opk" size="30385" crc="435e34ab" sha1="10e2c95d668e2b27c9a9326a54fc0adc7010e954" offset="0" />
520         </dataarea>
521      </part>
522   </software>
523
524   <software name="ssheet34">
525      <description>Spreadsheet v3.4</description>
526      <year>1987</year>
527      <publisher>Psion</publisher>
528      <sharedfeat name="compatibility" value="XP/LZ"/>
529      <part name="cart" interface="psion_pack">
530         <dataarea name="rom" size="32508">
531            <rom name="sprdsht_v34.opk" size="32508" crc="6afc6dcc" sha1="b0b2059fd1c59ba7c7b55235745fd36186bdd5ca" offset="0" />
532         </dataarea>
533      </part>
534   </software>
535
536   <software name="tsc" supported="no">
537      <description>Thesaurus and Spelling Checker</description>
538      <year>198?</year>
539      <publisher>Psion</publisher>
540      <sharedfeat name="compatibility" value="CM/XP/LZ"/>
541      <part name="cart" interface="psion_pack">
542         <dataarea name="rom" size="262150">
543            <rom name="thesaurus.opk" size="262150" crc="b24ca0af" sha1="31ba8482e5a0c17e2fe83341f393668c0bdcae0f" offset="0" />
544         </dataarea>
545      </part>
546   </software>
547
548   <software name="topfin">
549      <description>Top Finance 2.1f</description>
550      <year>1988</year>
551      <publisher>Aware</publisher>
552      <sharedfeat name="compatibility" value="LZ"/>
553      <part name="cart" interface="psion_pack">
554         <dataarea name="rom" size="16338">
555            <rom name="topfinance.opk" size="16338" crc="480d3056" sha1="4d869fd7429465db78ceaa0f59ca5a447316474b" offset="0" />
556         </dataarea>
557      </part>
558   </software>
559
560   <software name="travel12">
561      <description>Travel Pack v1.2</description>
562      <year>1988</year>
563      <publisher>Organised Solutions Ltd, Psion</publisher>
564      <sharedfeat name="compatibility" value="CM/XP"/>
565      <part name="cart" interface="psion_pack">
566         <dataarea name="rom" size="65458">
567            <rom name="travel12.opk" size="65458" crc="03946bc2" sha1="49be125001d557ea654aabd2dabab5c4f71f626f" offset="0" />
568         </dataarea>
569      </part>
570   </software>
571
572   <software name="travel15">
573      <description>Travel Pack v1.5</description>
574      <year>1988</year>
575      <publisher>Organised Solutions Ltd, Psion</publisher>
576      <sharedfeat name="compatibility" value="CM/XP"/>
577      <part name="cart" interface="psion_pack">
578         <dataarea name="rom" size="65493">
579            <rom name="travel15.opk" size="65493" crc="38310574" sha1="5be0e7b121998c7d238fe8c639b732d0272d70ea" offset="0" />
580         </dataarea>
581      </part>
582   </software>
583
584   <software name="travel20">
585      <description>Travel Pack v2.0</description>
586      <year>198?</year>
587      <publisher>Organised Solutions Ltd, Psion</publisher>
588      <sharedfeat name="compatibility" value="CM/XP"/>
589      <part name="cart" interface="psion_pack">
590         <dataarea name="rom" size="65535">
591            <rom name="travel20.opk" size="65535" crc="2f00fb63" sha1="ec1898eb489ba01c137d712d9dd604f4da699124" offset="0" />
592         </dataarea>
593      </part>
594   </software>
595
596   <software name="xbase20">
597      <description>XBase v2.0</description>
598      <year>198?</year>
599      <publisher>Cubsoft</publisher>
600      <sharedfeat name="compatibility" value="CM/XP"/>
601      <part name="cart" interface="psion_pack">
602         <dataarea name="rom" size="16350">
603            <rom name="xbase.opk" size="16350" crc="faecaac5" sha1="6bcc4d0fed68fdac3c628ab5858c6a81da7627a7" offset="0" />
604         </dataarea>
605      </part>
606   </software>
607
608   <software name="xbase30">
609      <description>XBase v3.0</description>
610      <year>198?</year>
611      <publisher>Cubsoft</publisher>
612      <sharedfeat name="compatibility" value="CM/XP"/>
613      <part name="cart" interface="psion_pack">
614         <dataarea name="rom" size="16350">
615            <rom name="xbase3.opk" size="16336" crc="4a97fe68" sha1="a1dde293b421ffbb248459e2af465fdbdba7f2bb" offset="0" />
616         </dataarea>
617      </part>
618   </software>
619
620   <software name="xforma">
621      <description>Formulator (Alt)</description>
622      <year>198?</year>
623      <publisher>Psion Ltd</publisher>
624      <sharedfeat name="compatibility" value="XP/LZ"/>
625      <part name="cart" interface="psion_pack">
626         <dataarea name="rom" size="32773">
627            <rom name="xforma.opk" size="32773" crc="462ad96e" sha1="221235da3ecf22ac71a7ab248afc2d681ccd6d6d" offset="0" />
628         </dataarea>
629      </part>
630   </software>
631
632   <software name="xformtop">
633      <description>Formulator Top</description>
634      <year>198?</year>
635      <publisher>Psion Ltd</publisher>
636      <sharedfeat name="compatibility" value="XP/LZ"/>
637      <part name="cart" interface="psion_pack">
638         <dataarea name="rom" size="47862">
639            <rom name="xformtop.opk" size="47862" crc="9e109d42" sha1="a91e9eb195ce865c38099cd56ceb29ec52323377" offset="0" />
640         </dataarea>
641      </part>
642   </software>
643
644   <software name="diallink">
645      <!-- Software to control the Dial-Link dialler device (which does not have built-in ROM software). -->
646      <description>Dial-Link</description>
647      <year>198?</year>
648      <publisher>Widget Software</publisher>
649      <sharedfeat name="compatibility" value="CM/XP"/>
650      <part name="cart" interface="psion_pack">
651         <dataarea name="rom" size="16275">
652            <rom name="diallink.opk" size="16275" crc="e435edd2" sha1="394e343881b669d8764304706d788df4fd029632" offset="0" />
653         </dataarea>
654      </part>
655   </software>
656
657   <software name="digit110">
658      <!-- Software to control the Digitron SF10 Logger device (which does not have built-in ROM software) and for logging its readings. -->
659      <description>Digitron SF10 v1.10</description>
660      <year>198?</year>
661      <publisher>Silvertree Eng., Digitron Inst.</publisher>
662      <sharedfeat name="compatibility" value="CM/XP"/>
663      <part name="cart" interface="psion_pack">
664         <dataarea name="rom" size="29134">
665            <rom name="digitron110.opk" size="29134" crc="37d2dcee" sha1="05a17b8fdd0206fe1dd4e496aed1a973b9591402" offset="0" />
666         </dataarea>
667      </part>
668   </software>
669
670   <software name="digit114">
671      <!-- Software to control the Digitron SF10 Logger device (which does not have built-in ROM software) and for logging its readings. -->
672      <description>Digitron SF10 v1.14</description>
673      <year>198?</year>
674      <publisher>Silvertree Eng., Digitron Inst.</publisher>
675      <sharedfeat name="compatibility" value="CM/XP"/>
676      <part name="cart" interface="psion_pack">
677         <dataarea name="rom" size="29326">
678            <rom name="digitron114.opk" size="29326" crc="a838a41c" sha1="22b2e76828dafcdf8caab7c651f7078e730f1a39" offset="0" />
679         </dataarea>
680      </part>
681   </software>
682
683   <software name="fpakdriv">
684      <!-- A datapak with the flashpak driver, which can be used to reformat a flashpak in the other slot. -->
685      <description>FlashPak Driver v1.9</description>
686      <year>198?</year>
687      <publisher>Psion</publisher>
688      <sharedfeat name="compatibility" value="XP/LZ"/>
689      <part name="cart" interface="psion_pack">
690         <dataarea name="rom" size="7135">
691            <rom name="flashpak.opk" size="7135" crc="1138998a" sha1="954a60febab3c86233e2d62ddf42d6e4940eb858" offset="0" />
692         </dataarea>
693      </part>
694   </software>
695
696   <software name="msp100">
697      <!-- Software to control the KDG Mobrey Smart device (which does not have built-in ROM software) and use that to communicate with their MSP100 ultrasonic liquid level transmitter. -->
698      <description>KDG Mobrey MSP100 v1.0</description>
699      <year>198?</year>
700      <publisher>KDG Mobrey</publisher>
701      <sharedfeat name="compatibility" value="LZ"/>
702      <part name="cart" interface="psion_pack">
703         <dataarea name="rom" size="54730">
704            <rom name="msp100.opk" size="54730" crc="62bac741" sha1="c6af1491665adf744142ad354b6f52b1dcfde813" offset="0" />
705         </dataarea>
706      </part>
707   </software>
708
709   <software name="onewayin">
710      <!-- The device does not have built-in software, but needs a separate pack containing the software. -->
711      <!-- This file contains the software that should be installed on a pack using the Organiser Developer kit. -->
712      <description>One-Way Interface</description>
713      <year>198?</year>
714      <publisher>On-Line Design Inc</publisher>
715      <sharedfeat name="compatibility" value="CM/XP/LZ"/>
716      <part name="cart" interface="psion_pack">
717         <dataarea name="rom" size="2430">
718            <rom name="owi.bin" size="2430" crc="958509a9" sha1="934a729911d070c7de106684c354eebf16ee78ae" offset="0" />
719         </dataarea>
720      </part>
721   </software>
722
723   <software name="psitex20">
724      <!-- Software used for programming the Microtima Series 4 Year -->
725      <!-- Programmable Controller which is connected through the Comms Link. -->
726      <description>PsiTex v2.000</description>
727      <year>198?</year>
728      <publisher>Microtima</publisher>
729      <sharedfeat name="compatibility" value="LZ"/>
730      <part name="cart" interface="psion_pack">
731         <dataarea name="rom" size="16238">
732            <rom name="psitex200.opk" size="16238" crc="cce04194" sha1="f6498b365ddff6e0df07b7286a69d1e78f4a2f4d" offset="0" />
733         </dataarea>
734      </part>
735   </software>
736
737   <software name="sigset20">
738      <!-- Software used for programming type 141 Traffic Light Controllers -->
739      <!-- which are connected through the Comms Link. -->
740      <description>SigSet v2.01</description>
741      <year>198?</year>
742      <publisher>Microtima</publisher>
743      <sharedfeat name="compatibility" value="LZ"/>
744      <part name="cart" interface="psion_pack">
745         <dataarea name="rom" size="8248">
746            <rom name="sigset201.opk" size="8248" crc="8696fb8a" sha1="ada45c41b083b68c1823da0a951b7a8a593d1648" offset="0" />
747         </dataarea>
748      </part>
749   </software>
750
751   <software name="sonylisa">
752      <!-- Software to control the Sony Lisa-1 device (which does not have built-in ROM software). -->
753      <!-- This pack image is for use with TR45E and TR75E camcorders. -->
754      <description>Sony Lisa-1 v3.0</description>
755      <year>198?</year>
756      <publisher>Sony</publisher>
757      <sharedfeat name="compatibility" value="CM/XP/LZ"/>
758      <part name="cart" interface="psion_pack">
759         <dataarea name="rom" size="16521">
760            <rom name="sony_lisa1.opk" size="16521" crc="417a9b34" sha1="b2747bcf6be33f0c27f263dbbdfe2512e68e1810" offset="0" />
761         </dataarea>
762      </part>
763   </software>
764
765
766
767   <!-- Devices -->
768
769   <software name="rs232l11" supported="no">
770      <!-- Early version of Comms Link. Has no Psion protocol. -->
771      <description>RS232 Link 1.1</description>
772      <year>198?</year>
773      <publisher>Psion</publisher>
774      <part name="cart" interface="psion_pack">
775         <dataarea name="rom" size="8137">
776            <rom name="comms11.opk" size="8137" crc="48c1564b" sha1="2c81bc1174290ed825945508f5ff4f62505831d6" offset="0" />
777         </dataarea>
778      </part>
779   </software>
780
781   <software name="rs232l15" supported="no">
782      <description>RS232 Link 1.5</description>
783      <year>198?</year>
784      <publisher>Psion</publisher>
785      <part name="cart" interface="psion_pack">
786         <dataarea name="rom" size="7736">
787            <rom name="comms15.opk" size="7736" crc="b11cd524" sha1="b7d09c946c45915f854ac79cab24f652914ebd68" offset="0" />
788         </dataarea>
789      </part>
790   </software>
791
792   <software name="clink24" supported="no">
793      <description>Comms Link 2.4</description>
794      <year>198?</year>
795      <publisher>Psion</publisher>
796      <part name="cart" interface="psion_pack">
797         <dataarea name="rom" size="22515">
798            <rom name="comms24.opk" size="22515" crc="3a42d92f" sha1="b7603f07f5479b1939e0486d819e1552a0e7dcac" offset="0" />
799         </dataarea>
800      </part>
801   </software>
802
803   <software name="clink25" supported="no">
804      <description>Comms Link 2.5</description>
805      <year>198?</year>
806      <publisher>Psion</publisher>
807      <part name="cart" interface="psion_pack">
808         <dataarea name="rom" size="22510">
809            <rom name="comms25.opk" size="22510" crc="5c985379" sha1="dd4e5d17b83883cac75c5220dad0c51ddb6ba1c1" offset="0" />
810         </dataarea>
811      </part>
812   </software>
813
814   <software name="clink30" supported="no">
815      <description>Comms Link 3.0</description>
816      <year>198?</year>
817      <publisher>Psion</publisher>
818      <part name="cart" interface="psion_pack">
819         <dataarea name="rom" size="25112">
820            <rom name="comms30.opk" size="25112" crc="58770787" sha1="129ec0fd2642bdef02a92e8432825f650cfacfbd" offset="0" />
821         </dataarea>
822      </part>
823   </software>
824
825   <software name="clink40" supported="no">
826      <description>Comms Link 4.0</description>
827      <year>1987</year>
828      <publisher>Psion</publisher>
829      <part name="cart" interface="psion_pack">
830         <dataarea name="rom" size="32312">
831            <rom name="comms40.opk" size="32312" crc="9d210b51" sha1="2307a773b30a95f3f09225821d619ff6cdd8ae7d" offset="0" />
832         </dataarea>
833      </part>
834   </software>
835
836   <software name="clink41" supported="no">
837      <description>Comms Link 4.1</description>
838      <year>198?</year>
839      <publisher>Psion</publisher>
840      <part name="cart" interface="psion_pack">
841         <dataarea name="rom" size="32403">
842            <rom name="comms41.opk" size="32403" crc="dfb1dc85" sha1="4f0a6dd1cdeb4d3ed0d8e84017e2d73ac7f5e0c2" offset="0" />
843         </dataarea>
844      </part>
845   </software>
846
847   <software name="clink42" supported="no">
848      <description>Comms Link 4.2</description>
849      <year>198?</year>
850      <publisher>Psion</publisher>
851      <part name="cart" interface="psion_pack">
852         <dataarea name="rom" size="32411">
853            <rom name="comms42.opk" size="32411" crc="9d7aa280" sha1="2d31f4c48f222ffa67fafe5689cc19d8187eafed" offset="0" />
854         </dataarea>
855      </part>
856   </software>
857
858   <software name="ecp2" supported="no">
859      <!-- The Extech Comms Printer II contains Comms Link version 4.3 together with software for the Bar Code Reader, Magnetic Card reader, and its printer. -->
860      <description>Extech Comms Printer II 4.3</description>
861      <year>198?</year>
862      <publisher>Psion</publisher>
863      <part name="cart" interface="psion_pack">
864         <dataarea name="rom" size="46397">
865            <rom name="extprt43.opk" size="46397" crc="443d0905" sha1="10a3576786f5ac65082b2856bc1578373f30d6fc" offset="0" />
866         </dataarea>
867      </part>
868   </software>
869
870   <software name="dynapen" supported="no">
871      <!-- The Dynapen contains Comms Link version 4.4 together with Bar Code Reader menu item and utilities. -->
872      <description>Dynapen 4.4</description>
873      <year>198?</year>
874      <publisher>Psion</publisher>
875      <part name="cart" interface="psion_pack">
876         <dataarea name="rom" size="55408">
877            <rom name="dynapen.opk" size="55408" crc="fecb74ce" sha1="452c3776029475d025d9f7cfd562e3c5f24fe310" offset="0" />
878         </dataarea>
879      </part>
880   </software>
881
882   <software name="pprint16" supported="no">
883      <description>Psion Printer 1.6</description>
884      <year>198?</year>
885      <publisher>Psion</publisher>
886      <part name="cart" interface="psion_pack">
887         <dataarea name="rom" size="4550">
888            <rom name="printer16.opk" size="4550" crc="cb3c7bff" sha1="b3d3ef91ce07584504a5ddc92503e2bc291c8832" offset="0" />
889         </dataarea>
890      </part>
891   </software>
892
893   <software name="pprint21" supported="no">
894      <description>Psion Printer 2.1</description>
895      <year>198?</year>
896      <publisher>Psion</publisher>
897      <part name="cart" interface="psion_pack">
898         <dataarea name="rom" size="4913">
899            <rom name="printer21.opk" size="4913" crc="701f489e" sha1="784d07d2ad525bed5dc9511bd1716029cc91f1fc" offset="0" />
900         </dataarea>
901      </part>
902   </software>
903
904   <software name="pprint22" supported="no">
905      <description>Psion Printer 2.2</description>
906      <year>198?</year>
907      <publisher>Psion</publisher>
908      <part name="cart" interface="psion_pack">
909         <dataarea name="rom" size="4945">
910            <rom name="printer22.opk" size="4945" crc="d12a5b5d" sha1="18b2b5e7d84c8dbe7fe96c9c046e8239af65b9e6" offset="0" />
911         </dataarea>
912      </part>
913   </software>
914
915   <software name="mcr20" supported="no">
916      <description>Magnetic Card Reader 2.0</description>
917      <year>198?</year>
918      <publisher>Psion</publisher>
919      <part name="cart" interface="psion_pack">
920         <dataarea name="rom" size="748">
921            <rom name="swipe20.opk" size="748" crc="a7d1d051" sha1="325ac98d9330bb68d23d72610899c9176998a26b" offset="0" />
922         </dataarea>
923      </part>
924   </software>
925
926   <software name="bcread31" supported="no">
927      <description>Bad Code Reader 3.1</description>
928      <year>198?</year>
929      <publisher>Psion</publisher>
930      <part name="cart" interface="psion_pack">
931         <dataarea name="rom" size="11263">
932            <rom name="bar31.opk" size="11263" crc="3951726d" sha1="4ae19527dee89dc2909e716d1dbff40f17a1f361" offset="0" />
933         </dataarea>
934      </part>
935   </software>
936
937   <software name="bcread32" supported="no">
938      <description>Bad Code Reader 3.2</description>
939      <year>198?</year>
940      <publisher>Psion</publisher>
941      <part name="cart" interface="psion_pack">
942         <dataarea name="rom" size="11375">
943            <rom name="bar32.opk" size="11375" crc="d5c7079c" sha1="a04eeafcc3125131d18a0063b7db56e7a59f5108" offset="0" />
944         </dataarea>
945      </part>
946   </software>
947
948   <software name="pager13" supported="no">
949      <description>Pager 1.3</description>
950      <year>198?</year>
951      <publisher>Psion</publisher>
952      <part name="cart" interface="psion_pack">
953         <dataarea name="rom" size="15226">
954            <rom name="pager13.opk" size="15226" crc="05045d72" sha1="4ccc8d32d34e65ec0bc3b0f50cda9b1146d1b6af" offset="0" />
955         </dataarea>
956      </part>
957   </software>
958
959   <software name="plink20" supported="no">
960      <description>Paralink 2.0</description>
961      <year>198?</year>
962      <publisher>Silvertree Engineering Ltd.</publisher>
963      <part name="cart" interface="psion_pack">
964         <dataarea name="rom" size="6062">
965            <rom name="paralink20.opk" size="6062" crc="75a3596d" sha1="43dfdd4b39d9da00ccb7aa74b66d610e90867b75" offset="0" />
966         </dataarea>
967      </part>
968   </software>
969
970   <software name="plink33" supported="no">
971      <description>Paralink 3.3</description>
972      <year>198?</year>
973      <publisher>Silvertree Engineering Ltd.</publisher>
974      <part name="cart" interface="psion_pack">
975         <dataarea name="rom" size="16352">
976            <rom name="paralink33.opk" size="16352" crc="b672445b" sha1="b3b49dd46fa6b0753d8aa5df4e447c263dbb58f5" offset="0" />
977         </dataarea>
978      </part>
979   </software>
980
981   <software name="plink34" supported="no">
982      <description>Paralink 3.4</description>
983      <year>198?</year>
984      <publisher>Silvertree Engineering Ltd.</publisher>
985      <part name="cart" interface="psion_pack">
986         <dataarea name="rom" size="16352">
987            <rom name="paralink34.opk" size="16352" crc="3a22f0ae" sha1="e55cf03aed678da812096a926e70355f26ea2229" offset="0" />
988         </dataarea>
989      </part>
990   </software>
991
992   <software name="andoverc" supported="no">
993      <description>Andover Controls Hand-Held Operator's Terminal</description>
994      <year>198?</year>
995      <publisher>Psion</publisher>
996      <part name="cart" interface="psion_pack">
997         <dataarea name="rom" size="12959">
998            <rom name="andover.opk" size="12959" crc="dee5a895" sha1="a2fe553b3d0d5dc38ec5efb393e665676223b3dd" offset="0" />
999         </dataarea>
1000      </part>
1001   </software>
1002
1003   <software name="cnf41hi" supported="no">
1004      <description>CNF41 HART interface 1.0</description>
1005      <year>198?</year>
1006      <publisher>Psion</publisher>
1007      <part name="cart" interface="psion_pack">
1008         <dataarea name="rom" size="60686">
1009            <rom name="cnf41_10.opk" size="60686" crc="720be551" sha1="74b7162acbada7f35a77010c201cf5506d909aae" offset="0" />
1010         </dataarea>
1011      </part>
1012   </software>
1013
1014</softwarelist>
trunk/hash/radio86_cass.xml
r241752r241753
11<?xml version="1.0"?>
22<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3<softwarelist name="radio86" description="Radio-86RK cassettes">
3<softwarelist name="radio86_cass" description="Radio-86RK cassettes">
44
55<!-- GAMES -->
66
trunk/hash/snes.xml
r241752r241753
428428        </part>
429429    </software>
430430
431    <software name="ggoemon3rb" cloneof="ggoemon3">
432        <description>Ganbare Goemon 3 - Shishi Juurokubee no Karakuri Manjigatame (Jpn, Rev. B)</description>
433        <year>1994</year>
434        <publisher>Konami</publisher>
435        <info name="serial" value="SHVC-2U" />
436        <info name="release" value="19941216" />
437        <info name="alt_title" value="がんばれゴエモン3 獅子重禄兵衛のからくり卍固め" />
438        <sharedfeat name="compatibility" value="NTSC"/>
439        <part name="cart" interface="snes_cart">
440            <feature name="pcb" value="SHVC-1A3M-30" />
441            <feature name="u1" value="U1 MASK ROM(N)" />
442            <feature name="u2" value="U2 64K SRAM" />
443            <feature name="u3" value="U3 MAD-1" />
444            <feature name="u4" value="U4 CIC" />
445            <feature name="lockout" value="" />
446            <feature name="battery" value="BATT CR2032" />
447            <feature name="cart_revision" value="B" />
448            <feature name="cart_model" value="SHVC-006" />
449            <feature name="cart_back_label" value="920214" />
450            <dataarea name="rom" size="2097152">
451                <rom name="shvc-2u-2.u1" size="2097152" crc="af984bc1" offset="0x000000" />
452            </dataarea>
453            <dataarea name="nvram" size="8192">
454            </dataarea>
455        </part>
456    </software>
457
458431    <software name="shinkoukra" cloneof="shinkouk">
459432        <description>Shinchou Kouki (Jpn, Rev. A)</description>
460433        <year>1993</year>
r241752r241753
1524915222      </part>
1525015223   </software>
1525115224
15252   <software name="powyak2a" cloneof="powyak2">
15225   <software name="powyak2b" cloneof="powyak2">
1525315226      <description>Jikkyou Powerful Pro Yakyuu 2 (Jpn)</description>
1525415227      <year>1995</year>
1525515228      <publisher>Konami</publisher>
r241752r241753
1734817321      </part>
1734917322   </software>
1735017323
17351   <software name="mjtaika2">
17324   <software name="mjtaika2a" cloneof="mjtaika2">
1735217325      <description>Mahjong Taikai II (Jpn)</description>
1735317326      <year>1994</year>
1735417327      <publisher>Koei</publisher>
r241752r241753
2641126384      </part>
2641226385   </software>
2641326386
26414   <software name="supermjtc" cloneof="supermjt">
26387   <software name="supermjtd" cloneof="supermjt">
2641526388      <description>Super Mahjong Taikai (Jpn)</description>
2641626389      <year>1992</year>
2641726390      <publisher>Koei</publisher>
r241752r241753
2643726410      </part>
2643826411   </software>
2643926412
26440   <software name="supermjtb" cloneof="supermjt">
26413   <software name="supermjtc" cloneof="supermjt">
2644126414      <description>Super Mahjong Taikai (Jpn, Rev. A)</description>
2644226415      <year>1992</year>
2644326416      <publisher>Koei</publisher>
r241752r241753
3249232465      </part>
3249332466   </software>
3249432467
32495   <software name="powyak2">
32468   <software name="powyak2a" cloneof="powyak2">
3249632469      <!-- single cartridge source: Yakushi~Kabuto -->
3249732470      <description>Jikkyou Powerful Pro Yakyuu 2 (Jpn, Rev. A)</description>
3249832471      <year>1995</year>
r241752r241753
3315833131      </part>
3315933132   </software>
3316033133
33161   <software name="supermjt">
33134   <software name="supermjta" cloneof="supermjt">
3316233135      <!-- single cartridge source: Yakushi~Kabuto -->
3316333136      <description>Super Mahjong Taikai (Jpn, Rev. D)</description>
3316433137      <year>1992</year>
r241752r241753
3569735670      </part>
3569835671   </software>
3569935672
35673<!-- Prototype for the European version of Jim Power -->
35674   <software name="buckrog" cloneof="jimpower">
35675      <description>Buck Rogers - The Arcade Game (Euro, Prototype)</description>
35676      <year>1993</year>
35677      <publisher>Electro Brain</publisher>
35678      <sharedfeat name="compatibility" value="PAL"/>
35679      <part name="cart" interface="snes_cart">
35680         <feature name="slot" value="lorom" />
35681         <dataarea name="rom" size="1048576">
35682            <rom name="buck rogers - the arcade game (beta jim power).sfc" size="1048576" crc="d75f5abb" sha1="9d8b0fcf803fb6d0d60cbc84573a45e08c38f777" offset="0x000000" />
35683         </dataarea>
35684      </part>
35685   </software>
35686
3570035687   <software name="bullvsbl">
3570135688      <description>Bulls vs Blazers and the NBA Playoffs (Euro, Rev. A)</description>
3570235689      <year>1992</year>
r241752r241753
4004540032      </part>
4004640033   </software>
4004740034
40048   <software name="ggoemon3">
40035   <software name="ggoemon3a" cloneof="ggoemon3">
4004940036      <description>Ganbare Goemon 3 - Shishi Juurokubee no Karakuri Manjigatame (Jpn)</description>
4005040037      <year>1994</year>
4005140038      <publisher>Konami</publisher>
r241752r241753
4006340050      </part>
4006440051   </software>
4006540052
40053   <software name="ggoemon3">
40054      <description>Ganbare Goemon 3 - Shishi Juurokubee no Karakuri Manjigatame (Jpn, Rev. B)</description>
40055      <year>1994</year>
40056      <publisher>Konami</publisher>
40057      <info name="serial" value="SHVC-2U" />
40058      <info name="release" value="19941216" />
40059      <info name="alt_title" value="がんばれゴエモン3 獅子重禄兵衛のからくり卍固め" />
40060      <sharedfeat name="compatibility" value="NTSC"/>
40061      <part name="cart" interface="snes_cart">
40062         <feature name="pcb" value="SHVC-1A3M-30" />
40063         <feature name="u1" value="U1 MASK ROM(N)" />
40064         <feature name="u2" value="U2 64K SRAM" />
40065         <feature name="u3" value="U3 MAD-1" />
40066         <feature name="u4" value="U4 CIC" />
40067         <feature name="lockout" value="" />
40068         <feature name="battery" value="BATT CR2032" />
40069         <feature name="cart_revision" value="B" />
40070         <feature name="cart_model" value="SHVC-006" />
40071         <feature name="cart_back_label" value="920214" />
40072         <dataarea name="rom" size="2097152">
40073            <rom name="shvc-2u-2.u1" size="2097152" crc="af984bc1" sha1="2732b810694880f9a388657ffb4cfb79d7d3ea7c" offset="0x000000" />
40074         </dataarea>
40075         <dataarea name="nvram" size="8192">
40076         </dataarea>
40077      </part>
40078   </software>
40079
4006640080   <software name="ggoemkir">
4006740081      <description>Ganbare Goemon Kirakira Douchuu - Boku ga Dancer ni Natta Wake (Jpn, Rev. B, NP)</description>
4006840082      <year>1995</year>
r241752r241753
4305743071      </part>
4305843072   </software>
4305943073
43074   <software name="powyak2">
43075      <description>Jikkyou Powerful Pro Yakyuu 2 (Jpn, Rev. B)</description>
43076      <year>1995</year>
43077      <publisher>Konami</publisher>
43078      <info name="serial" value="SHVC-AP2J-JPN" />
43079      <info name="release" value="19950224" />
43080      <info name="alt_title" value="実況パワフルプロ野球2" />
43081      <sharedfeat name="compatibility" value="NTSC"/>
43082      <part name="cart" interface="snes_cart">
43083         <feature name="slot" value="lorom" />
43084         <dataarea name="rom" size="2621440">
43085            <rom name="pawafurupuroyakyu.29b03.sfc" size="2621440" crc="855e3deb" sha1="508b86da019645e787a87ead558b7f8c24864f68" offset="0x000000" />
43086         </dataarea>
43087         <dataarea name="nvram" size="8192">
43088         </dataarea>
43089      </part>
43090   </software>
43091
4306043092   <software name="powyk397">
4306143093      <description>Jikkyou Powerful Pro Yakyuu 3 - '97 Haru (Jpn, Rev. A)</description>
4306243094      <year>1997</year>
r241752r241753
4610646138      </part>
4610746139   </software>
4610846140
46141   <software name="magdrop2bh" cloneof="magdrop2">
46142      <description>Magical Drop 2 (Jpn, Bunka Housou Special Version)</description>
46143      <year>1996</year>
46144      <publisher>Data East</publisher>
46145      <info name="serial" value="SHVC-AOQJ-JPN" />
46146      <info name="release" value="19960920" />
46147      <info name="alt_title" value="マジカルドロップ2" />
46148      <part name="cart" interface="snes_cart">
46149         <feature name="slot" value="hirom" />
46150         <dataarea name="rom" size="2097152">
46151            <rom name="magicaldrop2bunka.b9ee.sfc" size="2097152" crc="569a1cec" sha1="2602129615be0b06e9e4e431ab7f987a41c87b2b" offset="0x000000" />
46152         </dataarea>
46153      </part>
46154   </software>
46155
4610946156   <software name="magpopn">
4611046157      <description>Magical Pop'n (Jpn)</description>
4611146158      <year>1995</year>
r241752r241753
4626746314      </part>
4626846315   </software>
4626946316
46317   <software name="mjtaika2">
46318      <description>Mahjong Taikai II (Jpn, Rev. A)</description>
46319      <year>1994</year>
46320      <publisher>Koei</publisher>
46321      <info name="serial" value="SHVC-AIQJ-JPN" />
46322      <info name="release" value="19940930" />
46323      <info name="alt_title" value="麻雀大会II" />
46324      <part name="cart" interface="snes_cart">
46325         <feature name="slot" value="lorom" />
46326         <dataarea name="rom" size="1048576">
46327            <rom name="mahjongtaikai2.758b.sfc" size="1048576" crc="5695cc12" sha1="0249fda5aa715a45fef50be25d521fdfcb61e9be" offset="0x000000" />
46328         </dataarea>
46329         <dataarea name="nvram" size="8192">
46330         </dataarea>
46331      </part>
46332   </software>
46333
4627046334   <software name="mjtouhai">
4627146335      <description>The Mahjong Touhaiden (Jpn)</description>
4627246336      <year>1993</year>
r241752r241753
5062950693      </part>
5063050694   </software>
5063150695
50696   <software name="pinkie">
50697      <description>Pinkie (USA, Prototype)</description>
50698      <year>1995</year>
50699      <publisher>Data Design</publisher>
50700      <part name="cart" interface="snes_cart">
50701         <feature name="slot" value="lorom" />
50702         <dataarea name="rom" size="1048576">
50703            <rom name="pink2.sfc" size="1048576" crc="91c9d645" sha1="74e2204c1a1c03fb4db322130b9d03e1350b5b58" offset="0x000000" />
50704         </dataarea>
50705      </part>
50706   </software>
50707
5063250708   <software name="pinocj" cloneof="pinoc">
5063350709      <description>Pinocchio (Jpn)</description>
5063450710      <year>1996</year>
r241752r241753
5725657332      </part>
5725757333   </software>
5725857334
57259   <software name="supermjta" cloneof="supermjt">
57335   <software name="supermjtb" cloneof="supermjt">
5726057336      <description>Super Mahjong Taikai (Jpn, Rev. C)</description>
5726157337      <year>1992</year>
5726257338      <publisher>Koei</publisher>
r241752r241753
5727357349      </part>
5727457350   </software>
5727557351
57352   <software name="supermjt">
57353      <description>Super Mahjong Taikai (Jpn, Rev. E)</description>
57354      <year>1992</year>
57355      <publisher>Koei</publisher>
57356      <info name="serial" value="SHVC-IQ" />
57357      <info name="release" value="19920912" />
57358      <info name="alt_title" value="スーパー麻雀大会" />
57359      <part name="cart" interface="snes_cart">
57360         <feature name="slot" value="lorom" />
57361         <dataarea name="rom" size="524288">
57362            <rom name="supermahjongtaikai.a6f9.sfc" size="524288" crc="732740ec" sha1="e2d0e493d8b9cfba98338a80de942f45968d1f25" offset="0x000000" />
57363         </dataarea>
57364         <dataarea name="nvram" size="8192">
57365         </dataarea>
57366      </part>
57367   </software>
57368
5727657369   <software name="smw2ja" cloneof="smw2">
5727757370      <description>Super Mario - Yossy Island (Jpn, Rev. A)</description>
5727857371      <year>1995</year>
trunk/hash/sol20_cass.xml
r0r241753
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<softwarelist name="sol20_cass" description="PTC SOL-20 cassettes">
5   <software name="2progs" supported="no">
6      <description>2 Programs in 1</description>
7      <year>19??</year>
8      <publisher>&lt;unknown&gt;</publisher>
9
10      <part name="cass1" interface="sol20_cass">
11         <dataarea name="cass" size="25383">
12            <rom name="2 programs in 1 (19xx)(-).svt" size="25383" crc="d2e097e3" sha1="52eb5e4036201c8bcb7eea656cd1d4b42d80d58b" offset="0" />
13         </dataarea>
14      </part>
15   </software>
16
17   <software name="metron" supported="no">
18      <description>Metron Computerware</description>
19      <year>1977</year>
20      <publisher>Tiny C Associates</publisher>
21
22      <part name="cass1" interface="sol20_cass">
23         <dataarea name="cass" size="30719">
24            <rom name="metron computerware (1977)(tiny c associates).svt" size="30719" crc="6140c147" sha1="294487f58ec607decb69900b169a6b03208a61b4" offset="0" />
25         </dataarea>
26      </part>
27   </software>
28
29   <software name="pilot" supported="no">
30      <description>Pilot</description>
31      <year>19??</year>
32      <publisher>Processor Techonolgy</publisher>
33
34      <part name="cass1" interface="sol20_cass">
35         <dataarea name="cass" size="51064">
36            <rom name="pilot (19xx)(processor techonolgy).svt" size="51064" crc="e192a999" sha1="628b8e364f22a1a38b6f5487a2dcd518182ec5de" offset="0" />
37         </dataarea>
38      </part>
39   </software>
40
41   <software name="proteus1" supported="no">
42      <description>Proteus Cassete #1</description>
43      <year>19??</year>
44      <publisher>&lt;unknown&gt;</publisher>
45
46      <part name="cass1" interface="sol20_cass">
47         <dataarea name="cass" size="77646">
48            <rom name="proteus cassete #1 (19xx)(-).svt" size="77646" crc="f40fd39a" sha1="fe0b70607dd556ba8dc5ffca7d087b68778cdbcf" offset="0" />
49         </dataarea>
50      </part>
51   </software>
52
53   <software name="proteus2" supported="no">
54      <description>Proteus Cassete #2</description>
55      <year>19??</year>
56      <publisher>&lt;unknown&gt;</publisher>
57
58      <part name="cass1" interface="sol20_cass">
59         <dataarea name="cass" size="95354">
60            <rom name="proteus cassete #2 (19xx)(-).svt" size="95354" crc="2b480f7b" sha1="06376865d8a0ce671c4a647c39f4ad2c4cef952d" offset="0" />
61         </dataarea>
62      </part>
63   </software>
64
65   <software name="proteus3" supported="no">
66      <description>Proteus Cassete #3</description>
67      <year>19??</year>
68      <publisher>&lt;unknown&gt;</publisher>
69
70      <part name="cass1" interface="sol20_cass">
71         <dataarea name="cass" size="57116">
72            <rom name="proteus cassete #3 (19xx)(-).svt" size="57116" crc="b2ee57f0" sha1="561f205f37affbaeba6ef7060f36044f268bf133" offset="0" />
73         </dataarea>
74      </part>
75   </software>
76
77   <software name="proteus7" supported="no">
78      <description>Proteus Cassete #7</description>
79      <year>19??</year>
80      <publisher>&lt;unknown&gt;</publisher>
81
82      <part name="cass1" interface="sol20_cass">
83         <dataarea name="cass" size="178406">
84            <rom name="proteus cassete #7 (19xx)(-).svt" size="178406" crc="da305795" sha1="e9ce5023d288f52c303beb480e2a63531661ff90" offset="0" />
85         </dataarea>
86      </part>
87   </software>
88
89   <software name="proteus8" supported="no">
90      <description>Proteus Cassete #8</description>
91      <year>19??</year>
92      <publisher>&lt;unknown&gt;</publisher>
93
94      <part name="cass1" interface="sol20_cass">
95         <dataarea name="cass" size="79094">
96            <rom name="proteus cassete #8 (19xx)(-).svt" size="79094" crc="d338d05a" sha1="8264f731acc676243e54d149d29b6cb13e691fa1" offset="0" />
97         </dataarea>
98      </part>
99   </software>
100
101   <software name="solprint" supported="no">
102      <description>Sol Printer</description>
103      <year>19??</year>
104      <publisher>Processor Techonolgy</publisher>
105
106      <part name="cass1" interface="sol20_cass">
107         <dataarea name="cass" size="56307">
108            <rom name="sol printer (19xx)(processor techonolgy).svt" size="56307" crc="46a4e367" sha1="8e5f0226dde3ea450077a945f9bf12c3c5b7ede3" offset="0" />
109         </dataarea>
110      </part>
111   </software>
112
113   <software name="spacegam" supported="no">
114      <description>Spaces Games</description>
115      <year>19??</year>
116      <publisher>Creative Computing Software</publisher>
117
118      <part name="cass1" interface="sol20_cass">
119         <dataarea name="cass" size="47421">
120            <rom name="spaces games (19xx)(creative computing software).svt" size="47421" crc="4f1b8108" sha1="fc6cd419b45b7c1f88a16dba0df12d901edc5753" offset="0" />
121         </dataarea>
122      </part>
123   </software>
124
125   <software name="strategy" supported="no">
126      <description>Strategy Games</description>
127      <year>19??</year>
128      <publisher>Creative Computing Software</publisher>
129
130      <part name="cass1" interface="sol20_cass">
131         <dataarea name="cass" size="67400">
132            <rom name="strategy games (19xx)(creative computing software).svt" size="67400" crc="54d95385" sha1="54c8ca1542d9ec7cd711866bae3ceb3645735508" offset="0" />
133         </dataarea>
134      </part>
135   </software>
136
137   <software name="strategya" cloneof="strategy" supported="no">
138      <description>Strategy Games (Alt)</description>
139      <year>19??</year>
140      <publisher>Creative Computing Software</publisher>
141
142      <part name="cass1" interface="sol20_cass">
143         <dataarea name="cass" size="67359">
144            <rom name="strategy games (19xx)(creative computing software)[a].svt" size="67359" crc="3f7a6908" sha1="230a8e72996f625959c77cd8350a9f7de087db80" offset="0" />
145         </dataarea>
146      </part>
147   </software>
148
149</softwarelist>
trunk/hash/sorcerer_cart.xml
r241752r241753
1717   <software name="basicpac">
1818      <description>Exidy Standard Basic v1.0</description>
1919      <year>1978</year>
20      <publisher>Exidy Inc.</publisher>
20      <publisher>Exidy</publisher>
2121      <info name="serial" value="DP 2002" />
2222      <part name="cart" interface="sorcerer_cart">
2323         <dataarea name="rom" size="8192">
r241752r241753
2929   <software name="devpac">
3030      <description>Exidy Z80 Development Pac</description>
3131      <year>1979</year>
32      <publisher>Exidy Inc.</publisher>
32      <publisher>Exidy</publisher>
3333      <info name="serial" value="DP 2003" />
3434      <part name="cart" interface="sorcerer_cart">
3535         <dataarea name="rom" size="8192">
r241752r241753
4141   <software name="wordpac">
4242      <description>Exidy Word Processor Pac</description>
4343      <year>1978</year>
44      <publisher>Exidy Inc.</publisher>
44      <publisher>Exidy</publisher>
4545      <info name="serial" value="DP 2004" />
4646      <part name="cart" interface="sorcerer_cart">
4747         <dataarea name="rom" size="8192">
r241752r241753
5050      </part>
5151   </software>
5252
53   <software name="basicm">
53   <software name="basicmod">
5454      <description>Exidy Standard Modified Basic v1.01</description>
5555      <!-- Unofficial Hack Release -->
5656      <year>1980</year>
trunk/hash/sorcerer_cass.xml
r241752r241753
55
66<!-- These came from mp3s, so they're marked as bad dumps until they're redumped properly -->
77
8   <software name="chomp" supported="no">
8   <software name="chomp">
99      <description>Chomp</description>
1010      <year>1981</year>
1111      <publisher>W. S. King</publisher>
12      <info name="usage" value="Load in Monitor with &quot;LO&quot; command, then type &quot;GO 0100&quot;" />
1213      <part name="cass" interface="sorcerer_cass">
1314         <dataarea name="cass" size="23392316">
1415            <rom name="chomp (1981)(w.s.king).wav" size="23392316" crc="95971024" sha1="62672de80e5139af35424184c76f1c9c18493c3a" offset="0" status="baddump" />
r241752r241753
1617      </part>
1718   </software>
1819
19   <software name="eliza" supported="no">
20   <software name="eliza">
2021      <description>Eliza</description>
2122      <year>19??</year>
2223      <publisher>&lt;unknown&gt;</publisher>
24      <info name="usage" value="Load in BASIC with &quot;CLOAD&quot; command, then type &quot;RUN&quot;" />
2325      <part name="cass" interface="sorcerer_cass">
2426         <dataarea name="cass" size="12578876">
2527            <rom name="eliza (19xx)(-).wav" size="12578876" crc="9173759e" sha1="23d35784fd1ab492cb0371552bd1a981214c0192" offset="0" status="baddump" />
r241752r241753
2729      </part>
2830   </software>
2931
30   <software name="galaxian" supported="no">
32   <software name="galaxian">
3133      <description>Galaxians</description>
3234      <year>19??</year>
3335      <publisher>&lt;unknown&gt;</publisher>
36      <info name="usage" value="Load in Monitor with &quot;LO&quot; command, then type &quot;GO 0100&quot;" />
3437      <part name="cass" interface="sorcerer_cass">
3538         <dataarea name="cass" size="16506020">
3639            <rom name="galaxians (19xx)(-).wav" size="16506020" crc="c6f686b2" sha1="41928aa796e6609de37301b3594d3a9a9eb975ac" offset="0" status="baddump" />
r241752r241753
3841      </part>
3942   </software>
4043
41</softwarelist>
No newline at end of file
44
45
46<!-- These come from tapes  -->
47
48   <software name="elizaa" cloneof="eliza">
49      <description>Eliza (Alt)</description>
50      <year>19??</year>
51      <publisher>&lt;unknown&gt;</publisher>
52      <info name="usage" value="Load in BASIC with &quot;CLOAD&quot; command, then type &quot;RUN&quot;" />
53      <part name="cass" interface="sorcerer_cass">
54         <dataarea name="cass" size="11908260">
55            <rom name="eliza.wav" size="11908260" crc="67868b2a" sha1="bd219fa2b29881add2f06fc7cdf1dc0c63bec0b0" offset="0" />
56         </dataarea>
57      </part>
58   </software>
59
60   <software name="demo1" supported="no">
61      <description>DEMO1 (Bad?)</description>
62      <year>19??</year>
63      <publisher>&lt;unknown&gt;</publisher>
64      <info name="usage" value="Gives CRC Error" />
65      <part name="cass" interface="sorcerer_cass">
66         <dataarea name="cass" size="12770008">
67            <rom name="demo1.wav" size="12770008" crc="e53951a5" sha1="612b60f3f179fa05a86305761e951211e535238e" offset="0" />
68         </dataarea>
69      </part>
70   </software>
71
72   <software name="demo2">
73      <description>DEMO2</description>
74      <year>19??</year>
75      <publisher>&lt;unknown&gt;</publisher>
76      <info name="usage" value="Load in BASIC with &quot;CLOAD&quot; command, then type &quot;RUN&quot;" />
77      <part name="cass" interface="sorcerer_cass">
78         <dataarea name="cass" size="8202538">
79            <rom name="demo2.wav" size="8202538" crc="922dede4" sha1="92005d8e4957a658e2e513083cd240af575fc048" offset="0" />
80         </dataarea>
81      </part>
82   </software>
83
84   <software name="demo3">
85      <description>DEMO3</description>
86      <year>19??</year>
87      <publisher>&lt;unknown&gt;</publisher>
88      <info name="usage" value="Load in BASIC with &quot;CLOAD&quot; command, then type &quot;RUN&quot;" />
89      <part name="cass" interface="sorcerer_cass">
90         <dataarea name="cass" size="7263870">
91            <rom name="demo3.wav" size="7263870" crc="38e5b0d7" sha1="2400651c816b33d67c461c7eee561d80568891be" offset="0" />
92         </dataarea>
93      </part>
94   </software>
95
96   <software name="demo4">
97      <description>DEMO4</description>
98      <year>19??</year>
99      <publisher>&lt;unknown&gt;</publisher>
100      <info name="usage" value="Load in BASIC with &quot;CLOAD&quot; command, then type &quot;RUN&quot;" />
101      <part name="cass" interface="sorcerer_cass">
102         <dataarea name="cass" size="3896482">
103            <rom name="demo4.wav" size="3896482" crc="e66fa049" sha1="d956b3ff42ac7b3178ee76ecb3d2ad388fed81f5" offset="0" />
104         </dataarea>
105      </part>
106   </software>
107
108   <software name="demo5">
109      <description>DEMO5</description>
110      <year>19??</year>
111      <publisher>&lt;unknown&gt;</publisher>
112      <info name="usage" value="Load in BASIC with &quot;CLOAD&quot; command, then type &quot;RUN&quot;" />
113      <part name="cass" interface="sorcerer_cass">
114         <dataarea name="cass" size="5980780">
115            <rom name="demo5.wav" size="5980780" crc="32e5879c" sha1="07d08cb8d35e591d9f5a358fcc6f611df5922c7e" offset="0" />
116         </dataarea>
117      </part>
118   </software>
119
120   <software name="demo6">
121      <description>DEMO6</description>
122      <year>19??</year>
123      <publisher>&lt;unknown&gt;</publisher>
124      <info name="usage" value="Load in BASIC with &quot;CLOAD&quot; command, then type &quot;RUN&quot;" />
125      <part name="cass" interface="sorcerer_cass">
126         <dataarea name="cass" size="11295052">
127            <rom name="demo6.wav" size="11295052" crc="1c3a212f" sha1="a641a1cfaa3c3dc272c31803c738ff3f908f4604" offset="0" />
128         </dataarea>
129      </part>
130   </software>
131
132   <software name="demo7">
133      <description>DEMO7</description>
134      <year>19??</year>
135      <publisher>&lt;unknown&gt;</publisher>
136      <info name="usage" value="Load in BASIC with &quot;CLOAD&quot; command, then type &quot;RUN&quot;" />
137      <part name="cass" interface="sorcerer_cass">
138         <dataarea name="cass" size="11678280">
139            <rom name="demo7.wav" size="11678280" crc="320e3eba" sha1="f2ab46c0b33b5ea42a6ae26fdd06294b62e1331f" offset="0" />
140         </dataarea>
141      </part>
142   </software>
143
144   <software name="demo8">
145      <description>DEMO8</description>
146      <year>19??</year>
147      <publisher>&lt;unknown&gt;</publisher>
148      <info name="usage" value="Load in BASIC with &quot;CLOAD&quot; command, then type &quot;RUN&quot;" />
149      <part name="cass" interface="sorcerer_cass">
150         <dataarea name="cass" size="7556546">
151            <rom name="demo8.wav" size="7556546" crc="baf9361f" sha1="30ab8a8ccafd65fbe82cbfbf5f77f27e0dfc4a78" offset="0" />
152         </dataarea>
153      </part>
154   </software>
155
156   <software name="martian" supported="no">
157      <description>Martian Invaders (Bad?)</description>
158      <year>1980?</year>
159      <publisher>&lt;unknown&gt;</publisher>
160      <info name="usage" value="Gives CRC Error" />
161      <part name="cass" interface="sorcerer_cass">
162         <dataarea name="cass" size="843548">
163            <rom name="m- martian invaders (1980).wav" size="843548" crc="355d94ea" sha1="048ef7fa3a321cdcada962135de3f42161de86ab" offset="0" />
164         </dataarea>
165      </part>
166   </software>
167
168
169</softwarelist>
trunk/hash/spc1000_cass.xml
r241752r241753
10051005      <description>Toiyar</description>
10061006      <year>198?</year>
10071007      <publisher>Sammi Computer</publisher>
1008      <info name="alt_title" value="토이야" />
10081009      <part name="cass" interface="spc1000_cass">
10091010         <dataarea name="cass" size="68050">
10101011            <rom name="toyar-4852-mayhouse.cas" size="68050" crc="ed454d5c" sha1="18b1ac12709136e4e03d3a7d4ead4a1d00c232ca" offset="0" />
trunk/hash/specpls3_flop.xml
r0r241753
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- ZX Spectrum Disc images
5    for +3 machines etc.
6-->
7
8<softwarelist name="spectrum_flop" description="ZX Spectrum disk images">
9
10   <!-- SPS / CAPS Releases -->
11
12   <software name="aforce" >
13      <!-- SPS (CAPS) release 3500 -->
14      <description>Action Force - International Heroes</description>
15      <year>1987</year>
16      <publisher>Virgin Games</publisher>
17
18      <part name="flop1" interface="floppy_3">
19         <dataarea name="flop" size="236460">
20            <rom name="3500 - action force - international heroes (europe).ipf" size="236460" crc="1a2bb165" sha1="9b9b44e1118c40bbb9c6a32d4ffc6e61f8c5fd3b" offset="0" />
21         </dataarea>
22      </part>
23   </software>
24
25   <software name="aforce2">
26      <!-- SPS (CAPS) release 3551 -->
27      <description>Action Force II - International Heroes</description>
28      <year>1988</year>
29      <publisher>Virgin Games</publisher>
30
31      <part name="flop1" interface="floppy_3">
32         <dataarea name="flop" size="238175">
33            <rom name="3551 - action force ii - international heroes (europe).ipf" size="238175" crc="caa251a2" sha1="9c02f116d5a61d5d064d3a5643e70542f1e01bf9" offset="0" />
34         </dataarea>
35      </part>
36   </software>
37
38   <software name="tiebreak">
39      <!-- SPS (CAPS) release 3501 -->
40      <description>Adidas Championship Tie-Break</description>
41      <year>1990</year>
42      <publisher>Ocean Software</publisher>
43
44      <part name="flop1" interface="floppy_3">
45         <dataarea name="flop" size="123445">
46            <rom name="3501 - adidas championship tie break (europe).ipf" size="123445" crc="6e2e4951" sha1="a50e132cb68cc406e59485b617fc384288762d7f" offset="0" />
47         </dataarea>
48      </part>
49   </software>
50
51   <software name="artura">
52      <!-- SPS (CAPS) release 3552 -->
53      <description>Artura</description>
54      <year>1989</year>
55      <publisher>Gremlin Graphics Software</publisher>
56
57      <part name="flop1" interface="floppy_3">
58         <dataarea name="flop" size="237460">
59            <rom name="3552 - artura (europe).ipf" size="237460" crc="bcc6e00c" sha1="8781e6b1e1bf98a1fc6b8ffb77f5671780c5e402" offset="0" />
60         </dataarea>
61      </part>
62   </software>
63
64   <software name="badlands">
65      <!-- SPS (CAPS) release 3553 -->
66      <description>Badlands</description>
67      <year>1990</year>
68      <publisher>Domark</publisher>
69
70      <part name="flop1" interface="floppy_3">
71         <dataarea name="flop" size="234180">
72            <rom name="3553 - badlands (europe).ipf" size="234180" crc="93f1c3b6" sha1="9da5ab7e607dad7fd5b605997929eff43c20abb7" offset="0" />
73         </dataarea>
74      </part>
75   </software>
76
77   <software name="bhcop">
78      <!-- SPS (CAPS) release 3502 -->
79      <description>Beverly Hills Cop</description>
80      <year>1990</year>
81      <publisher>Tynesoft</publisher>
82
83      <part name="flop1" interface="floppy_3">
84         <dataarea name="flop" size="236460">
85            <rom name="3502 - beverly hills cop (europe).ipf" size="236460" crc="81fbf5ad" sha1="2022531eba845cfcd19a2fb2b69d54e007979592" offset="0" />
86         </dataarea>
87      </part>
88   </software>
89
90   <software name="bloodwyc">
91      <!-- SPS (CAPS) release 3554 -->
92      <description>Bloodwych</description>
93      <year>1990</year>
94      <publisher>Image Works</publisher>
95
96      <part name="flop1" interface="floppy_3">
97         <dataarea name="flop" size="236460">
98            <rom name="3554 - bloodwych (europe).ipf" size="236460" crc="cb66aed6" sha1="b7bab317718a478e48a689a8ebd125a498504ebe" offset="0" />
99         </dataarea>
100      </part>
101   </software>
102
103   <software name="boggit">
104      <!-- SPS (CAPS) release 3555 -->
105      <description>The Boggit - Bored Too</description>
106      <year>1986</year>
107      <publisher>CRL Group</publisher>
108
109      <part name="flop1" interface="floppy_3">
110         <dataarea name="flop" size="236460">
111            <rom name="3555 - boggit, the - bored too (europe).ipf" size="236460" crc="c9dc8d41" sha1="ae1aff98a4e60bf6272c8955a224a7b0e890c40e" offset="0" />
112         </dataarea>
113      </part>
114   </software>
115
116   <software name="bookdead">
117      <!-- SPS (CAPS) release 3556 -->
118      <description>Book of the Dead</description>
119      <year>1987</year>
120      <publisher>CRL Group</publisher>
121
122      <part name="flop1" interface="floppy_3">
123         <dataarea name="flop" size="236460">
124            <rom name="3556 - book of the dead (europe).ipf" size="236460" crc="b1030311" sha1="6ddbe67cbba260b6ec80ee0bc7e557f88bf08a23" offset="0" />
125         </dataarea>
126      </part>
127   </software>
128
129   <software name="bbrg">
130      <!-- SPS (CAPS) release 3503 -->
131      <description>Buffalo Bill's Rodeo Games</description>
132      <year>1989</year>
133      <publisher>Tynesoft</publisher>
134      <info name="alt_title" value="Buffalo Bill's Wild West Rodeo Show" />
135
136      <part name="flop1" interface="floppy_3">
137         <dataarea name="flop" size="234180">
138            <rom name="3503 - buffalo bill's rodeo games (unknown).ipf" size="234180" crc="74650740" sha1="cdf81f26af4e013726a288c3a27a1765b254c267" offset="0" />
139         </dataarea>
140      </part>
141   </software>
142
143   <software name="butchill">
144      <!-- SPS (CAPS) release 3557 -->
145      <description>Butcher Hill</description>
146      <year>1989</year>
147      <publisher>Gremlin Graphics Software </publisher>
148
149      <part name="flop1" interface="floppy_3">
150         <dataarea name="flop" size="237460">
151            <rom name="3557 - butcher hill (europe).ipf" size="237460" crc="5ae072b5" sha1="96e89f1229f2d8306965b925145ae0ab454def6f" offset="0" />
152         </dataarea>
153      </part>
154   </software>
155
156   <software name="carrierc">
157      <!-- SPS (CAPS) release 3504 -->
158      <description>Carrier Command</description>
159      <year>1989</year>
160      <publisher>Rainbird Software</publisher>
161
162      <part name="flop1" interface="floppy_3">
163         <dataarea name="flop" size="236140">
164            <rom name="3504 - carrier command (europe).ipf" size="236140" crc="3596b16d" sha1="842715907902c7d15a28e92db6e66e2f435f8781" offset="0" />
165         </dataarea>
166      </part>
167   </software>
168
169   <software name="chicag30">
170      <!-- SPS (CAPS) release 3558 -->
171      <description>Chicago 30's</description>
172      <year>1988</year>
173      <publisher>U.S. Gold</publisher>
174
175      <part name="flop1" interface="floppy_3">
176         <dataarea name="flop" size="266892">
177            <rom name="3558 - chicago 30's (unknown).ipf" size="266892" crc="50f0a090" sha1="a0be8b20605834f29e59ded94786ed90d07b235b" offset="0" />
178         </dataarea>
179      </part>
180   </software>
181
182   <software name="combatsc">
183      <!-- SPS (CAPS) release 3559 -->
184      <description>Combat School</description>
185      <year>1987</year>
186      <publisher>Ocean Software</publisher>
187
188      <part name="flop1" interface="floppy_3">
189         <dataarea name="flop" size="238800">
190            <rom name="3559 - combat school (europe).ipf" size="238800" crc="ba69a18a" sha1="581b183c20d6cf33e0965ff00c5b077a9618d872" offset="0" />
191         </dataarea>
192      </part>
193   </software>
194
195   <software name="corruptn">
196      <!-- SPS (CAPS) release 3560 -->
197      <description>Corruption</description>
198      <year>1988</year>
199      <publisher>Rainbird Software</publisher>
200
201      <part name="flop1" interface="floppy_3">
202         <dataarea name="flop" size="236460">
203            <rom name="3560 - corruption (europe).ipf" size="236460" crc="cfbb80af" sha1="ed489e12913c2bb7fbb48fed0c9644b7cfceb59e" offset="0" />
204         </dataarea>
205      </part>
206   </software>
207
208   <software name="cybernod">
209      <!-- SPS (CAPS) release 3561 -->
210      <description>Cybernoid - The Fighting Machine</description>
211      <year>1988</year>
212      <publisher>Hewson Consultants</publisher>
213
214      <part name="flop1" interface="floppy_3">
215         <dataarea name="flop" size="212085">
216            <rom name="3561 - cybernoid - the fighting machine (europe).ipf" size="212085" crc="3733ffa8" sha1="2a0b2f4c29a568e6e4ac287e679f6b4a4e6ae742" offset="0" />
217         </dataarea>
218      </part>
219   </software>
220
221   <software name="cyberno2">
222      <!-- SPS (CAPS) release 3562 -->
223      <description>Cybernoid II - The Revenge</description>
224      <year>1988</year>
225      <publisher>Hewson Consultants</publisher>
226
227      <part name="flop1" interface="floppy_3">
228         <dataarea name="flop" size="236460">
229            <rom name="3562 - cybernoid ii - the revenge (europe).ipf" size="236460" crc="417b84f6" sha1="a2c8753121df65bd95a0d31e7ee6101a2d74ea61" offset="0" />
230         </dataarea>
231      </part>
232   </software>
233
234   <software name="dandare3">
235      <!-- SPS (CAPS) release 3505 -->
236      <description>Dan Dare III - The Escape</description>
237      <year>1990</year>
238      <publisher>Virgin Games</publisher>
239
240      <part name="flop1" interface="floppy_3">
241         <dataarea name="flop" size="71100">
242            <rom name="3505 - dan dare iii - the escape (europe).ipf" size="71100" crc="e949bc77" sha1="6074056cd0ef8aaf103d36fde1e5a1fba356904f" offset="0" />
243         </dataarea>
244      </part>
245   </software>
246
247   <software name="darkfusn">
248      <!-- SPS (CAPS) release 3563 -->
249      <description>Dark Fusion</description>
250      <year>1988</year>
251      <publisher>Gremlin Graphics Software</publisher>
252
253      <part name="flop1" interface="floppy_3">
254         <dataarea name="flop" size="260585">
255            <rom name="3563 - dark fusion (europe).ipf" size="260585" crc="9495182c" sha1="bb94b445a9909ba39f21119dcc43dbd1497aed20" offset="0" />
256         </dataarea>
257      </part>
258   </software>
259
260   <software name="deep">
261      <!-- SPS (CAPS) release 3506 -->
262      <description>The Deep</description>
263      <year>1988</year>
264      <publisher>U.S. Gold</publisher>
265
266      <part name="flop1" interface="floppy_3">
267         <dataarea name="flop" size="266891">
268            <rom name="3506 - deep, the (europe).ipf" size="266891" crc="e4844d2b" sha1="95dee7ccae5613c9b04efdbde5e2bc6c69a1e735" offset="0" />
269         </dataarea>
270      </part>
271   </software>
272
273   <software name="deflektr">
274      <!-- SPS (CAPS) release 3564 -->
275      <description>Deflektor</description>
276      <year>1987</year>
277      <publisher>Gremlin Graphics Software</publisher>
278
279      <part name="flop1" interface="floppy_3">
280         <dataarea name="flop" size="212085">
281            <rom name="3564 - deflektor (europe).ipf" size="212085" crc="2483f8c7" sha1="032b18abb2eb903ded8b32a59b003a68d784d996" offset="0" />
282         </dataarea>
283      </part>
284   </software>
285
286   <software name="dominatr">
287      <!-- SPS (CAPS) release 3507 -->
288      <description>Dominator</description>
289      <year>1989</year>
290      <publisher>System 3 Software</publisher>
291
292      <part name="flop1" interface="floppy_3">
293         <dataarea name="flop" size="250612">
294            <rom name="3507 - dominator (europe).ipf" size="250612" crc="e6c6f9eb" sha1="22d46cc0cabba10b0d58bba86b5123fdcf73a731" offset="0" />
295         </dataarea>
296      </part>
297   </software>
298
299   <software name="echelon">
300      <!-- SPS (CAPS) release 3565 -->
301      <description>Echelon</description>
302      <year>1988</year>
303      <publisher>U.S. Gold</publisher>
304
305      <part name="flop1" interface="floppy_3">
306         <dataarea name="flop" size="237460">
307            <rom name="3565 - echelon (europe).ipf" size="237460" crc="94c24ad3" sha1="cae1aa9d3897ec2027120afd1e4d3370b78de3cf" offset="0" />
308         </dataarea>
309      </part>
310   </software>
311
312   <software name="erik">
313      <!-- SPS (CAPS) release 3566 -->
314      <description>Erik - The Phantom of the Opera</description>
315      <year>1987</year>
316      <publisher>Crysys</publisher>
317
318      <part name="flop1" interface="floppy_3">
319         <dataarea name="flop" size="236460">
320            <rom name="3566 - erik - the phantom of the opera (europe).ipf" size="236460" crc="77098dc3" sha1="619babc59ea1816a4ea8e2d2030c25205fd65735" offset="0" />
321         </dataarea>
322      </part>
323   </software>
324
325   <software name="eprom">
326      <!-- SPS (CAPS) release 3567 -->
327      <description>Escape from the Planet of the Robot Monsters</description>
328      <year>1990</year>
329      <publisher>Domark</publisher>
330
331      <part name="flop1" interface="floppy_3">
332         <dataarea name="flop" size="234180">
333            <rom name="3567 - escape from the planet of the robot monsters (europe).ipf" size="234180" crc="ba153a21" sha1="4bb529af057b9cc5ab547cf754a3e4c21d0f34c9" offset="0" />
334         </dataarea>
335      </part>
336   </software>
337
338   <software name="espionag">
339      <!-- SPS (CAPS) release 3568 -->
340      <description>Espionage</description>
341      <year>1988</year>
342      <publisher>Grandslam Entertainments </publisher>
343      <info name="alt_title" value="Espionage - The Computer Game (Box)" />
344
345      <part name="flop1" interface="floppy_3">
346         <dataarea name="flop" size="99180">
347            <rom name="3568 - espionage - the computer game (europe).ipf" size="99180" crc="893495d8" sha1="eac0b7dcd91d628bf85938327ec15b833dd6f1d9" offset="0" />
348         </dataarea>
349      </part>
350   </software>
351
352   <software name="f16comb">
353      <!-- SPS (CAPS) release 3508 -->
354      <description>F-16 Combat Pilot</description>
355      <year>1991</year>
356      <publisher>Digital Integration</publisher>
357
358      <part name="flop1" interface="floppy_3">
359         <dataarea name="flop" size="161607">
360            <rom name="3508 - f-16 combat pilot (europe).ipf" size="161607" crc="49f2d22d" sha1="1336f27de5c4c1aad734f83aa6c2ffca9efe6747" offset="0" />
361         </dataarea>
362      </part>
363   </software>
364
365   <software name="federatn">
366      <!-- SPS (CAPS) release 3569 -->
367      <description>Federation</description>
368      <year>1988</year>
369      <publisher>CRL Group</publisher>
370      <part name="flop1" interface="floppy_3">
371         <dataarea name="flop" size="236460">
372            <rom name="3569 - federation (europe).ipf" size="236460" crc="091f3f4f" sha1="fb0f360417ef35fcf5bb59b2c9822ffb7d834015" offset="0" />
373         </dataarea>
374      </part>
375   </software>
376
377   <software name="firefly">
378      <!-- SPS (CAPS) release 3570 -->
379      <description>Firefly</description>
380      <year>1988</year>
381      <publisher>Ocean Software</publisher>
382
383      <part name="flop1" interface="floppy_3">
384         <dataarea name="flop" size="238800">
385            <rom name="3570 - firefly (europe).ipf" size="238800" crc="e1961552" sha1="b3b3d1ebd5f6d5ce7ed104ffa63d1bac97b51db8" offset="0" />
386         </dataarea>
387      </part>
388   </software>
389
390   <software name="fish">
391      <!-- SPS (CAPS) release 3571 -->
392      <description>Fish!</description>
393      <year>1989</year>
394      <publisher>Rainbird Software</publisher>
395
396      <part name="flop1" interface="floppy_3">
397         <dataarea name="flop" size="236460">
398            <rom name="3571 - fish! (europe).ipf" size="236460" crc="880592d1" sha1="7522893bfa42a8b25bf98af8b54a83568df72bd3" offset="0" />
399         </dataarea>
400      </part>
401   </software>
402
403   <software name="footdir2">
404      <!-- SPS (CAPS) release 3509 -->
405      <description>Football Director II</description>
406      <year>1987</year>
407      <publisher>D&amp;H Games</publisher>
408
409      <part name="flop1" interface="floppy_3">
410         <dataarea name="flop" size="234180">
411            <rom name="3509 - football director ii (europe).ipf" size="234180" crc="f98bb0e1" sha1="0eab5d91a1ab220fbc22ae76485fa19beec36adb" offset="0" />
412         </dataarea>
413      </part>
414   </software>
415
416   <software name="foty2">
417      <!-- SPS (CAPS) release 3572 -->
418      <description>Footballer of the Year 2</description>
419      <year>1989</year>
420      <publisher>Gremlin Graphics Software </publisher>
421
422      <part name="flop1" interface="floppy_3">
423         <dataarea name="flop" size="259471">
424            <rom name="3572 - footballer of the year 2 (europe).ipf" size="259471" crc="96979e7f" sha1="a559adafcda492756da509ed22d62a53dbba2a16" offset="0" />
425         </dataarea>
426      </part>
427   </software>
428
429   <software name="hewson4">
430      <!-- SPS (CAPS) release 3510 -->
431      <description>Four Smash Hits From Hewson</description>
432      <year>198?</year>
433      <publisher>Hewson</publisher>
434
435      <part name="flop1" interface="floppy_3">
436         <dataarea name="flop" size="238800">
437            <rom name="3510 - four smash hits from hewson - exolon + zynaps + rana rama + uridium plus (europe).ipf" size="238800" crc="0e708293" sha1="85d7346aff7b7d63a290a828da0445ab73aa9855" offset="0" />
438         </dataarea>
439      </part>
440   </software>
441
442   <software name="garfield">
443      <!-- SPS (CAPS) release 3511 -->
444      <description>Garfield - "Big, Fat, Hairy Deal."</description>
445      <year>1988</year>
446      <publisher>The Edge</publisher>
447
448      <part name="flop1" interface="floppy_3">
449         <dataarea name="flop" size="236460">
450            <rom name="3511 - garfield - big, fat, hairy deal (europe).ipf" size="236460" crc="ffb8008d" sha1="f9f314b1d26c58340a962b7d6f35fdc5cf65768c" offset="0" />
451         </dataarea>
452      </part>
453   </software>
454
455   <software name="lineker">
456      <!-- SPS (CAPS) release 3573 -->
457      <description>Gary Lineker's Hot-Shot!</description>
458      <year>1988</year>
459      <publisher>Gremlin Graphics Software</publisher>
460
461      <part name="flop1" interface="floppy_3">
462         <dataarea name="flop" size="266892">
463            <rom name="3573 - gary lineker's hot-shot! (unknown).ipf" size="266892" crc="17963acf" sha1="22a8985076b7c1743e9431e071940c49efe217f5" offset="0" />
464         </dataarea>
465      </part>
466   </software>
467
468   <software name="linekskl">
469      <!-- SPS (CAPS) release 3574 -->
470      <description>Gary Lineker's Super Skills</description>
471      <year>1988</year>
472      <publisher>Gremlin Graphics Software</publisher>
473
474      <part name="flop1" interface="floppy_3">
475         <dataarea name="flop" size="237460">
476            <rom name="3574 - gary lineker's superskills (unknown).ipf" size="237460" crc="2f0ed1da" sha1="589cf6b337347218814a4a697353be4af5024c8a" offset="0" />
477         </dataarea>
478      </part>
479   </software>
480
481   <software name="lineksss">
482      <!-- SPS (CAPS) release 3575 -->
483      <description>Gary Lineker's Super Star Soccer</description>
484      <year>1988</year>
485      <publisher>Gremlin Graphics Software</publisher>
486
487      <part name="flop1" interface="floppy_3">
488         <dataarea name="flop" size="212085">
489            <rom name="3575 - gary lineker's superstar soccer (unknown).ipf" size="212085" crc="2a1c53f7" sha1="f4c24b1e01312d4f9b2241be14d243e723035499" offset="0" />
490         </dataarea>
491      </part>
492   </software>
493
494   <software name="gauntlet">
495      <!-- SPS (CAPS) release 3576 -->
496      <description>Gauntlet</description>
497      <year>1987</year>
498      <publisher>U.S. Gold</publisher>
499
500      <part name="flop1" interface="floppy_3">
501         <dataarea name="flop" size="212085">
502            <rom name="3576 - gauntlet (europe).ipf" size="212085" crc="4c4c4cc2" sha1="c04e3233166fe888a96b2ea98a6a96f33fb19728" offset="0" />
503         </dataarea>
504      </part>
505   </software>
506
507   <software name="gauntlt2">
508      <!-- SPS (CAPS) release 3577 -->
509      <description>Gauntlet II</description>
510      <year>1988</year>
511      <publisher>U.S. Gold</publisher>
512
513      <part name="flop1" interface="floppy_3">
514         <dataarea name="flop" size="212085">
515            <rom name="3577 - gauntlet ii (europe).ipf" size="212085" crc="7d156d4d" sha1="0d296b611c817203bf59a3710c87d0d5d39c16cf" offset="0" />
516         </dataarea>
517      </part>
518   </software>
519
520   <software name="gazza">
521      <!-- SPS (CAPS) release 3579 -->
522      <description>Gazza's Super Soccer</description>
523      <year>1990</year>
524      <publisher>Empire Software</publisher>
525
526      <part name="flop1" interface="floppy_3">
527         <dataarea name="flop" size="236460">
528            <rom name="3579 - gazza's super soccer (unknown).ipf" size="236460" crc="3c8cb09d" sha1="19a06b4732fefb4d5a8898d415afde39aa8a8495" offset="0" />
529         </dataarea>
530      </part>
531   </software>
532
533   <software name="gazza2">
534      <!-- SPS (CAPS) release 3578 -->
535      <description>Gazza II</description>
536      <year>1990</year>
537      <publisher>Empire Software</publisher>
538
539      <part name="flop1" interface="floppy_3">
540         <dataarea name="flop" size="225096">
541            <rom name="3578 - gazza ii (europe).ipf" size="225096" crc="59a83634" sha1="c43b421f8b0c32858d6bc9668b3b60ef4704f756" offset="0" />
542         </dataarea>
543      </part>
544   </software>
545
546   <software name="ghouls">
547      <!-- SPS (CAPS) release 3512 -->
548      <description>Ghouls 'n' Ghosts</description>
549      <year>1989</year>
550      <publisher>U.S. Gold</publisher>
551
552      <part name="flop1" interface="floppy_3">
553         <dataarea name="flop" size="259471">
554            <rom name="ghouls'n'ghosts.ipf" size="259471" crc="5f056018" sha1="1d84d01a5d349843bcd4743bfb23c7a82ad9704c" offset="0" />
555         </dataarea>
556      </part>
557   </software>
558
559   <software name="hate">
560      <!-- SPS (CAPS) release 3580 -->
561      <description>H.A.T.E. - Hostile All Terrain Encounter</description>
562      <year>1989</year>
563      <publisher>Gremlin Graphics Software</publisher>
564
565      <part name="flop1" interface="floppy_3">
566         <dataarea name="flop" size="266892">
567            <rom name="3580 - h.a.t.e. - hostile all terrain encounter (europe).ipf" size="266892" crc="2aa400b2" sha1="3d847b6f91d0264900e6f2d28bb30574806613ae" offset="0" />
568         </dataarea>
569      </part>
570   </software>
571
572   <software name="hkm">
573      <!-- SPS (CAPS) release 3581 -->
574      <description>H.K.M. - Human Killing Machine</description>
575      <year>1988</year>
576      <publisher>U.S. Gold</publisher>
577
578      <part name="flop1" interface="floppy_3">
579         <dataarea name="flop" size="266892">
580            <rom name="3581 - h.k.m. - human killing machine (europe).ipf" size="266892" crc="2793e98f" sha1="ef4b8fcfb530a6b1edcc8820a3fdc00dbc79ec9d" offset="0" />
581         </dataarea>
582      </part>
583   </software>
584
585   <software name="herolanc">
586      <!-- SPS (CAPS) release 3513 -->
587      <description>Heroes of the Lance</description>
588      <year>1988</year>
589      <publisher>U.S. Gold</publisher>
590
591      <part name="flop1" interface="floppy_3">
592         <dataarea name="flop" size="237465">
593            <rom name="3513 - heroes of the lance (europe).ipf" size="237465" crc="d25d5414" sha1="2caf612f85dc9b790102df5f6a76d90c3408c8db" offset="0" />
594         </dataarea>
595      </part>
596   </software>
597
598   <software name="heroqst">
599      <!-- SPS (CAPS) release 3514 -->
600      <description>Hero Quest</description>
601      <year>1991</year>
602      <publisher>Gremlin Graphics Software</publisher>
603
604      <part name="flop1" interface="floppy_3">
605         <dataarea name="flop" size="239805">
606            <rom name="3514 - heroquest (europe).ipf" size="239805" crc="fc8bb800" sha1="96538aa2fd28b7ae66916590479b0596afcc495c" offset="0" />
607         </dataarea>
608      </part>
609   </software>
610
611   <software name="ironlord">
612      <!-- SPS (CAPS) release 3582 -->
613      <description>Iron Lord</description>
614      <year>1989</year>
615      <publisher>Ubi Soft</publisher>
616
617      <part name="flop1" interface="floppy_3">
618         <dataarea name="flop" size="259180">
619            <rom name="3582 - iron lord (europe).ipf" size="259180" crc="de0e3c7f" sha1="792d58267e8ca7e00b0946a78b7c6b0574ccc942" offset="0" />
620         </dataarea>
621      </part>
622   </software>
623
624   <software name="italia90">
625      <!-- SPS (CAPS) release 3548 -->
626      <description>Italia '90 - World Cup Soccer</description>
627      <year>1989</year>
628      <publisher>Virgin Games</publisher>
629
630      <part name="flop1" interface="floppy_3">
631         <dataarea name="flop" size="71100">
632            <rom name="3548 - italia '90 - world cup soccer (europe).ipf" size="71100" crc="78fa8fd0" sha1="ff5c8308544f24e428e877c3ea8c803f432468bb" offset="0" />
633         </dataarea>
634      </part>
635   </software>
636
637   <software name="offroad">
638      <!-- SPS (CAPS) release 3538 -->
639      <description>Ivan 'Ironman' Stewart's Super Off Road</description>
640      <year>1990</year>
641      <publisher>Virgin Games</publisher>
642
643      <part name="flop1" interface="floppy_3">
644         <dataarea name="flop" size="64845">
645            <rom name="3538 - ivan ironman stewart's super off road (unknown).ipf" size="64845" crc="38cb136b" sha1="5b633c7551b168d13d1c4d96637858fbcc027740" offset="0" />
646         </dataarea>
647      </part>
648   </software>
649
650   <software name="jackrip">
651      <!-- SPS (CAPS) release 3583 -->
652      <description>Jack the Ripper</description>
653      <year>1987</year>
654      <publisher>CRL Group</publisher>
655
656      <part name="flop1" interface="floppy_3">
657         <dataarea name="flop" size="236460">
658            <rom name="3583 - jack the ripper (europe).ipf" size="236460" crc="d2f3019f" sha1="30a0e536578ca62133666b2a710ceef505140215" offset="0" />
659         </dataarea>
660      </part>
661   </software>
662
663   <software name="dalglish">
664      <!-- SPS (CAPS) release 3515 -->
665      <description>Kenny Dalglish Soccer Match</description>
666      <year>1990</year>
667      <publisher>Impressions</publisher>
668
669      <part name="flop1" interface="floppy_3">
670         <dataarea name="flop" size="234180">
671            <rom name="3515 - kenny dalglish soccer match (europe).ipf" size="234180" crc="faeb7b0f" sha1="263e1fcb8bb77632cd83ab1dd2ce8d960bed9270" offset="0" />
672         </dataarea>
673      </part>
674   </software>
675
676   <software name="kickoff">
677      <!-- SPS (CAPS) release 3516 -->
678      <description>Kick Off</description>
679      <year>1989</year>
680      <publisher>Anco Software</publisher>
681
682      <part name="flop1" interface="floppy_3">
683         <dataarea name="flop" size="234180">
684            <rom name="3516 - kick off (europe).ipf" size="234180" crc="152e807b" sha1="855dc66c697484083c729d2183035dfb9166aacc" offset="0" />
685         </dataarea>
686      </part>
687   </software>
688
689   <software name="lmohican">
690      <!-- SPS (CAPS) release 3584 -->
691      <description>The Last Mohican</description>
692      <year>1987</year>
693      <publisher>CRL Group</publisher>
694
695      <part name="flop1" interface="floppy_3">
696         <dataarea name="flop" size="236460">
697            <rom name="3584 - last mohican, the (europe).ipf" size="236460" crc="ed3f624d" sha1="222b93b8e83987c8e5b83f4eb68dee8227bffc64" offset="0" />
698         </dataarea>
699      </part>
700   </software>
701
702   <software name="lightcor">
703      <!-- SPS (CAPS) release 3517 -->
704      <description>The Light Corridor</description>
705      <year>1991</year>
706      <publisher>Infogrames</publisher>
707
708      <part name="flop1" interface="floppy_3">
709         <dataarea name="flop" size="125316">
710            <rom name="3517 - light corridor, the (europe).ipf" size="125316" crc="ef3b80cd" sha1="568f29ba7d1a498432737543af07ba57c4adb26c" offset="0" />
711         </dataarea>
712      </part>
713   </software>
714
715   <software name="lmidnght">
716      <!-- SPS (CAPS) release 3518 -->
717      <description>Loads of Midnight</description>
718      <year>1987</year>
719      <publisher>CRL Group</publisher>
720
721      <part name="flop1" interface="floppy_3">
722         <dataarea name="flop" size="236460">
723            <rom name="3518 - loads of midnight (europe).ipf" size="236460" crc="a74f1114" sha1="2ab72f52fa499be8810f67e14aa477a114d37c29" offset="0" />
724         </dataarea>
725      </part>
726   </software>
727
728   <software name="lonewolf">
729      <!-- SPS (CAPS) release 3586 -->
730      <description>Lone Wolf - The Mirror of Death</description>
731      <year>1991</year>
732      <publisher>Aufiogenic Software</publisher>
733
734      <part name="flop1" interface="floppy_3">
735         <dataarea name="flop" size="236460">
736            <rom name="3586 - lone wolf - the mirror of death (europe).ipf" size="236460" crc="8943aba3" sha1="c6c810341c40a099858678ea63d701feca7d611f" offset="0" />
737         </dataarea>
738      </part>
739   </software>
740
741   <software name="lotus">
742      <!-- SPS (CAPS) release 3587 -->
743      <description>Lotus Esprit Turbo Challenge</description>
744      <year>1990</year>
745      <publisher>Gremlin Graphics Software</publisher>
746
747      <part name="flop1" interface="floppy_3">
748         <dataarea name="flop" size="239805">
749            <rom name="3587 - lotus esprit turbo challenge (europe).ipf" size="239805" crc="7c19c332" sha1="9756acef2e504b898894eef464c2496d60fbc862" offset="0" />
750         </dataarea>
751      </part>
752   </software>
753
754   <software name="mknitril">
755      <!-- SPS (CAPS) release 3629 -->
756      <description>Magic Knight Trilogy</description>
757      <year>1988</year>
758      <publisher>Mastertronic</publisher>
759      <info name="game" value="Finders Keepers + Spellbound + Knight Tyme" />
760
761      <part name="flop1" interface="floppy_3">
762         <dataarea name="flop" size="463740">
763            <rom name="3629 - magic knight trilogy - finders keepers + spellbound + knight tyme (europe).ipf" size="463740" crc="079c89bd" sha1="d90d4d25300795b8cc4ba383c680784b3050ef40" offset="0" />
764         </dataarea>
765      </part>
766   </software>
767
768   <software name="marauder">
769      <!-- SPS (CAPS) release 3519 -->
770      <description>Marauder</description>
771      <year>1988</year>
772      <publisher>Hewson Consultants</publisher>
773
774      <part name="flop1" interface="floppy_3">
775         <dataarea name="flop" size="237460">
776            <rom name="3519 - marauder (europe).ipf" size="237460" crc="2b61f4db" sha1="6896d9424b64b0ce2239485f28da9d49c7952e84" offset="0" />
777         </dataarea>
778      </part>
779   </software>
780
781   <software name="mask3">
782      <!-- SPS (CAPS) release 3588 -->
783      <description>Mask III - Venom Strikes Back</description>
784      <year>1988</year>
785      <publisher>Gremlin Graphics Software</publisher>
786
787      <part name="flop1" interface="floppy_3">
788         <dataarea name="flop" size="212085">
789            <rom name="3588 - mask iii - venom strikes back (europe).ipf" size="212085" crc="d36cea11" sha1="e4f73b8b32cf20802462997bc8f0adae38039e73" offset="0" />
790         </dataarea>
791      </part>
792   </software>
793
794   <software name="masters">
795      <!-- SPS (CAPS) release 3589 -->
796      <description>Masters of the Universe - The Movie</description>
797      <year>1987</year>
798      <publisher>U.S. Gold</publisher>
799
800      <part name="flop1" interface="floppy_3">
801         <dataarea name="flop" size="212085">
802            <rom name="3589 - masters of the universe - the movie (europe).ipf" size="212085" crc="dc32481a" sha1="66ebeed6e635b019f6cdea6c4b1a7f8305f5e7d3" offset="0" />
803         </dataarea>
804      </part>
805   </software>
806
807   <software name="megapocl">
808      <!-- SPS (CAPS) release 3590 -->
809      <description>MegaApocalypse</description>
810      <year>1988</year>
811      <publisher>Martech Games</publisher>
812
813      <part name="flop1" interface="floppy_3">
814         <dataarea name="flop" size="236460">
815            <rom name="3590 - mega-apocalypse (europe).ipf" size="236460" crc="802fa03e" sha1="0db41124887381927e87c9b294de53b5b0e0443d" offset="0" />
816         </dataarea>
817      </part>
818   </software>
819
820   <software name="mickey">
821      <!-- SPS (CAPS) release 3591 -->
822      <description>Mickey Mouse</description>
823      <year>1988</year>
824      <publisher>Gremlin Graphics Software</publisher>
825
826      <part name="flop1" interface="floppy_3">
827         <dataarea name="flop" size="212085">
828            <rom name="3591 - mickey mouse (europe).ipf" size="212085" crc="a788f7e3" sha1="9a89ba9da2a65acbe909e1be4ace922fb52ad28c" offset="0" />
829         </dataarea>
830      </part>
831   </software>
832
833   <software name="midres">
834      <!-- SPS (CAPS) release 3520 -->
835      <description>Midnight Resistance</description>
836      <year>1990</year>
837      <publisher>U.S. Gold</publisher>
838
839      <part name="flop1" interface="floppy_3">
840         <dataarea name="flop" size="146161">
841            <rom name="3520 - midnight resistance (europe).ipf" size="146161" crc="62943f46" sha1="369f6ed76e6b8c7d60949754b49f939d0747bd46" offset="0" />
842         </dataarea>
843      </part>
844   </software>
845
846   <software name="montypyt">
847      <!-- SPS (CAPS) release 3521 -->
848      <description>Monty Python's Flying Circus</description>
849      <year>1990</year>
850      <publisher>Virgin Games</publisher>
851
852      <part name="flop1" interface="floppy_3">
853         <dataarea name="flop" size="262692">
854            <rom name="3521 - monty python's flying circus (europe).ipf" size="262692" crc="8d7630b6" sha1="31495c6cf185cb00ff83eb3dc8f8b126118cf1b4" offset="0" />
855         </dataarea>
856      </part>
857   </software>
858
859   <software name="ninjawar">
860      <!-- SPS (CAPS) release 3522 -->
861      <description>The Ninja Warriors</description>
862      <year>1990</year>
863      <publisher>Virgin Games</publisher>
864
865      <part name="flop1" interface="floppy_3">
866         <dataarea name="flop" size="241110">
867            <rom name="3522 - ninja warriors, the (europe).ipf" size="241110" crc="4eb0abeb" sha1="e1ef8de2788953c9399515796ee1309ea33ccd3f" offset="0" />
868         </dataarea>
869      </part>
870   </software>
871
872   <software name="northstr">
873      <!-- SPS (CAPS) release 3592 -->
874      <description>North Star</description>
875      <year>1988</year>
876      <publisher>Gremlin Graphics Software</publisher>
877
878      <part name="flop1" interface="floppy_3">
879         <dataarea name="flop" size="212085">
880            <rom name="3592 - north star (europe).ipf" size="212085" crc="3c78a485" sha1="a8e47ac46b9d6396d422fee1ec91d753ccf66ec6" offset="0" />
881         </dataarea>
882      </part>
883   </software>
884
885   <software name="obliter">
886      <!-- SPS (CAPS) release 3593 -->
887      <description>Obliterator</description>
888      <year>1989</year>
889      <publisher>Melbourne House</publisher>
890
891      <part name="flop1" interface="floppy_3">
892         <dataarea name="flop" size="234180">
893            <rom name="3593 - obliterator (unknown).ipf" size="234180" crc="2ecaeee7" sha1="5e414ccba57f2fb0d384dac268b7f6f7b1fc48d8" offset="0" />
894         </dataarea>
895      </part>
896   </software>
897
898   <software name="p47thun">
899      <!-- SPS (CAPS) release 3594 -->
900      <description>P-47 Thunderbolt</description>
901      <year>1990</year>
902      <publisher>Firebird Software</publisher>
903
904      <part name="flop1" interface="floppy_3">
905         <dataarea name="flop" size="236460">
906            <rom name="3594 - p-47 thunderbolt (europe).ipf" size="236460" crc="5e7c8a54" sha1="077718f2e94cef68e57114249e869d6cb897a616" offset="0" />
907         </dataarea>
908      </part>
909   </software>
910
911   <software name="phmpegas">
912      <!-- SPS (CAPS) release 3596 -->
913      <description>P.H.M. Pegasus</description>
914      <year>1988</year>
915      <publisher>Electronic Arts</publisher>
916      <info name="alt_title" value="P.H.M. Pegasus - Patrol Hydrofoil Missile Craft Simulation (Box)" />
917
918      <part name="flop1" interface="floppy_3">
919         <dataarea name="flop" size="238800">
920            <rom name="3596 - phm pegasus - patrol hydrofoil missile craft simulation (europe).ipf" size="238800" crc="ef9157eb" sha1="ae18a271c03fee31a70fa55b80ad4b991fab156e" offset="0" />
921         </dataarea>
922      </part>
923   </software>
924
925   <software name="pacland">
926      <!-- SPS (CAPS) release 3595 -->
927      <description>Pac-Land</description>
928      <year>1989</year>
929      <publisher>Grandslam Entertainments </publisher>
930
931      <part name="flop1" interface="floppy_3">
932         <dataarea name="flop" size="114805">
933            <rom name="3595 - pac-land (europe).ipf" size="114805" crc="93e4fc20" sha1="58a070edfbc9d28e9a1a25674867433e7e22e214" offset="0" />
934         </dataarea>
935      </part>
936   </software>
937
938   <software name="pang">
939      <!-- SPS (CAPS) release 3523 -->
940      <description>Pang</description>
941      <year>1990</year>
942      <publisher>Ocean Software</publisher>
943
944      <part name="flop1" interface="floppy_3">
945         <dataarea name="flop" size="196735">
946            <rom name="3523 - pang (europe).ipf" size="196735" crc="604502ad" sha1="a7f22304e0deae1a25f23ea7f73570dbcfe2bbd5" offset="0" />
947         </dataarea>
948      </part>
949   </software>
950
951   <software name="passsht">
952      <!-- SPS (CAPS) release 3524 -->
953      <description>Passing Shot</description>
954      <year>1989</year>
955      <publisher>Image Works</publisher>
956
957      <part name="flop1" interface="floppy_3">
958         <dataarea name="flop" size="77364">
959            <rom name="3524 - passing shot (europe).ipf" size="77364" crc="f987b804" sha1="d5537ad6d7670725396d63022fe4fa3a4c3b6aa7" offset="0" />
960         </dataarea>
961      </part>
962   </software>
963
964   <software name="pawn">
965      <!-- SPS (CAPS) release 3525 -->
966      <description>The Pawn</description>
967      <year>1987</year>
968      <publisher>Rainbird Software</publisher>
969
970      <part name="flop1" interface="floppy_3">
971         <dataarea name="flop" size="236460">
972            <rom name="3525 - pawn, the (europe).ipf" size="236460" crc="468012a2" sha1="1402a94935992789fdbffa1aa07140d56eeba435" offset="0" />
973         </dataarea>
974      </part>
975   </software>
976
977   <software name="pipmania">
978      <!-- SPS (CAPS) release 3597 -->
979      <description>Pipe Mania</description>
980      <year>1990</year>
981      <publisher>Empire Software</publisher>
982
983      <part name="flop1" interface="floppy_3">
984         <dataarea name="flop" size="234180">
985            <rom name="3597 - pipe mania (europe).ipf" size="234180" crc="c42e0870" sha1="70623591fbef78e5562ac88418ad61df1ba9a811" offset="0" />
986         </dataarea>
987      </part>
988   </software>
989
990   <software name="pirate33">
991      <!-- SPS (CAPS) release 3598 -->
992      <description>Pirate 3 +3</description>
993      <year>1987</year>
994      <publisher>Pirate Software</publisher>
995      <info name="games" value="Holiday in Sumaria + Call Me Psycho + Smash Out!" />
996
997      <part name="flop1" interface="floppy_3">
998         <dataarea name="flop" size="236460">
999            <rom name="3598 - pirate 3+3 - holiday in sumaria + call me psycho + smash out! (europe).ipf" size="236460" crc="95e093a6" sha1="c6bb5c0c3fd92c8d666b3493ca8fdc55a8f1d35d" offset="0" />
1000         </dataarea>
1001      </part>
1002   </software>
1003
1004   <software name="platoon">
1005      <!-- SPS (CAPS) release 3526 -->
1006      <description>Platoon</description>
1007      <year>1988</year>
1008      <publisher>U.S. Gold</publisher>
1009
1010      <part name="flop1" interface="floppy_3">
1011         <dataarea name="flop" size="159198">
1012            <rom name="3526 - platoon (europe).ipf" size="159198" crc="56fe10dc" sha1="d844dabecb043d8c16bd8864b7146de456cda369" offset="0" />
1013         </dataarea>
1014      </part>
1015   </software>
1016
1017   <software name="predatr2">
1018      <!-- SPS (CAPS) release 3527 -->
1019      <description>Predator 2</description>
1020      <year>1991</year>
1021      <publisher>Image Works</publisher>
1022
1023      <part name="flop1" interface="floppy_3">
1024         <dataarea name="flop" size="234180">
1025            <rom name="3527 - predator 2 (europe).ipf" size="234180" crc="2cdff17b" sha1="c691b6cca52aced2790f7e99f27cc6b3e8040c4e" offset="0" />
1026         </dataarea>
1027      </part>
1028   </software>
1029
1030   <software name="protennt">
1031      <!-- SPS (CAPS) release 3599 -->
1032      <description>Pro Tennis Tour</description>
1033      <year>1990</year>
1034      <publisher>Ubi Soft</publisher>
1035
1036      <part name="flop1" interface="floppy_3">
1037         <dataarea name="flop" size="236460">
1038            <rom name="3599 - pro tennis tour (europe).ipf" size="236460" crc="e1e4448b" sha1="b8abc334bf1604934e293c133fdbe3946e744975" offset="0" />
1039         </dataarea>
1040      </part>
1041   </software>
1042
1043   <software name="qoscrup">
1044      <!-- SPS (CAPS) release 3529 -->
1045      <description>A Question of Scruples - The Computer Edition</description>
1046      <year>1987</year>
1047      <publisher>Leisure Genius</publisher>
1048
1049      <part name="flop1" interface="floppy_3">
1050         <dataarea name="flop" size="236460">
1051            <rom name="3529 - question of scruples, a - the computer edition (europe).ipf" size="236460" crc="34d8887c" sha1="2e402eb208ce6695930a8d7e042c4b1f0f7e6944" offset="0" />
1052         </dataarea>
1053      </part>
1054   </software>
1055
1056   <software name="qos">
1057      <!-- SPS (CAPS) release 3601 -->
1058      <description>A Question of Sport</description>
1059      <year>1989</year>
1060      <publisher>Elite Systems</publisher>
1061
1062      <part name="flop1" interface="floppy_3">
1063         <dataarea name="flop" size="236460">
1064            <rom name="3601 - question of sport, a (europe).ipf" size="236460" crc="8402bbeb" sha1="0f47e7c7326ad484f2222579c6395e29031a0115" offset="0" />
1065         </dataarea>
1066      </part>
1067   </software>
1068
1069   <software name="rbibb2">
1070      <!-- SPS (CAPS) release 3602 -->
1071      <description>R.B.I. Baseball 2</description>
1072      <year>1991</year>
1073      <publisher>Domark</publisher>
1074
1075      <part name="flop1" interface="floppy_3">
1076         <dataarea name="flop" size="234180">
1077            <rom name="3602 - r.b.i. baseball two (europe).ipf" size="234180" crc="87c57f24" sha1="5558cfb938091ab469bbec5a3323d69a73186bfd" offset="0" />
1078         </dataarea>
1079      </part>
1080   </software>
1081
1082   <software name="rbisland">
1083      <!-- SPS (CAPS) release 3600 -->
1084      <description>Rainbow Islands</description>
1085      <year>1990</year>
1086      <publisher>Ocean Software</publisher>
1087
1088      <part name="flop1" interface="floppy_3">
1089         <dataarea name="flop" size="211680">
1090            <rom name="3600 - rainbow islands (europe).ipf" size="211680" crc="d7db38ed" sha1="acfc70b4ecb3a4493321541a86585aaf85aed12c" offset="0" />
1091         </dataarea>
1092      </part>
1093   </software>
1094
1095   <software name="renegade">
1096      <!-- SPS (CAPS) release 3603 -->
1097      <description>Renegade</description>
1098      <year>1987</year>
1099      <publisher>Imagine Software</publisher>
1100
1101      <part name="flop1" interface="floppy_3">
1102         <dataarea name="flop" size="236460">
1103            <rom name="3603 - renegade (europe).ipf" size="236460" crc="84a1fc8e" sha1="bcf794a5ab09f3febd58e26a4e4fa31f5e1941f9" offset="0" />
1104         </dataarea>
1105      </part>
1106   </software>
1107
1108   <software name="rex">
1109      <!-- SPS (CAPS) release 3605 -->
1110      <description>Rex</description>
1111      <year>1988</year>
1112      <publisher>Martech Games</publisher>
1113
1114      <part name="flop1" interface="floppy_3">
1115         <dataarea name="flop" size="236460">
1116            <rom name="3605 - rex (europe).ipf" size="236460" crc="ee04c2c3" sha1="8bd98191db385647c808453ec50813dd93d72b0c" offset="0" />
1117         </dataarea>
1118      </part>
1119   </software>
1120
1121   <software name="roadblst">
1122      <!-- SPS (CAPS) release 3606 -->
1123      <description>Road Blasters</description>
1124      <year>1988</year>
1125      <publisher>U.S. Gold</publisher>
1126
1127      <part name="flop1" interface="floppy_3">
1128         <dataarea name="flop" size="238800">
1129            <rom name="3606 - road blasters (europe).ipf" size="238800" crc="95160028" sha1="f0359902f4687a30aa98a2b11e1eee1e170daa15" offset="0" />
1130         </dataarea>
1131      </part>
1132   </software>
1133
1134   <software name="robocop2">
1135      <!-- SPS (CAPS) release 3528 -->
1136      <description>Robocop 2</description>
1137      <year>1988</year>
1138      <publisher>Ocean Software</publisher>
1139
1140      <part name="flop1" interface="floppy_3">
1141         <dataarea name="flop" size="139905">
1142            <rom name="3528 - robocop 2 (europe).ipf" size="139905" crc="dcedfec7" sha1="80535591f4d93e2df41481df64673571d93b1809" offset="0" />
1143         </dataarea>
1144      </part>
1145   </software>
1146
1147   <software name="rthunder">
1148      <!-- SPS (CAPS) release 3608 -->
1149      <description>Rolling Thunder</description>
1150      <year>1988</year>
1151      <publisher>U.S. Gold</publisher>
1152
1153      <part name="flop1" interface="floppy_3">
1154         <dataarea name="flop" size="237460">
1155            <rom name="3608 - rolling thunder (europe).ipf" size="237460" crc="ddd2f964" sha1="5a910fc46cef7b545bb817128048de41357e6991" offset="0" />
1156         </dataarea>
1157      </part>
1158   </software>
1159
1160   <software name="rungaunt">
1161      <!-- SPS (CAPS) release 3609 -->
1162      <description>Run the Gauntlet</description>
1163      <year>1989</year>
1164      <publisher>Ocean Software</publisher>
1165
1166      <part name="flop1" interface="floppy_3">
1167         <dataarea name="flop" size="212085">
1168            <rom name="3609 - run the gauntlet (europe).ipf" size="212085" crc="e1a23873" sha1="191d4c4f0beef6e4fd4cd47edda058092e2374a5" offset="0" />
1169         </dataarea>
1170      </part>
1171   </software>
1172
1173   <software name="saintgrv">
1174      <!-- SPS (CAPS) release 3610 -->
1175      <description>Saint &amp; Greavsie</description>
1176      <year>1989</year>
1177      <publisher>Grandslam Entertainments</publisher>
1178
1179      <part name="flop1" interface="floppy_3">
1180         <dataarea name="flop" size="267142">
1181            <rom name="3610 - saint and greavsie (europe).ipf" size="267142" crc="8e3df69a" sha1="671ed674a6f05d0db8e3e437de87ee2298a43769" offset="0" />
1182         </dataarea>
1183      </part>
1184   </software>
1185
1186   <software name="scrabdx">
1187      <!-- SPS (CAPS) release 3611 -->
1188      <description>Scrabble Deluxe</description>
1189      <year>1987</year>
1190      <publisher>Leisure Genius</publisher>
1191
1192      <part name="flop1" interface="floppy_3">
1193         <dataarea name="flop" size="233852">
1194            <rom name="3611 - scrabble deluxe (europe).ipf" size="233852" crc="fd27626b" sha1="06f09b5a89ddd32fff07eb5aeae40bad96d8275e" offset="0" />
1195         </dataarea>
1196      </part>
1197   </software>
1198
1199   <software name="shootdsk">
1200      <!-- SPS (CAPS) release 3612 -->
1201      <description>Shootacular Disk 2</description>
1202      <year>1988</year>
1203      <publisher>Alternative Software</publisher>
1204      <info name="game" value="Combat Zone, Firestorm, Dead or Alive" />
1205
1206      <part name="flop1" interface="floppy_3">
1207         <dataarea name="flop" size="234180">
1208            <rom name="3612 - shootacular disk 2 - combat zone + firestorm + dead or alive (europe).ipf" size="234180" crc="9fbe4d56" sha1="ce4ae2c4e57f68da942249b204ec28a23ae1760c" offset="0" />
1209         </dataarea>
1210      </part>
1211   </software>
1212
1213   <software name="simcity">
1214      <!-- SPS (CAPS) release 3530 -->
1215      <description>Sim City</description>
1216      <year>1990</year>
1217      <publisher>Infogrames</publisher>
1218
1219      <part name="flop1" interface="floppy_3">
1220         <dataarea name="flop" size="12e901e">
1221            <rom name="3530 - sim city (europe).ipf" size="126717" crc="12e901ee" sha1="7fd665f19a290994dfbf8ba02da19ac1905581be" offset="0" />
1222         </dataarea>
1223      </part>
1224   </software>
1225
1226   <software name="skatball">
1227      <!-- SPS (CAPS) release 3613 -->
1228      <description>Skateball</description>
1229      <year>1988</year>
1230      <publisher>Ubi Soft</publisher>
1231
1232      <part name="flop1" interface="floppy_3">
1233         <dataarea name="flop" size="236460">
1234            <rom name="3613 - skateball (europe).ipf" size="236460" crc="00cb42ee" sha1="f3a0c02215f9ea679bcb338b9f5a9d7cc61ab235" offset="0" />
1235         </dataarea>
1236      </part>
1237   </software>
1238
1239   <software name="skullxbo">
1240      <!-- SPS (CAPS) release 3614 -->
1241      <description>Skull &amp; Crossbones</description>
1242      <year>1991</year>
1243      <publisher>Domark</publisher>
1244
1245      <part name="flop1" interface="floppy_3">
1246         <dataarea name="flop" size="271685">
1247            <rom name="3614 - skull &amp; crossbones (europe).ipf" size="271685" crc="a6c33f24" sha1="91c9b414d4ac1bd44657dd68d4ef2c8d911b45db" offset="0" />
1248         </dataarea>
1249      </part>
1250   </software>
1251
1252   <software name="snoopy">
1253      <!-- SPS (CAPS) release 3531 -->
1254      <description>Snoopy - The Cool Computer Game</description>
1255      <year>1991</year>
1256      <publisher>The Edge</publisher>
1257
1258      <part name="flop1" interface="floppy_3">
1259         <dataarea name="flop" size="195328">
1260            <rom name="3531 - snoopy - the cool computer game (europe).ipf" size="236460" crc="acdfe6d4" sha1="4ab0bd91d893964d957bf8c7ab3fa79d534220dc" offset="0" />
1261         </dataarea>
1262      </part>
1263   </software>
1264
1265   <software name="soldlght">
1266      <!-- SPS (CAPS) release 3532 -->
1267      <description>Soldier of Light</description>
1268      <year>1988</year>
1269      <publisher>ACE Software</publisher>
1270
1271      <part name="flop1" interface="floppy_3">
1272         <dataarea name="flop" size="236460">
1273            <rom name="3532 - soldier of light (europe).ipf" size="236460" crc="bffdd16e" sha1="948cf81086d9093da6cd08be61f60d46caf4e933" offset="0" />
1274         </dataarea>
1275      </part>
1276   </software>
1277
1278   <software name="spacecrs">
1279      <!-- SPS (CAPS) release 3533 -->
1280      <description>Space Crusade</description>
1281      <year>1992</year>
1282      <publisher>Gremlin Graphics Software</publisher>
1283
1284      <part name="flop1" interface="floppy_3">
1285         <dataarea name="flop" size="239805">
1286            <rom name="3533 - space crusade (europe).ipf" size="239805" crc="9c96fd7b" sha1="a1e5864217fe7f5617d21e005f53752af0238f92" offset="0" />
1287         </dataarea>
1288      </part>
1289   </software>
1290
1291   <software name="sportdsk">
1292      <!-- SPS (CAPS) release 3534 -->
1293      <description>Sportacular Disk 1</description>
1294      <year>1988</year>
1295      <publisher>Alternative Software</publisher>
1296      <info name="games" value="Soccer Boss, Olympic Spectacular, Indoor Soccer" />
1297
1298      <part name="flop1" interface="floppy_3">
1299         <dataarea name="flop" size="234180">
1300            <rom name="3534 - sportacular disk 1 - soccer boss + olympic spectacular + indoor soccer (europe).ipf" size="234180" crc="6945a61b" sha1="bf3f411cbb998a0af1274154f1761e753eb6a92f" offset="0" />
1301         </dataarea>
1302      </part>
1303   </software>
1304
1305   <software name="spywholm">
1306      <!-- SPS (CAPS) release 3615 -->
1307      <description>The Spy Who Loved Me</description>
1308      <year>1990</year>
1309      <publisher>Domark</publisher>
1310
1311      <part name="flop1" interface="floppy_3">
1312         <dataarea name="flop" size="234180">
1313            <rom name="3615 - spy who loved me, the (europe).ipf" size="234180" crc="6d638747" sha1="30763ad2f43935d7b63fdec20e62858357742b77" offset="0" />
1314         </dataarea>
1315      </part>
1316   </software>
1317
1318   <software name="stalingr">
1319      <!-- SPS (CAPS) release 3535 -->
1320      <description>Stalingrad</description>
1321      <year>1988</year>
1322      <publisher>CCS</publisher>
1323
1324      <part name="flop1" interface="floppy_3">
1325         <dataarea name="flop" size="236460">
1326            <rom name="3535 - stalingrad (europe).ipf" size="236460" crc="cb347afc" sha1="cb584de6c08d12788e8ef8c2b5e74e06ffbb2c12" offset="0" />
1327         </dataarea>
1328      </part>
1329   </software>
1330
1331   <software name="starwars">
1332      <!-- SPS (CAPS) release 3617 -->
1333      <description>Star Wars</description>
1334      <year>1987</year>
1335      <publisher>Domark</publisher>
1336
1337      <part name="flop1" interface="floppy_3">
1338         <dataarea name="flop" size="236460">
1339            <rom name="3617 - star wars (europe).ipf" size="236460" crc="f7406cf3" sha1="892d00becdc045a5289c4ae172291486e3107c76" offset="0" />
1340         </dataarea>
1341      </part>
1342   </software>
1343
1344   <software name="jedi">
1345      <!-- SPS (CAPS) release 3604 -->
1346      <description>Star Wars - Return of the Jedi</description>
1347      <year>1989</year>
1348      <publisher>Domark</publisher>
1349
1350      <part name="flop1" interface="floppy_3">
1351         <dataarea name="flop" size="236460">
1352            <rom name="3604 - star wars - return of the jedi (europe).ipf" size="236460" crc="6f6134a2" sha1="7f04c19c145dc216736d8daadba0641277170d4c" offset="0" />
1353         </dataarea>
1354      </part>
1355   </software>
1356
1357   <software name="starglid">
1358      <!-- SPS (CAPS) release 3536 -->
1359      <description>Starglider</description>
1360      <year>1986</year>
1361      <publisher>Rainbird Software</publisher>
1362
1363      <part name="flop1" interface="floppy_3">
1364         <dataarea name="flop" size="236460">
1365            <rom name="3536 - starglider (europe).ipf" size="236460" crc="8bfbfec7" sha1="68b7e4ba0c50cb750926623f513d436a00f73581" offset="0" />
1366         </dataarea>
1367      </part>
1368   </software>
1369
1370   <software name="cchaplin">
1371      <!-- SPS (CAPS) release 3616 -->
1372      <description>Starring Charlie Chaplin</description>
1373      <year>1987</year>
1374      <publisher>U.S. Gold</publisher>
1375
1376      <part name="flop1" interface="floppy_3">
1377         <dataarea name="flop" size="237460">
1378            <rom name="3616 - starring charlie chaplin (europe).ipf" size="237460" crc="93bc0467" sha1="02bc05b02a6880deb03db12e658f65d9b46f9a6f" offset="0" />
1379         </dataarea>
1380      </part>
1381   </software>
1382
1383   <software name="subbuteo">
1384      <!-- SPS (CAPS) release 3618 -->
1385      <description>Subbuteo - The Computer Game</description>
1386      <year>1990</year>
1387      <publisher>Electronic Zoo</publisher>
1388
1389      <part name="flop1" interface="floppy_3">
1390         <dataarea name="flop" size="236460">
1391            <rom name="3618 - subbuteo - the computer game (europe).ipf" size="236460" crc="2bc39232" sha1="b4933dd0e5420e1f8c977192cef1dc09dcc0ec81" offset="0" />
1392         </dataarea>
1393      </part>
1394   </software>
1395
1396   <software name="sunxword">
1397      <!-- SPS (CAPS) release 3619 -->
1398      <description>The Sun Computer Crosswords Volume 1</description>
1399      <year>1988</year>
1400      <publisher>Akom</publisher>
1401
1402      <part name="flop1" interface="floppy_3">
1403         <dataarea name="flop" size="236460">
1404            <rom name="3619 - sun computer crosswords volume 1, the (europe).ipf" size="236460" crc="e87a9910" sha1="5c3c7cc4c1d3ae851a1631bfb5a25ec324b33783" offset="0" />
1405         </dataarea>
1406      </part>
1407   </software>
1408
1409   <software name="supercar">
1410      <!-- SPS (CAPS) release 3537 -->
1411      <description>Super Cars</description>
1412      <year>1990</year>
1413      <publisher>Gremlin Graphics Software</publisher>
1414
1415      <part name="flop1" interface="floppy_3">
1416         <dataarea name="flop" size="212085">
1417            <rom name="3537 - super cars (europe).ipf" size="212085" crc="20a43fbb" sha1="de410ab9d0fc172e58d523f4e22088694306f407" offset="0" />
1418         </dataarea>
1419      </part>
1420   </software>
1421
1422   <software name="suprcycl">
1423      <!-- SPS (CAPS) release 3620 -->
1424      <description>Super Cycle</description>
1425      <year>1987</year>
1426      <publisher>U.S. Gold</publisher>
1427
1428      <part name="flop1" interface="floppy_3">
1429         <dataarea name="flop" size="237460">
1430            <rom name="3620 - super cycle (europe).ipf" size="237460" crc="4349a0e1" sha1="297c1aedb313a8344f9e7489f7d282e1260506c6" offset="0" />
1431         </dataarea>
1432      </part>
1433   </software>
1434
1435   <software name="ssinv">
1436      <!-- SPS (CAPS) release 3539 -->
1437      <description>Super Space Invaders</description>
1438      <year>1991</year>
1439      <publisher>Domark</publisher>
1440
1441      <part name="flop1" interface="floppy_3">
1442         <dataarea name="flop" size="234180">
1443            <rom name="3539 - super space invaders (europe).ipf" size="234180" crc="3f3b3a3e" sha1="eeed9c991f06819e3a1aed01d42cd0ec364fac6c" offset="0" />
1444         </dataarea>
1445      </part>
1446   </software>
1447
1448   <software name="taipan">
1449      <!-- SPS (CAPS) release 3621 -->
1450      <description>Tai-pan</description>
1451      <year>1987</year>
1452      <publisher>Ocean Software</publisher>
1453
1454      <part name="flop1" interface="floppy_3">
1455         <dataarea name="flop" size="236460">
1456            <rom name="3621 - tai-pan (europe).ipf" size="236460" crc="aef0bdf1" sha1="467dfa30fa1a1f7278b83d27bd9a1a1a9bfa0bdd" offset="0" />
1457         </dataarea>
1458      </part>
1459   </software>
1460
1461   <software name="tmht">
1462      <!-- SPS (CAPS) release 3540 -->
1463      <description>Teenage Mutant Hero Turtles</description>
1464      <year>1990</year>
1465      <publisher>Image Works</publisher>
1466
1467      <part name="flop1" interface="floppy_3">
1468         <dataarea name="flop" size="234180">
1469            <rom name="3540 - teenage mutant hero turtles (europe).ipf" size="234180" crc="5cba9f99" sha1="920b8203c466a578d73aef39e0b54931e42b359d" offset="0" />
1470         </dataarea>
1471      </part>
1472   </software>
1473
1474   <software name="tmht3" cloneof="tmht">
1475      <!-- SPS (CAPS) release 3541 -->
1476      <description>Teenage Mutant Hero Turtles (3&quot;)</description>
1477      <year>1990</year>
1478      <publisher>Image Works</publisher>
1479
1480      <part name="flop1" interface="floppy_3">
1481         <dataarea name="flop" size="236460">
1482            <rom name="3541 - teenage mutant hero turtles (europe) (three inch).ipf" size="236460" crc="1125e88f" sha1="ee807ed179cb748403f94d7aa4b6e7ae8a9b033b" offset="0" />
1483         </dataarea>
1484      </part>
1485   </software>
1486
1487   <software name="term2">
1488      <!-- SPS (CAPS) release 3622 -->
1489      <description>Terminator 2 - Judgment Day</description>
1490      <year>1991</year>
1491      <publisher>Ocean Software</publisher>
1492
1493      <part name="flop1" interface="floppy_3">
1494         <dataarea name="flop" size="259185">
1495            <rom name="3622 - terminator 2 - judgment day (europe).ipf" size="259185" crc="da207f08" sha1="04ae9ac360b9fbe23c76a4d380cde9ca9903b0e9" offset="0" />
1496         </dataarea>
1497      </part>
1498   </software>
1499
1500   <software name="tblade">
1501      <!-- SPS (CAPS) release 3623 -->
1502      <description>Thunder Blade</description>
1503      <year>1988</year>
1504      <publisher>U.S. Gold</publisher>
1505
1506      <part name="flop1" interface="floppy_3">
1507         <dataarea name="flop" size="237460">
1508            <rom name="3623 - thunder blade (europe).ipf" size="237460" crc="c83cc174" sha1="eba2cc3c53a1634e48098a431f73dee3169c78d3" offset="0" />
1509         </dataarea>
1510      </part>
1511   </software>
1512
1513   <software name="thdrcats">
1514      <!-- SPS (CAPS) release 3624 -->
1515      <description>Thundercats</description>
1516      <year>1987</year>
1517      <publisher>Elite Systems</publisher>
1518
1519      <part name="flop1" interface="floppy_3">
1520         <dataarea name="flop" size="234180">
1521            <rom name="3624 - thundercats (europe).ipf" size="234180" crc="459999a2" sha1="af7f670ffaf05bc36bb7997849d446770ed7a4b3" offset="0" />
1522         </dataarea>
1523      </part>
1524   </software>
1525
1526   <software name="totrecal">
1527      <!-- SPS (CAPS) release 3542 -->
1528      <description>Total Recall</description>
1529      <year>1991</year>
1530      <publisher>Ocean Software</publisher>
1531
1532      <part name="flop1" interface="floppy_3">
1533         <dataarea name="flop" size="184315">
1534            <rom name="3543 - total recall (europe).ipf" size="184315" crc="9e5325a8" sha1="1748281e2a811580c3af086e59e9d5302c2c766b" offset="0" />
1535         </dataarea>
1536      </part>
1537   </software>
1538
1539   <software name="totrecalgh" cloneof="totrecal">
1540      <!-- SPS (CAPS) release 3543 -->
1541      <description>Total Recall (Guild Home Video Advert)</description>
1542      <year>1991</year>
1543      <publisher>Ocean Software</publisher>
1544
1545      <part name="flop1" interface="floppy_3">
1546         <dataarea name="flop" size="184315">
1547            <rom name="3542 - total recall (europe) (guild home video advert).ipf" size="184315" crc="48eb67ce" sha1="66005b0a98851cdd784798a94e25b3eee8e3007f" offset="0" />
1548         </dataarea>
1549      </part>
1550   </software>
1551
1552   <software name="brooking">
1553      <!-- SPS (CAPS) release 3544 -->
1554      <description>Trevor Brooking's World Cup Glory</description>
1555      <year>1990</year>
1556      <publisher>Challenge Software</publisher>
1557
1558      <part name="flop1" interface="floppy_3">
1559         <dataarea name="flop" size="234180">
1560            <rom name="3544 - trevor brooking's world cup glory (europe).ipf" size="234180" crc="98358646" sha1="4ddc2a1dfb6e0c6c1e9d209f74d62dba6182f5e8" offset="0" />
1561         </dataarea>
1562      </part>
1563   </software>
1564
1565   <software name="vigilant">
1566      <!-- SPS (CAPS) release 3626 -->
1567      <description>Vigilante</description>
1568      <year>1989</year>
1569      <publisher>U.S. Gold</publisher>
1570
1571      <part name="flop1" interface="floppy_3">
1572         <dataarea name="flop" size="266892">
1573            <rom name="3626 - vigilante (europe).ipf" size="266892" crc="4df85c44" sha1="0f13d51918c0df0a07ef13e22b23f49c17007219" offset="0" />
1574         </dataarea>
1575      </part>
1576   </software>
1577
1578   <software name="vixen">
1579      <!-- SPS (CAPS) release 3545 -->
1580      <description>Vixen</description>
1581      <year>1988</year>
1582      <publisher>Martech Games</publisher>
1583
1584      <part name="flop1" interface="floppy_3">
1585         <dataarea name="flop" size="236460">
1586            <rom name="3545 - vixen (europe).ipf" size="236460" crc="2ebf7637" sha1="8435d9b04b7fe9bcd04679022aa01c85461c3f75" offset="0" />
1587         </dataarea>
1588      </part>
1589   </software>
1590
1591   <software name="warmidle">
1592      <!-- SPS (CAPS) release 3546 -->
1593      <description>War in Middle Earth</description>
1594      <year>1989</year>
1595      <publisher>Krome Studios Melbourne</publisher>
1596      <info name="alt_title" value="J.R.R. Tolkien's War in Middle Earth (Box)" />
1597
1598      <part name="flop1" interface="floppy_3">
1599         <dataarea name="flop" size="234180">
1600            <rom name="3546 - j.r.r. tolkien's war in middle earth (europe).ipf" size="234180" crc="f66db1bb" sha1="e3b62c9c01a49068a6f57abbdea93dd6013b6858" offset="0" />
1601         </dataarea>
1602      </part>
1603   </software>
1604
1605   <software name="welltris">
1606      <!-- SPS (CAPS) release 3547 -->
1607      <description>Welltris</description>
1608      <year>1991</year>
1609      <publisher>Infogrames</publisher>
1610
1611      <part name="flop1" interface="floppy_3">
1612         <dataarea name="flop" size="236460">
1613            <rom name="3547 - welltris (europe).ipf" size="236460" crc="18f7df7f" sha1="626b5fbef66aee9fab753eaf4ff95d844ae49efa" offset="0" />
1614         </dataarea>
1615      </part>
1616   </software>
1617
1618   <software name="wcboxman">
1619      <!-- SPS (CAPS) release 3627 -->
1620      <description>World Championship Boxing Manager</description>
1621      <year>1990</year>
1622      <publisher>Goliath Games</publisher>
1623
1624      <part name="flop1" interface="floppy_3">
1625         <dataarea name="flop" size="234180">
1626            <rom name="3627 - world championship boxing manager (europe).ipf" size="234180" crc="20b95f60" sha1="ac43afcf09a27828b503328f236ce40c1842c2a8" offset="0" />
1627         </dataarea>
1628      </part>
1629   </software>
1630
1631   <software name="xout">
1632      <!-- SPS (CAPS) release 3550 -->
1633      <description>X-Out</description>
1634      <year>1990</year>
1635      <publisher>Rainbow Arts</publisher>
1636
1637      <part name="flop1" interface="floppy_3">
1638         <dataarea name="flop" size="259471">
1639            <rom name="3550 - x-out (europe).ipf" size="259471" crc="12540648" sha1="4f3650e4739c1eca40d56360b16fd7460d37ac75" offset="0" />
1640         </dataarea>
1641      </part>
1642   </software>
1643
1644   <software name="xenon">
1645      <!-- SPS (CAPS) release 3549 -->
1646      <description>Xenon</description>
1647      <year>1988</year>
1648      <publisher>Melbourne House</publisher>
1649
1650      <part name="flop1" interface="floppy_3">
1651         <dataarea name="flop" size="234180">
1652            <rom name="3549 - xenon (europe).ipf" size="234180" crc="01daebfa" sha1="5ae00774d2da999b95b29142d11a01311b2cf07c" offset="0" />
1653         </dataarea>
1654      </part>
1655   </software>
1656
1657   <software name="xybots">
1658      <!-- SPS (CAPS) release 3628 -->
1659      <description>Xybots</description>
1660      <year>1989</year>
1661      <publisher>Domark</publisher>
1662
1663      <part name="flop1" interface="floppy_3">
1664         <dataarea name="flop" size="209805">
1665            <rom name="3628 - xybots (europe).ipf" size="209805" crc="51a0d849" sha1="86461e526a4cf5c7731f1e1067433ca9c8d57dec" offset="0" />
1666         </dataarea>
1667      </part>
1668   </software>
1669
1670
1671   <!-- Other images -->
1672
1673   <software name="pacmania" >
1674      <description>Pac-Mania (Euro, Aus)</description>
1675      <year>1988</year>
1676      <publisher>Grandslam Entertainments</publisher>
1677      <part name="flop1" interface="floppy_3">
1678         <dataarea name="flop" size="195328">
1679            <rom name="pac-mania.dsk" size="195328" crc="88f5506b" sha1="827c95935dd3a1dd919989fc6d7a0efa4e5aebc1" offset="0" />
1680         </dataarea>
1681      </part>
1682   </software>
1683
1684</softwarelist>
trunk/hash/spectrum.xml
r241752r241753
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!--
5  Only 10 cartridge titles were released to be used with the ZX Spectrum "Interface 2" peripheral.
6
7  7 unreleased prototypes are included in this collection.
8
9-->
10<softwarelist name="spectrum" description="Sinclair ZX Spectrum cartridges">
11
12   <software name="backgamm">
13      <description>Backgammon</description>
14      <year>1983</year>
15      <publisher>Sinclair Research</publisher>
16      <info name="developer" value="Psion Software" />
17      <info name="serial" value="G22/R" />
18      <part name="cart" interface="spectrum_cart">
19         <dataarea name="rom" size="16384">
20            <rom name="backgammon.rom" size="16384" crc="40e78b48" sha1="e6ede60bb5e08d7ead8343f8078834d2afb49c30" offset="000000" />
21         </dataarea>
22      </part>
23   </software>
24
25   <software name="chess">
26      <description>Chess</description>
27      <year>1983</year>
28      <publisher>Sinclair Research</publisher>
29      <info name="developer" value="Psion Software" />
30      <info name="serial" value="G10/R" />
31      <part name="cart" interface="spectrum_cart">
32         <dataarea name="rom" size="16384">
33            <rom name="chess.rom" size="16384" crc="08c6a8c6" sha1="bba6d31ff54d3009cc61ae767973aab492bb104c" offset="000000" />
34         </dataarea>
35      </part>
36   </software>
37
38   <software name="cookie">
39      <description>Cookie</description>
40      <year>1983</year>
41      <publisher>Ultimate Play the Game ~ Sinclair Research</publisher>
42      <info name="serial" value="G30/R" />
43      <part name="cart" interface="spectrum_cart">
44         <dataarea name="rom" size="16384">
45            <rom name="cookie.rom" size="16384" crc="7108e9a8" sha1="fa5753133daa2a6b122948adf604c12ab70e2ce9" offset="000000" />
46         </dataarea>
47      </part>
48   </software>
49
50   <software name="horacesp">
51      <description>Horace &amp; the Spiders</description>
52      <year>1983</year>
53      <publisher>Sinclair Research</publisher>
54      <info name="developer" value="Psion Software" />
55      <info name="serial" value="G24/R" />
56      <part name="cart" interface="spectrum_cart">
57         <dataarea name="rom" size="16384">
58            <rom name="horace and the spider.rom" size="16384" crc="8ce28ffe" sha1="805fcdf83c74937adffab97027310d8c8e431c5a" offset="000000" />
59         </dataarea>
60      </part>
61   </software>
62
63   <software name="horace">
64      <description>Hungry Horace</description>
65      <year>1982</year>
66      <publisher>Sinclair Research</publisher>
67      <info name="developer" value="Psion Software" />
68      <info name="serial" value="G13/R" />
69      <part name="cart" interface="spectrum_cart">
70         <dataarea name="rom" size="16384">
71            <rom name="hungry horace.rom" size="16384" crc="bef35699" sha1="00129d9a5094a91a6e7392245be5121d5d17adf0" offset="000000" />
72         </dataarea>
73      </part>
74   </software>
75
76   <software name="jetpac">
77      <description>Jet Pac</description>
78      <year>1983</year>
79      <publisher>Ultimate Play the Game ~ Sinclair Research</publisher>
80      <info name="serial" value="G27/R" />
81      <part name="cart" interface="spectrum_cart">
82         <dataarea name="rom" size="16384">
83            <rom name="jetpac.rom" size="16384" crc="1d194e5b" sha1="0f0ddb79bb6b052846e0419df231df44184fbca6" offset="000000" />
84         </dataarea>
85      </part>
86   </software>
87
88   <software name="planet">
89      <description>Planetoids</description>
90      <year>1983</year>
91      <publisher>Sinclair Research</publisher>
92      <info name="developer" value="Psion Software" />
93      <info name="serial" value="G12/R" />
94      <part name="cart" interface="spectrum_cart">
95         <dataarea name="rom" size="16384">
96            <rom name="planetoids.rom" size="16384" crc="06e43fa2" sha1="da3041aa2f14abda0d2966e44fd2fd144bb3aa72" offset="000000" />
97         </dataarea>
98      </part>
99   </software>
100
101   <software name="pssst">
102      <description>Pssst</description>
103      <year>1983</year>
104      <publisher>Ultimate Play the Game ~ Sinclair Research</publisher>
105      <info name="serial" value="G28/R" />
106      <part name="cart" interface="spectrum_cart">
107         <dataarea name="rom" size="16384">
108            <rom name="pssst.rom" size="16384" crc="464cd4f6" sha1="cebafa93c110eabb4b343e7a34175d77d0fd0797" offset="000000" />
109         </dataarea>
110      </part>
111   </software>
112
113   <software name="spacerai">
114      <description>Space Raiders</description>
115      <year>1983</year>
116      <publisher>Sinclair Research</publisher>
117      <info name="developer" value="Psion Software" />
118      <info name="serial" value="G9/R" />
119      <part name="cart" interface="spectrum_cart">
120         <dataarea name="rom" size="16384">
121            <rom name="space raiders.rom" size="16384" crc="a570bd3d" sha1="f8359abdf50360261099460e48d440738109af1d" offset="000000" />
122         </dataarea>
123      </part>
124   </software>
125
126   <software name="tranzam">
127      <description>Tranz Am</description>
128      <year>1983</year>
129      <publisher>Ultimate Play the Game ~ Sinclair Research</publisher>
130      <info name="serial" value="G29/R" />
131      <part name="cart" interface="spectrum_cart">
132         <dataarea name="rom" size="16384">
133            <rom name="tranzam.rom" size="16384" crc="03da9be7" sha1="caf4441730a7032375d82edf385d5ac7f65c1dcd" offset="000000" />
134         </dataarea>
135      </part>
136   </software>
137
138   <!-- Prototypes -->
139
140   <software name="gyruss">
141      <description>Gyruss (Prototype)</description>
142      <year>1984</year>
143      <publisher>Parker Software</publisher>
144      <part name="cart" interface="spectrum_cart">
145         <dataarea name="rom" size="16384">
146            <rom name="gyruss.rom" size="16384" crc="0dd3bceb" sha1="9745d1ee713b2c6d319752aee523105905cbf562" offset="000000" />
147         </dataarea>
148      </part>
149   </software>
150
151   <software name="locomotn">
152      <description>Loco Motion (Prototype)</description>
153      <year>1984</year>
154      <publisher>Amazon Systems</publisher>
155      <part name="cart" interface="spectrum_cart">
156         <dataarea name="rom" size="16384">
157            <rom name="loco motion.rom" size="16384" crc="33b8ae50" sha1="230294b652250b975a84b8618a68a8e60729cc2b" offset="000000" />
158         </dataarea>
159      </part>
160   </software>
161
162   <software name="montezum">
163      <description>Montezuma's Revenge (Prototype)</description>
164      <year>1984</year>
165      <publisher>Parker Software</publisher>
166      <part name="cart" interface="spectrum_cart">
167         <dataarea name="rom" size="16384">
168            <rom name="montezuma's revenge.rom" size="16384" crc="ff8d7dc3" sha1="b700e37f7e24adea6ba12cf0e935307bd006b9c9" offset="000000" />
169         </dataarea>
170      </part>
171   </software>
172
173   <software name="montezum1" cloneof="montezum">
174      <description>Montezuma's Revenge (Prototype, Alt)</description>
175      <year>1984</year>
176      <publisher>Parker Software</publisher>
177      <part name="cart" interface="spectrum_cart">
178         <dataarea name="rom" size="16384">
179            <rom name="montezuma's revenge (prot).rom" size="16384" crc="5d73082e" sha1="e8f1b6e6b8c8eb6de6a0c6d271351ca7056a39af" offset="000000" />
180         </dataarea>
181      </part>
182   </software>
183
184   <software name="popeye">
185      <description>Popeye (Prototype)</description>
186      <year>1984</year>
187      <publisher>Parker Software</publisher>
188      <part name="cart" interface="spectrum_cart">
189         <dataarea name="rom" size="16384">
190            <rom name="popeye.rom" size="16384" crc="85c189c1" sha1="5c185c7e3eed2c3379bf74bf522f95c32a730278" offset="000000" />
191         </dataarea>
192      </part>
193   </software>
194
195   <software name="qbert">
196      <description>Q*Bert (Prototype)</description>
197      <year>1984</year>
198      <publisher>Parker Software</publisher>
199      <part name="cart" interface="spectrum_cart">
200         <dataarea name="rom" size="16384">
201            <rom name="qbert.rom" size="16384" crc="5de868db" sha1="777872a80411fd9c9653cc9c6dea1506b833d6b2" offset="000000" />
202         </dataarea>
203      </part>
204   </software>
205
206   <software name="jedi">
207      <description>Return Of The Jedi - Death Star Battle (Prototype)</description>
208      <year>1984</year>
209      <publisher>Parker Software</publisher>
210      <part name="cart" interface="spectrum_cart">
211         <dataarea name="rom" size="16384">
212            <rom name="return of the jedi - death star battle.rom" size="16384" crc="5f5bf622" sha1="71e55eecb5f38338af8826ae743509d35250f20e" offset="000000" />
213         </dataarea>
214      </part>
215   </software>
216
217   <software name="starwars">
218      <description>Star Wars (Prototype)</description>
219      <year>1984</year>
220      <publisher>Parker Software</publisher>
221      <part name="cart" interface="spectrum_cart">
222         <dataarea name="rom" size="16384">
223            <rom name="star wars.rom" size="16384" crc="732c6f5d" sha1="0ade16899c2e815ddfea6782618b0cdf760e6d54" offset="000000" />
224         </dataarea>
225      </part>
226   </software>
227
228   <software name="starwars1" cloneof="starwars">
229      <description>Star Wars (Prototype, Alt)</description>
230      <year>1984</year>
231      <publisher>Parker Software</publisher>
232      <part name="cart" interface="spectrum_cart">
233         <dataarea name="rom" size="16384">
234            <rom name="star wars[a].rom" size="16384" crc="90b61858" sha1="29cbda204ea20d42429a723afe2d00b9edd0a04d" offset="000000" />
235         </dataarea>
236      </part>
237   </software>
238
239   <!-- Test cartridge -->
240
241   <software name="zxtest">
242      <description>ZX Spectrum Test Cartridge</description>
243      <year>1983</year>
244      <publisher>Sinclair Research</publisher>
245      <part name="cart" interface="spectrum_cart">
246         <dataarea name="rom" size="16384">
247            <rom name="system test rom.rom" size="8192" crc="730bba9e" sha1="9e162a027e64ab57ccbedb7da86c2afc7ee44749" offset="000000" />
248         </dataarea>
249      </part>
250   </software>
251
252</softwarelist>
trunk/hash/spectrum_cart.xml
r0r241753
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!--
5  Only 10 cartridge titles were released to be used with the ZX Spectrum "Interface 2" peripheral.
6
7  7 unreleased prototypes are included in this collection.
8
9-->
10<softwarelist name="spectrum_cart" description="Sinclair ZX Spectrum cartridges">
11
12   <software name="backgamm">
13      <description>Backgammon</description>
14      <year>1983</year>
15      <publisher>Sinclair Research</publisher>
16      <info name="developer" value="Psion Software" />
17      <info name="serial" value="G22/R" />
18      <part name="cart" interface="spectrum_cart">
19         <dataarea name="rom" size="16384">
20            <rom name="backgammon.rom" size="16384" crc="40e78b48" sha1="e6ede60bb5e08d7ead8343f8078834d2afb49c30" offset="000000" />
21         </dataarea>
22      </part>
23   </software>
24
25   <software name="chess">
26      <description>Chess</description>
27      <year>1983</year>
28      <publisher>Sinclair Research</publisher>
29      <info name="developer" value="Psion Software" />
30      <info name="serial" value="G10/R" />
31      <part name="cart" interface="spectrum_cart">
32         <dataarea name="rom" size="16384">
33            <rom name="chess.rom" size="16384" crc="08c6a8c6" sha1="bba6d31ff54d3009cc61ae767973aab492bb104c" offset="000000" />
34         </dataarea>
35      </part>
36   </software>
37
38   <software name="cookie">
39      <description>Cookie</description>
40      <year>1983</year>
41      <publisher>Ultimate Play the Game ~ Sinclair Research</publisher>
42      <info name="serial" value="G30/R" />
43      <part name="cart" interface="spectrum_cart">
44         <dataarea name="rom" size="16384">
45            <rom name="cookie.rom" size="16384" crc="7108e9a8" sha1="fa5753133daa2a6b122948adf604c12ab70e2ce9" offset="000000" />
46         </dataarea>
47      </part>
48   </software>
49
50   <software name="horacesp">
51      <description>Horace &amp; the Spiders</description>
52      <year>1983</year>
53      <publisher>Sinclair Research</publisher>
54      <info name="developer" value="Psion Software" />
55      <info name="serial" value="G24/R" />
56      <part name="cart" interface="spectrum_cart">
57         <dataarea name="rom" size="16384">
58            <rom name="horace and the spider.rom" size="16384" crc="8ce28ffe" sha1="805fcdf83c74937adffab97027310d8c8e431c5a" offset="000000" />
59         </dataarea>
60      </part>
61   </software>
62
63   <software name="horace">
64      <description>Hungry Horace</description>
65      <year>1982</year>
66      <publisher>Sinclair Research</publisher>
67      <info name="developer" value="Psion Software" />
68      <info name="serial" value="G13/R" />
69      <part name="cart" interface="spectrum_cart">
70         <dataarea name="rom" size="16384">
71            <rom name="hungry horace.rom" size="16384" crc="bef35699" sha1="00129d9a5094a91a6e7392245be5121d5d17adf0" offset="000000" />
72         </dataarea>
73      </part>
74   </software>
75
76   <software name="jetpac">
77      <description>Jet Pac</description>
78      <year>1983</year>
79      <publisher>Ultimate Play the Game ~ Sinclair Research</publisher>
80      <info name="serial" value="G27/R" />
81      <part name="cart" interface="spectrum_cart">
82         <dataarea name="rom" size="16384">
83            <rom name="jetpac.rom" size="16384" crc="1d194e5b" sha1="0f0ddb79bb6b052846e0419df231df44184fbca6" offset="000000" />
84         </dataarea>
85      </part>
86   </software>
87
88   <software name="planet">
89      <description>Planetoids</description>
90      <year>1983</year>
91      <publisher>Sinclair Research</publisher>
92      <info name="developer" value="Psion Software" />
93      <info name="serial" value="G12/R" />
94      <part name="cart" interface="spectrum_cart">
95         <dataarea name="rom" size="16384">
96            <rom name="planetoids.rom" size="16384" crc="06e43fa2" sha1="da3041aa2f14abda0d2966e44fd2fd144bb3aa72" offset="000000" />
97         </dataarea>
98      </part>
99   </software>
100
101   <software name="pssst">
102      <description>Pssst</description>
103      <year>1983</year>
104      <publisher>Ultimate Play the Game ~ Sinclair Research</publisher>
105      <info name="serial" value="G28/R" />
106      <part name="cart" interface="spectrum_cart">
107         <dataarea name="rom" size="16384">
108            <rom name="pssst.rom" size="16384" crc="464cd4f6" sha1="cebafa93c110eabb4b343e7a34175d77d0fd0797" offset="000000" />
109         </dataarea>
110      </part>
111   </software>
112
113   <software name="spacerai">
114      <description>Space Raiders</description>
115      <year>1983</year>
116      <publisher>Sinclair Research</publisher>
117      <info name="developer" value="Psion Software" />
118      <info name="serial" value="G9/R" />
119      <part name="cart" interface="spectrum_cart">
120         <dataarea name="rom" size="16384">
121            <rom name="space raiders.rom" size="16384" crc="a570bd3d" sha1="f8359abdf50360261099460e48d440738109af1d" offset="000000" />
122         </dataarea>
123      </part>
124   </software>
125
126   <software name="tranzam">
127      <description>Tranz Am</description>
128      <year>1983</year>
129      <publisher>Ultimate Play the Game ~ Sinclair Research</publisher>
130      <info name="serial" value="G29/R" />
131      <part name="cart" interface="spectrum_cart">
132         <dataarea name="rom" size="16384">
133            <rom name="tranzam.rom" size="16384" crc="03da9be7" sha1="caf4441730a7032375d82edf385d5ac7f65c1dcd" offset="000000" />
134         </dataarea>
135      </part>
136   </software>
137
138   <!-- Prototypes -->
139
140   <software name="gyruss">
141      <description>Gyruss (Prototype)</description>
142      <year>1984</year>
143      <publisher>Parker Software</publisher>
144      <part name="cart" interface="spectrum_cart">
145         <dataarea name="rom" size="16384">
146            <rom name="gyruss.rom" size="16384" crc="0dd3bceb" sha1="9745d1ee713b2c6d319752aee523105905cbf562" offset="000000" />
147         </dataarea>
148      </part>
149   </software>
150
151   <software name="locomotn">
152      <description>Loco Motion (Prototype)</description>
153      <year>1984</year>
154      <publisher>Amazon Systems</publisher>
155      <part name="cart" interface="spectrum_cart">
156         <dataarea name="rom" size="16384">
157            <rom name="loco motion.rom" size="16384" crc="33b8ae50" sha1="230294b652250b975a84b8618a68a8e60729cc2b" offset="000000" />
158         </dataarea>
159      </part>
160   </software>
161
162   <software name="montezum">
163      <description>Montezuma's Revenge (Prototype)</description>
164      <year>1984</year>
165      <publisher>Parker Software</publisher>
166      <part name="cart" interface="spectrum_cart">
167         <dataarea name="rom" size="16384">
168            <rom name="montezuma's revenge.rom" size="16384" crc="ff8d7dc3" sha1="b700e37f7e24adea6ba12cf0e935307bd006b9c9" offset="000000" />
169         </dataarea>
170      </part>
171   </software>
172
173   <software name="montezum1" cloneof="montezum">
174      <description>Montezuma's Revenge (Prototype, Alt)</description>
175      <year>1984</year>
176      <publisher>Parker Software</publisher>
177      <part name="cart" interface="spectrum_cart">
178         <dataarea name="rom" size="16384">
179            <rom name="montezuma's revenge (prot).rom" size="16384" crc="5d73082e" sha1="e8f1b6e6b8c8eb6de6a0c6d271351ca7056a39af" offset="000000" />
180         </dataarea>
181      </part>
182   </software>
183
184   <software name="popeye">
185      <description>Popeye (Prototype)</description>
186      <year>1984</year>
187      <publisher>Parker Software</publisher>
188      <part name="cart" interface="spectrum_cart">
189         <dataarea name="rom" size="16384">
190            <rom name="popeye.rom" size="16384" crc="85c189c1" sha1="5c185c7e3eed2c3379bf74bf522f95c32a730278" offset="000000" />
191         </dataarea>
192      </part>
193   </software>
194
195   <software name="qbert">
196      <description>Q*Bert (Prototype)</description>
197      <year>1984</year>
198      <publisher>Parker Software</publisher>
199      <part name="cart" interface="spectrum_cart">
200         <dataarea name="rom" size="16384">
201            <rom name="qbert.rom" size="16384" crc="5de868db" sha1="777872a80411fd9c9653cc9c6dea1506b833d6b2" offset="000000" />
202         </dataarea>
203      </part>
204   </software>
205
206   <software name="jedi">
207      <description>Return Of The Jedi - Death Star Battle (Prototype)</description>
208      <year>1984</year>
209      <publisher>Parker Software</publisher>
210      <part name="cart" interface="spectrum_cart">
211         <dataarea name="rom" size="16384">
212            <rom name="return of the jedi - death star battle.rom" size="16384" crc="5f5bf622" sha1="71e55eecb5f38338af8826ae743509d35250f20e" offset="000000" />
213         </dataarea>
214      </part>
215   </software>
216
217   <software name="starwars">
218      <description>Star Wars (Prototype)</description>
219      <year>1984</year>
220      <publisher>Parker Software</publisher>
221      <part name="cart" interface="spectrum_cart">
222         <dataarea name="rom" size="16384">
223            <rom name="star wars.rom" size="16384" crc="732c6f5d" sha1="0ade16899c2e815ddfea6782618b0cdf760e6d54" offset="000000" />
224         </dataarea>
225      </part>
226   </software>
227
228   <software name="starwars1" cloneof="starwars">
229      <description>Star Wars (Prototype, Alt)</description>
230      <year>1984</year>
231      <publisher>Parker Software</publisher>
232      <part name="cart" interface="spectrum_cart">
233         <dataarea name="rom" size="16384">
234            <rom name="star wars[a].rom" size="16384" crc="90b61858" sha1="29cbda204ea20d42429a723afe2d00b9edd0a04d" offset="000000" />
235         </dataarea>
236      </part>
237   </software>
238
239   <!-- Test cartridge -->
240
241   <software name="zxtest">
242      <description>ZX Spectrum Test Cartridge</description>
243      <year>1983</year>
244      <publisher>Sinclair Research</publisher>
245      <part name="cart" interface="spectrum_cart">
246         <dataarea name="rom" size="16384">
247            <rom name="system test rom.rom" size="8192" crc="730bba9e" sha1="9e162a027e64ab57ccbedb7da86c2afc7ee44749" offset="000000" />
248         </dataarea>
249      </part>
250   </software>
251
252</softwarelist>
trunk/hash/spectrum_flop.xml
r241752r241753
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- ZX Spectrum Disc images
5    for +3 machines etc.
6-->
7
8<softwarelist name="spectrum_flop" description="ZX Spectrum disk images">
9
10   <!-- SPS / CAPS Releases -->
11
12   <software name="aforce" >
13      <!-- SPS (CAPS) release 3500 -->
14      <description>Action Force - International Heroes</description>
15      <year>1987</year>
16      <publisher>Virgin Games</publisher>
17
18      <part name="flop1" interface="floppy_3">
19         <dataarea name="flop" size="236460">
20            <rom name="3500 - action force - international heroes (europe).ipf" size="236460" crc="1a2bb165" sha1="9b9b44e1118c40bbb9c6a32d4ffc6e61f8c5fd3b" offset="0" />
21         </dataarea>
22      </part>
23   </software>
24
25   <software name="aforce2">
26      <!-- SPS (CAPS) release 3551 -->
27      <description>Action Force II - International Heroes</description>
28      <year>1988</year>
29      <publisher>Virgin Games</publisher>
30
31      <part name="flop1" interface="floppy_3">
32         <dataarea name="flop" size="238175">
33            <rom name="3551 - action force ii - international heroes (europe).ipf" size="238175" crc="caa251a2" sha1="9c02f116d5a61d5d064d3a5643e70542f1e01bf9" offset="0" />
34         </dataarea>
35      </part>
36   </software>
37
38   <software name="tiebreak">
39      <!-- SPS (CAPS) release 3501 -->
40      <description>Adidas Championship Tie-Break</description>
41      <year>1990</year>
42      <publisher>Ocean Software</publisher>
43
44      <part name="flop1" interface="floppy_3">
45         <dataarea name="flop" size="123445">
46            <rom name="3501 - adidas championship tie break (europe).ipf" size="123445" crc="6e2e4951" sha1="a50e132cb68cc406e59485b617fc384288762d7f" offset="0" />
47         </dataarea>
48      </part>
49   </software>
50
51   <software name="artura">
52      <!-- SPS (CAPS) release 3552 -->
53      <description>Artura</description>
54      <year>1989</year>
55      <publisher>Gremlin Graphics Software</publisher>
56
57      <part name="flop1" interface="floppy_3">
58         <dataarea name="flop" size="237460">
59            <rom name="3552 - artura (europe).ipf" size="237460" crc="bcc6e00c" sha1="8781e6b1e1bf98a1fc6b8ffb77f5671780c5e402" offset="0" />
60         </dataarea>
61      </part>
62   </software>
63
64   <software name="badlands">
65      <!-- SPS (CAPS) release 3553 -->
66      <description>Badlands</description>
67      <year>1990</year>
68      <publisher>Domark</publisher>
69
70      <part name="flop1" interface="floppy_3">
71         <dataarea name="flop" size="234180">
72            <rom name="3553 - badlands (europe).ipf" size="234180" crc="93f1c3b6" sha1="9da5ab7e607dad7fd5b605997929eff43c20abb7" offset="0" />
73         </dataarea>
74      </part>
75   </software>
76
77   <software name="bhcop">
78      <!-- SPS (CAPS) release 3502 -->
79      <description>Beverly Hills Cop</description>
80      <year>1990</year>
81      <publisher>Tynesoft</publisher>
82
83      <part name="flop1" interface="floppy_3">
84         <dataarea name="flop" size="236460">
85            <rom name="3502 - beverly hills cop (europe).ipf" size="236460" crc="81fbf5ad" sha1="2022531eba845cfcd19a2fb2b69d54e007979592" offset="0" />
86         </dataarea>
87      </part>
88   </software>
89
90   <software name="bloodwyc">
91      <!-- SPS (CAPS) release 3554 -->
92      <description>Bloodwych</description>
93      <year>1990</year>
94      <publisher>Image Works</publisher>
95
96      <part name="flop1" interface="floppy_3">
97         <dataarea name="flop" size="236460">
98            <rom name="3554 - bloodwych (europe).ipf" size="236460" crc="cb66aed6" sha1="b7bab317718a478e48a689a8ebd125a498504ebe" offset="0" />
99         </dataarea>
100      </part>
101   </software>
102
103   <software name="boggit">
104      <!-- SPS (CAPS) release 3555 -->
105      <description>The Boggit - Bored Too</description>
106      <year>1986</year>
107      <publisher>CRL Group</publisher>
108
109      <part name="flop1" interface="floppy_3">
110         <dataarea name="flop" size="236460">
111            <rom name="3555 - boggit, the - bored too (europe).ipf" size="236460" crc="c9dc8d41" sha1="ae1aff98a4e60bf6272c8955a224a7b0e890c40e" offset="0" />
112         </dataarea>
113      </part>
114   </software>
115
116   <software name="bookdead">
117      <!-- SPS (CAPS) release 3556 -->
118      <description>Book of the Dead</description>
119      <year>1987</year>
120      <publisher>CRL Group</publisher>
121
122      <part name="flop1" interface="floppy_3">
123         <dataarea name="flop" size="236460">
124            <rom name="3556 - book of the dead (europe).ipf" size="236460" crc="b1030311" sha1="6ddbe67cbba260b6ec80ee0bc7e557f88bf08a23" offset="0" />
125         </dataarea>
126      </part>
127   </software>
128
129   <software name="bbrg">
130      <!-- SPS (CAPS) release 3503 -->
131      <description>Buffalo Bill's Rodeo Games</description>
132      <year>1989</year>
133      <publisher>Tynesoft</publisher>
134      <info name="alt_title" value="Buffalo Bill's Wild West Rodeo Show" />
135
136      <part name="flop1" interface="floppy_3">
137         <dataarea name="flop" size="234180">
138            <rom name="3503 - buffalo bill's rodeo games (unknown).ipf" size="234180" crc="74650740" sha1="cdf81f26af4e013726a288c3a27a1765b254c267" offset="0" />
139         </dataarea>
140      </part>
141   </software>
142
143   <software name="butchill">
144      <!-- SPS (CAPS) release 3557 -->
145      <description>Butcher Hill</description>
146      <year>1989</year>
147      <publisher>Gremlin Graphics Software </publisher>
148
149      <part name="flop1" interface="floppy_3">
150         <dataarea name="flop" size="237460">
151            <rom name="3557 - butcher hill (europe).ipf" size="237460" crc="5ae072b5" sha1="96e89f1229f2d8306965b925145ae0ab454def6f" offset="0" />
152         </dataarea>
153      </part>
154   </software>
155
156   <software name="carrierc">
157      <!-- SPS (CAPS) release 3504 -->
158      <description>Carrier Command</description>
159      <year>1989</year>
160      <publisher>Rainbird Software</publisher>
161
162      <part name="flop1" interface="floppy_3">
163         <dataarea name="flop" size="236140">
164            <rom name="3504 - carrier command (europe).ipf" size="236140" crc="3596b16d" sha1="842715907902c7d15a28e92db6e66e2f435f8781" offset="0" />
165         </dataarea>
166      </part>
167   </software>
168
169   <software name="chicag30">
170      <!-- SPS (CAPS) release 3558 -->
171      <description>Chicago 30's</description>
172      <year>1988</year>
173      <publisher>U.S. Gold</publisher>
174
175      <part name="flop1" interface="floppy_3">
176         <dataarea name="flop" size="266892">
177            <rom name="3558 - chicago 30's (unknown).ipf" size="266892" crc="50f0a090" sha1="a0be8b20605834f29e59ded94786ed90d07b235b" offset="0" />
178         </dataarea>
179      </part>
180   </software>
181
182   <software name="combatsc">
183      <!-- SPS (CAPS) release 3559 -->
184      <description>Combat School</description>
185      <year>1987</year>
186      <publisher>Ocean Software</publisher>
187
188      <part name="flop1" interface="floppy_3">
189         <dataarea name="flop" size="238800">
190            <rom name="3559 - combat school (europe).ipf" size="238800" crc="ba69a18a" sha1="581b183c20d6cf33e0965ff00c5b077a9618d872" offset="0" />
191         </dataarea>
192      </part>
193   </software>
194
195   <software name="corruptn">
196      <!-- SPS (CAPS) release 3560 -->
197      <description>Corruption</description>
198      <year>1988</year>
199      <publisher>Rainbird Software</publisher>
200
201      <part name="flop1" interface="floppy_3">
202         <dataarea name="flop" size="236460">
203            <rom name="3560 - corruption (europe).ipf" size="236460" crc="cfbb80af" sha1="ed489e12913c2bb7fbb48fed0c9644b7cfceb59e" offset="0" />
204         </dataarea>
205      </part>
206   </software>
207
208   <software name="cybernod">
209      <!-- SPS (CAPS) release 3561 -->
210      <description>Cybernoid - The Fighting Machine</description>
211      <year>1988</year>
212      <publisher>Hewson Consultants</publisher>
213
214      <part name="flop1" interface="floppy_3">
215         <dataarea name="flop" size="212085">
216            <rom name="3561 - cybernoid - the fighting machine (europe).ipf" size="212085" crc="3733ffa8" sha1="2a0b2f4c29a568e6e4ac287e679f6b4a4e6ae742" offset="0" />
217         </dataarea>
218      </part>
219   </software>
220
221   <software name="cyberno2">
222      <!-- SPS (CAPS) release 3562 -->
223      <description>Cybernoid II - The Revenge</description>
224      <year>1988</year>
225      <publisher>Hewson Consultants</publisher>
226
227      <part name="flop1" interface="floppy_3">
228         <dataarea name="flop" size="236460">
229            <rom name="3562 - cybernoid ii - the revenge (europe).ipf" size="236460" crc="417b84f6" sha1="a2c8753121df65bd95a0d31e7ee6101a2d74ea61" offset="0" />
230         </dataarea>
231      </part>
232   </software>
233
234   <software name="dandare3">
235      <!-- SPS (CAPS) release 3505 -->
236      <description>Dan Dare III - The Escape</description>
237      <year>1990</year>
238      <publisher>Virgin Games</publisher>
239
240      <part name="flop1" interface="floppy_3">
241         <dataarea name="flop" size="71100">
242            <rom name="3505 - dan dare iii - the escape (europe).ipf" size="71100" crc="e949bc77" sha1="6074056cd0ef8aaf103d36fde1e5a1fba356904f" offset="0" />
243         </dataarea>
244      </part>
245   </software>
246
247   <software name="darkfusn">
248      <!-- SPS (CAPS) release 3563 -->
249      <description>Dark Fusion</description>
250      <year>1988</year>
251      <publisher>Gremlin Graphics Software</publisher>
252
253      <part name="flop1" interface="floppy_3">
254         <dataarea name="flop" size="260585">
255            <rom name="3563 - dark fusion (europe).ipf" size="260585" crc="9495182c" sha1="bb94b445a9909ba39f21119dcc43dbd1497aed20" offset="0" />
256         </dataarea>
257      </part>
258   </software>
259
260   <software name="deep">
261      <!-- SPS (CAPS) release 3506 -->
262      <description>The Deep</description>
263      <year>1988</year>
264      <publisher>U.S. Gold</publisher>
265
266      <part name="flop1" interface="floppy_3">
267         <dataarea name="flop" size="266891">
268            <rom name="3506 - deep, the (europe).ipf" size="266891" crc="e4844d2b" sha1="95dee7ccae5613c9b04efdbde5e2bc6c69a1e735" offset="0" />
269         </dataarea>
270      </part>
271   </software>
272
273   <software name="deflektr">
274      <!-- SPS (CAPS) release 3564 -->
275      <description>Deflektor</description>
276      <year>1987</year>
277      <publisher>Gremlin Graphics Software</publisher>
278
279      <part name="flop1" interface="floppy_3">
280         <dataarea name="flop" size="212085">
281            <rom name="3564 - deflektor (europe).ipf" size="212085" crc="2483f8c7" sha1="032b18abb2eb903ded8b32a59b003a68d784d996" offset="0" />
282         </dataarea>
283      </part>
284   </software>
285
286   <software name="dominatr">
287      <!-- SPS (CAPS) release 3507 -->
288      <description>Dominator</description>
289      <year>1989</year>
290      <publisher>System 3 Software</publisher>
291
292      <part name="flop1" interface="floppy_3">
293         <dataarea name="flop" size="250612">
294            <rom name="3507 - dominator (europe).ipf" size="250612" crc="e6c6f9eb" sha1="22d46cc0cabba10b0d58bba86b5123fdcf73a731" offset="0" />
295         </dataarea>
296      </part>
297   </software>
298
299   <software name="echelon">
300      <!-- SPS (CAPS) release 3565 -->
301      <description>Echelon</description>
302      <year>1988</year>
303      <publisher>U.S. Gold</publisher>
304
305      <part name="flop1" interface="floppy_3">
306         <dataarea name="flop" size="237460">
307            <rom name="3565 - echelon (europe).ipf" size="237460" crc="94c24ad3" sha1="cae1aa9d3897ec2027120afd1e4d3370b78de3cf" offset="0" />
308         </dataarea>
309      </part>
310   </software>
311
312   <software name="erik">
313      <!-- SPS (CAPS) release 3566 -->
314      <description>Erik - The Phantom of the Opera</description>
315      <year>1987</year>
316      <publisher>Crysys</publisher>
317
318      <part name="flop1" interface="floppy_3">
319         <dataarea name="flop" size="236460">
320            <rom name="3566 - erik - the phantom of the opera (europe).ipf" size="236460" crc="77098dc3" sha1="619babc59ea1816a4ea8e2d2030c25205fd65735" offset="0" />
321         </dataarea>
322      </part>
323   </software>
324
325   <software name="eprom">
326      <!-- SPS (CAPS) release 3567 -->
327      <description>Escape from the Planet of the Robot Monsters</description>
328      <year>1990</year>
329      <publisher>Domark</publisher>
330
331      <part name="flop1" interface="floppy_3">
332         <dataarea name="flop" size="234180">
333            <rom name="3567 - escape from the planet of the robot monsters (europe).ipf" size="234180" crc="ba153a21" sha1="4bb529af057b9cc5ab547cf754a3e4c21d0f34c9" offset="0" />
334         </dataarea>
335      </part>
336   </software>
337
338   <software name="espionag">
339      <!-- SPS (CAPS) release 3568 -->
340      <description>Espionage</description>
341      <year>1988</year>
342      <publisher>Grandslam Entertainments </publisher>
343      <info name="alt_title" value="Espionage - The Computer Game (Box)" />
344
345      <part name="flop1" interface="floppy_3">
346         <dataarea name="flop" size="99180">
347            <rom name="3568 - espionage - the computer game (europe).ipf" size="99180" crc="893495d8" sha1="eac0b7dcd91d628bf85938327ec15b833dd6f1d9" offset="0" />
348         </dataarea>
349      </part>
350   </software>
351
352   <software name="f16comb">
353      <!-- SPS (CAPS) release 3508 -->
354      <description>F-16 Combat Pilot</description>
355      <year>1991</year>
356      <publisher>Digital Integration</publisher>
357
358      <part name="flop1" interface="floppy_3">
359         <dataarea name="flop" size="161607">
360            <rom name="3508 - f-16 combat pilot (europe).ipf" size="161607" crc="49f2d22d" sha1="1336f27de5c4c1aad734f83aa6c2ffca9efe6747" offset="0" />
361         </dataarea>
362      </part>
363   </software>
364
365   <software name="federatn">
366      <!-- SPS (CAPS) release 3569 -->
367      <description>Federation</description>
368      <year>1988</year>
369      <publisher>CRL Group</publisher>
370      <part name="flop1" interface="floppy_3">
371         <dataarea name="flop" size="236460">
372            <rom name="3569 - federation (europe).ipf" size="236460" crc="091f3f4f" sha1="fb0f360417ef35fcf5bb59b2c9822ffb7d834015" offset="0" />
373         </dataarea>
374      </part>
375   </software>
376
377   <software name="firefly">
378      <!-- SPS (CAPS) release 3570 -->
379      <description>Firefly</description>
380      <year>1988</year>
381      <publisher>Ocean Software</publisher>
382
383      <part name="flop1" interface="floppy_3">
384         <dataarea name="flop" size="238800">
385            <rom name="3570 - firefly (europe).ipf" size="238800" crc="e1961552" sha1="b3b3d1ebd5f6d5ce7ed104ffa63d1bac97b51db8" offset="0" />
386         </dataarea>
387      </part>
388   </software>
389
390   <software name="fish">
391      <!-- SPS (CAPS) release 3571 -->
392      <description>Fish!</description>
393      <year>1989</year>
394      <publisher>Rainbird Software</publisher>
395
396      <part name="flop1" interface="floppy_3">
397         <dataarea name="flop" size="236460">
398            <rom name="3571 - fish! (europe).ipf" size="236460" crc="880592d1" sha1="7522893bfa42a8b25bf98af8b54a83568df72bd3" offset="0" />
399         </dataarea>
400      </part>
401   </software>
402
403   <software name="footdir2">
404      <!-- SPS (CAPS) release 3509 -->
405      <description>Football Director II</description>
406      <year>1987</year>
407      <publisher>D&amp;H Games</publisher>
408
409      <part name="flop1" interface="floppy_3">
410         <dataarea name="flop" size="234180">
411            <rom name="3509 - football director ii (europe).ipf" size="234180" crc="f98bb0e1" sha1="0eab5d91a1ab220fbc22ae76485fa19beec36adb" offset="0" />
412         </dataarea>
413      </part>
414   </software>
415
416   <software name="foty2">
417      <!-- SPS (CAPS) release 3572 -->
418      <description>Footballer of the Year 2</description>
419      <year>1989</year>
420      <publisher>Gremlin Graphics Software </publisher>
421
422      <part name="flop1" interface="floppy_3">
423         <dataarea name="flop" size="259471">
424            <rom name="3572 - footballer of the year 2 (europe).ipf" size="259471" crc="96979e7f" sha1="a559adafcda492756da509ed22d62a53dbba2a16" offset="0" />
425         </dataarea>
426      </part>
427   </software>
428
429   <software name="hewson4">
430      <!-- SPS (CAPS) release 3510 -->
431      <description>Four Smash Hits From Hewson</description>
432      <year>198?</year>
433      <publisher>Hewson</publisher>
434
435      <part name="flop1" interface="floppy_3">
436         <dataarea name="flop" size="238800">
437            <rom name="3510 - four smash hits from hewson - exolon + zynaps + rana rama + uridium plus (europe).ipf" size="238800" crc="0e708293" sha1="85d7346aff7b7d63a290a828da0445ab73aa9855" offset="0" />
438         </dataarea>
439      </part>
440   </software>
441
442   <software name="garfield">
443      <!-- SPS (CAPS) release 3511 -->
444      <description>Garfield - "Big, Fat, Hairy Deal."</description>
445      <year>1988</year>
446      <publisher>The Edge</publisher>
447
448      <part name="flop1" interface="floppy_3">
449         <dataarea name="flop" size="236460">
450            <rom name="3511 - garfield - big, fat, hairy deal (europe).ipf" size="236460" crc="ffb8008d" sha1="f9f314b1d26c58340a962b7d6f35fdc5cf65768c" offset="0" />
451         </dataarea>
452      </part>
453   </software>
454
455   <software name="lineker">
456      <!-- SPS (CAPS) release 3573 -->
457      <description>Gary Lineker's Hot-Shot!</description>
458      <year>1988</year>
459      <publisher>Gremlin Graphics Software</publisher>
460
461      <part name="flop1" interface="floppy_3">
462         <dataarea name="flop" size="266892">
463            <rom name="3573 - gary lineker's hot-shot! (unknown).ipf" size="266892" crc="17963acf" sha1="22a8985076b7c1743e9431e071940c49efe217f5" offset="0" />
464         </dataarea>
465      </part>
466   </software>
467
468   <software name="linekskl">
469      <!-- SPS (CAPS) release 3574 -->
470      <description>Gary Lineker's Super Skills</description>
471      <year>1988</year>
472      <publisher>Gremlin Graphics Software</publisher>
473
474      <part name="flop1" interface="floppy_3">
475         <dataarea name="flop" size="237460">
476            <rom name="3574 - gary lineker's superskills (unknown).ipf" size="237460" crc="2f0ed1da" sha1="589cf6b337347218814a4a697353be4af5024c8a" offset="0" />
477         </dataarea>
478      </part>
479   </software>
480
481   <software name="lineksss">
482      <!-- SPS (CAPS) release 3575 -->
483      <description>Gary Lineker's Super Star Soccer</description>
484      <year>1988</year>
485      <publisher>Gremlin Graphics Software</publisher>
486
487      <part name="flop1" interface="floppy_3">
488         <dataarea name="flop" size="212085">
489            <rom name="3575 - gary lineker's superstar soccer (unknown).ipf" size="212085" crc="2a1c53f7" sha1="f4c24b1e01312d4f9b2241be14d243e723035499" offset="0" />
490         </dataarea>
491      </part>
492   </software>
493
494   <software name="gauntlet">
495      <!-- SPS (CAPS) release 3576 -->
496      <description>Gauntlet</description>
497      <year>1987</year>
498      <publisher>U.S. Gold</publisher>
499
500      <part name="flop1" interface="floppy_3">
501         <dataarea name="flop" size="212085">
502            <rom name="3576 - gauntlet (europe).ipf" size="212085" crc="4c4c4cc2" sha1="c04e3233166fe888a96b2ea98a6a96f33fb19728" offset="0" />
503         </dataarea>
504      </part>
505   </software>
506
507   <software name="gauntlt2">
508      <!-- SPS (CAPS) release 3577 -->
509      <description>Gauntlet II</description>
510      <year>1988</year>
511      <publisher>U.S. Gold</publisher>
512
513      <part name="flop1" interface="floppy_3">
514         <dataarea name="flop" size="212085">
515            <rom name="3577 - gauntlet ii (europe).ipf" size="212085" crc="7d156d4d" sha1="0d296b611c817203bf59a3710c87d0d5d39c16cf" offset="0" />
516         </dataarea>
517      </part>
518   </software>
519
520   <software name="gazza">
521      <!-- SPS (CAPS) release 3579 -->
522      <description>Gazza's Super Soccer</description>
523      <year>1990</year>
524      <publisher>Empire Software</publisher>
525
526      <part name="flop1" interface="floppy_3">
527         <dataarea name="flop" size="236460">
528            <rom name="3579 - gazza's super soccer (unknown).ipf" size="236460" crc="3c8cb09d" sha1="19a06b4732fefb4d5a8898d415afde39aa8a8495" offset="0" />
529         </dataarea>
530      </part>
531   </software>
532
533   <software name="gazza2">
534      <!-- SPS (CAPS) release 3578 -->
535      <description>Gazza II</description>
536      <year>1990</year>
537      <publisher>Empire Software</publisher>
538
539      <part name="flop1" interface="floppy_3">
540         <dataarea name="flop" size="225096">
541            <rom name="3578 - gazza ii (europe).ipf" size="225096" crc="59a83634" sha1="c43b421f8b0c32858d6bc9668b3b60ef4704f756" offset="0" />
542         </dataarea>
543      </part>
544   </software>
545
546   <software name="ghouls">
547      <!-- SPS (CAPS) release 3512 -->
548      <description>Ghouls 'n' Ghosts</description>
549      <year>1989</year>
550      <publisher>U.S. Gold</publisher>
551
552      <part name="flop1" interface="floppy_3">
553         <dataarea name="flop" size="259471">
554            <rom name="ghouls'n'ghosts.ipf" size="259471" crc="5f056018" sha1="1d84d01a5d349843bcd4743bfb23c7a82ad9704c" offset="0" />
555         </dataarea>
556      </part>
557   </software>
558
559   <software name="hate">
560      <!-- SPS (CAPS) release 3580 -->
561      <description>H.A.T.E. - Hostile All Terrain Encounter</description>
562      <year>1989</year>
563      <publisher>Gremlin Graphics Software</publisher>
564
565      <part name="flop1" interface="floppy_3">
566         <dataarea name="flop" size="266892">
567            <rom name="3580 - h.a.t.e. - hostile all terrain encounter (europe).ipf" size="266892" crc="2aa400b2" sha1="3d847b6f91d0264900e6f2d28bb30574806613ae" offset="0" />
568         </dataarea>
569      </part>
570   </software>
571
572   <software name="hkm">
573      <!-- SPS (CAPS) release 3581 -->
574      <description>H.K.M. - Human Killing Machine</description>
575      <year>1988</year>
576      <publisher>U.S. Gold</publisher>
577
578      <part name="flop1" interface="floppy_3">
579         <dataarea name="flop" size="266892">
580            <rom name="3581 - h.k.m. - human killing machine (europe).ipf" size="266892" crc="2793e98f" sha1="ef4b8fcfb530a6b1edcc8820a3fdc00dbc79ec9d" offset="0" />
581         </dataarea>
582      </part>
583   </software>
584
585   <software name="herolanc">
586      <!-- SPS (CAPS) release 3513 -->
587      <description>Heroes of the Lance</description>
588      <year>1988</year>
589      <publisher>U.S. Gold</publisher>
590
591      <part name="flop1" interface="floppy_3">
592         <dataarea name="flop" size="237465">
593            <rom name="3513 - heroes of the lance (europe).ipf" size="237465" crc="d25d5414" sha1="2caf612f85dc9b790102df5f6a76d90c3408c8db" offset="0" />
594         </dataarea>
595      </part>
596   </software>
597
598   <software name="heroqst">
599      <!-- SPS (CAPS) release 3514 -->
600      <description>Hero Quest</description>
601      <year>1991</year>
602      <publisher>Gremlin Graphics Software</publisher>
603
604      <part name="flop1" interface="floppy_3">
605         <dataarea name="flop" size="239805">
606            <rom name="3514 - heroquest (europe).ipf" size="239805" crc="fc8bb800" sha1="96538aa2fd28b7ae66916590479b0596afcc495c" offset="0" />
607         </dataarea>
608      </part>
609   </software>
610
611   <software name="ironlord">
612      <!-- SPS (CAPS) release 3582 -->
613      <description>Iron Lord</description>
614      <year>1989</year>
615      <publisher>Ubi Soft</publisher>
616
617      <part name="flop1" interface="floppy_3">
618         <dataarea name="flop" size="259180">
619            <rom name="3582 - iron lord (europe).ipf" size="259180" crc="de0e3c7f" sha1="792d58267e8ca7e00b0946a78b7c6b0574ccc942" offset="0" />
620         </dataarea>
621      </part>
622   </software>
623
624   <software name="italia90">
625      <!-- SPS (CAPS) release 3548 -->
626      <description>Italia '90 - World Cup Soccer</description>
627      <year>1989</year>
628      <publisher>Virgin Games</publisher>
629
630      <part name="flop1" interface="floppy_3">
631         <dataarea name="flop" size="71100">
632            <rom name="3548 - italia '90 - world cup soccer (europe).ipf" size="71100" crc="78fa8fd0" sha1="ff5c8308544f24e428e877c3ea8c803f432468bb" offset="0" />
633         </dataarea>
634      </part>
635   </software>
636
637   <software name="offroad">
638      <!-- SPS (CAPS) release 3538 -->
639      <description>Ivan 'Ironman' Stewart's Super Off Road</description>
640      <year>1990</year>
641      <publisher>Virgin Games</publisher>
642
643      <part name="flop1" interface="floppy_3">
644         <dataarea name="flop" size="64845">
645            <rom name="3538 - ivan ironman stewart's super off road (unknown).ipf" size="64845" crc="38cb136b" sha1="5b633c7551b168d13d1c4d96637858fbcc027740" offset="0" />
646         </dataarea>
647      </part>
648   </software>
649
650   <software name="jackrip">
651      <!-- SPS (CAPS) release 3583 -->
652      <description>Jack the Ripper</description>
653      <year>1987</year>
654      <publisher>CRL Group</publisher>
655
656      <part name="flop1" interface="floppy_3">
657         <dataarea name="flop" size="236460">
658            <rom name="3583 - jack the ripper (europe).ipf" size="236460" crc="d2f3019f" sha1="30a0e536578ca62133666b2a710ceef505140215" offset="0" />
659         </dataarea>
660      </part>
661   </software>
662
663   <software name="dalglish">
664      <!-- SPS (CAPS) release 3515 -->
665      <description>Kenny Dalglish Soccer Match</description>
666      <year>1990</year>
667      <publisher>Impressions</publisher>
668
669      <part name="flop1" interface="floppy_3">
670         <dataarea name="flop" size="234180">
671            <rom name="3515 - kenny dalglish soccer match (europe).ipf" size="234180" crc="faeb7b0f" sha1="263e1fcb8bb77632cd83ab1dd2ce8d960bed9270" offset="0" />
672         </dataarea>
673      </part>
674   </software>
675
676   <software name="kickoff">
677      <!-- SPS (CAPS) release 3516 -->
678      <description>Kick Off</description>
679      <year>1989</year>
680      <publisher>Anco Software</publisher>
681
682      <part name="flop1" interface="floppy_3">
683         <dataarea name="flop" size="234180">
684            <rom name="3516 - kick off (europe).ipf" size="234180" crc="152e807b" sha1="855dc66c697484083c729d2183035dfb9166aacc" offset="0" />
685         </dataarea>
686      </part>
687   </software>
688
689   <software name="lmohican">
690      <!-- SPS (CAPS) release 3584 -->
691      <description>The Last Mohican</description>
692      <year>1987</year>
693      <publisher>CRL Group</publisher>
694
695      <part name="flop1" interface="floppy_3">
696         <dataarea name="flop" size="236460">
697            <rom name="3584 - last mohican, the (europe).ipf" size="236460" crc="ed3f624d" sha1="222b93b8e83987c8e5b83f4eb68dee8227bffc64" offset="0" />
698         </dataarea>
699      </part>
700   </software>
701
702   <software name="lightcor">
703      <!-- SPS (CAPS) release 3517 -->
704      <description>The Light Corridor</description>
705      <year>1991</year>
706      <publisher>Infogrames</publisher>
707
708      <part name="flop1" interface="floppy_3">
709         <dataarea name="flop" size="125316">
710            <rom name="3517 - light corridor, the (europe).ipf" size="125316" crc="ef3b80cd" sha1="568f29ba7d1a498432737543af07ba57c4adb26c" offset="0" />
711         </dataarea>
712      </part>
713   </software>
714
715   <software name="lmidnght">
716      <!-- SPS (CAPS) release 3518 -->
717      <description>Loads of Midnight</description>
718      <year>1987</year>
719      <publisher>CRL Group</publisher>
720
721      <part name="flop1" interface="floppy_3">
722         <dataarea name="flop" size="236460">
723            <rom name="3518 - loads of midnight (europe).ipf" size="236460" crc="a74f1114" sha1="2ab72f52fa499be8810f67e14aa477a114d37c29" offset="0" />
724         </dataarea>
725      </part>
726   </software>
727
728   <software name="lonewolf">
729      <!-- SPS (CAPS) release 3586 -->
730      <description>Lone Wolf - The Mirror of Death</description>
731      <year>1991</year>
732      <publisher>Aufiogenic Software</publisher>
733
734      <part name="flop1" interface="floppy_3">
735         <dataarea name="flop" size="236460">
736            <rom name="3586 - lone wolf - the mirror of death (europe).ipf" size="236460" crc="8943aba3" sha1="c6c810341c40a099858678ea63d701feca7d611f" offset="0" />
737         </dataarea>
738      </part>
739   </software>
740
741   <software name="lotus">
742      <!-- SPS (CAPS) release 3587 -->
743      <description>Lotus Esprit Turbo Challenge</description>
744      <year>1990</year>
745      <publisher>Gremlin Graphics Software</publisher>
746
747      <part name="flop1" interface="floppy_3">
748         <dataarea name="flop" size="239805">
749            <rom name="3587 - lotus esprit turbo challenge (europe).ipf" size="239805" crc="7c19c332" sha1="9756acef2e504b898894eef464c2496d60fbc862" offset="0" />
750         </dataarea>
751      </part>
752   </software>
753
754   <software name="mknitril">
755      <!-- SPS (CAPS) release 3629 -->
756      <description>Magic Knight Trilogy</description>
757      <year>1988</year>
758      <publisher>Mastertronic</publisher>
759      <info name="game" value="Finders Keepers + Spellbound + Knight Tyme" />
760
761      <part name="flop1" interface="floppy_3">
762         <dataarea name="flop" size="463740">
763            <rom name="3629 - magic knight trilogy - finders keepers + spellbound + knight tyme (europe).ipf" size="463740" crc="079c89bd" sha1="d90d4d25300795b8cc4ba383c680784b3050ef40" offset="0" />
764         </dataarea>
765      </part>
766   </software>
767
768   <software name="marauder">
769      <!-- SPS (CAPS) release 3519 -->
770      <description>Marauder</description>
771      <year>1988</year>
772      <publisher>Hewson Consultants</publisher>
773
774      <part name="flop1" interface="floppy_3">
775         <dataarea name="flop" size="237460">
776            <rom name="3519 - marauder (europe).ipf" size="237460" crc="2b61f4db" sha1="6896d9424b64b0ce2239485f28da9d49c7952e84" offset="0" />
777         </dataarea>
778      </part>
779   </software>
780
781   <software name="mask3">
782      <!-- SPS (CAPS) release 3588 -->
783      <description>Mask III - Venom Strikes Back</description>
784      <year>1988</year>
785      <publisher>Gremlin Graphics Software</publisher>
786
787      <part name="flop1" interface="floppy_3">
788         <dataarea name="flop" size="212085">
789            <rom name="3588 - mask iii - venom strikes back (europe).ipf" size="212085" crc="d36cea11" sha1="e4f73b8b32cf20802462997bc8f0adae38039e73" offset="0" />
790         </dataarea>
791      </part>
792   </software>
793
794   <software name="masters">
795      <!-- SPS (CAPS) release 3589 -->
796      <description>Masters of the Universe - The Movie</description>
797      <year>1987</year>
798      <publisher>U.S. Gold</publisher>
799
800      <part name="flop1" interface="floppy_3">
801         <dataarea name="flop" size="212085">
802            <rom name="3589 - masters of the universe - the movie (europe).ipf" size="212085" crc="dc32481a" sha1="66ebeed6e635b019f6cdea6c4b1a7f8305f5e7d3" offset="0" />
803         </dataarea>
804      </part>
805   </software>
806
807   <software name="megapocl">
808      <!-- SPS (CAPS) release 3590 -->
809      <description>MegaApocalypse</description>
810      <year>1988</year>
811      <publisher>Martech Games</publisher>
812
813      <part name="flop1" interface="floppy_3">
814         <dataarea name="flop" size="236460">
815            <rom name="3590 - mega-apocalypse (europe).ipf" size="236460" crc="802fa03e" sha1="0db41124887381927e87c9b294de53b5b0e0443d" offset="0" />
816         </dataarea>
817      </part>
818   </software>
819
820   <software name="mickey">
821      <!-- SPS (CAPS) release 3591 -->
822      <description>Mickey Mouse</description>
823      <year>1988</year>
824      <publisher>Gremlin Graphics Software</publisher>
825
826      <part name="flop1" interface="floppy_3">
827         <dataarea name="flop" size="212085">
828            <rom name="3591 - mickey mouse (europe).ipf" size="212085" crc="a788f7e3" sha1="9a89ba9da2a65acbe909e1be4ace922fb52ad28c" offset="0" />
829         </dataarea>
830      </part>
831   </software>
832
833   <software name="midres">
834      <!-- SPS (CAPS) release 3520 -->
835      <description>Midnight Resistance</description>
836      <year>1990</year>
837      <publisher>U.S. Gold</publisher>
838
839      <part name="flop1" interface="floppy_3">
840         <dataarea name="flop" size="146161">
841            <rom name="3520 - midnight resistance (europe).ipf" size="146161" crc="62943f46" sha1="369f6ed76e6b8c7d60949754b49f939d0747bd46" offset="0" />
842         </dataarea>
843      </part>
844   </software>
845
846   <software name="montypyt">
847      <!-- SPS (CAPS) release 3521 -->
848      <description>Monty Python's Flying Circus</description>
849      <year>1990</year>
850      <publisher>Virgin Games</publisher>
851
852      <part name="flop1" interface="floppy_3">
853         <dataarea name="flop" size="262692">
854            <rom name="3521 - monty python's flying circus (europe).ipf" size="262692" crc="8d7630b6" sha1="31495c6cf185cb00ff83eb3dc8f8b126118cf1b4" offset="0" />
855         </dataarea>
856      </part>
857   </software>
858
859   <software name="ninjawar">
860      <!-- SPS (CAPS) release 3522 -->
861      <description>The Ninja Warriors</description>
862      <year>1990</year>
863      <publisher>Virgin Games</publisher>
864
865      <part name="flop1" interface="floppy_3">
866         <dataarea name="flop" size="241110">
867            <rom name="3522 - ninja warriors, the (europe).ipf" size="241110" crc="4eb0abeb" sha1="e1ef8de2788953c9399515796ee1309ea33ccd3f" offset="0" />
868         </dataarea>
869      </part>
870   </software>
871
872   <software name="northstr">
873      <!-- SPS (CAPS) release 3592 -->
874      <description>North Star</description>
875      <year>1988</year>
876      <publisher>Gremlin Graphics Software</publisher>
877
878      <part name="flop1" interface="floppy_3">
879         <dataarea name="flop" size="212085">
880            <rom name="3592 - north star (europe).ipf" size="212085" crc="3c78a485" sha1="a8e47ac46b9d6396d422fee1ec91d753ccf66ec6" offset="0" />
881         </dataarea>
882      </part>
883   </software>
884
885   <software name="obliter">
886      <!-- SPS (CAPS) release 3593 -->
887      <description>Obliterator</description>
888      <year>1989</year>
889      <publisher>Melbourne House</publisher>
890
891      <part name="flop1" interface="floppy_3">
892         <dataarea name="flop" size="234180">
893            <rom name="3593 - obliterator (unknown).ipf" size="234180" crc="2ecaeee7" sha1="5e414ccba57f2fb0d384dac268b7f6f7b1fc48d8" offset="0" />
894         </dataarea>
895      </part>
896   </software>
897
898   <software name="p47thun">
899      <!-- SPS (CAPS) release 3594 -->
900      <description>P-47 Thunderbolt</description>
901      <year>1990</year>
902      <publisher>Firebird Software</publisher>
903
904      <part name="flop1" interface="floppy_3">
905         <dataarea name="flop" size="236460">
906            <rom name="3594 - p-47 thunderbolt (europe).ipf" size="236460" crc="5e7c8a54" sha1="077718f2e94cef68e57114249e869d6cb897a616" offset="0" />
907         </dataarea>
908      </part>
909   </software>
910
911   <software name="phmpegas">
912      <!-- SPS (CAPS) release 3596 -->
913      <description>P.H.M. Pegasus</description>
914      <year>1988</year>
915      <publisher>Electronic Arts</publisher>
916      <info name="alt_title" value="P.H.M. Pegasus - Patrol Hydrofoil Missile Craft Simulation (Box)" />
917
918      <part name="flop1" interface="floppy_3">
919         <dataarea name="flop" size="238800">
920            <rom name="3596 - phm pegasus - patrol hydrofoil missile craft simulation (europe).ipf" size="238800" crc="ef9157eb" sha1="ae18a271c03fee31a70fa55b80ad4b991fab156e" offset="0" />
921         </dataarea>
922      </part>
923   </software>
924
925   <software name="pacland">
926      <!-- SPS (CAPS) release 3595 -->
927      <description>Pac-Land</description>
928      <year>1989</year>
929      <publisher>Grandslam Entertainments </publisher>
930
931      <part name="flop1" interface="floppy_3">
932         <dataarea name="flop" size="114805">
933            <rom name="3595 - pac-land (europe).ipf" size="114805" crc="93e4fc20" sha1="58a070edfbc9d28e9a1a25674867433e7e22e214" offset="0" />
934         </dataarea>
935      </part>
936   </software>
937
938   <software name="pang">
939      <!-- SPS (CAPS) release 3523 -->
940      <description>Pang</description>
941      <year>1990</year>
942      <publisher>Ocean Software</publisher>
943
944      <part name="flop1" interface="floppy_3">
945         <dataarea name="flop" size="196735">
946            <rom name="3523 - pang (europe).ipf" size="196735" crc="604502ad" sha1="a7f22304e0deae1a25f23ea7f73570dbcfe2bbd5" offset="0" />
947         </dataarea>
948      </part>
949   </software>
950
951   <software name="passsht">
952      <!-- SPS (CAPS) release 3524 -->
953      <description>Passing Shot</description>
954      <year>1989</year>
955      <publisher>Image Works</publisher>
956
957      <part name="flop1" interface="floppy_3">
958         <dataarea name="flop" size="77364">
959            <rom name="3524 - passing shot (europe).ipf" size="77364" crc="f987b804" sha1="d5537ad6d7670725396d63022fe4fa3a4c3b6aa7" offset="0" />
960         </dataarea>
961      </part>
962   </software>
963
964   <software name="pawn">
965      <!-- SPS (CAPS) release 3525 -->
966      <description>The Pawn</description>
967      <year>1987</year>
968      <publisher>Rainbird Software</publisher>
969
970      <part name="flop1" interface="floppy_3">
971         <dataarea name="flop" size="236460">
972            <rom name="3525 - pawn, the (europe).ipf" size="236460" crc="468012a2" sha1="1402a94935992789fdbffa1aa07140d56eeba435" offset="0" />
973         </dataarea>
974      </part>
975   </software>
976
977   <software name="pipmania">
978      <!-- SPS (CAPS) release 3597 -->
979      <description>Pipe Mania</description>
980      <year>1990</year>
981      <publisher>Empire Software</publisher>
982
983      <part name="flop1" interface="floppy_3">
984         <dataarea name="flop" size="234180">
985            <rom name="3597 - pipe mania (europe).ipf" size="234180" crc="c42e0870" sha1="70623591fbef78e5562ac88418ad61df1ba9a811" offset="0" />
986         </dataarea>
987      </part>
988   </software>
989
990   <software name="pirate33">
991      <!-- SPS (CAPS) release 3598 -->
992      <description>Pirate 3 +3</description>
993      <year>1987</year>
994      <publisher>Pirate Software</publisher>
995      <info name="games" value="Holiday in Sumaria + Call Me Psycho + Smash Out!" />
996
997      <part name="flop1" interface="floppy_3">
998         <dataarea name="flop" size="236460">
999            <rom name="3598 - pirate 3+3 - holiday in sumaria + call me psycho + smash out! (europe).ipf" size="236460" crc="95e093a6" sha1="c6bb5c0c3fd92c8d666b3493ca8fdc55a8f1d35d" offset="0" />
1000         </dataarea>
1001      </part>
1002   </software>
1003
1004   <software name="platoon">
1005      <!-- SPS (CAPS) release 3526 -->
1006      <description>Platoon</description>
1007      <year>1988</year>
1008      <publisher>U.S. Gold</publisher>
1009
1010      <part name="flop1" interface="floppy_3">
1011         <dataarea name="flop" size="159198">
1012            <rom name="3526 - platoon (europe).ipf" size="159198" crc="56fe10dc" sha1="d844dabecb043d8c16bd8864b7146de456cda369" offset="0" />
1013         </dataarea>
1014      </part>
1015   </software>
1016
1017   <software name="predatr2">
1018      <!-- SPS (CAPS) release 3527 -->
1019      <description>Predator 2</description>
1020      <year>1991</year>
1021      <publisher>Image Works</publisher>
1022
1023      <part name="flop1" interface="floppy_3">
1024         <dataarea name="flop" size="234180">
1025            <rom name="3527 - predator 2 (europe).ipf" size="234180" crc="2cdff17b" sha1="c691b6cca52aced2790f7e99f27cc6b3e8040c4e" offset="0" />
1026         </dataarea>
1027      </part>
1028   </software>
1029
1030   <software name="protennt">
1031      <!-- SPS (CAPS) release 3599 -->
1032      <description>Pro Tennis Tour</description>
1033      <year>1990</year>
1034      <publisher>Ubi Soft</publisher>
1035
1036      <part name="flop1" interface="floppy_3">
1037         <dataarea name="flop" size="236460">
1038            <rom name="3599 - pro tennis tour (europe).ipf" size="236460" crc="e1e4448b" sha1="b8abc334bf1604934e293c133fdbe3946e744975" offset="0" />
1039         </dataarea>
1040      </part>
1041   </software>
1042
1043   <software name="qoscrup">
1044      <!-- SPS (CAPS) release 3529 -->
1045      <description>A Question of Scruples - The Computer Edition</description>
1046      <year>1987</year>
1047      <publisher>Leisure Genius</publisher>
1048
1049      <part name="flop1" interface="floppy_3">
1050         <dataarea name="flop" size="236460">
1051            <rom name="3529 - question of scruples, a - the computer edition (europe).ipf" size="236460" crc="34d8887c" sha1="2e402eb208ce6695930a8d7e042c4b1f0f7e6944" offset="0" />
1052         </dataarea>
1053      </part>
1054   </software>
1055
1056   <software name="qos">
1057      <!-- SPS (CAPS) release 3601 -->
1058      <description>A Question of Sport</description>
1059      <year>1989</year>
1060      <publisher>Elite Systems</publisher>
1061
1062      <part name="flop1" interface="floppy_3">
1063         <dataarea name="flop" size="236460">
1064            <rom name="3601 - question of sport, a (europe).ipf" size="236460" crc="8402bbeb" sha1="0f47e7c7326ad484f2222579c6395e29031a0115" offset="0" />
1065         </dataarea>
1066      </part>
1067   </software>
1068
1069   <software name="rbibb2">
1070      <!-- SPS (CAPS) release 3602 -->
1071      <description>R.B.I. Baseball 2</description>
1072      <year>1991</year>
1073      <publisher>Domark</publisher>
1074
1075      <part name="flop1" interface="floppy_3">
1076         <dataarea name="flop" size="234180">
1077            <rom name="3602 - r.b.i. baseball two (europe).ipf" size="234180" crc="87c57f24" sha1="5558cfb938091ab469bbec5a3323d69a73186bfd" offset="0" />
1078         </dataarea>
1079      </part>
1080   </software>
1081
1082   <software name="rbisland">
1083      <!-- SPS (CAPS) release 3600 -->
1084      <description>Rainbow Islands</description>
1085      <year>1990</year>
1086      <publisher>Ocean Software</publisher>
1087
1088      <part name="flop1" interface="floppy_3">
1089         <dataarea name="flop" size="211680">
1090            <rom name="3600 - rainbow islands (europe).ipf" size="211680" crc="d7db38ed" sha1="acfc70b4ecb3a4493321541a86585aaf85aed12c" offset="0" />
1091         </dataarea>
1092      </part>
1093   </software>
1094
1095   <software name="renegade">
1096      <!-- SPS (CAPS) release 3603 -->
1097      <description>Renegade</description>
1098      <year>1987</year>
1099      <publisher>Imagine Software</publisher>
1100
1101      <part name="flop1" interface="floppy_3">
1102         <dataarea name="flop" size="236460">
1103            <rom name="3603 - renegade (europe).ipf" size="236460" crc="84a1fc8e" sha1="bcf794a5ab09f3febd58e26a4e4fa31f5e1941f9" offset="0" />
1104         </dataarea>
1105      </part>
1106   </software>
1107
1108   <software name="rex">
1109      <!-- SPS (CAPS) release 3605 -->
1110      <description>Rex</description>
1111      <year>1988</year>
1112      <publisher>Martech Games</publisher>
1113
1114      <part name="flop1" interface="floppy_3">
1115         <dataarea name="flop" size="236460">
1116            <rom name="3605 - rex (europe).ipf" size="236460" crc="ee04c2c3" sha1="8bd98191db385647c808453ec50813dd93d72b0c" offset="0" />
1117         </dataarea>
1118      </part>
1119   </software>
1120
1121   <software name="roadblst">
1122      <!-- SPS (CAPS) release 3606 -->
1123      <description>Road Blasters</description>
1124      <year>1988</year>
1125      <publisher>U.S. Gold</publisher>
1126
1127      <part name="flop1" interface="floppy_3">
1128         <dataarea name="flop" size="238800">
1129            <rom name="3606 - road blasters (europe).ipf" size="238800" crc="95160028" sha1="f0359902f4687a30aa98a2b11e1eee1e170daa15" offset="0" />
1130         </dataarea>
1131      </part>
1132   </software>
1133
1134   <software name="robocop2">
1135      <!-- SPS (CAPS) release 3528 -->
1136      <description>Robocop 2</description>
1137      <year>1988</year>
1138      <publisher>Ocean Software</publisher>
1139
1140      <part name="flop1" interface="floppy_3">
1141         <dataarea name="flop" size="139905">
1142            <rom name="3528 - robocop 2 (europe).ipf" size="139905" crc="dcedfec7" sha1="80535591f4d93e2df41481df64673571d93b1809" offset="0" />
1143         </dataarea>
1144      </part>
1145   </software>
1146
1147   <software name="rthunder">
1148      <!-- SPS (CAPS) release 3608 -->
1149      <description>Rolling Thunder</description>
1150      <year>1988</year>
1151      <publisher>U.S. Gold</publisher>
1152
1153      <part name="flop1" interface="floppy_3">
1154         <dataarea name="flop" size="237460">
1155            <rom name="3608 - rolling thunder (europe).ipf" size="237460" crc="ddd2f964" sha1="5a910fc46cef7b545bb817128048de41357e6991" offset="0" />
1156         </dataarea>
1157      </part>
1158   </software>
1159
1160   <software name="rungaunt">
1161      <!-- SPS (CAPS) release 3609 -->
1162      <description>Run the Gauntlet</description>
1163      <year>1989</year>
1164      <publisher>Ocean Software</publisher>
1165
1166      <part name="flop1" interface="floppy_3">
1167         <dataarea name="flop" size="212085">
1168            <rom name="3609 - run the gauntlet (europe).ipf" size="212085" crc="e1a23873" sha1="191d4c4f0beef6e4fd4cd47edda058092e2374a5" offset="0" />
1169         </dataarea>
1170      </part>
1171   </software>
1172
1173   <software name="saintgrv">
1174      <!-- SPS (CAPS) release 3610 -->
1175      <description>Saint &amp; Greavsie</description>
1176      <year>1989</year>
1177      <publisher>Grandslam Entertainments</publisher>
1178
1179      <part name="flop1" interface="floppy_3">
1180         <dataarea name="flop" size="267142">
1181            <rom name="3610 - saint and greavsie (europe).ipf" size="267142" crc="8e3df69a" sha1="671ed674a6f05d0db8e3e437de87ee2298a43769" offset="0" />
1182         </dataarea>
1183      </part>
1184   </software>
1185
1186   <software name="scrabdx">
1187      <!-- SPS (CAPS) release 3611 -->
1188      <description>Scrabble Deluxe</description>
1189      <year>1987</year>
1190      <publisher>Leisure Genius</publisher>
1191
1192      <part name="flop1" interface="floppy_3">
1193         <dataarea name="flop" size="233852">
1194            <rom name="3611 - scrabble deluxe (europe).ipf" size="233852" crc="fd27626b" sha1="06f09b5a89ddd32fff07eb5aeae40bad96d8275e" offset="0" />
1195         </dataarea>
1196      </part>
1197   </software>
1198
1199   <software name="shootdsk">
1200      <!-- SPS (CAPS) release 3612 -->
1201      <description>Shootacular Disk 2</description>
1202      <year>1988</year>
1203      <publisher>Alternative Software</publisher>
1204      <info name="game" value="Combat Zone, Firestorm, Dead or Alive" />
1205
1206      <part name="flop1" interface="floppy_3">
1207         <dataarea name="flop" size="234180">
1208            <rom name="3612 - shootacular disk 2 - combat zone + firestorm + dead or alive (europe).ipf" size="234180" crc="9fbe4d56" sha1="ce4ae2c4e57f68da942249b204ec28a23ae1760c" offset="0" />
1209         </dataarea>
1210      </part>
1211   </software>
1212
1213   <software name="simcity">
1214      <!-- SPS (CAPS) release 3530 -->
1215      <description>Sim City</description>
1216      <year>1990</year>
1217      <publisher>Infogrames</publisher>
1218
1219      <part name="flop1" interface="floppy_3">
1220         <dataarea name="flop" size="12e901e">
1221            <rom name="3530 - sim city (europe).ipf" size="126717" crc="12e901ee" sha1="7fd665f19a290994dfbf8ba02da19ac1905581be" offset="0" />
1222         </dataarea>
1223      </part>
1224   </software>
1225
1226   <software name="skatball">
1227      <!-- SPS (CAPS) release 3613 -->
1228      <description>Skateball</description>
1229      <year>1988</year>
1230      <publisher>Ubi Soft</publisher>
1231
1232      <part name="flop1" interface="floppy_3">
1233         <dataarea name="flop" size="236460">
1234            <rom name="3613 - skateball (europe).ipf" size="236460" crc="00cb42ee" sha1="f3a0c02215f9ea679bcb338b9f5a9d7cc61ab235" offset="0" />
1235         </dataarea>
1236      </part>
1237   </software>
1238
1239   <software name="skullxbo">
1240      <!-- SPS (CAPS) release 3614 -->
1241      <description>Skull &amp; Crossbones</description>
1242      <year>1991</year>
1243      <publisher>Domark</publisher>
1244
1245      <part name="flop1" interface="floppy_3">
1246         <dataarea name="flop" size="271685">
1247            <rom name="3614 - skull &amp; crossbones (europe).ipf" size="271685" crc="a6c33f24" sha1="91c9b414d4ac1bd44657dd68d4ef2c8d911b45db" offset="0" />
1248         </dataarea>
1249      </part>
1250   </software>
1251
1252   <software name="snoopy">
1253      <!-- SPS (CAPS) release 3531 -->
1254      <description>Snoopy - The Cool Computer Game</description>
1255      <year>1991</year>
1256      <publisher>The Edge</publisher>
1257
1258      <part name="flop1" interface="floppy_3">
1259         <dataarea name="flop" size="195328">
1260            <rom name="3531 - snoopy - the cool computer game (europe).ipf" size="236460" crc="acdfe6d4" sha1="4ab0bd91d893964d957bf8c7ab3fa79d534220dc" offset="0" />
1261         </dataarea>
1262      </part>
1263   </software>
1264
1265   <software name="soldlght">
1266      <!-- SPS (CAPS) release 3532 -->
1267      <description>Soldier of Light</description>
1268      <year>1988</year>
1269      <publisher>ACE Software</publisher>
1270
1271      <part name="flop1" interface="floppy_3">
1272         <dataarea name="flop" size="236460">
1273            <rom name="3532 - soldier of light (europe).ipf" size="236460" crc="bffdd16e" sha1="948cf81086d9093da6cd08be61f60d46caf4e933" offset="0" />
1274         </dataarea>
1275      </part>
1276   </software>
1277
1278   <software name="spacecrs">
1279      <!-- SPS (CAPS) release 3533 -->
1280      <description>Space Crusade</description>
1281      <year>1992</year>
1282      <publisher>Gremlin Graphics Software</publisher>
1283
1284      <part name="flop1" interface="floppy_3">
1285         <dataarea name="flop" size="239805">
1286            <rom name="3533 - space crusade (europe).ipf" size="239805" crc="9c96fd7b" sha1="a1e5864217fe7f5617d21e005f53752af0238f92" offset="0" />
1287         </dataarea>
1288      </part>
1289   </software>
1290
1291   <software name="sportdsk">
1292      <!-- SPS (CAPS) release 3534 -->
1293      <description>Sportacular Disk 1</description>
1294      <year>1988</year>
1295      <publisher>Alternative Software</publisher>
1296      <info name="games" value="Soccer Boss, Olympic Spectacular, Indoor Soccer" />
1297
1298      <part name="flop1" interface="floppy_3">
1299         <dataarea name="flop" size="234180">
1300            <rom name="3534 - sportacular disk 1 - soccer boss + olympic spectacular + indoor soccer (europe).ipf" size="234180" crc="6945a61b" sha1="bf3f411cbb998a0af1274154f1761e753eb6a92f" offset="0" />
1301         </dataarea>
1302      </part>
1303   </software>
1304
1305   <software name="spywholm">
1306      <!-- SPS (CAPS) release 3615 -->
1307      <description>The Spy Who Loved Me</description>
1308      <year>1990</year>
1309      <publisher>Domark</publisher>
1310
1311      <part name="flop1" interface="floppy_3">
1312         <dataarea name="flop" size="234180">
1313            <rom name="3615 - spy who loved me, the (europe).ipf" size="234180" crc="6d638747" sha1="30763ad2f43935d7b63fdec20e62858357742b77" offset="0" />
1314         </dataarea>
1315      </part>
1316   </software>
1317
1318   <software name="stalingr">
1319      <!-- SPS (CAPS) release 3535 -->
1320      <description>Stalingrad</description>
1321      <year>1988</year>
1322      <publisher>CCS</publisher>
1323
1324      <part name="flop1" interface="floppy_3">
1325         <dataarea name="flop" size="236460">
1326            <rom name="3535 - stalingrad (europe).ipf" size="236460" crc="cb347afc" sha1="cb584de6c08d12788e8ef8c2b5e74e06ffbb2c12" offset="0" />
1327         </dataarea>
1328      </part>
1329   </software>
1330
1331   <software name="starwars">
1332      <!-- SPS (CAPS) release 3617 -->
1333      <description>Star Wars</description>
1334      <year>1987</year>
1335      <publisher>Domark</publisher>
1336
1337      <part name="flop1" interface="floppy_3">
1338         <dataarea name="flop" size="236460">
1339            <rom name="3617 - star wars (europe).ipf" size="236460" crc="f7406cf3" sha1="892d00becdc045a5289c4ae172291486e3107c76" offset="0" />
1340         </dataarea>
1341      </part>
1342   </software>
1343
1344   <software name="jedi">
1345      <!-- SPS (CAPS) release 3604 -->
1346      <description>Star Wars - Return of the Jedi</description>
1347      <year>1989</year>
1348      <publisher>Domark</publisher>
1349
1350      <part name="flop1" interface="floppy_3">
1351         <dataarea name="flop" size="236460">
1352            <rom name="3604 - star wars - return of the jedi (europe).ipf" size="236460" crc="6f6134a2" sha1="7f04c19c145dc216736d8daadba0641277170d4c" offset="0" />
1353         </dataarea>
1354      </part>
1355   </software>
1356
1357   <software name="starglid">
1358      <!-- SPS (CAPS) release 3536 -->
1359      <description>Starglider</description>
1360      <year>1986</year>
1361      <publisher>Rainbird Software</publisher>
1362
1363      <part name="flop1" interface="floppy_3">
1364         <dataarea name="flop" size="236460">
1365            <rom name="3536 - starglider (europe).ipf" size="236460" crc="8bfbfec7" sha1="68b7e4ba0c50cb750926623f513d436a00f73581" offset="0" />
1366         </dataarea>
1367      </part>
1368   </software>
1369
1370   <software name="cchaplin">
1371      <!-- SPS (CAPS) release 3616 -->
1372      <description>Starring Charlie Chaplin</description>
1373      <year>1987</year>
1374      <publisher>U.S. Gold</publisher>
1375
1376      <part name="flop1" interface="floppy_3">
1377         <dataarea name="flop" size="237460">
1378            <rom name="3616 - starring charlie chaplin (europe).ipf" size="237460" crc="93bc0467" sha1="02bc05b02a6880deb03db12e658f65d9b46f9a6f" offset="0" />
1379         </dataarea>
1380      </part>
1381   </software>
1382
1383   <software name="subbuteo">
1384      <!-- SPS (CAPS) release 3618 -->
1385      <description>Subbuteo - The Computer Game</description>
1386      <year>1990</year>
1387      <publisher>Electronic Zoo</publisher>
1388
1389      <part name="flop1" interface="floppy_3">
1390         <dataarea name="flop" size="236460">
1391            <rom name="3618 - subbuteo - the computer game (europe).ipf" size="236460" crc="2bc39232" sha1="b4933dd0e5420e1f8c977192cef1dc09dcc0ec81" offset="0" />
1392         </dataarea>
1393      </part>
1394   </software>
1395
1396   <software name="sunxword">
1397      <!-- SPS (CAPS) release 3619 -->
1398      <description>The Sun Computer Crosswords Volume 1</description>
1399      <year>1988</year>
1400      <publisher>Akom</publisher>
1401
1402      <part name="flop1" interface="floppy_3">
1403         <dataarea name="flop" size="236460">
1404            <rom name="3619 - sun computer crosswords volume 1, the (europe).ipf" size="236460" crc="e87a9910" sha1="5c3c7cc4c1d3ae851a1631bfb5a25ec324b33783" offset="0" />
1405         </dataarea>
1406      </part>
1407   </software>
1408
1409   <software name="supercar">
1410      <!-- SPS (CAPS) release 3537 -->
1411      <description>Super Cars</description>
1412      <year>1990</year>
1413      <publisher>Gremlin Graphics Software</publisher>
1414
1415      <part name="flop1" interface="floppy_3">
1416         <dataarea name="flop" size="212085">
1417            <rom name="3537 - super cars (europe).ipf" size="212085" crc="20a43fbb" sha1="de410ab9d0fc172e58d523f4e22088694306f407" offset="0" />
1418         </dataarea>
1419      </part>
1420   </software>
1421
1422   <software name="suprcycl">
1423      <!-- SPS (CAPS) release 3620 -->
1424      <description>Super Cycle</description>
1425      <year>1987</year>
1426      <publisher>U.S. Gold</publisher>
1427
1428      <part name="flop1" interface="floppy_3">
1429         <dataarea name="flop" size="237460">
1430            <rom name="3620 - super cycle (europe).ipf" size="237460" crc="4349a0e1" sha1="297c1aedb313a8344f9e7489f7d282e1260506c6" offset="0" />
1431         </dataarea>
1432      </part>
1433   </software>
1434
1435   <software name="ssinv">
1436      <!-- SPS (CAPS) release 3539 -->
1437      <description>Super Space Invaders</description>
1438      <year>1991</year>
1439      <publisher>Domark</publisher>
1440
1441      <part name="flop1" interface="floppy_3">
1442         <dataarea name="flop" size="234180">
1443            <rom name="3539 - super space invaders (europe).ipf" size="234180" crc="3f3b3a3e" sha1="eeed9c991f06819e3a1aed01d42cd0ec364fac6c" offset="0" />
1444         </dataarea>
1445      </part>
1446   </software>
1447
1448   <software name="taipan">
1449      <!-- SPS (CAPS) release 3621 -->
1450      <description>Tai-pan</description>
1451      <year>1987</year>
1452      <publisher>Ocean Software</publisher>
1453
1454      <part name="flop1" interface="floppy_3">
1455         <dataarea name="flop" size="236460">
1456            <rom name="3621 - tai-pan (europe).ipf" size="236460" crc="aef0bdf1" sha1="467dfa30fa1a1f7278b83d27bd9a1a1a9bfa0bdd" offset="0" />
1457         </dataarea>
1458      </part>
1459   </software>
1460
1461   <software name="tmht">
1462      <!-- SPS (CAPS) release 3540 -->
1463      <description>Teenage Mutant Hero Turtles</description>
1464      <year>1990</year>
1465      <publisher>Image Works</publisher>
1466
1467      <part name="flop1" interface="floppy_3">
1468         <dataarea name="flop" size="234180">
1469            <rom name="3540 - teenage mutant hero turtles (europe).ipf" size="234180" crc="5cba9f99" sha1="920b8203c466a578d73aef39e0b54931e42b359d" offset="0" />
1470         </dataarea>
1471      </part>
1472   </software>
1473
1474   <software name="tmht3" cloneof="tmht">
1475      <!-- SPS (CAPS) release 3541 -->
1476      <description>Teenage Mutant Hero Turtles (3&quot;)</description>
1477      <year>1990</year>
1478      <publisher>Image Works</publisher>
1479
1480      <part name="flop1" interface="floppy_3">
1481         <dataarea name="flop" size="236460">
1482            <rom name="3541 - teenage mutant hero turtles (europe) (three inch).ipf" size="236460" crc="1125e88f" sha1="ee807ed179cb748403f94d7aa4b6e7ae8a9b033b" offset="0" />
1483         </dataarea>
1484      </part>
1485   </software>
1486
1487   <software name="term2">
1488      <!-- SPS (CAPS) release 3622 -->
1489      <description>Terminator 2 - Judgment Day</description>
1490      <year>1991</year>
1491      <publisher>Ocean Software</publisher>
1492
1493      <part name="flop1" interface="floppy_3">
1494         <dataarea name="flop" size="259185">
1495            <rom name="3622 - terminator 2 - judgment day (europe).ipf" size="259185" crc="da207f08" sha1="04ae9ac360b9fbe23c76a4d380cde9ca9903b0e9" offset="0" />
1496         </dataarea>
1497      </part>
1498   </software>
1499
1500   <software name="tblade">
1501      <!-- SPS (CAPS) release 3623 -->
1502      <description>Thunder Blade</description>
1503      <year>1988</year>
1504      <publisher>U.S. Gold</publisher>
1505
1506      <part name="flop1" interface="floppy_3">
1507         <dataarea name="flop" size="237460">
1508            <rom name="3623 - thunder blade (europe).ipf" size="237460" crc="c83cc174" sha1="eba2cc3c53a1634e48098a431f73dee3169c78d3" offset="0" />
1509         </dataarea>
1510      </part>
1511   </software>
1512
1513   <software name="thdrcats">
1514      <!-- SPS (CAPS) release 3624 -->
1515      <description>Thundercats</description>
1516      <year>1987</year>
1517      <publisher>Elite Systems</publisher>
1518
1519      <part name="flop1" interface="floppy_3">
1520         <dataarea name="flop" size="234180">
1521            <rom name="3624 - thundercats (europe).ipf" size="234180" crc="459999a2" sha1="af7f670ffaf05bc36bb7997849d446770ed7a4b3" offset="0" />
1522         </dataarea>
1523      </part>
1524   </software>
1525
1526   <software name="totrecal">
1527      <!-- SPS (CAPS) release 3542 -->
1528      <description>Total Recall</description>
1529      <year>1991</year>
1530      <publisher>Ocean Software</publisher>
1531
1532      <part name="flop1" interface="floppy_3">
1533         <dataarea name="flop" size="184315">
1534            <rom name="3543 - total recall (europe).ipf" size="184315" crc="9e5325a8" sha1="1748281e2a811580c3af086e59e9d5302c2c766b" offset="0" />
1535         </dataarea>
1536      </part>
1537   </software>
1538
1539   <software name="totrecalgh" cloneof="totrecal">
1540      <!-- SPS (CAPS) release 3543 -->
1541      <description>Total Recall (Guild Home Video Advert)</description>
1542      <year>1991</year>
1543      <publisher>Ocean Software</publisher>
1544
1545      <part name="flop1" interface="floppy_3">
1546         <dataarea name="flop" size="184315">
1547            <rom name="3542 - total recall (europe) (guild home video advert).ipf" size="184315" crc="48eb67ce" sha1="66005b0a98851cdd784798a94e25b3eee8e3007f" offset="0" />
1548         </dataarea>
1549      </part>
1550   </software>
1551
1552   <software name="brooking">
1553      <!-- SPS (CAPS) release 3544 -->
1554      <description>Trevor Brooking's World Cup Glory</description>
1555      <year>1990</year>
1556      <publisher>Challenge Software</publisher>
1557
1558      <part name="flop1" interface="floppy_3">
1559         <dataarea name="flop" size="234180">
1560            <rom name="3544 - trevor brooking's world cup glory (europe).ipf" size="234180" crc="98358646" sha1="4ddc2a1dfb6e0c6c1e9d209f74d62dba6182f5e8" offset="0" />
1561         </dataarea>
1562      </part>
1563   </software>
1564
1565   <software name="vigilant">
1566      <!-- SPS (CAPS) release 3626 -->
1567      <description>Vigilante</description>
1568      <year>1989</year>
1569      <publisher>U.S. Gold</publisher>
1570
1571      <part name="flop1" interface="floppy_3">
1572         <dataarea name="flop" size="266892">
1573            <rom name="3626 - vigilante (europe).ipf" size="266892" crc="4df85c44" sha1="0f13d51918c0df0a07ef13e22b23f49c17007219" offset="0" />
1574         </dataarea>
1575      </part>
1576   </software>
1577
1578   <software name="vixen">
1579      <!-- SPS (CAPS) release 3545 -->
1580      <description>Vixen</description>
1581      <year>1988</year>
1582      <publisher>Martech Games</publisher>
1583
1584      <part name="flop1" interface="floppy_3">
1585         <dataarea name="flop" size="236460">
1586            <rom name="3545 - vixen (europe).ipf" size="236460" crc="2ebf7637" sha1="8435d9b04b7fe9bcd04679022aa01c85461c3f75" offset="0" />
1587         </dataarea>
1588      </part>
1589   </software>
1590
1591   <software name="warmidle">
1592      <!-- SPS (CAPS) release 3546 -->
1593      <description>War in Middle Earth</description>
1594      <year>1989</year>
1595      <publisher>Krome Studios Melbourne</publisher>
1596      <info name="alt_title" value="J.R.R. Tolkien's War in Middle Earth (Box)" />
1597
1598      <part name="flop1" interface="floppy_3">
1599         <dataarea name="flop" size="234180">
1600            <rom name="3546 - j.r.r. tolkien's war in middle earth (europe).ipf" size="234180" crc="f66db1bb" sha1="e3b62c9c01a49068a6f57abbdea93dd6013b6858" offset="0" />
1601         </dataarea>
1602      </part>
1603   </software>
1604
1605   <software name="welltris">
1606      <!-- SPS (CAPS) release 3547 -->
1607      <description>Welltris</description>
1608      <year>1991</year>
1609      <publisher>Infogrames</publisher>
1610
1611      <part name="flop1" interface="floppy_3">
1612         <dataarea name="flop" size="236460">
1613            <rom name="3547 - welltris (europe).ipf" size="236460" crc="18f7df7f" sha1="626b5fbef66aee9fab753eaf4ff95d844ae49efa" offset="0" />
1614         </dataarea>
1615      </part>
1616   </software>
1617
1618   <software name="wcboxman">
1619      <!-- SPS (CAPS) release 3627 -->
1620      <description>World Championship Boxing Manager</description>
1621      <year>1990</year>
1622      <publisher>Goliath Games</publisher>
1623
1624      <part name="flop1" interface="floppy_3">
1625         <dataarea name="flop" size="234180">
1626            <rom name="3627 - world championship boxing manager (europe).ipf" size="234180" crc="20b95f60" sha1="ac43afcf09a27828b503328f236ce40c1842c2a8" offset="0" />
1627         </dataarea>
1628      </part>
1629   </software>
1630
1631   <software name="xout">
1632      <!-- SPS (CAPS) release 3550 -->
1633      <description>X-Out</description>
1634      <year>1990</year>
1635      <publisher>Rainbow Arts</publisher>
1636
1637      <part name="flop1" interface="floppy_3">
1638         <dataarea name="flop" size="259471">
1639            <rom name="3550 - x-out (europe).ipf" size="259471" crc="12540648" sha1="4f3650e4739c1eca40d56360b16fd7460d37ac75" offset="0" />
1640         </dataarea>
1641      </part>
1642   </software>
1643
1644   <software name="xenon">
1645      <!-- SPS (CAPS) release 3549 -->
1646      <description>Xenon</description>
1647      <year>1988</year>
1648      <publisher>Melbourne House</publisher>
1649
1650      <part name="flop1" interface="floppy_3">
1651         <dataarea name="flop" size="234180">
1652            <rom name="3549 - xenon (europe).ipf" size="234180" crc="01daebfa" sha1="5ae00774d2da999b95b29142d11a01311b2cf07c" offset="0" />
1653         </dataarea>
1654      </part>
1655   </software>
1656
1657   <software name="xybots">
1658      <!-- SPS (CAPS) release 3628 -->
1659      <description>Xybots</description>
1660      <year>1989</year>
1661      <publisher>Domark</publisher>
1662
1663      <part name="flop1" interface="floppy_3">
1664         <dataarea name="flop" size="209805">
1665            <rom name="3628 - xybots (europe).ipf" size="209805" crc="51a0d849" sha1="86461e526a4cf5c7731f1e1067433ca9c8d57dec" offset="0" />
1666         </dataarea>
1667      </part>
1668   </software>
1669
1670
1671   <!-- Other images -->
1672
1673   <software name="pacmania" >
1674      <description>Pac-Mania (Euro, Aus)</description>
1675      <year>1988</year>
1676      <publisher>Grandslam Entertainments</publisher>
1677      <part name="flop1" interface="floppy_3">
1678         <dataarea name="flop" size="195328">
1679            <rom name="pac-mania.dsk" size="195328" crc="88f5506b" sha1="827c95935dd3a1dd919989fc6d7a0efa4e5aebc1" offset="0" />
1680         </dataarea>
1681      </part>
1682   </software>
1683
1684</softwarelist>
trunk/hash/ut88.xml
r241752r241753
44
55
66   <software name="basic80">
7      <description>BASIC80</description>
7      <description>Mikro/80 BASIC</description>
88      <year>19??</year>
99      <publisher>&lt;unknown&gt;</publisher>
1010      <part name="cass" interface="ut88_cass">
r241752r241753
1515   </software>
1616
1717   <software name="chscom">
18      <description>CH$COM</description>
18      <description>Changer (v1.1) (CP/M)</description>
1919      <year>19??</year>
2020      <publisher>&lt;unknown&gt;</publisher>
2121      <part name="cass" interface="ut88_cass">
r241752r241753
2626   </software>
2727
2828   <software name="cpm35">
29      <description>CPM35</description>
29      <description>CP/M (v2.2, 35K)</description>
3030      <year>19??</year>
3131      <publisher>&lt;unknown&gt;</publisher>
3232      <part name="cass" interface="ut88_cass">
r241752r241753
3636      </part>
3737   </software>
3838
39   <software name="cpm64">
40      <description>CPM64</description>
39   <software name="cpm256">
40      <description>CP/M (v2.2, 256K)</description>
4141      <year>19??</year>
4242      <publisher>&lt;unknown&gt;</publisher>
4343      <part name="cass" interface="ut88_cass">
r241752r241753
4848   </software>
4949
5050   <software name="tetris">
51      <description>TETRIS</description>
51      <description>Tetris</description>
5252      <year>19??</year>
5353      <publisher>&lt;unknown&gt;</publisher>
5454      <part name="cass" interface="ut88_cass">
trunk/hash/vreader.xml
r241752r241753
4747
4848
4949-->
50</softwarelist>
trunk/hash/vsmile_cd.xml
r241752r241753
1717********7 = Spain
1818
191980-093000(US)   | The Crystal Ball Adventures
2080-093004(GE)   | Das zauberhafte M\xE4rchenabenteuer
2180-093005(FR)   | L'aventure enchant\xE9e
2080-093004(GE)   | Das zauberhafte Märchenabenteuer
2180-093005(FR)   | L'aventure enchantée
222280-093007(SP)   | El Castillo de las Princesas
2323-
242480-093020(US)   | The Incredibles - Mission Incredible
r241752r241753
3333-
343480-093060(US)   | The Amazing Spider-Man - Countdown to Doom
353580-093064(GE)   | Spiderman - Angriff der Superschurken
3680-093065(FR)   | Spider-Man - Course-poursuite \xE0 Manhattan
3680-093065(FR)   | Spider-Man - Course-poursuite à Manhattan
373780-093067(SP)   | El Asombroso Spider-Man - Persecucion en la Cuidad
3838-
393980-093080(US)   | Scooby-Doo! - Ancient Adventure
r241752r241753
434380-093087(SP)   | Scooby-Doo - Viaje al Pasdao
4444-
454580-093100(US)   | Cars - In The Fast Lane
4680-093104(GE)   | Cars - Auf der \xDCberholspur
4680-093104(GE)   | Cars - Auf der Überholspur
474780-093105(FR)   | Cars - A Fond la Caisse!
484880-093107(SP)   | Cars - El Carril Rapido
4949-
505080-093120(US)   | Wacky Race on Jumpin' Bean Island
5180-093124(GE)   | Das verr\xFCckte Rennen auf der H\xFCpf-Bohnen-Insel
5180-093124(GE)   | Das verrückte Rennen auf der Hüpf-Bohnen-Insel
525280-093127(SP)   | Carrera Loca - En La Isla de las Vainas Fritas  (real# unknown)
5353-
545480-093140(US)   | Shrek The Third - The Search for Arthur
trunk/hash/x07_cass.xml
r0r241753
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<softwarelist name="x07_cass" description="Canon X-07 cassettes">
5
6<!-- This comes from a real cassette -->
7   <software name="x07calc">
8      <description>Canon X-07 Calc (Fra)</description>
9      <year>19??</year>
10      <publisher>Logi'stick</publisher>
11      <part name="cass" interface="x07_cass">
12         <dataarea name="cass" size="957292">
13            <rom name="x07_calc_logistick.wav" size="957292" crc="626b14be" sha1="b4f30523b3c40170c2b2781a73dffb29e5c67d42" offset="0" />
14         </dataarea>
15      </part>
16   </software>
17
18
19
20<!-- These are tapes created from listings published on the French magazine "Hebdogiciel" -->
21
22   <software name="3dlabyr">
23      <description>3-D Labyrinthe (Fra)</description>
24      <year>1986</year>
25      <publisher>&lt;type-in&gt;</publisher>
26      <info name="magazine" value="Hebdogiciel 123" />
27      <info name="release" value="19860221" />
28      <info name="author" value="M. Grillet" />
29      <part name="cass" interface="x07_cass">
30         <dataarea name="cass" size="13406">
31            <rom name="labyrinthe 3d.cas" size="13406" crc="bcb4213e" sha1="22a4faa1bed2594885f55d0aa41ffd75e75563ba" offset="0" />
32         </dataarea>
33      </part>
34   </software>
35
36   <software name="3dmunch" supported="no">
37      <description>3D Munch (Fra)</description>
38      <year>1986</year>
39      <publisher>&lt;type-in&gt;</publisher>
40      <info name="magazine" value="Hebdogiciel 146" />
41      <info name="release" value="198608xx" />
42      <info name="author" value="Ignace Vantorre" />
43      <part name="cass1" interface="x07_cass">
44         <dataarea name="cass" size="2833">
45            <rom name="3dmunch#1.cas" size="2833" crc="e78972cc" sha1="affcc1b24159a2f8a6d5dbb948010c95c831ea4c" offset="0" />
46         </dataarea>
47      </part>
48      <part name="cass2" interface="x07_cass">
49         <dataarea name="cass" size="6263">
50            <rom name="3dmunch#2.cas" size="6263" crc="c6d3f9d9" sha1="58c1bbd5e98d3f6d73b0a68507648b3140ed31c0" offset="0" />
51         </dataarea>
52      </part>
53   </software>
54
55   <software name="3dturbo" supported="no">
56      <description>3D-Turbo (Fra)</description>
57      <year>1986</year>
58      <publisher>&lt;type-in&gt;</publisher>
59      <info name="magazine" value="Hebdogiciel 146" />
60      <info name="release" value="198608xx" />
61      <info name="author" value="Emmanuel De Lapparent" />
62      <part name="cass1" interface="x07_cass">
63         <dataarea name="cass" size="5361">
64            <rom name="turbo1.cas" size="5361" crc="ca6ec209" sha1="ea199a6f83741f79222d46266340ec552bf4f40d" offset="0" />
65         </dataarea>
66      </part>
67      <part name="cass2" interface="x07_cass">
68         <dataarea name="cass" size="5732">
69            <rom name="turbo2.cas" size="5732" crc="90d8a0e2" sha1="d2da55977ecfeb5496263ce5e45f022128a4a11c" offset="0" />
70         </dataarea>
71      </part>
72   </software>
73
74   <software name="advland">
75      <description>Adventure-Land (Fra)</description>
76      <year>1985</year>
77      <publisher>&lt;type-in&gt;</publisher>
78      <info name="magazine" value="Hebdogiciel 93" />
79      <info name="release" value="19850726" />
80      <info name="author" value="Pascal Aoumade" />
81      <part name="cass" interface="x07_cass">
82         <dataarea name="cass" size="11467">
83            <rom name="adventure land.cas" size="11467" crc="6f5cfa75" sha1="822426b512a493a1e5c33cb6c7017edbeaa270c5" offset="0" />
84         </dataarea>
85      </part>
86   </software>
87
88<!-- when is the 2nd part supposed to be loaded? -->
89   <software name="amerinca" supported="partial">
90      <description>Amerinca Gold (Fra)</description>
91      <year>1985</year>
92      <publisher>&lt;type-in&gt;</publisher>
93      <info name="magazine" value="Hebdogiciel 111" />
94      <info name="release" value="19851129" />
95      <info name="author" value="N. Allaire" />
96      <part name="cass1" interface="x07_cass">
97         <dataarea name="cass" size="5025">
98            <rom name="amer1 gold.cas" size="5025" crc="dbbdbccc" sha1="ec7a8eab7cd4fb33f0fde5ab38addbb65fc288a1" offset="0" />
99         </dataarea>
100      </part>
101      <part name="cass2" interface="x07_cass">
102         <dataarea name="cass" size="6103">
103            <rom name="amer2 gold.cas" size="6103" crc="50f9bb93" sha1="d6b31fcc6e8a9e2650cfd49d07d54594343a765b" offset="0" />
104         </dataarea>
105      </part>
106   </software>
107
108   <software name="amidar">
109      <description>Amidar - Le Peintre (Fra)</description>
110      <year>1985</year>
111      <publisher>&lt;type-in&gt;</publisher>
112      <info name="alt_title" value="Painter" />
113      <info name="magazine" value="Hebdogiciel 73" />
114      <info name="release" value="19850308" />
115      <info name="author" value="P. Breton" />
116      <part name="cass" interface="x07_cass">
117         <dataarea name="cass" size="8811">
118            <rom name="painter.cas" size="8811" crc="1d9410f5" sha1="9c54fbcbdd9b0b47988b4f5cff609e7eab698220" offset="0" />
119         </dataarea>
120      </part>
121   </software>
122
123   <software name="assdesas">
124      <description>Assembleur Désassembleur (Fra)</description>
125      <year>1984</year>
126      <publisher>&lt;type-in&gt;</publisher>
127      <info name="alt_title" value="L'As desAs" />
128      <info name="magazine" value="Hebdogiciel 59" />
129      <info name="release" value="19841130" />
130      <info name="author" value="S. Doczekaski" />
131      <part name="cass" interface="x07_cass">
132         <dataarea name="cass" size="10058">
133            <rom name="assdes_as.cas" size="10058" crc="281dfe99" sha1="d7f8f01246d6e8edafb22f6b748c7deffa57300b" offset="0" />
134         </dataarea>
135      </part>
136   </software>
137
138   <software name="aventur">
139      <description>Aventurier (Fra)</description>
140      <year>1986</year>
141      <publisher>&lt;type-in&gt;</publisher>
142      <info name="magazine" value="Hebdogiciel 125" />
143      <info name="release" value="19860307" />
144      <info name="author" value="Pierre Dor" />
145      <part name="cass" interface="x07_cass">
146         <dataarea name="cass" size="9412">
147            <rom name="aventurier.cas" size="9412" crc="0e5897ee" sha1="66bb20b82f6be5c9ca171ff60cb7b9b623311a29" offset="0" />
148         </dataarea>
149      </part>
150   </software>
151
152   <software name="extbas">
153      <description>BASIC Étendu (Fra)</description>
154      <year>1985</year>
155      <publisher>&lt;type-in&gt;</publisher>
156      <info name="magazine" value="Hebdogiciel 88" />
157      <info name="release" value="19850621" />
158      <info name="author" value="R. Van Leeuwen" />
159      <part name="cass" interface="x07_cass">
160         <dataarea name="cass" size="2592">
161            <rom name="extbas.cas" size="2592" crc="dfc2d408" sha1="94dbe746d3cdb436a5492808dcb3151cd3868020" offset="0" />
162         </dataarea>
163      </part>
164   </software>
165
166   <software name="basix07" supported="no">
167      <description>BASIX 07 (Fra)</description>
168      <year>1985</year>
169      <publisher>&lt;type-in&gt;</publisher>
170      <info name="magazine" value="Hebdogiciel 106" />
171      <info name="release" value="19851025" />
172      <info name="author" value="Stephane Shirvanian" />
173      <part name="cass" interface="x07_cass">
174         <dataarea name="cass" size="4121">
175            <rom name="basix-07.cas" size="4121" crc="8e4de221" sha1="706d40ce2d434c5b1aaea93e1ef03bcdf7ea15f4" offset="0" />
176         </dataarea>
177      </part>
178   </software>
179
180   <software name="batgalax">
181      <description>Bataille dans la Galaxie (Fra)</description>
182      <year>1986</year>
183      <publisher>&lt;type-in&gt;</publisher>
184      <info name="magazine" value="Hebdogiciel 146" />
185      <info name="release" value="198608xx" />
186      <info name="author" value="J. P. Blanchard" />
187      <part name="cass" interface="x07_cass">
188         <dataarea name="cass" size="3788">
189            <rom name="bataille dans la galaxie.cas" size="3788" crc="889efc64" sha1="b2c2887a8b20abc23e957ef0fd2957b26e496eda" offset="0" />
190         </dataarea>
191      </part>
192   </software>
193
194<!-- The listing was supposed to be completed in Hebdogiciel 169, which was not published -->
195   <software name="beachead">
196      <description>Beach-Head (Fra, Incomplete)</description>
197      <year>1987</year>
198      <publisher>&lt;type-in&gt;</publisher>
199      <info name="magazine" value="Hebdogiciel 168" />
200      <info name="release" value="19870102" />
201      <info name="author" value="S. Doczekaski" />
202      <part name="cass1" interface="x07_cass">
203         <dataarea name="cass" size="3811">
204            <rom name="beach1_head.cas" size="3811" crc="414bae15" sha1="9d550544753c441a815efc2a1b330ba2cfe94057" offset="0" />
205         </dataarea>
206      </part>
207      <part name="cass2" interface="x07_cass">
208         <dataarea name="cass" size="1807">
209            <rom name="beach2_head[incomplet].cas" size="1807" crc="61f83215" sha1="989f2a74219a2c7799592f9b85a7f35b1881a469" offset="0" />
210         </dataarea>
211      </part>
212   </software>
213
214   <software name="belote">
215      <description>Belote (Fra)</description>
216      <year>1984</year>
217      <publisher>&lt;type-in&gt;</publisher>
218      <info name="magazine" value="Hebdogiciel 62" />
219      <info name="release" value="19841221" />
220      <info name="author" value="J. C. Adagas Cau" />
221      <part name="cass" interface="x07_cass">
222         <dataarea name="cass" size="9082">
223            <rom name="belote.cas" size="9082" crc="a86e4fdf" sha1="a5370ff8c4dc1f3593864fdb2efd3694f23f44e3" offset="0" />
224         </dataarea>
225      </part>
226   </software>
227
228   <software name="calcul">
229      <description>Calcul (Fra)</description>
230      <year>1984</year>
231      <publisher>&lt;type-in&gt;</publisher>
232      <info name="magazine" value="Hebdogiciel 42" />
233      <info name="release" value="198408xx" />
234      <info name="author" value="E. Madeuf" />
235      <part name="cass" interface="x07_cass">
236         <dataarea name="cass" size="5857">
237            <rom name="calcul.cas" size="5857" crc="edf90613" sha1="de5ab65ecb4263b050e82f1ac8a980627cf45e35" offset="0" />
238         </dataarea>
239      </part>
240   </software>
241
242   <software name="calculat">
243      <description>Calculatrice (Fra)</description>
244      <year>1985</year>
245      <publisher>&lt;type-in&gt;</publisher>
246      <info name="magazine" value="Hebdogiciel 98" />
247      <info name="release" value="19850830" />
248      <info name="author" value="M. Lameyse" />
249      <part name="cass" interface="x07_cass">
250         <dataarea name="cass" size="5200">
251            <rom name="calculatrice.cas" size="5200" crc="e6615324" sha1="e4f8f2f0c2fd013c26958d0ce3e2c5deb10c390a" offset="0" />
252         </dataarea>
253      </part>
254   </software>
255
256   <software name="cburger">
257      <description>Canon Burger (Fra)</description>
258      <year>1986</year>
259      <publisher>&lt;type-in&gt;</publisher>
260      <info name="magazine" value="Hebdogiciel 135" />
261      <info name="release" value="19860516" />
262      <info name="author" value="Pierre Dor" />
263      <part name="cass" interface="x07_cass">
264         <dataarea name="cass" size="5142">
265            <rom name="canon burger.cas" size="5142" crc="ef232f49" sha1="d96776fcdf11c183c833f14324e402c55be6132d" offset="0" />
266         </dataarea>
267      </part>
268   </software>
269
270   <software name="crun">
271      <description>Canon Runner (Fra)</description>
272      <year>1985</year>
273      <publisher>&lt;type-in&gt;</publisher>
274      <info name="magazine" value="Hebdogiciel 107" />
275      <info name="release" value="19851101" />
276      <info name="author" value="C. Gautier" />
277      <part name="cass1" interface="x07_cass">
278         <dataarea name="cass" size="7965">
279            <rom name="canon runner1.cas" size="7965" crc="119bf353" sha1="644d52edd3d249f5b6a9d4c2a605fb4e3b2b6a4b" offset="0" />
280         </dataarea>
281      </part>
282      <part name="cass2" interface="x07_cass">
283         <dataarea name="cass" size="4879">
284            <rom name="canon runner2.cas" size="4879" crc="fcc5e6a6" sha1="423653b7df8336f2cd0da4905214f0ceac5d72fa" offset="0" />
285         </dataarea>
286      </part>
287   </software>
288
289   <software name="ccalc">
290      <description>Canon-Calc (Fra)</description>
291      <year>1986</year>
292      <publisher>&lt;type-in&gt;</publisher>
293      <info name="magazine" value="Hebdogiciel 136" />
294      <info name="release" value="19860523" />
295      <info name="author" value="François Bernez" />
296      <part name="cass" interface="x07_cass">
297         <dataarea name="cass" size="8500">
298            <rom name="canon-calc.cas" size="8500" crc="f3308e5d" sha1="a03f369f560b07ba2f397faa1d92cff6bc563891" offset="0" />
299         </dataarea>
300      </part>
301   </software>
302
303   <software name="cgraff">
304      <description>Canon-Graff (Fra)</description>
305      <year>1985</year>
306      <publisher>&lt;type-in&gt;</publisher>
307      <info name="magazine" value="Hebdogiciel 69" />
308      <info name="release" value="19850208" />
309      <info name="author" value="F. Devargas" />
310      <part name="cass" interface="x07_cass">
311         <dataarea name="cass" size="5434">
312            <rom name="canon-graff.cas" size="5434" crc="eea27bcd" sha1="338f7ef5753897a7905e50027137f2b33cd6ccbd" offset="0" />
313         </dataarea>
314      </part>
315   </software>
316
317   <software name="cardiab2">
318      <description>Carré Diabolique II (Fra)</description>
319      <year>1985</year>
320      <publisher>&lt;type-in&gt;</publisher>
321      <info name="magazine" value="Hebdogiciel 106" />
322      <info name="release" value="19851025" />
323      <info name="author" value="M. Bollaert" />
324      <part name="cass" interface="x07_cass">
325         <dataarea name="cass" size="1809">
326            <rom name="carre diabolique2.cas" size="1809" crc="20d3ae95" sha1="16ee404143a4b8072071ea516ebd3772fc0571dd" offset="0" />
327         </dataarea>
328      </part>
329   </software>
330
331   <software name="carwar">
332      <description>CarWar (Fra)</description>
333      <year>1985</year>
334      <publisher>&lt;type-in&gt;</publisher>
335      <info name="magazine" value="Hebdogiciel 81" />
336      <info name="release" value="19850503" />
337      <info name="author" value="G. Bouquet" />
338      <part name="cass" interface="x07_cass">
339         <dataarea name="cass" size="3621">
340            <rom name="carwar.cas" size="3621" crc="046666ed" sha1="9fc30dd1eee95d1fc0c131cb33084eb4a1714623" offset="0" />
341         </dataarea>
342      </part>
343   </software>
344
345   <software name="catchmn">
346      <description>Catch-Mean (Fra)</description>
347      <year>1986</year>
348      <publisher>&lt;type-in&gt;</publisher>
349      <info name="magazine" value="Hebdogiciel 127" />
350      <info name="release" value="19860321" />
351      <info name="author" value="F. Trancart" />
352      <part name="cass1" interface="x07_cass">
353         <dataarea name="cass" size="2079">
354            <rom name="catch1-mean.cas" size="2079" crc="fce4704f" sha1="4e1cb7cf94f02c7797f502fac7e0b81dcf2477d7" offset="0" />
355         </dataarea>
356      </part>
357      <part name="cass2" interface="x07_cass">
358         <dataarea name="cass" size="6052">
359            <rom name="catch2-mean.cas" size="6052" crc="54f1b4f0" sha1="f96a7a542d73ed90136523cd4d3fb71eb88ef2e9" offset="0" />
360         </dataarea>
361      </part>
362   </software>
363
364   <software name="chenille">
365      <description>Chenille (Fra)</description>
366      <year>1984</year>
367      <publisher>&lt;type-in&gt;</publisher>
368      <info name="magazine" value="Hebdogiciel 36" />
369      <info name="release" value="19840615" />
370      <info name="author" value="O. Beranger" />
371      <part name="cass" interface="x07_cass">
372         <dataarea name="cass" size="1942">
373            <rom name="chenille.cas" size="1942" crc="06422b4a" sha1="8f2ee920d3b7beb3238543b0fac977401549feff" offset="0" />
374         </dataarea>
375      </part>
376   </software>
377
378   <software name="lancelot">
379      <description>Chevalier Lancelot. (Fra)</description>
380      <year>1984</year>
381      <publisher>&lt;type-in&gt;</publisher>
382      <info name="magazine" value="Hebdogiciel 54" />
383      <info name="release" value="19841026" />
384      <info name="author" value="I. Hary" />
385      <part name="cass1" interface="x07_cass">
386         <dataarea name="cass" size="2478">
387            <rom name="cheva1_lancelot.cas" size="2478" crc="7ab67b9e" sha1="a32c41d92445006f04c29a8181bbaee0511d9c8b" offset="0" />
388         </dataarea>
389      </part>
390      <part name="cass2" interface="x07_cass">
391         <dataarea name="cass" size="7625">
392            <rom name="cheva2_lancelot.cas" size="7625" crc="40d296a8" sha1="add91d92f5a1dd231db86947250ded246a25b40e" offset="0" />
393         </dataarea>
394      </part>
395   </software>
396
397   <software name="chatmaud">
398      <description>Le Chateau Maudit (Fra)</description>
399      <year>1985</year>
400      <publisher>&lt;type-in&gt;</publisher>
401      <info name="magazine" value="Hebdogiciel 104" />
402      <info name="release" value="19851011" />
403      <info name="author" value="Emmanuel De Lapparent" />
404      <part name="cass1" interface="x07_cass">
405         <dataarea name="cass" size="4447">
406            <rom name="cm1_chateaumaudit.cas" size="4447" crc="043254fa" sha1="1e50e09acbf7265bf9674c8ef6d60a5c188cb991" offset="0" />
407         </dataarea>
408      </part>
409      <part name="cass2" interface="x07_cass">
410         <dataarea name="cass" size="6359">
411            <rom name="cm2_chateaumaudit.cas" size="6359" crc="7c696f3e" sha1="8b6b6b7a570a2b117d3673f58803f8f2ae34cc83" offset="0" />
412         </dataarea>
413      </part>
414   </software>
415
416   <software name="courbes">
417      <description>Courbes (Fra)</description>
418      <year>1986</year>
419      <publisher>&lt;type-in&gt;</publisher>
420      <info name="alt_title" value="Tracé de Courbe" />
421      <info name="magazine" value="Hebdogiciel 124" />
422      <info name="release" value="19860228" />
423      <info name="author" value="A. Nogues" />
424      <part name="cass" interface="x07_cass">
425         <dataarea name="cass" size="10185">
426            <rom name="courbes.cas" size="10185" crc="e30ceaa1" sha1="d6506ccdc1d60108856128b316d7df94f79f0505" offset="0" />
427         </dataarea>
428      </part>
429   </software>
430
431   <software name="defenser">
432      <description>Defenseur (Fra)</description>
433      <year>1984</year>
434      <publisher>&lt;type-in&gt;</publisher>
435      <info name="magazine" value="Hebdogiciel 55" />
436      <info name="release" value="19841102" />
437      <info name="author" value="G. Forest" />
438      <part name="cass" interface="x07_cass">
439         <dataarea name="cass" size="9975">
440            <rom name="defenseur.cas" size="9975" crc="cf0bace2" sha1="b7c8f8282f3da6aaabaaaad96a1d137bf6edbedf" offset="0" />
441         </dataarea>
442      </part>
443   </software>
444
445   <software name="desass">
446      <description>Desassembleur (Fra)</description>
447      <year>1986</year>
448      <publisher>&lt;type-in&gt;</publisher>
449      <info name="alt_title" value="Monit. Désassembleur" />
450      <info name="magazine" value="Hebdogiciel 117" />
451      <info name="release" value="19860110" />
452      <info name="author" value="Y. E. Proy" />
453      <part name="cass" interface="x07_cass">
454         <dataarea name="cass" size="4639">
455            <rom name="desass.cas" size="4639" crc="ae98dba9" sha1="d3b13a0d181295366c51bc07cba8d69770e47a8a" offset="0" />
456         </dataarea>
457      </part>
458   </software>
459
460   <software name="desasm">
461      <description>DESASS-ASM (Fra)</description>
462      <year>1986</year>
463      <publisher>&lt;type-in&gt;</publisher>
464      <info name="magazine" value="Hebdogiciel 162-164" />
465      <info name="release" value="19861121" />
466      <info name="author" value="Emmanuel De Lapparent" />
467      <part name="cass1" interface="x07_cass">
468         <dataarea name="cass" size="191">
469            <rom name="desassembleur[loader].cas" size="191" crc="beff77d6" sha1="bb2d3f4de3a3d0c2faecff21effa058c61ecafa9" offset="0" />
470         </dataarea>
471      </part>
472      <part name="cass2" interface="x07_cass">
473         <dataarea name="cass" size="2317">
474            <rom name="desassembleur[codes].cas" size="2317" crc="5559879b" sha1="6c42a850aeed5d61308ef55d2cc86eb7f5ab97ef" offset="0" />
475         </dataarea>
476      </part>
477   </software>
478
479   <software name="destruct">
480      <description>Destruction (Fra)</description>
481      <year>1985</year>
482      <publisher>&lt;type-in&gt;</publisher>
483      <info name="magazine" value="Hebdogiciel 101" />
484      <info name="release" value="19850920" />
485      <info name="author" value="F. Fargeot" />
486      <part name="cass1" interface="x07_cass">
487         <dataarea name="cass" size="2318">
488            <rom name="destr1_destruction.cas" size="2318" crc="7e383541" sha1="104db3a013b2bec3df6999edaa19eaa1260de1de" offset="0" />
489         </dataarea>
490      </part>
491      <part name="cass2" interface="x07_cass">
492         <dataarea name="cass" size="5488">
493            <rom name="destr2_destruction.cas" size="5488" crc="3d2ed37c" sha1="f78e7940a515c6d4b6e93afcee47fe5a91743886" offset="0" />
494         </dataarea>
495      </part>
496      <part name="cass3" interface="x07_cass">
497         <dataarea name="cass" size="4805">
498            <rom name="destr3_destruction.cas" size="4805" crc="d9860e13" sha1="455f612d1e9eecf0c3c7a3d6f33ce2af35c6d52e" offset="0" />
499         </dataarea>
500      </part>
501   </software>
502
503   <software name="donjon">
504      <description>Donjon (Fra)</description>
505      <year>1984</year>
506      <publisher>&lt;type-in&gt;</publisher>
507      <info name="magazine" value="Hebdogiciel 28" />
508      <info name="release" value="19840420" />
509      <info name="author" value="I. Hary" />
510      <part name="cass" interface="x07_cass">
511         <dataarea name="cass" size="5617">
512            <rom name="donjon.cas" size="5617" crc="2f6103d1" sha1="bd869c8164b2813ab6dda9b63e2bf28b911db65d" offset="0" />
513         </dataarea>
514      </part>
515   </software>
516
517   <software name="edf">
518      <description>E.D.F. (Fra)</description>
519      <year>1985</year>
520      <publisher>&lt;type-in&gt;</publisher>
521      <info name="magazine" value="Hebdogiciel 99" />
522      <info name="release" value="19850906" />
523      <info name="author" value="M. Bollaert" />
524      <part name="cass1" interface="x07_cass">
525         <dataarea name="cass" size="2136">
526            <rom name="edf1.cas" size="2136" crc="e3101e24" sha1="aef2bae2382e2ed1ba3aab3f6d5dbc312000c5ed" offset="0" />
527         </dataarea>
528      </part>
529      <part name="cass2" interface="x07_cass">
530         <dataarea name="cass" size="14334">
531            <rom name="edf2.cas" size="14334" crc="3c600f67" sha1="5fb93f970847b8df2109cd604495f9feff4d4c89" offset="0" />
532         </dataarea>
533      </part>
534   </software>
535
536   <software name="eudipe">
537      <description>Eudipe (Fra)</description>
538      <year>1985</year>
539      <publisher>&lt;type-in&gt;</publisher>
540      <info name="magazine" value="Hebdogiciel 72" />
541      <info name="release" value="19850301" />
542      <info name="author" value="Stephane Shirvanian" />
543      <part name="cass" interface="x07_cass">
544         <dataarea name="cass" size="4708">
545            <rom name="eudipe.cas" size="4708" crc="3416daf4" sha1="1fcf066ec54bac4851a27d100174ee7ef31e2359" offset="0" />
546         </dataarea>
547      </part>
548   </software>
549
550   <software name="fifine">
551      <description>Fifine la Tortue (Fra)</description>
552      <year>1984</year>
553      <publisher>&lt;type-in&gt;</publisher>
554      <info name="magazine" value="Hebdogiciel 60" />
555      <info name="release" value="19841207" />
556      <info name="author" value="B. Rouleau" />
557      <part name="cass" interface="x07_cass">
558         <dataarea name="cass" size="6001">
559            <rom name="fifine la tortue.cas" size="6001" crc="de092ba4" sha1="3f788248cc5e18f1db34f522a25b14a268b7dae5" offset="0" />
560         </dataarea>
561      </part>
562   </software>
563
564   <software name="finances">
565      <description>Finances (Fra)</description>
566      <year>1984</year>
567      <publisher>&lt;type-in&gt;</publisher>
568      <info name="magazine" value="Hebdogiciel 61" />
569      <info name="release" value="19841214" />
570      <info name="author" value="C. Bureau" />
571      <part name="cass" interface="x07_cass">
572         <dataarea name="cass" size="5574">
573            <rom name="finances.cas" size="5574" crc="cd0992fe" sha1="48e4612b81a0c0daaeadaf5b15dc7daa9e88abb9" offset="0" />
574         </dataarea>
575      </part>
576   </software>
577
578   <software name="fontix">
579      <description>FONTIX+ (Fra)</description>
580      <year>1985</year>
581      <publisher>&lt;type-in&gt;</publisher>
582      <info name="magazine" value="Hebdogiciel 103" />
583      <info name="release" value="19851004" />
584      <info name="author" value="P. Diogo" />
585      <part name="cass" interface="x07_cass">
586         <dataarea name="cass" size="2803">
587            <rom name="fontix+_asm.cas" size="2803" crc="00c66e4c" sha1="ba8982331a4fb3c286720849d94584fd5cbc43bf" offset="0" />
588         </dataarea>
589      </part>
590   </software>
591
592   <software name="force8">
593      <description>Force 8 (Fra)</description>
594      <year>1984</year>
595      <publisher>&lt;type-in&gt;</publisher>
596      <info name="magazine" value="Hebdogiciel 57" />
597      <info name="release" value="19841116" />
598      <info name="author" value="M. Boucher" />
599      <part name="cass" interface="x07_cass">
600         <dataarea name="cass" size="9070">
601            <rom name="force8.cas" size="9070" crc="085272a4" sha1="c86a7fd6e37715e47588974aa36ea93d167957ca" offset="0" />
602         </dataarea>
603      </part>
604   </software>
605
606   <software name="f1">
607      <description>Formule 1 (Fra)</description>
608      <year>1986</year>
609      <publisher>&lt;type-in&gt;</publisher>
610      <info name="magazine" value="Hebdogiciel 129-131" />
611      <info name="release" value="19860404" />
612      <info name="author" value="A. Fousse" />
613      <part name="cass1" interface="x07_cass">
614         <dataarea name="cass" size="8029">
615            <rom name="formule1_loader.cas" size="8029" crc="ece2373c" sha1="fce835cbdb28d3b8d96748d05a430d117f5d4c36" offset="0" />
616         </dataarea>
617      </part>
618      <part name="cass2" interface="x07_cass">
619         <dataarea name="cass" size="10518">
620            <rom name="formule1_car3.cas" size="10518" crc="7f8e2d51" sha1="b1231a72baef84044b980dae848f196a4c79ec3e" offset="0" />
621         </dataarea>
622      </part>
623   </software>
624
625   <software name="france">
626      <description>France (Fra)</description>
627      <year>1984</year>
628      <publisher>&lt;type-in&gt;</publisher>
629      <info name="magazine" value="Hebdogiciel 15" />
630      <info name="release" value="19840120" />
631      <info name="author" value="C. Danes" />
632      <part name="cass" interface="x07_cass">
633         <dataarea name="cass" size="3154">
634            <rom name="france.cas" size="3154" crc="4d703f4e" sha1="8b57f83ffc62b872ab85ae5ef9bf5f8422475c28" offset="0" />
635         </dataarea>
636      </part>
637   </software>
638
639   <software name="genmusic">
640      <description>Générateur Musical (Fra)</description>
641      <year>1984</year>
642      <publisher>&lt;type-in&gt;</publisher>
643      <info name="magazine" value="Hebdogiciel 47" />
644      <info name="release" value="19840907" />
645      <info name="author" value="P. Lotz" />
646      <part name="cass" interface="x07_cass">
647         <dataarea name="cass" size="2343">
648            <rom name="generateur musical.cas" size="2343" crc="4fab9406" sha1="2d7f96604680caba36fab49559f397d4508a7054" offset="0" />
649         </dataarea>
650      </part>
651   </software>
652
653<!-- OM ERROR -->
654   <software name="gcambri" supported="no">
655      <description>Gentleman Cambrioleur (Fra)</description>
656      <year>1985</year>
657      <publisher>&lt;type-in&gt;</publisher>
658      <info name="magazine" value="Hebdogiciel 90" />
659      <info name="release" value="19850705" />
660      <info name="author" value="S. Madrange" />
661      <part name="cass" interface="x07_cass">
662         <dataarea name="cass" size="14656">
663            <rom name="gentleman cambrioleur.cas" size="14656" crc="4bd81683" sha1="2a4d98470ae6f3a795cb797e89ded2cf74d6b2a7" offset="0" />
664         </dataarea>
665      </part>
666   </software>
667
668   <software name="minigolf">
669      <description>Golf Miniature (Fra)</description>
670      <year>1986</year>
671      <publisher>&lt;type-in&gt;</publisher>
672      <info name="magazine" value="Hebdogiciel 126" />
673      <info name="release" value="19860314" />
674      <info name="author" value="Philippe Desmartin" />
675      <part name="cass" interface="x07_cass">
676         <dataarea name="cass" size="5904">
677            <rom name="mini-golf.cas" size="5904" crc="6dc32653" sha1="a8393c9b4460087c7396e6a995c11527d23dc07e" offset="0" />
678         </dataarea>
679      </part>
680   </software>
681
682   <software name="ponts">
683      <description>Jeu de Ponts (Fra)</description>
684      <year>1986</year>
685      <publisher>&lt;type-in&gt;</publisher>
686      <info name="magazine" value="Hebdogiciel 132" />
687      <info name="release" value="19860425" />
688      <info name="author" value="F. M. Bollaert" />
689      <part name="cass" interface="x07_cass">
690         <dataarea name="cass" size="3498">
691            <rom name="ponts.cas" size="3498" crc="d11481d4" sha1="5628f66f185b7f21f52bd7690ad3efd32a35b374" offset="0" />
692         </dataarea>
693      </part>
694   </software>
695
696   <software name="jeuxhivr">
697      <description>Jeux d'Hiver (Fra)</description>
698      <year>1986</year>
699      <publisher>&lt;type-in&gt;</publisher>
700      <info name="magazine" value="Hebdogiciel 133" />
701      <info name="release" value="19860502" />
702      <info name="author" value="Emmanuel De Lapparent" />
703      <part name="cass1" interface="x07_cass">
704         <dataarea name="cass" size="4245">
705            <rom name="jeux olympiques d'hivers1.cas" size="4245" crc="71e0b058" sha1="e9314180607a52b6aedf8384a57144859327a084" offset="0" />
706         </dataarea>
707      </part>
708      <part name="cass2" interface="x07_cass">
709         <dataarea name="cass" size="6162">
710            <rom name="jeux olympiques d'hivers2.cas" size="6162" crc="1c479bac" sha1="ea5fefc11c0e5864c639bd7639c9e316b3575e41" offset="0" />
711         </dataarea>
712      </part>
713   </software>
714
715   <software name="joedkid">
716      <description>Joe Dalt'Kid (Fra)</description>
717      <year>1985</year>
718      <publisher>&lt;type-in&gt;</publisher>
719      <info name="magazine" value="Hebdogiciel 86-87" />
720      <info name="release" value="19850607" />
721      <info name="author" value="P. Fagnant" />
722      <part name="cass1" interface="x07_cass">
723         <dataarea name="cass" size="4008">
724            <rom name="joe1_joe dalt'kid.cas" size="4008" crc="65523d35" sha1="f3c4a832cdfef89768f00ea0baeee98aeb047033" offset="0" />
725         </dataarea>
726      </part>
727      <part name="cass2" interface="x07_cass">
728         <dataarea name="cass" size="6289">
729            <rom name="joe2_joe dalt'kid.cas" size="6289" crc="f1177d7f" sha1="cf64a88d8763d5e70e9bd7635a97bdcd67b14d16" offset="0" />
730         </dataarea>
731      </part>
732   </software>
733
734   <software name="judoka">
735      <description>Judoka (Fra)</description>
736      <year>1986</year>
737      <publisher>&lt;type-in&gt;</publisher>
738      <info name="magazine" value="Hebdogiciel 128" />
739      <info name="release" value="19860328" />
740      <info name="author" value="Pierre Dor" />
741      <part name="cass" interface="x07_cass">
742         <dataarea name="cass" size="6151">
743            <rom name="judoka.cas" size="6151" crc="85221b8e" sha1="2992b9e7887099034e462e9ef7190a46820fd840" offset="0" />
744         </dataarea>
745      </part>
746   </software>
747
748   <software name="jump">
749      <description>Jump (Fra)</description>
750      <year>1984</year>
751      <publisher>&lt;type-in&gt;</publisher>
752      <info name="magazine" value="Hebdogiciel 50" />
753      <info name="release" value="19840928" />
754      <info name="author" value="F. Trancart" />
755      <part name="cass" interface="x07_cass">
756         <dataarea name="cass" size="5293">
757            <rom name="jump.cas" size="5293" crc="1283d8a1" sha1="11d2fd1476898771bac0f4bfecd6cbf14b28324b" offset="0" />
758         </dataarea>
759      </part>
760   </software>
761
762   <software name="keyprog">
763      <description>Key Programmer (Fra)</description>
764      <year>1986</year>
765      <publisher>&lt;type-in&gt;</publisher>
766      <info name="magazine" value="Hebdogiciel 134" />
767      <info name="release" value="19860509" />
768      <info name="author" value="A. Jacquot" />
769      <part name="cass" interface="x07_cass">
770         <dataarea name="cass" size="3681">
771            <rom name="key programmer.cas" size="3681" crc="87a59f55" sha1="d16deda00b3ed76345a61f2842e82cada5e0e902" offset="0" />
772         </dataarea>
773      </part>
774   </software>
775
776   <software name="labyr">
777      <description>LABYR (Fra)</description>
778      <year>1984</year>
779      <publisher>&lt;type-in&gt;</publisher>
780      <info name="magazine" value="Hebdogiciel 32" />
781      <info name="release" value="19840518" />
782      <info name="author" value="F. Benoist" />
783      <part name="cass" interface="x07_cass">
784         <dataarea name="cass" size="2592">
785            <rom name="labyr.cas" size="2592" crc="6200bdad" sha1="91b75344e87b8ea9385a1cd70f1183fcad35a720" offset="0" />
786         </dataarea>
787      </part>
788   </software>
789
790   <software name="liaisons">
791      <description>Liaisons (Fra)</description>
792      <year>1985</year>
793      <publisher>&lt;type-in&gt;</publisher>
794      <info name="magazine" value="Hebdogiciel 87" />
795      <info name="release" value="19850614" />
796      <info name="author" value="C. Flores" />
797      <part name="cass" interface="x07_cass">
798         <dataarea name="cass" size="6212">
799            <rom name="liaisons.cas" size="6212" crc="1865efb1" sha1="4c63c50be58cacc85d8e55cc7a8dd52361b3ae7b" offset="0" />
800         </dataarea>
801      </part>
802   </software>
803
804   <software name="lion">
805      <description>Lion (Fra)</description>
806      <year>1985</year>
807      <publisher>&lt;type-in&gt;</publisher>
808      <info name="magazine" value="Hebdogiciel 76" />
809      <info name="release" value="19850329" />
810      <info name="author" value="Emmanuel Lecharny" />
811      <part name="cass" interface="x07_cass">
812         <dataarea name="cass" size="5402">
813            <rom name="lion.cas" size="5402" crc="610d18ca" sha1="ea0d5126fc20d6877fb73af91a11c3d95ac64cb5" offset="0" />
814         </dataarea>
815      </part>
816   </software>
817
818   <software name="luckyjoe">
819      <description>Lucky Joe (Fra)</description>
820      <year>1985</year>
821      <publisher>&lt;type-in&gt;</publisher>
822      <info name="magazine" value="Hebdogiciel 80" />
823      <info name="release" value="19850426" />
824      <info name="author" value="M. Salaum" />
825      <part name="cass" interface="x07_cass">
826         <dataarea name="cass" size="4864">
827            <rom name="lucky joe.cas" size="4864" crc="a6c45719" sha1="6d8468290ca15aea374c79f8c56663bcdad5bdb6" offset="0" />
828         </dataarea>
829      </part>
830   </software>
831
832   <software name="math">
833      <description>Mathématiques (Fra)</description>
834      <year>1985</year>
835      <publisher>&lt;type-in&gt;</publisher>
836      <info name="magazine" value="Hebdogiciel 75" />
837      <info name="release" value="19850322" />
838      <part name="cass" interface="x07_cass">
839         <dataarea name="cass" size="12569">
840            <rom name="mathematiques.cas" size="12569" crc="1f634d41" sha1="c647020112d53434894eeed50739135ddbc70771" offset="0" />
841         </dataarea>
842      </part>
843   </software>
844
845   <software name="mines">
846      <description>Mines (Fra)</description>
847      <year>1986</year>
848      <publisher>&lt;type-in&gt;</publisher>
849      <info name="magazine" value="Hebdogiciel 121" />
850      <info name="release" value="19860207" />
851      <info name="author" value="S. Guiochon" />
852      <part name="cass" interface="x07_cass">
853         <dataarea name="cass" size="4611">
854            <rom name="mines.cas" size="4611" crc="d3bdd399" sha1="c41455447d337db79177e4345d6fdc8aa49055cf" offset="0" />
855         </dataarea>
856      </part>
857   </software>
858
859   <software name="minigeo">
860      <description>Mini-Géo (Fra)</description>
861      <year>1985</year>
862      <publisher>&lt;type-in&gt;</publisher>
863      <info name="magazine" value="Hebdogiciel 81" />
864      <info name="release" value="19850503" />
865      <info name="author" value="Philippe Desmartin" />
866      <part name="cass" interface="x07_cass">
867         <dataarea name="cass" size="7315">
868            <rom name="mini-geographe.cas" size="7315" crc="c7e9aa4a" sha1="0eaf1bf43f93949412319eec4903798807d214b1" offset="0" />
869         </dataarea>
870      </part>
871   </software>
872
873   <software name="multigrp">
874      <description>Multigraph (Fra)</description>
875      <year>1985</year>
876      <publisher>&lt;type-in&gt;</publisher>
877      <info name="magazine" value="Hebdogiciel 85" />
878      <info name="release" value="19850531" />
879      <info name="author" value="Olivier Faugeras" />
880      <part name="cass" interface="x07_cass">
881         <dataarea name="cass" size="6491">
882            <rom name="multigraph.cas" size="6491" crc="1f413ac2" sha1="ec7ffa7fe34d7cad11e851beb6baa28c603c5d71" offset="0" />
883         </dataarea>
884      </part>
885   </software>
886
887   <software name="musicmak">
888      <description>Music Maker (Fra)</description>
889      <year>1986</year>
890      <publisher>&lt;type-in&gt;</publisher>
891      <info name="magazine" value="Hebdogiciel 141" />
892      <info name="release" value="19860627" />
893      <info name="author" value="S. Friedelmeyer" />
894      <part name="cass1" interface="x07_cass">
895         <dataarea name="cass" size="6738">
896            <rom name="music1 maker.cas" size="6738" crc="5e315fca" sha1="d178d5bfed16f49393b8ad66893d872f57920f57" offset="0" />
897         </dataarea>
898      </part>
899      <part name="cass2" interface="x07_cass">
900         <dataarea name="cass" size="4566">
901            <rom name="music2 maker.cas" size="4566" crc="65935eae" sha1="3016e51310bae5d97a0665bd8cc0a065d63f2e78" offset="0" />
902         </dataarea>
903      </part>
904   </software>
905
906   <software name="pacman">
907      <description>Pac-Man (Fra)</description>
908      <year>1984</year>
909      <publisher>&lt;type-in&gt;</publisher>
910      <info name="alt_title" value="Bacman" />
911      <info name="magazine" value="Hebdogiciel 58" />
912      <info name="release" value="19841123" />
913      <info name="author" value="S. Doczekaski" />
914      <part name="cass" interface="x07_cass">
915         <dataarea name="cass" size="3873">
916            <rom name="bacman.cas" size="3873" crc="618431f1" sha1="8357e1aed5b9e116caf0939c7bdf48b29a17e7ac" offset="0" />
917         </dataarea>
918      </part>
919   </software>
920
921   <software name="panicbnk">
922      <description>Panic Bank (Fra)</description>
923      <year>1985</year>
924      <publisher>&lt;type-in&gt;</publisher>
925      <info name="magazine" value="Hebdogiciel 89" />
926      <info name="release" value="19850628" />
927      <info name="author" value="E. Capellari" />
928      <part name="cass1" interface="x07_cass">
929         <dataarea name="cass" size="1932">
930            <rom name="panic1 bank.cas" size="1932" crc="b287bed7" sha1="dfaf30c541654b0a220e88b152c52ada5ab35ec6" offset="0" />
931         </dataarea>
932      </part>
933      <part name="cass2" interface="x07_cass">
934         <dataarea name="cass" size="5268">
935            <rom name="panic2 bank.cas" size="5268" crc="9c595c9f" sha1="dd069484435482ae1845a063dffab6b488c6ca8d" offset="0" />
936         </dataarea>
937      </part>
938   </software>
939
940   <software name="patrolsp">
941      <description>Patrouilleur de l'Espace (Fra)</description>
942      <year>1984</year>
943      <publisher>&lt;type-in&gt;</publisher>
944      <info name="magazine" value="Hebdogiciel 52" />
945      <info name="release" value="19841012" />
946      <info name="author" value="X. Vannerau" />
947      <part name="cass1" interface="x07_cass">
948         <dataarea name="cass" size="2317">
949            <rom name="patr1_patrouilleur de l espace.cas" size="2317" crc="7a3d1252" sha1="3a6e3b2780230c2ff2fa72cb48b1c8ea6b9c194c" offset="0" />
950         </dataarea>
951      </part>
952      <part name="cass2" interface="x07_cass">
953         <dataarea name="cass" size="6067">
954            <rom name="patr2_patrouilleur de l espace.cas" size="6067" crc="b60b25c1" sha1="28d09765da024a815ae905bcb297f86b3e30c4a1" offset="0" />
955         </dataarea>
956      </part>
957   </software>
958
959   <software name="pinup">
960      <description>Pin-Up (Fra)</description>
961      <year>1986</year>
962      <publisher>&lt;type-in&gt;</publisher>
963      <info name="magazine" value="Hebdogiciel 119-120" />
964      <info name="release" value="19860124" />
965      <info name="author" value="Philippe Desmartin" />
966      <part name="cass" interface="x07_cass">
967         <dataarea name="cass" size="13091">
968            <rom name="pin-up.cas" size="13091" crc="e9c72785" sha1="477dc6603142fb3649dad9464d022933d6f313c1" offset="0" />
969         </dataarea>
970      </part>
971   </software>
972
973   <software name="piste">
974      <description>Piste (Fra)</description>
975      <year>1984</year>
976      <publisher>&lt;type-in&gt;</publisher>
977      <info name="magazine" value="Hebdogiciel 49" />
978      <info name="release" value="19840921" />
979      <info name="author" value="C. Peletier" />
980      <part name="cass" interface="x07_cass">
981         <dataarea name="cass" size="1391">
982            <rom name="piste.cas" size="1391" crc="20c4ce2c" sha1="d9a93b119ddd3a23ae893c5fac6d51314659e341" offset="0" />
983         </dataarea>
984      </part>
985   </software>
986
987   <software name="prixdang">
988      <description>Le Prix du Danger (Fra)</description>
989      <year>1984</year>
990      <publisher>&lt;type-in&gt;</publisher>
991      <info name="magazine" value="Hebdogiciel 46" />
992      <info name="release" value="19840831" />
993      <info name="author" value="F. Bernez" />
994      <part name="cass" interface="x07_cass">
995         <dataarea name="cass" size="5895">
996            <rom name="le prix du danger.cas" size="5895" crc="5bd08843" sha1="e8ef2fc908a1bbedd0ccc182cb78ab305c29202f" offset="0" />
997         </dataarea>
998      </part>
999   </software>
1000
1001   <software name="puzzle">
1002      <description>Puzzle (Fra)</description>
1003      <year>1984</year>
1004      <publisher>&lt;type-in&gt;</publisher>
1005      <info name="magazine" value="Hebdogiciel 53" />
1006      <info name="release" value="19841019" />
1007      <info name="author" value="E. Lapouyade" />
1008      <part name="cass" interface="x07_cass">
1009         <dataarea name="cass" size="6357">
1010            <rom name="puzzle.cas" size="6357" crc="f878e0b6" sha1="0e8bfe129ba42abbace0fd63ec5206d3c263c7b0" offset="0" />
1011         </dataarea>
1012      </part>
1013   </software>
1014
1015   <software name="rdv">
1016      <description>Rendez-Vous (Fra)</description>
1017      <year>1986</year>
1018      <publisher>&lt;type-in&gt;</publisher>
1019      <info name="magazine" value="Hebdogiciel 146" />
1020      <info name="release" value="198608xx" />
1021      <info name="author" value="J. L. Vitre" />
1022      <part name="cass1" interface="x07_cass">
1023         <dataarea name="cass" size="3439">
1024            <rom name="rendez-vous1.cas" size="3439" crc="5624de8e" sha1="b36b088335699bb6b3eb0f0762496d8d444eaffd" offset="0" />
1025         </dataarea>
1026      </part>
1027      <part name="cass2" interface="x07_cass">
1028         <dataarea name="cass" size="12168">
1029            <rom name="rendez-vous2.cas" size="12168" crc="654836c9" sha1="8d52f3694267b38aa0341da994ecbd021ff16f14" offset="0" />
1030         </dataarea>
1031      </part>
1032   </software>
1033
1034   <software name="renum">
1035      <description>Renum Auto (Fra)</description>
1036      <year>1986</year>
1037      <publisher>&lt;type-in&gt;</publisher>
1038      <info name="magazine" value="Hebdogiciel 154" />
1039      <info name="release" value="19861010" />
1040      <info name="author" value="R. Santini" />
1041      <part name="cass" interface="x07_cass">
1042         <dataarea name="cass" size="1816">
1043            <rom name="renumauto.cas" size="1816" crc="cf404520" sha1="2801cf02ccb435f00b545ac8283ab575a5a3b0de" offset="0" />
1044         </dataarea>
1045      </part>
1046   </software>
1047
1048   <software name="runner">
1049      <description>Runner (Fra)</description>
1050      <year>1985</year>
1051      <publisher>&lt;type-in&gt;</publisher>
1052      <info name="magazine" value="Hebdogiciel 100" />
1053      <info name="release" value="19850913" />
1054      <info name="author" value="M. Marciacq" />
1055      <part name="cass" interface="x07_cass">
1056         <dataarea name="cass" size="9044">
1057            <rom name="runner.cas" size="9044" crc="55fc5340" sha1="2a96fc3e60594a44d1c8d11132e8239bec1c5a4b" offset="0" />
1058         </dataarea>
1059      </part>
1060   </software>
1061
1062<!-- OM ERROR -->
1063   <software name="sante7" supported="no">
1064      <description>Sante7 (Fra)</description>
1065      <year>1985</year>
1066      <publisher>&lt;type-in&gt;</publisher>
1067      <info name="magazine" value="Hebdogiciel 78" />
1068      <info name="release" value="19850412" />
1069      <info name="author" value="F. Costa Dos Santos" />
1070      <part name="cass" interface="x07_cass">
1071         <dataarea name="cass" size="13903">
1072            <rom name="sante7.cas" size="13903" crc="b1ae8127" sha1="9ff5feb84968596e901874c8b4cc8635efc127f6" offset="0" />
1073         </dataarea>
1074      </part>
1075   </software>
1076
1077   <software name="seawart">
1078      <description>Sea War (Fra, Trancart)</description>
1079      <year>1985</year>
1080      <publisher>&lt;type-in&gt;</publisher>
1081      <info name="magazine" value="Hebdogiciel 71" />
1082      <info name="release" value="19850222" />
1083      <info name="author" value="F. Trancart" />
1084      <part name="cass1" interface="x07_cass">
1085         <dataarea name="cass" size="2823">
1086            <rom name="seawar 1_loader.cas" size="2823" crc="ec39ba2c" sha1="58814335387a9bfabe13c9953cc8f22f86e89f05" offset="0" />
1087         </dataarea>
1088      </part>
1089      <part name="cass2" interface="x07_cass">
1090         <dataarea name="cass" size="4910">
1091            <rom name="seawar 1.cas" size="4910" crc="8bf81881" sha1="b5f5d4d63d109b1d941655dd9c52ca70b2c3e535" offset="0" />
1092         </dataarea>
1093      </part>
1094   </software>
1095
1096   <software name="seawarj">
1097      <description>SeaWar (Fra, Jorden)</description>
1098      <year>1986</year>
1099      <publisher>&lt;type-in&gt;</publisher>
1100      <info name="magazine" value="Hebdogiciel 165-167" />
1101      <info name="release" value="19861212" />
1102      <info name="author" value="F. X. Jorden" />
1103      <part name="cass1" interface="x07_cass">
1104         <dataarea name="cass" size="6857">
1105            <rom name="seawar_presentation_l1.cas" size="6857" crc="679ff2f6" sha1="d4c427ccfb35d98be7338a003bec6fdb40e94331" offset="0" />
1106         </dataarea>
1107      </part>
1108      <part name="cass2" interface="x07_cass">
1109         <dataarea name="cass" size="12644">
1110            <rom name="seawar_seawar_l2.cas" size="12644" crc="bebef275" sha1="51bbb5a6d2375ae3c2aa52b4c921f32e2d67b2c2" offset="0" />
1111         </dataarea>
1112      </part>
1113   </software>
1114
1115   <software name="serpent">
1116      <description>Serpentine (Fra)</description>
1117      <year>1985</year>
1118      <publisher>&lt;type-in&gt;</publisher>
1119      <info name="magazine" value="Hebdogiciel 115" />
1120      <info name="release" value="19851227" />
1121      <info name="author" value="F. Vacher" />
1122      <part name="cass1" interface="x07_cass">
1123         <dataarea name="cass" size="4818">
1124            <rom name="serpentine_loader.cas" size="4818" crc="ced74fd6" sha1="18723d2e7393f6b97e52905491e9708121d32725" offset="0" />
1125         </dataarea>
1126      </part>
1127      <part name="cass2" interface="x07_cass">
1128         <dataarea name="cass" size="615">
1129            <rom name="serpentine_auto_datas.cas" size="615" crc="328c035e" sha1="81159c395c87fe4ecd37fae6864311bcb7969b86" offset="0" />
1130         </dataarea>
1131      </part>
1132   </software>
1133
1134   <software name="sorcmaud">
1135      <description>Le Sorcier Maudit (Fra)</description>
1136      <year>1986</year>
1137      <publisher>&lt;type-in&gt;</publisher>
1138      <info name="magazine" value="Hebdogiciel 160-161" />
1139      <info name="release" value="19861107" />
1140      <info name="author" value="Emmanuel De Lapparent" />
1141      <part name="cass1" interface="x07_cass">
1142         <dataarea name="cass" size="6104">
1143            <rom name="le sorcier maudit1.cas" size="6104" crc="99f96d33" sha1="789be9860b0562c2128c2deca2a7310a17da29d0" offset="0" />
1144         </dataarea>
1145      </part>
1146      <part name="cass2" interface="x07_cass">
1147         <dataarea name="cass" size="10157">
1148            <rom name="le sorcier maudit2.cas" size="10157" crc="60cfd3ab" sha1="2917f6e6e64df4cb18f0ffb8791272af454bb1ea" offset="0" />
1149         </dataarea>
1150      </part>
1151   </software>
1152
1153   <software name="space">
1154      <description>Space (Fra)</description>
1155      <year>1985</year>
1156      <publisher>&lt;type-in&gt;</publisher>
1157      <info name="magazine" value="Hebdogiciel 94" />
1158      <info name="release" value="198508xx" />
1159      <info name="author" value="J. M. Joudrier" />
1160      <part name="cass" interface="x07_cass">
1161         <dataarea name="cass" size="6018">
1162            <rom name="space.cas" size="6018" crc="99a8b56e" sha1="2011713b7f0968759b020e874a595d9bcc004651" offset="0" />
1163         </dataarea>
1164      </part>
1165   </software>
1166
1167   <software name="spacepan">
1168      <description>Space-Panic (Fra)</description>
1169      <year>1985</year>
1170      <publisher>&lt;type-in&gt;</publisher>
1171      <info name="magazine" value="Hebdogiciel 92" />
1172      <info name="release" value="19850719" />
1173      <info name="author" value="H. Cimadomo" />
1174      <part name="cass1" interface="x07_cass">
1175         <dataarea name="cass" size="1121">
1176            <rom name="panik1_space panik.cas" size="1121" crc="d558063d" sha1="5015e73cb00cb7f1dd32e2b3b67791cc2e4bbdd0" offset="0" />
1177         </dataarea>
1178      </part>
1179      <part name="cass2" interface="x07_cass">
1180         <dataarea name="cass" size="4943">
1181            <rom name="panik2_space panik.cas" size="4943" crc="9cb639b5" sha1="bf3a208b751294ccfc76b69a294f7eec9ea74558" offset="0" />
1182         </dataarea>
1183      </part>
1184      <part name="cass3" interface="x07_cass">
1185         <dataarea name="cass" size="3985">
1186            <rom name="panik3_space panik.cas" size="3985" crc="4feb422c" sha1="ae3bec50e6a6e6546f3df5b999e952f2aab16bcf" offset="0" />
1187         </dataarea>
1188      </part>
1189   </software>
1190
1191   <software name="starwar">
1192      <description>Star-War (Fra)</description>
1193      <year>1984</year>
1194      <publisher>&lt;type-in&gt;</publisher>
1195      <info name="magazine" value="Hebdogiciel 30" />
1196      <info name="release" value="19840504" />
1197      <info name="author" value="Y. Burgalieres" />
1198      <part name="cass" interface="x07_cass">
1199         <dataarea name="cass" size="5406">
1200            <rom name="starwar.cas" size="5406" crc="87d68cbb" sha1="e59eb2b9733f0d8b5e9532a086f160ede1011430" offset="0" />
1201         </dataarea>
1202      </part>
1203   </software>
1204
1205<!-- FC ERROR -->
1206   <software name="stat" supported="no">
1207      <description>Stat (Fra)</description>
1208      <year>1984</year>
1209      <publisher>&lt;type-in&gt;</publisher>
1210      <info name="magazine" value="Hebdogiciel 24" />
1211      <info name="release" value="19840323" />
1212      <info name="author" value="F. Berthet" />
1213      <part name="cass" interface="x07_cass">
1214         <dataarea name="cass" size="2096">
1215            <rom name="stat.cas" size="2096" crc="3f117b61" sha1="b218de49081c4ede7885da412c79bcf625065eb7" offset="0" />
1216         </dataarea>
1217      </part>
1218   </software>
1219
1220   <software name="stripx07">
1221      <description>Strip X07 (Fra)</description>
1222      <year>1986</year>
1223      <publisher>&lt;type-in&gt;</publisher>
1224      <info name="magazine" value="Hebdogiciel 116" />
1225      <info name="release" value="19860103" />
1226      <info name="author" value="C. Marguet" />
1227      <part name="cass" interface="x07_cass">
1228         <dataarea name="cass" size="11693">
1229            <rom name="strip x07.cas" size="11693" crc="34f2320f" sha1="ba2e8b82f2452a8ad1b6a19f3bb0dafd83bae802" offset="0" />
1230         </dataarea>
1231      </part>
1232   </software>
1233
1234   <software name="supglout">
1235      <description>Super Glouton (Fra)</description>
1236      <year>1985</year>
1237      <publisher>&lt;type-in&gt;</publisher>
1238      <info name="magazine" value="Hebdogiciel 84" />
1239      <info name="release" value="19850524" />
1240      <info name="author" value="J. Chauvin" />
1241      <part name="cass1" interface="x07_cass">
1242         <dataarea name="cass" size="2243">
1243            <rom name="super1_loader.cas" size="2243" crc="ab55c3f3" sha1="bf9d44f3ba25caa67c948c128607d6a19c828b62" offset="0" />
1244         </dataarea>
1245      </part>
1246      <part name="cass2" interface="x07_cass">
1247         <dataarea name="cass" size="5187">
1248            <rom name="super2_super glouton.cas" size="5187" crc="4fe78828" sha1="9d4219d830062a4a3161547744cc79136f7e6560" offset="0" />
1249         </dataarea>
1250      </part>
1251   </software>
1252
1253   <software name="synth">
1254      <description>Synthétiseur (Fra)</description>
1255      <year>1985</year>
1256      <publisher>&lt;type-in&gt;</publisher>
1257      <info name="magazine" value="Hebdogiciel 77" />
1258      <info name="release" value="19850405" />
1259      <info name="author" value="S. Madrange" />
1260      <part name="cass" interface="x07_cass">
1261         <dataarea name="cass" size="5288">
1262            <rom name="synthetiseur.cas" size="5288" crc="7b4760a8" sha1="b5d43b28b432c1774e641eb8aed93799f20aa0cc" offset="0" />
1263         </dataarea>
1264      </part>
1265   </software>
1266
1267   <software name="temple">
1268      <description>Temple (Fra)</description>
1269      <year>1984</year>
1270      <publisher>&lt;type-in&gt;</publisher>
1271      <info name="magazine" value="Hebdogiciel 38" />
1272      <info name="release" value="19840629" />
1273      <info name="author" value="P. Leon" />
1274      <part name="cass" interface="x07_cass">
1275         <dataarea name="cass" size="3249">
1276            <rom name="temple.cas" size="3249" crc="79c08cc7" sha1="adf2cc98258f731281dbcbf042ac897f75eb1e24" offset="0" />
1277         </dataarea>
1278      </part>
1279   </software>
1280
1281   <software name="tictacto">
1282      <description>Tic-Tac-Toe (Fra)</description>
1283      <year>1985</year>
1284      <publisher>&lt;type-in&gt;</publisher>
1285      <info name="alt_title" value="Tridi 4" />
1286      <info name="magazine" value="Hebdogiciel 67" />
1287      <info name="release" value="19850125" />
1288      <info name="author" value="C. Gautier" />
1289      <part name="cass" interface="x07_cass">
1290         <dataarea name="cass" size="4948">
1291            <rom name="tridi4.cas" size="4948" crc="c95fb36a" sha1="f2062db2fe281c22c0b99f7e664035f337bdb618" offset="0" />
1292         </dataarea>
1293      </part>
1294   </software>
1295
1296   <software name="tron">
1297      <description>Tron (Fra)</description>
1298      <year>1984</year>
1299      <publisher>&lt;type-in&gt;</publisher>
1300      <info name="magazine" value="Hebdogiciel 51" />
1301      <info name="release" value="19841005" />
1302      <info name="author" value="Jean Spriet" />
1303      <part name="cass" interface="x07_cass">
1304         <dataarea name="cass" size="3224">
1305            <rom name="tron.cas" size="3224" crc="63ec9046" sha1="4bf08d39e8d7bd03fa056bb1967911fd8b54fc3e" offset="0" />
1306         </dataarea>
1307      </part>
1308   </software>
1309
1310   <software name="uboat">
1311      <description>U~Boat (Fra)</description>
1312      <year>1986</year>
1313      <publisher>&lt;type-in&gt;</publisher>
1314      <info name="magazine" value="Hebdogiciel 137" />
1315      <info name="release" value="19860530" />
1316      <info name="author" value="G. Combret" />
1317      <part name="cass" interface="x07_cass">
1318         <dataarea name="cass" size="3253">
1319            <rom name="uboat1.cas" size="3253" crc="bf7fcdb3" sha1="d55e91e7fef23c99cda9f9b94396c595bd81617c" offset="0" />
1320         </dataarea>
1321      </part>
1322   </software>
1323
1324   <software name="hommeabt">
1325      <description>Un Homme à Abattre (Fra)</description>
1326      <year>1985</year>
1327      <publisher>&lt;type-in&gt;</publisher>
1328      <info name="magazine" value="Hebdogiciel 66" />
1329      <info name="release" value="19850118" />
1330      <info name="author" value="Cyril Giroux &amp; Denis Leluc" />
1331      <part name="cass" interface="x07_cass">
1332         <dataarea name="cass" size="12197">
1333            <rom name="un homme a abattre.cas" size="12197" crc="2b7d3490" sha1="1d5d696b0d58655492afe641725f7f63e9e60237" offset="0" />
1334         </dataarea>
1335      </part>
1336   </software>
1337
1338   <software name="x07car">
1339      <description>X07 CAR (Fra)</description>
1340      <year>1984</year>
1341      <publisher>&lt;type-in&gt;</publisher>
1342      <info name="magazine" value="Hebdogiciel 39" />
1343      <info name="release" value="19840706" />
1344      <info name="author" value="G. Bouquet" />
1345      <part name="cass" interface="x07_cass">
1346         <dataarea name="cass" size="1803">
1347            <rom name="x07car.cas" size="1803" crc="81cdfce6" sha1="e841ed70f7a10cda1d87b359be869b0473bcae28" offset="0" />
1348         </dataarea>
1349      </part>
1350   </software>
1351
1352   <software name="utils">
1353      <description>Utilitaires (Fra)</description>
1354      <year>1984</year>
1355      <publisher>&lt;type-in&gt;</publisher>
1356      <info name="magazine" value="Hebdogiciel 19" />
1357      <info name="release" value="19840217" />
1358      <info name="author" value="Bernard Dupin" />
1359      <part name="cass1" interface="x07_cass">
1360         <feature name="part_id" value="DIR" />
1361         <dataarea name="cass" size="289">
1362            <rom name="4utilitaires_dir.cas" size="289" crc="1884630b" sha1="b175b2e2271b92fbafecd3bb172924271eef1f7b" offset="0" />
1363         </dataarea>
1364      </part>
1365      <part name="cass2" interface="x07_cass">
1366         <feature name="part_id" value="DATEUR" />
1367         <dataarea name="cass" size="250">
1368            <rom name="4utilitaires_dateur.cas" size="250" crc="77b155ff" sha1="38f535eacbaf8e5cc5e0e6b435ab9c8e4dd9b24d" offset="0" />
1369         </dataarea>
1370      </part>
1371      <part name="cass3" interface="x07_cass">
1372         <feature name="part_id" value="NUMERO" />
1373         <dataarea name="cass" size="244">
1374            <rom name="4utilitaires_numero.cas" size="244" crc="24b49d0d" sha1="aaaf368ae838e7c948767782f4ff1b1958ccf5ff" offset="0" />
1375         </dataarea>
1376      </part>
1377      <part name="cass4" interface="x07_cass">
1378         <feature name="part_id" value="DATE" />
1379         <dataarea name="cass" size="278">
1380            <rom name="4utilitaires_date.cas" size="278" crc="f2840be8" sha1="ce75ecdd3e5cfdd87afbc563570e446d2a601090" offset="0" />
1381         </dataarea>
1382      </part>
1383   </software>
1384
1385</softwarelist>
trunk/makefile
r241752r241753
910910   $(CC) $(CDEFS) $(CFLAGS) -c $(SRC)/version.c -o $(VERSIONOBJ)
911911   @echo Linking $@...
912912ifeq ($(TARGETOS),emscripten)
913   # Emscripten's linker seems to be stricter about the ordering of .a files
913# Emscripten's linker seems to be stricter about the ordering of .a files
914914   $(LD) $(LDFLAGS) $(LDFLAGSEMULATOR) $(VERSIONOBJ) -Wl,--start-group $^ -Wl,--end-group $(LIBS) -o $@
915915else
916916   $(LD) $(LDFLAGS) $(LDFLAGSEMULATOR) $(VERSIONOBJ) $^ $(LIBS) -o $@
trunk/src/build/flags_clang.mak
r241752r241753
2020CCOMFLAGS += -Wno-inline-new-delete
2121# caused by src/mess/drivers/x07.c, src/osd/sdl/window.c, src/emu/sound/disc_mth.inc
2222CCOMFLAGS += -Wno-absolute-value
23# caused by src/emu/bus/isa/s3virge.c, src/emu/cpu/drcfe.c, src/emu/video/pc_vga.c
24CCOMFLAGS +=-Wno-dynamic-class-memaccess
2523# these were disabled because of bugs in older clang versions
26CCOMFLAGS += -Wformat-security
24CCOMFLAGS += -Wformat-security -Wconstant-logical-operand
2725# these show up when compiling as c++11
2826CCOMFLAGS += -Wno-deprecated-register -Wno-reserved-user-defined-literal -Wno-c++11-narrowing
2927# TODO: add proper detection of XCode 6.0.1
trunk/src/emu/bus/a2bus/a2pic.c
r241752r241753
2222#define PIC_CENTRONICS_TAG "pic_ctx"
2323
2424MACHINE_CONFIG_FRAGMENT( pic )
25   MCFG_CENTRONICS_ADD(PIC_CENTRONICS_TAG, centronics_printers, "printer")
25   MCFG_CENTRONICS_ADD(PIC_CENTRONICS_TAG, centronics_devices, "printer")
2626   MCFG_CENTRONICS_DATA_INPUT_BUFFER("ctx_data_in")
2727   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(a2bus_pic_device, ack_w))
2828
trunk/src/emu/bus/abckb/abc99.c
r241752r241753
4949    - verify cursor keys
5050    - language DIP
5151    - mouse
52    - investigate unknown ROMs
5352    - MCS-48 PC:01DC - Unimplemented opcode = 75
5453        - 75 = ENT0 CLK : enable CLK (unscaled_clock/3) output on T0
5554        - halt Z2 when Z5 is reset, resume Z2 when Z5 executes ENT0 CLK instruction
r241752r241753
8180//-------------------------------------------------
8281
8382ROM_START( abc99 )
84   ROM_REGION( 0x800, I8035_Z2_TAG, 0 )
85   ROM_LOAD( "107268-17.z3", 0x000, 0x800, CRC(2f60cc35) SHA1(ebc6af9cd0a49a0d01698589370e628eebb6221c) )
83   ROM_DEFAULT_BIOS("107268")
84   ROM_SYSTEM_BIOS( 0, "107268", "107268-17" )
85   ROM_SYSTEM_BIOS( 1, "106819", "106819-09" )
8686
87   ROM_REGION( 0x1000, I8035_Z2_TAG, 0 )
88   ROMX_LOAD( "107268-17.z3", 0x0000, 0x0800, CRC(2f60cc35) SHA1(ebc6af9cd0a49a0d01698589370e628eebb6221c), ROM_BIOS(1) )
89   ROMX_LOAD( "106819-09.z3", 0x0000, 0x1000, CRC(ffe32a71) SHA1(fa2ce8e0216a433f9bbad0bdd6e3dc0b540f03b7), ROM_BIOS(2) ) // ABC 99 6490423-01
90
8791   ROM_REGION( 0x800, I8035_Z5_TAG, 0 )
88   ROM_LOAD( "107268-16.z6", 0x000, 0x800, CRC(785ec0c6) SHA1(0b261beae20dbc06fdfccc50b19ea48b5b6e22eb) )
89
90   ROM_REGION( 0x1800, "unknown", 0)
91   ROM_LOAD( "106819-09.bin", 0x0000, 0x1000, CRC(ffe32a71) SHA1(fa2ce8e0216a433f9bbad0bdd6e3dc0b540f03b7) )
92   ROM_LOAD( "107268-64.bin", 0x1000, 0x0800, CRC(e33683ae) SHA1(0c1d9e320f82df05f4804992ef6f6f6cd20623f3) )
92   ROMX_LOAD( "107268-16.z6", 0x0000, 0x0800, CRC(785ec0c6) SHA1(0b261beae20dbc06fdfccc50b19ea48b5b6e22eb), ROM_BIOS(1) )
93   ROMX_LOAD( "107268-64.z6", 0x0000, 0x0800, CRC(e33683ae) SHA1(0c1d9e320f82df05f4804992ef6f6f6cd20623f3), ROM_BIOS(2) )
9394ROM_END
9495
9596
r241752r241753
108109//-------------------------------------------------
109110
110111static ADDRESS_MAP_START( abc99_z2_mem, AS_PROGRAM, 8, abc99_device )
111   AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION(I8035_Z2_TAG, 0)
112   AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION(I8035_Z2_TAG, 0)
112113ADDRESS_MAP_END
113114
114115
r241752r241753
488489//  abc99_device - constructor
489490//-------------------------------------------------
490491
491abc99_device::abc99_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
492   : device_t(mconfig, ABC99, "Luxor ABC 99", tag, owner, clock, "abc99", __FILE__),
493      abc_keyboard_interface(mconfig, *this),
494      m_maincpu(*this, I8035_Z2_TAG),
495      m_mousecpu(*this, I8035_Z5_TAG),
496      m_speaker(*this, "speaker"),
497      m_z14(*this, "Z14"),
498      m_mouseb(*this, "MOUSEB"),
499      m_si(1),
500      m_si_en(1),
501      m_so_z2(1),
502      m_so_z5(1),
503      m_keydown(0),
504      m_t1_z2(0),
505      m_t1_z5(0),
506      m_led_en(0),
507      m_reset(1),
508      m_txd(1)
492abc99_device::abc99_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
493   device_t(mconfig, ABC99, "Luxor ABC 99", tag, owner, clock, "abc99", __FILE__),
494   abc_keyboard_interface(mconfig, *this),
495   m_maincpu(*this, I8035_Z2_TAG),
496   m_mousecpu(*this, I8035_Z5_TAG),
497   m_speaker(*this, "speaker"),
498   m_z14(*this, "Z14"),
499   m_mouseb(*this, "MOUSEB"),
500   m_si(1),
501   m_si_en(1),
502   m_so_z2(1),
503   m_so_z5(1),
504   m_keydown(0),
505   m_t1_z2(0),
506   m_t1_z5(0),
507   m_led_en(0),
508   m_reset(1),
509   m_txd(1)
509510{
510511}
511512
trunk/src/emu/bus/adam/ide.c
r241752r241753
6565//-------------------------------------------------
6666static MACHINE_CONFIG_FRAGMENT( adam_ata )
6767   MCFG_ATA_INTERFACE_ADD(ATA_TAG, ata_devices, "hdd", NULL, false)
68   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
68   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
6969
7070   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
7171MACHINE_CONFIG_END
trunk/src/emu/bus/adamnet/spi.c
r241752r241753
8585
8686   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
8787
88   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
88   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
8989   MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in")
9090   MCFG_DEVICE_ADD("cent_data_in", INPUT_BUFFER, 0)
9191   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
trunk/src/emu/bus/astrocde/exp.c
r0r241753
1// license:BSD-3-Clause
2// copyright-holders:etabeta
3/***********************************************************************************************************
4
5    Bally Astrocade Expansion port
6
7 ***********************************************************************************************************/
8
9
10#include "emu.h"
11#include "exp.h"
12
13//**************************************************************************
14//  GLOBAL VARIABLES
15//**************************************************************************
16
17const device_type ASTROCADE_EXP_SLOT = &device_creator<astrocade_exp_device>;
18
19
20device_astrocade_card_interface::device_astrocade_card_interface(const machine_config &mconfig, device_t &device)
21   : device_slot_card_interface(mconfig, device)
22{
23}
24
25
26device_astrocade_card_interface::~device_astrocade_card_interface()
27{
28}
29
30
31//**************************************************************************
32//  LIVE DEVICE
33//**************************************************************************
34
35//-------------------------------------------------
36//  astrocade_exp_device - constructor
37//-------------------------------------------------
38astrocade_exp_device::astrocade_exp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
39                  device_t(mconfig, ASTROCADE_EXP_SLOT, "Bally Astrocade expansion", tag, owner, clock, "astrocde_exp", __FILE__),
40                  device_slot_interface(mconfig, *this),
41                  m_card_mounted(false)
42{
43}
44
45
46//-------------------------------------------------
47//  astrocade_exp_device - destructor
48//-------------------------------------------------
49
50astrocade_exp_device::~astrocade_exp_device()
51{
52}
53
54//-------------------------------------------------
55//  device_start - device-specific startup
56//-------------------------------------------------
57
58void astrocade_exp_device::device_start()
59{
60   m_card = dynamic_cast<device_astrocade_card_interface *>(get_card_device());
61   if (m_card)
62      m_card_mounted = true;
63}
64
65/*-------------------------------------------------
66 read
67 -------------------------------------------------*/
68
69READ8_MEMBER(astrocade_exp_device::read)
70{
71   if (m_card)
72      return m_card->read(space, offset);
73   else
74      return 0xff;
75}
76
77/*-------------------------------------------------
78 write
79 -------------------------------------------------*/
80
81WRITE8_MEMBER(astrocade_exp_device::write)
82{
83   if (m_card)
84      m_card->write(space, offset, data);
85}
trunk/src/emu/bus/astrocde/exp.h
r0r241753
1// license:BSD-3-Clause
2// copyright-holders:etabeta
3#ifndef __ASTROCADE_EXP_H
4#define __ASTROCADE_EXP_H
5
6// ======================> device_astrocade_card_interface
7
8class device_astrocade_card_interface : public device_slot_card_interface
9{
10public:
11   // construction/destruction
12   device_astrocade_card_interface(const machine_config &mconfig, device_t &device);
13   virtual ~device_astrocade_card_interface();
14
15   // reading and writing
16   virtual DECLARE_READ8_MEMBER(read) { return 0xff; }
17   virtual DECLARE_WRITE8_MEMBER(write) {}
18
19protected:
20};
21
22
23// ======================> astrocade_exp_device
24
25class astrocade_exp_device : public device_t,
26                        public device_slot_interface
27{
28public:
29   // construction/destruction
30   astrocade_exp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
31   virtual ~astrocade_exp_device();
32
33   // device-level overrides
34   virtual void device_start();
35
36   bool get_card_mounted() { return m_card_mounted; }
37   
38   // reading and writing
39   virtual DECLARE_READ8_MEMBER(read);
40   virtual DECLARE_WRITE8_MEMBER(write);
41
42protected:
43   bool m_card_mounted;
44   device_astrocade_card_interface* m_card;
45};
46
47
48
49// device type definition
50extern const device_type ASTROCADE_EXP_SLOT;
51
52
53#define MCFG_ASTROCADE_EXPANSION_SLOT_ADD(_tag, _slot_intf, _def_slot) \
54   MCFG_DEVICE_ADD(_tag, ASTROCADE_EXP_SLOT, 0) \
55   MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
56
57#endif
trunk/src/emu/bus/astrocde/ram.c
r0r241753
1// license:BSD-3-Clause
2// copyright-holders:etabeta
3/***********************************************************************************************************
4
5
6  Bally Astrocade RAM expansion emulation
7
8      RAM Expansions (info below courtesy of Paul Thacker)
9
10      Several third party RAM expansions have been made for the Astrocade.  These
11      allow access to various ranges of the expansion memory ($5000 to $FFFF).
12      A RAM expansion is required to use extended BASIC programs like Blue RAM BASIC
13      and VIPERSoft BASIC.  All of the expansions also have a RAM protect switch, which
14      can be flipped at any time to make the RAM act like ROM.  Extended BASIC
15      programs need access to the RAM and won't work with RAM protect enabled, but
16      this can be useful with Bally and Astrocade BASIC.  They also have a range switch
17      (not implemented).  The default position is 6K, but it can be switched to
18      2K.  This means that the expanded memory starting at $6000 will instead be
19      mapped to the cartridge memory starting at $2000.  So it would be possible to
20      load a cartridge program from tape into the expansion memory, then flip the range
21      switch and run it as a cartridge.  This is useful for cartridge development.
22     
23      Blue RAM -- available in 4K, 16K, and 32K.  These also use an INS8154 chip,
24      (not yet implemented) which has an additional $80 bytes of RAM mapped
25      immediately after the end of the expansion address space.  This memory
26      can't be write protected.  The INS8154 has I/O features needed for loading
27      tape programs into Blue RAM BASIC, as well as running the Blue RAM Utility cart.
28      4K:  $6000 to $6FFF (can't run VIPERSoft BASIC, because this program needs memory
29      past this range)
30      16K:  $6000 to $9FFF
31      32K:  $6000 to $DFFF
32     
33      VIPER System 1 -- This is available in 16K only.  It also includes a keyboard (not implemented).
34      16K:  $6000 to $9FFF
35     
36      Lil' WHITE RAM -- This is available in 32K only.  Attempts to read and write
37      to memory outside of its address range ($D000 to $FFFF) are mapped to the expansion
38      memory $5000 to $7FFF.  The current implementation won't allow the shadow RAM area
39      to be accessed when RAM protect is on, but there is no known software that will
40      access the upper range of the expansion RAM when RAM protect is enabled.
41      32K:  $5000 to $CFFF
42     
43      R&L 64K RAM Board -- This is a highly configurable kit.  RAM can be installed in
44      2K increments.  So, the entire 44K expansion memory can be filled.  It is also
45      possible to override the rest of the memory map with RAM (not implemented).
46      There are 32 switches allowing users to activate and deactivate each 2K block (not implemented).
47      RAM write protection can be implemented in three ranges through jumpers or by
48      installing switches.  The ranges are $0000 to $0FFF (first 4K), $0000 to $3FFF (first 16K),
49      and $0000 to $FFFF (all 64K).  The current implementation is for 44K expansion memory mapped from
50      $5000 to $FFFF, with only a single write protect covering this entire range.
51 
52 ***********************************************************************************************************/
53
54
55#include "emu.h"
56#include "ram.h"
57
58
59//-------------------------------------------------
60//  astrocade_rom_device - constructor
61//-------------------------------------------------
62
63const device_type ASTROCADE_BLUERAM_4K  = &device_creator<astrocade_blueram_4k_device>;
64const device_type ASTROCADE_BLUERAM_16K = &device_creator<astrocade_blueram_16k_device>;
65const device_type ASTROCADE_BLUERAM_32K = &device_creator<astrocade_blueram_32k_device>;
66const device_type ASTROCADE_VIPER_SYS1  = &device_creator<astrocade_viper_sys1_device>;
67const device_type ASTROCADE_WHITERAM    = &device_creator<astrocade_whiteram_device>;
68const device_type ASTROCADE_RL64RAM     = &device_creator<astrocade_rl64ram_device>;
69
70
71astrocade_blueram_4k_device::astrocade_blueram_4k_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)
72               : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
73                  device_astrocade_card_interface(mconfig, *this),
74                  m_write_prot(*this, "RAM_PROTECT")
75{
76}
77
78astrocade_blueram_4k_device::astrocade_blueram_4k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
79               : device_t(mconfig, ASTROCADE_BLUERAM_4K, "Bally Astrocade Blue RAM 4K", tag, owner, clock, "astrocade_br4", __FILE__),
80                  device_astrocade_card_interface(mconfig, *this),
81                  m_write_prot(*this, "RAM_PROTECT")
82{
83}
84
85astrocade_blueram_16k_device::astrocade_blueram_16k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
86               : astrocade_blueram_4k_device(mconfig, ASTROCADE_BLUERAM_16K, "Bally Astrocade Blue RAM 16K", tag, owner, clock, "astrocade_br16", __FILE__)
87{
88}
89
90astrocade_blueram_32k_device::astrocade_blueram_32k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
91               : astrocade_blueram_4k_device(mconfig, ASTROCADE_BLUERAM_32K, "Bally Astrocade Blue RAM 32K", tag, owner, clock, "astrocade_br32", __FILE__)
92{
93}
94
95astrocade_viper_sys1_device::astrocade_viper_sys1_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
96               : device_t(mconfig, ASTROCADE_VIPER_SYS1, "Bally Astrocade Viper System 1", tag, owner, clock, "astrocade_vs1", __FILE__),
97                  device_astrocade_card_interface(mconfig, *this),
98                  m_write_prot(*this, "RAM_PROTECT")
99{
100}
101
102astrocade_whiteram_device::astrocade_whiteram_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
103               : device_t(mconfig, ASTROCADE_WHITERAM, "Bally Astrocade Lil' White RAM 32K", tag, owner, clock, "astrocade_lwr", __FILE__),
104                  device_astrocade_card_interface(mconfig, *this),
105                  m_write_prot(*this, "RAM_PROTECT")
106{
107}
108
109astrocade_rl64ram_device::astrocade_rl64ram_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
110               : device_t(mconfig, ASTROCADE_RL64RAM, "Bally Astrocade R&L RAM 64K", tag, owner, clock, "astrocade_rl64", __FILE__),
111                  device_astrocade_card_interface(mconfig, *this),
112                  m_write_prot(*this, "RAM_PROTECT")
113{
114}
115
116
117//-------------------------------------------------
118//  RAM Write protect switch
119//-------------------------------------------------
120
121static INPUT_PORTS_START( exp_switches )
122   PORT_START("RAM_PROTECT")
123   PORT_CONFNAME( 0x01, 0x00, "Write Protect RAM")
124   PORT_CONFSETTING( 0x00, DEF_STR(Off))
125   PORT_CONFSETTING( 0x01, DEF_STR(On))
126INPUT_PORTS_END
127
128
129ioport_constructor astrocade_blueram_4k_device::device_input_ports() const
130{
131   return INPUT_PORTS_NAME( exp_switches );
132}
133
134ioport_constructor astrocade_viper_sys1_device::device_input_ports() const
135{
136   return INPUT_PORTS_NAME( exp_switches );
137}
138
139ioport_constructor astrocade_whiteram_device::device_input_ports() const
140{
141   return INPUT_PORTS_NAME( exp_switches );
142}
143
144ioport_constructor astrocade_rl64ram_device::device_input_ports() const
145{
146   return INPUT_PORTS_NAME( exp_switches );
147}
148
149/*-------------------------------------------------
150 specific handlers
151 -------------------------------------------------*/
152
153// Blue RAM expansions have RAM starting at 0x6000, up to the RAM size
154READ8_MEMBER(astrocade_blueram_4k_device::read)
155{
156   if (offset >= 0x1000 && offset < 0x1000 + m_ram.bytes())
157      return m_ram[offset - 0x1000];
158   else
159      return 0;
160}
161
162WRITE8_MEMBER(astrocade_blueram_4k_device::write)
163{
164   if (offset >= 0x1000 && offset < 0x1000 + m_ram.bytes() && !m_write_prot->read())
165      m_ram[offset - 0x1000] = data;
166}
167
168
169
170// Viper System 1 expansion has RAM in 0x6000-0x9fff
171READ8_MEMBER(astrocade_viper_sys1_device::read)
172{
173   if (offset >= 0x1000 && offset < 0xa000)
174      return m_ram[offset - 0x1000];
175   else
176      return 0;
177}
178
179WRITE8_MEMBER(astrocade_viper_sys1_device::write)
180{
181   if (offset >= 0x1000 && offset < 0xa000 && !m_write_prot->read())
182      m_ram[offset - 0x1000] = data;
183}
184
185
186
187// Lil' WHITE RAM expansion has RAM in 0x5000-0xcfff + a mirror of the first 0x3000 bytes up to 0xffff
188READ8_MEMBER(astrocade_whiteram_device::read)
189{
190   return m_ram[offset % 0x8000];
191}
192
193WRITE8_MEMBER(astrocade_whiteram_device::write)
194{
195   if (!m_write_prot->read())
196      m_ram[offset % 0x8000] = data;
197}
198
199
200
201// R&L 64K RAM Board (44KB installed) has RAM in 0x5000-0xffff
202READ8_MEMBER(astrocade_rl64ram_device::read)
203{
204   return m_ram[offset];
205}
206
207WRITE8_MEMBER(astrocade_rl64ram_device::write)
208{
209   if (!m_write_prot->read())
210      m_ram[offset] = data;
211}
212
213
trunk/src/emu/bus/astrocde/ram.h
r0r241753
1// license:BSD-3-Clause
2// copyright-holders:etabeta
3#ifndef __ASTROCADE_RAM_H
4#define __ASTROCADE_RAM_H
5
6#include "exp.h"
7
8
9// ======================> astrocade_blueram_4k_device
10
11class astrocade_blueram_4k_device : public device_t,
12                        public device_astrocade_card_interface
13{
14public:
15   // construction/destruction
16   astrocade_blueram_4k_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);
17   astrocade_blueram_4k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
18
19   // device-level overrides
20   virtual void device_start() { m_ram.resize(0x1000); save_item(NAME(m_ram)); }
21   virtual void device_reset() {}
22   virtual ioport_constructor device_input_ports() const;
23
24   // reading and writing
25   virtual DECLARE_READ8_MEMBER(read);
26   virtual DECLARE_WRITE8_MEMBER(write);
27
28protected:
29   dynamic_buffer m_ram;
30   required_ioport m_write_prot;
31};
32
33// ======================> astrocade_blueram_16k_device
34
35class astrocade_blueram_16k_device : public astrocade_blueram_4k_device
36{
37public:
38   // construction/destruction
39   astrocade_blueram_16k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
40   
41   virtual void device_start() { m_ram.resize(0x4000); save_item(NAME(m_ram)); }
42};
43
44// ======================> astrocade_blueram_32k_device
45
46class astrocade_blueram_32k_device : public astrocade_blueram_4k_device
47{
48public:
49   // construction/destruction
50   astrocade_blueram_32k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
51   
52   virtual void device_start() { m_ram.resize(0x8000); save_item(NAME(m_ram)); }
53};
54
55// ======================> astrocade_viper_sys1_device
56
57class astrocade_viper_sys1_device : public device_t,
58                        public device_astrocade_card_interface
59{
60public:
61   // construction/destruction
62   astrocade_viper_sys1_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
63   
64   // device-level overrides
65   virtual void device_start() { m_ram.resize(0x4000); save_item(NAME(m_ram)); }
66   virtual void device_reset() {}
67   virtual ioport_constructor device_input_ports() const;
68
69   // reading and writing
70   virtual DECLARE_READ8_MEMBER(read);
71   virtual DECLARE_WRITE8_MEMBER(write);
72   
73private:
74   dynamic_buffer m_ram;
75   required_ioport m_write_prot;
76};
77
78// ======================> astrocade_whiteram_device
79
80class astrocade_whiteram_device : public device_t,
81                        public device_astrocade_card_interface
82{
83public:
84   // construction/destruction
85   astrocade_whiteram_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
86   
87   // device-level overrides
88   virtual void device_start() { m_ram.resize(0x8000); save_item(NAME(m_ram)); }
89   virtual void device_reset() {}
90   virtual ioport_constructor device_input_ports() const;
91   
92   // reading and writing
93   virtual DECLARE_READ8_MEMBER(read);
94   virtual DECLARE_WRITE8_MEMBER(write);
95   
96private:
97   dynamic_buffer m_ram;
98   required_ioport m_write_prot;
99};
100
101// ======================> astrocade_rl64ram_device
102
103class astrocade_rl64ram_device : public device_t,
104                     public device_astrocade_card_interface
105{
106public:
107   // construction/destruction
108   astrocade_rl64ram_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
109   
110   // device-level overrides
111   virtual void device_start() { m_ram.resize(0xb000); save_item(NAME(m_ram)); }
112   virtual void device_reset() {}
113   virtual ioport_constructor device_input_ports() const;
114   
115   // reading and writing
116   virtual DECLARE_READ8_MEMBER(read);
117   virtual DECLARE_WRITE8_MEMBER(write);
118   
119private:
120   dynamic_buffer m_ram;
121   required_ioport m_write_prot;
122};
123
124
125
126// device type definition
127extern const device_type ASTROCADE_BLUERAM_4K;
128extern const device_type ASTROCADE_BLUERAM_16K;
129extern const device_type ASTROCADE_BLUERAM_32K;
130extern const device_type ASTROCADE_VIPER_SYS1;
131extern const device_type ASTROCADE_WHITERAM;
132extern const device_type ASTROCADE_RL64RAM;
133
134
135#endif
trunk/src/emu/bus/bus.mak
r241752r241753
129129OBJDIRS += $(BUSOBJ)/astrocde
130130BUSOBJS += $(BUSOBJ)/astrocde/slot.o
131131BUSOBJS += $(BUSOBJ)/astrocde/rom.o
132BUSOBJS += $(BUSOBJ)/astrocde/exp.o
133BUSOBJS += $(BUSOBJ)/astrocde/ram.o
132134endif
133135
134136
r241752r241753
331333BUSOBJS += $(BUSOBJ)/dmv/k220.o
332334BUSOBJS += $(BUSOBJ)/dmv/k230.o
333335BUSOBJS += $(BUSOBJ)/dmv/k233.o
336BUSOBJS += $(BUSOBJ)/dmv/k803.o
334337BUSOBJS += $(BUSOBJ)/dmv/k806.o
335338BUSOBJS += $(BUSOBJ)/dmv/ram.o
336339endif
r241752r241753
508511BUSOBJS += $(BUSOBJ)/isa/sc499.o
509512BUSOBJS += $(BUSOBJ)/isa/aga.o
510513BUSOBJS += $(BUSOBJ)/isa/svga_trident.o
514BUSOBJS += $(BUSOBJ)/isa/num9rev.o
511515endif
512516
513517#-------------------------------------------------
r241752r241753
987991
988992#-------------------------------------------------
989993#
990#@src/emu/bus/pci/pci.h,BUSES += PCI
994#@src/emu/bus/lpci/pci.h,BUSES += LPCI
991995#-------------------------------------------------
992996
993ifneq ($(filter PCI,$(BUSES)),)
994OBJDIRS += $(BUSOBJ)/pci
995BUSOBJS += $(BUSOBJ)/pci/pci.o
996BUSOBJS += $(BUSOBJ)/pci/cirrus.o
997BUSOBJS += $(BUSOBJ)/pci/i82371ab.o
998BUSOBJS += $(BUSOBJ)/pci/i82371sb.o
999BUSOBJS += $(BUSOBJ)/pci/i82439tx.o
1000BUSOBJS += $(BUSOBJ)/pci/northbridge.o
1001BUSOBJS += $(BUSOBJ)/pci/southbridge.o
1002BUSOBJS += $(BUSOBJ)/pci/mpc105.o
997ifneq ($(filter LPCI,$(BUSES)),)
998OBJDIRS += $(BUSOBJ)/lpci
999BUSOBJS += $(BUSOBJ)/lpci/pci.o
1000BUSOBJS += $(BUSOBJ)/lpci/cirrus.o
1001BUSOBJS += $(BUSOBJ)/lpci/i82371ab.o
1002BUSOBJS += $(BUSOBJ)/lpci/i82371sb.o
1003BUSOBJS += $(BUSOBJ)/lpci/i82439tx.o
1004BUSOBJS += $(BUSOBJ)/lpci/northbridge.o
1005BUSOBJS += $(BUSOBJ)/lpci/southbridge.o
1006BUSOBJS += $(BUSOBJ)/lpci/mpc105.o
10031007endif
10041008
10051009#-------------------------------------------------
r241752r241753
12921296BUSOBJS += $(BUSOBJ)/cpc/mface2.o
12931297BUSOBJS += $(BUSOBJ)/cpc/symbfac2.o
12941298BUSOBJS += $(BUSOBJ)/cpc/amdrum.o
1299BUSOBJS += $(BUSOBJ)/cpc/playcity.o
12951300endif
12961301
12971302#-------------------------------------------------
trunk/src/emu/bus/c64/geocable.c
r241752r241753
3333//-------------------------------------------------
3434
3535static MACHINE_CONFIG_FRAGMENT( c64_geocable )
36   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
36   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
3737   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(c64_geocable_device, output_b))
3838MACHINE_CONFIG_END
3939
trunk/src/emu/bus/cbmiec/c1541.c
r241752r241753
887887   MCFG_PIA_WRITEPB_HANDLER(WRITE8(c1541_prologic_dos_classic_device, pia_pb_w))
888888   MCFG_PIA_CA2_HANDLER(DEVWRITELINE(CENTRONICS_TAG, centronics_device, write_strobe))
889889
890   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
890   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
891891   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(MC6821_TAG, pia6821_device, ca1_w))
892892   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
893893MACHINE_CONFIG_END
trunk/src/emu/bus/centronics/ctronics.c
r241752r241753
120120#include "epson_ex800.h"
121121#include "epson_lx800.h"
122122#include "printer.h"
123#include "covox.h"
123124
124SLOT_INTERFACE_START(centronics_printers)
125SLOT_INTERFACE_START(centronics_devices)
125126   SLOT_INTERFACE("pl80", COMX_PL80)
126127   SLOT_INTERFACE("ex800", EPSON_EX800)
127128   SLOT_INTERFACE("lx800", EPSON_LX800)
128129   SLOT_INTERFACE("lx810l", EPSON_LX810L)
129130   SLOT_INTERFACE("ap2000", EPSON_AP2000)
130131   SLOT_INTERFACE("printer", CENTRONICS_PRINTER)
132   SLOT_INTERFACE("covox", CENTRONICS_COVOX)
133   SLOT_INTERFACE("covox_stereo", CENTRONICS_COVOX_STEREO)
131134SLOT_INTERFACE_END
trunk/src/emu/bus/centronics/ctronics.h
r241752r241753
218218};
219219
220220
221SLOT_INTERFACE_EXTERN( centronics_printers );
221SLOT_INTERFACE_EXTERN( centronics_devices );
222222
223223#endif
trunk/src/emu/bus/comx35/printer.c
r241752r241753
5454
5555
5656//-------------------------------------------------
57//  SLOT_INTERFACE( comx_centronics_printer )
58//-------------------------------------------------
59
60SLOT_INTERFACE_START(comx_centronics_printer)
61   SLOT_INTERFACE("printer", CENTRONICS_PRINTER)
62   //SLOT_INTERFACE("pl80", COMX_PL80)
63SLOT_INTERFACE_END
64
65
66//-------------------------------------------------
6757//  MACHINE_CONFIG_FRAGMENT( comx_prn )
6858//-------------------------------------------------
6959
7060static MACHINE_CONFIG_FRAGMENT( comx_prn )
71   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, comx_centronics_printer, "printer")
61   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
7262   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit0))
7363   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit1))
7464   MCFG_CENTRONICS_PERROR_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit2))
trunk/src/emu/bus/cpc/cpcexp.h
r241752r241753
7878
7979   // reset
8080   virtual void cpc_reset_w() { };
81   virtual WRITE_LINE_MEMBER( cursor_w ) { };
8182
8283   void set_rom_bank(UINT8 sel) { m_rom_sel = sel; }  // tell device the currently selected ROM
8384   UINT8 get_rom_bank() { return m_rom_sel; }
r241752r241753
108109   DECLARE_WRITE_LINE_MEMBER( romdis_w );
109110
110111   void set_rom_bank(UINT8 sel) { if(m_card) m_card->set_rom_bank(sel); }  // tell device the currently selected ROM
112   DECLARE_WRITE_LINE_MEMBER( cursor_w ) { if(m_card) m_card->cursor_w(state); }  // pass on CRTC Cursor signal
111113
112114protected:
113115   // device-level overrides
trunk/src/emu/bus/cpc/playcity.c
r0r241753
1/*
2   PlayCity expansion device
3
4   Z80 CTC
5   2x YMZ294 (clocks provided by CTC)
6
7   TODO:
8   IRQs aren't working currently, the Z80CTC core requires the daisy chain setup to acknowledge IRQs properly, and that can't be used in a slot device currently.
9*/
10
11#include "playcity.h"
12#include "includes/amstrad.h"
13
14//**************************************************************************
15//  DEVICE DEFINITIONS
16//**************************************************************************
17
18const device_type CPC_PLAYCITY = &device_creator<cpc_playcity_device>;
19
20// device machine config
21static MACHINE_CONFIG_FRAGMENT( cpc_playcity )
22   MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_4MHz)
23   MCFG_Z80CTC_ZC1_CB(WRITELINE(cpc_playcity_device,ctc_zc1_cb))
24   MCFG_Z80CTC_ZC2_CB(DEVWRITELINE("ctc",z80ctc_device,trg3))
25   MCFG_Z80CTC_INTR_CB(WRITELINE(cpc_playcity_device,ctc_intr_cb))
26
27   MCFG_SPEAKER_STANDARD_STEREO("lspeaker","rspeaker")
28   MCFG_SOUND_ADD("ymz_1",YMZ294,XTAL_4MHz)  // when timer is not set, operates at 4MHz (interally divided by 2, so equivalent to the ST)
29   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30)
30   MCFG_SOUND_ADD("ymz_2",YMZ294,XTAL_4MHz)
31   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30)
32
33   // pass-through
34   MCFG_DEVICE_ADD("exp", CPC_EXPANSION_SLOT, 0)
35   MCFG_DEVICE_SLOT_INTERFACE(cpc_exp_cards, NULL, false)
36   MCFG_CPC_EXPANSION_SLOT_OUT_IRQ_CB(DEVWRITELINE("^", cpc_expansion_slot_device, irq_w))
37   MCFG_CPC_EXPANSION_SLOT_OUT_NMI_CB(DEVWRITELINE("^", cpc_expansion_slot_device, nmi_w))
38   MCFG_CPC_EXPANSION_SLOT_OUT_ROMDIS_CB(DEVWRITELINE("^", cpc_expansion_slot_device, romdis_w))  // ROMDIS
39
40MACHINE_CONFIG_END
41
42
43machine_config_constructor cpc_playcity_device::device_mconfig_additions() const
44{
45   return MACHINE_CONFIG_NAME( cpc_playcity );
46}
47
48
49//**************************************************************************
50//  LIVE DEVICE
51//**************************************************************************
52
53cpc_playcity_device::cpc_playcity_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
54   device_t(mconfig, CPC_PLAYCITY, "PlayCity", tag, owner, clock, "cpc_playcity", __FILE__),
55   device_cpc_expansion_card_interface(mconfig, *this),
56   m_ctc(*this,"ctc"),
57   m_ymz1(*this,"ymz_1"),
58   m_ymz2(*this,"ymz_2")
59{
60}
61
62//-------------------------------------------------
63//  device_start - device-specific startup
64//-------------------------------------------------
65
66void cpc_playcity_device::device_start()
67{
68   device_t* cpu = machine().device("maincpu");
69   address_space& space = cpu->memory().space(AS_IO);
70   m_slot = dynamic_cast<cpc_expansion_slot_device *>(owner());
71
72   space.install_readwrite_handler(0xf880,0xf883,0,0,read8_delegate(FUNC(cpc_playcity_device::ctc_r),this),write8_delegate(FUNC(cpc_playcity_device::ctc_w),this));
73   space.install_readwrite_handler(0xf884,0xf884,0,0,read8_delegate(FUNC(cpc_playcity_device::ymz1_data_r),this),write8_delegate(FUNC(cpc_playcity_device::ymz1_data_w),this));
74   space.install_readwrite_handler(0xf888,0xf888,0,0,read8_delegate(FUNC(cpc_playcity_device::ymz2_data_r),this),write8_delegate(FUNC(cpc_playcity_device::ymz2_data_w),this));
75   space.install_write_handler(0xf984,0xf984,0,0,write8_delegate(FUNC(cpc_playcity_device::ymz1_address_w),this));
76   space.install_write_handler(0xf988,0xf988,0,0,write8_delegate(FUNC(cpc_playcity_device::ymz2_address_w),this));
77}
78
79//-------------------------------------------------
80//  device_reset - device-specific reset
81//-------------------------------------------------
82
83void cpc_playcity_device::device_reset()
84{
85}
86
87
88READ8_MEMBER(cpc_playcity_device::ctc_r)
89{
90   return m_ctc->read(space,offset);
91}
92
93WRITE8_MEMBER(cpc_playcity_device::ctc_w)
94{
95   m_ctc->write(space,offset,data);
96   if(offset == 0)
97      update_ymz_clock();
98}
99
100WRITE8_MEMBER(cpc_playcity_device::ymz1_address_w)
101{
102   m_ymz1->address_w(space,offset,data);
103}
104
105WRITE8_MEMBER(cpc_playcity_device::ymz2_address_w)
106{
107   m_ymz2->address_w(space,offset,data);
108}
109
110WRITE8_MEMBER(cpc_playcity_device::ymz1_data_w)
111{
112   m_ymz1->data_w(space,offset,data);
113}
114
115WRITE8_MEMBER(cpc_playcity_device::ymz2_data_w)
116{
117   m_ymz2->data_w(space,offset,data);
118}
119
120READ8_MEMBER(cpc_playcity_device::ymz1_data_r)
121{
122   return m_ymz1->data_r(space,offset);
123}
124
125READ8_MEMBER(cpc_playcity_device::ymz2_data_r)
126{
127   return m_ymz2->data_r(space,offset);
128}
129
130void cpc_playcity_device::update_ymz_clock()
131{
132   // Bit of a hack job here, since there is no way currently to connect the CTC channel output directly to the YMZ clocks.
133   UINT8 rate = m_ctc->get_channel_constant(0);
134   UINT32 clk = XTAL_4MHz;
135
136   switch(rate)
137   {
138   case 0x00: clk = 3980000; break;
139   case 0x01: clk = 2000000; break;
140   case 0x02: clk = 3000000; break;
141   case 0x03: clk = 3330000; break;
142   case 0x04: clk = 3500000; break;
143   case 0x05: clk = 3600000; break;
144   case 0x06: clk = 3670000; break;
145   case 0x07: clk = 3710000; break;
146   case 0x08: clk = 3750000; break;
147   case 0x09: clk = 3780000; break;
148   case 0x0a: clk = 3800000; break;
149   case 0x0b: clk = 3820000; break;
150   case 0x0c: clk = 3830000; break;
151   case 0x0d: clk = 3850000; break;
152   case 0x0e: clk = 3860000; break;
153   case 0x0f: clk = 3870000; break;
154   }
155
156   clk = clk / 2;  // YMZ294 has an internal /2 divider (not handled in AY core?)
157   m_ymz1->ay_set_clock(clk);
158   m_ymz2->ay_set_clock(clk);
159   popmessage("YMZ clocks set to %d Hz",clk);
160}
161
trunk/src/emu/bus/cpc/playcity.h
r0r241753
1/*
2   PlayCity expansion device
3
4   I/O ports:
5   * F880 - Z80CTC channel 0 (input is system clock (4MHz), output to YMZ294 clock)
6   * F881 - Z80CTC channel 1 (input from CRTC CURSOR, output to /NMI)
7   * F882 - Z80CTC channel 2 (input is system clock (4MHz), output to channel 3 input)
8   * F883 - Z80CTC channel 3 (input is channel 2 output)
9   * F884 - YMZ294 #1 (right) data
10   * F888 - YMZ294 #2 (left) data
11   * F984 - YMZ294 #1 (right) register select
12   * F988 - YMZ294 #2 (left) register select
13*/
14
15#ifndef CPC_PLAYCITY_H_
16#define CPC_PLAYCITY_H_
17
18
19#include "emu.h"
20#include "cpcexp.h"
21#include "sound/ay8910.h"
22#include "machine/z80ctc.h"
23
24class cpc_playcity_device : public device_t,
25            public device_cpc_expansion_card_interface
26{
27public:
28   // construction/destruction
29   cpc_playcity_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
30
31   // optional information overrides
32   virtual machine_config_constructor device_mconfig_additions() const;
33
34   DECLARE_READ8_MEMBER(ctc_r);
35   DECLARE_WRITE8_MEMBER(ctc_w);
36   DECLARE_WRITE8_MEMBER(ymz1_address_w);
37   DECLARE_WRITE8_MEMBER(ymz2_address_w);
38   DECLARE_WRITE8_MEMBER(ymz1_data_w);
39   DECLARE_WRITE8_MEMBER(ymz2_data_w);
40   DECLARE_READ8_MEMBER(ymz1_data_r);
41   DECLARE_READ8_MEMBER(ymz2_data_r);
42   DECLARE_WRITE_LINE_MEMBER(ctc_zc1_cb) { if(state) { m_slot->nmi_w(1); m_slot->nmi_w(0); } }
43   DECLARE_WRITE_LINE_MEMBER(ctc_intr_cb) { m_slot->irq_w(state); }
44
45   virtual WRITE_LINE_MEMBER(cursor_w) { m_ctc->trg1(state); }
46
47protected:
48   // device-level overrides
49   virtual void device_start();
50   virtual void device_reset();
51
52private:
53   cpc_expansion_slot_device *m_slot;
54
55   required_device<z80ctc_device> m_ctc;
56   required_device<ymz294_device> m_ymz1;
57   required_device<ymz294_device> m_ymz2;
58
59   void update_ymz_clock();
60};
61
62// device type definition
63extern const device_type CPC_PLAYCITY;
64
65
66#endif /* CPC_PLAYCITY_H_ */
67
trunk/src/emu/bus/dmv/dmvbus.c
r241752r241753
199199      device_slot_interface(mconfig, *this),
200200      m_prog_read_cb(*this),
201201      m_prog_write_cb(*this),
202      m_out_int_cb(*this),
202203      m_out_irq_cb(*this),
203204      m_out_thold_cb(*this)
204205{
r241752r241753
224225   // resolve callbacks
225226   m_prog_read_cb.resolve_safe(0);
226227   m_prog_write_cb.resolve_safe();
228   m_out_int_cb.resolve_safe();
227229   m_out_irq_cb.resolve_safe();
228230   m_out_thold_cb.resolve_safe();
229231}
trunk/src/emu/bus/dmv/dmvbus.h
r241752r241753
5858
5959   template<class _Object> static devcb_base &set_prog_read_callback(device_t &device, _Object object) { return downcast<dmvcart_slot_device &>(device).m_prog_read_cb.set_callback(object); }
6060   template<class _Object> static devcb_base &set_prog_write_callback(device_t &device, _Object object) { return downcast<dmvcart_slot_device &>(device).m_prog_write_cb.set_callback(object); }
61   template<class _Object> static devcb_base &set_out_int_callback(device_t &device, _Object object) { return downcast<dmvcart_slot_device &>(device).m_out_int_cb.set_callback(object); }
6162   template<class _Object> static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast<dmvcart_slot_device &>(device).m_out_irq_cb.set_callback(object); }
6263   template<class _Object> static devcb_base &set_out_thold_callback(device_t &device, _Object object) { return downcast<dmvcart_slot_device &>(device).m_out_thold_cb.set_callback(object); }
6364
r241752r241753
8687   // internal state
8788   devcb_read8                     m_prog_read_cb;
8889   devcb_write8                    m_prog_write_cb;
90   devcb_write_line                m_out_int_cb;
8991   devcb_write_line                m_out_irq_cb;
9092   devcb_write_line                m_out_thold_cb;
9193   device_dmvslot_interface*       m_cart;
r241752r241753
104106   devcb = &dmvcart_slot_device::set_prog_read_callback(*device, DEVCB_##_read_devcb); \
105107   devcb = &dmvcart_slot_device::set_prog_write_callback(*device, DEVCB_##_write_devcb);
106108
109#define MCFG_DMVCART_SLOT_OUT_INT_CB(_devcb) \
110   devcb = &dmvcart_slot_device::set_out_int_callback(*device, DEVCB_##_devcb);
111
107112#define MCFG_DMVCART_SLOT_OUT_IRQ_CB(_devcb) \
108113   devcb = &dmvcart_slot_device::set_out_irq_callback(*device, DEVCB_##_devcb);
109114
trunk/src/emu/bus/dmv/k803.c
r0r241753
1// license:BSD-3-Clause
2// copyright-holders:Sandro Ronco
3/***************************************************************************
4
5    K803 RTC module
6
7***************************************************************************/
8
9#include "emu.h"
10#include "k803.h"
11
12
13/***************************************************************************
14    IMPLEMENTATION
15***************************************************************************/
16
17static MACHINE_CONFIG_FRAGMENT( dmv_k803 )
18   MCFG_DEVICE_ADD("rtc", MM58167, XTAL_32_768kHz)
19   MCFG_MM58167_IRQ_CALLBACK(WRITELINE(dmv_k803_device, rtc_irq_w))
20MACHINE_CONFIG_END
21
22static INPUT_PORTS_START( dmv_k803 )
23   PORT_START("DSW")
24   PORT_DIPNAME( 0x0f, 0x09, "K803 IFSEL" )  PORT_DIPLOCATION("S:!4,S:!3,S:!2,S:!1")
25   PORT_DIPSETTING( 0x00, "0A" )
26   PORT_DIPSETTING( 0x01, "0B" )
27   PORT_DIPSETTING( 0x02, "1A" )
28   PORT_DIPSETTING( 0x03, "1B" )
29   PORT_DIPSETTING( 0x04, "2A" )
30   PORT_DIPSETTING( 0x05, "2B" )
31   PORT_DIPSETTING( 0x06, "3A" )
32   PORT_DIPSETTING( 0x07, "3B" )
33   PORT_DIPSETTING( 0x08, "4A" )
34   PORT_DIPSETTING( 0x09, "4B" )   // default
35INPUT_PORTS_END
36
37//**************************************************************************
38//  GLOBAL VARIABLES
39//**************************************************************************
40
41const device_type DMV_K803 = &device_creator<dmv_k803_device>;
42
43
44//**************************************************************************
45//  LIVE DEVICE
46//**************************************************************************
47
48//-------------------------------------------------
49//  dmv_k803_device - constructor
50//-------------------------------------------------
51
52dmv_k803_device::dmv_k803_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
53      : device_t(mconfig, DMV_K803, "K803 RTC", tag, owner, clock, "dmv_k803", __FILE__),
54      device_dmvslot_interface( mconfig, *this ),
55      m_rtc(*this, "rtc"),
56      m_dsw(*this, "DSW")
57{
58}
59
60//-------------------------------------------------
61//  device_start - device-specific startup
62//-------------------------------------------------
63
64void dmv_k803_device::device_start()
65{
66   m_bus = static_cast<dmvcart_slot_device*>(owner());
67}
68
69//-------------------------------------------------
70//  device_reset - device-specific reset
71//-------------------------------------------------
72
73void dmv_k803_device::device_reset()
74{
75   m_latch = 0;
76   m_rtc_int = CLEAR_LINE;
77}
78
79//-------------------------------------------------
80//  machine_config_additions - device-specific
81//  machine configurations
82//-------------------------------------------------
83
84machine_config_constructor dmv_k803_device::device_mconfig_additions() const
85{
86   return MACHINE_CONFIG_NAME( dmv_k803 );
87}
88
89//-------------------------------------------------
90//  input_ports - device-specific input ports
91//-------------------------------------------------
92
93ioport_constructor dmv_k803_device::device_input_ports() const
94{
95   return INPUT_PORTS_NAME( dmv_k803 );
96}
97
98void dmv_k803_device::io_read(address_space &space, int ifsel, offs_t offset, UINT8 &data)
99{
100   UINT8 dsw = m_dsw->read() & 0x0f;
101   if ((dsw >> 1) == ifsel && BIT(offset, 3) == BIT(dsw, 0))
102   {
103      if (offset & 0x04)
104         data = m_rtc->read(space, ((m_latch & 0x07) << 2) | (offset & 0x03));
105   }
106}
107
108void dmv_k803_device::io_write(address_space &space, int ifsel, offs_t offset, UINT8 data)
109{
110   UINT8 dsw = m_dsw->read() & 0x0f;
111   if ((dsw >> 1) == ifsel && BIT(offset, 3) == BIT(dsw, 0))
112   {
113      if (offset & 0x04)
114         m_rtc->write(space, ((m_latch & 0x07) << 2) | (offset & 0x03), data);
115      else
116      {
117         m_latch = data;
118         update_int();
119      }
120   }
121}
122
123WRITE_LINE_MEMBER(dmv_k803_device::rtc_irq_w)
124{
125   m_rtc_int = state;
126   update_int();
127}
128
129void dmv_k803_device::update_int()
130{
131   bool state = ((m_latch & 0x80) && m_rtc_int);
132   m_bus->m_out_irq_cb(state ? ASSERT_LINE : CLEAR_LINE);
133}
trunk/src/emu/bus/dmv/k803.h
r0r241753
1// license:BSD-3-Clause
2// copyright-holders:Sandro Ronco
3#pragma once
4
5#ifndef __DMV_K803_H__
6#define __DMV_K803_H__
7
8#include "emu.h"
9#include "dmvbus.h"
10#include "machine/mm58167.h"
11
12//**************************************************************************
13//  TYPE DEFINITIONS
14//**************************************************************************
15
16// ======================> dmv_k803_device
17
18class dmv_k803_device :
19      public device_t,
20      public device_dmvslot_interface
21{
22public:
23   // construction/destruction
24   dmv_k803_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
25
26   // optional information overrides
27   virtual ioport_constructor device_input_ports() const;
28   virtual machine_config_constructor device_mconfig_additions() const;
29
30   DECLARE_WRITE_LINE_MEMBER(rtc_irq_w);
31
32protected:
33   // device-level overrides
34   virtual void device_start();
35   virtual void device_reset();
36
37   virtual void io_read(address_space &space, int ifsel, offs_t offset, UINT8 &data);
38   virtual void io_write(address_space &space, int ifsel, offs_t offset, UINT8 data);
39
40   void update_int();
41
42private:
43   required_device<mm58167_device> m_rtc;
44   required_ioport m_dsw;
45   dmvcart_slot_device * m_bus;
46   UINT8   m_latch;
47   int     m_rtc_int;
48};
49
50
51// device type definition
52extern const device_type DMV_K803;
53
54#endif  /* __DMV_K803_H__ */
trunk/src/emu/bus/dmv/k806.c
r241752r241753
2020ROM_END
2121
2222static ADDRESS_MAP_START( k806_io, AS_IO, 8, dmv_k806_device )
23   AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(port1_r, port1_w)
23   AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(port1_r)
24   AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(port2_w)
2425   AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(portt1_r)
2526ADDRESS_MAP_END
2627
r241752r241753
7576
7677void dmv_k806_device::device_start()
7778{
79   m_bus = static_cast<dmvcart_slot_device*>(owner());
7880}
7981
8082//-------------------------------------------------
r241752r241753
129131
130132READ8_MEMBER( dmv_k806_device::port1_r )
131133{
134   // ---- ---x   Left button
135   // ---- --x-   Middle button
136   // ---- -x--   Right button
137   // ---- x---   XA / Y1
138   // ---x ----   XB / Y2
139   // --x- ----   YA / X2
140   // -x-- ----   YB / X1
141   // x--- ----   not used
142
132143   // TODO
133144   return 0xff;
134145}
r241752r241753
138149   return BIT(m_jumpers->read(), 7) ? 0 : 1;
139150}
140151
141WRITE8_MEMBER( dmv_k806_device::port1_w )
152WRITE8_MEMBER( dmv_k806_device::port2_w )
142153{
143   // TODO
154   m_bus->m_out_int_cb((data & 1) ? CLEAR_LINE : ASSERT_LINE);
144155};
trunk/src/emu/bus/dmv/k806.h
r241752r241753
3131
3232   DECLARE_READ8_MEMBER(portt1_r);
3333   DECLARE_READ8_MEMBER(port1_r);
34   DECLARE_WRITE8_MEMBER(port1_w);
34   DECLARE_WRITE8_MEMBER(port2_w);
3535
3636protected:
3737   // device-level overrides
r241752r241753
4444private:
4545   required_device<upi41_cpu_device> m_mcu;
4646   required_ioport m_jumpers;
47   dmvcart_slot_device * m_bus;
4748};
4849
4950
trunk/src/emu/bus/ecbbus/grip.c
r241752r241753
500500   MCFG_Z80STI_OUT_TCO_CB(DEVWRITELINE(Z80STI_TAG, z80sti_device, tc_w))
501501   MCFG_Z80STI_OUT_TDO_CB(DEVWRITELINE(Z80STI_TAG, z80sti_device, tc_w))
502502
503   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
503   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
504504   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(grip_device, write_centronics_busy))
505505   MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(grip_device, write_centronics_fault))
506506
r241752r241753
681681{
682682   m_base = m_j7->read();
683683   m_page = 0;
684   m_lps = 0;
684685}
685686
686687
trunk/src/emu/bus/econet/e01.c
r241752r241753
259259   MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":0", e01_floppies, "35dd", floppy_image_device::default_floppy_formats)
260260   MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":1", e01_floppies, "35dd", floppy_image_device::default_floppy_formats)
261261
262   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
262   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
263263   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(R6522_TAG, via6522_device, write_ca1))
264264
265265   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
trunk/src/emu/bus/isa/isa_cards.c
r241752r241753
1919   SLOT_INTERFACE("aga_pc200", ISA8_AGA_PC200)
2020   SLOT_INTERFACE("ega", ISA8_EGA)
2121   SLOT_INTERFACE("svga_et4k", ISA8_SVGA_ET4K)
22   SLOT_INTERFACE("num9rev",ISA8_NUM_9_REV)
2223   SLOT_INTERFACE("com", ISA8_COM)
2324   SLOT_INTERFACE("fdc", ISA8_FDC_SUPERIO)
2425   SLOT_INTERFACE("fdc_xt", ISA8_FDC_XT)
r241752r241753
5758   SLOT_INTERFACE("vga", ISA8_VGA)
5859   SLOT_INTERFACE("svga_et4k", ISA8_SVGA_ET4K)
5960   SLOT_INTERFACE("svga_dm",ISA8_SVGA_CIRRUS)
61   SLOT_INTERFACE("num9rev",ISA8_NUM_9_REV)
6062   SLOT_INTERFACE("com", ISA8_COM)
6163   SLOT_INTERFACE("comat", ISA8_COM_AT)
6264   SLOT_INTERFACE("fdc", ISA8_FDC_AT)
trunk/src/emu/bus/isa/isa_cards.h
r241752r241753
2525#include "svga_s3.h"
2626#include "svga_tseng.h"
2727#include "svga_trident.h"
28#include "num9rev.h"
2829
2930// storage
3031#include "fdc.h"
trunk/src/emu/bus/isa/lpt.c
r241752r241753
77#include "emu.h"
88#include "lpt.h"
99#include "machine/pc_lpt.h"
10#include "bus/centronics/covox.h"
11#include "bus/centronics/printer.h"
1210
1311const device_type ISA8_LPT = &device_creator<isa8_lpt_device>;
1412
trunk/src/emu/bus/isa/num9rev.c
r0r241753
1// license:BSD-3-Clause
2// Number Nine Revolution 512x32/1024x8
3// TODO: for 1024x768 mode the 7220 is programmed for 512x768, how does that work?
4
5#include "emu.h"
6#include "num9rev.h"
7
8//**************************************************************************
9//  GLOBAL VARIABLES
10//**************************************************************************
11
12const device_type ISA8_NUM_9_REV = &device_creator<isa8_number_9_rev_device>;
13
14static ADDRESS_MAP_START( upd7220_map, AS_0, 8, isa8_number_9_rev_device )
15   AM_RANGE(0x00000, 0x3ffff) AM_NOP
16ADDRESS_MAP_END
17
18UPD7220_DISPLAY_PIXELS_MEMBER( isa8_number_9_rev_device::hgdc_display_pixels )
19{
20   palette_t *pal = m_palette->palette();
21   if(!m_1024)
22   {
23      rgb_t color(0);
24      UINT16 overlay;
25      if(((address << 3) + 0xc0008) > (1024*1024))
26         return;
27      for(int i = 0; i < 8; i++)
28      {
29         UINT32 addr = (address << 3) + i;
30         overlay = m_ram[addr + 0xc0000] << 1;
31         overlay = m_overlay[overlay + ((m_mode & 8) ? 512 : 0)] | (m_overlay[overlay + 1 + ((m_mode & 8) ? 512 : 0)] << 8);
32         color.set_r(pal->entry_color(m_ram[addr] | ((overlay & 0xf) << 8)).r());
33         color.set_g(pal->entry_color(m_ram[addr + 0x40000] | ((overlay & 0xf0) << 4)).g());
34         color.set_b(pal->entry_color(m_ram[addr + 0x80000] | (overlay & 0xf00)).b());
35         bitmap.pix32(y, x + i) = color;
36      }
37   }
38   else
39   {
40      if(((address << 3) + 8) > (1024*1024))
41         return;
42      for(int i = 0; i < 8; i++)
43         bitmap.pix32(y, x + i) = pal->entry_color(m_ram[(address << 3) + i]);
44   }
45}
46
47static MACHINE_CONFIG_FRAGMENT( num_9_rev )
48   MCFG_SCREEN_ADD("screen", RASTER)
49   MCFG_SCREEN_SIZE(512, 448)
50   MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 448-1)
51   MCFG_SCREEN_REFRESH_RATE(60)
52   MCFG_SCREEN_UPDATE_DRIVER(isa8_number_9_rev_device, screen_update)
53   MCFG_PALETTE_ADD("palette", 4096)
54
55   MCFG_DEVICE_ADD("upd7220", UPD7220, XTAL_4_433619MHz/2) // unknown clock
56   MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_map)
57   MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(isa8_number_9_rev_device, hgdc_display_pixels)
58   MCFG_VIDEO_SET_SCREEN("screen")
59MACHINE_CONFIG_END
60
61//-------------------------------------------------
62//  machine_config_additions - device-specific
63//  machine configurations
64//-------------------------------------------------
65
66machine_config_constructor isa8_number_9_rev_device::device_mconfig_additions() const
67{
68   return MACHINE_CONFIG_NAME( num_9_rev );
69}
70
71//**************************************************************************
72//  LIVE DEVICE
73//**************************************************************************
74
75//-------------------------------------------------
76//  isa16_vga_device - constructor
77//-------------------------------------------------
78
79isa8_number_9_rev_device::isa8_number_9_rev_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
80      device_t(mconfig, ISA8_NUM_9_REV, "Number Nine Revolution 512x32/1024x8", tag, owner, clock, "number_9_rev", __FILE__),
81      device_isa8_card_interface(mconfig, *this),
82      m_upd7220(*this, "upd7220"),
83      m_palette(*this, "palette"),
84      m_ram(1024*1024),
85      m_overlay(1024)
86{
87}
88
89//-------------------------------------------------
90//  device_start - device-specific startup
91//-------------------------------------------------
92
93void isa8_number_9_rev_device::device_start()
94{
95   set_isa_device();
96
97   m_isa->install_memory(0xc0000, 0xc0001, 0, 0, read8_delegate(FUNC(upd7220_device::read), (upd7220_device *)m_upd7220), write8_delegate(FUNC(upd7220_device::write), (upd7220_device *)m_upd7220));
98   m_isa->install_memory(0xc0100, 0xc03ff, 0, 0, read8_delegate(FUNC(isa8_number_9_rev_device::pal8_r), this), write8_delegate(FUNC(isa8_number_9_rev_device::pal8_w), this));
99   m_isa->install_memory(0xc0400, 0xc0401, 0, 0, read8_delegate(FUNC(isa8_number_9_rev_device::bank_r), this), write8_delegate(FUNC(isa8_number_9_rev_device::bank_w), this));
100   m_isa->install_memory(0xc0500, 0xc06ff, 0, 0, read8_delegate(FUNC(isa8_number_9_rev_device::overlay_r), this), write8_delegate(FUNC(isa8_number_9_rev_device::overlay_w), this));
101   m_isa->install_memory(0xc0700, 0xc070f, 0, 0, read8_delegate(FUNC(isa8_number_9_rev_device::ctrl_r), this), write8_delegate(FUNC(isa8_number_9_rev_device::ctrl_w), this));
102   m_isa->install_memory(0xc1000, 0xc3fff, 0, 0, read8_delegate(FUNC(isa8_number_9_rev_device::pal12_r), this), write8_delegate(FUNC(isa8_number_9_rev_device::pal12_w), this));
103   m_isa->install_memory(0xa0000, 0xaffff, 0, 0, read8_delegate(FUNC(isa8_number_9_rev_device::read8), this), write8_delegate(FUNC(isa8_number_9_rev_device::write8), this));
104}
105
106//-------------------------------------------------
107//  device_reset - device-specific reset
108//-------------------------------------------------
109
110void isa8_number_9_rev_device::device_reset()
111{
112   m_bank = 0;
113   m_mode = 0;
114   m_1024 = false;
115}
116
117READ8_MEMBER(isa8_number_9_rev_device::read8)
118{
119   if((m_mode & 1) && !m_1024)
120      return m_ram[offset + ((m_mode & 0xc) << 14)];
121   else if((m_mode & 4) && !m_1024)
122   {
123      UINT32 newoff = ((offset & 3) << 18) | (m_bank << 14) | ((offset >> 2) & 0x3fff);
124      return m_ram[newoff];
125   }
126   else
127      return m_ram[offset + (m_bank << 16)];
128}
129
130WRITE8_MEMBER(isa8_number_9_rev_device::write8)
131{
132   if(m_1024 || ((m_mode & 6) == 0))
133      m_ram[offset + (m_bank << 16)] = data;
134   else if((m_mode & 1) || ((m_mode & 6) == 2))
135   {
136      UINT8 bank = m_bank;
137      if(m_mode & 1)
138         bank = (m_mode & 0xc) >> 2;
139      else
140      {
141         if(m_bank >= 12)
142         {
143            m_ram[offset + (m_bank << 16)] = data;
144            return;
145         }
146         bank &= 3;
147      }
148
149      m_ram[offset + (bank << 16)] = data;
150      m_ram[offset + ((bank + 4) << 16)] = data;
151      m_ram[offset + ((bank + 8) << 16)] = data;
152   }
153   else if(m_mode & 4)
154   {
155      UINT32 newoff = ((offset & 3) << 18) | (m_bank << 14) | ((offset >> 2) & 0x3fff);
156      if((newoff >= 0xc0000) && ((m_mode & 6) == 6))
157         return;
158      m_ram[newoff] = data;
159   }
160}
161
162READ8_MEMBER(isa8_number_9_rev_device::pal8_r)
163{
164   offset += 0x100;
165   palette_t *pal = m_palette->palette();
166   switch(offset & 0xf00)
167   {
168      case 0x100:
169         return pal->entry_color(offset).r();
170      case 0x200:
171         return pal->entry_color(offset).g();
172      case 0x300:
173         return pal->entry_color(offset).b();
174   }
175   return 0;
176}
177
178WRITE8_MEMBER(isa8_number_9_rev_device::pal8_w)
179{
180   offset += 0x100;
181   palette_t *pal = m_palette->palette();
182   rgb_t pen = pal->entry_color(offset);
183   switch(offset & 0xf00)
184   {
185      case 0x100:
186         pen.set_r(data);
187         break;
188      case 0x200:
189         pen.set_g(data);
190         break;
191      case 0x300:
192         pen.set_b(data);
193         break;
194   }
195   pal->entry_set_color(offset, pen);
196}
197
198READ8_MEMBER(isa8_number_9_rev_device::pal12_r)
199{
200   UINT16 color = offset & 0xfff;
201   palette_t *pal = m_palette->palette();
202   switch(offset & 0xf000)
203   {
204      case 0x0000:
205         return pal->entry_color(color).r();
206      case 0x1000:
207         return pal->entry_color(color).g();
208      case 0x2000:
209         return pal->entry_color(color).b();
210   }
211   return 0;
212}
213
214WRITE8_MEMBER(isa8_number_9_rev_device::pal12_w)
215{
216   UINT16 color = offset & 0xfff;
217   palette_t *pal = m_palette->palette();
218   rgb_t pen = pal->entry_color(color);
219   switch(offset & 0xf000)
220   {
221      case 0x0000:
222         pen.set_r(data);
223         break;
224      case 0x1000:
225         pen.set_g(data);
226         break;
227      case 0x2000:
228         pen.set_b(data);
229         break;
230   }
231   pal->entry_set_color(color, pen);
232}
233
234READ8_MEMBER(isa8_number_9_rev_device::overlay_r)
235{
236   return m_overlay[offset + ((m_mode & 8) ? 512 : 0)];
237}
238WRITE8_MEMBER(isa8_number_9_rev_device::overlay_w)
239{
240   m_overlay[offset + ((m_mode & 8) ? 512 : 0)] = data;
241}
242
243READ8_MEMBER(isa8_number_9_rev_device::bank_r)
244{
245   return m_bank;
246}
247
248WRITE8_MEMBER(isa8_number_9_rev_device::bank_w)
249{
250   m_bank = data & 0xf;
251}
252
253READ8_MEMBER(isa8_number_9_rev_device::ctrl_r)
254{
255   switch(offset & 0xf)
256   {
257      case 0:
258      case 1:
259      case 2:
260      case 3:
261         // zoom, set to same value as 7220 external zoom factor
262         break;
263      case 4:
264         return (m_mode & 2) ? 0xff : 0;
265      case 5:
266         return (m_mode & 4) ? 0xff : 0;
267      case 6:
268         return (m_mode & 8) ? 0xff : 0;
269      case 15:
270         return (m_mode & 1) ? 0xff : 0;
271   }
272   return 0;
273}
274
275WRITE8_MEMBER(isa8_number_9_rev_device::ctrl_w)
276{
277   switch(offset & 0xf)
278   {
279      case 0:
280      case 1:
281      case 2:
282      case 3:
283         // zoom
284         break;
285      case 4:
286         if(data & 0x80)
287            m_mode |= 2;
288         else
289            m_mode &= ~2;
290         break;
291      case 5:
292         if(data & 0x80)
293            m_mode |= 4;
294         else
295            m_mode &= ~4;
296         break;
297      case 6:
298         if(data & 0x80)
299            m_mode |= 8;
300         else
301            m_mode &= ~8;
302         break;
303      case 15:
304         if(data & 0x80)
305            m_mode |= 1;
306         else
307            m_mode &= ~1;
308         break;
309   }
310}
311
312UINT32 isa8_number_9_rev_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
313{
314   rectangle visarea = screen.visible_area();
315   // try to support the 1024x8 or at least don't crash as there's no way to detect it
316   m_1024 = (visarea.width() * visarea.height()) > (512 * 512);
317   return m_upd7220->screen_update(screen, bitmap, cliprect);
318}
trunk/src/emu/bus/isa/num9rev.h
r0r241753
1#pragma once
2
3#ifndef __NUM9REV_H__
4#define __NUM9REV_H__
5
6#include "emu.h"
7#include "isa.h"
8#include "video/upd7220.h"
9#include "machine/bankdev.h"
10
11//**************************************************************************
12//  TYPE DEFINITIONS
13//**************************************************************************
14
15// ======================> isa16_vga_device
16
17class isa8_number_9_rev_device :
18      public device_t,
19      public device_isa8_card_interface
20{
21public:
22      // construction/destruction
23      isa8_number_9_rev_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
24
25      // optional information overrides
26      virtual machine_config_constructor device_mconfig_additions() const;
27
28      UPD7220_DISPLAY_PIXELS_MEMBER(hgdc_display_pixels);
29      DECLARE_READ8_MEMBER(pal8_r);
30      DECLARE_WRITE8_MEMBER(pal8_w);
31      DECLARE_READ8_MEMBER(pal12_r);
32      DECLARE_WRITE8_MEMBER(pal12_w);
33      DECLARE_READ8_MEMBER(overlay_r);
34      DECLARE_WRITE8_MEMBER(overlay_w);
35      DECLARE_READ8_MEMBER(bank_r);
36      DECLARE_WRITE8_MEMBER(bank_w);
37      DECLARE_READ8_MEMBER(ctrl_r);
38      DECLARE_WRITE8_MEMBER(ctrl_w);
39      DECLARE_READ8_MEMBER(read8);
40      DECLARE_WRITE8_MEMBER(write8);
41
42      UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
43protected:
44      // device-level overrides
45      virtual void device_start();
46      virtual void device_reset();
47private:
48      required_device<upd7220_device> m_upd7220;
49      required_device<palette_device> m_palette;
50      dynamic_buffer m_ram;
51      dynamic_buffer m_overlay;
52
53      UINT8 m_bank;
54      UINT8 m_mode;
55      bool m_1024;
56};
57
58// device type definition
59extern const device_type ISA8_NUM_9_REV;
60
61#endif  /* __NUM9REV_H__ */
trunk/src/emu/bus/isa/s3virge.c
r241752r241753
4545
4646void s3virge_vga_device::device_start()
4747{
48   memset(&vga, 0, sizeof(vga));
49   memset(&svga, 0, sizeof(svga));
48   zero();
5049
5150   int x;
5251   int i;
trunk/src/emu/bus/isa/trident.c
r241752r241753
155155
156156void trident_vga_device::device_start()
157157{
158   memset(&vga, 0, sizeof(vga));
159   memset(&svga, 0, sizeof(svga));
158   zero();
160159
161160   int i;
162161   for (i = 0; i < 0x100; i++)
trunk/src/emu/bus/lpci/cirrus.c
r0r241753
1/***************************************************************************
2
3    video/cirrus.c
4
5    Cirrus SVGA card emulation (preliminary)
6
7    Cirrus has the following additional registers that are not present in
8    conventional VGA:
9
10    SEQ 06h:        Unlock Cirrus registers; write 12h to unlock registers,
11                    and read 12h back to confirm Cirrus presence.
12    SEQ 07h
13        bit 3-1:    Pixel depth
14                        0x00    8 bpp
15                        0x02    16 bpp (double vert clock)
16                        0x04    24 bpp
17                        0x06    16 bpp
18                        0x08    32 bpp
19        bit 0:      VGA/SVGA (0=VGA, 1=SVGA)
20    SEQ 0Fh
21        bit 7:      Bankswitch enable
22        bits 4-3:   Memory size
23                        0x00    256K
24                        0x08    512K
25                        0x10    1M
26                        0x18    2M
27    SEQ 12h:        Hardware Cursor
28
29
30
31
32    GC 09h:         Set 64k bank (bits 3-0 only)
33    GC 20h:         Blit Width (bits 7-0)
34    GC 21h:         Blit Width (bits 12-8)
35    GC 22h:         Blit Height (bits 7-0)
36    GC 23h:         Blit Height (bits 12-8)
37    GC 24h:         Blit Destination Pitch (bits 7-0)
38    GC 25h:         Blit Destination Pitch (bits 12-8)
39    GC 26h:         Blit Source Pitch (bits 7-0)
40    GC 27h:         Blit Source Pitch (bits 12-8)
41    GC 28h:         Blit Destination Address (bits 7-0)
42    GC 29h:         Blit Destination Address (bits 15-8)
43    GC 2Ah:         Blit Destination Address (bits 21-16)
44    GC 2Ch:         Blit Source Address (bits 7-0)
45    GC 2Dh:         Blit Source Address (bits 15-8)
46    GC 2Eh:         Blit Source Address (bits 21-16)
47    GC 2Fh:         Blit Write Mask
48    GC 30h:         Blit Mode
49    GC 31h:         Blit Status
50                        bit 7 - Autostart
51                        bit 4 - FIFO Used
52                        bit 2 - Blit Reset
53                        bit 1 - Blit Started
54                        bit 0 - Blit Busy
55    GC 32h:         Raster Operation
56    GC 33h:         Blit Mode Extension
57    GC 34h:         Blit Transparent Color (bits 7-0)
58    GC 35h:         Blit Transparent Color (bits 15-8)
59    GC 38h:         Blit Transparent Color Mask (bits 7-0)
60    GC 39h:         Blit Transparent Color Mask (bits 15-8)
61
62***************************************************************************/
63
64#include "emu.h"
65#include "cirrus.h"
66#include "video/pc_vga.h"
67
68#define LOG_PCIACCESS   0
69
70//**************************************************************************
71//  DEVICE DEFINITIONS
72//**************************************************************************
73
74const device_type CIRRUS = &device_creator<cirrus_device>;
75
76//**************************************************************************
77//  LIVE DEVICE
78//**************************************************************************
79
80//-------------------------------------------------
81//  cirrus_device - constructor
82//-------------------------------------------------
83
84cirrus_device::cirrus_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
85      : device_t(mconfig, CIRRUS, "CIRRUS", tag, owner, clock, "cirrus", __FILE__),
86      pci_device_interface( mconfig, *this )
87{
88}
89
90//-------------------------------------------------
91//  device_start - device-specific startup
92//-------------------------------------------------
93
94void cirrus_device::device_start()
95{
96}
97
98//-------------------------------------------------
99//  device_reset - device-specific reset
100//-------------------------------------------------
101
102void cirrus_device::device_reset()
103{
104}
105
106//-------------------------------------------------
107//  pci_read - implementation of PCI read
108//-------------------------------------------------
109
110UINT32 cirrus_device::pci_read(pci_bus_device *pcibus, int function, int offset, UINT32 mem_mask)
111{
112   UINT32 result = 0;
113
114   if (function == 0)
115   {
116      switch(offset)
117      {
118         case 0x00:  /* vendor/device ID */
119            result = 0x00A01013;
120            break;
121
122         case 0x08:
123            result = 0x03000000;
124            break;
125
126         case 0x10:
127            result = 0xD0000000;
128            break;
129
130         default:
131            result = 0;
132            break;
133      }
134   }
135
136   if (LOG_PCIACCESS)
137      logerror("cirrus5430_pci_read(): function=%d offset=0x%02X result=0x%04X\n", function, offset, result);
138   return result;
139}
140
141
142//-------------------------------------------------
143//  pci_write - implementation of PCI write
144//-------------------------------------------------
145
146void cirrus_device::pci_write(pci_bus_device *pcibus, int function, int offset, UINT32 data, UINT32 mem_mask)
147{
148   if (LOG_PCIACCESS)
149      logerror("cirrus5430_pci_write(): function=%d offset=0x%02X data=0x%04X\n", function, offset, data);
150}
151
152/*************************************
153 *
154 *  Ports
155 *
156 *************************************/
157
158WRITE8_MEMBER( cirrus_device::cirrus_42E8_w )
159{
160   if (data & 0x80)
161      machine().device("vga")->reset();
162}
trunk/src/emu/bus/lpci/cirrus.h
r0r241753
1/***************************************************************************
2
3    video/cirrus.h
4
5    Cirrus SVGA card emulation (preliminary)
6
7***************************************************************************/
8
9#ifndef CIRRUS_H
10#define CIRRUS_H
11
12#include "bus/lpci/pci.h"
13
14// ======================> cirrus_device
15
16class cirrus_device : public device_t,
17                  public pci_device_interface
18{
19public:
20      // construction/destruction
21   cirrus_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
22
23   virtual UINT32 pci_read(pci_bus_device *pcibus, int function, int offset, UINT32 mem_mask);
24   virtual void pci_write(pci_bus_device *pcibus, int function, int offset, UINT32 data, UINT32 mem_mask);
25
26   DECLARE_WRITE8_MEMBER( cirrus_42E8_w );
27
28protected:
29   // device-level overrides
30   virtual void device_start();
31   virtual void device_reset();
32private:
33};
34
35
36// device type definition
37extern const device_type CIRRUS;
38
39#endif /* CIRRUS_H */
trunk/src/emu/bus/lpci/i82371ab.c
r0r241753
1/***************************************************************************
2
3    Intel 82371AB PCI IDE ISA Xcelerator (PIIX4)
4
5    Part of the Intel 430TX chipset
6
7    - Integrated IDE Controller
8    - Enhanced DMA Controller based on two 82C37
9    - Interrupt Controller based on two 82C59
10    - Timers based on 82C54
11    - USB
12    - SMBus
13    - Real Time Clock based on MC146818
14
15***************************************************************************/
16
17#include "emu.h"
18#include "i82371ab.h"
19
20const device_type I82371AB = &device_creator<i82371ab_device>;
21
22
23i82371ab_device::i82371ab_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
24      : southbridge_device(mconfig, I82371AB, "Intel 82371AB", tag, owner, clock, "i82371ab", __FILE__),
25      pci_device_interface( mconfig, *this )
26{
27}
28
29UINT32 i82371ab_device::pci_isa_r(device_t *busdevice, int offset, UINT32 mem_mask)
30{
31   UINT32 result = m_regs[0][offset] |
32         m_regs[0][offset+1] << 8 |
33         m_regs[0][offset+2] << 16|
34         m_regs[0][offset+3] << 24;
35
36   logerror("i82371ab_pci_isa_r, offset = %02x, mem_mask = %08x\n", offset, mem_mask);
37
38   return result;
39}
40
41void i82371ab_device::pci_isa_w(device_t *busdevice, int offset, UINT32 data, UINT32 mem_mask)
42{
43   UINT32 cdata = 0;
44   int i;
45   COMBINE_DATA(&cdata);
46
47   logerror("i82371ab_pci_isa_w, offset = %02x, data = %08x, mem_mask = %08x\n", offset, data, mem_mask);
48
49   for(i = 0; i < 4; i++, offset++, cdata >>= 8)
50   {
51      switch (offset)
52      {
53         case 0x04:
54            /* clear reserved bits */
55            m_regs[0][offset] = cdata & 0x05;
56            break;
57         case 0x06:
58            /* set new status */
59            m_regs[0][offset] |= 0x80;
60            break;
61         case 0x07:
62            m_regs[0][offset] |= 0x02;
63            break;
64      }
65   }
66}
67
68UINT32 i82371ab_device::pci_ide_r(device_t *busdevice, int offset, UINT32 mem_mask)
69{
70   UINT32 result = m_regs[1][offset] |
71         m_regs[1][offset+1] << 8 |
72         m_regs[1][offset+2] << 16|
73         m_regs[1][offset+3] << 24;
74
75   logerror("i82371ab_pci_ide_r, offset = %02x, mem_mask = %08x\n", offset, mem_mask);
76
77   return result;
78}
79
80void i82371ab_device::pci_ide_w(device_t *busdevice, int offset, UINT32 data, UINT32 mem_mask)
81{
82   UINT32 cdata = 0;
83   int i;
84   COMBINE_DATA(&cdata);
85
86   logerror("i82371ab_pci_isa_w, offset = %02x, data = %08x, mem_mask = %08x\n", offset, data, mem_mask);
87
88   for(i = 0; i < 4; i++, offset++, cdata >>= 8)
89   {
90      switch (offset)
91      {
92         case 0x04:
93            /* clear reserved bits */
94            m_regs[1][offset] = cdata & 0x05;
95            break;
96         case 0x06:
97            /* set new status */
98            m_regs[1][offset] |= 0x80;
99            break;
100         case 0x07:
101            m_regs[1][offset] |= 0x02;
102            break;
103      }
104   }
105}
106
107UINT32 i82371ab_device::pci_usb_r(device_t *busdevice, int offset, UINT32 mem_mask)
108{
109   UINT32 result = m_regs[2][offset] |
110         m_regs[2][offset+1] << 8 |
111         m_regs[2][offset+2] << 16|
112         m_regs[2][offset+3] << 24;
113
114   logerror("i82371ab_pci_usb_r, offset = %02x, mem_mask = %08x\n", offset, mem_mask);
115
116   return result;
117}
118
119void i82371ab_device::pci_usb_w(device_t *busdevice, int offset, UINT32 data, UINT32 mem_mask)
120{
121   UINT32 cdata = 0;
122   int i;
123   COMBINE_DATA(&cdata);
124
125   logerror("i82371ab_pci_isa_w, offset = %02x, data = %08x, mem_mask = %08x\n", offset, data, mem_mask);
126
127   for(i = 0; i < 4; i++, offset++, cdata >>= 8)
128   {
129      switch (offset)
130      {
131         case 0x04:
132            /* clear reserved bits */
133            m_regs[2][offset] = cdata & 0x05;
134            break;
135         case 0x06:
136            /* set new status */
137            m_regs[2][offset] |= 0x80;
138            break;
139         case 0x07:
140            m_regs[2][offset] |= 0x02;
141            break;
142      }
143   }
144}
145
146UINT32 i82371ab_device::pci_acpi_r(device_t *busdevice, int offset, UINT32 mem_mask)
147{
148   UINT32 result = m_regs[3][offset] |
149         m_regs[3][offset+1] << 8 |
150         m_regs[3][offset+2] << 16|
151         m_regs[3][offset+3] << 24;
152
153   logerror("i82371ab_pci_acpi_r, offset = %02x, mem_mask = %08x\n", offset, mem_mask);
154
155   return result;
156}
157
158void i82371ab_device::pci_acpi_w(device_t *busdevice, int offset, UINT32 data, UINT32 mem_mask)
159{
160   UINT32 cdata = 0;
161   int i;
162   COMBINE_DATA(&cdata);
163
164   logerror("i82371ab_pci_isa_w, offset = %02x, data = %08x, mem_mask = %08x\n", offset, data, mem_mask);
165
166   for(i = 0; i < 4; i++, offset++, cdata >>= 8)
167   {
168      switch (offset)
169      {
170         case 0x04:
171            /* clear reserved bits */
172            m_regs[3][offset] = cdata & 0x05;
173            break;
174         case 0x06:
175            /* set new status */
176            m_regs[3][offset] |= 0x80;
177            break;
178         case 0x07:
179            m_regs[3][offset] |= 0x02;
180            break;
181      }
182   }
183}
184
185UINT32 i82371ab_device::pci_read(pci_bus_device *pcibus, int function, int offset, UINT32 mem_mask)
186{
187   switch (function)
188   {
189   case 0: return pci_isa_r(pcibus, offset, mem_mask);
190   case 1: return pci_ide_r(pcibus, offset, mem_mask);
191   case 2: return pci_usb_r(pcibus, offset, mem_mask);
192   case 3: return pci_acpi_r(pcibus, offset, mem_mask);
193   }
194
195   logerror("i82371ab_pci_read: read from undefined function %d\n", function);
196
197   return 0;
198}
199
200void i82371ab_device::pci_write(pci_bus_device *pcibus, int function, int offset, UINT32 data, UINT32 mem_mask)
201{
202   switch (function)
203   {
204   case 0: pci_isa_w(pcibus, offset, data, mem_mask); break;
205   case 1: pci_ide_w(pcibus, offset, data, mem_mask); break;
206   case 2: pci_usb_w(pcibus, offset, data, mem_mask); break;
207   case 3: pci_acpi_w(pcibus, offset, data, mem_mask); break;
208   }
209}
210
211//-------------------------------------------------
212//  device_start - device-specific startup
213//-------------------------------------------------
214
215void i82371ab_device::device_start()
216{
217   southbridge_device::device_start();
218   /* setup save states */
219   save_item(NAME(m_regs));
220}
221
222//-------------------------------------------------
223//  device_reset - device-specific reset
224//-------------------------------------------------
225
226void i82371ab_device::device_reset()
227{
228   southbridge_device::device_reset();
229   memset(m_regs, 0, sizeof(m_regs));
230   UINT32 (*regs32)[64] = (UINT32 (*)[64])(m_regs);
231
232   /* isa */
233   regs32[0][0x00] = 0x71108086;
234   regs32[0][0x04] = 0x00000000;
235   regs32[0][0x08] = 0x06010000;
236   regs32[0][0x0c] = 0x00800000;
237
238   /* ide */
239   regs32[1][0x00] = 0x71118086;
240   regs32[1][0x04] = 0x02800000;
241   regs32[1][0x08] = 0x01018000;
242   regs32[1][0x0c] = 0x00000000;
243
244   /* usb */
245   regs32[2][0x00] = 0x71128086;
246   regs32[2][0x04] = 0x02800000;
247   regs32[2][0x08] = 0x0c030000;
248   regs32[2][0x0c] = 0x00000000;
249
250   /* acpi */
251   regs32[3][0x00] = 0x71138086;
252   regs32[3][0x04] = 0x02800000;
253   regs32[3][0x08] = 0x06800000;
254   regs32[3][0x0c] = 0x02800000;
255}
trunk/src/emu/bus/lpci/i82371ab.h
r0r241753
1/***************************************************************************
2
3    Intel 82371AB PCI IDE ISA Xcelerator (PIIX4)
4
5    Part of the Intel 430TX chipset
6
7***************************************************************************/
8
9#ifndef __I82371AB_H__
10#define __I82371AB_H__
11
12#include "pci.h"
13#include "southbridge.h"
14
15// ======================> i82371ab_device
16
17class i82371ab_device :  public southbridge_device,
18                     public pci_device_interface
19{
20public:
21   // construction/destruction
22   i82371ab_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
23
24   virtual UINT32 pci_read(pci_bus_device *pcibus, int function, int offset, UINT32 mem_mask);
25   virtual void pci_write(pci_bus_device *pcibus, int function, int offset, UINT32 data, UINT32 mem_mask);
26
27protected:
28   // device-level overrides
29   virtual void device_start();
30   virtual void device_reset();
31
32   UINT32 pci_isa_r(device_t *busdevice, int offset, UINT32 mem_mask);
33   void pci_isa_w(device_t *busdevice, int offset, UINT32 data, UINT32 mem_mask);
34
35   UINT32 pci_ide_r(device_t *busdevice, int offset, UINT32 mem_mask);
36   void pci_ide_w(device_t *busdevice, int offset, UINT32 data, UINT32 mem_mask);
37
38   UINT32 pci_usb_r(device_t *busdevice, int offset, UINT32 mem_mask);
39   void pci_usb_w(device_t *busdevice, int offset, UINT32 data, UINT32 mem_mask);
40
41   UINT32 pci_acpi_r(device_t *busdevice, int offset, UINT32 mem_mask);
42   void pci_acpi_w(device_t *busdevice, int offset, UINT32 data, UINT32 mem_mask);
43
44private:
45   UINT8 m_regs[4][0x100];
46};
47
48// device type definition
49extern const device_type I82371AB;
50
51#endif /* __I82371AB_H__ */
trunk/src/emu/bus/lpci/i82371sb.c
r0r241753
1/***************************************************************************
2
3    Intel 82371SB PCI IDE ISA Xcelerator (PIIX3)
4
5    Part of the Intel 430TX chipset
6
7    - Integrated IDE Controller
8    - Enhanced DMA Controller based on two 82C37
9    - Interrupt Controller based on two 82C59
10    - Timers based on 82C54
11    - USB
12    - SMBus
13    - Real Time Clock based on MC146818
14
15***************************************************************************/
16
17#include "emu.h"
18#include "i82371sb.h"
19
20
21/***************************************************************************
22    IMPLEMENTATION
23***************************************************************************/
24
25const device_type I82371SB = &device_creator<i82371sb_device>;
26
27
28i82371sb_device::i82371sb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
29      : southbridge_device(mconfig, I82371SB, "Intel 82371SB", tag, owner, clock, "i82371sb", __FILE__),
30      pci_device_interface( mconfig, *this )
31{
32}
33
34UINT32 i82371sb_device::pci_isa_r(device_t *busdevice,int offset, UINT32 mem_mask)
35{
36   UINT32 result = m_regs[0][offset];
37
38   //logerror("i82371sb_pci_isa_r, offset = %02x, mem_mask = %08x\n", offset, mem_mask);
39
40   return result;
41}
42
43void i82371sb_device::pci_isa_w(device_t *busdevice, int offset, UINT32 data, UINT32 mem_mask)
44{
45   //logerror("i82371sb_pci_isa_w, offset = %02x, data = %08x, mem_mask = %08x\n", offset, data, mem_mask);
46
47   switch (offset)
48   {
49   case 0x04:
50      COMBINE_DATA(&m_regs[0][offset]);
51
52      /* clear reserved bits */
53      m_regs[0][offset] &= 0x00000005;
54
55      /* set new status */
56      m_regs[0][offset] |= 0x02800000;
57
58      break;
59   }
60}
61
62UINT32 i82371sb_device::pci_ide_r(device_t *busdevice, int offset, UINT32 mem_mask)
63{
64   //logerror("i82371sb_pci_ide_r, offset = %02x, mem_mask = %08x\n", offset, mem_mask);
65   UINT32 result = m_regs[1][offset];
66   return result;
67}
68
69void i82371sb_device::pci_ide_w(device_t *busdevice, int offset, UINT32 data, UINT32 mem_mask)
70{
71   //logerror("i82371sb_pci_ide_w, offset = %02x, data = %08x, mem_mask = %08x\n", offset, data, mem_mask);
72
73   switch (offset)
74   {
75   case 0x04:
76      COMBINE_DATA(&m_regs[1][offset]);
77
78      /* clear reserved bits */
79      m_regs[1][offset] &= 0x00000005;
80
81      /* set new status */
82      m_regs[1][offset] |= 0x02800000;
83
84      break;
85   }
86}
87
88UINT32 i82371sb_device::pci_usb_r(device_t *busdevice, int offset, UINT32 mem_mask)
89{
90   UINT32 result = m_regs[2][offset];
91
92   //logerror("i82371sb_pci_usb_r, offset = %02x, mem_mask = %08x\n", offset, mem_mask);
93
94   return result;
95}
96
97void i82371sb_device::pci_usb_w(device_t *busdevice, int offset, UINT32 data, UINT32 mem_mask)
98{
99   //logerror("i82371sb_pci_usb_w, offset = %02x, data = %08x, mem_mask = %08x\n", offset, data, mem_mask);
100
101   switch (offset)
102   {
103   case 0x04:
104      COMBINE_DATA(&m_regs[2][offset]);
105
106      /* clear reserved bits */
107      m_regs[2][offset] &= 0x00000005;
108
109      /* set new status */
110      m_regs[2][offset] |= 0x02800000;
111
112      break;
113   }
114}
115
116UINT32 i82371sb_device::pci_read(pci_bus_device *pcibus, int function, int offset, UINT32 mem_mask)
117{
118   switch (function)
119   {
120   case 0: return pci_isa_r(pcibus, offset, mem_mask);
121   case 1: return pci_ide_r(pcibus, offset, mem_mask);
122   case 2: return pci_usb_r(pcibus, offset, mem_mask);
123   }
124
125   //logerror("i82371sb_pci_read: read from undefined function %d\n", function);
126
127   return 0;
128}
129
130void i82371sb_device::pci_write(pci_bus_device *pcibus, int function, int offset, UINT32 data, UINT32 mem_mask)
131{
132   switch (function)
133   {
134   case 0: pci_isa_w(pcibus, offset, data, mem_mask); break;
135   case 1: pci_ide_w(pcibus, offset, data, mem_mask); break;
136   case 2: pci_usb_w(pcibus, offset, data, mem_mask); break;
137   }
138   //logerror("i82371sb_pci_write: write to undefined function %d\n", function);
139}
140
141//-------------------------------------------------
142//  device_start - device-specific startup
143//-------------------------------------------------
144
145void i82371sb_device::device_start()
146{
147   southbridge_device::device_start();
148   /* setup save states */
149   save_item(NAME(m_regs));
150}
151
152//-------------------------------------------------
153//  device_reset - device-specific reset
154//-------------------------------------------------
155
156void i82371sb_device::device_reset()
157{
158   southbridge_device::device_reset();
159
160   memset(m_regs, 0, sizeof(m_regs));
161
162   /* isa */
163   m_regs[0][0x00] = 0x70008086;
164   m_regs[0][0x04] = 0x00000000;
165   m_regs[0][0x08] = 0x06010000;
166   m_regs[0][0x0c] = 0x00800000;
167
168   /* ide */
169   m_regs[1][0x00] = 0x70108086;
170   m_regs[1][0x04] = 0x02800000;
171   m_regs[1][0x08] = 0x01018000;
172   m_regs[1][0x0c] = 0x00000000;
173
174   /* usb */
175   m_regs[2][0x00] = 0x70208086;
176   m_regs[2][0x04] = 0x02800000;
177   m_regs[2][0x08] = 0x0c030000;
178   m_regs[2][0x0c] = 0x00000000;
179}
trunk/src/emu/bus/lpci/i82371sb.h
r0r241753
1/***************************************************************************
2
3    Intel 82371SB PCI IDE ISA Xcelerator (PIIX3)
4
5    Part of the Intel 430TX chipset
6
7***************************************************************************/
8
9#ifndef __I82371SB_H__
10#define __I82371SB_H__
11
12#include "pci.h"
13#include "southbridge.h"
14
15// ======================> i82371sb_device
16
17class i82371sb_device :  public southbridge_device,
18                     public pci_device_interface
19{
20public:
21   // construction/destruction
22   i82371sb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
23
24   virtual UINT32 pci_read(pci_bus_device *pcibus, int function, int offset, UINT32 mem_mask);
25   virtual void pci_write(pci_bus_device *pcibus, int function, int offset, UINT32 data, UINT32 mem_mask);
26
27protected:
28   // device-level overrides
29   virtual void device_start();
30   virtual void device_reset();
31
32   UINT32 pci_isa_r(device_t *busdevice, int offset, UINT32 mem_mask);
33   void pci_isa_w(device_t *busdevice, int offset, UINT32 data, UINT32 mem_mask);
34
35   UINT32 pci_ide_r(device_t *busdevice, int offset, UINT32 mem_mask);
36   void pci_ide_w(device_t *busdevice, int offset, UINT32 data, UINT32 mem_mask);
37
38   UINT32 pci_usb_r(device_t *busdevice, int offset, UINT32 mem_mask);
39   void pci_usb_w(device_t *busdevice, int offset, UINT32 data, UINT32 mem_mask);
40private:
41   UINT32 m_regs[3][0x400/4];
42};
43
44// device type definition
45extern const device_type I82371SB;
46
47
48#endif /* __I82371SB_H__ */
trunk/src/emu/bus/lpci/i82439tx.c
r0r241753
1/***************************************************************************
2
3    Intel 82439TX System Controller (MTXC)
4
5***************************************************************************/
6
7#include "emu.h"
8#include "i82439tx.h"
9
10/***************************************************************************
11    IMPLEMENTATION
12***************************************************************************/
13
14const device_type I82439TX = &device_creator<i82439tx_device>;
15
16
17i82439tx_device::i82439tx_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
18   : northbridge_device(mconfig, I82439TX, "Intel 82439TX", tag, owner, clock, "i82439tx", __FILE__),
19   pci_device_interface( mconfig, *this ),
20   m_cpu_tag( NULL ),
21   m_region_tag( NULL )
22{
23}
24
25void i82439tx_device::i82439tx_configure_memory(UINT8 val, offs_t begin, offs_t end)
26{
27   switch (val & 0x03)
28   {
29   case 0:
30      m_space->install_rom(begin, end, m_rom + (begin - 0xc0000));
31      m_space->nop_write(begin, end);
32      break;
33   case 1:
34      m_space->install_rom(begin, end, m_bios_ram + (begin - 0xc0000) / 4);
35      m_space->nop_write(begin, end);
36      break;
37   case 2:
38      m_space->install_rom(begin, end, m_rom + (begin - 0xc0000));
39      m_space->install_writeonly(begin, end, m_bios_ram + (begin - 0xc0000) / 4);
40      break;
41   case 3:
42      m_space->install_ram(begin, end, m_bios_ram + (begin - 0xc0000) / 4);
43      break;
44   }
45}
46
47
48/***************************************************************************
49    PCI INTERFACE
50***************************************************************************/
51
52UINT32 i82439tx_device::pci_read(pci_bus_device *pcibus, int function, int offset, UINT32 mem_mask)
53{
54   UINT32 result = 0;
55
56   if (function != 0)
57      return 0;
58
59   switch(offset)
60   {
61      case 0x00:  /* vendor/device ID */
62         result = 0x71008086;
63         break;
64
65      case 0x08:  /* revision identification register and class code register*/
66         result = 0x06000001;
67         break;
68
69      case 0x04:  /* PCI command register */
70      case 0x0C:
71      case 0x10:  /* reserved */
72      case 0x14:  /* reserved */
73      case 0x18:  /* reserved */
74      case 0x1C:  /* reserved */
75      case 0x20:  /* reserved */
76      case 0x24:  /* reserved */
77      case 0x28:  /* reserved */
78      case 0x2C:  /* reserved */
79      case 0x30:  /* reserved */
80      case 0x34:  /* reserved */
81      case 0x38:  /* reserved */
82      case 0x3C:  /* reserved */
83      case 0x40:  /* reserved */
84      case 0x44:  /* reserved */
85      case 0x48:  /* reserved */
86      case 0x4C:  /* reserved */
87      case 0x50:
88      case 0x54:
89      case 0x58:
90      case 0x5C:
91      case 0x60:
92      case 0x64:
93      case 0x68:
94      case 0x6C:
95      case 0x70:
96      case 0x74:
97      case 0x78:
98      case 0x7C:
99      case 0x80:
100      case 0x84:
101      case 0x88:
102      case 0x8C:
103      case 0x90:
104      case 0x94:
105      case 0x98:
106      case 0x9C:
107      case 0xA0:
108      case 0xA4:
109      case 0xA8:
110      case 0xAC:
111      case 0xB0:
112      case 0xB4:
113      case 0xB8:
114      case 0xBC:
115      case 0xC0:
116      case 0xC4:
117      case 0xC8:
118      case 0xCC:
119      case 0xD0:
120      case 0xD4:
121      case 0xD8:
122      case 0xDC:
123      case 0xE0:
124      case 0xE4:
125      case 0xE8:
126      case 0xEC:
127      case 0xF0:
128      case 0xF4:
129      case 0xF8:
130      case 0xFC:
131         assert(((offset - 0x50) / 4) >= 0 && ((offset - 0x50) / 4) < ARRAY_LENGTH(m_regs));
132         result = m_regs[(offset - 0x50) / 4];
133         break;
134
135      default:
136         fatalerror("i82439tx_pci_read(): Unexpected PCI read 0x%02X\n", offset);
137   }
138   return result;
139}
140
141void i82439tx_device::pci_write(pci_bus_device *pcibus, int function, int offset, UINT32 data, UINT32 mem_mask)
142{
143   if (function != 0)
144      return;
145
146   switch(offset)
147   {
148      case 0x00:  /* vendor/device ID */
149      case 0x10:  /* reserved */
150      case 0x14:  /* reserved */
151      case 0x18:  /* reserved */
152      case 0x1C:  /* reserved */
153      case 0x20:  /* reserved */
154      case 0x24:  /* reserved */
155      case 0x28:  /* reserved */
156      case 0x2C:  /* reserved */
157      case 0x30:  /* reserved */
158      case 0x3C:  /* reserved */
159      case 0x40:  /* reserved */
160      case 0x44:  /* reserved */
161      case 0x48:  /* reserved */
162      case 0x4C:  /* reserved */
163         /* read only */
164         break;
165
166      case 0x04:  /* PCI command register */
167      case 0x0C:
168      case 0x50:
169      case 0x54:
170      case 0x58:
171      case 0x5C:
172      case 0x60:
173      case 0x64:
174      case 0x68:
175      case 0x6C:
176      case 0x70:
177      case 0x74:
178      case 0x78:
179      case 0x7C:
180      case 0x80:
181      case 0x84:
182      case 0x88:
183      case 0x8C:
184      case 0x90:
185      case 0x94:
186      case 0x98:
187      case 0x9C:
188      case 0xA0:
189      case 0xA4:
190      case 0xA8:
191      case 0xAC:
192      case 0xB0:
193      case 0xB4:
194      case 0xB8:
195      case 0xBC:
196      case 0xC0:
197      case 0xC4:
198      case 0xC8:
199      case 0xCC:
200      case 0xD0:
201      case 0xD4:
202      case 0xD8:
203      case 0xDC:
204      case 0xE0:
205      case 0xE4:
206      case 0xE8:
207      case 0xEC:
208      case 0xF0:
209      case 0xF4:
210      case 0xF8:
211      case 0xFC:
212         switch(offset)
213         {
214            case 0x58:
215               if ((mem_mask & 0x0000f000))
216                  i82439tx_configure_memory(data >> 12, 0xf0000, 0xfffff);
217               if ((mem_mask & 0x000f0000))
218                  i82439tx_configure_memory(data >> 16, 0xc0000, 0xc3fff);
219               if ((mem_mask & 0x00f00000))
220                  i82439tx_configure_memory(data >> 20, 0xc4000, 0xc7fff);
221               if ((mem_mask & 0x0f000000))
222                  i82439tx_configure_memory(data >> 24, 0xc8000, 0xccfff);
223               if ((mem_mask & 0xf0000000))
224                  i82439tx_configure_memory(data >> 28, 0xcc000, 0xcffff);
225               break;
226
227            case 0x5C:
228               if ((mem_mask & 0x0000000f))
229                  i82439tx_configure_memory(data >>  0, 0xd0000, 0xd3fff);
230               if ((mem_mask & 0x000000f0))
231                  i82439tx_configure_memory(data >>  4, 0xd4000, 0xd7fff);
232               if ((mem_mask & 0x00000f00))
233                  i82439tx_configure_memory(data >>  8, 0xd8000, 0xdbfff);
234               if ((mem_mask & 0x0000f000))
235                  i82439tx_configure_memory(data >> 12, 0xdc000, 0xdffff);
236               if ((mem_mask & 0x000f0000))
237                  i82439tx_configure_memory(data >> 16, 0xe0000, 0xe3fff);
238               if ((mem_mask & 0x00f00000))
239                  i82439tx_configure_memory(data >> 20, 0xe4000, 0xe7fff);
240               if ((mem_mask & 0x0f000000))
241                  i82439tx_configure_memory(data >> 24, 0xe8000, 0xecfff);
242               if ((mem_mask & 0xf0000000))
243                  i82439tx_configure_memory(data >> 28, 0xec000, 0xeffff);
244               break;
245         }
246
247         assert(((offset - 0x50) / 4) >= 0 && ((offset - 0x50) / 4) < ARRAY_LENGTH(m_regs));
248         COMBINE_DATA(&m_regs[(offset - 0x50) / 4]);
249         break;
250
251      default:
252         fatalerror("i82439tx_pci_write(): Unexpected PCI write 0x%02X <-- 0x%08X\n", offset, data);
253   }
254}
255
256//-------------------------------------------------
257//  device_start - device-specific startup
258//-------------------------------------------------
259
260void i82439tx_device::device_start()
261{
262   northbridge_device::device_start();
263   /* get address space we are working on */
264   device_t *cpu = machine().device(m_cpu_tag);
265   assert(cpu != NULL);
266
267   m_space = &cpu->memory().space(AS_PROGRAM);
268
269   /* get rom region */
270   m_rom = machine().root_device().memregion(m_region_tag)->base();
271
272   /* setup save states */
273   save_item(NAME(m_regs));
274   save_item(NAME(m_bios_ram));
275}
276
277//-------------------------------------------------
278//  device_reset - device-specific reset
279//-------------------------------------------------
280
281void i82439tx_device::device_reset()
282{
283   northbridge_device::device_reset();
284   /* setup initial values */
285   m_regs[0x00] = 0x14020000;
286   m_regs[0x01] = 0x01520000;
287   m_regs[0x02] = 0x00000000;
288   m_regs[0x03] = 0x00000000;
289   m_regs[0x04] = 0x02020202;
290   m_regs[0x05] = 0x00000002;
291   m_regs[0x06] = 0x00000000;
292   m_regs[0x07] = 0x00000000;
293
294   memset(m_bios_ram, 0, sizeof(m_bios_ram));
295
296   /* configure initial memory state */
297   i82439tx_configure_memory(0, 0xf0000, 0xfffff);
298   i82439tx_configure_memory(0, 0xc0000, 0xc3fff);
299   i82439tx_configure_memory(0, 0xc4000, 0xc7fff);
300   i82439tx_configure_memory(0, 0xc8000, 0xccfff);
301   i82439tx_configure_memory(0, 0xcc000, 0xcffff);
302   i82439tx_configure_memory(0, 0xd0000, 0xd3fff);
303   i82439tx_configure_memory(0, 0xd4000, 0xd7fff);
304   i82439tx_configure_memory(0, 0xd8000, 0xdbfff);
305   i82439tx_configure_memory(0, 0xdc000, 0xdffff);
306   i82439tx_configure_memory(0, 0xe0000, 0xe3fff);
307   i82439tx_configure_memory(0, 0xe4000, 0xe7fff);
308   i82439tx_configure_memory(0, 0xe8000, 0xecfff);
309   i82439tx_configure_memory(0, 0xec000, 0xeffff);
310}
trunk/src/emu/bus/lpci/i82439tx.h
r0r241753
1/***************************************************************************
2
3    Intel 82439TX System Controller (MTXC)
4
5    Part of the Intel 430TX chipset
6
7***************************************************************************/
8
9#ifndef __I82439TX_H__
10#define __I82439TX_H__
11
12#include "pci.h"
13#include "northbridge.h"
14
15#define MCFG_I82439TX_CPU( _tag ) \
16   i82439tx_device::static_set_cpu(*device, _tag);
17
18#define MCFG_I82439TX_REGION( _tag ) \
19   i82439tx_device::static_set_region(*device, _tag);
20
21// ======================> i82439tx_device
22
23class i82439tx_device :  public northbridge_device,
24   public pci_device_interface
25{
26public:
27   // construction/destruction
28   i82439tx_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
29
30   static void static_set_cpu(device_t &device, const char *tag) { dynamic_cast<i82439tx_device &>(device).m_cpu_tag = tag; }
31   static void static_set_region(device_t &device, const char *tag) { dynamic_cast<i82439tx_device &>(device).m_region_tag = tag; }
32
33   virtual UINT32 pci_read(pci_bus_device *pcibus, int function, int offset, UINT32 mem_mask);
34   virtual void pci_write(pci_bus_device *pcibus, int function, int offset, UINT32 data, UINT32 mem_mask);
35
36protected:
37   // device-level overrides
38   virtual void device_start();
39   virtual void device_reset();
40
41   void i82439tx_configure_memory(UINT8 val, offs_t begin, offs_t end);
42
43private:
44   const char *m_cpu_tag;
45   const char *m_region_tag;
46
47   address_space *m_space;
48   UINT8 *m_rom;
49
50   UINT32 m_regs[8];
51   UINT32 m_bios_ram[0x40000 / 4];
52};
53
54// device type definition
55extern const device_type I82439TX;
56
57#endif /* __I82439TX_H__ */
trunk/src/emu/bus/lpci/mpc105.c
r0r241753
1/***************************************************************************
2
3    mpc105.h
4
5    Motorola MPC105 PCI bridge
6
7***************************************************************************/
8
9#include "emu.h"
10#include "mpc105.h"
11#include "machine/ram.h"
12
13#define LOG_MPC105      0
14
15//**************************************************************************
16//  DEVICE DEFINITIONS
17//**************************************************************************
18
19const device_type MPC105 = &device_creator<mpc105_device>;
20
21
22//**************************************************************************
23//  LIVE DEVICE
24//**************************************************************************
25
26//-------------------------------------------------
27//  mpc105_device - constructor
28//-------------------------------------------------
29
30mpc105_device::mpc105_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
31   : device_t(mconfig, MPC105, "MPC105", tag, owner, clock, "mpc105", __FILE__),
32   pci_device_interface( mconfig, *this ),
33   m_cpu_tag(NULL),
34   m_bank_base_default(0)
35{
36}
37
38//-------------------------------------------------
39//  device_start - device-specific startup
40//-------------------------------------------------
41
42void mpc105_device::device_start()
43{
44   m_maincpu = machine().device<cpu_device>(m_cpu_tag);
45}
46
47//-------------------------------------------------
48//  device_reset - device-specific reset
49//-------------------------------------------------
50
51void mpc105_device::device_reset()
52{
53   m_bank_base = m_bank_base_default;
54   m_bank_enable = 0;
55   memset(m_bank_registers,0,sizeof(m_bank_registers));
56}
57
58//-------------------------------------------------
59//  update_memory - MMU update
60//-------------------------------------------------
61
62void mpc105_device::update_memory()
63{
64   int bank;
65   offs_t begin, end;
66   char bank_str[10];
67
68   if (LOG_MPC105)
69      logerror("mpc105_update_memory(machine): Updating memory (bank enable=0x%02X)\n", m_bank_enable);
70
71   if (m_bank_base > 0)
72   {
73      address_space &space = m_maincpu->space(AS_PROGRAM);
74
75      /* first clear everything out */
76      space.nop_read(0x00000000, 0x3FFFFFFF);
77      space.nop_read(0x00000000, 0x3FFFFFFF);
78   }
79
80   for (bank = 0; bank < MPC105_MEMORYBANK_COUNT; bank++)
81   {
82      if (m_bank_enable & (1 << bank))
83      {
84         begin = (((m_bank_registers[(bank / 4) + 0] >> (bank % 4) * 8)) & 0xFF) << 20
85            |   (((m_bank_registers[(bank / 4) + 2] >> (bank % 4) * 8)) & 0x03) << 28;
86
87         end   = (((m_bank_registers[(bank / 4) + 4] >> (bank % 4) * 8)) & 0xFF) << 20
88            |   (((m_bank_registers[(bank / 4) + 6] >> (bank % 4) * 8)) & 0x03) << 28
89            | 0x000FFFFF;
90
91         end = MIN(end, begin + machine().device<ram_device>(RAM_TAG)->size() - 1);
92
93         if ((begin + 0x100000) <= end)
94         {
95            if (LOG_MPC105)
96               logerror("\tbank #%d [%02d]: 0x%08X - 0x%08X [%p-%p]\n", bank, bank + m_bank_base, begin, end, machine().device<ram_device>(RAM_TAG)->pointer(), machine().device<ram_device>(RAM_TAG)->pointer() + (end - begin));
97
98            if (m_bank_base > 0)
99            {
100               sprintf(bank_str,"bank%d",bank + m_bank_base);
101               membank(bank_str)->set_base(machine().device<ram_device>(RAM_TAG)->pointer());
102            }
103         }
104      }
105   }
106}
107
108//-------------------------------------------------
109//  pci_read - implementation of PCI read
110//-------------------------------------------------
111
112UINT32 mpc105_device::pci_read(pci_bus_device *pcibus, int function, int offset, UINT32 mem_mask)
113{
114   UINT32 result;
115
116   if (function != 0)
117      return 0;
118
119   switch(offset)
120   {
121      case 0x00:  /* vendor/device ID */
122         result = 0x00011057;
123         break;
124
125      case 0x08:
126         result = 0x06000000;
127         break;
128
129      case 0x80:  /* memory starting address 1 */
130      case 0x84:  /* memory starting address 2 */
131      case 0x88:  /* extended memory starting address 1 */
132      case 0x8C:  /* extended memory starting address 2 */
133      case 0x90:  /* memory ending address 1 */
134      case 0x94:  /* memory ending address 2 */
135      case 0x98:  /* extended memory ending address 1 */
136      case 0x9C:  /* extended memory ending address 2 */
137         result = m_bank_registers[(offset - 0x80) / 4];
138         break;
139
140      case 0xA0:  /* memory enable */
141         result = m_bank_enable;
142         break;
143
144      case 0xA8:  /* processor interface configuration 1 */
145         /* TODO: Fix me! */
146         switch(/*cpu_getactivecpu()*/0)
147         {
148            case 0:
149               result = 0xFF000010;
150               break;
151
152            case 1:
153               result = 0xFF008010;
154               break;
155
156            default:
157               fatalerror("Unknown CPU\n");
158         }
159         break;
160
161      case 0xAC:  /* processor interface configuration 1 */
162         result = 0x000C060C;
163         break;
164
165      case 0xF0:  /* memory control configuration 1 */
166         result = 0xFF020000;
167         break;
168      case 0xF4:  /* memory control configuration 2 */
169         result = 0x00000003;
170         break;
171      case 0xF8:  /* memory control configuration 3 */
172         result = 0x00000000;
173         break;
174      case 0xFC:  /* memory control configuration 4 */
175         result = 0x00100000;
176         break;
177
178      default:
179         result = 0;
180         break;
181   }
182   return result;
183}
184
185//-------------------------------------------------
186//  pci_write - implementation of PCI write
187//-------------------------------------------------
188
189void mpc105_device::pci_write(pci_bus_device *pcibus, int function, int offset, UINT32 data, UINT32 mem_mask)
190{
191   int i;
192   if (function != 0)
193      return;
194
195   switch(offset)
196   {
197      case 0x80:  /* memory starting address 1 */
198      case 0x84:  /* memory starting address 2 */
199      case 0x88:  /* extended memory starting address 1 */
200      case 0x8C:  /* extended memory starting address 2 */
201      case 0x90:  /* memory ending address 1 */
202      case 0x94:  /* memory ending address 2 */
203      case 0x98:  /* extended memory ending address 1 */
204      case 0x9C:  /* extended memory ending address 2 */
205         i = (offset - 0x80) / 4;
206         if (m_bank_registers[i] != data)
207         {
208            m_bank_registers[i] = data;
209            update_memory();
210         }
211         break;
212
213      case 0xA0:  /* memory enable */
214         if (m_bank_enable != (UINT8) data)
215         {
216            m_bank_enable = (UINT8) data;
217            update_memory();
218         }
219         break;
220
221      case 0xF0:  /* memory control configuration 1 */
222      case 0xF4:  /* memory control configuration 2 */
223      case 0xF8:  /* memory control configuration 3 */
224      case 0xFC:  /* memory control configuration 4 */
225         break;
226
227      case 0xA8:  /* processor interface configuration 1 */
228         //fatalerror("mpc105_pci_write(): Unexpected PCI write 0x%02X <-- 0x%08X\n", offset, data);
229         break;
230   }
231}
trunk/src/emu/bus/lpci/mpc105.h
r0r241753
1/***************************************************************************
2
3    mpc105.h
4
5    Motorola MPC105 PCI bridge
6
7***************************************************************************/
8
9#ifndef MPC105_H
10#define MPC105_H
11
12#include "pci.h"
13
14#define MPC105_MEMORYBANK_COUNT     8
15
16#define MCFG_MPC105_CPU( _tag ) \
17   mpc105_device::static_set_cpu(*device, _tag);
18
19#define MCFG_MPC105_BANK_BASE_DEFAULT( bank_base_default ) \
20   mpc105_device::static_set_bank_base_default(*device, bank_base_default);
21
22// ======================> mpc105_device
23
24class mpc105_device : public device_t,
25   public pci_device_interface
26{
27public:
28   // construction/destruction
29   mpc105_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
30
31   static void static_set_cpu(device_t &device, const char *tag) { dynamic_cast<mpc105_device &>(device).m_cpu_tag = tag; }
32   static void static_set_bank_base_default(device_t &device, int bank_base_default) { dynamic_cast<mpc105_device &>(device).m_bank_base_default = bank_base_default; }
33
34   virtual UINT32 pci_read(pci_bus_device *pcibus, int function, int offset, UINT32 mem_mask);
35   virtual void pci_write(pci_bus_device *pcibus, int function, int offset, UINT32 data, UINT32 mem_mask);
36
37protected:
38   // device-level overrides
39   virtual void device_start();
40   virtual void device_reset();
41
42   void update_memory();
43
44private:
45   const char *m_cpu_tag;
46   int m_bank_base_default;
47   int m_bank_base;
48   UINT8 m_bank_enable;
49   UINT32 m_bank_registers[8];
50
51   cpu_device*   m_maincpu;
52};
53
54
55// device type definition
56extern const device_type MPC105;
57
58#endif /* MPC105_H */
trunk/src/emu/bus/lpci/northbridge.c
r0r241753
1/***************************************************************************
2
3  Northbridge implementation
4
5***************************************************************************/
6
7#include "emu.h"
8#include "northbridge.h"
9
10//**************************************************************************
11//  GLOBAL VARIABLES
12//**************************************************************************
13
14northbridge_device::northbridge_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)
15   : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
16   m_maincpu(*this, ":maincpu"),
17   m_ram(*this, ":" RAM_TAG)
18{
19}
20
21//-------------------------------------------------
22//  device_start - device-specific startup
23//-------------------------------------------------
24
25void northbridge_device::device_start()
26{
27   address_space& space = machine().device(":maincpu")->memory().space(AS_PROGRAM);
28
29   machine().root_device().membank("bank10")->set_base(m_ram->pointer());
30
31   if (m_ram->size() > 0x0a0000)
32   {
33      offs_t ram_limit = 0x100000 + m_ram->size() - 0x0a0000;
34      space.install_read_bank(0x100000,  ram_limit - 1, "bank1");
35      space.install_write_bank(0x100000,  ram_limit - 1, "bank1");
36      machine().root_device().membank("bank1")->set_base(m_ram->pointer() + 0xa0000);
37   }
38}
39
40//-------------------------------------------------
41//  device_reset - device-specific reset
42//-------------------------------------------------
43
44void northbridge_device::device_reset()
45{
46}
trunk/src/emu/bus/lpci/northbridge.h
r0r241753
1#pragma once
2
3#ifndef __NORTHBRIDGE_H__
4#define __NORTHBRIDGE_H__
5
6#include "emu.h"
7
8#include "machine/ram.h"
9
10//**************************************************************************
11//  TYPE DEFINITIONS
12//**************************************************************************
13
14// ======================> northbridge_device
15
16class northbridge_device :
17      public device_t
18{
19public:
20      // construction/destruction
21      northbridge_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);
22protected:
23      // device-level overrides
24      virtual void device_start();
25      virtual void device_reset();
26public:
27      required_device<cpu_device> m_maincpu;
28      required_device<ram_device> m_ram;
29
30};
31
32#endif  /* __NORTHBRIDGE_H__ */
trunk/src/emu/bus/lpci/pci.c
r0r241753
1/***************************************************************************
2
3    pci.c
4
5    PCI bus
6
7    The PCI bus is a 32-bit bus introduced by Intel, so it is little endian
8
9    Control word:
10        bit 31:         Enable bit
11        bits 30-24:     Reserved
12        bits 23-16:     PCI bus number
13        bits 15-11:     PCI device number
14        bits 10- 8:     PCI function number
15        bits  7- 0:     Offset address
16
17    Standard PCI registers:
18        0x00    2   Vendor ID
19        0x02    2   Device ID
20        0x04    2   PCI Command
21        0x06    2   PCI Status
22        0x08    1   Revision ID
23        0x09    1   Programming Interface
24        0x0A    1   Subclass Code
25        0x0B    1   Class Code
26
27    Class Code/Subclass Code/Programming Interface
28        0x00XXXX    Pre-PCI 2.0 devices
29        0x000000        Non-VGA device
30        0x000101        VGA device
31        0x01XXXX    Storage Controller
32        0x010000        SCSI
33        0x0101XX        IDE
34        0x0102XX        Floppy
35        0x0103XX        IPI
36        0x0104XX        RAID
37        0x0180XX        Other
38        0x02XXXX    Network Card
39        0x020000        Ethernet
40        0x020100        Tokenring
41        0x020200        FDDI
42        0x020300        ATM
43        0x028000        Other
44        0x03XXXX    Display Controller
45        0x030000        VGA
46        0x030001        8514 Compatible
47        0x030100        XGA
48        0x038000        Other
49        0x04XXXX    Multimedia
50        0x040000        Video
51        0x040100        Audio
52        0x048000        Other
53        0x05XXXX    Memory Controller
54        0x050000        RAM
55        0x050100        Flash
56        0x058000        Other
57        0x06XXXX    Bridge
58        0x060000        Host/PCI
59        0x060100        PCI/ISA
60        0x060200        PCI/EISA
61        0x060300        PCI/Micro Channel
62        0x060400        PCI/PCI
63        0x060500        PCI/PCMCIA
64        0x060600        PCI/NuBus
65        0x060700        PCI/CardBus
66        0x068000        Other
67
68    Information on PCI vendors can be found at http://www.pcidatabase.com/
69
70***************************************************************************/
71
72#include "emu.h"
73#include "pci.h"
74
75#define LOG_PCI 0
76
77//**************************************************************************
78//  GLOBAL VARIABLES
79//**************************************************************************
80
81const device_type PCI_BUS = &device_creator<pci_bus_device>;
82
83//**************************************************************************
84//  LIVE DEVICE
85//**************************************************************************
86
87//-------------------------------------------------
88//  pci_bus_device - constructor
89//-------------------------------------------------
90pci_bus_device::pci_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
91      device_t(mconfig, PCI_BUS, "PCI Bus", tag, owner, clock, "pci_bus", __FILE__),
92      m_father(NULL)
93{
94   for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++) {
95      m_devtag[i]= NULL;
96   }
97   m_siblings_count = 0;
98}
99
100/***************************************************************************
101    INLINE FUNCTIONS
102***************************************************************************/
103
104READ32_MEMBER( pci_bus_device::read )
105{
106   UINT32 result = 0xffffffff;
107   int function, reg;
108
109   offset %= 2;
110
111   switch (offset)
112   {
113      case 0:
114         result = m_address;
115         break;
116
117      case 1:
118         if (m_devicenum != -1)
119         {
120            if (m_busnumaddr->m_device[m_devicenum] != NULL)
121            {
122               function = (m_address >> 8) & 0x07;
123               reg = (m_address >> 0) & 0xfc;
124               result = m_busnumaddr->m_device[m_devicenum]->pci_read(m_busnumaddr, function, reg, mem_mask);
125            }
126         }
127         break;
128   }
129
130   if (LOG_PCI)
131      logerror("read('%s'): offset=%d result=0x%08X\n", tag(), offset, result);
132
133   return result;
134}
135
136
137
138pci_bus_device *pci_bus_device::pci_search_bustree(int busnum, int devicenum, pci_bus_device *pcibus)
139{
140   int a;
141   pci_bus_device *ret;
142
143   if (pcibus->m_busnum == busnum)
144   {
145      return pcibus;
146   }
147   for (a = 0; a < pcibus->m_siblings_count; a++)
148   {
149      ret = pci_search_bustree(busnum, devicenum, pcibus->m_siblings[a]);
150      if (ret != NULL)
151         return ret;
152   }
153   return NULL;
154}
155
156
157
158WRITE32_MEMBER( pci_bus_device::write )
159{
160   offset %= 2;
161
162   if (LOG_PCI)
163      logerror("write('%s'): offset=%d data=0x%08X\n", tag(), offset, data);
164
165   switch (offset)
166   {
167      case 0:
168         m_address = data;
169
170         /* lookup current device */
171         if (m_address & 0x80000000)
172         {
173            int busnum = (m_address >> 16) & 0xff;
174            int devicenum = (m_address >> 11) & 0x1f;
175            m_busnumaddr = pci_search_bustree(busnum, devicenum, this);
176            if (m_busnumaddr != NULL)
177            {
178               m_busnumber = busnum;
179               m_devicenum = devicenum;
180            }
181            else
182               m_devicenum = -1;
183            if (LOG_PCI)
184               logerror("  bus:%d device:%d\n", busnum, devicenum);
185         }
186         break;
187
188      case 1:
189         if (m_devicenum != -1)
190         {
191            if (m_busnumaddr->m_device[m_devicenum] != NULL)
192            {
193               int function = (m_address >> 8) & 0x07;
194               int reg = (m_address >> 0) & 0xfc;
195               m_busnumaddr->m_device[m_devicenum]->pci_write(m_busnumaddr, function, reg, data, mem_mask);
196            }
197            if (LOG_PCI)
198               logerror("  function:%d register:%d\n", (m_address >> 8) & 0x07, (m_address >> 0) & 0xfc);
199         }
200         break;
201   }
202}
203
204
205
206READ64_MEMBER(pci_bus_device::read_64be)
207{
208   UINT64 result = 0;
209   mem_mask = FLIPENDIAN_INT64(mem_mask);
210   if (ACCESSING_BITS_0_31)
211      result |= (UINT64)read(space, offset * 2 + 0, mem_mask >> 0) << 0;
212   if (ACCESSING_BITS_32_63)
213      result |= (UINT64)read(space, offset * 2 + 1, mem_mask >> 32) << 32;
214   return FLIPENDIAN_INT64(result);
215}
216
217WRITE64_MEMBER(pci_bus_device::write_64be)
218{
219   data = FLIPENDIAN_INT64(data);
220   mem_mask = FLIPENDIAN_INT64(mem_mask);
221   if (ACCESSING_BITS_0_31)
222      write(space, offset * 2 + 0, data >> 0, mem_mask >> 0);
223   if (ACCESSING_BITS_32_63)
224      write(space, offset * 2 + 1, data >> 32, mem_mask >> 32);
225}
226
227
228void pci_bus_device::add_sibling(pci_bus_device *sibling, int busnum)
229{
230   m_siblings[m_siblings_count] = sibling;
231   m_siblings_busnum[m_siblings_count] = busnum;
232   m_siblings_count++;
233}
234
235
236//-------------------------------------------------
237//  device_post_load - handle updating after a
238//  restore
239//-------------------------------------------------
240
241void pci_bus_device::device_post_load()
242{
243   if (m_devicenum != -1)
244   {
245      m_busnumaddr = pci_search_bustree(m_busnumber, m_devicenum, this);
246   }
247}
248
249//-------------------------------------------------
250//  device_start - device-specific startup
251//-------------------------------------------------
252
253void pci_bus_device::device_start()
254{
255   /* store a pointer back to the device */
256   m_devicenum = -1;
257
258   char id[3];
259   /* find all our devices */
260   for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++)
261   {
262      sprintf(id, "%d", i);
263      pci_connector *conn = downcast<pci_connector *>(subdevice(id));
264      if (conn!=NULL)
265         m_device[i] = conn->get_device();
266      else
267         m_device[i] = NULL;
268   }
269
270   if (m_father != NULL) {
271      pci_bus_device *father = machine().device<pci_bus_device>(m_father);
272      if (father)
273         father->add_sibling(this, m_busnum);
274   }
275
276   /* register pci states */
277   save_item(NAME(m_address));
278   save_item(NAME(m_devicenum));
279   save_item(NAME(m_busnum));
280}
281
282
283//-------------------------------------------------
284//  device_reset - device-specific reset
285//-------------------------------------------------
286
287void pci_bus_device::device_reset()
288{
289   /* reset the drive state */
290   m_devicenum = -1;
291   m_address = 0;
292}
293
294//-------------------------------------------------
295//  pci_device_interface - constructor
296//-------------------------------------------------
297
298pci_device_interface::pci_device_interface(const machine_config &mconfig, device_t &device)
299   : device_slot_card_interface(mconfig, device)
300{
301}
302
303//-------------------------------------------------
304//  ~pci_device_interface - destructor
305//-------------------------------------------------
306
307pci_device_interface::~pci_device_interface()
308{
309}
310
311
312const device_type PCI_CONNECTOR = &device_creator<pci_connector>;
313
314
315pci_connector::pci_connector(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
316   device_t(mconfig, PCI_CONNECTOR, "PCI device connector abstraction", tag, owner, clock, "pci_connector", __FILE__),
317   device_slot_interface(mconfig, *this)
318{
319}
320
321pci_connector::~pci_connector()
322{
323}
324
325void pci_connector::device_start()
326{
327}
328
329pci_device_interface *pci_connector::get_device()
330{
331   return dynamic_cast<pci_device_interface *>(get_card_device());
332}
trunk/src/emu/bus/lpci/pci.h
r0r241753
1/***************************************************************************
2
3    pci.h
4
5    PCI bus
6
7***************************************************************************/
8
9#ifndef PCI_H
10#define PCI_H
11
12//**************************************************************************
13//  TYPE DEFINITIONS
14//**************************************************************************
15class pci_bus_device;
16
17// ======================> pci_device_interface
18
19class pci_device_interface :  public device_slot_card_interface
20{
21public:
22   // construction/destruction
23   pci_device_interface(const machine_config &mconfig, device_t &device);
24   virtual ~pci_device_interface();
25
26   virtual UINT32 pci_read(pci_bus_device *pcibus, int function, int offset, UINT32 mem_mask) = 0;
27   virtual void pci_write(pci_bus_device *pcibus, int function, int offset, UINT32 data, UINT32 mem_mask) = 0;
28private:
29};
30
31class pci_connector: public device_t,
32                  public device_slot_interface
33{
34public:
35   pci_connector(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
36   virtual ~pci_connector();
37
38   pci_device_interface *get_device();
39
40protected:
41   virtual void device_start();
42};
43
44extern const device_type PCI_CONNECTOR;
45
46// ======================> pci_bus_device
47
48class pci_bus_device :  public device_t
49{
50public:
51   // construction/destruction
52   pci_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
53
54   DECLARE_READ32_MEMBER( read );
55   DECLARE_WRITE32_MEMBER( write );
56
57   DECLARE_READ64_MEMBER( read_64be );
58   DECLARE_WRITE64_MEMBER( write_64be );
59
60   void set_busnum(int busnum) { m_busnum = busnum; }
61   void set_father(const char *father) { m_father = father; }
62   void set_device(int num, const char *tag) {
63      m_devtag[num] = tag; }
64
65   pci_bus_device *pci_search_bustree(int busnum, int devicenum, pci_bus_device *pcibus);
66   void add_sibling(pci_bus_device *sibling, int busnum);
67
68protected:
69   // device-level overrides
70   virtual void device_start();
71   virtual void device_reset();
72   virtual void device_post_load();
73
74private:
75   UINT8               m_busnum;
76
77   const char *        m_devtag[32];
78   pci_device_interface *m_device[32];
79
80   const char *        m_father;
81   pci_bus_device *    m_siblings[8];
82   UINT8               m_siblings_busnum[8];
83   int                 m_siblings_count;
84
85   offs_t              m_address;
86   INT8                m_devicenum; // device number we are addressing
87   INT8                m_busnumber; // pci bus number we are addressing
88   pci_bus_device *    m_busnumaddr; // pci bus we are addressing
89};
90
91// device type definition
92extern const device_type PCI_BUS;
93
94
95/***************************************************************************
96    DEVICE CONFIGURATION MACROS
97***************************************************************************/
98
99#define MCFG_PCI_BUS_ADD(_tag, _busnum) \
100   MCFG_DEVICE_ADD(_tag, PCI_BUS, 0) \
101   downcast<pci_bus_device *>(device)->set_busnum(_busnum);
102#define MCFG_PCI_BUS_DEVICE(_tag, _slot_intf, _def_slot, _fixed) \
103   MCFG_DEVICE_ADD(_tag, PCI_CONNECTOR, 0) \
104   MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _fixed)
105
106#define MCFG_PCI_BUS_SIBLING(_father_tag) \
107   downcast<pci_bus_device *>(device)->set_father(_father_tag);
108
109
110#endif /* PCI_H */
trunk/src/emu/bus/lpci/southbridge.c
r0r241753
1/***************************************************************************
2
3  Southbridge implementation
4
5***************************************************************************/
6
7#include "emu.h"
8#include "cpu/i386/i386.h"
9#include "southbridge.h"
10#include "bus/pc_kbd/keyboards.h"
11
12
13static SLOT_INTERFACE_START(pc_isa_onboard)
14   SLOT_INTERFACE("comat", ISA8_COM_AT)
15   SLOT_INTERFACE("lpt", ISA8_LPT)
16   SLOT_INTERFACE("fdcsmc", ISA8_FDC_SMC)
17SLOT_INTERFACE_END
18
19static MACHINE_CONFIG_FRAGMENT( southbridge )
20   MCFG_DEVICE_ADD("pit8254", PIT8254, 0)
21   MCFG_PIT8253_CLK0(4772720/4) /* heartbeat IRQ */
22   MCFG_PIT8253_OUT0_HANDLER(WRITELINE(southbridge_device, at_pit8254_out0_changed))
23   MCFG_PIT8253_CLK1(4772720/4) /* dram refresh */
24   MCFG_PIT8253_OUT1_HANDLER(WRITELINE(southbridge_device, at_pit8254_out1_changed))
25   MCFG_PIT8253_CLK2(4772720/4) /* pio port c pin 4, and speaker polling enough */
26   MCFG_PIT8253_OUT2_HANDLER(WRITELINE(southbridge_device, at_pit8254_out2_changed))
27
28   MCFG_DEVICE_ADD( "dma8237_1", AM9517A, XTAL_14_31818MHz/3 )
29   MCFG_I8237_OUT_HREQ_CB(DEVWRITELINE("dma8237_2", am9517a_device, dreq0_w))
30   MCFG_I8237_OUT_EOP_CB(WRITELINE(southbridge_device, at_dma8237_out_eop))
31   MCFG_I8237_IN_MEMR_CB(READ8(southbridge_device, pc_dma_read_byte))
32   MCFG_I8237_OUT_MEMW_CB(WRITE8(southbridge_device, pc_dma_write_byte))
33   MCFG_I8237_IN_IOR_0_CB(READ8(southbridge_device, pc_dma8237_0_dack_r))
34   MCFG_I8237_IN_IOR_1_CB(READ8(southbridge_device, pc_dma8237_1_dack_r))
35   MCFG_I8237_IN_IOR_2_CB(READ8(southbridge_device, pc_dma8237_2_dack_r))
36   MCFG_I8237_IN_IOR_3_CB(READ8(southbridge_device, pc_dma8237_3_dack_r))
37   MCFG_I8237_OUT_IOW_0_CB(WRITE8(southbridge_device, pc_dma8237_0_dack_w))
38   MCFG_I8237_OUT_IOW_1_CB(WRITE8(southbridge_device, pc_dma8237_1_dack_w))
39   MCFG_I8237_OUT_IOW_2_CB(WRITE8(southbridge_device, pc_dma8237_2_dack_w))
40   MCFG_I8237_OUT_IOW_3_CB(WRITE8(southbridge_device, pc_dma8237_3_dack_w))
41   MCFG_I8237_OUT_DACK_0_CB(WRITELINE(southbridge_device, pc_dack0_w))
42   MCFG_I8237_OUT_DACK_1_CB(WRITELINE(southbridge_device, pc_dack1_w))
43   MCFG_I8237_OUT_DACK_2_CB(WRITELINE(southbridge_device, pc_dack2_w))
44   MCFG_I8237_OUT_DACK_3_CB(WRITELINE(southbridge_device, pc_dack3_w))
45
46   MCFG_DEVICE_ADD( "dma8237_2", AM9517A, XTAL_14_31818MHz/3 )
47   MCFG_I8237_OUT_HREQ_CB(WRITELINE(southbridge_device, pc_dma_hrq_changed))
48   MCFG_I8237_IN_MEMR_CB(READ8(southbridge_device, pc_dma_read_word))
49   MCFG_I8237_OUT_MEMW_CB(WRITE8(southbridge_device, pc_dma_write_word))
50   MCFG_I8237_IN_IOR_1_CB(READ8(southbridge_device, pc_dma8237_5_dack_r))
51   MCFG_I8237_IN_IOR_2_CB(READ8(southbridge_device, pc_dma8237_6_dack_r))
52   MCFG_I8237_IN_IOR_3_CB(READ8(southbridge_device, pc_dma8237_7_dack_r))
53   MCFG_I8237_OUT_IOW_1_CB(WRITE8(southbridge_device, pc_dma8237_5_dack_w))
54   MCFG_I8237_OUT_IOW_2_CB(WRITE8(southbridge_device, pc_dma8237_6_dack_w))
55   MCFG_I8237_OUT_IOW_3_CB(WRITE8(southbridge_device, pc_dma8237_7_dack_w))
56   MCFG_I8237_OUT_DACK_0_CB(WRITELINE(southbridge_device, pc_dack4_w))
57   MCFG_I8237_OUT_DACK_1_CB(WRITELINE(southbridge_device, pc_dack5_w))
58   MCFG_I8237_OUT_DACK_2_CB(WRITELINE(southbridge_device, pc_dack6_w))
59   MCFG_I8237_OUT_DACK_3_CB(WRITELINE(southbridge_device, pc_dack7_w))
60
61   MCFG_PIC8259_ADD( "pic8259_master", INPUTLINE(":maincpu", 0), VCC, READ8(southbridge_device, get_slave_ack) )
62   MCFG_PIC8259_ADD( "pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir2_w), GND, NULL )
63
64   MCFG_DEVICE_ADD("keybc", AT_KEYBOARD_CONTROLLER, XTAL_12MHz)
65   MCFG_AT_KEYBOARD_CONTROLLER_SYSTEM_RESET_CB(INPUTLINE(":maincpu", INPUT_LINE_RESET))
66   MCFG_AT_KEYBOARD_CONTROLLER_GATE_A20_CB(INPUTLINE(":maincpu", INPUT_LINE_A20))
67   MCFG_AT_KEYBOARD_CONTROLLER_INPUT_BUFFER_FULL_CB(DEVWRITELINE("pic8259_master", pic8259_device, ir1_w))
68   MCFG_AT_KEYBOARD_CONTROLLER_KEYBOARD_CLOCK_CB(DEVWRITELINE("pc_kbdc", pc_kbdc_device, clock_write_from_mb))
69   MCFG_AT_KEYBOARD_CONTROLLER_KEYBOARD_DATA_CB(DEVWRITELINE("pc_kbdc", pc_kbdc_device, data_write_from_mb))
70   MCFG_DEVICE_ADD("pc_kbdc", PC_KBDC, 0)
71   MCFG_PC_KBDC_OUT_CLOCK_CB(DEVWRITELINE("keybc", at_keyboard_controller_device, keyboard_clock_w))
72   MCFG_PC_KBDC_OUT_DATA_CB(DEVWRITELINE("keybc", at_keyboard_controller_device, keyboard_data_w))
73   MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL)
74
75   MCFG_DS12885_ADD("rtc")
76   MCFG_MC146818_IRQ_HANDLER(DEVWRITELINE("pic8259_slave", pic8259_device, ir0_w))
77   MCFG_MC146818_CENTURY_INDEX(0x32)
78
79   MCFG_BUS_MASTER_IDE_CONTROLLER_ADD("ide", ata_devices, "hdd", NULL, false)
80   MCFG_ATA_INTERFACE_IRQ_HANDLER(DEVWRITELINE("pic8259_slave", pic8259_device, ir6_w))
81   MCFG_BUS_MASTER_IDE_CONTROLLER_SPACE(":maincpu", AS_PROGRAM)
82
83   MCFG_BUS_MASTER_IDE_CONTROLLER_ADD("ide2", ata_devices, "cdrom", NULL, false)
84   MCFG_ATA_INTERFACE_IRQ_HANDLER(DEVWRITELINE("pic8259_slave", pic8259_device, ir7_w))
85   MCFG_BUS_MASTER_IDE_CONTROLLER_SPACE(":maincpu", AS_PROGRAM)
86
87   /* sound hardware */
88   MCFG_SPEAKER_STANDARD_MONO("mono")
89   MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
90   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
91
92   MCFG_DEVICE_ADD("isabus", ISA16, 0)
93   MCFG_ISA16_CPU(":maincpu")
94   MCFG_ISA_OUT_IRQ2_CB(DEVWRITELINE("pic8259_slave",  pic8259_device, ir2_w)) // in place of irq 2 on at irq 9 is used
95   MCFG_ISA_OUT_IRQ3_CB(DEVWRITELINE("pic8259_master", pic8259_device, ir3_w))
96   MCFG_ISA_OUT_IRQ4_CB(DEVWRITELINE("pic8259_master", pic8259_device, ir4_w))
97   MCFG_ISA_OUT_IRQ5_CB(DEVWRITELINE("pic8259_master", pic8259_device, ir5_w))
98   MCFG_ISA_OUT_IRQ6_CB(DEVWRITELINE("pic8259_master", pic8259_device, ir6_w))
99   MCFG_ISA_OUT_IRQ7_CB(DEVWRITELINE("pic8259_master", pic8259_device, ir7_w))
100   MCFG_ISA_OUT_IRQ10_CB(DEVWRITELINE("pic8259_slave", pic8259_device, ir3_w))
101   MCFG_ISA_OUT_IRQ11_CB(DEVWRITELINE("pic8259_slave", pic8259_device, ir4_w))
102   MCFG_ISA_OUT_IRQ12_CB(DEVWRITELINE("pic8259_slave", pic8259_device, ir5_w))
103   MCFG_ISA_OUT_IRQ14_CB(DEVWRITELINE("pic8259_slave", pic8259_device, ir6_w))
104   MCFG_ISA_OUT_IRQ15_CB(DEVWRITELINE("pic8259_slave", pic8259_device, ir7_w))
105   MCFG_ISA_OUT_DRQ0_CB(DEVWRITELINE("dma8237_1", am9517a_device, dreq0_w))
106   MCFG_ISA_OUT_DRQ1_CB(DEVWRITELINE("dma8237_1", am9517a_device, dreq1_w))
107   MCFG_ISA_OUT_DRQ2_CB(DEVWRITELINE("dma8237_1", am9517a_device, dreq2_w))
108   MCFG_ISA_OUT_DRQ3_CB(DEVWRITELINE("dma8237_1", am9517a_device, dreq3_w))
109   MCFG_ISA_OUT_DRQ5_CB(DEVWRITELINE("dma8237_2", am9517a_device, dreq1_w))
110   MCFG_ISA_OUT_DRQ6_CB(DEVWRITELINE("dma8237_2", am9517a_device, dreq2_w))
111   MCFG_ISA_OUT_DRQ7_CB(DEVWRITELINE("dma8237_2", am9517a_device, dreq3_w))
112   // on board devices
113   MCFG_ISA16_SLOT_ADD("isabus","board1", pc_isa_onboard, "fdcsmc", true)
114   MCFG_ISA16_SLOT_ADD("isabus","board2", pc_isa_onboard, "comat", true)
115   MCFG_ISA16_SLOT_ADD("isabus","board3", pc_isa_onboard, "lpt", true)
116MACHINE_CONFIG_END
117
118//-------------------------------------------------
119//  machine_config_additions - device-specific
120//  machine configurations
121//-------------------------------------------------
122
123machine_config_constructor southbridge_device::device_mconfig_additions() const
124{
125   return MACHINE_CONFIG_NAME( southbridge );
126}
127
128southbridge_device::southbridge_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)
129   : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
130   m_maincpu(*this, ":maincpu"),
131   m_pic8259_master(*this, "pic8259_master"),
132   m_pic8259_slave(*this, "pic8259_slave"),
133   m_dma8237_1(*this, "dma8237_1"),
134   m_dma8237_2(*this, "dma8237_2"),
135   m_pit8254(*this, "pit8254"),
136   m_keybc(*this, "keybc"),
137   m_isabus(*this, "isabus"),
138   m_speaker(*this, "speaker"),
139   m_ds12885(*this, "rtc"),
140   m_pc_kbdc(*this, "pc_kbdc"),
141   m_ide(*this, "ide"),
142   m_ide2(*this, "ide2")
143{
144}
145/**********************************************************
146 *
147 * Init functions
148 *
149 **********************************************************/
150
151/// HACK: the memory system cannot cope with mixing the  8 bit device map from the fdc with a 32 bit handler
152READ8_MEMBER(southbridge_device::ide_read_cs1_r)
153{
154   return m_ide->read_cs1(space, 1, (UINT32) 0xff0000) >> 16;
155}
156
157WRITE8_MEMBER(southbridge_device::ide_write_cs1_w)
158{
159   m_ide->write_cs1(space, 1, (UINT32) data << 16, (UINT32) 0xff0000);
160}
161
162READ8_MEMBER(southbridge_device::ide2_read_cs1_r)
163{
164   return m_ide2->read_cs1(space, 1, (UINT32) 0xff0000) >> 16;
165}
166
167WRITE8_MEMBER(southbridge_device::ide2_write_cs1_w)
168{
169   m_ide2->write_cs1(space, 1, (UINT32) data << 16, (UINT32) 0xff0000);
170}
171
172//-------------------------------------------------
173//  device_start - device-specific startup
174//-------------------------------------------------
175
176void southbridge_device::device_start()
177{
178   address_space& spaceio = machine().device(":maincpu")->memory().space(AS_IO);
179
180   spaceio.install_readwrite_handler(0x0000, 0x001f, read8_delegate(FUNC(am9517a_device::read),&(*m_dma8237_1)), write8_delegate(FUNC(am9517a_device::write),&(*m_dma8237_1)), 0xffffffff);
181   spaceio.install_readwrite_handler(0x0020, 0x003f, read8_delegate(FUNC(pic8259_device::read),&(*m_pic8259_master)), write8_delegate(FUNC(pic8259_device::write),&(*m_pic8259_master)), 0xffffffff);
182   spaceio.install_readwrite_handler(0x0040, 0x005f, read8_delegate(FUNC(pit8254_device::read),&(*m_pit8254)), write8_delegate(FUNC(pit8254_device::write),&(*m_pit8254)), 0xffffffff);
183   spaceio.install_readwrite_handler(0x0060, 0x0063, read8_delegate(FUNC(southbridge_device::at_keybc_r),this), write8_delegate(FUNC(southbridge_device::at_keybc_w),this), 0xffffffff);
184   spaceio.install_readwrite_handler(0x0064, 0x0067, read8_delegate(FUNC(at_keyboard_controller_device::status_r),&(*m_keybc)), write8_delegate(FUNC(at_keyboard_controller_device::command_w),&(*m_keybc)), 0xffffffff);
185   spaceio.install_readwrite_handler(0x0070, 0x007f, read8_delegate(FUNC(ds12885_device::read),&(*m_ds12885)), write8_delegate(FUNC(ds12885_device::write),&(*m_ds12885)), 0xffffffff);
186   spaceio.install_readwrite_handler(0x0080, 0x009f, read8_delegate(FUNC(southbridge_device::at_page8_r),this), write8_delegate(FUNC(southbridge_device::at_page8_w),this), 0xffffffff);
187   spaceio.install_readwrite_handler(0x00a0, 0x00bf, read8_delegate(FUNC(pic8259_device::read),&(*m_pic8259_slave)), write8_delegate(FUNC(pic8259_device::write),&(*m_pic8259_slave)), 0xffffffff);
188   spaceio.install_readwrite_handler(0x00c0, 0x00df, read8_delegate(FUNC(southbridge_device::at_dma8237_2_r),this), write8_delegate(FUNC(southbridge_device::at_dma8237_2_w),this), 0xffffffff);
189   spaceio.install_readwrite_handler(0x0170, 0x0177, read32_delegate(FUNC(bus_master_ide_controller_device::read_cs0),&(*m_ide2)), write32_delegate(FUNC(bus_master_ide_controller_device::write_cs0), &(*m_ide2)),0xffffffff);
190   spaceio.install_readwrite_handler(0x01f0, 0x01f7, read32_delegate(FUNC(bus_master_ide_controller_device::read_cs0),&(*m_ide)), write32_delegate(FUNC(bus_master_ide_controller_device::write_cs0), &(*m_ide)),0xffffffff);
191//  HACK: this works if you take out the (non working) fdc
192//  spaceio.install_readwrite_handler(0x0370, 0x0377, read32_delegate(FUNC(bus_master_ide_controller_device::read_cs1),&(*m_ide2)), write32_delegate(FUNC(bus_master_ide_controller_device::write_cs1), &(*m_ide2)),0xffffffff);
193//  spaceio.install_readwrite_handler(0x03f0, 0x03f7, read32_delegate(FUNC(bus_master_ide_controller_device::read_cs1),&(*m_ide)), write32_delegate(FUNC(bus_master_ide_controller_device::write_cs1), &(*m_ide)),0xffffffff);
194   spaceio.install_readwrite_handler(0x0374, 0x0377, read8_delegate(FUNC(southbridge_device::ide2_read_cs1_r),this), write8_delegate(FUNC(southbridge_device::ide2_write_cs1_w), this),0xff0000);
195   spaceio.install_readwrite_handler(0x03f4, 0x03f7, read8_delegate(FUNC(southbridge_device::ide_read_cs1_r),this), write8_delegate(FUNC(southbridge_device::ide_write_cs1_w), this),0xff0000);
196   spaceio.nop_readwrite(0x00e0, 0x00ef);
197}
198
199//-------------------------------------------------
200//  device_reset - device-specific reset
201//-------------------------------------------------
202
203void southbridge_device::device_reset()
204{
205   m_at_spkrdata = 0;
206   m_pit_out2 = 1;
207   m_dma_channel = -1;
208   m_cur_eop = false;
209   m_nmi_enabled = 0;
210   m_refresh = false;
211}
212
213
214/*************************************************************
215 *
216 * pic8259 configuration
217 *
218 *************************************************************/
219READ8_MEMBER( southbridge_device::get_slave_ack )
220{
221   if (offset==2) // IRQ = 2
222      return m_pic8259_slave->acknowledge();
223
224   return 0x00;
225}
226
227/*************************************************************************
228 *
229 *      PC Speaker related
230 *
231 *************************************************************************/
232
233void southbridge_device::at_speaker_set_spkrdata(UINT8 data)
234{
235   m_at_spkrdata = data ? 1 : 0;
236   m_speaker->level_w(m_at_spkrdata & m_pit_out2);
237}
238
239
240
241/*************************************************************
242 *
243 * pit8254 configuration
244 *
245 *************************************************************/
246
247WRITE_LINE_MEMBER( southbridge_device::at_pit8254_out0_changed )
248{
249   if (m_pic8259_master)
250      m_pic8259_master->ir0_w(state);
251}
252
253WRITE_LINE_MEMBER( southbridge_device::at_pit8254_out1_changed )
254{
255   if(state)
256      m_refresh = !m_refresh;
257}
258
259WRITE_LINE_MEMBER( southbridge_device::at_pit8254_out2_changed )
260{
261   m_pit_out2 = state ? 1 : 0;
262   m_speaker->level_w(m_at_spkrdata & m_pit_out2);
263}
264
265/*************************************************************************
266 *
267 *      PC DMA stuff
268 *
269 *************************************************************************/
270
271READ8_MEMBER( southbridge_device::at_page8_r )
272{
273   UINT8 data = m_at_pages[offset % 0x10];
274
275   switch(offset % 8)
276   {
277   case 1:
278      data = m_dma_offset[BIT(offset, 3)][2];
279      break;
280   case 2:
281      data = m_dma_offset[BIT(offset, 3)][3];
282      break;
283   case 3:
284      data = m_dma_offset[BIT(offset, 3)][1];
285      break;
286   case 7:
287      data = m_dma_offset[BIT(offset, 3)][0];
288      break;
289   }
290   return data;
291}
292
293
294WRITE8_MEMBER( southbridge_device::at_page8_w )
295{
296   m_at_pages[offset % 0x10] = data;
297
298   switch(offset % 8)
299   {
300   case 1:
301      m_dma_offset[BIT(offset, 3)][2] = data;
302      break;
303   case 2:
304      m_dma_offset[BIT(offset, 3)][3] = data;
305      break;
306   case 3:
307      m_dma_offset[BIT(offset, 3)][1] = data;
308      break;
309   case 7:
310      m_dma_offset[BIT(offset, 3)][0] = data;
311      break;
312   }
313}
314
315
316WRITE_LINE_MEMBER( southbridge_device::pc_dma_hrq_changed )
317{
318   m_maincpu->set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
319
320   /* Assert HLDA */
321   m_dma8237_2->hack_w( state );
322}
323
324READ8_MEMBER(southbridge_device::pc_dma_read_byte)
325{
326   address_space& prog_space = m_maincpu->space(AS_PROGRAM); // get the right address space
327   if(m_dma_channel == -1)
328      return 0xff;
329   UINT8 result;
330   offs_t page_offset = (((offs_t) m_dma_offset[0][m_dma_channel]) << 16) & 0xFF0000;
331
332   result = prog_space.read_byte(page_offset + offset);
333   return result;
334}
335
336
337WRITE8_MEMBER(southbridge_device::pc_dma_write_byte)
338{
339   address_space& prog_space = m_maincpu->space(AS_PROGRAM); // get the right address space
340   if(m_dma_channel == -1)
341      return;
342   offs_t page_offset = (((offs_t) m_dma_offset[0][m_dma_channel]) << 16) & 0xFF0000;
343
344   prog_space.write_byte(page_offset + offset, data);
345}
346
347
348READ8_MEMBER(southbridge_device::pc_dma_read_word)
349{
350   address_space& prog_space = m_maincpu->space(AS_PROGRAM); // get the right address space
351   if(m_dma_channel == -1)
352      return 0xff;
353   UINT16 result;
354   offs_t page_offset = (((offs_t) m_dma_offset[1][m_dma_channel & 3]) << 16) & 0xFE0000;
355
356   result = prog_space.read_word(page_offset + ( offset << 1 ) );
357   m_dma_high_byte = result & 0xFF00;
358
359   return result & 0xFF;
360}
361
362
363WRITE8_MEMBER(southbridge_device::pc_dma_write_word)
364{
365   address_space& prog_space = m_maincpu->space(AS_PROGRAM); // get the right address space
366   if(m_dma_channel == -1)
367      return;
368   offs_t page_offset = (((offs_t) m_dma_offset[1][m_dma_channel & 3]) << 16) & 0xFE0000;
369
370   prog_space.write_word(page_offset + ( offset << 1 ), m_dma_high_byte | data);
371}
372
373
374READ8_MEMBER( southbridge_device::pc_dma8237_0_dack_r ) { return m_isabus->dack_r(0); }
375READ8_MEMBER( southbridge_device::pc_dma8237_1_dack_r ) { return m_isabus->dack_r(1); }
376READ8_MEMBER( southbridge_device::pc_dma8237_2_dack_r ) { return m_isabus->dack_r(2); }
377READ8_MEMBER( southbridge_device::pc_dma8237_3_dack_r ) { return m_isabus->dack_r(3); }
378READ8_MEMBER( southbridge_device::pc_dma8237_5_dack_r ) { return m_isabus->dack_r(5); }
379READ8_MEMBER( southbridge_device::pc_dma8237_6_dack_r ) { return m_isabus->dack_r(6); }
380READ8_MEMBER( southbridge_device::pc_dma8237_7_dack_r ) { return m_isabus->dack_r(7); }
381
382
383WRITE8_MEMBER( southbridge_device::pc_dma8237_0_dack_w ){ m_isabus->dack_w(0, data); }
384WRITE8_MEMBER( southbridge_device::pc_dma8237_1_dack_w ){ m_isabus->dack_w(1, data); }
385WRITE8_MEMBER( southbridge_device::pc_dma8237_2_dack_w ){ m_isabus->dack_w(2, data); }
386WRITE8_MEMBER( southbridge_device::pc_dma8237_3_dack_w ){ m_isabus->dack_w(3, data); }
387WRITE8_MEMBER( southbridge_device::pc_dma8237_5_dack_w ){ m_isabus->dack_w(5, data); }
388WRITE8_MEMBER( southbridge_device::pc_dma8237_6_dack_w ){ m_isabus->dack_w(6, data); }
389WRITE8_MEMBER( southbridge_device::pc_dma8237_7_dack_w ){ m_isabus->dack_w(7, data); }
390
391WRITE_LINE_MEMBER( southbridge_device::at_dma8237_out_eop )
392{
393   m_cur_eop = state == ASSERT_LINE;
394   if(m_dma_channel != -1)
395      m_isabus->eop_w(m_dma_channel, m_cur_eop ? ASSERT_LINE : CLEAR_LINE );
396}
397
398void southbridge_device::pc_select_dma_channel(int channel, bool state)
399{
400   if(!state) {
401      m_dma_channel = channel;
402      if(m_cur_eop)
403         m_isabus->eop_w(channel, ASSERT_LINE );
404
405   } else if(m_dma_channel == channel) {
406      m_dma_channel = -1;
407      if(m_cur_eop)
408         m_isabus->eop_w(channel, CLEAR_LINE );
409   }
410}
411
412
413WRITE_LINE_MEMBER( southbridge_device::pc_dack0_w ) { pc_select_dma_channel(0, state); }
414WRITE_LINE_MEMBER( southbridge_device::pc_dack1_w ) { pc_select_dma_channel(1, state); }
415WRITE_LINE_MEMBER( southbridge_device::pc_dack2_w ) { pc_select_dma_channel(2, state); }
416WRITE_LINE_MEMBER( southbridge_device::pc_dack3_w ) { pc_select_dma_channel(3, state); }
417WRITE_LINE_MEMBER( southbridge_device::pc_dack4_w ) { m_dma8237_1->hack_w( state ? 0 : 1); } // it's inverted
418WRITE_LINE_MEMBER( southbridge_device::pc_dack5_w ) { pc_select_dma_channel(5, state); }
419WRITE_LINE_MEMBER( southbridge_device::pc_dack6_w ) { pc_select_dma_channel(6, state); }
420WRITE_LINE_MEMBER( southbridge_device::pc_dack7_w ) { pc_select_dma_channel(7, state); }
421
422READ8_MEMBER( southbridge_device::at_portb_r )
423{
424   UINT8 data = m_at_speaker;
425   data &= ~0xd0; /* AT BIOS don't likes this being set */
426
427   /* 0x10 is the dram refresh line bit on the 5170, just a timer here, 15.085us. */
428   data |= m_refresh ? 0x10 : 0;
429
430   if (m_pit_out2)
431      data |= 0x20;
432   else
433      data &= ~0x20; /* ps2m30 wants this */
434
435   return data;
436}
437
438WRITE8_MEMBER( southbridge_device::at_portb_w )
439{
440   m_at_speaker = data;
441   m_pit8254->write_gate2(BIT(data, 0));
442   at_speaker_set_spkrdata( BIT(data, 1));
443   m_channel_check = BIT(data, 3);
444   m_isabus->set_nmi_state((m_nmi_enabled==0) && (m_channel_check==0));
445}
446
447READ8_MEMBER( southbridge_device::at_dma8237_2_r )
448{
449   return m_dma8237_2->read( space, offset / 2);
450}
451
452WRITE8_MEMBER( southbridge_device::at_dma8237_2_w )
453{
454   m_dma8237_2->write( space, offset / 2, data);
455}
456
457READ8_MEMBER( southbridge_device::at_keybc_r )
458{
459   switch (offset)
460   {
461   case 0: return m_keybc->data_r(space, 0);
462   case 1: return at_portb_r(space, 0);
463   }
464
465   return 0xff;
466}
467
468WRITE8_MEMBER( southbridge_device::at_keybc_w )
469{
470   switch (offset)
471   {
472   case 0: m_keybc->data_w(space, 0, data); break;
473   case 1: at_portb_w(space, 0, data); break;
474   }
475}
476
477
478WRITE8_MEMBER( southbridge_device::write_rtc )
479{
480   if (offset==0) {
481      m_nmi_enabled = BIT(data,7);
482      m_isabus->set_nmi_state((m_nmi_enabled==0) && (m_channel_check==0));
483      m_ds12885->write(space,0,data);
484   }
485   else {
486      m_ds12885->write(space,offset,data);
487   }
488}
trunk/src/emu/bus/lpci/southbridge.h
r0r241753
1#pragma once
2
3#ifndef __SOUTHBRIDGE_H__
4#define __SOUTHBRIDGE_H__
5
6#include "emu.h"
7
8#include "machine/ins8250.h"
9#include "machine/ds128x.h"
10#include "machine/pic8259.h"
11#include "machine/pit8253.h"
12
13#include "machine/ataintf.h"
14#include "machine/at_keybc.h"
15
16#include "imagedev/harddriv.h"
17#include "pci.h"
18
19#include "sound/dac.h"
20#include "sound/speaker.h"
21#include "machine/ram.h"
22#include "machine/nvram.h"
23#include "bus/isa/isa.h"
24#include "bus/isa/isa_cards.h"
25
26#include "machine/pc_lpt.h"
27#include "bus/pc_kbd/pc_kbdc.h"
28
29#include "machine/am9517a.h"
30
31//**************************************************************************
32//  TYPE DEFINITIONS
33//**************************************************************************
34
35// ======================> southbridge_device
36
37class southbridge_device :
38      public device_t
39{
40public:
41      // construction/destruction
42      southbridge_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);
43
44      // optional information overrides
45      virtual machine_config_constructor device_mconfig_additions() const;
46
47protected:
48      // device-level overrides
49      virtual void device_start();
50      virtual void device_reset();
51public:
52
53      required_device<cpu_device> m_maincpu;
54      required_device<pic8259_device> m_pic8259_master;
55      required_device<pic8259_device> m_pic8259_slave;
56      required_device<am9517a_device> m_dma8237_1;
57      required_device<am9517a_device> m_dma8237_2;
58      required_device<pit8254_device> m_pit8254;
59      required_device<at_keyboard_controller_device> m_keybc;
60      required_device<isa16_device> m_isabus;
61      required_device<speaker_sound_device> m_speaker;
62      required_device<ds12885_device> m_ds12885;
63      required_device<pc_kbdc_device> m_pc_kbdc;
64      required_device<bus_master_ide_controller_device> m_ide;
65      required_device<bus_master_ide_controller_device> m_ide2;
66      DECLARE_READ8_MEMBER(at_page8_r);
67      DECLARE_WRITE8_MEMBER(at_page8_w);
68      DECLARE_READ8_MEMBER(at_portb_r);
69      DECLARE_WRITE8_MEMBER(at_portb_w);
70      DECLARE_READ8_MEMBER(get_slave_ack);
71      DECLARE_WRITE_LINE_MEMBER(at_pit8254_out0_changed);
72      DECLARE_WRITE_LINE_MEMBER(at_pit8254_out1_changed);
73      DECLARE_WRITE_LINE_MEMBER(at_pit8254_out2_changed);
74      DECLARE_WRITE_LINE_MEMBER(pc_dma_hrq_changed);
75      DECLARE_READ8_MEMBER(pc_dma8237_0_dack_r);
76      DECLARE_READ8_MEMBER(pc_dma8237_1_dack_r);
77      DECLARE_READ8_MEMBER(pc_dma8237_2_dack_r);
78      DECLARE_READ8_MEMBER(pc_dma8237_3_dack_r);
79      DECLARE_READ8_MEMBER(pc_dma8237_5_dack_r);
80      DECLARE_READ8_MEMBER(pc_dma8237_6_dack_r);
81      DECLARE_READ8_MEMBER(pc_dma8237_7_dack_r);
82      DECLARE_WRITE8_MEMBER(pc_dma8237_0_dack_w);
83      DECLARE_WRITE8_MEMBER(pc_dma8237_1_dack_w);
84      DECLARE_WRITE8_MEMBER(pc_dma8237_2_dack_w);
85      DECLARE_WRITE8_MEMBER(pc_dma8237_3_dack_w);
86      DECLARE_WRITE8_MEMBER(pc_dma8237_5_dack_w);
87      DECLARE_WRITE8_MEMBER(pc_dma8237_6_dack_w);
88      DECLARE_WRITE8_MEMBER(pc_dma8237_7_dack_w);
89      DECLARE_WRITE_LINE_MEMBER(at_dma8237_out_eop);
90      DECLARE_WRITE_LINE_MEMBER(pc_dack0_w);
91      DECLARE_WRITE_LINE_MEMBER(pc_dack1_w);
92      DECLARE_WRITE_LINE_MEMBER(pc_dack2_w);
93      DECLARE_WRITE_LINE_MEMBER(pc_dack3_w);
94      DECLARE_WRITE_LINE_MEMBER(pc_dack4_w);
95      DECLARE_WRITE_LINE_MEMBER(pc_dack5_w);
96      DECLARE_WRITE_LINE_MEMBER(pc_dack6_w);
97      DECLARE_WRITE_LINE_MEMBER(pc_dack7_w);
98      DECLARE_READ8_MEMBER(ide_read_cs1_r);
99      DECLARE_WRITE8_MEMBER(ide_write_cs1_w);
100      DECLARE_READ8_MEMBER(ide2_read_cs1_r);
101      DECLARE_WRITE8_MEMBER(ide2_write_cs1_w);
102      DECLARE_READ8_MEMBER(at_dma8237_2_r);
103      DECLARE_WRITE8_MEMBER(at_dma8237_2_w);
104      DECLARE_READ8_MEMBER(at_keybc_r);
105      DECLARE_WRITE8_MEMBER(at_keybc_w);
106      DECLARE_WRITE8_MEMBER(write_rtc);
107      DECLARE_READ8_MEMBER(pc_dma_read_byte);
108      DECLARE_WRITE8_MEMBER(pc_dma_write_byte);
109      DECLARE_READ8_MEMBER(pc_dma_read_word);
110      DECLARE_WRITE8_MEMBER(pc_dma_write_word);
111protected:
112      UINT8 m_at_spkrdata;
113      UINT8 m_pit_out2;
114      int m_dma_channel;
115      bool m_cur_eop;
116      UINT8 m_dma_offset[2][4];
117      UINT8 m_at_pages[0x10];
118      UINT16 m_dma_high_byte;
119      UINT8 m_at_speaker;
120      bool m_refresh;
121      void at_speaker_set_spkrdata(UINT8 data);
122
123      UINT8 m_channel_check;
124      UINT8 m_nmi_enabled;
125
126      void pc_select_dma_channel(int channel, bool state);
127};
128
129#endif  /* __SOUTHBRIDGE_H__ */
trunk/src/emu/bus/nes/ave.c
r241752r241753
7979   m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
8080   prg32(0);
8181   chr8(0, m_chr_source);
82   set_nt_mirroring(PPU_MIRROR_HORZ);
8382}
8483
8584
r241752r241753
164163   if (!(offset & 0x0100))
165164   {
166165      prg32(data >> 3);
167      chr8(data, CHRROM);
166      chr8(data & 7, CHRROM);
168167   }
169168}
170169
trunk/src/emu/bus/nes/nes_ines.inc
r241752r241753
693693      logerror("-- PRG 0x%x (%d x 16k chunks)\n", prg_size, prg_size / 0x4000);
694694      logerror("-- VROM 0x%x (%d x 8k chunks)\n", vrom_size, vrom_size / 0x2000);
695695      logerror("-- VRAM 0x%x (%d x 8k chunks)\n", vram_size, vram_size / 0x2000);
696      logerror("-- Mirroring %s\n", BIT(header[6], 0) ? "Vertical" : "Horizontal");
696697      if (battery_size)
697698         logerror("-- Battery found\n");
698699      if (m_cart->get_trainer())
trunk/src/emu/bus/ql/sandy_superdisk.c
r241752r241753
8888   MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", sandy_super_disk_floppies, "35dd", sandy_super_disk_t::floppy_formats)
8989   MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":1", sandy_super_disk_floppies, NULL, sandy_super_disk_t::floppy_formats)
9090
91   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
91   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
9292   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(sandy_super_disk_t, busy_w))
9393   MCFG_CENTRONICS_OUTPUT_LATCH_ADD(TTL74273_TAG, CENTRONICS_TAG)
9494MACHINE_CONFIG_END
trunk/src/emu/bus/ql/sandy_superqboard.c
r241752r241753
109109   MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", sandy_superqboard_floppies, "35hd", sandy_superqboard_t::floppy_formats)
110110   MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":1", sandy_superqboard_floppies, NULL, sandy_superqboard_t::floppy_formats)
111111
112   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
112   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
113113   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(sandy_superqboard_t, busy_w))
114114   MCFG_CENTRONICS_OUTPUT_LATCH_ADD(TTL74273_TAG, CENTRONICS_TAG)
115115MACHINE_CONFIG_END
trunk/src/emu/bus/snes/sa1.c
r241752r241753
9696
9797void sns_sa1_device::device_start()
9898{
99   m_scpu_ctrl = 0;
100   m_nmi_vector = 0;
101   m_bank_c_hi = 0;
102   m_bank_c_rom = 0;
99103}
100104
101105void sns_sa1_device::device_reset()
102106{
103   memset(m_internal_ram, 0, 0x800);
107   memset(m_internal_ram, 0, sizeof(m_internal_ram));
104108
105109   m_sa1_ctrl = 0x20;
106110   m_scpu_ctrl = 0;
r241752r241753
127131   m_iram_write_sa1 = 1;
128132   m_src_addr = 0;
129133   m_dst_addr = 0;
130   memset(m_brf_reg, 0, 0x10);
134   memset(m_brf_reg, 0, sizeof(m_brf_reg));
131135   m_math_ctlr = 0;
132136   m_math_overflow = 0;
133137   m_math_a = 0;
trunk/src/emu/bus/vtech/ioexp/printer.c
r241752r241753
2525//-------------------------------------------------
2626
2727static MACHINE_CONFIG_FRAGMENT( printer_interface )
28   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
28   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
2929   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(printer_interface_device, busy_w))
3030   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("latch", "centronics")
3131MACHINE_CONFIG_END
trunk/src/emu/cpu/drcfe.c
r241752r241753
160160{
161161   // initialize the description
162162   opcode_desc *desc = m_desc_allocator.alloc();
163   // TODO: this kills the opcode_desc.delay vptr
164   memset(desc, 0, sizeof(*desc));
163   desc->m_next = NULL;
164   desc->branch = NULL;
165165   desc->pc = curpc;
166166   desc->physpc = curpc;
167167   desc->targetpc = BRANCH_TARGET_DYNAMIC;
168   memset(&desc->opptr, 0x00, sizeof(desc->opptr));
169   desc->length = 0;
170   desc->delayslots = 0;
171   desc->skipslots = 0;
172   desc->flags = 0;
173   desc->cycles = 0;
174   memset(desc->regin, 0x00, sizeof(desc->regin));
175   memset(desc->regout, 0x00, sizeof(desc->regout));
176   memset(desc->regreq, 0x00, sizeof(desc->regreq));
168177
169178   // call the callback to describe an instruction
170179   if (!describe(*desc, prevdesc))
trunk/src/emu/cpu/drcuml.c
r241752r241753
274274      va_start(va, format);
275275      vfprintf(m_umllog, format, va);
276276      va_end(va);
277      fflush(m_umllog);
277278   }
278279}
279280
trunk/src/emu/cpu/i386/i386.c
r241752r241753
125125   UINT32 base, limit;
126126   int entry;
127127
128   if(!seg->selector)
129   {
130      seg->flags = 0;
131      seg->base = 0;
132      seg->limit = 0;
133      seg->d = 0;
134      seg->valid = false;
135      return 0;
136   }
137
128138   if ( seg->selector & 0x4 )
129139   {
130140      base = m_ldtr.base;
r241752r241753
147157   if (seg->flags & 0x8000)
148158      seg->limit = (seg->limit << 12) | 0xfff;
149159   seg->d = (seg->flags & 0x4000) ? 1 : 0;
150   seg->valid = (seg->selector & ~3)?(true):(false);
160   seg->valid = true;
151161
152162   if(desc)
153163      *desc = ((UINT64)v2<<32)|v1;
r241752r241753
212222      if (!V8086_MODE)
213223      {
214224         i386_load_protected_mode_segment(&m_sreg[segment], NULL );
215         i386_set_descriptor_accessed(m_sreg[segment].selector);
225         if(m_sreg[segment].selector)
226            i386_set_descriptor_accessed(m_sreg[segment].selector);
216227      }
217228      else
218229      {
r241752r241753
752763            logerror("IRQ (%08x): Software IRQ - gate DPL is less than CPL.\n",m_pc);
753764            FAULT_EXP(FAULT_GP,entry+2)
754765         }
766         if(V8086_MODE)
767         {
768            if((!m_IOP1 || !m_IOP2) && (m_opcode != 0xcc))
769            {
770               logerror("IRQ (%08x): Is in Virtual 8086 mode and IOPL != 3.\n",m_pc);
771               FAULT(FAULT_GP,0)
772            }
773
774         }
755775      }
756776
757777      if((flags & 0x0080) == 0)
r241752r241753
16661686      }
16671687      if (operand32 != 0)  // if 32-bit
16681688      {
1669         if(REG32(ESP) < 8)
1689         if(i386_limit_check(SS, REG32(ESP) - 8))
16701690         {
1671            logerror("CALL: Stack has no room for return address.\n");
1691            logerror("CALL (%08x): Stack has no room for return address.\n",m_pc);
16721692            FAULT(FAULT_SS,0)  // #SS(0)
16731693         }
16741694      }
16751695      else
16761696      {
1677         if(REG16(SP) < 4)
1697         if(i386_limit_check(SS, (REG16(SP) - 4) & 0xffff))
16781698         {
1679            logerror("CALL: Stack has no room for return address.\n");
1699            logerror("CALL (%08x): Stack has no room for return address.\n",m_pc);
16801700            FAULT(FAULT_SS,0)  // #SS(0)
16811701         }
16821702      }
r241752r241753
17161736               logerror("CALL: TSS: TSS is busy.\n");
17171737               FAULT(FAULT_TS,selector & ~0x03) // #TS(selector)
17181738            }
1719            if(desc.flags & 0x0080)
1739            if((desc.flags & 0x0080) == 0)
17201740            {
1721               logerror("CALL: TSS: Segment is not present.\n");
1741               logerror("CALL: TSS: Segment %02x is not present.\n",selector);
17221742               FAULT(FAULT_NP,selector & ~0x03) // #NP(selector)
17231743            }
17241744            if(desc.flags & 0x08)
r241752r241753
19241944               /* same privilege */
19251945               if (operand32 != 0)  // if 32-bit
19261946               {
1927                  if(REG32(ESP) < 8)
1947                  if(i386_limit_check(SS, REG32(ESP) - 8))
19281948                  {
19291949                     logerror("CALL: Stack has no room for return address.\n");
19301950                     FAULT(FAULT_SS,0) // #SS(0)
r241752r241753
19341954               }
19351955               else
19361956               {
1937                  if(REG16(SP) < 4)
1957                  if(i386_limit_check(SS, (REG16(SP) - 4) & 0xffff))
19381958                  {
19391959                     logerror("CALL: Stack has no room for return address.\n");
19401960                     FAULT(FAULT_SS,0) // #SS(0)
r241752r241753
19661986               logerror("CALL: Task Gate: Gate DPL is less than RPL.\n");
19671987               FAULT(FAULT_TS,selector & ~0x03) // #TS(selector)
19681988            }
1969            if(gate.ar & 0x0080)
1989            if((gate.ar & 0x0080) == 0)
19701990            {
19711991               logerror("CALL: Task Gate: Gate is not present.\n");
19721992               FAULT(FAULT_NP,selector & ~0x03) // #NP(selector)
r241752r241753
19922012               logerror("CALL: Task Gate: TSS is busy.\n");
19932013               FAULT(FAULT_TS,gate.selector & ~0x03) // #TS(selector)
19942014            }
1995            if(desc.flags & 0x0080)
2015            if((desc.flags & 0x0080) == 0)
19962016            {
19972017               logerror("CALL: Task Gate: TSS is not present.\n");
19982018               FAULT(FAULT_NP,gate.selector & ~0x03) // #TS(selector)
r241752r241753
31243144   m_vtlb = vtlb_alloc(this, AS_PROGRAM, 0, tlbsize);
31253145   m_smi = false;
31263146   m_debugger_temp = 0;
3147   m_lock = false;
31273148
31283149   zero_state();
31293150
r241752r241753
31323153   save_item(NAME(m_sreg[ES].base));
31333154   save_item(NAME(m_sreg[ES].limit));
31343155   save_item(NAME(m_sreg[ES].flags));
3156   save_item(NAME(m_sreg[ES].d));
31353157   save_item(NAME(m_sreg[CS].selector));
31363158   save_item(NAME(m_sreg[CS].base));
31373159   save_item(NAME(m_sreg[CS].limit));
31383160   save_item(NAME(m_sreg[CS].flags));
3161   save_item(NAME(m_sreg[CS].d));
31393162   save_item(NAME(m_sreg[SS].selector));
31403163   save_item(NAME(m_sreg[SS].base));
31413164   save_item(NAME(m_sreg[SS].limit));
31423165   save_item(NAME(m_sreg[SS].flags));
3166   save_item(NAME(m_sreg[SS].d));
31433167   save_item(NAME(m_sreg[DS].selector));
31443168   save_item(NAME(m_sreg[DS].base));
31453169   save_item(NAME(m_sreg[DS].limit));
31463170   save_item(NAME(m_sreg[DS].flags));
3171   save_item(NAME(m_sreg[DS].d));
31473172   save_item(NAME(m_sreg[FS].selector));
31483173   save_item(NAME(m_sreg[FS].base));
31493174   save_item(NAME(m_sreg[FS].limit));
31503175   save_item(NAME(m_sreg[FS].flags));
3176   save_item(NAME(m_sreg[FS].d));
31513177   save_item(NAME(m_sreg[GS].selector));
31523178   save_item(NAME(m_sreg[GS].base));
31533179   save_item(NAME(m_sreg[GS].limit));
31543180   save_item(NAME(m_sreg[GS].flags));
3181   save_item(NAME(m_sreg[GS].d));
31553182   save_item(NAME(m_eip));
31563183   save_item(NAME(m_prev_eip));
31573184   save_item(NAME(m_CF));
r241752r241753
35453572   m_smi_latched = false;
35463573   m_nmi_masked = false;
35473574   m_nmi_latched = false;
3548   m_lock = false;
35493575
35503576   m_a20_mask = ~0;
35513577
trunk/src/emu/cpu/i386/i386op16.inc
r241752r241753
17461746
17471747void i386_device::i386_push_ax()           // Opcode 0x50
17481748{
1749   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1750   if(i386_limit_check(SS,offset-2) == 0)
1749   UINT32 offset;
1750   if(STACK_32BIT)
1751      offset = REG32(ESP) - 2;
1752   else
1753      offset = (REG16(SP) - 2) & 0xffff;
1754   if(i386_limit_check(SS,offset) == 0)
17511755      PUSH16(REG16(AX) );
17521756   else
17531757      FAULT(FAULT_SS,0)
r241752r241753
17561760
17571761void i386_device::i386_push_cx()           // Opcode 0x51
17581762{
1759   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1760   if(i386_limit_check(SS,offset-2) == 0)
1763   UINT32 offset;
1764   if(STACK_32BIT)
1765      offset = REG32(ESP) - 2;
1766   else
1767      offset = (REG16(SP) - 2) & 0xffff;
1768   if(i386_limit_check(SS,offset) == 0)
17611769      PUSH16(REG16(CX) );
17621770   else
17631771      FAULT(FAULT_SS,0)
r241752r241753
17661774
17671775void i386_device::i386_push_dx()           // Opcode 0x52
17681776{
1769   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1770   if(i386_limit_check(SS,offset-2) == 0)
1777   UINT32 offset;
1778   if(STACK_32BIT)
1779      offset = REG32(ESP) - 2;
1780   else
1781      offset = (REG16(SP) - 2) & 0xffff;
1782   if(i386_limit_check(SS,offset) == 0)
17711783      PUSH16(REG16(DX) );
17721784   else
17731785      FAULT(FAULT_SS,0)
r241752r241753
17761788
17771789void i386_device::i386_push_bx()           // Opcode 0x53
17781790{
1779   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1780   if(i386_limit_check(SS,offset-2) == 0)
1791   UINT32 offset;
1792   if(STACK_32BIT)
1793      offset = REG32(ESP) - 2;
1794   else
1795      offset = (REG16(SP) - 2) & 0xffff;
1796   if(i386_limit_check(SS,offset) == 0)
17811797      PUSH16(REG16(BX) );
17821798   else
17831799      FAULT(FAULT_SS,0)
r241752r241753
17861802
17871803void i386_device::i386_push_sp()           // Opcode 0x54
17881804{
1789   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1790   if(i386_limit_check(SS,offset-2) == 0)
1805   UINT32 offset;
1806   if(STACK_32BIT)
1807      offset = REG32(ESP) - 2;
1808   else
1809      offset = (REG16(SP) - 2) & 0xffff;
1810   if(i386_limit_check(SS,offset) == 0)
17911811      PUSH16(REG16(SP) );
17921812   else
17931813      FAULT(FAULT_SS,0)
r241752r241753
17961816
17971817void i386_device::i386_push_bp()           // Opcode 0x55
17981818{
1799   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1800   if(i386_limit_check(SS,offset-2) == 0)
1819   UINT32 offset;
1820   if(STACK_32BIT)
1821      offset = REG32(ESP) - 2;
1822   else
1823      offset = (REG16(SP) - 2) & 0xffff;
1824   if(i386_limit_check(SS,offset) == 0)
18011825      PUSH16(REG16(BP) );
18021826   else
18031827      FAULT(FAULT_SS,0)
r241752r241753
18061830
18071831void i386_device::i386_push_si()           // Opcode 0x56
18081832{
1809   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1810   if(i386_limit_check(SS,offset-2) == 0)
1833   UINT32 offset;
1834   if(STACK_32BIT)
1835      offset = REG32(ESP) - 2;
1836   else
1837      offset = (REG16(SP) - 2) & 0xffff;
1838   if(i386_limit_check(SS,offset) == 0)
18111839      PUSH16(REG16(SI) );
18121840   else
18131841      FAULT(FAULT_SS,0)
r241752r241753
18161844
18171845void i386_device::i386_push_di()           // Opcode 0x57
18181846{
1819   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1820   if(i386_limit_check(SS,offset-2) == 0)
1847   UINT32 offset;
1848   if(STACK_32BIT)
1849      offset = REG32(ESP) - 2;
1850   else
1851      offset = (REG16(SP) - 2) & 0xffff;
1852   if(i386_limit_check(SS,offset) == 0)
18211853      PUSH16(REG16(DI) );
18221854   else
18231855      FAULT(FAULT_SS,0)
r241752r241753
18261858
18271859void i386_device::i386_push_cs16()         // Opcode 0x0e
18281860{
1829   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1830   if(i386_limit_check(SS,offset-2) == 0)
1861   UINT32 offset;
1862   if(STACK_32BIT)
1863      offset = REG32(ESP) - 2;
1864   else
1865      offset = (REG16(SP) - 2) & 0xffff;
1866   if(i386_limit_check(SS,offset) == 0)
18311867      PUSH16(m_sreg[CS].selector );
18321868   else
18331869      FAULT(FAULT_SS,0)
r241752r241753
18361872
18371873void i386_device::i386_push_ds16()         // Opcode 0x1e
18381874{
1839   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1840   if(i386_limit_check(SS,offset-2) == 0)
1875   UINT32 offset;
1876   if(STACK_32BIT)
1877      offset = REG32(ESP) - 2;
1878   else
1879      offset = (REG16(SP) - 2) & 0xffff;
1880   if(i386_limit_check(SS,offset) == 0)
18411881      PUSH16(m_sreg[DS].selector );
18421882   else
18431883      FAULT(FAULT_SS,0)
r241752r241753
18461886
18471887void i386_device::i386_push_es16()         // Opcode 0x06
18481888{
1849   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1850   if(i386_limit_check(SS,offset-2) == 0)
1889   UINT32 offset;
1890   if(STACK_32BIT)
1891      offset = REG32(ESP) - 2;
1892   else
1893      offset = (REG16(SP) - 2) & 0xffff;
1894   if(i386_limit_check(SS,offset) == 0)
18511895      PUSH16(m_sreg[ES].selector );
18521896   else
18531897      FAULT(FAULT_SS,0)
r241752r241753
18561900
18571901void i386_device::i386_push_fs16()         // Opcode 0x0f a0
18581902{
1859   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1860   if(i386_limit_check(SS,offset-2) == 0)
1903   UINT32 offset;
1904   if(STACK_32BIT)
1905      offset = REG32(ESP) - 2;
1906   else
1907      offset = (REG16(SP) - 2) & 0xffff;
1908   if(i386_limit_check(SS,offset) == 0)
18611909      PUSH16(m_sreg[FS].selector );
18621910   else
18631911      FAULT(FAULT_SS,0)
r241752r241753
18661914
18671915void i386_device::i386_push_gs16()         // Opcode 0x0f a8
18681916{
1869   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1870   if(i386_limit_check(SS,offset-2) == 0)
1917   UINT32 offset;
1918   if(STACK_32BIT)
1919      offset = REG32(ESP) - 2;
1920   else
1921      offset = (REG16(SP) - 2) & 0xffff;
1922   if(i386_limit_check(SS,offset) == 0)
18711923      PUSH16(m_sreg[GS].selector );
18721924   else
18731925      FAULT(FAULT_SS,0)
r241752r241753
18761928
18771929void i386_device::i386_push_ss16()         // Opcode 0x16
18781930{
1879   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1880   if(i386_limit_check(SS,offset-2) == 0)
1931   UINT32 offset;
1932   if(STACK_32BIT)
1933      offset = REG32(ESP) - 2;
1934   else
1935      offset = (REG16(SP) - 2) & 0xffff;
1936   if(i386_limit_check(SS,offset) == 0)
18811937      PUSH16(m_sreg[SS].selector );
18821938   else
18831939      FAULT(FAULT_SS,0)
r241752r241753
18871943void i386_device::i386_push_i16()          // Opcode 0x68
18881944{
18891945   UINT16 value = FETCH16();
1890   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1891   if(i386_limit_check(SS,offset-2) == 0)
1946   UINT32 offset;
1947   if(STACK_32BIT)
1948      offset = REG32(ESP) - 2;
1949   else
1950      offset = (REG16(SP) - 2) & 0xffff;
1951   if(i386_limit_check(SS,offset) == 0)
18921952      PUSH16(value);
18931953   else
18941954      FAULT(FAULT_SS,0)
r241752r241753
18981958void i386_device::i386_pusha()             // Opcode 0x60
18991959{
19001960   UINT16 temp = REG16(SP);
1901   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1902   if(i386_limit_check(SS,offset-16) == 0)
1961   UINT32 offset;
1962   if(STACK_32BIT)
1963      offset = REG32(ESP) - 16;
1964   else
1965      offset = (REG16(SP) - 16) & 0xffff;
1966   if(i386_limit_check(SS,offset) == 0)
19031967   {
19041968      PUSH16(REG16(AX) );
19051969      PUSH16(REG16(CX) );
r241752r241753
19171981
19181982void i386_device::i386_pushf()             // Opcode 0x9c
19191983{
1920   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1921   if(i386_limit_check(SS,offset-2) == 0)
1984   UINT32 offset;
1985   if(STACK_32BIT)
1986      offset = REG32(ESP) - 2;
1987   else
1988      offset = (REG16(SP) - 2) & 0xffff;
1989   if(i386_limit_check(SS,offset) == 0)
19221990      PUSH16(get_flags() & 0xffff );
19231991   else
19241992      FAULT(FAULT_SS,0)
r241752r241753
31333201            memset(&seg, 0, sizeof(seg));
31343202            seg.selector = m_task.segment;
31353203            i386_load_protected_mode_segment(&seg,NULL);
3204
3205            UINT32 addr = ((seg.selector & 4) ? m_ldtr.base : m_gdtr.base) + (seg.selector & ~7) + 5;
3206            i386_translate_address(TRANSLATE_READ, &addr, NULL);
3207            m_program->write_byte(addr, (seg.flags & 0xff) | 2);
3208
31363209            m_task.limit = seg.limit;
31373210            m_task.base = seg.base;
3138            m_task.flags = seg.flags;
3211            m_task.flags = seg.flags | 2;
31393212         }
31403213         else
31413214         {
trunk/src/emu/cpu/i386/i386op32.inc
r241752r241753
15991599
16001600void i386_device::i386_push_eax()          // Opcode 0x50
16011601{
1602   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1603   if(i386_limit_check(SS,offset-4) == 0)
1602   UINT32 offset;
1603   if(STACK_32BIT)
1604      offset = REG32(ESP) - 4;
1605   else
1606      offset = (REG16(SP) - 4) & 0xffff;
1607   if(i386_limit_check(SS,offset) == 0)
16041608      PUSH32(REG32(EAX) );
16051609   else
16061610      FAULT(FAULT_SS,0)
r241752r241753
16091613
16101614void i386_device::i386_push_ecx()          // Opcode 0x51
16111615{
1612   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1613   if(i386_limit_check(SS,offset-4) == 0)
1616   UINT32 offset;
1617   if(STACK_32BIT)
1618      offset = REG32(ESP) - 4;
1619   else
1620      offset = (REG16(SP) - 4) & 0xffff;
1621   if(i386_limit_check(SS,offset) == 0)
16141622      PUSH32(REG32(ECX) );
16151623   else
16161624      FAULT(FAULT_SS,0)
r241752r241753
16191627
16201628void i386_device::i386_push_edx()          // Opcode 0x52
16211629{
1622   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1623   if(i386_limit_check(SS,offset-4) == 0)
1630   UINT32 offset;
1631   if(STACK_32BIT)
1632      offset = REG32(ESP) - 4;
1633   else
1634      offset = (REG16(SP) - 4) & 0xffff;
1635   if(i386_limit_check(SS,offset) == 0)
16241636      PUSH32(REG32(EDX) );
16251637   else
16261638      FAULT(FAULT_SS,0)
r241752r241753
16291641
16301642void i386_device::i386_push_ebx()          // Opcode 0x53
16311643{
1632   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1633   if(i386_limit_check(SS,offset-4) == 0)
1644   UINT32 offset;
1645   if(STACK_32BIT)
1646      offset = REG32(ESP) - 4;
1647   else
1648      offset = (REG16(SP) - 4) & 0xffff;
1649   if(i386_limit_check(SS,offset) == 0)
16341650      PUSH32(REG32(EBX) );
16351651   else
16361652      FAULT(FAULT_SS,0)
r241752r241753
16391655
16401656void i386_device::i386_push_esp()          // Opcode 0x54
16411657{
1642   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1643   if(i386_limit_check(SS,offset-4) == 0)
1658   UINT32 offset;
1659   if(STACK_32BIT)
1660      offset = REG32(ESP) - 4;
1661   else
1662      offset = (REG16(SP) - 4) & 0xffff;
1663   if(i386_limit_check(SS,offset) == 0)
16441664      PUSH32(REG32(ESP) );
16451665   else
16461666      FAULT(FAULT_SS,0)
r241752r241753
16491669
16501670void i386_device::i386_push_ebp()          // Opcode 0x55
16511671{
1652   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1653   if(i386_limit_check(SS,offset-4) == 0)
1672   UINT32 offset;
1673   if(STACK_32BIT)
1674      offset = REG32(ESP) - 4;
1675   else
1676      offset = (REG16(SP) - 4) & 0xffff;
1677   if(i386_limit_check(SS,offset) == 0)
16541678      PUSH32(REG32(EBP) );
16551679   else
16561680      FAULT(FAULT_SS,0)
r241752r241753
16591683
16601684void i386_device::i386_push_esi()          // Opcode 0x56
16611685{
1662   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1663   if(i386_limit_check(SS,offset-4) == 0)
1686   UINT32 offset;
1687   if(STACK_32BIT)
1688      offset = REG32(ESP) - 4;
1689   else
1690      offset = (REG16(SP) - 4) & 0xffff;
1691   if(i386_limit_check(SS,offset) == 0)
16641692      PUSH32(REG32(ESI) );
16651693   else
16661694      FAULT(FAULT_SS,0)
r241752r241753
16691697
16701698void i386_device::i386_push_edi()          // Opcode 0x57
16711699{
1672   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1673   if(i386_limit_check(SS,offset-4) == 0)
1700   UINT32 offset;
1701   if(STACK_32BIT)
1702      offset = REG32(ESP) - 4;
1703   else
1704      offset = (REG16(SP) - 4) & 0xffff;
1705   if(i386_limit_check(SS,offset) == 0)
16741706      PUSH32(REG32(EDI) );
16751707   else
16761708      FAULT(FAULT_SS,0)
r241752r241753
16791711
16801712void i386_device::i386_push_cs32()         // Opcode 0x0e
16811713{
1682   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1683   if(i386_limit_check(SS,offset-4) == 0)
1714   UINT32 offset;
1715   if(STACK_32BIT)
1716      offset = REG32(ESP) - 4;
1717   else
1718      offset = (REG16(SP) - 4) & 0xffff;
1719   if(i386_limit_check(SS,offset) == 0)
16841720      PUSH32(m_sreg[CS].selector );
16851721   else
16861722      FAULT(FAULT_SS,0)
r241752r241753
16891725
16901726void i386_device::i386_push_ds32()         // Opcode 0x1e
16911727{
1692   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1693   if(i386_limit_check(SS,offset-4) == 0)
1728   UINT32 offset;
1729   if(STACK_32BIT)
1730      offset = REG32(ESP) - 4;
1731   else
1732      offset = (REG16(SP) - 4) & 0xffff;
1733   if(i386_limit_check(SS,offset) == 0)
16941734      PUSH32(m_sreg[DS].selector );
16951735   else
16961736      FAULT(FAULT_SS,0)
r241752r241753
16991739
17001740void i386_device::i386_push_es32()         // Opcode 0x06
17011741{
1702   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1703   if(i386_limit_check(SS,offset-4) == 0)
1742   UINT32 offset;
1743   if(STACK_32BIT)
1744      offset = REG32(ESP) - 4;
1745   else
1746      offset = (REG16(SP) - 4) & 0xffff;
1747   if(i386_limit_check(SS,offset) == 0)
17041748      PUSH32(m_sreg[ES].selector );
17051749   else
17061750      FAULT(FAULT_SS,0)
r241752r241753
17091753
17101754void i386_device::i386_push_fs32()         // Opcode 0x0f a0
17111755{
1712   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1713   if(i386_limit_check(SS,offset-4) == 0)
1756   UINT32 offset;
1757   if(STACK_32BIT)
1758      offset = REG32(ESP) - 4;
1759   else
1760      offset = (REG16(SP) - 4) & 0xffff;
1761   if(i386_limit_check(SS,offset) == 0)
17141762      PUSH32(m_sreg[FS].selector );
17151763   else
17161764      FAULT(FAULT_SS,0)
r241752r241753
17191767
17201768void i386_device::i386_push_gs32()         // Opcode 0x0f a8
17211769{
1722   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1723   if(i386_limit_check(SS,offset-4) == 0)
1770   UINT32 offset;
1771   if(STACK_32BIT)
1772      offset = REG32(ESP) - 4;
1773   else
1774      offset = (REG16(SP) - 4) & 0xffff;
1775   if(i386_limit_check(SS,offset) == 0)
17241776      PUSH32(m_sreg[GS].selector );
17251777   else
17261778      FAULT(FAULT_SS,0)
r241752r241753
17291781
17301782void i386_device::i386_push_ss32()         // Opcode 0x16
17311783{
1732   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1733   if(i386_limit_check(SS,offset-4) == 0)
1784   UINT32 offset;
1785   if(STACK_32BIT)
1786      offset = REG32(ESP) - 4;
1787   else
1788      offset = (REG16(SP) - 4) & 0xffff;
1789   if(i386_limit_check(SS,offset) == 0)
17341790      PUSH32(m_sreg[SS].selector );
17351791   else
17361792      FAULT(FAULT_SS,0)
r241752r241753
17401796void i386_device::i386_push_i32()          // Opcode 0x68
17411797{
17421798   UINT32 value = FETCH32();
1743   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1744   if(i386_limit_check(SS,offset-4) == 0)
1799   UINT32 offset;
1800   if(STACK_32BIT)
1801      offset = REG32(ESP) - 4;
1802   else
1803      offset = (REG16(SP) - 4) & 0xffff;
1804   if(i386_limit_check(SS,offset) == 0)
17451805      PUSH32(value);
17461806   else
17471807      FAULT(FAULT_SS,0)
r241752r241753
17511811void i386_device::i386_pushad()            // Opcode 0x60
17521812{
17531813   UINT32 temp = REG32(ESP);
1754   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1755   if(i386_limit_check(SS,offset-32) == 0)
1814   UINT32 offset;
1815   if(STACK_32BIT)
1816      offset = REG32(ESP) - 32;
1817   else
1818      offset = (REG16(SP) - 32) & 0xffff;
1819   if(i386_limit_check(SS,offset) == 0)
17561820   {
17571821      PUSH32(REG32(EAX) );
17581822      PUSH32(REG32(ECX) );
r241752r241753
17721836{
17731837   if(!m_IOP1 && !m_IOP2 && V8086_MODE)
17741838      FAULT(FAULT_GP,0)
1775   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1776   if(i386_limit_check(SS,offset-4) == 0)
1839      UINT32 offset;
1840      if(STACK_32BIT)
1841         offset = REG32(ESP) - 4;
1842      else
1843         offset = (REG16(SP) - 4) & 0xffff;
1844   if(i386_limit_check(SS,offset) == 0)
17771845      PUSH32(get_flags() & 0x00fcffff );
17781846   else
17791847      FAULT(FAULT_SS,0)
r241752r241753
29393007            memset(&seg, 0, sizeof(seg));
29403008            seg.selector = m_task.segment;
29413009            i386_load_protected_mode_segment(&seg,NULL);
3010
3011            UINT32 addr = ((seg.selector & 4) ? m_ldtr.base : m_gdtr.base) + (seg.selector & ~7) + 5;
3012            i386_translate_address(TRANSLATE_READ, &addr, NULL);
3013            m_program->write_byte(addr, (seg.flags & 0xff) | 2);
3014
29423015            m_task.limit = seg.limit;
29433016            m_task.base = seg.base;
2944            m_task.flags = seg.flags;
3017            m_task.flags = seg.flags | 2;
29453018         }
29463019         else
29473020         {
trunk/src/emu/cpu/mips/mips3drc.c
r241752r241753
13871387
13881388      case 0x0f:  /* LUI - MIPS I */
13891389         if (RTREG != 0)
1390            UML_DMOV(block, R64(RTREG), SIMMVAL << 16);                 // dmov    <rtreg>,SIMMVAL << 16
1390            UML_DMOV(block, R64(RTREG), UIMMVAL << 16);                 // dmov    <rtreg>,UIMMVAL << 16
13911391         return TRUE;
13921392
13931393      case 0x08:  /* ADDI - MIPS I */
r241752r241753
27642764
27652765            case 0x07:
27662766               if (IS_SINGLE(op))  /* NEG.S - MIPS I */
2767               {
27672768                  UML_FSNEG(block, FPR32(FDREG), FPR32(FSREG));               // fsneg   <fdreg>,<fsreg>
2769                  UML_CMP(block, FPR32(FSREG), 0);                            // cmp     <fsreg>,0.0
2770                  UML_MOVc(block, COND_E, FPR32(FDREG), 0x80000000);          // mov     <fdreg>,-0.0,e
2771               }
27682772               else                /* NEG.D - MIPS I */
2773               {
27692774                  UML_FDNEG(block, FPR64(FDREG), FPR64(FSREG));               // fdneg   <fdreg>,<fsreg>
2775                  UML_CMP(block, FPR64(FSREG), 0);                            // cmp     <fsreg>,0.0
2776                  UML_DMOVc(block, COND_E, FPR64(FDREG), 0x8000000000000000L);// dmov    <fdreg>,-0.0,e
2777               }
27702778               return TRUE;
27712779
27722780            case 0x08:
r241752r241753
27742782                  UML_FSTOINT(block, FPR64(FDREG), FPR32(FSREG), SIZE_QWORD, ROUND_ROUND);// fstoint <fdreg>,<fsreg>,qword,round
27752783               else                /* ROUND.L.D - MIPS III */
27762784                  UML_FDTOINT(block, FPR64(FDREG), FPR64(FSREG), SIZE_QWORD, ROUND_ROUND);// fdtoint <fdreg>,<fsreg>,qword,round
2785               UML_DSEXT(block, FPR64(FDREG), FPR64(FDREG), SIZE_DWORD);
27772786               return TRUE;
27782787
27792788            case 0x09:
r241752r241753
27812790                  UML_FSTOINT(block, FPR64(FDREG), FPR32(FSREG), SIZE_QWORD, ROUND_TRUNC);// fstoint <fdreg>,<fsreg>,qword,trunc
27822791               else                /* TRUNC.L.D - MIPS III */
27832792                  UML_FDTOINT(block, FPR64(FDREG), FPR64(FSREG), SIZE_QWORD, ROUND_TRUNC);// fdtoint <fdreg>,<fsreg>,qword,trunc
2793               UML_DSEXT(block, FPR64(FDREG), FPR64(FDREG), SIZE_DWORD);
27842794               return TRUE;
27852795
27862796            case 0x0a:
r241752r241753
27882798                  UML_FSTOINT(block, FPR64(FDREG), FPR32(FSREG), SIZE_QWORD, ROUND_CEIL);// fstoint <fdreg>,<fsreg>,qword,ceil
27892799               else                /* CEIL.L.D - MIPS III */
27902800                  UML_FDTOINT(block, FPR64(FDREG), FPR64(FSREG), SIZE_QWORD, ROUND_CEIL);// fdtoint <fdreg>,<fsreg>,qword,ceil
2801               UML_DSEXT(block, FPR64(FDREG), FPR64(FDREG), SIZE_DWORD);
27912802               return TRUE;
27922803
27932804            case 0x0b:
r241752r241753
27952806                  UML_FSTOINT(block, FPR64(FDREG), FPR32(FSREG), SIZE_QWORD, ROUND_FLOOR);// fstoint <fdreg>,<fsreg>,qword,floor
27962807               else                /* FLOOR.L.D - MIPS III */
27972808                  UML_FDTOINT(block, FPR64(FDREG), FPR64(FSREG), SIZE_QWORD, ROUND_FLOOR);// fdtoint <fdreg>,<fsreg>,qword,floor
2809               UML_DSEXT(block, FPR64(FDREG), FPR64(FDREG), SIZE_DWORD);
27982810               return TRUE;
27992811
28002812            case 0x0c:
trunk/src/emu/cpu/mips/mips3fe.c
r241752r241753
106106            desc.regin[0] |= REGFLAG_R(RSREG) | REGFLAG_R(RTREG);
107107            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
108108         }
109         desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
109         desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
110110         desc.delayslots = 1;
111111         desc.skipslots = (opswitch & 0x10) ? 1 : 0;
112112         return true;
r241752r241753
122122            desc.regin[0] |= REGFLAG_R(RSREG);
123123            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
124124         }
125         desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
125         desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
126126         desc.delayslots = 1;
127127         desc.skipslots = (opswitch & 0x10) ? 1 : 0;
128128         return true;
r241752r241753
396396            desc.regin[0] |= REGFLAG_R(RSREG);
397397            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
398398         }
399         desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
399         desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
400400         desc.delayslots = 1;
401401         desc.skipslots = (RTREG & 0x02) ? 1 : 0;
402402         return true;
r241752r241753
423423            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
424424         }
425425         desc.regout[0] |= REGFLAG_R(31);
426         desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
426         desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
427427         desc.delayslots = 1;
428428         desc.skipslots = (RTREG & 0x02) ? 1 : 0;
429429         return true;
r241752r241753
508508            case 0x00:  // BCzF
509509            case 0x01:  // BCzT
510510               desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
511               desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
511               desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
512512               desc.delayslots = 1;
513513               return true;
514514         }
r241752r241753
580580            case 0x03:  // BCzTL
581581               desc.regin[2] |= REGFLAG_FCC;
582582               desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
583               desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
583               desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
584584               desc.delayslots = 1;
585585               desc.skipslots = (RTREG & 0x02) ? 1 : 0;
586586               return true;
r241752r241753
730730            case 0x00:  // BCzF
731731            case 0x01:  // BCzT
732732               desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
733               desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
733               desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
734734               desc.delayslots = 1;
735735               return true;
736736         }
trunk/src/emu/cpu/rsp/rsp.h
r241752r241753
299299   void ccfunc_rsp_vabs_scalar();
300300   void ccfunc_rsp_vaddc_scalar();
301301   void ccfunc_rsp_vsubc_scalar();
302   void ccfunc_rsp_vaddb_scalar();
302303   void ccfunc_rsp_vsaw_scalar();
303304   void ccfunc_rsp_vlt_scalar();
304305   void ccfunc_rsp_veq_scalar();
r241752r241753
325326   void ccfunc_mtc2_scalar();
326327   void ccfunc_ctc2_scalar();
327328#endif
329   void ccfunc_rsp_vrsq_scalar();
328330#if USE_SIMD && SIMUL_SIMD
329331   void ccfunc_backup_regs();
330332   void ccfunc_restore_regs();
r241752r241753
541543   void generate_checksum_block(drcuml_block *block, compiler_state *compiler, const opcode_desc *seqhead, const opcode_desc *seqlast);
542544   void generate_sequence_instruction(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
543545   void generate_delay_slot_and_branch(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc, UINT8 linkreg);
546   void generate_branch(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
544547   int generate_vector_opcode(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
545548   int generate_opcode(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
546549   int generate_special(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
trunk/src/emu/cpu/rsp/rspdrc.c
r241752r241753
46864686      INT32 s2 = (UINT32)(UINT16)w2;
46874687      INT32 r = s1 + s2;
46884688
4689      vres[i] = (INT16)r;
4689      vres[i] = (INT16)(r);
46904690      SET_ACCUM_L((INT16)r, i);
46914691
46924692      if (r & 0xffff0000)
r241752r241753
47544754{
47554755   int op = m_rsp_state->arg0;
47564756
4757
47584757   CLEAR_ZERO_FLAGS();
47594758   CLEAR_CARRY_FLAGS();
47604759
r241752r241753
47894788}
47904789#endif
47914790
4791// VADDB
4792//
4793// 31       25  24     20      15      10      5        0
4794// ------------------------------------------------------
4795// | 010010 | 1 | EEEE | SSSSS | TTTTT | DDDDD | 010110 |
4796// ------------------------------------------------------
4797//
4798// Adds two vector registers bytewise with rounding
4799inline void rsp_device::ccfunc_rsp_vaddb_scalar()
4800{
4801   const int op = m_rsp_state->arg0;
4802   const int round = (EL == 0) ? 0 : (1 << (EL - 1));
4803
4804   INT16 vres[8];
4805   for (int i = 0; i < 8; i++)
4806   {
4807      UINT16 w1, w2;
4808      SCALAR_GET_VS1(w1, i);
4809      SCALAR_GET_VS2(w2, i);
4810
4811      UINT8 hb1 = w1 >> 8;
4812      UINT8 lb1 = w1 & 0xff;
4813      UINT8 hb2 = w2 >> 8;
4814      UINT8 lb2 = w2 & 0xff;
4815
4816      UINT16 hs = hb1 + hb2 + round;
4817      UINT16 ls = lb1 + lb2 + round;
4818
4819      SET_ACCUM_L((hs << 8) | ls, i);
4820
4821      hs >>= EL;
4822      if (hs > 255)
4823      {
4824         hs = 255;
4825      }
4826      else if (hs < 0)
4827      {
4828         hs = 0;
4829      }
4830
4831      ls >>= EL;
4832      if (ls > 255)
4833      {
4834         ls = 255;
4835      }
4836      else if (ls < 0)
4837      {
4838         ls = 0;
4839      }
4840
4841      vres[i] = 0; // VD writeback disabled on production hardware
4842      // vres[i] = (hs << 8) | ls;
4843   }
4844   WRITEBACK_RESULT();
4845}
4846
4847static void cfunc_rsp_vaddb_scalar(void *param)
4848{
4849   ((rsp_device *)param)->ccfunc_rsp_vaddb_scalar();
4850}
4851
47924852#if USE_SIMD
47934853// VSAW
47944854//
r241752r241753
63186378
63196379   UINT16 urec;
63206380   SIMD_EXTRACT16(m_xv[VS2REG], urec, EL);
6321   INT32 rec = (urec | m_reciprocal_high);
6322
6381   INT32 rec = (INT16)urec;
63236382   INT32 datainput = rec;
63246383
6325   if (rec < 0)
6384   if (m_dp_allowed)
63266385   {
6327      if (m_dp_allowed)
6386      rec = (rec & 0x0000ffff) | m_reciprocal_high;
6387      datainput = rec;
6388
6389      if (rec < 0)
63286390      {
63296391         if (rec < -32768)
63306392         {
r241752r241753
63356397            datainput = -datainput;
63366398         }
63376399      }
6338      else
6339      {
6340         datainput = -datainput;
6341      }
63426400   }
6401   else if (datainput < 0)
6402   {
6403      datainput = -datainput;
63436404
6405      shifter = 0x10;
6406   }
63446407
63456408   if (datainput)
63466409   {
r241752r241753
63536416         }
63546417      }
63556418   }
6356   else
6357   {
6358      if (m_dp_allowed)
6359      {
6360         shifter = 0;
6361      }
6362      else
6363      {
6364         shifter = 0x10;
6365      }
6366   }
63676419
63686420   INT32 address = ((datainput << shifter) & 0x7fc00000) >> 22;
63696421   INT32 fetchval = rsp_divtable[address];
63706422   INT32 temp = (0x40000000 | (fetchval << 14)) >> ((~shifter) & 0x1f);
6371   if (rec < 0)
6372   {
6373      temp = ~temp;
6374   }
6423   temp ^= rec >> 31;
6424
63756425   if (!rec)
63766426   {
63776427      temp = 0x7fffffff;
r241752r241753
64086458   int op = m_rsp_state->arg0;
64096459
64106460   INT32 shifter = 0;
6411   INT32 rec = ((UINT16)(VREG_S(VS2REG, EL & 7)) | m_reciprocal_high);
6461   INT32 rec = (INT16)VREG_S(VS2REG, EL & 7);
64126462   INT32 datainput = rec;
64136463
6414   if (rec < 0)
6464   if (m_dp_allowed)
64156465   {
6416      if (m_dp_allowed)
6466      rec = (rec & 0x0000ffff) | m_reciprocal_high;
6467      datainput = rec;
6468
6469      if (rec < 0)
64176470      {
64186471         if (rec < -32768)
64196472         {
r241752r241753
64246477            datainput = -datainput;
64256478         }
64266479      }
6427      else
6428      {
6429         datainput = -datainput;
6430      }
64316480   }
6481   else if (datainput < 0)
6482   {
6483      datainput = -datainput;
64326484
6485      shifter = 0x10;
6486   }
64336487
64346488   if (datainput)
64356489   {
r241752r241753
64426496         }
64436497      }
64446498   }
6445   else
6446   {
6447      if (m_dp_allowed)
6448      {
6449         shifter = 0;
6450      }
6451      else
6452      {
6453         shifter = 0x10;
6454      }
6455   }
64566499
6457   INT32 address = ((datainput << shifter) & 0x7fc00000) >> 22;
6458   INT32 fetchval = rsp_divtable[address];
6500   UINT32 address = (datainput << shifter) >> 22;
6501   INT32 fetchval = rsp_divtable[address & 0x1ff];
64596502   INT32 temp = (0x40000000 | (fetchval << 14)) >> ((~shifter) & 0x1f);
6460   if (rec < 0)
6461   {
6462      temp = ~temp;
6463   }
6503   temp ^= rec >> 31;
64646504   if (!rec)
64656505   {
64666506      temp = 0x7fffffff;
r241752r241753
65926632}
65936633#endif
65946634
6635// VRSQ
6636//
6637// 31       25  24     20      15      10      5        0
6638// ------------------------------------------------------
6639// | 010010 | 1 | EEEE | SSSSS | ?FFFF | DDDDD | 110100 |
6640// ------------------------------------------------------
6641//
6642// Calculates reciprocal square-root
6643
6644inline void rsp_device::ccfunc_rsp_vrsq_scalar()
6645{
6646   int op = m_rsp_state->arg0;
6647
6648   INT32 shifter = 0;
6649   INT32 rec = (INT16)VREG_S(VS2REG, EL & 7);
6650   INT32 datainput = (rec < 0) ? (-rec) : (rec);
6651
6652   if (rec < 0)
6653   {
6654      if (rec < -32768)
6655      {
6656         datainput = ~datainput;
6657      }
6658      else
6659      {
6660         datainput = -datainput;
6661      }
6662   }
6663
6664   if (datainput)
6665   {
6666      for (int i = 0; i < 32; i++)
6667      {
6668         if (datainput & (1 << ((~i) & 0x1f)))
6669         {
6670            shifter = i;
6671            break;
6672         }
6673      }
6674   }
6675   else
6676   {
6677      shifter = 0;
6678   }
6679
6680   INT32 address = ((datainput << shifter) & 0x7fc00000) >> 22;
6681   address = ((address | 0x200) & 0x3fe) | (shifter & 1);
6682
6683   INT32 fetchval = rsp_divtable[address];
6684   INT32 temp = (0x40000000 | (fetchval << 14)) >> (((~shifter) & 0x1f) >> 1);
6685   if (rec < 0)
6686   {
6687      temp = ~temp;
6688   }
6689   if (!rec)
6690   {
6691      temp = 0x7fffffff;
6692   }
6693   else if (rec == 0xffff8000)
6694   {
6695      temp = 0xffff0000;
6696   }
6697   rec = temp;
6698
6699   if (rec < 0)
6700   {
6701      if (m_dp_allowed)
6702      {
6703         if (rec < -32768)
6704         {
6705            datainput = ~datainput;
6706         }
6707         else
6708         {
6709            datainput = -datainput;
6710         }
6711      }
6712      else
6713      {
6714         datainput = -datainput;
6715      }
6716   }
6717
6718   if (datainput)
6719   {
6720      for (int i = 0; i < 32; i++)
6721      {
6722         if (datainput & (1 << ((~i) & 0x1f)))
6723         {
6724            shifter = i;
6725            break;
6726         }
6727      }
6728   }
6729   else
6730   {
6731      shifter = 0;
6732   }
6733
6734   address = ((datainput << shifter) & 0x7fc00000) >> 22;
6735   address = ((address | 0x200) & 0x3fe) | (shifter & 1);
6736
6737   fetchval = rsp_divtable[address];
6738   temp = (0x40000000 | (fetchval << 14)) >> (((~shifter) & 0x1f) >> 1);
6739   if (rec < 0)
6740   {
6741      temp = ~temp;
6742   }
6743   if (!rec)
6744   {
6745      temp = 0x7fff;
6746   }
6747   else if (rec == 0xffff8000)
6748   {
6749      temp = 0x0000;
6750   }
6751   rec = temp;
6752
6753   W_VREG_S(VDREG, VS1REG & 7) = (UINT16)rec;
6754   for (int i = 0; i < 8; i++)
6755   {
6756      SET_ACCUM_L(VREG_S(VS2REG, VEC_EL_2(EL, i)), i);
6757   }
6758}
6759
6760static void cfunc_rsp_vrsq_scalar(void *param)
6761{
6762   ((rsp_device *)param)->ccfunc_rsp_vrsq_scalar();
6763}
6764
65956765#if USE_SIMD
65966766// VRSQL
65976767//
r241752r241753
66156785   INT32 shifter = 0;
66166786   UINT16 val;
66176787   SIMD_EXTRACT16(m_xv[VS2REG], val, EL);
6618   INT32 rec = m_reciprocal_high | val;
6788   INT32 rec = (INT16)val;
66196789   INT32 datainput = rec;
66206790
6621   if (rec < 0)
6791   if (m_dp_allowed)
66226792   {
6623      if (m_dp_allowed)
6793      rec = (rec & 0x0000ffff) | m_reciprocal_high;
6794      datainput = rec;
6795
6796      if (rec < 0)
66246797      {
66256798         if (rec < -32768)
66266799         {
r241752r241753
66316804            datainput = -datainput;
66326805         }
66336806      }
6634      else
6635      {
6636         datainput = -datainput;
6637      }
66386807   }
6808   else if (datainput < 0)
6809   {
6810      datainput = -datainput;
66396811
6812      shifter = 0x10;
6813   }
6814
66406815   if (datainput)
66416816   {
66426817      for (int i = 0; i < 32; i++)
r241752r241753
66486823         }
66496824      }
66506825   }
6651   else
6652   {
6653      if (m_dp_allowed)
6654      {
6655         shifter = 0;
6656      }
6657      else
6658      {
6659         shifter = 0x10;
6660      }
6661   }
66626826
66636827   INT32 address = ((datainput << shifter) & 0x7fc00000) >> 22;
66646828   address = ((address | 0x200) & 0x3fe) | (shifter & 1);
66656829
66666830   INT32 fetchval = rsp_divtable[address];
66676831   INT32 temp = (0x40000000 | (fetchval << 14)) >> (((~shifter) & 0x1f) >> 1);
6668   if (rec < 0)
6669   {
6670      temp = ~temp;
6671   }
6832   temp ^= rec >> 31;
6833
66726834   if (!rec)
66736835   {
66746836      temp = 0x7fffffff;
r241752r241753
66996861   int op = m_rsp_state->arg0;
67006862
67016863   INT32 shifter = 0;
6702   INT32 rec = m_reciprocal_high | (UINT16)VREG_S(VS2REG, EL & 7);
6864   INT32 rec = (INT16)VREG_S(VS2REG, EL & 7);
67036865   INT32 datainput = rec;
67046866
6705   if (rec < 0)
6867   if (m_dp_allowed)
67066868   {
6707      if (m_dp_allowed)
6869      rec = (rec & 0x0000ffff) | m_reciprocal_high;
6870      datainput = rec;
6871
6872      if (rec < 0)
67086873      {
67096874         if (rec < -32768)
67106875         {
r241752r241753
67156880            datainput = -datainput;
67166881         }
67176882      }
6718      else
6719      {
6720         datainput = -datainput;
6721      }
67226883   }
6884   else if (datainput < 0)
6885   {
6886      datainput = -datainput;
67236887
6888      shifter = 0x10;
6889   }
6890
67246891   if (datainput)
67256892   {
67266893      for (int i = 0; i < 32; i++)
r241752r241753
67326899         }
67336900      }
67346901   }
6735   else
6736   {
6737      if (m_dp_allowed)
6738      {
6739         shifter = 0;
6740      }
6741      else
6742      {
6743         shifter = 0x10;
6744      }
6745   }
67466902
67476903   INT32 address = ((datainput << shifter) & 0x7fc00000) >> 22;
67486904   address = ((address | 0x200) & 0x3fe) | (shifter & 1);
67496905
67506906   INT32 fetchval = rsp_divtable[address];
67516907   INT32 temp = (0x40000000 | (fetchval << 14)) >> (((~shifter) & 0x1f) >> 1);
6752   if (rec < 0)
6753   {
6754      temp = ~temp;
6755   }
6908   temp ^= rec >> 31;
6909
67566910   if (!rec)
67576911   {
67586912      temp = 0x7fffffff;
r241752r241753
73617515}
73627516
73637517/*------------------------------------------------------------------
7518    generate_branch
7519------------------------------------------------------------------*/
7520
7521void rsp_device::generate_branch(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc)
7522{
7523   compiler_state compiler_temp = *compiler;
7524
7525   /* update the cycles and jump through the hash table to the target */
7526   if (desc->targetpc != BRANCH_TARGET_DYNAMIC)
7527   {
7528      generate_update_cycles(block, &compiler_temp, desc->targetpc, TRUE);   // <subtract cycles>
7529      if (desc->flags & OPFLAG_INTRABLOCK_BRANCH)
7530         UML_JMP(block, desc->targetpc | 0x80000000);                  // jmp     desc->targetpc
7531      else
7532         UML_HASHJMP(block, 0, desc->targetpc, *m_nocode);               // hashjmp <mode>,desc->targetpc,nocode
7533   }
7534   else
7535   {
7536      generate_update_cycles(block, &compiler_temp, mem(&m_rsp_state->jmpdest), TRUE);   // <subtract cycles>
7537      UML_HASHJMP(block, 0, mem(&m_rsp_state->jmpdest), *m_nocode);                  // hashjmp <mode>,<rsreg>,nocode
7538   }
7539}
7540
7541/*------------------------------------------------------------------
73647542    generate_delay_slot_and_branch
73657543------------------------------------------------------------------*/
73667544
r241752r241753
73867564   assert(desc->delay.first() != NULL);
73877565   generate_sequence_instruction(block, &compiler_temp, desc->delay.first());     // <next instruction>
73887566
7389   /* update the cycles and jump through the hash table to the target */
7390   if (desc->targetpc != BRANCH_TARGET_DYNAMIC)
7391   {
7392      generate_update_cycles(block, &compiler_temp, desc->targetpc, TRUE);   // <subtract cycles>
7393      if (desc->flags & OPFLAG_INTRABLOCK_BRANCH)
7394         UML_JMP(block, desc->targetpc | 0x80000000);                            // jmp     desc->targetpc
7395      else
7396         UML_HASHJMP(block, 0, desc->targetpc, *m_nocode);
7397                                                               // hashjmp <mode>,desc->targetpc,nocode
7398   }
7399   else
7400   {
7401      generate_update_cycles(block, &compiler_temp, mem(&m_rsp_state->jmpdest), TRUE);
7402                                                               // <subtract cycles>
7403      UML_HASHJMP(block, 0, mem(&m_rsp_state->jmpdest), *m_nocode);
7404                                                               // hashjmp <mode>,<rsreg>,nocode
7405   }
7567   generate_branch(block, compiler, desc);
74067568
74077569   /* update the label */
74087570   compiler->labelnum = compiler_temp.labelnum;
r241752r241753
76187780#endif
76197781         return TRUE;
76207782
7783      case 0x16:      /* VADDB */
7784         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
7785         UML_CALLC(block, cfunc_rsp_vaddb_scalar, this);
7786         return TRUE;
7787
7788      case 0x17:      /* VSUBB (reserved, functionally identical to VADDB) */
7789         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
7790         UML_CALLC(block, cfunc_rsp_vaddb_scalar, this);
7791         return TRUE;
7792
7793      case 0x18:      /* VACCB (reserved, functionally identical to VADDB) */
7794         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
7795         UML_CALLC(block, cfunc_rsp_vaddb_scalar, this);
7796         return TRUE;
7797
7798      case 0x19:      /* VSUCB (reserved, functionally identical to VADDB) */
7799         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
7800         UML_CALLC(block, cfunc_rsp_vaddb_scalar, this);
7801         return TRUE;
7802
76217803      case 0x1d:      /* VSAW */
76227804         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
76237805         UML_CALLC(block, cfunc_rsp_vsaw_simd, this);
r241752r241753
78278009#endif
78288010         return TRUE;
78298011
8012      case 0x34:      /* VRSQ */
8013         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);         // mov     [arg0],desc->opptr.l
8014         UML_CALLC_block, cfunc_rsp_vrsq_scalar, this);
8015         return TRUE;
8016
78308017      case 0x35:      /* VRSQL */
78318018         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
78328019         UML_CALLC(block, cfunc_rsp_vrsql_simd, this);
r241752r241753
78498036#endif
78508037         return TRUE;
78518038
8039      case 0x37:      /* VNOP */
8040      case 0x3F:      /* VNULL */
8041         return TRUE;
8042
78528043      default:
78538044         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
78548045         UML_CALLC(block, cfunc_unimplemented_opcode, this);
r241752r241753
79548145         UML_CALLC(block, cfunc_rsp_vsubc_scalar, this);
79558146         return TRUE;
79568147
8148      case 0x16:      /* VADDB */
8149         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
8150         UML_CALLC(block, cfunc_rsp_vaddb_scalar, this);
8151         return TRUE;
8152
8153      case 0x17:      /* VSUBB (reserved, functionally identical to VADDB) */
8154         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
8155         UML_CALLC(block, cfunc_rsp_vaddb_scalar, this);
8156         return TRUE;
8157
8158      case 0x18:      /* VACCB (reserved, functionally identical to VADDB) */
8159         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
8160         UML_CALLC(block, cfunc_rsp_vaddb_scalar, this);
8161         return TRUE;
8162
8163      case 0x19:      /* VSUCB (reserved, functionally identical to VADDB) */
8164         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
8165         UML_CALLC(block, cfunc_rsp_vaddb_scalar, this);
8166         return TRUE;
8167
79578168      case 0x1d:      /* VSAW */
79588169         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
79598170         UML_CALLC(block, cfunc_rsp_vsaw_scalar, this);
r241752r241753
80498260         UML_CALLC(block, cfunc_rsp_vmov_scalar, this);
80508261         return TRUE;
80518262
8263      case 0x34:      /* VRSQ */
8264         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);         // mov     [arg0],desc->opptr.l
8265         UML_CALLC(block, cfunc_rsp_vrsq_scalar, this);
8266         return TRUE;
8267
80528268      case 0x35:      /* VRSQL */
80538269         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
80548270         UML_CALLC(block, cfunc_rsp_vrsql_scalar, this);
r241752r241753
80598275         UML_CALLC(block, cfunc_rsp_vrsqh_scalar, this);
80608276         return TRUE;
80618277
8278      case 0x37:      /* VNOP */
8279      case 0x3F:      /* VNULL */
8280         return TRUE;
8281
80628282      default:
80638283         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
80648284         UML_CALLC(block, cfunc_unimplemented_opcode, this);
r241752r241753
84218641         UML_MOV(block, mem(&m_rsp_state->arg0), 3);                   // mov     [arg0],3
84228642         UML_CALLC(block, cfunc_sp_set_status_cb, this);                      // callc   cfunc_sp_set_status_cb
84238643         UML_MOV(block, mem(&m_rsp_state->icount), 0);                       // mov icount, #0
8644         UML_MOV(block, mem(&m_rsp_state->jmpdest), desc->targetpc);
84248645
8646         generate_branch(block, compiler, desc);
8647
84258648         UML_EXIT(block, EXECUTE_OUT_OF_CYCLES);
84268649         return TRUE;
84278650   }
trunk/src/emu/cpu/rsp/rspfe.c
r241752r241753
8383            desc.regin[0] |= REGFLAG_R(RSREG) | REGFLAG_R(RTREG);
8484            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
8585         }
86         desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000;
86         desc.targetpc = ((desc.pc + 4 + SIMMVAL * 4) & 0x00000fff) | 0x1000;
8787         desc.delayslots = 1;
8888         desc.skipslots = (opswitch & 0x10) ? 1 : 0;
8989         return true;
r241752r241753
9797            desc.regin[0] |= REGFLAG_R(RSREG);
9898            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
9999         }
100         desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000;
100         desc.targetpc = ((desc.pc + 4 + SIMMVAL * 4) & 0x00000fff) | 0x1000;
101101         desc.delayslots = 1;
102102         desc.skipslots = (opswitch & 0x10) ? 1 : 0;
103103         return true;
r241752r241753
207207         return true;
208208
209209      case 0x0d:  // BREAK
210         desc.flags |= OPFLAG_END_SEQUENCE;
211         desc.targetpc = BRANCH_TARGET_DYNAMIC;
210         desc.flags |= OPFLAG_IS_UNCONDITIONAL_BRANCH | OPFLAG_END_SEQUENCE;
211         desc.targetpc = (op >> 5) & 0x000fffff;
212212         return true;
213213   }
214214
r241752r241753
234234            desc.regin[0] |= REGFLAG_R(RSREG);
235235            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
236236         }
237         desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000;
237         desc.targetpc = ((desc.pc + 4 + SIMMVAL * 4) & 0x00000fff) | 0x1000;
238238         desc.delayslots = 1;
239239         desc.skipslots = (RTREG & 0x02) ? 1 : 0;
240240         return true;
r241752r241753
249249            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
250250         }
251251         desc.regout[0] |= REGFLAG_R(31);
252         desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000;
252         desc.targetpc = ((desc.pc + 4 + SIMMVAL * 4) & 0x00000fff) | 0x1000;
253253         desc.delayslots = 1;
254254         desc.skipslots = (RTREG & 0x02) ? 1 : 0;
255255         return true;
trunk/src/emu/cpu/tms0980/tms0980.c
r241752r241753
123123#include "debugger.h"
124124#include "tms0980.h"
125125
126#define LOG                 0
127126
128127
129128const device_type TMS0980 = &device_creator<tms0980_cpu_device>;
r241752r241753
236235#define I_YNEC      ( MICRO_MASK | M_YTP | M_CKN | M_NE )
237236
238237
239static const UINT8 tms0980_c2_value[4] =
240{
241   0x00, 0x02, 0x01, 0x03
242};
243static const UINT8 tms0980_c3_value[8] =
244{
245   0x00, 0x04, 0x02, 0x06, 0x01, 0x05, 0x03, 0x07
246};
247static const UINT8 tms0980_c4_value[16] =
248{
249   0x00, 0x08, 0x04, 0x0C, 0x02, 0x0A, 0x06, 0x0E, 0x01, 0x09, 0x05, 0x0D, 0x03, 0x0B, 0x07, 0x0F
250};
238static const UINT8 tms0980_c2_value[4] = { 0, 2, 1, 3 };
239static const UINT8 tms0980_c3_value[8] = { 0, 4, 2, 6, 1, 5, 3, 7 };
240static const UINT8 tms0980_c4_value[16] = { 0x0, 0x8, 0x4, 0xC, 0x2, 0xA, 0x6, 0xE, 0x1, 0x9, 0x5, 0xD, 0x3, 0xB, 0x7, 0xF };
251241static const UINT8 tms0980_bit_value[4] = { 1, 4, 2, 8 };
252static const UINT8 tms0980_nbit_value[4] = { 0x0E, 0x0B, 0x0D, 0x07 };
242static const UINT8 tms0980_nbit_value[4] = { 0xE, 0xB, 0xD, 0x7 };
253243
254244
255245static const UINT32 tms0980_decode[512] =
r241752r241753
329319};
330320
331321
332static const UINT32 tms1000_default_decode[256] = {
322static const UINT32 tms1000_default_decode[256] =
323{
333324   /* 0x00 */
334325   F_COMX, I_A8AAC, I_YNEA, I_TAM, I_TAMZA, I_A10AAC, I_A6AAC, I_DAN,
335326   I_TKA, I_KNEZ, F_TDO, F_CLO, F_RSTR, F_SETR, I_IA, F_RETN,
r241752r241753
371362};
372363
373364
374static const UINT32 tms1100_default_decode[256] = {
365static const UINT32 tms1100_default_decode[256] =
366{
375367   /* 0x00 */
376368   I_MNEA, I_ALEM, I_YNEA, I_XMA, I_DYN, I_IYC, I_AMAAC, I_DMAN,
377369   I_TKA, F_COMX, F_TDO, F_COMC, F_RSTR, F_SETR, I_KNEZ, F_RETN,
r241752r241753
504496
505497void tms1xxx_cpu_device::device_reset()
506498{
507   m_pa = 0x0F;
508   m_pb = 0x0F;
499   m_pa = 0xF;
500   m_pb = 0xF;
509501   m_pc = 0;
510502   m_dam = 0;
511503   m_ca = 0;
r241752r241753
620612                 ( pc{5:4} == 11 && pc{0} == 1 ) => 10
621613
622614*/
623static const UINT8 tms1000_next_pc[64] = {
615static const UINT8 tms1000_next_pc[64] =
616{
624617   0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F,
625618   0x20, 0x22, 0x24, 0x26, 0x28, 0x2A, 0x2C, 0x2E, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3A, 0x3C, 0x3F,
626619   0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E,
r241752r241753
711704{
712705   do
713706   {
714//      debugger_instruction_hook( this, ( ( m_pa << m_pc_size ) | m_pc ) << 1 );
715707      m_icount--;
716708      switch( m_subcycle )
717709      {
r241752r241753
811803            }
812804            if ( m_decode & M_STO )
813805            {
814//printf("write ram %02x data %01x\n", m_ram_address, m_a );
815806               m_data->write_byte( m_ram_address, m_a );
816807            }
817808            if ( m_decode & M_CKM )
818809            {
819//printf("write ram %02x data %01x\n", m_ram_address, m_cki_bus );
820810               m_data->write_byte( m_ram_address, m_cki_bus );
821811            }
822812         }
r241752r241753
824814         {
825815            if ( m_decode & F_SBIT )
826816            {
827//printf("write ram %02x data %01x\n", m_ram_address, m_ram_data | tms0980_bit_value[ m_opcode & 0x03 ] );
828817               m_data->write_byte( m_ram_address, m_ram_data | tms0980_bit_value[ m_opcode & 0x03 ] );
829818            }
830819            if ( m_decode & F_RBIT )
831820            {
832//printf("write ram %02x data %01x\n", m_ram_address, m_ram_data & tms0980_nbit_value[ m_opcode & 0x03 ] );
833821               m_data->write_byte( m_ram_address, m_ram_data & tms0980_nbit_value[ m_opcode & 0x03 ] );
834822            }
835823            if ( m_decode & F_SETR )
r241752r241753
850838               {
851839                  logerror("unknown output pla mapping for status latch = %d and a = %X\n", m_status_latch, m_a);
852840               }
853//if ( ( c_output_pla[ ( m_status_latch << 4 ) | m_a ] & 0xFF00 ) == 0xFF00 )
854//printf("****** o output m_status_latch = %X, m_a = %X\n", m_status_latch, m_a);
855//else
856//printf("o output m_status_latch = %X, m_a = %X\n", m_status_latch, m_a);
857841
858842               m_write_o( 0, m_o & m_o_mask, 0xffff );
859843            }
r241752r241753
951935            m_opcode = m_program->read_byte( m_rom_address );
952936         }
953937         next_pc();
954         if (LOG)
955            logerror( "tms0980: read opcode %04x from %04x. Set pc to %04x\n", m_opcode, m_rom_address, m_pc );
956938
957939         /* ram address */
958940         m_ram_address = ( m_x << 4 ) | m_y;
trunk/src/emu/cpu/tms57002/tms57002.c
r241752r241753
2323tms57002_device::tms57002_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
2424   : cpu_device(mconfig, TMS57002, "TMS57002", tag, owner, clock, "tms57002", __FILE__),
2525      device_sound_interface(mconfig, *this),
26      txrd(0),
2627      program_config("program", ENDIANNESS_LITTLE, 32, 8, -2, ADDRESS_MAP_NAME(internal_pgm)),
2728      data_config("data", ENDIANNESS_LITTLE, 8, 20)
2829{
trunk/src/emu/cpu/upd7810/upd7810.c
r241752r241753
567567         data = (data & ~0x02) | (m_rxd & 1 ? 0x02 : 0x00);
568568      if (m_mcc & 0x04)   /* PC2 = SCK input/output */
569569         data = (data & ~0x04) | (m_sck & 1 ? 0x04 : 0x00);
570      if (m_mcc & 0x08)   /* PC3 = TI input */
571         data = (data & ~0x08) | (m_ti & 1 ? 0x08 : 0x00);
570      if (m_mcc & 0x08)   /* PC3 = TI/INT2 input */
571         data = (data & ~0x08) | (m_int2 & 1 ? 0x08 : 0x00);
572572      if (m_mcc & 0x10)   /* PC4 = TO output */
573573         data = (data & ~0x10) | (m_to & 1 ? 0x10 : 0x00);
574574      if (m_mcc & 0x20)   /* PC5 = CI input */
r241752r241753
648648         data = (data & ~0x02) | (m_rxd & 1 ? 0x02 : 0x00);
649649      if (m_mcc & 0x04)   /* PC2 = SCK input/output */
650650         data = (data & ~0x04) | (m_sck & 1 ? 0x04 : 0x00);
651      if (m_mcc & 0x08)   /* PC3 = TI input */
652         data = (data & ~0x08) | (m_ti & 1 ? 0x08 : 0x00);
651      if (m_mcc & 0x08)   /* PC3 = TI/INT2 input */
652         data = (data & ~0x08) | (m_int2 & 1 ? 0x08 : 0x00);
653653      if (m_mcc & 0x10)   /* PC4 = TO output */
654654         data = (data & ~0x10) | (m_to & 1 ? 0x10 : 0x00);
655655      if (m_mcc & 0x20)   /* PC5 = CI input */
r241752r241753
709709      return;
710710
711711   /* check the interrupts in priority sequence */
712   if (IRR & INTNMI)
713   {
714      /* Nonmaskable interrupt */
715      irqline = INPUT_LINE_NMI;
716      vector = 0x0004;
717      IRR &= ~INTNMI;
718   }
719   else
712720   if ((IRR & INTFT0)  && 0 == (MKL & 0x02))
713721   {
714722      vector = 0x0008;
r241752r241753
11741182   }
11751183}
11761184
1177void upd7810_device::handle_timers(int cycles)
1185void upd7810_device::upd7810_handle_timer0(int cycles, int clkdiv)
11781186{
1179   /**** TIMER 0 ****/
1180   if (TMM & 0x10)         /* timer 0 upcounter reset ? */
1181      CNT0 = 0;
1182   else
1187   OVC0 += cycles;
1188   while (OVC0 >= clkdiv)
11831189   {
1184      switch (TMM & 0x0c) /* timer 0 clock source */
1190      OVC0 -= clkdiv;
1191      CNT0++;
1192      if (CNT0 == TM0)
11851193      {
1186      case 0x00:  /* clock divided by 12 */
1187         OVC0 += cycles;
1188         while (OVC0 >= 12)
1194         CNT0 = 0;
1195         IRR |= INTFT0;
1196         /* timer F/F source is timer 0 ? */
1197         if (0x00 == (TMM & 0x03))
11891198         {
1190            OVC0 -= 12;
1191            CNT0++;
1192            if (CNT0 == TM0)
1193            {
1194               CNT0 = 0;
1195               IRR |= INTFT0;
1196               /* timer F/F source is timer 0 ? */
1197               if (0x00 == (TMM & 0x03))
1198               {
1199                  TO ^= 1;
1200                  m_to_func(TO);
1201               }
1202               /* timer 1 chained with timer 0 ? */
1203               if ((TMM & 0xe0) == 0x60)
1204               {
1205                  CNT1++;
1206                  if (CNT1 == TM1)
1207                  {
1208                     IRR |= INTFT1;
1209                     CNT1 = 0;
1210                     /* timer F/F source is timer 1 ? */
1211                     if (0x01 == (TMM & 0x03))
1212                     {
1213                        TO ^= 1;
1214                        m_to_func(TO);
1215                     }
1216                  }
1217               }
1218            }
1199            TO ^= 1;
1200            m_to_func(TO);
12191201         }
1220         break;
1221      case 0x04:  /* clock divided by 384 */
1222         OVC0 += cycles;
1223         while (OVC0 >= 384)
1202         /* timer 1 chained with timer 0 ? */
1203         if ((TMM & 0xe0) == 0x60)
12241204         {
1225            OVC0 -= 384;
1226            CNT0++;
1227            if (CNT0 == TM0)
1205            CNT1++;
1206            if (CNT1 == TM1)
12281207            {
1229               CNT0 = 0;
1230               IRR |= INTFT0;
1231               /* timer F/F source is timer 0 ? */
1232               if (0x00 == (TMM & 0x03))
1208               CNT1 = 0;
1209               IRR |= INTFT1;
1210               /* timer F/F source is timer 1 ? */
1211               if (0x01 == (TMM & 0x03))
12331212               {
12341213                  TO ^= 1;
12351214                  m_to_func(TO);
12361215               }
1237               /* timer 1 chained with timer 0 ? */
1238               if ((TMM & 0xe0) == 0x60)
1239               {
1240                  CNT1++;
1241                  if (CNT1 == TM1)
1242                  {
1243                     CNT1 = 0;
1244                     IRR |= INTFT1;
1245                     /* timer F/F source is timer 1 ? */
1246                     if (0x01 == (TMM & 0x03))
1247                     {
1248                        TO ^= 1;
1249                        m_to_func(TO);
1250                     }
1251                  }
1252               }
12531216            }
12541217         }
1218      }
1219   }
1220}
1221
1222void upd7810_device::upd7810_handle_timer1(int cycles, int clkdiv)
1223{
1224   OVC1 += cycles;
1225   while (OVC1 >= clkdiv)
1226   {
1227      OVC1 -= clkdiv;
1228      CNT1++;
1229      if (CNT1 == TM1)
1230      {
1231         CNT1 = 0;
1232         IRR |= INTFT1;
1233         /* timer F/F source is timer 1 ? */
1234         if (0x01 == (TMM & 0x03))
1235         {
1236            TO ^= 1;
1237            m_to_func(TO);
1238         }
1239      }
1240   }
1241}
1242
1243void upd7810_device::handle_timers(int cycles)
1244{
1245   /**** TIMER 0 ****/
1246   if (TMM & 0x10)         /* timer 0 upcounter reset ? */
1247      CNT0 = 0;
1248   else
1249   {
1250      switch (TMM & 0x0c) /* timer 0 clock source */
1251      {
1252      case 0x00:  /* clock divided by 12 */
1253         upd7810_handle_timer0(cycles, 12);
12551254         break;
1255      case 0x04:  /* clock divided by 384 */
1256         upd7810_handle_timer0(cycles, 384);
1257         break;
12561258      case 0x08:  /* external signal at TI */
12571259         break;
12581260      case 0x0c:  /* disabled */
r241752r241753
12681270      switch (TMM & 0x60) /* timer 1 clock source */
12691271      {
12701272      case 0x00:  /* clock divided by 12 */
1271         OVC1 += cycles;
1272         while (OVC1 >= 12)
1273         {
1274            OVC1 -= 12;
1275            CNT1++;
1276            if (CNT1 == TM1)
1277            {
1278               CNT1 = 0;
1279               IRR |= INTFT1;
1280               /* timer F/F source is timer 1 ? */
1281               if (0x01 == (TMM & 0x03))
1282               {
1283                  TO ^= 1;
1284                  m_to_func(TO);
1285               }
1286            }
1287         }
1273         upd7810_handle_timer1(cycles, 12);
12881274         break;
12891275      case 0x20:  /* clock divided by 384 */
1290         OVC1 += cycles;
1291         while (OVC1 >= 384)
1292         {
1293            OVC1 -= 384;
1294            CNT1++;
1295            if (CNT1 == TM1)
1296            {
1297               CNT1 = 0;
1298               IRR |= INTFT1;
1299               /* timer F/F source is timer 1 ? */
1300               if (0x01 == (TMM & 0x03))
1301               {
1302                  TO ^= 1;
1303                  m_to_func(TO);
1304               }
1305            }
1306         }
1276         upd7810_handle_timer1(cycles, 384);
13071277         break;
13081278      case 0x40:  /* external signal at TI */
13091279         break;
r241752r241753
13381308      {
13391309         OVCE -= 12;
13401310         ECNT++;
1311         /* Interrupt Control Circuit */
1312         if (ETM0 == ECNT)
1313            IRR |= INTFE0;
1314         if (ETM1 == ECNT)
1315            IRR |= INTFE1;
1316         /* How and When ECNT is Cleared */
13411317         switch (ETMM & 0x0c)
13421318         {
13431319         case 0x00:              /* clear ECNT */
r241752r241753
13531329               ECNT = 0;
13541330            break;
13551331         }
1356         switch (ETMM & 0x30)
1332         /* Conditions When ECNT Causes a CO0 Output Change */
1333         if (((0x00 == (ETMM & 0x30)) && (ETM0 == ECNT)) || /* set CO0 if ECNT == ETM0 */
1334          /* ((0x10 == (ETMM & 0x30)) prohibited */
1335             ((0x20 == (ETMM & 0x30)) && (ETM0 == ECNT)) || /* set CO0 if ECNT == ETM0 or at falling CI input */
1336             ((0x30 == (ETMM & 0x30)) && (ETM0 == ECNT || ETM1 == ECNT))) /* latch CO0 if ECNT == ETM0 or ECNT == ETM1 */
13571337         {
1358         case 0x00:  /* set CO0 if ECNT == ETM0 */
1359            if (ETM0 == ECNT)
1338            switch (EOM & 0x0e)
13601339            {
1361               switch (EOM & 0x0e)
1362               {
1363               case 0x02:  /* toggle CO0 */
1364                  CO0 = (CO0 >> 1) | ((CO0 ^ 2) & 2);
1365                  break;
1366               case 0x04:  /* reset CO0 */
1367                  CO0 = 0;
1368                  break;
1369               case 0x08:  /* set CO0 */
1370                  CO0 = 1;
1371                  break;
1372               }
1340            case 0x02:  /* toggle CO0 */
1341               CO0 = (CO0 >> 1) | ((CO0 ^ 2) & 2);
1342               break;
1343            case 0x04:  /* reset CO0 */
1344               CO0 = 0;
1345               break;
1346            case 0x08:  /* set CO0 */
1347               CO0 = 1;
1348               break;
13731349            }
1374            break;
1375         case 0x10:  /* prohibited */
1376            break;
1377         case 0x20:  /* set CO0 if ECNT == ETM0 or at falling CI input */
1378            if (ETM0 == ECNT)
1379            {
1380               switch (EOM & 0x0e)
1381               {
1382               case 0x02:  /* toggle CO0 */
1383                  CO0 = (CO0 >> 1) | ((CO0 ^ 2) & 2);
1384                  break;
1385               case 0x04:  /* reset CO0 */
1386                  CO0 = 0;
1387                  break;
1388               case 0x08:  /* set CO0 */
1389                  CO0 = 1;
1390                  break;
1391               }
1392            }
1393            break;
1394         case 0x30:  /* latch CO0 if ECNT == ETM0 or ECNT == ETM1 */
1395            if (ETM0 == ECNT || ETM1 == ECNT)
1396            {
1397               switch (EOM & 0x0e)
1398               {
1399               case 0x02:  /* toggle CO0 */
1400                  CO0 = (CO0 >> 1) | ((CO0 ^ 2) & 2);
1401                  break;
1402               case 0x04:  /* reset CO0 */
1403                  CO0 = 0;
1404                  break;
1405               case 0x08:  /* set CO0 */
1406                  CO0 = 1;
1407                  break;
1408               }
1409            }
1410            break;
14111350         }
1412         switch (ETMM & 0xc0)
1351         /* Conditions When ECNT Causes a CO1 Output Change */
1352         if (((0x00 == (ETMM & 0xc0)) && (ETM0 == ECNT)) || /* set CO1 if ECNT == ETM0 */
1353          /* ((0x40 == (ETMM & 0xc0)) prohibited */
1354             ((0x80 == (ETMM & 0xc0)) && (ETM0 == ECNT)) || /* set CO1 if ECNT == ETM0 or at falling CI input */
1355             ((0xc0 == (ETMM & 0xc0)) && (ETM0 == ECNT || ETM1 == ECNT))) /* latch CO1 if ECNT == ETM0 or ECNT == ETM1 */
14131356         {
1414         case 0x00:  /* lacth CO1 if ECNT == ETM1 */
1415            if (ETM1 == ECNT)
1357            switch (EOM & 0xe0)
14161358            {
1417               switch (EOM & 0xe0)
1418               {
1419               case 0x20:  /* toggle CO1 */
1420                  CO1 = (CO1 >> 1) | ((CO1 ^ 2) & 2);
1421                  break;
1422               case 0x40:  /* reset CO1 */
1423                  CO1 = 0;
1424                  break;
1425               case 0x80:  /* set CO1 */
1426                  CO1 = 1;
1427                  break;
1428               }
1359            case 0x20:  /* toggle CO1 */
1360               CO1 = (CO1 >> 1) | ((CO1 ^ 2) & 2);
1361               break;
1362            case 0x40:  /* reset CO1 */
1363               CO1 = 0;
1364               break;
1365            case 0x80:  /* set CO1 */
1366               CO1 = 1;
1367               break;
14291368            }
1430            break;
1431         case 0x40:  /* prohibited */
1432            break;
1433         case 0x80:  /* latch CO1 if ECNT == ETM1 or falling edge of CI input */
1434            if (ETM1 == ECNT)
1435            {
1436               switch (EOM & 0xe0)
1437               {
1438               case 0x20:  /* toggle CO1 */
1439                  CO1 = (CO1 >> 1) | ((CO1 ^ 2) & 2);
1440                  break;
1441               case 0x40:  /* reset CO1 */
1442                  CO1 = 0;
1443                  break;
1444               case 0x80:  /* set CO1 */
1445                  CO1 = 1;
1446                  break;
1447               }
1448            }
1449            break;
1450         case 0xc0:  /* latch CO1 if ECNT == ETM0 or ECNT == ETM1 */
1451            if (ETM0 == ECNT || ETM1 == ECNT)
1452            {
1453               switch (EOM & 0xe0)
1454               {
1455               case 0x20:  /* toggle CO1 */
1456                  CO1 = (CO1 >> 1) | ((CO1 ^ 2) & 2);
1457                  break;
1458               case 0x40:  /* reset CO1 */
1459                  CO1 = 0;
1460                  break;
1461               case 0x80:  /* set CO1 */
1462                  CO1 = 1;
1463                  break;
1464               }
1465            }
1466            break;
14671369         }
14681370      }
14691371   }
r241752r241753
15081410      else
15091411         m_adtot = 192;
15101412      m_adout = 0;
1413      m_shdone = 0;
15111414      if (ANM & 0x01)
15121415      {
15131416         /* select mode */
r241752r241753
15241427   if (ANM & 0x01)
15251428   {
15261429      /* select mode */
1527      while (m_adcnt > m_adtot)
1430      if (m_shdone == 0)
15281431      {
1529         UINT8 cr = 0;
1530         m_adcnt -= m_adtot;
15311432         switch (m_adin)
15321433         {
1533            case 0: cr = m_an0_func(); break;
1534            case 1: cr = m_an1_func(); break;
1535            case 2: cr = m_an2_func(); break;
1536            case 3: cr = m_an3_func(); break;
1537            case 4: cr = m_an4_func(); break;
1538            case 5: cr = m_an5_func(); break;
1539            case 6: cr = m_an6_func(); break;
1540            case 7: cr = m_an7_func(); break;
1434            case 0: m_tmpcr = m_an0_func(); break;
1435            case 1: m_tmpcr = m_an1_func(); break;
1436            case 2: m_tmpcr = m_an2_func(); break;
1437            case 3: m_tmpcr = m_an3_func(); break;
1438            case 4: m_tmpcr = m_an4_func(); break;
1439            case 5: m_tmpcr = m_an5_func(); break;
1440            case 6: m_tmpcr = m_an6_func(); break;
1441            case 7: m_tmpcr = m_an7_func(); break;
15411442         }
1443         m_shdone = 1;
1444      }
1445      if (m_adcnt > m_adtot)
1446      {
1447         m_adcnt -= m_adtot;
15421448         switch (m_adout)
15431449         {
1544            case 0: CR0 = cr; break;
1545            case 1: CR1 = cr; break;
1546            case 2: CR2 = cr; break;
1547            case 3: CR3 = cr; break;
1450            case 0: CR0 = m_tmpcr; break;
1451            case 1: CR1 = m_tmpcr; break;
1452            case 2: CR2 = m_tmpcr; break;
1453            case 3: CR3 = m_tmpcr; break;
15481454         }
1549         m_adout = (m_adout + 1) & 0x07;
1455         m_adout = (m_adout + 1) & 0x03;
15501456         if (m_adout == 0)
15511457            IRR |= INTFAD;
1458         m_shdone = 0;
15521459      }
15531460   }
15541461   else
15551462   {
15561463      /* scan mode */
1557      while (m_adcnt > m_adtot)
1464      if (m_shdone == 0)
15581465      {
1559         UINT8 cr = 0;
1560         m_adcnt -= m_adtot;
15611466         switch (m_adin | m_adrange)
15621467         {
1563            case 0: cr = m_an0_func(); break;
1564            case 1: cr = m_an1_func(); break;
1565            case 2: cr = m_an2_func(); break;
1566            case 3: cr = m_an3_func(); break;
1567            case 4: cr = m_an4_func(); break;
1568            case 5: cr = m_an5_func(); break;
1569            case 6: cr = m_an6_func(); break;
1570            case 7: cr = m_an7_func(); break;
1468            case 0: m_tmpcr = m_an0_func(); break;
1469            case 1: m_tmpcr = m_an1_func(); break;
1470            case 2: m_tmpcr = m_an2_func(); break;
1471            case 3: m_tmpcr = m_an3_func(); break;
1472            case 4: m_tmpcr = m_an4_func(); break;
1473            case 5: m_tmpcr = m_an5_func(); break;
1474            case 6: m_tmpcr = m_an6_func(); break;
1475            case 7: m_tmpcr = m_an7_func(); break;
15711476         }
1477         m_shdone = 1;
1478      }
1479      if (m_adcnt > m_adtot)
1480      {
1481         m_adcnt -= m_adtot;
15721482         switch (m_adout)
15731483         {
1574            case 0: CR0 = cr; break;
1575            case 1: CR1 = cr; break;
1576            case 2: CR2 = cr; break;
1577            case 3: CR3 = cr; break;
1484            case 0: CR0 = m_tmpcr; break;
1485            case 1: CR1 = m_tmpcr; break;
1486            case 2: CR2 = m_tmpcr; break;
1487            case 3: CR3 = m_tmpcr; break;
15781488         }
15791489         m_adin  = (m_adin  + 1) & 0x07;
1580         m_adout = (m_adout + 1) & 0x07;
1490         m_adout = (m_adout + 1) & 0x03;
15811491         if (m_adout == 0)
15821492            IRR |= INTFAD;
1493         m_shdone = 0;
15831494      }
15841495   }
15851496
r241752r241753
17051616   save_item(NAME(m_ovcf));
17061617   save_item(NAME(m_ovcs));
17071618   save_item(NAME(m_edges));
1619   save_item(NAME(m_nmi));
17081620   save_item(NAME(m_int1));
17091621   save_item(NAME(m_int2));
17101622
r241752r241753
18861798   m_co1 = 0;
18871799   m_irr = 0;
18881800   m_itf = 0;
1801   m_nmi = 0;
18891802   m_int1 = 0;
18901803   m_int2 = 0;
18911804
r241752r241753
19021815   m_edges = 0;
19031816   m_adcnt = 0;
19041817   m_adtot = 0;
1818   m_tmpcr = 0;
1819   m_shdone = 0;
19051820   m_adout = 0;
19061821   m_adin = 0;
19071822   m_adrange = 0;
r241752r241753
20571972
20581973void upd7810_device::execute_set_input(int irqline, int state)
20591974{
2060   if (state != CLEAR_LINE)
2061   {
2062      if (irqline == INPUT_LINE_NMI)
2063      {
2064         /* no nested NMIs ? */
2065//          if (0 == (IRR & INTNMI))
2066         {
2067            IRR |= INTNMI;
2068            SP--;
2069            WM( SP, PSW );
2070            SP--;
2071            WM( SP, PCH );
2072            SP--;
2073            WM( SP, PCL );
2074            IFF = 0;
2075            PSW &= ~(SK|L0|L1);
2076            PC = 0x0004;
2077         }
2078      }
2079      else
2080      if (irqline == UPD7810_INTF1)
1975   switch (irqline) {
1976   case INPUT_LINE_NMI:
1977      /* NMI is falling edge sensitive */
1978      if ( m_nmi == ASSERT_LINE && state == CLEAR_LINE )
1979         IRR |= INTNMI;
1980
1981      m_nmi = state;
1982      break;
1983   case UPD7810_INTF1:
1984      /* INT1 is rising edge sensitive */
1985      if ( m_int1 == CLEAR_LINE && state == ASSERT_LINE )
20811986         IRR |= INTF1;
2082      else
2083      if ( irqline == UPD7810_INTF2 && ( MKL & 0x20 ) )
1987
1988      m_int1 = state;
1989      break;
1990   case UPD7810_INTF2:
1991      /* INT2 is falling edge sensitive */
1992      if ( m_int2 == ASSERT_LINE && state == CLEAR_LINE )
20841993         IRR |= INTF2;
2085      // gamemaster hack
2086      else
2087      if (irqline == UPD7810_INTFE1)
2088         IRR |= INTFE1;
2089      else
2090         logerror("upd7810_set_irq_line invalid irq line #%d\n", irqline);
1994
1995      m_int2 = state;
1996      break;
1997   default:
1998      logerror("upd7810_set_irq_line invalid irq line #%d\n", irqline);
1999      break;
20912000   }
20922001   /* resetting interrupt requests is done with the SKIT/SKNIT opcodes only! */
20932002}
trunk/src/emu/cpu/upd7810/upd7810.h
r241752r241753
169169   virtual void handle_timers(int cycles);
170170   virtual void upd7810_take_irq();
171171
172   void upd7810_handle_timer0(int cycles, int clkdiv);
173   void upd7810_handle_timer1(int cycles, int clkdiv);
174
172175   devcb_write_line  m_to_func;
173176   devcb_write_line  m_txd_func;
174177   devcb_read_line   m_rxd_func;
175   devcb_read_line   m_an0_func;
176   devcb_read_line   m_an1_func;
177   devcb_read_line   m_an2_func;
178   devcb_read_line   m_an3_func;
179   devcb_read_line   m_an4_func;
180   devcb_read_line   m_an5_func;
181   devcb_read_line   m_an6_func;
182   devcb_read_line   m_an7_func;
178   devcb_read8       m_an0_func;
179   devcb_read8       m_an1_func;
180   devcb_read8       m_an2_func;
181   devcb_read8       m_an3_func;
182   devcb_read8       m_an4_func;
183   devcb_read8       m_an5_func;
184   devcb_read8       m_an6_func;
185   devcb_read8       m_an7_func;
183186
184187   typedef void (upd7810_device::*opcode_func)();
185188
r241752r241753
291294   UINT8   m_co1;
292295   UINT16  m_irr;    /* interrupt request register */
293296   UINT16  m_itf;    /* interrupt test flag register */
294   int     m_int1;   /* keep track of current int1 state. Needed for 7801 irq checking. */
295   int     m_int2;   /* keep track to current int2 state. Needed for 7801 irq checking. */
297   int     m_nmi;    /* keep track of current nmi state. Needed for 7810 irq checking. */
298   int     m_int1;   /* keep track of current int1 state. Needed for irq checking. */
299   int     m_int2;   /* keep track to current int2 state. Needed for irq checking. */
296300
297301   /* internal helper variables */
298302   UINT16  m_txs;    /* transmitter shift register */
r241752r241753
308312   UINT8   m_edges;  /* rising/falling edge flag for serial I/O */
309313   UINT16  m_adcnt;  /* A/D converter cycle count */
310314   UINT8   m_adtot;  /* A/D converter total cycles per conversion */
315   UINT8   m_tmpcr;  /* temporary analog digital conversion register */
316   int     m_shdone; /* A/D converter sample and hold done */
311317   int     m_adout;  /* currently selected A/D converter output register */
312318   int     m_adin;   /* currently selected A/D converter input */
313319   int     m_adrange;/* in scan mode, A/D converter range (AN0-AN3 or AN4-AN7) */
trunk/src/emu/drivers/xtal.h
r241752r241753
133133   XTAL_14_7456MHz     = 14745600,     /* Namco System 12 & System Super 22/23 for JVS */
134134   XTAL_15MHz          = 15000000,     /* Sinclair QL, Amusco Poker */
135135   XTAL_15_36MHz       = 15360000,     /* Visual 1050 */
136   XTAL_15_4MHz        = 15400000,     /* DVK KSM */
136137   XTAL_15_468MHz      = 15468480,     /* Bank Panic h/w, Sega G80 */
137138   XTAL_15_8976MHz     = 15897600,     /* IAI Swyft */
138139   XTAL_16MHz          = 16000000,     /* Extremely common, used on 100's of PCBs */
trunk/src/emu/machine/ataflash.c
r241752r241753
202202      ide_hdd_device::process_buffer();
203203   }
204204}
205
206attotime ata_flash_pccard_device::seek_time()
207{
208   return attotime::zero;
209}
trunk/src/emu/machine/ataflash.h
r241752r241753
2626   virtual void device_start();
2727   virtual void device_reset();
2828
29   virtual attotime seek_time();
2930   virtual void process_command();
3031   virtual void process_buffer();
3132   virtual bool is_ready();
trunk/src/emu/machine/i6300esb.c
r0r241753
1#include "i6300esb.h"
2
3const device_type I6300ESB_WATCHDOG = &device_creator<i6300esb_watchdog_device>;
4const device_type I6300ESB_LPC      = &device_creator<i6300esb_lpc_device>;
5
6DEVICE_ADDRESS_MAP_START(map, 32, i6300esb_watchdog_device)
7ADDRESS_MAP_END
8
9i6300esb_watchdog_device::i6300esb_watchdog_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
10   : pci_device(mconfig, I6300ESB_WATCHDOG, "i6300ESB southbridge watchdog", tag, owner, clock, "i6300esb_watchdog", __FILE__)
11{
12}
13
14void i6300esb_watchdog_device::device_start()
15{
16   pci_device::device_start();
17   add_map(16, M_MEM, FUNC(i6300esb_watchdog_device::map));
18}
19
20void i6300esb_watchdog_device::device_reset()
21{
22   pci_device::device_reset();
23}
24
25
26DEVICE_ADDRESS_MAP_START(config_map, 32, i6300esb_lpc_device)
27   AM_RANGE(0x58, 0x5b) AM_READWRITE  (gpio_base_r, gpio_base_w)
28   AM_RANGE(0x5c, 0x5f) AM_READWRITE8 (gpio_cntl_r, gpio_cntl_w, 0x000000ff)
29   AM_RANGE(0xe4, 0xe7) AM_READWRITE16(gen1_dec_r,  gen1_dec_w,  0x0000ffff)
30   AM_RANGE(0xe4, 0xe7) AM_READWRITE16(lpc_en_r,    lpc_en_w,    0xffff0000)
31   AM_RANGE(0xe8, 0xeb) AM_READWRITE  (fwh_sel1_r,  fwh_sel1_w)
32
33   AM_INHERIT_FROM(pci_device::config_map)
34ADDRESS_MAP_END
35
36
37i6300esb_lpc_device::i6300esb_lpc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
38   : pci_device(mconfig, I6300ESB_LPC, "i6300ESB southbridge ISA/LPC bridge", tag, owner, clock, "i6300esb_lpc", __FILE__)
39{
40}
41
42void i6300esb_lpc_device::device_start()
43{
44   pci_device::device_start();
45}
46
47void i6300esb_lpc_device::device_reset()
48{
49   pci_device::device_reset();
50   gpio_base = 0;
51   gpio_cntl = 0x00;
52   gen1_dec = 0x0000;
53   lpc_en = 0x0000;
54   fwh_sel1 = 0x00112233;
55}
56
57READ32_MEMBER (i6300esb_lpc_device::gpio_base_r)
58{
59   return gpio_base | 1;
60}
61
62WRITE32_MEMBER(i6300esb_lpc_device::gpio_base_w)
63{
64   COMBINE_DATA(&gpio_base);
65   gpio_base &= 0x0000ffc0;
66   logerror("%s: gpio_base = %08x\n", tag(), gpio_base);
67}
68
69READ8_MEMBER  (i6300esb_lpc_device::gpio_cntl_r)
70{
71   return gpio_cntl;
72}
73
74WRITE8_MEMBER (i6300esb_lpc_device::gpio_cntl_w)
75{
76   COMBINE_DATA(&gpio_cntl);
77   logerror("%s: gpio_cntl = %02x\n", tag(), gpio_cntl);
78}
79
80READ16_MEMBER (i6300esb_lpc_device::gen1_dec_r)
81{
82   return gen1_dec;
83}
84
85WRITE16_MEMBER(i6300esb_lpc_device::gen1_dec_w)
86{
87   COMBINE_DATA(&gen1_dec);
88   logerror("%s: gen1_dec = %04x\n", tag(), gen1_dec);
89}
90
91READ16_MEMBER (i6300esb_lpc_device::lpc_en_r)
92{
93   return lpc_en;
94}
95
96WRITE16_MEMBER(i6300esb_lpc_device::lpc_en_w)
97{
98   COMBINE_DATA(&lpc_en);
99   logerror("%s: lpc_en = %04x\n", tag(), lpc_en);
100}
101
102READ32_MEMBER (i6300esb_lpc_device::fwh_sel1_r)
103{
104   return fwh_sel1;
105}
106
107WRITE32_MEMBER(i6300esb_lpc_device::fwh_sel1_w)
108{
109   COMBINE_DATA(&fwh_sel1);
110   logerror("%s: fwh_sel1 = %08x\n", tag(), fwh_sel1);
111}
112
113void i6300esb_lpc_device::map_extra(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
114                           UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space)
115{
116   memory_space->install_rom(0xfff00000, 0xffffffff, m_region->base());
117   memory_space->install_rom(0x000f0000, 0x000fffff, m_region->base()+0xf0000);
118}
119
trunk/src/emu/machine/i6300esb.h
r0r241753
1// Intel i6300ESB southbridge
2
3#ifndef I6300ESB_H
4#define I6300ESB_H
5
6#include "pci.h"
7
8#define MCFG_I6300ESB_LPC_ADD(_tag) \
9   MCFG_PCI_DEVICE_ADD(_tag, I6300ESB_LPC, 0x808625a1, 0x02, 0x060100, 0x00000000)
10
11#define MCFG_I6300ESB_WATCHDOG_ADD(_tag, _subdevice_id) \
12   MCFG_PCI_DEVICE_ADD(_tag, I6300ESB_WATCHDOG, 0x808625ab, 0x02, 0x088000, _subdevice_id)
13
14class i6300esb_lpc_device : public pci_device {
15public:
16   i6300esb_lpc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
17
18   virtual void map_extra(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
19                     UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space);
20
21   virtual DECLARE_ADDRESS_MAP(config_map, 32);
22
23protected:
24   virtual void device_start();
25   virtual void device_reset();
26
27private:
28   UINT32 gpio_base, fwh_sel1;
29   UINT16 gen1_dec, lpc_en;
30   UINT8 gpio_cntl;
31
32   DECLARE_READ32_MEMBER (gpio_base_r); // 58
33   DECLARE_WRITE32_MEMBER(gpio_base_w);
34   DECLARE_READ8_MEMBER  (gpio_cntl_r); // 5c
35   DECLARE_WRITE8_MEMBER (gpio_cntl_w);
36
37   DECLARE_READ16_MEMBER (gen1_dec_r);  // e4
38   DECLARE_WRITE16_MEMBER(gen1_dec_w);
39   DECLARE_READ16_MEMBER (lpc_en_r);  // e6
40   DECLARE_WRITE16_MEMBER(lpc_en_w);
41   DECLARE_READ32_MEMBER (fwh_sel1_r);  // e8
42   DECLARE_WRITE32_MEMBER(fwh_sel1_w);
43};
44
45class i6300esb_watchdog_device : public pci_device {
46public:
47   i6300esb_watchdog_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
48
49protected:
50   virtual void device_start();
51   virtual void device_reset();
52
53private:
54   DECLARE_ADDRESS_MAP(map, 32);
55};
56
57extern const device_type I6300ESB_LPC;
58extern const device_type I6300ESB_WATCHDOG;
59
60#endif
trunk/src/emu/machine/i82541.c
r0r241753
1#include "i82541.h"
2
3const device_type I82541 = &device_creator<i82541_device>;
4
5DEVICE_ADDRESS_MAP_START(registers_map, 32, i82541_device)
6ADDRESS_MAP_END
7
8DEVICE_ADDRESS_MAP_START(flash_map, 32, i82541_device)
9ADDRESS_MAP_END
10
11DEVICE_ADDRESS_MAP_START(registers_io_map, 32, i82541_device)
12ADDRESS_MAP_END
13
14i82541_device::i82541_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
15   : pci_device(mconfig, I82541, "I82541 ethernet controller", tag, owner, clock, "i82541", __FILE__)
16{
17}
18
19void i82541_device::device_start()
20{
21   pci_device::device_start();
22   add_map(128*1024, M_MEM, FUNC(i82541_device::registers_map));
23   add_map(128*1024, M_MEM, FUNC(i82541_device::flash_map));
24   add_map(32,       M_IO,  FUNC(i82541_device::registers_io_map));
25}
26
27void i82541_device::device_reset()
28{
29   pci_device::device_reset();
30}
trunk/src/emu/machine/i82541.h
r0r241753
1// Intel I82541 ethernet controller
2
3#ifndef I82541_H
4#define I82541_H
5
6#include "pci.h"
7
8#define MCFG_I82541PI_ADD(_tag, _subdevice_id) \
9   MCFG_PCI_DEVICE_ADD(_tag, I82541, 0x8086107c, 0x05, 0x020000, _subdevice_id)
10
11class i82541_device : public pci_device {
12public:
13   i82541_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
14
15protected:
16   virtual void device_start();
17   virtual void device_reset();
18
19private:
20   DECLARE_ADDRESS_MAP(registers_map, 32);
21   DECLARE_ADDRESS_MAP(flash_map, 32);
22   DECLARE_ADDRESS_MAP(registers_io_map, 32);
23};
24
25extern const device_type I82541;
26
27#endif
trunk/src/emu/machine/i82875p.c
r0r241753
1#include "i82875p.h"
2
3const device_type I82875P_HOST = &device_creator<i82875p_host_device>;
4const device_type I82875P_AGP  = &device_creator<i82875p_agp_device>;
5
6DEVICE_ADDRESS_MAP_START(agp_translation_map, 32, i82875p_host_device)
7ADDRESS_MAP_END
8
9i82875p_host_device::i82875p_host_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
10   : pci_host_device(mconfig, I82875P_HOST, "i82875p northbridge", tag, owner, clock, "i82875p_host", __FILE__)
11{
12}
13
14void i82875p_host_device::set_cpu_tag(const char *_cpu_tag)
15{
16   cpu_tag = _cpu_tag;
17}
18
19void i82875p_host_device::set_ram_size(int _ram_size)
20{
21   ram_size = _ram_size;
22}
23
24void i82875p_host_device::device_start()
25{
26   pci_host_device::device_start();
27   cpu = machine().device<cpu_device>(cpu_tag);
28   memory_space = &cpu->space(AS_PROGRAM);
29   io_space = &cpu->space(AS_IO);
30
31   memory_window_start = 0;
32   memory_window_end   = 0xffffffff;
33   memory_offset       = 0;
34   io_window_start = 0;
35   io_window_end   = 0xffff;
36   io_offset       = 0;
37
38   ram.resize(ram_size/4);
39
40   // Resizeable with the apsize register
41   add_map(256*1024*1024, M_MEM, FUNC(i82875p_host_device::agp_translation_map));
42}
43
44void i82875p_host_device::device_reset()
45{
46   pci_host_device::device_reset();
47}
48
49void i82875p_host_device::map_extra(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
50                           UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space)
51{
52   io_space->install_device(0, 0xffff, *static_cast<pci_host_device *>(this), &pci_host_device::io_configuration_access_map);
53}
54
55
56
57
58i82875p_agp_device::i82875p_agp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
59   : agp_bridge_device(mconfig, I82875P_AGP, "i82875p AGP bridge", tag, owner, clock, "i82875p_agp", __FILE__)
60{
61}
62
63void i82875p_agp_device::device_start()
64{
65   agp_bridge_device::device_start();
66}
67
68void i82875p_agp_device::device_reset()
69{
70   agp_bridge_device::device_reset();
71}
trunk/src/emu/machine/i82875p.h
r0r241753
1// Intel i82875p northbridge
2
3#ifndef I82875P_H
4#define I82875P_H
5
6#include "pci.h"
7
8#define MCFG_I82875P_HOST_ADD(_tag, _subdevice_id, _cpu_tag, _ram_size)         \
9   MCFG_PCI_HOST_ADD(_tag, I82875P_HOST, 0x80862578, 0x02, _subdevice_id) \
10   downcast<i82875p_host_device *>(device)->set_cpu_tag(_cpu_tag); \
11   downcast<i82875p_host_device *>(device)->set_ram_size(_ram_size);
12
13#define MCFG_I82875P_AGP_ADD(_tag) \
14   MCFG_AGP_BRIDGE_ADD(_tag, I82875P_AGP, 0x80862579, 0x02)
15
16class i82875p_host_device : public pci_host_device {
17public:
18   i82875p_host_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
19
20   void set_cpu_tag(const char *tag);
21   void set_ram_size(int ram_size);
22
23   virtual void map_extra(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
24                     UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space);
25
26protected:
27   virtual void device_start();
28   virtual void device_reset();
29
30private:
31   DECLARE_ADDRESS_MAP(agp_translation_map, 32);
32
33   const char *cpu_tag;
34   int ram_size;
35   cpu_device *cpu;
36   dynamic_array<UINT32> ram;
37};
38
39class i82875p_agp_device : public agp_bridge_device {
40public:
41   i82875p_agp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
42
43protected:
44   virtual void device_start();
45   virtual void device_reset();
46};
47
48extern const device_type I82875P_HOST;
49extern const device_type I82875P_AGP;
50
51
52#endif
trunk/src/emu/machine/idehd.h
r241752r241753
4444
4545   virtual int read_sector(UINT32 lba, void *buffer) = 0;
4646   virtual int write_sector(UINT32 lba, const void *buffer) = 0;
47   virtual attotime seek_time();
4748
4849   void ide_build_identify_device();
4950
r241752r241753
7273   void security_error();
7374   void read_first_sector();
7475   void soft_reset();
75   attotime seek_time();
7676
7777   UINT32          m_cur_lba;
7878   UINT16          m_block_count;
r241752r241753
9393   ide_hdd_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
9494   ide_hdd_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);
9595
96   virtual int read_sector(UINT32 lba, void *buffer) { if (m_disk == NULL) return 0; return hard_disk_read(m_disk, lba, buffer); }
97   virtual int write_sector(UINT32 lba, const void *buffer) { if (m_disk == NULL) return 0; return hard_disk_write(m_disk, lba, buffer); }
98
9996protected:
10097   // device-level overrides
10198   virtual void device_start();
r241752r241753
104101   // optional information overrides
105102   virtual machine_config_constructor device_mconfig_additions() const;
106103
104   virtual int read_sector(UINT32 lba, void *buffer) { if (m_disk == NULL) return 0; return hard_disk_read(m_disk, lba, buffer); }
105   virtual int write_sector(UINT32 lba, const void *buffer) { if (m_disk == NULL) return 0; return hard_disk_write(m_disk, lba, buffer); }
107106   virtual UINT8 calculate_status();
108107
109108   chd_file       *m_handle;
trunk/src/emu/machine/lpci.c
r0r241753
1/***************************************************************************
2
3    machine/lpci.c
4
5    Legacy PCI bus
6
7    The PCI bus is a 32-bit bus introduced by Intel, so it is little endian
8
9    Control word:
10        bit 31:         Enable bit
11        bits 30-24:     Reserved
12        bits 23-16:     PCI bus number
13        bits 15-11:     PCI device number
14        bits 10- 8:     PCI function number
15        bits  7- 0:     Offset address
16
17    Standard PCI registers:
18        0x00    2   Vendor ID
19        0x02    2   Device ID
20        0x04    2   PCI Command
21        0x06    2   PCI Status
22        0x08    1   Revision ID
23        0x09    1   Programming Interface
24        0x0A    1   Subclass Code
25        0x0B    1   Class Code
26
27    Class Code/Subclass Code/Programming Interface
28        0x00XXXX    Pre-PCI 2.0 devices
29        0x000000        Non-VGA device
30        0x000101        VGA device
31        0x01XXXX    Storage Controller
32        0x010000        SCSI
33        0x0101XX        IDE
34        0x0102XX        Floppy
35        0x0103XX        IPI
36        0x0104XX        RAID
37        0x0180XX        Other
38        0x02XXXX    Network Card
39        0x020000        Ethernet
40        0x020100        Tokenring
41        0x020200        FDDI
42        0x020300        ATM
43        0x028000        Other
44        0x03XXXX    Display Controller
45        0x030000        VGA
46        0x030001        8514 Compatible
47        0x030100        XGA
48        0x038000        Other
49        0x04XXXX    Multimedia
50        0x040000        Video
51        0x040100        Audio
52        0x048000        Other
53        0x05XXXX    Memory Controller
54        0x050000        RAM
55        0x050100        Flash
56        0x058000        Other
57        0x06XXXX    Bridge
58        0x060000        Host/PCI
59        0x060100        PCI/ISA
60        0x060200        PCI/EISA
61        0x060300        PCI/Micro Channel
62        0x060400        PCI/PCI
63        0x060500        PCI/PCMCIA
64        0x060600        PCI/NuBus
65        0x060700        PCI/CardBus
66        0x068000        Other
67
68    Information on PCI vendors can be found at http://www.pcidatabase.com/
69
70***************************************************************************/
71
72#include "emu.h"
73#include "machine/lpci.h"
74
75#define LOG_PCI 0
76
77//**************************************************************************
78//  GLOBAL VARIABLES
79//**************************************************************************
80
81const device_type PCI_BUS_LEGACY = &device_creator<pci_bus_legacy_device>;
82
83//**************************************************************************
84//  LIVE DEVICE
85//**************************************************************************
86
87//-------------------------------------------------
88//  pci_bus_legacy_device - constructor
89//-------------------------------------------------
90pci_bus_legacy_device::pci_bus_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
91      device_t(mconfig, PCI_BUS_LEGACY, "PCI Bus Legacy", tag, owner, clock, "pci_bus_legacy", __FILE__),
92      m_father(NULL)
93{
94   for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++) {
95      m_devtag[i]= NULL;
96      m_read_callback[i] = NULL;
97      m_write_callback[i] = NULL;
98   }
99   m_siblings_count = 0;
100}
101
102/***************************************************************************
103    INLINE FUNCTIONS
104***************************************************************************/
105
106READ32_MEMBER( pci_bus_legacy_device::read )
107{
108   UINT32 result = 0xffffffff;
109   int function, reg;
110
111   offset %= 2;
112
113   switch (offset)
114   {
115      case 0:
116         result = m_address;
117         break;
118
119      case 1:
120         if (m_devicenum != -1)
121         {
122            pci_read_func read = m_busnumaddr->m_read_callback[m_devicenum];
123            if (read != NULL)
124            {
125               function = (m_address >> 8) & 0x07;
126               reg = (m_address >> 0) & 0xfc;
127               result = (*read)(m_busnumaddr, m_busnumaddr->m_device[m_devicenum], function, reg, mem_mask);
128            }
129         }
130         break;
131   }
132
133   if (LOG_PCI)
134      logerror("read('%s'): offset=%d result=0x%08X\n", tag(), offset, result);
135
136   return result;
137}
138
139
140
141pci_bus_legacy_device *pci_bus_legacy_device::pci_search_bustree(int busnum, int devicenum, pci_bus_legacy_device *pcibus)
142{
143   int a;
144   pci_bus_legacy_device *ret;
145
146   if (pcibus->m_busnum == busnum)
147   {
148      return pcibus;
149   }
150   for (a = 0; a < pcibus->m_siblings_count; a++)
151   {
152      ret = pci_search_bustree(busnum, devicenum, pcibus->m_siblings[a]);
153      if (ret != NULL)
154         return ret;
155   }
156   return NULL;
157}
158
159
160
161WRITE32_MEMBER( pci_bus_legacy_device::write )
162{
163   offset %= 2;
164
165   if (LOG_PCI)
166      logerror("write('%s'): offset=%d data=0x%08X\n", tag(), offset, data);
167
168   switch (offset)
169   {
170      case 0:
171         m_address = data;
172
173         /* lookup current device */
174         if (m_address & 0x80000000)
175         {
176            int busnum = (m_address >> 16) & 0xff;
177            int devicenum = (m_address >> 11) & 0x1f;
178            m_busnumaddr = pci_search_bustree(busnum, devicenum, this);
179            if (m_busnumaddr != NULL)
180            {
181               m_busnumber = busnum;
182               m_devicenum = devicenum;
183            }
184            else
185               m_devicenum = -1;
186            if (LOG_PCI)
187               logerror("  bus:%d device:%d\n", busnum, devicenum);
188         }
189         break;
190
191      case 1:
192         if (m_devicenum != -1)
193         {
194            pci_write_func write = m_busnumaddr->m_write_callback[m_devicenum];
195            if (write != NULL)
196            {
197               int function = (m_address >> 8) & 0x07;
198               int reg = (m_address >> 0) & 0xfc;
199               (*write)(m_busnumaddr, m_busnumaddr->m_device[m_devicenum], function, reg, data, mem_mask);
200            }
201            if (LOG_PCI)
202               logerror("  function:%d register:%d\n", (m_address >> 8) & 0x07, (m_address >> 0) & 0xfc);
203         }
204         break;
205   }
206}
207
208
209
210READ64_MEMBER(pci_bus_legacy_device::read_64be)
211{
212   UINT64 result = 0;
213   mem_mask = FLIPENDIAN_INT64(mem_mask);
214   if (ACCESSING_BITS_0_31)
215      result |= (UINT64)read(space, offset * 2 + 0, mem_mask >> 0) << 0;
216   if (ACCESSING_BITS_32_63)
217      result |= (UINT64)read(space, offset * 2 + 1, mem_mask >> 32) << 32;
218   return FLIPENDIAN_INT64(result);
219}
220
221WRITE64_MEMBER(pci_bus_legacy_device::write_64be)
222{
223   data = FLIPENDIAN_INT64(data);
224   mem_mask = FLIPENDIAN_INT64(mem_mask);
225   if (ACCESSING_BITS_0_31)
226      write(space, offset * 2 + 0, data >> 0, mem_mask >> 0);
227   if (ACCESSING_BITS_32_63)
228      write(space, offset * 2 + 1, data >> 32, mem_mask >> 32);
229}
230
231
232void pci_bus_legacy_device::add_sibling(pci_bus_legacy_device *sibling, int busnum)
233{
234   m_siblings[m_siblings_count] = sibling;
235   m_siblings_busnum[m_siblings_count] = busnum;
236   m_siblings_count++;
237}
238
239
240//-------------------------------------------------
241//  device_post_load - handle updating after a
242//  restore
243//-------------------------------------------------
244
245void pci_bus_legacy_device::device_post_load()
246{
247   if (m_devicenum != -1)
248   {
249      m_busnumaddr = pci_search_bustree(m_busnumber, m_devicenum, this);
250   }
251}
252
253//-------------------------------------------------
254//  device_start - device-specific startup
255//-------------------------------------------------
256
257void pci_bus_legacy_device::device_start()
258{
259   /* store a pointer back to the device */
260   m_devicenum = -1;
261
262   /* find all our devices */
263   for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++)
264      if (m_devtag[i] != NULL)
265         m_device[i] = machine().device(m_devtag[i]);
266
267   if (m_father != NULL) {
268      pci_bus_legacy_device *father = machine().device<pci_bus_legacy_device>(m_father);
269      if (father)
270         father->add_sibling(this, m_busnum);
271   }
272
273   /* register pci states */
274   save_item(NAME(m_address));
275   save_item(NAME(m_devicenum));
276   save_item(NAME(m_busnum));
277}
278
279
280//-------------------------------------------------
281//  device_reset - device-specific reset
282//-------------------------------------------------
283
284void pci_bus_legacy_device::device_reset()
285{
286   /* reset the drive state */
287   m_devicenum = -1;
288   m_address = 0;
289}
trunk/src/emu/machine/lpci.h
r0r241753
1/***************************************************************************
2
3    machine/lpci.h
4
5    Legacy PCI bus
6
7***************************************************************************/
8
9#ifndef LPCI_H
10#define LPCI_H
11
12//**************************************************************************
13//  TYPE DEFINITIONS
14//**************************************************************************
15
16typedef UINT32 (*pci_read_func)(device_t *pcibus, device_t *device, int function, int reg, UINT32 mem_mask);
17typedef void (*pci_write_func)(device_t *pcibus, device_t *device, int function, int reg, UINT32 data, UINT32 mem_mask);
18
19// ======================> pci_bus_legacy_device
20
21class pci_bus_legacy_device :  public device_t
22{
23public:
24   // construction/destruction
25   pci_bus_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
26
27   DECLARE_READ32_MEMBER( read );
28   DECLARE_WRITE32_MEMBER( write );
29
30   DECLARE_READ64_MEMBER( read_64be );
31   DECLARE_WRITE64_MEMBER( write_64be );
32
33   void set_busnum(int busnum) { m_busnum = busnum; }
34   void set_father(const char *father) { m_father = father; }
35   void set_device(int num, const char *tag, pci_read_func read_func, pci_write_func write_func) {
36      m_devtag[num] = tag; m_read_callback[num] = read_func; m_write_callback[num] = write_func; }
37
38   pci_bus_legacy_device *pci_search_bustree(int busnum, int devicenum, pci_bus_legacy_device *pcibus);
39   void add_sibling(pci_bus_legacy_device *sibling, int busnum);
40
41protected:
42   // device-level overrides
43   virtual void device_start();
44   virtual void device_reset();
45   virtual void device_post_load();
46
47private:
48   UINT8               m_busnum;
49   const char *        m_devtag[32];
50   pci_read_func       m_read_callback[32];
51   pci_write_func      m_write_callback[32];
52   const char *        m_father;
53   device_t *          m_device[32];
54   pci_bus_legacy_device * m_siblings[8];
55   UINT8               m_siblings_busnum[8];
56   int                 m_siblings_count;
57
58   offs_t              m_address;
59   INT8                m_devicenum; // device number we are addressing
60   INT8                m_busnumber; // pci bus number we are addressing
61   pci_bus_legacy_device * m_busnumaddr; // pci bus we are addressing
62};
63
64// device type definition
65extern const device_type PCI_BUS_LEGACY;
66
67
68/***************************************************************************
69    DEVICE CONFIGURATION MACROS
70***************************************************************************/
71
72#define MCFG_PCI_BUS_LEGACY_ADD(_tag, _busnum) \
73   MCFG_DEVICE_ADD(_tag, PCI_BUS_LEGACY, 0) \
74   downcast<pci_bus_legacy_device *>(device)->set_busnum(_busnum);
75#define MCFG_PCI_BUS_LEGACY_DEVICE(_devnum, _devtag, _configread, _configwrite) \
76   downcast<pci_bus_legacy_device *>(device)->set_device(_devnum, _devtag,_configread,_configwrite);
77#define MCFG_PCI_BUS_LEGACY_SIBLING(_father_tag) \
78   downcast<pci_bus_legacy_device *>(device)->set_father(_father_tag);
79
80
81#endif /* PCI_H */
trunk/src/emu/machine/machine.mak
r241752r241753
12211221
12221222#-------------------------------------------------
12231223#
1224#@src/emu/machine/lpci.h,MACHINES += LPCI
1225#-------------------------------------------------
1226
1227ifneq ($(filter LPCI,$(MACHINES)),)
1228MACHINEOBJS += $(MACHINEOBJ)/lpci.o
1229endif
1230
1231#-------------------------------------------------
1232#
12241233#@src/emu/machine/pci.h,MACHINES += PCI
12251234#-------------------------------------------------
12261235
12271236ifneq ($(filter PCI,$(MACHINES)),)
12281237MACHINEOBJS += $(MACHINEOBJ)/pci.o
1238MACHINEOBJS += $(MACHINEOBJ)/pci-usb.o
1239MACHINEOBJS += $(MACHINEOBJ)/pci-sata.o
1240MACHINEOBJS += $(MACHINEOBJ)/pci-apic.o
1241MACHINEOBJS += $(MACHINEOBJ)/pci-smbus.o
1242MACHINEOBJS += $(MACHINEOBJ)/i82541.o
1243MACHINEOBJS += $(MACHINEOBJ)/i82875p.o
1244MACHINEOBJS += $(MACHINEOBJ)/i6300esb.o
12291245endif
12301246
12311247#-------------------------------------------------
trunk/src/emu/machine/pc_lpt.c
r241752r241753
66
77#include "emu.h"
88#include "pc_lpt.h"
9#include "bus/centronics/covox.h"
10#include "bus/centronics/printer.h"
119
1210
1311const device_type PC_LPT = &device_creator<pc_lpt_device>;
r241752r241753
4644   m_cent_ctrl_out->write(m_control);
4745}
4846
49static SLOT_INTERFACE_START(pc_centronics)
50   SLOT_INTERFACE("printer", CENTRONICS_PRINTER)
51   SLOT_INTERFACE("covox", CENTRONICS_COVOX)
52   SLOT_INTERFACE("covox_stereo", CENTRONICS_COVOX_STEREO)
53SLOT_INTERFACE_END
54
5547static MACHINE_CONFIG_FRAGMENT( pc_lpt )
56   MCFG_CENTRONICS_ADD("centronics", pc_centronics, "printer")
48   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
5749   MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in")
5850   MCFG_CENTRONICS_FAULT_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit3))
5951   MCFG_CENTRONICS_SELECT_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit4))
trunk/src/emu/machine/pci-apic.c
r0r241753
1#include "pci-apic.h"
2
3const device_type APIC = &device_creator<apic_device>;
4
5apic_device::apic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
6   : pci_device(mconfig, APIC, "I/O Advanced Programmable Interrupt Controller", tag, owner, clock, "apic", __FILE__)
7{
8}
9
10void apic_device::device_start()
11{
12   pci_device::device_start();
13}
14
15void apic_device::device_reset()
16{
17   pci_device::device_reset();
18}
trunk/src/emu/machine/pci-apic.h
r0r241753
1#ifndef PCI_APIC_H
2#define PCI_APIC_H
3
4#include "pci.h"
5
6#define MCFG_APIC_ADD(_tag, _main_id, _revision, _subdevice_id) \
7   MCFG_PCI_DEVICE_ADD(_tag, APIC, _main_id, _revision, 0x0c0320, _subdevice_id)
8
9class apic_device : public pci_device {
10public:
11   apic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
12
13protected:
14   virtual void device_start();
15   virtual void device_reset();
16};
17
18extern const device_type APIC;
19
20#endif
trunk/src/emu/machine/pci-sata.c
r0r241753
1#include "pci-sata.h"
2
3const device_type SATA = &device_creator<sata_device>;
4
5sata_device::sata_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
6   : pci_device(mconfig, SATA, "SATA AHCI interface", tag, owner, clock, "sata", __FILE__)
7{
8}
9
10DEVICE_ADDRESS_MAP_START(primary_command_map, 32, sata_device)
11ADDRESS_MAP_END
12
13DEVICE_ADDRESS_MAP_START(primary_control_map, 32, sata_device)
14ADDRESS_MAP_END
15
16DEVICE_ADDRESS_MAP_START(secondary_command_map, 32, sata_device)
17ADDRESS_MAP_END
18
19DEVICE_ADDRESS_MAP_START(secondary_control_map, 32, sata_device)
20ADDRESS_MAP_END
21
22DEVICE_ADDRESS_MAP_START(bus_master_map, 32, sata_device)
23ADDRESS_MAP_END
24
25DEVICE_ADDRESS_MAP_START(ide_command_posting_map, 32, sata_device)
26ADDRESS_MAP_END
27
28
29void sata_device::device_start()
30{
31   pci_device::device_start();
32
33   add_map(8,    M_IO,  FUNC(sata_device::primary_command_map));
34   add_map(4,    M_IO,  FUNC(sata_device::primary_control_map));
35   add_map(8,    M_IO,  FUNC(sata_device::secondary_command_map));
36   add_map(4,    M_IO,  FUNC(sata_device::secondary_control_map));
37   add_map(16,   M_IO,  FUNC(sata_device::bus_master_map));
38   add_map(1024, M_MEM, FUNC(sata_device::ide_command_posting_map));
39}
40
41void sata_device::device_reset()
42{
43   pci_device::device_reset();
44}
trunk/src/emu/machine/pci-sata.h
r0r241753
1#ifndef PCI_SATA_H
2#define PCI_SATA_H
3
4#include "pci.h"
5
6#define MCFG_SATA_ADD(_tag, _main_id, _revision, _subdevice_id) \
7   MCFG_PCI_DEVICE_ADD(_tag, SATA, _main_id, _revision, 0x01018a, _subdevice_id)
8
9class sata_device : public pci_device {
10public:
11   sata_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
12
13protected:
14   virtual void device_start();
15   virtual void device_reset();
16
17private:
18   DECLARE_ADDRESS_MAP(primary_command_map, 32);
19   DECLARE_ADDRESS_MAP(primary_control_map, 32);
20   DECLARE_ADDRESS_MAP(secondary_command_map, 32);
21   DECLARE_ADDRESS_MAP(secondary_control_map, 32);
22   DECLARE_ADDRESS_MAP(bus_master_map, 32);
23   DECLARE_ADDRESS_MAP(ide_command_posting_map, 32);
24};
25
26extern const device_type SATA;
27
28#endif
trunk/src/emu/machine/pci-smbus.c
r0r241753
1#include "pci-smbus.h"
2
3const device_type SMBUS = &device_creator<smbus_device>;
4
5DEVICE_ADDRESS_MAP_START(map, 32, smbus_device)
6ADDRESS_MAP_END
7
8smbus_device::smbus_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
9   : pci_device(mconfig, SMBUS, "SMBUS interface", tag, owner, clock, "smbus", __FILE__)
10{
11}
12
13void smbus_device::device_start()
14{
15   pci_device::device_start();
16   add_map(32, M_IO, FUNC(smbus_device::map));
17}
18
19void smbus_device::device_reset()
20{
21   pci_device::device_reset();
22}
trunk/src/emu/machine/pci-smbus.h
r0r241753
1#ifndef PCI_SMBUS_H
2#define PCI_SMBUS_H
3
4#include "pci.h"
5
6#define MCFG_SMBUS_ADD(_tag, _main_id, _revision, _subdevice_id) \
7   MCFG_PCI_DEVICE_ADD(_tag, SMBUS, _main_id, _revision, 0x0c0500, _subdevice_id)
8
9class smbus_device : public pci_device {
10public:
11   smbus_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
12
13protected:
14   virtual void device_start();
15   virtual void device_reset();
16
17private:
18   DECLARE_ADDRESS_MAP(map, 32);
19};
20
21extern const device_type SMBUS;
22
23#endif
trunk/src/emu/machine/pci-usb.c
r0r241753
1#include "pci-usb.h"
2
3const device_type USB_UHCI = &device_creator<usb_uhci_device>;
4const device_type USB_EHCI = &device_creator<usb_ehci_device>;
5
6DEVICE_ADDRESS_MAP_START(map, 32, usb_uhci_device)
7ADDRESS_MAP_END
8
9usb_uhci_device::usb_uhci_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
10   : pci_device(mconfig, USB_UHCI, "USB 1.1 UHCI interface", tag, owner, clock, "usb_uhci", __FILE__)
11{
12}
13
14void usb_uhci_device::device_start()
15{
16   pci_device::device_start();
17   add_map(32, M_IO, FUNC(usb_uhci_device::map));
18}
19
20void usb_uhci_device::device_reset()
21{
22   pci_device::device_reset();
23}
24
25DEVICE_ADDRESS_MAP_START(map, 32, usb_ehci_device)
26ADDRESS_MAP_END
27
28usb_ehci_device::usb_ehci_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
29   : pci_device(mconfig, USB_EHCI, "USB 2.0 EHCI interface", tag, owner, clock, "usb_ehci", __FILE__)
30{
31}
32
33void usb_ehci_device::device_start()
34{
35   pci_device::device_start();
36   add_map(1024, M_MEM, FUNC(usb_ehci_device::map));
37}
38
39void usb_ehci_device::device_reset()
40{
41   pci_device::device_reset();
42}
trunk/src/emu/machine/pci-usb.h
r0r241753
1#ifndef PCI_USB_H
2#define PCI_USB_H
3
4#include "pci.h"
5
6#define MCFG_USB_UHCI_ADD(_tag, _main_id, _revision, _subdevice_id) \
7   MCFG_PCI_DEVICE_ADD(_tag, USB_UHCI, _main_id, _revision, 0x0c0300, _subdevice_id)
8
9#define MCFG_USB_EHCI_ADD(_tag, _main_id, _revision, _subdevice_id) \
10   MCFG_PCI_DEVICE_ADD(_tag, USB_EHCI, _main_id, _revision, 0x0c0320, _subdevice_id)
11
12class usb_uhci_device : public pci_device {
13public:
14   usb_uhci_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
15
16protected:
17   virtual void device_start();
18   virtual void device_reset();
19
20private:
21   DECLARE_ADDRESS_MAP(map, 32);
22};
23
24class usb_ehci_device : public pci_device {
25public:
26   usb_ehci_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
27
28protected:
29   virtual void device_start();
30   virtual void device_reset();
31
32private:
33   DECLARE_ADDRESS_MAP(map, 32);
34};
35
36extern const device_type USB_UHCI;
37extern const device_type USB_EHCI;
38
39#endif
trunk/src/emu/machine/pci.c
r241752r241753
1/***************************************************************************
1#include "pci.h"
22
3    machine/pci.c
3const device_type PCI_ROOT   = &device_creator<pci_root_device>;
4const device_type PCI_BRIDGE = &device_creator<pci_bridge_device>;
45
5    PCI bus
6DEVICE_ADDRESS_MAP_START(config_map, 32, pci_device)
7ADDRESS_MAP_END
68
7    The PCI bus is a 32-bit bus introduced by Intel, so it is little endian
9pci_device::pci_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)
10   : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
11{
12   main_id = 0xffffffff;
13   revision = 0x00;
14   pclass = 0xffffff;
15   subdevice_id = 0xffffffff;
16}
817
9    Control word:
10        bit 31:         Enable bit
11        bits 30-24:     Reserved
12        bits 23-16:     PCI bus number
13        bits 15-11:     PCI device number
14        bits 10- 8:     PCI function number
15        bits  7- 0:     Offset address
18void pci_device::set_ids(UINT32 _main_id, UINT8 _revision, UINT32 _pclass, UINT32 _subdevice_id)
19{
20   main_id = _main_id;
21   revision = _revision;
22   pclass = _pclass;
23   subdevice_id = _subdevice_id;
24}
1625
17    Standard PCI registers:
18        0x00    2   Vendor ID
19        0x02    2   Device ID
20        0x04    2   PCI Command
21        0x06    2   PCI Status
22        0x08    1   Revision ID
23        0x09    1   Programming Interface
24        0x0A    1   Subclass Code
25        0x0B    1   Class Code
26void pci_device::device_start()
27{
28}
2629
27    Class Code/Subclass Code/Programming Interface
28        0x00XXXX    Pre-PCI 2.0 devices
29        0x000000        Non-VGA device
30        0x000101        VGA device
31        0x01XXXX    Storage Controller
32        0x010000        SCSI
33        0x0101XX        IDE
34        0x0102XX        Floppy
35        0x0103XX        IPI
36        0x0104XX        RAID
37        0x0180XX        Other
38        0x02XXXX    Network Card
39        0x020000        Ethernet
40        0x020100        Tokenring
41        0x020200        FDDI
42        0x020300        ATM
43        0x028000        Other
44        0x03XXXX    Display Controller
45        0x030000        VGA
46        0x030001        8514 Compatible
47        0x030100        XGA
48        0x038000        Other
49        0x04XXXX    Multimedia
50        0x040000        Video
51        0x040100        Audio
52        0x048000        Other
53        0x05XXXX    Memory Controller
54        0x050000        RAM
55        0x050100        Flash
56        0x058000        Other
57        0x06XXXX    Bridge
58        0x060000        Host/PCI
59        0x060100        PCI/ISA
60        0x060200        PCI/EISA
61        0x060300        PCI/Micro Channel
62        0x060400        PCI/PCI
63        0x060500        PCI/PCMCIA
64        0x060600        PCI/NuBus
65        0x060700        PCI/CardBus
66        0x068000        Other
30void pci_device::device_reset()
31{
32}
6733
68    Information on PCI vendors can be found at http://www.pcidatabase.com/
34void pci_device::scan_sub_devices(pci_device **devices, dynamic_array<pci_device *> &all, dynamic_array<pci_device *> &bridges, device_t *root)
35{
36}
6937
70***************************************************************************/
38void pci_device::reset_all_mappings()
39{
40}
7141
72#include "emu.h"
73#include "machine/pci.h"
42void pci_device::map_device(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
43                     UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space)
44{
45   map_extra(memory_window_start, memory_window_end, memory_offset, memory_space,
46           io_window_start, io_window_end, io_offset, io_space);
47}
7448
75#define LOG_PCI 0
49void pci_device::map_extra(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
50                     UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space)
51{
52}
7653
77//**************************************************************************
78//  GLOBAL VARIABLES
79//**************************************************************************
54void pci_device::map_config(UINT8 device, address_space *config_space)
55{
56   config_space->install_device(device << 12, (device << 12) | 0xfff, *this, &pci_device::config_map);
57}
8058
81const device_type PCI_BUS_LEGACY = &device_creator<pci_bus_legacy_device>;
59void pci_device::add_map(UINT64 size, int flags, address_map_delegate &map)
60{
61   logerror("Device %s (%s) has 0x%" I64FMT "x bytes of %s named %s\n", tag(), name(), size, flags & M_IO ? "io" : "memory", map.name());
62}
8263
83//**************************************************************************
84//  LIVE DEVICE
85//**************************************************************************
64agp_device::agp_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)
65   : pci_device(mconfig, type, name, tag, owner, clock, shortname, source)
66{
67}
8668
87//-------------------------------------------------
88//  pci_bus_legacy_device - constructor
89//-------------------------------------------------
90pci_bus_legacy_device::pci_bus_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
91      device_t(mconfig, PCI_BUS_LEGACY, "PCI Bus Legacy", tag, owner, clock, "pci_bus_legacy", __FILE__),
92      m_father(NULL)
69void agp_device::device_start()
9370{
94   for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++) {
95      m_devtag[i]= NULL;
96      m_read_callback[i] = NULL;
97      m_write_callback[i] = NULL;
98   }
99   m_siblings_count = 0;
71   pci_device::device_start();
10072}
10173
102/***************************************************************************
103    INLINE FUNCTIONS
104***************************************************************************/
105
106READ32_MEMBER( pci_bus_legacy_device::read )
74void agp_device::device_reset()
10775{
108   UINT32 result = 0xffffffff;
109   int function, reg;
76   pci_device::device_reset();
77}
11078
111   offset %= 2;
11279
113   switch (offset)
114   {
115      case 0:
116         result = m_address;
117         break;
11880
119      case 1:
120         if (m_devicenum != -1)
121         {
122            pci_read_func read = m_busnumaddr->m_read_callback[m_devicenum];
123            if (read != NULL)
124            {
125               function = (m_address >> 8) & 0x07;
126               reg = (m_address >> 0) & 0xfc;
127               result = (*read)(m_busnumaddr, m_busnumaddr->m_device[m_devicenum], function, reg, mem_mask);
128            }
129         }
130         break;
131   }
81pci_bridge_device::pci_bridge_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
82   : pci_device(mconfig, PCI_BRIDGE, "PCI-PCI Bridge", tag, owner, clock, "pci_bridge", __FILE__),
83     device_memory_interface(mconfig, *this),
84     configure_space_config("configuration_space", ENDIANNESS_LITTLE, 32, 20)
85{
86}
13287
133   if (LOG_PCI)
134      logerror("read('%s'): offset=%d result=0x%08X\n", tag(), offset, result);
88pci_bridge_device::pci_bridge_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)
89   : pci_device(mconfig, type, name, tag, owner, clock, shortname, source),
90     device_memory_interface(mconfig, *this),
91     configure_space_config("configuration_space", ENDIANNESS_LITTLE, 32, 20)
92{
93}
13594
136   return result;
95const address_space_config *pci_bridge_device::memory_space_config(address_spacenum spacenum) const
96{
97   return spacenum == AS_PROGRAM ? &configure_space_config : NULL;
13798}
13899
100device_t *pci_bridge_device::bus_root()
101{
102   return this;
103}
139104
140
141pci_bus_legacy_device *pci_bus_legacy_device::pci_search_bustree(int busnum, int devicenum, pci_bus_legacy_device *pcibus)
105void pci_bridge_device::device_start()
142106{
143   int a;
144   pci_bus_legacy_device *ret;
107   pci_device::device_start();
145108
146   if (pcibus->m_busnum == busnum)
147   {
148      return pcibus;
109   for(int i=0; i<32*8; i++)
110      sub_devices[i] = NULL;
111
112   for(device_t *d = bus_root()->first_subdevice(); d != NULL; d = d->next()) {
113      if(d == this)
114         continue;
115      const char *t = d->tag();
116      int l = strlen(t);
117      if(l <= 4 || t[l-5] != ':' || t[l-2] != '.')
118         continue;
119      int id = strtol(t+l-4, 0, 16);
120      int fct = t[l-1] - '0';
121      sub_devices[(id << 3) | fct] = downcast<pci_device *>(d);
149122   }
150   for (a = 0; a < pcibus->m_siblings_count; a++)
151   {
152      ret = pci_search_bustree(busnum, devicenum, pcibus->m_siblings[a]);
153      if (ret != NULL)
154         return ret;
155   }
156   return NULL;
123   for(int i=0; i<32*8; i++)
124      if(sub_devices[i]) {
125         all_devices.append(sub_devices[i]);
126         pci_bridge_device *bridge = dynamic_cast<pci_bridge_device *>(sub_devices[i]);
127         if(bridge)
128            all_bridges.append(bridge);
129      }
157130}
158131
132void pci_bridge_device::device_reset()
133{
134   pci_device::device_reset();
135   regenerate_config_mapping();
136}
159137
138void pci_bridge_device::reset_all_mappings()
139{
140   for(int i=0; i != all_devices.count(); i++)
141      all_devices[i]->reset_all_mappings();
142}
160143
161WRITE32_MEMBER( pci_bus_legacy_device::write )
144
145void pci_bridge_device::map_device(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
146                           UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space)
162147{
163   offset %= 2;
148   for(int i = all_devices.count()-1; i>=0; i--)
149      all_devices[i]->map_device(memory_window_start, memory_window_end, memory_offset, memory_space,
150                           io_window_start, io_window_end, io_offset, io_space);
164151
165   if (LOG_PCI)
166      logerror("write('%s'): offset=%d data=0x%08X\n", tag(), offset, data);
152   map_extra(memory_window_start, memory_window_end, memory_offset, memory_space,
153           io_window_start, io_window_end, io_offset, io_space);
154}
167155
168   switch (offset)
169   {
170      case 0:
171         m_address = data;
172156
173         /* lookup current device */
174         if (m_address & 0x80000000)
175         {
176            int busnum = (m_address >> 16) & 0xff;
177            int devicenum = (m_address >> 11) & 0x1f;
178            m_busnumaddr = pci_search_bustree(busnum, devicenum, this);
179            if (m_busnumaddr != NULL)
180            {
181               m_busnumber = busnum;
182               m_devicenum = devicenum;
183            }
184            else
185               m_devicenum = -1;
186            if (LOG_PCI)
187               logerror("  bus:%d device:%d\n", busnum, devicenum);
188         }
189         break;
157void pci_bridge_device::regenerate_config_mapping()
158{
159   address_space *config_space = &space(AS_PROGRAM);
160   config_space->unmap_readwrite(0x00000, 0xfffff);
161   for(int i=0; i<32*8; i++)
162      if(sub_devices[i])
163         sub_devices[i]->map_config(i, config_space);
164}
190165
191      case 1:
192         if (m_devicenum != -1)
193         {
194            pci_write_func write = m_busnumaddr->m_write_callback[m_devicenum];
195            if (write != NULL)
196            {
197               int function = (m_address >> 8) & 0x07;
198               int reg = (m_address >> 0) & 0xfc;
199               (*write)(m_busnumaddr, m_busnumaddr->m_device[m_devicenum], function, reg, data, mem_mask);
200            }
201            if (LOG_PCI)
202               logerror("  function:%d register:%d\n", (m_address >> 8) & 0x07, (m_address >> 0) & 0xfc);
203         }
204         break;
205   }
166
167agp_bridge_device::agp_bridge_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)
168   : pci_bridge_device(mconfig, type, name, tag, owner, clock, shortname, source)
169{
206170}
207171
172void agp_bridge_device::device_start()
173{
174   pci_bridge_device::device_start();
175}
208176
177void agp_bridge_device::device_reset()
178{
179   pci_bridge_device::device_reset();
180}
209181
210READ64_MEMBER(pci_bus_legacy_device::read_64be)
182
183
184DEVICE_ADDRESS_MAP_START(io_configuration_access_map, 32, pci_host_device)
185   AM_RANGE(0xcf8, 0xcfb) AM_READWRITE(config_address_r, config_address_w)
186   AM_RANGE(0xcfc, 0xcff) AM_READWRITE(config_data_r,    config_data_w)
187ADDRESS_MAP_END
188
189
190pci_host_device::pci_host_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)
191   : pci_bridge_device(mconfig, type, name, tag, owner, clock, shortname, source)
211192{
212   UINT64 result = 0;
213   mem_mask = FLIPENDIAN_INT64(mem_mask);
214   if (ACCESSING_BITS_0_31)
215      result |= (UINT64)read(space, offset * 2 + 0, mem_mask >> 0) << 0;
216   if (ACCESSING_BITS_32_63)
217      result |= (UINT64)read(space, offset * 2 + 1, mem_mask >> 32) << 32;
218   return FLIPENDIAN_INT64(result);
219193}
220194
221WRITE64_MEMBER(pci_bus_legacy_device::write_64be)
195device_t *pci_host_device::bus_root()
222196{
223   data = FLIPENDIAN_INT64(data);
224   mem_mask = FLIPENDIAN_INT64(mem_mask);
225   if (ACCESSING_BITS_0_31)
226      write(space, offset * 2 + 0, data >> 0, mem_mask >> 0);
227   if (ACCESSING_BITS_32_63)
228      write(space, offset * 2 + 1, data >> 32, mem_mask >> 32);
197   return owner();
229198}
230199
200void pci_host_device::device_start()
201{
202   pci_bridge_device::device_start();
231203
232void pci_bus_legacy_device::add_sibling(pci_bus_legacy_device *sibling, int busnum)
204   memory_window_start = memory_window_end = memory_offset = 0;
205   io_window_start = io_window_end = io_offset = 0;
206}
207
208void pci_host_device::device_reset()
233209{
234   m_siblings[m_siblings_count] = sibling;
235   m_siblings_busnum[m_siblings_count] = busnum;
236   m_siblings_count++;
210   pci_bridge_device::device_reset();
211   for(int i=0; i != all_devices.count(); i++)
212      all_devices[i]->reset_all_mappings();
213   regenerate_mapping();
214
215   config_address = 0;
237216}
238217
218void pci_host_device::regenerate_mapping()
219{
220   memory_space->unmap_readwrite(memory_window_start, memory_window_end);
221   io_space->unmap_readwrite(io_window_start, io_window_end);
239222
240//-------------------------------------------------
241//  device_post_load - handle updating after a
242//  restore
243//-------------------------------------------------
223   map_device(memory_window_start, memory_window_end, memory_offset, memory_space,
224            io_window_start, io_window_end, io_offset, io_space);
225}
244226
245void pci_bus_legacy_device::device_post_load()
227void pci_host_device::regenerate_config_mapping()
246228{
247   if (m_devicenum != -1)
248   {
249      m_busnumaddr = pci_search_bustree(m_busnumber, m_devicenum, this);
250   }
229   pci_bridge_device::regenerate_config_mapping();
230   map_config(0, &space(AS_PROGRAM));
251231}
252232
253//-------------------------------------------------
254//  device_start - device-specific startup
255//-------------------------------------------------
233READ32_MEMBER(pci_host_device::config_address_r)
234{
235   return config_address;
236}
256237
257void pci_bus_legacy_device::device_start()
238WRITE32_MEMBER(pci_host_device::config_address_w)
258239{
259   /* store a pointer back to the device */
260   m_devicenum = -1;
240   COMBINE_DATA(&config_address);
241}
261242
262   /* find all our devices */
263   for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++)
264      if (m_devtag[i] != NULL)
265         m_device[i] = machine().device(m_devtag[i]);
243READ32_MEMBER(pci_host_device::config_data_r)
244{
245   return config_address & 0x80000000 ? config_read((config_address >> 16) & 0xff, (config_address >> 8) & 0xff, config_address & 0xfc, mem_mask) : 0xffffffff;
246}
266247
267   if (m_father != NULL) {
268      pci_bus_legacy_device *father = machine().device<pci_bus_legacy_device>(m_father);
269      if (father)
270         father->add_sibling(this, m_busnum);
271   }
248WRITE32_MEMBER(pci_host_device::config_data_w)
249{
250   if(config_address & 0x80000000)
251      config_write((config_address >> 16) & 0xff, (config_address >> 8) & 0xff, config_address & 0xfc, data, mem_mask);
252}
272253
273   /* register pci states */
274   save_item(NAME(m_address));
275   save_item(NAME(m_devicenum));
276   save_item(NAME(m_busnum));
254UINT32 pci_host_device::config_read(UINT8 bus, UINT8 device, UINT16 reg, UINT32 mem_mask)
255{
256   UINT32 data = 0xffffffff;
257   if(!bus) {
258      if(sub_devices[device]) {
259         data = space(AS_PROGRAM).read_dword((device << 12) | reg, mem_mask);
260         logerror("config_read %02x:%02x.%x:%02x %08x @ %08x\n", bus, device >> 3, device & 7, reg, data, mem_mask);
261      }
262   } else
263      abort();
264   
265   return data;
277266}
278267
268void pci_host_device::config_write(UINT8 bus, UINT8 device, UINT16 reg, UINT32 data, UINT32 mem_mask)
269{
270   if(!bus) {
271      if(sub_devices[device]) {
272         space(AS_PROGRAM).write_dword((device << 12) | reg, data, mem_mask);
273         logerror("config_write %02x:%02x.%x:%02x %08x @ %08x\n", bus, device >> 3, device & 7, reg, data, mem_mask);
274      }
275   } else
276      abort();
277}
279278
280//-------------------------------------------------
281//  device_reset - device-specific reset
282//-------------------------------------------------
283279
284void pci_bus_legacy_device::device_reset()
280pci_root_device::pci_root_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
281   : device_t(mconfig, PCI_ROOT,"PCI virtual root", tag, owner, clock, "pci_root", __FILE__)
285282{
286   /* reset the drive state */
287   m_devicenum = -1;
288   m_address = 0;
289283}
284
285void pci_root_device::device_start()
286{
287}
288
289void pci_root_device::device_reset()
290{
291}
trunk/src/emu/machine/pci.h
r241752r241753
1/***************************************************************************
1#ifndef PCI_H
2#define PCI_H
23
3    machine/pci.h
4#include "emu.h"
45
5    PCI bus
6#define MCFG_PCI_ROOT_ADD(_tag) \
7   MCFG_DEVICE_ADD(_tag, PCI_ROOT, 0)
68
7***************************************************************************/
9#define MCFG_PCI_DEVICE_ADD(_tag, _type, _main_id, _revision, _pclass, _subdevice_id) \
10   MCFG_DEVICE_ADD(_tag, _type, 0) \
11   downcast<pci_device *>(device)->set_ids(_main_id, _revision, _pclass, _subdevice_id);
812
9#ifndef PCI_H
10#define PCI_H
13#define MCFG_AGP_DEVICE_ADD(_tag, _type, _main_id, _revision, _subdevice_id) \
14   MCFG_PCI_DEVICE_ADD(_tag, _type, _main_id, _revision, 0x030000, _subdevice_id)
1115
12//**************************************************************************
13//  TYPE DEFINITIONS
14//**************************************************************************
16#define MCFG_PCI_HOST_ADD(_tag, _type, _main_id, _revision, _subdevice_id) \
17   MCFG_PCI_DEVICE_ADD(_tag, _type, _main_id, _revision, 0x060000, _subdevice_id)
1518
16typedef UINT32 (*pci_read_func)(device_t *pcibus, device_t *device, int function, int reg, UINT32 mem_mask);
17typedef void (*pci_write_func)(device_t *pcibus, device_t *device, int function, int reg, UINT32 data, UINT32 mem_mask);
19#define MCFG_PCI_BRIDGE_ADD(_tag, _main_id, _revision) \
20   MCFG_PCI_DEVICE_ADD(_tag, PCI_BRIDGE, _main_id, _revision, 0x060400, 0x00000000)
1821
19// ======================> pci_bus_legacy_device
22#define MCFG_AGP_BRIDGE_ADD(_tag, _type, _main_id, _revision) \
23   MCFG_PCI_DEVICE_ADD(_tag, _type, _main_id, _revision, 0x060400, 0x00000000)
2024
21class pci_bus_legacy_device :  public device_t
22{
25class pci_device : public device_t {
2326public:
24   // construction/destruction
25   pci_bus_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
27   pci_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);
2628
27   DECLARE_READ32_MEMBER( read );
28   DECLARE_WRITE32_MEMBER( write );
29   void set_ids(UINT32 main_id, UINT8 revision, UINT32 pclass, UINT32 subdevice_id);
2930
30   DECLARE_READ64_MEMBER( read_64be );
31   DECLARE_WRITE64_MEMBER( write_64be );
31   virtual void reset_all_mappings();
32   virtual void map_device(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
33                     UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space);
34   virtual void map_extra(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
35                     UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space);
3236
33   void set_busnum(int busnum) { m_busnum = busnum; }
34   void set_father(const char *father) { m_father = father; }
35   void set_device(int num, const char *tag, pci_read_func read_func, pci_write_func write_func) {
36      m_devtag[num] = tag; m_read_callback[num] = read_func; m_write_callback[num] = write_func; }
37   void map_config(UINT8 device, address_space *config_space);
3738
38   pci_bus_legacy_device *pci_search_bustree(int busnum, int devicenum, pci_bus_legacy_device *pcibus);
39   void add_sibling(pci_bus_legacy_device *sibling, int busnum);
39   virtual DECLARE_ADDRESS_MAP(config_map, 32);
4040
4141protected:
42   // device-level overrides
42   enum {
43      M_MEM = 0,
44      M_IO  = 1,
45      M_64D = 2,
46      M_64A = 4,
47      M_PREF = 8
48   };
49
50   UINT32 main_id, subdevice_id;
51   UINT32 pclass;
52   UINT8 revision;
53
4354   virtual void device_start();
4455   virtual void device_reset();
45   virtual void device_post_load();
4656
57   static void scan_sub_devices(pci_device **devices, dynamic_array<pci_device *> &all, dynamic_array<pci_device *> &bridges, device_t *root);
58
59   void add_map(UINT64 size, int flags, address_map_delegate &map);
60   template <typename T> void add_map(UINT64 size, int flags, void (T::*map)(address_map &map, device_t &device), const char *name) {
61      address_map_delegate delegate(map, name, static_cast<T *>(this));
62      add_map(size, flags, delegate);
63   }
64};
65
66class agp_device : public pci_device {
67public:
68   agp_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);
69
70protected:
71   virtual void device_start();
72   virtual void device_reset();
73};
74
75class pci_bridge_device : public pci_device, public device_memory_interface {
76public:
77   pci_bridge_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
78   pci_bridge_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);
79
80   virtual void map_device(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
81                     UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space);
82   virtual void reset_all_mappings();
83
84protected:
85   pci_device *sub_devices[32*8];
86   dynamic_array<pci_device *> all_devices;
87   dynamic_array<pci_device *> all_bridges;
88
89   virtual void device_start();
90   virtual void device_reset();
91   virtual const address_space_config *memory_space_config(address_spacenum spacenum) const;
92
93   virtual device_t *bus_root();
94   virtual void regenerate_config_mapping();
95
4796private:
48   UINT8               m_busnum;
49   const char *        m_devtag[32];
50   pci_read_func       m_read_callback[32];
51   pci_write_func      m_write_callback[32];
52   const char *        m_father;
53   device_t *          m_device[32];
54   pci_bus_legacy_device * m_siblings[8];
55   UINT8               m_siblings_busnum[8];
56   int                 m_siblings_count;
97   address_space_config configure_space_config;
98};
5799
58   offs_t              m_address;
59   INT8                m_devicenum; // device number we are addressing
60   INT8                m_busnumber; // pci bus number we are addressing
61   pci_bus_legacy_device * m_busnumaddr; // pci bus we are addressing
100class agp_bridge_device : public pci_bridge_device {
101public:
102   agp_bridge_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);
103
104protected:
105   virtual void device_start();
106   virtual void device_reset();
62107};
63108
64// device type definition
65extern const device_type PCI_BUS_LEGACY;
109class pci_host_device : public pci_bridge_device {
110public:
111   DECLARE_ADDRESS_MAP(io_configuration_access_map, 32);
66112
113   pci_host_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);
67114
68/***************************************************************************
69    DEVICE CONFIGURATION MACROS
70***************************************************************************/
115protected:
116   address_space *memory_space, *io_space;
71117
72#define MCFG_PCI_BUS_LEGACY_ADD(_tag, _busnum) \
73   MCFG_DEVICE_ADD(_tag, PCI_BUS_LEGACY, 0) \
74   downcast<pci_bus_legacy_device *>(device)->set_busnum(_busnum);
75#define MCFG_PCI_BUS_LEGACY_DEVICE(_devnum, _devtag, _configread, _configwrite) \
76   downcast<pci_bus_legacy_device *>(device)->set_device(_devnum, _devtag,_configread,_configwrite);
77#define MCFG_PCI_BUS_LEGACY_SIBLING(_father_tag) \
78   downcast<pci_bus_legacy_device *>(device)->set_father(_father_tag);
118   UINT64 memory_window_start, memory_window_end, memory_offset;
119   UINT64 io_window_start, io_window_end, io_offset;
79120
121   virtual void device_start();
122   virtual void device_reset();
80123
81#endif /* PCI_H */
124   virtual device_t *bus_root();
125
126   UINT32 config_address;
127
128   DECLARE_READ32_MEMBER(config_address_r);
129   DECLARE_WRITE32_MEMBER(config_address_w);
130   DECLARE_READ32_MEMBER(config_data_r);
131   DECLARE_WRITE32_MEMBER(config_data_w);
132
133   UINT32 config_read(UINT8 bus, UINT8 device, UINT16 reg, UINT32 mem_mask);
134   void config_write(UINT8 bus, UINT8 device, UINT16 reg, UINT32 data, UINT32 mem_mask);
135
136   void regenerate_mapping();
137   virtual void regenerate_config_mapping();
138};
139
140class pci_root_device : public device_t {
141public:
142   pci_root_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
143
144protected:
145   virtual void device_start();
146   virtual void device_reset();
147};
148
149extern const device_type PCI_ROOT;
150extern const device_type PCI_BRIDGE;
151
152#endif
trunk/src/emu/machine/pic8259.c
r241752r241753
1414#include "emu.h"
1515#include "machine/pic8259.h"
1616
17#define IRQ_COUNT   8
18
1917#define LOG_ICW     0
2018#define LOG_OCW     0
2119#define LOG_GENERAL  0
r241752r241753
2422
2523void pic8259_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
2624{
27   int irq;
28   UINT8 mask;
29
3025   /* check the various IRQs */
31   for (irq = 0; irq < IRQ_COUNT; irq++)
26   for (int n = 0, irq = m_prio; n < 8; n++, irq = (irq + 1) & 7)
3227   {
33      mask = 1 << irq;
28      UINT8 mask = 1 << irq;
3429
35      /* is this IRQ in service? */
36      if (m_isr & mask)
30      /* is this IRQ in service and not cascading and sfnm? */
31      if ((m_isr & mask) && !(m_master && m_cascade && m_nested && (m_slave & mask)))
3732      {
3833         if (LOG_GENERAL)
3934         {
40            logerror("pic8259_timerproc(): PIC IRQ #%d still in service\n", irq);
35            logerror("pic8259_timerproc() %s: PIC IRQ #%d still in service\n", tag(), irq);
4136         }
4237         break;
4338      }
r241752r241753
4742      {
4843         if (LOG_GENERAL)
4944         {
50            logerror("pic8259_timerproc(): PIC triggering IRQ #%d\n", irq);
45            logerror("pic8259_timerproc() %s: PIC triggering IRQ #%d\n", tag(), irq);
5146         }
5247         if (!BIT(m_ocw3, 2))
5348         {
r241752r241753
5550         }
5651         return;
5752      }
53      // if sfnm and in-service don't continue
54      if((m_isr & mask) && m_master && m_cascade && m_nested && (m_slave & mask))
55         break;
5856   }
5957   if (!BIT(m_ocw3, 2))
6058   {
r241752r241753
7169   {
7270      /* setting IRQ line */
7371      if (LOG_GENERAL)
74         logerror("pic8259_set_irq_line(): PIC set IRQ line #%d\n", irq);
72         logerror("pic8259_set_irq_line() %s: PIC set IRQ line #%d\n", tag(), irq);
7573
7674      if(m_level_trig_mode || (!m_level_trig_mode && !(m_irq_lines & mask)))
7775      {
r241752r241753
8482      /* clearing IRQ line */
8583      if (LOG_GENERAL)
8684      {
87         logerror("pic8259_device::set_irq_line(): PIC cleared IRQ line #%d\n", irq);
85         logerror("pic8259_device::set_irq_line() %s: PIC cleared IRQ line #%d\n", tag(), irq);
8886      }
8987
9088      m_irq_lines &= ~mask;
r241752r241753
9694
9795UINT32 pic8259_device::acknowledge()
9896{
99   UINT8 mask;
100   int irq;
101
102   for (irq = 0; irq < IRQ_COUNT; irq++)
97   for (int n = 0, irq = m_prio; n < 8; n++, irq = (irq + 1) & 7)
10398   {
104      mask = 1 << irq;
99      UINT8 mask = 1 << irq;
105100
106101      /* is this IRQ pending and enabled? */
107102      if ((m_irr & mask) && !(m_imr & mask))
108103      {
109104         if (LOG_GENERAL)
110105         {
111            logerror("pic8259_acknowledge(): PIC acknowledge IRQ #%d\n", irq);
106            logerror("pic8259_acknowledge() %s: PIC acknowledge IRQ #%d\n", tag(), irq);
112107         }
113108         if (!m_level_trig_mode)
114109         {
r241752r241753
170165
171166            if ( m_irr & ~m_imr )
172167            {
173               int irq;
174               for ( irq = 0; irq < IRQ_COUNT; irq++ )
168               /* check the various IRQs */
169               for (int n = 0, irq = m_prio; n < 8; n++, irq = (irq + 1) & 7)
175170               {
176171                  if ( ( 1 << irq ) & m_irr & ~m_imr )
177172                  {
r241752r241753
216211            /* write ICW1 - this pretty much resets the chip */
217212            if (LOG_ICW)
218213            {
219               logerror("pic8259_device::write(): ICW1; data=0x%02X\n", data);
214               logerror("pic8259_device::write() %s: ICW1; data=0x%02X\n", tag(), data);
220215            }
221216
222217            m_imr                = 0x00;
r241752r241753
237232               /* write OCW3 */
238233               if (LOG_OCW)
239234               {
240                  logerror("pic8259_device::write(): OCW3; data=0x%02X\n", data);
235                  logerror("pic8259_device::write() %s: OCW3; data=0x%02X\n", tag(), data);
241236               }
242237
243238               m_ocw3 = data;
r241752r241753
250245               /* write OCW2 */
251246               if (LOG_OCW)
252247               {
253                  logerror("pic8259_device::write(): OCW2; data=0x%02X\n", data);
248                  logerror("pic8259_device::write() %s: OCW2; data=0x%02X\n", tag(), data);
254249               }
255250
256251               switch (data & 0xe0)
r241752r241753
291286                     }
292287                     break;
293288                  case 0xc0:
294                     m_prio = n & 7;
289                     m_prio = (n + 1) & 7;
295290                     break;
296291                  case 0xe0:
297292                     if( m_isr & mask )
298293                     {
299294                        m_isr &= ~mask;
300                        m_prio = (m_prio + 1) & 7;
295                        m_prio = (n + 1) & 7;
301296                     }
302297                     break;
303298               }
r241752r241753
315310               /* write ICW2 */
316311               if (LOG_ICW)
317312               {
318                  logerror("pic8259_device::write(): ICW2; data=0x%02X\n", data);
313                  logerror("pic8259_device::write() %s: ICW2; data=0x%02X\n", tag(), data);
319314               }
320315
321316               m_base = data & 0xf8;
r241752r241753
334329               /* write ICW3 */
335330               if (LOG_ICW)
336331               {
337                  logerror("pic8259_device::write(): ICW3; data=0x%02X\n", data);
332                  logerror("pic8259_device::write() %s: ICW3; data=0x%02X\n", tag(), data);
338333               }
339334
340335               m_slave = data;
r241752r241753
345340               /* write ICW4 */
346341               if (LOG_ICW)
347342               {
348                  logerror("pic8259_device::write(): ICW4; data=0x%02X\n", data);
343                  logerror("pic8259_device::write() %s: ICW4; data=0x%02X\n", tag(), data);
349344               }
350345
351346               m_nested = (data & 0x10) ? 1 : 0;
trunk/src/emu/machine/z80ctc.h
r241752r241753
7474   DECLARE_WRITE_LINE_MEMBER( trg2 );
7575   DECLARE_WRITE_LINE_MEMBER( trg3 );
7676
77   UINT16 get_channel_constant(UINT8 channel) { return m_channel[channel].m_tconst; }
78
7779protected:
7880   // device-level overrides
7981   virtual void device_start();
trunk/src/emu/sound/pci-ac97.c
r0r241753
1#include "pci-ac97.h"
2
3const device_type AC97 = &device_creator<ac97_device>;
4
5DEVICE_ADDRESS_MAP_START(native_audio_mixer_map, 32, ac97_device)
6ADDRESS_MAP_END
7
8DEVICE_ADDRESS_MAP_START(native_audio_bus_mastering_map, 32, ac97_device)
9ADDRESS_MAP_END
10
11DEVICE_ADDRESS_MAP_START(mixer_map, 32, ac97_device)
12ADDRESS_MAP_END
13
14DEVICE_ADDRESS_MAP_START(bus_mastering_map, 32, ac97_device)
15ADDRESS_MAP_END
16
17ac97_device::ac97_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
18   : pci_device(mconfig, AC97, "AC97 audio", tag, owner, clock, "ac97", __FILE__)
19{
20}
21
22void ac97_device::device_start()
23{
24   pci_device::device_start();
25   add_map(256, M_IO, FUNC(ac97_device::native_audio_mixer_map));
26   add_map(64,  M_IO, FUNC(ac97_device::native_audio_bus_mastering_map));
27   add_map(512, M_MEM, FUNC(ac97_device::mixer_map));
28   add_map(256, M_MEM, FUNC(ac97_device::bus_mastering_map));
29}
30
31void ac97_device::device_reset()
32{
33   pci_device::device_reset();
34}
trunk/src/emu/sound/pci-ac97.h
r0r241753
1#ifndef PCI_AC97_H
2#define PCI_AC97_H
3
4#include "machine/pci.h"
5
6#define MCFG_AC97_ADD(_tag, _main_id, _revision, _subdevice_id) \
7   MCFG_PCI_DEVICE_ADD(_tag, AC97, _main_id, _revision, 0x040300, _subdevice_id)
8
9class ac97_device : public pci_device {
10public:
11   ac97_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
12
13protected:
14   virtual void device_start();
15   virtual void device_reset();
16
17private:
18   DECLARE_ADDRESS_MAP(native_audio_mixer_map, 32);
19   DECLARE_ADDRESS_MAP(native_audio_bus_mastering_map, 32);
20   DECLARE_ADDRESS_MAP(mixer_map, 32);
21   DECLARE_ADDRESS_MAP(bus_mastering_map, 32);
22};
23
24extern const device_type AC97;
25
26#endif
trunk/src/emu/sound/sb0400.c
r0r241753
1#include "sb0400.h"
2
3const device_type SB0400 = &device_creator<sb0400_device>;
4
5DEVICE_ADDRESS_MAP_START(map, 32, sb0400_device)
6ADDRESS_MAP_END
7
8sb0400_device::sb0400_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
9   : pci_device(mconfig, SB0400, "Creative Labs SB0400 Audigy2 Value", tag, owner, clock, "sb0400", __FILE__)
10{
11}
12
13void sb0400_device::device_start()
14{
15   pci_device::device_start();
16   add_map(64, M_IO, FUNC(sb0400_device::map));
17}
18
19void sb0400_device::device_reset()
20{
21   pci_device::device_reset();
22}
trunk/src/emu/sound/sb0400.h
r0r241753
1// Creative labs SB0400 Audigy2 Value
2
3#ifndef SB0400_H
4#define SB0400_H
5
6#include "machine/pci.h"
7
8#define MCFG_SB0400_ADD(_tag, _subdevice_id) \
9   MCFG_PCI_DEVICE_ADD(_tag, SB0400, 0x11020008, 0x00, 0x040100, _subdevice_id)
10
11class sb0400_device : public pci_device {
12public:
13   sb0400_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
14
15protected:
16   virtual void device_start();
17   virtual void device_reset();
18
19private:
20   DECLARE_ADDRESS_MAP(map, 32);
21};
22
23extern const device_type SB0400;
24
25#endif
trunk/src/emu/sound/sound.mak
r241752r241753
7070
7171
7272#-------------------------------------------------
73# AC97
74#@src/emu/sound/pic-ac97.h,SOUNDS += AC97
75#-------------------------------------------------
76
77ifneq ($(filter AC97,$(SOUNDS)),)
78SOUNDOBJS += $(SOUNDOBJ)/pci-ac97.o
79endif
80
81
82
83#-------------------------------------------------
7384# Apple custom sound chips
7485#@src/emu/sound/asc.h,SOUNDS += ASC
7586#@src/emu/sound/awacs.h,SOUNDS += AWACS
r241752r241753
123134
124135
125136#-------------------------------------------------
137#-------------------------------------------------
138# AC97
139#@src/emu/sound/pic-ac97.h,SOUNDS += AC97
140#-------------------------------------------------
141
142ifneq ($(filter AC97,$(SOUNDS)),)
143SOUNDOBJS += $(SOUNDOBJ)/pci-ac97.o
144endif
126145# CEM 3394 analog synthesizer chip
127146#@src/emu/sound/cem3394.h,SOUNDS += CEM3394
128147#-------------------------------------------------
r241752r241753
134153
135154
136155#-------------------------------------------------
156# Creative Labs SB0400 Audigy2 Value
157#@src/emu/sound/sb0400.h,SOUNDS += AC97
158#-------------------------------------------------
159
160ifneq ($(filter SB0400,$(SOUNDS)),)
161SOUNDOBJS += $(SOUNDOBJ)/sb0400.o
162endif
163
164
165
166#-------------------------------------------------
137167# Data East custom sound chips
138168#@src/emu/sound/bsmt2000.h,SOUNDS += BSMT2000
139169#-------------------------------------------------
trunk/src/emu/video/gf6800gt.c
r0r241753
1#include "gf6800gt.h"
2
3const device_type GEFORCE_6800GT = &device_creator<geforce_6800gt_device>;
4
5DEVICE_ADDRESS_MAP_START(map1, 32, geforce_6800gt_device)
6ADDRESS_MAP_END
7
8DEVICE_ADDRESS_MAP_START(map2, 32, geforce_6800gt_device)
9ADDRESS_MAP_END
10
11DEVICE_ADDRESS_MAP_START(map3, 32, geforce_6800gt_device)
12ADDRESS_MAP_END
13
14geforce_6800gt_device::geforce_6800gt_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
15   : pci_device(mconfig, GEFORCE_6800GT, "NVidia GeForce 6800GT", tag, owner, clock, "geforce_6800gt", __FILE__)
16{
17}
18
19void geforce_6800gt_device::device_start()
20{
21   pci_device::device_start();
22   add_map( 16*1024*1024, M_MEM, FUNC(geforce_6800gt_device::map1));
23   add_map(256*1024*1024, M_MEM, FUNC(geforce_6800gt_device::map2));
24   add_map( 16*1024*1024, M_MEM, FUNC(geforce_6800gt_device::map3));
25}
26
27void geforce_6800gt_device::device_reset()
28{
29   pci_device::device_reset();
30}
trunk/src/emu/video/gf6800gt.h
r0r241753
1#ifndef GF6800GT_H
2#define GF6800GT_H
3
4#include "machine/pci.h"
5
6#define MCFG_GEFORCE_6800GT_ADD(_tag, _subdevice_id) \
7   MCFG_AGP_DEVICE_ADD(_tag, GEFORCE_6800GT, 0x10de00f9, 0xa1, _subdevice_id)
8
9class geforce_6800gt_device : public pci_device {
10public:
11   geforce_6800gt_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
12
13protected:
14   virtual void device_start();
15   virtual void device_reset();
16
17private:
18   DECLARE_ADDRESS_MAP(map1, 32);
19   DECLARE_ADDRESS_MAP(map2, 32);
20   DECLARE_ADDRESS_MAP(map3, 32);
21};
22
23extern const device_type GEFORCE_6800GT;
24
25#endif
trunk/src/emu/video/pc_vga.c
r241752r241753
198198{
199199}
200200
201// zero everything, keep vtbls
202void vga_device::zero()
203{
204   memset(&vga.svga_intf, 0, sizeof(vga.svga_intf));
205   vga.memory.resize(0);
206   memset(vga.pens, 0, sizeof(vga.pens));
207   vga.miscellaneous_output = 0;
208   vga.feature_control = 0;
209   memset(&vga.sequencer, 0, sizeof(vga.sequencer));
210   memset(&vga.crtc, 0, sizeof(vga.crtc));
211   memset(&vga.gc, 0, sizeof(vga.gc));
212   memset(&vga.attribute, 0, sizeof(vga.attribute));
213   memset(&vga.dac, 0, sizeof(vga.dac));
214   memset(&vga.oak, 0, sizeof(vga.oak));
215}
201216
217void svga_device::zero()
218{
219   vga_device::zero();
220   memset(&svga, 0, sizeof(svga));
221}
222
202223/* VBLANK callback, start address definitely updates AT vblank, not before. */
203224TIMER_CALLBACK_MEMBER(vga_device::vblank_timer_cb)
204225{
r241752r241753
208229
209230void vga_device::device_start()
210231{
211   memset(&vga, 0, sizeof(vga));
232   zero();
212233
213234   int i;
214235   for (i = 0; i < 0x100; i++)
r241752r241753
241262
242263void cirrus_vga_device::device_start()
243264{
244   memset(&vga, 0, sizeof(vga));
245   memset(&svga, 0, sizeof(svga));
265   zero();
246266
247267   int i;
248268   for (i = 0; i < 0x100; i++)
trunk/src/emu/video/pc_vga.h
r241752r241753
2626   vga_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
2727   vga_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);
2828
29
29   virtual void zero();
3030   virtual UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
3131
3232   virtual READ8_MEMBER(port_03b0_r);
r241752r241753
205205   // construction/destruction
206206   svga_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);
207207
208   virtual void zero();
208209   virtual UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
209210protected:
210211   void svga_vh_rgb8(bitmap_rgb32 &bitmap, const rectangle &cliprect);
trunk/src/emu/video/snes_ppu.c
r241752r241753
214214{
215215   m_openbus_cb.resolve_safe(0);
216216
217#if SNES_LAYER_DEBUG
218   memset(&m_debug_options, 0, sizeof(m_debug_options));
219#endif
220
221217   m_vram = auto_alloc_array(machine(), UINT8, SNES_VRAM_SIZE);
222218   m_cgram = auto_alloc_array(machine(), UINT16, SNES_CGRAM_SIZE/2);
223219   m_oam_ram = auto_alloc_array(machine(), UINT16, SNES_OAM_SIZE/2);
224220
225   /* Inititialize registers/variables */
226   m_update_windows = 1;
227   m_beam.latch_vert = 0;
228   m_beam.latch_horz = 0;
229   m_beam.current_vert = 0;
230   m_beam.current_horz = 0;
231   m_beam.last_visible_line = 225; /* TODO: PAL setting */
232   m_mode = 0;
233   m_ppu1_version = 1;  // 5C77 chip version number, read by STAT77, only '1' is known
234   m_ppu2_version = 3;  // 5C78 chip version number, read by STAT78, only '2' & '3' encountered so far.
235
236   m_cgram_address = 0;
237   m_read_ophct = 0;
238   m_read_opvct = 0;
239
240   PPU_REG(VMAIN) = 0x80;
241   // what about other regs?
242
243   /* Inititialize mosaic table */
244   for (int j = 0; j < 16; j++)
245   {
246      for (int i = 0; i < 4096; i++)
247         m_mosaic_table[j][i] = (i / (j + 1)) * (j + 1);
248   }
249
250   /* Init VRAM */
251   memset(m_vram, 0, SNES_VRAM_SIZE);
252
253   /* Init Palette RAM */
254   memset((UINT8 *)m_cgram, 0, SNES_CGRAM_SIZE);
255
256   /* Init oam RAM */
257   memset((UINT8 *)m_oam_ram, 0xff, SNES_OAM_SIZE);
258
259   m_stat78 = 0;
260   memset(m_regs, 0x00, sizeof(m_regs));
261
262221   for (int i = 0; i < 2; i++)
263222   {
264223      save_item(NAME(m_scanlines[i].enable), i);
r241752r241753
400359   save_pointer(NAME(m_oam_ram), SNES_OAM_SIZE/2);
401360}
402361
362void snes_ppu_device::device_reset()
363{
364   
365#if SNES_LAYER_DEBUG
366   memset(&m_debug_options, 0, sizeof(m_debug_options));
367#endif
368   
369   /* Inititialize registers/variables */
370   m_update_windows = 1;
371   m_beam.latch_vert = 0;
372   m_beam.latch_horz = 0;
373   m_beam.current_vert = 0;
374   m_beam.current_horz = 0;
375   m_beam.last_visible_line = 225; /* TODO: PAL setting */
376   m_mode = 0;
377   m_ppu1_version = 1;  // 5C77 chip version number, read by STAT77, only '1' is known
378   m_ppu2_version = 3;  // 5C78 chip version number, read by STAT78, only '2' & '3' encountered so far.
379   
380   m_cgram_address = 0;
381   m_read_ophct = 0;
382   m_read_opvct = 0;
403383
384   m_vmadd = 0;
385   
386   PPU_REG(VMAIN) = 0x80;
387   // what about other regs?
388   
389   /* Inititialize mosaic table */
390   for (int j = 0; j < 16; j++)
391   {
392      for (int i = 0; i < 4096; i++)
393         m_mosaic_table[j][i] = (i / (j + 1)) * (j + 1);
394   }
395   
396   /* Init VRAM */
397   memset(m_vram, 0, SNES_VRAM_SIZE);
398   
399   /* Init Palette RAM */
400   memset((UINT8 *)m_cgram, 0, SNES_CGRAM_SIZE);
401   
402   /* Init oam RAM */
403   memset((UINT8 *)m_oam_ram, 0xff, SNES_OAM_SIZE);
404   
405   m_stat78 = 0;
404406
407   // other initializations to 0
408   memset(m_regs, 0, sizeof(m_regs));
409   memset(m_oam_itemlist, 0, sizeof(m_oam_itemlist));
410   memset(&m_oam, 0, sizeof(m_oam));
411   memset(&m_mode7, 0, sizeof(m_mode7));
412
413   for (int i = 0; i < 2; i++)
414   {
415      m_scanlines[i].enable = 0;
416      m_scanlines[i].clip = 0;
417      memset(m_scanlines[i].buffer, 0, SNES_SCR_WIDTH);
418      memset(m_scanlines[i].priority, 0, SNES_SCR_WIDTH);
419      memset(m_scanlines[i].layer, 0, SNES_SCR_WIDTH);
420      memset(m_scanlines[i].blend_exception, 0, SNES_SCR_WIDTH);
421   }
422   
423   for (int i = 0; i < 6; i++)
424   {
425      m_layer[i].window1_enabled = 0;
426      m_layer[i].window1_invert = 0;
427      m_layer[i].window2_enabled = 0;
428      m_layer[i].window2_invert = 0;
429      m_layer[i].wlog_mask = 0;
430      m_layer[i].color_math = 0;
431      m_layer[i].charmap = 0;
432      m_layer[i].tilemap = 0;
433      m_layer[i].tilemap_size = 0;
434      m_layer[i].tile_size = 0;
435      m_layer[i].mosaic_enabled = 0;
436      m_layer[i].main_window_enabled = 0;
437      m_layer[i].sub_window_enabled = 0;
438      m_layer[i].main_bg_enabled = 0;
439      m_layer[i].sub_bg_enabled = 0;
440      m_layer[i].hoffs = 0;
441      m_layer[i].voffs = 0;
442     
443      memset(m_clipmasks[i], 0, SNES_SCR_WIDTH);
444   }
445   
446   for (int i = 0; i < ARRAY_LENGTH(m_oam_spritelist); i++)
447   {
448      m_oam_spritelist[i].tile = 0;
449      m_oam_spritelist[i].x = 0;
450      m_oam_spritelist[i].y = 0;
451      m_oam_spritelist[i].size = 0;
452      m_oam_spritelist[i].vflip = 0;
453      m_oam_spritelist[i].hflip = 0;
454      m_oam_spritelist[i].priority_bits = 0;
455      m_oam_spritelist[i].pal = 0;
456      m_oam_spritelist[i].height = 0;
457      m_oam_spritelist[i].width = 0;
458   }
459   
460   for (int i = 0; i < ARRAY_LENGTH(m_oam_tilelist); i++)
461   {
462      m_oam_tilelist[i].x = 0;
463      m_oam_tilelist[i].priority = 0;
464      m_oam_tilelist[i].pal = 0;
465      m_oam_tilelist[i].tileaddr = 0;
466      m_oam_tilelist[i].hflip = 0;
467   }
468}
469
405470/*****************************************
406471 * get_bgcolor()
407472 *
trunk/src/emu/video/snes_ppu.h
r241752r241753
271271protected:
272272   // device-level overrides
273273   virtual void device_start();
274   virtual void device_reset() {};
274   virtual void device_reset();
275275
276276private:
277277   devcb_read16  m_openbus_cb;
trunk/src/emu/video/upd7220.c
r241752r241753
371371
372372inline void upd7220_device::recompute_parameters()
373373{
374   int horiz_mult;
374   int horiz_mult = 16, vert_mult = 1;
375375   /* TODO: assume that the pitch also controls number of horizontal pixels in a single cell */
376376   // horiz_mult = 4 if both mixed and interlace?
377   if(((m_mode & UPD7220_MODE_DISPLAY_MASK) == UPD7220_MODE_DISPLAY_MIXED) ||
378            ((m_mode & UPD7220_MODE_INTERLACE_MASK) == UPD7220_MODE_INTERLACE_ON))
377   if((m_mode & UPD7220_MODE_DISPLAY_MASK) == UPD7220_MODE_DISPLAY_MIXED)
379378      horiz_mult = 8;
380   else
381      horiz_mult = 16;
379   else if((m_mode & UPD7220_MODE_INTERLACE_MASK) == UPD7220_MODE_INTERLACE_ON)
380   {
381      // in interlaced mode every line contains both fields
382      horiz_mult = 8;
383      vert_mult = 2;
384   }
382385
383386   int horiz_pix_total = (m_hs + m_hbp + m_hfp + m_aw) * horiz_mult;
384   int vert_pix_total = m_vs + m_vbp + m_al + m_vfp;
387   int vert_pix_total = (m_vs + m_vbp + m_al + m_vfp) * vert_mult;
385388
386389   //printf("%d %d %d %d\n",m_hs,m_hbp,m_aw,m_hfp);
387390   //printf("%d %d\n",m_aw * 8,m_pitch * 8);
r241752r241753
394397   rectangle visarea;
395398
396399   visarea.min_x = 0; //(m_hs + m_hbp) * 8;
397   visarea.min_y = 0; //m_vs + m_vbp;
400   visarea.min_y = m_vbp; //m_vs + m_vbp;
398401   visarea.max_x = m_aw * horiz_mult - 1;//horiz_pix_total - (m_hfp * 8) - 1;
399   visarea.max_y = m_al - 1;//vert_pix_total - m_vfp - 1;
402   visarea.max_y = m_al * vert_mult + m_vbp - 1;//vert_pix_total - m_vfp - 1;
400403
401404   LOG(("uPD7220 '%s' Screen: %u x %u @ %f Hz\n", tag(), horiz_pix_total, vert_pix_total, 1 / ATTOSECONDS_TO_DOUBLE(refresh)));
402405   LOG(("Visible Area: (%u, %u) - (%u, %u)\n", visarea.min_x, visarea.min_y, visarea.max_x, visarea.max_y));
r241752r241753
798801
799802void upd7220_device::draw_line(int x, int y)
800803{
801   int line_size,i;
802   const int line_x_dir[8] = { 0, 1, 1, 0, 0,-1,-1, 0};
803   const int line_y_dir[8] = { 1, 0, 0,-1,-1, 0, 0, 1};
804   const int line_x_step[8] = { 1, 0, 0, 1,-1, 0, 0,-1 };
805   const int line_y_step[8] = { 0, 1,-1, 0, 0,-1, 1, 0 };
804   int xi, yi;
805   int d = (m_figs.m_d & 0x2000) ? (INT16)(m_figs.m_d | 0xe000) : m_figs.m_d;
806   int d2 = (m_figs.m_d2 & 0x2000) ? (INT16)(m_figs.m_d2 | 0xe000) : m_figs.m_d2;
806807   UINT16 pattern = (m_ra[8]) | (m_ra[9]<<8);
807   int line_step = 0;
808   const int dot_dir[4] = {1, -1, -1, 1};
808809
809810   LOG(("uPD7220 line check: %d %d %02x %08x %d %d %d\n",x,y,m_figs.m_dir,m_ead,m_figs.m_d1,m_figs.m_dc,m_bitmap_mod));
810811
811   line_size = m_figs.m_dc;
812   for(yi = xi = 0; yi <= m_figs.m_dc; yi++)
813   {
814      switch(m_figs.m_dir & 3)
815      {
816         case 1:
817         case 2:
818            draw_pixel(yi * dot_dir[((m_figs.m_dir >> 1) + 3) & 3] + x, xi * dot_dir[m_figs.m_dir >> 1] + y, yi, pattern);
819            break;
820         default:
821            draw_pixel(xi * dot_dir[((m_figs.m_dir >> 1) + 3) & 3] + x, yi * dot_dir[m_figs.m_dir >> 1] + y, yi, pattern);
822            break;
823      }
824      if(d > 0)
825      {
826         xi++;
827         d += d2;
828      }
829      else
830         d += m_figs.m_d1;
831   }
812832
813   for(i = 0;i<line_size;i++)
833   switch(m_figs.m_dir & 3)
814834   {
815      line_step = (m_figs.m_d1 * i);
816      line_step/= m_figs.m_dc;
817      ++line_step >>= 1;
818      draw_pixel(x + (line_step*line_x_step[m_figs.m_dir]),y + (line_step*line_y_step[m_figs.m_dir]),i,pattern);
819      x += line_x_dir[m_figs.m_dir];
820      y += line_y_dir[m_figs.m_dir];
835      case 1:
836      case 2:
837         x += yi * dot_dir[((m_figs.m_dir >> 1) + 3) & 3];
838         y += xi * dot_dir[m_figs.m_dir >> 1];
839         break;
840      default:
841         x += xi * dot_dir[((m_figs.m_dir >> 1) + 3) & 3];
842         y += yi * dot_dir[m_figs.m_dir >> 1];
843         break;
821844   }
822845
823   /* TODO: check me*/
824   x += (line_step*line_x_step[m_figs.m_dir]);
825   y += (line_step*line_y_step[m_figs.m_dir]);
826
827846   m_ead = (x >> 4) + (y * (m_pitch >> m_figs.m_gd));
828847   m_dad = x & 0x0f;
829848}
r241752r241753
854873
855874   LOG(("uPD7220 arc check: %d %d %02x %08x %d %d %d\n",x,y,m_figs.m_dir,m_ead,m_figs.m_dm,m_figs.m_dc,m_figs.m_d));
856875
857   for(int i = 0; i < m_figs.m_dc; i++)
876   for(int i = 0; i <= m_figs.m_dc; i++)
858877   {
859878      if(i >= m_figs.m_dm)
860879      {
r241752r241753
882901   {
883902      case 1:
884903      case 2:
885         x += m_figs.m_dc * dot_dir[((m_figs.m_dir >> 1) + 3) & 3];
904         x += (m_figs.m_dc + 1) * dot_dir[((m_figs.m_dir >> 1) + 3) & 3];
886905         break;
887906      default:
888         y += m_figs.m_dc * dot_dir[m_figs.m_dir >> 1];
907         y += (m_figs.m_dc + 1) * dot_dir[m_figs.m_dir >> 1];
889908         break;
890909   }
891910
r241752r241753
15351554         addr = sad + (y * m_pitch);
15361555
15371556         if (!m_draw_text_cb.isnull())
1538            m_draw_text_cb(bitmap, addr, (y * m_lr), wd, m_pitch, m_lr, m_dc, m_ead);
1557            m_draw_text_cb(bitmap, addr, (y * m_lr) + m_vbp, wd, m_pitch, m_lr, m_dc, m_ead);
15391558      }
15401559
15411560      sy = y + 1;
r241752r241753
15471566//  draw_graphics_line -
15481567//-------------------------------------------------
15491568
1550void upd7220_device::draw_graphics_line(bitmap_rgb32 &bitmap, UINT32 addr, int y, int wd)
1569void upd7220_device::draw_graphics_line(bitmap_rgb32 &bitmap, UINT32 addr, int y, int wd, int pitch)
15511570{
1552   int sx;
1571   int sx, al = bitmap.cliprect().height();
15531572
1554   for (sx = 0; sx < 80; sx++)
1573   for (sx = 0; sx < pitch; sx++)
15551574   {
1556      if((sx << 3) < m_aw * 16 && y < m_al)
1575      if((sx << 3) < m_aw * 16 && y < al)
15571576         m_display_cb(bitmap, y, sx << 3, addr);
15581577
15591578      addr+= wd + 1;
r241752r241753
15711590   UINT16 len;
15721591   int im, wd, area;
15731592   int y = 0, tsy = 0, bsy = 0;
1593   bool mixed = ((m_mode & UPD7220_MODE_DISPLAY_MASK) == UPD7220_MODE_DISPLAY_MIXED);
1594   UINT8 interlace = ((m_mode & UPD7220_MODE_INTERLACE_MASK) == UPD7220_MODE_INTERLACE_ON) ? 0 : 1;
15741595
15751596   for (area = 0; area < 4; area++)
15761597   {
r241752r241753
15831604         if(area >= 3) // TODO: most likely to be correct, Quarth (PC-98xx) definitely draws with area 2. We might see an area 3 someday ...
15841605            break;
15851606
1607         if(!interlace)
1608            len <<= 1;
1609
15861610         for (y = 0; y < len; y++)
15871611         {
15881612            /* TODO: again correct?
r241752r241753
15921616            addr = ((sad << 1) & 0x3ffff) + (y * (m_pitch << (im ? 0 : 1)));
15931617
15941618            if (!m_display_cb.isnull())
1595               draw_graphics_line(bitmap, addr, y + (bsy / m_lr), wd);
1619               draw_graphics_line(bitmap, addr, y + ((bsy + m_vbp) / (mixed ? 1 : m_lr)), wd, (m_pitch << interlace));
15961620         }
15971621      }
15981622      else
r241752r241753
16061630               addr = (sad & 0x3ffff) + ((y / m_lr) * m_pitch);
16071631
16081632               if (!m_draw_text_cb.isnull())
1609                  m_draw_text_cb(bitmap, addr, y + tsy, wd, m_pitch, m_lr, m_dc, m_ead);
1633                  m_draw_text_cb(bitmap, addr, y + tsy + m_vbp, wd, m_pitch, m_lr, m_dc, m_ead);
16101634            }
16111635         }
16121636      }
trunk/src/emu/video/upd7220.h
r241752r241753
150150   void process_fifo();
151151   void continue_command();
152152   void update_text(bitmap_rgb32 &bitmap, const rectangle &cliprect);
153   void draw_graphics_line(bitmap_rgb32 &bitmap, UINT32 addr, int y, int wd);
153   void draw_graphics_line(bitmap_rgb32 &bitmap, UINT32 addr, int y, int wd, int pitch);
154154   void update_graphics(bitmap_rgb32 &bitmap, const rectangle &cliprect, int force_bitmap);
155155
156156   upd7220_display_pixels_delegate     m_display_cb;
trunk/src/emu/video/video.mak
r241752r241753
174174
175175#-------------------------------------------------
176176#
177#@src/emu/video/gf6800gt.h,VIDEOS += GF6800GT
178#-------------------------------------------------
179
180ifneq ($(filter GF6800GT,$(VIDEOS)),)
181VIDEOOBJS+= $(VIDEOOBJ)/gf6800gt.o
182endif
183
184#-------------------------------------------------
185#
177186#@src/emu/video/h63484.h,VIDEOS += H63484
178187#-------------------------------------------------
179188
trunk/src/lib/formats/cbm_crt.c
r241752r241753
44
55    cbm_crt.c
66
7    Commodore C64 cartridge images
7    Commodore C64 cartridge images in .CRT format
88
9    This format was introduced in the CCS64 emulator by Per Hakan
10    Sundell.
11
12    Header info based on the VICE manual chapter 15.11, which in turn
13    is based on CRT.txt rev 1.14 compiled by Peter Schepers, with
14    additional contributions by Per Hakan Sundell, Markus Brenner,
15    and Marco Van Den Heuvel.
16    Relevant links:
17        http://vice-emu.sourceforge.net/vice_15.html#SEC300
18        http://ist.uwaterloo.ca/~schepers/formats/CRT.TXT (version 1.13, outdated)
19
20    Header Contents (bytes $0000-003F):
21    Bytes $0000-000F - 16-byte cartridge signature "C64 CARTRIDGE" (padded with spaces)
22          $0010-0013 - File header length
23          $0014-0015 - Cartridge version (high/low, presently 01.00)
24          $0016-0017 - Cartridge hardware type ($0000, high/low), see below
25          $0018      - Cartridge port EXROM line status (0 = inactive, 1 = active)
26          $0019      - Cartridge port GAME line status (0 = inactive, 1 = active)
27          $001A-001F - Reserved for future use
28          $0020-003F - 32-byte cartridge name (uppercase, padded with null characters)
29
30    CHIP Packet Contents (starting from $0040; there can be multiple CHIP packets
31    in a single CRT file):
32    Bytes $0040-0043 - Contained ROM signature "CHIP"
33          $0044-0047 - Total packet length (ROM image size and header combined) (high/low format)
34          $0048-0049 - Chip type (0 = ROM, 1 = RAM (no ROM data), 2 = Flash ROM)
35          $004A-004B - Bank number
36          $004C-004D - Starting load address (high/low format)
37          $004E-004F - ROM image size in bytes (high/low format, typically $2000 or $4000)
38          $0050-xxxx - ROM data
39
940*********************************************************************/
1041
1142#include "cbm_crt.h"
1243
1344
14
1545//**************************************************************************
1646//  MACROS/CONSTANTS
1747//**************************************************************************
r241752r241753
2252// slot names for the C64 cartridge types
2353static const char * CRT_C64_SLOT_NAMES[_CRT_C64_COUNT] =
2454{
25   "standard",
26   UNSUPPORTED,
27   UNSUPPORTED,
28   UNSUPPORTED,
29   "simons_basic",
30   "ocean",
31   UNSUPPORTED,
32   "fun_play",
33   "super_games",
34   UNSUPPORTED,
35   "epyxfastload",
36   "westermann",
37   "rex",
38   UNSUPPORTED,
39   "magic_formel",
40   "system3",
41   "warp_speed",
42   "dinamic",
43   "zaxxon",
44   "magic_desk",
45   UNSUPPORTED,
46   "comal80",
47   "struct_basic",
48   "ross",
49   "ep64",
50   "ep7x8",
51   "dela_ep256",
52   "rex_ep256",
53   "mikroasm",
54   UNSUPPORTED,
55   UNSUPPORTED,
56   "stardos",
57   UNSUPPORTED,
58   UNSUPPORTED,
59   UNSUPPORTED,
60   UNSUPPORTED,
61   UNSUPPORTED,
62   UNSUPPORTED,
63   UNSUPPORTED,
64   UNSUPPORTED,
65   UNSUPPORTED,
66   "ieee488",
67   UNSUPPORTED,
68   UNSUPPORTED,
69   "exos",
70   UNSUPPORTED,
71   UNSUPPORTED,
72   UNSUPPORTED,
73   "super_explode",
74   UNSUPPORTED,
75   UNSUPPORTED,
76   "mach5",
77   UNSUPPORTED,
78   "pagefox",
79   UNSUPPORTED,
80   "silverrock"
55   "standard",         //  0 - Normal cartridge
56   UNSUPPORTED,        //  1 - Action Replay
57   UNSUPPORTED,        //  2 - KCS Power Cartridge
58   "final3",           //  3 - Final Cartridge III
59   "simons_basic",     //  4 - Simons' BASIC
60   "ocean",            //  5 - Ocean type 1
61   UNSUPPORTED,        //  6 - Expert Cartridge
62   "fun_play",         //  7 - Fun Play, Power Play
63   "super_games",      //  8 - Super Games
64   UNSUPPORTED,        //  9 - Atomic Power
65   "epyxfastload",     // 10 - Epyx Fastload
66   "westermann",       // 11 - Westermann Learning
67   "rex",              // 12 - Rex Utility
68   "final",            // 13 - Final Cartridge I
69   "magic_formel",     // 14 - Magic Formel
70   "system3",          // 15 - C64 Game System, System 3
71   "warp_speed",       // 16 - Warp Speed
72   "dinamic",          // 17 - Dinamic
73   "zaxxon",           // 18 - Zaxxon, Super Zaxxon (SEGA)
74   "magic_desk",       // 19 - Magic Desk, Domark, HES Australia
75   UNSUPPORTED,        // 20 - Super Snapshot V5
76   "comal80",          // 21 - Comal-80
77   "struct_basic",     // 22 - Structured BASIC
78   "ross",             // 23 - Ross
79   "ep64",             // 24 - Dela EP64
80   "ep7x8",            // 25 - Dela EP7x8
81   "dela_ep256",       // 26 - Dela EP256
82   "rex_ep256",        // 27 - Rex EP256
83   "mikroasm",         // 28 - Mikro Assembler
84   UNSUPPORTED,        // 29 - Final Cartridge Plus
85   UNSUPPORTED,        // 30 - Action Replay 4
86   "stardos",          // 31 - Stardos
87   "easyflash",        // 32 - EasyFlash
88   UNSUPPORTED,        // 33 - EasyFlash Xbank
89   UNSUPPORTED,        // 34 - Capture
90   UNSUPPORTED,        // 35 - Action Replay 3
91   UNSUPPORTED,        // 36 - Retro Replay
92   UNSUPPORTED,        // 37 - MMC64
93   UNSUPPORTED,        // 38 - MMC Replay
94   "ide64",            // 39 - IDE64
95   UNSUPPORTED,        // 40 - Super Snapshot V4
96   "ieee488",          // 41 - IEEE-488
97   UNSUPPORTED,        // 42 - Game Killer
98   "prophet64",        // 43 - Prophet64
99   "exos",             // 44 - EXOS
100   UNSUPPORTED,        // 45 - Freeze Frame
101   UNSUPPORTED,        // 46 - Freeze Machine
102   UNSUPPORTED,        // 47 - Snapshot64
103   "super_explode",    // 48 - Super Explode V5.0
104   "magic_voice",      // 49 - Magic Voice
105   UNSUPPORTED,        // 50 - Action Replay 2
106   "mach5",            // 51 - MACH 5
107   UNSUPPORTED,        // 52 - Diashow-Maker
108   "pagefox",          // 53 - Pagefox
109   UNSUPPORTED,        // 54 - ?
110   "silverrock"        // 55 - Silverrock
81111};
82112
83113
trunk/src/lib/formats/d88_dsk.c
r241752r241753
492492            pos += 16;
493493
494494            UINT16 size = LITTLE_ENDIANIZE_INT16(*(UINT16 *)(hs+14));
495            if(i == 0)
495            if(i == 0) {
496496               sector_count = LITTLE_ENDIANIZE_INT16(*(UINT16 *)(hs+4));
497               // Support broken vfman converter
498               if(sector_count == 0x1000)
499                  sector_count = 0x10;
500            }
497501
498502            sects[i].track       = hs[0];
499503            sects[i].head        = hs[1];
trunk/src/lib/formats/esq16_dsk.c
r241752r241753
5050
5151const char *esqimg_format::name() const
5252{
53   return "img";
53   return "esq16";
5454}
5555
5656const char *esqimg_format::description() const
trunk/src/lib/formats/esq8_dsk.c
r241752r241753
5252
5353const char *esq8img_format::name() const
5454{
55   return "img";
55   return "esq8";
5656}
5757
5858const char *esq8img_format::description() const
trunk/src/lib/formats/flopimg.c
r241752r241753
10711071      type == CRC_CBM_START ||
10721072      type == CRC_MACHEAD_START ||
10731073      type == CRC_FCS_START ||
1074      type == CRC_VICTOR_HDR_START ||
1075      type == CRC_VICTOR_DATA_START ||
10741076      type == CRC_END ||
10751077      type == SECTOR_LOOP_START ||
10761078      type == SECTOR_LOOP_END ||
r241752r241753
11121114      case CRC_FCS_START:
11131115         crcs[desc[i].p1].type = CRC_FCS;
11141116         break;
1117      case CRC_VICTOR_HDR_START:
1118         crcs[desc[i].p1].type = CRC_VICTOR_HDR;
1119         break;
1120      case CRC_VICTOR_DATA_START:
1121         crcs[desc[i].p1].type = CRC_VICTOR_DATA;
1122         break;
11151123      }
11161124
11171125   for(int i=0; desc[i].type != END; i++)
r241752r241753
11311139   case CRC_CBM: return 10;
11321140   case CRC_MACHEAD: return 8;
11331141   case CRC_FCS: return 20;
1142   case CRC_VICTOR_HDR: return 10;
1143   case CRC_VICTOR_DATA: return 20;
11341144   default: return 0;
11351145   }
11361146}
r241752r241753
12711281   // TODO
12721282}
12731283
1284void floppy_image_format_t::fixup_crc_victor_header(UINT32 *buffer, const gen_crc_info *crc)
1285{
1286   UINT8 v = 0;
1287   for(int o = crc->start; o < crc->end; o+=10) {
1288      v += ((gcr5bw_tb[bitn_r(buffer, o, 5)] << 4) | gcr5bw_tb[bitn_r(buffer, o+5, 5)]);
1289   }
1290   int offset = crc->write;
1291   gcr5_w(buffer, offset, 10, v);
1292}
1293
1294void floppy_image_format_t::fixup_crc_victor_data(UINT32 *buffer, const gen_crc_info *crc)
1295{
1296   UINT16 v = 0;
1297   for(int o = crc->start; o < crc->end; o+=10) {
1298      v += ((gcr5bw_tb[bitn_r(buffer, o, 5)] << 4) | gcr5bw_tb[bitn_r(buffer, o+5, 5)]);
1299   }
1300   int offset = crc->write;
1301   gcr5_w(buffer, offset, 10, v & 0xff);
1302   gcr5_w(buffer, offset, 10, v >> 8);
1303}
1304
12741305void floppy_image_format_t::fixup_crcs(UINT32 *buffer, gen_crc_info *crcs)
12751306{
12761307   for(int i=0; i != MAX_CRC_COUNT; i++)
12771308      if(crcs[i].write != -1) {
12781309         switch(crcs[i].type) {
1279         case CRC_AMIGA:   fixup_crc_amiga(buffer, crcs+i); break;
1280         case CRC_CBM:     fixup_crc_cbm(buffer, crcs+i); break;
1281         case CRC_CCITT:   fixup_crc_ccitt(buffer, crcs+i); break;
1282         case CRC_CCITT_FM:fixup_crc_ccitt_fm(buffer, crcs+i); break;
1283         case CRC_MACHEAD: fixup_crc_machead(buffer, crcs+i); break;
1284         case CRC_FCS:     fixup_crc_fcs(buffer, crcs+i); break;
1310         case CRC_AMIGA:         fixup_crc_amiga(buffer, crcs+i); break;
1311         case CRC_CBM:         fixup_crc_cbm(buffer, crcs+i); break;
1312         case CRC_CCITT:         fixup_crc_ccitt(buffer, crcs+i); break;
1313         case CRC_CCITT_FM:      fixup_crc_ccitt_fm(buffer, crcs+i); break;
1314         case CRC_MACHEAD:      fixup_crc_machead(buffer, crcs+i); break;
1315         case CRC_FCS:         fixup_crc_fcs(buffer, crcs+i); break;
1316         case CRC_VICTOR_HDR:   fixup_crc_victor_header(buffer, crcs+i); break;
1317         case CRC_VICTOR_DATA:   fixup_crc_victor_data(buffer, crcs+i); break;
12851318         }
12861319         if(crcs[i].fixup_mfm_clock) {
12871320            int offset = crcs[i].write + crc_cells_size(crcs[i].type);
r241752r241753
14031436         raw_w(buffer, offset, desc[index].p2, desc[index].p1);
14041437         break;
14051438
1439      case SYNC_GCR5:
1440         for(int i=0; i<desc[index].p1; i++)
1441            raw_w(buffer, offset, 10, 0xffff);
1442         break;
1443
14061444      case TRACK_ID:
14071445         mfm_w(buffer, offset, 8, track);
14081446         break;
r241752r241753
14271465         _8n1_w(buffer, offset, 8, track);
14281466         break;
14291467
1468      case TRACK_ID_VICTOR_GCR5:
1469         gcr5_w(buffer, offset, 10, 1 + track + (head * 0x80));
1470         break;
1471
14301472      case HEAD_ID:
14311473         mfm_w(buffer, offset, 8, head);
14321474         break;
r241752r241753
15361578      case CRC_CCITT_FM_START:
15371579      case CRC_MACHEAD_START:
15381580      case CRC_FCS_START:
1581      case CRC_VICTOR_HDR_START:
1582      case CRC_VICTOR_DATA_START:
15391583         crcs[desc[index].p1].start = offset;
15401584         break;
15411585
trunk/src/lib/formats/flopimg.h
r241752r241753
307307      RAW,                    //!< One 16 bits word in p1 to be written raw, msb first, repeated p2 times
308308      RAWBYTE,                //!< One 8 bit byte in p1 to be written raw, msb first, repeated p2 times
309309      RAWBITS,                //!< A value of p2 bits in p1 to be copied as-is, msb first
310      SYNC_GCR5,              //!< gcr5 sync byte
310311      TRACK_ID,               //!< Track id byte, mfm-encoded
311312      TRACK_ID_FM,            //!< Track id byte, fm-encoded
312313      TRACK_ID_DOS2_GCR5,     //!< Track id byte, gcr5-encoded
313314      TRACK_ID_DOS25_GCR5,    //!< Track id byte, gcr5-encoded
314315      TRACK_ID_GCR6,          //!< Track id low 6 bits, gcr6-encoded
315316      TRACK_ID_8N1,           //!< Track id byte, 8N1-encoded
317      TRACK_ID_VICTOR_GCR5,   //!< Track id byte, gcr5-encoded
316318      HEAD_ID,                //!< Head id byte, mfm-encoded
317319      HEAD_ID_FM,             //!< Head id byte, fm-encoded
318320      HEAD_ID_SWAP,           //!< Head id byte swapped (0->1, 1->0), mfm-encoded
r241752r241753
346348      CRC_CBM_START,          //!< Start a CBM checksum calculation (xor of original data values, gcr5-encoded), p1 = crc id
347349      CRC_MACHEAD_START,      //!< Start of the mac gcr6 sector header checksum calculation (xor of pre-encode 6-bits values, gcr6-encoded)
348350      CRC_FCS_START,          //!< Start a Compucolor File Control System checksum calculation, p1 = crc id
351      CRC_VICTOR_HDR_START,   //!< Start a Victor 9000 checksum calculation, p1 = crc id
352      CRC_VICTOR_DATA_START,   //!< Start a Victor 9000 checksum calculation, p1 = crc id
349353      CRC_END,                //!< End the checksum, p1 = crc id
350354      CRC,                    //!< Write a checksum in the apporpriate format, p1 = crc id
351355
r241752r241753
565569   UINT8 sbyte_mfm_r(const UINT8 *bitstream, int &pos, int track_size);
566570
567571private:
568   enum { CRC_NONE, CRC_AMIGA, CRC_CBM, CRC_CCITT, CRC_CCITT_FM, CRC_MACHEAD, CRC_FCS };
572   enum { CRC_NONE, CRC_AMIGA, CRC_CBM, CRC_CCITT, CRC_CCITT_FM, CRC_MACHEAD, CRC_FCS, CRC_VICTOR_HDR, CRC_VICTOR_DATA };
569573   enum { MAX_CRC_COUNT = 64 };
570574
571575   //! Holds data used internally for generating CRCs.
r241752r241753
587591   void fixup_crc_ccitt_fm(UINT32 *buffer, const gen_crc_info *crc);
588592   void fixup_crc_machead(UINT32 *buffer, const gen_crc_info *crc);
589593   void fixup_crc_fcs(UINT32 *buffer, const gen_crc_info *crc);
594   void fixup_crc_victor_header(UINT32 *buffer, const gen_crc_info *crc);
595   void fixup_crc_victor_data(UINT32 *buffer, const gen_crc_info *crc);
590596   void fixup_crcs(UINT32 *buffer, gen_crc_info *crcs);
591597   void collect_crcs(const desc_e *desc, gen_crc_info *crcs);
592598
trunk/src/lib/formats/p6001_cas.c
r241752r241753
11/*
2 * Nec PC-6001 cassette format handling
2 * NEC PC-6001 cassette format handling
33 */
44
55#include "p6001_cas.h"
trunk/src/lib/formats/p6001_cas.h
r241752r241753
11/*
2 * Nec PC-6001 cassette format handling
2 * NEC PC-6001 cassette format handling
33 */
44
55#ifndef PC6001_CAS_H_
trunk/src/lib/formats/pc98fdi_dsk.c
r241752r241753
1717
1818const char *pc98fdi_format::name() const
1919{
20   return "pc98-fdi";
20   return "pc98_fdi";
2121}
2222
2323const char *pc98fdi_format::description() const
trunk/src/lib/formats/victor9k_dsk.c
r0r241753
1// license:BSD-3-Clause
2// copyright-holders:Curt Coder
3/*********************************************************************
4
5   formats/victor9k_dsk.c
6
7   Victor 9000 sector disk image format
8
9*********************************************************************/
10
11/*
12
13   Sector format
14   -------------
15
16   Header sync
17   Sector header (header ID, track ID, sector ID, and checksum)
18   Gap 1
19   Data Sync
20   Data field (data sync, data ID, data bytes, and checksum)
21   Gap 2
22
23   Track format
24   ------------
25
26   ZONE        LOWER HEAD  UPPER HEAD  SECTORS     ROTATIONAL   RPM
27   NUMBER      TRACKS      TRACKS      PER TRACK   PERIOD (MS)
28
29   0           0-3         unused      19          237.9        252
30   1           4-15        0-7         18          224.5        267
31   2           16-26       8-18        17          212.2        283
32   3           27-37       19-29       16          199.9        300
33   4           38-48       30-40       15          187.6        320
34   5           49-59       41-51       14          175.3        342
35   6           60-70       52-62       13          163.0        368
36   7           71-79       63-74       12          149.6        401
37   8           unused      75-79       11          144.0        417
38
39   Interleave factor 3
40   cell 2.13 usec
41
42*/
43
44#include "emu.h"
45#include "formats/victor9k_dsk.h"
46
47victor9k_format::victor9k_format()
48{
49}
50
51const char *victor9k_format::name() const
52{
53   return "victor9k";
54}
55
56const char *victor9k_format::description() const
57{
58   return "Victor 9000 disk image";
59}
60
61const char *victor9k_format::extensions() const
62{
63   return "img";
64}
65
66int victor9k_format::find_size(io_generic *io, UINT32 form_factor)
67{
68   UINT64 size = io_generic_size(io);
69   for(int i=0; formats[i].sector_count; i++) {
70      const format &f = formats[i];
71      if(size == (UINT32) f.sector_count*f.sector_base_size*f.head_count)
72         return i;
73   }
74   return -1;
75}
76
77int victor9k_format::identify(io_generic *io, UINT32 form_factor)
78{
79   int type = find_size(io, form_factor);
80
81   if (type != -1)
82      return 50;
83
84   return 0;
85}
86
87floppy_image_format_t::desc_e* victor9k_format::get_sector_desc(const format &f, int &current_size, int sector_count)
88{
89   static floppy_image_format_t::desc_e desc[] = {
90      /* 00 */ { SECTOR_INTERLEAVE_SKEW, 0, 0},
91      /* 01 */ { SECTOR_LOOP_START, 0, -1 },
92      /* 02 */ {   SYNC_GCR5, 6 },
93      /* 03 */ {   GCR5, 0x07, 1 },
94      /* 04 */ {   CRC_VICTOR_HDR_START, 1 },
95      /* 05 */ {     TRACK_ID_VICTOR_GCR5 },
96      /* 06 */ {     SECTOR_ID_GCR5 },
97      /* 07 */ {   CRC_END, 1 },
98      /* 08 */ {   CRC, 1 },
99      /* 09 */ {   RAWBYTE, 0x55, 8 },
100      /* 10 */ {   SYNC_GCR5, 5 },
101      /* 11 */ {   GCR5, 0x08, 1 },
102      /* 12 */ {   CRC_VICTOR_DATA_START, 2 },
103      /* 13 */ {     SECTOR_DATA_GCR5, -1 },
104      /* 14 */ {   CRC_END, 2 },
105      /* 15 */ {   CRC, 2 },
106      /* 16 */ {   RAWBYTE, 0x55, 8 },
107      /* 17 */ { SECTOR_LOOP_END },
108      /* 18 */ { RAWBYTE, 0x55, 0 },
109      /* 19 */ { RAWBITS, 0x5555, 0 },
110      /* 20 */ { END }
111   };
112
113   current_size = 60 + (1+1+1+1)*10 + 8*8 + 50 + (1+f.sector_base_size+2)*10 + 8*8;
114
115   current_size *= sector_count;
116   return desc;
117}
118
119void victor9k_format::build_sector_description(const format &f, UINT8 *sectdata, offs_t sect_offs, desc_s *sectors, int sector_count) const
120{
121   for (int i = 0; i < sector_count; i++) {
122      sectors[i].data = sectdata + sect_offs;
123      sectors[i].size = f.sector_base_size;
124      sectors[i].sector_id = i;
125
126      sect_offs += sectors[i].size;
127   }
128}
129
130bool victor9k_format::load(io_generic *io, UINT32 form_factor, floppy_image *image)
131{
132   int type = find_size(io, form_factor);
133   if(type == -1)
134      return false;
135
136   const format &f = formats[type];
137
138   UINT64 size = io_generic_size(io);
139   dynamic_buffer img;
140   img.resize(size);
141
142   io_generic_read(io, img, 0, size);
143
144   int track_offset = 0;
145
146   for (int head = 0; head < f.head_count; head++) {
147      for (int track = 0; track < f.track_count; track++) {
148         int current_size = 0;
149         int total_size = 200000000./cell_size[speed_zone[head][track]];
150         int sector_count = sectors_per_track[head][track];
151         int track_size = sector_count*f.sector_base_size;
152
153         floppy_image_format_t::desc_e *desc = get_sector_desc(f, current_size, sector_count);
154
155         int remaining_size = total_size - current_size;
156         if(remaining_size < 0)
157            throw emu_fatalerror("victor9k_format: Incorrect track layout, max_size=%d, current_size=%d", total_size, current_size);
158
159         // Fixup the end gap
160         desc[18].p2 = remaining_size / 8;
161         desc[19].p2 = remaining_size & 7;
162         desc[19].p1 >>= remaining_size & 0x01;
163
164         desc_s sectors[40];
165
166         build_sector_description(f, img, track_offset, sectors, sector_count);
167         generate_track(desc, track, head, sectors, sector_count, total_size, image);
168
169         track_offset += track_size;
170      }
171   }
172
173   image->set_variant(f.variant);
174
175   return true;
176}
177
178bool victor9k_format::supports_save() const
179{
180   return false;
181}
182
183int victor9k_format::get_rpm(int head, int track)
184{
185   return rpm[speed_zone[head][track]];
186}
187
188const victor9k_format::format victor9k_format::formats[] = {
189   { //
190      floppy_image::FF_525, floppy_image::SSDD, 1224, 80, 1, 512
191   },
192   { //
193      floppy_image::FF_525, floppy_image::DSDD, 2448, 80, 2, 512
194   },
195   {}
196};
197
198const UINT32 victor9k_format::cell_size[9] =
199{
200   1789, 1896, 2009, 2130, 2272, 2428, 2613, 2847, 2961
201};
202
203const int victor9k_format::sectors_per_track[2][80] =
204{
205   {
206      19, 19, 19, 19,
207      18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
208      17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
209      16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
210      15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
211      14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
212      13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
213      12, 12, 12, 12, 12, 12, 12, 12, 12
214   },
215   {
216      18, 18, 18, 18, 18, 18, 18, 18,
217      17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
218      16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
219      15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
220      14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
221      13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
222      12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
223      11, 11, 11, 11, 11
224   }
225};
226
227const int victor9k_format::speed_zone[2][80] =
228{
229   {
230      0, 0, 0, 0,
231      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
232      2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
233      3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
234      4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
235      5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
236      6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
237      7, 7, 7, 7, 7, 7, 7, 7, 7
238   },
239   {
240      1, 1, 1, 1, 1, 1, 1, 1,
241      2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
242      3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
243      4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
244      5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
245      6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
246      7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
247      8, 8, 8, 8, 8
248   }
249};
250
251const int victor9k_format::rpm[9] =
252{
253   252, 267, 283, 300, 320, 342, 368, 401, 417
254};
255
256const floppy_format_type FLOPPY_VICTOR_9000_FORMAT = &floppy_image_format_creator<victor9k_format>;
trunk/src/lib/formats/victor9k_dsk.h
r0r241753
1// license:BSD-3-Clause
2// copyright-holders:Curt Coder
3/*********************************************************************
4
5    formats/victor9k_dsk.h
6
7    Victor 9000 sector disk image format
8
9*********************************************************************/
10
11#ifndef VICTOR9K_DSK_H_
12#define VICTOR9K_DSK_H_
13
14#include "flopimg.h"
15
16class victor9k_format : public floppy_image_format_t {
17public:
18   struct format {
19      UINT32 form_factor;      // See floppy_image for possible values
20      UINT32 variant;          // See floppy_image for possible values
21
22      UINT16 sector_count;
23      UINT8 track_count;
24      UINT8 head_count;
25      UINT16 sector_base_size;
26   };
27
28   victor9k_format();
29
30   virtual const char *name() const;
31   virtual const char *description() const;
32   virtual const char *extensions() const;
33
34   int find_size(io_generic *io, UINT32 form_factor);
35   virtual int identify(io_generic *io, UINT32 form_factor);
36   floppy_image_format_t::desc_e* get_sector_desc(const format &f, int &current_size, int sector_count);
37   void build_sector_description(const format &f, UINT8 *sectdata, offs_t sect_offs, desc_s *sectors, int sector_count) const;
38   virtual bool load(io_generic *io, UINT32 form_factor, floppy_image *image);
39   virtual bool supports_save() const;
40
41   static int get_rpm(int head, int track);
42
43protected:
44   static const format formats[];
45
46   static const UINT32 cell_size[9];
47   static const int sectors_per_track[2][80];
48   static const int speed_zone[2][80];
49   static const int rpm[9];
50};
51
52extern const floppy_format_type FLOPPY_VICTOR_9000_FORMAT;
53
54
55FLOPPY_IDENTIFY( victor9k_dsk_identify );
56
57FLOPPY_CONSTRUCT( victor9k_dsk_construct );
58
59#endif
trunk/src/lib/lib.mak
r241752r241753
215215   $(LIBOBJ)/formats/tzx_cas.o     \
216216   $(LIBOBJ)/formats/uef_cas.o     \
217217   $(LIBOBJ)/formats/upd765_dsk.o  \
218   $(LIBOBJ)/formats/victor9k_dsk.o\
218219   $(LIBOBJ)/formats/vg5k_cas.o    \
219220   $(LIBOBJ)/formats/vt_cas.o      \
220221   $(LIBOBJ)/formats/vt_dsk.o      \
trunk/src/lib/sqlite3/sqlite3.c
r241752r241753
84948494/*
84958495** Disable MMAP on platforms where it is known to not work
84968496*/
8497#if defined(__OpenBSD__) || defined(__QNXNTO__)
8497#if defined(__OpenBSD__) || defined(__QNXNTO__) || defined(__OS2__)
84988498# undef SQLITE_MAX_MMAP_SIZE
84998499# define SQLITE_MAX_MMAP_SIZE 0
8500# ifdef __OS2__
8501#  undef SQLITE_OMIT_WAL
8502#  define SQLITE_OMIT_WAL 0
8503# endif
85008504#endif
85018505
85028506/*
trunk/src/lib/web/mongoose.c
r241752r241753
7272#include <stdlib.h>
7373#include <string.h>
7474#include <time.h>
75#ifdef __OS2__
76#include <sys/time.h>  // struct timeval
77#endif
7578#include <signal.h>
7679
7780#ifdef _WIN32
r241752r241753
120123#include <sys/socket.h>
121124#include <sys/select.h>
122125#define closesocket(x) close(x)
126#ifdef __OS2__
127typedef int socklen_t;
128#else
123129#define __cdecl
130#endif
124131#define INVALID_SOCKET (-1)
125132#define to64(x) strtoll(x, NULL, 10)
126133typedef int sock_t;
r241752r241753
11701177#include <dlfcn.h>
11711178#include <inttypes.h>
11721179#include <pwd.h>
1180#ifndef __OS2__
11731181#define O_BINARY 0
1182#endif
11741183#define INT64_FMT PRId64
11751184typedef struct stat file_stat_t;
11761185typedef pid_t process_id_t;
r241752r241753
51525161#define MAP_FAILED NULL
51535162#define MAP_PRIVATE 0
51545163#define PROT_READ 0
5164#elif defined(__OS2__)
5165static void *mmap(void *addr, int64_t len, int prot, int flags, int fd,
5166               int offset) {
5167   void *p;
5168   off_t curpos;
5169
5170   p = malloc(len);
5171   if (!p)
5172       return NULL;
5173
5174   curpos = lseek(fd, 0, SEEK_CUR);
5175   lseek(fd, offset, SEEK_SET);
5176   read(fd, p, len);
5177   lseek(fd, curpos, SEEK_SET);
5178
5179   return p;
5180}
5181
5182#define munmap(x, y)  free(x)
5183#define MAP_FAILED NULL
5184#define MAP_PRIVATE 0
5185#define PROT_READ 0
51555186#else
51565187#include <sys/mman.h>
51575188#endif
trunk/src/mame/audio/harddriv.c
r241752r241753
3939
4040void harddriv_state::update_68k_interrupts()
4141{
42   m_soundcpu->set_input_line(1, m_mainflag ? ASSERT_LINE : CLEAR_LINE);
43   m_soundcpu->set_input_line(3, m_irq68k   ? ASSERT_LINE : CLEAR_LINE);
42   if (m_soundcpu) m_soundcpu->set_input_line(1, m_mainflag ? ASSERT_LINE : CLEAR_LINE);
43   if (m_soundcpu) m_soundcpu->set_input_line(3, m_irq68k   ? ASSERT_LINE : CLEAR_LINE);
4444}
4545
4646
r241752r241753
8282
8383WRITE16_MEMBER(harddriv_state::hd68k_snd_reset_w)
8484{
85   m_soundcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
86   m_soundcpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
85   if (m_soundcpu) m_soundcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
86   if (m_soundcpu) m_soundcpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
8787   m_mainflag = m_soundflag = 0;
8888   update_68k_interrupts();
8989   logerror("%06X:Reset sound\n", space.device().safe_pcbase());
r241752r241753
235235
236236WRITE16_MEMBER(harddriv_state::hdsnd68k_320ports_w)
237237{
238   m_sounddsp->space(AS_IO).write_word((offset & 7) << 1, data);
238   if (m_sounddsp) m_sounddsp->space(AS_IO).write_word((offset & 7) << 1, data);
239239}
240240
241241
trunk/src/mame/drivers/8080bw.c
r241752r241753
33613361   ROM_LOAD( "spaceatt.e",   0x1800, 0x0800, CRC(7cf6f604) SHA1(469557de15178c4b2d686e5724e1006f7c20d7a4) )
33623362ROM_END
33633363
3364ROM_START( galmonst )
3365   ROM_REGION( 0x10000, "maincpu", 0 )
3366   ROM_LOAD( "h.5m",            0x0000, 0x0400, CRC(8a0395e9) SHA1(f456aaa0301a1d0f3f9f45cbe39c5ff14909ecd3) )
3367   ROM_LOAD( "g.5n",            0x0400, 0x0400, CRC(6183ed16) SHA1(8e0bc13cafa237daa5fdeda9a5d6df8f491eabc2) )
3368   ROM_LOAD( "f.5p",            0x0800, 0x0400, CRC(b6047fdd) SHA1(bc324a9bf7829a2c2bb2bbf965d64272b0d07223) )
3369   ROM_LOAD( "c.5t",            0x1400, 0x0400, CRC(e88e8c96) SHA1(43108ddb328914c68977c7c49b4c1f71073ca36b) )
3370   ROM_LOAD( "b.5u",            0x1800, 0x0400, CRC(34678b80) SHA1(17f01facb3272c963a8bca290c4ca36411b8de31) )
3371   ROM_LOAD( "a.5v",            0x1c00, 0x0400, CRC(05a6806b) SHA1(ea884110d0ea6463801cbc2f87ce9c4921b49e33) )
3372ROM_END
3373
3374
3375
3376
3377
3378
3379
33643380ROM_START( spacecom )
33653381   ROM_REGION( 0x10000, "maincpu", 0 )
33663382   ROM_LOAD( "1f.ic67",      0x0000, 0x0400, BAD_DUMP CRC(703f2cbe) SHA1(b183f9fbedd8658399555c0ba21ecab6370e86cb) )
r241752r241753
46804696GAMEL(1980?,sinvzen,    invaders, invaders,  sinvzen,   driver_device, 0, ROT270, "Taito / Zenitone-Microsec Ltd.", "Super Invaders (Zenitone-Microsec)", GAME_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
46814697GAMEL(1980, ultrainv,   invaders, invaders,  sicv,      driver_device, 0, ROT270, "Taito / Konami", "Ultra Invaders", GAME_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
46824698GAMEL(1978, spaceatt,   invaders, invaders,  sicv,      driver_device, 0, ROT270, "bootleg (Video Games GmbH)", "Space Attack (bootleg of Space Invaders)", GAME_SUPPORTS_SAVE, layout_invaders )
4699GAMEL(1978, galmonst,   invaders, invaders,  sicv,      driver_device, 0, ROT270, "bootleg (Laguna S.A.)", "Galaxy Monsters (Laguna S.A. Spanish bootleg of Space Invaders)", GAME_SUPPORTS_SAVE, layout_invaders )
46834700GAMEL(1980, spaceat2,   invaders, invaders,  spaceat2,  driver_device, 0, ROT270, "bootleg (Video Games UK)", "Space Attack II (bootleg of Super Invaders)", GAME_SUPPORTS_SAVE, layout_invaders ) // bootleg of Zenitone-Microsec Super Invaders
46844701GAMEL(1979, spacecom,   invaders, spacecom,  spacecom,  _8080bw_state, spacecom, ROT270, "bootleg", "Space Combat (bootleg of Space Invaders)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_spacecom )
46854702GAME( 1978, spacerng,   invaders, spacerng,  sitv,      driver_device, 0, ROT90,  "bootleg (Leisure Time Electronics)", "Space Ranger (bootleg of Space Invaders)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) // many modifications
trunk/src/mame/drivers/adp.c
r241752r241753
193193   DECLARE_PALETTE_INIT(fstation);
194194   DECLARE_WRITE_LINE_MEMBER(duart_irq_handler);
195195   //INTERRUPT_GEN_MEMBER(adp_int);
196   void skattva_nvram_init(nvram_device &nvram, void *base, size_t size);
196197};
197198
199void adp_state::skattva_nvram_init(nvram_device &nvram, void *base, size_t size)
200{
201/*
202    00F6FA: 4EB9 0001 A4B2             jsr     $1a4b2.l
203    00F700: 0CB8 2400 0018 E450        cmpi.l  #$24000018, $e450.w
204    00F708: 6606                       bne     $f710
205    00F70A: 4EB9 0001 D7F4             jsr     $1d7f4.l                 ; initializes the HD63484
206    00F710: 11FC 0010 E8AD             move.b  #$10, $e8ad.w
207*/
208   UINT16 *ram = (UINT16 *)base;
209   ram[0x2450 >> 1] = 0x2400;
210   ram[0x2452 >> 1] = 0x0018;
211   ram[0x0000 >> 1] = 0x3141;
212   ram[0x0002 >> 1] = 0x5926;
213}
198214
199215
216
200217/***************************************************************************
201218
202219    68681 DUART <-> Microtouch touch screen controller communication
r241752r241753
277294   AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram")
278295ADDRESS_MAP_END
279296
297static ADDRESS_MAP_START( skattva_mem, AS_PROGRAM, 16, adp_state )
298   AM_RANGE(0x000000, 0x03ffff) AM_ROM
299   AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc",msm6242_device, read, write, 0x00ff)
300   AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("h63484", h63484_device, status_r, address_w)
301   AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("h63484", h63484_device, data_r, data_w)
302   AM_RANGE(0x800100, 0x800101) AM_READ_PORT("IN0")
303   AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too
304   AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff )
305   AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram")
306ADDRESS_MAP_END
307
280308static ADDRESS_MAP_START( quickjac_mem, AS_PROGRAM, 16, adp_state )
281309   AM_RANGE(0x000000, 0x01ffff) AM_ROM
282310   AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc",msm6242_device, read, write, 0x00ff)
r241752r241753
313341
314342static ADDRESS_MAP_START( fstation_mem, AS_PROGRAM, 16, adp_state )
315343   AM_RANGE(0x000000, 0x0fffff) AM_ROM
316   //400000-40001f?
317344   AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("h63484", h63484_device, status_r, address_w)
318345   AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("h63484", h63484_device, data_r, data_w)
319346   AM_RANGE(0x800100, 0x800101) AM_READWRITE(input_r, input_w)
r241752r241753
400427   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN1 )
401428INPUT_PORTS_END
402429
430static INPUT_PORTS_START( skattva )
431   PORT_START("PA")
432   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
433   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_HBLANK("screen")
434   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
435   PORT_BIT( 0x9e, IP_ACTIVE_HIGH, IPT_UNKNOWN )
436
437   PORT_START("IN0")
438   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON3 )
439   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
440   PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
441   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
442   PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
443   PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON1 )
444   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON2 )
445   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_START1 )
446   PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
447
448   PORT_START("DSW1")
449   PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNKNOWN )
450INPUT_PORTS_END
451
403452static INPUT_PORTS_START( fstation )
404453   PORT_START("PA")
405454   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
r241752r241753
527576   MCFG_CPU_PROGRAM_MAP(skattv_mem)
528577MACHINE_CONFIG_END
529578
579static MACHINE_CONFIG_DERIVED( skattva, quickjac )
580   MCFG_CPU_MODIFY("maincpu")
581   MCFG_CPU_PROGRAM_MAP(skattva_mem)
582
583   MCFG_NVRAM_REPLACE_CUSTOM_DRIVER("nvram", adp_state, skattva_nvram_init)
584MACHINE_CONFIG_END
585
530586static MACHINE_CONFIG_DERIVED( backgamn, skattv )
531587   MCFG_CPU_MODIFY("maincpu")
532588   MCFG_CPU_PROGRAM_MAP(backgamn_mem)
r241752r241753
664720GAME( 1990, backgamn,  0,        backgamn,    skattv, driver_device,    0, ROT0,  "ADP",     "Backgammon", GAME_NOT_WORKING )
665721GAME( 1993, quickjac,  0,        quickjac,    quickjac, driver_device,  0, ROT0,  "ADP",     "Quick Jack", GAME_NOT_WORKING )
666722GAME( 1994, skattv,    0,        skattv,      skattv, driver_device,    0, ROT0,  "ADP",     "Skat TV", GAME_NOT_WORKING )
667GAME( 1995, skattva,   skattv,   skattv,      skattv, driver_device,    0, ROT0,  "ADP",     "Skat TV (version TS3)", GAME_NOT_WORKING )
723GAME( 1995, skattva,   skattv,   skattva,     skattva, driver_device,   0, ROT0,  "ADP",     "Skat TV (version TS3)", GAME_NOT_WORKING )
668724GAME( 1997, fashiong,  0,        fashiong,    skattv, driver_device,    0, ROT0,  "ADP",     "Fashion Gambler (set 1)", GAME_NOT_WORKING )
669725GAME( 1997, fashiong2, fashiong, fashiong,    skattv, driver_device,    0, ROT0,  "ADP",     "Fashion Gambler (set 2)", GAME_NOT_WORKING )
670726GAME( 1999, funlddlx,  0,        funland,     skattv, driver_device,    0, ROT0,  "Stella",  "Funny Land de Luxe", GAME_NOT_WORKING )
trunk/src/mame/drivers/atarig1.c
r241752r241753
428428   MCFG_CPU_PROGRAM_MAP(main_map)
429429   MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
430430
431   MCFG_SLAPSTIC_ADD("slapstic")
432
431433   MCFG_MACHINE_START_OVERRIDE(atarig1_state,atarig1)
432434   MCFG_MACHINE_RESET_OVERRIDE(atarig1_state,atarig1)
433435
trunk/src/mame/drivers/atarisy1.c
r241752r241753
713713   MCFG_CPU_PROGRAM_MAP(main_map)
714714   MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
715715
716   MCFG_SLAPSTIC_ADD("slapstic")
717
716718   MCFG_CPU_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8)
717719   MCFG_CPU_PROGRAM_MAP(sound_map)
718720
trunk/src/mame/drivers/atarisy2.c
r241752r241753
126126
127127
128128#include "emu.h"
129#include "includes/slapstic.h"
130129#include "includes/atarisy2.h"
131130#include "sound/tms5220.h"
132131#include "sound/2151intf.h"
r241752r241753
222221MACHINE_RESET_MEMBER(atarisy2_state,atarisy2)
223222{
224223   atarigen_state::machine_reset();
225   slapstic_reset();
224   m_slapstic->slapstic_reset();
226225   scanline_timer_reset(*m_screen, 64);
227226
228227   m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(atarisy2_state::atarisy2_direct_handler), this));
r241752r241753
12081207   MCFG_CPU_PROGRAM_MAP(sound_map)
12091208   MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, (double)MASTER_CLOCK/2/16/16/16/10)
12101209
1210   MCFG_SLAPSTIC_ADD("slapstic")
1211
12111212   MCFG_MACHINE_START_OVERRIDE(atarisy2_state,atarisy2)
12121213   MCFG_MACHINE_RESET_OVERRIDE(atarisy2_state,atarisy2)
12131214
r241752r241753
31433144   int i;
31443145   UINT8 *cpu1 = memregion("maincpu")->base();
31453146
3146   slapstic_init(machine(), 105);
3147   m_slapstic->slapstic_init(machine(), 105);
31473148
31483149   /* expand the 16k program ROMs into full 64k chunks */
31493150   for (i = 0x10000; i < 0x90000; i += 0x20000)
r241752r241753
31643165   /* without the default EEPROM, 720 hangs at startup due to communication
31653166      issues with the sound CPU; temporarily increasing the sound CPU frequency
31663167      to ~2.2MHz "fixes" the problem */
3167   slapstic_init(machine(), 107);
3168   m_slapstic->slapstic_init(machine(), 107);
31683169
31693170   m_pedal_count = -1;
31703171   m_has_tms5220 = 1;
r241752r241753
31773178   int i;
31783179   UINT8 *cpu1 = memregion("maincpu")->base();
31793180
3180   slapstic_init(machine(), 108);
3181   m_slapstic->slapstic_init(machine(), 108);
31813182
31823183   /* expand the 32k program ROMs into full 64k chunks */
31833184   for (i = 0x10000; i < 0x90000; i += 0x20000)
r241752r241753
31933194   int i;
31943195   UINT8 *cpu1 = memregion("maincpu")->base();
31953196
3196   slapstic_init(machine(), 109);
3197   m_slapstic->slapstic_init(machine(), 109);
31973198
31983199   /* expand the 32k program ROMs into full 64k chunks */
31993200   for (i = 0x10000; i < 0x90000; i += 0x20000)
r241752r241753
32063207
32073208DRIVER_INIT_MEMBER(atarisy2_state,apb)
32083209{
3209   slapstic_init(machine(), 110);
3210   m_slapstic->slapstic_init(machine(), 110);
32103211
32113212   m_pedal_count = 2;
32123213   m_has_tms5220 = 1;
trunk/src/mame/drivers/atetris.c
r241752r241753
4949
5050#include "emu.h"
5151#include "cpu/m6502/m6502.h"
52#include "includes/slapstic.h"
5352#include "includes/atetris.h"
5453#include "sound/sn76496.h"
5554#include "sound/pokey.h"
r241752r241753
115114void atetris_state::machine_reset()
116115{
117116   /* reset the slapstic */
118   slapstic_reset();
119   m_current_bank = slapstic_bank() & 1;
117   m_slapstic_device->slapstic_reset();
118   m_current_bank = m_slapstic_device->slapstic_bank() & 1;
120119   reset_bank();
121120
122121   /* start interrupts going (32V clocked by 16V) */
r241752r241753
134133READ8_MEMBER(atetris_state::atetris_slapstic_r)
135134{
136135   int result = m_slapstic_base[0x2000 + offset];
137   int new_bank = slapstic_tweak(space, offset) & 1;
136   int new_bank = m_slapstic_device->slapstic_tweak(space, offset) & 1;
138137
139138   /* update for the new bank */
140139   if (new_bank != m_current_bank)
r241752r241753
308307   MCFG_CPU_ADD("maincpu", M6502,MASTER_CLOCK/8)
309308   MCFG_CPU_PROGRAM_MAP(main_map)
310309
310   MCFG_SLAPSTIC_ADD("slapstic")
311
311312   MCFG_NVRAM_ADD_1FILL("nvram")
312313
313314   /* video hardware */
r241752r241753
456457{
457458   UINT8 *rgn = memregion("maincpu")->base();
458459
459   slapstic_init(machine(), 101);
460   m_slapstic_device->slapstic_init(machine(), 101);
460461   m_slapstic_source = &rgn[0x10000];
461462   m_slapstic_base = &rgn[0x04000];
462463}
trunk/src/mame/drivers/bagman.c
r241752r241753
256256   PORT_DIPSETTING(    0x00, DEF_STR( French ) )
257257INPUT_PORTS_END
258258
259static INPUT_PORTS_START( botanic )
259static INPUT_PORTS_START( botanicf )
260260   PORT_INCLUDE( bagman )
261261
262262   PORT_MODIFY("DSW")
263   PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) )            PORT_DIPLOCATION("SW1:1,2")
264   PORT_DIPSETTING(    0x00, "1" )
265   PORT_DIPSETTING(    0x03, "2" )
266   PORT_DIPSETTING(    0x02, "3" )
267   PORT_DIPSETTING(    0x01, "4" )
268   PORT_DIPNAME( 0x04, 0x00, DEF_STR( Coinage ) )          PORT_DIPLOCATION("SW1:3")
269   PORT_DIPSETTING(    0x00, "1C/1C 1C/2C 1C/6C 1C/14C" )
270   PORT_DIPSETTING(    0x04, "2C/1C 1C/2C 1C/3C 1C/7C" )
263271   PORT_DIPNAME( 0x08, 0x08, "Invulnerability Fruits" )    PORT_DIPLOCATION("SW1:4")
264272   PORT_DIPSETTING(    0x08, "3" )
265273   PORT_DIPSETTING(    0x00, DEF_STR( None ) )
r241752r241753
268276   PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW1:7" )
269277INPUT_PORTS_END
270278
279static INPUT_PORTS_START( botanici )
280   PORT_INCLUDE( botanicf )
271281
282   PORT_MODIFY("P2") // only seems to have 2 coin slots
283   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
284   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
285
286   PORT_MODIFY("DSW") // dipswitches are a bit messy on this set
287   PORT_DIPNAME( 0x04, 0x00, DEF_STR( Coinage ) )          PORT_DIPLOCATION("SW1:3")
288   PORT_DIPSETTING(    0x00, "1C/1C 1C/2C" )
289   PORT_DIPSETTING(    0x04, "2C/1C 1C/2C" )
290   PORT_DIPNAME( 0x18, 0x18, "Invulnerability Fruits" )    PORT_DIPLOCATION("SW1:4,5")
291   PORT_DIPSETTING(    0x00, "2" )
292   PORT_DIPSETTING(    0x08, "3" )
293   PORT_DIPSETTING(    0x10, "3 (duplicate 1)" )
294   PORT_DIPSETTING(    0x18, "3 (duplicate 2)" )
295   PORT_DIPNAME( 0x20, 0x20, "Language / Disable Invlunerability Fruits" )          PORT_DIPLOCATION("SW1:6") // changing this off, even in game, seems to remove all fruits you have?
296   PORT_DIPSETTING(    0x20, "Fruits On, English" )
297   PORT_DIPSETTING(    0x00, "Fruits Off, Spanish" )
298INPUT_PORTS_END
299
300
272301static INPUT_PORTS_START( squaitsa )
273302   PORT_START("P1")
274303   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
r241752r241753
834863   ROM_LOAD( "6331-1.3r",    0x0020, 0x0020, CRC(14ee1603) SHA1(f3c071399606b727ae7dd0bfc21e1c6ca2d43c7c) )
835864ROM_END
836865
866
867
868
837869ROM_START( botanic )
838870   ROM_REGION( 0x10000, "maincpu", 0 )
871   ROM_LOAD( "5.9e",     0x0000, 0x1000, CRC(907f01c7) SHA1(156b6b6bbc2176998fb0c18ad453fc42185ae490) )
872   ROM_LOAD( "06.9f",    0x1000, 0x1000, CRC(ff2533fb) SHA1(808a1555c16470b87fca0aea73e0291dbe0b9355) )
873   ROM_LOAD( "07.9j",    0x2000, 0x1000, CRC(b7c544ef) SHA1(75b5224c313e97c2c02ca7e9bc3f682278cb7a5c) )
874   ROM_LOAD( "08.9k",    0x3000, 0x1000, CRC(2df22793) SHA1(d1f27c915e7563abba4d14ec3fd6757a4d6137be) )
875   ROM_LOAD( "09.9m",    0x4000, 0x1000, CRC(f7d908ec) SHA1(ee5827f84505c1f37bebf48181d3e7759421fada) )
876   ROM_LOAD( "10.9n",    0x5000, 0x1000, CRC(7ce9fbc8) SHA1(cd2ba01470964640fad9ccf6ff23cbd76c0c2aeb) )
877
878   ROM_REGION( 0x2000, "gfx1", 0 )
879   ROM_LOAD( "2.1e",   0x0000, 0x1000, CRC(bea449a6) SHA1(fe06208996d15a4d50753fb62a3020063a0a6620) )
880   ROM_LOAD( "4.1j",   0x1000, 0x1000, CRC(a5deb8ed) SHA1(b6b38daffdda263a366656168a6d094ad2b1458f) )
881
882   ROM_REGION( 0x2000, "gfx2", 0 )
883   ROM_LOAD( "1.1c",    0x0000, 0x1000, CRC(a1148d89) SHA1(b1424693cebc410749216457d07bae54b903bc07) )
884   ROM_LOAD( "3.1f",    0x1000, 0x1000, CRC(70be5565) SHA1(a7eab667a82d3e7321f393073f29c6e5e865ec6b) )
885
886   ROM_REGION( 0x0040, "proms", 0 )
887   ROM_LOAD( "prom.3p",    0x0000, 0x0020, CRC(a8a2ddd2) SHA1(fc2da863d13e92f7682f393a08bc9357841ae7ea) )
888   ROM_LOAD( "prom.3r",    0x0020, 0x0020, CRC(edf88f34) SHA1(b9c342d51303d552f87df2543a34e38c30acd07c) )
889ROM_END
890
891ROM_START( botanicf )
892   ROM_REGION( 0x10000, "maincpu", 0 )
839893   ROM_LOAD( "bota_05.9e",    0x0000, 0x1000, CRC(cc66e6f8) SHA1(251481b16f8925a11f02f49e5a79f6524460aa6c) )
840894   ROM_LOAD( "bota_06.9f",    0x1000, 0x1000, CRC(59892f41) SHA1(eb01601a9163679560b878366aaf7cc0fb54a3e9) )
841895   ROM_LOAD( "bota_07.9j",    0x2000, 0x1000, CRC(b7c544ef) SHA1(75b5224c313e97c2c02ca7e9bc3f682278cb7a5c) )
r241752r241753
934988
935989GAME( 1983, pickin,   0,       pickin,  pickin, driver_device,  0,       ROT270, "Valadon Automation", "Pickin'", 0 )
936990
937GAME( 1984, botanic,  0,       botanic, botanic, driver_device, 0,       ROT270, "Itisa (Valadon Automation license)", "Botanic (French)", 0 ) // the game was made by Itisa, there is a Spanish original (not yet dumped)
991GAME( 1983, botanic,  0,       botanic, botanici,driver_device, 0,       ROT90,  "Itisa",                              "Botanic (English / Spanish)", 0 )
992GAME( 1984, botanicf, botanic, botanic, botanicf,driver_device, 0,       ROT270, "Itisa (Valadon Automation license)", "Botanic (French)", 0 )
938993
939994GAME( 1984, squaitsa, 0,       squaitsa,squaitsa, driver_device,0,       ROT0,   "Itisa", "Squash (Itisa)", 0 )
trunk/src/mame/drivers/beaminv.c
r241752r241753
11/***************************************************************************
22
3    Tekunon Kougyou Beam Invader hardware
3    Tekunon Kougyou(Teknon Kogyo) Beam Invader hardware
44
55    driver by Zsolt Vasvari
66
r241752r241753
385385 *
386386 *************************************/
387387
388GAMEL( 1979, beaminv,  0,       beaminv, beaminv, driver_device, 0, ROT270, "Tekunon Kougyou",   "Beam Invader", GAME_NO_SOUND | GAME_SUPPORTS_SAVE, layout_beaminv )
388GAMEL( 1979, beaminv,  0,       beaminv, beaminv, driver_device, 0, ROT270, "Teknon Kogyo", "Beam Invader", GAME_NO_SOUND | GAME_SUPPORTS_SAVE, layout_beaminv )
389389GAMEL( 1979, pacominv, beaminv, beaminv, pacominv, driver_device, 0, ROT270, "Pacom Corporation", "Pacom Invader", GAME_NO_SOUND | GAME_SUPPORTS_SAVE, layout_beaminv )
trunk/src/mame/drivers/calchase.c
r241752r241753
121121
122122#include "emu.h"
123123#include "cpu/i386/i386.h"
124#include "machine/pci.h"
124#include "machine/lpci.h"
125125#include "machine/pckeybrd.h"
126126#include "machine/idectrl.h"
127127#include "video/pc_vga.h"
128128#include "sound/dac.h"
129129#include "machine/pcshare.h"
130#include "machine/ds128x.h"
130131#include "bus/isa/trident.h"
131132
132133
r241752r241753
661662   /* video hardware */
662663   MCFG_FRAGMENT_ADD( pcvideo_trident_vga )
663664
665   MCFG_DEVICE_REMOVE("rtc")
666   MCFG_DS12885_ADD("rtc")
667   MCFG_MC146818_IRQ_HANDLER(DEVWRITELINE("pic8259_2", pic8259_device, ir0_w))
668   MCFG_MC146818_CENTURY_INDEX(0x32)
669
664670   /* sound hardware */
665671   MCFG_SPEAKER_STANDARD_STEREO("lspeaker","rspeaker")
666672   MCFG_DAC_ADD("dac_l")
trunk/src/mame/drivers/cclimber.c
r241752r241753
17881788ROM_END
17891789
17901790
1791ROM_START( ckongdks )
1792   ROM_REGION( 0x10000, "maincpu", 0 )
1793   ROM_LOAD( "ck13.bin",      0x0800, 0x0800, CRC(f97ba8ae) SHA1(ae4a578ad77a8d3252f2f99a1afa6f38bc00471e) ) // 97.509766%
1794   ROM_CONTINUE(              0x0000, 0x0800 )
1795   ROM_LOAD( "ck09.bin",      0x1000, 0x1000, CRC(fe89dea4) SHA1(c39372ebe9950808ebc1ff7909c291496b206026) )
1796   ROM_LOAD( "ck11.bin",      0x2000, 0x1000, CRC(b3947d06) SHA1(1c5e66e1f11313e11de760cda406c1fe237ce09a) ) // 99.975586%
1797   ROM_LOAD( "ck12.bin",      0x3000, 0x1000, CRC(23d0657d) SHA1(dfebf3902186a3ab3b36c6d07bdbc832885347b4) ) // 95.214844%
1798   ROM_LOAD( "ck10.bin",      0x4800, 0x0800, CRC(c27a13f1) SHA1(14f11976bc0e643829a4d4d2d5bb27971979be6f) ) // 94.921875%
1799   ROM_CONTINUE(              0x4000, 0x0800 )
1800
1801   ROM_REGION( 0x4000, "gfx1", 0 )
1802   ROM_LOAD( "ck06.bin",      0x0000, 0x1000, CRC(a8916dc8) SHA1(472520aae3837e6026f2a7577d3b2aff371a316c) )
1803   ROM_LOAD( "ck05.bin",      0x1000, 0x1000, CRC(cd3b5dde) SHA1(2319a2be04d70989b01f4fc703756ba6e1c1f388) )
1804   ROM_LOAD( "ck04.bin",      0x2000, 0x1000, CRC(b62a0367) SHA1(8c285cbc714d7e6589bd63b3cef7c841ed1c2a4e) )
1805   ROM_LOAD( "ck03.bin",      0x3000, 0x1000, CRC(61122c5e) SHA1(978b6dbec35f3adc651fddf332db17625099a92e) )
1806
1807   ROM_REGION( 0x1000, "gfx2", 0 )
1808   ROM_LOAD( "ck02.bin",  0x0000, 0x0800, CRC(085b5f90) SHA1(cce771fbd76c2bc7749325d71c95810898e5b0d9) ) // 98.730469%
1809   ROM_LOAD( "ck01.bin",  0x0800, 0x0800, CRC(16fd47e2) SHA1(43e5ea70e99482db90681e401a7e1e2d2d36b6f4) ) // 98.339844%
1810
1811   ROM_REGION( 0x0160, "proms", 0 ) // not dumped, assuming to be the same as dking
1812   ROM_LOAD( "ck6v.bin",     0x0000, 0x0020, CRC(751c3325) SHA1(edce2bc883996c1d72dc6c1c9f62799b162d415a) ) // 82s123.1v
1813   ROM_LOAD( "ck6u.bin",     0x0020, 0x0020, CRC(ab1940fa) SHA1(8d98e05cbaa6f55770c12e0a9a8ed9c73cc54423) ) // 82s123.1u
1814   ROM_LOAD( "ck6t.bin",     0x0040, 0x0020, CRC(b4e827a5) SHA1(31a5a5ad54417a474d22bb16c473415d99a2b6f1) ) // 82s123.1t
1815   ROM_LOAD( "82s129.5g",    0x0060, 0x0100, CRC(9e11550d) SHA1(b8cba8e16e10e23fba1f11551102ab77b680bdf0) ) // Decryption Table?
1816
1817   ROM_REGION( 0x2000, "samples", 0 )  /* samples */
1818   ROM_LOAD( "ck08.bin",    0x0000, 0x1000, CRC(31c0a7de) SHA1(ace23fde4cb3c336b8377c1a1e940607d545e8c3) ) // 97.241211%
1819   ROM_LOAD( "ck07.bin",    0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
1820ROM_END
1821
17911822/* This set came from a 'Silver Land' board with Silver Land GFX roms, however, the program roms are nearly
17921823   the same as River Patrol but appear to have an original ORCA copyright
17931824
r241752r241753
23632394GAME( 1981, ckong,       0,        cclimber, ckong, driver_device,    0,        ROT270, "Kyoei / Falcon", "Crazy Kong", 0 ) // on a Falcon FCK-01 PCB, but doesn't display any Falcon copyright
23642395GAME( 1981, ckongalc,    ckong,    cclimber, ckong, driver_device,    0,        ROT270, "bootleg (Alca)", "Crazy Kong (Alca bootleg)", 0 )
23652396GAME( 1981, monkeyd,     ckong,    cclimber, ckong, driver_device,    0,        ROT270, "bootleg", "Monkey Donkey", 0 )
2366GAME( 1981, dking,       ckong   , cclimber, ckong, cclimber_state,    dking,    ROT270, "bootleg", "Donkey King", 0 )
2397GAME( 1981, dking,       ckong,    cclimber, ckong, cclimber_state,   dking,    ROT270, "bootleg", "Donkey King", 0 )
2398GAME( 1981, ckongdks,    ckong,    cclimber, ckong, cclimber_state,   dking,    ROT270, "bootleg", "Donkey Kong (Spanish Crazy Kong bootleg)", 0 )
23672399
23682400/* these sets have correct colours, and also contain the graphics used for the extra attract screen in the BG roms, but it is unused
23692401 - the Falcon logo in the text roms is still unused
trunk/src/mame/drivers/chihiro.c
r241752r241753
358358
359359#include "emu.h"
360360#include "cpu/i386/i386.h"
361#include "machine/pci.h"
361#include "machine/lpci.h"
362362#include "machine/pic8259.h"
363363#include "machine/pit8253.h"
364364#include "machine/idectrl.h"
trunk/src/mame/drivers/cobra.c
r241752r241753
313313
314314#include "emu.h"
315315#include "cpu/powerpc/ppc.h"
316#include "machine/pci.h"
316#include "machine/lpci.h"
317317#include "machine/ataintf.h"
318318#include "machine/idehd.h"
319319#include "machine/jvshost.h"
trunk/src/mame/drivers/coolridr.c
r241752r241753
1818    - i8237 purpose is unknown (missing ROM for comms?).
1919    - verify zooming etc. our current algorithm is a bit ugly for text
2020
21
21    Also known to exist on this hardware is Aqua Stage (Coin pusher):
22     833-12000 AQUA STAGE
23      Program roms EPR-18279 through EPR-18282
24      12 MASK roms (MPR numbers unknown)
25      SUB CPU program rom EPR-18278
2226=======================================================================================================
2327
2428Cool Riders
2529Sega 1994
2630
27This game runs on SYSTEM-H1 hardware. Only one known game exists on this
28PCB and this is it. The hardware seems overly complex for a 2D bike
29racing game? The design of the PCB is very similar to vanilla Model 2
30(i.e. Daytona etc). However instead of fully custom-badged chips,
31many of the custom chips are off-the-shelf Hitachi/Toshiba gate-arrays.
31This game runs on SYSTEM-H1 hardware. The hardware seems overly complex for a
322D bike racing game? The design of the PCB is very similar to vanilla Model 2
33(i.e. Daytona etc). However instead of fully custom-badged chips, many of the
34custom chips are off-the-shelf Hitachi/Toshiba gate-arrays.
3235
3336
3437PCB Layouts
trunk/src/mame/drivers/cps1.c
r241752r241753
40024002   ROM_LOAD( "sou1",         0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
40034003
40044004   ROM_REGION( 0x0200, "bboardplds", 0 )
4005   ROM_LOAD( "sth63b.1a",    0x0000, 0x0117, NO_DUMP )
4005   ROM_LOAD( "sth63b.1a",    0x0000, 0x0117, BAD_DUMP CRC(c706b773) SHA1(ddfe2e747637eec081a5125cfefcb478a4ba9e76) ) /* Handcrafted but works on actual PCB.  Redump needed */
40064006   ROM_LOAD( "iob1.12d",     0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
40074007   ROM_LOAD( "bprg1.11d",    0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
40084008
r241752r241753
44834483   ROM_LOAD( "sou1",         0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
44844484
44854485   ROM_REGION( 0x0200, "bboardplds", 0 )
4486   ROM_LOAD( "ara63b.1a",    0x0000, 0x0117, NO_DUMP )
4486   ROM_LOAD( "ara63b.1a",    0x0000, 0x0117, BAD_DUMP CRC(f5569c93) SHA1(7db7cf23639036590eef1e5e309f08560859efaf) ) /* Handcrafted but works on actual PCB.  Redump needed */
44874487   ROM_LOAD( "iob1.12d",     0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
44884488   ROM_LOAD( "bprg1.11d",    0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
44894489
trunk/src/mame/drivers/cv1k.c
r241752r241753
514514   ROM_RELOAD(0x200000,0x200000)
515515
516516   ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF)
517//  ROM_LOAD("mushisama_u2", 0x000000, 0x8400000, CRC(f1e0cf65) SHA1(d00d950422309fdf08efe1e2d5f040beb45ee6fb) ) // bad rom, one corrupt asset vs. below
518517   ROM_LOAD("mushisam_u2", 0x000000, 0x8400000, CRC(4f0a842a) SHA1(33f3550ec676a7088b6348cd72c16cc6594afb84) ) /* (2004/10/12.MASTER VER.) */
519518
520519   ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF)
r241752r241753
528527   ROM_RELOAD(0x200000,0x200000)
529528
530529   ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF)
531//  ROM_LOAD("mushisamb_u2", 0x000000, 0x8400000, CRC(6cc9d1a9) SHA1(17907798dce1defadd10354cec6c8d364e045570) ) // bad rom, one corrupt asset vs. below
532530   ROM_LOAD("mushisam_u2", 0x000000, 0x8400000, CRC(4f0a842a) SHA1(33f3550ec676a7088b6348cd72c16cc6594afb84) ) /* (2004/10/12.MASTER VER.) */
533531
534532   ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF)
r241752r241753
616614   ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(c631a766) SHA1(8bb6934a2f5b8a9841c3dcf85192b1743773dd8b) )
617615ROM_END
618616
619ROM_START( futaribl )
617ROM_START( futaribl ) /* Title screen shows (c) 2007 despite the 2009 "master" date - Also prints "Another Ver" to the title screen */
620618   ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF)
619   ROM_LOAD16_WORD_SWAP( "futaribli_u4", 0x000000, 0x200000, CRC(1971dd16) SHA1(e75993f2978cbaaf925b4b8bb33d094a5a7cebf0) )
620   ROM_RELOAD(0x200000,0x200000)
621
622   ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF)
623   ROM_LOAD( "futariblk_u2", 0x000000, 0x8400000, CRC(08c6fd62) SHA1(e1fc386b2b0e41906c724287cbf82304297e0150) )
624
625   ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF)
626   ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(39f1e1f4) SHA1(53d12f59a56df35c705408c76e6e02118da656f1) )
627   ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(c631a766) SHA1(8bb6934a2f5b8a9841c3dcf85192b1743773dd8b) )
628ROM_END
629
630ROM_START( futariblj )
631   ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF)
621632   ROM_LOAD16_WORD_SWAP( "futariblk_u4", 0x000000, 0x200000, CRC(6db13c62) SHA1(6a53ce7f70b754936ccbb3a4674d4b2f03979644) ) /* (2007/12/11 BLACK LABEL VER) */
622633   ROM_RELOAD(0x200000,0x200000)
623634
r241752r241753
844855// The black label versions are intentionally not set as clones, they were re-releases with different game codes, not bugfixes.
845856
846857// CA011  Mushihime-Sama
847GAME( 2004, mushisam,   0,        cv1k,   cv1k, cv1k_state, mushisama, ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12.MASTER VER.)",                        0 )
848GAME( 2004, mushisama,  mushisam, cv1k,   cv1k, cv1k_state, mushisam,  ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12 MASTER VER.)",                        0 )
849GAME( 2004, mushisamb,  mushisam, cv1k,   cv1k, cv1k_state, mushisama, ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12 MASTER VER)",                         0 )
858GAME( 2004, mushisam,   0,        cv1k,   cv1k, cv1k_state, mushisama, ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12.MASTER VER.)",                         0 )
859GAME( 2004, mushisama,  mushisam, cv1k,   cv1k, cv1k_state, mushisam,  ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12 MASTER VER.)",                         0 )
860GAME( 2004, mushisamb,  mushisam, cv1k,   cv1k, cv1k_state, mushisama, ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12 MASTER VER)",                          0 )
850861
851862// CA012  Ibara
852GAME( 2005, ibara,      0,        cv1k,   cv1k, cv1k_state, mushisam,  ROT270, "Cave (AMI license)", "Ibara (2005/03/22 MASTER VER..)",                                0 )
863GAME( 2005, ibara,      0,        cv1k,   cv1k, cv1k_state, mushisam,  ROT270, "Cave (AMI license)", "Ibara (2005/03/22 MASTER VER..)",                                0 )
853864
854865// CA012B Ibara Kuro Black Label
855GAME( 2006, ibarablk,   0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Ibara Kuro Black Label (2006/02/06. MASTER VER.)",               0 )
856GAME( 2006, ibarablka,  ibarablk, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Ibara Kuro Black Label (2006/02/06 MASTER VER.)",                0 )
866GAME( 2006, ibarablk,   0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Ibara Kuro Black Label (2006/02/06. MASTER VER.)",                0 )
867GAME( 2006, ibarablka,  ibarablk, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Ibara Kuro Black Label (2006/02/06 MASTER VER.)",                 0 )
857868
858869// CA013  Espgaluda II
859GAME( 2005, espgal2,    0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Espgaluda II (2005/11/14 MASTER VER)",                           0 )
870GAME( 2005, espgal2,    0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Espgaluda II (2005/11/14 MASTER VER)",                            0 )
860871
861872// CA???  Puzzle! Mushihime-Tama
862GAME( 2005, mushitam,   0,        cv1k,   cv1k, cv1k_state, mushisam,  ROT0,   "Cave (AMI license)", "Puzzle! Mushihime-Tama (2005/09/09.MASTER VER)",                 0 )
863GAME( 2005, mushitama,  mushitam, cv1k,   cv1k, cv1k_state, mushisam,  ROT0,   "Cave (AMI license)", "Puzzle! Mushihime-Tama (2005/09/09 MASTER VER)",                 0 )
873GAME( 2005, mushitam,   0,        cv1k,   cv1k, cv1k_state, mushisam,  ROT0,   "Cave (AMI license)", "Puzzle! Mushihime-Tama (2005/09/09.MASTER VER)",                  0 )
874GAME( 2005, mushitama,  mushitam, cv1k,   cv1k, cv1k_state, mushisam,  ROT0,   "Cave (AMI license)", "Puzzle! Mushihime-Tama (2005/09/09 MASTER VER)",                  0 )
864875
865876// CA014  Pink Sweets: Ibara Sorekara
866GAME( 2006, pinkswts,   0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER....)",        0 )
867GAME( 2006, pinkswtsa,  pinkswts, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER...)",         0 )
868GAME( 2006, pinkswtsb,  pinkswts, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER.)",           0 )
869GAME( 2006, pinkswtsx,  pinkswts, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/xx/xx MASTER VER.)",           0 ) // defaults to freeplay, possibly bootlegged from show/dev version?
877GAME( 2006, pinkswts,   0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER....)",         0 )
878GAME( 2006, pinkswtsa,  pinkswts, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER...)",          0 )
879GAME( 2006, pinkswtsb,  pinkswts, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER.)",            0 )
880GAME( 2006, pinkswtsx,  pinkswts, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/xx/xx MASTER VER.)",            0 ) // defaults to freeplay, possibly bootlegged from show/dev version?
870881
871882// CA015  Mushihime-Sama Futari
872GAME( 2006, futari15,   0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.5 (2006/12/8.MASTER VER. 1.54.)",    0 )
873GAME( 2006, futari15a,  futari15, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.5 (2006/12/8 MASTER VER 1.54)",      0 )
874GAME( 2006, futari10,   futari15, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.0 (2006/10/23 MASTER VER.)",         0 )
883GAME( 2006, futari15,   0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.5 (2006/12/8.MASTER VER. 1.54.)",     0 )
884GAME( 2006, futari15a,  futari15, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.5 (2006/12/8 MASTER VER 1.54)",       0 )
885GAME( 2006, futari10,   futari15, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.0 (2006/10/23 MASTER VER.)",          0 )
875886
876887// CA016  Muchi Muchi Pork!
877GAME( 2007, mmpork,     0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Muchi Muchi Pork! (2007/ 4/17 MASTER VER.)",                     0 )
888GAME( 2007, mmpork,     0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Muchi Muchi Pork! (2007/ 4/17 MASTER VER.)",                      0 )
878889
879890// CA015B Mushihime-Sama Futari Black Label
880GAME( 2007, futaribl,   0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Black Label (2007/12/11 BLACK LABEL VER)", 0 )
891GAME( 2007, futaribl,   0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Black Label (2009/11/27 INTERNATIONAL BL)", 0 )
892GAME( 2007, futariblj,  futaribl, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Black Label (2007/12/11 BLACK LABEL VER)",  0 )
881893
882894// CA017  Deathsmiles
883GAME( 2007, deathsml,   0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT0,   "Cave (AMI license)", "Deathsmiles (2007/10/09 MASTER VER)",                            0 )
895GAME( 2007, deathsml,   0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT0,   "Cave (AMI license)", "Deathsmiles (2007/10/09 MASTER VER)",                            0 )
884896
885897// CA017B Deathsmiles Black Label
886GAME( 2008, dsmbl,      0,        cv1k_d, cv1k, cv1k_state, espgal2,   ROT0,   "Cave (AMI license)", "Deathsmiles MegaBlack Label (2008/10/06 MEGABLACK LABEL VER)",   0 )
898GAME( 2008, dsmbl,      0,        cv1k_d, cv1k, cv1k_state, espgal2,   ROT0,   "Cave (AMI license)", "Deathsmiles MegaBlack Label (2008/10/06 MEGABLACK LABEL VER)",    0 )
887899
888900// CA019  Do-Don-Pachi Dai-Fukkatsu
889GAME( 2008, ddpdfk,     0,        cv1k_d, cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Ver 1.5 (2008/06/23  MASTER VER 1.5)",   0 )
890GAME( 2008, ddpdfk10,   ddpdfk,   cv1k_d, cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Ver 1.0 (2008/05/16  MASTER VER)",       0 )
901GAME( 2008, ddpdfk,     0,        cv1k_d, cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Ver 1.5 (2008/06/23  MASTER VER 1.5)",    0 )
902GAME( 2008, ddpdfk10,   ddpdfk,   cv1k_d, cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Ver 1.0 (2008/05/16  MASTER VER)",        0 )
891903
892904// CMDL01 Medal Mahjong Moukari Bancho
893GAME( 2007, mmmbanc,    0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT0,   "Cave (AMI license)", "Medal Mahjong Moukari Bancho (2007/06/05 MASTER VER.)",           GAME_NOT_WORKING )
905GAME( 2007, mmmbanc,    0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT0,   "Cave (AMI license)", "Medal Mahjong Moukari Bancho (2007/06/05 MASTER VER.)",            GAME_NOT_WORKING )
trunk/src/mame/drivers/cyberbal.c
r241752r241753
389389   MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
390390   MCFG_CPU_PROGRAM_MAP(main_map)
391391
392   MCFG_SLAPSTIC_ADD("slapstic")
393
392394   MCFG_CPU_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8)
393395   MCFG_CPU_PROGRAM_MAP(sound_map)
394396   MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, (double)ATARI_CLOCK_14MHz/4/4/16/16/14)
trunk/src/mame/drivers/fruitpc.c
r241752r241753
1313
1414#include "emu.h"
1515#include "cpu/i386/i386.h"
16#include "machine/pci.h"
16#include "machine/lpci.h"
1717#include "machine/pckeybrd.h"
1818#include "machine/idectrl.h"
1919#include "video/pc_vga.h"
trunk/src/mame/drivers/funkball.c
r241752r241753
7171
7272#include "emu.h"
7373#include "cpu/i386/i386.h"
74#include "machine/pci.h"
74#include "machine/lpci.h"
7575#include "machine/pckeybrd.h"
7676#include "machine/idectrl.h"
7777#include "video/voodoo.h"
trunk/src/mame/drivers/funworld.c
r241752r241753
63526352   }
63536353
63546354   j = 1;
6355   i = 0x81;
63556356
6356   for (i = 0x81; i < (0x81 + ARRAY_LENGTH(rcdino4_keys80));)
6357   do
63576358   {
63586359      UINT8 key;
63596360
r241752r241753
64186419      while (j < 0x100);
64196420
64206421      j &= 0xff;
6421      do {
6422         assert((i+1 - 0x81) >= 0 && (i+1 - 0x81) < ARRAY_LENGTH(rcdino4_keys80));
6423      } while (!rcdino4_keys80[++i - 0x81]);
64246422
6423      do {} while (((++i - 0x81) < ARRAY_LENGTH(rcdino4_keys80))
6424            && !rcdino4_keys80[i - 0x81]);
6425
6426      if ((i - 0x81) == ARRAY_LENGTH(rcdino4_keys80))
6427      {
6428         break;
6429      }
6430
64256431      if ((i == 0xa4)
64266432         || (i == 0xb0)
64276433         || (i == 0xf8)
r241752r241753
64306436         j = 0; /* re-align offset after skipping some pages */
64316437      }
64326438   }
6439   while (1);
64336440}
64346441
64356442DRIVER_INIT_MEMBER(funworld_state, rcdinch)
trunk/src/mame/drivers/galaxian.c
r241752r241753
1079810798GAME( 198?, fantastc,    0,        fantastc,   fantastc,   galaxian_state, fantastc,   ROT90,  "Taito do Brasil", "Fantastic (Galaga conversion on Galaxian hardware)", GAME_SUPPORTS_SAVE ) // rewrite of Galaga (!) not a clone
1079910799
1080010800/* like fantastc, plus larger spriteram, and maybe different bullet hw(?) */
10801GAME( 198?, timefgtr,    0,        timefgtr,   timefgtr,   galaxian_state, timefgtr,   ROT90,  "Taito do Brasil", "Time Fighter (Time Pilot conversion on Galaxian hardware)", GAME_SUPPORTS_SAVE | GAME_SUPPORTS_SAVE | GAME_WRONG_COLORS ) // rewrite of Time Pilot (!) not a clone
10801GAME( 198?, timefgtr,    0,        timefgtr,   timefgtr,   galaxian_state, timefgtr,   ROT90,  "Taito do Brasil", "Time Fighter (Time Pilot conversion on Galaxian hardware)", GAME_SUPPORTS_SAVE | GAME_WRONG_COLORS ) // rewrite of Time Pilot (!) not a clone
1080210802
1080310803/* extra ROMs, protection, and sound hardware replaced with AY8910 */
1080410804GAME( 1981, jumpbug,     0,        jumpbug,    jumpbug,    galaxian_state, jumpbug,    ROT90,  "Hoei (Rock-Ola license)", "Jump Bug", GAME_SUPPORTS_SAVE ) // or by Alpha Denshi Co. under contract from Hoei?
trunk/src/mame/drivers/gamecstl.c
r241752r241753
6464
6565#include "emu.h"
6666#include "cpu/i386/i386.h"
67#include "machine/pci.h"
67#include "machine/lpci.h"
6868#include "machine/pcshare.h"
6969#include "machine/pckeybrd.h"
7070#include "machine/idectrl.h"
trunk/src/mame/drivers/gammagic.c
r241752r241753
3232#include "machine/cr589.h"
3333//#include "machine/i82371sb.h"
3434//#include "machine/i82439tx.h"
35#include "machine/pci.h"
35#include "machine/lpci.h"
3636#include "machine/pcshare.h"
3737#include "machine/pckeybrd.h"
3838#include "video/pc_vga.h"
trunk/src/mame/drivers/gauntlet.c
r241752r241753
499499   MCFG_CPU_PROGRAM_MAP(main_map)
500500   MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
501501
502   MCFG_SLAPSTIC_ADD("slapstic")
503
502504   MCFG_CPU_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8)
503505   MCFG_CPU_PROGRAM_MAP(sound_map)
504506
trunk/src/mame/drivers/harddriv.c
r241752r241753
330330#include "includes/slapstic.h"
331331#include "includes/harddriv.h"
332332
333#include "racedrivpan.lh"
333334
334335/*************************************
335336 *
r241752r241753
337338 *
338339 *************************************/
339340
341const device_type HARDDRIV_DEVICE = &device_creator<harddriv_state>;
342
343harddriv_state::harddriv_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
344   : device_t(mconfig, HARDDRIV_DEVICE, "Hard Drivin' PCB Family", tag, owner, clock, "harddriv_pcb", __FILE__),
345/*   device_video_interface(mconfig, *this, false), */
346         m_maincpu(*this, "maincpu"),
347         m_gsp(*this, "gsp"),
348         m_msp(*this, "msp"),
349         m_adsp(*this, "adsp"),
350         m_soundcpu(*this, "soundcpu"),
351         m_sounddsp(*this, "sounddsp"),
352         m_jsacpu(*this, "jsacpu"),
353         m_dsp32(*this, "dsp32"),
354         m_ds3sdsp(*this, "ds3sdsp"),
355         m_ds3xdsp(*this, "ds3xdsp"),
356         m_ds3dac1(*this, "ds3dac1"),
357         m_ds3dac2(*this, "ds3dac2"),
358         m_jsa(*this, "jsa"),
359         m_hd34010_host_access(0),
360         m_dsk_pio_access(0),
361         m_msp_ram(*this, "msp_ram"),
362         m_dsk_ram(0),
363         m_dsk_rom(0),
364         m_dsk_10c(*this, "dsk_10c"),
365         m_dsk_30c(*this, "dsk_30c"),
366         m_m68k_slapstic_base(0),
367         m_m68k_sloop_alt_base(0),
368         m_200e(*this, "200e"),
369         m_210e(*this, "210e"),
370         m_adsp_data_memory(*this, "adsp_data"),
371         m_adsp_pgm_memory(*this, "adsp_pgm_memory"),
372         m_ds3sdsp_data_memory(*this, "ds3sdsp_data"),
373         m_ds3sdsp_pgm_memory(*this, "ds3sdsp_pgm"),
374         m_ds3xdsp_pgm_memory(*this, "ds3xdsp_pgm"),
375         m_gsp_protection(0),
376         m_gsp_speedup_pc(0),
377         m_msp_speedup_addr(0),
378         m_msp_speedup_pc(0),
379         m_ds3_speedup_addr(0),
380         m_ds3_speedup_pc(0),
381         m_ds3_transfer_pc(0),
382         m_sounddsp_ram(*this, "sounddsp_ram"),
383         m_gsp_multisync(0),
384         m_gsp_vram(*this, "gsp_vram", 16),
385         m_gsp_control_lo(*this, "gsp_control_lo"),
386         m_gsp_control_hi(*this, "gsp_control_hi"),
387         m_gsp_paletteram_lo(*this, "gsp_palram_lo"),
388         m_gsp_paletteram_hi(*this, "gsp_palram_hi"),
389         m_irq_state(0),
390         m_gsp_irq_state(0),
391         m_msp_irq_state(0),
392         m_adsp_irq_state(0),
393         m_ds3sdsp_irq_state(0),
394         m_duart_irq_state(0),
395         m_last_gsp_shiftreg(0),
396         m_m68k_zp1(0),
397         m_m68k_zp2(0),
398         m_m68k_adsp_buffer_bank(0),
399         m_adsp_halt(0),
400         m_adsp_br(0),
401         m_adsp_xflag(0),
402         m_adsp_sim_address(0),
403         m_adsp_som_address(0),
404         m_adsp_eprom_base(0),
405         m_sim_memory(0),
406         m_sim_memory_size(0),
407         m_adsp_pgm_memory_word(0),
408         m_ds3_sdata_memory(0),
409         m_ds3_sdata_memory_size(0),
410         m_ds3_gcmd(0),
411         m_ds3_gflag(0),
412         m_ds3_g68irqs(0),
413         m_ds3_gfirqs(0),
414         m_ds3_g68flag(0),
415         m_ds3_send(0),
416         m_ds3_reset(0),
417         m_ds3_gdata(0),
418         m_ds3_g68data(0),
419         m_ds3_sim_address(0),
420         m_ds3_scmd(0),
421         m_ds3_sflag(0),
422         m_ds3_s68irqs(0),
423         m_ds3_sfirqs(0),
424         m_ds3_s68flag(0),
425         m_ds3_sreset(0),
426         m_ds3_sdata(0),
427         m_ds3_s68data(0),
428         m_ds3_sdata_address(0),
429         m_ds3sdsp_timer_en(0),
430         m_ds3sdsp_sdata(0),
431         m_ds3sdsp_internal_timer(*this, "ds3sdsp_timer"),
432         m_ds3xdsp_timer_en(0),
433         m_ds3xdsp_sdata(0),
434         m_ds3xdsp_internal_timer(*this, "ds3xdsp_timer"),
435         m_adc_control(0),
436          m_adc8_select(0),
437           m_adc8_data(0),
438           m_adc12_select(0),
439           m_adc12_byte(0),
440           m_adc12_data(0),
441           m_hdc68k_last_wheel(0),
442           m_hdc68k_last_port1(0),
443           m_hdc68k_wheel_edge(0),
444           m_hdc68k_shifter_state(0),
445           m_st68k_sloop_bank(0),
446           m_st68k_last_alt_sloop_offset(0),
447          m_next_msp_sync(0),
448         m_soundflag(0),
449          m_mainflag(0),
450           m_sounddata(0),
451           m_maindata(0),
452           m_dacmute(0),
453           m_cramen(0),
454           m_irq68k(0),
455           m_sound_rom_offs(0),
456           m_rombase(0),
457           m_romsize(0),
458           m_last_bio_cycles(0),
459           m_vram_mask(0),
460           m_shiftreg_enable(0),
461           m_gsp_shiftreg_source(0),
462         m_gfx_finescroll(0),
463         m_gfx_palettebank(0),
464         m_dac(*this, "dac"),
465         m_duart(*this, "duartn68681"),
466         m_asic65(*this, "asic65"),
467         m_palette(*this, "palette"),
468         m_slapstic_device(*this, "slapstic")
469{
470   int i;
471
472   for (i = 0; i < 2; i++)
473   {
474      m_gsp_speedup_addr[i] = 0;
475      m_rddsp32_sync[i] = 0;
476   }
477
478   for (i = 0; i < 4; i++)
479   {
480      m_gsp_speedup_count[i] = 0;
481      m_msp_speedup_count[i] = 0;
482      m_adsp_speedup_count[i] = 0;
483   }
484
485   for (i = 0; i < 32; i++)
486   {
487      m_ds3sdsp_regs[i] = 0;
488      m_ds3xdsp_regs[i] = 0;
489   }
490
491   for (i = 0; i < 0x8000 / 2; i++)
492   {
493      m_som_memory[i] = 0;
494   }
495
496   for (i = 0; i < MAX_MSP_SYNC; i++)
497   {
498      m_dataptr[i] = 0;
499      m_dataval[i] = 0;
500   }
501
502   for (i = 0; i < 0x400 / 2; i++)
503   {
504      m_comram[i] = 0;
505   }
506
507   for (i = 0; i < 65536 * 4; i++)
508   {
509      m_mask_table[i] = 0;
510   }
511}
512
513
514class harddriv_new_state : public driver_device
515{
516public:
517   harddriv_new_state(const machine_config &mconfig, device_type type, const char *tag)
518      : driver_device(mconfig, type, tag)
519   { }
520
521
522};
523
524
525WRITE16_MEMBER( harddriv_state::watchdog_reset16_w )
526{
527
528}
529
340530static ADDRESS_MAP_START( driver_68k_map, AS_PROGRAM, 16, harddriv_state )
341531   ADDRESS_MAP_UNMAP_HIGH
342532   AM_RANGE(0x000000, 0x0fffff) AM_ROM
r241752r241753
345535   AM_RANGE(0x608000, 0x60bfff) AM_WRITE(watchdog_reset16_w)
346536   AM_RANGE(0x60c000, 0x60ffff) AM_WRITE(hd68k_irq_ack_w)
347537   AM_RANGE(0xa00000, 0xa7ffff) AM_WRITE(hd68k_wr0_write)
348   AM_RANGE(0xa80000, 0xafffff) AM_READ_PORT("a80000") AM_WRITE(hd68k_wr1_write)
538   AM_RANGE(0xa80000, 0xafffff) AM_READ(hd68k_a80000_r) AM_WRITE(hd68k_wr1_write)
349539   AM_RANGE(0xb00000, 0xb7ffff) AM_READWRITE(hd68k_adc8_r, hd68k_wr2_write)
350540   AM_RANGE(0xb80000, 0xbfffff) AM_READWRITE(hd68k_adc12_r, hd68k_adc_control_w)
351541   AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(hd68k_gsp_io_r, hd68k_gsp_io_w)
r241752r241753
392582   AM_RANGE(0x608000, 0x60bfff) AM_WRITE(watchdog_reset16_w)
393583   AM_RANGE(0x60c000, 0x60ffff) AM_READWRITE(hd68k_port0_r, hd68k_irq_ack_w)
394584   AM_RANGE(0xa00000, 0xa7ffff) AM_WRITE(hd68k_wr0_write)
395   AM_RANGE(0xa80000, 0xafffff) AM_READ_PORT("a80000") AM_WRITE(hd68k_wr1_write)
585   AM_RANGE(0xa80000, 0xafffff) AM_READ(hd68k_a80000_r) AM_WRITE(hd68k_wr1_write)
396586   AM_RANGE(0xb00000, 0xb7ffff) AM_READWRITE(hd68k_adc8_r, hd68k_wr2_write)
397587   AM_RANGE(0xb80000, 0xbfffff) AM_READWRITE(hd68k_adc12_r, hd68k_adc_control_w)
398588   AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(hd68k_gsp_io_r, hd68k_gsp_io_w)
r241752r241753
430620   AM_RANGE(0x608000, 0x60bfff) AM_WRITE(watchdog_reset16_w)
431621   AM_RANGE(0x60c000, 0x60ffff) AM_READWRITE(hd68k_port0_r, hd68k_irq_ack_w)
432622   AM_RANGE(0xa00000, 0xa7ffff) AM_WRITE(hd68k_wr0_write)
433   AM_RANGE(0xa80000, 0xafffff) AM_READ_PORT("a80000") AM_WRITE(hd68k_wr1_write)
623   AM_RANGE(0xa80000, 0xafffff) AM_READ(hd68k_a80000_r) AM_WRITE(hd68k_wr1_write)
434624   AM_RANGE(0xb00000, 0xb7ffff) AM_READWRITE(hd68k_adc8_r, hd68k_wr2_write)
435625   AM_RANGE(0xb80000, 0xbfffff) AM_READWRITE(hd68k_adc12_r, hd68k_adc_control_w)
436626   AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(hd68k_gsp_io_r, hd68k_gsp_io_w)
r241752r241753
597787
598788
599789
790
600791/*************************************
601792 *
602793 *  Port definitions
r241752r241753
604795 *************************************/
605796
606797static INPUT_PORTS_START( harddriv )
607   PORT_START("IN0")       /* 600000 */
798   PORT_START("mainpcb:IN0")       /* 600000 */
608799   PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
609800   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
610801   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
611802   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* HBLANK */
612   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
803   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
613804   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 12-bit EOC */
614805   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 8-bit EOC */
615806   PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
616807   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
617808   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
618809
619   PORT_START("SW1")       /* 600002 */
810   PORT_START("mainpcb:SW1")       /* 600002 */
620811   PORT_DIPNAME( 0x01, 0x01, "SW1:8" )
621812   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
622813   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r241752r241753
642833   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
643834   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
644835
645   PORT_START("a80000")
836   PORT_START("mainpcb:a80000")
646837   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Abort")    /* abort */
647838   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Key")  /* key */
648839   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )    /* aux coin */
649840   PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED )
650841
651   PORT_START("8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
842   PORT_START("mainpcb:8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
652843   PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
653844
654   PORT_START("8BADC1")        /* b00000 - 8 bit ADC 1 - clutch pedal */
845   PORT_START("mainpcb:8BADC1")        /* b00000 - 8 bit ADC 1 - clutch pedal */
655846   PORT_BIT( 0xff, 0x00, IPT_PEDAL3 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) PORT_NAME("Clutch Pedal")
656847
657   PORT_START("8BADC2")        /* b00000 - 8 bit ADC 2 - seat */
848   PORT_START("mainpcb:8BADC2")        /* b00000 - 8 bit ADC 2 - seat */
658849   PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
659850
660   PORT_START("8BADC3")        /* b00000 - 8 bit ADC 3 - shifter lever Y */
851   PORT_START("mainpcb:8BADC3")        /* b00000 - 8 bit ADC 3 - shifter lever Y */
661852   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(128) PORT_CODE_DEC(KEYCODE_R) PORT_CODE_INC(KEYCODE_F) PORT_NAME("Shifter Lever Y")
662853
663   PORT_START("8BADC4")        /* b00000 - 8 bit ADC 4 - shifter lever X*/
854   PORT_START("mainpcb:8BADC4")        /* b00000 - 8 bit ADC 4 - shifter lever X*/
664855   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(128) PORT_CODE_DEC(KEYCODE_D) PORT_CODE_INC(KEYCODE_G) PORT_NAME("Shifter Lever X")
665856
666   PORT_START("8BADC5")        /* b00000 - 8 bit ADC 5 - wheel */
857   PORT_START("mainpcb:8BADC5")        /* b00000 - 8 bit ADC 5 - wheel */
667858   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Wheel")
668859
669   PORT_START("8BADC6")        /* b00000 - 8 bit ADC 6 - line volts */
860   PORT_START("mainpcb:8BADC6")        /* b00000 - 8 bit ADC 6 - line volts */
670861   PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
671862
672   PORT_START("8BADC7")        /* b00000 - 8 bit ADC 7 - shift force */
863   PORT_START("mainpcb:8BADC7")        /* b00000 - 8 bit ADC 7 - shift force */
673864   PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
674865
675   PORT_START("12BADC0")       /* b80000 - 12 bit ADC 0 - steering wheel */
866   PORT_START("mainpcb:12BADC0")       /* b80000 - 12 bit ADC 0 - steering wheel */
676867   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel")
677868
678   PORT_START("12BADC1")       /* b80000 - 12 bit ADC 1 - force brake */
869   PORT_START("mainpcb:12BADC1")       /* b80000 - 12 bit ADC 1 - force brake */
679870   PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Force Brake")
680871
681   PORT_START("12BADC2")       /* b80000 - 12 bit ADC 2 */
872   PORT_START("mainpcb:12BADC2")       /* b80000 - 12 bit ADC 2 */
682873   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
683874
684   PORT_START("12BADC3")       /* b80000 - 12 bit ADC 3 */
875   PORT_START("mainpcb:12BADC3")       /* b80000 - 12 bit ADC 3 */
685876   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
877   
686878INPUT_PORTS_END
687879
688880
689881static INPUT_PORTS_START( racedriv )
690   PORT_START("IN0")       /* 600000 */
882   PORT_START("mainpcb:IN0")       /* 600000 */
691883   PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
692884   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
693885   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
694886   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* HBLANK */
695   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
887   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
696888   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 12-bit EOC */
697889   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 8-bit EOC */
698890   PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
699891   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
700892   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
701893
702   PORT_START("SW1")       /* 600002 */
894   PORT_START("mainpcb:SW1")       /* 600002 */
703895   PORT_DIPNAME( 0x01, 0x01, "SW1:8" )
704896   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
705897   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r241752r241753
725917   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
726918   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
727919
728   PORT_START("a80000")
920   PORT_START("mainpcb:a80000")
729921   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Abort")    /* abort */
730922   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Key")  /* key */
731923   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )    /* aux coin */
732924   PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED )
733925
734   PORT_START("8BADC0")        /* b00000 - 8 bit ADC 0 - gas pedal */
926   PORT_START("mainpcb:8BADC0")        /* b00000 - 8 bit ADC 0 - gas pedal */
735927   PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
736928
737   PORT_START("8BADC1")        /* b00000 - 8 bit ADC 1 - clutch pedal */
929   PORT_START("mainpcb:8BADC1")        /* b00000 - 8 bit ADC 1 - clutch pedal */
738930   PORT_BIT( 0xff, 0x00, IPT_PEDAL3 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) PORT_NAME("Clutch Pedal")
739931
740   PORT_START("8BADC2")        /* b00000 - 8 bit ADC 2 - seat */
932   PORT_START("mainpcb:8BADC2")        /* b00000 - 8 bit ADC 2 - seat */
741933   PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
742934
743   PORT_START("8BADC3")        /* b00000 - 8 bit ADC 3 - shifter lever Y */
935   PORT_START("mainpcb:8BADC3")        /* b00000 - 8 bit ADC 3 - shifter lever Y */
744936   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(128) PORT_CODE_DEC(KEYCODE_R) PORT_CODE_INC(KEYCODE_F) PORT_NAME("Shifter Lever Y")
745937
746   PORT_START("8BADC4")        /* b00000 - 8 bit ADC 4 - shifter lever X*/
938   PORT_START("mainpcb:8BADC4")        /* b00000 - 8 bit ADC 4 - shifter lever X*/
747939   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(128) PORT_CODE_DEC(KEYCODE_D) PORT_CODE_INC(KEYCODE_G) PORT_NAME("Shifter Lever X")
748940
749   PORT_START("8BADC5")        /* b00000 - 8 bit ADC 5 - wheel */
941   PORT_START("mainpcb:8BADC5")        /* b00000 - 8 bit ADC 5 - wheel */
750942   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Wheel")
751943
752   PORT_START("8BADC6")        /* b00000 - 8 bit ADC 6 - line volts */
944   PORT_START("mainpcb:8BADC6")        /* b00000 - 8 bit ADC 6 - line volts */
753945   PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
754946
755   PORT_START("8BADC7")        /* b00000 - 8 bit ADC 7 */
947   PORT_START("mainpcb:8BADC7")        /* b00000 - 8 bit ADC 7 */
756948   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
757949
758   PORT_START("12BADC0")       /* b80000 - 12 bit ADC 0 - steering wheel */
950   PORT_START("mainpcb:12BADC0")       /* b80000 - 12 bit ADC 0 - steering wheel */
759951   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel")
760952
761   PORT_START("12BADC1")       /* b80000 - 12 bit ADC 1 - force brake */
953   PORT_START("mainpcb:12BADC1")       /* b80000 - 12 bit ADC 1 - force brake */
762954   PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Force Brake")
763955
764   PORT_START("12BADC2")       /* b80000 - 12 bit ADC 2 */
956   PORT_START("mainpcb:12BADC2")       /* b80000 - 12 bit ADC 2 */
765957   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
766958
767   PORT_START("12BADC3")       /* b80000 - 12 bit ADC 3 */
959   PORT_START("mainpcb:12BADC3")       /* b80000 - 12 bit ADC 3 */
768960   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
769961INPUT_PORTS_END
770962
963static INPUT_PORTS_START( racedriv_pan )
964   PORT_INCLUDE( racedriv )
965   
966   PORT_START("leftpcb:IN0")       /* 600000 */
967   PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper (Left)" )
968   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
969   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
970   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* HBLANK */
971   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("leftpcb:screen")
972   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 12-bit EOC */
973   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 8-bit EOC */
974   PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
975   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
976   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
771977
978   PORT_START("rightpcb:IN0")       /* 600000 */
979   PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper (Right)" )
980   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
981   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
982   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* HBLANK */
983   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("rightpcb:screen")
984   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 12-bit EOC */
985   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 8-bit EOC */
986   PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
987   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
988   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
989#if 1 // needed to navigate sub-screen test menus
990   PORT_START("leftpcb:a80000")
991   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Abort")    /* abort */
992   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Key")  /* key */
993   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )    /* aux coin */
994   PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED )
995
996   PORT_START("rightpcb:a80000")
997   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Abort")    /* abort */
998   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Key")  /* key */
999   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )    /* aux coin */
1000   PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED )
1001#endif
1002INPUT_PORTS_END
1003
7721004static INPUT_PORTS_START( racedrivc )
773   PORT_START("IN0")       /* 60c000 */
1005   PORT_START("mainpcb:IN0")       /* 60c000 */
7741006   PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
7751007   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
7761008   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
7771009   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* HBLANK */
778   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
1010   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
7791011   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 12-bit EOC */
7801012   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 8-bit EOC */
7811013   PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
7821014   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
7831015   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
7841016
785   PORT_START("SW1")       /* 60c002 */
1017   PORT_START("mainpcb:SW1")       /* 60c002 */
7861018   PORT_DIPNAME( 0x01, 0x01, "SW1:8" )
7871019   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
7881020   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r241752r241753
8081040   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
8091041   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
8101042
811   PORT_START("a80000")
1043   PORT_START("mainpcb:a80000")
8121044   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Abort")
8131045   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Key")
8141046   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )    /* aux coin */
r241752r241753
8211053   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL )  /* center edge on steering wheel */
8221054   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
8231055
824   PORT_START("8BADC0")        /* b00000 - 8 bit ADC 0 - gas pedal */
1056   PORT_START("mainpcb:8BADC0")        /* b00000 - 8 bit ADC 0 - gas pedal */
8251057   PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
8261058
827   PORT_START("8BADC1")        /* b00000 - 8 bit ADC 1 - clutch pedal */
1059   PORT_START("mainpcb:8BADC1")        /* b00000 - 8 bit ADC 1 - clutch pedal */
8281060   PORT_BIT( 0xff, 0x00, IPT_PEDAL3 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) PORT_NAME("Clutch Pedal")
8291061
830   PORT_START("8BADC2")        /* b00000 - 8 bit ADC 2 */
1062   PORT_START("mainpcb:8BADC2")        /* b00000 - 8 bit ADC 2 */
8311063   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
8321064
833   PORT_START("8BADC3")        /* b00000 - 8 bit ADC 3 */
1065   PORT_START("mainpcb:8BADC3")        /* b00000 - 8 bit ADC 3 */
8341066   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
8351067
836   PORT_START("8BADC4")        /* b00000 - 8 bit ADC 4 */
1068   PORT_START("mainpcb:8BADC4")        /* b00000 - 8 bit ADC 4 */
8371069   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
8381070
839   PORT_START("8BADC5")        /* b00000 - 8 bit ADC 5 */
1071   PORT_START("mainpcb:8BADC5")        /* b00000 - 8 bit ADC 5 */
8401072   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
8411073
842   PORT_START("8BADC6")        /* b00000 - 8 bit ADC 6 - force brake */
1074   PORT_START("mainpcb:8BADC6")        /* b00000 - 8 bit ADC 6 - force brake */
8431075   PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Force Brake")
8441076
845   PORT_START("8BADC7")        /* b00000 - 8 bit ADC 7 */
1077   PORT_START("mainpcb:8BADC7")        /* b00000 - 8 bit ADC 7 */
8461078   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
8471079
848   PORT_START("12BADC0")       /* 400000 - steering wheel */
1080   PORT_START("mainpcb:12BADC0")       /* 400000 - steering wheel */
8491081   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel")
8501082
8511083   /* dummy ADC ports to end up with the same number as the full version */
852   PORT_START("12BADC1")
1084   PORT_START("mainpcb:12BADC1")
8531085   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
854   PORT_START("12BADC2")
1086   PORT_START("mainpcb:12BADC2")
8551087   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
856   PORT_START("12BADC3")
1088   PORT_START("mainpcb:12BADC3")
8571089   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
8581090INPUT_PORTS_END
8591091
8601092
8611093static INPUT_PORTS_START( stunrun )
862   PORT_START("IN0")       /* 60c000 */
1094   PORT_START("mainpcb:IN0")       /* 60c000 */
8631095   PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
8641096   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
8651097   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
8661098   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* HBLANK */
867   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
1099   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
8681100   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 12-bit EOC */
8691101   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 8-bit EOC */
8701102   PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
8711103   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
8721104   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
8731105
874   PORT_START("SW1")       /* 60c002 */
1106   PORT_START("mainpcb:SW1")       /* 60c002 */
8751107   PORT_DIPNAME( 0x01, 0x00, "SW1:8" )
8761108   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
8771109   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r241752r241753
8971129   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
8981130   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
8991131
900   PORT_START("a80000")
1132   PORT_START("mainpcb:a80000")
9011133   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 )
9021134   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 )
9031135   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 )
9041136   PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED )
9051137
906   PORT_START("8BADC0")        /* b00000 - 8 bit ADC 0 */
1138   PORT_START("mainpcb:8BADC0")        /* b00000 - 8 bit ADC 0 */
9071139   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)
9081140
909   PORT_START("8BADC1")        /* b00000 - 8 bit ADC 1 */
1141   PORT_START("mainpcb:8BADC1")        /* b00000 - 8 bit ADC 1 */
9101142   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
9111143
912   PORT_START("8BADC2")        /* b00000 - 8 bit ADC 2 */
1144   PORT_START("mainpcb:8BADC2")        /* b00000 - 8 bit ADC 2 */
9131145   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)
9141146
915   PORT_START("8BADC3")        /* b00000 - 8 bit ADC 3 */
1147   PORT_START("mainpcb:8BADC3")        /* b00000 - 8 bit ADC 3 */
9161148   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
9171149
918   PORT_START("8BADC4")        /* b00000 - 8 bit ADC 4 */
1150   PORT_START("mainpcb:8BADC4")        /* b00000 - 8 bit ADC 4 */
9191151   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
9201152
921   PORT_START("8BADC5")        /* b00000 - 8 bit ADC 5 */
1153   PORT_START("mainpcb:8BADC5")        /* b00000 - 8 bit ADC 5 */
9221154   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
9231155
924   PORT_START("8BADC6")        /* b00000 - 8 bit ADC 6 */
1156   PORT_START("mainpcb:8BADC6")        /* b00000 - 8 bit ADC 6 */
9251157   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
9261158
927   PORT_START("8BADC7")        /* b00000 - 8 bit ADC 7 */
1159   PORT_START("mainpcb:8BADC7")        /* b00000 - 8 bit ADC 7 */
9281160   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
9291161
930   PORT_START("12BADC0")       /* b80000 - 12 bit ADC 0 */
1162   PORT_START("mainpcb:12BADC0")       /* b80000 - 12 bit ADC 0 */
9311163   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
9321164
933   PORT_START("12BADC1")       /* b80000 - 12 bit ADC 1 */
1165   PORT_START("mainpcb:12BADC1")       /* b80000 - 12 bit ADC 1 */
9341166   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
9351167
936   PORT_START("12BADC2")       /* b80000 - 12 bit ADC 2 */
1168   PORT_START("mainpcb:12BADC2")       /* b80000 - 12 bit ADC 2 */
9371169   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
9381170
939   PORT_START("12BADC3")       /* b80000 - 12 bit ADC 3 */
1171   PORT_START("mainpcb:12BADC3")       /* b80000 - 12 bit ADC 3 */
9401172   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
9411173
9421174   /* stunrun has its own coins */
r241752r241753
9481180
9491181
9501182static INPUT_PORTS_START( steeltal )
951   PORT_START("IN0")       /* 60c000 */
1183   PORT_START("mainpcb:IN0")       /* 60c000 */
9521184   PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
9531185   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
9541186   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
9551187   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* HBLANK */
956   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
1188   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
9571189   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 12-bit EOC */
9581190   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 8-bit EOC */
9591191   PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
9601192   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
9611193   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
9621194
963   PORT_START("SW1")       /* 60c002 */
1195   PORT_START("mainpcb:SW1")       /* 60c002 */
9641196   PORT_DIPNAME( 0x01, 0x00, "SW1:8" )
9651197   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
9661198   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r241752r241753
9861218   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
9871219   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
9881220
989   PORT_START("a80000")
1221   PORT_START("mainpcb:a80000")
9901222   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Trigger")
9911223   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Thumb")
9921224   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Zoom")
9931225   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Real Helicopter Flight")
9941226   PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNUSED )
9951227
996   PORT_START("8BADC0")        /* b00000 - 8 bit ADC 0 */
1228   PORT_START("mainpcb:8BADC0")        /* b00000 - 8 bit ADC 0 */
9971229   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
9981230
999   PORT_START("8BADC1")        /* b00000 - 8 bit ADC 1 */
1231   PORT_START("mainpcb:8BADC1")        /* b00000 - 8 bit ADC 1 */
10001232   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )     /* volume control */
10011233
1002   PORT_START("8BADC2")        /* b00000 - 8 bit ADC 2 */
1234   PORT_START("mainpcb:8BADC2")        /* b00000 - 8 bit ADC 2 */
10031235   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
10041236
1005   PORT_START("8BADC3")        /* b00000 - 8 bit ADC 3 */
1237   PORT_START("mainpcb:8BADC3")        /* b00000 - 8 bit ADC 3 */
10061238   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
10071239
1008   PORT_START("8BADC4")        /* b00000 - 8 bit ADC 4 */
1240   PORT_START("mainpcb:8BADC4")        /* b00000 - 8 bit ADC 4 */
10091241   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
10101242
1011   PORT_START("8BADC5")        /* b00000 - 8 bit ADC 5 */
1243   PORT_START("mainpcb:8BADC5")        /* b00000 - 8 bit ADC 5 */
10121244   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
10131245
1014   PORT_START("8BADC6")        /* b00000 - 8 bit ADC 6 */
1246   PORT_START("mainpcb:8BADC6")        /* b00000 - 8 bit ADC 6 */
10151247   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
10161248
1017   PORT_START("8BADC7")        /* b00000 - 8 bit ADC 7 */
1249   PORT_START("mainpcb:8BADC7")        /* b00000 - 8 bit ADC 7 */
10181250   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
10191251
1020   PORT_START("12BADC0")       /* b80000 - 12 bit ADC 0 */
1252   PORT_START("mainpcb:12BADC0")       /* b80000 - 12 bit ADC 0 */
10211253   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)   /* left/right */
10221254
1023   PORT_START("12BADC1")       /* b80000 - 12 bit ADC 1 */
1255   PORT_START("mainpcb:12BADC1")       /* b80000 - 12 bit ADC 1 */
10241256   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)   /* up/down */
10251257
1026   PORT_START("12BADC2")       /* b80000 - 12 bit ADC 2 */
1258   PORT_START("mainpcb:12BADC2")       /* b80000 - 12 bit ADC 2 */
10271259   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Z ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)  PORT_NAME("Collective") PORT_REVERSE /* collective */
10281260
1029   PORT_START("12BADC3")       /* b80000 - 12 bit ADC 3 */
1261   PORT_START("mainpcb:12BADC3")       /* b80000 - 12 bit ADC 3 */
10301262   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)  PORT_NAME("Rudder") PORT_PLAYER(2)   /* rudder */
10311263
10321264   /* steeltal has its own coins */
r241752r241753
10381270
10391271
10401272static INPUT_PORTS_START( strtdriv )
1041   PORT_START("IN0")       /* 60c000 */
1273   PORT_START("mainpcb:IN0")       /* 60c000 */
10421274   PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
10431275   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
10441276   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
10451277   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* HBLANK */
1046   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
1278   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
10471279   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 12-bit EOC */
10481280   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 8-bit EOC */
10491281   PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
10501282   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
10511283   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
10521284
1053   PORT_START("SW1")       /* 60c002 */
1285   PORT_START("mainpcb:SW1")       /* 60c002 */
10541286   PORT_DIPNAME( 0x01, 0x01, "SW1:8" )
10551287   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
10561288   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r241752r241753
10761308   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
10771309   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
10781310
1079   PORT_START("a80000")
1311   PORT_START("mainpcb:a80000")
10801312   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 )   /* abort */
10811313   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 )   /* start */
10821314   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )    /* aux coin */
r241752r241753
10901322   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL )  /* center edge on steering wheel */
10911323   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
10921324
1093   PORT_START("8BADC0")        /* b00000 - 8 bit ADC 0 - gas pedal */
1325   PORT_START("mainpcb:8BADC0")        /* b00000 - 8 bit ADC 0 - gas pedal */
10941326   PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
10951327
1096   PORT_START("8BADC1")        /* b00000 - 8 bit ADC 1 */
1328   PORT_START("mainpcb:8BADC1")        /* b00000 - 8 bit ADC 1 */
10971329   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
10981330
1099   PORT_START("8BADC2")        /* b00000 - 8 bit ADC 2 - voice mic */
1331   PORT_START("mainpcb:8BADC2")        /* b00000 - 8 bit ADC 2 - voice mic */
11001332   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
11011333
1102   PORT_START("8BADC3")        /* b00000 - 8 bit ADC 3 - volume */
1334   PORT_START("mainpcb:8BADC3")        /* b00000 - 8 bit ADC 3 - volume */
11031335   PORT_BIT( 0xff, 0X80, IPT_UNUSED )
11041336
1105   PORT_START("8BADC4")        /* b00000 - 8 bit ADC 4 - elevator */
1337   PORT_START("mainpcb:8BADC4")        /* b00000 - 8 bit ADC 4 - elevator */
11061338   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_NAME("Elevator") PORT_REVERSE  /* up/down */
11071339
1108   PORT_START("8BADC5")        /* b00000 - 8 bit ADC 5 - canopy */
1340   PORT_START("mainpcb:8BADC5")        /* b00000 - 8 bit ADC 5 - canopy */
11091341   PORT_BIT( 0xff, 0X80, IPT_UNUSED )
11101342
1111   PORT_START("8BADC6")        /* b00000 - 8 bit ADC 6 - brake */
1343   PORT_START("mainpcb:8BADC6")        /* b00000 - 8 bit ADC 6 - brake */
11121344   PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_NAME("Brake") PORT_REVERSE
11131345
1114   PORT_START("8BADC7")        /* b00000 - 8 bit ADC 7 - seat adjust */
1346   PORT_START("mainpcb:8BADC7")        /* b00000 - 8 bit ADC 7 - seat adjust */
11151347   PORT_BIT( 0xff, 0X80, IPT_UNUSED )
11161348
1117   PORT_START("12BADC0")       /* 400000 - steering wheel */
1349   PORT_START("mainpcb:12BADC0")       /* 400000 - steering wheel */
11181350   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel")
11191351
11201352   /* dummy ADC ports to end up with the same number as the full version */
1121   PORT_START("12BADC1")       /* FAKE */
1353   PORT_START("mainpcb:12BADC1")       /* FAKE */
11221354   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1123   PORT_START("12BADC2")       /* FAKE */
1355   PORT_START("mainpcb:12BADC2")       /* FAKE */
11241356   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1125   PORT_START("12BADC3")       /* FAKE */
1357   PORT_START("mainpcb:12BADC3")       /* FAKE */
11261358   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
11271359INPUT_PORTS_END
11281360
11291361
11301362static INPUT_PORTS_START( hdrivair )
1131   PORT_START("IN0")       /* 60c000 */
1363   PORT_START("mainpcb:IN0")       /* 60c000 */
11321364   PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
11331365   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
11341366   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
11351367   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* HBLANK */
1136   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
1368   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
11371369   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 12-bit EOC */
11381370   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 8-bit EOC */
11391371   PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
11401372   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
11411373   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
11421374
1143   PORT_START("SW1")       /* 60c002 */
1375   PORT_START("mainpcb:SW1")       /* 60c002 */
11441376   PORT_DIPNAME( 0x01, 0x01, "SW1:8" )
11451377   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
11461378   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r241752r241753
11661398   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
11671399   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
11681400
1169   PORT_START("a80000")
1401   PORT_START("mainpcb:a80000")
11701402   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 )   /* abort */
11711403   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 )   /* start */
11721404   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )    /* aux coin */
r241752r241753
11801412   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL )  /* center edge on steering wheel */
11811413   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
11821414
1183   PORT_START("8BADC0")        /* b00000 - 8 bit ADC 0 - gas pedal */
1415   PORT_START("mainpcb:8BADC0")        /* b00000 - 8 bit ADC 0 - gas pedal */
11841416   PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
11851417
1186   PORT_START("8BADC1")        /* b00000 - 8 bit ADC 1 */
1418   PORT_START("mainpcb:8BADC1")        /* b00000 - 8 bit ADC 1 */
11871419   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
11881420
1189   PORT_START("8BADC2")        /* b00000 - 8 bit ADC 2 - voice mic */
1421   PORT_START("mainpcb:8BADC2")        /* b00000 - 8 bit ADC 2 - voice mic */
11901422   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
11911423
1192   PORT_START("8BADC3")        /* b00000 - 8 bit ADC 3 - volume */
1424   PORT_START("mainpcb:8BADC3")        /* b00000 - 8 bit ADC 3 - volume */
11931425   PORT_BIT( 0xff, 0X80, IPT_UNUSED )
11941426
1195   PORT_START("8BADC4")        /* b00000 - 8 bit ADC 4 - elevator */
1427   PORT_START("mainpcb:8BADC4")        /* b00000 - 8 bit ADC 4 - elevator */
11961428   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_REVERSE PORT_NAME("Elevator") /* up/down */
11971429
1198   PORT_START("8BADC5")        /* b00000 - 8 bit ADC 5 - canopy */
1430   PORT_START("mainpcb:8BADC5")        /* b00000 - 8 bit ADC 5 - canopy */
11991431   PORT_BIT( 0xff, 0X80, IPT_UNUSED )
12001432
1201   PORT_START("8BADC6")        /* b00000 - 8 bit ADC 6 - brake */
1433   PORT_START("mainpcb:8BADC6")        /* b00000 - 8 bit ADC 6 - brake */
12021434   PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Brake")
12031435
1204   PORT_START("8BADC7")        /* b00000 - 8 bit ADC 7 - seat adjust */
1436   PORT_START("mainpcb:8BADC7")        /* b00000 - 8 bit ADC 7 - seat adjust */
12051437   PORT_BIT( 0xff, 0X80, IPT_UNUSED )
12061438
1207   PORT_START("12BADC0")       /* 400000 - steering wheel */
1439   PORT_START("mainpcb:12BADC0")       /* 400000 - steering wheel */
12081440   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_REVERSE PORT_NAME("Steering Wheel")
12091441
12101442   /* dummy ADC ports to end up with the same number as the full version */
1211   PORT_START("12BADC1")
1443   PORT_START("mainpcb:12BADC1")
12121444   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1213   PORT_START("12BADC2")
1445   PORT_START("mainpcb:12BADC2")
12141446   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1215   PORT_START("12BADC3")
1447   PORT_START("mainpcb:12BADC3")
12161448   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
12171449INPUT_PORTS_END
12181450
r241752r241753
12231455 *
12241456 *************************************/
12251457
1458INTERRUPT_GEN_MEMBER(harddriv_state::video_int_gen)
1459{
1460   m_video_int_state = 1;
1461   update_interrupts();
1462}
1463
1464
12261465/* Driver board without MSP (used by Race Drivin' cockpit) */
1227static MACHINE_CONFIG_START( driver_nomsp, harddriv_state )
1466static MACHINE_CONFIG_FRAGMENT( driver_nomsp )
12281467
12291468   /* basic machine hardware */
12301469   MCFG_CPU_ADD("maincpu", M68010, HARDDRIV_MASTER_CLOCK/4)
12311470   MCFG_CPU_PROGRAM_MAP(driver_68k_map)
1232   MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
1471   MCFG_DEVICE_VBLANK_INT_DRIVER("screen", harddriv_state, video_int_gen)
12331472   MCFG_CPU_PERIODIC_INT_DRIVER(harddriv_state, hd68k_irq_gen,  (double)HARDDRIV_MASTER_CLOCK/16/16/16/16/2)
12341473
1474   MCFG_SLAPSTIC_ADD("slapstic")
1475   MCFG_SLAPSTIC_68K_ACCESS(1)
1476
12351477   MCFG_CPU_ADD("gsp", TMS34010, HARDDRIV_GSP_CLOCK)
12361478   MCFG_CPU_PROGRAM_MAP(driver_gsp_map)
12371479   MCFG_TMS340X0_HALT_ON_RESET(TRUE) /* halt on reset */
r241752r241753
12411483   MCFG_TMS340X0_OUTPUT_INT_CB(WRITELINE(harddriv_state, hdgsp_irq_gen))
12421484   MCFG_TMS340X0_TO_SHIFTREG_CB(harddriv_state, hdgsp_write_to_shiftreg)
12431485   MCFG_TMS340X0_FROM_SHIFTREG_CB(harddriv_state, hdgsp_read_from_shiftreg)
1486   MCFG_VIDEO_SET_SCREEN("screen")
12441487
12451488   MCFG_QUANTUM_TIME(attotime::from_hz(30000))
12461489
1247   MCFG_MACHINE_START_OVERRIDE(harddriv_state,harddriv)
1248   MCFG_MACHINE_RESET_OVERRIDE(harddriv_state,harddriv)
1249
12501490   MCFG_M48T02_ADD("200e") // MK48T02
12511491   MCFG_EEPROM_2816_ADD("210e") // MK48Z02
12521492
r241752r241753
12611501   MCFG_SCREEN_UPDATE_DEVICE("gsp", tms34010_device, tms340x0_ind16)
12621502   MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
12631503   MCFG_SCREEN_PALETTE("palette")
1264
1265   MCFG_VIDEO_START_OVERRIDE(harddriv_state,harddriv)
12661504MACHINE_CONFIG_END
12671505
12681506
12691507/* Driver board with MSP (used by Hard Drivin' cockpit) */
1270static MACHINE_CONFIG_DERIVED( driver_msp, driver_nomsp )
1508static MACHINE_CONFIG_FRAGMENT( driver_msp )
12711509
1510   MCFG_FRAGMENT_ADD( driver_nomsp )
1511
12721512   /* basic machine hardware */
12731513   MCFG_CPU_ADD("msp", TMS34010, XTAL_50MHz)
12741514   MCFG_CPU_PROGRAM_MAP(driver_msp_map)
r241752r241753
12761516   MCFG_TMS340X0_PIXEL_CLOCK(5000000) /* pixel clock */
12771517   MCFG_TMS340X0_PIXELS_PER_CLOCK(2) /* pixels per clock */
12781518   MCFG_TMS340X0_OUTPUT_INT_CB(WRITELINE(harddriv_state, hdmsp_irq_gen))
1519   MCFG_VIDEO_SET_SCREEN("screen")
1520
12791521MACHINE_CONFIG_END
12801522
12811523
12821524/* Multisync board without MSP (used by STUN Runner, Steel Talons, Race Drivin' compact) */
1283static MACHINE_CONFIG_DERIVED( multisync_nomsp, driver_nomsp )
1525static MACHINE_CONFIG_FRAGMENT( multisync_nomsp )
12841526
1527   MCFG_FRAGMENT_ADD( driver_nomsp )
1528
12851529   /* basic machine hardware */
12861530   MCFG_CPU_MODIFY("maincpu")
12871531   MCFG_CPU_PROGRAM_MAP(multisync_68k_map)
r241752r241753
12991543
13001544
13011545/* Multisync board with MSP (used by Hard Drivin' compact) */
1302static MACHINE_CONFIG_DERIVED( multisync_msp, multisync_nomsp )
1546static MACHINE_CONFIG_FRAGMENT( multisync_msp )
13031547
1548   MCFG_FRAGMENT_ADD( multisync_nomsp )
1549
13041550   /* basic machine hardware */
13051551   MCFG_CPU_ADD("msp", TMS34010, XTAL_50MHz)
13061552   MCFG_CPU_PROGRAM_MAP(driver_msp_map)
r241752r241753
13081554   MCFG_TMS340X0_PIXEL_CLOCK(5000000) /* pixel clock */
13091555   MCFG_TMS340X0_PIXELS_PER_CLOCK(2) /* pixels per clock */
13101556   MCFG_TMS340X0_OUTPUT_INT_CB(WRITELINE(harddriv_state, hdmsp_irq_gen))
1557   MCFG_VIDEO_SET_SCREEN("screen")
1558
13111559MACHINE_CONFIG_END
13121560
13131561
13141562/* Multisync II board (used by Hard Drivin's Airborne) */
1315static MACHINE_CONFIG_DERIVED( multisync2, multisync_nomsp )
1563static MACHINE_CONFIG_FRAGMENT( multisync2 )
13161564
1565   MCFG_FRAGMENT_ADD( multisync_nomsp )
1566
13171567   /* basic machine hardware */
13181568   MCFG_CPU_MODIFY("maincpu")
13191569   MCFG_CPU_PROGRAM_MAP(multisync2_68k_map)
r241752r241753
14441694 *
14451695 *************************************/
14461696
1447static MACHINE_CONFIG_DERIVED( harddriv, driver_msp )
1448
1697static MACHINE_CONFIG_FRAGMENT( harddriv )
1698   MCFG_FRAGMENT_ADD( driver_msp )
14491699   /* basic machine hardware */        /* original driver board with MSP */
14501700   MCFG_FRAGMENT_ADD( adsp )           /* ADSP board */
14511701   MCFG_FRAGMENT_ADD( driversnd )      /* driver sound board */
14521702MACHINE_CONFIG_END
14531703
1704static MACHINE_CONFIG_FRAGMENT( harddrivc )
1705   MCFG_FRAGMENT_ADD( multisync_msp )
14541706
1455static MACHINE_CONFIG_DERIVED( harddrivc, multisync_msp )
1456
14571707   /* basic machine hardware */        /* multisync board with MSP */
14581708   MCFG_FRAGMENT_ADD( adsp )           /* ADSP board */
14591709   MCFG_FRAGMENT_ADD( driversnd )      /* driver sound board */
14601710MACHINE_CONFIG_END
14611711
1712static MACHINE_CONFIG_FRAGMENT( racedriv )
1713   MCFG_FRAGMENT_ADD( driver_nomsp )
14621714
1463static MACHINE_CONFIG_DERIVED( racedriv, driver_nomsp )
1464
14651715   /* basic machine hardware */        /* original driver board without MSP */
14661716   MCFG_FRAGMENT_ADD( adsp )           /* ADSP board */
14671717   MCFG_FRAGMENT_ADD( dsk )            /* DSK board */
14681718   MCFG_FRAGMENT_ADD( driversnd )      /* driver sound board */
14691719MACHINE_CONFIG_END
14701720
1721static MACHINE_CONFIG_FRAGMENT( racedrivc )
14711722
1472static MACHINE_CONFIG_DERIVED( racedrivc, multisync_nomsp )
1723   MCFG_FRAGMENT_ADD( multisync_nomsp )
14731724
14741725   /* basic machine hardware */        /* multisync board without MSP */
14751726   MCFG_FRAGMENT_ADD( adsp )           /* ADSP board */
r241752r241753
14781729MACHINE_CONFIG_END
14791730
14801731
1481static MACHINE_CONFIG_DERIVED( stunrun, multisync_nomsp )
1732static MACHINE_CONFIG_FRAGMENT( racedrivc_panorama_side )
14821733
1734   MCFG_FRAGMENT_ADD( multisync_nomsp )
1735
14831736   /* basic machine hardware */        /* multisync board without MSP */
1737   MCFG_FRAGMENT_ADD( adsp )           /* ADSP board */
1738//   MCFG_FRAGMENT_ADD( dsk )            /* DSK board */
1739//   MCFG_FRAGMENT_ADD( driversnd )      /* driver sound board */
1740MACHINE_CONFIG_END
1741
1742WRITE_LINE_MEMBER(harddriv_state::sound_int_write_line)
1743{
1744   m_sound_int_state = state;
1745   update_interrupts();
1746}
1747
1748
1749static MACHINE_CONFIG_FRAGMENT( stunrun )
1750
1751   MCFG_FRAGMENT_ADD( multisync_nomsp )
1752
1753   /* basic machine hardware */        /* multisync board without MSP */
14841754   MCFG_CPU_MODIFY("gsp")
14851755   MCFG_TMS340X0_PIXEL_CLOCK(5000000)  /* pixel clock */
14861756   MCFG_FRAGMENT_ADD( adsp )           /* ADSP board */
r241752r241753
14921762   /* sund hardware */
14931763   MCFG_SPEAKER_STANDARD_MONO("mono")
14941764
1495   MCFG_ATARI_JSA_II_ADD("jsa", WRITELINE(atarigen_state, sound_int_write_line))
1765   MCFG_ATARI_JSA_II_ADD("jsa", WRITELINE(harddriv_state, sound_int_write_line))
14961766   MCFG_ATARI_JSA_TEST_PORT("IN0", 5)
14971767   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
14981768MACHINE_CONFIG_END
14991769
1770static MACHINE_CONFIG_FRAGMENT( steeltal )
1771   MCFG_FRAGMENT_ADD( multisync_msp )
15001772
1501static MACHINE_CONFIG_DERIVED( steeltal, multisync_msp )
1502
15031773   /* basic machine hardware */        /* multisync board with MSP */
15041774   MCFG_FRAGMENT_ADD( ds3 )            /* DS III board */
15051775   MCFG_DEVICE_REMOVE("ds3sdsp")       /* DS III sound components are not present */
r241752r241753
15141784   /* sund hardware */
15151785   MCFG_SPEAKER_STANDARD_MONO("mono")
15161786
1517   MCFG_ATARI_JSA_III_ADD("jsa", WRITELINE(atarigen_state, sound_int_write_line))
1787   MCFG_ATARI_JSA_III_ADD("jsa", WRITELINE(harddriv_state, sound_int_write_line))
15181788   MCFG_ATARI_JSA_TEST_PORT("IN0", 5)
15191789   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
15201790MACHINE_CONFIG_END
15211791
1792static MACHINE_CONFIG_FRAGMENT( strtdriv )
15221793
1523static MACHINE_CONFIG_DERIVED( strtdriv, multisync_nomsp )
1794   MCFG_FRAGMENT_ADD( multisync_nomsp )
15241795
15251796   /* basic machine hardware */        /* multisync board */
15261797   MCFG_FRAGMENT_ADD( ds3 )            /* DS III board */
r241752r241753
15301801   MCFG_FRAGMENT_ADD( dsk )            /* DSK board */
15311802MACHINE_CONFIG_END
15321803
1804static MACHINE_CONFIG_FRAGMENT( hdrivair )
15331805
1534static MACHINE_CONFIG_DERIVED( hdrivair, multisync2 )
1806   MCFG_FRAGMENT_ADD( multisync2 )
15351807
15361808   /* basic machine hardware */        /* multisync II board */
15371809   MCFG_FRAGMENT_ADD( ds3 )            /* DS IV board */
15381810   MCFG_FRAGMENT_ADD( dsk2 )           /* DSK II board */
15391811MACHINE_CONFIG_END
15401812
1813const device_type HARDDRIV_BOARD_DEVICE = &device_creator<harddriv_board_device_state>;
15411814
1815harddriv_board_device_state::harddriv_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
1816   : harddriv_state(mconfig, tag, owner, clock)
1817{
1818}
15421819
1820machine_config_constructor harddriv_board_device_state::device_mconfig_additions() const
1821{
1822   return MACHINE_CONFIG_NAME( harddriv );
1823}
1824
1825void harddriv_board_device_state::device_start()
1826{
1827   init_harddriv();
1828   harddriv_state::device_start();
1829}
1830
1831/* Compact */
1832
1833void harddrivc_board_device_state::device_start()
1834{   
1835   init_harddrivc();
1836   harddriv_state::device_start();
1837}
1838
1839const device_type HARDDRIVC_BOARD_DEVICE = &device_creator<harddrivc_board_device_state>;
1840
1841harddrivc_board_device_state::harddrivc_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
1842   : harddriv_state(mconfig, tag, owner, clock)
1843{
1844}
1845
1846machine_config_constructor harddrivc_board_device_state::device_mconfig_additions() const
1847{
1848   return MACHINE_CONFIG_NAME( harddrivc );
1849}
1850
1851
1852/* Race Drivin */
1853
1854void racedriv_board_device_state::device_start()
1855{
1856   init_racedriv();
1857   harddriv_state::device_start();
1858}
1859
1860void racedrivb1_board_device_state::device_start()
1861{
1862   init_racedrivb1();
1863   harddriv_state::device_start();
1864}
1865
1866const device_type RACEDRIV_BOARD_DEVICE = &device_creator<racedriv_board_device_state>;
1867const device_type RACEDRIVB1_BOARD_DEVICE = &device_creator<racedrivb1_board_device_state>;
1868
1869racedriv_board_device_state::racedriv_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
1870   : harddriv_state(mconfig, tag, owner, clock)
1871{
1872}
1873
1874machine_config_constructor racedriv_board_device_state::device_mconfig_additions() const
1875{
1876   return MACHINE_CONFIG_NAME( racedriv );
1877}
1878
1879
1880/* Race Drivin Compact */
1881
1882void racedrivc_board_device_state::device_start()
1883{
1884   init_racedrivc();
1885   harddriv_state::device_start();
1886}
1887
1888void racedrivc1_board_device_state::device_start()
1889{
1890   init_racedrivc1();
1891   harddriv_state::device_start();
1892}
1893
1894void racedrivc_panorama_side_board_device_state::device_start()
1895{
1896   init_racedrivc_panorama_side();
1897   harddriv_state::device_start();
1898}
1899
1900
1901
1902const device_type RACEDRIVC_BOARD_DEVICE = &device_creator<racedrivc_board_device_state>;
1903const device_type RACEDRIVC1_BOARD_DEVICE = &device_creator<racedrivc1_board_device_state>;
1904const device_type RACEDRIVC_PANORAMA_SIDE_BOARD_DEVICE = &device_creator<racedrivc_panorama_side_board_device_state>;
1905
1906racedrivc_board_device_state::racedrivc_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
1907   : harddriv_state(mconfig, tag, owner, clock)
1908{
1909}
1910
1911machine_config_constructor racedrivc_board_device_state::device_mconfig_additions() const
1912{
1913   return MACHINE_CONFIG_NAME( racedrivc );
1914}
1915
1916machine_config_constructor racedrivc_panorama_side_board_device_state::device_mconfig_additions() const
1917{
1918   return MACHINE_CONFIG_NAME( racedrivc_panorama_side );
1919}
1920
1921
1922/* Stun Runner */
1923
1924void stunrun_board_device_state::device_start()
1925{
1926   init_stunrun();
1927   harddriv_state::device_start();
1928}
1929
1930const device_type STUNRUN_BOARD_DEVICE = &device_creator<stunrun_board_device_state>;
1931
1932stunrun_board_device_state::stunrun_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
1933   : harddriv_state(mconfig, tag, owner, clock)
1934{
1935}
1936
1937machine_config_constructor stunrun_board_device_state::device_mconfig_additions() const
1938{
1939   return MACHINE_CONFIG_NAME( stunrun );
1940}
1941
1942/* Steel Talons */
1943
1944void steeltal_board_device_state::device_start()
1945{
1946   init_steeltal();
1947   harddriv_state::device_start();
1948}
1949
1950void steeltal1_board_device_state::device_start()
1951{
1952   init_steeltal1();
1953   harddriv_state::device_start();
1954}
1955
1956void steeltalp_board_device_state::device_start()
1957{
1958   init_steeltalp();
1959   harddriv_state::device_start();
1960}
1961
1962const device_type STEELTAL_BOARD_DEVICE = &device_creator<steeltal_board_device_state>;
1963const device_type STEELTAL1_BOARD_DEVICE = &device_creator<steeltal1_board_device_state>;
1964const device_type STEELTALP_BOARD_DEVICE = &device_creator<steeltalp_board_device_state>;
1965
1966steeltal_board_device_state::steeltal_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
1967   : harddriv_state(mconfig, tag, owner, clock)
1968{
1969}
1970
1971machine_config_constructor steeltal_board_device_state::device_mconfig_additions() const
1972{
1973   return MACHINE_CONFIG_NAME( steeltal );
1974}
1975
1976/* Street Drivin' */
1977
1978void strtdriv_board_device_state::device_start()
1979{
1980   init_strtdriv();
1981   harddriv_state::device_start();
1982}
1983
1984const device_type STRTDRIV_BOARD_DEVICE = &device_creator<strtdriv_board_device_state>;
1985
1986strtdriv_board_device_state::strtdriv_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
1987   : harddriv_state(mconfig, tag, owner, clock)
1988{
1989}
1990
1991machine_config_constructor strtdriv_board_device_state::device_mconfig_additions() const
1992{
1993   return MACHINE_CONFIG_NAME( strtdriv );
1994}
1995
1996/* Hard Drivin' Airbourne */
1997
1998void hdrivair_board_device_state::device_start()
1999{
2000   init_hdrivair();
2001   harddriv_state::device_start();
2002}
2003
2004void hdrivairp_board_device_state::device_start()
2005{
2006   init_hdrivairp();
2007   harddriv_state::device_start();
2008}
2009
2010const device_type HDRIVAIR_BOARD_DEVICE = &device_creator<hdrivair_board_device_state>;
2011const device_type HDRIVAIRP_BOARD_DEVICE = &device_creator<hdrivairp_board_device_state>;
2012
2013hdrivair_board_device_state::hdrivair_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
2014   : harddriv_state(mconfig, tag, owner, clock)
2015{
2016}
2017
2018machine_config_constructor hdrivair_board_device_state::device_mconfig_additions() const
2019{
2020   return MACHINE_CONFIG_NAME( hdrivair );
2021}
2022
2023
2024
2025static MACHINE_CONFIG_START( harddriv_machine, harddriv_new_state )
2026   MCFG_DEVICE_ADD("mainpcb", HARDDRIV_BOARD_DEVICE, 0)
2027MACHINE_CONFIG_END
2028
2029static MACHINE_CONFIG_START( harddrivc_machine, harddriv_new_state )
2030   MCFG_DEVICE_ADD("mainpcb", HARDDRIVC_BOARD_DEVICE, 0)
2031MACHINE_CONFIG_END
2032
2033static MACHINE_CONFIG_START( racedriv_machine, harddriv_new_state )
2034   MCFG_DEVICE_ADD("mainpcb", RACEDRIV_BOARD_DEVICE, 0)
2035MACHINE_CONFIG_END
2036
2037static MACHINE_CONFIG_START( racedrivb1_machine, harddriv_new_state )
2038   MCFG_DEVICE_ADD("mainpcb", RACEDRIVB1_BOARD_DEVICE, 0)
2039MACHINE_CONFIG_END
2040
2041static MACHINE_CONFIG_START( racedrivc_machine, harddriv_new_state )
2042   MCFG_DEVICE_ADD("mainpcb", RACEDRIVC_BOARD_DEVICE, 0)
2043MACHINE_CONFIG_END
2044
2045static MACHINE_CONFIG_START( racedrivc1_machine, harddriv_new_state )
2046   MCFG_DEVICE_ADD("mainpcb", RACEDRIVC1_BOARD_DEVICE, 0)
2047MACHINE_CONFIG_END
2048
2049static MACHINE_CONFIG_START( stunrun_machine, harddriv_new_state )
2050   MCFG_DEVICE_ADD("mainpcb", STUNRUN_BOARD_DEVICE, 0)
2051MACHINE_CONFIG_END
2052
2053static MACHINE_CONFIG_START( strtdriv_machine, harddriv_new_state )
2054   MCFG_DEVICE_ADD("mainpcb", STRTDRIV_BOARD_DEVICE, 0)
2055MACHINE_CONFIG_END
2056
2057static MACHINE_CONFIG_START( hdrivair_machine, harddriv_new_state )
2058   MCFG_DEVICE_ADD("mainpcb", HDRIVAIR_BOARD_DEVICE, 0)
2059MACHINE_CONFIG_END
2060
2061static MACHINE_CONFIG_START( hdrivairp_machine, harddriv_new_state )
2062   MCFG_DEVICE_ADD("mainpcb", HDRIVAIRP_BOARD_DEVICE, 0)
2063MACHINE_CONFIG_END
2064
2065static MACHINE_CONFIG_START( steeltal_machine, harddriv_new_state )
2066   MCFG_DEVICE_ADD("mainpcb", STEELTAL_BOARD_DEVICE, 0)
2067MACHINE_CONFIG_END
2068
2069static MACHINE_CONFIG_START( steeltal1_machine, harddriv_new_state )
2070   MCFG_DEVICE_ADD("mainpcb", STEELTAL1_BOARD_DEVICE, 0)
2071MACHINE_CONFIG_END
2072
2073static MACHINE_CONFIG_START( steeltalp_machine, harddriv_new_state )
2074   MCFG_DEVICE_ADD("mainpcb", STEELTALP_BOARD_DEVICE, 0)
2075MACHINE_CONFIG_END
2076
2077WRITE_LINE_MEMBER(racedriv_board_device_state::tx_a)
2078{
2079   // passive connection, one way, to both screens
2080   mc68681_device* left = machine().device<mc68681_device>(":leftpcb:duartn68681");
2081   mc68681_device* right = machine().device<mc68681_device>(":rightpcb:duartn68681");
2082   left->rx_a_w(state);
2083   right->rx_a_w(state);
2084}
2085
2086static MACHINE_CONFIG_START( racedriv_panorama_machine, harddriv_new_state )
2087   MCFG_DEVICE_ADD("mainpcb", RACEDRIV_BOARD_DEVICE, 0) // if this is anything except the first screen the partial updates / rasters glitch, mame bug? something assuming primary_screen? other screens suffer from the same issue, not related to new code, you could reproduce it before just by adding a dummy screen
2088   MCFG_DEVICE_ADD("leftpcb", RACEDRIVC_PANORAMA_SIDE_BOARD_DEVICE, 0)
2089   MCFG_DEVICE_ADD("rightpcb", RACEDRIVC_PANORAMA_SIDE_BOARD_DEVICE, 0)
2090
2091   MCFG_QUANTUM_TIME(attotime::from_hz(100000))
2092   MCFG_DEVICE_MODIFY("mainpcb:duartn68681")
2093   MCFG_MC68681_A_TX_CALLBACK(WRITELINE(racedriv_board_device_state,tx_a ))
2094
2095
2096
2097MACHINE_CONFIG_END
2098
15432099/*************************************
15442100 *
15452101 *  ROM definition(s)
r241752r241753
15542110*/
15552111
15562112ROM_START( harddriv )
1557   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2113   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
15582114   ROM_LOAD16_BYTE( "136052-7105.200r", 0x000000, 0x010000, CRC(af5d5c3e) SHA1(09ccf4aa933413b71b6a42796d42299e1334902f) )
15592115   ROM_LOAD16_BYTE( "136052-7113.210r", 0x000001, 0x010000, CRC(3330a942) SHA1(b9210f6befd875be8bc1dbd31f44d0cb63166748) )
15602116   ROM_LOAD16_BYTE( "136052-2106.200s", 0x020000, 0x010000, CRC(a668db0e) SHA1(8ac405a0ba12bac9acabdb64970608d1b2b1a99b) )
r241752r241753
15642120   ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) )
15652121   ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) )
15662122
1567   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
2123   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
15682124   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
15692125   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
15702126
1571   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2127   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
15722128   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
15732129   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
15742130   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
15752131   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
15762132
1577   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
2133   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
15782134   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
15792135   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
15802136   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
15812137   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
15822138
1583   ROM_REGION( 0x800, "200e", 0 )
2139   ROM_REGION( 0x800, "mainpcb:200e", 0 )
15842140   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
15852141
1586   ROM_REGION( 0x800, "210e", 0 )
1587   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
2142   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2143   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )   
15882144ROM_END
15892145
15902146
2147
15912148ROM_START( harddrivg )
1592   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2149   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
15932150   ROM_LOAD16_BYTE( "136052-7205.200r", 0x000000, 0x010000, CRC(b50b1968) SHA1(b6fd9f0600cba995bf31fd0f30f15f091bbbfb09) )
15942151   ROM_LOAD16_BYTE( "136052-7213.210r", 0x000001, 0x010000, CRC(e6d57108) SHA1(a4eda6db4ec67b1cb8f9bfee17d8adc93675ef8a) )
15952152   ROM_LOAD16_BYTE( "136052-4206.200s", 0x020000, 0x010000, CRC(70f78c50) SHA1(6baed202937c455c7c6e4baa74ee7858673a37fc) )
r241752r241753
15992156   ROM_LOAD16_BYTE( "136052-4211.200x", 0x0c0000, 0x010000, CRC(20d1b3d5) SHA1(b7c4a2cf6ba729530c24980704989b3a3efb343b) )
16002157   ROM_LOAD16_BYTE( "136052-4219.210x", 0x0c0001, 0x010000, CRC(105e7052) SHA1(a8d13c35418e58410cfd74c243b74963f1553068) )
16012158
1602   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
2159   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
16032160   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
16042161   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
16052162
1606   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2163   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
16072164   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
16082165   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
16092166   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
16102167   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
16112168
1612   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
2169   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
16132170   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
16142171   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
16152172   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
16162173   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
16172174
1618   ROM_REGION( 0x800, "200e", 0 )
2175   ROM_REGION( 0x800, "mainpcb:200e", 0 )
16192176   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
16202177
1621   ROM_REGION( 0x800, "210e", 0 )
2178   ROM_REGION( 0x800, "mainpcb:210e", 0 )
16222179   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
16232180ROM_END
16242181
16252182
16262183ROM_START( harddrivj )
1627   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2184   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
16282185   ROM_LOAD16_BYTE( "136052-7805.200r", 0x000000, 0x010000, CRC(f170c842) SHA1(842cef66646a664300a7e2b827c0bbd53e5f27ad) )
16292186   ROM_LOAD16_BYTE( "136052-7813.210r", 0x000001, 0x010000, CRC(e5a3367d) SHA1(96b3a6fb5561fa59d7ac4b840fa1891d02f1bd8c) )
16302187   ROM_LOAD16_BYTE( "136052-6806.200s", 0x020000, 0x010000, CRC(bd68696e) SHA1(33b173f210183fef84c4c04b3bff515d79b4924d) )
r241752r241753
16362193   ROM_LOAD16_BYTE( "136052-6811.200x", 0x0c0000, 0x010000, CRC(7bc5c8da) SHA1(ac228d6391bc9ac4238f953f9ad6eb93b3ff9958) )
16372194   ROM_LOAD16_BYTE( "136052-6819.210x", 0x0c0001, 0x010000, CRC(368b7e17) SHA1(e8742edec6961173df4450073a427cf3b9f3ff57) )
16382195
1639   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
2196   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
16402197   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
16412198   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
16422199
1643   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2200   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
16442201   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
16452202   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
16462203   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
16472204   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
16482205
1649   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
2206   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
16502207   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
16512208   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
16522209   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
16532210   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
16542211
1655   ROM_REGION( 0x800, "200e", 0 )
2212   ROM_REGION( 0x800, "mainpcb:200e", 0 )
16562213   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
16572214
1658   ROM_REGION( 0x800, "210e", 0 )
2215   ROM_REGION( 0x800, "mainpcb:210e", 0 )
16592216   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
16602217ROM_END
16612218
16622219
16632220ROM_START( harddrivb )
1664   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2221   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
16652222   ROM_LOAD16_BYTE( "136052-7905.200r", 0x000000, 0x010000, CRC(c4379a2e) SHA1(41dc66c1576c591520543343a798e0d80def2188) )
16662223   ROM_LOAD16_BYTE( "136052-7913.210r", 0x000001, 0x010000, CRC(1e76fa17) SHA1(80ec1de4c8a4622fb5c65ec3e8c194a8eabacc38) )
16672224   ROM_LOAD16_BYTE( "136052-6906.200s", 0x020000, 0x010000, CRC(47c4498b) SHA1(aad3463f29ffc733ab42a7abf739ca698cdd8ec1) )
r241752r241753
16712228   ROM_LOAD16_BYTE( "136052-5911.200x", 0x0c0000, 0x010000, CRC(564ac427) SHA1(f71d5a8d06681fc96e753e7cd18e16b32ba6907f) )
16722229   ROM_LOAD16_BYTE( "136052-5919.210x", 0x0c0001, 0x010000, CRC(752d9a6d) SHA1(28edb54c7217f5ccdcb2b5614d4e8c2290d96b2a) )
16732230
1674   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
2231   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
16752232   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
16762233   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
16772234
1678   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2235   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
16792236   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
16802237   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
16812238   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
16822239   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
16832240
1684   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
2241   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
16852242   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
16862243   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
16872244   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
16882245   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
16892246
1690   ROM_REGION( 0x800, "200e", 0 )
2247   ROM_REGION( 0x800, "mainpcb:200e", 0 )
16912248   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
16922249
1693   ROM_REGION( 0x800, "210e", 0 )
2250   ROM_REGION( 0x800, "mainpcb:210e", 0 )
16942251   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
16952252ROM_END
16962253
16972254
16982255ROM_START( harddrivb6 )
1699   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2256   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
17002257   ROM_LOAD16_BYTE( "136052-6905.200r", 0x000000, 0x010000, CRC(b1f38593) SHA1(958622128c7c687071211343ef657c38f928e25a) )
17012258   ROM_LOAD16_BYTE( "136052-6913.210r", 0x000001, 0x010000, CRC(15eb0da5) SHA1(0200328582c77d4d64e9f7df1f8755f7f4975ac3) )
17022259   ROM_LOAD16_BYTE( "136052-6906.200s", 0x020000, 0x010000, CRC(47c4498b) SHA1(aad3463f29ffc733ab42a7abf739ca698cdd8ec1) )
r241752r241753
17062263   ROM_LOAD16_BYTE( "136052-5911.200x", 0x0c0000, 0x010000, CRC(564ac427) SHA1(f71d5a8d06681fc96e753e7cd18e16b32ba6907f) )
17072264   ROM_LOAD16_BYTE( "136052-5919.210x", 0x0c0001, 0x010000, CRC(752d9a6d) SHA1(28edb54c7217f5ccdcb2b5614d4e8c2290d96b2a) )
17082265
1709   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
2266   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
17102267   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
17112268   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
17122269
1713   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2270   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
17142271   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
17152272   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
17162273   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
17172274   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
17182275
1719   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
2276   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
17202277   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
17212278   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
17222279   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
17232280   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
17242281
1725   ROM_REGION( 0x800, "200e", 0 )
2282   ROM_REGION( 0x800, "mainpcb:200e", 0 )
17262283   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
17272284
1728   ROM_REGION( 0x800, "210e", 0 )
2285   ROM_REGION( 0x800, "mainpcb:210e", 0 )
17292286   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
17302287ROM_END
17312288
17322289
17332290ROM_START( harddrivj6 )
1734   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2291   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
17352292   ROM_LOAD16_BYTE( "136052-6805.200r", 0x000000, 0x010000, CRC(e61ce7af) SHA1(38115a5a44f330abf1f7d684e630a1a232769f7c) )
17362293   ROM_LOAD16_BYTE( "136052-6813.210r", 0x000001, 0x010000, CRC(adfef1e7) SHA1(dc1bdb5ce9143a94d734ce9ecdf9195589608b65) )
17372294   ROM_LOAD16_BYTE( "136052-6806.200s", 0x020000, 0x010000, CRC(bd68696e) SHA1(33b173f210183fef84c4c04b3bff515d79b4924d) )
r241752r241753
17432300   ROM_LOAD16_BYTE( "136052-6811.200x", 0x0c0000, 0x010000, CRC(7bc5c8da) SHA1(ac228d6391bc9ac4238f953f9ad6eb93b3ff9958) )
17442301   ROM_LOAD16_BYTE( "136052-6819.210x", 0x0c0001, 0x010000, CRC(368b7e17) SHA1(e8742edec6961173df4450073a427cf3b9f3ff57) )
17452302
1746   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
2303   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
17472304   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
17482305   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
17492306
1750   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2307   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
17512308   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
17522309   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
17532310   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
17542311   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
17552312
1756   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
2313   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
17572314   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
17582315   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
17592316   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
17602317   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
17612318
1762   ROM_REGION( 0x800, "200e", 0 )
2319   ROM_REGION( 0x800, "mainpcb:200e", 0 )
17632320   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
17642321
1765   ROM_REGION( 0x800, "210e", 0 )
2322   ROM_REGION( 0x800, "mainpcb:210e", 0 )
17662323   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
17672324ROM_END
17682325
17692326
17702327ROM_START( harddrivb5 )
1771   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2328   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
17722329   ROM_LOAD16_BYTE( "136052-5905.200r", 0x000000, 0x010000, CRC(6dd28313) SHA1(c1f860470070dad7d8865aca508ecf5eb92fa8c5) )
17732330   ROM_LOAD16_BYTE( "136052-5913.210r", 0x000001, 0x010000, CRC(2e5a006f) SHA1(8a2da1868bbad54b33e993f5bf9ba61186caef5b) )
17742331   ROM_LOAD16_BYTE( "136052-5906.200s", 0x020000, 0x010000, CRC(206b59db) SHA1(2bbae0ac4af9cdda44d6d8b5fcf6b3b1c3103796) )
r241752r241753
17782335   ROM_LOAD16_BYTE( "136052-5911.200x", 0x0c0000, 0x010000, CRC(564ac427) SHA1(f71d5a8d06681fc96e753e7cd18e16b32ba6907f) )
17792336   ROM_LOAD16_BYTE( "136052-5919.210x", 0x0c0001, 0x010000, CRC(752d9a6d) SHA1(28edb54c7217f5ccdcb2b5614d4e8c2290d96b2a) )
17802337
1781   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
2338   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
17822339   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
17832340   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
17842341
1785   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2342   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
17862343   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
17872344   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
17882345   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
17892346   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
17902347
1791   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
2348   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
17922349   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
17932350   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
17942351   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
17952352   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
17962353
1797   ROM_REGION( 0x800, "200e", 0 )
2354   ROM_REGION( 0x800, "mainpcb:200e", 0 )
17982355   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
17992356
1800   ROM_REGION( 0x800, "210e", 0 )
2357   ROM_REGION( 0x800, "mainpcb:210e", 0 )
18012358   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
18022359ROM_END
18032360
18042361
18052362ROM_START( harddrivg4 )
1806   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2363   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
18072364   ROM_LOAD16_BYTE( "136052-4205.200r", 0x000000, 0x010000, CRC(94db6d9e) SHA1(98a509daacb9f18c7171246d1782d09a6456e241) )
18082365   ROM_LOAD16_BYTE( "136052-4213.210r", 0x000001, 0x010000, CRC(cacaf671) SHA1(7bd0f531402b2f10cb00bb8f7ca0b62eed23bffa) )
18092366   ROM_LOAD16_BYTE( "136052-4206.200s", 0x020000, 0x010000, CRC(70f78c50) SHA1(6baed202937c455c7c6e4baa74ee7858673a37fc) )
r241752r241753
18132370   ROM_LOAD16_BYTE( "136052-4211.200x", 0x0c0000, 0x010000, CRC(20d1b3d5) SHA1(b7c4a2cf6ba729530c24980704989b3a3efb343b) )
18142371   ROM_LOAD16_BYTE( "136052-4219.210x", 0x0c0001, 0x010000, CRC(105e7052) SHA1(a8d13c35418e58410cfd74c243b74963f1553068) )
18152372
1816   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
2373   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
18172374   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
18182375   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
18192376
1820   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2377   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
18212378   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
18222379   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
18232380   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
18242381   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
18252382
1826   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
2383   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
18272384   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
18282385   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
18292386   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
18302387   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
18312388
1832   ROM_REGION( 0x800, "200e", 0 )
2389   ROM_REGION( 0x800, "mainpcb:200e", 0 )
18332390   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
18342391
1835   ROM_REGION( 0x800, "210e", 0 )
2392   ROM_REGION( 0x800, "mainpcb:210e", 0 )
18362393   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
18372394ROM_END
18382395
18392396
18402397ROM_START( harddriv3 )
1841   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2398   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
18422399   ROM_LOAD16_BYTE( "136052-3105.200r", 0x000000, 0x010000, CRC(a42a2c69) SHA1(66233f25533106aab69df21db69f96368f1399a9) )
18432400   ROM_LOAD16_BYTE( "136052-3113.210r", 0x000001, 0x010000, CRC(358995b5) SHA1(f18c0da58ec7befefc61d5f0d35787516b775c92) )
18442401   ROM_LOAD16_BYTE( "136052-2106.200s", 0x020000, 0x010000, CRC(a668db0e) SHA1(8ac405a0ba12bac9acabdb64970608d1b2b1a99b) )
r241752r241753
18482405   ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) )
18492406   ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) )
18502407
1851   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
2408   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
18522409   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
18532410   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
18542411
1855   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2412   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
18562413   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
18572414   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
18582415   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
18592416   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
18602417
1861   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
2418   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
18622419   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
18632420   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
18642421   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
18652422   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
18662423
1867   ROM_REGION( 0x800, "200e", 0 )
2424   ROM_REGION( 0x800, "mainpcb:200e", 0 )
18682425   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
18692426
1870   ROM_REGION( 0x800, "210e", 0 )
2427   ROM_REGION( 0x800, "mainpcb:210e", 0 )
18712428   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
18722429ROM_END
18732430
18742431
18752432ROM_START( harddriv2 )
1876   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2433   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
18772434   ROM_LOAD16_BYTE( "136052-2105.200r", 0x000000, 0x010000, CRC(967903b9) SHA1(4363f3b3f08d00819f47a3682462fd0e5dc4e0ac) )
18782435   ROM_LOAD16_BYTE( "136052-2113.210r", 0x000001, 0x010000, CRC(c87f7067) SHA1(3d85d2ba818739ed05086502cd8e57438251b20b) )
18792436   ROM_LOAD16_BYTE( "136052-2106.200s", 0x020000, 0x010000, CRC(a668db0e) SHA1(8ac405a0ba12bac9acabdb64970608d1b2b1a99b) )
r241752r241753
18832440   ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) )
18842441   ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) )
18852442
1886   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
2443   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
18872444   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
18882445   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
18892446
1890   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2447   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
18912448   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
18922449   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
18932450   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
18942451   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
18952452
1896   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
2453   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
18972454   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
18982455   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
18992456   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
19002457   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
19012458
1902   ROM_REGION( 0x800, "200e", 0 )
2459   ROM_REGION( 0x800, "mainpcb:200e", 0 )
19032460   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
19042461
1905   ROM_REGION( 0x800, "210e", 0 )
2462   ROM_REGION( 0x800, "mainpcb:210e", 0 )
19062463   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
19072464ROM_END
19082465
19092466
19102467ROM_START( harddriv1 )
1911   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2468   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
19122469   ROM_LOAD16_BYTE( "136052-1105.200r", 0x000000, 0x010000, CRC(1dfda789) SHA1(83be0d66fe21e974f8d4582b0ab60245f1db7e55) )
19132470   ROM_LOAD16_BYTE( "136052-1113.210r", 0x000001, 0x010000, CRC(db2f6593) SHA1(864ea5604cea2507b180a91b35e349d3924bf9bc) )
19142471   ROM_LOAD16_BYTE( "136052-1106.200s", 0x020000, 0x010000, CRC(e82210fd) SHA1(916e674017f5187531c2de7961791c060f8412c7) )
r241752r241753
19182475   ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) )
19192476   ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) )
19202477
1921   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
2478   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
19222479   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
19232480   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
19242481
1925   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2482   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
19262483   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
19272484   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
19282485   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
19292486   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
19302487
1931   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
2488   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
19322489   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
19332490   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
19342491   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
19352492   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
19362493
1937   ROM_REGION( 0x800, "200e", 0 )
2494   ROM_REGION( 0x800, "mainpcb:200e", 0 )
19382495   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
19392496
1940   ROM_REGION( 0x800, "210e", 0 )
2497   ROM_REGION( 0x800, "mainpcb:210e", 0 )
19412498   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
19422499ROM_END
19432500
19442501
19452502ROM_START( harddrivc )
1946   ROM_REGION( 0x100000, "maincpu", 0 )    /* 1MB for 68000 code */
2503   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )    /* 1MB for 68000 code */
19472504   ROM_LOAD16_BYTE( "136068-2102.200r", 0x000000, 0x010000, CRC(6252048b) SHA1(64caf3adfad6965768fc6d39a8bcde62fe6dfa9e) )
19482505   ROM_LOAD16_BYTE( "136068-2101.210r", 0x000001, 0x010000, CRC(4805ba06) SHA1(e0c2d935ced05b8162f2925520422184a81d5294) )
19492506   ROM_LOAD16_BYTE( "136068-2104.200s", 0x020000, 0x010000, CRC(8246f945) SHA1(633b6c9a5d3e33d3035ccdb7b6ad883c334a4db9) )
r241752r241753
19532510   ROM_LOAD16_BYTE( "136068-1114.200x", 0x0c0000, 0x010000, CRC(293c153b) SHA1(6300a50766b19ad203b5c7da28d51bf22054b39e) )
19542511   ROM_LOAD16_BYTE( "136068-1113.210x", 0x0c0001, 0x010000, CRC(5630390d) SHA1(cd1932cee70cddd1fb2110d1aeebb573a13f1339) )
19552512
1956   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
2513   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
19572514   ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) )
19582515   ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) )
19592516
1960   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2517   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
19612518   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
19622519   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
19632520   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
19642521   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
19652522
1966   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
2523   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
19672524   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
19682525   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
19692526   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
19702527   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
19712528
1972   ROM_REGION( 0x800, "200e", 0 )
2529   ROM_REGION( 0x800, "mainpcb:200e", 0 )
19732530   ROM_LOAD( "harddrivc.200e",  0x000000, 0x000800, CRC(560a0106) SHA1(7295a4f1255869c43c3cf146ddebaea62c30b850) )
19742531
1975   ROM_REGION( 0x800, "210e", 0 )
2532   ROM_REGION( 0x800, "mainpcb:210e", 0 )
19762533   ROM_LOAD( "harddrivc.210e",  0x000000, 0x000800, CRC(208bba53) SHA1(c9a36015a66917df528b84d20d255b6b96a90e76) )
19772534ROM_END
19782535
19792536
19802537ROM_START( harddrivcg )
1981   ROM_REGION( 0x100000, "maincpu", 0 )    /* 1MB for 68000 code */
2538   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )    /* 1MB for 68000 code */
19822539   ROM_LOAD16_BYTE( "136068-2202.200r", 0x000000, 0x010000, CRC(ea09bdc2) SHA1(9e38ed0a47a2bfb6b80cbf1e0b3e891b94f30c10) )
19832540   ROM_LOAD16_BYTE( "136068-2201.210r", 0x000001, 0x010000, CRC(a5e9947f) SHA1(75973346c9399752d8ae82fbada3a24c6d5fec94) )
19842541   ROM_LOAD16_BYTE( "136068-2204.200s", 0x020000, 0x010000, CRC(65792c94) SHA1(89e93cf0d2afc4bd8a01155ba908c9aa7149dc78) )
r241752r241753
19882545   ROM_LOAD16_BYTE( "136068-1114.200x", 0x0c0000, 0x010000, CRC(293c153b) SHA1(6300a50766b19ad203b5c7da28d51bf22054b39e) )
19892546   ROM_LOAD16_BYTE( "136068-1113.210x", 0x0c0001, 0x010000, CRC(5630390d) SHA1(cd1932cee70cddd1fb2110d1aeebb573a13f1339) )
19902547
1991   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
2548   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
19922549   ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) )
19932550   ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) )
19942551
1995   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2552   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
19962553   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
19972554   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
19982555   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
19992556   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
20002557
2001   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
2558   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
20022559   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
20032560   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
20042561   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
20052562   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
20062563
2007   ROM_REGION( 0x800, "200e", 0 )
2564   ROM_REGION( 0x800, "mainpcb:200e", 0 )
20082565   ROM_LOAD( "harddrivc.200e",  0x000000, 0x000800, CRC(560a0106) SHA1(7295a4f1255869c43c3cf146ddebaea62c30b850) )
20092566
2010   ROM_REGION( 0x800, "210e", 0 )
2567   ROM_REGION( 0x800, "mainpcb:210e", 0 )
20112568   ROM_LOAD( "harddrivc.210e",  0x000000, 0x000800, CRC(208bba53) SHA1(c9a36015a66917df528b84d20d255b6b96a90e76) )
20122569ROM_END
20132570
20142571
20152572ROM_START( harddrivcb )
2016   ROM_REGION( 0x100000, "maincpu", 0 )    /* 1MB for 68000 code */
2573   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )    /* 1MB for 68000 code */
20172574   ROM_LOAD16_BYTE( "136068-2102.200r", 0x000000, 0x010000, CRC(6252048b) SHA1(64caf3adfad6965768fc6d39a8bcde62fe6dfa9e) )
20182575   ROM_LOAD16_BYTE( "136068-2101.210r", 0x000001, 0x010000, CRC(4805ba06) SHA1(e0c2d935ced05b8162f2925520422184a81d5294) )
20192576   ROM_LOAD16_BYTE( "136068-2104.200s", 0x020000, 0x010000, CRC(8246f945) SHA1(633b6c9a5d3e33d3035ccdb7b6ad883c334a4db9) )
r241752r241753
20232580   ROM_LOAD16_BYTE( "136068-2914.200x", 0x0c0000, 0x010000, CRC(dd2998a5) SHA1(36c71549d114309b9072ced83ed149cad1d23646) )
20242581   ROM_LOAD16_BYTE( "136068-2913.210x", 0x0c0001, 0x010000, CRC(a211754d) SHA1(b93d4867f664caa76f2170ef0934194de29a5516) )
20252582
2026   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
2583   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
20272584   ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) )
20282585   ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) )
20292586
2030   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2587   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
20312588   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
20322589   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
20332590   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
20342591   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
20352592
2036   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
2593   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
20372594   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
20382595   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
20392596   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
20402597   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
20412598
2042   ROM_REGION( 0x800, "200e", 0 )
2599   ROM_REGION( 0x800, "mainpcb:200e", 0 )
20432600   ROM_LOAD( "harddrivc.200e",  0x000000, 0x000800, CRC(560a0106) SHA1(7295a4f1255869c43c3cf146ddebaea62c30b850) )
20442601
2045   ROM_REGION( 0x800, "210e", 0 )
2602   ROM_REGION( 0x800, "mainpcb:210e", 0 )
20462603   ROM_LOAD( "harddrivc.210e",  0x000000, 0x000800, CRC(208bba53) SHA1(c9a36015a66917df528b84d20d255b6b96a90e76) )
20472604ROM_END
20482605
20492606
20502607ROM_START( harddrivc1 )
2051   ROM_REGION( 0x100000, "maincpu", 0 )    /* 1MB for 68000 code */
2608   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )    /* 1MB for 68000 code */
20522609   ROM_LOAD16_BYTE( "136068-1102.200r", 0x000000, 0x010000, CRC(f1d3779f) SHA1(1ab84fc920f6810aa7c1af80b0472ea17d07e58b) )
20532610   ROM_LOAD16_BYTE( "136068-1101.210r", 0x000001, 0x010000, CRC(3ea4d3d9) SHA1(3901e8c07bed35bf6a55ab92f5c7eb9335675792) )
20542611   ROM_LOAD16_BYTE( "136068-1104.200s", 0x020000, 0x010000, CRC(34133511) SHA1(71c56607cecd379761f700d181f6e91e7bb6fdfc) )
r241752r241753
20582615   ROM_LOAD16_BYTE( "136068-1114.200x", 0x0c0000, 0x010000, CRC(293c153b) SHA1(6300a50766b19ad203b5c7da28d51bf22054b39e) )
20592616   ROM_LOAD16_BYTE( "136068-1113.210x", 0x0c0001, 0x010000, CRC(5630390d) SHA1(cd1932cee70cddd1fb2110d1aeebb573a13f1339) )
20602617
2061   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
2618   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
20622619   ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) )
20632620   ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) )
20642621
2065   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2622   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
20662623   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
20672624   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
20682625   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
20692626   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
20702627
2071   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
2628   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
20722629   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
20732630   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
20742631   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
20752632   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
20762633
2077   ROM_REGION( 0x800, "200e", 0 )
2634   ROM_REGION( 0x800, "mainpcb:200e", 0 )
20782635   ROM_LOAD( "harddrivc.200e",  0x000000, 0x000800, CRC(560a0106) SHA1(7295a4f1255869c43c3cf146ddebaea62c30b850) )
20792636
2080   ROM_REGION( 0x800, "210e", 0 )
2637   ROM_REGION( 0x800, "mainpcb:210e", 0 )
20812638   ROM_LOAD( "harddrivc.210e",  0x000000, 0x000800, CRC(208bba53) SHA1(c9a36015a66917df528b84d20d255b6b96a90e76) )
20822639ROM_END
20832640
20842641
20852642ROM_START( stunrun )
2086   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2643   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
20872644   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
20882645   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
20892646   ROM_LOAD16_BYTE( "136070-6104.200s", 0x020000, 0x010000, CRC(f469f91c) SHA1(488ea6251ff4028edaf00bb1ded74cefdc71a373) )
r241752r241753
20972654   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
20982655   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
20992656
2100   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
2657   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
21012658   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
21022659   ROM_CONTINUE(             0x004000, 0x00c000 )
21032660
2104   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2661   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
21052662   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
21062663   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
21072664   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241752r241753
21092666   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
21102667   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
21112668
2112   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
2669   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
21132670   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
21142671   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
21152672   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
21162673   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
21172674
2118   ROM_REGION( 0x800, "200e", 0 )
2675   ROM_REGION( 0x800, "mainpcb:200e", 0 )
21192676   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
21202677
2121   ROM_REGION( 0x800, "210e", 0 )
2678   ROM_REGION( 0x800, "mainpcb:210e", 0 )
21222679   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
21232680ROM_END
21242681
21252682
21262683ROM_START( stunrunj )
2127   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2684   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
21282685   ROM_LOAD16_BYTE( "136070-3402.200r", 0x000000, 0x010000, CRC(d8d56923) SHA1(248b22dab791c2d9ee6e6097dac9f3bf85d572be) )
21292686   ROM_LOAD16_BYTE( "136070-3401.210r", 0x000001, 0x010000, CRC(ce11126c) SHA1(cf27b56103048cc23dc6763763b7419583a27c76) )
21302687   ROM_LOAD16_BYTE( "136070-7404.200s", 0x020000, 0x010000, CRC(81da3e74) SHA1(38864aac479a8927d168ee977fd0981a7926d0fd) )
r241752r241753
21382695   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
21392696   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
21402697
2141   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
2698   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
21422699   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
21432700   ROM_CONTINUE(             0x004000, 0x00c000 )
21442701
2145   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2702   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
21462703   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
21472704   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
21482705   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241752r241753
21502707   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
21512708   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
21522709
2153   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
2710   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
21542711   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
21552712   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
21562713   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
21572714   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
21582715
2159   ROM_REGION( 0x800, "200e", 0 )
2716   ROM_REGION( 0x800, "mainpcb:200e", 0 )
21602717   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
21612718
2162   ROM_REGION( 0x800, "210e", 0 )
2719   ROM_REGION( 0x800, "mainpcb:210e", 0 )
21632720   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
21642721ROM_END
21652722
21662723
21672724ROM_START( stunrun5 )
2168   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2725   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
21692726   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
21702727   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
21712728   ROM_LOAD16_BYTE( "136070-5104.200s", 0x020000, 0x010000, CRC(d5c601fe) SHA1(ab61e11723ab9b92fb98b6f8e520a7b323caae64) )
r241752r241753
21792736   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
21802737   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
21812738
2182   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
2739   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
21832740   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
21842741   ROM_CONTINUE(             0x004000, 0x00c000 )
21852742
2186   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2743   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
21872744   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
21882745   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
21892746   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241752r241753
21912748   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
21922749   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
21932750
2194   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
2751   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
21952752   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
21962753   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
21972754   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
21982755   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
21992756
2200   ROM_REGION( 0x800, "200e", 0 )
2757   ROM_REGION( 0x800, "mainpcb:200e", 0 )
22012758   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
22022759
2203   ROM_REGION( 0x800, "210e", 0 )
2760   ROM_REGION( 0x800, "mainpcb:210e", 0 )
22042761   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
22052762ROM_END
22062763
22072764
22082765ROM_START( stunrune )
2209   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2766   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
22102767   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
22112768   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
22122769   ROM_LOAD16_BYTE( "136070-5004.200s", 0x020000, 0x010000, CRC(c2e4bde8) SHA1(766242455b0be6dc7b698cc6fe86d90991ca2e0a) )
r241752r241753
22202777   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
22212778   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
22222779
2223   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
2780   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
22242781   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
22252782   ROM_CONTINUE(             0x004000, 0x00c000 )
22262783
2227   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2784   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
22282785   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
22292786   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
22302787   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241752r241753
22322789   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
22332790   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
22342791
2235   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
2792   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
22362793   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
22372794   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
22382795   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
22392796   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
22402797
2241   ROM_REGION( 0x800, "200e", 0 )
2798   ROM_REGION( 0x800, "mainpcb:200e", 0 )
22422799   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
22432800
2244   ROM_REGION( 0x800, "210e", 0 )
2801   ROM_REGION( 0x800, "mainpcb:210e", 0 )
22452802   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
22462803ROM_END
22472804
22482805
22492806ROM_START( stunrun4 )
2250   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2807   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
22512808   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
22522809   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
22532810   ROM_LOAD16_BYTE( "136070-4104.200s", 0x020000, 0x010000, CRC(62c7700b) SHA1(31d7a39df7353e60b806c204bfdd75c06b17c984) )
r241752r241753
22612818   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
22622819   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
22632820
2264   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
2821   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
22652822   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
22662823   ROM_CONTINUE(             0x004000, 0x00c000 )
22672824
2268   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2825   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
22692826   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
22702827   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
22712828   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241752r241753
22732830   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
22742831   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
22752832
2276   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
2833   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
22772834   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
22782835   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
22792836   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
22802837   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
22812838
2282   ROM_REGION( 0x800, "200e", 0 )
2839   ROM_REGION( 0x800, "mainpcb:200e", 0 )
22832840   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
22842841
2285   ROM_REGION( 0x800, "210e", 0 )
2842   ROM_REGION( 0x800, "mainpcb:210e", 0 )
22862843   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
22872844ROM_END
22882845
22892846
22902847ROM_START( stunrun3 )
2291   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2848   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
22922849   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
22932850   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
22942851   ROM_LOAD16_BYTE( "136070-2104.200s", 0x020000, 0x010000, CRC(6acdeeaa) SHA1(a4cbe648ad2fee3bb945fbc8055b76be1f5c03d1) )
r241752r241753
23022859   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
23032860   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
23042861
2305   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
2862   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
23062863   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
23072864   ROM_CONTINUE(             0x004000, 0x00c000 )
23082865
2309   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2866   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
23102867   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
23112868   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
23122869   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241752r241753
23142871   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
23152872   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
23162873
2317   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
2874   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
23182875   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
23192876   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
23202877   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
23212878   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
23222879
2323   ROM_REGION( 0x800, "200e", 0 )
2880   ROM_REGION( 0x800, "mainpcb:200e", 0 )
23242881   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
23252882
2326   ROM_REGION( 0x800, "210e", 0 )
2883   ROM_REGION( 0x800, "mainpcb:210e", 0 )
23272884   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
23282885ROM_END
23292886
23302887
23312888ROM_START( stunrun3e )
2332   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2889   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
23332890   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
23342891   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
23352892   ROM_LOAD16_BYTE( "136070-3004.200s", 0x020000, 0x010000, CRC(d9474678) SHA1(090b78f9e9d2ecf4218821fc102861df1e27d95a) )
r241752r241753
23432900   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
23442901   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
23452902
2346   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
2903   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
23472904   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
23482905   ROM_CONTINUE(             0x004000, 0x00c000 )
23492906
2350   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2907   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
23512908   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
23522909   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
23532910   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241752r241753
23552912   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
23562913   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
23572914
2358   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
2915   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
23592916   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
23602917   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
23612918   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
23622919   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
23632920
2364   ROM_REGION( 0x800, "200e", 0 )
2921   ROM_REGION( 0x800, "mainpcb:200e", 0 )
23652922   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
23662923
2367   ROM_REGION( 0x800, "210e", 0 )
2924   ROM_REGION( 0x800, "mainpcb:210e", 0 )
23682925   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
23692926ROM_END
23702927
23712928
23722929ROM_START( stunrun2 )
2373   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2930   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
23742931   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
23752932   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
23762933   ROM_LOAD16_BYTE( "136070-2104.200s", 0x020000, 0x010000, CRC(6acdeeaa) SHA1(a4cbe648ad2fee3bb945fbc8055b76be1f5c03d1) )
r241752r241753
23842941   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
23852942   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
23862943
2387   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
2944   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
23882945   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
23892946   ROM_CONTINUE(             0x004000, 0x00c000 )
23902947
2391   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2948   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
23922949   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
23932950   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
23942951   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241752r241753
23962953   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
23972954   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
23982955
2399   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
2956   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
24002957   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
24012958   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
24022959   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
24032960   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
24042961
2405   ROM_REGION( 0x800, "200e", 0 )
2962   ROM_REGION( 0x800, "mainpcb:200e", 0 )
24062963   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
24072964
2408   ROM_REGION( 0x800, "210e", 0 )
2965   ROM_REGION( 0x800, "mainpcb:210e", 0 )
24092966   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
24102967ROM_END
24112968
24122969
24132970ROM_START( stunrun2e )
2414   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
2971   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
24152972   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
24162973   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
24172974   ROM_LOAD16_BYTE( "136070-2004.200s", 0x020000, 0x010000, CRC(30303326) SHA1(49a279b5b02af97395dfb8c66410319a807aa4b9) )
r241752r241753
24252982   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
24262983   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
24272984
2428   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
2985   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
24292986   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
24302987   ROM_CONTINUE(             0x004000, 0x00c000 )
24312988
2432   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
2989   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
24332990   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
24342991   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
24352992   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241752r241753
24372994   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
24382995   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
24392996
2440   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
2997   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
24412998   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
24422999   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
24433000   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
24443001   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
24453002
2446   ROM_REGION( 0x800, "200e", 0 )
3003   ROM_REGION( 0x800, "mainpcb:200e", 0 )
24473004   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
24483005
2449   ROM_REGION( 0x800, "210e", 0 )
3006   ROM_REGION( 0x800, "mainpcb:210e", 0 )
24503007   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
24513008ROM_END
24523009
24533010
24543011ROM_START( stunrun0 )
2455   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3012   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
24563013   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
24573014   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
24583015   ROM_LOAD16_BYTE( "136070-0304.200s", 0x020000, 0x010000, CRC(e7968b1b) SHA1(f2e5b4f64e553041abbe2610968f59cca425a4d4) )
r241752r241753
24663023   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
24673024   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
24683025
2469   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
3026   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
24703027   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
24713028   ROM_CONTINUE(             0x004000, 0x00c000 )
24723029
2473   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3030   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
24743031   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
24753032   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
24763033   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241752r241753
24783035   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
24793036   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
24803037
2481   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
3038   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
24823039   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
24833040   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
24843041   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
24853042   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
24863043
2487   ROM_REGION( 0x800, "200e", 0 )
3044   ROM_REGION( 0x800, "mainpcb:200e", 0 )
24883045   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
24893046
2490   ROM_REGION( 0x800, "210e", 0 )
3047   ROM_REGION( 0x800, "mainpcb:210e", 0 )
24913048   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
24923049ROM_END
24933050
24943051
24953052ROM_START( stunrunp )
2496   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3053   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
24973054   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
24983055   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
24993056   ROM_LOAD16_BYTE( "prog-hi0.s20", 0x020000, 0x010000, CRC(0be15a99) SHA1(52b152b23af305e95765c72052bb7aba846510d6) )
r241752r241753
25073064   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
25083065   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
25093066
2510   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
3067   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
25113068   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
25123069   ROM_CONTINUE(             0x004000, 0x00c000 )
25133070
2514   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3071   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
25153072   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
25163073   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
25173074   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241752r241753
25193076   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
25203077   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
25213078
2522   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
3079   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
25233080   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
25243081   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
25253082   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
25263083   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
25273084
2528   ROM_REGION( 0x800, "200e", 0 )
3085   ROM_REGION( 0x800, "mainpcb:200e", 0 )
25293086   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
25303087
2531   ROM_REGION( 0x800, "210e", 0 )
3088   ROM_REGION( 0x800, "mainpcb:210e", 0 )
25323089   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
25333090ROM_END
25343091
25353092
25363093ROM_START( racedriv )
2537   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3094   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
25383095   ROM_LOAD16_BYTE( "136077-5002.200r", 0x000000, 0x010000, CRC(0a78adca) SHA1(a44722340ff7c99253107be092bec2e87cae340b) )
25393096   ROM_LOAD16_BYTE( "136077-5001.210r", 0x000001, 0x010000, CRC(74b4cd49) SHA1(48fc4344c092c9eb14249874ac305b87bba53e7e) )
25403097   ROM_LOAD16_BYTE( "136077-5004.200s", 0x020000, 0x010000, CRC(c0cbdf4e) SHA1(8c7f4f79e90dc7206d9d83d588822000a7a53c52) )
r241752r241753
25523109   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
25533110   ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
25543111
2555   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3112   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
25563113   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
25573114
2558   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
3115   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
25593116   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
25603117   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
25613118
2562   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3119   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
25633120   ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
25643121   ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
25653122   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
25663123   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
25673124
2568   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3125   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
25693126   ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) )
25703127   ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) )
25713128
2572   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
3129   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
25733130   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
25743131   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
25753132   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
25763133   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
25773134   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
25783135
2579   ROM_REGION( 0x800, "200e", 0 )
3136   ROM_REGION( 0x800, "mainpcb:200e", 0 )
25803137   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
25813138
2582   ROM_REGION( 0x800, "210e", 0 )
3139   ROM_REGION( 0x800, "mainpcb:210e", 0 )
25833140   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
25843141ROM_END
25853142
25863143
25873144ROM_START( racedrivb )
2588   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3145   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
25893146   ROM_LOAD16_BYTE( "136077-5002.200r", 0x000000, 0x010000, CRC(0a78adca) SHA1(a44722340ff7c99253107be092bec2e87cae340b) )
25903147   ROM_LOAD16_BYTE( "136077-5001.210r", 0x000001, 0x010000, CRC(74b4cd49) SHA1(48fc4344c092c9eb14249874ac305b87bba53e7e) )
25913148   ROM_LOAD16_BYTE( "136077-5004.200s", 0x020000, 0x010000, CRC(c0cbdf4e) SHA1(8c7f4f79e90dc7206d9d83d588822000a7a53c52) )
r241752r241753
26033160   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
26043161   ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
26053162
2606   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3163   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
26073164   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
26083165
2609   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
3166   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
26103167   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
26113168   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
26123169
2613   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3170   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
26143171   ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
26153172   ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
26163173   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
26173174   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
26183175
2619   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3176   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
26203177   ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) )
26213178   ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) )
26223179
2623   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
3180   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
26243181   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
26253182   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
26263183   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
26273184   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
26283185   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
26293186
2630   ROM_REGION( 0x800, "200e", 0 )
3187   ROM_REGION( 0x800, "mainpcb:200e", 0 )
26313188   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
26323189
2633   ROM_REGION( 0x800, "210e", 0 )
3190   ROM_REGION( 0x800, "mainpcb:210e", 0 )
26343191   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
26353192ROM_END
26363193
26373194
26383195ROM_START( racedrivg )
2639   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3196   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
26403197   ROM_LOAD16_BYTE( "136077-5202.200r", 0x000000, 0x010000, CRC(69016b69) SHA1(8da1314b4b6da6fc95479b9034190181bf778b25) )
26413198   ROM_LOAD16_BYTE( "136077-5201.210r", 0x000001, 0x010000, CRC(439a1ce7) SHA1(fc376c654c494d2895bcf85d5d8a9d6f17b6887e) )
26423199   ROM_LOAD16_BYTE( "136077-5204.200s", 0x020000, 0x010000, CRC(15df2b3d) SHA1(49235687b7be684dcd491b854f80c1d849894956) )
r241752r241753
26543211   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
26553212   ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
26563213
2657   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3214   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
26583215   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
26593216
2660   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
3217   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
26613218   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
26623219   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
26633220
2664   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3221   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
26653222   ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
26663223   ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
26673224   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
26683225   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
26693226
2670   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3227   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
26713228   ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) )
26723229   ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) )
26733230
2674   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
3231   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
26753232   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
26763233   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
26773234   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
26783235   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
26793236   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
26803237
2681   ROM_REGION( 0x800, "200e", 0 )
3238   ROM_REGION( 0x800, "mainpcb:200e", 0 )
26823239   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
26833240
2684   ROM_REGION( 0x800, "210e", 0 )
3241   ROM_REGION( 0x800, "mainpcb:210e", 0 )
26853242   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
26863243ROM_END
26873244
26883245
26893246ROM_START( racedriv4 )
2690   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3247   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
26913248   ROM_LOAD16_BYTE( "136077-4002.200r", 0x000000, 0x010000, CRC(afe1beb5) SHA1(66dba58f2a02eaa2d6306e53adffb662a8021031) )
26923249   ROM_LOAD16_BYTE( "136077-4001.210r", 0x000001, 0x010000, CRC(8a449e44) SHA1(03800b96a3992baa4bd37db20e559e08b12e55d1) )
26933250   ROM_LOAD16_BYTE( "136077-4004.200s", 0x020000, 0x010000, CRC(6d886150) SHA1(514de55de66a2b7fb14d6e2d896911e1b1af62f2) )
r241752r241753
27053262   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
27063263   ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
27073264
2708   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3265   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
27093266   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
27103267
2711   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
3268   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
27123269   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
27133270   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
27143271
2715   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3272   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
27163273   ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
27173274   ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
27183275   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
27193276   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
27203277
2721   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3278   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
27223279   ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) )
27233280   ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) )
27243281
2725   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
3282   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
27263283   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
27273284   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
27283285   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
27293286   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
27303287   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
27313288
2732   ROM_REGION( 0x800, "200e", 0 )
3289   ROM_REGION( 0x800, "mainpcb:200e", 0 )
27333290   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
27343291
2735   ROM_REGION( 0x800, "210e", 0 )
3292   ROM_REGION( 0x800, "mainpcb:210e", 0 )
27363293   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
27373294ROM_END
27383295
27393296
27403297ROM_START( racedrivb4 )
2741   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3298   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
27423299   ROM_LOAD16_BYTE( "136077-4002.200r", 0x000000, 0x010000, CRC(afe1beb5) SHA1(66dba58f2a02eaa2d6306e53adffb662a8021031) )
27433300   ROM_LOAD16_BYTE( "136077-4001.210r", 0x000001, 0x010000, CRC(8a449e44) SHA1(03800b96a3992baa4bd37db20e559e08b12e55d1) )
27443301   ROM_LOAD16_BYTE( "136077-4004.200s", 0x020000, 0x010000, CRC(6d886150) SHA1(514de55de66a2b7fb14d6e2d896911e1b1af62f2) )
r241752r241753
27563313   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
27573314   ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
27583315
2759   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3316   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
27603317   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
27613318
2762   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
3319   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
27633320   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
27643321   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
27653322
2766   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3323   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
27673324   ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
27683325   ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
27693326   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
27703327   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
27713328
2772   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3329   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
27733330   ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) )
27743331   ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) )
27753332
2776   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
3333   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
27773334   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
27783335   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
27793336   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
27803337   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
27813338   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
27823339
2783   ROM_REGION( 0x800, "200e", 0 )
3340   ROM_REGION( 0x800, "mainpcb:200e", 0 )
27843341   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
27853342
2786   ROM_REGION( 0x800, "210e", 0 )
3343   ROM_REGION( 0x800, "mainpcb:210e", 0 )
27873344   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
27883345ROM_END
27893346
27903347
27913348ROM_START( racedrivg4 )
2792   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3349   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
27933350   ROM_LOAD16_BYTE( "136077-4202.200r", 0x000000, 0x010000, CRC(a8c7e15e) SHA1(6aa4b819e5c8562c8eef92a411b2dc91ed35ae4c) )
27943351   ROM_LOAD16_BYTE( "136077-4201.210r", 0x000001, 0x010000, CRC(1dfa4df2) SHA1(1db0676f0ff1e7996c9791b041d9cd4ca9c70261) )
27953352   ROM_LOAD16_BYTE( "136077-4204.200s", 0x020000, 0x010000, CRC(29eea8c1) SHA1(1a8020efc0b963bbd05bd33dc3176db7c3234fcc) )
r241752r241753
28073364   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
28083365   ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
28093366
2810   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3367   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
28113368   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
28123369
2813   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
3370   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
28143371   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
28153372   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
28163373
2817   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3374   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
28183375   ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
28193376   ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
28203377   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
28213378   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
28223379
2823   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3380   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
28243381   ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) )
28253382   ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) )
28263383
2827   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
3384   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
28283385   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
28293386   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
28303387   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
28313388   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
28323389   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
28333390
2834   ROM_REGION( 0x800, "200e", 0 )
3391   ROM_REGION( 0x800, "mainpcb:200e", 0 )
28353392   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
28363393
2837   ROM_REGION( 0x800, "210e", 0 )
3394   ROM_REGION( 0x800, "mainpcb:210e", 0 )
28383395   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
28393396ROM_END
28403397
28413398
28423399ROM_START( racedriv3 )
2843   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3400   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
28443401   ROM_LOAD16_BYTE( "136077-3002.200r", 0x000000, 0x010000, CRC(78771253) SHA1(88fdae99eb4feb40db8ad171b3435315db3adedb) )
28453402   ROM_LOAD16_BYTE( "136077-3001.210r", 0x000001, 0x010000, CRC(c75373a4) SHA1(d2f14190218cfedf4478806a26c77edd4d7c73eb) )
28463403   ROM_LOAD16_BYTE( "136077-2004.200s", 0x020000, 0x010000, CRC(4eb19582) SHA1(52359d7839f3459aec4fdc16a659a29fa60feee4) )
r241752r241753
28583415   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
28593416   ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
28603417
2861   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3418   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
28623419   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
28633420
2864   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
3421   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
28653422   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
28663423   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
28673424
2868   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3425   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
28693426   ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
28703427   ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
28713428   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
28723429   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
28733430
2874   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3431   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
28753432   ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) )
28763433   ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) )
28773434
2878   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
3435   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
28793436   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
28803437   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
28813438   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
28823439   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
28833440   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
28843441
2885   ROM_REGION( 0x800, "200e", 0 )
3442   ROM_REGION( 0x800, "mainpcb:200e", 0 )
28863443   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
28873444
2888   ROM_REGION( 0x800, "210e", 0 )
3445   ROM_REGION( 0x800, "mainpcb:210e", 0 )
28893446   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
28903447ROM_END
28913448
28923449
28933450ROM_START( racedriv2 )
2894   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3451   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
28953452   ROM_LOAD16_BYTE( "136077-2002.200r", 0x000000, 0x010000, CRC(6b440e10) SHA1(8074a1de01e2cdc497a51339f9c05329d6f540b0) )
28963453   ROM_LOAD16_BYTE( "136077-2001.210r", 0x000001, 0x010000, CRC(eee12973) SHA1(0cd2e88c431d08fba5a73c903327f39f8692f3aa) )
28973454   ROM_LOAD16_BYTE( "136077-2004.200s", 0x020000, 0x010000, CRC(4eb19582) SHA1(52359d7839f3459aec4fdc16a659a29fa60feee4) )
r241752r241753
29093466   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
29103467   ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
29113468
2912   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3469   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
29133470   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
29143471
2915   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
3472   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
29163473   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
29173474   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
29183475
2919   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3476   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
29203477   ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
29213478   ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
29223479   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
29233480   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
29243481
2925   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3482   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
29263483   ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) )
29273484   ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) )
29283485
2929   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
3486   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
29303487   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
29313488   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
29323489   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
29333490   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
29343491   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
29353492
2936   ROM_REGION( 0x800, "200e", 0 )
3493   ROM_REGION( 0x800, "mainpcb:200e", 0 )
29373494   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
29383495
2939   ROM_REGION( 0x800, "210e", 0 )
3496   ROM_REGION( 0x800, "mainpcb:210e", 0 )
29403497   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
29413498ROM_END
29423499
29433500
29443501ROM_START( racedriv1 )
2945   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3502   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
29463503   ROM_LOAD16_BYTE( "136077-1002.200r", 0x000000, 0x010000, CRC(d39f6d53) SHA1(c278cd4109a65304a21dd1d8ba27375713a8b107) )
29473504   ROM_LOAD16_BYTE( "136077-1001.210r", 0x000001, 0x010000, CRC(e29e011c) SHA1(7044e7f9c8551309b5867a06672796411007a427) )
29483505   ROM_LOAD16_BYTE( "136077-1004.200s", 0x020000, 0x010000, CRC(809831e8) SHA1(681160deceff4df0f000c23f8514086dbbcc0c8d) )
r241752r241753
29603517   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
29613518   ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
29623519
2963   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3520   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
29643521   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
29653522
2966   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
3523   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
29673524   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
29683525   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
29693526
2970   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3527   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
29713528   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
29723529   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
29733530   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
29743531   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
29753532
2976   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3533   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
29773534   ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) )
29783535   ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) )
29793536
2980   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
3537   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
29813538   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
29823539   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
29833540   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
29843541   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
29853542   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
29863543
2987   ROM_REGION( 0x800, "200e", 0 )
3544   ROM_REGION( 0x800, "mainpcb:200e", 0 )
29883545   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
29893546
2990   ROM_REGION( 0x800, "210e", 0 )
3547   ROM_REGION( 0x800, "mainpcb:210e", 0 )
29913548   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
29923549ROM_END
29933550
29943551
29953552ROM_START( racedrivg1 )
2996   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3553   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
29973554   ROM_LOAD16_BYTE( "136077-1202.200r", 0x000000, 0x010000, CRC(bd363903) SHA1(8f0937725adabf5ee9e0ac015c83916e2575670a) )
29983555   ROM_LOAD16_BYTE( "136077-1201.210r", 0x000001, 0x010000, CRC(748c3be4) SHA1(ddf149f333d23e9c782ae447f6fb3f780680b3f5) )
29993556   ROM_LOAD16_BYTE( "136077-1204.200s", 0x020000, 0x010000, CRC(aef103bb) SHA1(52831858d3a45ad00e156c5b2a11e7fddf06bead) )
r241752r241753
30113568   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
30123569   ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
30133570
3014   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3571   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
30153572   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
30163573
3017   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
3574   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
30183575   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
30193576   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
30203577
3021   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3578   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
30223579   ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
30233580   ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
30243581   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
30253582   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
30263583
3027   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3584   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
30283585   ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) )
30293586   ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) )
30303587
3031   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
3588   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
30323589   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
30333590   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
30343591   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
30353592   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
30363593   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
30373594
3038   ROM_REGION( 0x800, "200e", 0 )
3595   ROM_REGION( 0x800, "mainpcb:200e", 0 )
30393596   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
30403597
3041   ROM_REGION( 0x800, "210e", 0 )
3598   ROM_REGION( 0x800, "mainpcb:210e", 0 )
30423599   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
30433600ROM_END
30443601
30453602
30463603ROM_START( racedrivb1 )
3047   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3604   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
30483605   ROM_LOAD16_BYTE( "136077-2002.200r", 0x000000, 0x010000, CRC(6b440e10) SHA1(8074a1de01e2cdc497a51339f9c05329d6f540b0) )
30493606   ROM_LOAD16_BYTE( "136077-2001.210r", 0x000001, 0x010000, CRC(eee12973) SHA1(0cd2e88c431d08fba5a73c903327f39f8692f3aa) )
30503607   ROM_LOAD16_BYTE( "136077-1104.200s", 0x020000, 0x010000, CRC(a9495f53) SHA1(68e7d983c0e1a84f5ad0743a230e6126169a6fd6) )
r241752r241753
30623619   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
30633620   ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
30643621
3065   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3622   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
30663623   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
30673624
3068   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
3625   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
30693626   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
30703627   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
30713628
3072   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3629   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
30733630   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
30743631   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
30753632   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
30763633   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
30773634
3078   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3635   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
30793636   ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) )
30803637   ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) )
30813638
3082   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
3639   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
30833640   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
30843641   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
30853642   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
30863643   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
30873644   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
30883645
3089   ROM_REGION( 0x800, "200e", 0 )
3646   ROM_REGION( 0x800, "mainpcb:200e", 0 )
30903647   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
30913648
3092   ROM_REGION( 0x800, "210e", 0 )
3649   ROM_REGION( 0x800, "mainpcb:210e", 0 )
30933650   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
30943651ROM_END
30953652
30963653
30973654ROM_START( racedrivc )
3098   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3655   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
30993656   ROM_LOAD16_BYTE( "136078-5002.200r", 0x000000, 0x010000, CRC(ae8f79bd) SHA1(054f2d1948d6d03832c4557c3dd7667c0784716d) )
31003657   ROM_LOAD16_BYTE( "136078-5001.210r", 0x000001, 0x010000, CRC(ad896e7f) SHA1(7b047f0c972fac075db00faf19cdf9ccdcef5c63) )
31013658   ROM_LOAD16_BYTE( "136078-5004.200s", 0x020000, 0x010000, CRC(b8650bee) SHA1(a9905081e622e4a4fcec9aa08b87566ecdb9198b) )
r241752r241753
31133670   ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
31143671   ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
31153672
3116   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3673   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
31173674   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
31183675
3119   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
3676   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
31203677   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
31213678   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
31223679
3123   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3680   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
31243681   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
31253682   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
31263683   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
31273684   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
31283685
3129   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3686   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
31303687   ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
31313688   ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
31323689
3133   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
3690   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
31343691   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
31353692   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
31363693   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
31373694   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
31383695   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
31393696
3140   ROM_REGION( 0x800, "200e", 0 )
3697   ROM_REGION( 0x800, "mainpcb:200e", 0 )
31413698   ROM_LOAD( "racedrivc.200e",  0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
31423699
3143   ROM_REGION( 0x800, "210e", 0 )
3700   ROM_REGION( 0x800, "mainpcb:210e", 0 )
31443701   ROM_LOAD( "racedrivc.210e",  0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
31453702ROM_END
31463703
31473704
31483705ROM_START( racedrivcb )
3149   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3706   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
31503707   ROM_LOAD16_BYTE( "136078-5002.200r", 0x000000, 0x010000, CRC(ae8f79bd) SHA1(054f2d1948d6d03832c4557c3dd7667c0784716d) )
31513708   ROM_LOAD16_BYTE( "136078-5001.210r", 0x000001, 0x010000, CRC(ad896e7f) SHA1(7b047f0c972fac075db00faf19cdf9ccdcef5c63) )
31523709   ROM_LOAD16_BYTE( "136078-5004.200s", 0x020000, 0x010000, CRC(b8650bee) SHA1(a9905081e622e4a4fcec9aa08b87566ecdb9198b) )
r241752r241753
31643721   ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
31653722   ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
31663723
3167   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3724   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
31683725   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
31693726
3170   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
3727   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
31713728   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
31723729   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
31733730
3174   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3731   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
31753732   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
31763733   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
31773734   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
31783735   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
31793736
3180   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3737   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
31813738   ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
31823739   ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
31833740
3184   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
3741   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
31853742   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
31863743   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
31873744   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
31883745   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
31893746   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
31903747
3191   ROM_REGION( 0x800, "200e", 0 )
3748   ROM_REGION( 0x800, "mainpcb:200e", 0 )
31923749   ROM_LOAD( "racedrivc.200e",  0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
31933750
3194   ROM_REGION( 0x800, "210e", 0 )
3751   ROM_REGION( 0x800, "mainpcb:210e", 0 )
31953752   ROM_LOAD( "racedrivc.210e",  0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
31963753ROM_END
31973754
31983755
31993756ROM_START( racedrivcg )
3200   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3757   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
32013758   ROM_LOAD16_BYTE( "136078-5202.200r", 0x000000, 0x010000, CRC(c37b5281) SHA1(1ff7a879853dd1e10881fd56e8ae0962676ef319) )
32023759   ROM_LOAD16_BYTE( "136078-5201.210r", 0x000001, 0x010000, CRC(80072dad) SHA1(ba33465f639431cf6e9ce377ed31e538a0304dc5) )
32033760   ROM_LOAD16_BYTE( "136078-5204.200s", 0x020000, 0x010000, CRC(5d45fbd2) SHA1(5279c814c2876c642630fed5c114eccea6d703b0) )
r241752r241753
32153772   ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
32163773   ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
32173774
3218   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3775   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
32193776   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
32203777
3221   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
3778   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
32223779   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
32233780   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
32243781
3225   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3782   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
32263783   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
32273784   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
32283785   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
32293786   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
32303787
3231   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3788   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
32323789   ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
32333790   ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
32343791
3235   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
3792   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
32363793   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
32373794   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
32383795   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
32393796   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
32403797   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
32413798
3242   ROM_REGION( 0x800, "200e", 0 )
3799   ROM_REGION( 0x800, "mainpcb:200e", 0 )
32433800   ROM_LOAD( "racedrivc.200e",  0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
32443801
3245   ROM_REGION( 0x800, "210e", 0 )
3802   ROM_REGION( 0x800, "mainpcb:210e", 0 )
32463803   ROM_LOAD( "racedrivc.210e",  0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
32473804ROM_END
32483805
32493806
32503807ROM_START( racedrivc4 )
3251   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3808   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
32523809   ROM_LOAD16_BYTE( "136078-4002.200r", 0x000000, 0x010000, CRC(d6522b97) SHA1(0e4c4ce9f6147cc3878a3f1e60cf58f00bfe9e4c) )
32533810   ROM_LOAD16_BYTE( "136078-4001.210r", 0x000001, 0x010000, CRC(d658a8ed) SHA1(59d823d8150de62ba5c4fddf87584bd2044e87f7) )
32543811   ROM_LOAD16_BYTE( "136078-4004.200s", 0x020000, 0x010000, CRC(c8520b01) SHA1(f0bd0505cbf24f7e43dc2e775ecbbf0db5419b6e) )
r241752r241753
32663823   ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
32673824   ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
32683825
3269   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3826   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
32703827   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
32713828
3272   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
3829   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
32733830   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
32743831   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
32753832
3276   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3833   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
32773834   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
32783835   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
32793836   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
32803837   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
32813838
3282   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3839   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
32833840   ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
32843841   ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
32853842
3286   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
3843   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
32873844   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
32883845   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
32893846   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
32903847   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
32913848   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
32923849
3293   ROM_REGION( 0x800, "200e", 0 )
3850   ROM_REGION( 0x800, "mainpcb:200e", 0 )
32943851   ROM_LOAD( "racedrivc.200e",  0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
32953852
3296   ROM_REGION( 0x800, "210e", 0 )
3853   ROM_REGION( 0x800, "mainpcb:210e", 0 )
32973854   ROM_LOAD( "racedrivc.210e",  0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
32983855ROM_END
32993856
33003857
33013858ROM_START( racedrivcb4 )
3302   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3859   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
33033860   ROM_LOAD16_BYTE( "136078-4002.200r", 0x000000, 0x010000, CRC(d6522b97) SHA1(0e4c4ce9f6147cc3878a3f1e60cf58f00bfe9e4c) )
33043861   ROM_LOAD16_BYTE( "136078-4001.210r", 0x000001, 0x010000, CRC(d658a8ed) SHA1(59d823d8150de62ba5c4fddf87584bd2044e87f7) )
33053862   ROM_LOAD16_BYTE( "136078-4004.200s", 0x020000, 0x010000, CRC(c8520b01) SHA1(f0bd0505cbf24f7e43dc2e775ecbbf0db5419b6e) )
r241752r241753
33173874   ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
33183875   ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
33193876
3320   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3877   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
33213878   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
33223879
3323   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
3880   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
33243881   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
33253882   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
33263883
3327   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3884   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
33283885   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
33293886   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
33303887   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
33313888   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
33323889
3333   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3890   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
33343891   ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
33353892   ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
33363893
3337   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
3894   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
33383895   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
33393896   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
33403897   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
33413898   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
33423899   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
33433900
3344   ROM_REGION( 0x800, "200e", 0 )
3901   ROM_REGION( 0x800, "mainpcb:200e", 0 )
33453902   ROM_LOAD( "racedrivc.200e",  0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
33463903
3347   ROM_REGION( 0x800, "210e", 0 )
3904   ROM_REGION( 0x800, "mainpcb:210e", 0 )
33483905   ROM_LOAD( "racedrivc.210e",  0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
33493906ROM_END
33503907
33513908
33523909ROM_START( racedrivcg4 )
3353   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3910   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
33543911   ROM_LOAD16_BYTE( "136078-4202.200r", 0x000000, 0x010000, CRC(be58215d) SHA1(0497efbd696e8d2db4e42678dd6cfe6cd3f78688) )
33553912   ROM_LOAD16_BYTE( "136078-4201.210r", 0x000001, 0x010000, CRC(609c5f23) SHA1(a66e1f10f8ad9d25fca5b681ad543967287f2036) )
33563913   ROM_LOAD16_BYTE( "136078-4204.200s", 0x020000, 0x010000, CRC(2e590c4f) SHA1(dcb56bacdde17eade5b347d5549cec1de89774e6) )
r241752r241753
33683925   ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
33693926   ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
33703927
3371   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3928   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
33723929   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
33733930
3374   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
3931   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
33753932   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
33763933   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
33773934
3378   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3935   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
33793936   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
33803937   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
33813938   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
33823939   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
33833940
3384   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3941   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
33853942   ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
33863943   ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
33873944
3388   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
3945   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
33893946   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
33903947   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
33913948   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
33923949   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
33933950   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
33943951
3395   ROM_REGION( 0x800, "200e", 0 )
3952   ROM_REGION( 0x800, "mainpcb:200e", 0 )
33963953   ROM_LOAD( "racedrivc.200e",  0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
33973954
3398   ROM_REGION( 0x800, "210e", 0 )
3955   ROM_REGION( 0x800, "mainpcb:210e", 0 )
33993956   ROM_LOAD( "racedrivc.210e",  0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
34003957ROM_END
34013958
34023959
34033960ROM_START( racedrivc2 )
3404   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
3961   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
34053962   ROM_LOAD16_BYTE( "136078-2002.200r", 0x000000, 0x010000, CRC(669fe6fe) SHA1(1775ee3ef4817f553113772cf0fb35cbbe2e73a5) )
34063963   ROM_LOAD16_BYTE( "136078-2001.210r", 0x000001, 0x010000, CRC(9312fd5f) SHA1(9dd1b30ebceedf50fb18d744540e2003a8110d09) )
34073964   ROM_LOAD16_BYTE( "136078-1004.200s", 0x020000, 0x010000, CRC(4a1beb65) SHA1(3a4e3dd07a1415aef27e8bbebe0503296dfc7586) )
r241752r241753
34193976   ROM_LOAD16_BYTE( "136078-1015.210y", 0x0e0001, 0x010000, CRC(64dd6040) SHA1(bcadf4f1d9a0685ca39af903d3342d590850513c) )
34203977   ROM_LOAD16_BYTE( "136078-1016.200y", 0x0e0000, 0x010000, CRC(a2a0ed28) SHA1(6f308a38594f7e54ebdd6983d28664ba595bc525) )
34213978
3422   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3979   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
34233980   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
34243981
3425   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
3982   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
34263983   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
34273984   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
34283985
3429   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
3986   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
34303987   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
34313988   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
34323989   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
34333990   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
34343991
3435   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3992   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
34363993   ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
34373994   ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
34383995
3439   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
3996   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
34403997   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
34413998   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
34423999   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
34434000   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
34444001   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
34454002
3446   ROM_REGION( 0x800, "200e", 0 )
4003   ROM_REGION( 0x800, "mainpcb:200e", 0 )
34474004   ROM_LOAD( "racedrivc.200e",  0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
34484005
3449   ROM_REGION( 0x800, "210e", 0 )
4006   ROM_REGION( 0x800, "mainpcb:210e", 0 )
34504007   ROM_LOAD( "racedrivc.210e",  0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
34514008ROM_END
34524009
34534010
34544011ROM_START( racedrivc1 )
3455   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
4012   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
34564013   ROM_LOAD16_BYTE( "136078-1002.200r", 0x000000, 0x010000, CRC(ed997f08) SHA1(9512f347120174345dbe8c756e5c239fdce438a5) )
34574014   ROM_LOAD16_BYTE( "136078-1001.210r", 0x000001, 0x010000, CRC(5540ee7d) SHA1(f1d16cfa20b61f1cf075e3275ea4af0b46aa5470) )
34584015   ROM_LOAD16_BYTE( "136078-1004.200s", 0x020000, 0x010000, CRC(4a1beb65) SHA1(3a4e3dd07a1415aef27e8bbebe0503296dfc7586) )
r241752r241753
34704027   ROM_LOAD16_BYTE( "136078-1015.210y", 0x0e0001, 0x010000, CRC(64dd6040) SHA1(bcadf4f1d9a0685ca39af903d3342d590850513c) )
34714028   ROM_LOAD16_BYTE( "136078-1016.200y", 0x0e0000, 0x010000, CRC(a2a0ed28) SHA1(6f308a38594f7e54ebdd6983d28664ba595bc525) )
34724029
3473   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
4030   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
34744031   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
34754032
3476   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
4033   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
34774034   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
34784035   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
34794036
3480   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
4037   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
34814038   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
34824039   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
34834040   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
34844041   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
34854042
3486   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
4043   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
34874044   ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
34884045   ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
34894046
3490   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
4047   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
34914048   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
34924049   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
34934050   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
34944051   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
34954052   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
34964053
3497   ROM_REGION( 0x800, "200e", 0 )
4054   ROM_REGION( 0x800, "mainpcb:200e", 0 )
34984055   ROM_LOAD( "racedrivc.200e",  0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
34994056
3500   ROM_REGION( 0x800, "210e", 0 )
4057   ROM_REGION( 0x800, "mainpcb:210e", 0 )
35014058   ROM_LOAD( "racedrivc.210e",  0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
35024059ROM_END
35034060
r241752r241753
35734130
35744131*/
35754132
4133// if the side video boards die you have to hook up inputs to them to reconfigure so we'll need some default NVRAMs
4134
35764135ROM_START( racedrivpan )
3577   ROM_REGION( 0x200000, "maincpu", 0 )        /* 2MB for 68000 code */
4136   ROM_REGION( 0x200000, "mainpcb:maincpu", 0 )        /* 2MB for 68000 code */
35784137   // Multisync PBB A045988 - Central Monitor
35794138   // boots with 'PROGRAM OK' when using standard Hard Drivin' board type (needs 137412-115 slapstic)
35804139   ROM_LOAD16_BYTE( "088-1002.bin", 0x000000, 0x010000, CRC(49a97391) SHA1(dbe4086cd87669a02d2a2133d0d9e2895946b383) )
r241752r241753
35974156   // Multisync PCB (A046901) - Side Monitor
35984157   // these will boot with 'PROGRAM OK' and display an empty side view, if you use the 'compact' type board driver
35994158   //  there should be one board for each side.  (needs 137412-117 slapstic)
3600   ROM_REGION( 0x200000, "sidecpu", 0 )        /* 2MB for 68000 code */
4159   ROM_REGION( 0x200000, "mainpcb:sidecpu", 0 )        /* 2MB for 68000 code */
36014160   ROM_LOAD16_BYTE( "088-2002.bin", 0x000000, 0x010000, CRC(77724070) SHA1(5862f30f7e2ab9c0beb06cf5599bcb1ff97f3a47) )
36024161   ROM_LOAD16_BYTE( "088-2001.bin", 0x000001, 0x010000, CRC(16ab2fff) SHA1(bf6dcefc98e1fe27bef0ddacc265d8782c486c83) )
36034162   ROM_LOAD16_BYTE( "088-2004.bin", 0x020000, 0x010000, CRC(dccdb16b) SHA1(330cf39bcbdb9c73da48b4e947086a7988e37496) )
r241752r241753
36154174   ROM_LOAD16_BYTE( "088-2016.bin", 0x0e0000, 0x010000, CRC(6a42b7e2) SHA1(2e0ff4b7e391106a976cb872f6311f6d35dca5b0) )
36164175   ROM_LOAD16_BYTE( "088-2015.bin", 0x0e0001, 0x010000, CRC(334e2a3b) SHA1(a19bfa7652845b9453c722091c773819ba248569) )
36174176
3618   ROM_REGION( 0x60000, "user1", 0 )       /* 384k for object ROM */
4177   ROM_REGION( 0x60000, "mainpcb:user1", 0 )       /* 384k for object ROM */
36194178   ROM_LOAD16_BYTE( "088-1017.bin",  0x00000, 0x10000, CRC(d92251e8) SHA1(deeeec54c4a61c3adf62f6b1b910135559090ee5) )
36204179   ROM_LOAD16_BYTE( "088-1018.bin",  0x00001, 0x10000, CRC(11a0a8f5) SHA1(d4ccc83fc99331d741bc9b8027ef20d72e3ad71a) )
36214180   ROM_LOAD16_BYTE( "088-1019.bin",  0x20000, 0x10000, CRC(5bb00676) SHA1(cad1cea8e43f9590fc71c00fab4eff0d447f9296) ) // == 136091-0019.2k (strtdriv)
r241752r241753
36254184
36264185   /* ----------------------- */
36274186
3628   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
4187   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
36294188   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
36304189
36314190   /* ADSP board */
3632   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
4191   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
36334192   ROM_LOAD16_BYTE( "rdps1032.bin", 0x000000, 0x010000, CRC(33005f2a) SHA1(e4037a76f122b271a9675d9187ab847a11738640) )
36344193   ROM_LOAD16_BYTE( "rdps1033.bin", 0x000001, 0x010000, CRC(4fc800ac) SHA1(dd8cfdb727d6a65274f4f871a589a36796ae1e57) )
36354194
36364195   /* DSK board */
3637   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
4196   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
36384197   ROM_LOAD16_BYTE( "rdpd1026.bin", 0x000000, 0x020000, CRC(16572618) SHA1(08d9f7f76e6e75d5233240d4deab96808825994b) )
36394198   ROM_LOAD16_BYTE( "rdpd1025.bin", 0x000001, 0x020000, CRC(57b8a266) SHA1(257246d42841aa30220caeb91945e29978ee8fc0) )
36404199
36414200   /* Audio ROMs - show up as bad in self-test but so do racedriv's */
3642   ROM_REGION( 0x50000, "serialroms", 0 )      /* 5*64k for audio serial ROMs */
4201   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 5*64k for audio serial ROMs */
36434202   ROM_LOAD( "rdps1123.bin", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
36444203   ROM_LOAD( "rdps1124.bin", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
36454204   ROM_LOAD( "rdps3125.bin", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
36464205   ROM_LOAD( "rdps1126.bin", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
36474206   ROM_LOAD( "rdps1017.bin", 0x040000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
36484207
3649   ROM_REGION( 0x800, "200e", 0 )
4208   ROM_REGION( 0x800, "mainpcb:200e", 0 )
36504209   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
36514210
3652   ROM_REGION( 0x800, "210e", 0 )
4211   ROM_REGION( 0x800, "mainpcb:210e", 0 )
36534212   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
4213   
4214   /* Left PCB*/
4215   ROM_REGION( 0x200000, "leftpcb:maincpu", 0 )        /* 2MB for 68000 code */
4216   ROM_LOAD16_BYTE( "088-2002.bin", 0x000000, 0x010000, CRC(77724070) SHA1(5862f30f7e2ab9c0beb06cf5599bcb1ff97f3a47) )
4217   ROM_LOAD16_BYTE( "088-2001.bin", 0x000001, 0x010000, CRC(16ab2fff) SHA1(bf6dcefc98e1fe27bef0ddacc265d8782c486c83) )
4218   ROM_LOAD16_BYTE( "088-2004.bin", 0x020000, 0x010000, CRC(dccdb16b) SHA1(330cf39bcbdb9c73da48b4e947086a7988e37496) )
4219   ROM_LOAD16_BYTE( "088-2003.bin", 0x020001, 0x010000, CRC(132ef986) SHA1(106f1a23ac200a868959181fa1c47419806e8366) )
4220   ROM_LOAD16_BYTE( "088-2006.bin", 0x040000, 0x010000, CRC(de3a0c24) SHA1(1121b8a16ac11b2480f1c4336a5aa3271364f80e))
4221   ROM_LOAD16_BYTE( "088-2005.bin", 0x040001, 0x010000, CRC(96ad705f) SHA1(cc0bc7fdd2a5f91a5929b889607dcf7ad015bb95) )
4222   ROM_LOAD16_BYTE( "088-2008.bin", 0x060000, 0x010000, CRC(452d991c) SHA1(42dad0a93839a900c3571ce9e252e1c991a1da56) )
4223   ROM_LOAD16_BYTE( "088-2007.bin", 0x060001, 0x010000, CRC(d6f526d3) SHA1(8406917c91c1d3690379cb0bca5809d1db27abec) )
4224   ROM_LOAD16_BYTE( "088-2010.bin", 0x080000, 0x010000, CRC(775bca3d) SHA1(926b460faeb2aa46899432b3a9973381ffd7781d) )
4225   ROM_LOAD16_BYTE( "088-2009.bin", 0x080001, 0x010000, CRC(6aedccc5) SHA1(9189881802969ecdde2fd41a20ff6ea0471ce2c0) )
4226   ROM_LOAD16_BYTE( "088-2012.bin", 0x0a0000, 0x010000, CRC(bacf08c0) SHA1(2f7ddaf4ef350ee3e6ab886759d88c03aa94784b) )
4227   ROM_LOAD16_BYTE( "088-2011.bin", 0x0a0001, 0x010000, CRC(1e0c2f71) SHA1(bcdd9089442934df78109df7c0dcf170873cf992) )
4228   ROM_LOAD16_BYTE( "088-2014.bin", 0x0c0000, 0x010000, CRC(3512537c) SHA1(896975ef2685358bd98f7a9b45dda11e8bfa3a13) )
4229   ROM_LOAD16_BYTE( "088-2013.bin", 0x0c0001, 0x010000, CRC(8d7c4e80) SHA1(eda8d02e51b18234fc0912eaca8171d75ae643c7) )
4230   ROM_LOAD16_BYTE( "088-2016.bin", 0x0e0000, 0x010000, CRC(6a42b7e2) SHA1(2e0ff4b7e391106a976cb872f6311f6d35dca5b0) )
4231   ROM_LOAD16_BYTE( "088-2015.bin", 0x0e0001, 0x010000, CRC(334e2a3b) SHA1(a19bfa7652845b9453c722091c773819ba248569) )
4232
4233   ROM_REGION( 0x60000, "leftpcb:user1", 0 )       /* 384k for object ROM */
4234   ROM_LOAD16_BYTE( "088-1017.bin",  0x00000, 0x10000, CRC(d92251e8) SHA1(deeeec54c4a61c3adf62f6b1b910135559090ee5) )
4235   ROM_LOAD16_BYTE( "088-1018.bin",  0x00001, 0x10000, CRC(11a0a8f5) SHA1(d4ccc83fc99331d741bc9b8027ef20d72e3ad71a) )
4236   ROM_LOAD16_BYTE( "088-1019.bin",  0x20000, 0x10000, CRC(5bb00676) SHA1(cad1cea8e43f9590fc71c00fab4eff0d447f9296) ) // == 136091-0019.2k (strtdriv)
4237   ROM_LOAD16_BYTE( "088-1020.bin",  0x20001, 0x10000, CRC(311cef99) SHA1(9c466aabad7e80581e477253ec6f2fd245f9b9fd) ) // == 136091-0020.2r (strtdriv)
4238   ROM_LOAD16_BYTE( "088-1021.bin",  0x40000, 0x10000, CRC(ce8e4886) SHA1(d29cd4761deb80ed179d0e503243739eebc0edb4) )
4239   ROM_LOAD16_BYTE( "088-1022.bin",  0x40001, 0x10000, CRC(4f1e1c5d) SHA1(3e72813129cae9e9bf084bfb1b747aa46b92591e) )
4240
4241   ROM_REGION( 0x800, "leftpcb:200e", 0 ) // set to display left monitor, controls not calibrated with valid values (don't think they need to be)
4242   ROM_LOAD( "leftpcb_200e",   0x000000, 0x000800, CRC(a618d02e) SHA1(cc1068fe4f6ec9a26b6e8fdbe05f4364a64559c1) )   
4243   ROM_REGION( 0x800, "leftpcb:210e", 0 )
4244   ROM_LOAD( "leftpcb_210e",   0x000000, 0x000800, CRC(108ea834) SHA1(d7aec78287647dc52f92143cdb6d7765de0b4e39) )
4245
4246
4247   /* Right PCB*/
4248   ROM_REGION( 0x200000, "rightpcb:maincpu", 0 )        /* 2MB for 68000 code */
4249   ROM_LOAD16_BYTE( "088-2002.bin", 0x000000, 0x010000, CRC(77724070) SHA1(5862f30f7e2ab9c0beb06cf5599bcb1ff97f3a47) )
4250   ROM_LOAD16_BYTE( "088-2001.bin", 0x000001, 0x010000, CRC(16ab2fff) SHA1(bf6dcefc98e1fe27bef0ddacc265d8782c486c83) )
4251   ROM_LOAD16_BYTE( "088-2004.bin", 0x020000, 0x010000, CRC(dccdb16b) SHA1(330cf39bcbdb9c73da48b4e947086a7988e37496) )
4252   ROM_LOAD16_BYTE( "088-2003.bin", 0x020001, 0x010000, CRC(132ef986) SHA1(106f1a23ac200a868959181fa1c47419806e8366) )
4253   ROM_LOAD16_BYTE( "088-2006.bin", 0x040000, 0x010000, CRC(de3a0c24) SHA1(1121b8a16ac11b2480f1c4336a5aa3271364f80e))
4254   ROM_LOAD16_BYTE( "088-2005.bin", 0x040001, 0x010000, CRC(96ad705f) SHA1(cc0bc7fdd2a5f91a5929b889607dcf7ad015bb95) )
4255   ROM_LOAD16_BYTE( "088-2008.bin", 0x060000, 0x010000, CRC(452d991c) SHA1(42dad0a93839a900c3571ce9e252e1c991a1da56) )
4256   ROM_LOAD16_BYTE( "088-2007.bin", 0x060001, 0x010000, CRC(d6f526d3) SHA1(8406917c91c1d3690379cb0bca5809d1db27abec) )
4257   ROM_LOAD16_BYTE( "088-2010.bin", 0x080000, 0x010000, CRC(775bca3d) SHA1(926b460faeb2aa46899432b3a9973381ffd7781d) )
4258   ROM_LOAD16_BYTE( "088-2009.bin", 0x080001, 0x010000, CRC(6aedccc5) SHA1(9189881802969ecdde2fd41a20ff6ea0471ce2c0) )
4259   ROM_LOAD16_BYTE( "088-2012.bin", 0x0a0000, 0x010000, CRC(bacf08c0) SHA1(2f7ddaf4ef350ee3e6ab886759d88c03aa94784b) )
4260   ROM_LOAD16_BYTE( "088-2011.bin", 0x0a0001, 0x010000, CRC(1e0c2f71) SHA1(bcdd9089442934df78109df7c0dcf170873cf992) )
4261   ROM_LOAD16_BYTE( "088-2014.bin", 0x0c0000, 0x010000, CRC(3512537c) SHA1(896975ef2685358bd98f7a9b45dda11e8bfa3a13) )
4262   ROM_LOAD16_BYTE( "088-2013.bin", 0x0c0001, 0x010000, CRC(8d7c4e80) SHA1(eda8d02e51b18234fc0912eaca8171d75ae643c7) )
4263   ROM_LOAD16_BYTE( "088-2016.bin", 0x0e0000, 0x010000, CRC(6a42b7e2) SHA1(2e0ff4b7e391106a976cb872f6311f6d35dca5b0) )
4264   ROM_LOAD16_BYTE( "088-2015.bin", 0x0e0001, 0x010000, CRC(334e2a3b) SHA1(a19bfa7652845b9453c722091c773819ba248569) )
4265
4266   ROM_REGION( 0x60000, "rightpcb:user1", 0 )       /* 384k for object ROM */
4267   ROM_LOAD16_BYTE( "088-1017.bin",  0x00000, 0x10000, CRC(d92251e8) SHA1(deeeec54c4a61c3adf62f6b1b910135559090ee5) )
4268   ROM_LOAD16_BYTE( "088-1018.bin",  0x00001, 0x10000, CRC(11a0a8f5) SHA1(d4ccc83fc99331d741bc9b8027ef20d72e3ad71a) )
4269   ROM_LOAD16_BYTE( "088-1019.bin",  0x20000, 0x10000, CRC(5bb00676) SHA1(cad1cea8e43f9590fc71c00fab4eff0d447f9296) ) // == 136091-0019.2k (strtdriv)
4270   ROM_LOAD16_BYTE( "088-1020.bin",  0x20001, 0x10000, CRC(311cef99) SHA1(9c466aabad7e80581e477253ec6f2fd245f9b9fd) ) // == 136091-0020.2r (strtdriv)
4271   ROM_LOAD16_BYTE( "088-1021.bin",  0x40000, 0x10000, CRC(ce8e4886) SHA1(d29cd4761deb80ed179d0e503243739eebc0edb4) )
4272   ROM_LOAD16_BYTE( "088-1022.bin",  0x40001, 0x10000, CRC(4f1e1c5d) SHA1(3e72813129cae9e9bf084bfb1b747aa46b92591e) )
4273
4274   ROM_REGION( 0x800, "rightpcb:200e", 0 ) // set to display right monitor, controls not calibrated with valid values (don't think they need to be)
4275   ROM_LOAD( "rightpcb_200e",   0x000000, 0x000800, CRC(6f1b7094) SHA1(6194a5b99aebe43f02c8d267290207b32c5bdbbd) )   
4276   ROM_REGION( 0x800, "rightpcb:210e", 0 )
4277   ROM_LOAD( "rightpcb_210e",   0x000000, 0x000800, CRC(108ea834) SHA1(d7aec78287647dc52f92143cdb6d7765de0b4e39) )
36544278ROM_END
36554279
36564280
36574281ROM_START( steeltal )
3658   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
4282   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
36594283   ROM_LOAD16_BYTE( "136087-1002.200r", 0x000000, 0x010000, CRC(31bf01a9) SHA1(cd08a839dbb5283a6e2bb35bc9e1578a14e3c2e6) )
36604284   ROM_LOAD16_BYTE( "136087-1001.210r", 0x000001, 0x010000, CRC(b4fa2900) SHA1(5e92ab4af31321b891c072305f8b8ef30a3e1fb0) )
36614285   ROM_LOAD16_BYTE( "136087-1004.200s", 0x020000, 0x010000, CRC(c31ca924) SHA1(8d7d2a3d204e69d759cf767b57570c18db5a3fd8) )
r241752r241753
36734297   ROM_LOAD16_BYTE( "136087-1016.200y", 0x0e0000, 0x010000, CRC(db62362e) SHA1(e1d392aa00ac36296728257fa26c6aa68a4ebe5f) )
36744298   ROM_LOAD16_BYTE( "136087-1015.210y", 0x0e0001, 0x010000, CRC(ef517db7) SHA1(16e7e351326391480bf36c58d6b34ef4128b6627) )
36754299
3676   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
4300   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
36774301   ROM_LOAD( "136087-5001.1f",  0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
36784302   ROM_CONTINUE(                0x004000, 0x00c000 )
36794303
3680   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )       /* 64k for ASIC65 */
4304   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )       /* 64k for ASIC65 */
36814305   ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
36824306
3683   ROM_REGION( 0x10000, "cpu6", 0 )        /* 64k for DSP communications */
4307   ROM_REGION( 0x10000, "mainpcb:cpu6", 0 )        /* 64k for DSP communications */
36844308   ROM_LOAD( "136087-1025.5f",  0x000000, 0x010000, CRC(4c645933) SHA1(7a1cf049e368059a79b03598de73c30d8dae5e90) )
36854309
3686   ROM_REGION16_BE( 0xc0000, "user1", 0 )  /* 768k for object ROM */
4310   ROM_REGION16_BE( 0xc0000, "mainpcb:user1", 0 )  /* 768k for object ROM */
36874311   ROM_LOAD16_BYTE( "136087-1018.2t",  0x000000, 0x020000, CRC(a5882384) SHA1(157707b5b114fa584893dec07dc456d4a5520f44) )
36884312   ROM_LOAD16_BYTE( "136087-1017.2lm", 0x000001, 0x020000, CRC(0a29db30) SHA1(f11ad7fe27989ffd66e9bef2c14ec040a4125d8a) )
36894313
3690   ROM_REGION( 0x80000, "jsa:oki1", 0 )
4314   ROM_REGION( 0x80000, "mainpcb:jsa:oki1", 0 )
36914315   ROM_LOAD( "136087-5002.1m",  0x000000, 0x020000, CRC(c904db9c) SHA1(d25fff3da87d2b716cd65fb7dd157c3f1f5e5909) )
36924316   ROM_LOAD( "136087-5003.1n",  0x020000, 0x020000, CRC(164580b3) SHA1(03118c8323d8a49a65addc61c1402d152d42d7f9) )
36934317   ROM_LOAD( "136087-5004.1p",  0x040000, 0x020000, CRC(296290a0) SHA1(8a3441a5618233f561531fe456e1f5ed22183421) )
36944318   ROM_LOAD( "136087-5005.1r",  0x060000, 0x020000, CRC(c029d037) SHA1(0ae736c0ca3a1974911464328dd5a6b41a939130) )
36954319
3696   ROM_REGION( 0x015D, "plds", 0 )
4320   ROM_REGION( 0x015D, "mainpcb:plds", 0 )
36974321   /* GAL's located on Sound board */
36984322   ROM_LOAD( "136085-1038.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2F */
36994323   ROM_LOAD( "136085-1039.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2L */
r241752r241753
37104334   /* GAL's located on "Multisync" board */
37114335   ROM_LOAD( "136087-9001.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL6001 at location 200K (SLOOP) */
37124336
3713   ROM_REGION( 0x800, "200e", 0 )
4337   ROM_REGION( 0x800, "mainpcb:200e", 0 )
37144338   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
37154339
3716   ROM_REGION( 0x800, "210e", 0 )
4340   ROM_REGION( 0x800, "mainpcb:210e", 0 )
37174341   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
37184342ROM_END
37194343
37204344
37214345ROM_START( steeltalg )
3722   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
4346   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
37234347   ROM_LOAD16_BYTE( "136087-1002.200r", 0x000000, 0x010000, CRC(31bf01a9) SHA1(cd08a839dbb5283a6e2bb35bc9e1578a14e3c2e6) )
37244348   ROM_LOAD16_BYTE( "136087-1001.210r", 0x000001, 0x010000, CRC(b4fa2900) SHA1(5e92ab4af31321b891c072305f8b8ef30a3e1fb0) )
37254349   ROM_LOAD16_BYTE( "136087-2004.200s", 0x020000, 0x010000, CRC(11fcba15) SHA1(031fc4c46a25ba8b5e15257f7443899bb484c09e) )
r241752r241753
37374361   ROM_LOAD16_BYTE( "136087-1016.200y", 0x0e0000, 0x010000, CRC(db62362e) SHA1(e1d392aa00ac36296728257fa26c6aa68a4ebe5f) )
37384362   ROM_LOAD16_BYTE( "136087-1015.210y", 0x0e0001, 0x010000, CRC(ef517db7) SHA1(16e7e351326391480bf36c58d6b34ef4128b6627) )
37394363
3740   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
4364   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
37414365   ROM_LOAD( "136087-5001.1f",  0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
37424366   ROM_CONTINUE(             0x004000, 0x00c000 )
37434367
3744   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )       /* 64k for ASIC65 */
4368   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )       /* 64k for ASIC65 */
37454369   ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
37464370
3747   ROM_REGION( 0x10000, "cpu6", 0 )        /* 64k for DSP communications */
4371   ROM_REGION( 0x10000, "mainpcb:cpu6", 0 )        /* 64k for DSP communications */
37484372   ROM_LOAD( "136087-1025.5f",  0x000000, 0x010000, CRC(4c645933) SHA1(7a1cf049e368059a79b03598de73c30d8dae5e90) )
37494373
3750   ROM_REGION16_BE( 0xc0000, "user1", 0 )  /* 768k for object ROM */
4374   ROM_REGION16_BE( 0xc0000, "mainpcb:user1", 0 )  /* 768k for object ROM */
37514375   ROM_LOAD16_BYTE( "136087-1018.2t",  0x000000, 0x020000, CRC(a5882384) SHA1(157707b5b114fa584893dec07dc456d4a5520f44) )
37524376   ROM_LOAD16_BYTE( "136087-1017.2lm", 0x000001, 0x020000, CRC(0a29db30) SHA1(f11ad7fe27989ffd66e9bef2c14ec040a4125d8a) )
37534377
3754   ROM_REGION( 0x80000, "jsa:oki1", 0 )
4378   ROM_REGION( 0x80000, "mainpcb:jsa:oki1", 0 )
37554379   ROM_LOAD( "136087-5002.1m",  0x000000, 0x020000, CRC(c904db9c) SHA1(d25fff3da87d2b716cd65fb7dd157c3f1f5e5909) )
37564380   ROM_LOAD( "136087-5003.1n",  0x020000, 0x020000, CRC(164580b3) SHA1(03118c8323d8a49a65addc61c1402d152d42d7f9) )
37574381   ROM_LOAD( "136087-5004.1p",  0x040000, 0x020000, CRC(296290a0) SHA1(8a3441a5618233f561531fe456e1f5ed22183421) )
37584382   ROM_LOAD( "136087-5005.1r",  0x060000, 0x020000, CRC(c029d037) SHA1(0ae736c0ca3a1974911464328dd5a6b41a939130) )
37594383
3760   ROM_REGION( 0x015D, "plds", 0 )
4384   ROM_REGION( 0x015D, "mainpcb:plds", 0 )
37614385   /* GAL's located on Sound board */
37624386   ROM_LOAD( "136085-1038.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2F */
37634387   ROM_LOAD( "136085-1039.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2L */
r241752r241753
37744398   /* GAL's located on "Multisync" board */
37754399   ROM_LOAD( "136087-9001.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL6001 at location 200K (SLOOP) */
37764400
3777   ROM_REGION( 0x800, "200e", 0 )
4401   ROM_REGION( 0x800, "mainpcb:200e", 0 )
37784402   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
37794403
3780   ROM_REGION( 0x800, "210e", 0 )
4404   ROM_REGION( 0x800, "mainpcb:210e", 0 )
37814405   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
37824406ROM_END
37834407
37844408
37854409ROM_START( steeltal1 )
3786   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
4410   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
37874411   ROM_LOAD16_BYTE( "136087-1002.200r", 0x000000, 0x010000, CRC(31bf01a9) SHA1(cd08a839dbb5283a6e2bb35bc9e1578a14e3c2e6) )
37884412   ROM_LOAD16_BYTE( "136087-1001.210r", 0x000001, 0x010000, CRC(b4fa2900) SHA1(5e92ab4af31321b891c072305f8b8ef30a3e1fb0) )
37894413   ROM_LOAD16_BYTE( "136087-a004.200s", 0x020000, 0x010000, CRC(392c992d) SHA1(10d1606214df675e6e59185e6b97034c4a47055a) )
r241752r241753
38014425   ROM_LOAD16_BYTE( "136087-1016.200y", 0x0e0000, 0x010000, CRC(db62362e) SHA1(e1d392aa00ac36296728257fa26c6aa68a4ebe5f) )
38024426   ROM_LOAD16_BYTE( "136087-1015.210y", 0x0e0001, 0x010000, CRC(ef517db7) SHA1(16e7e351326391480bf36c58d6b34ef4128b6627) )
38034427
3804   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
4428   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
38054429   ROM_LOAD( "136087-5001.1f",  0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
38064430   ROM_CONTINUE(             0x004000, 0x00c000 )
38074431
3808   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )       /* 64k for ASIC65 */
4432   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )       /* 64k for ASIC65 */
38094433   ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
38104434
3811   ROM_REGION( 0x10000, "cpu6", 0 )        /* 64k for DSP communications */
4435   ROM_REGION( 0x10000, "mainpcb:cpu6", 0 )        /* 64k for DSP communications */
38124436   ROM_LOAD( "136087-1025.5f",  0x000000, 0x010000, CRC(4c645933) SHA1(7a1cf049e368059a79b03598de73c30d8dae5e90) )
38134437
3814   ROM_REGION16_BE( 0xc0000, "user1", 0 )  /* 768k for object ROM */
4438   ROM_REGION16_BE( 0xc0000, "mainpcb:user1", 0 )  /* 768k for object ROM */
38154439   ROM_LOAD16_BYTE( "136087-1018.2t",  0x000000, 0x020000, CRC(a5882384) SHA1(157707b5b114fa584893dec07dc456d4a5520f44) )
38164440   ROM_LOAD16_BYTE( "136087-1017.2lm", 0x000001, 0x020000, CRC(0a29db30) SHA1(f11ad7fe27989ffd66e9bef2c14ec040a4125d8a) )
38174441
3818   ROM_REGION( 0x80000, "jsa:oki1", 0 )
4442   ROM_REGION( 0x80000, "mainpcb:jsa:oki1", 0 )
38194443   ROM_LOAD( "136087-5002.1m",  0x000000, 0x020000, CRC(c904db9c) SHA1(d25fff3da87d2b716cd65fb7dd157c3f1f5e5909) )
38204444   ROM_LOAD( "136087-5003.1n",  0x020000, 0x020000, CRC(164580b3) SHA1(03118c8323d8a49a65addc61c1402d152d42d7f9) )
38214445   ROM_LOAD( "136087-5004.1p",  0x040000, 0x020000, CRC(296290a0) SHA1(8a3441a5618233f561531fe456e1f5ed22183421) )
38224446   ROM_LOAD( "136087-5005.1r",  0x060000, 0x020000, CRC(c029d037) SHA1(0ae736c0ca3a1974911464328dd5a6b41a939130) )
38234447
3824   ROM_REGION( 0x015D, "plds", 0 )
4448   ROM_REGION( 0x015D, "mainpcb:plds", 0 )
38254449   /* GAL's located on Sound board */
38264450   ROM_LOAD( "136085-1038.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2F */
38274451   ROM_LOAD( "136085-1039.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2L */
r241752r241753
38384462   /* GAL's located on "Multisync" board */
38394463   ROM_LOAD( "136087-9001.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL6001 at location 200K (SLOOP) */
38404464
3841   ROM_REGION( 0x800, "200e", 0 )
4465   ROM_REGION( 0x800, "mainpcb:200e", 0 )
38424466   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
38434467
3844   ROM_REGION( 0x800, "210e", 0 )
4468   ROM_REGION( 0x800, "mainpcb:210e", 0 )
38454469   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
38464470ROM_END
38474471
38484472
38494473ROM_START( steeltalp )
3850   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
4474   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
38514475   ROM_LOAD16_BYTE( "rom-200r.bin", 0x00000, 0x10000, CRC(72a9ce3b) SHA1(6706ff32173735d16d9da1321b64a4a9bb317b2e) )
38524476   ROM_LOAD16_BYTE( "rom-210r.bin", 0x00001, 0x10000, CRC(46d83b42) SHA1(85b178781f0595b5af0375fee32d0dd8cdba8fca) )
38534477   ROM_LOAD16_BYTE( "rom-200s.bin", 0x20000, 0x10000, CRC(bf1b31ae) SHA1(f2d7f13854b8a3dd4de9ae98cc3034dfcf3846b8) )
r241752r241753
38654489   ROM_LOAD16_BYTE( "rom-200y.bin", 0xe0000, 0x10000, CRC(b568e1be) SHA1(5d62037892e040515e4262db43057f33436fa12d) )
38664490   ROM_LOAD16_BYTE( "rom-210y.bin", 0xe0001, 0x10000, CRC(3f5cdd3e) SHA1(c33c155158a5c69a7f2e61cd88b297dc14ecd479) )
38674491
3868   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
4492   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
38694493   ROM_LOAD( "136087-5001.1f",  0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
38704494   ROM_CONTINUE(             0x004000, 0x00c000 )
38714495
3872   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )       /* 64k for ASIC65 */
4496   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )       /* 64k for ASIC65 */
38734497   ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
38744498
3875   ROM_REGION( 0x10000, "cpu6", 0 )        /* 64k for DSP communications */
4499   ROM_REGION( 0x10000, "mainpcb:cpu6", 0 )        /* 64k for DSP communications */
38764500   ROM_LOAD( "136087-1025.5f",  0x000000, 0x010000, CRC(4c645933) SHA1(7a1cf049e368059a79b03598de73c30d8dae5e90) )
38774501
3878   ROM_REGION16_BE( 0xc0000, "user1", 0 )  /* 768k for object ROM */
4502   ROM_REGION16_BE( 0xc0000, "mainpcb:user1", 0 )  /* 768k for object ROM */
38794503   ROM_LOAD16_BYTE( "rom.2t",  0x00000, 0x20000, CRC(05284504) SHA1(03b81c077f8ff073713f4bcc10b82087743b0d84) )
38804504   ROM_LOAD16_BYTE( "rom.2lm", 0x00001, 0x20000, CRC(d6e65b87) SHA1(ac4b2f292f6e28a15e3a12f09f6c2f9523e8b178) )
38814505
3882   ROM_REGION( 0x80000, "jsa:oki1", 0 )
4506   ROM_REGION( 0x80000, "mainpcb:jsa:oki1", 0 )
38834507   ROM_LOAD( "136087-5002.1m",  0x000000, 0x020000, CRC(c904db9c) SHA1(d25fff3da87d2b716cd65fb7dd157c3f1f5e5909) )
38844508   ROM_LOAD( "136087-5003.1n",  0x020000, 0x020000, CRC(164580b3) SHA1(03118c8323d8a49a65addc61c1402d152d42d7f9) )
38854509   ROM_LOAD( "136087-5004.1p",  0x040000, 0x020000, CRC(296290a0) SHA1(8a3441a5618233f561531fe456e1f5ed22183421) )
38864510   ROM_LOAD( "136087-5005.1r",  0x060000, 0x020000, CRC(c029d037) SHA1(0ae736c0ca3a1974911464328dd5a6b41a939130) )
38874511
3888   ROM_REGION( 0x015D, "plds", 0 )
4512   ROM_REGION( 0x015D, "mainpcb:plds", 0 )
38894513   /* GAL's located on Sound board */
38904514   ROM_LOAD( "136085-1038.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2F */
38914515   ROM_LOAD( "136085-1039.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2L */
r241752r241753
39024526   /* GAL's located on "Multisync" board */
39034527   ROM_LOAD( "136087-9001.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL6001 at location 200K (SLOOP) */
39044528
3905   ROM_REGION( 0x800, "200e", 0 )
4529   ROM_REGION( 0x800, "mainpcb:200e", 0 )
39064530   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
39074531
3908   ROM_REGION( 0x800, "210e", 0 )
4532   ROM_REGION( 0x800, "mainpcb:210e", 0 )
39094533   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
39104534ROM_END
39114535
39124536
39134537ROM_START( strtdriv )
3914   ROM_REGION( 0x200000, "maincpu", 0 )        /* 2MB for 68000 code */
4538   ROM_REGION( 0x200000, "mainpcb:maincpu", 0 )        /* 2MB for 68000 code */
39154539   ROM_LOAD16_BYTE( "136091-0002.200r", 0x000000, 0x010000, CRC(d28f2629) SHA1(266b4a80fd366fec2329ed2cec7fb570cef34291) )
39164540   ROM_LOAD16_BYTE( "136091-0001.210r", 0x000001, 0x010000, CRC(443428d1) SHA1(d93fd21a2c9d1e24c599867a110c1031d72e81b7) )
39174541   ROM_LOAD16_BYTE( "136091-0004.200s", 0x020000, 0x010000, CRC(379b9d18) SHA1(8cd903cc4e970cc45d7ef431233730b53dabeb1d) )
r241752r241753
39294553   ROM_LOAD16_BYTE( "136091-0016.200y", 0x0e0000, 0x010000, CRC(f85ad532) SHA1(f9d2480104a7487c23d33b05aa044b7f4ca08c67) )
39304554   ROM_LOAD16_BYTE( "136091-0015.210y", 0x0e0001, 0x010000, CRC(a2e406f3) SHA1(a7266508011c892cb1032fa4d77ccbafedc844e8) )
39314555
3932   ROM_REGION( 0x10000 + 0x10000, "asic65:asic65cpu", 0 )    /* dummy region for ADSP 2105 */
4556   ROM_REGION( 0x10000 + 0x10000, "mainpcb:asic65:asic65cpu", 0 )    /* dummy region for ADSP 2105 */
39334557   ROM_LOAD( "136091-0033.10j", 0x000000, 0x010000, CRC(57504ab6) SHA1(ec8361b7da964c07ca0da48a87537badc3986fe0) )
39344558
3935   ROM_REGION( 0x60000, "user1", 0 )       /* 384k for object ROM */
4559   ROM_REGION( 0x60000, "mainpcb:user1", 0 )       /* 384k for object ROM */
39364560   ROM_LOAD16_BYTE( "136091-0017.2lm", 0x00000, 0x10000, CRC(b0454074) SHA1(9530ea1ef215116da1f0843776fa7a6b4637049d) )
39374561   ROM_LOAD16_BYTE( "136091-0018.2t",  0x00001, 0x10000, CRC(ef432aa8) SHA1(56bce13c111db7874c9b669d479f6ef47976ee14) )
39384562   ROM_LOAD16_BYTE( "136091-0019.2k",  0x20000, 0x10000, CRC(5bb00676) SHA1(cad1cea8e43f9590fc71c00fab4eff0d447f9296) )
r241752r241753
39404564   ROM_LOAD16_BYTE( "136091-0021.2j",  0x40000, 0x10000, CRC(14f2caae) SHA1(ff40dbced58dc910a2b5825b846a5e52933cb8fc) )
39414565   ROM_LOAD16_BYTE( "136091-0022.2p",  0x40001, 0x10000, CRC(bc4dd071) SHA1(ca182451a0a18d343dce1be56090d51950d43906) )
39424566
3943   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
4567   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
39444568   ROM_LOAD16_BYTE( "136091-0026.30e", 0x000000, 0x020000, CRC(47705109) SHA1(fa40275b71b74be8591282d2fba4215b98fc29c9) )
39454569   ROM_LOAD16_BYTE( "136091-0025.10e", 0x000001, 0x020000, CRC(ead9254e) SHA1(92152d3ca77b542b3bb3398ccf414df28c95abfd) )
39464570
3947   ROM_REGION16_BE( 0x100000, "ds3sdsp", 0 )  /* DS III sound ADSP-2105 */
4571   ROM_REGION16_BE( 0x100000, "mainpcb:ds3sdsp", 0 )  /* DS III sound ADSP-2105 */
39484572   ROM_LOAD( "136091-0033.10j", 0x000000, 0x010000, CRC(57504ab6) SHA1(ec8361b7da964c07ca0da48a87537badc3986fe0) )
39494573
3950   ROM_REGION16_BE( 0x100000, "ds3xdsp", 0 )  /* DS III auxillary ADSP-2105 (unused) */
4574   ROM_REGION16_BE( 0x100000, "mainpcb:ds3xdsp", 0 )  /* DS III auxillary ADSP-2105 (unused) */
39514575   ROM_FILL(                    0x000000, 0x010000, 0x00)
39524576
3953   ROM_REGION( 0x80000, "ds3sdsp_data", 0 )
4577   ROM_REGION( 0x80000, "mainpcb:ds3sdsp_data", 0 )
39544578   ROM_LOAD16_BYTE( "136052-1123.12lm",0x00000, 0x10000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
39554579   ROM_LOAD16_BYTE( "136077-1017.12t", 0x00001, 0x10000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
39564580
r241752r241753
39634587   ROM_FILL(                           0x60000, 0x20000, 0xff) /* 12N */
39644588   ROM_LOAD16_BYTE( "136052-1126.12h", 0x60000, 0x10000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
39654589
3966   ROM_REGION( 0x800, "200e", 0 )
4590   ROM_REGION( 0x800, "mainpcb:200e", 0 )
39674591   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
39684592
3969   ROM_REGION( 0x800, "210e", 0 )
4593   ROM_REGION( 0x800, "mainpcb:210e", 0 )
39704594   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
39714595ROM_END
39724596
39734597ROM_START( hdrivair )
3974   ROM_REGION( 0x200000, "maincpu", 0 )        /* 2MB for 68000 code */
4598   ROM_REGION( 0x200000, "mainpcb:maincpu", 0 )        /* 2MB for 68000 code */
39754599   ROM_LOAD16_BYTE( "stesthi.bin", 0x000000, 0x20000, CRC(b4bfa451) SHA1(002a5d213ba8ec76ad83a87d76aefbd98b1e4c94) )
39764600   ROM_LOAD16_BYTE( "stestlo.bin", 0x000001, 0x20000, CRC(58758419) SHA1(7951d4c8cf0b28b4fac3fe172ea3bc56f61bd9ff) )
39774601   ROM_LOAD16_BYTE( "drivehi.bin", 0x040000, 0x20000, CRC(d15f5119) SHA1(c2c7e9675c14ba41effa6f721602f6471b348758) )
r241752r241753
39854609   ROM_LOAD16_BYTE( "coprochi.bin",0x1c0000, 0x20000, CRC(5d2ca109) SHA1(e1a94d3fbfd5d542732555bf60268e73d66b3a06) )
39864610   ROM_LOAD16_BYTE( "coproclo.bin",0x1c0001, 0x20000, CRC(5f98b04d) SHA1(9c4fa4092fd85f1d67be44f2ff91a907a87db51a) )
39874611
3988   ROM_REGION( 0x10000 + 0x10000, "asic65:asic65cpu", 0 )    /* dummy region for ADSP 2105 */
4612   ROM_REGION( 0x10000 + 0x10000, "mainpcb:asic65:asic65cpu", 0 )    /* dummy region for ADSP 2105 */
39894613   ROM_LOAD( "sboot.bin", 0x000000, 0x010000, CRC(cde4d010) SHA1(853f4b813ff70fe74cd87e92131c46fca045610d) )
39904614
3991   ROM_REGION( 0xc0000, "user1", 0 )       /* 768k for object ROM */
4615   ROM_REGION( 0xc0000, "mainpcb:user1", 0 )       /* 768k for object ROM */
39924616   ROM_LOAD16_BYTE( "obj0l.bin",   0x00000, 0x20000, CRC(1f835f2e) SHA1(9d3419f2c1aa65ddfe9ace4e70ca1212d634afbf) )
39934617   ROM_LOAD16_BYTE( "obj0h.bin",   0x00001, 0x20000, CRC(c321ab55) SHA1(e095e40bb1ebda7c9ff04a5086c10ab41dec2f16) )
39944618   ROM_LOAD16_BYTE( "obj1l.bin",   0x40000, 0x20000, CRC(3d65f264) SHA1(e9232f5bf439bf4e1cf99cc7e81b7f9550563f15) )
r241752r241753
39964620   ROM_LOAD16_BYTE( "obj2l.bin",   0x80000, 0x20000, CRC(b206cc7e) SHA1(17f05e906c41b804fe99dd6cd8acbade919a6a10) )
39974621   ROM_LOAD16_BYTE( "obj2h.bin",   0x80001, 0x20000, CRC(a666e98c) SHA1(90e380ff87538c7d557cf005a4a5bcedc250eb72) )
39984622
3999   ROM_REGION16_BE( 0x140000, "user3", 0 )/* 1MB for DSK ROMs + 256k for RAM */
4623   ROM_REGION16_BE( 0x140000, "mainpcb:user3", 0 )/* 1MB for DSK ROMs + 256k for RAM */
40004624   ROM_LOAD16_BYTE( "dsk2phi.bin", 0x00000, 0x80000, CRC(71c268e0) SHA1(c089248a7dfadf2eba3134fe40ebb777c115a886) )
40014625   ROM_LOAD16_BYTE( "dsk2plo.bin", 0x00001, 0x80000, CRC(edf96363) SHA1(47f0608c2b0ab983681de021a16b1d10d4feb800) )
40024626
4003   ROM_REGION32_LE( 0x200000, "user4", 0 )/* 2MB for ASIC61 ROMs */
4627   ROM_REGION32_LE( 0x200000, "mainpcb:user4", 0 )/* 2MB for ASIC61 ROMs */
40044628   ROM_LOAD32_BYTE( "roads0.bin",  0x000000, 0x80000, CRC(5028eb41) SHA1(abe9d73e74d4f0308f07cbe9c18c8a77456fdbc7) )
40054629   ROM_LOAD32_BYTE( "roads1.bin",  0x000001, 0x80000, CRC(c3f2c201) SHA1(c73933d7e46f3c63c4ca86af40eb4f0abb09aedf) )
40064630   ROM_LOAD32_BYTE( "roads2.bin",  0x000002, 0x80000, CRC(527923fe) SHA1(839de8486bb7489f059b5a629ab229ad96de7eac) )
40074631   ROM_LOAD32_BYTE( "roads3.bin",  0x000003, 0x80000, CRC(2f2023b2) SHA1(d474892443db2f0710c2be0d6b90735a2fbee12a) )
40084632
4009   ROM_REGION16_BE( 0x10000, "ds3sdsp", 0 ) /* DS IV sound ADSP-2105 */
4633   ROM_REGION16_BE( 0x10000, "mainpcb:ds3sdsp", 0 ) /* DS IV sound ADSP-2105 */
40104634   ROM_LOAD( "sboot.bin", 0x00000, 0x10000, CRC(cde4d010) SHA1(853f4b813ff70fe74cd87e92131c46fca045610d) )
40114635
4012   ROM_REGION16_BE( 0x10000, "ds3xdsp", 0 ) /* DS IV auxillary ADSP-2105 */
4636   ROM_REGION16_BE( 0x10000, "mainpcb:ds3xdsp", 0 ) /* DS IV auxillary ADSP-2105 */
40134637   ROM_LOAD( "xboot.bin", 0x00000, 0x10000, CRC(054b46a0) SHA1(038eec17e678f2755239d6795acfda621796802e) )
40144638
4015   ROM_REGION16_BE( 0x400000, "ds3sdsp_data", 0 ) /* DS IV sound data */
4639   ROM_REGION16_BE( 0x400000, "mainpcb:ds3sdsp_data", 0 ) /* DS IV sound data */
40164640   ROM_LOAD16_BYTE( "ds3rom4.bin", 0x000000, 0x80000, CRC(15ffb19a) SHA1(030dc90b7cabcd7fc5f231b09d2aa2eaf6e60b98) )
40174641   ROM_LOAD16_BYTE( "ds3rom0.bin", 0x000001, 0x80000, CRC(90b8dbb6) SHA1(fff693cb81e88bc00e048bb71406295fe7be5122) )
40184642   ROM_LOAD16_BYTE( "ds3rom5.bin", 0x100000, 0x80000, CRC(8d0e9b27) SHA1(76556f48bdf14475260c268ebdb16ecb494b2f36) )
r241752r241753
40224646   ROM_LOAD16_BYTE( "ds3rom7.bin", 0x300000, 0x80000, CRC(323eff0b) SHA1(5d4945d77191ee44b4fbf125bc0816217321829e) )
40234647   ROM_LOAD16_BYTE( "ds3rom3.bin", 0x300001, 0x80000, CRC(63965868) SHA1(d61d9d6709a3a3c37c2652602e97fdee52e0e7cb) )
40244648
4025   ROM_REGION( 0x800, "200e", 0 )
4649   ROM_REGION( 0x800, "mainpcb:200e", 0 )
40264650   ROM_LOAD( "hdrivair.200e",      0x000000, 0x000800, CRC(6270b696) SHA1(e302880dbca53ee725108ca4f7e45a176e85e96d) )
40274651
4028   ROM_REGION( 0x800, "210e", 0 )
4652   ROM_REGION( 0x800, "mainpcb:210e", 0 )
40294653   ROM_LOAD( "hdrivair.210e",      0x000000, 0x000800, CRC(a1c39919) SHA1(92799a7a73f545dad6684eacf7009a6c4d52d8f7) )
40304654ROM_END
40314655
40324656
40334657ROM_START( hdrivairp )
4034   ROM_REGION( 0x200000, "maincpu", 0 )        /* 2MB for 68000 code */
4658   ROM_REGION( 0x200000, "mainpcb:maincpu", 0 )        /* 2MB for 68000 code */
40354659   ROM_LOAD16_BYTE( "stest.0h",    0x000000, 0x20000, CRC(bf4bb6a0) SHA1(e38ec5ce245f98bfe8084ba684bffc85dc19d3be) )
40364660   ROM_LOAD16_BYTE( "stest.0l",    0x000001, 0x20000, CRC(f462b511) SHA1(d88efb8cc30322a8332a1f50de775a204758e176) )
40374661   ROM_LOAD16_BYTE( "drive.hi",    0x040000, 0x20000, CRC(56571590) SHA1(d0362b8bd438cd7dfa9ff7cf71307f44c2cfe843) )
r241752r241753
40454669   ROM_LOAD16_BYTE( "ms2cproc.0h", 0x1c0000, 0x20000, CRC(19024f2d) SHA1(a94e8836cdc147cea5816b99b8a1ad5ff669d984) )
40464670   ROM_LOAD16_BYTE( "ms2cproc.0l", 0x1c0001, 0x20000, CRC(1e48bd46) SHA1(1a903d889f48604bd8d2d9a0bda4ee20e7ad968b) )
40474671
4048   ROM_REGION( 0x10000 + 0x10000, "dsp32", 0 ) /* dummy region for ADSP 2105 */
4672   ROM_REGION( 0x10000 + 0x10000, "mainpcb:dsp32", 0 ) /* dummy region for ADSP 2105 */
40494673   ROM_LOAD( "sboota.bin", 0x10000 + 0x00000, 0x10000, CRC(3ef819cd) SHA1(c547b869a3a37a82fb46584fe0ef0cfe21a4f882) )
40504674
4051   ROM_REGION( 0x10000 + 0x10000, "asic65:asic65cpu", 0 )    /* dummy region for ADSP 2105 */
4675   ROM_REGION( 0x10000 + 0x10000, "mainpcb:asic65:asic65cpu", 0 )    /* dummy region for ADSP 2105 */
40524676   ROM_LOAD( "xboota.bin", 0x10000 + 0x00000, 0x10000, CRC(d9c49901) SHA1(9f90ae3a47eb1ef00c3ec3661f60402c2eae2108) )
40534677
4054   ROM_REGION( 0xc0000, "user1", 0 )       /* 768k for object ROM */
4678   ROM_REGION( 0xc0000, "mainpcb:user1", 0 )       /* 768k for object ROM */
40554679   ROM_LOAD16_BYTE( "objects.0l",  0x00000, 0x20000, CRC(3c9e9078) SHA1(f1daf32117236401f3cb97f332708632003e55f8) )
40564680   ROM_LOAD16_BYTE( "objects.0h",  0x00001, 0x20000, CRC(4480dbae) SHA1(6a455173c38e80093f58bdc322cffcf25e70b6ae) )
40574681   ROM_LOAD16_BYTE( "objects.1l",  0x40000, 0x20000, CRC(700bd978) SHA1(5cd63d4eee00d90fe29fb9697b6a0ea6b86704ae) )
r241752r241753
40594683   ROM_LOAD16_BYTE( "objects.2l",  0x80000, 0x20000, CRC(e3b512f0) SHA1(080c5a21cb76edcb55d1c2488e9d91cf29cb0665) )
40604684   ROM_LOAD16_BYTE( "objects.2h",  0x80001, 0x20000, CRC(3f83742b) SHA1(4b6e0134a806bcc9bd56432737047f86d0a16424) )
40614685
4062   ROM_REGION16_BE( 0x140000, "user3", 0 )/* 1MB for DSK ROMs + 256k for RAM */
4686   ROM_REGION16_BE( 0x140000, "mainpcb:user3", 0 )/* 1MB for DSK ROMs + 256k for RAM */
40634687   ROM_LOAD16_BYTE( "dskpics.hi",  0x00000, 0x80000, CRC(eaa88101) SHA1(ed0ebf8a9a9514d810242b9b552126f6717f9e25) )
40644688   ROM_LOAD16_BYTE( "dskpics.lo",  0x00001, 0x80000, CRC(8c6f0750) SHA1(4cb23cedc500c1509dc875c3291a5771c8473f73) )
40654689
4066   ROM_REGION32_LE( 0x200000, "user4", 0 )/* 2MB for ASIC61 ROMs */
4690   ROM_REGION32_LE( 0x200000, "mainpcb:user4", 0 )/* 2MB for ASIC61 ROMs */
40674691   ROM_LOAD16_BYTE( "roads.0",     0x000000, 0x80000, CRC(cab2e335) SHA1(914996c5b7905f1c20fcda6972af88debbee59cd) )
40684692   ROM_LOAD16_BYTE( "roads.1",     0x000001, 0x80000, CRC(62c244ba) SHA1(f041a269f35a9d187c90241c5b64173663ad5268) )
40694693   ROM_LOAD16_BYTE( "roads.2",     0x000002, 0x80000, CRC(ba57f415) SHA1(1daf5a014e9bef15466b282bcca2395fec2b0628) )
40704694   ROM_LOAD16_BYTE( "roads.3",     0x000003, 0x80000, CRC(1e6a4ca0) SHA1(2cf06d6c73be11cf10515246fca2baa05ce5091b) )
40714695
4072   ROM_REGION( 0x10000, "ds3sdsp", 0 ) /* DS IV sound ADSP-2105 */
4696   ROM_REGION( 0x10000, "mainpcb:ds3sdsp", 0 ) /* DS IV sound ADSP-2105 */
40734697   ROM_LOAD( "sboota.bin", 0x00000, 0x10000, CRC(3ef819cd) SHA1(c547b869a3a37a82fb46584fe0ef0cfe21a4f882) )
40744698
4075   ROM_REGION( 0x10000, "ds3xdsp", 0 ) /* DS IV auxillary ADSP-2105 */
4699   ROM_REGION( 0x10000, "mainpcb:ds3xdsp", 0 ) /* DS IV auxillary ADSP-2105 */
40764700   ROM_LOAD( "xboota.bin", 0x00000, 0x10000, CRC(d9c49901) SHA1(9f90ae3a47eb1ef00c3ec3661f60402c2eae2108) )
40774701
4078   ROM_REGION16_BE( 0x400000, "ds3sdsp_data", 0 )
4702   ROM_REGION16_BE( 0x400000, "mainpcb:ds3sdsp_data", 0 )
40794703   ROM_LOAD16_BYTE( "ds3rom.5",    0x000000, 0x80000, CRC(6ef9ed90) SHA1(8bd927a56fe99f7db96d203c1daeb8c8c83f2c17) )
40804704   ROM_LOAD16_BYTE( "ds3rom.1",    0x000001, 0x80000, CRC(03673d8d) SHA1(13596f7acb58fba78d6e4f2ac7bb21d9d2589668) )
40814705   ROM_LOAD16_BYTE( "ds3rom.6",    0x100000, 0x80000, CRC(cd4cd6bc) SHA1(95689ab7cb18af54ff09aebf223f6346f13dfd7b) )
r241752r241753
40854709   ROM_LOAD16_BYTE( "ds3rom.0",    0x300000, 0x80000, CRC(90b8dbb6) SHA1(fff693cb81e88bc00e048bb71406295fe7be5122) )
40864710   ROM_LOAD16_BYTE( "ds3rom.4",    0x300001, 0x80000, CRC(6281efee) SHA1(47d0f3ff973166d818877996c45dccf1d3a85fe1) )
40874711
4088   ROM_REGION( 0x800, "200e", 0 )
4712   ROM_REGION( 0x800, "mainpcb:200e", 0 )
40894713   ROM_LOAD( "hdrivair.200e",      0x000000, 0x000800, CRC(6270b696) SHA1(e302880dbca53ee725108ca4f7e45a176e85e96d) )
40904714
4091   ROM_REGION( 0x800, "210e", 0 )
4715   ROM_REGION( 0x800, "mainpcb:210e", 0 )
40924716   ROM_LOAD( "hdrivair.210e",      0x000000, 0x000800, CRC(a1c39919) SHA1(92799a7a73f545dad6684eacf7009a6c4d52d8f7) )
40934717ROM_END
40944718
r241752r241753
43314955 *
43324956 *************************************/
43334957
4334DRIVER_INIT_MEMBER(harddriv_state,harddriv)
4958void harddriv_state::init_harddriv(void)
43354959{
43364960   /* initialize the boards */
43374961   init_driver();
r241752r241753
43544978}
43554979
43564980
4357DRIVER_INIT_MEMBER(harddriv_state,harddrivc)
4981void harddriv_state::init_harddrivc(void)
43584982{
43594983   /* initialize the boards */
43604984   init_multisync(1);
r241752r241753
43775001}
43785002
43795003
4380DRIVER_INIT_MEMBER(harddriv_state,stunrun)
5004void harddriv_state::init_stunrun(void)
43815005{
43825006   /* initialize the boards */
43835007   init_multisync(0);
r241752r241753
43945018}
43955019
43965020
4397DRIVER_INIT_MEMBER(harddriv_state,racedriv)
5021void harddriv_state::init_racedriv(void)
43985022{
43995023   /* initialize the boards */
44005024   init_driver();
r241752r241753
44035027   init_driver_sound();
44045028
44055029   /* set up the slapstic */
4406   slapstic_init(machine(), 117);
5030   m_slapstic_device->slapstic_init(machine(), 117);
44075031   m_m68k_slapstic_base = m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(FUNC(harddriv_state::rd68k_slapstic_r), this), write16_delegate(FUNC(harddriv_state::rd68k_slapstic_w), this));
44085032
44095033   /* synchronization */
r241752r241753
44245048   init_driver_sound();
44255049
44265050   /* set up the slapstic */
4427   slapstic_init(machine(), 117);
5051   m_slapstic_device->slapstic_init(machine(), 117);
44285052   m_m68k_slapstic_base = m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(FUNC(harddriv_state::rd68k_slapstic_r), this), write16_delegate(FUNC(harddriv_state::rd68k_slapstic_w), this));
44295053
44305054   /* synchronization */
r241752r241753
44435067   m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(FUNC(harddriv_state::hdadsp_speedup_r), this));
44445068}
44455069
4446DRIVER_INIT_MEMBER(harddriv_state,racedrivc) { racedrivc_init_common(0xfff95cd0); }
4447DRIVER_INIT_MEMBER(harddriv_state,racedrivc1) { racedrivc_init_common(0xfff7ecd0); }
5070void harddriv_state::init_racedrivc(void) { racedrivc_init_common(0xfff95cd0); }
5071void harddriv_state::init_racedrivc1(void) { racedrivc_init_common(0xfff7ecd0); }
44485072
4449DRIVER_INIT_MEMBER(harddriv_state,racedrivb1)
5073void harddriv_state::init_racedrivc_panorama_side()
44505074{
5075   int gsp_protection = 0xfff960a0; // correct? same as strtdriv
5076   /* initialize the boards */
5077   init_multisync(1);
5078   init_adsp();
5079//   init_dsk();
5080//   init_driver_sound();
5081
5082   /* set up the slapstic */
5083   m_slapstic_device->slapstic_init(machine(), 117);
5084   m_m68k_slapstic_base = m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(FUNC(harddriv_state::rd68k_slapstic_r), this), write16_delegate(FUNC(harddriv_state::rd68k_slapstic_w), this));
5085
5086   /* synchronization */
5087//   m_rddsp32_sync[0] = m_dsp32->space(AS_PROGRAM).install_write_handler(0x613c00, 0x613c03, write32_delegate(FUNC(harddriv_state::rddsp32_sync0_w), this));
5088//   m_rddsp32_sync[1] = m_dsp32->space(AS_PROGRAM).install_write_handler(0x613e00, 0x613e03, write32_delegate(FUNC(harddriv_state::rddsp32_sync1_w), this));
5089
5090   /* set up protection hacks */
5091   m_gsp_protection = m_gsp->space(AS_PROGRAM).install_write_handler(gsp_protection, gsp_protection + 0x0f, write16_delegate(FUNC(harddriv_state::hdgsp_protection_w), this));
5092
5093   /* set up gsp speedup handler */
5094//   m_gsp_speedup_addr[0] = m_gsp->space(AS_PROGRAM).install_write_handler(0xfff76f60, 0xfff76f6f, write16_delegate(FUNC(harddriv_state::rdgsp_speedup1_w), this));
5095//   m_gsp->space(AS_PROGRAM).install_read_handler(0xfff76f60, 0xfff76f6f, read16_delegate(FUNC(harddriv_state::rdgsp_speedup1_r), this));
5096//   m_gsp_speedup_pc = 0xfff43a00;
5097
5098   /* set up adsp speedup handlers */
5099   m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(FUNC(harddriv_state::hdadsp_speedup_r), this));
5100}
5101
5102void harddriv_state::init_racedrivb1(void)
5103{
44515104   /* this unpleasantness prevents racedriv1/racedrivb1/racedrivg1 from crashing MAME during boot */
44525105   /* they clear the DSP32C's RAM and then release it from reset, causing it to run through */
44535106   /* its address space recursively executing instructions */
r241752r241753
44995152}
45005153
45015154
4502DRIVER_INIT_MEMBER(harddriv_state,steeltal)
5155void harddriv_state::init_steeltal(void)
45035156{
45045157   steeltal_init_common(0x4fc18, 0);
45055158}
45065159
4507DRIVER_INIT_MEMBER(harddriv_state,steeltal1)
5160void harddriv_state::init_steeltal1(void)
45085161{
45095162   steeltal_init_common(0x4f9c6, 0);
45105163}
45115164
4512DRIVER_INIT_MEMBER(harddriv_state,steeltalp)
5165void harddriv_state::init_steeltalp(void)
45135166{
45145167   steeltal_init_common(0x52290, 1);
45155168}
45165169
45175170
4518DRIVER_INIT_MEMBER(harddriv_state,strtdriv)
5171void harddriv_state::init_strtdriv(void)
45195172{
45205173   /* initialize the boards */
45215174   init_multisync(1);
r241752r241753
45235176   init_dsk();
45245177
45255178   /* set up the slapstic */
4526   slapstic_init(machine(), 117);
5179   m_slapstic_device->slapstic_init(machine(), 117);
45275180   m_m68k_slapstic_base = m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(FUNC(harddriv_state::rd68k_slapstic_r), this), write16_delegate(FUNC(harddriv_state::rd68k_slapstic_w), this));
45285181
45295182   m_maincpu->space(AS_PROGRAM).install_read_handler(0xa80000, 0xafffff, read16_delegate(FUNC(harddriv_state::hda68k_port1_r), this));
r241752r241753
45445197}
45455198
45465199
4547DRIVER_INIT_MEMBER(harddriv_state,hdrivair)
5200void harddriv_state::init_hdrivair(void)
45485201{
45495202   /* initialize the boards */
45505203   init_multisync(1);
r241752r241753
45695222}
45705223
45715224
4572DRIVER_INIT_MEMBER(harddriv_state,hdrivairp)
5225void harddriv_state::init_hdrivairp(void)
45735226{
45745227   /* initialize the boards */
45755228   init_multisync(1);
r241752r241753
45945247}
45955248
45965249
4597
45985250/*************************************
45995251 *
46005252 *  Game driver(s)
46015253 *
46025254 *************************************/
46035255
4604GAME( 1988, harddriv,   0,        harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 7)", 0 )
4605GAME( 1988, harddrivb,  harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 7)", 0 )
4606GAME( 1988, harddrivg,  harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, German, rev 7)", 0 )
4607GAME( 1988, harddrivj,  harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, Japan, rev 7)", 0 )
4608GAME( 1988, harddrivb6, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 6)", 0 )
4609GAME( 1988, harddrivj6, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, Japan, rev 6)", 0 )
4610GAME( 1988, harddrivb5, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 5)", 0 )
4611GAME( 1988, harddrivg4, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, German, rev 4)", 0 )
4612GAME( 1988, harddriv3,  harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 3)", 0 )
4613GAME( 1988, harddriv2,  harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 2)", 0 )
4614GAME( 1988, harddriv1,  harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 1)", 0 )
5256GAME( 1999, harddriv,   0,        harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 7)", 0 )
5257GAME( 1988, harddrivb,  harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 7)", 0 )
5258GAME( 1988, harddrivg,  harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, German, rev 7)", 0 )
5259GAME( 1988, harddrivj,  harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, Japan, rev 7)", 0 )
5260GAME( 1988, harddrivb6, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 6)", 0 )
5261GAME( 1988, harddrivj6, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, Japan, rev 6)", 0 )
5262GAME( 1988, harddrivb5, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 5)", 0 )
5263GAME( 1988, harddrivg4, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, German, rev 4)", 0 )
5264GAME( 1988, harddriv3,  harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 3)", 0 )
5265GAME( 1988, harddriv2,  harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 2)", 0 )
5266GAME( 1988, harddriv1,  harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 1)", 0 )
46155267
4616GAME( 1990, harddrivc,  harddriv, harddrivc, racedrivc, harddriv_state, harddrivc, ROT0, "Atari Games", "Hard Drivin' (compact, rev 2)", 0 )
4617GAME( 1990, harddrivcg, harddriv, harddrivc, racedrivc, harddriv_state, harddrivc, ROT0, "Atari Games", "Hard Drivin' (compact, German, rev 2)", 0 )
4618GAME( 1990, harddrivcb, harddriv, harddrivc, racedrivc, harddriv_state, harddrivc, ROT0, "Atari Games", "Hard Drivin' (compact, British, rev 2)", 0 )
4619GAME( 1990, harddrivc1, harddriv, harddrivc, racedrivc, harddriv_state, harddrivc, ROT0, "Atari Games", "Hard Drivin' (compact, rev 1)", 0 )
5268GAME( 1990, harddrivc,  harddriv, harddrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (compact, rev 2)", 0 )
5269GAME( 1990, harddrivcg, harddriv, harddrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (compact, German, rev 2)", 0 )
5270GAME( 1990, harddrivcb, harddriv, harddrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (compact, British, rev 2)", 0 )
5271GAME( 1990, harddrivc1, harddriv, harddrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (compact, rev 1)", 0 )
46205272
4621GAME( 1989, stunrun,   0,        stunrun,  stunrun, harddriv_state,  stunrun,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 6)", 0 )
4622GAME( 1989, stunrunj,  stunrun,  stunrun,  stunrun, harddriv_state,  stunrun,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 7, Japan)", 0 )
4623GAME( 1989, stunrun5,  stunrun,  stunrun,  stunrun, harddriv_state,  stunrun,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 5)", 0 )
4624GAME( 1989, stunrune,  stunrun,  stunrun,  stunrun, harddriv_state,  stunrun,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 5, Europe)", 0 )
4625GAME( 1989, stunrun4,  stunrun,  stunrun,  stunrun, harddriv_state,  stunrun,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 4)", 0 )
4626GAME( 1989, stunrun3,  stunrun,  stunrun,  stunrun, harddriv_state,  stunrun,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 3)", 0 )
4627GAME( 1989, stunrun3e, stunrun,  stunrun,  stunrun, harddriv_state,  stunrun,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 3, Europe)", 0 )
4628GAME( 1989, stunrun2,  stunrun,  stunrun,  stunrun, harddriv_state,  stunrun,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 2)", 0 )
4629GAME( 1989, stunrun2e, stunrun,  stunrun,  stunrun, harddriv_state,  stunrun,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 2, Europe)", 0 )
4630GAME( 1989, stunrun0,  stunrun,  stunrun,  stunrun, harddriv_state,  stunrun,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 0)", 0 )
4631GAME( 1989, stunrunp,  stunrun,  stunrun,  stunrun, harddriv_state,  stunrun,  ROT0, "Atari Games", "S.T.U.N. Runner (upright prototype)", 0 )
5273GAME( 1989, stunrun,   0,        stunrun_machine,  stunrun, driver_device,  0,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 6)", 0 )
5274GAME( 1989, stunrunj,  stunrun,  stunrun_machine,  stunrun, driver_device,  0,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 7, Japan)", 0 )
5275GAME( 1989, stunrun5,  stunrun,  stunrun_machine,  stunrun, driver_device,  0,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 5)", 0 )
5276GAME( 1989, stunrune,  stunrun,  stunrun_machine,  stunrun, driver_device,  0,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 5, Europe)", 0 )
5277GAME( 1989, stunrun4,  stunrun,  stunrun_machine,  stunrun, driver_device,  0,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 4)", 0 )
5278GAME( 1989, stunrun3,  stunrun,  stunrun_machine,  stunrun, driver_device,  0,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 3)", 0 )
5279GAME( 1989, stunrun3e, stunrun,  stunrun_machine,  stunrun, driver_device,  0,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 3, Europe)", 0 )
5280GAME( 1989, stunrun2,  stunrun,  stunrun_machine,  stunrun, driver_device,  0,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 2)", 0 )
5281GAME( 1989, stunrun2e, stunrun,  stunrun_machine,  stunrun, driver_device,  0,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 2, Europe)", 0 )
5282GAME( 1989, stunrun0,  stunrun,  stunrun_machine,  stunrun, driver_device,  0,  ROT0, "Atari Games", "S.T.U.N. Runner (rev 0)", 0 )
5283GAME( 1989, stunrunp,  stunrun,  stunrun_machine,  stunrun, driver_device,  0,  ROT0, "Atari Games", "S.T.U.N. Runner (upright prototype)", 0 )
46325284
4633GAME( 1990, racedriv,   0,        racedriv, racedriv, harddriv_state, racedriv,   ROT0, "Atari Games", "Race Drivin' (cockpit, rev 5)", 0 )
4634GAME( 1990, racedrivb,  racedriv, racedriv, racedriv, harddriv_state, racedriv,   ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 5)", 0 )
4635GAME( 1990, racedrivg,  racedriv, racedriv, racedriv, harddriv_state, racedriv,   ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 5)", 0 )
4636GAME( 1990, racedriv4,  racedriv, racedriv, racedriv, harddriv_state, racedriv,   ROT0, "Atari Games", "Race Drivin' (cockpit, rev 4)", 0 )
4637GAME( 1990, racedrivb4, racedriv, racedriv, racedriv, harddriv_state, racedriv,   ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 4)", 0 )
4638GAME( 1990, racedrivg4, racedriv, racedriv, racedriv, harddriv_state, racedriv,   ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 4)", 0 )
4639GAME( 1990, racedriv3,  racedriv, racedriv, racedriv, harddriv_state, racedriv,   ROT0, "Atari Games", "Race Drivin' (cockpit, rev 3)", 0 )
4640GAME( 1990, racedriv2,  racedriv, racedriv, racedriv, harddriv_state, racedriv,   ROT0, "Atari Games", "Race Drivin' (cockpit, rev 2)", 0 )
4641GAME( 1990, racedriv1,  racedriv, racedriv, racedriv, harddriv_state, racedrivb1, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 1)", 0 )
4642GAME( 1990, racedrivb1, racedriv, racedriv, racedriv, harddriv_state, racedrivb1, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 1)", 0 )
4643GAME( 1990, racedrivg1, racedriv, racedriv, racedriv, harddriv_state, racedrivb1, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 2)", 0 )
5285GAME( 1990, racedriv,   0,        racedriv_machine, racedriv, driver_device, 0,   ROT0, "Atari Games", "Race Drivin' (cockpit, rev 5)", 0 )
5286GAME( 1990, racedrivb,  racedriv, racedriv_machine, racedriv, driver_device, 0,   ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 5)", 0 )
5287GAME( 1990, racedrivg,  racedriv, racedriv_machine, racedriv, driver_device, 0,   ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 5)", 0 )
5288GAME( 1990, racedriv4,  racedriv, racedriv_machine, racedriv, driver_device, 0,   ROT0, "Atari Games", "Race Drivin' (cockpit, rev 4)", 0 )
5289GAME( 1990, racedrivb4, racedriv, racedriv_machine, racedriv, driver_device, 0,   ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 4)", 0 )
5290GAME( 1990, racedrivg4, racedriv, racedriv_machine, racedriv, driver_device, 0,   ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 4)", 0 )
5291GAME( 1990, racedriv3,  racedriv, racedriv_machine, racedriv, driver_device, 0,   ROT0, "Atari Games", "Race Drivin' (cockpit, rev 3)", 0 )
5292GAME( 1990, racedriv2,  racedriv, racedriv_machine, racedriv, driver_device, 0,   ROT0, "Atari Games", "Race Drivin' (cockpit, rev 2)", 0 )
5293GAME( 1990, racedriv1,  racedriv, racedrivb1_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 1)", 0 )
5294GAME( 1990, racedrivb1, racedriv, racedrivb1_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 1)", 0 )
5295GAME( 1990, racedrivg1, racedriv, racedrivb1_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 2)", 0 )
46445296
4645GAME( 1990, racedrivc,   racedriv, racedrivc, racedrivc, harddriv_state, racedrivc, ROT0, "Atari Games", "Race Drivin' (compact, rev 5)", 0 )
4646GAME( 1990, racedrivcb,  racedriv, racedrivc, racedrivc, harddriv_state, racedrivc, ROT0, "Atari Games", "Race Drivin' (compact, British, rev 5)", 0 )
4647GAME( 1990, racedrivcg,  racedriv, racedrivc, racedrivc, harddriv_state, racedrivc, ROT0, "Atari Games", "Race Drivin' (compact, German, rev 5)", 0 )
4648GAME( 1990, racedrivc4,  racedriv, racedrivc, racedrivc, harddriv_state, racedrivc, ROT0, "Atari Games", "Race Drivin' (compact, rev 4)", 0 )
4649GAME( 1990, racedrivcb4, racedriv, racedrivc, racedrivc, harddriv_state, racedrivc, ROT0, "Atari Games", "Race Drivin' (compact, British, rev 4)", 0 )
4650GAME( 1990, racedrivcg4, racedriv, racedrivc, racedrivc, harddriv_state, racedrivc, ROT0, "Atari Games", "Race Drivin' (compact, German, rev 4)", 0 )
4651GAME( 1990, racedrivc2,  racedriv, racedrivc, racedrivc, harddriv_state, racedrivc1,ROT0, "Atari Games", "Race Drivin' (compact, rev 2)", 0 )
4652GAME( 1990, racedrivc1,  racedriv, racedrivc, racedrivc, harddriv_state, racedrivc1,ROT0, "Atari Games", "Race Drivin' (compact, rev 1)", 0 )
5297GAME( 1990, racedrivc,   racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, rev 5)", 0 )
5298GAME( 1990, racedrivcb,  racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, British, rev 5)", 0 )
5299GAME( 1990, racedrivcg,  racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, German, rev 5)", 0 )
5300GAME( 1990, racedrivc4,  racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, rev 4)", 0 )
5301GAME( 1990, racedrivcb4, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, British, rev 4)", 0 )
5302GAME( 1990, racedrivcg4, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, German, rev 4)", 0 )
5303GAME( 1990, racedrivc2,  racedriv, racedrivc1_machine, racedrivc, driver_device, 0,ROT0, "Atari Games", "Race Drivin' (compact, rev 2)", 0 )
5304GAME( 1990, racedrivc1,  racedriv, racedrivc1_machine, racedrivc, driver_device, 0,ROT0, "Atari Games", "Race Drivin' (compact, rev 1)", 0 )
46535305
4654GAME( 1990, racedrivpan, racedriv, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' Panorama (prototype, rev 2.1)", GAME_NOT_WORKING )
5306GAMEL( 1990, racedrivpan, racedriv, racedriv_panorama_machine, racedriv_pan, driver_device, 0, ROT0, "Atari Games", "Race Drivin' Panorama (prototype, rev 2.1)", GAME_NOT_WORKING, layout_racedrivpan )
46555307
4656GAME( 1991, steeltal,  0,        steeltal, steeltal, harddriv_state, steeltal, ROT0, "Atari Games", "Steel Talons (rev 2)", 0 )
4657GAME( 1991, steeltalg, steeltal, steeltal, steeltal, harddriv_state, steeltal, ROT0, "Atari Games", "Steel Talons (German, rev 2)", 0 )
4658GAME( 1991, steeltal1, steeltal, steeltal, steeltal, harddriv_state, steeltal1,ROT0, "Atari Games", "Steel Talons (rev 1)", 0 )
4659GAME( 1991, steeltalp, steeltal, steeltal, steeltal, harddriv_state, steeltalp,ROT0, "Atari Games", "Steel Talons (prototype)", GAME_NOT_WORKING )
5308GAME( 1991, steeltal,  0,        steeltal_machine, steeltal, driver_device, 0, ROT0, "Atari Games", "Steel Talons (rev 2)", 0 )
5309GAME( 1991, steeltalg, steeltal, steeltal_machine, steeltal, driver_device, 0, ROT0, "Atari Games", "Steel Talons (German, rev 2)", 0 )
5310GAME( 1991, steeltal1, steeltal, steeltal1_machine, steeltal, driver_device, 0,ROT0, "Atari Games", "Steel Talons (rev 1)", 0 )
5311GAME( 1991, steeltalp, steeltal, steeltalp_machine, steeltal, driver_device, 0,ROT0, "Atari Games", "Steel Talons (prototype)", GAME_NOT_WORKING )
46605312
4661GAME( 1993, strtdriv, 0,        strtdriv, strtdriv, harddriv_state, strtdriv, ROT0, "Atari Games", "Street Drivin' (prototype)", 0 )
5313GAME( 1993, strtdriv, 0,        strtdriv_machine, strtdriv, driver_device, 0, ROT0, "Atari Games", "Street Drivin' (prototype)", 0 )
46625314
4663GAME( 1993, hdrivair,  0,        hdrivair, hdrivair, harddriv_state, hdrivair, ROT0, "Atari Games", "Hard Drivin's Airborne (prototype)", GAME_IMPERFECT_SOUND )
4664GAME( 1993, hdrivairp, hdrivair, hdrivair, hdrivair, harddriv_state, hdrivairp,ROT0, "Atari Games", "Hard Drivin's Airborne (prototype, early rev)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
5315GAME( 1993, hdrivair,  0,        hdrivair_machine, hdrivair, driver_device, 0, ROT0, "Atari Games", "Hard Drivin's Airborne (prototype)", GAME_IMPERFECT_SOUND )
5316GAME( 1993, hdrivairp, hdrivair, hdrivairp_machine, hdrivair, driver_device, 0,ROT0, "Atari Games", "Hard Drivin's Airborne (prototype, early rev)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
5317
5318
trunk/src/mame/drivers/kyugo.c
r241752r241753
13791379GAME( 1986, legend,    0,        legend,    legend,   kyugo_state,   srdmissn, ROT0,  "Kyugo / Sega", "Legend", GAME_SUPPORTS_SAVE ) // no copyright (maybe also a bootleg?)
13801380GAME( 1986, legendb,   legend,   legend,    legend,   kyugo_state,   srdmissn, ROT0,  "bootleg", "Legion (bootleg of Legend)", GAME_SUPPORTS_SAVE ) // no copyright
13811381GAME( 1987, airwolf,   0,        srdmissn,  airwolf,  kyugo_state,   srdmissn, ROT0,  "Kyugo", "Airwolf", GAME_SUPPORTS_SAVE )
1382GAME( 1987, airwolfa,  airwolf,  srdmissn,  airwolf,  kyugo_state,   srdmissn, ROT0,  "Kyugo (UA Theatre license)", "Airwolf (US)", GAME_SUPPORTS_SAVE )
1382GAME( 1987, airwolfa,  airwolf,  srdmissn,  airwolf,  kyugo_state,   srdmissn, ROT0,  "Kyugo (United Amusements license)", "Airwolf (US)", GAME_SUPPORTS_SAVE )
13831383GAME( 1987, skywolf,   airwolf,  srdmissn,  skywolf,  kyugo_state,   srdmissn, ROT0,  "bootleg", "Sky Wolf (set 1)", GAME_SUPPORTS_SAVE )
13841384GAME( 1987, skywolf2,  airwolf,  srdmissn,  airwolf,  kyugo_state,   srdmissn, ROT0,  "bootleg", "Sky Wolf (set 2)", GAME_SUPPORTS_SAVE )
13851385GAME( 1987, skywolf3,  airwolf,  srdmissn,  airwolf,  kyugo_state,   srdmissn, ROT0,  "bootleg", "Sky Wolf (set 3)", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/lindbergh.c
r241752r241753
221221
222222#include "emu.h"
223223#include "cpu/i386/i386.h"
224#include "machine/pcshare.h"
225#include "machine/pckeybrd.h"
226#include "video/pc_vga.h"
227224#include "machine/pci.h"
225#include "machine/i82875p.h"
226#include "machine/i6300esb.h"
227#include "machine/pci-usb.h"
228#include "machine/pci-apic.h"
229#include "machine/pci-sata.h"
230#include "machine/pci-smbus.h"
231#include "machine/i82541.h"
232#include "machine/segabb.h"
233#include "sound/pci-ac97.h"
234#include "sound/sb0400.h"
235#include "video/gf6800gt.h"
228236
229class lindbergh_state : public pcat_base_state
237class lindbergh_state : public driver_device
230238{
231239public:
232240   lindbergh_state(const machine_config &mconfig, device_type type, const char *tag);
r241752r241753
235243   virtual void machine_reset();
236244};
237245
246#if 0
238247static ADDRESS_MAP_START(lindbergh_map, AS_PROGRAM, 32, lindbergh_state)
239248   AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
240   AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff)
241   AM_RANGE(0x000c0000, 0x000cffff) AM_ROM AM_REGION("vid_bios", 0)
249                            //   AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff)
250                            //   AM_RANGE(0x000c0000, 0x000cffff) AM_ROM AM_REGION("vid_bios", 0)
242251//  0xd0000 - 0xdffff tested, wants 0x414d ("AM") in there
243252   AM_RANGE(0x000f0000, 0x000fffff) AM_ROM AM_REGION("mb_bios", 0xf0000)
244   AM_RANGE(0xfd000000, 0xfd3fffff) AM_ROM AM_REGION("jvs_bios", 0)    /* Hack to see the data */
253//   AM_RANGE(0xfd000000, 0xfd3fffff) AM_ROM AM_REGION("jvs_bios", 0)    /* Hack to see the data */
245254   AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("mb_bios", 0)     /* System BIOS */
246255ADDRESS_MAP_END
247256
248257static ADDRESS_MAP_START(lindbergh_io, AS_IO, 32, lindbergh_state)
249   AM_IMPORT_FROM(pcat32_io_common)
258//   AM_IMPORT_FROM(pcat32_io_common)
250259
251   AM_RANGE(0x00e8, 0x00ef) AM_NOP
252   AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
260//   AM_RANGE(0x00e8, 0x00ef) AM_NOP
261//   AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
253262ADDRESS_MAP_END
263#endif
254264
255lindbergh_state::lindbergh_state(const machine_config &mconfig, device_type type, const char *tag) : pcat_base_state(mconfig, type, tag)
265lindbergh_state::lindbergh_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag)
256266{
257267}
258268
r241752r241753
267277static MACHINE_CONFIG_START(lindbergh, lindbergh_state)
268278//  MCFG_CPU_ADD("maincpu", PENTIUM, 2800000000U) /* Actually Celeron D at 2,8 GHz */
269279   MCFG_CPU_ADD("maincpu", PENTIUM4, 28000000U*5) /* Actually Celeron D at 2,8 GHz */
270   MCFG_CPU_PROGRAM_MAP(lindbergh_map)
271   MCFG_CPU_IO_MAP(lindbergh_io)
272   MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
280//   MCFG_CPU_PROGRAM_MAP(lindbergh_map)
281//   MCFG_CPU_IO_MAP(lindbergh_io)
282//   MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
273283
274   MCFG_FRAGMENT_ADD( pcat_common )
275   MCFG_FRAGMENT_ADD( pcvideo_vga )
284//   MCFG_FRAGMENT_ADD( pcat_common )
285//   MCFG_FRAGMENT_ADD( pcvideo_vga )
276286
277   MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
287//   MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
288
289   MCFG_PCI_ROOT_ADD(                ":pci")
290   MCFG_I82875P_HOST_ADD(            ":pci:00.0",                        0x103382c0, ":maincpu", 512*1024*1024)
291   MCFG_I82875P_AGP_ADD(             ":pci:01.0")
292   MCFG_GEFORCE_6800GT_ADD(          ":pci:01.0:00.0",                   0x10de0204)
293   MCFG_PCI_BRIDGE_ADD(              ":pci:1c.0",      0x808625ae, 0x02)
294   MCFG_I82541PI_ADD(                ":pci:1c.0:00.0",                   0x103382c0)
295   MCFG_USB_UHCI_ADD(                ":pci:1d.0",      0x808625a9, 0x02, 0x103382c0)
296   MCFG_USB_UHCI_ADD(                ":pci:1d.1",      0x808625aa, 0x02, 0x103382c0)
297   MCFG_I6300ESB_WATCHDOG_ADD(       ":pci:1d.4",                        0x103382c0)
298   MCFG_APIC_ADD(                    ":pci:1d.5",      0x808625ac, 0x02, 0x103382c0)
299   MCFG_USB_EHCI_ADD(                ":pci:1d.7",      0x808625ad, 0x02, 0x103382c0)
300   MCFG_PCI_BRIDGE_ADD(              ":pci:1e.0",      0x8086244e, 0x0a)
301   MCFG_SB0400_ADD(                  ":pci:1e.0:02.0",                   0x11021101)
302   MCFG_SEGA_LINDBERGH_BASEBOARD_ADD(":pci:1e.0:03.0")
303   MCFG_I6300ESB_LPC_ADD(            ":pci:1f.0")
304   MCFG_SATA_ADD(                    ":pci:1f.2",      0x808625a3, 0x02, 0x103382c0)
305   MCFG_SMBUS_ADD(                   ":pci:1f.3",      0x808625a4, 0x02, 0x103382c0)
306   MCFG_AC97_ADD(                    ":pci:1f.5",      0x808625a6, 0x02, 0x103382c0)
278307MACHINE_CONFIG_END
279308
280309ROM_START(lindbios)
281   ROM_REGION32_LE(0x100000, "mb_bios", 0) // location 3j7
310   ROM_REGION32_LE(0x100000, ":pci:1f.0", 0) // PC bios, location 3j7
282311   ROM_SYSTEM_BIOS(0, "bios0", "6.0.0010 alternate version")
283312   ROMX_LOAD("6.0.0010a.bin", 0x00000, 0x100000, CRC(10dd9b76) SHA1(1fdf1f921bc395846a7c3180fbdbc4ca287a9670), ROM_BIOS(1) )
284313   ROM_SYSTEM_BIOS(1, "bios1", "6.0.0009")
r241752r241753
287316   ROMX_LOAD("6.0.0010.bin", 0x00000, 0x100000, CRC(ea2bf888) SHA1(c9c5b6f0d4f4f36620939b15dd2f128a74347e37), ROM_BIOS(3) )
288317
289318
290   ROM_REGION(0x400000, "jvs_bios", 0)
319   ROM_REGION(0x400000, ":pci:1e.0:03.0", 0) // Baseboard MPC firmware
291320   ROM_LOAD("fpr-24370b.ic6", 0x000000, 0x400000, CRC(c3b021a4) SHA1(1b6938a50fe0e4ae813864649eb103838c399ac0))
292321
293   ROM_REGION(0x10000, "vid_bios", 0)
322   ROM_REGION32_LE(0x10000, ":pci:01.0:00.0", 0) // Geforce bios extension (custom or standard?)
294323   ROM_LOAD("vid_bios.u504", 0x00000, 0x10000, CRC(f78d14d7) SHA1(f129787e487984edd23bf344f2e9500c85052275))
295324ROM_END
296325
297GAME(1999, lindbios, 0, lindbergh, at_keyboard, driver_device, 0, ROT0, "Sega Lindbergh", "Sega Lindbergh Bios", GAME_IS_SKELETON)
326GAME(1999, lindbios, 0, lindbergh, 0, driver_device, 0, ROT0, "Sega Lindbergh", "Sega Lindbergh Bios", GAME_IS_SKELETON)
trunk/src/mame/drivers/magictg.c
r241752r241753
118118#include "cpu/adsp2100/adsp2100.h"
119119#include "sound/dmadac.h"
120120#include "video/voodoo.h"
121#include "machine/pci.h"
121#include "machine/lpci.h"
122122
123123
124124/* TODO: Two 3Dfx Voodoo chipsets are used in SLI configuration */
trunk/src/mame/drivers/maygay1b.c
r241752r241753
9696{
9797   m_vfd->reset(); // reset display1
9898   m1_stepper_reset();
99   m_Vmm=false;
99100}
100101
101102///////////////////////////////////////////////////////////////////////////
r241752r241753
111112WRITE_LINE_MEMBER(maygay1b_state::duart_irq_handler)
112113{
113114   m_maincpu->set_input_line(M6809_IRQ_LINE,  state?ASSERT_LINE:CLEAR_LINE);
114   LOG(("6809 irq%d \n",state));
115115}
116116
117117// FIRQ, related to the sample playback?
r241752r241753
122122   {
123123      cpu0_firq(1);
124124   }
125   return nar;
125   return 0xff;
126126}
127127
128128READ8_MEMBER( maygay1b_state::m1_firq_clr_r )
129129{
130130   cpu0_firq(0);
131   return 0;
131   return 0xff;
132132}
133133
134134// NMI is periodic? or triggered by a write?
135135TIMER_DEVICE_CALLBACK_MEMBER( maygay1b_state::maygay1b_nmitimer_callback )
136136{
137//disabling for now
138   if (m_NMIENABLE)
137   m_Vmm = !m_Vmm;
138   cpu0_nmi();
139}
140
141void maygay1b_state::cpu0_nmi()
142{
143   if (m_Vmm && m_NMIENABLE)
139144   {
140      LOG(("6809 nmi\n"));
141      m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
142      m_NMIENABLE=0;
145      m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
143146   }
144
147   else
148   {
149      m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
150   }
145151}
146152
147/*
148void maygay1b_state::cpu0_nmi(int data)
149{
150   m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
151}
152*/
153153/***************************************************************************
154154    6821 PIA
155155***************************************************************************/
r241752r241753
286286   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("68")
287287   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("69")
288288   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("70")
289   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("72")
289   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("RESET")
290290   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("73")
291291
292292INPUT_PORTS_END
r241752r241753
376376      m_ALARMEN = (data & 1);
377377      break;
378378      case 2: // Enable
379        if ( m_NMIENABLE == 0 && ( data & 1 ) )
380379      {
381         m_NMIENABLE = (data & 1);
382         //cpu0_nmi(1);
380            if ( m_NMIENABLE == 0 && ( data & 1 ))
381         {
382            m_NMIENABLE = (data & 1);
383            cpu0_nmi();
384         }
385         m_NMIENABLE = (data & 1);     
383386      }
384387      break;
385388      case 3: // RTS
r241752r241753
395398      case 6: // Srsel
396399      // this is the ROM banking?
397400      printf("rom bank %02x\n",data);
398      m_SRSEL = (data & 1);
401      m_bank1->set_entry(data & 1);
399402      break;
400403   }
401404}
r241752r241753
410413READ8_MEMBER(maygay1b_state::latch_st_hi)
411414{
412415   m_msm6376->st_w(1);
413   return 0;
416   return 0xff;
414417}
415418
416419READ8_MEMBER(maygay1b_state::latch_st_lo)
417420{
418421   m_msm6376->st_w(0);
419   return 0;
422   return 0xff;
420423}
421424
422425READ8_MEMBER(maygay1b_state::m1_meter_r)
r241752r241753
469472
470473   AM_RANGE(0x2420, 0x2421) AM_WRITE(latch_ch2_w ) // oki
471474
472   AM_RANGE(0x2800, 0xffff) AM_ROM
475   AM_RANGE(0x2800, 0xdfff) AM_ROM
476   AM_RANGE(0xe000, 0xffff) AM_ROMBANK("bank1")    /* 64k  paged ROM (4 pages)  */
477
473478ADDRESS_MAP_END
474479
480/*************************************************
481 *
482 *  NEC uPD7759 handling (used as OKI replacement)
483 *
484 *************************************************/
485READ8_MEMBER(maygay1b_state::m1_firq_nec_r)
486{
487   int busy = m_upd7759->busy_r();
488   if (!busy)
489   {
490      cpu0_firq(1);
491   }
492   return 0xff;
493}
475494
495READ8_MEMBER(maygay1b_state::nec_reset_r)
496{
497   m_upd7759->reset_w(0);
498   m_upd7759->reset_w(1);   
499   return 0xff;
500}
501
502WRITE8_MEMBER(maygay1b_state::nec_bank0_w)
503{
504   m_upd7759->set_bank_base(0x00000);
505   m_upd7759->port_w(space, 0, data);
506   m_upd7759->start_w(0);
507   m_upd7759->start_w(1);   
508}
509
510WRITE8_MEMBER(maygay1b_state::nec_bank1_w)
511{
512   m_upd7759->set_bank_base(0x20000);
513   m_upd7759->port_w(space, 0, data);
514   m_upd7759->start_w(0);
515   m_upd7759->start_w(1);   
516}
517
518static ADDRESS_MAP_START( m1_nec_memmap, AS_PROGRAM, 8, maygay1b_state )
519   AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram")
520
521   AM_RANGE(0x2000, 0x2000) AM_WRITE(reel12_w)
522   AM_RANGE(0x2010, 0x2010) AM_WRITE(reel34_w)
523   AM_RANGE(0x2020, 0x2020) AM_WRITE(reel56_w)
524
525   // there is actually an 8279 and an 8051 (which I guess is the MCU?).
526   AM_RANGE(0x2030, 0x2030) AM_DEVREADWRITE("i8279", i8279_device, data_r, data_w )
527   AM_RANGE(0x2031, 0x2031) AM_DEVREADWRITE("i8279", i8279_device, status_r, cmd_w)
528
529   //8051
530   AM_RANGE(0x2040, 0x2040) AM_DEVREADWRITE("i8279_2", i8279_device, data_r, data_w )
531   AM_RANGE(0x2041, 0x2041) AM_DEVREADWRITE("i8279_2", i8279_device, status_r, cmd_w)
532//  AM_RANGE(0x2050, 0x2050)// SCAN on M1B
533
534   AM_RANGE(0x2070, 0x207f) AM_DEVREADWRITE("duart68681", mc68681_device, read, write )
535
536   AM_RANGE(0x2090, 0x2091) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
537   AM_RANGE(0x20B0, 0x20B0) AM_READ(m1_meter_r)
538
539   AM_RANGE(0x20A0, 0x20A3) AM_DEVWRITE("pia", pia6821_device, write)
540   AM_RANGE(0x20A0, 0x20A3) AM_DEVREAD("pia", pia6821_device, read)
541
542   AM_RANGE(0x20C0, 0x20C7) AM_WRITE(m1_latch_w)
543
544   AM_RANGE(0x2400, 0x2401) AM_DEVWRITE("ymsnd", ym2413_device, write)
545   AM_RANGE(0x2404, 0x2405) AM_WRITE(nec_bank0_w)
546   AM_RANGE(0x2406, 0x2407) AM_WRITE(nec_bank1_w)
547
548   AM_RANGE(0x2408, 0x2409) AM_READ(nec_reset_r)
549
550   AM_RANGE(0x240c, 0x240d) AM_READ(m1_firq_clr_r)
551
552   AM_RANGE(0x240e, 0x240f) AM_READ(m1_firq_nec_r)
553   
554   AM_RANGE(0x2412, 0x2412) AM_READ(m1_firq_trg_r) // firq, sample playback?
555
556   AM_RANGE(0x2420, 0x2421) AM_WRITE(latch_ch2_w ) // oki
557
558   AM_RANGE(0x2800, 0xdfff) AM_ROM
559   AM_RANGE(0xe000, 0xffff) AM_ROMBANK("bank1")    /* 64k  paged ROM (4 pages)  */
560
561ADDRESS_MAP_END
562
563
476564/*************************************
477565 *
478566 *  8279 display/keyboard driver
r241752r241753
530618
531619// machine driver for maygay m1 board /////////////////////////////////
532620
533
534
535621MACHINE_CONFIG_START( maygay_m1, maygay1b_state )
536622
537623   MCFG_CPU_ADD("maincpu", M6809, M1_MASTER_CLOCK/2)
r241752r241753
546632   MCFG_PIA_WRITEPB_HANDLER(WRITE8(maygay1b_state, m1_pia_portb_w))
547633
548634   MCFG_S16LF01_ADD("vfd",0)
549   MCFG_SPEAKER_STANDARD_MONO("mono")
635   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
550636   MCFG_SOUND_ADD("aysnd", YM2149, M1_MASTER_CLOCK)
551637   MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(maygay1b_state, m1_meter_w))
552638   MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(maygay1b_state, m1_lockout_w))
553   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
639   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
640   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
554641
555642   MCFG_SOUND_ADD("ymsnd", YM2413, M1_MASTER_CLOCK/4)
643   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
644   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
556645
557   MCFG_SOUND_ADD("msm6376", OKIM6376, M1_MASTER_CLOCK/4) //?
558   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
646   MCFG_SOUND_ADD("msm6376", OKIM6376, 102400) //? Seems to work well with samples, but unconfirmed
647   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
648   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
559649
560650   MCFG_TIMER_DRIVER_ADD_PERIODIC("nmitimer", maygay1b_state, maygay1b_nmitimer_callback, attotime::from_hz(75)) // freq?
561651   MCFG_DEVICE_ADD("i8279", I8279, M1_MASTER_CLOCK/4)    // unknown clock
r241752r241753
571661MACHINE_CONFIG_END
572662
573663
664MACHINE_CONFIG_DERIVED( maygay_m1_nec, maygay_m1 )
665   MCFG_CPU_MODIFY("maincpu")
666   MCFG_CPU_PROGRAM_MAP(m1_nec_memmap)
574667
668   MCFG_DEVICE_REMOVE("msm6376")
669   
670   MCFG_SOUND_ADD("upd", UPD7759, UPD7759_STANDARD_CLOCK)
671   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
672   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
673MACHINE_CONFIG_END
575674
576
577
578
579
580675WRITE8_MEMBER(maygay1b_state::m1ab_no_oki_w)
581676{
582677   popmessage("write to OKI, but no OKI rom");
583678}
584679
585DRIVER_INIT_MEMBER(maygay1b_state,m1)
680DRIVER_INIT_MEMBER(maygay1b_state,m1common)
586681{
587   //AM_RANGE(0x2420, 0x2421) AM_WRITE(latch_ch2_w ) // oki
588   // if there is no OKI region disable writes here, the rom might be missing, so alert user
682   //Initialise paging for non-extended ROM space
683   UINT8 *rom = memregion("maincpu")->base();
684   membank("bank1")->configure_entries(0, 1, &rom[0x0e000], 0x10000);
685   membank("bank1")->set_entry(0);
589686
590   UINT8 *okirom = memregion( "msm6376" )->base();
591
592   if (!okirom) {
593      m_maincpu->space(AS_PROGRAM).install_write_handler(0x2420, 0x2421, write8_delegate(FUNC(maygay1b_state::m1ab_no_oki_w), this));
594   }
595687   // print out the rom id / header info to give us some hints
596688   // note this isn't always correct, alley cat has 'Calpsyo' still in the ident string?
597689   {
r241752r241753
618710      }
619711   }
620712}
713
714
715DRIVER_INIT_MEMBER(maygay1b_state,m1nec)
716{
717   DRIVER_INIT_CALL(m1common);
718}
719
720DRIVER_INIT_MEMBER(maygay1b_state,m1)
721{
722   DRIVER_INIT_CALL(m1common);
723
724   //AM_RANGE(0x2420, 0x2421) AM_WRITE(latch_ch2_w ) // oki
725   // if there is no OKI region disable writes here, the rom might be missing, so alert user
726
727   UINT8 *okirom = memregion( "msm6376" )->base();
728
729   if (!okirom) {
730      m_maincpu->space(AS_PROGRAM).install_write_handler(0x2420, 0x2421, write8_delegate(FUNC(maygay1b_state::m1ab_no_oki_w), this));
731   }
732}
trunk/src/mame/drivers/maygay1bsw.c
r241752r241753
4949
5050// uPD7759 rom?
5151#define m1_bargn_sound \
52   ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00  ) \
52   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
5353   ROM_LOAD( "bgsnd", 0x0000, 0x020000, CRC(abe7c01d) SHA1(21caadcd149772dfd79a9d30ebc1d8da91ff36f4) )
5454ROM_START( m1bargn )    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  )    ROM_LOAD( "sa4-077.bin", 0x0000, 0x010000, CRC(7ae8ea12) SHA1(537f828bdaba3c63abb83b5417a4ec115834a48a) )   m1_bargn_sound ROM_END_M1A_MCU
5555ROM_START( m1bargnp )   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  )    ROM_LOAD( "sa4-078.bin", 0x0000, 0x010000, CRC(dcc0b83e) SHA1(a85e3f60decb7dbc2de77b93dd8a79ff137d85b7) )   m1_bargn_sound ROM_END_M1A_MCU
5656ROM_START( m1bargnc )   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  )    ROM_LOAD( "sa2-141", 0x0000, 0x010000, CRC(9dcaaaa9) SHA1(6cd015990036c2e20e4f4a2e19a363e6c565b473) )   m1_bargn_sound ROM_END_M1A_MCU
5757ROM_START( m1bargncp )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  )    ROM_LOAD( "sa2-142", 0x0000, 0x010000, CRC(2972747a) SHA1(6854a3cd9c6a834a24a0d8c763fa2a18c1d26a10) )   m1_bargn_sound ROM_END_M1A_MCU
5858
59GAME( 1990, m1bargn     ,0          ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Bar-gain (Maygay) v7.1 (M1A/B)",GAME_FLAGS )
60GAME( 1990, m1bargnp    ,m1bargn    ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Bar-gain (Maygay) v7.1 (Protocol) (M1A/B)",GAME_FLAGS )
61GAME( 1990, m1bargnc    ,m1bargn    ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Casino Bar-gain (Maygay) v5.1 (M1A/B)",GAME_FLAGS )
62GAME( 1990, m1bargncp   ,m1bargn    ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Casino Bar-gain (Maygay) v5.1 (Protocol)(M1A/B)",GAME_FLAGS )
59GAME( 1990, m1bargn     ,0          ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Bar-gain (Maygay) v7.1 (M1A/B)",GAME_FLAGS )
60GAME( 1990, m1bargnp    ,m1bargn    ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Bar-gain (Maygay) v7.1 (Protocol) (M1A/B)",GAME_FLAGS )
61GAME( 1990, m1bargnc    ,m1bargn    ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Casino Bar-gain (Maygay) v5.1 (M1A/B)",GAME_FLAGS )
62GAME( 1990, m1bargncp   ,m1bargn    ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Casino Bar-gain (Maygay) v5.1 (Protocol)(M1A/B)",GAME_FLAGS )
6363
6464/*******************************************************************************************************************************************************************************************************
6565  Bounty Hunter Club
r241752r241753
6767
6868// uPD7759 rom?
6969#define m1_bounty_sound \
70   ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00  ) \
70   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
7171   ROM_LOAD( "bgsnd", 0x0000, 0x020000, CRC(abe7c01d) SHA1(21caadcd149772dfd79a9d30ebc1d8da91ff36f4) )
7272ROM_START( m1bountc )   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  )    ROM_LOAD( "sc4-107.bin", 0x0000, 0x010000, CRC(0bdf41b3) SHA1(ce3564433a708ba50ca4099a26b1f75cf3cec947) ) m1_bounty_sound ROM_END_M1A_MCU //1.3
7373ROM_START( m1bountcp )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  )    ROM_LOAD( "sc4-108.bin", 0x0000, 0x010000, CRC(adf7139f) SHA1(5b2bd367df31e3c76d9fac2a71a90800d95c4719) ) m1_bounty_sound ROM_END_M1A_MCU //1.3P
7474
75GAME( 199?, m1bountc    ,0          ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Bounty Hunter Club (Maygay) v1.3 (M1A/B)",GAME_FLAGS )
76GAME( 199?, m1bountcp   ,m1bountc   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Bounty Hunter Club (Maygay) v1.3 (Protocol) (M1A/B)",GAME_FLAGS )
75GAME( 199?, m1bountc    ,0          ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Bounty Hunter Club (Maygay) v1.3 (M1A/B)",GAME_FLAGS )
76GAME( 199?, m1bountcp   ,m1bountc   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Bounty Hunter Club (Maygay) v1.3 (Protocol) (M1A/B)",GAME_FLAGS )
7777
7878/*******************************************************************************************************************************************************************************************************
7979  Criss Cross Club (Dutch)
r241752r241753
8181
8282// uPD7759 rom?
8383#define m1_criss_sound \
84   ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00  ) \
84   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
8585   ROM_LOAD( "ccsound.bin", 0x0000, 0x040000, CRC(8742981e) SHA1(1ba33c59ec5f878ebab111a77551213aad4b0993) )
8686ROM_START( m1criss )    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  )    ROM_LOAD( "sdt-050", 0x0000, 0x010000, CRC(422c5c6d) SHA1(b3a86f7482f0376b93899d28d4e6c610200fcd3a) ) m1_criss_sound ROM_END_M1A_MCU
8787
88GAME( 199?, m1criss     ,0          ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Criss Cross Club (Maygay) (Dutch) (M1A/B)",GAME_FLAGS )
88GAME( 199?, m1criss     ,0          ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Criss Cross Club (Maygay) (Dutch) (M1A/B)",GAME_FLAGS )
8989
9090/*******************************************************************************************************************************************************************************************************
9191  Diamond Hearts
r241752r241753
343343
344344// uPD7759 rom?
345345#define m1_dxmono_sound\
346   ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00  )\
346   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  )\
347347   ROM_LOAD( "delmonopolysound.bin", 0x0000, 0x040000, CRC(8742981e) SHA1(1ba33c59ec5f878ebab111a77551213aad4b0993) )
348348ROM_START( m1dxmono )   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  )    ROM_LOAD( "sa6-018", 0x0000, 0x010000, CRC(134e772a) SHA1(e85a90ed475cd3b38e9174146b15c66c958116e5) )   m1_dxmono_sound ROM_END_M1A_MCU //M5.1 (code 48)
349349ROM_START( m1dxmonop )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  )    ROM_LOAD( "sa6-019", 0x0000, 0x010000, CRC(fba6eacc) SHA1(80576722f5862c1f27eb6e6d43d9a0a665e611c6) )   m1_dxmono_sound ROM_END_M1A_MCU //M5.1 Protocol (code 48)
r241752r241753
366366ROM_START( m1dxmono11m )    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  )    ROM_LOAD( "sa3-007", 0x0000, 0x010000, CRC(303bea68) SHA1(987f015818a1d97299af824c0ab58c9c6f8a2acb) )   m1_dxmono_sound ROM_END_M1A_MCU //sa3007 M 1.1 92
367367ROM_START( m1dxmono11mb )   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  )    ROM_LOAD( "sa2-356", 0x0000, 0x010000, CRC(3d4394e9) SHA1(43da2007f1408d45764f0eba8594c800ad7ffc60) )   m1_dxmono_sound ROM_END_M1A_MCU //m1.1 sa2356
368368
369GAME( 1992, m1dxmono    ,0          ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (M1A/B)",GAME_FLAGS )
370GAME( 1992, m1dxmonop   ,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Protocol) (M1A/B)",GAME_FLAGS )
371GAME( 1992, m1dxmono12n ,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (Newer) (M1A/B)",GAME_FLAGS )
372GAME( 1992, m1dxmono31b ,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (BwB set) (M1A/B)",GAME_FLAGS )
373GAME( 1992, m1dxmono31p ,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (Protocol) (M1A/B)",GAME_FLAGS )
374GAME( 1992, m1dxmono31h ,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (Hack) (M1A/B)",GAME_FLAGS )
375GAME( 1992, m1dxmono31h2,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (Alternate Hack) (M1A/B)",GAME_FLAGS )
376GAME( 1992, m1dxmono51  ,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Older) (M1A/B)",GAME_FLAGS )
377GAME( 1992, m1dxmono12  ,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (M1A/B)",GAME_FLAGS )
378GAME( 1992, m1dxmono12p ,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (Protocol) (M1A/B)",GAME_FLAGS )
379GAME( 1992, m1dxmono12a ,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (Alternate) (M1A/B)",GAME_FLAGS )
380GAME( 1992, m1dxmono21p ,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v2.1 (Protocol) (M1A/B)",GAME_FLAGS )
381GAME( 1992, m1dxmono11p ,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Protocol) (M1A/B)",GAME_FLAGS )
382GAME( 1992, m1dxmono11  ,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (M1A/B)",GAME_FLAGS )
383GAME( 1992, m1dxmono51o ,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Older) (M1A/B) (alt?)",GAME_FLAGS )
384GAME( 1992, m1dxmono51p ,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Older) (Protocol) (M1A/B)",GAME_FLAGS )
385GAME( 1992, m1dxmono30h ,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.0 (Hack) (M1A/B)",GAME_FLAGS )
386GAME( 1992, m1dxmono11o ,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Older) (M1A/B)",GAME_FLAGS )
387GAME( 1992, m1dxmono11m ,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Code M) (M1A/B)",GAME_FLAGS )
388GAME( 1992, m1dxmono11mb,m1dxmono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Code M, Alternate) (M1A/B)",GAME_FLAGS )
369GAME( 1992, m1dxmono    ,0          ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (M1A/B)",GAME_FLAGS )
370GAME( 1992, m1dxmonop   ,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Protocol) (M1A/B)",GAME_FLAGS )
371GAME( 1992, m1dxmono12n ,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (Newer) (M1A/B)",GAME_FLAGS )
372GAME( 1992, m1dxmono31b ,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (BwB set) (M1A/B)",GAME_FLAGS )
373GAME( 1992, m1dxmono31p ,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (Protocol) (M1A/B)",GAME_FLAGS )
374GAME( 1992, m1dxmono31h ,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (Hack) (M1A/B)",GAME_FLAGS )
375GAME( 1992, m1dxmono31h2,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (Alternate Hack) (M1A/B)",GAME_FLAGS )
376GAME( 1992, m1dxmono51  ,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Older) (M1A/B)",GAME_FLAGS )
377GAME( 1992, m1dxmono12  ,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (M1A/B)",GAME_FLAGS )
378GAME( 1992, m1dxmono12p ,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (Protocol) (M1A/B)",GAME_FLAGS )
379GAME( 1992, m1dxmono12a ,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (Alternate) (M1A/B)",GAME_FLAGS )
380GAME( 1992, m1dxmono21p ,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v2.1 (Protocol) (M1A/B)",GAME_FLAGS )
381GAME( 1992, m1dxmono11p ,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Protocol) (M1A/B)",GAME_FLAGS )
382GAME( 1992, m1dxmono11  ,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (M1A/B)",GAME_FLAGS )
383GAME( 1992, m1dxmono51o ,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Older) (M1A/B) (alt?)",GAME_FLAGS )
384GAME( 1992, m1dxmono51p ,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Older) (Protocol) (M1A/B)",GAME_FLAGS )
385GAME( 1992, m1dxmono30h ,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.0 (Hack) (M1A/B)",GAME_FLAGS )
386GAME( 1992, m1dxmono11o ,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Older) (M1A/B)",GAME_FLAGS )
387GAME( 1992, m1dxmono11m ,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Code M) (M1A/B)",GAME_FLAGS )
388GAME( 1992, m1dxmono11mb,m1dxmono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Code M, Alternate) (M1A/B)",GAME_FLAGS )
389389
390390/*******************************************************************************************************************************************************************************************************
391391  Cluedo
r241752r241753
415415ROM_START( m1cluedob2p )    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  )    ROM_LOAD( "sa5-303", 0x0000, 0x010000, CRC(e0eb84c2) SHA1(3c2db9d41b9c561a483293f2258b654547d937d4) )   m1_cluedo_sound ROM_END_M1A_MCU //pbu 2.1 BwB 1995
416416ROM_START( m1cluedob1 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  )    ROM_LOAD( "sa5-326", 0x0000, 0x010000, CRC(0ace83db) SHA1(3387ac8583bc4ba7933abe001bc64a2b06a5451f) )   m1_cluedo_sound ROM_END_M1A_MCU //nbu 1.1 BwB 1995 (newer) cl_x6___.2o1
417417ROM_START( m1cluedob1p )    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  )    ROM_LOAD( "sa5-327", 0x0000, 0x010000, CRC(e2261e3d) SHA1(50be56d1c28a31fcdb12a83c230a983bd6c60f62) )   m1_cluedo_sound ROM_END_M1A_MCU //pbu 1.1 BwB 1995 (newer)cl_x6_d_.2o1
418#ifdef MISSING_GAME  // these being disabled is likely a mistake
419418ROM_START( m1cluedobi2 )    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  )    ROM_LOAD( "sa5-328", 0x0000, 0x010000, CRC(7aa2e6bd) SHA1(82752cd0e89d487016ccb50e55d2d7e11e5bb0ad) )   m1_cluedo_sound ROM_END_M1A_MCU //nbu 2.1 BwB 1995 (IoM) clix6___.2o1
420419ROM_START( m1cluedobi2p )   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  )    ROM_LOAD( "sa5-329", 0x0000, 0x010000, CRC(924a7b5b) SHA1(102fba24040c9f968f80747b830fda05444c69aa) )   m1_cluedo_sound ROM_END_M1A_MCU //pbu 2.1 BwB 1995 (IoM) clix6_d_.2o1
421#endif
422420ROM_START( m1cluedob2h )    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  )    ROM_LOAD( "clu5p8", 0x0000, 0x010000, CRC(fb6c6527) SHA1(e42683512c537d653593c67a8d238069ac2f2d0e) )    m1_cluedo_sound ROM_END_M1A_MCU //nbu 2.0 - nop'd copyright string
423421ROM_START( m1cluedob1h )    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  )    ROM_LOAD( "clu55", 0x0000, 0x010000, CRC(c852a989) SHA1(ff79e65f80d4230a0e0f9e87a9dcc544a5197a1a) ) m1_cluedo_sound ROM_END_M1A_MCU //nbu 1.0 - nop'd copyright string
424422
r241752r241753
433431GAME( 1995, m1cluedob2  ,m1cluedo   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v2.1 (M1A/B)",GAME_FLAGS )
434432GAME( 1995, m1cluedob2p ,m1cluedo   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v2.1 (Protocol) (M1A/B)",GAME_FLAGS )
435433GAME( 1995, m1cluedob2h ,m1cluedo   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v2.1 (Hack?) (M1A/B)",GAME_FLAGS )
434GAME( 1995, m1cluedobi2 ,m1cluedo   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v2.1 (Isle of Man) (M1A/B)",GAME_FLAGS )
435GAME( 1995, m1cluedobi2p,m1cluedo   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v2.1 (Isle of Man) (Protocol) (M1A/B)",GAME_FLAGS )
436436GAME( 1995, m1cluedob1  ,m1cluedo   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v1.1 (M1A/B)",GAME_FLAGS )
437437GAME( 1995, m1cluedob1p ,m1cluedo   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v1.1 (Protocol) (M1A/B)",GAME_FLAGS )
438438GAME( 1995, m1cluedob1h ,m1cluedo   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v1.1 (Hack?) (M1A/B)",GAME_FLAGS )
r241752r241753
11461146
11471147// uPD7759 rom?
11481148#define m1_mono_sound \
1149   ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00  ) \
1149   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
11501150   ROM_LOAD( "monopolysnd.bin", 0x0000, 0x020000, CRC(f93ef281) SHA1(b2c2bf361c44499a13731d494af66d2aa45ccebd) )
11511151ROM_START( m1mono )   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("maygaymonopoly delx 5p-10p 6.bin", 0x0000, 0x010000, CRC(ed3c5997) SHA1(5a1e82894bd71073e08136a9071528833b529f5e) )         m1_mono_sound ROM_END_M1A_MCU
1152GAME( 199?, m1mono   ,0        ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
1152GAME( 199?, m1mono   ,0        ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
11531153ROM_START( m1monoa )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mon deluxe old 6 5_10.bin", 0x0000, 0x010000, CRC(f6ff2c55) SHA1(dec0be9c5584285b47943dd7d8751acd5e244daf) )                m1_mono_sound ROM_END_M1A_MCU
1154GAME( 199?, m1monoa  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
1154GAME( 199?, m1monoa  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
11551155ROM_START( m1monoc )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mon5p5cbin", 0x0000, 0x010000, CRC(5589d97d) SHA1(d8776200d5c85fc1946ab4a4d0f7b7fb721a08f0) )                               m1_mono_sound ROM_END_M1A_MCU
1156GAME( 199?, m1monoc  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
1156GAME( 199?, m1monoc  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
11571157ROM_START( m1monod )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mono10", 0x0000, 0x010000, CRC(25b617b9) SHA1(adffbae086c83c1d9342e0fdded0ec8651f4efdd) )                                   m1_mono_sound ROM_END_M1A_MCU
1158GAME( 199?, m1monod  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
1158GAME( 199?, m1monod  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
11591159ROM_START( m1monoe )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mono10p", 0x0000, 0x010000, CRC(e7eead08) SHA1(94a512ff43487c4294afa3f280759ae86489ccbf) )                                  m1_mono_sound ROM_END_M1A_MCU
1160GAME( 199?, m1monoe  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 6)",GAME_FLAGS )
1160GAME( 199?, m1monoe  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 6)",GAME_FLAGS )
11611161ROM_START( m1monof )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mono8", 0x0000, 0x010000, CRC(e19cf85b) SHA1(24bfa0086bda37f9ca9b5cf4cdc7d7873c305e76) )                                    m1_mono_sound ROM_END_M1A_MCU
1162GAME( 199?, m1monof  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 7)",GAME_FLAGS )
1162GAME( 199?, m1monof  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 7)",GAME_FLAGS )
11631163ROM_START( m1monog )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("monopoly 5p.bin", 0x0000, 0x010000, CRC(75125a1d) SHA1(20a16835b39d3eaa38c88ed885aef04bdb08bb65) )                          m1_mono_sound ROM_END_M1A_MCU
1164GAME( 199?, m1monog  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 8)",GAME_FLAGS )
1164GAME( 199?, m1monog  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 8)",GAME_FLAGS )
11651165ROM_START( m1monoh )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("monopoly6jp.bin", 0x0000, 0x010000, CRC(4a5bc1a5) SHA1(09d576ef92ac03a1e5e5d852851414830ee7ebe9) )                          m1_mono_sound ROM_END_M1A_MCU
1166GAME( 199?, m1monoh  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 9)",GAME_FLAGS )
1166GAME( 199?, m1monoh  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 9)",GAME_FLAGS )
11671167ROM_START( m1monoi )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("monopoly_5p10p_ndp_6pound-sa5-015.bin", 0x0000, 0x010000, CRC(03e359b7) SHA1(e469adaf5d0ed6e44c17a5881bbb42b391d680ee) )    m1_mono_sound ROM_END_M1A_MCU
1168GAME( 199?, m1monoi  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 10)",GAME_FLAGS )
1168GAME( 199?, m1monoi  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 10)",GAME_FLAGS )
11691169ROM_START( m1monok )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa3-005", 0x0000, 0x010000, CRC(6aeecc7e) SHA1(2d2d077c26e01f35a7b76533a4d27a7266e1a1cb) )                                  m1_mono_sound ROM_END_M1A_MCU
1170GAME( 199?, m1monok  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 12)",GAME_FLAGS )
1170GAME( 199?, m1monok  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 12)",GAME_FLAGS )
11711171ROM_START( m1monol )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-314", 0x0000, 0x010000, CRC(708a92ea) SHA1(0f5b9123e4356447215a6d76764c6a124a5206e2) )                                  m1_mono_sound ROM_END_M1A_MCU
1172GAME( 199?, m1monol  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 13)",GAME_FLAGS )
1172GAME( 199?, m1monol  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 13)",GAME_FLAGS )
11731173ROM_START( m1monom )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-315", 0x0000, 0x010000, CRC(98620f0c) SHA1(a92f3ccf36dde20dc5ba8e655212f8a7d8888ce4) )                                  m1_mono_sound ROM_END_M1A_MCU
1174GAME( 199?, m1monom  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 14)",GAME_FLAGS )
1174GAME( 199?, m1monom  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 14)",GAME_FLAGS )
11751175ROM_START( m1monon )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-316", 0x0000, 0x010000, CRC(b0c9b2d2) SHA1(4d6efe7453a398cd8f8a7290a4ea13ee1027425c) )                                  m1_mono_sound ROM_END_M1A_MCU
1176GAME( 199?, m1monon  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 15)",GAME_FLAGS )
1176GAME( 199?, m1monon  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 15)",GAME_FLAGS )
11771177ROM_START( m1monoo )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-317", 0x0000, 0x010000, CRC(58212f34) SHA1(04ee3037861ca97d874fa24954ce3c76fca7e815) )                                  m1_mono_sound ROM_END_M1A_MCU
1178GAME( 199?, m1monoo  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 16)",GAME_FLAGS )
1178GAME( 199?, m1monoo  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 16)",GAME_FLAGS )
11791179ROM_START( m1monop )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa5-035", 0x0000, 0x010000, CRC(a4e07340) SHA1(c566e5ddb780755a8e16454eec8aecfa8d4130a6) )                                  m1_mono_sound ROM_END_M1A_MCU
1180GAME( 199?, m1monop  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 17)",GAME_FLAGS )
1180GAME( 199?, m1monop  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 17)",GAME_FLAGS )
11811181ROM_START( m1monoq )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa5-036", 0x0000, 0x010000, CRC(1058ad93) SHA1(2a53a5af56e148526ddc47deb49bf3d5aa3063b5) )                                  m1_mono_sound ROM_END_M1A_MCU
1182GAME( 199?, m1monoq  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 18)",GAME_FLAGS )
1182GAME( 199?, m1monoq  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 18)",GAME_FLAGS )
11831183ROM_START( m1monor )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa6-005", 0x0000, 0x010000, CRC(6b3655bb) SHA1(cd600a6a1730765bf271cc195343712fb2ba3ad7) )                                  m1_mono_sound ROM_END_M1A_MCU
1184GAME( 199?, m1monor  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 19)",GAME_FLAGS )
1184GAME( 199?, m1monor  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 19)",GAME_FLAGS )
11851185ROM_START( m1monos )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa6-007", 0x0000, 0x010000, CRC(ac7c3a2f) SHA1(50d734a2b58d78bfe3fce6455caca0524c464d7e) )                                  m1_mono_sound ROM_END_M1A_MCU
1186GAME( 199?, m1monos  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 20)",GAME_FLAGS )
1186GAME( 199?, m1monos  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 20)",GAME_FLAGS )
11871187ROM_START( m1monot )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa6-008", 0x0000, 0x010000, CRC(0a546803) SHA1(6122bf392f37c420cf194ff3b21d5b1e615c437f) )                                  m1_mono_sound ROM_END_M1A_MCU
1188GAME( 199?, m1monot  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 21)",GAME_FLAGS )
1188GAME( 199?, m1monot  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 21)",GAME_FLAGS )
11891189ROM_START( m1monou )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa6-009", 0x0000, 0x010000, CRC(07f82db9) SHA1(a46a4a62d7d4ca9fcf9674301f9960e04b879b20) )                                  m1_mono_sound ROM_END_M1A_MCU
1190GAME( 199?, m1monou  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 22)",GAME_FLAGS )
1190GAME( 199?, m1monou  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 22)",GAME_FLAGS )
11911191ROM_START( m1monov )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa6-010", 0x0000, 0x010000, CRC(876ed0d1) SHA1(6af96a7e0ff2757836741054f19cfe3469bc0bb5) )                                  m1_mono_sound ROM_END_M1A_MCU
1192GAME( 199?, m1monov  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 23)",GAME_FLAGS )
1192GAME( 199?, m1monov  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 23)",GAME_FLAGS )
11931193ROM_START( m1monow )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mono5p", 0x0000, 0x010000, CRC(805d33e8) SHA1(4d946ee37f8d25f0f7bb3497a538974e1bae14b1) )                                   m1_mono_sound ROM_END_M1A_MCU
1194GAME( 199?, m1monow  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 24)",GAME_FLAGS )
1194GAME( 199?, m1monow  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 24)",GAME_FLAGS )
11951195ROM_START( m1monox )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mox3&1", 0x0000, 0x010000, CRC(8a790928) SHA1(91594136eb133b6112beb036a973756d0b54b648) )                                   m1_mono_sound ROM_END_M1A_MCU
1196GAME( 199?, m1monox  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 25)",GAME_FLAGS )
1196GAME( 199?, m1monox  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 25)",GAME_FLAGS )
11971197ROM_START( m1monoy )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-205.bin", 0x0000, 0x010000, CRC(7461f169) SHA1(5d54d259d252fddd0c222790cdcd098267a8f9a7) )                              m1_mono_sound ROM_END_M1A_MCU
1198GAME( 199?, m1monoy  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 26)",GAME_FLAGS )
1198GAME( 199?, m1monoy  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 26)",GAME_FLAGS )
11991199ROM_START( m1monoz )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-206.bin", 0x0000, 0x010000, CRC(c0d92fba) SHA1(c6ef33c26bbdd522107622235f4d429d4043fe9e) )                              m1_mono_sound ROM_END_M1A_MCU
1200GAME( 199?, m1monoz  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 27)",GAME_FLAGS )
1200GAME( 199?, m1monoz  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 27)",GAME_FLAGS )
12011201ROM_START( m1mono0 )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-207.bin", 0x0000, 0x010000, CRC(de05924e) SHA1(fa5ff4383161989481765c8cbf73322d180104ed) )                              m1_mono_sound ROM_END_M1A_MCU
1202GAME( 199?, m1mono0  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 28)",GAME_FLAGS )
1202GAME( 199?, m1mono0  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 28)",GAME_FLAGS )
12031203ROM_START( m1mono1 )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-208.bin", 0x0000, 0x010000, CRC(782dc062) SHA1(bd43e37b02db247f0c5c41c273dc67a8b80ca7d9) )                              m1_mono_sound ROM_END_M1A_MCU
1204GAME( 199?, m1mono1  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 29)",GAME_FLAGS )
1204GAME( 199?, m1mono1  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 29)",GAME_FLAGS )
12051205ROM_START( m1mono2 )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-211.bin", 0x0000, 0x010000, CRC(faac3556) SHA1(13b7dd369994669eb971807620c0434ce425f918) )                              m1_mono_sound ROM_END_M1A_MCU
1206GAME( 199?, m1mono2  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 30)",GAME_FLAGS )
1206GAME( 199?, m1mono2  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 30)",GAME_FLAGS )
12071207ROM_START( m1mono3 )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-212.bin", 0x0000, 0x010000, CRC(4e14eb85) SHA1(eb26b5593e250d0b508b346821ee7591d800dacf) )                              m1_mono_sound ROM_END_M1A_MCU
1208GAME( 199?, m1mono3  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 31)",GAME_FLAGS )
1208GAME( 199?, m1mono3  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 31)",GAME_FLAGS )
12091209ROM_START( m1mono4 )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-601", 0x0000, 0x010000, CRC(1b5ad34d) SHA1(4f32fa4c8a667b19b09e5b4e4a1dee2e2f8b4bf0) )                                  m1_mono_sound ROM_END_M1A_MCU
1210GAME( 199?, m1mono4  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 32)",GAME_FLAGS )
1210GAME( 199?, m1mono4  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 32)",GAME_FLAGS )
12111211ROM_START( m1mono5 )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-602", 0x0000, 0x010000, CRC(afe20d9e) SHA1(5f1648443c46138d1256f8da92179b2c58ddfd4b) )                                  m1_mono_sound ROM_END_M1A_MCU
1212GAME( 199?, m1mono5  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 33)",GAME_FLAGS )
1212GAME( 199?, m1mono5  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 33)",GAME_FLAGS )
12131213ROM_START( m1mono6 )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-603", 0x0000, 0x010000, CRC(98fe65f2) SHA1(4944291118d5ed7a642d15441bf7e67ab489ffda) )                                  m1_mono_sound ROM_END_M1A_MCU
1214GAME( 199?, m1mono6  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 34)",GAME_FLAGS )
1214GAME( 199?, m1mono6  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 34)",GAME_FLAGS )
12151215ROM_START( m1mono7 )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-604", 0x0000, 0x010000, CRC(94e63d4b) SHA1(81c549ebc8b28c005fdfc430d49e548403d72ce0) )                                  m1_mono_sound ROM_END_M1A_MCU
1216GAME( 199?, m1mono7  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 35)",GAME_FLAGS )
1216GAME( 199?, m1mono7  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 35)",GAME_FLAGS )
12171217ROM_START( m1mono8 )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa5-016", 0x0000, 0x010000, CRC(b75b8764) SHA1(91513702719d6a3049f264c5e547b8a69058b82c) )                                  m1_mono_sound ROM_END_M1A_MCU
1218GAME( 199?, m1mono8  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 36)",GAME_FLAGS )
1218GAME( 199?, m1mono8  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 36)",GAME_FLAGS )
12191219ROM_START( m1mono9 )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa5-184", 0x0000, 0x010000, CRC(51a8fde3) SHA1(c73441f79b877aaed57791629de9f9b02ff544da) )                                  m1_mono_sound ROM_END_M1A_MCU
1220GAME( 199?, m1mono9  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 37)",GAME_FLAGS )
1220GAME( 199?, m1mono9  ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 37)",GAME_FLAGS )
12211221ROM_START( m1monoaa ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa5-185", 0x0000, 0x010000, CRC(b9406005) SHA1(f1b025140ba7579b1eeb497a64c348df5a341d5d) )                                  m1_mono_sound ROM_END_M1A_MCU
1222GAME( 199?, m1monoaa ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 38)",GAME_FLAGS )
1222GAME( 199?, m1monoaa ,m1mono   ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 38)",GAME_FLAGS )
12231223
12241224/*******************************************************************************************************************************************************************************************************
12251225  Gladiators
r241752r241753
15181518
15191519// uPD7759 rom?
15201520#define m1_pinkp_sound \
1521   ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00  ) \
1521   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
15221522   ROM_LOAD("digi16.bin", 0x0000, 0x040000, CRC(ee8bc3ea) SHA1(b58fad236055db30a75bb12946e8ad76638865a0) )
15231523ROM_START( m1pinkp )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pink2010",                  0x0000, 0x010000, CRC(a098952f) SHA1(d62351d16aa6f34b20774dd6f38ffdada09b49be) ) m1_pinkp_sound ROM_END_M1A_MCU
1524GAME( 199?, m1pinkp   ,0       ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
1524GAME( 199?, m1pinkp   ,0       ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
15251525ROM_START( m1pinkpa ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pink58c",                   0x0000, 0x010000, CRC(fb0ee333) SHA1(3af5362486de70971f606dd914f8e658015dcf82) ) m1_pinkp_sound ROM_END_M1A_MCU
1526GAME( 199?, m1pinkpa  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
1526GAME( 199?, m1pinkpa  ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
15271527ROM_START( m1pinkpb ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pink5p5bin",                0x0000, 0x010000, CRC(97f6cda4) SHA1(338362a2dc0538feea08c98c27af2aec1ec46c08) ) m1_pinkp_sound ROM_END_M1A_MCU
1528GAME( 199?, m1pinkpb  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
1528GAME( 199?, m1pinkpb  ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
15291529ROM_START( m1pinkpc ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pinkp.bin",                 0x0000, 0x010000, CRC(659d8067) SHA1(86cdeab73dd610dc9a0c69b95e74cf2d9bb36830) ) m1_pinkp_sound ROM_END_M1A_MCU
1530GAME( 199?, m1pinkpc  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
1530GAME( 199?, m1pinkpc  ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
15311531ROM_START( m1pinkpd ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pinkp206",                  0x0000, 0x010000, CRC(baf9dbe2) SHA1(5293294abd0713aff969012d818dd6e8b637b74a) ) m1_pinkp_sound ROM_END_M1A_MCU
1532GAME( 199?, m1pinkpd  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
1532GAME( 199?, m1pinkpd  ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
15331533ROM_START( m1pinkpe ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pinkp8s",                   0x0000, 0x010000, CRC(aaf4c565) SHA1(e2d04852e3700b3d19e5245aec2ce57725c728cb) ) m1_pinkp_sound ROM_END_M1A_MCU
1534GAME( 199?, m1pinkpe  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 6)",GAME_FLAGS )
1534GAME( 199?, m1pinkpe  ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 6)",GAME_FLAGS )
15351535ROM_START( m1pinkpf ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pinkpanther8key20p.bin",    0x0000, 0x010000, CRC(6888e768) SHA1(8b1f076ad6905367956097f7ac2ca3d49a3ed97f) ) m1_pinkp_sound ROM_END_M1A_MCU
1536GAME( 199?, m1pinkpf  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 7)",GAME_FLAGS )
1536GAME( 199?, m1pinkpf  ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 7)",GAME_FLAGS )
15371537ROM_START( m1pinkpg ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("ppanthersa3-026 nd.bin",    0x0000, 0x010000, CRC(189bc301) SHA1(2b9a190e3b5e008b291d0f4b14fa5874c6f867c4) ) m1_pinkp_sound ROM_END_M1A_MCU
1538GAME( 199?, m1pinkpg  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 8)",GAME_FLAGS )
1538GAME( 199?, m1pinkpg  ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 8)",GAME_FLAGS )
15391539ROM_START( m1pinkph ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa3-122.bin",               0x0000, 0x010000, CRC(3bc43552) SHA1(a8c6f314de3148b1b75fb89816e26ac07ee2ef93) ) m1_pinkp_sound ROM_END_M1A_MCU
1540GAME( 199?, m1pinkph  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 9)",GAME_FLAGS )
1540GAME( 199?, m1pinkph  ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 9)",GAME_FLAGS )
15411541ROM_START( m1pinkpi ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa3-123.bin",               0x0000, 0x010000, CRC(d32ca8b4) SHA1(ebf64436e10f9eb40b938f55845b82e70753fef4) ) m1_pinkp_sound ROM_END_M1A_MCU
1542GAME( 199?, m1pinkpi  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 10)",GAME_FLAGS )
1542GAME( 199?, m1pinkpi  ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 10)",GAME_FLAGS )
15431543ROM_START( m1pinkpj ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-060.bin",               0x0000, 0x010000, CRC(bae6af78) SHA1(2ac64db6cbbf41314787db0c6a14666d0a16aa63) ) m1_pinkp_sound ROM_END_M1A_MCU
1544GAME( 199?, m1pinkpj  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 11)",GAME_FLAGS )
1544GAME( 199?, m1pinkpj  ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 11)",GAME_FLAGS )
15451545ROM_START( m1pinkpk ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-137.bin",               0x0000, 0x010000, CRC(64a22d91) SHA1(e1d08950da85bf5e1146633d53ab8149d639c3e1) ) m1_pinkp_sound ROM_END_M1A_MCU
1546GAME( 199?, m1pinkpk  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 12)",GAME_FLAGS )
1546GAME( 199?, m1pinkpk  ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 12)",GAME_FLAGS )
15471547ROM_START( m1pinkpl ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-139",                   0x0000, 0x010000, CRC(e7a170dc) SHA1(120b136b54401755a8ef169ec9f2a510a9b01899) ) m1_pinkp_sound ROM_END_M1A_MCU
1548GAME( 199?, m1pinkpl  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 13)",GAME_FLAGS )
1548GAME( 199?, m1pinkpl  ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 13)",GAME_FLAGS )
15491549ROM_START( m1pinkpm ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-140",                   0x0000, 0x010000, CRC(8701fb2d) SHA1(003f24baa72d56eae9027af557592ccf8c150fa2) ) m1_pinkp_sound ROM_END_M1A_MCU
1550GAME( 199?, m1pinkpm  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 14)",GAME_FLAGS )
1550GAME( 199?, m1pinkpm  ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 14)",GAME_FLAGS )
15511551ROM_START( m1pinkpn ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-612",                   0x0000, 0x010000, CRC(d7d4e529) SHA1(f41bf31b68421010d6ab507da250e8eefdda2376) ) m1_pinkp_sound ROM_END_M1A_MCU
1552GAME( 199?, m1pinkpn  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 15)",GAME_FLAGS )
1552GAME( 199?, m1pinkpn  ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 15)",GAME_FLAGS )
15531553ROM_START( m1pinkpo ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-613",                   0x0000, 0x010000, CRC(3f3c78cf) SHA1(bf2c84bf81c0bd9d32a2c3ca3eef132efed6baea) ) m1_pinkp_sound ROM_END_M1A_MCU
1554GAME( 199?, m1pinkpo  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 16)",GAME_FLAGS )
1554GAME( 199?, m1pinkpo  ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 16)",GAME_FLAGS )
15551555ROM_START( m1pinkpp ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-614",                   0x0000, 0x010000, CRC(632e1f05) SHA1(1fbae16a0addc8baf10f6332860bb98a56b0e94a) ) m1_pinkp_sound ROM_END_M1A_MCU
1556GAME( 199?, m1pinkpp  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 17)",GAME_FLAGS )
1556GAME( 199?, m1pinkpp  ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 17)",GAME_FLAGS )
15571557ROM_START( m1pinkpq ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-615",                   0x0000, 0x010000, CRC(8bc682e3) SHA1(39f2eb7e4e9c36f64b0efe2b347f93638d9b6e09) ) m1_pinkp_sound ROM_END_M1A_MCU
1558GAME( 199?, m1pinkpq  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 18)",GAME_FLAGS )
1558GAME( 199?, m1pinkpq  ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 18)",GAME_FLAGS )
15591559ROM_START( m1pinkpr ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("ppix6___.281",              0x0000, 0x010000, CRC(386c7d02) SHA1(67a52332a76d82909455174cce5067469654ccd0) ) m1_pinkp_sound ROM_END_M1A_MCU
1560GAME( 199?, m1pinkpr  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 19)",GAME_FLAGS )
1560GAME( 199?, m1pinkpr  ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 19)",GAME_FLAGS )
15611561
15621562/*******************************************************************************************************************************************************************************************************
15631563  Nudge Banker
r241752r241753
23532353
23542354// uPD7759 rom?
23552355#define m1_monodt_sound \
2356   ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00  ) \
2356   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
23572357   ROM_LOAD( "monopolysnddutch.bin", 0x0000, 0x040000, CRC(8742981e) SHA1(1ba33c59ec5f878ebab111a77551213aad4b0993) )
23582358ROM_START( m1monodt ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  ) ROM_LOAD( "monopoly.bin", 0x0000, 0x010000, CRC(b7a2911b) SHA1(74507dd3a947d1b4d7bd0b58adb53d4f6e7ce200) ) m1_monodt_sound ROM_END_M1A_MCU
2359GAME( 199?, m1monodt ,0          ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Dutch) (Maygay) (M1A/B)",GAME_FLAGS )
2359GAME( 199?, m1monodt ,0          ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Dutch) (Maygay) (M1A/B)",GAME_FLAGS )
23602360
23612361/*******************************************************************************************************************************************************************************************************
23622362  Pink Panther (Dutch)
r241752r241753
23642364
23652365// uPD7759 rom?
23662366#define m1_ppdt_sound \
2367   ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00  ) \
2367   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
23682368   ROM_LOAD( "ppsound.bin", 0x0000, 0x040000, CRC(8742981e) SHA1(1ba33c59ec5f878ebab111a77551213aad4b0993) )
23692369ROM_START( m1ppdt ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00  ) ROM_LOAD( "pinkpanther.bin", 0x0000, 0x010000, CRC(09040f9d) SHA1(25c545e599711bf5ff2361c51e6629b69673da33) ) m1_ppdt_sound ROM_END_M1A_MCU
2370GAME( 199?, m1ppdt     ,0          ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (German) (Maygay) (M1A/B)",GAME_FLAGS )
2370GAME( 199?, m1ppdt     ,0          ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (German) (Maygay) (M1A/B)",GAME_FLAGS )
23712371
23722372/*******************************************************************************************************************************************************************************************************
23732373  Supernova
r241752r241753
23752375
23762376// uPD7759 rom?
23772377#define m1_sprnov_sound \
2378   ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00  ) \
2378   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
23792379   ROM_LOAD( "supernovasnd.bin", 0x0000, 0x020000, CRC(f91e2c05) SHA1(e189c14214f4637d6a803893d79a41ad0fc8ebba) )
23802380ROM_START( m1sprnov ) ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00  ) ROM_LOAD( "supernovaprg.bin", 0x0000, 0x010000, CRC(6d533247) SHA1(475ecdcc10c9da558eb4d7c5e288d4724f65a5ce) ) m1_sprnov_sound ROM_END_M1A_MCU
2381GAME( 199?, m1sprnov ,0          ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Super Nova (Dutch) (Maygay) (M1A/B)",GAME_FLAGS )
2381GAME( 199?, m1sprnov ,0          ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Super Nova (Dutch) (Maygay) (M1A/B)",GAME_FLAGS )
23822382
23832383/*******************************************************************************************************************************************************************************************************
23842384  Take Note
r241752r241753
25602560
25612561// uPD7759 rom?
25622562#define m1_mongam_sound \
2563   ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00  ) \
2563   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
25642564   ROM_LOAD( "mgamesnd", 0x0000, 0x040000, CRC(80ea7b3d) SHA1(a26dbc55ba205fc94c9b224c549516ba149627d7) )
25652565ROM_START( m1mongam )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mgame200",     0x0000, 0x010000, CRC(4cfe0ef2) SHA1(8dae7d1fdb6481902bcc38f3f993b55c7acc919b) ) m1_mongam_sound ROM_END_M1A_MCU
2566GAME( 199?, m1mongam  ,0        ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
2566GAME( 199?, m1mongam  ,0        ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
25672567ROM_START( m1mongama ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sc5-114",      0x0000, 0x010000, CRC(63dbb45e) SHA1(3ccb45ae290b5e2d2249a36268a9e690846bf3d9) ) m1_mongam_sound ROM_END_M1A_MCU
2568GAME( 199?, m1mongama ,m1mongam ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
2568GAME( 199?, m1mongama ,m1mongam ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
25692569ROM_START( m1mongamb ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sc5-115",      0x0000, 0x010000, CRC(8b3329b8) SHA1(2c89ac10ad82d8425104a74a7bc24aa9c28cbe01) ) m1_mongam_sound ROM_END_M1A_MCU
2570GAME( 199?, m1mongamb ,m1mongam ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
2570GAME( 199?, m1mongamb ,m1mongam ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
25712571
25722572/*******************************************************************************************************************************************************************************************************
25732573  Monopoly Classic
r241752r241753
25752575
25762576// uPD7759 rom?
25772577#define m1_moncls_sound \
2578   ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00  ) \
2578   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
25792579   ROM_LOAD( "classicmonopoly(maygay)soundromdig1-027.bin", 0x0000, 0x040000, CRC(d5243b51) SHA1(c7e3a61071c566e8ea9c8842839b70242ca67308) )
25802580ROM_START( m1moncls )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa3-316", 0x0000, 0x010000, CRC(98f9d6b0) SHA1(f30fa1fb88bfd4098b189cf03a7e0b9dcc5bfdef) ) m1_moncls_sound ROM_END_M1A_MCU
2581GAME( 199?, m1moncls  ,0        ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
2581GAME( 199?, m1moncls  ,0        ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
25822582ROM_START( m1monclsa ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa3-318", 0x0000, 0x010000, CRC(01e8224c) SHA1(dfad509c00d6311eb1e8bbbfe1ca5fd6aeb9da43) ) m1_moncls_sound ROM_END_M1A_MCU
2583GAME( 199?, m1monclsa ,m1moncls ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
2583GAME( 199?, m1monclsa ,m1moncls ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
25842584ROM_START( m1monclsb ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa3-319", 0x0000, 0x010000, CRC(e900bfaa) SHA1(ce6f1021234979d0c27d5668b470fd31594ca222) ) m1_moncls_sound ROM_END_M1A_MCU
2585GAME( 199?, m1monclsb ,m1moncls ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
2585GAME( 199?, m1monclsb ,m1moncls ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
25862586ROM_START( m1monclsc ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-120", 0x0000, 0x010000, CRC(c594d56d) SHA1(4a48f3d80c575025de7624528647891c179c1b0d) ) m1_moncls_sound ROM_END_M1A_MCU
2587GAME( 199?, m1monclsc ,m1moncls ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
2587GAME( 199?, m1monclsc ,m1moncls ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
25882588ROM_START( m1monclsd ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-121", 0x0000, 0x010000, CRC(2d7c488b) SHA1(ee63973447cb21fa2872ed74612f431add2b7a46) ) m1_moncls_sound ROM_END_M1A_MCU
2589GAME( 199?, m1monclsd ,m1moncls ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
2589GAME( 199?, m1monclsd ,m1moncls ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
25902590
25912591/*******************************************************************************************************************************************************************************************************
25922592  Return Of The Pink Panther
r241752r241753
25942594
25952595// uPD7759 rom?
25962596#define m1_retpp_sound \
2597   ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00  ) \
2597   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
25982598   /* ROM_LOAD( "rotppsnd.bin", 0x0000, 0x002000, CRC(a8c8ff9a) SHA1(8069cf08f3a8481ebc589ad0c25887ea316facd5) ) */ /* bad dump of rom below */ \
25992599   ROM_LOAD( "roppsnd.bin", 0x0000, 0x040000, CRC(9f3484b3) SHA1(9d454644c967b22cf6583335807a0ed8495492cb) )
26002600ROM_START( m1retpp )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pinkpstd.bin",  0x0000, 0x010000, CRC(92bb56d8) SHA1(e033578c693f0faf1e91b76392106f0e6850d0dc) ) m1_retpp_sound ROM_END_M1A_MCU
2601GAME( 199?, m1retpp   ,0       ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
2601GAME( 199?, m1retpp   ,0       ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
26022602ROM_START( m1retppa ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa3-519.bin",   0x0000, 0x010000, CRC(b8e04479) SHA1(3be940b433174623d177ffd892d8bc59170422b8) ) m1_retpp_sound ROM_END_M1A_MCU
2603GAME( 199?, m1retppa  ,m1retpp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
2603GAME( 199?, m1retppa  ,m1retpp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
26042604ROM_START( m1retppb ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa3-520.bin",   0x0000, 0x010000, CRC(679b6b66) SHA1(a21e82221da54ba48a43c68d5c2c2f07ee9c2f34) ) m1_retpp_sound ROM_END_M1A_MCU
2605GAME( 199?, m1retppb  ,m1retpp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
2605GAME( 199?, m1retppb  ,m1retpp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
26062606ROM_START( m1retppc ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-044.bin",   0x0000, 0x010000, CRC(9ea30e61) SHA1(1812582ac4f6069354e0f1b5a8f5bd1981cd6e8f) ) m1_retpp_sound ROM_END_M1A_MCU
2607GAME( 199?, m1retppc  ,m1retpp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
2607GAME( 199?, m1retppc  ,m1retpp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
26082608ROM_START( m1retppd ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-230",       0x0000, 0x010000, CRC(42cd661a) SHA1(b5f5e3e9898155e8696eb97a7cf5e1855e190be1) ) m1_retpp_sound ROM_END_M1A_MCU
2609GAME( 199?, m1retppd  ,m1retpp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
2609GAME( 199?, m1retppd  ,m1retpp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
26102610
26112611/*******************************************************************************************************************************************************************************************************
26122612  That's Life
r241752r241753
26142614
26152615// uPD7759 rom?
26162616#define m1_thatlf_sound \
2617   ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00  ) \
2617   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
26182618   ROM_LOAD( "thatslifesound", 0x0000, 0x040000, CRC(5ac3a1f6) SHA1(5be73deb23d58fdc27dd41d210702b627e7ed324) )
26192619ROM_START( m1thatlf )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa3-327.bin",      0x0000, 0x010000, CRC(634fc46e) SHA1(84e166a182384b3b6f29653a0542af74c268d766) ) m1_thatlf_sound ROM_END_M1A_MCU
2620GAME( 199?, m1thatlf  ,0        ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
2620GAME( 199?, m1thatlf  ,0        ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
26212621ROM_START( m1thatlfa ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-075.bin",      0x0000, 0x010000, CRC(b5922c08) SHA1(c71cd3629436576c381b4f1b45011c34a49c66b7) ) m1_thatlf_sound ROM_END_M1A_MCU
2622GAME( 199?, m1thatlfa ,m1thatlf ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
2622GAME( 199?, m1thatlfa ,m1thatlf ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
26232623ROM_START( m1thatlfb ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-076.bin",      0x0000, 0x010000, CRC(012af2db) SHA1(d6f1a24fe6674a423d190e9e04390cb01768bf4a) ) m1_thatlf_sound ROM_END_M1A_MCU
2624GAME( 199?, m1thatlfb ,m1thatlf ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
2624GAME( 199?, m1thatlfb ,m1thatlf ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
26252625ROM_START( m1thatlfc ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("thatslifegame",    0x0000, 0x010000, CRC(8dafbe30) SHA1(9a7e8a66b73ddf6564a34363342a8b7290e0dc4f) ) m1_thatlf_sound ROM_END_M1A_MCU
2626GAME( 199?, m1thatlfc ,m1thatlf ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
2626GAME( 199?, m1thatlfc ,m1thatlf ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
26272627ROM_START( m1thatlfd ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("thtslf5p",         0x0000, 0x010000, CRC(31507a65) SHA1(607b16cf3fde90f97e22247158f09d859a43c1ae) ) m1_thatlf_sound ROM_END_M1A_MCU
2628GAME( 199?, m1thatlfd ,m1thatlf ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
2628GAME( 199?, m1thatlfd ,m1thatlf ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
26292629
26302630/*******************************************************************************************************************************************************************************************************
26312631  Big Ghoulies
r241752r241753
28112811
28122812// uPD7759 rom?
28132813#define m1_startr_sound \
2814   ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00  ) \
2814   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
28152815   ROM_LOAD( "mdmstartrekkingsound.rom", 0x0000, 0x040000, CRC(4b673184) SHA1(dd90719ebc8644b4aa50091dc9ddd79f5d0f3395) )
28162816ROM_START( m1startr )  ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk20d3_1.bin",                     0x0000, 0x010000, CRC(a911ebc7) SHA1(7e74df1ca0fd5e0d04ece5ca307f4b1ab817c044) ) m1_startr_sound ROM_END_M1A_MCU
2817GAME( 199?, m1startr  ,0        ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 1)",GAME_FLAGS )
2817GAME( 199?, m1startr  ,0        ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 1)",GAME_FLAGS )
28182818ROM_START( m1startra ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("st58dt",                           0x0000, 0x010000, CRC(29b73d2d) SHA1(f4bfcce7b8f158e8ec964936c365a2c6f27f7945) ) m1_startr_sound ROM_END_M1A_MCU
2819GAME( 199?, m1startra ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 2)",GAME_FLAGS )
2819GAME( 199?, m1startra ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 2)",GAME_FLAGS )
28202820ROM_START( m1startrb ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("st58st",                           0x0000, 0x010000, CRC(b4b4c3f3) SHA1(7179d970c0e903ae3b4ba925fba29b9777bf969d) ) m1_startr_sound ROM_END_M1A_MCU
2821GAME( 199?, m1startrb ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 3)",GAME_FLAGS )
2821GAME( 199?, m1startrb ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 3)",GAME_FLAGS )
28222822ROM_START( m1startrc ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("startrekking-20p_8_5.bin",         0x0000, 0x010000, CRC(6455ae3b) SHA1(9521b69cdd4a0d6ed306ad713fd9a3924eae1e8d) ) m1_startr_sound ROM_END_M1A_MCU
2823GAME( 199?, m1startrc ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 4)",GAME_FLAGS )
2823GAME( 199?, m1startrc ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 4)",GAME_FLAGS )
28242824ROM_START( m1startrd ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk05d3_1.bin",                     0x0000, 0x010000, CRC(b53552ca) SHA1(7b3fd9c5e858a0e1462c755ebfbc089879001c7c) ) m1_startr_sound ROM_END_M1A_MCU
2825GAME( 199?, m1startrd ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 5)",GAME_FLAGS )
2825GAME( 199?, m1startrd ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 5)",GAME_FLAGS )
28262826ROM_START( m1startre ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk05d5_0.bin",                     0x0000, 0x010000, CRC(629a4c8c) SHA1(766933e4c6d352273c72e40ac0f2af73896d513d) ) m1_startr_sound ROM_END_M1A_MCU
2827GAME( 199?, m1startre ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 6)",GAME_FLAGS )
2827GAME( 199?, m1startre ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 6)",GAME_FLAGS )
28282828ROM_START( m1startrf ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk05s3_1.bin",                     0x0000, 0x010000, CRC(871db7ce) SHA1(4aac90a6ecab6d2c6b5d8b7af69059ef260c9c0c) ) m1_startr_sound ROM_END_M1A_MCU
2829GAME( 199?, m1startrf ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 7)",GAME_FLAGS )
2829GAME( 199?, m1startrf ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 7)",GAME_FLAGS )
28302830ROM_START( m1startrg ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk05s5_0.bin",                     0x0000, 0x010000, CRC(6a600631) SHA1(1c85cd63db5225ca55ef0f26fc65008cb4af340b) ) m1_startr_sound ROM_END_M1A_MCU
2831GAME( 199?, m1startrg ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 8)",GAME_FLAGS )
2831GAME( 199?, m1startrg ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 8)",GAME_FLAGS )
28322832ROM_START( m1startrh ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk10d3_2.bin",                     0x0000, 0x010000, CRC(5cebc22d) SHA1(6e6dd4c98ceb0c3cf541c6f8d00e3928f43dc763) ) m1_startr_sound ROM_END_M1A_MCU
2833GAME( 199?, m1startrh ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 9)",GAME_FLAGS )
2833GAME( 199?, m1startrh ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 9)",GAME_FLAGS )
28342834ROM_START( m1startri ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk10d5_0.bin",                     0x0000, 0x010000, CRC(349855d0) SHA1(e83d764169e85b1f24b3cb7a0d9b1ce3228148c3) ) m1_startr_sound ROM_END_M1A_MCU
2835GAME( 199?, m1startri ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 10)",GAME_FLAGS )
2835GAME( 199?, m1startri ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 10)",GAME_FLAGS )
28362836ROM_START( m1startrj ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk10s3_2.bin",                     0x0000, 0x010000, CRC(7955d544) SHA1(1151e2b5dd3bd60846d28fa0fb49fe6bee06b765) ) m1_startr_sound ROM_END_M1A_MCU
2837GAME( 199?, m1startrj ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 11)",GAME_FLAGS )
2837GAME( 199?, m1startrj ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 11)",GAME_FLAGS )
28382838ROM_START( m1startrk ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk10s5_0.bin",                     0x0000, 0x010000, CRC(6e871dcb) SHA1(cb74b94537f7cdbba6e254042f2b59409eb3b00c) ) m1_startr_sound ROM_END_M1A_MCU
2839GAME( 199?, m1startrk ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 12)",GAME_FLAGS )
2839GAME( 199?, m1startrk ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 12)",GAME_FLAGS )
28402840ROM_START( m1startrm ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk20d5_0.bin",                     0x0000, 0x010000, CRC(ca3d3faa) SHA1(f19465212d3bc094a61d04c6c1c20e524a36dcf8) ) m1_startr_sound ROM_END_M1A_MCU
2841GAME( 199?, m1startrm ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 14)",GAME_FLAGS )
2841GAME( 199?, m1startrm ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 14)",GAME_FLAGS )
28422842ROM_START( m1startrn ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk20s3_1.bin",                     0x0000, 0x010000, CRC(0193af35) SHA1(40094dd44da8d1d0d38ac95d4e951e6c88516eee) ) m1_startr_sound ROM_END_M1A_MCU
2843GAME( 199?, m1startrn ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 15)",GAME_FLAGS )
2843GAME( 199?, m1startrn ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 15)",GAME_FLAGS )
28442844ROM_START( m1startro ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk20s5_0.bin",                     0x0000, 0x010000, CRC(b0532d71) SHA1(d3e111a4bc5638788bb67faebdd046224895cbb1) ) m1_startr_sound ROM_END_M1A_MCU
2845GAME( 199?, m1startro ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 16)",GAME_FLAGS )
2845GAME( 199?, m1startro ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 16)",GAME_FLAGS )
28462846ROM_START( m1startrp ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk3.1c",                           0x0000, 0x010000, CRC(affb3ea4) SHA1(64a670b074cd2f151e820428e0f7f485ec710efd) ) m1_startr_sound ROM_END_M1A_MCU
2847GAME( 199?, m1startrp ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 17)",GAME_FLAGS )
2847GAME( 199?, m1startrp ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 17)",GAME_FLAGS )
28482848ROM_START( m1startrq ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk5-5_0x.bin",                     0x0000, 0x010000, CRC(1d32480d) SHA1(670c9d371755c500c29a31a350b3447bd2788c62) ) m1_startr_sound ROM_END_M1A_MCU
2849GAME( 199?, m1startrq ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 18)",GAME_FLAGS )
2849GAME( 199?, m1startrq ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 18)",GAME_FLAGS )
28502850ROM_START( m1startrr ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk5_0x.bin",                       0x0000, 0x010000, CRC(20a796f2) SHA1(1d46dbf3693294733595cd601e5be6f16ff685d3) ) m1_startr_sound ROM_END_M1A_MCU
2851GAME( 199?, m1startrr ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 19)",GAME_FLAGS )
2851GAME( 199?, m1startrr ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 19)",GAME_FLAGS )
28522852
28532853/*******************************************************************************************************************************************************************************************************
28542854  Tick Tock Cash
trunk/src/mame/drivers/mediagx.c
r241752r241753
6666
6767#include "emu.h"
6868#include "cpu/i386/i386.h"
69#include "machine/pci.h"
69#include "machine/lpci.h"
7070#include "machine/pcshare.h"
7171#include "machine/pckeybrd.h"
7272#include "machine/idectrl.h"
trunk/src/mame/drivers/midqslvr.c
r241752r241753
2424
2525#include "emu.h"
2626#include "cpu/i386/i386.h"
27#include "machine/pci.h"
27#include "machine/lpci.h"
2828#include "machine/pcshare.h"
2929#include "machine/pckeybrd.h"
3030#include "machine/idectrl.h"
trunk/src/mame/drivers/mpu4.c
r241752r241753
25012501
25022502GAME(199?, m4frtgm  ,0          ,mod4oki    ,mpu4               , mpu4_state,m4altreels         ,ROT0,   "Barcrest","Fruit Game (Barcrest) (MPU4)",GAME_FLAGS ) // SAMPLE EEPROM ALARM (and has a weird sample rom..)
25032503GAME(199?, m4reeltm ,0          ,mod4oki    ,mpu4               , mpu4_state,m4altreels         ,ROT0,   "Barcrest","Reel Timer (Barcrest) (MPU4) (DWT)",GAME_FLAGS ) // SAMPLE EEPROM ALARM
2504GAME(199?, m4fortcb     ,0                  ,mod4oki    ,mpu4               , mpu4_state,m4altreels         ,ROT0,   "Barcrest","Fortune Club (Barcrest) (MPU4) (set 1)",GAME_FLAGS ) // INVALID ALARM
2505GAME(199?, m4fortcba    ,m4fortcb           ,mod4oki    ,mpu4               , mpu4_state,m4altreels         ,ROT0,   "Barcrest","Fortune Club (Barcrest) (MPU4) (set 2)",GAME_FLAGS ) // INVALID ALARM
2506GAME(199?, m4fortcbb    ,m4fortcb           ,mod4oki    ,mpu4               , mpu4_state,m4altreels         ,ROT0,   "Barcrest","Fortune Club (Barcrest) (MPU4) (set 3)",GAME_FLAGS ) // INVALID ALARM
2504GAME(199?, m4fortcb ,0          ,mod4oki    ,mpu4               , mpu4_state,m4altreels         ,ROT0,   "Barcrest","Fortune Club (Barcrest) (MPU4) (set 1)",GAME_FLAGS ) // INVALID ALARM
2505GAME(199?, m4fortcba,m4fortcb   ,mod4oki    ,mpu4               , mpu4_state,m4altreels         ,ROT0,   "Barcrest","Fortune Club (Barcrest) (MPU4) (set 2)",GAME_FLAGS ) // INVALID ALARM
2506GAME(199?, m4fortcbb,m4fortcb   ,mod4oki    ,mpu4               , mpu4_state,m4altreels         ,ROT0,   "Barcrest","Fortune Club (Barcrest) (MPU4) (set 3)",GAME_FLAGS ) // INVALID ALARM
25072507
25082508
25092509
trunk/src/mame/drivers/naomi.c
r241752r241753
207207There are 6 known types of carts manufactured by Sega: 171-7885A, 171-7919A, 171-7930B, 171-7978B, 171-8132B, 171-8346C
208208There are also 2 types of carts manufactured by Namco: MASK-B, MASK-C
209209
210837-14124  171-7885A (C) Sega 1998
210837-13591  171-7885A (C) Sega 1998
211211|------------------------------------------------------------|
212212|                                          ----CN2----       -|
213213|                                                      JJ     |
r241752r241753
254254                                     Sticker    EPROM   MASKROMs    X76F100  EPM7064S  FPGA
255255Game                                 on cart    IC22#   # of SOP56  IC37#    IC41#     IC42#         Notes
256256-------------------------------------------------------------------------------------------------------------------------
257Crackin' DJ part 2                   840-0068C  23674   20 (64Mb)   present  present   317-0311-COM
257Club Kart European Session (2003, prototype)    *       21 (64Mb)   present  present   not present   *instead of EPROM have tiny PCB with 2 flashroms on it
258Crackin' DJ part 2                   840-0068C  23674   20 (64Mb)   present  present   317-0311-COM  PCB have label 840-0068B-01 837-14124
259House of the Dead 2 (prototype)                 A1E2    21 (64Mb)   present  present   present, no label
258260Inu No Osanpo / Dog Walking (Rev A)  840-0073C  22294A  16 (64Mb)   present  present   317-0316-JPN
261Samba de Amigo (prototype)                      *       21 (64Mb)   present  present   317-0270-COM  *instead of EPROM have tiny PCB with 2 flashroms on it
259262Soul Surfer (Rev A)                  840-0095C  23838C  21 (64Mb)   present  present   not present   todo: verify if it's Rev A or Rev C
260263Star Horse (server)                  840-0055C  23626   17 (64Mb)   present  present   not present
261264The King of Route 66 (Rev A)         840-0087C  23819A  20 (64Mb)   present  present   not present
265Virtua NBA (prototype)                          *       21 (64Mb)   present  present   317-0271-COM  *instead of EPROM have tiny PCB with 2 flashroms on it
262266
263267
264268
r241752r241753
291295   CN1/2/3  - connectors joining to main board
292296
293297Games known to use this PCB include....
294                                                Sticker    EPROM   MASKROMs    X76F100  XC9536    315-5881
295Game                                            on cart    IC22#   # of SOP44  IC37#    IC41#     IC42#          Notes
298                                                Sticker      EPROM   MASKROMs    X76F100  XC9536    315-5881
299Game                                            on cart      IC22#   # of SOP44  IC37#    IC41#     IC42#          Notes
296300-------------------------------------------------------------------------------------------------------------------------
29718 Wheeler (Deluxe) (Rev A)                     840-0023C  22185A  20 (64Mb)   present  315-6213  317-0273-COM
29818 Wheeler (Standard)                           840-0036C  23298   20 (64Mb)   present  315-6213  317-0273-COM
29918 Wheeler (Upright)                            840-0037C  23299   20 (64Mb)   present  315-6213  317-0273-COM
300Airline Pilots (Rev A)                          840-0005C  21739A  11 (64Mb)   present  315-6213  317-0251-COM
301Airline Pilots Deluxe (Rev B)                   ?          21787B  11 (64Mb)   present  315-6213  317-0251-COM   2 know BIOS 21801 (USA), 21802 (EXP)
302Cosmic Smash                                    840-0044C  23428    8 (64Mb)   ?        315-6213  317-0289-COM   joystick + 2 buttons
303Cosmic Smash (Rev A)                            840-0044C  23428A   8 (64Mb)   ?        315-6213  317-0289-COM   joystick + 2 buttons
304Crazy Taxi                                      840-0002C  21684   13 (64Mb)*  ?        315-6213  317-0248-COM   * ic8 and ic9 are not present
305Dead Or Alive 2                                 841-0003C  22121   21 (64Mb)   present  315-6213  317-5048-COM   joystick + 3 buttons
306Dead Or Alive 2 Millennium                      841-0003C  DOA2 M  21 (64Mb)   present  315-6213  317-5048-COM   joystick + 3 buttons
307Death Crimson OX                                841-0016C  23524   10 (64Mb)   present  315-6213  317-5066-COM
308Dengen Tenshi Taisen Janshi Shangri-La          841-0004C  22060   12 (64Mb)   ?        315-6213  317-5050-JPN
309Derby Owners Club (Rev B)                       840-0016C  22099B  14 (64Mb)   ?        315-6213  317-0262-JPN   touch panel + 2 buttons + card reader
310Derby Owners Club 2000 Ver.2 (Rev A)            840-0052C  22284A  16 (64Mb)   present  315-6213  not present
311Dynamite Baseball '99 / World Series'99 (Rev B) 840-0019C  22141B  19 (64Mb)   ?        315-6213  317-0269-JPN   requires special panel (joystick + 2 buttons + bat controller for each player)
312Dynamite Baseball Naomi                         840-0001C  21575   21 (64Mb)   ?        315-6213  317-0246-JPN   requires special panel (joystick + 2 buttons + bat controller for each player)
313Ferrari F355 Challenge                          834-13842  21902   21 (64Mb)   present  315-6213  317-0254-COM
314Ferrari F355 Challenge 2 Twin                   840-0042C  23399   21 (64Mb)   ?        315-6213  317-0287-COM   2 know BIOS 22850 (USA), 22851 (EXP)
315Ferrari F355 Challenge Twin                     834-13950  22848   21 (64Mb)   present  315-6213  317-0267-COM   2 know BIOS 22850 (USA), 22851 (EXP)
316Giant Gram: All Japan Pro Wrestling 2           840-0007C  21820    9 (64Mb)   ?        315-6213  317-0253-JPN   joystick + 3 buttons
317Guilty Gear X                                   841-0013C  23356   14 (64Mb)   ?        315-6213  317-5063-COM
318Gun Spike / Cannon Spike                        841-0012C  23210   12 (64Mb)   present  315-6213  317-5060-COM
319Heavy Metal Geomatrix (Rev A)                   HMG016007  23716A  11 (64Mb)   present  315-6213  317-5071-COM   joystick + 2 buttons
320Idol Janshi Suchie-Pai 3                        841-0002C  21979   14 (64Mb)   ?        315-6213  317-5047-JPN   requires special I/O board and mahjong panel
321Jambo! Safari (Rev A)                           840-0013C  22826A   8 (64Mb)   ?        315-6213  317-0264-COM
322Mars TV                                         840-0025C  22993   15 (64Mb)   present  315-6213  317-0074-JPN
323OutTrigger                                      840-0017C  22163   19 (64Mb)   ?        315-6213  317-0266-COM   requires analog controllers/special panel
324Power Stone                                     841-0001C  21597    8 (64Mb)   present  315-6213  317-5046-COM   joystick + 3 buttons
325Power Stone 2                                   841-0008C  23127    9 (64Mb)   present  315-6213  317-5054-COM   joystick + 3 buttons
326Puyo Puyo Da!                                   841-0006C  22206   20 (64Mb)   ?        ?         ?
327Ring Out 4x4                                    840-0004C  21779   10 (64Mb)   ?        ?         ?
328Samba de Amigo (prototype)                      840-0020C  proto   16 (64Mb)   ?        315-6213  317-0270-COM   will boot but requires special controller to play it
329Samba de Amigo (Rev B)                          840-0020C  22966B  16 (64Mb)   ?        315-6213  317-0270-COM   will boot but requires special controller to play it
330Sega Marine Fishing                             840-0027C  22221   10 (64Mb)   ?        315-6213  not present    ROM 3&4 not present. Requires special I/O board and fishing controller
331Sega Strike Fighter (Rev A)                     840-0035C  23323A  20 (64Mb)   present  315-6213  317-0281-COM
332Sega Tetris                                     840-0018C  22909    6 (64Mb)   present  315-6213  317-0268-COM
333Slashout                                        840-0041C  23341   17 (64Mb)   ?        315-6213  317-0286-COM   joystick + 4 buttons
334Spawn In the Demon's Hand (Rev B)               841-0005C  22977B  10 (64Mb)   ?        315-6213  317-5051-COM   joystick + 4 buttons
335The Typing of the Dead (Rev A)                  840-0026C  23021A  20 (64Mb)   present  315-6213  not present
336Touch de UNO! / Unou Nouryoku Check Machine     840-0008C  22073    4 (64Mb)   present  315-6213  317-0255-JPN
337Toy Fighter / Waffupu                           840-0011C  22035   10 (64Mb)   present  315-6212  317-0257-COM   joystick + 3 buttons
338Virtua NBA                                      840-0021C  23073   21 (64Mb)   present  315-6213  not present
339Virtua NBA (original)                           840-0021C  23073   21 (64Mb)   ?        315-6213  not present
340Virtua Striker 2 Ver. 2000 (Rev C)              840-0010C  21929C  14 (64Mb)*  present  315-6213  317-0258-COM   joystick + 3 buttons *(+1x 32Mb)
341Virtua Tennis / Power Smash                     840-0015C  22927   11 (64Mb)   present  315-6213  317-0263-COM
342Zombie Revenge                                  840-0003C  21707   19 (64Mb)   ?        315-6213  317-0249-COM   joystick + 3 buttons
30118 Wheeler (Deluxe) (Rev A)                     840-0023C    22185A  20 (64Mb)   present  315-6213  317-0273-COM
30218 Wheeler (Standard)                           840-0036C    23298   20 (64Mb)   present  315-6213  317-0273-COM
30318 Wheeler (Upright)                            840-0037C    23299   20 (64Mb)   present  315-6213  317-0273-COM
304Airline Pilots (Rev A)                          840-0005C    21739A  11 (64Mb)   present  315-6213  317-0251-COM
305Airline Pilots Deluxe (Rev B)                   ?            21787B  11 (64Mb)   present  315-6213  317-0251-COM   2 know BIOS 21801 (USA), 21802 (EXP)
306Cosmic Smash                                    840-0044C    23428    8 (64Mb)   ?        315-6213  317-0289-COM   joystick + 2 buttons
307Cosmic Smash (Rev A)                            840-0044C    23428A   8 (64Mb)   ?        315-6213  317-0289-COM   joystick + 2 buttons
308Crazy Taxi                                      840-0002C    21684   13 (64Mb)*  none     315-6213  317-0248-COM   * ic8 and ic9 are not present
309Dead Or Alive 2                                 841-0003C    22121   21 (64Mb)   present  315-6213  317-5048-COM   joystick + 3 buttons
310Dead Or Alive 2 Millennium                      841-0003C    DOA2 M  21 (64Mb)   present  315-6213  317-5048-COM   joystick + 3 buttons
311Death Crimson OX                                841-0016C    23524   10 (64Mb)   present  315-6213  317-5066-COM
312Dengen Tenshi Taisen Janshi Shangri-La          841-0004C    22060   12 (64Mb)   ?        315-6213  317-5050-JPN
313Derby Owners Club (Rev B)                       840-0016C    22099B  14 (64Mb)   ?        315-6213  317-0262-JPN   touch panel + 2 buttons + card reader
314Derby Owners Club 2000 Ver.2 (Rev A)            840-0052C    22284A  16 (64Mb)   present  315-6213  not present
315Dynamite Baseball '99 / World Series'99 (Rev B) 840-0019C    22141B  19 (64Mb)   ?        315-6213  317-0269-JPN   requires special panel (joystick + 2 buttons + bat controller for each player)
316Dynamite Baseball Naomi                         840-0001C    21575   21 (64Mb)   ?        315-6213  317-0246-JPN   requires special panel (joystick + 2 buttons + bat controller for each player)
317Ferrari F355 Challenge                          834-13842    21902   21 (64Mb)   present  315-6213  317-0254-COM
318Ferrari F355 Challenge 2 Twin                   840-0042C    23399   21 (64Mb)   present  315-6213  317-0287-COM   2 know BIOS 22850 (USA), 22851 (EXP)
319Ferrari F355 Challenge Twin                     834-13950    22848   21 (64Mb)   present  315-6213  317-0267-COM   2 know BIOS 22850 (USA), 22851 (EXP)
320Giant Gram: All Japan Pro Wrestling 2           840-0007C    21820    9 (64Mb)   ?        315-6213  317-0253-JPN   joystick + 3 buttons
321Guilty Gear X                                   841-0013C    23356   14 (64Mb)   ?        315-6213  317-5063-COM
322Gun Spike / Cannon Spike                        841-0012C    23210   12 (64Mb)   present  315-6213  317-5060-COM
323Heavy Metal Geomatrix (Rev A)                   HMG016007    23716A  11 (64Mb)   present  315-6213  317-5071-COM   joystick + 2 buttons
324House of the Dead 2                             834-13636    21385   20 (64Mb)   none     315-6213  not present
325Idol Janshi Suchie-Pai 3                        841-0002C    21979   14 (64Mb)   ?        315-6213  317-5047-JPN   requires special I/O board and mahjong panel
326Jambo! Safari (Rev A)                           840-0013C    22826A   8 (64Mb)   ?        315-6213  317-0264-COM
327Mars TV                                         840-0025C    22993   15 (64Mb)   present  315-6213  317-0074-JPN
328OutTrigger                                      840-0017C    22163   19 (64Mb)   ?        315-6213  317-0266-COM   requires analog controllers/special panel
329Power Stone                                     841-0001C    21597    8 (64Mb)   present  315-6213  317-5046-COM   joystick + 3 buttons
330Power Stone 2                                   841-0008C    23127    9 (64Mb)   present  315-6213  317-5054-COM   joystick + 3 buttons
331Puyo Puyo Da!                                   841-0006C    22206   20 (64Mb)   ?        ?         ?
332Ring Out 4x4                                    840-0004C    21779   10 (64Mb)   present  315-6213  317-0250-COM
333Samba de Amigo (Rev B)                          840-0020C    22966B  16 (64Mb)   present  315-6213  317-0270-COM   will boot but requires special controller to play it
334Sega Marine Fishing                             840-0027C    22221   10 (64Mb)   ?        315-6213  not present    ROM 3&4 not present. Requires special I/O board and fishing controller
335Sega Strike Fighter (Rev A)                     840-0035C    23323A  20 (64Mb)   present  315-6213  317-0281-COM
336Sega Tetris                                     840-0018C    22909    6 (64Mb)   present  315-6213  317-0268-COM
337Slashout                                        840-0041C    23341   17 (64Mb)   ?        315-6213  317-0286-COM   joystick + 4 buttons
338Spawn In the Demon's Hand (Rev B)               841-0005C    22977B  10 (64Mb)   ?        315-6213  317-5051-COM   joystick + 4 buttons
339The Typing of the Dead (Rev A)                  840-0026C    23021A  20 (64Mb)   present  315-6213  not present
340Touch de UNO! / Unou Nouryoku Check Machine     840-0008C    22073    4 (64Mb)   present  315-6213  317-0255-JPN
341Toy Fighter / Waffupu                           840-0011C    22035   10 (64Mb)   present  315-6212  317-0257-COM   joystick + 3 buttons
342Virtua NBA                                      840-0021C-01 23073   21 (64Mb)   present  315-6213  not present
343Virtua NBA (original)                           840-0021C    22949   21 (64Mb)   present  315-6213  317-0271-COM
344Virtua Striker 2 Ver. 2000 (Rev C)              840-0010C    21929C  14 (64Mb)*  present  315-6213  317-0258-COM   joystick + 3 buttons *(+1x 32Mb)
345Virtua Tennis / Power Smash                     840-0015C    22927   11 (64Mb)   present  315-6213  317-0263-COM
346Zombie Revenge                                  840-0003C    21707   19 (64Mb)   ?        315-6213  317-0249-COM   joystick + 3 buttons
343347
344348
345349
r241752r241753
494498Capcom Vs. SNK Millennium Fight 2000 (Rev A)    841-0011C  23511A   7 (128Mb)  315-6219   present   317-5059-COM  (000804)
495499Capcom Vs. SNK Millennium Fight 2000 (Rev C)    841-0011C  23511C   7 (128Mb)  315-6319   present   317-5059-COM  (000904)
496500Club Kart: European Session                     840-0062C  23704   11 (128Mb)  315-6319A  present   317-0313-COM
497Club Kart: European Session (Rev D)             840-0062C  21473D  11 (128Mb)  315-6319A  present   317-0313-COM
498Crackin' DJ                                     840-0043C  23450D  10 (128Mb)  315-6319   present   ?
501Club Kart: European Session (Rev D)             840-0062C  23704D  11 (128Mb)  315-6319A  present   317-0313-COM
502Club Kart: European Session (Rev C)             840-0062C          11 (128Mb)  315-6319A  present   317-0313-COM  EPR have handwritten Japanese label possible readable as 'teteto 74 lcl'
503Crackin' DJ                                     840-0043C  23450   10 (128Mb)  315-6319   present   317-0288-COM
499504Derby Owners Club II (Rev B)                    840-0083C  22306B  11 (128Mb)  315-6319A  present   not present
500505Derby Owners Club World Edition (Rev C)         840-0088C  22336C   7 (128Mb)  315-6319A  present   not present
501506Derby Owners Club World Edition (Rev D)         840-0088C  22336D   7 (128Mb)  315-6319A  present   not present   2 MaskROM are different from Rev C
r241752r241753
504509Moero Justice Gakuen / Project Justice (Rev A)  841-0015C  23548A  11 (128Mb)  315-6319A  present   317-5065-COM
505510Mushiking 2K5 1ST (Ver 1.000)                   840-0158C  24286    7 (128Mb)  315-6319A  present   not present
506511Oinori-daimyoujin Matsuri                       840-0126B  24053    5 (128Mb)  315-6319A  present   not present
507Samba de Amigo Ver. 2000                        840-0047C  23600   21 (64Mb)  315-6319A  present   317-0295-COM
512Samba de Amigo Ver. 2000                        840-0047C  23600   11 (128Mb)  315-6319A  present   317-0295-COM
508513Star Horse (big screens)                        840-0054C  23625    4 (128Mb)  315-6319   present   not present
509514Star Horse (client)                             840-0056C  23627    6 (128Mb)* 315-6319   present   not present   * +1 (64Mb)
510515Star Horse Progress (Rev A)                     840-0123C  24122A   7 (128Mb)  315-6319A  present   not present   requires an additional middle board n? 837-13785
516The King of Route 66 (Rev A)                    840-0087C  23819A  10 (128Mb)  315-6319A  present   not present
511517Virtua Striker 3 (Rev B)                        840-0061C  23663B  11 (128Mb)  315-6319A  present   317-0310-COM
512518Virtua Striker 3 (Rev C)                        840-0061C  23663C  11 (128Mb)  315-6319A  present   317-0310-COM
513519Wave Runner GP                                  840-0064C  24059    6 (128Mb)  315-6319A  present   not present
r241752r241753
41814187   NAOMI_BIOS
41824188   NAOMI_DEFAULT_EEPROM
41834189
4184   ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
4185   ROM_LOAD( "epr-23600.ic22",  0x0000000, 0x400000, CRC(8b6fed00) SHA1(72842f266ad272e4c02be42a6529c2462fd8b63f) )
4186   ROM_LOAD( "mpr-23579.ic1",   0x0800000, 0x800000, CRC(ded76d71) SHA1(9187434587173f2fcc50af817222121703c253b7) )
4187   ROM_LOAD( "mpr-23580.ic2",   0x1000000, 0x800000, CRC(a9b29be1) SHA1(4f71b37b21623d87d805cb8d7b9da73bca1d22f3) )
4188   ROM_LOAD( "mpr-23581.ic3",   0x1800000, 0x800000, CRC(7c44d4c9) SHA1(a2c6e7392a2b52c1b5c0b133bb95fbe53736ca3e) )
4189   ROM_LOAD( "mpr-23582.ic4",   0x2000000, 0x800000, CRC(99b1af20) SHA1(598abe358d6c97a0ad6d68f5273cea1b96f73237) )
4190   ROM_LOAD( "mpr-23583.ic5",   0x2800000, 0x800000, CRC(7a81bbd1) SHA1(e36895d8964d1cdd3f316f0ec27356faa3d3f6e0) )
4191   ROM_LOAD( "mpr-23584.ic6",   0x3000000, 0x800000, CRC(e478b1df) SHA1(5b316feb618a0a61974c3fb5b4c5527873055a5b) )
4192   ROM_LOAD( "mpr-23585.ic7",   0x3800000, 0x800000, CRC(2f378c38) SHA1(881c6001c173c1ef8ddbb3ae15667e45fac11f96) )
4193   ROM_LOAD( "mpr-23586.ic8",   0x4000000, 0x800000, CRC(23bec2a7) SHA1(960a6613966bedf20c19454bbc5ec52d14c3f308) )
4194   ROM_LOAD( "mpr-23587.ic9",   0x4800000, 0x800000, CRC(f52a356b) SHA1(4e3783f5e8d02d09f474cc5ece457af5c4296508) )
4195   ROM_LOAD( "mpr-23588.ic10",  0x5000000, 0x800000, CRC(4bae020b) SHA1(e3750f87309c7ac9ab6fc504a9377971451ccb5a) )
4196   ROM_LOAD( "mpr-23589.ic11",  0x5800000, 0x800000, CRC(f6a09854) SHA1(d4ae9d7ddc349e353196cb145f732798a692e560) )
4197   ROM_LOAD( "mpr-23590.ic12s", 0x6000000, 0x800000, CRC(88e29d52) SHA1(42b66f13302772729920b9af546123c771ecec6b) )
4198   ROM_LOAD( "mpr-23591.ic13s", 0x6800000, 0x800000, CRC(8736d9b1) SHA1(d829d499dc147f0d14413554ff33187c7df9134f) )
4199   ROM_LOAD( "mpr-23592.ic14s", 0x7000000, 0x800000, CRC(c7dbeefd) SHA1(7b84d2f5532668936f60314fb3e112b1350bcc51) )
4200   ROM_LOAD( "mpr-23593.ic15s", 0x7800000, 0x800000, CRC(c8d63355) SHA1(64b06027ebbcfb72ead1d2041423ffd2fe4dcd97) )
4201   ROM_LOAD( "mpr-23594.ic16s", 0x8000000, 0x800000, CRC(30a04934) SHA1(5b3e5226b1eef9f2d9a64b89307380e2b347547e) )
4202   ROM_LOAD( "mpr-23595.ic17s", 0x8800000, 0x800000, CRC(1fea68ad) SHA1(d4615f6ea0b9ce6483cb688810ef7ae287aef082) )
4203   ROM_LOAD( "mpr-23596.ic18s", 0x9000000, 0x800000, CRC(2e57f934) SHA1(9231d3b881e210fa83dda8f03a1702166eb48750) )
4204   ROM_LOAD( "mpr-23597.ic19s", 0x9800000, 0x800000, CRC(fb50cfdb) SHA1(2e95407b1c8660ae8e85b2d06c13bdc474b93d6e) )
4205   ROM_LOAD( "mpr-23598.ic20s", 0xa000000, 0x800000, CRC(897c2304) SHA1(e21b68fd935092b5bd019e3087647e9612be1169) )
4206   ROM_LOAD( "mpr-23599.ic21s", 0xa800000, 0x800000, CRC(f2d1f73f) SHA1(40ac3ef9b1c3797e986fc4a0c593dd4e49df8892) )
4207   // maskrom labels and number/size needs verification
4190   ROM_REGION( 0xb800000, "rom_board", ROMREGION_ERASEFF)
4191   ROM_LOAD( "epr-23600.ic22", 0x00000000, 0x0400000, CRC(8b6fed00) SHA1(72842f266ad272e4c02be42a6529c2462fd8b63f) )
4192   ROM_LOAD( "mpr-23589.ic1",  0x00800000, 0x1000000, CRC(11c442ed) SHA1(07a463148744a4e254bd88e51eda34f27f92f1cd) )
4193   ROM_LOAD( "mpr-23590.ic2",  0x01800000, 0x1000000, CRC(8e5959e6) SHA1(bafd00399cf3ffa50f2b55942e8424a8ae3b351d) )
4194   ROM_LOAD( "mpr-23591.ic3",  0x02800000, 0x1000000, CRC(bc9ad236) SHA1(d6f89fce7e5da0d71a536beed99aacb856455b80) )
4195   ROM_LOAD( "mpr-23592.ic4",  0x03800000, 0x1000000, CRC(eed8c7a8) SHA1(1a25b9e080ec68c42a4866bc3fd28aeae3567e86) )
4196   ROM_LOAD( "mpr-23593.ic5",  0x04800000, 0x1000000, CRC(8f704190) SHA1(6d13456fdddba70ad3e2449a002fb776b2315744) )
4197   ROM_LOAD( "mpr-23594.ic6",  0x05800000, 0x1000000, CRC(4986f81d) SHA1(8e56aa8e513a2fae087e6f6d7d0b1e3bff5f53de) )
4198   ROM_LOAD( "mpr-23595.ic7",  0x06800000, 0x1000000, CRC(f44e62a6) SHA1(51ccfa875e3f6e78ea13edcc016f9e643077d697) )
4199   ROM_LOAD( "mpr-23596.ic8",  0x07800000, 0x1000000, CRC(47b89407) SHA1(d40b71b7861b296944624ca8c0a3a306094c9db5) )
4200   ROM_LOAD( "mpr-23597.ic9",  0x08800000, 0x1000000, CRC(ef5bd4e8) SHA1(b4371e5dfbf3b011f2668b1522b0bc7def47b8ae) )
4201   ROM_LOAD( "mpr-23598.ic10", 0x09800000, 0x1000000, CRC(e06ee3dd) SHA1(21985e45e1ab5e3a79dd52492a582324a1a36d56) )
4202   ROM_LOAD( "mpr-23599.ic11", 0x0a800000, 0x1000000, CRC(1fd2e792) SHA1(6f299e527be529f85d0e8b4ce0e7a06ac0d25fe9) )
42084203
42094204   ROM_REGION( 4, "rom_key", 0 )
42104205   ROM_LOAD( "samba2k-key.bin", 0, 4, CRC(01c0d74a) SHA1(4461cfd761919ba4bc6f1d1839a880f11eaf8d0f) )
r241752r241753
63486343
63496344   ROM_REGION( 0x5800000, "rom_board", ROMREGION_ERASEFF)
63506345   ROM_LOAD( "epr-21779a.ic22",0x0000000, 0x400000, CRC(1d419767) SHA1(33065006ef437845abcf32a59e78f4bc202c4460) )
6351   ROM_LOAD( "mpr-21769.ic1",  0x0800000, 0x800000, CRC(493199fc) SHA1(189cd9a20c9207f0238e6d2e867f1479a476dfaa) )
6352   ROM_LOAD( "mpr-21770.ic2",  0x1000000, 0x800000, CRC(68173ace) SHA1(0869072915543dd5dfa6d3cdb95205521b4a3bf4) )
6353   ROM_LOAD( "mpr-21771.ic3",  0x1800000, 0x800000, CRC(41badfc3) SHA1(d4062bdbb994b8c18dac20948db9a9550f030865) )
6354   ROM_LOAD( "mpr-21772.ic4",  0x2000000, 0x800000, CRC(a8dfb537) SHA1(9f6c98ee23842b22fa3b701dad0a384a24a9bc6a) )
6355   ROM_LOAD( "mpr-21773.ic5",  0x2800000, 0x800000, CRC(3f1f5ed4) SHA1(a7d6e65fba9732efbd99e10a609f41dd03fd3bb8) )
6356   ROM_LOAD( "mpr-21774.ic6",  0x3000000, 0x800000, CRC(5a1114f0) SHA1(a45fc82bccb40e582f107b86403409651476180e) )
6357   ROM_LOAD( "mpr-21775.ic7",  0x3800000, 0x800000, CRC(5645a95c) SHA1(f0e97ff5b744972a1fa4e03e6d16a19ba20fb930) )
6358   ROM_LOAD( "mpr-21776.ic8",  0x4000000, 0x800000, CRC(22fc33dc) SHA1(922c41f7fb22b26037446bdfb4f9788a8e0c3e46) )
6359   ROM_LOAD( "mpr-21777.ic9",  0x4800000, 0x800000, CRC(6d22d29d) SHA1(382dcd62065437b34fe101144b1c047eb261f047) )
6360   ROM_LOAD( "mpr-21778.ic10", 0x5000000, 0x800000, CRC(c5308e61) SHA1(e51f8026351d5ffbda2a5bed39aeef543366febf) )
6361   // maskrom labels needs verification
6346   ROM_LOAD( "mpr-21761.ic1",  0x0800000, 0x800000, CRC(493199fc) SHA1(189cd9a20c9207f0238e6d2e867f1479a476dfaa) )
6347   ROM_LOAD( "mpr-21762.ic2",  0x1000000, 0x800000, CRC(68173ace) SHA1(0869072915543dd5dfa6d3cdb95205521b4a3bf4) )
6348   ROM_LOAD( "mpr-21763.ic3",  0x1800000, 0x800000, CRC(41badfc3) SHA1(d4062bdbb994b8c18dac20948db9a9550f030865) )
6349   ROM_LOAD( "mpr-21764.ic4",  0x2000000, 0x800000, CRC(a8dfb537) SHA1(9f6c98ee23842b22fa3b701dad0a384a24a9bc6a) )
6350   ROM_LOAD( "mpr-21765.ic5",  0x2800000, 0x800000, CRC(3f1f5ed4) SHA1(a7d6e65fba9732efbd99e10a609f41dd03fd3bb8) )
6351   ROM_LOAD( "mpr-21766.ic6",  0x3000000, 0x800000, CRC(5a1114f0) SHA1(a45fc82bccb40e582f107b86403409651476180e) )
6352   ROM_LOAD( "mpr-21767.ic7",  0x3800000, 0x800000, CRC(5645a95c) SHA1(f0e97ff5b744972a1fa4e03e6d16a19ba20fb930) )
6353   ROM_LOAD( "mpr-21768.ic8",  0x4000000, 0x800000, CRC(22fc33dc) SHA1(922c41f7fb22b26037446bdfb4f9788a8e0c3e46) )
6354   ROM_LOAD( "mpr-21769.ic9",  0x4800000, 0x800000, CRC(6d22d29d) SHA1(382dcd62065437b34fe101144b1c047eb261f047) )
6355   ROM_LOAD( "mpr-21770.ic10", 0x5000000, 0x800000, CRC(c5308e61) SHA1(e51f8026351d5ffbda2a5bed39aeef543366febf) )
63626356
63636357   ROM_REGION( 4, "rom_key", 0 )
63646358   ROM_LOAD( "ringout-key.bin", 0, 4, CRC(8f8c4eb2) SHA1(9bc59c69d04d9ce876415af048f39095ed680a5e) )
r241752r241753
63706364
63716365   ROM_REGION( 0x7000000, "rom_board", ROMREGION_ERASEFF)
63726366   ROM_LOAD( "epr-23198.ic22",  0x0000000, 0x400000, CRC(9852eda2) SHA1(71ded8cbdf567afeff30bd593071ce3b7d84a260) )
6373   ROM_LOAD( "mpr-23185.ic1",   0x0800000, 0x800000, CRC(c4fc1d45) SHA1(cfeff71ac1cccf274f00731fe1ffc182fb85f7a6) )
6374   ROM_LOAD( "mpr-23186.ic2",   0x1000000, 0x800000, CRC(b17f9924) SHA1(a9aa9f10b76964042b337b25430acff072aaa7c7) )
6375   ROM_LOAD( "mpr-23187.ic3",   0x1800000, 0x800000, CRC(575f73e8) SHA1(fe6ffeab120ad788bd692b33eca1cf22db881ac3) )
6376   ROM_LOAD( "mpr-23188.ic4",   0x2000000, 0x800000, CRC(0004ef34) SHA1(926de996549421a5835f3c8c0895a07978519215) )
6377   ROM_LOAD( "mpr-23189.ic5",   0x2800000, 0x800000, CRC(554eea29) SHA1(c82c24270dee0dd7309b117e1632827ca314615d) )
6378   ROM_LOAD( "mpr-23190.ic6",   0x3000000, 0x800000, CRC(b74ae1c5) SHA1(003fadbaa03cf43757b686f316d1104d26ae9ce8) )
6379   ROM_LOAD( "mpr-23191.ic7",   0x3800000, 0x800000, CRC(9f2a88af) SHA1(b1caf9cbf026ee6d0f12ab66cddf120e7ba9884c) )
6380   ROM_LOAD( "mpr-23192.ic8",   0x4000000, 0x800000, CRC(83014196) SHA1(cc4801534e0f0e649fc3f368af4bd3ac01288732) )
6381   ROM_LOAD( "mpr-23193.ic9",   0x4800000, 0x800000, CRC(2fde8ecf) SHA1(6da95fb04f141f2c45564460c49834bb945fb1af) )
6382   ROM_LOAD( "mpr-23194.ic10",  0x5000000, 0x800000, CRC(92f045e5) SHA1(70f741e55a47682725c7d6dcdd0e60982187fc87) )
6383   ROM_LOAD( "mpr-23195.ic11",  0x5800000, 0x800000, CRC(9e708834) SHA1(2f454688ea5b8b041bbfffaa12047afad01d020f) )
6384   ROM_LOAD( "mpr-23196.ic12s", 0x6000000, 0x800000, CRC(c86a5b9b) SHA1(4b8dda85003289e1464e12c3abf449bb8df20e3a) )
6385   ROM_LOAD( "mpr-23197.ic13s", 0x6800000, 0x800000, CRC(5adea0bd) SHA1(f8614ba83d5f61556c3db1a1796a02ed2c51ce2a) )
6386   // maskrom labels needs verification
6367   ROM_LOAD( "mpr-23182.ic1",   0x0800000, 0x800000, CRC(c4fc1d45) SHA1(cfeff71ac1cccf274f00731fe1ffc182fb85f7a6) )
6368   ROM_LOAD( "mpr-23183.ic2",   0x1000000, 0x800000, CRC(b17f9924) SHA1(a9aa9f10b76964042b337b25430acff072aaa7c7) )
6369   ROM_LOAD( "mpr-23184.ic3",   0x1800000, 0x800000, CRC(575f73e8) SHA1(fe6ffeab120ad788bd692b33eca1cf22db881ac3) )
6370   ROM_LOAD( "mpr-23185.ic4",   0x2000000, 0x800000, CRC(0004ef34) SHA1(926de996549421a5835f3c8c0895a07978519215) )
6371   ROM_LOAD( "mpr-23186.ic5",   0x2800000, 0x800000, CRC(554eea29) SHA1(c82c24270dee0dd7309b117e1632827ca314615d) )
6372   ROM_LOAD( "mpr-23187.ic6",   0x3000000, 0x800000, CRC(b74ae1c5) SHA1(003fadbaa03cf43757b686f316d1104d26ae9ce8) )
6373   ROM_LOAD( "mpr-23188.ic7",   0x3800000, 0x800000, CRC(9f2a88af) SHA1(b1caf9cbf026ee6d0f12ab66cddf120e7ba9884c) )
6374   ROM_LOAD( "mpr-23189.ic8",   0x4000000, 0x800000, CRC(83014196) SHA1(cc4801534e0f0e649fc3f368af4bd3ac01288732) )
6375   ROM_LOAD( "mpr-23190.ic9",   0x4800000, 0x800000, CRC(2fde8ecf) SHA1(6da95fb04f141f2c45564460c49834bb945fb1af) )
6376   ROM_LOAD( "mpr-23191.ic10",  0x5000000, 0x800000, CRC(92f045e5) SHA1(70f741e55a47682725c7d6dcdd0e60982187fc87) )
6377   ROM_LOAD( "mpr-23192.ic11",  0x5800000, 0x800000, CRC(9e708834) SHA1(2f454688ea5b8b041bbfffaa12047afad01d020f) )
6378   ROM_LOAD( "mpr-23193.ic12s", 0x6000000, 0x800000, CRC(c86a5b9b) SHA1(4b8dda85003289e1464e12c3abf449bb8df20e3a) )
6379   ROM_LOAD( "mpr-23194.ic13s", 0x6800000, 0x800000, CRC(5adea0bd) SHA1(f8614ba83d5f61556c3db1a1796a02ed2c51ce2a) )
63876380
63886381   ROM_REGION( 4, "rom_key", 0 )
63896382   ROM_LOAD( "vonot-key.bin", 0, 4, CRC(021ac707) SHA1(af57844331226d3b1722aedca1a7aef024468b39) )
r241752r241753
77857778   NAOMI_DEFAULT_EEPROM
77867779
77877780   ROM_REGION( 0xa800000, "rom_board", ROMREGION_ERASEFF)
7788   ROM_LOAD( "epr-23819a.ic22", 0x0000000, 0x400000, CRC(92f11b29) SHA1(b33f7eefb849754cfe194be1d48d770ed77ff69a) )
7789   ROM_LOAD( "ic1s.bin",  0x0800000, 0x800000, CRC(03da8f81) SHA1(01f9b33ffc485d8ccb2630c8cc1fcc0d90da171d) )
7790   ROM_LOAD( "ic2s.bin",  0x1000000, 0x800000, CRC(1bbbf549) SHA1(0c5269f3e8a88298408bb612dc8da4d545ce329e) )
7791   ROM_LOAD( "ic3s.bin",  0x1800000, 0x800000, CRC(6c81d0a9) SHA1(2301350098062e16afd6d4c13eeb1e46040d398f) )
7792   ROM_LOAD( "ic4s.bin",  0x2000000, 0x800000, CRC(fe245803) SHA1(3b5c4d20c447ca02306a74914c027c9193d2bb48) )
7793   ROM_LOAD( "ic5s.bin",  0x2800000, 0x800000, CRC(d8376c76) SHA1(62a64d0ff4b63a2de3b8668c0ca1d69d4cdac00e) )
7794   ROM_LOAD( "ic6s.bin",  0x3000000, 0x800000, CRC(d184a4b3) SHA1(db00cf005da52b8add695ec89f8a81cf21fc9bad) )
7795   ROM_LOAD( "ic7s.bin",  0x3800000, 0x800000, CRC(6e92fb39) SHA1(d992272e474424221c87bb71e269e10cbba1cac9) )
7796   ROM_LOAD( "ic8s.bin",  0x4000000, 0x800000, CRC(fd4c128f) SHA1(7778920f59b8bc1e9718d685bfd556f73e5c3895) )
7797   ROM_LOAD( "ic9s.bin",  0x4800000, 0x800000, CRC(5bcb3759) SHA1(57baa595eaee826ffadc17c885cb73174558feb1) )
7798   ROM_LOAD( "ic10s.bin", 0x5000000, 0x800000, CRC(7d66c409) SHA1(fa8d08587ebcd70ec39237366c5de6948efce881) )
7799   ROM_LOAD( "ic11s.bin", 0x5800000, 0x800000, CRC(322abecc) SHA1(476a751dc9849a5167e7e7e17e27987b96b1cb00) )
7800   ROM_LOAD( "ic12s.bin", 0x6000000, 0x800000, CRC(a47fff36) SHA1(5c0088e140654b89749c5dd5d729c4799afc224e) )
7801   ROM_LOAD( "ic13s.bin", 0x6800000, 0x800000, CRC(f502b666) SHA1(fa483f327cab15d10861efcbf6bdf4a2c5d0a763) )
7802   ROM_LOAD( "ic14s.bin", 0x7000000, 0x800000, CRC(ed664a57) SHA1(54421ce642208fd1f14fbbe2e326d9c8da7c9944) )
7803   ROM_LOAD( "ic15s.bin", 0x7800000, 0x800000, CRC(3f905393) SHA1(d63bbe8099b323ad4fd95401e0097b4c7151b44c) )
7804   ROM_LOAD( "ic16s.bin", 0x8000000, 0x800000, CRC(80756e62) SHA1(9b2f14ed10775ee56f245c75ee23534c99db23d4) )
7805   ROM_LOAD( "ic17s.bin", 0x8800000, 0x800000, CRC(7404e74e) SHA1(a427bf9f5e8338d34d1091de69460e374ddc6ee6) )
7806   ROM_LOAD( "ic18s.bin", 0x9000000, 0x800000, CRC(58a7fbac) SHA1(7132e018e73e68a355f92fe26121da7c3c0c927a) )
7807   ROM_LOAD( "ic19s.bin", 0x9800000, 0x800000, CRC(fd6fb2cf) SHA1(b2bf8a11d42141237db0254506ee73d9cef8b9d1) )
7808   ROM_LOAD( "ic20s.bin", 0xa000000, 0x800000, CRC(be902c2b) SHA1(1f1aa6933da528bdcef45942a0caa33cb24e7ddd) )
7781   ROM_LOAD( "epr-23819a.ic22", 0x0000000, 0x00400000, CRC(92f11b29) SHA1(b33f7eefb849754cfe194be1d48d770ed77ff69a) )
7782   ROM_LOAD("mpr-23808.ic1",  0x00800000,   0x01000000, CRC(e911bc86) SHA1(0dc658851e20425b2e697e538bb4297a221f6ae8) )
7783   ROM_LOAD("mpr-23809.ic2",  0x01800000,   0x01000000, CRC(2716aba0) SHA1(4c245874da244926bf9ac6636af4fa67e07a21e8) )
7784   ROM_LOAD("mpr-23810.ic3",  0x02800000,   0x01000000, CRC(2226accb) SHA1(c4dc71e87c2ccd866f4180129181b7ced8caf22c) )
7785   ROM_LOAD("mpr-23811.ic4",  0x03800000,   0x01000000, CRC(bbad4a93) SHA1(724c3376102b2dc79b852af1e90748b2e0023b82) )
7786   ROM_LOAD("mpr-23812.ic5",  0x04800000,   0x01000000, CRC(7beabe22) SHA1(d3cd926fc768d480ff45f1e30024bb0e31bd7d2c) )
7787   ROM_LOAD("mpr-23813.ic6",  0x05800000,   0x01000000, CRC(fe0b94ea) SHA1(0e46dff932036bec49c78a612bcfd27e07b516e8) )
7788   ROM_LOAD("mpr-23814.ic7",  0x06800000,   0x01000000, CRC(0cdf7325) SHA1(41668f873b7842dac1bc85aa2b6bd6512edc9b64) )
7789   ROM_LOAD("mpr-23815.ic8",  0x07800000,   0x01000000, CRC(ef327ab8) SHA1(9dfc564084a75b9c3935374347f1709d2e86e469) )
7790   ROM_LOAD("mpr-23816.ic9",  0x08800000,   0x01000000, CRC(bbaf0765) SHA1(3b79a4eff504b2156bea8b86c6cdd8e41e7bf268) )
7791   ROM_LOAD("mpr-23817.ic10", 0x09800000,   0x01000000, CRC(e179cfb6) SHA1(1120036238439f8ac1041150396e4b60e4a243bc) )
78097792
78107793   ROM_REGION( 4, "rom_key", ROMREGION_ERASE00 )
78117794ROM_END
r241752r241753
79177900   NAOMI_DEFAULT_EEPROM
79187901
79197902   ROM_REGION( 0xb800000, "rom_board", ROMREGION_ERASEFF)
7920   ROM_LOAD( "epr-21473d.ic22",0x0000000, 0x0400000, CRC(60ac770c) SHA1(2f1688f2046e794d1c1e06912b46c1573d934608) )
7903   ROM_LOAD( "epr-23704d.ic22",0x0000000, 0x0400000, CRC(60ac770c) SHA1(2f1688f2046e794d1c1e06912b46c1573d934608) )
79217904   ROM_LOAD( "mpr-23693.ic1",  0x0800000, 0x1000000, CRC(28995764) SHA1(a1457f9935dde2e5aaa5ef245c736c0f2f8c74b7) )
79227905   ROM_LOAD( "mpr-23694.ic2",  0x1800000, 0x1000000, CRC(37d30111) SHA1(4c07df8cd548cac79d48709e61f692d762471f8f) )
79237906   ROM_LOAD( "mpr-23695.ic3",  0x2800000, 0x1000000, CRC(41ac1510) SHA1(01b889b627fdfc1f12a0c84fcc36debdfb1cf377) )
r241752r241753
79347917   ROM_LOAD( "clubkrte-key.bin", 0, 4, CRC(db426a5d) SHA1(6a6a0b80ec0416605541159efea379dc19fe796d) )
79357918ROM_END
79367919
7920ROM_START( clubkrtc )
7921   NAOMI2_BIOS
7922   NAOMI_DEFAULT_EEPROM
7923
7924   ROM_REGION( 0xb800000, "rom_board", ROMREGION_ERASEFF)
7925   ROM_LOAD( "epr-23704c.ic22",0x0000000, 0x0400000, CRC(45ea13c3) SHA1(48cddba0506010dc705f04457f784a1d455ef3a6) )
7926   ROM_LOAD( "mpr-23693.ic1",  0x0800000, 0x1000000, CRC(28995764) SHA1(a1457f9935dde2e5aaa5ef245c736c0f2f8c74b7) )
7927   ROM_LOAD( "mpr-23694.ic2",  0x1800000, 0x1000000, CRC(37d30111) SHA1(4c07df8cd548cac79d48709e61f692d762471f8f) )
7928   ROM_LOAD( "mpr-23695.ic3",  0x2800000, 0x1000000, CRC(41ac1510) SHA1(01b889b627fdfc1f12a0c84fcc36debdfb1cf377) )
7929   ROM_LOAD( "mpr-23696.ic4",  0x3800000, 0x1000000, CRC(6f2da455) SHA1(b655757bc513398820bfeae07dca8a4f3ea9752c) )
7930   ROM_LOAD( "mpr-23697.ic5",  0x4800000, 0x1000000, CRC(1383c742) SHA1(6efd17632a277a4bb0e47cc912fbc9865a8b14c3) )
7931   ROM_LOAD( "mpr-23698.ic6",  0x5800000, 0x1000000, CRC(da79cd06) SHA1(fdfe068caca1eb764dec28ab327e56b39144f3ae) )
7932   ROM_LOAD( "mpr-23699.ic7",  0x6800000, 0x1000000, CRC(ea77f000) SHA1(35aa8ee804d9429e72f516137a3b06c585a57b6d) )
7933   ROM_LOAD( "mpr-23700.ic8",  0x7800000, 0x1000000, CRC(db9e5c1d) SHA1(db918c0fa1860f4345806e574d44354aba5fcd54) )
7934   ROM_LOAD( "mpr-23701.ic9",  0x8800000, 0x1000000, CRC(0fa92fd7) SHA1(67a1cf085101884a17a4783d0d509ab198aa6425) )
7935   ROM_LOAD( "mpr-23702.ic10", 0x9800000, 0x1000000, CRC(e302b582) SHA1(787192ed9f9a08541eecc3128855485cad802a42) )
7936   ROM_LOAD( "mpr-23703.ic11", 0xa800000, 0x1000000, CRC(702b8b4a) SHA1(3a8dfde458f341e7db20664382b9fce2b6e5d462) )
7937
7938   ROM_REGION( 4, "rom_key", 0 )
7939   ROM_LOAD( "clubkrte-key.bin", 0, 4, CRC(db426a5d) SHA1(6a6a0b80ec0416605541159efea379dc19fe796d) )
7940ROM_END
7941
79377942ROM_START( clubkprz )
79387943   NAOMI2_BIOS
79397944   NAOMI_DEFAULT_EEPROM
r241752r241753
80328037   ROM_LOAD( "clubk2k3-key.bin", 0x000000, 0x000004, CRC(96c3b4f6) SHA1(9b85a418153c70f56aaeeb1ed0bbbbd31a1bbad7) )
80338038ROM_END
80348039
8035// source was some kind of (developer/proto?) flash cart, needs verification
8036// uses the same mask roms as clubk2k3, but EPR doesn't have checksumms for them, so rom test shows all roms as BAD
8037ROM_START( clubk2kf )
8040// uses the same mask roms data as clubk2k3, but most likely not in 32bit dissected form, EPR doesn't have checksumms for them, so rom test shows all roms as BAD
8041ROM_START( clubk2kp )
80388042   NAOMI2_BIOS
80398043   NAOMI_DEFAULT_EEPROM
80408044
r241752r241753
89318935/* 0061 */ GAME( 2001, vstrik3cb,vstrik3c,naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart, Rev B)", GAME_FLAGS )
89328936/* 0062 */ GAME( 2001, clubkrte, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart: European Session", GAME_FLAGS )
89338937/* 0062 */ GAME( 2001, clubkrtd, clubkrte,naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart: European Session (Rev D)", GAME_FLAGS )
8938/* 0062 */ GAME( 2001, clubkrtc, clubkrte,naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart: European Session (Rev C)", GAME_FLAGS )
89348939/* 0080 */ GAME( 2002, vf4cart,  naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Virtua Fighter 4 (Cartridge)", GAME_FLAGS )
89358940/* 0087 */ GAME( 2002, kingrt66, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "King of Route 66 (Rev A)", GAME_FLAGS )
89368941/* 0095 */ GAME( 2002, soulsurf, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Soul Surfer (Rev A)", GAME_FLAGS )
r241752r241753
89408945/* 0137 */ GAME( 2004, clubkpzb, naomi2,  naomi2m1, naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart Prize Ver. B", GAME_FLAGS )
89418946// needs verification is this dump really from 840-0139C cart
89428947/* 0139 */ GAME( 2003, clubk2k3, naomi2,  naomi2m1, naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart: European Session (2003)", GAME_FLAGS )
8943// source is some kind of (developer/proto?) flash cart, needs verification
8944/* ???  */ GAME( 2003, clubk2kf, clubk2k3,naomi2,   naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart: European Session (2003, not protected)", GAME_FLAGS )
8948/* ???  */ GAME( 2003, clubk2kp, clubk2k3,naomi2,   naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart: European Session (2003, prototype)", GAME_FLAGS )
89458949
89468950/* 841-xxxxx ("Licensed by Sega" Naomi cart games)*/
89478951/* 0001 */ GAME( 1999, pstone,   naomi, naomim2, naomi,   naomi_state, naomi,  ROT0,  "Capcom",          "Power Stone (JPN, USA, EUR, ASI, AUS)", GAME_FLAGS )
r241752r241753
90689072// 00??  Dragon Treasure
90699073// 00??  Dragon Treasure 2
90709074// 00??  Get Bass 2
9071// 00??  Kodai Ouja Kyouryuu King
90729075
90739076/* GDL-xxxx ("licensed by Sega" GD-ROM games) */
90749077/* 0001  */ GAME( 2001, gundmgd, naomigd, naomigd, naomi, naomi_state,  naomigd,  ROT0,"Capcom / Banpresto","Mobile Suit Gundam: Federation Vs. Zeon (GDL-0001)", GAME_FLAGS )
r241752r241753
91349137// 10015  CD  - World Club Champion Football European Clubs 2004-2005 Ver.1.1 (Sega, 2005)
91359138// 10015P CD  - World Club Champion Football European Clubs 2004-2005 Ver.3.22 (Sega, 2005)
91369139// 10027  CD  - World Club Champion Football European Clubs 2005-2006 (Sega, 2006)
9137// 10030  DVD - Mobile Suit Gundam 0083 Card Builder (Banpresto, 2007)
9138// ?????  ??? - Mobile Suit Gundam 0079 Card Builder (Banpresto, 2005)
9139// ?????  ??? - Mobile Suit Gundam 0079 Card Builder (Ver.1.007) (Banpresto, 2006)
9140// ?????  ??? - Mobile Suit Gundam 0079 Card Builder (Ver.2.00) (Banpresto, 2006)
9141// ?????  ??? - Mobile Suit Gundam 0079 Card Builder (Ver.2.01) (Banpresto, 2006)
9142// ?????  ??? - Mobile Suit Gundam 0079 Card Builder (Ver.2.02) (Banpresto, 2006)
9143// ?????  ??? - Mobile Suit Gundam 0083 Card Builder Ryouyuu Gekitotsu (Banpresto, 2007)
91449140// ?????  ??? - World Club Champion Football Serie A 2001-2002 (Sega, 2002)
91459141// ?????  ??? - World Club Champion Football Serie A 2001-2002 Ver.1.2 (Sega, 2002)
91469142// ?????  ??? - World Club Champion Football Serie A 2001-2002 Ver.2 (Sega, 2003)
r241752r241753
91499145// ?????  ??? - World Club Champion Football European Clubs 2004-2005 Ver.1.2 (Sega, 2005)
91509146// ?????  ??? - World Club Champion Football European Clubs 2005-2006 bugfix (Sega, 2006)
91519147
9148/* MDA-Gxxxx (Compact Flash replacement of Naomi 2 GD-ROM releases) */
9149// 0001 - Club Kart Cycraft Edition (GDS-0029)
9150// 0003 - Initial D Arcade Stage Ver. 1 (Export) (GDS-0025A)
9151// 0005 - Initial D Arcade Stage Ver. 2 (Export) (GDS-0027)
9152// 0007 - Initial D Arcade Stage Ver. 3 (Export) (GDS-0033)
91529153
91539154
91549155/* Atomiswave */
trunk/src/mame/drivers/ninjakd2.c
r241752r241753
11331133   ROM_LOAD( "nk2_09.rom",   0x0000, 0x10000, CRC(c1d2d170) SHA1(0f325815086fde90fd85360d3660042b0b68ba96) )   // 9.6c  unsigned 8-bit pcm samples
11341134ROM_END
11351135
1136// Is this official? works with any program rom set, but nowhere in any program roms is the title JT-104 mentioned.
1137// It was found on a board with RAD ACTION program roms.
1138//
1139// In addition to the title screen text change the new graphic ROM has 'UNITED AMUSEMENTS' license text replacing
1140// the regular UPL copyright (used on the interludes) however because it is using the RAD ACTION program roms the
1141// title screen still shows the 'World Games' license text.
1142//
1143// Did this board have incorrect program roms, or is this just how it was?
1144
1145
1146ROM_START( jt104 ) // identical to radaction set with different gfx rom and decrypted sound rom
1147   ROM_REGION( 0x30000, "maincpu", 0 )
1148   ROM_LOAD( "1.3u",         0x00000, 0x8000, CRC(5c475611) SHA1(2da88a95b5d68b259c8ae48af1438a82a1d601c1) )
1149   ROM_LOAD( "2.3s",         0x10000, 0x8000, CRC(a1e23bd2) SHA1(c3b6574dc9fa66b4f41c37754a0d20a865f8bc28) )   // banked at 8000-bfff
1150   ROM_LOAD( "nk2_03.rom",   0x18000, 0x8000, CRC(ad275654) SHA1(7d29a17132adb19aeee9b98be5b76bd6e91f308e) )   // 3.3r
1151   ROM_LOAD( "nk2_04.rom",   0x20000, 0x8000, CRC(e7692a77) SHA1(84beb8b02c564bffa9cc00313214e8f109bd40f9) )   // 4.3p
1152   ROM_LOAD( "nk2_05.bin",   0x28000, 0x8000, CRC(960725fb) SHA1(160c8bfaf089cbeeef2023f12379793079bff93b) )   // 5.3m
1153
1154   ROM_REGION( 2*0x10000, "soundcpu", 0 )
1155   ROM_LOAD( "nk2_06.bin",   0x10000, 0x8000, CRC(7bfe6c9e) SHA1(aef8cbeb0024939bf65f77113a5cf777f6613722) )   // decrypted opcodes
1156   ROM_CONTINUE(             0x00000, 0x8000 )                                                                 // decrypted data
1157
1158   ROM_REGION( 0x2000, "user1", 0 ) /* MC8123 key */
1159   ROM_LOAD( "ninjakd2.key",  0x0000, 0x2000, CRC(ec25318f) SHA1(619da3f69f9919e1457f79ee1d38e7ec80c4ebb0) )
1160
1161   ROM_REGION( 0x08000, "gfx1", 0 )    // fg tiles (need lineswapping)
1162   ROM_LOAD( "jt_104_12.bin",        0x00000, 0x08000, CRC(c038fadb) SHA1(59e9b125ead3e9bdc9d66de75dffd58956eb922e) )  // this rom contains the new title / license
1163
1164   ROM_REGION( 0x20000, "gfx2", 0 )    // sprites (need lineswapping)
1165   ROM_LOAD( "nk2_08.rom",   0x00000, 0x10000, CRC(1b79c50a) SHA1(8954bc51cb9fbbe16b09381f35c84ccc56a803f3) )
1166   ROM_LOAD( "nk2_07.rom",   0x10000, 0x10000, CRC(0be5cd13) SHA1(8f94a8fef6668aaf13329715fee81302dbd6c685) )
1167
1168   ROM_REGION( 0x20000, "gfx3", 0 )    // bg tiles (need lineswapping)
1169   ROM_LOAD( "nk2_11.rom",   0x00000, 0x10000, CRC(41a714b3) SHA1(b05f48d71a9837914c12c13e0b479c8a6dc8c25e) )
1170   ROM_LOAD( "nk2_10.rom",   0x10000, 0x10000, CRC(c913c4ab) SHA1(f822c5621b3e32c1a284f6367bdcace81c1c74b3) )
1171
1172   ROM_REGION( 0x10000, "pcm", 0 )
1173   ROM_LOAD( "nk2_09.rom",   0x0000, 0x10000, CRC(c1d2d170) SHA1(0f325815086fde90fd85360d3660042b0b68ba96) )   // unsigned 8-bit pcm samples
1174ROM_END
1175
1176
11361177ROM_START( mnight )
11371178   ROM_REGION( 0x30000, "maincpu", 0 )
11381179   ROM_LOAD( "mn6-j19.bin",  0x00000, 0x8000, CRC(56678d14) SHA1(acf3a97ca29db8ab9cad69599c5567464af3ae44) )
r241752r241753
14901531GAME( 1987, ninjakd2,  0,        ninjakd2, ninjakd2, ninjakd2_state, ninjakd2, ROT0,   "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 1)", GAME_SUPPORTS_SAVE )
14911532GAME( 1987, ninjakd2a, ninjakd2, ninjakd2, ninjakd2, ninjakd2_state, bootleg,  ROT0,   "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 2, bootleg?)", GAME_SUPPORTS_SAVE )
14921533GAME( 1987, ninjakd2b, ninjakd2, ninjakd2, rdaction, ninjakd2_state, bootleg,  ROT0,   "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 3, bootleg?)", GAME_SUPPORTS_SAVE )
1493GAME( 1987, rdaction,  ninjakd2, ninjakd2, rdaction, ninjakd2_state, ninjakd2, ROT0,   "UPL (World Games license)", "Rad Action / NinjaKun Ashura no Shou", GAME_SUPPORTS_SAVE )
1534GAME( 1987, rdaction,  ninjakd2, ninjakd2, rdaction, ninjakd2_state, ninjakd2, ROT0,   "UPL (World Games license)",       "Rad Action / NinjaKun Ashura no Shou", GAME_SUPPORTS_SAVE )
1535GAME( 1987, jt104,     ninjakd2, ninjakd2, rdaction, ninjakd2_state, bootleg,  ROT0,   "UPL (United Amusements license)", "JT-104 (title screen modification of Rad Action)", GAME_SUPPORTS_SAVE )
14941536GAME( 1987, mnight,    0,        mnight,   mnight,   ninjakd2_state, mnight,   ROT0,   "UPL (Kawakus license)", "Mutant Night", GAME_SUPPORTS_SAVE )
14951537GAME( 1988, arkarea,   0,        arkarea,  arkarea,  ninjakd2_state, mnight,   ROT0,   "UPL", "Ark Area", GAME_SUPPORTS_SAVE )
14961538GAME( 1988, robokid,   0,        robokid,  robokid,  ninjakd2_state, robokid,  ROT0,   "UPL", "Atomic Robo-kid", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/pcxt.c
r241752r241753
685685   m_lastvalue = -1;
686686
687687   m_pc_spkrdata = 0;
688   m_pit_out2 = 0;
688   m_pit_out2 = 1;
689689   m_wss2_data = 0;
690690   m_speaker->level_w(0);
691691}
trunk/src/mame/drivers/peplus.c
r241752r241753
1010
1111    --- Technical Notes ---
1212
13    Name:    Player's Edge Plus (PP0516) Double Bonus Draw Poker.
14    Company: IGT - International Game Technology
15    Year:    1987
16
1713    Hardware:
1814
1915    CPU =  INTEL 80C32       ; I8052 compatible
r241752r241753
4541
46421) What are "set chips" ?
4743
48    They are meant to be used after you have already sucessfully put a new game in your machine.
44    They are meant to be used after you have already successfully put a new game in your machine.
4945    Lets say you have 'pepp0516' installed and you go through the setup. In a real machine,
5046    you may want to add a bill validator. The only way to do that is to un-socket the 'pepp0516'
5147    chip and put in the 'peset038' chip and then reboot the machine. Then this chip's program
r241752r241753
10298
103993a) About the "autohold" feature
104100
105    Depending on laws which vary from cities/country, this feature can available or not in the
106    "operator mode". By default, it isn't available. To have this feature available in the
107    "operator mode", a new chip has to be burnt with a bit set and a new checksum (game ID
108    doesn't change though). Each program rom requires a specific address to be set to 0x01
109    to enable this option. It is beyond the scope of this driver to provide that information
110    for each set that is supported. Only PP0197 & PP0419 have support for Autohold enabled.
101    Depending on local laws which vary from one jurisdiction to another, this feature may be
102    available in the "operator mode". This requires a specific build for said jurisdiction.
103    Currently the only dumped sets with the Auto Hold feature enabled are PP0197 & PP0419.
111104
112105
113106Stephh's log (2007.11.28) :
r241752r241753
149142   XnnnnnnP Poker Data. Contains poker game + paytable percentages
150143             Data roms will not work with every Program rom. Incompatible combos report: Incompatible Data EPROM
151144             X000055P is a good example, it works with 19 XP000xxx Program roms. Others may be as few as 2.
152  XMPnnnnn  Multi-Poker Programs. Different options for each set, but all use the same XMnnnnnP data roms
153             XMP00002 through XMP00006 & XMP00024 Use the XM000xxP Poker Data
145  XMPnnnnn  Multi-Poker Programs. Different options for each set, but all use the same XMnnnnnP data
146             XMP00002 through XMP00006 & XMP00024 Use the XM000xxP Multi-Poker Data
154147             XMP00014, XMP00017 & XMP00030 Use the WING Board add-on and use the XnnnnnnP Poker Data (Not all are compatible!)
148             XMP00013, XMP00022 & XMP00026 Use the WING Board add-on & CG2346 + CAPX2346 for Spanish paytables
149             XMP00025 Uses the Wing Board add-on and is for the International markets. Auto Hold always enabled.
155150   XMnnnnnP Multi-Poker Data. Contains poker games + paytable percentages: Requires specific CG graphics + CAP color prom
156151  XKnnnnnn  Spot Keno Programs. Different options for each set, but all use the same XnnnnnnK data roms
157152   XnnnnnnK Spot Keno Data. Uses CG2120 with CAP1267
r241752r241753
308303static const UINT8  id_022[8] = { 0x00, 0x01, 0x04, 0x09, 0x13, 0x16, 0x18, 0x00 };
309304static const UINT16 id_023[8] = { 0x4a6c, 0x4a7b, 0x4a4b, 0x4a5a, 0x4a2b, 0x4a0a, 0x4a19, 0x4a3a };
310305
311#define MASTER_CLOCK        XTAL_20MHz
312#define CPU_CLOCK           ((MASTER_CLOCK)/2)      /* divided by 2 - 7474 */
313#define MC6845_CLOCK        ((MASTER_CLOCK)/8/3)
314#define SOUND_CLOCK         ((MASTER_CLOCK)/12)
315306
316
317307/**************
318308* Memory Copy *
319309***************/
r241752r241753
12971287
12981288static MACHINE_CONFIG_START( peplus, peplus_state )
12991289   // basic machine hardware
1300   MCFG_CPU_ADD("maincpu", I80C32, CPU_CLOCK)
1290   MCFG_CPU_ADD("maincpu", I80C32, XTAL_20MHz/2) /* 10MHz */
13011291   MCFG_CPU_PROGRAM_MAP(peplus_map)
13021292   MCFG_CPU_IO_MAP(peplus_iomap)
13031293
r241752r241753
13151305   MCFG_PALETTE_ADD("palette", 16*16*2)
13161306   MCFG_PALETTE_INIT_OWNER(peplus_state, peplus)
13171307
1318   MCFG_MC6845_ADD("crtc", R6545_1, "screen", MC6845_CLOCK)
1308   MCFG_MC6845_ADD("crtc", R6545_1, "screen", XTAL_20MHz/8/3)
13191309   MCFG_MC6845_SHOW_BORDER_AREA(false)
13201310   MCFG_MC6845_CHAR_WIDTH(8)
13211311   MCFG_MC6845_ADDR_CHANGED_CB(peplus_state, crtc_addr)
r241752r241753
13261316   // sound hardware
13271317   MCFG_SPEAKER_STANDARD_MONO("mono")
13281318
1329   MCFG_SOUND_ADD("aysnd", AY8912, SOUND_CLOCK)
1319   MCFG_SOUND_ADD("aysnd", AY8912, XTAL_20MHz/12)
13301320   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
13311321MACHINE_CONFIG_END
13321322
r241752r241753
13791369*        Rom Load        *
13801370*************************/
13811371
1382ROM_START( peset001 ) /* Normal board : Set Chip (Set001) - Use for PP0542 */
1372ROM_START( peset001 ) /* Normal board : Set Chip (Set001) - PE+ Set Denomination */
13831373   ROM_REGION( 0x10000, "maincpu", 0 )
13841374   ROM_LOAD( "set001.u68",   0x00000, 0x10000, CRC(03397ced) SHA1(89d8ba7e6706e6d34ae9aae09a8a631fff06a36f) )
13851375
r241752r241753
13931383   ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
13941384ROM_END
13951385
1396ROM_START( peset038 ) /* Normal board : Set Chip (Set038) */
1386ROM_START( peset004 ) /* Normal board : Set Chip (Set004) - PE+ Set Denomination / Enable Validator */
13971387   ROM_REGION( 0x10000, "maincpu", 0 )
1388   ROM_LOAD( "set004.u68",   0x00000, 0x10000, CRC(b5729571) SHA1(fa3bb1fec81692a898213f9521ac0b2a4d1a8968) )
1389
1390   ROM_REGION( 0x020000, "gfx1", 0 )
1391   ROM_LOAD( "mro-cg740.u72",   0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
1392   ROM_LOAD( "mgo-cg740.u73",   0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
1393   ROM_LOAD( "mbo-cg740.u74",   0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
1394   ROM_LOAD( "mxo-cg740.u75",   0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
1395
1396   ROM_REGION( 0x100, "proms", 0 )
1397   ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
1398ROM_END
1399
1400/* Known to exsist SET033 - PE+ Set Denomination / Enable Validator / SAS 4.0 */
1401
1402ROM_START( peset038 ) /* Normal board : Set Chip (Set038) - PE+ Set Denomination / Enable Validator */
1403   ROM_REGION( 0x10000, "maincpu", 0 )
13981404   ROM_LOAD( "set038.u68",   0x00000, 0x10000, CRC(9c4b1d1a) SHA1(8a65cd1d8e2d74c7b66f4dfc73e7afca8458e979) )
13991405
14001406   ROM_REGION( 0x020000, "gfx1", 0 )
r241752r241753
14071413   ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
14081414ROM_END
14091415
1416ROM_START( peivc006 ) /* Normal board : Clear Chip (IVC006) - PE+ Clear CMOS / E-Square */
1417   ROM_REGION( 0x10000, "maincpu", 0 )
1418   ROM_LOAD( "ivc006.u68",   0x00000, 0x8000, CRC(9a408727) SHA1(cc2d9ba66c461ae81f9fae1e068981d8de093416) ) /* 27C256 EPROM */
1419   ROM_RELOAD(               0x08000, 0x8000)
1420
1421   ROM_REGION( 0x020000, "gfx1", 0 )
1422   ROM_LOAD( "mro-cg740.u72",   0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
1423   ROM_LOAD( "mgo-cg740.u73",   0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
1424   ROM_LOAD( "mbo-cg740.u74",   0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
1425   ROM_LOAD( "mxo-cg740.u75",   0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
1426
1427   ROM_REGION( 0x100, "proms", 0 )
1428   ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
1429ROM_END
1430
14101431ROM_START( pepk1024 ) /* Normal (non-plus) board : Aces and Faces 4 of a Kind Bonus Poker (PK1024) */
14111432/*
14121433                                      2-10 J-A
r241752r241753
45974618   ROM_LOAD( "cap656.u50", 0x0000, 0x0100, CRC(038cabc6) SHA1(c6514b4f9dbed6ab2631f563f7e00648661ebdbb) )
45984619ROM_END
45994620
4621ROM_START( pemg0252 ) /* Normal board : Player's Choice Multi-Game MG0252 - Requires a Printer (not yet supported) */
4622   ROM_REGION( 0x10000, "maincpu", 0 )
4623   ROM_LOAD( "mg0252.u68",   0x00000, 0x10000, CRC(1d0ba4f1) SHA1(f906a11d171318a06fb0bb09783bd8e3b99f1ca9) ) /* Stalls with "PRINTER ERROR" */
4624
4625   ROM_REGION( 0x020000, "gfx1", 0 )
4626   ROM_LOAD( "mro-cg2076.u72",   0x00000, 0x8000, CRC(84634f0e) SHA1(8f1b9aaa92e861f00569053c1112c2fb7eb577e8) )
4627   ROM_LOAD( "mgo-cg2076.u73",   0x08000, 0x8000, CRC(cd5dad56) SHA1(60c61f107860151c31be61504eb42fa93d0d41d9) )
4628   ROM_LOAD( "mbo-cg2076.u74",   0x10000, 0x8000, CRC(cda4ac28) SHA1(84a722f782563f713978403cd6b21492252721cf) )
4629   ROM_LOAD( "mxo-cg2076.u75",   0x18000, 0x8000, CRC(8e087d93) SHA1(25172001f5e0221aeda52fd51f4605eed24df806) )
4630
4631   ROM_REGION( 0x100, "proms", 0 )
4632   ROM_LOAD( "cap1426.u50", 0x0000, 0x0100, CRC(6c7c3462) SHA1(b5481b548f4db460d27a4bfebb08188f36ca0c11) )
4633ROM_END
4634
46004635ROM_START( pebe0014 ) /* Normal board : Blackjack (BE0014) */
46014636/*
46024637Paytable ID: BJ7
r241752r241753
46434678   ROM_LOAD( "cap707.u50", 0x0000, 0x0100, CRC(9851ba36) SHA1(5a0a43c1e212ae8c173102ede9c57a3d95752f99) )
46444679ROM_END
46454680
4681ROM_START( peke0017 ) /* Normal board : Keno 1-10 Spot (KE0017) */
4682   ROM_REGION( 0x10000, "maincpu", 0 )
4683   ROM_LOAD( "ke0017_560-a07.u68",  0x00000, 0x08000, CRC(a0f70116) SHA1(15808cd3245e2e5934f3365f95590da0be552e8b) ) /* Game Version: 560, Library Version: A07 */
4684   ROM_RELOAD(                      0x08000, 0x8000) /* 32K version built using earlier gaming libraries */
4685
4686   ROM_REGION( 0x020000, "gfx1", 0 )
4687   ROM_LOAD( "mro-cg1016.u72",  0x00000, 0x8000, CRC(92072064) SHA1(ccd12303afb559a57f135f5feff1eada4394c45b) )
4688   ROM_LOAD( "mgo-cg1016.u73",  0x08000, 0x8000, CRC(fd54f031) SHA1(0990338d00574d798bed2c13ed2cf65118698a65) )
4689   ROM_LOAD( "mbo-cg1016.u74",  0x10000, 0x8000, CRC(6325ff0b) SHA1(cca693b42d458024d11badf02923f0aedc5252ba) )
4690   ROM_LOAD( "mxo-cg1016.u75",  0x18000, 0x8000, CRC(54345a8c) SHA1(928f1633343a1d81ef193ebd09de0d36c52057ca) )
4691
4692   ROM_REGION( 0x100, "proms", 0 )
4693   ROM_LOAD( "cap1016.u50", 0x0000, 0x0100, CRC(12e1be25) SHA1(501487bc729eb80fcf9e61705d3546de5e0d7cde) )
4694ROM_END
4695
46464696ROM_START( peke1012 ) /* Normal board : Keno 1-10 Spot (KE1012) - Payout 90.27%, Paytable 90-P */
46474697   ROM_REGION( 0x10000, "maincpu", 0 )
46484698   ROM_LOAD( "ke1012_576-a3u.u68",   0x00000, 0x10000, CRC(470e8c10) SHA1(f8a65a3a73477e9e9d2f582eeefa93b470497dfa) ) /* Game Version: 576, Library Version: A3U */
r241752r241753
87168766/*    YEAR  NAME      PARENT  MACHINE   INPUT         INIT      ROT    COMPANY                                  FULLNAME                                                  FLAGS   LAYOUT */
87178767
87188768/* Set chips */
8719GAMEL(1987, peset001, 0,      peplus,  peplus_schip, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (Set001) Set Chip",                      0,   layout_pe_schip )
8720GAMEL(1987, peset038, 0,      peplus,  peplus_schip, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (Set038) Set Chip",                      0,   layout_pe_schip )
8769GAMEL(1987, peset001, 0,         peplus,  peplus_schip, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (SET001) Set Chip",                      0,   layout_pe_schip )
8770GAMEL(1987, peset004, 0,         peplus,  peplus_schip, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (SET004) Set Chip",                      0,   layout_pe_schip )
8771GAMEL(1987, peset038, 0,         peplus,  peplus_schip, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (SET038) Set Chip",                      0,   layout_pe_schip )
8772GAMEL(1987, peivc006, 0,         peplus,  peplus_schip, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (IVC006) Clear EEPROM Chip",             0,   layout_pe_schip )
87218773
87228774/* Normal (non-plus) board : Poker */
87238775GAMEL(1987, pepk1024,  0,        peplus, nonplus_poker, peplus_state, nonplus,  ROT0,  "IGT - International Game Technology", "Player's Edge (PK1024) Aces and Faces Bonus Poker",         0, layout_pe_poker )
r241752r241753
87348786GAMEL(1987, pepp0040,  pepp0002, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0040) Standard Draw Poker",           0, layout_pe_poker )
87358787GAMEL(1987, pepp0041,  pepp0002, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0041) Standard Draw Poker",           0, layout_pe_poker )
87368788GAMEL(1987, pepp0043,  pepp0002, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0043) 10's or Better",                0, layout_pe_poker )
8737GAMEL(1987, pepp0043a, pepp0002, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0043) 10's or Better (International)", 0, layout_pe_poker )
8789GAMEL(1987, pepp0043a, pepp0002, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0043) 10's or Better (International)",0, layout_pe_poker )
87388790GAMEL(1987, pepp0045,  pepp0002, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0045) 10's or Better",                0, layout_pe_poker )
87398791GAMEL(1987, pepp0046,  pepp0002, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0046) 10's or Better (set 1)",        0, layout_pe_poker )
8740GAMEL(1987, pepp0046a, pepp0002, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0046) 10's or Better (International)",   0, layout_pe_poker )
8792GAMEL(1987, pepp0046a, pepp0002, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0046) 10's or Better (International)",0, layout_pe_poker )
87418793GAMEL(1987, pepp0046b, pepp0002, peplus,  peplus_poker, peplus_state, nonplus,  ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0046) 10's or Better (set 2)",        0, layout_pe_poker )
87428794GAMEL(1987, pepp0051,  pepp0053, peplus,  peplus_poker, peplus_state, nonplus,  ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0051) Joker Poker",                   0, layout_pe_poker )
87438795GAMEL(1987, pepp0053,  0,        peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0053) Joker Poker (Aces or Better)",  0, layout_pe_poker )
r241752r241753
87628814GAMEL(1987, pepp0126,  pepp0055, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0126) Deuces Wild Poker",             0, layout_pe_poker )
87638815GAMEL(1987, pepp0127,  0,        peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0127) Deuces Joker Wild Poker",       0, layout_pe_poker )
87648816GAMEL(1987, pepp0127a, pepp0127, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0127) Deuces Joker Wild Poker (International)", 0, layout_pe_poker )
8765GAMEL(1987, pepp0158,  0,        peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 1)",  0, layout_pe_poker )
8766GAMEL(1987, pepp0158a, pepp0158, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 2)",  0, layout_pe_poker )
8767GAMEL(1987, pepp0158b, pepp0158, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 3)",  0, layout_pe_poker )
8768GAMEL(1987, pepp0158c, pepp0158, peplus,  peplus_poker, peplus_state, nonplus,  ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 4)",  0, layout_pe_poker )
8817GAMEL(1987, pepp0158,  0,        peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 1)", 0, layout_pe_poker )
8818GAMEL(1987, pepp0158a, pepp0158, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 2)", 0, layout_pe_poker )
8819GAMEL(1987, pepp0158b, pepp0158, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 3)", 0, layout_pe_poker )
8820GAMEL(1987, pepp0158c, pepp0158, peplus,  peplus_poker, peplus_state, nonplus,  ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 4)", 0, layout_pe_poker )
87698821GAMEL(1987, pepp0159,  pepp0002, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0159) Standard Draw Poker (International)", 0, layout_pe_poker )
87708822GAMEL(1987, pepp0171,  pepp0053, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0171) Joker Poker",                   0, layout_pe_poker )
87718823GAMEL(1987, pepp0171a, pepp0053, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0171) Joker Poker (International)",   0, layout_pe_poker )
r241752r241753
87908842GAMEL(1987, pepp0242,  pepp0055, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0242) Deuces Wild Poker (International English/Spanish)", 0, layout_pe_poker )
87918843GAMEL(1987, pepp0249,  pepp0055, peplus,  peplus_poker, peplus_state, nonplus,  ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0249) Deuces Wild Poker",             0, layout_pe_poker )
87928844GAMEL(1987, pepp0250,  0,        peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0250) Double Down Stud Poker",        0, layout_pe_poker )
8793GAMEL(1987, pepp0265,  pepp0158, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0265) 4 of a Kind Bonus Poker (set 1)",  0, layout_pe_poker )
8794GAMEL(1987, pepp0265a, pepp0158, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0265) 4 of a Kind Bonus Poker (set 2)",  0, layout_pe_poker )
8845GAMEL(1987, pepp0265,  pepp0158, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0265) 4 of a Kind Bonus Poker (set 1)", 0, layout_pe_poker )
8846GAMEL(1987, pepp0265a, pepp0158, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0265) 4 of a Kind Bonus Poker (set 2)", 0, layout_pe_poker )
87958847GAMEL(1987, pepp0265b, pepp0158, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0265) 4 of a Kind Bonus Poker (International)", 0, layout_pe_poker )
87968848GAMEL(1987, pepp0274,  pepp0002, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0274) Standard Draw Poker",           0, layout_pe_poker )
87978849GAMEL(1987, pepp0288,  pepp0002, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0288) Standard Draw Poker (Spanish)", 0, layout_pe_poker )
r241752r241753
88188870GAMEL(1987, pepp0455,  pepp0053, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0455) Joker Poker",                   0, layout_pe_poker )
88198871GAMEL(1987, pepp0458,  pepp0053, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0458) Joker Poker (Aces or Better)",  0, layout_pe_poker )
88208872GAMEL(1985, pepp0488,  pepp0002, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0488) Standard Draw Poker (Arizona Charlie's)", 0, layout_pe_poker )
8821GAMEL(1987, pepp0508,  0,        peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0508) Loose Deuce Deuces Wild! Poker", 0, layout_pe_poker )
8873GAMEL(1987, pepp0508,  0,        peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0508) Loose Deuce Deuces Wild! Poker",0, layout_pe_poker )
88228874GAMEL(1987, pepp0509,  pepp0002, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0509) Standard Draw Poker",           0, layout_pe_poker )
88238875GAMEL(1987, pepp0510,  pepp0002, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0510) Standard Draw Poker",           0, layout_pe_poker )
88248876GAMEL(1987, pepp0514,  0,        peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PP0514) Double Bonus Poker (set 1)",    0, layout_pe_poker )
r241752r241753
88508902GAMEL(1987, peip0028,  0,        peplus,  peplus_poker, peplus_state, nonplus,  ROT0,  "IGT - International Game Technology", "Player's Edge Plus (IP0028) Joker Poker - French",          0, layout_pe_poker )
88518903GAMEL(1987, peip0029,  peip0028, peplus,  peplus_poker, peplus_state, nonplus,  ROT0,  "IGT - International Game Technology", "Player's Edge Plus (IP0029) Joker Poker - French",          0, layout_pe_poker )
88528904GAMEL(1987, peip0031,  0,        peplus,  peplus_poker, peplus_state, nonplus,  ROT0,  "IGT - International Game Technology", "Player's Edge Plus (IP0031) Standard Draw Poker - French",  0, layout_pe_poker )
8853GAMEL(1987, peip0041,  0,        peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (IP0041) Double Deuces Wild Poker - French",   0, layout_pe_poker )
8905GAMEL(1987, peip0041,  0,        peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (IP0041) Double Deuces Wild Poker - French", 0, layout_pe_poker )
88548906GAMEL(1987, peip0051,  peip0028, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (IP0051) Joker Poker - French",          0, layout_pe_poker )
88558907GAMEL(1987, peip0058,  peip0031, peplus,  peplus_poker, peplus_state, nonplus,  ROT0,  "IGT - International Game Technology", "Player's Edge Plus (IP0058) Standard Draw Poker - French",  0, layout_pe_poker )
88568908GAMEL(1987, peip0062,  peip0028, peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (IP0062) Joker Poker - French",          0, layout_pe_poker )
r241752r241753
88688920GAMEL(1987, peip0118,  peip0031, peplus,  peplus_poker, peplus_state, nonplus,  ROT0,  "IGT - International Game Technology", "Player's Edge Plus (IP0118) Standard Draw Poker - French",  0, layout_pe_poker )
88698921GAMEL(1987, peip0120,  peip0031, peplus,  peplus_poker, peplus_state, nonplus,  ROT0,  "IGT - International Game Technology", "Player's Edge Plus (IP0120) Standard Draw Poker - French",  0, layout_pe_poker )
88708922
8923/* Normal board : Multi-Game - Player's Choice - Some sets require a printer (not yet supported) */
8924GAMEL(1994, pemg0252,  0,        peplus,  peplus_poker, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Choice (MG0252) Multi-Game",                       GAME_NOT_WORKING, layout_pe_poker) /* Needs printer support */
8925
88718926/* Normal board : Blackjack */
8872GAMEL(1994, pebe0014, 0,      peplus, peplus_bjack, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (BE0014) Blackjack",                        0, layout_pe_bjack )
8927GAMEL(1994, pebe0014, 0,        peplus, peplus_bjack, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (BE0014) Blackjack",                     0, layout_pe_bjack )
88738928
88748929/* Normal board : Keno */
8875GAMEL(1994, peke1012,  0,        peplus, peplus_keno, peplus_state, peplus, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (KE1012) Keno",                              0, layout_pe_keno )
8876GAMEL(1994, peke1013,  peke1012, peplus, peplus_keno, peplus_state, peplus, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (KE1013) Keno",                              0, layout_pe_keno )
8930GAMEL(1994, peke0017,  0,        peplus, peplus_keno,   peplus_state, nonplus,  ROT0,  "IGT - International Game Technology", "Player's Edge Plus (KE0017) Keno",                          GAME_NOT_WORKING, layout_pe_keno )
8931GAMEL(1994, peke1012,  0,        peplus, peplus_keno,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (KE1012) Keno",                          0, layout_pe_keno )
8932GAMEL(1994, peke1013,  peke1012, peplus, peplus_keno,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (KE1013) Keno",                          0, layout_pe_keno )
88778933
88788934/* Normal board : Slots machine */
8879GAMEL(1996, peps0014, 0,        peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0014) Super Joker Slots",             0, layout_pe_slots )
8880GAMEL(1996, peps0021, 0,        peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0021) Red White & Blue Slots",        0, layout_pe_slots )
8881GAMEL(1996, peps0022, peps0021, peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0022) Red White & Blue Slots",        0, layout_pe_slots )
8882GAMEL(1996, peps0042, 0,        peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0042) Double Diamond Slots",          0, layout_pe_slots )
8883GAMEL(1996, peps0043, peps0042, peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0043) Double Diamond Slots",          0, layout_pe_slots )
8884GAMEL(1996, peps0045, peps0021, peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0045) Red White & Blue Slots",        0, layout_pe_slots )
8885GAMEL(1996, peps0047, 0,        peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0047) Wild Cherry Slots",             GAME_NOT_WORKING, layout_pe_slots ) /* Needs MxO-CG1004.Uxx graphics roms redumped */
8886GAMEL(1996, peps0092, peps0047, peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0092) Wild Cherry Slots",             GAME_NOT_WORKING, layout_pe_slots ) /* Needs MxO-CG1004.Uxx graphics roms redumped */
8887GAMEL(1996, peps0206, peps0021, peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0206) Red White & Blue Slots",        0, layout_pe_slots )
8888GAMEL(1996, peps0207, peps0021, peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0207) Red White & Blue Slots",        0, layout_pe_slots )
8889GAMEL(1996, peps0296, 0,        peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0296) Haywire Slots",                 0, layout_pe_slots )
8890GAMEL(1996, peps0298, peps0042, peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0298) Double Diamond Slots",          0, layout_pe_slots )
8891GAMEL(1996, peps0308, 0,        peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0308) Double Jackpot Slots",          0, layout_pe_slots )
8892GAMEL(1996, peps0364, peps0021, peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0364) Red White & Blue Slots",        0, layout_pe_slots )
8893GAMEL(1996, peps0426, 0,        peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0426) Sizzling Sevens Slots",         0, layout_pe_slots )
8894GAMEL(1996, peps0581, peps0021, peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0581) Red White & Blue Slots",        0, layout_pe_slots )
8895GAMEL(1996, peps0615, 0,        peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0615) Chaos Slots",                   0, layout_pe_slots )
8896GAMEL(1996, peps0631, peps0021, peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0631) Red White & Blue Slots",        0, layout_pe_slots )
8897GAMEL(1996, peps0716, 0,        peplus, peplus_slots, peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0716) River Gambler Slots",           0, layout_pe_slots )
8935GAMEL(1996, peps0014, 0,        peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0014) Super Joker Slots",             0, layout_pe_slots )
8936GAMEL(1996, peps0021, 0,        peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0021) Red White & Blue Slots",        0, layout_pe_slots )
8937GAMEL(1996, peps0022, peps0021, peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0022) Red White & Blue Slots",        0, layout_pe_slots )
8938GAMEL(1996, peps0042, 0,        peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0042) Double Diamond Slots",          0, layout_pe_slots )
8939GAMEL(1996, peps0043, peps0042, peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0043) Double Diamond Slots",          0, layout_pe_slots )
8940GAMEL(1996, peps0045, peps0021, peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0045) Red White & Blue Slots",        0, layout_pe_slots )
8941GAMEL(1996, peps0047, 0,        peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0047) Wild Cherry Slots",             GAME_NOT_WORKING, layout_pe_slots ) /* Needs MxO-CG1004.Uxx graphics roms redumped */
8942GAMEL(1996, peps0092, peps0047, peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0092) Wild Cherry Slots",             GAME_NOT_WORKING, layout_pe_slots ) /* Needs MxO-CG1004.Uxx graphics roms redumped */
8943GAMEL(1996, peps0206, peps0021, peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0206) Red White & Blue Slots",        0, layout_pe_slots )
8944GAMEL(1996, peps0207, peps0021, peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0207) Red White & Blue Slots",        0, layout_pe_slots )
8945GAMEL(1996, peps0296, 0,        peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0296) Haywire Slots",                 0, layout_pe_slots )
8946GAMEL(1996, peps0298, peps0042, peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0298) Double Diamond Slots",          0, layout_pe_slots )
8947GAMEL(1996, peps0308, 0,        peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0308) Double Jackpot Slots",          0, layout_pe_slots )
8948GAMEL(1996, peps0364, peps0021, peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0364) Red White & Blue Slots",        0, layout_pe_slots )
8949GAMEL(1996, peps0426, 0,        peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0426) Sizzling Sevens Slots",         0, layout_pe_slots )
8950GAMEL(1996, peps0581, peps0021, peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0581) Red White & Blue Slots",        0, layout_pe_slots )
8951GAMEL(1996, peps0615, 0,        peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0615) Chaos Slots",                   0, layout_pe_slots )
8952GAMEL(1996, peps0631, peps0021, peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0631) Red White & Blue Slots",        0, layout_pe_slots )
8953GAMEL(1996, peps0716, 0,        peplus, peplus_slots,   peplus_state, peplus,   ROT0,  "IGT - International Game Technology", "Player's Edge Plus (PS0716) River Gambler Slots",           0, layout_pe_slots )
88988954
88998955/* Superboard : Poker */
89008956GAMEL(1995, pex0002p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000002P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
89018957GAMEL(1995, pex0002pa, pex0002p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000002P+XP000109) Standard Draw Poker", 0, layout_pe_poker )
89028958GAMEL(1995, pex0040p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000040P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
8903GAMEL(1995, pex0045p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000045P+XP000038) 10's or Better",     0, layout_pe_poker )
8904GAMEL(1995, pex0046p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000046P+XP000038) 10's or Better",     0, layout_pe_poker )
8959GAMEL(1995, pex0045p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000045P+XP000038) 10's or Better",      0, layout_pe_poker )
8960GAMEL(1995, pex0046p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000046P+XP000038) 10's or Better",      0, layout_pe_poker )
89058961GAMEL(1995, pex0053p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000053P+XP000038) Joker Poker (Aces or Better)", 0, layout_pe_poker )
8906GAMEL(1995, pex0054p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000054P+XP000038) Deuces Wild Poker",  0, layout_pe_poker )
8907GAMEL(1995, pex0055p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000019) Deuces Wild Poker",  0, layout_pe_poker )
8962GAMEL(1995, pex0054p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000054P+XP000038) Deuces Wild Poker",   0, layout_pe_poker )
8963GAMEL(1995, pex0055p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000019) Deuces Wild Poker",   0, layout_pe_poker )
89088964GAMEL(1995, pex0055pa, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000022) Deuces Wild Poker (The Orleans)", 0, layout_pe_poker )
89098965GAMEL(1995, pex0055pb, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000023) Deuces Wild Poker (The Fun Ships)", 0, layout_pe_poker )
8910GAMEL(1995, pex0055pc, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000028) Deuces Wild Poker",  0, layout_pe_poker )
8911GAMEL(1995, pex0055pd, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000035) Deuces Wild Poker",  0, layout_pe_poker )
8912GAMEL(1995, pex0055pe, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000038) Deuces Wild Poker",  0, layout_pe_poker )
8913GAMEL(1995, pex0055pf, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000040) Deuces Wild Poker",  0, layout_pe_poker )
8914GAMEL(1995, pex0055pg, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000053) Deuces Wild Poker",  0, layout_pe_poker )
8915GAMEL(1995, pex0055ph, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000055) Deuces Wild Poker",  0, layout_pe_poker )
8916GAMEL(1995, pex0055pi, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000063) Deuces Wild Poker",  0, layout_pe_poker )
8917GAMEL(1995, pex0055pj, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000075) Deuces Wild Poker",  0, layout_pe_poker )
8918GAMEL(1995, pex0055pk, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000079) Deuces Wild Poker",  0, layout_pe_poker )
8919GAMEL(1995, pex0055pl, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000094) Deuces Wild Poker",  0, layout_pe_poker )
8920GAMEL(1995, pex0055pm, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000095) Deuces Wild Poker",  0, layout_pe_poker )
8921GAMEL(1995, pex0055pn, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000098) Deuces Wild Poker",  0, layout_pe_poker )
8922GAMEL(1995, pex0055po, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000102) Deuces Wild Poker",  0, layout_pe_poker )
8923GAMEL(1995, pex0055pp, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000104) Deuces Wild Poker",  0, layout_pe_poker )
8924GAMEL(1995, pex0055pq, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000112) Deuces Wild Poker",  0, layout_pe_poker )
8925GAMEL(1995, pex0055pr, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000126) Deuces Wild Poker",  0, layout_pe_poker )
8966GAMEL(1995, pex0055pc, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000028) Deuces Wild Poker",   0, layout_pe_poker )
8967GAMEL(1995, pex0055pd, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000035) Deuces Wild Poker",   0, layout_pe_poker )
8968GAMEL(1995, pex0055pe, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000038) Deuces Wild Poker",   0, layout_pe_poker )
8969GAMEL(1995, pex0055pf, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000040) Deuces Wild Poker",   0, layout_pe_poker )
8970GAMEL(1995, pex0055pg, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000053) Deuces Wild Poker",   0, layout_pe_poker )
8971GAMEL(1995, pex0055ph, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000055) Deuces Wild Poker",   0, layout_pe_poker )
8972GAMEL(1995, pex0055pi, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000063) Deuces Wild Poker",   0, layout_pe_poker )
8973GAMEL(1995, pex0055pj, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000075) Deuces Wild Poker",   0, layout_pe_poker )
8974GAMEL(1995, pex0055pk, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000079) Deuces Wild Poker",   0, layout_pe_poker )
8975GAMEL(1995, pex0055pl, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000094) Deuces Wild Poker",   0, layout_pe_poker )
8976GAMEL(1995, pex0055pm, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000095) Deuces Wild Poker",   0, layout_pe_poker )
8977GAMEL(1995, pex0055pn, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000098) Deuces Wild Poker",   0, layout_pe_poker )
8978GAMEL(1995, pex0055po, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000102) Deuces Wild Poker",   0, layout_pe_poker )
8979GAMEL(1995, pex0055pp, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000104) Deuces Wild Poker",   0, layout_pe_poker )
8980GAMEL(1995, pex0055pq, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000112) Deuces Wild Poker",   0, layout_pe_poker )
8981GAMEL(1995, pex0055pr, pex0055p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000126) Deuces Wild Poker",   0, layout_pe_poker )
89268982GAMEL(1995, pex0060p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000060P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
8927GAMEL(1995, pex0124p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000124P+XP000053) Deuces Wild Poker",  0, layout_pe_poker )
8983GAMEL(1995, pex0124p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000124P+XP000053) Deuces Wild Poker",  0, layout_pe_poker )
89288984GAMEL(1995, pex0150p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000150P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
89298985GAMEL(1995, pex0158p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000158P+XP000038) 4 of a Kind Bonus Poker", 0, layout_pe_poker )
8930GAMEL(1995, pex0171p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000171P+XP000038) Joker Poker",        0, layout_pe_poker )
8986GAMEL(1995, pex0171p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000171P+XP000038) Joker Poker",        0, layout_pe_poker )
89318987GAMEL(1995, pex0188p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000188P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
8932GAMEL(1995, pex0190p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000190P+XP000053) Deuces Wild Poker",  0, layout_pe_poker )
8988GAMEL(1995, pex0190p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000190P+XP000053) Deuces Wild Poker",  0, layout_pe_poker )
89338989GAMEL(1995, pex0197p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000197P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
89348990GAMEL(1995, pex0203p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000203P+XP000038) 4 of a Kind Bonus Poker", 0, layout_pe_poker )
8935GAMEL(1995, pex0224p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000224P+XP000053) Deuces Wild Poker",  0, layout_pe_poker )
8991GAMEL(1995, pex0224p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000224P+XP000053) Deuces Wild Poker",  0, layout_pe_poker )
89368992GAMEL(1995, pex0225p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000225P+XP000079) Dueces Joker Wild Poker", 0,layout_pe_poker )
8937GAMEL(1995, pex0242p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000242P+XP000053) Deuces Wild Poker",  0, layout_pe_poker )
8993GAMEL(1995, pex0242p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000242P+XP000053) Deuces Wild Poker",  0, layout_pe_poker )
89388994GAMEL(1995, pex0265p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000265P+XP000038) 4 of a Kind Bonus Poker", 0, layout_pe_poker )
8939GAMEL(1995, pex0291p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000291P+XP000053) Deuces Wild Poker",  0, layout_pe_poker )
8940GAMEL(1995, pex0417p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000417P+XP000053) Deuces Wild Poker",  0, layout_pe_poker )
8995GAMEL(1995, pex0291p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000291P+XP000053) Deuces Wild Poker",   0, layout_pe_poker )
8996GAMEL(1995, pex0417p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000417P+XP000053) Deuces Wild Poker",   0, layout_pe_poker )
89418997GAMEL(1995, pex0430p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000430P+XP000079) Dueces Joker Wild Poker", 0,layout_pe_poker )
8942GAMEL(1995, pex0434p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000434P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
8998GAMEL(1995, pex0434p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000434P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
89438999GAMEL(1995, pex0447p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000447P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
89449000GAMEL(1995, pex0449p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000449P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
8945GAMEL(1995, pex0451p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000451P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
9001GAMEL(1995, pex0451p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000451P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
89469002GAMEL(1995, pex0452p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000452P+XP000038) Double Deuces Wild Poker", 0, layout_pe_poker )
8947GAMEL(1995, pex0454p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000454P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
9003GAMEL(1995, pex0454p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000454P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
89489004GAMEL(1995, pex0458p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000458P+XP000038) Joker Poker (Aces or Better)", 0, layout_pe_poker )
8949GAMEL(1995, pex0459p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000459P+XP000038) Joker Poker",        0, layout_pe_poker )
8950GAMEL(1995, pex0459pa, pex0459p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000459P+XP000155) Joker Poker",        0, layout_pe_poker )
9005GAMEL(1995, pex0459p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000459P+XP000038) Joker Poker",         0, layout_pe_poker )
9006GAMEL(1995, pex0459pa, pex0459p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000459P+XP000155) Joker Poker",         0, layout_pe_poker )
89519007GAMEL(1995, pex0508p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000508P+XP000038) Loose Deuce Deuces Wild! Poker", 0, layout_pe_poker )
8952GAMEL(1995, pex0514p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000514P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
8953GAMEL(1995, pex0515p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000515P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
8954GAMEL(1995, pex0516p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000516P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
8955GAMEL(1995, pex0536p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000536P+XP000038) Joker Poker",        0, layout_pe_poker )
9008GAMEL(1995, pex0514p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000514P+XP000038) Double Bonus Poker",  0, layout_pe_poker )
9009GAMEL(1995, pex0515p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000515P+XP000038) Double Bonus Poker",  0, layout_pe_poker )
9010GAMEL(1995, pex0516p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000516P+XP000038) Double Bonus Poker",  0, layout_pe_poker )
9011GAMEL(1995, pex0536p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000536P+XP000038) Joker Poker",         0, layout_pe_poker )
89569012GAMEL(1995, pex0537p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000537P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
89579013GAMEL(1995, pex0550p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000550P+XP000055) Joker Poker (Two Pair or Better)", 0, layout_pe_poker )
8958GAMEL(1995, pex0568p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000568P+XP000038) Joker Poker",        0, layout_pe_poker )
9014GAMEL(1995, pex0568p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000568P+XP000038) Joker Poker",        0, layout_pe_poker )
89599015GAMEL(1995, pex0581p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000581P+XP000038) 4 of a Kind Bonus Poker", 0, layout_pe_poker )
8960GAMEL(1995, pex0588p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000588P+XP000038) Joker Poker",        0, layout_pe_poker )
8961GAMEL(1995, pex0725p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000725P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
8962GAMEL(1995, pex0726p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000726P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
8963GAMEL(1995, pex0727p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000727P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
9016GAMEL(1995, pex0588p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000588P+XP000038) Joker Poker",         0, layout_pe_poker )
9017GAMEL(1995, pex0725p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000725P+XP000038) Double Bonus Poker",  0, layout_pe_poker )
9018GAMEL(1995, pex0726p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000726P+XP000038) Double Bonus Poker",  0, layout_pe_poker )
9019GAMEL(1995, pex0727p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000727P+XP000038) Double Bonus Poker",  0, layout_pe_poker )
89649020GAMEL(1995, pex0763p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000763P+XP000038) 4 of a Kind Bonus Poker", 0,layout_pe_poker )
89659021GAMEL(1995, pex2018p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002018P+XP000038) Full House Bonus Poker", 0, layout_pe_poker )
89669022GAMEL(1995, pex2025p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002025P+XP000019) Deuces Wild Bonus Poker", 0, layout_pe_poker )
89679023GAMEL(1995, pex2026p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002026P+XP000019) Deuces Wild Bonus Poker", 0, layout_pe_poker )
89689024GAMEL(1995, pex2027p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002027P+XP000019) Deuces Wild Bonus Poker", 0, layout_pe_poker )
89699025GAMEL(1995, pex2029p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002029P+XP000019) Deuces Wild Bonus Poker", 0, layout_pe_poker )
8970GAMEL(1995, pex2031p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002031P+XP000112) Lucky Deal Poker",   0, layout_pe_poker )
9026GAMEL(1995, pex2031p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002031P+XP000112) Lucky Deal Poker",    0, layout_pe_poker )
89719027GAMEL(1995, pex2035p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002035P+XP000112) White Hot Aces Poker", 0, layout_pe_poker )
89729028GAMEL(1995, pex2036p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002036P+XP000112) White Hot Aces Poker", 0, layout_pe_poker )
8973GAMEL(1995, pex2038p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002038P+XP000038) Nevada Bonus Poker", 0, layout_pe_poker )
8974GAMEL(1995, pex2040p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002040P+XP000038) Nevada Bonus Poker", 0, layout_pe_poker )
8975GAMEL(1995, pex2042p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002042P+XP000038) Triple Bonus Poker", 0, layout_pe_poker )
8976GAMEL(1995, pex2043p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002043P+XP000038) Triple Bonus Poker", 0, layout_pe_poker )
8977GAMEL(1995, pex2044p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002044P+XP000038) Triple Bonus Poker", 0, layout_pe_poker )
8978GAMEL(1995, pex2045p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002045P+XP000038) Triple Bonus Poker", 0, layout_pe_poker )
9029GAMEL(1995, pex2038p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002038P+XP000038) Nevada Bonus Poker",  0, layout_pe_poker )
9030GAMEL(1995, pex2040p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002040P+XP000038) Nevada Bonus Poker",  0, layout_pe_poker )
9031GAMEL(1995, pex2042p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002042P+XP000038) Triple Bonus Poker",  0, layout_pe_poker )
9032GAMEL(1995, pex2043p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002043P+XP000038) Triple Bonus Poker",  0, layout_pe_poker )
9033GAMEL(1995, pex2044p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002044P+XP000038) Triple Bonus Poker",  0, layout_pe_poker )
9034GAMEL(1995, pex2045p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002045P+XP000038) Triple Bonus Poker",  0, layout_pe_poker )
89799035GAMEL(1995, pex2066p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002066P+XP000038) Double Double Bonus Poker", 0, layout_pe_poker )
89809036GAMEL(1995, pex2067p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002067P+XP000038) Double Double Bonus Poker", 0, layout_pe_poker )
89819037GAMEL(1995, pex2068p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002068P+XP000038) Double Double Bonus Poker", 0, layout_pe_poker )
r241752r241753
89849040GAMEL(1995, pex2121p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002121P+XP000038) Standard Draw Poker", 0,layout_pe_poker )
89859041GAMEL(1995, pex2121pa, pex2121p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002121P+XP000037) Standard Draw Poker", 0,layout_pe_poker )
89869042GAMEL(1995, pex2150p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002150P+XP000038) 4 of a Kind Bonus Poker", 0,layout_pe_poker )
8987GAMEL(1995, pex2172p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002172P+XP000112) Ace$ Bonus Poker",   0, layout_pe_poker )
8988GAMEL(1995, pex2173p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002173P+XP000038) Ace$ Bonus Poker",   0, layout_pe_poker )
8989GAMEL(1995, pex2180p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002180P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
9043GAMEL(1995, pex2172p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002172P+XP000112) Ace$ Bonus Poker",    0, layout_pe_poker )
9044GAMEL(1995, pex2173p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002173P+XP000038) Ace$ Bonus Poker",    0, layout_pe_poker )
9045GAMEL(1995, pex2180p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002180P+XP000038) Double Bonus Poker",  0, layout_pe_poker )
89909046GAMEL(1995, pex2241p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002241P+XP000079) 4 of a Kind Bonus Poker", 0,layout_pe_poker )
8991GAMEL(1995, pex2244p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002244P+XP000079) Double Bonus Poker", 0, layout_pe_poker )
9047GAMEL(1995, pex2244p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002244P+XP000079) Double Bonus Poker", 0, layout_pe_poker )
89929048GAMEL(1995, pex2245p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002245P+XP000055) Standard Draw Poker", 0,layout_pe_poker )
89939049GAMEL(1995, pex2245pa, pex2245p,  peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002245P+XP000079) Standard Draw Poker", 0,layout_pe_poker )
8994GAMEL(1995, pex2250p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002250P+XP000050) Shockwave Poker",    0, layout_pe_poker )
8995GAMEL(1995, pex2251p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002251P+XP000050) Shockwave Poker",    0, layout_pe_poker )
9050GAMEL(1995, pex2250p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002250P+XP000050) Shockwave Poker",     0, layout_pe_poker )
9051GAMEL(1995, pex2251p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002251P+XP000050) Shockwave Poker",     0, layout_pe_poker )
89969052GAMEL(1995, pex2272p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002272P+XP000055) Black Jack Bonus Poker", 0, layout_pe_poker )
89979053GAMEL(1995, pex2275p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002275P+XP000055) Black Jack Bonus Poker", 0, layout_pe_poker )
89989054GAMEL(1995, pex2276p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002276P+XP000055) Black Jack Bonus Poker", 0, layout_pe_poker )
89999055GAMEL(1995, pex2283p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002283P+XP000057) Dealt Deuces Wild Bonus Poker", 0, layout_pe_poker ) /* Undumped color CAP but should have correct colors anyways */
90009056GAMEL(1995, pex2284p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002284P+XP000057) Barbaric Decues Wild Bonus Poker", 0, layout_pe_poker ) /* Undumped color CAP but should have correct colors anyways */
9001GAMEL(1995, pex2302p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002302P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
9057GAMEL(1995, pex2302p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002302P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
90029058GAMEL(1995, pex2303p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002303P+XP000112) White Hot Aces Poker", 0, layout_pe_poker )
90039059GAMEL(1995, pex2306p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002306P+XP000112) Triple Double Bonus Poker", 0, layout_pe_poker )
90049060GAMEL(1995, pex2307p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002307P+XP000112) Triple Double Bonus Poker", 0, layout_pe_poker )
r241752r241753
90109066GAMEL(1995, pex2419p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002419P+XP000064) Deuces Wild Bonus Poker - French", 0, layout_pe_poker )
90119067GAMEL(1995, pex2420p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002420P+XP000064) Deuces Wild Bonus Poker - French", 0, layout_pe_poker )
90129068GAMEL(1995, pex2421p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002421P+XP000064) Deuces Wild Bonus Poker - French", 0, layout_pe_poker )
9013GAMEL(1995, pex2440p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002440P+XP000053) Deuces Wild Poker",  0, layout_pe_poker )
9069GAMEL(1995, pex2440p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002440P+XP000053) Deuces Wild Poker",  0, layout_pe_poker )
90149070GAMEL(1995, pex2461p,  0,         peplus,  peplus_poker, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X002461P+XP000055) Joker Poker (Two Pair or Better)", 0, layout_pe_poker )
90159071
90169072/* Superboard : Poker (Key On Credit) */
r241752r241753
90469102GAMEL(1995, pexmp030,  0,        peplus,  peplus_poker, peplus_state, peplussbw,ROT0,  "IGT - International Game Technology", "Player's Edge Plus (XMP00030) 5-in-1 Wingboard (CG2426)",   0, layout_pe_poker )
90479103
90489104/* Superboard : Slots machine */
9049GAMEL(1997, pex0838s, 0,        peplus,  peplus_slots, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000838S+XS000002) Five Times Pay Slots", 0, layout_pe_slots )
9050GAMEL(1997, pex0841s, pex0838s, peplus,  peplus_slots, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000841S+XS000002) Five Times Pay Slots", 0, layout_pe_slots )
9105GAMEL(1997, pex0838s, 0,        peplus,  peplus_slots, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000838S+XS000002) Five Times Pay Slots",        0, layout_pe_slots )
9106GAMEL(1997, pex0841s, pex0838s, peplus,  peplus_slots, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000841S+XS000002) Five Times Pay Slots",        0, layout_pe_slots )
90519107GAMEL(1997, pex0998s, 0,        peplus,  peplus_slots, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X000998S+XS000006) Triple Triple Diamond Slots", 0, layout_pe_slots )
90529108GAMEL(1997, pex1087s, 0,        peplus,  peplus_slots, peplus_state, peplussb, ROT0,  "IGT - International Game Technology", "Player's Edge Plus (X001087S+XS000006) Double Double Diamond Slots", GAME_IMPERFECT_GRAPHICS, layout_pe_slots ) /* CAPX2415 not dumped */
trunk/src/mame/drivers/pgm.c
r241752r241753
980980   PGM_AUDIO_BIOS
981981ROM_END
982982
983ROM_START( drgw2hk ) // the IGS025 has a "DRAGON-II 0004-1" sticker, the IGS012 has no per-game marking
984   ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code  */
985   PGM_68K_BIOS
986   ROM_LOAD16_WORD_SWAP( "dragon_ii_v-100-h.u2",    0x100000, 0x080000, CRC(c6e2e6ec) SHA1(84145dfb26857ea20efb233363f175bc9bb25b0c) )
983987
988   ROM_REGION( 0x800000, "tiles",  0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
989   PGM_VIDEO_BIOS
990   ROM_LOAD( "pgmt0200.u7",    0x180000, 0x400000, CRC(b0f6534d) SHA1(174cacd81169a0e0d14790ac06d03caed737e05d) )
991
992   ROM_REGION( 0x400000, "sprcol", 0 ) /* Sprite Colour Data */
993   ROM_LOAD( "pgma0200.u5",    0x0000000, 0x400000, CRC(13b95069) SHA1(4888b06002afb18eab81c010e9362629045767af) )
994
995   ROM_REGION( 0x400000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
996   ROM_LOAD( "pgmb0200.u9",    0x0000000, 0x400000, CRC(932d0f13) SHA1(4b8e008f9c617cb2b95effeb81abc065b30e5c86) )
997
998   ROM_REGION( 0x400000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
999   PGM_AUDIO_BIOS
1000ROM_END
1001
9841002/*
9851003
9861004Dragon World 3 (KOREA 106 Ver.)
r241752r241753
41454163GAME( 1997, dw2v100x,     drgw2,     pgm_012_025_drgw2,     pgm, pgm_012_025_state,      dw2v100x,   ROT0,   "IGS", "Dragon World II (ver. 100X, Export)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
41464164GAME( 1997, drgw2j,       drgw2,     pgm_012_025_drgw2,     pgm, pgm_012_025_state,      drgw2j,     ROT0,   "IGS", "Chuugokuryuu II (ver. 100J, Japan)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
41474165GAME( 1997, drgw2c,       drgw2,     pgm_012_025_drgw2,     pgm, pgm_012_025_state,      drgw2c,     ROT0,   "IGS", "Zhong Guo Long II (ver. 100C, China)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
4166GAME( 1997, drgw2hk,      drgw2,     pgm_012_025_drgw2,     pgm, pgm_012_025_state,      drgw2hk,    ROT0,   "IGS", "Dragon World II (ver. 100H, Hong Kong [Hokg Kong])", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE | GAME_NOT_WORKING ) // correct title? (region is shown as Hokg Kong, Dragon World 3 is the same)
41484167
41494168GAME( 1998, killbld,      pgm,       pgm_022_025_killbld, killbld, pgm_022_025_state,  killbld,    ROT0,   "IGS", "The Killing Blade (ver. 109, Chinese Board)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
41504169GAME( 1998, killbld104,   killbld,   pgm_022_025_killbld, killbld, pgm_022_025_state,  killbld,    ROT0,   "IGS", "The Killing Blade (ver. 104)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
trunk/src/mame/drivers/pgm2.c
r241752r241753
278278   ROM_LOAD16_WORD_SWAP( "ig-a_sp.u2",              0x00000000, 0x1000000, CRC(8250688c) SHA1(d2488477afc528aeee96826065deba2bce4f0a7d) )
279279ROM_END
280280
281ROM_START( orleg2oa )
282   ROM_REGION( 0x04000, "maincpu", 0 )
283   ROM_LOAD( "xyj2_igs036.rom",         0x00000000, 0x0004000, NO_DUMP )
284
285   ROM_REGION( 0x800000, "user1", 0 )
286   ROM_LOAD( "orleg2_xyj2_v101cn.u7",  0x000000, 0x800000, CRC(45805b53) SHA1(f2a8399c821b75fadc53e914f6f318707e70787c) )
287
288   ROM_REGION( 0x200000, "tiles", ROMREGION_ERASEFF )
289   ROM_LOAD( "ig-a_text.u4",            0x00000000, 0x0200000, CRC(fa444c32) SHA1(31e5e3efa92d52bf9ab97a0ece51e3b77f52ce8a) )
290
291   ROM_REGION( 0x1000000, "bgtile", 0 )
292   ROM_LOAD32_WORD( "ig-a_bgl.u35",     0x00000000, 0x0800000, CRC(083a8315) SHA1(0dba25e132fbb12faa59ced648c27b881dc73478) )
293   ROM_LOAD32_WORD( "ig-a_bgh.u36",     0x00000002, 0x0800000, CRC(e197221d) SHA1(5574b1e3da4b202db725be906dd868edc2fd4634) )
294
295   ROM_REGION( 0x2000000, "spritesa", 0 ) // 1bpp sprite mask data
296   ROM_LOAD32_WORD( "ig-a_bml.u12",     0x00000000, 0x1000000, CRC(113a331c) SHA1(ee6b31bb2b052cc8799573de0d2f0a83f0ab4f6a) )
297   ROM_LOAD32_WORD( "ig-a_bmh.u16",     0x00000002, 0x1000000, CRC(fbf411c8) SHA1(5089b5cc9bbf6496ef1367c6255e63e9ab895117) )
298
299   ROM_REGION( 0x4000000, "spritesb", 0 ) // sprite colour data
300   ROM_LOAD32_WORD( "ig-a_cgl.u18",     0x00000000, 0x2000000, CRC(43501fa6) SHA1(58ccce6d393964b771fec3f5c583e3ede57482a3) )
301   ROM_LOAD32_WORD( "ig-a_cgh.u26",     0x00000002, 0x2000000, CRC(7051d020) SHA1(3d9b24c6fda4c9699bb9f00742e0888059b623e1) )
302
303   ROM_REGION( 0x1000000, "ymz770", ROMREGION_ERASEFF ) /* ymz770 */
304   ROM_LOAD16_WORD_SWAP( "ig-a_sp.u2",              0x00000000, 0x1000000, CRC(8250688c) SHA1(d2488477afc528aeee96826065deba2bce4f0a7d) )
305ROM_END
306
281307ROM_START( kov2nl )
282308   ROM_REGION( 0x04000, "maincpu", 0 )
283309   ROM_LOAD( "gsyx_igs036.rom",         0x00000000, 0x0004000, NO_DUMP )
r241752r241753
330356   ROM_LOAD16_WORD_SWAP( "ig-a3_sp.u37",            0x00000000, 0x2000000, CRC(45cdf422) SHA1(8005d284bcee73cff37a147fcd1c3e9f039a7203) )
331357ROM_END
332358
359ROM_START( kov2nloa )
360   ROM_REGION( 0x04000, "maincpu", 0 )
361   ROM_LOAD( "gsyx_igs036.rom",         0x00000000, 0x0004000, NO_DUMP )
333362
363   ROM_REGION( 0x800000, "user1", 0 )
364   ROM_LOAD( "kov2nl_gsyx_v300tw.u7",  0x000000, 0x800000, CRC(08da7552) SHA1(303b97d7694405474c8133a259303ccb49db48b1) )
365
366   ROM_REGION( 0x200000, "tiles", ROMREGION_ERASEFF )
367   ROM_LOAD( "ig-a3_text.u4",           0x00000000, 0x0200000, CRC(214530ff) SHA1(4231a02054b0345392a077042b95779fd45d6c22) )
368
369   ROM_REGION( 0x1000000, "bgtile", 0 )
370   ROM_LOAD32_WORD( "ig-a3_bgl.u35",    0x00000000, 0x0800000, CRC(2d46b1f6) SHA1(ea8c805eda6292e86a642e9633d8fee7054d10b1) )
371   ROM_LOAD32_WORD( "ig-a3_bgh.u36",    0x00000002, 0x0800000, CRC(df710c36) SHA1(f826c3f496c4f17b46d18af1d8e02cac7b7027ac) )
372
373   ROM_REGION( 0x2000000, "spritesa", 0 ) // 1bpp sprite mask data
374   ROM_LOAD32_WORD( "ig-a3_bml.u12",    0x00000000, 0x1000000, CRC(0bf63836) SHA1(b8e4f1951f8074b475b795bd7840c5a375b6f5ef) )
375   ROM_LOAD32_WORD( "ig-a3_bmh.u16",    0x00000002, 0x1000000, CRC(4a378542) SHA1(5d06a8a8796285a786ebb690c34610f923ef5570) )
376
377   ROM_REGION( 0x4000000, "spritesb", 0 ) // sprite colour data
378   ROM_LOAD32_WORD( "ig-a3_cgl.u18",    0x00000000, 0x2000000, CRC(8d923e1f) SHA1(14371cf385dd8857017d3111cd4710f4291b1ae2) )
379   ROM_LOAD32_WORD( "ig-a3_cgh.u26",    0x00000002, 0x2000000, CRC(5b6fbf3f) SHA1(d1f52e230b91ee6cde939d7c2b74da7fd6527e73) )
380
381   ROM_REGION( 0x2000000, "ymz770", ROMREGION_ERASEFF ) /* ymz770 */
382   ROM_LOAD16_WORD_SWAP( "ig-a3_sp.u37",            0x00000000, 0x2000000, CRC(45cdf422) SHA1(8005d284bcee73cff37a147fcd1c3e9f039a7203) )
383ROM_END
384
334385ROM_START( ddpdojh )
335386   ROM_REGION( 0x04000, "maincpu", 0 )
336387   ROM_LOAD( "ddpdoj_igs036.rom",       0x00000000, 0x0004000, NO_DUMP )
r241752r241753
496547/* PGM2 */
497548GAME( 2007, orleg2,       0,         pgm2,    pgm2, pgm2_state,     orleg2,       ROT0, "IGS", "Oriental Legend 2 (V104, China)", GAME_IS_SKELETON )
498549GAME( 2007, orleg2o,      orleg2,    pgm2,    pgm2, pgm2_state,     orleg2,       ROT0, "IGS", "Oriental Legend 2 (V103, China)", GAME_IS_SKELETON )
550GAME( 2007, orleg2oa,     orleg2,    pgm2,    pgm2, pgm2_state,     orleg2,       ROT0, "IGS", "Oriental Legend 2 (V101, China)", GAME_IS_SKELETON )
499551// should be earlier verisons too.
500552
501553GAME( 2008, kov2nl,       0,         pgm2,    pgm2, pgm2_state,     kov2nl,       ROT0, "IGS", "Knights of Valour 2 New Legend (V302, China)", GAME_IS_SKELETON )
502554GAME( 2008, kov2nlo,      kov2nl,    pgm2,    pgm2, pgm2_state,     kov2nl,       ROT0, "IGS", "Knights of Valour 2 New Legend (V301, China)", GAME_IS_SKELETON )
555GAME( 2008, kov2nloa,     kov2nl,    pgm2,    pgm2, pgm2_state,     kov2nl,       ROT0, "IGS", "Knights of Valour 2 New Legend (V300, Taiwan)", GAME_IS_SKELETON )
503556// should be earlier verisons too.
504557
505558GAME( 2010, ddpdojh,      0,    pgm2,    pgm2, pgm2_state,     ddpdojh,    ROT270, "IGS", "Dodonpachi Daioujou Tamashii (V201, China)", GAME_IS_SKELETON )
trunk/src/mame/drivers/photoply.c
r241752r241753
1313
1414#include "emu.h"
1515#include "cpu/i386/i386.h"
16#include "machine/pci.h"
16#include "machine/lpci.h"
1717#include "machine/pcshare.h"
1818#include "machine/pckeybrd.h"
1919#include "machine/idectrl.h"
trunk/src/mame/drivers/pinball2k.c
r241752r241753
1919
2020#include "emu.h"
2121#include "cpu/i386/i386.h"
22#include "machine/pci.h"
22#include "machine/lpci.h"
2323#include "machine/pcshare.h"
2424#include "machine/pckeybrd.h"
2525#include "machine/idectrl.h"
trunk/src/mame/drivers/psychic5.c
r241752r241753
407407
408408static ADDRESS_MAP_START( psychic5_main_map, AS_PROGRAM, 8, psychic5_state )
409409   AM_RANGE(0x0000, 0x7fff) AM_ROM
410   AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank1")
411   AM_RANGE(0xc000, 0xdfff) AM_READWRITE(psychic5_paged_ram_r, psychic5_paged_ram_w)
410   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
411   AM_RANGE(0xc000, 0xdfff) AM_DEVICE("vrambank", address_map_bank_device, amap8)
412412   AM_RANGE(0xe000, 0xefff) AM_RAM
413413   AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch_byte_w)
414414   AM_RANGE(0xf001, 0xf001) AM_READNOP AM_WRITE(psychic5_coin_counter_w)
r241752r241753
421421   AM_RANGE(0xf800, 0xffff) AM_RAM
422422ADDRESS_MAP_END
423423
424
425static ADDRESS_MAP_START( psychic5_vrambank_map, AS_PROGRAM, 8, psychic5_state )
426   AM_RANGE(0x0000, 0x0fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
427   AM_RANGE(0x1000, 0x1fff) AM_RAM
428
429   AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SYSTEM")
430   AM_RANGE(0x2001, 0x2001) AM_READ_PORT("P1")
431   AM_RANGE(0x2002, 0x2002) AM_READ_PORT("P2")
432   AM_RANGE(0x2003, 0x2003) AM_READ_PORT("DSW1")
433   AM_RANGE(0x2004, 0x2004) AM_READ_PORT("DSW2")
434
435   AM_RANGE(0x2308, 0x230c) AM_RAM AM_SHARE("bg_control")
436
437   AM_RANGE(0x2400, 0x25ff) AM_RAM_WRITE(sprite_col_w) AM_SHARE("palette_ram_sp")
438   AM_RANGE(0x2800, 0x29ff) AM_RAM_WRITE(bg_col_w) AM_SHARE("palette_ram_bg")
439   AM_RANGE(0x2a00, 0x2bff) AM_RAM_WRITE(tx_col_w) AM_SHARE("palette_ram_tx")
440
441   AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
442
443ADDRESS_MAP_END
444
445
424446static ADDRESS_MAP_START( psychic5_sound_map, AS_PROGRAM, 8, psychic5_state )
425447   AM_RANGE(0x0000, 0x7fff) AM_ROM
426448   AM_RANGE(0xc000, 0xc7ff) AM_RAM
r241752r241753
436458
437459static ADDRESS_MAP_START( bombsa_main_map, AS_PROGRAM, 8, psychic5_state )
438460   AM_RANGE(0x0000, 0x7fff) AM_ROM
439   AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank1")
461   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
440462   AM_RANGE(0xc000, 0xcfff) AM_RAM
441463
442464   /* ports look like the other games */
r241752r241753
450472   AM_RANGE(0xd200, 0xd7ff) AM_RAM AM_SHARE("spriteram")
451473   AM_RANGE(0xd800, 0xdfff) AM_RAM
452474
453   AM_RANGE(0xe000, 0xffff) AM_READWRITE(psychic5_paged_ram_r, bombsa_paged_ram_w)
475   AM_RANGE(0xe000, 0xffff) AM_DEVICE("vrambank", address_map_bank_device, amap8)
454476ADDRESS_MAP_END
455477
456478static ADDRESS_MAP_START( bombsa_sound_map, AS_PROGRAM, 8, psychic5_state )
r241752r241753
466488   AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
467489ADDRESS_MAP_END
468490
491static ADDRESS_MAP_START( bombsa_vrambank_map, AS_PROGRAM, 8, psychic5_state )
492   AM_RANGE(0x0000, 0x1fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
469493
494   AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SYSTEM")
495   AM_RANGE(0x2001, 0x2001) AM_READ_PORT("P1")
496   AM_RANGE(0x2002, 0x2002) AM_READ_PORT("P2")
497   AM_RANGE(0x2003, 0x2003) AM_READ_PORT("DSW1")
498   AM_RANGE(0x2004, 0x2004) AM_READ_PORT("DSW2")
499
500   AM_RANGE(0x2308, 0x230c) AM_RAM AM_SHARE("bg_control")
501
502   AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(sprite_col_w) AM_SHARE("palette_ram_sp")
503   AM_RANGE(0x3200, 0x33ff) AM_RAM_WRITE(bg_col_w) AM_SHARE("palette_ram_bg")
504   AM_RANGE(0x3400, 0x35ff) AM_RAM_WRITE(tx_col_w) AM_SHARE("palette_ram_tx")
505
506   AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
507ADDRESS_MAP_END
508
509
470510static INPUT_PORTS_START( psychic5 )
471511   PORT_START("SYSTEM")    /* system control */
472512   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
r241752r241753
655695   MCFG_CPU_PROGRAM_MAP(psychic5_main_map)
656696   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", psychic5_state, psychic5_scanline, "screen", 0, 1)
657697
698   MCFG_DEVICE_ADD("vrambank", ADDRESS_MAP_BANK, 0)
699   MCFG_DEVICE_PROGRAM_MAP(psychic5_vrambank_map)
700   MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
701   MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
702   MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(14)
703   MCFG_ADDRESS_MAP_BANK_STRIDE(0x2000)
704
658705   MCFG_CPU_ADD("audiocpu", Z80, XTAL_5MHz)
659706   MCFG_CPU_PROGRAM_MAP(psychic5_sound_map)
660707   MCFG_CPU_IO_MAP(psychic5_soundport_map)
r241752r241753
700747   MCFG_CPU_PROGRAM_MAP(bombsa_main_map)
701748   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", psychic5_state, psychic5_scanline, "screen", 0, 1)
702749
750   MCFG_DEVICE_ADD("vrambank", ADDRESS_MAP_BANK, 0)
751   MCFG_DEVICE_PROGRAM_MAP(bombsa_vrambank_map)
752   MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
753   MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
754   MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(14)
755   MCFG_ADDRESS_MAP_BANK_STRIDE(0x2000)
756
703757   MCFG_CPU_ADD("audiocpu", Z80, XTAL_5MHz )
704758   MCFG_CPU_PROGRAM_MAP(bombsa_sound_map)
705759   MCFG_CPU_IO_MAP(bombsa_soundport_map)
r241752r241753
718772   MCFG_PALETTE_ADD("palette", 768)
719773
720774   MCFG_VIDEO_START_OVERRIDE(psychic5_state,bombsa)
721   MCFG_VIDEO_RESET_OVERRIDE(psychic5_state,bombsa)
775   MCFG_VIDEO_RESET_OVERRIDE(psychic5_state,psychic5)
722776
723777   /* sound hardware */
724778   MCFG_SPEAKER_STANDARD_MONO("mono")
trunk/src/mame/drivers/queen.c
r241752r241753
2626
2727#include "emu.h"
2828#include "cpu/i386/i386.h"
29#include "machine/pci.h"
29#include "machine/lpci.h"
3030#include "machine/pcshare.h"
3131#include "machine/pckeybrd.h"
3232#include "machine/idectrl.h"
trunk/src/mame/drivers/rampart.c
r241752r241753
339339   MCFG_CPU_PROGRAM_MAP(main_map)
340340   MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
341341
342   MCFG_SLAPSTIC_ADD("slapstic")
343
342344   MCFG_MACHINE_RESET_OVERRIDE(rampart_state,rampart)
343345
344346   MCFG_ATARI_EEPROM_2816_ADD("eeprom")
trunk/src/mame/drivers/rockrage.c
r241752r241753
210210};
211211
212212static GFXDECODE_START( rockrage )
213   GFXDECODE_ENTRY( "gfx1", 0, charlayout,   64, 32 )  /* colors 00..31, but using 2 lookup tables */
214   GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 32,  1 )  /* colors 32..63 */
213   GFXDECODE_ENTRY( "gfx1", 0, charlayout,     0, 32 )  /* colors 00..31, using 2 lookup tables */
214   GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 512, 16 )  /* colors 32..47, using lookup table */
215215GFXDECODE_END
216216
217217/***************************************************************************
r241752r241753
227227   m_rombank->configure_entries(0, 8, &ROM[0x10000], 0x2000);
228228
229229   save_item(NAME(m_vreg));
230   save_item(NAME(m_layer_colorbase));
231230}
232231
233232void rockrage_state::machine_reset()
r241752r241753
268267   MCFG_K007420_PALETTE("palette")
269268
270269   MCFG_GFXDECODE_ADD("gfxdecode", "palette", rockrage)
271   MCFG_PALETTE_ADD("palette", 64 + 2*16*16)
270   MCFG_PALETTE_ADD("palette", 16*16*3)
272271   MCFG_PALETTE_INDIRECT_ENTRIES(64)
273272   MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
274273   MCFG_PALETTE_ENDIANNESS(ENDIANNESS_LITTLE)
r241752r241753
310309   ROM_LOAD( "620l10.8g",  0x020000, 0x20000, CRC(06d108e0) SHA1(cae8c5f2fc4e84bc7adbf27f71a18a74968c4296) ) /* One "K" & one "L" code version??? */
311310
312311   ROM_REGION( 0x0300, "proms", 0 )
313   ROM_LOAD( "620k09.11g", 0x00000, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) )    /* layer 0 lookup table */
312   ROM_LOAD( "620k07.13g", 0x00000, 0x00100, CRC(b6135ee0) SHA1(248a978987cff86c2bbad10ef332f63a6abd5bee) )    /* layer 0 lookup table */
314313   ROM_LOAD( "620k08.12g", 0x00100, 0x00100, CRC(b499800c) SHA1(46fa4e071ebceed12027de109be1e16dde5e846e) )    /* layer 1 lookup table */
315   ROM_LOAD( "620k07.13g", 0x00200, 0x00100, CRC(b6135ee0) SHA1(248a978987cff86c2bbad10ef332f63a6abd5bee) )    /* sprite lookup table, but its not used */
316                                             /* because it's always 0 1 2 ... f */
314   ROM_LOAD( "620k09.11g", 0x00200, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) )    /* sprite lookup table */
315
317316   ROM_REGION( 0x08000, "vlm", 0 ) /* VLM3050 data */
318317   ROM_LOAD( "620k04.6e", 0x00000, 0x08000, CRC(8be969f3) SHA1(9856b4c13fac77b645aed67a08cb4965b4966492) )
319318ROM_END
r241752r241753
339338   ROM_LOAD( "620g10b.8f", 0x030000, 0x10000, CRC(1618854a) SHA1(0afb34a9ed97f13c1910acd7767cb8546ea7e6cd) )
340339
341340   ROM_REGION( 0x0300, "proms", 0 )
342   ROM_LOAD( "620k09.11g", 0x00000, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) )    /* layer 0 lookup table */
341   ROM_LOAD( "620k07.13g", 0x00000, 0x00100, CRC(b6135ee0) SHA1(248a978987cff86c2bbad10ef332f63a6abd5bee) )    /* layer 0 lookup table */
343342   ROM_LOAD( "620k08.12g", 0x00100, 0x00100, CRC(b499800c) SHA1(46fa4e071ebceed12027de109be1e16dde5e846e) )    /* layer 1 lookup table */
344   ROM_LOAD( "620k07.13g", 0x00200, 0x00100, CRC(b6135ee0) SHA1(248a978987cff86c2bbad10ef332f63a6abd5bee) )    /* sprite lookup table, but its not used */
345                                             /* because it's always 0 1 2 ... f */
343   ROM_LOAD( "620k09.11g", 0x00200, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) )    /* sprite lookup table */
344
346345   ROM_REGION( 0x08000, "vlm", 0 ) /* VLM3050 data */
347346   ROM_LOAD( "620k04.6e", 0x00000, 0x08000, CRC(8be969f3) SHA1(9856b4c13fac77b645aed67a08cb4965b4966492) ) /* Same rom but labeled as ver "G" */
348347ROM_END
r241752r241753
364363   ROM_LOAD( "620k10.8g",  0x020000, 0x20000, CRC(0d1a95ab) SHA1(be565424f17af31dcd07004c6be03bbb00aef514) )
365364
366365   ROM_REGION( 0x0300, "proms", 0 )
367   ROM_LOAD( "620k09.11g", 0x00000, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) )    /* layer 0 lookup table */
366   ROM_LOAD( "620k07.13g", 0x00000, 0x00100, CRC(b6135ee0) SHA1(248a978987cff86c2bbad10ef332f63a6abd5bee) )    /* layer 0 lookup table */
368367   ROM_LOAD( "620k08.12g", 0x00100, 0x00100, CRC(b499800c) SHA1(46fa4e071ebceed12027de109be1e16dde5e846e) )    /* layer 1 lookup table */
369   ROM_LOAD( "620k07.13g", 0x00200, 0x00100, CRC(b6135ee0) SHA1(248a978987cff86c2bbad10ef332f63a6abd5bee) )    /* sprite lookup table, but its not used */
370                                             /* because it's always 0 1 2 ... f */
368   ROM_LOAD( "620k09.11g", 0x00200, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) )    /* sprite lookup table */
369
371370   ROM_REGION( 0x08000, "vlm", 0 ) /* VLM3050 data */
372371   ROM_LOAD( "620k04.6e", 0x00000, 0x08000, CRC(8be969f3) SHA1(9856b4c13fac77b645aed67a08cb4965b4966492) )
373372ROM_END
trunk/src/mame/drivers/savquest.c
r241752r241753
4646
4747#include "emu.h"
4848#include "cpu/i386/i386.h"
49#include "machine/pci.h"
49#include "machine/lpci.h"
5050#include "machine/pcshare.h"
5151#include "machine/pckeybrd.h"
5252#include "machine/idectrl.h"
trunk/src/mame/drivers/segacoin.c
r0r241753
1// license:BSD-3-Clause
2// copyright-holders:hap
3/***************************************************************************
4
5  Sega Z80 Coin Pusher hardware
6 
7  1992 - Western Dream
8  * 2 x Z80 (prg, sound), 3 x YM3438 (6ch), ..
9  Hexagon shaped cab, with a toy train riding circles in the top compartment.
10  6 players, each with a coin pusher, and a LED roulette on the back panel.
11 
12  more...
13 
14
15TODO:
16- everything
17
18***************************************************************************/
19
20#include "emu.h"
21#include "cpu/z80/z80.h"
22//#include "sound/2612intf.h"
23
24
25class segacoin_state : public driver_device
26{
27public:
28   segacoin_state(const machine_config &mconfig, device_type type, const char *tag)
29      : driver_device(mconfig, type, tag),
30      m_maincpu(*this, "maincpu"),
31      m_audiocpu(*this, "audiocpu")
32   { }
33
34   required_device<cpu_device> m_maincpu;
35   required_device<cpu_device> m_audiocpu;
36};
37
38
39/***************************************************************************
40
41  I/O
42
43***************************************************************************/
44
45/* Memory maps */
46
47static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, segacoin_state )
48   AM_RANGE(0x0000, 0x7fff) AM_ROM
49   AM_RANGE(0xe000, 0xffff) AM_RAM
50ADDRESS_MAP_END
51
52static ADDRESS_MAP_START( main_portmap, AS_IO, 8, segacoin_state )
53   ADDRESS_MAP_UNMAP_HIGH
54   ADDRESS_MAP_GLOBAL_MASK(0xff)
55ADDRESS_MAP_END
56
57
58static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, segacoin_state )
59   AM_RANGE(0x0000, 0x7fff) AM_ROM
60   AM_RANGE(0xe000, 0xffff) AM_RAM
61ADDRESS_MAP_END
62
63static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, segacoin_state )
64   ADDRESS_MAP_UNMAP_HIGH
65   ADDRESS_MAP_GLOBAL_MASK(0xff)
66ADDRESS_MAP_END
67
68
69
70/***************************************************************************
71
72  Inputs
73
74***************************************************************************/
75
76static INPUT_PORTS_START( westdrm )
77   // just some test stuff
78   PORT_START("IN0")
79   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
80   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
81   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
82   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
83   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
84   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
85   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
86   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 )
87
88   PORT_START("IN1")
89   PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "SW1:1" )
90   PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "SW1:2" )
91   PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "SW1:3" )
92   PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW1:4" )
93   PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW1:5" )
94   PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW1:6" )
95   PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW1:7" )
96   PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW1:8" )
97INPUT_PORTS_END
98
99
100
101/***************************************************************************
102
103  Machine Config
104
105***************************************************************************/
106
107static MACHINE_CONFIG_START( westdrm, segacoin_state )
108
109   /* basic machine hardware */
110   MCFG_CPU_ADD("maincpu", Z80, 8000000) // clock frequency unknown
111   MCFG_CPU_PROGRAM_MAP(main_map)
112   MCFG_CPU_IO_MAP(main_portmap)
113
114   MCFG_CPU_ADD("audiocpu", Z80, 8000000) // clock frequency unknown
115   MCFG_CPU_PROGRAM_MAP(sound_map)
116   MCFG_CPU_IO_MAP(sound_portmap)
117
118   /* no video! */
119
120   /* sound hardware */
121   //..
122MACHINE_CONFIG_END
123
124
125
126/***************************************************************************
127
128  Game drivers
129
130***************************************************************************/
131
132ROM_START( westdrm )
133   ROM_REGION( 0x10000, "maincpu", 0 )
134   ROM_LOAD( "epr-15151a.bin",  0x00000, 0x10000, CRC(b0911826) SHA1(77435d2b9c78275f2c21db994d2203528e69fe1f) )
135
136   ROM_REGION( 0x10000, "audiocpu", 0 )
137   ROM_LOAD( "epr-15152.bin",   0x00000, 0x10000, CRC(565d6559) SHA1(2c7d961b6dc5020994cbd005efbfd27ccf59569d) ) // mostly empty
138   ROM_IGNORE(                           0x10000 )
139ROM_END
140
141
142GAME (1992, westdrm, 0, westdrm, westdrm, driver_device, 0, ROT0, "Sega", "Western Dream", GAME_IS_SKELETON_MECHANICAL )
trunk/src/mame/drivers/segas18.c
r241752r241753
7373         switch (m_romboard)
7474         {
7575            case ROM_BOARD_171_SHADOW:  break;  // ???
76            case ROM_BOARD_837_7525:
7677            case ROM_BOARD_171_5874:
7778            case ROM_BOARD_171_5987:    mapper.map_as_handler(0x00000, 0x00010, 0xfffff0, read16_delegate(FUNC(segas18_state::genesis_vdp_r), this), write16_delegate(FUNC(segas18_state::genesis_vdp_w), this)); break;
7879            default:                    assert(false);
r241752r241753
8990                                 else
9091                                    mapper.map_as_rom(0x00000,0x100000, 0xf00000, "rom1base",0x100000, write16_delegate(FUNC(segas18_state::rom_5987_bank_w), this));
9192                                 break;
93            case ROM_BOARD_837_7525:    mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom1base", 0x80000, write16_delegate(FUNC(segas18_state::rom_837_7525_bank_w), this));
94            break;
95
9296            default:                    assert(false);
9397         }
9498         break;
r241752r241753
98102         {
99103            case ROM_BOARD_171_SHADOW:
100104            case ROM_BOARD_171_5874:    mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom0base", 0x00000, write16_delegate()); break;
105            case ROM_BOARD_837_7525:
101106            case ROM_BOARD_171_5987:    if (romsize <= 0x100000)
102107                                    mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom0base", 0x00000, write16_delegate());
103108                                 else
r241752r241753
390395   }
391396}
392397
398WRITE16_MEMBER( segas18_state::rom_837_7525_bank_w )
399{
400   if (!ACCESSING_BITS_0_7)
401      return;
393402
403   offset &= 0xf;
404   data &= 0xff;
394405
406   // tile banking
407   if (offset < 8)
408   {
409   //   int maxbanks = m_gfxdecode->gfx(0)->elements() / 1024;
410      data &= 0x9f;
411
412      if (data & 0x80) data += 0x20;
413      data &= 0x3f;
414
415      m_segaic16vid->segaic16_tilemap_set_bank(0, offset, data);
416   }
417
418   // sprite banking
419   else
420   {
421      //printf("%02x %02x\n", offset, data);
422      // not needed?
423   }
424}
425
426
395427/*************************************
396428 *
397429 *  D.D.Crew Custom I/O
r241752r241753
729761   PORT_DIPSETTING(    0x00, "1" )
730762   //"SW2:7" unused
731763   //"SW2:8" unused
732
733764INPUT_PORTS_END
734765
735
736766static INPUT_PORTS_START( astorm2p )
737767   PORT_INCLUDE( system18_generic )
738768
r241752r241753
757787   PORT_DIPSETTING(    0x00, "1" )
758788   //"SW2:7" unused
759789   //"SW2:8" unused
760
761790INPUT_PORTS_END
762791
763792
r241752r241753
876905   PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
877906INPUT_PORTS_END
878907
879
880908static INPUT_PORTS_START( ddcrew2p )
881909   PORT_INCLUDE( system18_generic )
882910
r241752r241753
903931   PORT_DIPSETTING(    0xc0, DEF_STR( Normal ) )
904932   PORT_DIPSETTING(    0x40, DEF_STR( Hard ) )
905933   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
906
907934INPUT_PORTS_END
908935
909936static INPUT_PORTS_START( ddcrew3p )
r241752r241753
922949   PORT_MODIFY("SERVICE")
923950   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
924951   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
925
926952INPUT_PORTS_END
927953
954
928955static INPUT_PORTS_START( desertbr )
929956   PORT_INCLUDE( system18_generic )
930957
r241752r241753
9731000INPUT_PORTS_END
9741001
9751002
1003static INPUT_PORTS_START( hamaway )
1004   PORT_INCLUDE( system18_generic )
1005
1006   PORT_MODIFY("DSW")
1007   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("SW2:1,2")
1008   PORT_DIPSETTING(    0x02, DEF_STR( Easy ) )
1009   PORT_DIPSETTING(    0x03, DEF_STR( Normal ) )
1010   PORT_DIPSETTING(    0x01, DEF_STR( Hard ) )
1011   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
1012   PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )   PORT_DIPLOCATION("SW2:3,4")
1013   PORT_DIPSETTING(    0x08, "1" )
1014   PORT_DIPSETTING(    0x04, "2" )
1015   PORT_DIPSETTING(    0x0c, "3" )
1016   PORT_DIPSETTING(    0x00, "5" )
1017   //"SW2:5" is unknown - Not listed in the service mode
1018   //"SW2:6" is unknown - Not listed in the service mode
1019   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )   PORT_DIPLOCATION("SW2:7")
1020   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1021   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1022   PORT_DIPNAME( 0x80, 0x80, "2 Credits to Start" )   PORT_DIPLOCATION("SW2:8")
1023   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1024   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1025INPUT_PORTS_END
1026
1027
9761028static INPUT_PORTS_START( lghost )
9771029   PORT_INCLUDE( system18_generic )
9781030
r241752r241753
11841236INPUT_PORTS_END
11851237
11861238
1187
11881239/*************************************
11891240 *
11901241 *  Graphics definitions
r241752r241753
12281279 *
12291280 *************************************/
12301281
1282WRITE_LINE_MEMBER(segas18_state::ym3438_irq_handler)
1283{
1284   if (state)
1285      m_soundcpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE );
1286   else
1287      m_soundcpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE );
1288}
1289
1290
12311291static MACHINE_CONFIG_START( system18, segas18_state )
12321292
12331293   // basic machine hardware
r241752r241753
12761336
12771337   MCFG_SOUND_ADD("ym1", YM3438, 8000000)
12781338   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
1339   MCFG_YM2612_IRQ_HANDLER(WRITELINE(segas18_state, ym3438_irq_handler))
12791340
12801341   MCFG_SOUND_ADD("ym2", YM3438, 8000000)
12811342   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
r241752r241753
18711932/**************************************************************************************************************************
18721933 **************************************************************************************************************************
18731934 **************************************************************************************************************************
1935    Hammer Away, Sega System 18 (prototype / unreleased)
1936    CPU: M68000
1937    ROM Board: 837-7525
1938
1939    Japanese text on the mission screens, but no "For use in Japan..." warning. There are screen shots of a version without
1940    the Japanese text on mission screens and an alternate title screen, so a "World" proto might exist.
1941*/
1942ROM_START( hamaway )
1943   ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code
1944   ROM_LOAD16_BYTE( "4.bin",  0x000000, 0x40000, CRC(cc0981e1) SHA1(63528bd36f27e62fdf40715101e6d05b73e48f16) ) // 1xxxxxxxxxxxxxxxxx = 0xFF
1945   ROM_LOAD16_BYTE( "6.bin",  0x000001, 0x40000, CRC(e8599ee6) SHA1(3e32b025403aecbaecfcdd0325e4acd676e99c4e) ) // 1xxxxxxxxxxxxxxxxx = 0xFF
1946   ROM_LOAD16_BYTE( "5.bin",  0x080000, 0x40000, CRC(fdb247fd) SHA1(ee9db799fb5de27f81904f8ef792203415b6d4a6) )
1947   ROM_LOAD16_BYTE( "7.bin",  0x080001, 0x40000, CRC(63711470) SHA1(6c4be3a0cf0f897c34ef0b3bf549f52b185bb915) )
1948
1949   ROM_REGION( 0x180000, "gfx1", 0 ) // tiles
1950   ROM_LOAD( "c10.bin",  0x000000, 0x40000, CRC(c55cb5cf) SHA1(396179632b29ac5f8b7f8f3c91d7cf834e548bdf) )
1951   ROM_LOAD( "1.bin",    0x040000, 0x40000, CRC(33be003f) SHA1(134fa6b3347c306d9e30882dfcf24632b49f85ea) )
1952   ROM_LOAD( "c11.bin",  0x080000, 0x40000, CRC(37787915) SHA1(c8d251be6c41de3aed2da6da70aa87071b70b1f6) )
1953   ROM_LOAD( "2.bin",    0x0c0000, 0x40000, CRC(60ca5c9f) SHA1(6358ea00125a5e3f55acf73aeb9c36b1db6e711e) )
1954   ROM_LOAD( "c12.bin",  0x100000, 0x40000, CRC(f12f1cf3) SHA1(45e883029c58e617a2a20ac1ab5c5f598c95f4bd) )
1955   ROM_LOAD( "3.bin",    0x140000, 0x40000, CRC(520aa7ae) SHA1(9584206aedd8be5ce9dca0ed370f8fe77aabaf76) )
1956
1957   ROM_REGION16_BE( 0x200000, "sprites", ROMREGION_ERASEFF ) // sprites
1958   ROM_LOAD16_BYTE( "c17.bin", 0x000001, 0x40000, CRC(aa28d7aa) SHA1(3dd5d95b05e408c023f9bd77753c37080714239d) )
1959   ROM_LOAD16_BYTE( "10.bin",  0x000000, 0x40000, CRC(c4c95161) SHA1(2e313a4ca9506f53a2062b4a8e5ba7b381ba93ae) )
1960   ROM_LOAD16_BYTE( "c18.bin", 0x080001, 0x40000, CRC(0f8fe8bb) SHA1(e6f68442b8d4def29b106458496a47344f70d511) )
1961   ROM_LOAD16_BYTE( "11.bin",  0x080000, 0x40000, CRC(2b5eacbc) SHA1(ba3690501588b9c88a31022b44bc3c82b44ae26b) )
1962   ROM_LOAD16_BYTE( "c19.bin", 0x100001, 0x40000, CRC(3c616caa) SHA1(d48a6239b7a52ac13971f7513a65a17af492bfdf) ) // 11xxxxxxxxxxxxxxxx = 0xFF
1963    ROM_LOAD16_BYTE( "12.bin",  0x100000, 0x40000, CRC(c7bbd579) SHA1(ab87bfdad66ea241cb23c9bbfea05f5a1574d6c9) ) // 1ST AND 2ND HALF IDENTICAL (but ok, because pairing ROM has no data in the 2nd half anyway)
1964
1965   ROM_REGION( 0x210000, "soundcpu", ROMREGION_ERASEFF ) // sound CPU
1966   ROM_LOAD( "c16.bin", 0x010000, 0x40000, CRC(913cc18c) SHA1(4bf4ec14937586c3ae77fcad57dcb21f6433ef81) )
1967   ROM_LOAD( "c15.bin", 0x090000, 0x40000, CRC(b53694fc) SHA1(0e42be2730abce1b52ea94a9fe61cbd1c9a0ccae) )
1968ROM_END
1969
1970
1971/**************************************************************************************************************************
1972 **************************************************************************************************************************
1973 **************************************************************************************************************************
18741974    Laser Ghost, Sega System 18
18751975    CPU: FD1094 (317-0166)
18761976    ROM Board: 171-5873B
r241752r241753
22622362ROM_END
22632363
22642364
2265
22662365/*************************************
22672366 *
22682367 *  Generic driver initialization
r241752r241753
22842383   init_generic(ROM_BOARD_171_5987);
22852384}
22862385
2386DRIVER_INIT_MEMBER(segas18_state,hamaway)
2387{
2388   init_generic(ROM_BOARD_837_7525);
2389}
22872390
22882391
22892392/*************************************
r241752r241753
23142417}
23152418
23162419
2317
23182420/*************************************
23192421 *
23202422 *  Game driver(s)
23212423 *
23222424 *************************************/
23232425
2324//    YEAR, NAME,      PARENT,   MACHINE,              INPUT,    INIT,                       MONITOR,COMPANY,FULLNAME,FLAGS
2325GAME( 1990, astorm,    0,        system18_fd1094,      astorm2p, segas18_state,generic_5874, ROT0,   "Sega", "Alien Storm (World, 2 Players, FD1094 317-0154)", 0 )
2326GAME( 1990, astorm3,   astorm,   system18_fd1094,      astorm,   segas18_state,generic_5874, ROT0,   "Sega", "Alien Storm (World, 3 Players, FD1094 317-0148)", 0 )
2327GAME( 1990, astormu,   astorm,   system18_fd1094,      astorm,   segas18_state,generic_5874, ROT0,   "Sega", "Alien Storm (US, 3 Players, FD1094 317-0147)", 0 )
2328GAME( 1990, astormj,   astorm,   system18_fd1094,      astorm2p, segas18_state,generic_5874, ROT0,   "Sega", "Alien Storm (Japan, 2 Players, FD1094 317-0146)", 0 )
2329GAME( 1989, bloxeed,   0,        system18_fd1094,      bloxeed,  segas18_state,generic_5874, ROT0,   "Sega", "Bloxeed (Japan, FD1094 317-0139)", 0 )
2330GAME( 1991, cltchitr,  0,        system18_fd1094,      cltchitr, segas18_state,generic_5987, ROT0,   "Sega", "Clutch Hitter (US, FD1094 317-0176)", 0 )
2331GAME( 1991, cltchitrj, cltchitr, system18_fd1094,      cltchitr, segas18_state,generic_5987, ROT0,   "Sega", "Clutch Hitter (Japan, FD1094 317-0175)", 0 )
2332GAME( 1992, desertbr,  0,        system18_fd1094,      desertbr, segas18_state,generic_5987, ROT270, "Sega", "Desert Breaker (World, FD1094 317-0196)", 0 )
2333GAME( 1992, desertbrj, desertbr, system18_fd1094,      desertbr, segas18_state,generic_5987, ROT270, "Sega", "Desert Breaker (Japan, FD1094 317-0194)", 0 )
2334GAME( 1991, ddcrew,    0,        system18_fd1094,      ddcrew3p, segas18_state,ddcrew,       ROT0,   "Sega", "D. D. Crew (World, 3 Players, FD1094 317-0190)", 0 )
2335GAME( 1991, ddcrewu,   ddcrew,   system18_fd1094,      ddcrew,   segas18_state,ddcrew,       ROT0,   "Sega", "D. D. Crew (US, 4 Players, FD1094 317-0186)", 0 )
2336GAME( 1991, ddcrew2,   ddcrew,   system18_fd1094,      ddcrew2p, segas18_state,ddcrew,       ROT0,   "Sega", "D. D. Crew (World, 2 Players, FD1094 317-0184)", 0 )
2337GAME( 1991, ddcrew1,   ddcrew,   system18_fd1094,      ddcrew,   segas18_state,ddcrew,       ROT0,   "Sega", "D. D. Crew (World, 4 Players, FD1094 317-0187)", 0 )
2338GAME( 1991, ddcrewj,   ddcrew,   system18_fd1094,      ddcrew,   segas18_state,ddcrew,       ROT0,   "Sega", "D. D. Crew (Japan, 4 Players, FD1094 317-0185)", 0 )
2339GAME( 1991, ddcrewj2,  ddcrew,   system18_fd1094,      ddcrew2p, segas18_state,ddcrew,       ROT0,   "Sega", "D. D. Crew (Japan, 2 Players, FD1094 317-0182)", 0 )
2340GAME( 1990, lghost,    0,        system18_fd1094,      lghost,   segas18_state,lghost,       ROT0,   "Sega", "Laser Ghost (World, FD1094 317-0166)", 0 )
2341GAME( 1990, lghostu,   lghost,   system18_fd1094,      lghost,   segas18_state,lghost,       ROT0,   "Sega", "Laser Ghost (US, FD1094 317-0165)", 0 )
2342GAME( 1990, mwalk,     0,        system18_fd1094_i8751,mwalk,    segas18_state,generic_5874, ROT0,   "Sega", "Michael Jackson's Moonwalker (World, FD1094/8751 317-0159)", 0 )
2343GAME( 1990, mwalku,    mwalk,    system18_fd1094_i8751,mwalka,   segas18_state,generic_5874, ROT0,   "Sega", "Michael Jackson's Moonwalker (US, FD1094/8751 317-0158)", 0 )
2344GAME( 1990, mwalkj,    mwalk,    system18_fd1094_i8751,mwalk,    segas18_state,generic_5874, ROT0,   "Sega", "Michael Jackson's Moonwalker (Japan, FD1094/8751 317-0157)", 0 )
2345GAME( 1989, pontoon,   0,        system18_fd1094,      shdancer, segas18_state,generic_5874, ROT0,   "Sega", "Pontoon (FD1094 317-0153)", GAME_NOT_WORKING ) // satellite/networked gambling game?
2346GAME( 1989, shdancer,  0,        system18,             shdancer, segas18_state,generic_shad, ROT0,   "Sega", "Shadow Dancer (World)", 0 )
2347GAME( 1989, shdancerj, shdancer, system18,             shdancer, segas18_state,generic_shad, ROT0,   "Sega", "Shadow Dancer (Japan)", 0 )
2348GAME( 1989, shdancer1, shdancer, system18,             shdancer, segas18_state,generic_shad, ROT0,   "Sega", "Shadow Dancer (US)", 0 )
2349GAME( 1992, wwallyj,   0,        system18_fd1094,      wwally,   segas18_state,wwally,       ROT0,   "Sega", "Wally wo Sagase! (rev B, Japan, FD1094 317-0197B)", 0) // the roms do contain an english logo so maybe there is a world / us set too
2350GAME( 1992, wwallyja,  wwallyj,  system18_fd1094,      wwally,   segas18_state,wwally,       ROT0,   "Sega", "Wally wo Sagase! (rev A, Japan, FD1094 317-0197A)", 0 )
2426//    YEAR, NAME,      PARENT,   MACHINE,              INPUT,                   INIT,         MONITOR, COMPANY,        FULLNAME,                                        FLAGS
2427GAME( 1990, astorm,    0,        system18_fd1094,      astorm2p, segas18_state, generic_5874, ROT0,   "Sega",          "Alien Storm (World, 2 Players, FD1094 317-0154)", 0 )
2428GAME( 1990, astorm3,   astorm,   system18_fd1094,      astorm,   segas18_state, generic_5874, ROT0,   "Sega",          "Alien Storm (World, 3 Players, FD1094 317-0148)", 0 )
2429GAME( 1990, astormu,   astorm,   system18_fd1094,      astorm,   segas18_state, generic_5874, ROT0,   "Sega",          "Alien Storm (US, 3 Players, FD1094 317-0147)", 0 )
2430GAME( 1990, astormj,   astorm,   system18_fd1094,      astorm2p, segas18_state, generic_5874, ROT0,   "Sega",          "Alien Storm (Japan, 2 Players, FD1094 317-0146)", 0 )
2431GAME( 1989, bloxeed,   0,        system18_fd1094,      bloxeed,  segas18_state, generic_5874, ROT0,   "Sega",          "Bloxeed (Japan, FD1094 317-0139)", 0 )
2432GAME( 1991, cltchitr,  0,        system18_fd1094,      cltchitr, segas18_state, generic_5987, ROT0,   "Sega",          "Clutch Hitter (US, FD1094 317-0176)", 0 )
2433GAME( 1991, cltchitrj, cltchitr, system18_fd1094,      cltchitr, segas18_state, generic_5987, ROT0,   "Sega",          "Clutch Hitter (Japan, FD1094 317-0175)", 0 )
2434GAME( 1992, desertbr,  0,        system18_fd1094,      desertbr, segas18_state, generic_5987, ROT270, "Sega",          "Desert Breaker (World, FD1094 317-0196)", 0 )
2435GAME( 1992, desertbrj, desertbr, system18_fd1094,      desertbr, segas18_state, generic_5987, ROT270, "Sega",          "Desert Breaker (Japan, FD1094 317-0194)", 0 )
2436GAME( 1991, ddcrew,    0,        system18_fd1094,      ddcrew3p, segas18_state, ddcrew,       ROT0,   "Sega",          "D. D. Crew (World, 3 Players, FD1094 317-0190)", 0 )
2437GAME( 1991, ddcrewu,   ddcrew,   system18_fd1094,      ddcrew,   segas18_state, ddcrew,       ROT0,   "Sega",          "D. D. Crew (US, 4 Players, FD1094 317-0186)", 0 )
2438GAME( 1991, ddcrew2,   ddcrew,   system18_fd1094,      ddcrew2p, segas18_state, ddcrew,       ROT0,   "Sega",          "D. D. Crew (World, 2 Players, FD1094 317-0184)", 0 )
2439GAME( 1991, ddcrew1,   ddcrew,   system18_fd1094,      ddcrew,   segas18_state, ddcrew,       ROT0,   "Sega",          "D. D. Crew (World, 4 Players, FD1094 317-0187)", 0 )
2440GAME( 1991, ddcrewj,   ddcrew,   system18_fd1094,      ddcrew,   segas18_state, ddcrew,       ROT0,   "Sega",          "D. D. Crew (Japan, 4 Players, FD1094 317-0185)", 0 )
2441GAME( 1991, ddcrewj2,  ddcrew,   system18_fd1094,      ddcrew2p, segas18_state, ddcrew,       ROT0,   "Sega",          "D. D. Crew (Japan, 2 Players, FD1094 317-0182)", 0 )
2442GAME( 1991, hamaway,   0,        system18,             hamaway,  segas18_state, hamaway,      ROT90,  "Sega / Santos", "Hammer Away (Japan, prototype)", 0 )
2443GAME( 1990, lghost,    0,        system18_fd1094,      lghost,   segas18_state, lghost,       ROT0,   "Sega",          "Laser Ghost (World, FD1094 317-0166)", 0 )
2444GAME( 1990, lghostu,   lghost,   system18_fd1094,      lghost,   segas18_state, lghost,       ROT0,   "Sega",          "Laser Ghost (US, FD1094 317-0165)", 0 )
2445GAME( 1990, mwalk,     0,        system18_fd1094_i8751,mwalk,    segas18_state, generic_5874, ROT0,   "Sega",          "Michael Jackson's Moonwalker (World, FD1094/8751 317-0159)", 0 )
2446GAME( 1990, mwalku,    mwalk,    system18_fd1094_i8751,mwalka,   segas18_state, generic_5874, ROT0,   "Sega",          "Michael Jackson's Moonwalker (US, FD1094/8751 317-0158)", 0 )
2447GAME( 1990, mwalkj,    mwalk,    system18_fd1094_i8751,mwalk,    segas18_state, generic_5874, ROT0,   "Sega",          "Michael Jackson's Moonwalker (Japan, FD1094/8751 317-0157)", 0 )
2448GAME( 1989, pontoon,   0,        system18_fd1094,      shdancer, segas18_state, generic_5874, ROT0,   "Sega",          "Pontoon (FD1094 317-0153)", GAME_NOT_WORKING ) // satellite/networked gambling game?
2449GAME( 1989, shdancer,  0,        system18,             shdancer, segas18_state, generic_shad, ROT0,   "Sega",          "Shadow Dancer (World)", 0 )
2450GAME( 1989, shdancerj, shdancer, system18,             shdancer, segas18_state, generic_shad, ROT0,   "Sega",          "Shadow Dancer (Japan)", 0 )
2451GAME( 1989, shdancer1, shdancer, system18,             shdancer, segas18_state, generic_shad, ROT0,   "Sega",          "Shadow Dancer (US)", 0 )
2452GAME( 1992, wwallyj,   0,        system18_fd1094,      wwally,   segas18_state, wwally,       ROT0,   "Sega",          "Wally wo Sagase! (rev B, Japan, FD1094 317-0197B)", 0) // the roms do contain an english logo so maybe there is a world / us set too
2453GAME( 1992, wwallyja,  wwallyj,  system18_fd1094,      wwally,   segas18_state, wwally,       ROT0,   "Sega",          "Wally wo Sagase! (rev A, Japan, FD1094 317-0197A)", 0 )
trunk/src/mame/drivers/segaufo.c
r241752r241753
2323  - # School Kids (1993)
2424 
2525  4th gen - EX brd
26    * Z80, 2 Sega 315-5296(I/O), YM3438, NEC uPD71054C, optional NEC uPD7759C
26    * Z80, 2 Sega 315-5296(I/O), 315-5338A, YM3438, NEC uPD71054C, optional NEC uPD7759C
2727  - # Dream Palace (1992)
2828  - # Dream Kitchen (1994)
2929  - # UFO Catcher Excellent (1994)
r241752r241753
3535 
3636  More games were released after 2000, assumed to be on more modern hardware.
3737
38
3938  TODO:
40  - make the other games work (for now only newufo+clones work)
41  - add layout
39  - add dipswitches
40  - prize sensor for ufo21/ufo800
4241
4342***************************************************************************/
4443
r241752r241753
4746#include "machine/pit8253.h"
4847#include "machine/315_5296.h"
4948#include "sound/2612intf.h"
49#include "sound/upd7759.h"
5050
51// the layouts are very similar to eachother
52#include "newufo.lh"
53#include "ufomini.lh"
54#include "ufo21.lh"
55#include "ufo800.lh"
5156
57
5258/* simulation parameters */
5359// x/y/z cabinet dimensions per player (motor range)
5460#define CABINET_WIDTH   400
5561#define CABINET_DEPTH   400
56#define CABINET_HEIGHT  250
62#define CABINET_HEIGHT  300
5763
5864// x/y/z motor speed in hertz
5965#define MOTOR_SPEED     100
6066
6167// crane size (stepper motor range)
62// note: the game expects this to be around 350 steps per quarter rotation
68// note: UFO board/EX board expects this to be around 350 steps per quarter rotation
6369#define CRANE_SIZE      350
6470
6571
r241752r241753
6975public:
7076   ufo_state(const machine_config &mconfig, device_type type, const char *tag)
7177      : driver_device(mconfig, type, tag),
72      m_maincpu(*this, "maincpu")
78      m_maincpu(*this, "maincpu"),
79      m_io1(*this, "io1"),
80      m_io2(*this, "io2"),
81      m_upd(*this, "upd")
7382   { }
7483
7584   required_device<cpu_device> m_maincpu;
85   required_device<sega_315_5296_device> m_io1;
86   required_device<sega_315_5296_device> m_io2;
87   optional_device<upd7759_device> m_upd;
7688   
7789   struct Player
7890   {
r241752r241753
99111   DECLARE_WRITE8_MEMBER(cp_digits_w);
100112   DECLARE_WRITE8_MEMBER(crane_xyz_w);
101113   DECLARE_WRITE8_MEMBER(ufo_lamps_w);
114
115   DECLARE_READ8_MEMBER(ex_crane_limits_r);
116   DECLARE_READ8_MEMBER(ex_crane_open_r);
117   DECLARE_WRITE8_MEMBER(ex_stepper_w);
118   DECLARE_WRITE8_MEMBER(ex_cp_lamps_w);
119   DECLARE_WRITE8_MEMBER(ex_crane_xyz_w);
120   DECLARE_WRITE8_MEMBER(ex_ufo21_lamps_w);
121   DECLARE_WRITE8_MEMBER(ex_ufo800_lamps_w);
122   DECLARE_READ8_MEMBER(ex_upd_busy_r);
123   DECLARE_WRITE8_MEMBER(ex_upd_start_w);
102124   
103125   virtual void machine_reset();
104126   virtual void machine_start();
105127   TIMER_DEVICE_CALLBACK_MEMBER(simulate_xyz);
128   TIMER_DEVICE_CALLBACK_MEMBER(update_info);
106129};
107130
108131
109132
110
111133void ufo_state::motor_tick(int p, int m)
112134{
113135   float delta = m_player[p].motor[m].speed;
r241752r241753
123145      m_player[p].motor[m].position = 1;
124146}
125147
126
127148TIMER_DEVICE_CALLBACK_MEMBER(ufo_state::simulate_xyz)
128149{
129150   for (int p = 0; p < 2; p++)
r241752r241753
131152         motor_tick(p, m);
132153}
133154
155
156TIMER_DEVICE_CALLBACK_MEMBER(ufo_state::update_info)
157{
158   // output ufo motor positions
159   // 0 X: 000 = right,  100 = left (player 1)
160   // 1 Y: 000 = front,  100 = back
161   // 2 Z: 000 = up,     100 = down
162   // 3 C: 000 = closed, 100 = open
163   for (int p = 0; p < 2; p++)
164      for (int m = 0; m < 4; m++)
165         output_set_indexed_value("counter", p*4 + m, (UINT8)(m_player[p].motor[m].position * 100));
166   
167#if 0
168   char msg1[0x100] = {0};
169   char msg2[0x100] = {0};
170   for (int i = 0; i < 8; i++)
171   {
172      sprintf(msg2, "%02X ", m_io2->debug_peek_output(i));
173      strcat(msg1, msg2);
174   }
175   popmessage("%s", msg1);
176#endif
177}
178
179
180
134181/***************************************************************************
135182
136183  I/O
r241752r241753
144191
145192WRITE_LINE_MEMBER(ufo_state::pit_out1)
146193{
147   // ?
194   // NMI?
195   if (state)
196      m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
148197}
149198
150199WRITE_LINE_MEMBER(ufo_state::pit_out2)
151200{
152   // NMI?
153   if (state)
154      m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
201   // ?
155202}
156203
157204
205/* generic / UFO board handlers */
206
207/* io1 */
208
209READ8_MEMBER(ufo_state::crane_limits_r)
210{
211   int p = offset & 1;
212   UINT8 ret = 0x7f;
213
214   // d0: left limit sw (right for p2)
215   // d1: right limit sw (left for p2)
216   // d2: back limit sw
217   // d3: front limit sw
218   // d4: down limit sw
219   // d5: up limit sw
220   for (int m = 0; m < 3; m++)
221   {
222      ret ^= (m_player[p].motor[m].position >= 1) << (m*2 + 0);
223      ret ^= (m_player[p].motor[m].position <= 0) << (m*2 + 1);
224   }
225
226   // d6: crane open sensor (reflective sticker on the stepper motor rotation disc)
227   if (m_player[p].motor[3].position >= 0.97)
228      ret ^= 0x40;
229   
230   // d7: prize sensor (mirror?)
231   ret |= (ioport(p ? "IN2" : "IN1")->read() & 0x80);
232
233   return ret;
234}
235
236/* io2 */
237
158238WRITE8_MEMBER(ufo_state::stepper_w)
159239{
160240   for (int p = 0; p < 2; p++)
r241752r241753
227307
228308WRITE8_MEMBER(ufo_state::ufo_lamps_w)
229309{
230   ;
310   // d0-d3: ufo leds (2 bits per player)
311   // 3 sets of two red/green leds, each set is wired to the same control 2 bits
312   // 00 = off,   off
313   // 11 = red,   red
314   // 01 = green, red
315   // 10 = red,   green
316   output_set_lamp_value(10, data & 3);
317   output_set_lamp_value(11, data >> 2 & 3);
318   
319   // d4,d5: ?
320   // d6,d7: coincounters
321   coin_counter_w(machine(), 0, data & 0x40); // 100 Y
322   coin_counter_w(machine(), 1, data & 0x80); // 500 Y
231323}
232324
233325
234READ8_MEMBER(ufo_state::crane_limits_r)
326/* EX board specific handlers */
327
328/* io1 */
329
330READ8_MEMBER(ufo_state::ex_crane_limits_r)
235331{
236332   int p = offset & 1;
333   UINT8 ret = 0xf0;
334
335   // d0: left limit sw (invert)
336   // d1: right limit sw (invert)
337   // d2: back limit sw (invert)
338   // d3: front limit sw (invert)
339   // d4: ?
340   // d5: down limit sw
341   // d6: up limit sw
342   // d7: ?
343   for (int m = 0; m < 3; m++)
344   {
345      int shift = (m*2) + (m == 2);
346      ret ^= (m_player[p].motor[m].position >= 1) << shift;
347      ret ^= (m_player[p].motor[m].position <= 0) << (shift+1);
348   }
349   
350   return ret;
351}
352
353READ8_MEMBER(ufo_state::ex_crane_open_r)
354{
355   // d0-d3: p1, d4-d7: p2
237356   UINT8 ret = 0xff;
357   
358   for (int p = 0; p < 2; p++)
359   {
360      // d0: crane open sensor
361      if (m_player[p].motor[3].position >= 0.97)
362         ret ^= (1 << (p*4));
363     
364      // d1: coincounter is plugged in (ufo800 gives error 14 otherwise)
365      // d2,d3: ?
366   }
367   
368   return ret;
369}
238370
239   // d0: left limit sw (right for p2)
240   // d1: right limit sw (left for p2)
241   // d2: back limit sw
242   // d3: front limit sw
243   // d4: down limit sw
244   // d5: up limit sw
245   for (int i = 0; i < 3; i++)
371/* io2 */
372
373WRITE8_MEMBER(ufo_state::ex_stepper_w)
374{
375   // stepper motor sequence is: 6 c 9 3 6 c 9 3..
376   // which means d0 and d3 are swapped when compared with UFO board hardware
377   stepper_w(space, offset, BITSWAP8(data,4,6,5,7,0,2,1,3));
378}
379
380WRITE8_MEMBER(ufo_state::ex_cp_lamps_w)
381{
382   // d0,d1,d4,d5: p1/p2 button lamps
383   for (int i = 0; i < 4; i++)
384      output_set_lamp_value(i, ~data >> ((i&1) + (i&2) * 2) & 1);
385   
386   // d2,d3,d6,d7: p1/p2 coincounters
387   for (int i = 0; i < 4; i++)
388      coin_counter_w(machine(), i, data >> (2 + (i&1) + (i&2) * 2) & 1);
389}
390
391WRITE8_MEMBER(ufo_state::ex_crane_xyz_w)
392{
393   int p = offset & 1;
394   
395   // more straightforward setup than on UFO board hardware
396   // d0: move left
397   // d1: move right
398   // d2: move back
399   // d3: move front
400   // d4: move down
401   // d5: move up
402   for (int m = 0; m < 3; m++)
246403   {
247      ret ^= (m_player[p].motor[i].position >= 1) << (i*2 + 0);
248      ret ^= (m_player[p].motor[i].position <= 0) << (i*2 + 1);
404      int bits = data >> (m*2) & 3;
405      m_player[p].motor[m].running = (bits == 1 || bits == 2) ? 1 : 0;
406      m_player[p].motor[m].direction = bits & 2;
249407   }
408}
250409
251   // d6: crane open sensor (reflective sticker on the stepper motor rotation disc)
252   if (m_player[p].motor[3].position >= 0.97)
253      ret ^= 0x40;
254   
410WRITE8_MEMBER(ufo_state::ex_ufo800_lamps_w)
411{
412   // d0-d4: 5 red leds on ufo
413   // other bits: ?
414   for (int i = 0; i < 5; i++)
415      output_set_lamp_value(10 + i, data >> i & 1);
416}
417
418/* 315-5338A */
419
420WRITE8_MEMBER(ufo_state::ex_ufo21_lamps_w)
421{
422   // d0: ? (ufo21 reads from it too, but value is discarded)
423   // d1-d6 are the 6 red leds on each ufo
255424   // d7: ?
425   for (int i = 1; i < 7; i++)
426      output_set_lamp_value(10 + offset * 10 + i, data >> i & 1);
427}
256428
257   return ret;
429WRITE8_MEMBER(ufo_state::ex_upd_start_w)
430{
431   // d0: upd7759c start sample
432   // other bits: unused?
433   m_upd->start_w(~data & 1);
258434}
259435
436READ8_MEMBER(ufo_state::ex_upd_busy_r)
437{
438   // d0: upd7759c busy
439   // other bits: unused?
440   int d0 = m_upd->busy_r() ? 1 : 0;
441   return 0xfe | d0;
442}
260443
261444
445/* Memory maps */
262446
263447static ADDRESS_MAP_START( ufo_map, AS_PROGRAM, 8, ufo_state )
264448   AM_RANGE(0x0000, 0xbfff) AM_ROM
r241752r241753
270454   ADDRESS_MAP_GLOBAL_MASK(0xff)
271455   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pit", pit8254_device, read, write)
272456   AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ym", ym3438_device, read, write)
273   AM_RANGE(0x80, 0x8f) AM_DEVREADWRITE("io1", sega_315_5296_device, read, write)
274   AM_RANGE(0xc0, 0xcf) AM_DEVREADWRITE("io2", sega_315_5296_device, read, write)
457   AM_RANGE(0x80, 0xbf) AM_DEVREADWRITE("io1", sega_315_5296_device, read, write)
458   AM_RANGE(0xc0, 0xff) AM_DEVREADWRITE("io2", sega_315_5296_device, read, write)
275459ADDRESS_MAP_END
276460
277461
462static ADDRESS_MAP_START( ex_ufo21_portmap, AS_IO, 8, ufo_state )
463   AM_RANGE(0x20, 0x20) AM_DEVWRITE("upd", upd7759_device, port_w)
464   AM_RANGE(0x60, 0x60) AM_WRITE(ex_upd_start_w) AM_READNOP
465   AM_RANGE(0x61, 0x61) AM_READ(ex_upd_busy_r)
466   AM_RANGE(0x64, 0x65) AM_WRITE(ex_ufo21_lamps_w) AM_READNOP
467//   AM_RANGE(0x68, 0x68) AM_WRITENOP // ?
468   AM_IMPORT_FROM( ufo_portmap )
469ADDRESS_MAP_END
278470
471static ADDRESS_MAP_START( ex_ufo800_portmap, AS_IO, 8, ufo_state )
472//   AM_RANGE(0x60, 0x67) AM_NOP // unused?
473//   AM_RANGE(0x68, 0x68) AM_WRITENOP // ?
474   AM_IMPORT_FROM( ufo_portmap )
475ADDRESS_MAP_END
476
477
478
279479/***************************************************************************
280480
281481  Inputs
282482
283483***************************************************************************/
284484
285static INPUT_PORTS_START( ufo )
286   PORT_START("P1")
287   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("P1 Coin 1")
288   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("P1 Coin 2")
485static INPUT_PORTS_START( newufo )
486   PORT_START("IN1")
487   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("P1 Coin 1") // 100 Y
488   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("P1 Coin 2") // 500 Y
289489   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("P1 Test")
290490   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P1 Service Coin")
291491   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("P1 Credit Clear")
292492   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
293493   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
294   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Prize Fell")
494   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Prize Sensor")
295495
296   PORT_START("P2")
297   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("P2 Coin 1")
298   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_NAME("P2 Coin 2")
496   PORT_START("IN2")
497   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("P2 Coin 1") // 100 Y
498   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_NAME("P2 Coin 2") // 500 Y
299499   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Test") PORT_CODE(KEYCODE_F1)
300500   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("P2 Service Coin")
301501   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE4 ) PORT_NAME("P2 Credit Clear")
302502   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
303503   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
304   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Prize Fell")
504   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Prize Sensor")
305505
306506   PORT_START("DSW1") // coinage
307507   PORT_DIPNAME( 0x01, 0x01, "UNK1-01" )
r241752r241753
342542   PORT_DIPNAME( 0x08, 0x08, "UNK2-08" )
343543   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
344544   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
345   PORT_DIPNAME( 0x10, 0x10, "UNK2-10 Enable Prize Sensor" )
545   PORT_DIPNAME( 0x10, 0x10, "UNK2-10 Disable Prize Sensor" )
346546   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
347547   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
348548   PORT_DIPNAME( 0x20, 0x20, "UNK2-20" )
r241752r241753
356556   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
357557INPUT_PORTS_END
358558
559static INPUT_PORTS_START( ufomini )
560   PORT_INCLUDE( newufo )
359561
562   PORT_MODIFY("IN2")
563   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
564INPUT_PORTS_END
360565
566
567static INPUT_PORTS_START( ufo21 )
568   PORT_START("IN1")
569   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Button")
570   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P1 Service Coin")
571   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("P1 Coin 1")
572   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
573   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
574   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("P2 Service Coin")
575   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("P2 Coin 1")
576   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
577
578   PORT_START("IN2")
579   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
580   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
581   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
582   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
583   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
584   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
585   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_PLAYER(2)
586   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_PLAYER(2)
587
588   PORT_START("DSW1") // coinage
589   PORT_DIPNAME( 0x01, 0x01, "UNK1-01" )
590   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
591   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
592   PORT_DIPNAME( 0x02, 0x02, "UNK1-02" )
593   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
594   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
595   PORT_DIPNAME( 0x04, 0x04, "UNK1-04" )
596   PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
597   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
598   PORT_DIPNAME( 0x08, 0x08, "UNK1-08" )
599   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
600   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
601   PORT_DIPNAME( 0x10, 0x10, "UNK1-10" )
602   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
603   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
604   PORT_DIPNAME( 0x20, 0x20, "UNK1-20" )
605   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
606   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
607   PORT_DIPNAME( 0x40, 0x40, "UNK1-40" )
608   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
609   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
610   PORT_DIPNAME( 0x80, 0x80, "UNK1-80" )
611   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
612   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
613
614   PORT_START("DSW2")
615   PORT_DIPNAME( 0x01, 0x01, "UNK2-01" )
616   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
617   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
618   PORT_DIPNAME( 0x02, 0x02, "UNK2-02" )
619   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
620   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
621   PORT_DIPNAME( 0x04, 0x04, "UNK2-04" )
622   PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
623   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
624   PORT_DIPNAME( 0x08, 0x08, "UNK2-08 Demo Music On" )
625   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
626   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
627   PORT_DIPNAME( 0x10, 0x10, "UNK2-10" )
628   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
629   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
630   PORT_DIPNAME( 0x20, 0x20, "UNK2-20" )
631   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
632   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
633   PORT_DIPNAME( 0x40, 0x40, "UNK2-40" )
634   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
635   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
636   PORT_DIPNAME( 0x80, 0x80, "UNK2-80" )
637   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
638   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
639INPUT_PORTS_END
640
641static INPUT_PORTS_START( ufo800 )
642   PORT_START("IN1")
643   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Button")
644   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P1 Service Coin")
645   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("P1 Coin 1")
646   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("P1 Coin 2")
647   PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
648
649   PORT_START("IN2")
650   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
651   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
652   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
653   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
654   PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
655
656   PORT_START("DSW1") // coinage
657   PORT_DIPNAME( 0x01, 0x01, "UNK1-01" )
658   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
659   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
660   PORT_DIPNAME( 0x02, 0x02, "UNK1-02" )
661   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
662   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
663   PORT_DIPNAME( 0x04, 0x04, "UNK1-04" )
664   PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
665   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
666   PORT_DIPNAME( 0x08, 0x08, "UNK1-08" )
667   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
668   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
669   PORT_DIPNAME( 0x10, 0x10, "UNK1-10" )
670   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
671   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
672   PORT_DIPNAME( 0x20, 0x20, "UNK1-20" )
673   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
674   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
675   PORT_DIPNAME( 0x40, 0x40, "UNK1-40" )
676   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
677   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
678   PORT_DIPNAME( 0x80, 0x80, "UNK1-80" )
679   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
680   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
681
682   PORT_START("DSW2")
683   PORT_DIPNAME( 0x01, 0x01, "UNK2-01 BGM Select" )
684   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
685   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
686   PORT_DIPNAME( 0x02, 0x02, "UNK2-02 BGM Select" )
687   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
688   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
689   PORT_DIPNAME( 0x04, 0x04, "UNK2-04" )
690   PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
691   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
692   PORT_DIPNAME( 0x08, 0x08, "UNK2-08" )
693   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
694   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
695   PORT_DIPNAME( 0x10, 0x10, "UNK2-10" )
696   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
697   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
698   PORT_DIPNAME( 0x20, 0x20, "UNK2-20" )
699   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
700   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
701   PORT_DIPNAME( 0x40, 0x40, "UNK2-40" )
702   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
703   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
704   PORT_DIPNAME( 0x80, 0x80, "UNK2-80" )
705   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
706   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
707INPUT_PORTS_END
708
709
710
361711/***************************************************************************
362712
363713  Machine Config
r241752r241753
370720
371721void ufo_state::machine_start()
372722{
373   // init/zerofill
723   // init/zerofill/register for savestates
374724   static const float motor_speeds[4] =
375725      { 1.0f/CABINET_WIDTH, 1.0f/CABINET_DEPTH, 1.0f/CABINET_HEIGHT, 1.0f/CRANE_SIZE };
376726   
377   for (int p = 0; p < 2; p++)
727   for (int m = 0; m < 4; m++)
378728   {
379      for (int m = 0; m < 4; m++)
729      for (int p = 0; p < 2; p++)
380730      {
381731         m_player[p].motor[m].running = 0;
382732         m_player[p].motor[m].direction = 0;
383733         m_player[p].motor[m].position = 0.5;
384734         m_player[p].motor[m].speed = motor_speeds[m];
385735      }
736
737      save_item(NAME(m_player[0].motor[m].running), m);
738      save_item(NAME(m_player[0].motor[m].direction), m);
739      save_item(NAME(m_player[0].motor[m].position), m);
740
741      save_item(NAME(m_player[1].motor[m].running), m);
742      save_item(NAME(m_player[1].motor[m].direction), m);
743      save_item(NAME(m_player[1].motor[m].position), m);
386744   }
745   
746   m_stepper = 0;
747   save_item(NAME(m_stepper));
387748}
388749
389750WRITE_LINE_MEMBER(ufo_state::ym3438_irq)
r241752r241753
391752   m_maincpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE);
392753}
393754
394static MACHINE_CONFIG_START( ufo, ufo_state )
755static MACHINE_CONFIG_START( newufo, ufo_state )
395756
396757   /* basic machine hardware */
397   MCFG_CPU_ADD("maincpu", Z80, 8000000)
758   MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2)
398759   MCFG_CPU_PROGRAM_MAP(ufo_map)
399760   MCFG_CPU_IO_MAP(ufo_portmap)
400761
401762   MCFG_TIMER_DRIVER_ADD_PERIODIC("motor_timer", ufo_state, simulate_xyz, attotime::from_hz(MOTOR_SPEED))
763   MCFG_TIMER_DRIVER_ADD_PERIODIC("update_timer", ufo_state, update_info, attotime::from_hz(60))
402764   
403   MCFG_DEVICE_ADD("io1", SEGA_315_5296, 16000000)
765   MCFG_DEVICE_ADD("io1", SEGA_315_5296, XTAL_16MHz)
404766   // all ports set to input
405767   MCFG_315_5296_IN_PORTA_CB(READ8(ufo_state, crane_limits_r))
406768   MCFG_315_5296_IN_PORTB_CB(READ8(ufo_state, crane_limits_r))
407//   MCFG_315_5296_IN_PORTC_CB(NOOP)
408//   MCFG_315_5296_IN_PORTD_CB(NOOP)
409   MCFG_315_5296_IN_PORTE_CB(IOPORT("P1"))
769   MCFG_315_5296_IN_PORTE_CB(IOPORT("IN1"))
410770   MCFG_315_5296_IN_PORTF_CB(IOPORT("DSW1"))
411771   MCFG_315_5296_IN_PORTG_CB(IOPORT("DSW2"))
412   MCFG_315_5296_IN_PORTH_CB(IOPORT("P2"))
772   MCFG_315_5296_IN_PORTH_CB(IOPORT("IN2"))
413773
414   MCFG_DEVICE_ADD("io2", SEGA_315_5296, 16000000)
774   MCFG_DEVICE_ADD("io2", SEGA_315_5296, XTAL_16MHz)
415775   // all ports set to output
416776   MCFG_315_5296_OUT_PORTA_CB(WRITE8(ufo_state, stepper_w))
417777   MCFG_315_5296_OUT_PORTB_CB(WRITE8(ufo_state, cp_lamps_w))
r241752r241753
420780   MCFG_315_5296_OUT_PORTE_CB(WRITE8(ufo_state, crane_xyz_w))
421781   MCFG_315_5296_OUT_PORTF_CB(WRITE8(ufo_state, crane_xyz_w))
422782   MCFG_315_5296_OUT_PORTG_CB(WRITE8(ufo_state, ufo_lamps_w))
423//   MCFG_315_5296_OUT_PORTH_CB(NOOP)
424783
425   MCFG_DEVICE_ADD("pit", PIT8254, 0) // uPD71054C, configuration is unknown
426   MCFG_PIT8253_CLK0(8000000/256)
784   MCFG_DEVICE_ADD("pit", PIT8254, XTAL_16MHz/2) // uPD71054C, configuration is unknown
785   MCFG_PIT8253_CLK0(XTAL_16MHz/2/256)
427786   MCFG_PIT8253_OUT0_HANDLER(WRITELINE(ufo_state, pit_out0))
428   MCFG_PIT8253_CLK1(8000000/256)
787   MCFG_PIT8253_CLK1(XTAL_16MHz/2/256)
429788   MCFG_PIT8253_OUT1_HANDLER(WRITELINE(ufo_state, pit_out1))
430   MCFG_PIT8253_CLK2(8000000/256)
789   MCFG_PIT8253_CLK2(XTAL_16MHz/2/256)
431790   MCFG_PIT8253_OUT2_HANDLER(WRITELINE(ufo_state, pit_out2))
432791
433792   /* no video! */
r241752r241753
435794   /* sound hardware */
436795   MCFG_SPEAKER_STANDARD_MONO("mono")
437796
438   MCFG_SOUND_ADD("ym", YM3438, 8000000)
797   MCFG_SOUND_ADD("ym", YM3438, XTAL_16MHz/2)
439798   MCFG_YM2612_IRQ_HANDLER(WRITELINE(ufo_state, ym3438_irq))
440799   MCFG_SOUND_ROUTE(0, "mono", 0.40)
441800   MCFG_SOUND_ROUTE(1, "mono", 0.40)
442801MACHINE_CONFIG_END
443802
803static MACHINE_CONFIG_DERIVED( ufomini, newufo )
444804
805   /* basic machine hardware */
806   MCFG_DEVICE_MODIFY("io1")
807   MCFG_315_5296_IN_PORTC_CB(IOPORT("IN1"))
808   MCFG_315_5296_IN_PORTE_CB(NULL)
809   MCFG_315_5296_IN_PORTH_CB(NULL)
810MACHINE_CONFIG_END
445811
812
813static MACHINE_CONFIG_DERIVED( ufo21, newufo )
814
815   /* basic machine hardware */
816   MCFG_CPU_MODIFY("maincpu")
817   MCFG_CPU_IO_MAP(ex_ufo21_portmap)
818
819   MCFG_DEVICE_MODIFY("io1")
820   MCFG_315_5296_IN_PORTA_CB(READ8(ufo_state, ex_crane_limits_r))
821   MCFG_315_5296_IN_PORTB_CB(READ8(ufo_state, ex_crane_limits_r))
822   MCFG_315_5296_IN_PORTC_CB(READ8(ufo_state, ex_crane_open_r))
823
824   MCFG_DEVICE_MODIFY("io2")
825   MCFG_315_5296_OUT_PORTA_CB(WRITE8(ufo_state, ex_stepper_w))
826   MCFG_315_5296_OUT_PORTB_CB(WRITE8(ufo_state, ex_cp_lamps_w))
827   MCFG_315_5296_OUT_PORTE_CB(WRITE8(ufo_state, ex_crane_xyz_w))
828   MCFG_315_5296_OUT_PORTF_CB(WRITE8(ufo_state, ex_crane_xyz_w))
829   MCFG_315_5296_OUT_PORTG_CB(NULL)
830
831   /* sound hardware */
832   MCFG_SOUND_ADD("upd", UPD7759, UPD7759_STANDARD_CLOCK)
833   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
834MACHINE_CONFIG_END
835
836static MACHINE_CONFIG_DERIVED( ufo800, newufo )
837
838   /* basic machine hardware */
839   MCFG_CPU_MODIFY("maincpu")
840   MCFG_CPU_IO_MAP(ex_ufo800_portmap)
841
842   MCFG_DEVICE_MODIFY("io1")
843   MCFG_315_5296_IN_PORTA_CB(READ8(ufo_state, ex_crane_limits_r))
844   MCFG_315_5296_IN_PORTB_CB(IOPORT("IN2"))
845   MCFG_315_5296_IN_PORTC_CB(READ8(ufo_state, ex_crane_open_r))
846   MCFG_315_5296_IN_PORTD_CB(IOPORT("IN1"))
847   MCFG_315_5296_IN_PORTE_CB(NULL)
848   MCFG_315_5296_IN_PORTH_CB(NULL)
849
850   MCFG_DEVICE_MODIFY("io2")
851   MCFG_315_5296_OUT_PORTA_CB(WRITE8(ufo_state, ex_stepper_w))
852   MCFG_315_5296_OUT_PORTB_CB(WRITE8(ufo_state, ex_cp_lamps_w))
853   MCFG_315_5296_OUT_PORTE_CB(WRITE8(ufo_state, ex_crane_xyz_w))
854   MCFG_315_5296_OUT_PORTF_CB(WRITE8(ufo_state, ex_ufo800_lamps_w))
855   MCFG_315_5296_OUT_PORTG_CB(NULL)
856MACHINE_CONFIG_END
857
858
859
446860/***************************************************************************
447861
448862  Game drivers
r241752r241753
490904ROM_END
491905
492906
493GAME (1991, newufo,       0,      ufo, ufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (standard)", GAME_MECHANICAL )
494GAME (1991, newufo_sonic, newufo, ufo, ufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Sonic The Hedgehog)", GAME_MECHANICAL )
495GAME (1991, newufo_nfl,   newufo, ufo, ufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Team NFL)", GAME_MECHANICAL )
496GAME (1991, newufo_xmas,  newufo, ufo, ufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Christmas season ROM kit)", GAME_MECHANICAL )
497GAME (1991, ufomini,      0,      ufo, ufo, driver_device, 0, ROT0, "Sega", "UFO Catcher Mini", GAME_NOT_WORKING | GAME_MECHANICAL )
498GAME (1996, ufo21,        0,      ufo, ufo, driver_device, 0, ROT0, "Sega", "UFO Catcher 21", GAME_NOT_WORKING | GAME_MECHANICAL )
499GAME (1998, ufo800,       0,      ufo, ufo, driver_device, 0, ROT0, "Sega", "UFO Catcher 800", GAME_NOT_WORKING | GAME_MECHANICAL )
907GAMEL( 1991, newufo,       0,      newufo,  newufo,  driver_device, 0, ROT0, "Sega", "New UFO Catcher (standard)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_newufo )
908GAMEL( 1991, newufo_sonic, newufo, newufo,  newufo,  driver_device, 0, ROT0, "Sega", "New UFO Catcher (Sonic The Hedgehog)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_newufo )
909GAMEL( 1991, newufo_nfl,   newufo, newufo,  newufo,  driver_device, 0, ROT0, "Sega", "New UFO Catcher (Team NFL)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_newufo )
910GAMEL( 1991, newufo_xmas,  newufo, newufo,  newufo,  driver_device, 0, ROT0, "Sega", "New UFO Catcher (Christmas season ROM kit)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_newufo )
911GAMEL( 1991, ufomini,      0,      ufomini, ufomini, driver_device, 0, ROT0, "Sega", "UFO Catcher Mini", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_ufomini )
912GAMEL( 1996, ufo21,        0,      ufo21,   ufo21,   driver_device, 0, ROT0, "Sega", "UFO Catcher 21", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_ufo21 )
913GAMEL( 1998, ufo800,       0,      ufo800,  ufo800,  driver_device, 0, ROT0, "Sega", "UFO Catcher 800", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_ufo800 )
trunk/src/mame/drivers/starwars.c
r241752r241753
6262      address_space &space = m_maincpu->space(AS_PROGRAM);
6363
6464      /* reset the slapstic */
65      slapstic_reset();
66      m_slapstic_current_bank = slapstic_bank();
65      m_slapstic_device->slapstic_reset();
66      m_slapstic_current_bank = m_slapstic_device->slapstic_bank();
6767      memcpy(m_slapstic_base, &m_slapstic_source[m_slapstic_current_bank * 0x2000], 0x2000);
6868
6969      /* reset all the banks */
r241752r241753
9797
9898void starwars_state::esb_slapstic_tweak(address_space &space, offs_t offset)
9999{
100   int new_bank = slapstic_tweak(space, offset);
100   int new_bank = m_slapstic_device->slapstic_tweak(space, offset);
101101
102102   /* update for the new bank */
103103   if (new_bank != m_slapstic_current_bank)
r241752r241753
331331   MCFG_CPU_PERIODIC_INT_DRIVER(starwars_state, irq0_line_assert, CLOCK_3KHZ / 12)
332332   MCFG_WATCHDOG_TIME_INIT(attotime::from_hz(CLOCK_3KHZ / 128))
333333
334   MCFG_SLAPSTIC_ADD("slapstic")
335
334336   MCFG_CPU_ADD("audiocpu", M6809, MASTER_CLOCK / 8)
335337   MCFG_CPU_PROGRAM_MAP(sound_map)
336338
r241752r241753
524526   UINT8 *rom = memregion("maincpu")->base();
525527
526528   /* init the slapstic */
527   slapstic_init(machine(), 101);
529   m_slapstic_device->slapstic_init(machine(), 101);
528530   m_slapstic_source = &rom[0x14000];
529531   m_slapstic_base = &rom[0x08000];
530532
trunk/src/mame/drivers/stv.c
r241752r241753
10211021   MCFG_SOUND_ADD("cdda", CDDA, 0)
10221022   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
10231023   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
1024
1025   MCFG_DEVICE_ADD("315_5881", SEGA315_5881_CRYPT, 0)
1026   MCFG_SET_READ_CALLBACK(stv_state, crypt_read_callback)
10241027MACHINE_CONFIG_END
10251028
10261029/*
trunk/src/mame/drivers/taito_f3.c
r241752r241753
31783178   ROM_LOAD( "palce16v8-d77-14.bin", 0x0800, 0x0117, CRC(7427e777) SHA1(e692cedb13e5bc02edc4b25e9dcea51e6715de85) )
31793179ROM_END
31803180
3181ROM_START( arkretrnu )
3182   ROM_REGION(0x200000, "maincpu", 0) /* 68020 code */
3183   ROM_LOAD32_BYTE("e36-11.20", 0x000000, 0x040000, CRC(b50cfb92) SHA1(dac69fc9ef03315b11bb94d19e3dfdc8867b08ed) )
3184   ROM_LOAD32_BYTE("e36-10.19", 0x000001, 0x040000, CRC(c940dba1) SHA1(ec87c9e4250f8b2f15094681a4783bca8c68f576) )
3185   ROM_LOAD32_BYTE("e36-09.18", 0x000002, 0x040000, CRC(f16985e0) SHA1(a74cfee8f958e7a32354d4353eeb199a7fb1ce64) )
3186   ROM_LOAD32_BYTE("e36-14.17", 0x000003, 0x040000, CRC(3360cfa1) SHA1(b06afc392b3864a895aed3a406d5d9886b1d0894) )
3187
3188   ROM_REGION(0x180000, "audiocpu", 0) /* Sound CPU */
3189   ROM_LOAD16_BYTE("e36-12.32", 0x100000, 0x40000, CRC(3bae39be) SHA1(777142ecc24799b934ed51ac4cd8700bb6da7e3c) )
3190   ROM_LOAD16_BYTE("e36-13.33", 0x100001, 0x40000, CRC(94448e82) SHA1(d7766490318623be770545918391c5e6144dd619) )
3191
3192   ROM_REGION(0x100000, "gfx1" , 0) /* Sprites */
3193   ROM_LOAD16_BYTE("e36-03.12", 0x000000, 0x040000, CRC(1ea8558b) SHA1(b8ea4d6e1fb551b3c47f336a5e60ec33f7be525f) )
3194   ROM_LOAD16_BYTE("e36-02.8",  0x000001, 0x040000, CRC(694eda31) SHA1(1a6f85057395052571491f85c633d5632ab64865) )
3195   ROM_LOAD       ("e36-01.4",  0x0c0000, 0x040000, CRC(54b9b2cd) SHA1(55ae964ea1d2cc40a6578c5339754a270096f01f) )
3196   ROM_FILL       (             0x080000, 0x040000, 0 )
3197
3198   ROM_REGION(0x200000, "gfx2" , 0) /* Tiles */
3199   ROM_LOAD16_BYTE("e36-07.47", 0x000000, 0x080000, CRC(266bf1c1) SHA1(489549478d7016400af2e643d4b98bf605237d34) )
3200   ROM_LOAD16_BYTE("e36-06.45", 0x000001, 0x080000, CRC(110ab729) SHA1(0ccc0a5abbcfd79a069daf5162cd344a5fb225d5) )
3201   ROM_LOAD       ("e36-05.43", 0x180000, 0x080000, CRC(db18bce2) SHA1(b6653facc7f5c624f5710a51f2b2abfe640177e2) )
3202   ROM_FILL       (          0x100000, 0x080000, 0 )
3203
3204   ROM_REGION16_BE(0x400000, "ensoniq.0" , ROMREGION_ERASE00 ) // V2: 4 banks, only 1 populated
3205   ROM_LOAD16_BYTE("e36-04.38", 0x000000, 0x200000, CRC(2250959b) SHA1(06943f1b72bdf325485356a01278d88aeae93d87) )    // C8 C9 CA CB
3206
3207   ROM_REGION( 0x0a00, "plds", 0 )
3208   ROM_LOAD( "pal16l8a-d77-09.bin",  0x0000, 0x0104, CRC(b371532b) SHA1(7f875f380e69d14326a036a09d2fda7554b73664) )
3209   ROM_LOAD( "pal16l8a-d77-10.bin",  0x0200, 0x0104, CRC(42f59227) SHA1(1f0db7489b49c00603ea51d130c9dfc237545390) )
3210   ROM_LOAD( "palce16v8-d77-11.bin", 0x0400, 0x0117, CRC(eacc294e) SHA1(90679d523d90c1f8d2ecbd7b6fac2861f94cf107) )
3211   ROM_LOAD( "palce16v8-d77-12.bin", 0x0600, 0x0117, CRC(e9920cfe) SHA1(58b73fe65f118d57fdce56d781593fc70c797f1b) )
3212   ROM_LOAD( "palce16v8-d77-14.bin", 0x0800, 0x0117, CRC(7427e777) SHA1(e692cedb13e5bc02edc4b25e9dcea51e6715de85) )
3213ROM_END
3214
31813215ROM_START( arkretrnj )
31823216   ROM_REGION(0x200000, "maincpu", 0) /* 68020 code */
31833217   ROM_LOAD32_BYTE("e36-11.20", 0x000000, 0x040000, CRC(b50cfb92) SHA1(dac69fc9ef03315b11bb94d19e3dfdc8867b08ed) )
r241752r241753
41204154GAME( 1996, pbobble3u,pbobble3, f3,      f3, taito_f3_state, pbobble3, ROT0,   "Taito Corporation",         "Puzzle Bobble 3 (Ver 2.1A 1996/09/27)", 0 )
41214155GAME( 1996, pbobble3j,pbobble3, f3,      f3, taito_f3_state, pbobble3, ROT0,   "Taito Corporation",         "Puzzle Bobble 3 (Ver 2.1J 1996/09/27)", 0 )
41224156GAME( 1997, arkretrn, 0,        f3,      f3, taito_f3_state, arkretrn, ROT0,   "Taito Corporation",         "Arkanoid Returns (Ver 2.02O 1997/02/10)", 0 )
4157GAME( 1997, arkretrnu,arkretrn, f3,      f3, taito_f3_state, arkretrn, ROT0,   "Taito Corporation",         "Arkanoid Returns (Ver 2.02A 1997/02/10)", 0 )
41234158GAME( 1997, arkretrnj,arkretrn, f3,      f3, taito_f3_state, arkretrn, ROT0,   "Taito Corporation",         "Arkanoid Returns (Ver 2.02J 1997/02/10)", 0 )
41244159GAME( 1997, kirameki, 0,        f3_224a, f3, taito_f3_state, kirameki, ROT0,   "Taito Corporation",         "Kirameki Star Road (Ver 2.10J 1997/08/29)", 0 )
41254160GAME( 1997, puchicar, 0,        f3,      f3, taito_f3_state, puchicar, ROT0,   "Taito Corporation",         "Puchi Carat (Ver 2.02O 1997/10/29)", 0 )
trunk/src/mame/drivers/taitowlf.c
r241752r241753
2727
2828#include "emu.h"
2929#include "cpu/i386/i386.h"
30#include "machine/pci.h"
30#include "machine/lpci.h"
3131#include "machine/pcshare.h"
3232#include "machine/pckeybrd.h"
3333#if ENABLE_VGA
trunk/src/mame/drivers/tmnt.c
r241752r241753
28942894   ROM_LOAD( "963a25.d5",      0x00000, 0x80000, CRC(fca078c7) SHA1(3e1124d72c9db4cb11d8de6c44b7aeca967f44e1) )
28952895ROM_END
28962896
2897
28982897ROM_START( tmhtb ) // the code is closest to tmntua near the start, and the data is closest to all the UK sets, especially tmhta, so I'm guessing it's a UK revision of the tmntua codebase
28992898   ROM_REGION( 0x60000, "maincpu", 0 ) /* 2*128k and 2*64k for 68000 code */
2900   ROM_LOAD16_BYTE( "unk3.i17",   0x00000, 0x20000, CRC(537eb047) SHA1(97e6dbc486c7d057355db7fcbdc0a2c2cad2c653) )
2899   ROM_LOAD16_BYTE( "unk3.i17",   0x00000, 0x20000, CRC(537eb047) SHA1(97e6dbc486c7d057355db7fcbdc0a2c2cad2c653) ) /* unknown 963 xxx Konami code for this set */
29012900   ROM_LOAD16_BYTE( "unk4.k17",   0x00001, 0x20000, CRC(5afae564) SHA1(8d5fbf9530ad8d095c12b7e0f8c499c1436c4d47) )
2902   ROM_LOAD16_BYTE( "unk2.j15",   0x40000, 0x10000, CRC(ee34de05) SHA1(507d7fb178dbbe87dd373a81ad3f350ee2f7d923))
2903   ROM_LOAD16_BYTE( "unk1.k15",   0x40001, 0x10000, NO_DUMP )
2901   ROM_LOAD16_BYTE( "unk2.j15",   0x40000, 0x10000, CRC(ee34de05) SHA1(507d7fb178dbbe87dd373a81ad3f350ee2f7d923) )
2902   ROM_LOAD16_BYTE( "unk5.k15",   0x40001, 0x10000, CRC(5ef58d4e) SHA1(5df71c61a90c3e9d28ec3b8055d7ee97bc283e01) )
29042903
29052904   ROM_REGION( 0x10000, "audiocpu", 0 )
29062905   ROM_LOAD( "963e20.g13",      0x00000, 0x08000, CRC(1692a6d6) SHA1(68c3419012b2863e91a7d7e479fce5ceabb10b88) )
r241752r241753
29292928   ROM_LOAD( "963a25.d5",      0x00000, 0x80000, CRC(fca078c7) SHA1(3e1124d72c9db4cb11d8de6c44b7aeca967f44e1) )
29302929ROM_END
29312930
2932
29332931ROM_START( tmntj )
29342932   ROM_REGION( 0x60000, "maincpu", 0 ) /* 2*128k and 2*64k for 68000 code */
29352933   ROM_LOAD16_BYTE( "963_223.j17",  0x00000, 0x20000, CRC(0d34a5ff) SHA1(a387f3e7c727dc66ebb0e1f40e4ab8dc83f647e5) )
r241752r241753
41024100GAME( 1989, tmntua,      tmnt,     tmnt,     tmnt,      tmnt_state,    tmnt,     ROT0,   "Konami", "Teenage Mutant Ninja Turtles (US 4 Players, set 2)", GAME_SUPPORTS_SAVE )
41034101GAME( 1989, tmht,        tmnt,     tmnt,     tmnt,      tmnt_state,    tmnt,     ROT0,   "Konami", "Teenage Mutant Hero Turtles (UK 4 Players, set 1)", GAME_SUPPORTS_SAVE )
41044102GAME( 1989, tmhta,       tmnt,     tmnt,     tmnt,      tmnt_state,    tmnt,     ROT0,   "Konami", "Teenage Mutant Hero Turtles (UK 4 Players, set 2)", GAME_SUPPORTS_SAVE )
4105GAME( 1989, tmhtb,       tmnt,     tmnt,     tmnt,      tmnt_state,    tmnt,     ROT0,   "Konami", "Teenage Mutant Hero Turtles (UK?, unknown revision)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // incomplete dump
4103GAME( 1989, tmhtb,       tmnt,     tmnt,     tmnt,      tmnt_state,    tmnt,     ROT0,   "Konami", "Teenage Mutant Hero Turtles (UK 4 Players, set 3)", GAME_SUPPORTS_SAVE )
41064104GAME( 1990, tmntj,       tmnt,     tmnt,     tmnt,      tmnt_state,    tmnt,     ROT0,   "Konami", "Teenage Mutant Ninja Turtles (Japan 4 Players)", GAME_SUPPORTS_SAVE )
41074105GAME( 1989, tmht2p,      tmnt,     tmnt,     tmnt2p,    tmnt_state,    tmnt,     ROT0,   "Konami", "Teenage Mutant Hero Turtles (UK 2 Players, set 1)", GAME_SUPPORTS_SAVE )
41084106GAME( 1989, tmht2pa,     tmnt,     tmnt,     tmnt2p,    tmnt_state,    tmnt,     ROT0,   "Konami", "Teenage Mutant Hero Turtles (UK 2 Players, set 2)", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/toaplan2.c
r241752r241753
52065206ROM_END
52075207
52085208
5209ROM_START( bbakraidc )
5210   ROM_REGION( 0x200000, "maincpu", 0 )            /* Main 68k code */
5211   ROM_LOAD16_BYTE( "prg0u022_china.bin", 0x000000, 0x080000, CRC(760be084) SHA1(096c8a2336492d7370ae25f3385faebf6e9c3eca) )
5212   ROM_LOAD16_BYTE( "prg1u023.new", 0x000001, 0x080000, CRC(4ae9aa64) SHA1(45fdf72141c4c9f24a38d4218c65874799b9c868) )
5213   ROM_LOAD16_BYTE( "prg2u021.bin", 0x100000, 0x080000, CRC(ffba8656) SHA1(6526bb65fad3384de3f301a7d1095cbf03757433) )
5214   ROM_LOAD16_BYTE( "prg3u024.bin", 0x100001, 0x080000, CRC(834b8ad6) SHA1(0dd6223bb0749819ad29811eeb04fd08d937abb0) )
5215
5216   ROM_REGION( 0x20000, "audiocpu", 0 )            /* Sound Z80 code */
5217   ROM_LOAD( "sndu0720.bin", 0x00000, 0x20000, CRC(e62ab246) SHA1(00d23689dd423ecd4024c58b5903d16e890f1dff) )
5218
5219   ROM_REGION( 0x1000000, "gp9001", 0 )
5220   ROM_LOAD( "gfxu0510.bin", 0x000000, 0x400000, CRC(9cca3446) SHA1(1123f8b8bfbe59a2c572cdf61f1ad27ff37f0f0d) )
5221   ROM_LOAD( "gfxu0512.bin", 0x400000, 0x400000, CRC(a2a281d5) SHA1(d9a6623f9433ad682223f9780c26cd1523ebc5c5) )
5222   ROM_LOAD( "gfxu0511.bin", 0x800000, 0x400000, CRC(e16472c0) SHA1(6068d679a8b3b65e05acd58a7ce9ead90177049f) )
5223   ROM_LOAD( "gfxu0513.bin", 0xc00000, 0x400000, CRC(8bb635a0) SHA1(9064f1a2d8bb88ddbca702fb8556d0dfe6a5cadc) )
5224
5225   ROM_REGION( 0x0c00000, "ymz", 0 )       /* YMZ280B Samples */
5226   ROM_LOAD( "rom6.829", 0x000000, 0x400000, CRC(8848b4a0) SHA1(e0dce136c5d5a4c1a92b863e57848cd5927d06f1) )
5227   ROM_LOAD( "rom7.830", 0x400000, 0x400000, CRC(d6224267) SHA1(5c9b7b13effbef9f707811f84bfe50ca85e605e3) )
5228   ROM_LOAD( "rom8.831", 0x800000, 0x400000, CRC(a101dfb0) SHA1(4b729b0d562e09df35438e9e6b457b8de2690a6e) )
5229
5230   ROM_REGION( 0x200, "eeprom", 0 )
5231   ROM_LOAD( "eeprom-bbakraid-new.bin", 0x000, 0x200, CRC(35c9275a) SHA1(1282034adf3c7a24545fd273729867058dc93027) )
5232ROM_END
5233
5234
52095235ROM_START( bbakraidj )
52105236   ROM_REGION( 0x200000, "maincpu", 0 )            /* Main 68k code */
52115237   ROM_LOAD16_BYTE( "prg0u022.new", 0x000000, 0x080000, CRC(fa8d38d3) SHA1(aba91d87a8a62d3fe1139b4437b16e2f844264ad) )
r241752r241753
53445370// Battle Bakraid
53455371// the 'unlimited' version is a newer revision of the code
53465372GAME( 1999, bbakraid,   0,        bbakraid, bbakraid, toaplan2_state,  bbakraid, ROT270, "Eighting", "Battle Bakraid - Unlimited Version (USA) (Tue Jun 8 1999)", GAME_SUPPORTS_SAVE )
5373GAME( 1999, bbakraidc,  bbakraid, bbakraid, bbakraid, toaplan2_state,  bbakraid, ROT270, "Eighting", "Battle Bakraid - Unlimited Version (China) (Tue Jun 8 1999)", GAME_SUPPORTS_SAVE )
53475374GAME( 1999, bbakraidj,  bbakraid, bbakraid, bbakraid, toaplan2_state,  bbakraid, ROT270, "Eighting", "Battle Bakraid - Unlimited Version (Japan) (Tue Jun 8 1999)", GAME_SUPPORTS_SAVE )
53485375// older revision of the code
53495376GAME( 1999, bbakraidja, bbakraid, bbakraid, bbakraid, toaplan2_state,  bbakraid, ROT270, "Eighting", "Battle Bakraid (Japan) (Wed Apr 7 1999)", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/uapce.c
r241752r241753
11/*
22
3    United Amusement PC-Engine based hardware
3    United Amusements PC-Engine based hardware
44    Driver by Mariusz Wojcieszek
55    Thanks for Charles MacDonald for hardware docs
66
r241752r241753
1212
1313 History
1414
15 In 1989 United Amusement (a large operator of arcades in the US at that
15 In 1989 United Amusements (a large operator of arcades in the US at that
1616 time) developed a JAMMA interface for the PC-Engine with NEC's blessing. NEC
1717 pulled funding for the project before mass production began, and it never
1818 took off.
trunk/src/mame/drivers/vigilant.c
r241752r241753
606606
607607***************************************************************************/
608608
609
609610ROM_START( vigilant )
610611   ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
611   ROM_LOAD( "g07_c03.bin",  0x00000, 0x08000, CRC(9dcca081) SHA1(6d086b70e6bf1fbafa746ef5c82334645f199be9) )
612   ROM_LOAD( "j07_c04.bin",  0x10000, 0x10000, CRC(e0159105) SHA1(da6d74ec075863c67c0ce21b07a54029d138f688) )
612   ROM_LOAD( "vg_a-8h-e.ic55",  0x00000, 0x10000, CRC(64735989) SHA1(0d1330eacbbe54fd98b3d6f81e770462a3a2372d) ) // 1ST AND 2ND HALF IDENTICAL (correct)
613   ROM_LOAD( "vg_a-8l-a.ic57",  0x10000, 0x10000, CRC(690d812f) SHA1(60d6513f8b27411018cdca1b25f94bc281476ae7) )
613614   /* 0x20000-0x2ffff empty */
614615
615616   ROM_REGION( 0x10000, "soundcpu", 0 ) /* 64k for sound */
616   ROM_LOAD( "g05_c02.bin",  0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) )
617   ROM_LOAD( "vg_a-5j-.ic37",  0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) )
617618
618619   ROM_REGION( 0x20000, "gfx1", 0 )
619   ROM_LOAD( "f05_c08.bin",  0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
620   ROM_LOAD( "h05_c09.bin",  0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
620   ROM_LOAD( "vg_b-4f-.ic33",  0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
621   ROM_LOAD( "vg_b-4j-.ic34",  0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
621622
622   ROM_REGION( 0x80000, "gfx2", 0 )
623   ROM_LOAD( "n07_c12.bin",  0x00000, 0x10000, CRC(10af8eb2) SHA1(664b178b248babc43a9af0fe140fe57bc7367762) )
624   ROM_LOAD( "k07_c10.bin",  0x10000, 0x10000, CRC(9576f304) SHA1(0ec2a7d3d82208e2a9a4ef9ab2824e6fe26ebbe5) )
625   ROM_LOAD( "o07_c13.bin",  0x20000, 0x10000, CRC(b1d9d4dc) SHA1(1aacf6b0ff8d102880d3dce3b55cd1488edb90cf) )
626   ROM_LOAD( "l07_c11.bin",  0x30000, 0x10000, CRC(4598be4a) SHA1(6b68ec94bdee0e58133a8d3891054ef44a8ff0e5) )
627   ROM_LOAD( "t07_c16.bin",  0x40000, 0x10000, CRC(f5425e42) SHA1(c401263b6a266d3e9cd23133f1d823fb4b095e3d) )
628   ROM_LOAD( "p07_c14.bin",  0x50000, 0x10000, CRC(cb50a17c) SHA1(eb15704f715b6475ae7096f8d82f1b20f8277c71) )
629   ROM_LOAD( "v07_c17.bin",  0x60000, 0x10000, CRC(959ba3c7) SHA1(dcd2a885ae7b61210cbd55a38ccbe91c73d071b0) )
630   ROM_LOAD( "s07_c15.bin",  0x70000, 0x10000, CRC(7f2e91c5) SHA1(27dcc9b696834897c36c0b7a1c6202d93f41ad8d) )
623   ROM_REGION( 0x80000, "gfx2", 0 ) // confirmed original board uses 4 roms
624   ROM_LOAD( "vg_b-6l-.ic61",  0x00000, 0x10000, CRC(fbe9552d) SHA1(3c7c218f13c0a94bb624745d81d63db9423777ea) )
625   ROM_CONTINUE(0x20000,0x10000)
626   ROM_LOAD( "vg_b-6k-.ic60",  0x10000, 0x10000, CRC(ae09d5c0) SHA1(9da5b824b148c1e1478e3f4b44ba4348376ed7d5) )
627   ROM_CONTINUE(0x30000,0x10000)
628   ROM_LOAD( "vg_b-6p-.ic63",  0x40000, 0x10000, CRC(afb77461) SHA1(18707768a4768b579c94092a260e286d3214b977) )
629   ROM_CONTINUE(0x60000,0x10000)
630   ROM_LOAD( "vg_b-6n-.ic62",  0x50000, 0x10000, CRC(5065cd35) SHA1(9a03c5af024fcae6b3371bb04be3e811ecc390d7) )
631   ROM_CONTINUE(0x70000,0x10000)
631632
632633   ROM_REGION( 0x40000, "gfx3", 0 )
633   ROM_LOAD( "d01_c05.bin",  0x00000, 0x10000, CRC(81b1ee5c) SHA1(2014165ec71f089fecb5a3e60b939cc0f565d7f1) )
634   ROM_LOAD( "e01_c06.bin",  0x10000, 0x10000, CRC(d0d33673) SHA1(39761d97a71deaf7f17233d5bd5a55dbb1e6b30e) )
635   ROM_LOAD( "f01_c07.bin",  0x20000, 0x10000, CRC(aae81695) SHA1(ca8e136eca3543b27f3a61b105d4a280711cd6ea) )
634   ROM_LOAD( "vg_b-1d-.ic1",  0x00000, 0x10000, CRC(81b1ee5c) SHA1(2014165ec71f089fecb5a3e60b939cc0f565d7f1) )
635   ROM_LOAD( "vg_b-1f-.ic2",  0x10000, 0x10000, CRC(d0d33673) SHA1(39761d97a71deaf7f17233d5bd5a55dbb1e6b30e) )
636   ROM_LOAD( "vg_b-1h-.ic3",  0x20000, 0x10000, CRC(aae81695) SHA1(ca8e136eca3543b27f3a61b105d4a280711cd6ea) )
636637
637638   ROM_REGION( 0x10000, "samples", 0 ) /* samples */
638   ROM_LOAD( "d04_c01.bin",  0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) )
639   ROM_LOAD( "vg_a-4d-.ic26",  0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) )
639640
640641   ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected */
641642   ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) )
642643   ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) )
643   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
644   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
644645ROM_END
645646
646
647
648647ROM_START( vigilant1 )
649648   ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
650   ROM_LOAD( "vg_a-8h-c.rom",  0x00000, 0x08000, CRC(d72682e8) SHA1(2401a6397164ff66d96f6023f021c615d70108a5) ) /* Slot labeled 27256 = 256kb = 32KB confirmed */
651   ROM_LOAD( "vg_a-8l-a.rom",  0x10000, 0x10000, CRC(690d812f) SHA1(60d6513f8b27411018cdca1b25f94bc281476ae7) )
649   ROM_LOAD( "vg_a-8h-c.ic55",  0x00000, 0x08000, CRC(d72682e8) SHA1(2401a6397164ff66d96f6023f021c615d70108a5) ) /* Slot labeled 27256 = 256kb = 32KB confirmed */
650   ROM_LOAD( "vg_a-8l-a.ic57",  0x10000, 0x10000, CRC(690d812f) SHA1(60d6513f8b27411018cdca1b25f94bc281476ae7) )
652651   /* 0x20000-0x2ffff empty */
653652
654653   ROM_REGION( 0x10000, "soundcpu", 0 ) /* 64k for sound */
655   ROM_LOAD( "g05_c02.bin",  0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) )
654   ROM_LOAD( "vg_a-5j-.ic37",  0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) )
656655
657656   ROM_REGION( 0x20000, "gfx1", 0 )
658   ROM_LOAD( "f05_c08.bin",  0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
659   ROM_LOAD( "h05_c09.bin",  0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
657   ROM_LOAD( "vg_b-4f-.ic33",  0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
658   ROM_LOAD( "vg_b-4j-.ic34",  0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
660659
661   ROM_REGION( 0x80000, "gfx2", 0 )
662   ROM_LOAD( "n07_c12.bin",  0x00000, 0x10000, CRC(10af8eb2) SHA1(664b178b248babc43a9af0fe140fe57bc7367762) )
663   ROM_LOAD( "k07_c10.bin",  0x10000, 0x10000, CRC(9576f304) SHA1(0ec2a7d3d82208e2a9a4ef9ab2824e6fe26ebbe5) )
664   ROM_LOAD( "o07_c13.bin",  0x20000, 0x10000, CRC(b1d9d4dc) SHA1(1aacf6b0ff8d102880d3dce3b55cd1488edb90cf) )
665   ROM_LOAD( "l07_c11.bin",  0x30000, 0x10000, CRC(4598be4a) SHA1(6b68ec94bdee0e58133a8d3891054ef44a8ff0e5) )
666   ROM_LOAD( "t07_c16.bin",  0x40000, 0x10000, CRC(f5425e42) SHA1(c401263b6a266d3e9cd23133f1d823fb4b095e3d) )
667   ROM_LOAD( "p07_c14.bin",  0x50000, 0x10000, CRC(cb50a17c) SHA1(eb15704f715b6475ae7096f8d82f1b20f8277c71) )
668   ROM_LOAD( "v07_c17.bin",  0x60000, 0x10000, CRC(959ba3c7) SHA1(dcd2a885ae7b61210cbd55a38ccbe91c73d071b0) )
669   ROM_LOAD( "s07_c15.bin",  0x70000, 0x10000, CRC(7f2e91c5) SHA1(27dcc9b696834897c36c0b7a1c6202d93f41ad8d) )
660   ROM_REGION( 0x80000, "gfx2", 0 ) // confirmed original board uses 4 roms
661   ROM_LOAD( "vg_b-6l-.ic61",  0x00000, 0x10000, CRC(fbe9552d) SHA1(3c7c218f13c0a94bb624745d81d63db9423777ea) )
662   ROM_CONTINUE(0x20000,0x10000)
663   ROM_LOAD( "vg_b-6k-.ic60",  0x10000, 0x10000, CRC(ae09d5c0) SHA1(9da5b824b148c1e1478e3f4b44ba4348376ed7d5) )
664   ROM_CONTINUE(0x30000,0x10000)
665   ROM_LOAD( "vg_b-6p-.ic63",  0x40000, 0x10000, CRC(afb77461) SHA1(18707768a4768b579c94092a260e286d3214b977) )
666   ROM_CONTINUE(0x60000,0x10000)
667   ROM_LOAD( "vg_b-6n-.ic62",  0x50000, 0x10000, CRC(5065cd35) SHA1(9a03c5af024fcae6b3371bb04be3e811ecc390d7) )
668   ROM_CONTINUE(0x70000,0x10000)
670669
671670   ROM_REGION( 0x40000, "gfx3", 0 )
672   ROM_LOAD( "d01_c05.bin",  0x00000, 0x10000, CRC(81b1ee5c) SHA1(2014165ec71f089fecb5a3e60b939cc0f565d7f1) )
673   ROM_LOAD( "e01_c06.bin",  0x10000, 0x10000, CRC(d0d33673) SHA1(39761d97a71deaf7f17233d5bd5a55dbb1e6b30e) )
674   ROM_LOAD( "f01_c07.bin",  0x20000, 0x10000, CRC(aae81695) SHA1(ca8e136eca3543b27f3a61b105d4a280711cd6ea) )
671   ROM_LOAD( "vg_b-1d-.ic1",  0x00000, 0x10000, CRC(81b1ee5c) SHA1(2014165ec71f089fecb5a3e60b939cc0f565d7f1) )
672   ROM_LOAD( "vg_b-1f-.ic2",  0x10000, 0x10000, CRC(d0d33673) SHA1(39761d97a71deaf7f17233d5bd5a55dbb1e6b30e) )
673   ROM_LOAD( "vg_b-1h-.ic3",  0x20000, 0x10000, CRC(aae81695) SHA1(ca8e136eca3543b27f3a61b105d4a280711cd6ea) )
675674
676675   ROM_REGION( 0x10000, "samples", 0 ) /* samples */
677   ROM_LOAD( "d04_c01.bin",  0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) )
676   ROM_LOAD( "vg_a-4d-.ic26",  0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) )
678677
679678   ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected */
680679   ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) )
681680   ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) )
682   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
681   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
683682ROM_END
684683
685
686ROM_START( vigilantu )
684ROM_START( vigilantu ) /* Need to determine the correct original roms & IC locations for this set */
687685   ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
688686   ROM_LOAD( "a-8h",  0x00000, 0x08000, CRC(8d15109e) SHA1(9ef57047a0b53cd0143a260193b33e3d5680ca71) )
689687   ROM_LOAD( "a-8l",  0x10000, 0x10000, CRC(7f95799b) SHA1(a371671c3c26976314aaac4e410bff0f13a8a085) )
r241752r241753
696694   ROM_LOAD( "f05_c08.bin",  0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
697695   ROM_LOAD( "h05_c09.bin",  0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
698696
699   ROM_REGION( 0x80000, "gfx2", 0 )
697   ROM_REGION( 0x80000, "gfx2", 0 ) // 8 roms is a bootleg configuration?
700698   ROM_LOAD( "n07_c12.bin",  0x00000, 0x10000, CRC(10af8eb2) SHA1(664b178b248babc43a9af0fe140fe57bc7367762) )
701699   ROM_LOAD( "k07_c10.bin",  0x10000, 0x10000, CRC(9576f304) SHA1(0ec2a7d3d82208e2a9a4ef9ab2824e6fe26ebbe5) )
702700   ROM_LOAD( "o07_c13.bin",  0x20000, 0x10000, CRC(b1d9d4dc) SHA1(1aacf6b0ff8d102880d3dce3b55cd1488edb90cf) )
r241752r241753
717715   ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected */
718716   ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) )
719717   ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) )
720   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
718   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
721719ROM_END
722720
723ROM_START( vigilantu2 )
721ROM_START( vigilantu2 ) /* Need to determine the correct original roms & IC locations for this set */
724722   ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
725723   ROM_LOAD( "vg-a-8h-g.bin",  0x00000, 0x08000, CRC(9444c04e) SHA1(463d2dae48df2d237bd19d5e16cab032df0d9052) ) /* labeled Rev. G */
726724   ROM_LOAD( "a-8l",  0x10000, 0x10000, CRC(7f95799b) SHA1(a371671c3c26976314aaac4e410bff0f13a8a085) )
r241752r241753
733731   ROM_LOAD( "f05_c08.bin",  0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
734732   ROM_LOAD( "h05_c09.bin",  0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
735733
736   ROM_REGION( 0x80000, "gfx2", 0 )
734   ROM_REGION( 0x80000, "gfx2", 0 ) // 8 roms is a bootleg configuration?
737735   ROM_LOAD( "n07_c12.bin",  0x00000, 0x10000, CRC(10af8eb2) SHA1(664b178b248babc43a9af0fe140fe57bc7367762) )
738736   ROM_LOAD( "k07_c10.bin",  0x10000, 0x10000, CRC(9576f304) SHA1(0ec2a7d3d82208e2a9a4ef9ab2824e6fe26ebbe5) )
739737   ROM_LOAD( "o07_c13.bin",  0x20000, 0x10000, CRC(b1d9d4dc) SHA1(1aacf6b0ff8d102880d3dce3b55cd1488edb90cf) )
r241752r241753
754752   ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected - sourced from this board */
755753   ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) )
756754   ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) )
757   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
755   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
758756ROM_END
759757
760758ROM_START( vigilantj )
761759   ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
762   ROM_LOAD( "vg_a-8h.rom",  0x00000, 0x08000, CRC(ba848713) SHA1(b357cbf404fb1874d555797ed9fb37f946cc4340) )
763   ROM_LOAD( "vg_a-8l.rom",  0x10000, 0x10000, CRC(3b12b1d8) SHA1(2f9207f8d8ec41ea1b8f5bf3c69a97d1d09f6c3f) )
760   ROM_LOAD( "vg_a-8h-d.ic55",  0x00000, 0x10000, CRC(6480bd03) SHA1(f238811b9618ac6be441fcce211e769678b54a05) ) // 1ST AND 2ND HALF IDENTICAL (correct)
761   ROM_LOAD( "vg_a-8l-d.ic57",  0x10000, 0x10000, CRC(3b12b1d8) SHA1(2f9207f8d8ec41ea1b8f5bf3c69a97d1d09f6c3f) )
764762   /* 0x20000-0x2ffff empty */
765763
766764   ROM_REGION( 0x10000, "soundcpu", 0 ) /* 64k for sound */
765   ROM_LOAD( "vg_a-5j-.ic37",  0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) )
766
767   ROM_REGION( 0x20000, "gfx1", 0 )
768   ROM_LOAD( "vg_b-4f-.ic33",  0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
769   ROM_LOAD( "vg_b-4j-.ic34",  0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
770
771   ROM_REGION( 0x80000, "gfx2", 0 ) // confirmed original board uses 4 roms
772   ROM_LOAD( "vg_b-6l-.ic61",  0x00000, 0x10000, CRC(fbe9552d) SHA1(3c7c218f13c0a94bb624745d81d63db9423777ea) )
773   ROM_CONTINUE(0x20000,0x10000)
774   ROM_LOAD( "vg_b-6k-.ic60",  0x10000, 0x10000, CRC(ae09d5c0) SHA1(9da5b824b148c1e1478e3f4b44ba4348376ed7d5) )
775   ROM_CONTINUE(0x30000,0x10000)
776   ROM_LOAD( "vg_b-6p-.ic63",  0x40000, 0x10000, CRC(afb77461) SHA1(18707768a4768b579c94092a260e286d3214b977) )
777   ROM_CONTINUE(0x60000,0x10000)
778   ROM_LOAD( "vg_b-6n-.ic62",  0x50000, 0x10000, CRC(5065cd35) SHA1(9a03c5af024fcae6b3371bb04be3e811ecc390d7) )
779   ROM_CONTINUE(0x70000,0x10000)
780
781   ROM_REGION( 0x40000, "gfx3", 0 )  // this should be 2x 23C1000 on Japan sets
782   ROM_LOAD( "vg_b-1d-.ic1",  0x00000, 0x10000, CRC(81b1ee5c) SHA1(2014165ec71f089fecb5a3e60b939cc0f565d7f1) )
783   ROM_LOAD( "vg_b-1f-.ic2",  0x10000, 0x10000, CRC(d0d33673) SHA1(39761d97a71deaf7f17233d5bd5a55dbb1e6b30e) )
784   ROM_LOAD( "vg_b-1h-.ic3",  0x20000, 0x10000, CRC(aae81695) SHA1(ca8e136eca3543b27f3a61b105d4a280711cd6ea) )
785
786   ROM_REGION( 0x10000, "samples", 0 ) /* samples */
787   ROM_LOAD( "vg_a-4d-.ic26",  0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) )
788
789   ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected */
790   ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) )
791   ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) )
792   ROM_LOAD( "vg_b-1b.ic1",  0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
793ROM_END
794
795ROM_START( vigilantb ) /* Likely a bootleg */
796   ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
797   ROM_LOAD( "g07_c03.bin",  0x00000, 0x08000, CRC(9dcca081) SHA1(6d086b70e6bf1fbafa746ef5c82334645f199be9) )
798   ROM_LOAD( "j07_c04.bin",  0x10000, 0x10000, CRC(e0159105) SHA1(da6d74ec075863c67c0ce21b07a54029d138f688) )
799   /* 0x20000-0x2ffff empty */
800
801   ROM_REGION( 0x10000, "soundcpu", 0 ) /* 64k for sound */
767802   ROM_LOAD( "g05_c02.bin",  0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) )
768803
769804   ROM_REGION( 0x20000, "gfx1", 0 )
770805   ROM_LOAD( "f05_c08.bin",  0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
771806   ROM_LOAD( "h05_c09.bin",  0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
772807
773   ROM_REGION( 0x80000, "gfx2", 0 )
808   ROM_REGION( 0x80000, "gfx2", 0 ) // 8 roms is a bootleg configuration?
774809   ROM_LOAD( "n07_c12.bin",  0x00000, 0x10000, CRC(10af8eb2) SHA1(664b178b248babc43a9af0fe140fe57bc7367762) )
775810   ROM_LOAD( "k07_c10.bin",  0x10000, 0x10000, CRC(9576f304) SHA1(0ec2a7d3d82208e2a9a4ef9ab2824e6fe26ebbe5) )
776811   ROM_LOAD( "o07_c13.bin",  0x20000, 0x10000, CRC(b1d9d4dc) SHA1(1aacf6b0ff8d102880d3dce3b55cd1488edb90cf) )
r241752r241753
788823   ROM_REGION( 0x10000, "samples", 0 ) /* samples */
789824   ROM_LOAD( "d04_c01.bin",  0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) )
790825
791   ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 */
826   ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected */
792827   ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) )
793828   ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) )
794   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
829   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
795830ROM_END
796831
832
797833ROM_START( kikcubic )
798834   ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
799835   ROM_LOAD( "mqj-p0",       0x00000, 0x08000, CRC(9cef394a) SHA1(be9cc78420b4c35f8f9523b529bd56315749762c) )
r241752r241753
853889   ROM_LOAD( "7s",           0x0120, 0x0020, CRC(face0cbb) SHA1(c56aea3b7aaabbd4ff1b4546fcad94f51b473cde) )    /* unknown (bad read?) */
854890ROM_END
855891
892
856893ROM_START( buccanrs )
857894   ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
858895   ROM_LOAD( "11.u58",  0x00000, 0x10000, CRC(bf1d7e6f) SHA1(55dcf993515b57c3eb1fab98097a2171df3e38ed) ) // both halves are identical (correct for rom type on this board tho)
r241752r241753
926963   ROM_LOAD( "prom2.u99",  0x0300, 0x0100, CRC(e0aa8869) SHA1(ac8bdfeba69420ba56ec561bf3d0f1229d02cea2) )
927964ROM_END
928965
929GAME( 1988, vigilant, 0,        vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (World, set 1)", GAME_NO_COCKTAIL )
930GAME( 1988, vigilant1,vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (World, set 2)", GAME_NO_COCKTAIL )
931GAME( 1988, vigilantu,vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East USA license)", "Vigilante (US)", GAME_NO_COCKTAIL )
932GAME( 1988, vigilantu2,vigilant,vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East USA license)", "Vigilante (US) - Rev. G", GAME_NO_COCKTAIL )
933GAME( 1988, vigilantj,vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (Japan)", GAME_NO_COCKTAIL )
934GAME( 1988, kikcubic, 0,        kikcubic, kikcubic, driver_device, 0, ROT0, "Irem", "Meikyu Jima (Japan)", GAME_NO_COCKTAIL )   /* English title is Kickle Cubicle */
935GAME( 1988, kikcubicb,kikcubic, kikcubic, kikcubic, driver_device, 0, ROT0, "bootleg", "Kickle Cubele", GAME_NO_COCKTAIL )
936GAME( 1989, buccanrs, 0,        buccanrs, buccanrs, driver_device, 0, ROT0, "Duintronic", "Buccaneers (set 1)", GAME_NO_COCKTAIL )
937GAME( 1989, buccanrsa,buccanrs, buccanrs, buccanra, driver_device, 0, ROT0, "Duintronic", "Buccaneers (set 2)", GAME_NO_COCKTAIL )
966GAME( 1988, vigilant,  0,        vigilant, vigilant, driver_device, 0, ROT0, "Irem",                         "Vigilante (World, Rev E)", GAME_NO_COCKTAIL )
967GAME( 1988, vigilant1, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem",                         "Vigilante (World, Rev C)", GAME_NO_COCKTAIL )
968GAME( 1988, vigilantu, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East USA license)", "Vigilante (US)", GAME_NO_COCKTAIL )
969GAME( 1988, vigilantu2,vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East USA license)", "Vigilante (US, Rev G)", GAME_NO_COCKTAIL )
970GAME( 1988, vigilantj, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem",                         "Vigilante (Japan, Rev D)", GAME_NO_COCKTAIL )
971GAME( 1988, vigilantb, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "bootleg",                      "Vigilante (bootleg)", GAME_NO_COCKTAIL )
972
973GAME( 1988, kikcubic,  0,        kikcubic, kikcubic, driver_device, 0, ROT0, "Irem",                         "Meikyu Jima (Japan)", GAME_NO_COCKTAIL )   /* English title is Kickle Cubicle */
974GAME( 1988, kikcubicb, kikcubic, kikcubic, kikcubic, driver_device, 0, ROT0, "bootleg",                      "Kickle Cubele", GAME_NO_COCKTAIL )
975
976GAME( 1989, buccanrs,  0,        buccanrs, buccanrs, driver_device, 0, ROT0, "Duintronic",                   "Buccaneers (set 1)", GAME_NO_COCKTAIL )
977GAME( 1989, buccanrsa, buccanrs, buccanrs, buccanra, driver_device, 0, ROT0, "Duintronic",                   "Buccaneers (set 2)", GAME_NO_COCKTAIL )
trunk/src/mame/drivers/vindictr.c
r241752r241753
184184   MCFG_CPU_ADD("maincpu", M68010, ATARI_CLOCK_14MHz/2)
185185   MCFG_CPU_PROGRAM_MAP(main_map)
186186
187   MCFG_SLAPSTIC_ADD("slapstic") // where is this hooked up here?
188
187189   MCFG_MACHINE_RESET_OVERRIDE(vindictr_state,vindictr)
188190
189191   MCFG_ATARI_EEPROM_2804_ADD("eeprom")
trunk/src/mame/drivers/viper.c
r241752r241753
283283
284284#include "emu.h"
285285#include "cpu/powerpc/ppc.h"
286#include "machine/pci.h"
286#include "machine/lpci.h"
287287#include "machine/ataintf.h"
288288#include "machine/idehd.h"
289289#include "machine/timekpr.h"
trunk/src/mame/drivers/voyager.c
r241752r241753
1414
1515#include "emu.h"
1616#include "cpu/i386/i386.h"
17#include "machine/pci.h"
17#include "machine/lpci.h"
1818#include "machine/pcshare.h"
1919#include "machine/pckeybrd.h"
2020#include "machine/idectrl.h"
trunk/src/mame/drivers/xtom3d.c
r241752r241753
4040
4141#include "emu.h"
4242#include "cpu/i386/i386.h"
43#include "machine/pci.h"
43#include "machine/lpci.h"
4444#include "machine/pcshare.h"
4545#include "machine/pckeybrd.h"
4646#include "machine/idectrl.h"
trunk/src/mame/drivers/xybots.c
r241752r241753
184184   MCFG_CPU_PROGRAM_MAP(main_map)
185185   MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
186186
187   MCFG_SLAPSTIC_ADD("slapstic")
188
187189   MCFG_MACHINE_RESET_OVERRIDE(xybots_state,xybots)
188190
189191   MCFG_ATARI_EEPROM_2804_ADD("eeprom")
trunk/src/mame/drivers/yunsun16.c
r241752r241753
578578static MACHINE_CONFIG_START( magicbub, yunsun16_state )
579579
580580   /* basic machine hardware */
581   MCFG_CPU_ADD("maincpu", M68000, 16000000)
581   MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz)
582582   MCFG_CPU_PROGRAM_MAP(main_map)
583583   MCFG_CPU_VBLANK_INT_DRIVER("screen", yunsun16_state,  irq2_line_hold)
584584
585   MCFG_CPU_ADD("audiocpu", Z80, 3000000)  /* ? */
585   MCFG_CPU_ADD("audiocpu", Z80, XTAL_16MHz/4)
586586   MCFG_CPU_PROGRAM_MAP(sound_map)
587587   MCFG_CPU_IO_MAP(sound_port_map)
588588
r241752r241753
601601   /* sound hardware */
602602   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
603603
604   MCFG_SOUND_ADD("ymsnd", YM3812, 4000000)
604   MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_16MHz/4)
605605   MCFG_YM3812_IRQ_HANDLER(WRITELINE(yunsun16_state, soundirq))
606606   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
607607   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
608608
609   MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH)
609   MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH)
610610   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
611611   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
612612MACHINE_CONFIG_END
r241752r241753
619619static MACHINE_CONFIG_START( shocking, yunsun16_state )
620620
621621   /* basic machine hardware */
622   MCFG_CPU_ADD("maincpu", M68000, 16000000)
622   MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz)
623623   MCFG_CPU_PROGRAM_MAP(main_map)
624624   MCFG_CPU_VBLANK_INT_DRIVER("screen", yunsun16_state,  irq2_line_hold)
625625
r241752r241753
637637   /* sound hardware */
638638   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
639639
640   MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH)
640   MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH)
641641   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
642642   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
643643MACHINE_CONFIG_END
r241752r241753
715715   ROM_LOAD16_BYTE( "magbuble.u32", 0x000001, 0x040000, CRC(f6ea7004) SHA1(069541e37b60370810451616ee66bbd05dc10137) )
716716
717717   ROM_REGION( 0x10000, "audiocpu", 0 )        /* Z80 Code */
718   ROM_LOAD( "magbuble.143", 0x00000, 0x10000, CRC(04192753) SHA1(9c56ba70e1d074906ea1dc593c2a8516c6ba2074) )
718   ROM_LOAD( "u143.bin", 0x00000, 0x10000, CRC(04192753) SHA1(9c56ba70e1d074906ea1dc593c2a8516c6ba2074) )
719719
720720   ROM_REGION( 0x200000*8, "gfx1", ROMREGION_ERASEFF ) /* 16x16x8 */
721721   ROMX_LOAD( "magbuble.u67", 0x000000, 0x080000, CRC(6355e57d) SHA1(5e9234dd474ddcf0a9e1001080f3de11c7d0ee55) , ROM_GROUPWORD | ROM_SKIP(6))
r241752r241753
724724   ROMX_LOAD( "magbuble.u70", 0x000006, 0x080000, CRC(37794837) SHA1(11597614e1e048544326fbbe281b364278d6350d) , ROM_GROUPWORD | ROM_SKIP(6))
725725
726726   ROM_REGION( 0x080000, "gfx2", 0 )   /* 16x16x4 */
727   ROM_LOAD( "magbuble.u20", 0x000000, 0x020000, CRC(f70e3b8c) SHA1(d925c27bbd0f915228d22589a98e3ea7181a87ca) )
728   ROM_LOAD( "magbuble.u21", 0x020000, 0x020000, CRC(ad082cf3) SHA1(0bc3cf6c54d47be4f1940192fc1585cb48767e97) )
729   ROM_LOAD( "magbuble.u22", 0x040000, 0x020000, CRC(7c68df7a) SHA1(88acf9dd43892a790415b418f77d88c747aa84f5) )
730   ROM_LOAD( "magbuble.u23", 0x060000, 0x020000, CRC(c7763fc1) SHA1(ed68b3c3c5155073afb7b55d6d92d3057e40df6c) )
727   ROM_LOAD( "u20.bin", 0x000000, 0x020000, CRC(f70e3b8c) SHA1(d925c27bbd0f915228d22589a98e3ea7181a87ca) )
728   ROM_LOAD( "u21.bin", 0x020000, 0x020000, CRC(ad082cf3) SHA1(0bc3cf6c54d47be4f1940192fc1585cb48767e97) )
729   ROM_LOAD( "u22.bin", 0x040000, 0x020000, CRC(7c68df7a) SHA1(88acf9dd43892a790415b418f77d88c747aa84f5) )
730   ROM_LOAD( "u23.bin", 0x060000, 0x020000, CRC(c7763fc1) SHA1(ed68b3c3c5155073afb7b55d6d92d3057e40df6c) )
731731
732732   ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
733   ROM_LOAD( "magbuble.131", 0x000000, 0x020000, CRC(03e04e89) SHA1(7d80e6a7be2322e32e40acae72bedd8d7e90ad33) )
733   ROM_LOAD( "u131.bin", 0x000000, 0x020000, CRC(03e04e89) SHA1(7d80e6a7be2322e32e40acae72bedd8d7e90ad33) )
734734
735735ROM_END
736736
r241752r241753
741741   ROM_LOAD16_BYTE( "u32.bin", 0x000001, 0x040000, CRC(58f885ad) SHA1(e66f5bb1ac0acd9abc2def439af7f932c3a09cbd) )
742742
743743   ROM_REGION( 0x10000, "audiocpu", 0 )        /* Z80 Code */
744   ROM_LOAD( "magbuble.143", 0x00000, 0x10000, CRC(04192753) SHA1(9c56ba70e1d074906ea1dc593c2a8516c6ba2074) )
744   ROM_LOAD( "u143.bin", 0x00000, 0x10000, CRC(04192753) SHA1(9c56ba70e1d074906ea1dc593c2a8516c6ba2074) )
745745
746746   ROM_REGION( 0x200000*8, "gfx1", ROMREGION_ERASEFF ) /* 16x16x8 */
747747   ROMX_LOAD( "u67.bin", 0x000000, 0x080000, CRC(89523dcd) SHA1(edea2bbec615aa253d940bbc3bbdb33f6873a8ee) , ROM_GROUPWORD | ROM_SKIP(6))
r241752r241753
754754   ROMX_LOAD( "u74.bin", 0x200006, 0x080000, CRC(81ff4910) SHA1(69241fe2d20b53984aa67f17d8da32e1b74ce696) , ROM_GROUPWORD | ROM_SKIP(6))
755755
756756   ROM_REGION( 0x080000, "gfx2", 0 )   /* 16x16x4 */
757   ROM_LOAD( "magbuble.u20", 0x000000, 0x020000, CRC(f70e3b8c) SHA1(d925c27bbd0f915228d22589a98e3ea7181a87ca) )
758   ROM_LOAD( "magbuble.u21", 0x020000, 0x020000, CRC(ad082cf3) SHA1(0bc3cf6c54d47be4f1940192fc1585cb48767e97) )
759   ROM_LOAD( "magbuble.u22", 0x040000, 0x020000, CRC(7c68df7a) SHA1(88acf9dd43892a790415b418f77d88c747aa84f5) )
760   ROM_LOAD( "magbuble.u23", 0x060000, 0x020000, CRC(c7763fc1) SHA1(ed68b3c3c5155073afb7b55d6d92d3057e40df6c) )
757   ROM_LOAD( "u20.bin", 0x000000, 0x020000, CRC(f70e3b8c) SHA1(d925c27bbd0f915228d22589a98e3ea7181a87ca) )
758   ROM_LOAD( "u21.bin", 0x020000, 0x020000, CRC(ad082cf3) SHA1(0bc3cf6c54d47be4f1940192fc1585cb48767e97) )
759   ROM_LOAD( "u22.bin", 0x040000, 0x020000, CRC(7c68df7a) SHA1(88acf9dd43892a790415b418f77d88c747aa84f5) )
760   ROM_LOAD( "u23.bin", 0x060000, 0x020000, CRC(c7763fc1) SHA1(ed68b3c3c5155073afb7b55d6d92d3057e40df6c) )
761761
762762   ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
763   ROM_LOAD( "magbuble.131", 0x000000, 0x020000, CRC(03e04e89) SHA1(7d80e6a7be2322e32e40acae72bedd8d7e90ad33) )
763   ROM_LOAD( "u131.bin", 0x000000, 0x020000, CRC(03e04e89) SHA1(7d80e6a7be2322e32e40acae72bedd8d7e90ad33) )
764764
765765ROM_END
766766
767ROM_START( magicbubb ) /* Found on a YS-0211 PCB like below */
767768
769   ROM_REGION( 0x080000, "maincpu", 0 )        /* 68000 Code */
770   ROM_LOAD16_BYTE( "u33", 0x000000, 0x040000, CRC(db651555) SHA1(41dbf35147e1c646db585437b378529559d3decb) )
771   ROM_LOAD16_BYTE( "u32", 0x000001, 0x040000, CRC(c9cb4d88) SHA1(ee41b9b307b423db7a9d706dfa9718efefa3b625) )
772
773   ROM_REGION( 0x200000*8, "gfx1", ROMREGION_ERASEFF ) /* 16x16x8 */
774   ROMX_LOAD( "u67.bin", 0x000000, 0x080000, CRC(89523dcd) SHA1(edea2bbec615aa253d940bbc3bbdb33f6873a8ee) , ROM_GROUPWORD | ROM_SKIP(6))
775   ROMX_LOAD( "u68.bin", 0x000002, 0x080000, CRC(30e01a70) SHA1(3a98c2ef61307b44bf4e155663117199587ff4a4) , ROM_GROUPWORD | ROM_SKIP(6))
776   ROMX_LOAD( "u69.bin", 0x000004, 0x080000, CRC(fe357f52) SHA1(5aff9a0bf70fc8a78820c4d13838ad238852c594) , ROM_GROUPWORD | ROM_SKIP(6))
777   ROMX_LOAD( "u70.bin", 0x000006, 0x080000, CRC(1398a473) SHA1(f58bda6cbf5f553a9632d910b2ffef5d5bfedf18) , ROM_GROUPWORD | ROM_SKIP(6))
778   ROMX_LOAD( "u71.bin", 0x200000, 0x080000, CRC(0844e017) SHA1(2ae5c9da521fea7aa5811627d7b3eca82cdc0821) , ROM_GROUPWORD | ROM_SKIP(6))
779   ROMX_LOAD( "u72.bin", 0x200002, 0x080000, CRC(591db1cb) SHA1(636fbfe9e048d6418d43f947004b281f61081fd8) , ROM_GROUPWORD | ROM_SKIP(6))
780   ROMX_LOAD( "u73.bin", 0x200004, 0x080000, CRC(cb4f3c3c) SHA1(fbd804bb70f09c2471557675af4c5b4abedea3b2) , ROM_GROUPWORD | ROM_SKIP(6))
781   ROMX_LOAD( "u74.bin", 0x200006, 0x080000, CRC(81ff4910) SHA1(69241fe2d20b53984aa67f17d8da32e1b74ce696) , ROM_GROUPWORD | ROM_SKIP(6))
782
783   ROM_REGION( 0x080000, "gfx2", 0 )   /* 16x16x4 */
784   ROM_LOAD( "u20.bin", 0x000000, 0x020000, CRC(f70e3b8c) SHA1(d925c27bbd0f915228d22589a98e3ea7181a87ca) )
785   ROM_LOAD( "u21.bin", 0x020000, 0x020000, CRC(ad082cf3) SHA1(0bc3cf6c54d47be4f1940192fc1585cb48767e97) )
786   ROM_LOAD( "u22.bin", 0x040000, 0x020000, CRC(7c68df7a) SHA1(88acf9dd43892a790415b418f77d88c747aa84f5) )
787   ROM_LOAD( "u23.bin", 0x060000, 0x020000, CRC(c7763fc1) SHA1(ed68b3c3c5155073afb7b55d6d92d3057e40df6c) )
788
789   ROM_REGION( 0x080000 * 2, "oki", 0 )    /* Samples */
790   ROM_LOAD( "u131", 0x000000, 0x040000, CRC(9bdb08e4) SHA1(4d8bdeb9b503b0959a6ae3f3fb3574350b01b1a1) )
791   ROM_RELOAD(       0x040000, 0x040000 )
792   ROM_RELOAD(       0x080000, 0x040000 )
793   ROM_RELOAD(       0x0c0000, 0x040000 )
794
795ROM_END
796
797
768798/***************************************************************************
769799
770800YunSung YS-0211 based games:
r241752r241753
772802Paparazzi (c) 1996 (no PCB label but looks identical)
773803Shocking  (c) 1997
774804Bomb Kick (c) 1998
805Magic Bubble (c) 199?
775806
776807PCB Layout
777808----------
r241752r241753
956987
957988***************************************************************************/
958989
959GAME( 199?, magicbub,  0,        magicbub, magicbub, yunsun16_state, magicbub, ROT0,   "Yun Sung", "Magic Bubble",                 GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
960GAME( 199?, magicbuba, magicbub, magicbub, magicbua, yunsun16_state, magicbub, ROT0,   "Yun Sung", "Magic Bubble (Adult version)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
961GAME( 1996, paprazzi,  0,        shocking, paprazzi, driver_device,  0,        ROT270, "Yun Sung", "Paparazzi",                    GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
962GAME( 1997, shocking,  0,        shocking, shocking, driver_device,  0,        ROT0,   "Yun Sung", "Shocking",                     GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
963GAME( 1997, shockingk, shocking, shocking, shocking, driver_device,  0,        ROT0,   "Yun Sung", "Shocking (Korea)",             GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
964GAME( 1998, bombkick,  0,        shocking, bombkick, driver_device,  0,        ROT0,   "Yun Sung", "Bomb Kick (set 1)",            GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
965GAME( 1998, bombkicka, bombkick, shocking, bombkick, driver_device,  0,        ROT0,   "Yun Sung", "Bomb Kick (set 2)",            GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
990GAME( 199?, magicbub,  0,        magicbub, magicbub, yunsun16_state, magicbub, ROT0,   "Yun Sung", "Magic Bubble",                              GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
991GAME( 199?, magicbuba, magicbub, magicbub, magicbua, yunsun16_state, magicbub, ROT0,   "Yun Sung", "Magic Bubble (Adult version, YS-1302 PCB)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
992GAME( 199?, magicbubb, magicbub, shocking, magicbua, driver_device,  0,        ROT0,   "Yun Sung", "Magic Bubble (Adult version, YS-0211 PCB)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
993GAME( 1996, paprazzi,  0,        shocking, paprazzi, driver_device,  0,        ROT270, "Yun Sung", "Paparazzi",                                 GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
994GAME( 1997, shocking,  0,        shocking, shocking, driver_device,  0,        ROT0,   "Yun Sung", "Shocking",                                  GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
995GAME( 1997, shockingk, shocking, shocking, shocking, driver_device,  0,        ROT0,   "Yun Sung", "Shocking (Korea)",                          GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
996GAME( 1998, bombkick,  0,        shocking, bombkick, driver_device,  0,        ROT0,   "Yun Sung", "Bomb Kick (set 1)",                         GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
997GAME( 1998, bombkicka, bombkick, shocking, bombkick, driver_device,  0,        ROT0,   "Yun Sung", "Bomb Kick (set 2)",                         GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/atarigx2.h
r241752r241753
88
99#include "machine/atarigen.h"
1010#include "audio/atarijsa.h"
11#include "includes/slapstic.h"
1112
13
1214class atarigx2_state : public atarigen_state
1315{
1416public:
r241752r241753
1921         m_protection_base(*this, "protection_base"),
2022         m_playfield_tilemap(*this, "playfield"),
2123         m_alpha_tilemap(*this, "alpha"),
22         m_rle(*this, "rle") { }
24         m_rle(*this, "rle")
25         { }
2326
2427   UINT16          m_playfield_base;
2528
trunk/src/mame/includes/atarisy2.h
r241752r241753
1010#include "video/atarimo.h"
1111#include "cpu/m6502/m6502.h"
1212#include "cpu/t11/t11.h"
13#include "slapstic.h"
1314
1415class atarisy2_state : public atarigen_state
1516{
r241752r241753
2526         m_alpha_tilemap(*this, "alpha"),
2627         m_rombank1(*this, "rombank1"),
2728         m_rombank2(*this, "rombank2"),
28         m_generic_paletteram_16(*this, "paletteram") { }
29         m_generic_paletteram_16(*this, "paletteram"),
30         m_slapstic(*this, "slapstic")
31         { }
2932
3033   required_device<t11_device> m_maincpu;
3134   required_device<m6502_device> m_audiocpu;
r241752r241753
5053   required_shared_ptr<UINT16> m_rombank1;
5154   required_shared_ptr<UINT16> m_rombank2;
5255   required_shared_ptr<UINT16> m_generic_paletteram_16;
56   required_device<atari_slapstic_device> m_slapstic;
5357
5458   UINT8           m_sound_reset_state;
5559
trunk/src/mame/includes/atetris.h
r241752r241753
44
55*************************************************************************/
66
7#include "includes/slapstic.h"
8
79class atetris_state : public driver_device
810{
911public:
r241752r241753
1315      m_videoram(*this, "videoram"),
1416      m_maincpu(*this, "maincpu"),
1517      m_gfxdecode(*this, "gfxdecode"),
16      m_screen(*this, "screen") { }
18      m_screen(*this, "screen"),
19      m_slapstic_device(*this, "slapstic")
20      { }
1721
1822   required_shared_ptr<UINT8>  m_nvram;
1923   required_shared_ptr<UINT8> m_videoram;
r241752r241753
4044   required_device<cpu_device> m_maincpu;
4145   required_device<gfxdecode_device> m_gfxdecode;
4246   required_device<screen_device> m_screen;
47   optional_device<atari_slapstic_device> m_slapstic_device;
4348};
trunk/src/mame/includes/harddriv.h
r241752r241753
1313#include "cpu/dsp32/dsp32.h"
1414#include "audio/atarijsa.h"
1515#include "sound/dac.h"
16#include "machine/atarigen.h"
1716#include "machine/mc68681.h"
1817#include "machine/asic65.h"
1918#include "machine/timekpr.h"
r241752r241753
2120#define HARDDRIV_MASTER_CLOCK   XTAL_32MHz
2221#define HARDDRIV_GSP_CLOCK      XTAL_48MHz
2322
24class harddriv_state : public atarigen_state
23extern const device_type HARDDRIV_DEVICE;
24extern const device_type HARDDRIV_BOARD_DEVICE;
25extern const device_type HARDDRIVC_BOARD_DEVICE;
26extern const device_type RACEDRIV_BOARD_DEVICE;
27extern const device_type RACEDRIVC_BOARD_DEVICE;
28extern const device_type RACEDRIVC1_BOARD_DEVICE;
29extern const device_type RACEDRIVB1_BOARD_DEVICE;
30extern const device_type RACEDRIVC_PANORAMA_SIDE_BOARD_DEVICE;
31extern const device_type STUNRUN_BOARD_DEVICE;
32extern const device_type STEELTAL_BOARD_DEVICE;
33extern const device_type STEELTAL1_BOARD_DEVICE;
34extern const device_type STEELTALP_BOARD_DEVICE;
35extern const device_type STRTDRIV_BOARD_DEVICE;
36extern const device_type HDRIVAIR_BOARD_DEVICE;
37extern const device_type HDRIVAIRP_BOARD_DEVICE;
38
39
40class harddriv_state :  public device_t
41 /* public device_video_interface */
2542{
2643public:
27   harddriv_state(const machine_config &mconfig, device_type type, const char *tag)
28      : atarigen_state(mconfig, type, tag),
29         m_maincpu(*this, "maincpu"),
30         m_gsp(*this, "gsp"),
31         m_msp(*this, "msp"),
32         m_adsp(*this, "adsp"),
33         m_soundcpu(*this, "soundcpu"),
34         m_sounddsp(*this, "sounddsp"),
35         m_jsacpu(*this, "jsacpu"),
36         m_dsp32(*this, "dsp32"),
37         m_ds3sdsp(*this, "ds3sdsp"),
38         m_ds3xdsp(*this, "ds3xdsp"),
39         m_ds3dac1(*this, "ds3dac1"),
40         m_ds3dac2(*this, "ds3dac2"),
41         m_jsa(*this, "jsa"),
42         m_msp_ram(*this, "msp_ram"),
43         m_dsk_10c(*this, "dsk_10c"),
44         m_dsk_30c(*this, "dsk_30c"),
45         m_200e(*this, "200e"),
46         m_210e(*this, "210e"),
47         m_adsp_data_memory(*this, "adsp_data"),
48         m_adsp_pgm_memory(*this, "adsp_pgm_memory"),
49         m_ds3sdsp_data_memory(*this, "ds3sdsp_data"),
50         m_ds3sdsp_pgm_memory(*this, "ds3sdsp_pgm"),
51         m_ds3xdsp_pgm_memory(*this, "ds3xdsp_pgm"),
52         m_sounddsp_ram(*this, "sounddsp_ram"),
53         m_gsp_vram(*this, "gsp_vram", 16),
54         m_gsp_control_lo(*this, "gsp_control_lo"),
55         m_gsp_control_hi(*this, "gsp_control_hi"),
56         m_gsp_paletteram_lo(*this, "gsp_palram_lo"),
57         m_gsp_paletteram_hi(*this, "gsp_palram_hi"),
58         m_ds3sdsp_internal_timer(*this, "ds3sdsp_timer"),
59         m_ds3xdsp_internal_timer(*this, "ds3xdsp_timer"),
60         m_dac(*this, "dac"),
61         m_duart(*this, "duartn68681"),
62         m_asic65(*this, "asic65") {}
44   harddriv_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
6345
46
6447   required_device<cpu_device> m_maincpu;
6548   required_device<tms34010_device> m_gsp;
6649   optional_device<tms34010_device> m_msp;
r241752r241753
268251   void init_driver_sound();
269252   void racedrivc_init_common(offs_t gsp_protection);
270253   void steeltal_init_common(offs_t ds3_transfer_pc, int proto_sloop);
271   DECLARE_DRIVER_INIT(strtdriv);
272   DECLARE_DRIVER_INIT(harddrivc);
273   DECLARE_DRIVER_INIT(hdrivairp);
274   DECLARE_DRIVER_INIT(racedriv);
275   DECLARE_DRIVER_INIT(hdrivair);
276   DECLARE_DRIVER_INIT(steeltal1);
277   DECLARE_DRIVER_INIT(racedrivc);
278   DECLARE_DRIVER_INIT(steeltal);
279   DECLARE_DRIVER_INIT(racedrivc1);
280   DECLARE_DRIVER_INIT(racedrivb1);
281   DECLARE_DRIVER_INIT(harddriv);
282   DECLARE_DRIVER_INIT(steeltalp);
283   DECLARE_DRIVER_INIT(stunrun);
284   DECLARE_MACHINE_START(harddriv);
285   DECLARE_MACHINE_RESET(harddriv);
286   DECLARE_VIDEO_START(harddriv);
254
255   void init_strtdriv(void);
256   
257   void init_harddriv(void);
258   
259   void init_harddrivc(void);
260
261   void init_racedriv(void);
262   void init_racedrivb1(void);   
263
264   void init_racedrivc(void);
265   void init_racedrivc1(void);
266   
267   void init_hdrivair(void);
268   void init_hdrivairp(void);
269   
270   void init_steeltal(void);
271   void init_steeltal1(void);
272   void init_steeltalp(void);
273   
274   void init_stunrun(void);
275   void init_racedrivc_panorama_side();
276
277   void init_video();
287278   INTERRUPT_GEN_MEMBER(hd68k_irq_gen);
288279   TIMER_CALLBACK_MEMBER(deferred_adsp_bank_switch);
289280   TIMER_CALLBACK_MEMBER(rddsp32_sync_cb);
r241752r241753
310301   DECLARE_READ16_MEMBER( hd68k_msp_io_r );
311302   DECLARE_WRITE16_MEMBER( hd68k_msp_io_w );
312303
304   DECLARE_READ16_MEMBER( hd68k_a80000_r );
313305   DECLARE_READ16_MEMBER( hd68k_port0_r );
314306   DECLARE_READ16_MEMBER( hd68k_adc8_r );
315307   DECLARE_READ16_MEMBER( hd68k_adc12_r );
r241752r241753
469461
470462   TMS340X0_SCANLINE_IND16_CB_MEMBER(scanline_driver);
471463   TMS340X0_SCANLINE_IND16_CB_MEMBER(scanline_multisync);
464   
465   UINT8               m_sound_int_state;
466   UINT8               m_video_int_state;
467
468   optional_device<palette_device> m_palette;
469   int get_hblank(screen_device &screen) const { return (screen.hpos() > (screen.width() * 9 / 10)); }
470   WRITE16_MEMBER( watchdog_reset16_w );
471   INTERRUPT_GEN_MEMBER(video_int_gen);
472   DECLARE_WRITE_LINE_MEMBER(sound_int_write_line);
473   optional_device<atari_slapstic_device> m_slapstic_device;
474protected:
475   //virtual machine_config_constructor device_mconfig_additions() const;
476   virtual void device_start();
477   virtual void device_reset();
472478};
479
480/* Hard Drivin' */
481
482class harddriv_board_device_state :  public harddriv_state
483{
484public:
485   harddriv_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
486
487protected:
488   virtual machine_config_constructor device_mconfig_additions() const;
489   virtual void device_start();
490//   virtual void device_reset();   
491};
492
493/* Hard Drivin' Compact */
494
495class harddrivc_board_device_state :  public harddriv_state
496{
497public:
498   harddrivc_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
499
500protected:
501   virtual machine_config_constructor device_mconfig_additions() const;
502   virtual void device_start();
503//   virtual void device_reset();   
504};
505
506/* Race Drivin' */
507
508class racedriv_board_device_state :  public harddriv_state
509{
510public:
511   racedriv_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
512   DECLARE_WRITE_LINE_MEMBER(tx_a);
513
514protected:
515   virtual machine_config_constructor device_mconfig_additions() const;
516   virtual void device_start();
517//   virtual void device_reset();   
518};
519
520class racedrivb1_board_device_state :  public racedriv_board_device_state
521{
522public:
523   racedrivb1_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
524      racedriv_board_device_state(mconfig, tag, owner, clock)
525      {};
526
527protected:
528   virtual void device_start();
529};
530
531/* Race Drivin' Compact */
532
533class racedrivc_board_device_state :  public harddriv_state
534{
535public:
536   racedrivc_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
537
538protected:
539   virtual machine_config_constructor device_mconfig_additions() const;
540   virtual void device_start();
541//   virtual void device_reset();   
542};
543
544class racedrivc1_board_device_state :  public racedrivc_board_device_state
545{
546public:
547   racedrivc1_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
548      racedrivc_board_device_state(mconfig, tag, owner, clock)
549      {};
550protected:
551   virtual void device_start();
552};
553
554class racedrivc_panorama_side_board_device_state :  public racedrivc_board_device_state
555{
556public:
557   racedrivc_panorama_side_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
558      racedrivc_board_device_state(mconfig, tag, owner, clock)
559      {};
560protected:
561   virtual machine_config_constructor device_mconfig_additions() const;
562   virtual void device_start();
563};
564
565
566/* Stun Runner */
567
568class stunrun_board_device_state :  public harddriv_state
569{
570public:
571   stunrun_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
572
573protected:
574   virtual machine_config_constructor device_mconfig_additions() const;
575   virtual void device_start();
576//   virtual void device_reset();   
577};
578
579/* Steel Talons */
580
581class steeltal_board_device_state :  public harddriv_state
582{
583public:
584   steeltal_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
585
586protected:
587   virtual machine_config_constructor device_mconfig_additions() const;
588   virtual void device_start();
589//   virtual void device_reset();   
590};
591
592class steeltal1_board_device_state :  public steeltal_board_device_state
593{
594public:
595   steeltal1_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
596      steeltal_board_device_state(mconfig, tag, owner, clock)
597      {};
598
599protected:
600   virtual void device_start();
601};
602
603class steeltalp_board_device_state :  public steeltal_board_device_state
604{
605public:
606   steeltalp_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
607      steeltal_board_device_state(mconfig, tag, owner, clock)
608      {};
609
610protected:
611   virtual void device_start();
612};
613
614
615
616/* Street Drivin' */
617
618class strtdriv_board_device_state :  public harddriv_state
619{
620public:
621   strtdriv_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
622
623protected:
624   virtual machine_config_constructor device_mconfig_additions() const;
625   virtual void device_start();
626//   virtual void device_reset();   
627};
628
629/* Hard Drivin' Airbourne */
630
631class hdrivair_board_device_state :  public harddriv_state
632{
633public:
634   hdrivair_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
635
636protected:
637   virtual machine_config_constructor device_mconfig_additions() const;
638   virtual void device_start();
639//   virtual void device_reset();   
640};
641
642class hdrivairp_board_device_state :  public hdrivair_board_device_state
643{
644public:
645   hdrivairp_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
646      hdrivair_board_device_state(mconfig, tag, owner, clock)
647      {};
648     
649protected:
650   virtual void device_start();
651};
652
653
654
655
trunk/src/mame/includes/konamigx.h
r241752r241753
199199   
200200   UINT16 m_prot_data[0x20];
201201   
202   UINT16 *m_gx_spriteram;
203   
204   // mirrored K054338 settings
205   int *m_K054338_shdRGB;
206   
202207   // 1st-Tier GX/MW Variables
203208   // frequently used registers
204209   int m_k053247_vrcbk[4];
r241752r241753
236241       unsupported flipping modes (probably due to the way it's hooked up to the
237242       rest of the chips) which is causing entirely the wrong output.
238243
239    -- furthermore video/konamigx.c contains it's own implementation of
240       the K053936_zoom_draw named K053936GP_zoom_draw ...
244    -- furthermore video\k053936.c contains an implementation of
245       the K053936_zoom_draw named K053936GP_zoom_draw that's only used in konamigx ...
241246
242247
243248    */
244249   bitmap_ind16 *m_gxtype1_roz_dstbitmap;
245250   bitmap_ind16 *m_gxtype1_roz_dstbitmap2;
246251   rectangle m_gxtype1_roz_dstbitmapclip;
252   
253   int m_konamigx_type3_psac2_actual_bank;
254   //int m_konamigx_type3_psac2_actual_last_bank = 0;
247255};
248256
249257// Sprite Callbacks
trunk/src/mame/includes/maygay1b.h
r241752r241753
11
22
33
4#define VERBOSE 1
4#define VERBOSE 0
55#define LOG(x)  do { if (VERBOSE) logerror x; } while (0)
66
77#define M1_MASTER_CLOCK (XTAL_8MHz)
r241752r241753
2020#include "sound/2413intf.h"
2121#include "sound/okim6376.h"
2222#include "machine/nvram.h"
23#include "sound/upd7759.h"
2324
25#include "sound/okim6295.h"
26
2427class maygay1b_state : public driver_device
2528{
2629public:
r241752r241753
3033      m_vfd(*this, "vfd"),
3134      m_ay(*this, "aysnd"),
3235      m_msm6376(*this, "msm6376"),
36      m_upd7759(*this, "upd"),
37      m_okim6295(*this, "oki"),
3338      m_duart68681(*this, "duart68681"),
3439      m_sw1_port(*this, "SW1"),
3540      m_sw2_port(*this, "SW2"),
r241752r241753
3843      m_s4_port(*this, "STROBE4"),
3944      m_s5_port(*this, "STROBE5"),
4045      m_s6_port(*this, "STROBE6"),
41      m_s7_port(*this, "STROBE7")
46      m_s7_port(*this, "STROBE7"),
47      m_bank1(*this, "bank1")
4248   {}
4349
4450   required_device<cpu_device> m_maincpu;
4551   optional_device<s16lf01_t> m_vfd;
4652   required_device<ay8910_device> m_ay;
4753   optional_device<okim6376_device> m_msm6376;
54   optional_device<upd7759_device> m_upd7759;
55   optional_device<okim6295_device> m_okim6295;
4856   required_device<mc68681_device> m_duart68681;
4957   required_ioport m_sw1_port;
5058   required_ioport m_sw2_port;
r241752r241753
5462   required_ioport m_s5_port;
5563   required_ioport m_s6_port;
5664   required_ioport m_s7_port;
65   required_memory_bank m_bank1;
5766
5867   UINT8 m_lamppos;
5968   int m_lamp_strobe;
r241752r241753
6372   int m_RAMEN;
6473   int m_ALARMEN;
6574   int m_PSUrelay;
75   bool m_Vmm;
6676   int m_WDOG;
67   int m_SRSEL;
6877   int m_NMIENABLE;
6978   int m_meter;
7079   TIMER_DEVICE_CALLBACK_MEMBER( maygay1b_nmitimer_callback );
r241752r241753
8998   DECLARE_READ8_MEMBER(m1_meter_r);
9099   DECLARE_READ8_MEMBER(m1_firq_clr_r);
91100   DECLARE_READ8_MEMBER(m1_firq_trg_r);
101   DECLARE_READ8_MEMBER(m1_firq_nec_r);
102   DECLARE_READ8_MEMBER(nec_reset_r);
103   DECLARE_WRITE8_MEMBER(nec_bank0_w);
104   DECLARE_WRITE8_MEMBER(nec_bank1_w);
92105   DECLARE_WRITE_LINE_MEMBER(duart_irq_handler);
93106   DECLARE_READ8_MEMBER(m1_duart_r);
94107   DECLARE_DRIVER_INIT(m1);
108   DECLARE_DRIVER_INIT(m1common);
109   DECLARE_DRIVER_INIT(m1nec);
95110   virtual void machine_start();
96111   virtual void machine_reset();
97112   void cpu0_firq(int data);
98   void cpu0_nmi(int data);
113   void cpu0_nmi();
99114   void m1_stepper_reset();
100115};
116
117MACHINE_CONFIG_EXTERN( maygay_m1 );
118MACHINE_CONFIG_EXTERN( maygay_m1_nec );
119MACHINE_CONFIG_EXTERN( maygay_m1_empire );
trunk/src/mame/includes/pgm.h
r241752r241753
411411   DECLARE_DRIVER_INIT(dw2v100x);
412412   DECLARE_DRIVER_INIT(drgw2c);
413413   DECLARE_DRIVER_INIT(drgw2j);
414   DECLARE_DRIVER_INIT(drgw2hk);
414415
415416   DECLARE_MACHINE_RESET(drgw2);
416417
trunk/src/mame/includes/psychic5.h
r241752r241753
1#include "machine/bankdev.h"
2
13class psychic5_state : public driver_device
24{
35public:
r241752r241753
79      m_maincpu(*this, "maincpu"),
810      m_audiocpu(*this, "audiocpu"),
911      m_gfxdecode(*this, "gfxdecode"),
10      m_palette(*this, "palette")  { }
12      m_palette(*this, "palette"),
13      m_vrambank(*this, "vrambank"),
14      m_fg_videoram(*this, "fg_videoram"),
15      m_bg_videoram(*this, "bg_videoram"),
16      m_bg_control(*this, "bg_control"),
1117
18      m_ps5_palette_ram_bg(*this, "palette_ram_bg"),
19      m_ps5_palette_ram_sp(*this, "palette_ram_sp"),
20      m_ps5_palette_ram_tx(*this, "palette_ram_tx")
21
22   { }
23
1224   UINT8 m_bank_latch;
1325   UINT8 m_ps5_vram_page;
1426   UINT8 m_bg_clip_mode;
1527   UINT8 m_title_screen;
16   UINT8 m_bg_status;
17   UINT8 *m_ps5_pagedram[2];
18   UINT8 *m_bg_videoram;
19   UINT8 *m_ps5_dummy_bg_ram;
20   UINT8 *m_ps5_io_ram;
21   UINT8 *m_ps5_palette_ram;
22   UINT8 *m_fg_videoram;
28
2329   tilemap_t *m_bg_tilemap;
2430   tilemap_t *m_fg_tilemap;
25   int m_bg_palette_ram_base;
26   int m_bg_palette_base;
2731   UINT16 m_palette_intensity;
2832   UINT8 m_bombsa_unknown;
2933   int m_sx1;
r241752r241753
3842   DECLARE_READ8_MEMBER(psychic5_vram_page_select_r);
3943   DECLARE_WRITE8_MEMBER(psychic5_vram_page_select_w);
4044   DECLARE_WRITE8_MEMBER(psychic5_title_screen_w);
41   DECLARE_READ8_MEMBER(psychic5_paged_ram_r);
42   DECLARE_WRITE8_MEMBER(psychic5_paged_ram_w);
43   DECLARE_WRITE8_MEMBER(bombsa_paged_ram_w);
4445   DECLARE_WRITE8_MEMBER(bombsa_unknown_w);
4546   TILE_GET_INFO_MEMBER(get_bg_tile_info);
4647   TILE_GET_INFO_MEMBER(get_fg_tile_info);
r241752r241753
4849   DECLARE_VIDEO_START(psychic5);
4950   DECLARE_VIDEO_RESET(psychic5);
5051   DECLARE_VIDEO_START(bombsa);
51   DECLARE_VIDEO_RESET(bombsa);
5252   UINT32 screen_update_psychic5(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
5353   UINT32 screen_update_bombsa(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
5454   TIMER_DEVICE_CALLBACK_MEMBER(psychic5_scanline);
55   void psychic5_change_palette(int color, int offset);
55   void psychic5_change_palette(int offset, UINT8* palram, int palbase);
5656   void psychic5_change_bg_palette(int color, int lo_offs, int hi_offs);
5757   void set_background_palette_intensity();
5858   void draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect);
r241752r241753
6262   required_device<cpu_device> m_audiocpu;
6363   required_device<gfxdecode_device> m_gfxdecode;
6464   required_device<palette_device> m_palette;
65   optional_device<address_map_bank_device> m_vrambank;
66   required_shared_ptr<UINT8> m_fg_videoram;
67   required_shared_ptr<UINT8> m_bg_videoram;
68   required_shared_ptr<UINT8> m_bg_control;
69
70   required_shared_ptr<UINT8> m_ps5_palette_ram_bg;
71   required_shared_ptr<UINT8> m_ps5_palette_ram_sp;
72   required_shared_ptr<UINT8> m_ps5_palette_ram_tx;
73
74
75
76   DECLARE_WRITE8_MEMBER(fg_videoram_w);
77   DECLARE_WRITE8_MEMBER(bg_videoram_w);
78   DECLARE_WRITE8_MEMBER(sprite_col_w);
79   DECLARE_WRITE8_MEMBER(bg_col_w);
80   DECLARE_WRITE8_MEMBER(tx_col_w);
81
6582};
trunk/src/mame/includes/segas18.h
r241752r241753
5555   DECLARE_DRIVER_INIT(generic_5874);
5656   DECLARE_DRIVER_INIT(wwally);
5757   DECLARE_DRIVER_INIT(generic_5987);
58   DECLARE_DRIVER_INIT(hamaway);
5859
5960   // memory mapping
6061   void memory_mapper(sega_315_5195_mapper_device &mapper, UINT8 index);
r241752r241753
6364
6465   // read/write handlers
6566   DECLARE_WRITE16_MEMBER( rom_5987_bank_w );
67   DECLARE_WRITE16_MEMBER( rom_837_7525_bank_w );
6668   DECLARE_READ16_MEMBER( io_chip_r );
6769   DECLARE_WRITE16_MEMBER( io_chip_w );
6870   DECLARE_READ16_MEMBER( misc_io_r );
r241752r241753
9092
9193   DECLARE_WRITE16_MEMBER( sega_tileram_0_w ) { m_segaic16vid->segaic16_tileram_0_w(space,offset,data,mem_mask); };
9294   DECLARE_WRITE16_MEMBER( sega_textram_0_w ) { m_segaic16vid->segaic16_textram_0_w(space,offset,data,mem_mask); };
95   
96   DECLARE_WRITE_LINE_MEMBER(ym3438_irq_handler);
9397
9498protected:
9599   // timer IDs
r241752r241753
104108      ROM_BOARD_INVALID,
105109      ROM_BOARD_171_SHADOW,   // 171-???? -- used by shadow dancer
106110      ROM_BOARD_171_5874,     // 171-5874
107      ROM_BOARD_171_5987      // 171-5987
111      ROM_BOARD_171_5987,     // 171-5987
112      ROM_BOARD_837_7525      // Hammer Away proto
113
108114   };
109115
110116   // device overrides
trunk/src/mame/includes/slapstic.h
r241752r241753
99
1010*************************************************************************/
1111
12/*----------- defined in machine/slapstic.c -----------*/
12#pragma once
1313
14void slapstic_init(running_machine &machine, int chip);
15void slapstic_reset(void);
14#ifndef __SLAPSTIC__
15#define __SLAPSTIC__
1616
17int slapstic_bank(void);
18int slapstic_tweak(address_space &space, offs_t offset);
17#include "emu.h"
18#include "cpu/m6800/m6800.h"
19#include "cpu/m68000/m68000.h"
20
21
22extern const device_type SLAPSTIC;
23
24#define MCFG_SLAPSTIC_ADD(_tag) \
25   MCFG_DEVICE_ADD(_tag, SLAPSTIC, 0)
26
27
28/*************************************
29 *
30 *  Debugging
31 *
32 *************************************/
33
34#define LOG_SLAPSTIC    (0)
35
36
37
38/*************************************
39 *
40 *  Structure of slapstic params
41 *
42 *************************************/
43
44struct mask_value
45{
46   int mask, value;
47};
48
49
50struct slapstic_data
51{
52   int bankstart;
53   int bank[4];
54
55   struct mask_value alt1;
56   struct mask_value alt2;
57   struct mask_value alt3;
58   struct mask_value alt4;
59   int altshift;
60
61   struct mask_value bit1;
62   struct mask_value bit2c0;
63   struct mask_value bit2s0;
64   struct mask_value bit2c1;
65   struct mask_value bit2s1;
66   struct mask_value bit3;
67
68   struct mask_value add1;
69   struct mask_value add2;
70   struct mask_value addplus1;
71   struct mask_value addplus2;
72   struct mask_value add3;
73};
74
75
76
77/*************************************
78 *
79 *  Shorthand
80 *
81 *************************************/
82
83#define UNKNOWN 0xffff
84#define NO_BITWISE          \
85   { UNKNOWN,UNKNOWN },    \
86   { UNKNOWN,UNKNOWN },    \
87   { UNKNOWN,UNKNOWN },    \
88   { UNKNOWN,UNKNOWN },    \
89   { UNKNOWN,UNKNOWN },    \
90   { UNKNOWN,UNKNOWN }
91#define NO_ADDITIVE         \
92   { UNKNOWN,UNKNOWN },    \
93   { UNKNOWN,UNKNOWN },    \
94   { UNKNOWN,UNKNOWN },    \
95   { UNKNOWN,UNKNOWN },    \
96   { UNKNOWN,UNKNOWN }
97
98#define MATCHES_MASK_VALUE(val, maskval)    (((val) & (maskval).mask) == (maskval).value)
99
100
101
102/*************************************
103 *
104 *  Constants
105 *
106 *************************************/
107
108enum
109{
110   DISABLED,
111   ENABLED,
112   ALTERNATE1,
113   ALTERNATE2,
114   ALTERNATE3,
115   BITWISE1,
116   BITWISE2,
117   BITWISE3,
118   ADDITIVE1,
119   ADDITIVE2,
120   ADDITIVE3
121};
122
123
124#define MCFG_SLAPSTIC_68K_ACCESS(_type) \
125   atari_slapstic_device::static_set_access68k(*device, _type);
126
127
128
129class atari_slapstic_device :  public device_t
130{
131public:
132   // construction/destruction
133   atari_slapstic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
134
135   void slapstic_init(running_machine &machine, int chip);
136   void slapstic_reset(void);
137
138   int slapstic_bank(void);
139   int slapstic_tweak(address_space &space, offs_t offset);
140
141   int alt2_kludge(address_space &space, offs_t offset);
142
143   static void static_set_access68k(device_t &device, int type)
144   {
145      atari_slapstic_device &dev = downcast<atari_slapstic_device &>(device);
146      dev.access_68k = type;
147   }
148
149
150   UINT8 state;
151   UINT8 current_bank;
152   int access_68k;
153
154   UINT8 alt_bank;
155   UINT8 bit_bank;
156   UINT8 add_bank;
157   UINT8 bit_xor;
158
159   struct slapstic_data slapstic;
160
161
162   void slapstic_log(running_machine &machine, offs_t offset);
163   FILE *slapsticlog;
164
165
166protected:
167   virtual void device_start();
168   virtual void device_reset();
169
170
171private:
172
173
174
175
176};
177
178
179
180
181#endif
trunk/src/mame/includes/starwars.h
r241752r241753
55***************************************************************************/
66
77#include "machine/6532riot.h"
8#include "includes/slapstic.h"
89
910
1011class starwars_state : public driver_device
r241752r241753
1516      m_riot(*this, "riot"),
1617      m_mathram(*this, "mathram"),
1718      m_maincpu(*this, "maincpu"),
18      m_audiocpu(*this, "audiocpu")  { }
19      m_audiocpu(*this, "audiocpu"),
20      m_slapstic_device(*this, "slapstic")
21      { }
1922
2023   UINT8 m_sound_data;
2124   UINT8 m_main_data;
r241752r241753
7881   void esb_slapstic_tweak(address_space &space, offs_t offset);
7982   required_device<cpu_device> m_maincpu;
8083   required_device<cpu_device> m_audiocpu;
84   optional_device<atari_slapstic_device> m_slapstic_device;
8185};
trunk/src/mame/includes/stv.h
r241752r241753
99#include "bus/generic/slot.h"
1010#include "bus/generic/carts.h"
1111
12#include "machine/315-5881_crypt.h"
13
1214#define MAX_FILTERS (24)
1315#define MAX_BLOCKS  (200)
1416#define MAX_DIR_SIZE    (256*1024)
r241752r241753
167169   required_device<gfxdecode_device> m_gfxdecode;
168170   required_device<palette_device> m_palette;
169171
172
173
170174   bitmap_rgb32 m_tmpbitmap;
171175   DECLARE_VIDEO_START(stv_vdp2);
172176   UINT32 screen_update_saturn(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
r241752r241753
694698   stv_state(const machine_config &mconfig, device_type type, const char *tag)
695699      : saturn_state(mconfig, type, tag),
696700      m_adsp(*this, "adsp"),
697      m_adsp_pram(*this, "adsp_pram")
701      m_adsp_pram(*this, "adsp_pram"),
702      m_cryptdevice(*this, "315_5881")
698703   {
699704   }
700705
r241752r241753
829834   DECLARE_WRITE32_MEMBER( decathlt_prot2_w );
830835   void write_prot_data(UINT32 data, UINT32 mem_mask, int offset, int which);
831836   void install_decathlt_protection();
837
838   optional_device<sega_315_5881_crypt_device> m_cryptdevice;
839   UINT16 crypt_read_callback(UINT32 addr);
832840};
833841
834842
trunk/src/mame/includes/tx1.h
r241752r241753
193193
194194   void buggyboy_draw_char(UINT8 *bitmap, bool wide);
195195   void buggyboy_get_roadpix(int screen, int ls161, UINT8 rva0_6, UINT8 sld, UINT32 *_rorev,
196                        UINT8 *rc0, UINT8 *rc1, UINT8 *rc2, UINT8 *rc3,
197                        const UINT8 *rom, const UINT8 *prom0, const UINT8 *prom1, const UINT8 *prom2);
196                        UINT8 *rc0, UINT8 *rc1, UINT8 *rc2, UINT8 *rc3);
198197   void buggyboy_draw_road(UINT8 *bitmap);
199198   void buggybjr_draw_road(UINT8 *bitmap);
200199   void buggyboy_draw_objs(UINT8 *bitmap, bool wide);
trunk/src/mame/layout/newufo.lay
r0r241753
1<?xml version="1.0"?>
2<mamelayout version="2">
3
4
5<!-- define elements -->
6
7   <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
8   <element name="static_grey"><rect><color red="0.6" green="0.6" blue="0.6" /></rect></element>
9   <element name="static_pink"><rect><color red="0.9" green="0.55" blue="0.75" /></rect></element>
10
11   <element name="text_ufored">
12      <text string="~UFO~">
13         <color red="1.0" green="0.3" blue="0.2" />
14      </text>
15   </element>
16   <element name="text_ufoblue">
17      <text string="~UFO~">
18         <color red="0.2" green="0.3" blue="1.0" />
19      </text>
20   </element>
21
22   <element name="text_x">
23      <text string="X:" align="1">
24         <color red="0.85" green="0.85" blue="0.85" />
25      </text>
26   </element>
27   <element name="text_y">
28      <text string="Y:" align="1">
29         <color red="0.85" green="0.85" blue="0.85" />
30      </text>
31   </element>
32   <element name="text_z">
33      <text string="Z:" align="1">
34         <color red="0.85" green="0.85" blue="0.85" />
35      </text>
36   </element>
37   <element name="text_c">
38      <text string="C:" align="1">
39         <color red="0.85" green="0.85" blue="0.85" />
40      </text>
41   </element>
42
43   <element name="digit" defstate="0">
44      <led7seg>
45         <color red="1.0" green="0.3" blue="0.2" />
46      </led7seg>
47   </element>
48
49   <element name="counter" defstate="0">
50      <simplecounter maxstate="999" digits="3" align="1">
51         <color red="0.95" green="0.95" blue="0.95" />
52      </simplecounter>
53   </element>
54
55   <element name="lamp_b1" defstate="0">
56      <disk><color red="0.0" green="0.0" blue="0.0" /></disk>
57      <disk state="1">
58         <color red="1.0" green="1.0" blue="1.0" />
59         <bounds x="0.05" y="0.05" width="0.9" height="0.9" />
60      </disk>
61      <disk state="0">
62         <color red="0.7" green="0.7" blue="0.7" />
63         <bounds x="0.05" y="0.05" width="0.9" height="0.9" />
64      </disk>
65      <text string="1">
66         <color red="0.0" green="0.0" blue="0.0" />
67         <bounds x="0" y="0.2" width="1.0" height="0.6" />
68      </text>
69   </element>
70   <element name="lamp_b2" defstate="0">
71      <disk><color red="0.0" green="0.0" blue="0.0" /></disk>
72      <disk state="1">
73         <color red="1.0" green="1.0" blue="1.0" />
74         <bounds x="0.05" y="0.05" width="0.9" height="0.9" />
75      </disk>
76      <disk state="0">
77         <color red="0.7" green="0.7" blue="0.7" />
78         <bounds x="0.05" y="0.05" width="0.9" height="0.9" />
79      </disk>
80      <text string="2">
81         <color red="0.0" green="0.0" blue="0.0" />
82         <bounds x="0" y="0.2" width="1.0" height="0.6" />
83      </text>
84   </element>
85
86   <element name="lamp_rg0" defstate="0">
87      <disk state="0">
88         <color red="0.2" green="0.05" blue="0.0" />
89      </disk>
90      <disk state="1">
91         <color red="0.4" green="1.0" blue="0.3" />
92      </disk>
93      <disk state="2">
94         <color red="1.0" green="0.4" blue="0.3" />
95      </disk>
96      <disk state="3">
97         <color red="1.0" green="0.4" blue="0.3" />
98      </disk>
99   </element>
100   <element name="lamp_rg1" defstate="0">
101      <disk state="0">
102         <color red="0.2" green="0.05" blue="0.0" />
103      </disk>
104      <disk state="1">
105         <color red="1.0" green="0.4" blue="0.3" />
106      </disk>
107      <disk state="2">
108         <color red="0.4" green="1.0" blue="0.3" />
109      </disk>
110      <disk state="3">
111         <color red="1.0" green="0.4" blue="0.3" />
112      </disk>
113   </element>
114
115
116<!-- build screen -->
117
118   <view name="Internal Layout">
119      <bounds left="0" right="200" top="0" bottom="90" />
120      <bezel element="static_black">
121         <bounds left="0" right="200" top="0" bottom="90" />
122      </bezel>
123
124      <bezel element="static_grey">
125         <bounds x="99" y="0" width="2" height="80" />
126      </bezel>
127
128   <!-- control panel -->
129
130      <bezel element="static_pink">
131         <bounds x="0" y="60" width="200" height="30" />
132      </bezel>
133
134      <bezel name="lamp0" element="lamp_b1" inputtag="IN1" inputmask="0x20" >
135         <bounds x="30" y="70" width="10" height="10"/>
136      </bezel>
137      <bezel name="lamp1" element="lamp_b2" inputtag="IN1" inputmask="0x40" >
138         <bounds x="43" y="70" width="10" height="10"/>
139      </bezel>
140
141      <bezel name="lamp2" element="lamp_b1" inputtag="IN2" inputmask="0x20" >
142         <bounds x="147" y="70" width="10" height="10"/>
143      </bezel>
144      <bezel name="lamp3" element="lamp_b2" inputtag="IN2" inputmask="0x40" >
145         <bounds x="160" y="70" width="10" height="10"/>
146      </bezel>
147
148      <bezel element="static_black">
149         <bounds x="60" y="70" width="12" height="17" />
150      </bezel>
151      <bezel name="digit0" element="digit">
152         <bounds x="61" y="71" width="10" height="15" />
153      </bezel>
154
155      <bezel element="static_black">
156         <bounds x="128" y="70" width="12" height="17" />
157      </bezel>
158      <bezel name="digit1" element="digit">
159         <bounds x="129" y="71" width="10" height="15" />
160      </bezel>
161
162
163   <!-- left ufo info -->
164
165      <bezel element="text_x">
166         <bounds x="5" y="5" width="10" height="4" />
167      </bezel>
168      <bezel element="text_y">
169         <bounds x="5" y="10" width="10" height="4" />
170      </bezel>
171      <bezel element="text_z">
172         <bounds x="5" y="15" width="10" height="4" />
173      </bezel>
174      <bezel element="text_c">
175         <bounds x="5" y="20" width="10" height="4" />
176      </bezel>
177
178      <bezel name="counter0" element="counter">
179         <bounds x="12" y="5" width="20" height="4" />
180      </bezel>
181      <bezel name="counter1" element="counter">
182         <bounds x="12" y="10" width="20" height="4" />
183      </bezel>
184      <bezel name="counter2" element="counter">
185         <bounds x="12" y="15" width="20" height="4" />
186      </bezel>
187      <bezel name="counter3" element="counter">
188         <bounds x="12" y="20" width="20" height="4" />
189      </bezel>
190
191      <bezel element="text_ufored">
192         <bounds x="25" y="25" width="50" height="14" />
193      </bezel>
194
195      <bezel name="lamp10" element="lamp_rg0">
196         <bounds x="31" y="44" width="3" height="3" />
197      </bezel>
198      <bezel name="lamp10" element="lamp_rg1">
199         <bounds x="38" y="44" width="3" height="3" />
200      </bezel>
201      <bezel name="lamp10" element="lamp_rg0">
202         <bounds x="45" y="44" width="3" height="3" />
203      </bezel>
204      <bezel name="lamp10" element="lamp_rg1">
205         <bounds x="52" y="44" width="3" height="3" />
206      </bezel>
207      <bezel name="lamp10" element="lamp_rg0">
208         <bounds x="59" y="44" width="3" height="3" />
209      </bezel>
210      <bezel name="lamp10" element="lamp_rg1">
211         <bounds x="66" y="44" width="3" height="3" />
212      </bezel>
213
214   <!-- right ufo info -->
215
216      <bezel element="text_x">
217         <bounds x="105" y="5" width="10" height="4" />
218      </bezel>
219      <bezel element="text_y">
220         <bounds x="105" y="10" width="10" height="4" />
221      </bezel>
222      <bezel element="text_z">
223         <bounds x="105" y="15" width="10" height="4" />
224      </bezel>
225      <bezel element="text_c">
226         <bounds x="105" y="20" width="10" height="4" />
227      </bezel>
228
229      <bezel name="counter4" element="counter">
230         <bounds x="112" y="5" width="20" height="4" />
231      </bezel>
232      <bezel name="counter5" element="counter">
233         <bounds x="112" y="10" width="20" height="4" />
234      </bezel>
235      <bezel name="counter6" element="counter">
236         <bounds x="112" y="15" width="20" height="4" />
237      </bezel>
238      <bezel name="counter7" element="counter">
239         <bounds x="112" y="20" width="20" height="4" />
240      </bezel>
241
242      <bezel element="text_ufoblue">
243         <bounds x="125" y="25" width="50" height="14" />
244      </bezel>
245
246      <bezel name="lamp11" element="lamp_rg0">
247         <bounds x="131" y="44" width="3" height="3" />
248      </bezel>
249      <bezel name="lamp11" element="lamp_rg1">
250         <bounds x="138" y="44" width="3" height="3" />
251      </bezel>
252      <bezel name="lamp11" element="lamp_rg0">
253         <bounds x="145" y="44" width="3" height="3" />
254      </bezel>
255      <bezel name="lamp11" element="lamp_rg1">
256         <bounds x="152" y="44" width="3" height="3" />
257      </bezel>
258      <bezel name="lamp11" element="lamp_rg0">
259         <bounds x="159" y="44" width="3" height="3" />
260      </bezel>
261      <bezel name="lamp11" element="lamp_rg1">
262         <bounds x="166" y="44" width="3" height="3" />
263      </bezel>
264
265
266   </view>
267</mamelayout>
trunk/src/mame/layout/racedrivpan.lay
r0r241753
1<?xml version="1.0"?>
2<mamelayout version="2">
3
4   <view name="Triple Side-by-Side (Panorama)">
5      <screen index="1">
6         <bounds x="0" y="0" width="4" height="3" />
7      </screen>
8      <screen index="0">
9         <bounds x="4.03" y="0" width="4" height="3" />
10      </screen>
11      <screen index="2">
12         <bounds x="8.06" y="0" width="4" height="3" />
13      </screen>
14   </view>
15
16</mamelayout>
trunk/src/mame/layout/ufo21.lay
r0r241753
1<?xml version="1.0"?>
2<mamelayout version="2">
3
4
5<!-- define elements -->
6
7   <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
8   <element name="static_grey"><rect><color red="0.6" green="0.6" blue="0.6" /></rect></element>
9   <element name="static_pink"><rect><color red="0.9" green="0.55" blue="0.75" /></rect></element>
10
11   <element name="text_ufored">
12      <text string="~UFO~">
13         <color red="1.0" green="0.3" blue="0.2" />
14      </text>
15   </element>
16   <element name="text_ufoblue">
17      <text string="~UFO~">
18         <color red="0.2" green="0.3" blue="1.0" />
19      </text>
20   </element>
21
22   <element name="text_x">
23      <text string="X:" align="1">
24         <color red="0.85" green="0.85" blue="0.85" />
25      </text>
26   </element>
27   <element name="text_y">
28      <text string="Y:" align="1">
29         <color red="0.85" green="0.85" blue="0.85" />
30      </text>
31   </element>
32   <element name="text_z">
33      <text string="Z:" align="1">
34         <color red="0.85" green="0.85" blue="0.85" />
35      </text>
36   </element>
37   <element name="text_c">
38      <text string="C:" align="1">
39         <color red="0.85" green="0.85" blue="0.85" />
40      </text>
41   </element>
42
43   <element name="digit" defstate="0">
44      <led7seg>
45         <color red="1.0" green="0.3" blue="0.2" />
46      </led7seg>
47   </element>
48
49   <element name="counter" defstate="0">
50      <simplecounter maxstate="999" digits="3" align="1">
51         <color red="0.95" green="0.95" blue="0.95" />
52      </simplecounter>
53   </element>
54
55   <element name="lamp_b1" defstate="0">
56      <disk><color red="0.0" green="0.0" blue="0.0" /></disk>
57      <disk state="1">
58         <color red="1.0" green="1.0" blue="1.0" />
59         <bounds x="0.05" y="0.05" width="0.9" height="0.9" />
60      </disk>
61      <disk state="0">
62         <color red="0.7" green="0.7" blue="0.7" />
63         <bounds x="0.05" y="0.05" width="0.9" height="0.9" />
64      </disk>
65      <text string="1">
66         <color red="0.0" green="0.0" blue="0.0" />
67         <bounds x="0" y="0.2" width="1.0" height="0.6" />
68      </text>
69   </element>
70   <element name="lamp_b2" defstate="0">
71      <disk><color red="0.0" green="0.0" blue="0.0" /></disk>
72      <disk state="1">
73         <color red="1.0" green="1.0" blue="1.0" />
74         <bounds x="0.05" y="0.05" width="0.9" height="0.9" />
75      </disk>
76      <disk state="0">
77         <color red="0.7" green="0.7" blue="0.7" />
78         <bounds x="0.05" y="0.05" width="0.9" height="0.9" />
79      </disk>
80      <text string="2">
81         <color red="0.0" green="0.0" blue="0.0" />
82         <bounds x="0" y="0.2" width="1.0" height="0.6" />
83      </text>
84   </element>
85
86   <element name="lamp_red" defstate="0">
87      <disk state="0">
88         <color red="0.2" green="0.05" blue="0.0" />
89      </disk>
90      <disk state="1">
91         <color red="1.0" green="0.4" blue="0.3" />
92      </disk>
93   </element>
94
95
96<!-- build screen -->
97
98   <view name="Internal Layout">
99      <bounds left="0" right="200" top="0" bottom="90" />
100      <bezel element="static_black">
101         <bounds left="0" right="200" top="0" bottom="90" />
102      </bezel>
103
104      <bezel element="static_grey">
105         <bounds x="99" y="0" width="2" height="80" />
106      </bezel>
107
108   <!-- control panel -->
109
110      <bezel element="static_pink">
111         <bounds x="0" y="60" width="200" height="30" />
112      </bezel>
113
114      <bezel name="lamp0" element="lamp_b1" inputtag="IN2" inputmask="0x01" >
115         <bounds x="30" y="70" width="10" height="10"/>
116      </bezel>
117      <bezel name="lamp1" element="lamp_b2" inputtag="IN2" inputmask="0x02" >
118         <bounds x="43" y="70" width="10" height="10"/>
119      </bezel>
120
121      <bezel name="lamp2" element="lamp_b1" inputtag="IN2" inputmask="0x10" >
122         <bounds x="147" y="70" width="10" height="10"/>
123      </bezel>
124      <bezel name="lamp3" element="lamp_b2" inputtag="IN2" inputmask="0x20" >
125         <bounds x="160" y="70" width="10" height="10"/>
126      </bezel>
127
128      <bezel element="static_black">
129         <bounds x="60" y="70" width="12" height="17" />
130      </bezel>
131      <bezel name="digit0" element="digit">
132         <bounds x="61" y="71" width="10" height="15" />
133      </bezel>
134
135      <bezel element="static_black">
136         <bounds x="128" y="70" width="12" height="17" />
137      </bezel>
138      <bezel name="digit1" element="digit">
139         <bounds x="129" y="71" width="10" height="15" />
140      </bezel>
141
142
143   <!-- left ufo info -->
144
145      <bezel element="text_x">
146         <bounds x="5" y="5" width="10" height="4" />
147      </bezel>
148      <bezel element="text_y">
149         <bounds x="5" y="10" width="10" height="4" />
150      </bezel>
151      <bezel element="text_z">
152         <bounds x="5" y="15" width="10" height="4" />
153      </bezel>
154      <bezel element="text_c">
155         <bounds x="5" y="20" width="10" height="4" />
156      </bezel>
157
158      <bezel name="counter0" element="counter">
159         <bounds x="12" y="5" width="20" height="4" />
160      </bezel>
161      <bezel name="counter1" element="counter">
162         <bounds x="12" y="10" width="20" height="4" />
163      </bezel>
164      <bezel name="counter2" element="counter">
165         <bounds x="12" y="15" width="20" height="4" />
166      </bezel>
167      <bezel name="counter3" element="counter">
168         <bounds x="12" y="20" width="20" height="4" />
169      </bezel>
170
171      <bezel element="text_ufored">
172         <bounds x="25" y="25" width="50" height="14" />
173      </bezel>
174
175      <bezel name="lamp11" element="lamp_red">
176         <bounds x="31" y="44" width="3" height="3" />
177      </bezel>
178      <bezel name="lamp12" element="lamp_red">
179         <bounds x="38" y="44" width="3" height="3" />
180      </bezel>
181      <bezel name="lamp13" element="lamp_red">
182         <bounds x="45" y="44" width="3" height="3" />
183      </bezel>
184      <bezel name="lamp14" element="lamp_red">
185         <bounds x="52" y="44" width="3" height="3" />
186      </bezel>
187      <bezel name="lamp15" element="lamp_red">
188         <bounds x="59" y="44" width="3" height="3" />
189      </bezel>
190      <bezel name="lamp16" element="lamp_red">
191         <bounds x="66" y="44" width="3" height="3" />
192      </bezel>
193
194   <!-- right ufo info -->
195
196      <bezel element="text_x">
197         <bounds x="105" y="5" width="10" height="4" />
198      </bezel>
199      <bezel element="text_y">
200         <bounds x="105" y="10" width="10" height="4" />
201      </bezel>
202      <bezel element="text_z">
203         <bounds x="105" y="15" width="10" height="4" />
204      </bezel>
205      <bezel element="text_c">
206         <bounds x="105" y="20" width="10" height="4" />
207      </bezel>
208
209      <bezel name="counter4" element="counter">
210         <bounds x="112" y="5" width="20" height="4" />
211      </bezel>
212      <bezel name="counter5" element="counter">
213         <bounds x="112" y="10" width="20" height="4" />
214      </bezel>
215      <bezel name="counter6" element="counter">
216         <bounds x="112" y="15" width="20" height="4" />
217      </bezel>
218      <bezel name="counter7" element="counter">
219         <bounds x="112" y="20" width="20" height="4" />
220      </bezel>
221
222      <bezel element="text_ufoblue">
223         <bounds x="125" y="25" width="50" height="14" />
224      </bezel>
225
226      <bezel name="lamp21" element="lamp_red">
227         <bounds x="131" y="44" width="3" height="3" />
228      </bezel>
229      <bezel name="lamp22" element="lamp_red">
230         <bounds x="138" y="44" width="3" height="3" />
231      </bezel>
232      <bezel name="lamp23" element="lamp_red">
233         <bounds x="145" y="44" width="3" height="3" />
234      </bezel>
235      <bezel name="lamp24" element="lamp_red">
236         <bounds x="152" y="44" width="3" height="3" />
237      </bezel>
238      <bezel name="lamp25" element="lamp_red">
239         <bounds x="159" y="44" width="3" height="3" />
240      </bezel>
241      <bezel name="lamp26" element="lamp_red">
242         <bounds x="166" y="44" width="3" height="3" />
243      </bezel>
244
245
246   </view>
247</mamelayout>
trunk/src/mame/layout/ufo800.lay
r0r241753
1<?xml version="1.0"?>
2<mamelayout version="2">
3
4
5<!-- define elements -->
6
7   <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
8   <element name="static_grey"><rect><color red="0.6" green="0.6" blue="0.6" /></rect></element>
9   <element name="static_pink"><rect><color red="0.9" green="0.55" blue="0.75" /></rect></element>
10
11   <element name="text_ufored">
12      <text string="~UFO~">
13         <color red="1.0" green="0.3" blue="0.2" />
14      </text>
15   </element>
16   <element name="text_ufoblue">
17      <text string="~UFO~">
18         <color red="0.2" green="0.3" blue="1.0" />
19      </text>
20   </element>
21
22   <element name="text_x">
23      <text string="X:" align="1">
24         <color red="0.85" green="0.85" blue="0.85" />
25      </text>
26   </element>
27   <element name="text_y">
28      <text string="Y:" align="1">
29         <color red="0.85" green="0.85" blue="0.85" />
30      </text>
31   </element>
32   <element name="text_z">
33      <text string="Z:" align="1">
34         <color red="0.85" green="0.85" blue="0.85" />
35      </text>
36   </element>
37   <element name="text_c">
38      <text string="C:" align="1">
39         <color red="0.85" green="0.85" blue="0.85" />
40      </text>
41   </element>
42
43   <element name="digit" defstate="0">
44      <led7seg>
45         <color red="1.0" green="0.3" blue="0.2" />
46      </led7seg>
47   </element>
48
49   <element name="counter" defstate="0">
50      <simplecounter maxstate="999" digits="3" align="1">
51         <color red="0.95" green="0.95" blue="0.95" />
52      </simplecounter>
53   </element>
54
55   <element name="lamp_b1" defstate="0">
56      <disk><color red="0.0" green="0.0" blue="0.0" /></disk>
57      <disk state="1">
58         <color red="1.0" green="1.0" blue="1.0" />
59         <bounds x="0.05" y="0.05" width="0.9" height="0.9" />
60      </disk>
61      <disk state="0">
62         <color red="0.7" green="0.7" blue="0.7" />
63         <bounds x="0.05" y="0.05" width="0.9" height="0.9" />
64      </disk>
65      <text string="1">
66         <color red="0.0" green="0.0" blue="0.0" />
67         <bounds x="0" y="0.2" width="1.0" height="0.6" />
68      </text>
69   </element>
70   <element name="lamp_b2" defstate="0">
71      <disk><color red="0.0" green="0.0" blue="0.0" /></disk>
72      <disk state="1">
73         <color red="1.0" green="1.0" blue="1.0" />
74         <bounds x="0.05" y="0.05" width="0.9" height="0.9" />
75      </disk>
76      <disk state="0">
77         <color red="0.7" green="0.7" blue="0.7" />
78         <bounds x="0.05" y="0.05" width="0.9" height="0.9" />
79      </disk>
80      <text string="2">
81         <color red="0.0" green="0.0" blue="0.0" />
82         <bounds x="0" y="0.2" width="1.0" height="0.6" />
83      </text>
84   </element>
85
86   <element name="lamp_red" defstate="0">
87      <disk state="0">
88         <color red="0.2" green="0.05" blue="0.0" />
89      </disk>
90      <disk state="1">
91         <color red="1.0" green="0.4" blue="0.3" />
92      </disk>
93   </element>
94
95
96<!-- build screen -->
97
98   <view name="Internal Layout">
99      <bounds left="0" right="100" top="0" bottom="90" />
100      <bezel element="static_black">
101         <bounds left="0" right="100" top="0" bottom="90" />
102      </bezel>
103
104   <!-- control panel -->
105
106      <bezel element="static_pink">
107         <bounds x="0" y="60" width="100" height="30" />
108      </bezel>
109
110      <bezel name="lamp0" element="lamp_b1" inputtag="IN2" inputmask="0x01" >
111         <bounds x="30" y="70" width="10" height="10"/>
112      </bezel>
113      <bezel name="lamp1" element="lamp_b2" inputtag="IN2" inputmask="0x02" >
114         <bounds x="43" y="70" width="10" height="10"/>
115      </bezel>
116
117      <bezel element="static_black">
118         <bounds x="60" y="70" width="12" height="17" />
119      </bezel>
120      <bezel name="digit0" element="digit">
121         <bounds x="61" y="71" width="10" height="15" />
122      </bezel>
123
124
125   <!-- left ufo info -->
126
127      <bezel element="text_x">
128         <bounds x="5" y="5" width="10" height="4" />
129      </bezel>
130      <bezel element="text_y">
131         <bounds x="5" y="10" width="10" height="4" />
132      </bezel>
133      <bezel element="text_z">
134         <bounds x="5" y="15" width="10" height="4" />
135      </bezel>
136      <bezel element="text_c">
137         <bounds x="5" y="20" width="10" height="4" />
138      </bezel>
139
140      <bezel name="counter0" element="counter">
141         <bounds x="12" y="5" width="20" height="4" />
142      </bezel>
143      <bezel name="counter1" element="counter">
144         <bounds x="12" y="10" width="20" height="4" />
145      </bezel>
146      <bezel name="counter2" element="counter">
147         <bounds x="12" y="15" width="20" height="4" />
148      </bezel>
149      <bezel name="counter3" element="counter">
150         <bounds x="12" y="20" width="20" height="4" />
151      </bezel>
152
153      <bezel element="text_ufored">
154         <bounds x="25" y="25" width="50" height="14" />
155      </bezel>
156
157      <bezel name="lamp10" element="lamp_red">
158         <bounds x="34" y="44" width="3" height="3" />
159      </bezel>
160      <bezel name="lamp11" element="lamp_red">
161         <bounds x="41" y="44" width="3" height="3" />
162      </bezel>
163      <bezel name="lamp12" element="lamp_red">
164         <bounds x="48" y="44" width="3" height="3" />
165      </bezel>
166      <bezel name="lamp13" element="lamp_red">
167         <bounds x="55" y="44" width="3" height="3" />
168      </bezel>
169      <bezel name="lamp14" element="lamp_red">
170         <bounds x="62" y="44" width="3" height="3" />
171      </bezel>
172
173
174   </view>
175</mamelayout>
trunk/src/mame/layout/ufomini.lay
r0r241753
1<?xml version="1.0"?>
2<mamelayout version="2">
3
4
5<!-- define elements -->
6
7   <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
8   <element name="static_grey"><rect><color red="0.6" green="0.6" blue="0.6" /></rect></element>
9   <element name="static_pink"><rect><color red="0.9" green="0.55" blue="0.75" /></rect></element>
10
11   <element name="text_ufored">
12      <text string="~UFO~">
13         <color red="1.0" green="0.3" blue="0.2" />
14      </text>
15   </element>
16   <element name="text_ufoblue">
17      <text string="~UFO~">
18         <color red="0.2" green="0.3" blue="1.0" />
19      </text>
20   </element>
21
22   <element name="text_x">
23      <text string="X:" align="1">
24         <color red="0.85" green="0.85" blue="0.85" />
25      </text>
26   </element>
27   <element name="text_y">
28      <text string="Y:" align="1">
29         <color red="0.85" green="0.85" blue="0.85" />
30      </text>
31   </element>
32   <element name="text_z">
33      <text string="Z:" align="1">
34         <color red="0.85" green="0.85" blue="0.85" />
35      </text>
36   </element>
37   <element name="text_c">
38      <text string="C:" align="1">
39         <color red="0.85" green="0.85" blue="0.85" />
40      </text>
41   </element>
42
43   <element name="digit" defstate="0">
44      <led7seg>
45         <color red="1.0" green="0.3" blue="0.2" />
46      </led7seg>
47   </element>
48
49   <element name="counter" defstate="0">
50      <simplecounter maxstate="999" digits="3" align="1">
51         <color red="0.95" green="0.95" blue="0.95" />
52      </simplecounter>
53   </element>
54
55   <element name="lamp_b1" defstate="0">
56      <disk><color red="0.0" green="0.0" blue="0.0" /></disk>
57      <disk state="1">
58         <color red="1.0" green="1.0" blue="1.0" />
59         <bounds x="0.05" y="0.05" width="0.9" height="0.9" />
60      </disk>
61      <disk state="0">
62         <color red="0.7" green="0.7" blue="0.7" />
63         <bounds x="0.05" y="0.05" width="0.9" height="0.9" />
64      </disk>
65      <text string="1">
66         <color red="0.0" green="0.0" blue="0.0" />
67         <bounds x="0" y="0.2" width="1.0" height="0.6" />
68      </text>
69   </element>
70   <element name="lamp_b2" defstate="0">
71      <disk><color red="0.0" green="0.0" blue="0.0" /></disk>
72      <disk state="1">
73         <color red="1.0" green="1.0" blue="1.0" />
74         <bounds x="0.05" y="0.05" width="0.9" height="0.9" />
75      </disk>
76      <disk state="0">
77         <color red="0.7" green="0.7" blue="0.7" />
78         <bounds x="0.05" y="0.05" width="0.9" height="0.9" />
79      </disk>
80      <text string="2">
81         <color red="0.0" green="0.0" blue="0.0" />
82         <bounds x="0" y="0.2" width="1.0" height="0.6" />
83      </text>
84   </element>
85
86   <element name="lamp_rg0" defstate="0">
87      <disk state="0">
88         <color red="0.2" green="0.05" blue="0.0" />
89      </disk>
90      <disk state="1">
91         <color red="0.4" green="1.0" blue="0.3" />
92      </disk>
93      <disk state="2">
94         <color red="1.0" green="0.4" blue="0.3" />
95      </disk>
96      <disk state="3">
97         <color red="1.0" green="0.4" blue="0.3" />
98      </disk>
99   </element>
100   <element name="lamp_rg1" defstate="0">
101      <disk state="0">
102         <color red="0.2" green="0.05" blue="0.0" />
103      </disk>
104      <disk state="1">
105         <color red="1.0" green="0.4" blue="0.3" />
106      </disk>
107      <disk state="2">
108         <color red="0.4" green="1.0" blue="0.3" />
109      </disk>
110      <disk state="3">
111         <color red="1.0" green="0.4" blue="0.3" />
112      </disk>
113   </element>
114
115
116<!-- build screen -->
117
118   <view name="Internal Layout">
119      <bounds left="0" right="100" top="0" bottom="90" />
120      <bezel element="static_black">
121         <bounds left="0" right="100" top="0" bottom="90" />
122      </bezel>
123
124   <!-- control panel -->
125
126      <bezel element="static_pink">
127         <bounds x="0" y="60" width="100" height="30" />
128      </bezel>
129
130      <bezel name="lamp0" element="lamp_b1" inputtag="IN1" inputmask="0x20" >
131         <bounds x="30" y="70" width="10" height="10"/>
132      </bezel>
133      <bezel name="lamp1" element="lamp_b2" inputtag="IN1" inputmask="0x40" >
134         <bounds x="43" y="70" width="10" height="10"/>
135      </bezel>
136
137      <bezel element="static_black">
138         <bounds x="60" y="70" width="12" height="17" />
139      </bezel>
140      <bezel name="digit0" element="digit">
141         <bounds x="61" y="71" width="10" height="15" />
142      </bezel>
143
144
145   <!-- left ufo info -->
146
147      <bezel element="text_x">
148         <bounds x="5" y="5" width="10" height="4" />
149      </bezel>
150      <bezel element="text_y">
151         <bounds x="5" y="10" width="10" height="4" />
152      </bezel>
153      <bezel element="text_z">
154         <bounds x="5" y="15" width="10" height="4" />
155      </bezel>
156      <bezel element="text_c">
157         <bounds x="5" y="20" width="10" height="4" />
158      </bezel>
159
160      <bezel name="counter0" element="counter">
161         <bounds x="12" y="5" width="20" height="4" />
162      </bezel>
163      <bezel name="counter1" element="counter">
164         <bounds x="12" y="10" width="20" height="4" />
165      </bezel>
166      <bezel name="counter2" element="counter">
167         <bounds x="12" y="15" width="20" height="4" />
168      </bezel>
169      <bezel name="counter3" element="counter">
170         <bounds x="12" y="20" width="20" height="4" />
171      </bezel>
172
173      <bezel element="text_ufored">
174         <bounds x="25" y="25" width="50" height="14" />
175      </bezel>
176
177      <bezel name="lamp10" element="lamp_rg0">
178         <bounds x="31" y="44" width="3" height="3" />
179      </bezel>
180      <bezel name="lamp10" element="lamp_rg1">
181         <bounds x="38" y="44" width="3" height="3" />
182      </bezel>
183      <bezel name="lamp10" element="lamp_rg0">
184         <bounds x="45" y="44" width="3" height="3" />
185      </bezel>
186      <bezel name="lamp10" element="lamp_rg1">
187         <bounds x="52" y="44" width="3" height="3" />
188      </bezel>
189      <bezel name="lamp10" element="lamp_rg0">
190         <bounds x="59" y="44" width="3" height="3" />
191      </bezel>
192      <bezel name="lamp10" element="lamp_rg1">
193         <bounds x="66" y="44" width="3" height="3" />
194      </bezel>
195
196
197   </view>
198</mamelayout>
trunk/src/mame/machine/315-5881_crypt.c
r0r241753
1/*
2  re: Tecmo World Cup '98 (ST-V) (from ANY)
3
4  I got one of the card in subject open it up to check the rom version
5  and made a discovery...
6  The protection chip has the part number on it "315-5881", it's the same
7  used on naomi M2 carts as you can see here
8  http://imagizer.imageshack.us/a/img540/7634/BsqvD8.jpg
9
10  The same chip 315-5881 but with a Lattice IspLSI2032 (Sega part
11  315-6050) was used on some Model3 games...
12
13*/
14
15#include "emu.h"
16#include "machine/315-5881_crypt.h"
17
18extern const device_type SEGA315_5881_CRYPT = &device_creator<sega_315_5881_crypt_device>;
19
20
21sega_315_5881_crypt_device::sega_315_5881_crypt_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
22   : device_t(mconfig, SEGA315_5881_CRYPT, "Sega 'SEGA315_5881' Encryption device", tag, owner, clock, "SEGA315_5881", __FILE__)
23{
24}
25
26
27
28void sega_315_5881_crypt_device::device_start()
29{
30   buffer = auto_alloc_array(machine(), UINT8, BUFFER_SIZE);
31   line_buffer = auto_alloc_array(machine(), UINT8, LINE_SIZE);
32   line_buffer_prev = auto_alloc_array(machine(), UINT8, LINE_SIZE);
33
34   m_read.bind_relative_to(*owner());
35
36   save_pointer(NAME(buffer), BUFFER_SIZE);
37   save_pointer(NAME(line_buffer), LINE_SIZE);
38   save_pointer(NAME(line_buffer_prev), LINE_SIZE);
39   save_item(NAME(prot_cur_address));
40   save_item(NAME(subkey));
41   save_item(NAME(enc_ready));
42   save_item(NAME(dec_hist));
43   save_item(NAME(dec_header));
44   save_item(NAME(buffer_pos));
45   save_item(NAME(line_buffer_pos));
46   save_item(NAME(line_buffer_size));
47
48}
49
50void sega_315_5881_crypt_device::device_reset()
51{
52   memset(buffer, 0, BUFFER_SIZE);
53   memset(line_buffer, 0, LINE_SIZE);
54   memset(line_buffer_prev, 0, LINE_SIZE);
55
56   prot_cur_address = 0;
57   subkey = 0;
58   dec_hist = 0;
59   dec_header = 0;
60   enc_ready = false;
61
62   buffer_pos = 0;
63   line_buffer_pos = 0;
64   line_buffer_size = 0;
65   buffer_bit = 0;
66}
67
68UINT16 sega_315_5881_crypt_device::do_decrypt(UINT8 *&base)
69{
70   if(!enc_ready)
71      enc_start();
72   if(dec_header & FLAG_COMPRESSED) {
73      if(line_buffer_pos == line_buffer_size)
74         line_fill();
75      base = line_buffer + line_buffer_pos;
76      line_buffer_pos += 2;
77   } else {
78      if(buffer_pos == BUFFER_SIZE)
79         enc_fill();
80      base = buffer + buffer_pos;
81      buffer_pos += 2;
82   }
83
84   return (base[0] << 8) | base[1];
85}
86
87void sega_315_5881_crypt_device::set_addr_low(UINT16 data)
88{
89   prot_cur_address = (prot_cur_address & 0xffff0000) | data;
90   enc_ready = false;
91}
92
93void sega_315_5881_crypt_device::set_addr_high(UINT16 data)
94{
95   prot_cur_address = (prot_cur_address & 0x0000ffff) | (data << 16);
96   enc_ready = false;
97}
98
99void sega_315_5881_crypt_device::set_subkey(UINT16 data)
100{
101   subkey = data;
102   enc_ready = false;
103}
104
105void sega_315_5881_crypt_device::set_key(UINT32 data)
106{
107   key = data;
108   enc_ready = false;
109}
110
111/***************************************************************************
112    DECRYPTION EMULATION
113
114By convention, we label the three known cart protection methods this way (using Deunan Knute's wording):
115M1: DMA read of protected ROM area
116M2: special read of ROM area which supplies decryption key first
117M3: normal read followed by write to cart's decryption buffer (up to 64kB), followed by M2 but from buffer area
118
119Notes below refer to M2 & M3.
120
121The encryption is done by a stream cipher operating in counter mode, which use a 16-bits internal block cipher.
122
123There are 2 "control bits" at the start of the decrypted stream which control the mode of operation: bit #1 set to 1 means
124that the decrypted stream needs to be decompressed after being decrypted. More on this later.
125
126The next 16-bits are part of the header (they don't belong to the plaintext), but his meaning is unclear. It has been
127conjectured that it could stablish when to "reset" the process and start processing a new stream (based on some tests
128on WWFROYAL, in which the decryption's output doesn't seem to be valid for more than some dozens of words), but some
129more testing would be needed for clarifying that.
130
131After those 18 heading bits, we find the proper plaintext. It must be noted that, due to the initial 2 special bits,
132the 16-bits words of the plaintext are shifted 2 bits respect to the word-boundaries of the output stream of the
133internal block-cipher. So, at a given step, the internal block cipher will output 16-bits, 14 of which will go to a
134given plaintext word, and the remaining 2 to the next plaintext word.
135
136The underlying block cipher consists of two 4-round Feistel Networks (FN): the first one takes the counter (16 bits),
137the game-key (>=26 bits) and the sequence-key (16 bits) and output a middle result (16 bits) which will act as another key
138for the second one. The second FN will take the encrypted word (16 bits), the game-key, the sequence-key and the result
139from the first FN and will output the decrypted word (16 bits).
140
141Each round of the Feistel Networks use four substitution sboxes, each having 6 inputs and 2 outputs. The input can be the
142XOR of at most two "sources bits", being source bits the bits from the previous round and the bits from the different keys.
143
144The underlying block cipher has the same structure than the one used by the CPS-2 (Capcom Play System 2) and,
145indeed, some of the used sboxes are exactly the same and appear in the same FN/round in both systems (this is not evident,
146as you need to apply a bitswapping and some XORs to the input & output of the sboxes to get the same values due). However,
147the key scheduling used by this implementation is much weaker than the CPS-2's one. Many s-boxes inputs aren't XORed with any
148key bit.
149
150Due to the small key-length, no sophisticated attacks are needed to recover the keys; a brute-force attack knowing just
151some (encrypted word-decrypted word) pairs suffice. However, due to the weak key scheduling, it should be noted that some
152related keys can produce the same output bytes for some (short) input sequences.
153
154The only difference in the decryption process between M2 and M3 is the initialization of the counter. In M3, the counter is
155always set to 0 at the beginning of the decryption while, in M2, the bits #1-#16 of the ciphertext's address are used
156to initialize the counter.
157
158Note that this implementation considers that the counter initialization for ram decryption is 0 simply because the ram is
159mapped to multiples of 128K.
160
161Due to the nature of the cipher, there are some degrees of freedom when choosing the s-boxes and keys values; by example,
162you could apply a fixed bitswapping and XOR to the keys and the decryption would remain the same as long as you change
163accordingly the s-boxes' definitions. So the order of the bits in the keys is arbitrary, and the s-boxes values have been
164chosen so as to make the key for CAPSNK equal to 0.
165
166It can be observed that a couple of sboxes have incomplete tables (a 255 value indicate an unknown value). The recovered keys
167as of december/2010 show small randomness and big correlations, making possible that some unseen bits could make the
168decryption need those incomplete parts.
169
170****************************************************************************************/
171
172const sega_315_5881_crypt_device::sbox sega_315_5881_crypt_device::fn1_sboxes[4][4] = {
173   {   // 1st round
174      {
175         {
176            0,3,2,2,1,3,1,2,3,2,1,2,1,2,3,1,3,2,2,0,2,1,3,0,0,3,2,3,2,1,2,0,
177            2,3,1,1,2,2,1,1,1,0,2,3,3,0,2,1,1,1,1,1,3,0,3,2,1,0,1,2,0,3,1,3,
178         },
179         {3,4,5,7,-1,-1},
180         {0,4}
181      },
182
183      {
184         {
185            2,2,2,0,3,3,0,1,2,2,3,2,3,0,2,2,1,1,0,3,3,2,0,2,0,1,0,1,2,3,1,1,
186            0,1,3,3,1,3,3,1,2,3,2,0,0,0,2,2,0,3,1,3,0,3,2,2,0,3,0,3,1,1,0,2,
187         },
188         {0,1,2,5,6,7},
189         {1,6}
190      },
191
192      {
193         {
194            0,1,3,0,3,1,1,1,1,2,3,1,3,0,2,3,3,2,0,2,1,1,2,1,1,3,1,0,0,2,0,1,
195            1,3,1,0,0,3,2,3,2,0,3,3,0,0,0,0,1,2,3,3,2,0,3,2,1,0,0,0,2,2,3,3,
196         },
197         {0,2,5,6,7,-1},
198         {2,3}
199      },
200
201      {
202         {
203            3,2,1,2,1,2,3,2,0,3,2,2,3,1,3,3,0,2,3,0,3,3,2,1,1,1,2,0,2,2,0,1,
204            1,3,3,0,0,3,0,3,0,2,1,3,2,1,0,0,0,1,1,2,0,1,0,0,0,1,3,3,2,0,3,3,
205         },
206         {1,2,3,4,6,7},
207         {5,7}
208      },
209   },
210   {   // 2nd round
211      {
212         {
213            3,3,1,2,0,0,2,2,2,1,2,1,3,1,1,3,3,0,0,3,0,3,3,2,1,1,3,2,3,2,1,3,
214            2,3,0,1,3,2,0,1,2,1,3,1,2,2,3,3,3,1,2,2,0,3,1,2,2,1,3,0,3,0,1,3,
215         },
216         {0,1,3,4,5,7},
217         {0,4}
218      },
219
220      {
221         {
222            2,0,1,0,0,3,2,0,3,3,1,2,1,3,0,2,0,2,0,0,0,2,3,1,3,1,1,2,3,0,3,0,
223            3,0,2,0,0,2,2,1,0,2,3,3,1,3,1,0,1,3,3,0,0,1,3,1,0,2,0,3,2,1,0,1,
224         },
225         {0,1,3,4,6,-1},
226         {1,5}
227      },
228
229      {
230         {
231            2,2,2,3,1,1,0,1,0,1,2,2,3,3,0,2,0,3,2,3,3,0,2,1,0,3,1,0,0,2,3,2,
232            3,2,0,3,2,0,1,0,3,3,1,1,2,2,2,0,2,1,3,1,1,1,1,2,2,2,3,0,1,3,0,0,
233         },
234         {1,2,5,6,7,-1},
235         {2,7}
236      },
237
238      {
239         {
240            0,1,3,3,3,1,3,3,1,0,2,0,2,0,0,3,1,2,1,3,1,2,3,2,2,0,1,3,0,3,3,3,
241            0,0,0,2,1,1,2,3,2,2,3,1,1,2,0,2,0,2,1,3,1,1,3,3,1,1,3,0,2,3,0,0,
242         },
243         {2,3,4,5,6,7},
244         {3,6}
245      },
246   },
247   {   // 3rd round
248      {
249         {
250            0,0,1,0,1,0,0,3,2,0,0,3,0,1,0,2,0,3,0,0,2,0,3,2,2,1,3,2,2,1,1,2,
251            0,0,0,3,0,1,1,0,0,2,1,0,3,1,2,2,2,0,3,1,3,0,1,2,2,1,1,1,0,2,3,1,
252         },
253         {1,2,3,4,5,7},
254         {0,5}
255      },
256
257      {
258         {
259            1,2,1,0,3,1,1,2,0,0,2,3,2,3,1,3,2,0,3,2,2,3,1,1,1,1,0,3,2,0,0,1,
260            1,0,0,1,3,1,2,3,0,0,2,3,3,0,1,0,0,2,3,0,1,2,0,1,3,3,3,1,2,0,2,1,
261         },
262         {0,2,4,5,6,7},
263         {1,6}
264      },
265
266      {
267         {
268            0,3,0,2,1,2,0,0,1,1,0,0,3,1,1,0,0,3,0,0,2,3,3,2,3,1,2,0,0,2,3,0,
269            // unused?
270            255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
271         },
272         {0,2,4,6,7,-1},
273         {2,3}
274      },
275
276      {
277         {
278            0,0,1,0,0,1,0,2,3,3,0,3,3,2,3,0,2,2,2,0,3,2,0,3,1,0,0,3,3,0,0,0,
279            2,2,1,0,2,0,3,2,0,0,3,1,3,3,0,0,2,1,1,2,1,0,1,1,0,3,1,2,0,2,0,3,
280         },
281         {0,1,2,3,6,-1},
282         {4,7}
283      },
284   },
285   {   // 4th round
286      {
287         {
288            0,3,3,3,3,3,2,0,0,1,2,0,2,2,2,2,1,1,0,2,2,1,3,2,3,2,0,1,2,3,2,1,
289            3,2,2,3,1,0,1,0,0,2,0,1,2,1,2,3,1,2,1,1,2,2,1,0,1,3,2,3,2,0,3,1,
290         },
291         {0,1,3,4,5,6},
292         {0,5}
293      },
294
295      {
296         {
297            0,3,0,0,2,0,3,1,1,1,2,2,2,1,3,1,2,2,1,3,2,2,3,3,0,3,1,0,3,2,0,1,
298            3,0,2,0,1,0,2,1,3,3,1,2,2,0,2,3,3,2,3,0,1,1,3,3,0,2,1,3,0,2,2,3,
299         },
300         {0,1,2,3,5,7},
301         {1,7}
302      },
303
304      {
305         {
306            0,1,2,3,3,3,3,1,2,0,2,3,2,1,0,1,2,2,1,2,0,3,2,0,1,1,0,1,3,1,3,1,
307            3,1,0,0,1,0,0,0,0,1,2,2,1,1,3,3,1,2,3,3,3,2,3,0,2,2,1,3,3,0,2,0,
308         },
309         {2,3,4,5,6,7},
310         {2,3}
311      },
312
313      {
314         {
315            0,2,1,1,3,2,0,3,1,0,1,0,3,2,1,1,2,2,0,3,1,0,1,2,2,2,3,3,0,0,0,0,
316            1,2,1,0,2,1,2,2,2,3,2,3,0,1,3,0,0,1,3,0,0,1,1,0,1,0,0,0,0,2,0,1,
317         },
318         {0,1,2,4,6,7},
319         {4,6}
320      },
321   },
322};
323
324
325const sega_315_5881_crypt_device::sbox sega_315_5881_crypt_device::fn2_sboxes[4][4] = {
326   {   // 1st round
327      {
328         {
329            3,3,0,1,0,1,0,0,0,3,0,0,1,3,1,2,0,3,3,3,2,1,0,1,1,1,2,2,2,3,2,2,
330            2,1,3,3,1,3,1,1,0,0,1,2,0,2,2,1,1,2,3,1,2,1,3,1,2,2,0,1,3,0,2,2,
331         },
332         {1,3,4,5,6,7},
333         {0,7}
334      },
335
336      {
337         {
338            0,2,3,2,1,1,0,0,2,1,0,3,3,0,0,0,3,2,0,2,1,1,2,1,0,0,3,1,2,2,3,1,
339            3,1,3,0,0,0,1,3,1,0,0,3,2,2,3,1,1,3,0,0,2,1,3,3,1,3,1,2,3,1,2,1,
340         },
341         {0,3,5,6,-1,-1},
342         {1,2}
343      },
344
345      {
346         {
347            0,2,2,1,0,1,2,1,2,0,1,2,3,3,0,1,3,1,1,2,1,2,1,3,3,2,3,3,2,1,0,1,
348            0,1,0,2,0,1,1,3,2,0,3,2,1,1,1,3,2,3,0,2,3,0,2,2,1,3,0,1,1,2,2,2,
349         },
350         {0,2,3,4,7,-1},
351         {3,4}
352      },
353
354      {
355         {
356            2,3,1,3,2,0,1,2,0,0,3,3,3,3,3,1,2,0,2,1,2,3,0,2,0,1,0,3,0,2,1,0,
357            2,3,0,1,3,0,3,2,3,1,2,0,3,1,1,2,0,3,0,0,2,0,2,1,2,2,3,2,1,2,3,1,
358         },
359         {1,2,5,6,-1,-1},
360         {5,6}
361      },
362   },
363   {   // 2nd round
364      {
365         {
366            2,3,1,3,1,0,3,3,3,2,3,3,2,0,0,3,2,3,0,3,1,1,2,3,1,1,2,2,0,1,0,0,
367            2,1,0,1,2,0,1,2,0,3,1,1,2,3,1,2,0,2,0,1,3,0,1,0,2,2,3,0,3,2,3,0,
368         },
369         {0,1,4,5,6,7},
370         {0,7}
371      },
372
373      {
374         {
375            0,2,2,0,2,2,0,3,2,3,2,1,3,2,3,3,1,1,0,0,3,0,2,1,1,3,3,2,3,2,0,1,
376            1,2,3,0,1,0,3,0,3,1,0,2,1,2,0,3,2,3,1,2,2,0,3,2,3,0,0,1,2,3,3,3,
377         },
378         {0,2,3,6,7,-1},
379         {1,5}
380      },
381
382      {
383         {
384            1,2,3,2,0,3,2,3,0,1,1,0,0,2,2,3,2,0,0,3,0,2,3,3,2,2,1,0,2,1,0,3,
385            1,0,2,0,1,1,0,1,0,0,1,0,3,0,3,3,2,2,0,2,1,1,1,0,3,0,1,3,2,3,2,1,
386         },
387         {2,3,4,6,7,-1},
388         {2,3}
389      },
390
391      {
392         {
393            2,3,1,3,1,1,2,3,3,1,1,0,1,0,2,3,2,1,0,0,2,2,0,1,0,2,2,2,0,2,1,0,
394            3,1,2,3,1,3,0,2,1,0,1,0,0,1,2,2,3,2,3,1,3,2,1,1,2,0,2,1,3,3,1,0,
395         },
396         {1,2,3,4,5,6},
397         {4,6}
398      },
399   },
400   {   // 3rd round
401      {
402         {
403            0,3,0,1,0,2,3,3,1,0,1,3,2,2,1,1,3,3,3,0,2,0,2,0,0,0,2,3,1,1,0,0,
404            3,3,0,3,3,0,0,2,1,1,1,0,2,2,2,0,3,0,3,1,2,2,0,3,0,0,3,2,0,3,2,1,
405         },
406         {1,4,5,6,7,-1},
407         {0,5}
408      },
409
410      {
411         {
412            0,3,0,1,3,0,3,1,3,2,2,2,3,0,3,2,2,1,2,2,0,3,2,2,0,0,2,1,1,3,2,3,
413            2,3,3,1,2,0,1,2,2,1,0,0,0,0,2,3,1,2,0,3,1,3,1,2,3,2,1,0,3,0,0,2,
414         },
415         {0,2,3,4,6,7},
416         {1,7}
417      },
418
419      {
420         {
421            2,2,3,2,0,3,2,3,1,1,2,0,2,3,1,3,0,0,0,3,2,0,1,0,1,3,2,3,3,3,1,0,
422            // unused?
423            255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
424         },
425         {1,2,4,7,-1,-1},
426         {2,4}
427      },
428
429      {
430         {
431            0,2,3,1,3,1,1,0,0,1,3,0,2,1,3,3,2,0,2,1,1,2,3,3,0,0,0,2,0,2,3,0,
432            3,3,3,3,2,3,3,2,3,0,1,0,2,3,3,2,0,1,3,1,0,1,2,3,3,0,2,0,3,0,3,3,
433         },
434         {0,1,2,3,5,7},
435         {3,6}
436      },
437   },
438   {   // 4th round
439      {
440         {
441            0,1,1,0,0,1,0,2,3,3,0,1,2,3,0,2,1,0,3,3,2,0,3,0,0,2,1,0,1,0,1,3,
442            0,3,3,1,2,0,3,0,1,3,2,0,3,3,1,3,0,2,3,3,2,1,1,2,2,1,2,1,2,0,1,1,
443         },
444         {0,1,2,4,7,-1},
445         {0,5}
446      },
447
448      {
449         {
450            2,0,0,2,3,0,2,3,3,1,1,1,2,1,1,0,0,2,1,0,0,3,1,0,0,3,3,0,1,0,1,2,
451            0,2,0,2,0,1,2,3,2,1,1,0,3,3,3,3,3,3,1,0,3,0,0,2,0,3,2,0,2,2,0,1,
452         },
453         {0,1,3,5,6,-1},
454         {1,3}
455      },
456
457      {
458         {
459            0,1,1,2,1,3,1,1,0,0,3,1,1,1,2,0,3,2,0,1,1,2,3,3,3,0,3,0,0,2,0,3,
460            3,2,0,0,3,2,3,1,2,3,0,3,2,0,1,2,2,2,0,2,0,1,2,2,3,1,2,2,1,1,1,1,
461         },
462         {0,2,3,4,5,7},
463         {2,7}
464      },
465
466      {
467         {
468            0,1,2,0,3,3,0,3,2,1,3,3,0,3,1,1,3,2,3,2,3,0,0,0,3,0,2,2,3,2,2,3,
469            2,2,3,1,2,3,1,2,0,3,0,2,3,1,0,0,3,2,1,2,1,2,1,3,1,0,2,3,3,1,3,2,
470         },
471         {2,3,4,5,6,7},
472         {4,6}
473      },
474   },
475};
476
477const int sega_315_5881_crypt_device::fn1_game_key_scheduling[38][2] = {
478   {1,29},  {1,71},  {2,4},   {2,54},  {3,8},   {4,56},  {4,73},  {5,11},
479   {6,51},  {7,92},  {8,89},  {9,9},   {9,10},  {9,39},  {9,41},  {9,58},
480   {9,59},  {9,86},  {10,90}, {11,6},  {12,64}, {13,49}, {14,44}, {15,40},
481   {16,69}, {17,15}, {18,23}, {18,43}, {19,82}, {20,81}, {21,32}, {21,61},
482   {22,5},  {23,66}, {24,13}, {24,45}, {25,12}, {25,35}
483};
484
485const int sega_315_5881_crypt_device::fn2_game_key_scheduling[34][2] = {
486   {0,0},   {1,3},   {2,11},  {3,20},  {4,22},  {5,23},  {6,29},  {7,38},
487   {8,39},  {9,47},  {9,55},  {9,86},  {9,87},  {9,90},  {10,50}, {10,53},
488   {11,57}, {12,59}, {13,61}, {13,64}, {14,63}, {15,67}, {16,72}, {17,83},
489   {18,88}, {19,94}, {20,35}, {21,17}, {21,92}, {22,6},  {22,11}, {23,85},
490   {24,16}, {25,25}
491};
492
493const int sega_315_5881_crypt_device::fn1_sequence_key_scheduling[20][2] = {
494   {0,52},  {1,34},  {2,17},  {3,36}, {4,84},  {4,88},  {5,57},  {6,48},
495   {6,68},  {7,76},  {8,83},  {9,30}, {10,22}, {10,41}, {11,38}, {12,55},
496   {13,74}, {14,19}, {14,80}, {15,26}
497};
498
499const int sega_315_5881_crypt_device::fn2_sequence_key_scheduling[16] = {77,34,8,42,36,27,69,66,13,9,79,31,49,7,24,64};
500
501const int sega_315_5881_crypt_device::fn2_middle_result_scheduling[16] = {1,10,44,68,74,78,81,95,2,4,30,40,41,51,53,58};
502
503int sega_315_5881_crypt_device::feistel_function(int input, const struct sbox *sboxes, UINT32 subkeys)
504{
505   int k,m;
506   int aux;
507   int result=0;
508
509   for (m=0; m<4; ++m) { // 4 sboxes
510      for (k=0, aux=0; k<6; ++k)
511         if (sboxes[m].inputs[k]!=-1)
512            aux |= BIT(input, sboxes[m].inputs[k]) << k;
513
514      aux = sboxes[m].table[(aux^subkeys)&0x3f];
515
516      for (k=0; k<2; ++k)
517         result |= BIT(aux,k) << sboxes[m].outputs[k];
518
519      subkeys >>=6;
520   }
521
522   return result;
523}
524
525/**************************
526This implementation is an "educational" version. It must be noted that it can be speed-optimized in a number of ways.
527The most evident one is to factor out the parts of the key-scheduling that must only be done once (like the game-key &
528sequence-key parts) as noted in the comments inlined in the function. More sophisticated speed-ups can be gained by
529noticing that the weak key-scheduling would allow to create some pregenerated look-up tables for doing most of the work
530of the function. Even so, it would still be pretty slow, so caching techniques could be a wiser option here.
531**************************/
532
533UINT16 sega_315_5881_crypt_device::block_decrypt(UINT32 game_key, UINT16 sequence_key, UINT16 counter, UINT16 data)
534{
535   int j;
536   int aux,aux2;
537   int A,B;
538   int middle_result;
539   UINT32 fn1_subkeys[4];
540   UINT32 fn2_subkeys[4];
541
542   /* Game-key scheduling; this could be done just once per game at initialization time */
543   memset(fn1_subkeys,0,sizeof(UINT32)*4);
544   memset(fn2_subkeys,0,sizeof(UINT32)*4);
545
546   for (j=0; j<38; ++j) {
547      if (BIT(game_key, fn1_game_key_scheduling[j][0])!=0) {
548         aux = fn1_game_key_scheduling[j][1]%24;
549         aux2 = fn1_game_key_scheduling[j][1]/24;
550         fn1_subkeys[aux2] ^= (1<<aux);
551      }
552   }
553
554   for (j=0; j<34; ++j) {
555      if (BIT(game_key, fn2_game_key_scheduling[j][0])!=0) {
556         aux = fn2_game_key_scheduling[j][1]%24;
557         aux2 = fn2_game_key_scheduling[j][1]/24;
558         fn2_subkeys[aux2] ^= (1<<aux);
559      }
560   }
561   /********************************************************/
562
563   /* Sequence-key scheduling; this could be done just once per decryption run */
564   for (j=0; j<20; ++j) {
565      if (BIT(sequence_key,fn1_sequence_key_scheduling[j][0])!=0) {
566         aux = fn1_sequence_key_scheduling[j][1]%24;
567         aux2 = fn1_sequence_key_scheduling[j][1]/24;
568         fn1_subkeys[aux2] ^= (1<<aux);
569      }
570   }
571
572   for (j=0; j<16; ++j) {
573      if (BIT(sequence_key,j)!=0) {
574         aux = fn2_sequence_key_scheduling[j]%24;
575         aux2 = fn2_sequence_key_scheduling[j]/24;
576         fn2_subkeys[aux2] ^= (1<<aux);
577      }
578   }
579
580   // subkeys bits 10 & 41
581   fn2_subkeys[0] ^= (BIT(sequence_key,2)<<10);
582   fn2_subkeys[1] ^= (BIT(sequence_key,4)<<17);
583   /**************************************************************/
584
585   // First Feistel Network
586
587   aux = BITSWAP16(counter,5,12,14,13,9,3,6,4,    8,1,15,11,0,7,10,2);
588
589   // 1st round
590   B = aux >> 8;
591   A = (aux & 0xff) ^ feistel_function(B,fn1_sboxes[0],fn1_subkeys[0]);
592
593   // 2nd round
594   B = B ^ feistel_function(A,fn1_sboxes[1],fn1_subkeys[1]);
595
596   // 3rd round
597   A = A ^ feistel_function(B,fn1_sboxes[2],fn1_subkeys[2]);
598
599   // 4th round
600   B = B ^ feistel_function(A,fn1_sboxes[3],fn1_subkeys[3]);
601
602   middle_result = (B<<8)|A;
603
604
605   /* Middle-result-key sheduling */
606   for (j=0; j<16; ++j) {
607      if (BIT(middle_result,j)!=0) {
608         aux = fn2_middle_result_scheduling[j]%24;
609         aux2 = fn2_middle_result_scheduling[j]/24;
610         fn2_subkeys[aux2] ^= (1<<aux);
611      }
612   }
613   /*********************/
614
615   // Second Feistel Network
616
617   aux = BITSWAP16(data,14,3,8,12,13,7,15,4,    6,2,9,5,11,0,1,10);
618
619   // 1st round
620   B = aux >> 8;
621   A = (aux & 0xff) ^ feistel_function(B,fn2_sboxes[0],fn2_subkeys[0]);
622
623   // 2nd round
624   B = B ^ feistel_function(A,fn2_sboxes[1],fn2_subkeys[1]);
625
626   // 3rd round
627   A = A ^ feistel_function(B,fn2_sboxes[2],fn2_subkeys[2]);
628
629   // 4th round
630   B = B ^ feistel_function(A,fn2_sboxes[3],fn2_subkeys[3]);
631
632   aux = (B<<8)|A;
633
634   aux = BITSWAP16(aux,15,7,6,14,13,12,5,4,    3,2,11,10,9,1,0,8);
635
636   return aux;
637}
638
639UINT16 sega_315_5881_crypt_device::get_decrypted_16()
640{
641   UINT16 enc;
642
643   enc = m_read(prot_cur_address);
644
645   UINT16 dec = block_decrypt(key, subkey, prot_cur_address, enc);
646   UINT16 res = (dec & 3) | (dec_hist & 0xfffc);
647   dec_hist = dec;
648
649   prot_cur_address ++;
650   return res;
651}
652
653void sega_315_5881_crypt_device::enc_start()
654{
655   buffer_pos = BUFFER_SIZE;
656   dec_header = get_decrypted_16() << 16;
657   dec_header |= get_decrypted_16();
658
659   if(dec_header & FLAG_COMPRESSED) {
660      line_buffer_size = dec_header & FLAG_LINE_SIZE_512 ? 512 : 256;
661      line_buffer_pos = line_buffer_size;
662      buffer_bit = 7;
663   }
664   enc_ready = true;
665}
666
667void sega_315_5881_crypt_device::enc_fill()
668{
669   assert(buffer_pos == BUFFER_SIZE);
670   for(int i = 0; i != BUFFER_SIZE; i+=2) {
671      UINT16 val = get_decrypted_16();
672      buffer[i] = val;
673      buffer[i+1] = val >> 8;
674   }
675   buffer_pos = 0;
676}
677
678/* node format
6790xxxxxxx - next node index
6801a0bbccc - end node
681           a - 0 = repeat
682               1 = fetch
683           b - if a = 1
684               00 - fetch  0
685               01 - fetch  1
686               11 - fetch -1
687               if a = 0
688               000
689           c - repeat/fetch counter
690               count = ccc + 1
69111111111 - empty node
692*/
693const UINT8 sega_315_5881_crypt_device::trees[9][2][32] = {
694   {
695      {0x01,0x10,0x0f,0x05,0xc4,0x13,0x87,0x0a,0xcc,0x81,0xce,0x0c,0x86,0x0e,0x84,0xc2,
696         0x11,0xc1,0xc3,0xcf,0x15,0xc8,0xcd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
697      {0xc7,0x02,0x03,0x04,0x80,0x06,0x07,0x08,0x09,0xc9,0x0b,0x0d,0x82,0x83,0x85,0xc0,
698         0x12,0xc6,0xc5,0x14,0x16,0xca,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
699   },
700   {
701      {0x02,0x80,0x05,0x04,0x81,0x10,0x15,0x82,0x09,0x83,0x0b,0x0c,0x0d,0xdc,0x0f,0xde,
702         0x1c,0xcf,0xc5,0xdd,0x86,0x16,0x87,0x18,0x19,0x1a,0xda,0xca,0xc9,0x1e,0xce,0xff,},
703      {0x01,0x17,0x03,0x0a,0x08,0x06,0x07,0xc2,0xd9,0xc4,0xd8,0xc8,0x0e,0x84,0xcb,0x85,
704         0x11,0x12,0x13,0x14,0xcd,0x1b,0xdb,0xc7,0xc0,0xc1,0x1d,0xdf,0xc3,0xc6,0xcc,0xff,},
705   },
706   {
707      {0xc6,0x80,0x03,0x0b,0x05,0x07,0x82,0x08,0x15,0xdc,0xdd,0x0c,0xd9,0xc2,0x14,0x10,
708         0x85,0x86,0x18,0x16,0xc5,0xc4,0xc8,0xc9,0xc0,0xcc,0xff,0xff,0xff,0xff,0xff,0xff,},
709      {0x01,0x02,0x12,0x04,0x81,0x06,0x83,0xc3,0x09,0x0a,0x84,0x11,0x0d,0x0e,0x0f,0x19,
710         0xca,0xc1,0x13,0xd8,0xda,0xdb,0x17,0xde,0xcd,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,},
711   },
712   {
713      {0x01,0x80,0x0d,0x04,0x05,0x15,0x83,0x08,0xd9,0x10,0x0b,0x0c,0x84,0x0e,0xc0,0x14,
714         0x12,0xcb,0x13,0xca,0xc8,0xc2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
715      {0xc5,0x02,0x03,0x07,0x81,0x06,0x82,0xcc,0x09,0x0a,0xc9,0x11,0xc4,0x0f,0x85,0xd8,
716         0xda,0xdb,0xc3,0xdc,0xdd,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
717   },
718   {
719      {0x01,0x80,0x06,0x0c,0x05,0x81,0xd8,0x84,0x09,0xdc,0x0b,0x0f,0x0d,0x0e,0x10,0xdb,
720         0x11,0xca,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
721      {0xc4,0x02,0x03,0x04,0xcb,0x0a,0x07,0x08,0xd9,0x82,0xc8,0x83,0xc0,0xc1,0xda,0xc2,
722         0xc9,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
723   },
724   {
725      {0x01,0x02,0x06,0x0a,0x83,0x0b,0x07,0x08,0x09,0x82,0xd8,0x0c,0xd9,0xda,0xff,0xff,
726         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
727      {0xc3,0x80,0x03,0x04,0x05,0x81,0xca,0xc8,0xdb,0xc9,0xc0,0xc1,0x0d,0xc2,0xff,0xff,
728         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
729   },
730   {
731      {0x01,0x02,0x03,0x04,0x81,0x07,0x08,0xd8,0xda,0xd9,0xff,0xff,0xff,0xff,0xff,0xff,
732         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
733      {0xc2,0x80,0x05,0xc9,0xc8,0x06,0x82,0xc0,0x09,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,
734         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
735   },
736   {
737      {0x01,0x80,0x04,0xc8,0xc0,0xd9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
738         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
739      {0xc1,0x02,0x03,0x81,0x05,0xd8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
740         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
741   },
742   {
743      {0x01,0xd8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
744         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
745      {0xc0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
746         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
747   },
748};
749
750int sega_315_5881_crypt_device::get_compressed_bit()
751{
752   if(buffer_pos == BUFFER_SIZE)
753      enc_fill();
754   int res = (buffer[buffer_pos^1] >> buffer_bit) & 1;
755   buffer_bit--;
756   if(buffer_bit == -1) {
757      buffer_bit = 7;
758      buffer_pos++;
759   }
760   return res;
761}
762
763void sega_315_5881_crypt_device::line_fill()
764{
765   assert(line_buffer_pos == line_buffer_size);
766   UINT8 *lp = line_buffer;
767   UINT8 *lc = line_buffer_prev;
768   line_buffer = lc;
769   line_buffer_prev = lp;
770   line_buffer_pos = 0;
771
772   UINT32 line_buffer_mask = line_buffer_size-1;
773
774   for(int i=0; i != line_buffer_size;) {
775      // vlc 0: start of line
776      // vlc 1: interior of line
777      // vlc 2-9: 7-1 bytes from end of line
778
779      int slot = i ? i < line_buffer_size - 7 ? 1 : (i & 7) + 1 : 0;
780
781      UINT32 tmp = 0;
782      while (!(tmp&0x80))
783         if(get_compressed_bit())
784            tmp = trees[slot][1][tmp];
785         else
786            tmp = trees[slot][0][tmp];
787      if(tmp != 0xff) {
788         int count = (tmp & 7) + 1;
789
790         if(tmp&0x40) {
791            // Copy from previous line
792
793            static int offsets[4] = {0, 1, 0, -1};
794            int offset = offsets[(tmp & 0x18) >> 3];
795            for(int j=0; j != count; j++) {
796               lc[i^1] = lp[((i+offset) & line_buffer_mask)^1];
797               i++;
798            }
799
800         } else {
801            // Get a byte in the stream and write n times
802            UINT8 byte;
803            byte =         get_compressed_bit()  << 1;
804            byte = (byte | get_compressed_bit()) << 1;
805            byte = (byte | get_compressed_bit()) << 1;
806            byte = (byte | get_compressed_bit()) << 1;
807            byte = (byte | get_compressed_bit()) << 1;
808            byte = (byte | get_compressed_bit()) << 1;
809            byte = (byte | get_compressed_bit()) << 1;
810            byte =  byte | get_compressed_bit();
811            for(int j=0; j != count; j++)
812               lc[(i++)^1] = byte;
813
814         }
815      }
816   }
817}
No newline at end of file
trunk/src/mame/machine/315-5881_crypt.h
r0r241753
1
2#pragma once
3
4#ifndef __SEGA315_5881_CRYPT__
5#define __SEGA315_5881_CRYPT__
6
7typedef device_delegate<UINT16 (UINT32)> sega_m2_read_delegate;
8
9extern const device_type SEGA315_5881_CRYPT;
10
11#define MCFG_SET_READ_CALLBACK( _class, _method) \
12   sega_315_5881_crypt_device::set_read_cb(*device, sega_m2_read_delegate(&_class::_method, #_class "::" #_method, NULL, (_class *)0));
13
14
15class sega_315_5881_crypt_device :  public device_t
16{
17public:
18   // construction/destruction
19   sega_315_5881_crypt_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
20   
21
22   UINT16 do_decrypt(UINT8 *&base);
23   void set_addr_low(UINT16 data);
24   void set_addr_high(UINT16 data);
25   void set_subkey(UINT16 data);
26   void set_key(UINT32 data);
27
28   sega_m2_read_delegate m_read;
29
30   static void set_read_cb(device_t &device,sega_m2_read_delegate readcb)
31   {
32      sega_315_5881_crypt_device &dev = downcast<sega_315_5881_crypt_device &>(device);
33      dev.m_read = readcb;
34   }
35
36protected:
37   virtual void device_start();
38   virtual void device_reset();
39
40private:
41
42   enum {
43      BUFFER_SIZE = 32768, LINE_SIZE = 512,
44      FLAG_COMPRESSED = 0x10000, FLAG_LINE_SIZE_512 = 0x20000
45   };
46
47   UINT32 key;
48
49   UINT8 *buffer, *line_buffer, *line_buffer_prev;
50   UINT32 prot_cur_address;
51   UINT16 subkey, dec_hist;
52   UINT32 dec_header;
53
54   bool enc_ready;
55
56   int buffer_pos, line_buffer_pos, line_buffer_size, buffer_bit;
57
58   struct sbox {
59      UINT8 table[64];
60      int inputs[6];      // positions of the inputs bits, -1 means no input except from key
61      int outputs[2];     // positions of the output bits
62   };
63
64   static const sbox fn1_sboxes[4][4];
65   static const sbox fn2_sboxes[4][4];
66
67   static const int fn1_game_key_scheduling[38][2];
68   static const int fn2_game_key_scheduling[34][2];
69   static const int fn1_sequence_key_scheduling[20][2];
70   static const int fn2_sequence_key_scheduling[16];
71   static const int fn2_middle_result_scheduling[16];
72
73   static const UINT8 trees[9][2][32];
74
75   int feistel_function(int input, const struct sbox *sboxes, UINT32 subkeys);
76   UINT16 block_decrypt(UINT32 game_key, UINT16 sequence_key, UINT16 counter, UINT16 data);
77
78   UINT16 get_decrypted_16();
79   int get_compressed_bit();
80
81   void enc_start();
82   void enc_fill();
83   void line_fill();
84
85};
86
87#endif
trunk/src/mame/machine/315_5296.h
r241752r241753
100100
101101   DECLARE_READ8_MEMBER( read );
102102   DECLARE_WRITE8_MEMBER( write );
103   
104   UINT8 debug_peek_output(offs_t offset) { return m_output_latch[offset & 7]; }
103105
104106protected:
105107   // device-level overrides
trunk/src/mame/machine/asic65.c
r241752r241753
150150
151151void asic65_device::reset_line(int state)
152152{
153   address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM);
153   address_space &space = subdevice("^maincpu")->memory().space(AS_PROGRAM);
154154
155155   /* rom-based means reset and clear states */
156156   if (m_asic65_type == ASIC65_ROMBASED)
trunk/src/mame/machine/atarigen.c
r241752r241753
1616#include "sound/okim6295.h"
1717#include "sound/pokey.h"
1818#include "video/atarimo.h"
19#include "includes/slapstic.h"
2019#include "atarigen.h"
2120
2221
r241752r241753
975974      m_gfxdecode(*this, "gfxdecode"),
976975      m_screen(*this, "screen"),
977976      m_palette(*this, "palette"),
978      m_generic_paletteram_16(*this, "paletteram")
977      m_generic_paletteram_16(*this, "paletteram"),
978      m_slapstic_device(*this, ":slapstic")
979979{
980980}
981981
r241752r241753
10221022   // reset the slapstic
10231023   if (m_slapstic_num != 0)
10241024   {
1025      slapstic_reset();
1026      slapstic_update_bank(slapstic_bank());
1025      if (!m_slapstic_device)
1026         fatalerror("Slapstic device is missing?\n");
1027
1028      m_slapstic_device->slapstic_reset();
1029      slapstic_update_bank(m_slapstic_device->slapstic_bank());
10271030   }
10281031}
10291032
r241752r241753
11921195
11931196void atarigen_state::device_post_load()
11941197{
1195   slapstic_update_bank(slapstic_bank());
1198   if (!m_slapstic_device)
1199      fatalerror("Slapstic device is missing?\n");
1200
1201   slapstic_update_bank(m_slapstic_device->slapstic_bank());
11961202}
11971203
11981204
r241752r241753
12321238   // if we have a chip, install it
12331239   if (chipnum != 0)
12341240   {
1241      if (!m_slapstic_device)
1242         fatalerror("Slapstic device is missing\n");
1243
12351244      // initialize the slapstic
1236      slapstic_init(machine(), chipnum);
1245      m_slapstic_device->slapstic_init(machine(), chipnum);
12371246
12381247      // install the memory handlers
12391248      address_space &program = device.space(AS_PROGRAM);
r241752r241753
12621271
12631272WRITE16_MEMBER(atarigen_state::slapstic_w)
12641273{
1265   slapstic_update_bank(slapstic_tweak(space, offset));
1274   if (!m_slapstic_device)
1275      fatalerror("Slapstic device is missing?\n");
1276
1277   slapstic_update_bank(m_slapstic_device->slapstic_tweak(space, offset));
12661278}
12671279
12681280
r241752r241753
12731285
12741286READ16_MEMBER(atarigen_state::slapstic_r)
12751287{
1288   if (!m_slapstic_device)
1289      fatalerror("Slapstic device is missing?\n");
1290
12761291   // fetch the result from the current bank first
12771292   int result = m_slapstic[offset & 0xfff];
12781293
12791294   // then determine the new one
1280   slapstic_update_bank(slapstic_tweak(space, offset));
1295   slapstic_update_bank(m_slapstic_device->slapstic_tweak(space, offset));
12811296   return result;
12821297}
12831298
trunk/src/mame/machine/atarigen.h
r241752r241753
1717#include "video/atarimo.h"
1818#include "cpu/m6502/m6502.h"
1919#include "sound/okim6295.h"
20#include "includes/slapstic.h"
2021
2122
2223/***************************************************************************
r241752r241753
431432   optional_device<screen_device> m_screen;
432433   optional_device<palette_device> m_palette;
433434   optional_shared_ptr<UINT16> m_generic_paletteram_16;
435   optional_device<atari_slapstic_device> m_slapstic_device;
434436};
435437
436438
trunk/src/mame/machine/harddriv.c
r241752r241753
3636 *
3737 *************************************/
3838
39MACHINE_START_MEMBER(harddriv_state,harddriv)
39void harddriv_state::device_start()
4040{
41   atarigen_state::machine_start();
41   //atarigen_state::machine_start();
4242
4343   /* predetermine memory regions */
4444   m_sim_memory = (UINT16 *)memregion("user1")->base();
4545   m_sim_memory_size = memregion("user1")->bytes() / 2;
4646   m_adsp_pgm_memory_word = (UINT16 *)(reinterpret_cast<UINT8 *>(m_adsp_pgm_memory.target()) + 1);
47
48   init_video();
49
4750}
4851
4952
50MACHINE_RESET_MEMBER(harddriv_state,harddriv)
53void  harddriv_state::device_reset()
5154{
5255   /* generic reset */
53   atarigen_state::machine_reset();
54   slapstic_reset();
56   //atarigen_state::machine_reset();
57   m_slapstic_device->slapstic_reset();
5558
5659   /* halt several of the DSPs to start */
5760   if (m_adsp != NULL) m_adsp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
r241752r241753
196199 *
197200 *************************************/
198201
202READ16_MEMBER( harddriv_state::hd68k_a80000_r )
203{
204   return ioport("a80000")->read_safe(0xffff);
205}
206
199207READ16_MEMBER( harddriv_state::hd68k_port0_r )
200208{
201209   /* port is as follows:
r241752r241753
213221           .....
214222       0x8000 = SW1 #1
215223   */
216   int temp = (ioport("SW1")->read() << 8) | ioport("IN0")->read();
217   if (get_hblank(*m_screen)) temp ^= 0x0002;
224   screen_device &scr = m_gsp->screen();
225   
226   int temp = (ioport("SW1")->read_safe(0xff) << 8) | ioport("IN0")->read_safe(0xff);
227   if (get_hblank(scr)) temp ^= 0x0002;
218228   temp ^= 0x0018;     /* both EOCs always high for now */
219229   return temp;
220230}
r241752r241753
222232
223233READ16_MEMBER( harddriv_state::hdc68k_port1_r )
224234{
225   UINT16 result = ioport("a80000")->read();
235   UINT16 result = ioport("a80000")->read_safe(0xffff);
226236   UINT16 diff = result ^ m_hdc68k_last_port1;
227237
228238   /* if a new shifter position is selected, use it */
r241752r241753
250260
251261READ16_MEMBER( harddriv_state::hda68k_port1_r )
252262{
253   UINT16 result = ioport("a80000")->read();
263   UINT16 result = ioport("a80000")->read_safe(0xffff);
254264
255265   /* merge in the wheel edge latch bit */
256266   if (m_hdc68k_wheel_edge)
r241752r241753
263273READ16_MEMBER( harddriv_state::hdc68k_wheel_r )
264274{
265275   /* grab the new wheel value and upconvert to 12 bits */
266   UINT16 new_wheel = ioport("12BADC0")->read() << 4;
276   UINT16 new_wheel = ioport("12BADC0")->read_safe(0xffff) << 4;
267277
268278   /* hack to display the wheel position */
269279   if (space.machine().input().code_pressed(KEYCODE_LSHIFT))
r241752r241753
317327   if (m_adc_control & 0x08)
318328   {
319329      m_adc8_select = m_adc_control & 0x07;
320      m_adc8_data = ioport(adc8names[m_adc8_select])->read();
330      m_adc8_data = ioport(adc8names[m_adc8_select])->read_safe(0xffff);
321331   }
322332
323333   /* handle a write to the 12-bit ADC address select */
324334   if (m_adc_control & 0x40)
325335   {
326336      m_adc12_select = (m_adc_control >> 4) & 0x03;
327      m_adc12_data = space.machine().root_device().ioport(adc12names[m_adc12_select])->read() << 4;
337      m_adc12_data = ioport(adc12names[m_adc12_select])->read_safe(0xffff) << 4;
328338   }
329339
330340   /* bit 7 selects which byte of the 12 bit data to read */
r241752r241753
485495      }
486496   }
487497
498   screen_device &scr = m_gsp->screen();
499
488500   /* detect changes to HEBLNK and HSBLNK and force an update before they change */
489501   if ((offset == REG_HEBLNK || offset == REG_HSBLNK) && data != m_gsp->io_register_r(space, offset, 0xffff))
490      m_screen->update_partial(m_screen->vpos() - 1);
502      scr.update_partial(scr.vpos() - 1);
491503
492504   m_gsp->io_register_w(space, offset, data, mem_mask);
493505}
r241752r241753
15021514   switch (offset & 7)
15031515   {
15041516      case 0: /* DSPRESTN */
1505         m_dsp32->set_input_line(INPUT_LINE_RESET, val ? CLEAR_LINE : ASSERT_LINE);
1517         if (m_dsp32) m_dsp32->set_input_line(INPUT_LINE_RESET, val ? CLEAR_LINE : ASSERT_LINE);
15061518         break;
15071519
15081520      case 1: /* DSPZN */
1509         m_dsp32->set_input_line(INPUT_LINE_HALT, val ? CLEAR_LINE : ASSERT_LINE);
1521         if (m_dsp32) m_dsp32->set_input_line(INPUT_LINE_HALT, val ? CLEAR_LINE : ASSERT_LINE);
15101522         break;
15111523
15121524      case 2: /* ZW1 */
r241752r241753
15701582WRITE16_MEMBER( harddriv_state::hd68k_dsk_dsp32_w )
15711583{
15721584   m_dsk_pio_access = TRUE;
1573   m_dsp32->pio_w(offset, data);
1585   if (m_dsp32) m_dsp32->pio_w(offset, data);
15741586   m_dsk_pio_access = FALSE;
15751587}
15761588
r241752r241753
15791591{
15801592   UINT16 result;
15811593   m_dsk_pio_access = TRUE;
1582   result = m_dsp32->pio_r(offset);
1594   if (m_dsp32) result = m_dsp32->pio_r(offset);
1595   else result = 0x00;
1596
15831597   m_dsk_pio_access = FALSE;
15841598   return result;
15851599}
r241752r241753
16711685
16721686WRITE16_MEMBER( harddriv_state::rd68k_slapstic_w )
16731687{
1674   slapstic_tweak(space, offset & 0x3fff);
1688   m_slapstic_device->slapstic_tweak(space, offset & 0x3fff);
16751689}
16761690
16771691
16781692READ16_MEMBER( harddriv_state::rd68k_slapstic_r )
16791693{
1680   int bank = slapstic_tweak(space, offset & 0x3fff) * 0x4000;
1694   int bank = m_slapstic_device->slapstic_tweak(space, offset & 0x3fff) * 0x4000;
16811695   return m_m68k_slapstic_base[bank + (offset & 0x3fff)];
16821696}
16831697
trunk/src/mame/machine/n64.c
r241752r241753
267267      pif_ram[0x27] = 0x3f;
268268      cic_type=6;
269269   }
270   else
271   {
272      //printf("Unknown BootCode Checksum %08X%08X\n", (UINT32)(boot_checksum>>32),(UINT32)(boot_checksum));
273   }
274270}
275271
276272// Memory Interface (MI)
r241752r241753
312308         break;
313309   }
314310
315   //printf("mi_reg_r %08x = %08x\n", offset * 4, ret); fflush(stdout);
316311   return ret;
317312}
318313
319314WRITE32_MEMBER( n64_periphs::mi_reg_w )
320315{
321   //printf("mi_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); fflush(stdout);
322316   switch (offset)
323317   {
324318      case 0x00/4:        // MI_INIT_MODE_REG
r241752r241753
409403{
410404   if (mi_intr_mask & mi_interrupt)
411405   {
412      //printf("Asserting IRQ, %02x : %02x\n", mi_intr_mask, mi_interrupt); fflush(stdout);
413406      machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
414407   }
415408   else
416409   {
417      //printf("Deasserting IRQ, %02x : %02x\n", mi_intr_mask, mi_interrupt); fflush(stdout);
418410      machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
419411   }
420412}
r241752r241753
466458      case 0x0014/4:
467459         for(i = 0x20; i < (0x20 + data); i++)
468460         {
469            //printf( "%c", is64_buffer[i] );
470461            if(is64_buffer[i] == 0x0a)
471462            {
472               //printf( "%c", 0x0d );
463               printf( "%c", 0x0d );
473464            }
474465            is64_buffer[i] = 0;
475466         }
r241752r241753
511502
512503READ32_MEMBER( n64_periphs::rdram_reg_r )
513504{
514   //printf("rdram_reg_r %08x = %08x\n", offset * 4, rdram_regs[offset]); fflush(stdout);
515505   if(offset > 0x24/4)
516506   {
517507      logerror("rdram_reg_r: %08X, %08X at %08X\n", offset, mem_mask, maincpu->safe_pc());
r241752r241753
522512
523513WRITE32_MEMBER( n64_periphs::rdram_reg_w )
524514{
525   //printf("rdram_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); fflush(stdout);
526515   if(offset > 0x24/4)
527516   {
528517      logerror("rdram_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, maincpu->safe_pc());
r241752r241753
542531      length = (length + 7) & ~7;
543532   }
544533
545   //printf("Length %08x Skip %08x Count %08x\n", length, sp_dma_skip, sp_dma_count); fflush(stdout);
546534   if (sp_mem_addr & 0x3)
547535   {
548536      sp_mem_addr = sp_mem_addr & ~3;
r241752r241753
554542
555543   if ((sp_mem_addr & 0xfff) + (length) > 0x1000)
556544   {
557      //printf("sp_dma: dma out of memory area: %08X, %08X, %08X\n", sp_mem_addr, sp_dram_addr, length);
558      //fatalerror("sp_dma: dma out of memory area: %08X, %08X\n", sp_mem_addr, length);
559545      length = 0x1000 - (sp_mem_addr & 0xfff);
560546   }
561547
r241752r241753
602588
603589WRITE32_MEMBER(n64_periphs::sp_set_status)
604590{
605   //printf("sp_set_status: %08x\n", data);
606591   if (data & 0x1)
607592   {
608593      rspcpu->execute().set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
r241752r241753
638623         break;
639624
640625      case 0x10/4:        // SP_STATUS_REG
641         //machine().scheduler().synchronize();
642         //machine().scheduler().boost_interleave(attotime::from_msec(1), attotime::from_msec(m));
643626         ret = rspcpu->state().state_int(RSP_SR);
644627         break;
645628
r241752r241753
652635         break;
653636
654637      case 0x1c/4:        // SP_SEMAPHORE_REG
655         //machine().scheduler().boost_interleave(attotime::from_usec(1), attotime::from_usec(1));
656638         machine().device("maincpu")->execute().yield();
657639         if( sp_semaphore )
658640         {
r241752r241753
660642         }
661643         else
662644         {
663            //printf("Semaphore is now acquired, returning 0\n");
664645            sp_semaphore = 1;
665646            ret = 0;
666647         }
r241752r241753
718699         break;
719700   }
720701
721   //printf("%08x sp_reg_r %08x = %08x\n", (UINT32)maincpu->state().state_int(MIPS3_PC), offset * 4, ret); fflush(stdout);
722702   return ret;
723703}
724704
725705
726706WRITE32_MEMBER(n64_periphs::sp_reg_w )
727707{
728   //printf("%08x sp_reg_w %08x %08x %08x\n", (UINT32)maincpu->state().state_int(MIPS3_PC), offset * 4, data, mem_mask); fflush(stdout);
729
730708   if ((offset & 0x10000) == 0)
731709   {
732710      switch (offset & 0xffff)
r241752r241753
758736            UINT32 oldstatus = rspcpu->state().state_int(RSP_SR);
759737            UINT32 newstatus = oldstatus;
760738
761            // printf( "RSP_STATUS_REG Write; %08x\n", data );
762739            if (data & 0x00000001)      // clear halt
763740            {
764741               rspcpu->execute().set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
765742               newstatus &= ~RSP_STATUS_HALT;
766               //printf("***SP HALT CLR***\n"); fflush(stdout);
743               machine().scheduler().abort_timeslice();
744               machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100));
767745            }
768746            if (data & 0x00000002)      // set halt
769747            {
770748               rspcpu->execute().set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
771749               newstatus |= RSP_STATUS_HALT;
772               //printf("***SP HALT SET***\n"); fflush(stdout);
773750            }
774751            if (data & 0x00000004)
775752            {
776753               newstatus &= ~RSP_STATUS_BROKE;
777               //printf("***SP BROKE CLR***\n"); fflush(stdout);
778754            }
779755            if (data & 0x00000008)      // clear interrupt
780756            {
781               //printf("***SP INT CLR***\n"); fflush(stdout);
782757               clear_rcp_interrupt(SP_INTERRUPT);
783758            }
784759            if (data & 0x00000010)      // set interrupt
785760            {
786               //printf("***SP INT SET***\n"); fflush(stdout);
787761               signal_rcp_interrupt(SP_INTERRUPT);
788762            }
789763            if (data & 0x00000020)
790764            {
791765               newstatus &= ~RSP_STATUS_SSTEP;
792               //printf("***SP SSTEP CLR***\n"); fflush(stdout);
793766            }
794767            if (data & 0x00000040)
795768            {
796769               newstatus |= RSP_STATUS_SSTEP;  // set single step
797               //printf("***SP SSTEP SET***\n"); fflush(stdout);
798770               if(!(oldstatus & (RSP_STATUS_BROKE | RSP_STATUS_HALT)))
799771               {
800772                  rspcpu->state().set_state_int(RSP_STEPCNT, 1 );
r241752r241753
804776            if (data & 0x00000080)
805777            {
806778               newstatus &= ~RSP_STATUS_INTR_BREAK;    // clear interrupt on break
807               //printf("***SP INTRBRK CLR***\n"); fflush(stdout);
808779            }
809780            if (data & 0x00000100)
810781            {
811782               newstatus |= RSP_STATUS_INTR_BREAK;     // set interrupt on break
812               //printf("***SP INTRBRK SET***\n"); fflush(stdout);
813783            }
814784            if (data & 0x00000200)
815785            {
816786               newstatus &= ~RSP_STATUS_SIGNAL0;       // clear signal 0
817               //printf("***SP YIELD CLR***\n"); fflush(stdout);
818787            }
819788            if (data & 0x00000400)
820789            {
821790               newstatus |= RSP_STATUS_SIGNAL0;        // set signal 0
822               //printf("***SP YIELD SET***\n"); fflush(stdout);
823791            }
824792            if (data & 0x00000800)
825793            {
826794               newstatus &= ~RSP_STATUS_SIGNAL1;       // clear signal 1
827               //printf("***SP YIELDED CLR***\n"); fflush(stdout);
828795            }
829796            if (data & 0x00001000)
830797            {
831798               newstatus |= RSP_STATUS_SIGNAL1;        // set signal 1
832               //printf("***SP YIELDED SET***\n"); fflush(stdout);
833799            }
834800            if (data & 0x00002000)
835801            {
836802               newstatus &= ~RSP_STATUS_SIGNAL2 ;      // clear signal 2
837               //printf("***SP TASKDONE CLR***\n"); fflush(stdout);
838803            }
839804            if (data & 0x00004000)
840805            {
841806               newstatus |= RSP_STATUS_SIGNAL2;        // set signal 2
842               //printf("***SP TASKDONE SET***\n"); fflush(stdout);
843807            }
844808            if (data & 0x00008000)
845809            {
846810               newstatus &= ~RSP_STATUS_SIGNAL3;       // clear signal 3
847               //printf("***SP SIG3 CLR***\n"); fflush(stdout);
848811            }
849812            if (data & 0x00010000)
850813            {
851814               newstatus |= RSP_STATUS_SIGNAL3;        // set signal 3
852               //printf("***SP SIG3 SET***\n"); fflush(stdout);
853815            }
854816            if (data & 0x00020000)
855817            {
856818               newstatus &= ~RSP_STATUS_SIGNAL4;       // clear signal 4
857               //printf("***SP SIG4 CLR***\n"); fflush(stdout);
858819            }
859820            if (data & 0x00040000)
860821            {
861822               newstatus |= RSP_STATUS_SIGNAL4;        // set signal 4
862               //printf("***SP SIG4 SET***\n"); fflush(stdout);
863823            }
864824            if (data & 0x00080000)
865825            {
866826               newstatus &= ~RSP_STATUS_SIGNAL5;       // clear signal 5
867               //printf("***SP SIG5 CLR***\n"); fflush(stdout);
868827            }
869828            if (data & 0x00100000)
870829            {
871830               newstatus |= RSP_STATUS_SIGNAL5;        // set signal 5
872               //printf("***SP SIG5 SET***\n"); fflush(stdout);
873831            }
874832            if (data & 0x00200000)
875833            {
876834               newstatus &= ~RSP_STATUS_SIGNAL6;       // clear signal 6
877               //printf("***SP SIG6 CLR***\n"); fflush(stdout);
878835            }
879836            if (data & 0x00400000)
880837            {
881838               newstatus |= RSP_STATUS_SIGNAL6;        // set signal 6
882               //printf("***SP SIG6 SET***\n"); fflush(stdout);
883839            }
884840            if (data & 0x00800000)
885841            {
886842               newstatus &= ~RSP_STATUS_SIGNAL7;       // clear signal 7
887               //printf("***SP SIG7 CLR***\n"); fflush(stdout);
888843            }
889844            if (data & 0x01000000)
890845            {
891846               newstatus |= RSP_STATUS_SIGNAL7;        // set signal 7
892               //printf("***SP SIG7 SET***\n"); fflush(stdout);
893847            }
894848            rspcpu->state().set_state_int(RSP_SR, newstatus);
895849            break;
896850         }
897851
898852         case 0x1c/4:        // SP_SEMAPHORE_REG
899            //machine().scheduler().boost_interleave(attotime::from_usec(1), attotime::from_usec(1));
900            //printf("Semaphore is being released\n");
901853            if(data == 0)
902854            {
903855               sp_semaphore = 0;
r241752r241753
976928         break;
977929   }
978930
979   //printf("%08x dp_reg_r %08x = %08x\n", (UINT32)space.machine().device("rsp")->state().state_int(RSP_PC), offset, ret); fflush(stdout);
980931   return ret;
981932}
982933
r241752r241753
984935{
985936   n64_state *state = space.machine().driver_data<n64_state>();
986937
987   //printf("%08x dp_reg_w %08x %08x %08x\n", (UINT32)space.machine().device("rsp")->state().state_int(RSP_PC), offset, data, mem_mask); fflush(stdout);
988938   switch (offset)
989939   {
990940      case 0x00/4:        // DP_START_REG
r241752r241753
993943         break;
994944
995945      case 0x04/4:        // DP_END_REG
996         //printf("dp_end_reg %08x\n", data);
997946         state->m_rdp->SetEndReg(data);
998947         g_profiler.start(PROFILER_USER1);
999948         state->m_rdp->ProcessList();
r241752r241753
1042991   int y_end = (vi_vstart & 0x000003ff) / 2;
1043992   int width = ((vi_xscale & 0x00000fff) * (x_end - x_start)) / 0x400;
1044993   int height = ((vi_yscale & 0x00000fff) * (y_end - y_start)) / 0x400;
1045   //printf("%04x | %02x | ", vi_xscale >> 16, vi_burst & 0x000000ff);
994
1046995   rectangle visarea = m_screen->visible_area();
1047996   attoseconds_t period = m_screen->frame_period().attoseconds;
1048997
r241752r241753
10701019
10711020   visarea.max_x = width - 1;
10721021   visarea.max_y = height - 1;
1073   //printf("Reconfig %d, %d (%d - %d), %08x, %08x, %08x, %08x, %08x\n", width, height, x_start, x_end, vi_width, vi_xscale, vi_hsync, vi_hstart, vi_burst);
10741022   m_screen->configure(width, 525, visarea, period);
10751023}
10761024
r241752r241753
11401088         break;
11411089   }
11421090
1143   //printf("vi_reg_r %08x = %08x\n", offset * 4, ret);
11441091   return ret;
11451092}
11461093
11471094WRITE32_MEMBER( n64_periphs::vi_reg_w )
11481095{
1149   //printf("vi_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask);
11501096   n64_state *state = machine().driver_data<n64_state>();
11511097
11521098   switch (offset)
r241752r241753
13791325         break;
13801326   }
13811327
1382   //printf("ai_reg_r %08x = %08x\n", offset * 4, ret);
13831328   return ret;
13841329}
13851330
13861331WRITE32_MEMBER( n64_periphs::ai_reg_w )
13871332{
1388   //printf("ai_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask);
13891333   switch (offset)
13901334   {
13911335      case 0x00/4:        // AI_DRAM_ADDR_REG
r241752r241753
14081352      case 0x10/4:        // AI_DACRATE_REG
14091353         ai_dacrate = data & 0x3fff;
14101354         dmadac_set_frequency(&ai_dac[0], 2, (double)DACRATE_NTSC / (double)(ai_dacrate+1));
1411         //printf( "frequency: %f\n", (double)DACRATE_NTSC / (double)(ai_dacrate+1) );
14121355         dmadac_enable(&ai_dac[0], 2, 1);
14131356         break;
14141357
r241752r241753
14551398      cart_addr &= ((machine().root_device().memregion("user2")->bytes() >> 1) - 1);
14561399   }
14571400
1458   //printf("%08x Cart, %08x Dram\n", cart_addr << 1, dram_addr << 1); fflush(stdout);
1459
14601401   if(pi_dma_dir == 1)
14611402   {
14621403      UINT32 dma_length = pi_wr_len + 1;
r241752r241753
15581499         break;
15591500   }
15601501
1561   //printf("pi_reg_r %08x = %08x\n", offset * 4, ret);
15621502   return ret;
15631503}
15641504
15651505WRITE32_MEMBER( n64_periphs::pi_reg_w )
15661506{
1567   //printf("pi_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); fflush(stdout);
15681507   switch (offset)
15691508   {
15701509      case 0x00/4:        // PI_DRAM_ADDR_REG
r241752r241753
15861525         pi_status |= 1;
15871526
15881527         attotime dma_period = attotime::from_hz(93750000) * (int)((float)(pi_rd_len + 1) * 5.08f); // Measured as between 2.53 cycles per byte and 2.55 cycles per byte
1589         //printf("want read dma in %d\n", (pi_rd_len + 1));
15901528         pi_dma_timer->adjust(dma_period);
15911529         //pi_dma_tick();
15921530         break;
r241752r241753
15991537         pi_status |= 1;
16001538
16011539         attotime dma_period = attotime::from_hz(93750000) * (int)((float)(pi_wr_len + 1) * 5.08f); // Measured as between 2.53 cycles per byte and 2.55 cycles per byte
1602         //printf("want write dma in %d\n", (pi_wr_len + 1));
16031540         pi_dma_timer->adjust(dma_period);
16041541
16051542         //pi_dma_tick();
r241752r241753
16581595
16591596READ32_MEMBER( n64_periphs::ri_reg_r )
16601597{
1661   //printf("ri_reg_r %08x = %08x\n", offset * 4, ri_regs[offset]);
16621598   if(offset > 0x1c/4)
16631599   {
16641600      logerror("ri_reg_r: %08X, %08X at %08X\n", offset, mem_mask, maincpu->safe_pc());
r241752r241753
16691605
16701606WRITE32_MEMBER( n64_periphs::ri_reg_w )
16711607{
1672   //printf("ri_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask);
16731608   if(offset > 0x1c/4)
16741609   {
16751610      logerror("ri_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, maincpu->safe_pc());
r241752r241753
17321667      case 0x00:      // Read status
17331668      case 0xff:      // Reset
17341669      {
1735         if(command == 0)
1736         {
1737            //printf("Read status\n");
1738         }
1739         else
1740         {
1741            //printf("Reset\n");
1742         }
17431670         switch (channel)
17441671         {
17451672            case 0:
17461673            case 1:
17471674            {
1748               //printf("Read controller %d status\n", channel + 1);
1675               // Read status
17491676               rdata[0] = 0x05;
17501677               rdata[1] = 0x00;
17511678               rdata[2] = 0x01;
r241752r241753
17541681            case 2:
17551682            case 3:
17561683            {
1757               //printf("Read controller %d status (NC)\n", channel + 1);
1758               // not connected
1684               // Read status (unconnected)
17591685               return 1;
17601686            }
17611687            case 4:
17621688            {
1763               //printf("Read EEPROM status\n");
1689               // Read EEPROM status
17641690               rdata[0] = 0x00;
17651691               rdata[1] = 0x80;
17661692               rdata[2] = 0x00;
r241752r241753
17911717
17921718         switch (channel)
17931719         {
1794            case 0: //p1 inputs
1795            case 1: //p2 inputs
1720            case 0: // P1 Inputs
1721            case 1: // P2 Inputs
17961722            {
1797               //printf("Read p%d inputs\n", channel + 1);
17981723               buttons = machine().root_device().ioport(portnames[(channel*3) + 0])->read();
17991724               x = machine().root_device().ioport(portnames[(channel*3) + 1])->read() - 128;
18001725               y = machine().root_device().ioport(portnames[(channel*3) + 2])->read() - 128;
r241752r241753
18081733            case 2:
18091734            case 3:
18101735            {
1811               //printf("Controller %d not connected\n", channel + 1);
1812               // not connected
1736               // P3/P4 Inputs (not connected)
18131737               return 1;
18141738            }
18151739         }
r241752r241753
18241748         address = (sdata[1] << 8) | (sdata[2]);
18251749         address &= ~0x1f;
18261750
1827         ////printf("Read mempak at %04x\n", address);
1828
18291751         if(address == 0x8000)
18301752         {
18311753            for(int i = 0; i < rlength-1; i++)
r241752r241753
18541776         UINT32 address = (sdata[1] << 8) | (sdata[2]);
18551777         address &= ~0x1f;
18561778
1857         ////printf("Write mempak at %04x\n", address);
1858         if (address >= 0x8000)
1779         if (address < 0x8000)
18591780         {
1860         }
1861         else
1862         {
18631781            for(int i = 3; i < slength; i++)
18641782            {
18651783               m_save_data.mempak[channel & 1][address++] = sdata[i];
r241752r241753
18851803
18861804         UINT16 block_offset = sdata[1] * 8;
18871805
1888         //printf("Read EEPROM at %04x\n", block_offset);
1889
18901806         for(int i=0; i < 8; i++)
18911807         {
18921808            rdata[i] = m_save_data.eeprom[block_offset+i];
r241752r241753
19091825
19101826         UINT16 block_offset = sdata[1] * 8;
19111827
1912         //printf("Write EEPROM at %04x\n", block_offset);
1913
19141828         for(int i = 0; i < 8; i++)
19151829         {
19161830            m_save_data.eeprom[block_offset+i] = sdata[2+i];
r241752r241753
19211835
19221836      case 0x06:      // Read RTC Status
19231837      {
1924         //printf("Read RTC Status\n");
19251838         rdata[0] = 0x00;
19261839         rdata[1] = 0x10;
19271840         rdata[2] = 0x00;
r241752r241753
19331846         switch(sdata[1])
19341847         {
19351848            case 0:
1936               //printf("Read RTC Block Header\n");
19371849               rdata[0] = 0x00;
19381850               rdata[1] = 0x02;
19391851               rdata[8] = 0x00;
r241752r241753
19541866               rdata[6] = convert_to_bcd(systime.local_time.year % 100); // Year
19551867               rdata[7] = convert_to_bcd(systime.local_time.year / 100); // Century
19561868               rdata[8] = 0x00;
1957               //printf("Read RTC Time\n");
19581869               return 0;
19591870         }
19601871         return 1;
r241752r241753
19821893      while(cmd_ptr < 0x3f && !end)
19831894      {
19841895         INT8 bytes_to_send = (INT8)pif_cmd[cmd_ptr++];
1985         //printf("bytes to send: 0x%02x\n", bytes_to_send);
19861896
19871897         if (bytes_to_send == -2)
19881898         {
19891899            end = 1;
1990            //printf("end\n");
19911900         }
19921901         else if (bytes_to_send < 0)
19931902         {
1994            //printf("do nothing\n");
19951903            // do nothing
19961904         }
19971905         else
r241752r241753
20021910               UINT8 send_buffer[0x40];
20031911
20041912               INT8 bytes_to_recv = pif_cmd[cmd_ptr++];
2005               //printf("bytes to receive: 0x%02x\n", bytes_to_recv);
20061913
20071914               if (bytes_to_recv == -2)
20081915               {
r241752r241753
20151922               }
20161923
20171924               int res = pif_channel_handle_command(channel, bytes_to_send, send_buffer, bytes_to_recv, recv_buffer);
2018               //printf("result: %d\n", res);
20191925
20201926               if (res == 0)
20211927               {
2022                  //printf("cmd_ptr (%d) + bytes_to_recv (%d) = %d\n", cmd_ptr, bytes_to_recv, cmd_ptr + bytes_to_recv);
20231928                  if (cmd_ptr + bytes_to_recv > 0x3f)
20241929                  {
20251930                     fatalerror("cmd_ptr overflow\n");
r241752r241753
21102015         ret = si_status;
21112016   }
21122017
2113   //printf("si_reg_r %08x = %08x\n", offset * 4, ret); fflush(stdout);
21142018   return ret;
21152019}
21162020
21172021WRITE32_MEMBER( n64_periphs::si_reg_w )
21182022{
2119   //printf("si_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); fflush(stdout);
21202023   switch (offset)
21212024   {
21222025      case 0x00/4:        // SI_DRAM_ADDR_REG
r241752r241753
23962299      return;
23972300
23982301   device_image_interface *image = dynamic_cast<device_image_interface *>(periphs->m_nvram_image);
2399   //printf("Saving stuff\n");
2302
24002303   UINT8 data[0x30800];
24012304   memcpy(data, n64_sram, 0x20000);
24022305   memcpy(data + 0x20000, periphs->m_save_data.eeprom, 0x800);
trunk/src/mame/machine/naomim2.c
r241752r241753
105105const device_type NAOMI_M2_BOARD = &device_creator<naomi_m2_board>;
106106
107107naomi_m2_board::naomi_m2_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
108   : naomi_board(mconfig, NAOMI_M2_BOARD, "Sega NAOMI M2 BOARD", tag, owner, clock, "naomi_m2_board", __FILE__)
108   : naomi_board(mconfig, NAOMI_M2_BOARD, "Sega NAOMI M2 BOARD", tag, owner, clock, "naomi_m2_board", __FILE__),
109   m_cryptdevice(*this, "segam2crypt")
109110{
110111   key_tag = 0;
111112}
r241752r241753
120121{
121122   naomi_board::device_start();
122123
123#if USE_NAOMICRYPT
124   key = get_naomi_key(machine());
125#else
126   const UINT8 *key_data = memregion(key_tag)->base();
127   key = (key_data[0] << 24) | (key_data[1] << 16) | (key_data[2] << 8) | key_data[3];
128#endif
129124   ram = auto_alloc_array(machine(), UINT8, RAM_SIZE);
130   buffer = auto_alloc_array(machine(), UINT8, BUFFER_SIZE);
131   line_buffer = auto_alloc_array(machine(), UINT8, LINE_SIZE);
132   line_buffer_prev = auto_alloc_array(machine(), UINT8, LINE_SIZE);
133125
134   save_pointer(NAME(ram), RAM_SIZE);
135   save_pointer(NAME(buffer), BUFFER_SIZE);
136   save_pointer(NAME(line_buffer), LINE_SIZE);
137   save_pointer(NAME(line_buffer_prev), LINE_SIZE);
138126   save_item(NAME(rom_cur_address));
139   save_item(NAME(prot_cur_address));
140   save_item(NAME(subkey));
141   save_item(NAME(enc_ready));
142   save_item(NAME(dec_hist));
143   save_item(NAME(dec_header));
144   save_item(NAME(buffer_pos));
145   save_item(NAME(line_buffer_pos));
146   save_item(NAME(line_buffer_size));
127   save_pointer(NAME(ram), RAM_SIZE);
147128}
148129
149130void naomi_m2_board::device_reset()
r241752r241753
151132   naomi_board::device_reset();
152133
153134   memset(ram, 0, RAM_SIZE);
154   memset(buffer, 0, BUFFER_SIZE);
155   memset(line_buffer, 0, LINE_SIZE);
156   memset(line_buffer_prev, 0, LINE_SIZE);
157135
158136   rom_cur_address = 0;
159   prot_cur_address = 0;
160   subkey = 0;
161   dec_hist = 0;
162   dec_header = 0;
163   enc_ready = false;
164137
165   buffer_pos = 0;
166   line_buffer_pos = 0;
167   line_buffer_size = 0;
168   buffer_bit = 0;
138#if USE_NAOMICRYPT
139   m_cryptdevice->set_key(get_naomi_key(machine()));
140#else
141   const UINT8 *key_data = memregion(key_tag)->base();
142   m_cryptdevice->set_key((key_data[0] << 24) | (key_data[1] << 16) | (key_data[2] << 8) | key_data[3]);
143#endif
169144}
170145
171146void naomi_m2_board::board_setup_address(UINT32 address, bool is_dma)
r241752r241753
175150
176151void naomi_m2_board::board_get_buffer(UINT8 *&base, UINT32 &limit)
177152{
153
178154   if(rom_cur_address & 0x40000000) {
179155      if(rom_cur_address == 0x4001fffe) {
180         if(!enc_ready)
181            enc_start();
182         if(dec_header & FLAG_COMPRESSED) {
183            if(line_buffer_pos == line_buffer_size)
184               line_fill();
185            base = line_buffer + line_buffer_pos;
186            line_buffer_pos += 2;
187         } else {
188            if(buffer_pos == BUFFER_SIZE)
189               enc_fill();
190            base = buffer + buffer_pos;
191            buffer_pos += 2;
192         }
156         m_cryptdevice->do_decrypt(base);
193157         limit = 2;
194158
195159      } else
r241752r241753
214178
215179void naomi_m2_board::board_write(offs_t offset, UINT16 data)
216180{
181
182
217183   if(offset & 0x40000000) {
218184      if((offset & 0x0f000000) == 0x02000000) {
219185         offset &= RAM_SIZE-1;
r241752r241753
222188         return;
223189      }
224190      switch(offset & 0x1fffffff) {
225      case 0x1fff8: prot_cur_address = (prot_cur_address & 0xffff0000) | data; enc_ready = false; return;
226      case 0x1fffa: prot_cur_address = (prot_cur_address & 0x0000ffff) | (data << 16); enc_ready = false; return;
227      case 0x1fffc: subkey = data; enc_ready = false; return;
191
192      case 0x1fff8: m_cryptdevice->set_addr_low(data); return;
193      case 0x1fffa: m_cryptdevice->set_addr_high(data);  return;
194      case 0x1fffc: m_cryptdevice->set_subkey(data); return;
228195      }
229196   }
230197   throw emu_fatalerror("NAOMIM2: unhandled board write %08x, %04x\n", offset, data);
231198}
232199
233/***************************************************************************
234    DECRYPTION EMULATION
235
236By convention, we label the three known cart protection methods this way (using Deunan Knute's wording):
237M1: DMA read of protected ROM area
238M2: special read of ROM area which supplies decryption key first
239M3: normal read followed by write to cart's decryption buffer (up to 64kB), followed by M2 but from buffer area
240
241Notes below refer to M2 & M3.
242
243The encryption is done by a stream cipher operating in counter mode, which use a 16-bits internal block cipher.
244
245There are 2 "control bits" at the start of the decrypted stream which control the mode of operation: bit #1 set to 1 means
246that the decrypted stream needs to be decompressed after being decrypted. More on this later.
247
248The next 16-bits are part of the header (they don't belong to the plaintext), but his meaning is unclear. It has been
249conjectured that it could stablish when to "reset" the process and start processing a new stream (based on some tests
250on WWFROYAL, in which the decryption's output doesn't seem to be valid for more than some dozens of words), but some
251more testing would be needed for clarifying that.
252
253After those 18 heading bits, we find the proper plaintext. It must be noted that, due to the initial 2 special bits,
254the 16-bits words of the plaintext are shifted 2 bits respect to the word-boundaries of the output stream of the
255internal block-cipher. So, at a given step, the internal block cipher will output 16-bits, 14 of which will go to a
256given plaintext word, and the remaining 2 to the next plaintext word.
257
258The underlying block cipher consists of two 4-round Feistel Networks (FN): the first one takes the counter (16 bits),
259the game-key (>=26 bits) and the sequence-key (16 bits) and output a middle result (16 bits) which will act as another key
260for the second one. The second FN will take the encrypted word (16 bits), the game-key, the sequence-key and the result
261from the first FN and will output the decrypted word (16 bits).
262
263Each round of the Feistel Networks use four substitution sboxes, each having 6 inputs and 2 outputs. The input can be the
264XOR of at most two "sources bits", being source bits the bits from the previous round and the bits from the different keys.
265
266The underlying block cipher has the same structure than the one used by the CPS-2 (Capcom Play System 2) and,
267indeed, some of the used sboxes are exactly the same and appear in the same FN/round in both systems (this is not evident,
268as you need to apply a bitswapping and some XORs to the input & output of the sboxes to get the same values due). However,
269the key scheduling used by this implementation is much weaker than the CPS-2's one. Many s-boxes inputs aren't XORed with any
270key bit.
271
272Due to the small key-length, no sophisticated attacks are needed to recover the keys; a brute-force attack knowing just
273some (encrypted word-decrypted word) pairs suffice. However, due to the weak key scheduling, it should be noted that some
274related keys can produce the same output bytes for some (short) input sequences.
275
276The only difference in the decryption process between M2 and M3 is the initialization of the counter. In M3, the counter is
277always set to 0 at the beginning of the decryption while, in M2, the bits #1-#16 of the ciphertext's address are used
278to initialize the counter.
279
280Note that this implementation considers that the counter initialization for ram decryption is 0 simply because the ram is
281mapped to multiples of 128K.
282
283Due to the nature of the cipher, there are some degrees of freedom when choosing the s-boxes and keys values; by example,
284you could apply a fixed bitswapping and XOR to the keys and the decryption would remain the same as long as you change
285accordingly the s-boxes' definitions. So the order of the bits in the keys is arbitrary, and the s-boxes values have been
286chosen so as to make the key for CAPSNK equal to 0.
287
288It can be observed that a couple of sboxes have incomplete tables (a 255 value indicate an unknown value). The recovered keys
289as of december/2010 show small randomness and big correlations, making possible that some unseen bits could make the
290decryption need those incomplete parts.
291
292****************************************************************************************/
293
294const naomi_m2_board::sbox naomi_m2_board::fn1_sboxes[4][4] = {
295   {   // 1st round
296      {
297         {
298            0,3,2,2,1,3,1,2,3,2,1,2,1,2,3,1,3,2,2,0,2,1,3,0,0,3,2,3,2,1,2,0,
299            2,3,1,1,2,2,1,1,1,0,2,3,3,0,2,1,1,1,1,1,3,0,3,2,1,0,1,2,0,3,1,3,
300         },
301         {3,4,5,7,-1,-1},
302         {0,4}
303      },
304
305      {
306         {
307            2,2,2,0,3,3,0,1,2,2,3,2,3,0,2,2,1,1,0,3,3,2,0,2,0,1,0,1,2,3,1,1,
308            0,1,3,3,1,3,3,1,2,3,2,0,0,0,2,2,0,3,1,3,0,3,2,2,0,3,0,3,1,1,0,2,
309         },
310         {0,1,2,5,6,7},
311         {1,6}
312      },
313
314      {
315         {
316            0,1,3,0,3,1,1,1,1,2,3,1,3,0,2,3,3,2,0,2,1,1,2,1,1,3,1,0,0,2,0,1,
317            1,3,1,0,0,3,2,3,2,0,3,3,0,0,0,0,1,2,3,3,2,0,3,2,1,0,0,0,2,2,3,3,
318         },
319         {0,2,5,6,7,-1},
320         {2,3}
321      },
322
323      {
324         {
325            3,2,1,2,1,2,3,2,0,3,2,2,3,1,3,3,0,2,3,0,3,3,2,1,1,1,2,0,2,2,0,1,
326            1,3,3,0,0,3,0,3,0,2,1,3,2,1,0,0,0,1,1,2,0,1,0,0,0,1,3,3,2,0,3,3,
327         },
328         {1,2,3,4,6,7},
329         {5,7}
330      },
331   },
332   {   // 2nd round
333      {
334         {
335            3,3,1,2,0,0,2,2,2,1,2,1,3,1,1,3,3,0,0,3,0,3,3,2,1,1,3,2,3,2,1,3,
336            2,3,0,1,3,2,0,1,2,1,3,1,2,2,3,3,3,1,2,2,0,3,1,2,2,1,3,0,3,0,1,3,
337         },
338         {0,1,3,4,5,7},
339         {0,4}
340      },
341
342      {
343         {
344            2,0,1,0,0,3,2,0,3,3,1,2,1,3,0,2,0,2,0,0,0,2,3,1,3,1,1,2,3,0,3,0,
345            3,0,2,0,0,2,2,1,0,2,3,3,1,3,1,0,1,3,3,0,0,1,3,1,0,2,0,3,2,1,0,1,
346         },
347         {0,1,3,4,6,-1},
348         {1,5}
349      },
350
351      {
352         {
353            2,2,2,3,1,1,0,1,0,1,2,2,3,3,0,2,0,3,2,3,3,0,2,1,0,3,1,0,0,2,3,2,
354            3,2,0,3,2,0,1,0,3,3,1,1,2,2,2,0,2,1,3,1,1,1,1,2,2,2,3,0,1,3,0,0,
355         },
356         {1,2,5,6,7,-1},
357         {2,7}
358      },
359
360      {
361         {
362            0,1,3,3,3,1,3,3,1,0,2,0,2,0,0,3,1,2,1,3,1,2,3,2,2,0,1,3,0,3,3,3,
363            0,0,0,2,1,1,2,3,2,2,3,1,1,2,0,2,0,2,1,3,1,1,3,3,1,1,3,0,2,3,0,0,
364         },
365         {2,3,4,5,6,7},
366         {3,6}
367      },
368   },
369   {   // 3rd round
370      {
371         {
372            0,0,1,0,1,0,0,3,2,0,0,3,0,1,0,2,0,3,0,0,2,0,3,2,2,1,3,2,2,1,1,2,
373            0,0,0,3,0,1,1,0,0,2,1,0,3,1,2,2,2,0,3,1,3,0,1,2,2,1,1,1,0,2,3,1,
374         },
375         {1,2,3,4,5,7},
376         {0,5}
377      },
378
379      {
380         {
381            1,2,1,0,3,1,1,2,0,0,2,3,2,3,1,3,2,0,3,2,2,3,1,1,1,1,0,3,2,0,0,1,
382            1,0,0,1,3,1,2,3,0,0,2,3,3,0,1,0,0,2,3,0,1,2,0,1,3,3,3,1,2,0,2,1,
383         },
384         {0,2,4,5,6,7},
385         {1,6}
386      },
387
388      {
389         {
390            0,3,0,2,1,2,0,0,1,1,0,0,3,1,1,0,0,3,0,0,2,3,3,2,3,1,2,0,0,2,3,0,
391            // unused?
392            255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
393         },
394         {0,2,4,6,7,-1},
395         {2,3}
396      },
397
398      {
399         {
400            0,0,1,0,0,1,0,2,3,3,0,3,3,2,3,0,2,2,2,0,3,2,0,3,1,0,0,3,3,0,0,0,
401            2,2,1,0,2,0,3,2,0,0,3,1,3,3,0,0,2,1,1,2,1,0,1,1,0,3,1,2,0,2,0,3,
402         },
403         {0,1,2,3,6,-1},
404         {4,7}
405      },
406   },
407   {   // 4th round
408      {
409         {
410            0,3,3,3,3,3,2,0,0,1,2,0,2,2,2,2,1,1,0,2,2,1,3,2,3,2,0,1,2,3,2,1,
411            3,2,2,3,1,0,1,0,0,2,0,1,2,1,2,3,1,2,1,1,2,2,1,0,1,3,2,3,2,0,3,1,
412         },
413         {0,1,3,4,5,6},
414         {0,5}
415      },
416
417      {
418         {
419            0,3,0,0,2,0,3,1,1,1,2,2,2,1,3,1,2,2,1,3,2,2,3,3,0,3,1,0,3,2,0,1,
420            3,0,2,0,1,0,2,1,3,3,1,2,2,0,2,3,3,2,3,0,1,1,3,3,0,2,1,3,0,2,2,3,
421         },
422         {0,1,2,3,5,7},
423         {1,7}
424      },
425
426      {
427         {
428            0,1,2,3,3,3,3,1,2,0,2,3,2,1,0,1,2,2,1,2,0,3,2,0,1,1,0,1,3,1,3,1,
429            3,1,0,0,1,0,0,0,0,1,2,2,1,1,3,3,1,2,3,3,3,2,3,0,2,2,1,3,3,0,2,0,
430         },
431         {2,3,4,5,6,7},
432         {2,3}
433      },
434
435      {
436         {
437            0,2,1,1,3,2,0,3,1,0,1,0,3,2,1,1,2,2,0,3,1,0,1,2,2,2,3,3,0,0,0,0,
438            1,2,1,0,2,1,2,2,2,3,2,3,0,1,3,0,0,1,3,0,0,1,1,0,1,0,0,0,0,2,0,1,
439         },
440         {0,1,2,4,6,7},
441         {4,6}
442      },
443   },
444};
445
446
447const naomi_m2_board::sbox naomi_m2_board::fn2_sboxes[4][4] = {
448   {   // 1st round
449      {
450         {
451            3,3,0,1,0,1,0,0,0,3,0,0,1,3,1,2,0,3,3,3,2,1,0,1,1,1,2,2,2,3,2,2,
452            2,1,3,3,1,3,1,1,0,0,1,2,0,2,2,1,1,2,3,1,2,1,3,1,2,2,0,1,3,0,2,2,
453         },
454         {1,3,4,5,6,7},
455         {0,7}
456      },
457
458      {
459         {
460            0,2,3,2,1,1,0,0,2,1,0,3,3,0,0,0,3,2,0,2,1,1,2,1,0,0,3,1,2,2,3,1,
461            3,1,3,0,0,0,1,3,1,0,0,3,2,2,3,1,1,3,0,0,2,1,3,3,1,3,1,2,3,1,2,1,
462         },
463         {0,3,5,6,-1,-1},
464         {1,2}
465      },
466
467      {
468         {
469            0,2,2,1,0,1,2,1,2,0,1,2,3,3,0,1,3,1,1,2,1,2,1,3,3,2,3,3,2,1,0,1,
470            0,1,0,2,0,1,1,3,2,0,3,2,1,1,1,3,2,3,0,2,3,0,2,2,1,3,0,1,1,2,2,2,
471         },
472         {0,2,3,4,7,-1},
473         {3,4}
474      },
475
476      {
477         {
478            2,3,1,3,2,0,1,2,0,0,3,3,3,3,3,1,2,0,2,1,2,3,0,2,0,1,0,3,0,2,1,0,
479            2,3,0,1,3,0,3,2,3,1,2,0,3,1,1,2,0,3,0,0,2,0,2,1,2,2,3,2,1,2,3,1,
480         },
481         {1,2,5,6,-1,-1},
482         {5,6}
483      },
484   },
485   {   // 2nd round
486      {
487         {
488            2,3,1,3,1,0,3,3,3,2,3,3,2,0,0,3,2,3,0,3,1,1,2,3,1,1,2,2,0,1,0,0,
489            2,1,0,1,2,0,1,2,0,3,1,1,2,3,1,2,0,2,0,1,3,0,1,0,2,2,3,0,3,2,3,0,
490         },
491         {0,1,4,5,6,7},
492         {0,7}
493      },
494
495      {
496         {
497            0,2,2,0,2,2,0,3,2,3,2,1,3,2,3,3,1,1,0,0,3,0,2,1,1,3,3,2,3,2,0,1,
498            1,2,3,0,1,0,3,0,3,1,0,2,1,2,0,3,2,3,1,2,2,0,3,2,3,0,0,1,2,3,3,3,
499         },
500         {0,2,3,6,7,-1},
501         {1,5}
502      },
503
504      {
505         {
506            1,2,3,2,0,3,2,3,0,1,1,0,0,2,2,3,2,0,0,3,0,2,3,3,2,2,1,0,2,1,0,3,
507            1,0,2,0,1,1,0,1,0,0,1,0,3,0,3,3,2,2,0,2,1,1,1,0,3,0,1,3,2,3,2,1,
508         },
509         {2,3,4,6,7,-1},
510         {2,3}
511      },
512
513      {
514         {
515            2,3,1,3,1,1,2,3,3,1,1,0,1,0,2,3,2,1,0,0,2,2,0,1,0,2,2,2,0,2,1,0,
516            3,1,2,3,1,3,0,2,1,0,1,0,0,1,2,2,3,2,3,1,3,2,1,1,2,0,2,1,3,3,1,0,
517         },
518         {1,2,3,4,5,6},
519         {4,6}
520      },
521   },
522   {   // 3rd round
523      {
524         {
525            0,3,0,1,0,2,3,3,1,0,1,3,2,2,1,1,3,3,3,0,2,0,2,0,0,0,2,3,1,1,0,0,
526            3,3,0,3,3,0,0,2,1,1,1,0,2,2,2,0,3,0,3,1,2,2,0,3,0,0,3,2,0,3,2,1,
527         },
528         {1,4,5,6,7,-1},
529         {0,5}
530      },
531
532      {
533         {
534            0,3,0,1,3,0,3,1,3,2,2,2,3,0,3,2,2,1,2,2,0,3,2,2,0,0,2,1,1,3,2,3,
535            2,3,3,1,2,0,1,2,2,1,0,0,0,0,2,3,1,2,0,3,1,3,1,2,3,2,1,0,3,0,0,2,
536         },
537         {0,2,3,4,6,7},
538         {1,7}
539      },
540
541      {
542         {
543            2,2,3,2,0,3,2,3,1,1,2,0,2,3,1,3,0,0,0,3,2,0,1,0,1,3,2,3,3,3,1,0,
544            // unused?
545            255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
546         },
547         {1,2,4,7,-1,-1},
548         {2,4}
549      },
550
551      {
552         {
553            0,2,3,1,3,1,1,0,0,1,3,0,2,1,3,3,2,0,2,1,1,2,3,3,0,0,0,2,0,2,3,0,
554            3,3,3,3,2,3,3,2,3,0,1,0,2,3,3,2,0,1,3,1,0,1,2,3,3,0,2,0,3,0,3,3,
555         },
556         {0,1,2,3,5,7},
557         {3,6}
558      },
559   },
560   {   // 4th round
561      {
562         {
563            0,1,1,0,0,1,0,2,3,3,0,1,2,3,0,2,1,0,3,3,2,0,3,0,0,2,1,0,1,0,1,3,
564            0,3,3,1,2,0,3,0,1,3,2,0,3,3,1,3,0,2,3,3,2,1,1,2,2,1,2,1,2,0,1,1,
565         },
566         {0,1,2,4,7,-1},
567         {0,5}
568      },
569
570      {
571         {
572            2,0,0,2,3,0,2,3,3,1,1,1,2,1,1,0,0,2,1,0,0,3,1,0,0,3,3,0,1,0,1,2,
573            0,2,0,2,0,1,2,3,2,1,1,0,3,3,3,3,3,3,1,0,3,0,0,2,0,3,2,0,2,2,0,1,
574         },
575         {0,1,3,5,6,-1},
576         {1,3}
577      },
578
579      {
580         {
581            0,1,1,2,1,3,1,1,0,0,3,1,1,1,2,0,3,2,0,1,1,2,3,3,3,0,3,0,0,2,0,3,
582            3,2,0,0,3,2,3,1,2,3,0,3,2,0,1,2,2,2,0,2,0,1,2,2,3,1,2,2,1,1,1,1,
583         },
584         {0,2,3,4,5,7},
585         {2,7}
586      },
587
588      {
589         {
590            0,1,2,0,3,3,0,3,2,1,3,3,0,3,1,1,3,2,3,2,3,0,0,0,3,0,2,2,3,2,2,3,
591            2,2,3,1,2,3,1,2,0,3,0,2,3,1,0,0,3,2,1,2,1,2,1,3,1,0,2,3,3,1,3,2,
592         },
593         {2,3,4,5,6,7},
594         {4,6}
595      },
596   },
597};
598
599const int naomi_m2_board::fn1_game_key_scheduling[38][2] = {
600   {1,29},  {1,71},  {2,4},   {2,54},  {3,8},   {4,56},  {4,73},  {5,11},
601   {6,51},  {7,92},  {8,89},  {9,9},   {9,10},  {9,39},  {9,41},  {9,58},
602   {9,59},  {9,86},  {10,90}, {11,6},  {12,64}, {13,49}, {14,44}, {15,40},
603   {16,69}, {17,15}, {18,23}, {18,43}, {19,82}, {20,81}, {21,32}, {21,61},
604   {22,5},  {23,66}, {24,13}, {24,45}, {25,12}, {25,35}
605};
606
607const int naomi_m2_board::fn2_game_key_scheduling[34][2] = {
608   {0,0},   {1,3},   {2,11},  {3,20},  {4,22},  {5,23},  {6,29},  {7,38},
609   {8,39},  {9,47},  {9,55},  {9,86},  {9,87},  {9,90},  {10,50}, {10,53},
610   {11,57}, {12,59}, {13,61}, {13,64}, {14,63}, {15,67}, {16,72}, {17,83},
611   {18,88}, {19,94}, {20,35}, {21,17}, {21,92}, {22,6},  {22,11}, {23,85},
612   {24,16}, {25,25}
613};
614
615const int naomi_m2_board::fn1_sequence_key_scheduling[20][2] = {
616   {0,52},  {1,34},  {2,17},  {3,36}, {4,84},  {4,88},  {5,57},  {6,48},
617   {6,68},  {7,76},  {8,83},  {9,30}, {10,22}, {10,41}, {11,38}, {12,55},
618   {13,74}, {14,19}, {14,80}, {15,26}
619};
620
621const int naomi_m2_board::fn2_sequence_key_scheduling[16] = {77,34,8,42,36,27,69,66,13,9,79,31,49,7,24,64};
622
623const int naomi_m2_board::fn2_middle_result_scheduling[16] = {1,10,44,68,74,78,81,95,2,4,30,40,41,51,53,58};
624
625int naomi_m2_board::feistel_function(int input, const struct sbox *sboxes, UINT32 subkeys)
200UINT16 naomi_m2_board::read_callback(UINT32 addr)
626201{
627   int k,m;
628   int aux;
629   int result=0;
202   if ((addr & 0xffff0000) == 0x01000000) {
203      int base = 2*(addr & 0x7fff);
204      return ram[base+1] | (ram[base] << 8);
630205
631   for (m=0; m<4; ++m) { // 4 sboxes
632      for (k=0, aux=0; k<6; ++k)
633         if (sboxes[m].inputs[k]!=-1)
634            aux |= BIT(input, sboxes[m].inputs[k]) << k;
635
636      aux = sboxes[m].table[(aux^subkeys)&0x3f];
637
638      for (k=0; k<2; ++k)
639         result |= BIT(aux,k) << sboxes[m].outputs[k];
640
641      subkeys >>=6;
642206   }
643
644   return result;
645}
646
647/**************************
648This implementation is an "educational" version. It must be noted that it can be speed-optimized in a number of ways.
649The most evident one is to factor out the parts of the key-scheduling that must only be done once (like the game-key &
650sequence-key parts) as noted in the comments inlined in the function. More sophisticated speed-ups can be gained by
651noticing that the weak key-scheduling would allow to create some pregenerated look-up tables for doing most of the work
652of the function. Even so, it would still be pretty slow, so caching techniques could be a wiser option here.
653**************************/
654
655UINT16 naomi_m2_board::block_decrypt(UINT32 game_key, UINT16 sequence_key, UINT16 counter, UINT16 data)
656{
657   int j;
658   int aux,aux2;
659   int A,B;
660   int middle_result;
661   UINT32 fn1_subkeys[4];
662   UINT32 fn2_subkeys[4];
663
664   /* Game-key scheduling; this could be done just once per game at initialization time */
665   memset(fn1_subkeys,0,sizeof(UINT32)*4);
666   memset(fn2_subkeys,0,sizeof(UINT32)*4);
667
668   for (j=0; j<38; ++j) {
669      if (BIT(game_key, fn1_game_key_scheduling[j][0])!=0) {
670         aux = fn1_game_key_scheduling[j][1]%24;
671         aux2 = fn1_game_key_scheduling[j][1]/24;
672         fn1_subkeys[aux2] ^= (1<<aux);
673      }
207   else {
208      const UINT8 *base = m_region->base() + 2*addr;
209      return base[1] | (base[0] << 8);
674210   }
675
676   for (j=0; j<34; ++j) {
677      if (BIT(game_key, fn2_game_key_scheduling[j][0])!=0) {
678         aux = fn2_game_key_scheduling[j][1]%24;
679         aux2 = fn2_game_key_scheduling[j][1]/24;
680         fn2_subkeys[aux2] ^= (1<<aux);
681      }
682   }
683   /********************************************************/
684
685   /* Sequence-key scheduling; this could be done just once per decryption run */
686   for (j=0; j<20; ++j) {
687      if (BIT(sequence_key,fn1_sequence_key_scheduling[j][0])!=0) {
688         aux = fn1_sequence_key_scheduling[j][1]%24;
689         aux2 = fn1_sequence_key_scheduling[j][1]/24;
690         fn1_subkeys[aux2] ^= (1<<aux);
691      }
692   }
693
694   for (j=0; j<16; ++j) {
695      if (BIT(sequence_key,j)!=0) {
696         aux = fn2_sequence_key_scheduling[j]%24;
697         aux2 = fn2_sequence_key_scheduling[j]/24;
698         fn2_subkeys[aux2] ^= (1<<aux);
699      }
700   }
701
702   // subkeys bits 10 & 41
703   fn2_subkeys[0] ^= (BIT(sequence_key,2)<<10);
704   fn2_subkeys[1] ^= (BIT(sequence_key,4)<<17);
705   /**************************************************************/
706
707   // First Feistel Network
708
709   aux = BITSWAP16(counter,5,12,14,13,9,3,6,4,    8,1,15,11,0,7,10,2);
710
711   // 1st round
712   B = aux >> 8;
713   A = (aux & 0xff) ^ feistel_function(B,fn1_sboxes[0],fn1_subkeys[0]);
714
715   // 2nd round
716   B = B ^ feistel_function(A,fn1_sboxes[1],fn1_subkeys[1]);
717
718   // 3rd round
719   A = A ^ feistel_function(B,fn1_sboxes[2],fn1_subkeys[2]);
720
721   // 4th round
722   B = B ^ feistel_function(A,fn1_sboxes[3],fn1_subkeys[3]);
723
724   middle_result = (B<<8)|A;
725
726
727   /* Middle-result-key sheduling */
728   for (j=0; j<16; ++j) {
729      if (BIT(middle_result,j)!=0) {
730         aux = fn2_middle_result_scheduling[j]%24;
731         aux2 = fn2_middle_result_scheduling[j]/24;
732         fn2_subkeys[aux2] ^= (1<<aux);
733      }
734   }
735   /*********************/
736
737   // Second Feistel Network
738
739   aux = BITSWAP16(data,14,3,8,12,13,7,15,4,    6,2,9,5,11,0,1,10);
740
741   // 1st round
742   B = aux >> 8;
743   A = (aux & 0xff) ^ feistel_function(B,fn2_sboxes[0],fn2_subkeys[0]);
744
745   // 2nd round
746   B = B ^ feistel_function(A,fn2_sboxes[1],fn2_subkeys[1]);
747
748   // 3rd round
749   A = A ^ feistel_function(B,fn2_sboxes[2],fn2_subkeys[2]);
750
751   // 4th round
752   B = B ^ feistel_function(A,fn2_sboxes[3],fn2_subkeys[3]);
753
754   aux = (B<<8)|A;
755
756   aux = BITSWAP16(aux,15,7,6,14,13,12,5,4,    3,2,11,10,9,1,0,8);
757
758   return aux;
759211}
760212
761UINT16 naomi_m2_board::get_decrypted_16()
762{
763   UINT16 enc;
213static MACHINE_CONFIG_FRAGMENT( naomim2 )
214   MCFG_DEVICE_ADD("segam2crypt", SEGA315_5881_CRYPT, 0)
215   MCFG_SET_READ_CALLBACK(naomi_m2_board, read_callback)
216MACHINE_CONFIG_END
764217
765   if((prot_cur_address & 0xffff0000) == 0x01000000) {
766      int base = 2*(prot_cur_address & 0x7fff);
767      enc = ram[base+1] | (ram[base] << 8);
768   } else {
769      const UINT8 *base = m_region->base() + 2*prot_cur_address;
770      enc = base[1] | (base[0] << 8);
771   }
772
773   UINT16 dec = block_decrypt(key, subkey, prot_cur_address, enc);
774   UINT16 res = (dec & 3) | (dec_hist & 0xfffc);
775   dec_hist = dec;
776
777   prot_cur_address ++;
778   return res;
779}
780
781void naomi_m2_board::enc_start()
218machine_config_constructor naomi_m2_board::device_mconfig_additions() const
782219{
783   buffer_pos = BUFFER_SIZE;
784   dec_header = get_decrypted_16() << 16;
785   dec_header |= get_decrypted_16();
786
787   if(dec_header & FLAG_COMPRESSED) {
788      line_buffer_size = dec_header & FLAG_LINE_SIZE_512 ? 512 : 256;
789      line_buffer_pos = line_buffer_size;
790      buffer_bit = 7;
791   }
792   enc_ready = true;
220   return MACHINE_CONFIG_NAME( naomim2 );
793221}
794222
795void naomi_m2_board::enc_fill()
796{
797   assert(buffer_pos == BUFFER_SIZE);
798   for(int i = 0; i != BUFFER_SIZE; i+=2) {
799      UINT16 val = get_decrypted_16();
800      buffer[i] = val;
801      buffer[i+1] = val >> 8;
802   }
803   buffer_pos = 0;
804}
805
806/* node format
8070xxxxxxx - next node index
8081a0bbccc - end node
809           a - 0 = repeat
810               1 = fetch
811           b - if a = 1
812               00 - fetch  0
813               01 - fetch  1
814               11 - fetch -1
815               if a = 0
816               000
817           c - repeat/fetch counter
818               count = ccc + 1
81911111111 - empty node
820*/
821const UINT8 naomi_m2_board::trees[9][2][32] = {
822   {
823      {0x01,0x10,0x0f,0x05,0xc4,0x13,0x87,0x0a,0xcc,0x81,0xce,0x0c,0x86,0x0e,0x84,0xc2,
824         0x11,0xc1,0xc3,0xcf,0x15,0xc8,0xcd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
825      {0xc7,0x02,0x03,0x04,0x80,0x06,0x07,0x08,0x09,0xc9,0x0b,0x0d,0x82,0x83,0x85,0xc0,
826         0x12,0xc6,0xc5,0x14,0x16,0xca,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
827   },
828   {
829      {0x02,0x80,0x05,0x04,0x81,0x10,0x15,0x82,0x09,0x83,0x0b,0x0c,0x0d,0xdc,0x0f,0xde,
830         0x1c,0xcf,0xc5,0xdd,0x86,0x16,0x87,0x18,0x19,0x1a,0xda,0xca,0xc9,0x1e,0xce,0xff,},
831      {0x01,0x17,0x03,0x0a,0x08,0x06,0x07,0xc2,0xd9,0xc4,0xd8,0xc8,0x0e,0x84,0xcb,0x85,
832         0x11,0x12,0x13,0x14,0xcd,0x1b,0xdb,0xc7,0xc0,0xc1,0x1d,0xdf,0xc3,0xc6,0xcc,0xff,},
833   },
834   {
835      {0xc6,0x80,0x03,0x0b,0x05,0x07,0x82,0x08,0x15,0xdc,0xdd,0x0c,0xd9,0xc2,0x14,0x10,
836         0x85,0x86,0x18,0x16,0xc5,0xc4,0xc8,0xc9,0xc0,0xcc,0xff,0xff,0xff,0xff,0xff,0xff,},
837      {0x01,0x02,0x12,0x04,0x81,0x06,0x83,0xc3,0x09,0x0a,0x84,0x11,0x0d,0x0e,0x0f,0x19,
838         0xca,0xc1,0x13,0xd8,0xda,0xdb,0x17,0xde,0xcd,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,},
839   },
840   {
841      {0x01,0x80,0x0d,0x04,0x05,0x15,0x83,0x08,0xd9,0x10,0x0b,0x0c,0x84,0x0e,0xc0,0x14,
842         0x12,0xcb,0x13,0xca,0xc8,0xc2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
843      {0xc5,0x02,0x03,0x07,0x81,0x06,0x82,0xcc,0x09,0x0a,0xc9,0x11,0xc4,0x0f,0x85,0xd8,
844         0xda,0xdb,0xc3,0xdc,0xdd,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
845   },
846   {
847      {0x01,0x80,0x06,0x0c,0x05,0x81,0xd8,0x84,0x09,0xdc,0x0b,0x0f,0x0d,0x0e,0x10,0xdb,
848         0x11,0xca,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
849      {0xc4,0x02,0x03,0x04,0xcb,0x0a,0x07,0x08,0xd9,0x82,0xc8,0x83,0xc0,0xc1,0xda,0xc2,
850         0xc9,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
851   },
852   {
853      {0x01,0x02,0x06,0x0a,0x83,0x0b,0x07,0x08,0x09,0x82,0xd8,0x0c,0xd9,0xda,0xff,0xff,
854         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
855      {0xc3,0x80,0x03,0x04,0x05,0x81,0xca,0xc8,0xdb,0xc9,0xc0,0xc1,0x0d,0xc2,0xff,0xff,
856         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
857   },
858   {
859      {0x01,0x02,0x03,0x04,0x81,0x07,0x08,0xd8,0xda,0xd9,0xff,0xff,0xff,0xff,0xff,0xff,
860         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
861      {0xc2,0x80,0x05,0xc9,0xc8,0x06,0x82,0xc0,0x09,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,
862         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
863   },
864   {
865      {0x01,0x80,0x04,0xc8,0xc0,0xd9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
866         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
867      {0xc1,0x02,0x03,0x81,0x05,0xd8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
868         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
869   },
870   {
871      {0x01,0xd8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
872         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
873      {0xc0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
874         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
875   },
876};
877
878int naomi_m2_board::get_compressed_bit()
879{
880   if(buffer_pos == BUFFER_SIZE)
881      enc_fill();
882   int res = (buffer[buffer_pos^1] >> buffer_bit) & 1;
883   buffer_bit--;
884   if(buffer_bit == -1) {
885      buffer_bit = 7;
886      buffer_pos++;
887   }
888   return res;
889}
890
891void naomi_m2_board::line_fill()
892{
893   assert(line_buffer_pos == line_buffer_size);
894   UINT8 *lp = line_buffer;
895   UINT8 *lc = line_buffer_prev;
896   line_buffer = lc;
897   line_buffer_prev = lp;
898   line_buffer_pos = 0;
899
900   UINT32 line_buffer_mask = line_buffer_size-1;
901
902   for(int i=0; i != line_buffer_size;) {
903      // vlc 0: start of line
904      // vlc 1: interior of line
905      // vlc 2-9: 7-1 bytes from end of line
906
907      int slot = i ? i < line_buffer_size - 7 ? 1 : (i & 7) + 1 : 0;
908
909      UINT32 tmp = 0;
910      while (!(tmp&0x80))
911         if(get_compressed_bit())
912            tmp = trees[slot][1][tmp];
913         else
914            tmp = trees[slot][0][tmp];
915      if(tmp != 0xff) {
916         int count = (tmp & 7) + 1;
917
918         if(tmp&0x40) {
919            // Copy from previous line
920
921            static int offsets[4] = {0, 1, 0, -1};
922            int offset = offsets[(tmp & 0x18) >> 3];
923            for(int j=0; j != count; j++) {
924               lc[i^1] = lp[((i+offset) & line_buffer_mask)^1];
925               i++;
926            }
927
928         } else {
929            // Get a byte in the stream and write n times
930            UINT8 byte;
931            byte =         get_compressed_bit()  << 1;
932            byte = (byte | get_compressed_bit()) << 1;
933            byte = (byte | get_compressed_bit()) << 1;
934            byte = (byte | get_compressed_bit()) << 1;
935            byte = (byte | get_compressed_bit()) << 1;
936            byte = (byte | get_compressed_bit()) << 1;
937            byte = (byte | get_compressed_bit()) << 1;
938            byte =  byte | get_compressed_bit();
939            for(int j=0; j != count; j++)
940               lc[(i++)^1] = byte;
941
942         }
943      }
944   }
945}
trunk/src/mame/machine/naomim2.h
r241752r241753
22#define _NAOMIM2_H_
33
44#include "naomibd.h"
5#include "315-5881_crypt.h"
56
67#define MCFG_NAOMI_M2_BOARD_ADD(_tag, _key_tag, _eeprom_tag, _actel_tag, _irq_cb) \
78   MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_M2_BOARD, _eeprom_tag, _actel_tag, _irq_cb) \
r241752r241753
1112{
1213public:
1314   naomi_m2_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
15   UINT32 rom_cur_address;
16   static const int RAM_SIZE = 65536;
17   UINT8* ram;
1418
1519   static void static_set_tags(device_t &device, const char *_key_tag);
20   UINT16 read_callback(UINT32 addr);
1621
1722protected:
1823   virtual void device_start();
1924   virtual void device_reset();
25   virtual machine_config_constructor device_mconfig_additions() const;
2026
2127   virtual void board_setup_address(UINT32 address, bool is_dma);
2228   virtual void board_get_buffer(UINT8 *&base, UINT32 &limit);
r241752r241753
2430   virtual void board_write(offs_t offset, UINT16 data);
2531
2632private:
27   enum {
28      RAM_SIZE = 65536, BUFFER_SIZE = 32768, LINE_SIZE = 512,
29      FLAG_COMPRESSED = 0x10000, FLAG_LINE_SIZE_512 = 0x20000
30   };
3133
34
3235   const char *key_tag;
33   UINT32 key;
3436
35   UINT8 *ram, *buffer, *line_buffer, *line_buffer_prev;
36   UINT32 rom_cur_address, prot_cur_address;
37   UINT16 subkey, dec_hist;
38   UINT32 dec_header;
39   bool enc_ready;
40
41   int buffer_pos, line_buffer_pos, line_buffer_size, buffer_bit;
42
43   struct sbox {
44      UINT8 table[64];
45      int inputs[6];      // positions of the inputs bits, -1 means no input except from key
46      int outputs[2];     // positions of the output bits
47   };
48
49   static const sbox fn1_sboxes[4][4];
50   static const sbox fn2_sboxes[4][4];
51
52   static const int fn1_game_key_scheduling[38][2];
53   static const int fn2_game_key_scheduling[34][2];
54   static const int fn1_sequence_key_scheduling[20][2];
55   static const int fn2_sequence_key_scheduling[16];
56   static const int fn2_middle_result_scheduling[16];
57
58   static const UINT8 trees[9][2][32];
59
60   int feistel_function(int input, const struct sbox *sboxes, UINT32 subkeys);
61   UINT16 block_decrypt(UINT32 game_key, UINT16 sequence_key, UINT16 counter, UINT16 data);
62
63   UINT16 get_decrypted_16();
64   int get_compressed_bit();
65
66   void enc_start();
67   void enc_fill();
68   void line_fill();
37   
38   required_device<sega_315_5881_crypt_device> m_cryptdevice;
6939};
7040
7141extern const device_type NAOMI_M2_BOARD;
trunk/src/mame/machine/pgmprot_igs025_igs012.c
r241752r241753
202202   mem16[0x130366 / 2] = 0x4e93;
203203   mem16[0x1303f6 / 2] = 0x4e93;
204204}
205
206DRIVER_INIT_MEMBER(pgm_012_025_state,drgw2hk)
207{
208   drgw2_common_init();
209
210   // todo, correct protection sequence for this region?
211   int region = 0x01;
212   m_igs025->m_kb_region = region;
213   m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24);
214
215   UINT16 *mem16 = (UINT16 *)memregion("maincpu")->base();
216   mem16[0x12f520 / 2] = 0x4e93;
217   mem16[0x12f5c6 / 2] = 0x4e93;
218   mem16[0x12f656 / 2] = 0x4e93;
219}
trunk/src/mame/machine/segabb.c
r0r241753
1#include "segabb.h"
2
3const device_type SEGA_LINDBERGH_BASEBOARD = &device_creator<sega_lindbergh_baseboard_device>;
4
5DEVICE_ADDRESS_MAP_START(map1, 32, sega_lindbergh_baseboard_device)
6ADDRESS_MAP_END
7
8DEVICE_ADDRESS_MAP_START(map2, 32, sega_lindbergh_baseboard_device)
9ADDRESS_MAP_END
10
11DEVICE_ADDRESS_MAP_START(map3, 32, sega_lindbergh_baseboard_device)
12ADDRESS_MAP_END
13
14sega_lindbergh_baseboard_device::sega_lindbergh_baseboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
15   : pci_device(mconfig, SEGA_LINDBERGH_BASEBOARD, "SEGA Lindbergh baseboard", tag, owner, clock, "sega_lindbergh_baseboard", __FILE__)
16{
17}
18
19void sega_lindbergh_baseboard_device::device_start()
20{
21   pci_device::device_start();
22   add_map(   128*1024, M_MEM, FUNC(sega_lindbergh_baseboard_device::map1));
23   add_map(  1024*1024, M_MEM, FUNC(sega_lindbergh_baseboard_device::map2));
24   add_map(2*1024*1024, M_MEM, FUNC(sega_lindbergh_baseboard_device::map3));   
25}
26
27void sega_lindbergh_baseboard_device::device_reset()
28{
29   pci_device::device_reset();
30}
trunk/src/mame/machine/segabb.h
r0r241753
1// Lindbergh Sega baseboard
2
3#ifndef SEGABB_H
4#define SEGABB_H
5
6#include "machine/pci.h"
7
8#define MCFG_SEGA_LINDBERGH_BASEBOARD_ADD(_tag) \
9   MCFG_PCI_DEVICE_ADD(_tag, SEGA_LINDBERGH_BASEBOARD, 0x105718c1, 0x10, 0x068000, 0x11db067b)
10
11class sega_lindbergh_baseboard_device : public pci_device {
12public:
13   sega_lindbergh_baseboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
14
15protected:
16   virtual void device_start();
17   virtual void device_reset();
18
19private:
20   DECLARE_ADDRESS_MAP(map1, 32);
21   DECLARE_ADDRESS_MAP(map2, 32);
22   DECLARE_ADDRESS_MAP(map3, 32);
23};
24
25extern const device_type SEGA_LINDBERGH_BASEBOARD;
26
27#endif
trunk/src/mame/machine/slapstic.c
r241752r241753
180180
181181*************************************************************************/
182182
183#include "emu.h"
184#include "cpu/m6800/m6800.h"
183
185184#include "includes/slapstic.h"
186#include "cpu/m68000/m68000.h"
187185
188186
189/*************************************
190 *
191 *  Debugging
192 *
193 *************************************/
187extern const device_type SLAPSTIC = &device_creator<atari_slapstic_device>;
194188
195#define LOG_SLAPSTIC    (0)
189atari_slapstic_device::atari_slapstic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
190   : device_t(mconfig, SLAPSTIC, "Atari Slapstic", tag, owner, clock, "slapstic", __FILE__),
191   state(0),
192   current_bank(0),
193   access_68k(-1),
194   alt_bank(0),
195   bit_bank(0),
196   add_bank(0),
197   bit_xor(0)
198{
199   slapstic.bankstart = 0;
200   slapstic.bank[0] = slapstic.bank[1] = slapstic.bank[2] = slapstic.bank[3] = 0;
201   slapstic.alt1.mask = 0;
202   slapstic.alt1.value = 0;
203   slapstic.alt2.mask = 0;
204   slapstic.alt2.value = 0;
205   slapstic.alt3.mask = 0;
206   slapstic.alt3.value = 0;
207   slapstic.alt4.mask = 0;
208   slapstic.alt4.value = 0;
209   slapstic.altshift = 0;
210   slapstic.bit1.mask = 0;
211   slapstic.bit1.value = 0;
212   slapstic.bit2c0.mask = 0;
213   slapstic.bit2c0.value = 0;
214   slapstic.bit2s0.mask = 0;
215   slapstic.bit2s0.value = 0;
216   slapstic.bit2c1.mask = 0;
217   slapstic.bit2c1.value = 0;
218   slapstic.bit2s1.mask = 0;
219   slapstic.bit2s1.value = 0;
220   slapstic.bit3.mask = 0;
221   slapstic.bit3.value = 0;
222   slapstic.add1.mask = 0;
223   slapstic.add1.value = 0;
224   slapstic.add2.mask = 0;
225   slapstic.add2.value = 0;
226   slapstic.addplus1.mask = 0;
227   slapstic.addplus1.value = 0;
228   slapstic.addplus2.mask = 0;
229   slapstic.addplus2.value = 0;
230   slapstic.add3.mask = 0;
231   slapstic.add3.value = 0;
232}
196233
197234
198235
199/*************************************
200 *
201 *  Structure of slapstic params
202 *
203 *************************************/
204
205struct mask_value
236void atari_slapstic_device::device_start()
206237{
207   int mask, value;
208};
209238
239}
210240
211struct slapstic_data
241void atari_slapstic_device::device_reset()
212242{
213   int bankstart;
214   int bank[4];
215243
216   struct mask_value alt1;
217   struct mask_value alt2;
218   struct mask_value alt3;
219   struct mask_value alt4;
220   int altshift;
244}
221245
222   struct mask_value bit1;
223   struct mask_value bit2c0;
224   struct mask_value bit2s0;
225   struct mask_value bit2c1;
226   struct mask_value bit2s1;
227   struct mask_value bit3;
228
229   struct mask_value add1;
230   struct mask_value add2;
231   struct mask_value addplus1;
232   struct mask_value addplus2;
233   struct mask_value add3;
234};
235
236
237
238246/*************************************
239247 *
240 *  Shorthand
241 *
242 *************************************/
243
244#define UNKNOWN 0xffff
245#define NO_BITWISE          \
246   { UNKNOWN,UNKNOWN },    \
247   { UNKNOWN,UNKNOWN },    \
248   { UNKNOWN,UNKNOWN },    \
249   { UNKNOWN,UNKNOWN },    \
250   { UNKNOWN,UNKNOWN },    \
251   { UNKNOWN,UNKNOWN }
252#define NO_ADDITIVE         \
253   { UNKNOWN,UNKNOWN },    \
254   { UNKNOWN,UNKNOWN },    \
255   { UNKNOWN,UNKNOWN },    \
256   { UNKNOWN,UNKNOWN },    \
257   { UNKNOWN,UNKNOWN }
258
259#define MATCHES_MASK_VALUE(val, maskval)    (((val) & (maskval).mask) == (maskval).value)
260
261
262
263/*************************************
264 *
265 *  Constants
266 *
267 *************************************/
268
269enum
270{
271   DISABLED,
272   ENABLED,
273   ALTERNATE1,
274   ALTERNATE2,
275   ALTERNATE3,
276   BITWISE1,
277   BITWISE2,
278   BITWISE3,
279   ADDITIVE1,
280   ADDITIVE2,
281   ADDITIVE3
282};
283
284
285
286/*************************************
287 *
288248 *  Slapstic definitions
289249 *
290250 *************************************/
r241752r241753
779739
780740
781741
782/*************************************
783 *
784 *  Statics
785 *
786 *************************************/
787742
788static UINT8 state;
789static UINT8 current_bank;
790static UINT8 access_68k;
791
792static UINT8 alt_bank;
793static UINT8 bit_bank;
794static UINT8 add_bank;
795static UINT8 bit_xor;
796
797static struct slapstic_data slapstic;
798
799
800static void slapstic_log(running_machine &machine, offs_t offset);
801static FILE *slapsticlog;
802
803
804743/*************************************
805744 *
806745 *  Initialization
807746 *
808747 *************************************/
809748
810void slapstic_init(running_machine &machine, int chip)
749void atari_slapstic_device::slapstic_init(running_machine &machine, int chip)
811750{
812   device_type cputype = machine.device("maincpu")->type();
751   if (access_68k == -1)
752   {
753      /* see if we're 68k or 6502/6809 based */
754      printf("oh\n");
755      device_type cputype = machine.device(":maincpu")->type();
756      access_68k = (cputype == M68000 || cputype == M68010);
757   }
813758
814759   /* only a small number of chips are known to exist */
815760   if (chip < 101 || chip > 118)
r241752r241753
823768   /* reset the chip */
824769   slapstic_reset();
825770
826   /* see if we're 68k or 6502/6809 based */
827   access_68k = (cputype == M68000 || cputype == M68010);
828771
829772   /* save state */
830   state_save_register_item(machine, "slapstic", NULL, 0, state);
831   state_save_register_item(machine, "slapstic", NULL, 0, current_bank);
832   state_save_register_item(machine, "slapstic", NULL, 0, alt_bank);
833   state_save_register_item(machine, "slapstic", NULL, 0, bit_bank);
834   state_save_register_item(machine, "slapstic", NULL, 0, add_bank);
835   state_save_register_item(machine, "slapstic", NULL, 0, bit_xor);
773   save_item(NAME(state));
774   save_item(NAME(current_bank));
775   save_item(NAME(alt_bank));
776   save_item(NAME(bit_bank));
777   save_item(NAME(add_bank));
778   save_item(NAME(bit_xor));
836779}
837780
838781
839void slapstic_reset(void)
782void atari_slapstic_device::slapstic_reset(void)
840783{
841784   /* reset the chip */
842785   state = DISABLED;
r241752r241753
853796 *
854797 *************************************/
855798
856int slapstic_bank(void)
799int atari_slapstic_device::slapstic_bank(void)
857800{
858801   return current_bank;
859802}
r241752r241753
866809 *
867810 *************************************/
868811
869static int alt2_kludge(address_space &space, offs_t offset)
812int atari_slapstic_device::alt2_kludge(address_space &space, offs_t offset)
870813{
871814   /* Of the 3 alternate addresses, only the middle one needs to actually hit
872815      in the slapstic region; the first and third ones can be anywhere in the
r241752r241753
913856 *
914857 *************************************/
915858
916int slapstic_tweak(address_space &space, offs_t offset)
859int atari_slapstic_device::slapstic_tweak(address_space &space, offs_t offset)
917860{
918861   /* reset is universal */
919862   if (offset == 0x0000)
r241752r241753
11371080 *
11381081 *************************************/
11391082
1140static void slapstic_log(running_machine &machine, offs_t offset)
1083void atari_slapstic_device::slapstic_log(running_machine &machine, offs_t offset)
11411084{
11421085   static attotime last_time;
11431086
trunk/src/mame/machine/stvprot.c
r241752r241753
572572*
573573*************************************/
574574
575// the naomi hookup of 315-5881 reads 16-bits at a time, here we seem to read 32?
576
575577READ32_MEMBER( stv_state::common_prot_r )
576578{
577579   UINT32 *ROM = (UINT32 *)space.machine().root_device().memregion("abus")->base();
r241752r241753
588590
589591         logerror("A-Bus control protection read at %06x with data = %08x Returning = %08x Would otherwise return = %08x\n",space.device().safe_pc(),m_abus_protkey, retdata, realret);
590592
593         //UINT16 res = m_cryptdevice->do_decrypt(base);
594
591595         m_ctrl_index += 4;
592596         return retdata;
593597
r241752r241753
602606}
603607
604608
609UINT16 stv_state::crypt_read_callback(UINT32 addr)
610{
611   const UINT8 *base = m_cart_reg[0]->base() + 2*addr;
612   return base[1] | (base[0] << 8);
613}
605614
606
607615WRITE32_MEMBER ( stv_state::common_prot_w )
608616{
609617   COMBINE_DATA(&m_a_bus[offset]);
r241752r241753
616624   else if(offset == 2)
617625   {
618626      COMBINE_DATA(&m_abus_prot_addr);
627
628      m_cryptdevice->set_addr_low(m_abus_prot_addr >> 16);
629      m_cryptdevice->set_addr_high(m_abus_prot_addr&0xffff);
630
619631   }
620632   else if(offset == 3)
621633   {
622634      COMBINE_DATA(&m_abus_protkey);
635
636      m_cryptdevice->set_subkey(m_abus_protkey>>16);
637
638
623639      int a_bus_vector;
624640      a_bus_vector = m_abus_prot_addr >> 16;
625641      a_bus_vector|= (m_abus_prot_addr & 0xffff) << 16;
r241752r241753
655671{
656672   install_common_protection();
657673   m_prot_readback = astrass_prot_read_callback;
674//   m_cryptdevice->set_key(0x00000000);
658675}
659676
660677void stv_state::install_ffreveng_protection()
trunk/src/mame/machine/zndip.h
r241752r241753
4242
4343   int m_select;
4444   int m_clock;
45   int m_datain;
4645
4746   UINT8 m_bit;
4847   emu_timer *m_dip_timer;
trunk/src/mame/mame.lst
r241752r241753
441441bigkong         // bootleg
442442monkeyd         // bootleg
443443dking           // Crazy Kong Bootleg
444ckongdks      // Spanish Crazy Kong bootleg
444445ckongpt2        // (c) 1981 Falcon
445446ckongpt2a       // (c) 1981 Falcon
446447ckongpt2j       // (c) 1981 Falcon
r241752r241753
14751476gunchamp        // (c) 1980 Model Racing
14761477gunchamps       // (c) 1980 Model Racing (sshot.c)
14771478spaceatt        // (c) 1978 Video Games GMBH
1479galmonst      // (c) Laguna S.A.
14781480spaceat2        // (c) 1980 Zenitone-Microsec Ltd
14791481spacecom        // bootleg
14801482sinvzen         // Zenitone-Microsec Ltd
r241752r241753
17961798youjyudn        // (c) 1986 (Japan)
17971799
17981800vigilant        // (c) 1988 (World)
1801vigilantb      // (c) 1988 (World)
17991802vigilant1       // (c) 1988 (World)
18001803vigilantu       // (c) 1988 (US)
18011804vigilantu2      // (c) 1988 (US)
r241752r241753
25202523pbobble3u       // 1996.11 E29 (c) 1996 Taito Corporation (US)
25212524pbobble3j       // 1996.11 E29 (c) 1996 Taito Corporation (Japan)
25222525arkretrn        // 1997.03 E36 (c) 1997 Taito Corporation (World)
2526arkretrnu       // 1997.03 E36 (c) 1997 Taito Corporation (US)
25232527arkretrnj       // 1997.03 E36 (c) 1997 Taito Corporation (Japan)
25242528kirameki        // 1997.09 E44 (c) 1997 Taito Corporation (Japan)
25252529puchicar        // 1997.?? E46 (c) 1997 Taito Corporation (World)
r241752r241753
27432747batriderja      // (c) 1998 Raizing/8ing
27442748batridert       // (c) 1998 Raizing/8ing
27452749bbakraid        // (c) 1999 8ing
2750bbakraidc       // (c) 1999 8ing
27462751bbakraidj       // (c) 1999 8ing
27472752bbakraidja      // (c) 1999 8ing
27482753
r241752r241753
28422847crusherm        // (c) 1999 Takumi
28432848tjumpman        // (c) 1999 Namco
28442849
2845mushisam
2846mushisama
2847mushisamb
2848espgal2
2849ibara
2850ibarablk
2851ibarablka
2852mushitam
2853mushitama
2854futari15
2855futari15a
2856futari10
2857futaribl
2858pinkswts
2859pinkswtsa
2860pinkswtsb
2861pinkswtsx
2862deathsml
2863mmpork
2864mmmbanc
2865ddpdfk
2866ddpdfk10
2867dsmbl
2850mushisam        // (c) 2004 Cave (AMI license) - 2004/10/12.MASTER VER.
2851mushisama       // (c) 2004 Cave (AMI license) - 2004/10/12 MASTER VER.     
2852mushisamb       // (c) 2004 Cave (AMI license) - 2004/10/12 MASTER VER
2853espgal2         // (c) 2005 Cave (AMI license) - 2005/11/14 MASTER VER
2854ibara           // (c) 2005 Cave (AMI license) - 2005/03/22 MASTER VER..
2855ibarablk        // (c) 2005 Cave (AMI license) - 2006/02/06. MASTER VER.
2856ibarablka       // (c) 2005 Cave (AMI license) - 2006/02/06 MASTER VER.
2857mushitam        // (c) 2005 Cave (AMI license) - 2005/09/09.MASTER VER
2858mushitama       // (c) 2005 Cave (AMI license) - 2005/09/09 MASTER VER
2859futari15        // (c) 2006 Cave (AMI license) - 2006/12/8.MASTER VER. 1.54.
2860futari15a       // (c) 2006 Cave (AMI license) - 2006/12/8 MASTER VER 1.54
2861futari10        // (c) 2006 Cave (AMI license) - 2006/10/23 MASTER VER.
2862futaribl        // (c) 2007 Cave (AMI license) - 2009/11/27 INTERNATIONAL BL
2863futariblj       // (c) 2007 Cave (AMI license) - 2007/12/11 BLACK LABEL VER
2864pinkswts        // (c) 2006 Cave (AMI license) - 2006/04/06 MASTER VER....
2865pinkswtsa       // (c) 2006 Cave (AMI license) - 2006/04/06 MASTER VER...
2866pinkswtsb       // (c) 2006 Cave (AMI license) - 2006/04/06 MASTER VER.
2867pinkswtsx       // (c) 2006 Cave (AMI license) - 2006/xx/xx MASTER VER.
2868deathsml        // (c) 2007 Cave (AMI license) - 2007/10/09 MASTER VER
2869mmpork          // (c) 2007 Cave (AMI license) - 2007/ 4/17 MASTER VER.
2870mmmbanc         // (c) 2007 Cave (AMI license) - 2007/06/05 MASTER VER.
2871ddpdfk          // (c) 2008 Cave (AMI license) - 2008/06/23  MASTER VER 1.5
2872ddpdfk10        // (c) 2008 Cave (AMI license) - 2008/05/16  MASTER VER
2873dsmbl           // (c) 2008 Cave (AMI license) - 2008/10/06 MEGABLACK LABEL VER
28682874
28692875deathsm2
28702876
r241752r241753
46844690desertbr        // 1993.?? Desert Breaker (World, FD1094, decrypted)
46854691desertbrj       // 1992.10 Desert Breaker (Japan)
46864692pontoon
4693hamaway
46874694
46884695// System18 Bootlegs
46894696astormbl        // BOOTLEG
r241752r241753
54765483wldrider        // 2001.05 Wild Riders
54775484clubkrte        // 2001.06 Club Kart: European Session
54785485clubkrtd        // 2001.06 Club Kart: European Session (Rev D)
5486clubkrtc        // 2001.?? Club Kart: European Session (Rev C)
54795487beachspi        // 2001.07 Beach Spikers
54805488vf4cart         // 2001.08.02 Virtua Fighter 4 (cartridge)
54815489vf4             // 2001.08.02 Virtua Fighter 4 (GD-ROM)
r241752r241753
54955503initdv2e        // 2002.12 Initial D Arcade Stage Ver. 2 (export)
54965504vf4evo          // 2002.12 Virtua Fighter 4 Evolution Ver.B
54975505clubk2k3        // 2003.?? Club Kart: European Session (2003)
5498clubk2kf        // 2003.?? Club Kart: European Session (2003, not protected)
5506clubk2kp        // 2003.?? Club Kart: European Session (2003, prototype)
54995507initdexpo       // 2002.?? Initial D Arcade Stage (Export)
55005508            // 2002.?? Sega Driving Simulator
55015509            // 2003.03 World Club Champion Football Serie A 2001-2002 Ver.2
r241752r241753
79087916ninjakd2a       // UPL-????? (c) 1987
79097917ninjakd2b       // UPL-????? (c) 1987
79107918rdaction        // UPL-87003?(c) 1987 + World Games license
7919jt104         // hack?
79117920mnight          // UPL-????? (c) 1987 distributed by Kawakus
79127921arkarea         // UPL-87007 (c) 1988 (Arcade TV Game List - P.67, Right, 2 from top)
79137922robokid         // UPL-88013 (c) 1988
r241752r241753
82998308supdrapob       // bootleg
83008309sbagman         // (c) 1984
83018310sbagmans        // (c) 1984 + Stern license
8302botanic         // (c) 1985
8311botanic         // (c) 1983
8312botanicf      // (c) 1984
83038313squaitsa        // (c) 1985
83048314tankbust        // (c) 1985
83058315
r241752r241753
93659375rocktris        // (c) 1994? Yun Sung
93669376magicbub        // (c) Yun Sung
93679377magicbuba       // (c) Yun Sung
9378magicbubb       // (c) Yun Sung
93689379shocking        // (c) 1997 Yun Sung
93699380shockingk       // (c) 1997 Yun Sung
93709381bombkick        // (c) 1998 Yun Sung
r241752r241753
97219732dw2v100x        //
97229733drgw2c          //
97239734drgw2j          //
9735drgw2hk         //
97249736drgw3           // (c) 1998 Dragon World 3
97259737drgw3105        //
97269738drgw3100        //
r241752r241753
98219833// IGS PGM2 Platform
98229834orleg2          // (c) 2007
98239835orleg2o         //
9836orleg2oa      //
98249837kov2nl          // (c) 2008
98259838kov2nlo         //
9839kov2nloa      //
98269840ddpdojh         //
98279841kov3            //
98289842
r241752r241753
1096810982
1096910983// IGT Player's Edge Plus
1097010984peset001        // (c) 1987 IGT - International Game Technology
10985peset004        // (c) 1987 IGT - International Game Technology
1097110986peset038        // (c) 1987 IGT - International Game Technology
10987peivc006        // (c) 1987 IGT - International Game Technology
1097210988pepk1024        // (c) 1987 IGT - International Game Technology
1097310989pepp0002        // (c) 1987 IGT - International Game Technology
1097410990pepp0002a       // (c) 1987 IGT - International Game Technology
r241752r241753
1111211128peip0116        // (c) 1987 IGT - International Game Technology
1111311129peip0118        // (c) 1987 IGT - International Game Technology
1111411130peip0120        // (c) 1987 IGT - International Game Technology
11131pemg0252        // (c) 1994 IGT - International Game Technology
1111511132pebe0014        // (c) 1994 IGT - International Game Technology
11133peke0017        // (c) 1994 IGT - International Game Technology
1111611134peke1012        // (c) 1994 IGT - International Game Technology
1111711135peke1013        // (c) 1994 IGT - International Game Technology
1111811136peps0014        // (c) 1996 IGT - International Game Technology
r241752r241753
2023420252m1cluedob1  //
2023520253m1cluedob1p //
2023620254m1cluedob1h //
20255m1cluedobi2 //
20256m1cluedobi2p //
2023720257m1cluedo4
2023820258m1cluedo4p
2023920259m1cluedo3
r241752r241753
3179031810ufomini
3179131811ufo21
3179231812ufo800
31813westdrm
3179331814
3179431815// VLC Nevada
3179531816nevada
trunk/src/mame/mame.mak
r241752r241753
271271SOUNDS += MOS7360
272272#SOUNDS += ESQPUMP
273273#SOUNDS += VRC6
274SOUNDS += SB0400
275SOUNDS += AC97
274276
275277#-------------------------------------------------
276278# specify available video cores
r241752r241753
290292#VIDEOS += EF9340_1
291293#VIDEOS += EF9345
292294#VIDEOS += GF4500
295VIDEOS += GF6800GT
293296VIDEOS += EPIC12
294297VIDEOS += FIXFREQ
295298VIDEOS += H63484
r241752r241753
436439MACHINES += LDVP931
437440#MACHINES += LH5810
438441MACHINES += LINFLASH
442MACHINES += LPCI
439443#MACHINES += LSI53C810
440444#MACHINES += M68307
441445#MACHINES += M68340
r241752r241753
578582#BUSES += ADAMNET
579583#BUSES += APF
580584#BUSES += ARCADIA
585#BUSES += ASTROCADE
581586#BUSES += BML3
582587#BUSES += BW2
583588#BUSES += C64
r241752r241753
606611BUSES += ISA
607612#BUSES += ISBX
608613#BUSES += KC
614#BUSES += LPCI
609615#BUSES += MACPDS
610616#BUSES += MIDI
611617#BUSES += MEGADRIVE
r241752r241753
616622#BUSES += O2
617623#BUSES += ORICEXT
618624#BUSES += PCE
619#BUSES += PCI
620625#BUSES += PC_JOY
621626#BUSES += PC_KBD
622627#BUSES += PET
623628#BUSES += PLUS4
629#BUSES += PSX_CONTROLLER
624630#BUSES += QL
625631BUSES += RS232
626632#BUSES += S100
r241752r241753
631637#BUSES += SMS_CTRL
632638#BUSES += SMS_EXP
633639#BUSES += SNES
640#BUSES += SPC1000
634641#BUSES += TI99PEB
635642#BUSES += TVC
636643#BUSES += VBOY
r241752r241753
16941701   $(DRIVERS)/hikaru.o \
16951702   $(DRIVERS)/hshavoc.o \
16961703   $(DRIVERS)/kopunch.o $(VIDEO)/kopunch.o \
1697   $(DRIVERS)/lindbergh.o \
1704   $(DRIVERS)/lindbergh.o $(MACHINE)/segabb.o \
16981705   $(MACHINE)/megadriv.o \
16991706   $(DRIVERS)/megadrvb.o \
17001707   $(DRIVERS)/megaplay.o \
r241752r241753
17071714   $(DRIVERS)/naomi.o $(MACHINE)/dc.o $(VIDEO)/powervr2.o $(MACHINE)/naomi.o \
17081715   $(MACHINE)/naomig1.o $(MACHINE)/naomibd.o $(MACHINE)/naomirom.o $(MACHINE)/naomigd.o \
17091716   $(MACHINE)/naomicrypt.o $(MACHINE)/naomim1.o $(MACHINE)/naomim2.o $(MACHINE)/naomim4.o \
1717   $(MACHINE)/315-5881_crypt.o \
17101718   $(MACHINE)/awboard.o \
17111719   $(MACHINE)/mie.o $(MACHINE)/maple-dc.o $(MACHINE)/mapledev.o $(MACHINE)/dc-ctrl.o $(MACHINE)/jvs13551.o \
17121720   $(DRIVERS)/triforce.o \
r241752r241753
17141722   $(DRIVERS)/segac2.o \
17151723   $(DRIVERS)/segae.o \
17161724   $(DRIVERS)/shtzone.o \
1725   $(DRIVERS)/segacoin.o \
17171726   $(DRIVERS)/segag80r.o $(MACHINE)/segag80.o $(AUDIO)/segag80r.o $(VIDEO)/segag80r.o \
17181727   $(DRIVERS)/segag80v.o $(AUDIO)/segag80v.o $(VIDEO)/segag80v.o \
17191728   $(DRIVERS)/segahang.o $(VIDEO)/segahang.o \
r241752r241753
26492658
26502659$(DRIVERS)/grchamp.o:   $(LAYOUT)/grchamp.lh
26512660
2661$(DRIVERS)/harddriv.o:  $(LAYOUT)/racedrivpan.lh
2662
26522663$(DRIVERS)/highvdeo.o:  $(LAYOUT)/fashion.lh
26532664
26542665$(DRIVERS)/hankin.o:    $(LAYOUT)/hankin.lh
r241752r241753
28332844
28342845$(DRIVERS)/segas32.o:   $(LAYOUT)/radr.lh
28352846
2847$(DRIVERS)/segaufo.o:   $(LAYOUT)/newufo.lh \
2848         $(LAYOUT)/ufomini.lh \
2849         $(LAYOUT)/ufo21.lh \
2850         $(LAYOUT)/ufo800.lh
2851
28362852$(DRIVERS)/segaybd.o:   $(LAYOUT)/pdrift.lh
28372853
28382854$(DRIVERS)/sigmab52.o:  $(LAYOUT)/sigmab52.lh
trunk/src/mame/video/atarisy2.c
r241752r241753
208208READ16_MEMBER( atarisy2_state::slapstic_r )
209209{
210210   int result = m_slapstic_base[offset];
211   slapstic_tweak(space, offset);
211   m_slapstic->slapstic_tweak(space, offset);
212212
213213   /* an extra tweak for the next opcode fetch */
214   m_videobank = slapstic_tweak(space, 0x1234) * 0x1000;
214   m_videobank = m_slapstic->slapstic_tweak(space, 0x1234) * 0x1000;
215215   return result;
216216}
217217
218218
219219WRITE16_MEMBER( atarisy2_state::slapstic_w )
220220{
221   slapstic_tweak(space, offset);
221   m_slapstic->slapstic_tweak(space, offset);
222222
223223   /* an extra tweak for the next opcode fetch */
224   m_videobank = slapstic_tweak(space, 0x1234) * 0x1000;
224   m_videobank = m_slapstic->slapstic_tweak(space, 0x1234) * 0x1000;
225225}
226226
227227
trunk/src/mame/video/harddriv.c
r241752r241753
3030 *
3131 *************************************/
3232
33VIDEO_START_MEMBER(harddriv_state,harddriv)
33void harddriv_state::init_video()
3434{
3535   UINT32 *destmask, mask;
3636   int i;
r241752r241753
161161
162162void harddriv_state::update_palette_bank(int newbank)
163163{
164   m_screen->update_partial(m_screen->vpos());
164   screen_device &scr = m_gsp->screen();
165
166   scr.update_partial(scr.vpos());
165167   m_gfx_palettebank = newbank;
166168}
167169
r241752r241753
214216
215217   COMBINE_DATA(&m_gsp_control_hi[offset]);
216218   newword = m_gsp_control_hi[offset];
219   screen_device &scr = m_gsp->screen();
217220
218221   switch (offset & 7)
219222   {
r241752r241753
223226
224227      case 0x01:
225228         data = data & (15 >> m_gsp_multisync);
226         m_screen->update_partial(m_screen->vpos() - 1);
229         scr.update_partial(scr.vpos() - 1);
227230         m_gfx_finescroll = data;
228231         break;
229232
r241752r241753
407410TMS340X0_SCANLINE_IND16_CB_MEMBER(harddriv_state::scanline_driver)
408411{
409412   UINT8 *vram_base = &m_gsp_vram[(params->rowaddr << 12) & m_vram_mask];
413   
414   if (!vram_base) return;
415   
410416   UINT16 *dest = &bitmap.pix16(scanline);
411417   int coladdr = (params->yoffset << 9) + ((params->coladdr & 0xff) << 4) - 15 + (m_gfx_finescroll & 0x0f);
412418   int x;
r241752r241753
422428TMS340X0_SCANLINE_IND16_CB_MEMBER(harddriv_state::scanline_multisync)
423429{
424430   UINT8 *vram_base = &m_gsp_vram[(params->rowaddr << 11) & m_vram_mask];
431
432   if (!vram_base) return;   
433   
425434   UINT16 *dest = &bitmap.pix16(scanline);
426435   int coladdr = (params->yoffset << 9) + ((params->coladdr & 0xff) << 3) - 7 + (m_gfx_finescroll & 0x07);
427436   int x;
trunk/src/mame/video/k007121.c
r241752r241753
77a single 64x32 one, or one of them can be moved to the side of screen, giving
88a high score display suitable for vertical games.
99The chip also generates clock and interrupt signals suitable for a 6809.
10It uses 0x2000 bytes of RAM for the tilemaps and sprites, and an additional
110x100 bytes, maybe for scroll RAM and line buffers. The maximum addressable
10It uses 0x2000 bytes of static RAM for the tilemaps and sprite lists, and two
1164kx4bit DRAMs, presumably as a double frame buffer. The maximum addressable
1212ROM is 0x80000 bytes (addressed 16 bits at a time). Tile and sprite data both
13come from the same ROM space.
13come from the same ROM space. Like the 005885, external circuitry can cause
14tiles and sprites to be fetched from different ROMs (used by Haunted Castle).
15
1416Two 256x4 lookup PROMs are also used to increase the color combinations.
1517All tilemap / sprite priority handling is done internally and the chip exports
16187 bits of color code, composed of 2 bits of palette bank, 1 bit indicating tile
r241752r241753
2729outputs:
2830- address lines for tilemap RAM (AX0-AX12)
2931- data lines for tilemap RAM (VO0-VO7)
30- address lines for the small RAM (FA0-FA7)
31- data lines for the small RAM (FD0-FD7)
32- address lines for the DRAMs (FA0-FA7)
33- control lines for the DRAMs (NWR0, NWR1, NRAS, NCAS, NOE)
34- data lines for the DRAMs (FD0-FD7)
3235- address lines for the gfx ROMs (R0-R17)
3336- address lines for the tile lookup PROMs (VCF0-VCF3, VCB0-VCB3)
3437- address lines for the sprite lookup PROMs (OCB0-OCB3, OCF0-OCF3)
trunk/src/mame/video/konamigx.c
r241752r241753
276276#define GX_MAX_OBJECTS (GX_MAX_SPRITES + GX_MAX_LAYERS)
277277
278278static struct GX_OBJ { int order, offs, code, color; } *gx_objpool;
279static UINT16 *gx_spriteram;
280279
281// mirrored K054338 settings
282static int *K054338_shdRGB;
283
284
285280void konamigx_state::konamigx_mixer_init(screen_device &screen, int objdma)
286281{
287282   m_gx_objdma = 0;
r241752r241753
291286   m_gx_shdzbuf = auto_alloc_array(machine(), UINT8, GX_ZBUFSIZE);
292287   gx_objpool = auto_alloc_array(machine(), struct GX_OBJ, GX_MAX_OBJECTS);
293288
294   m_k054338->export_config(&K054338_shdRGB);
289   m_k054338->export_config(&m_K054338_shdRGB);
295290
296291   if (objdma)
297292   {
298      gx_spriteram = auto_alloc_array(machine(), UINT16, 0x1000/2);
293      m_gx_spriteram = auto_alloc_array(machine(), UINT16, 0x1000/2);
299294      m_gx_objdma = 1;
300295   }
301296   else
302      m_k055673->k053247_get_ram(&gx_spriteram);
297      m_k055673->k053247_get_ram(&m_gx_spriteram);
303298
304299   m_palette->set_shadow_dRGB32(3,-80,-80,-80, 0);
305300   m_k054338->invert_alpha(1);
r241752r241753
315310   UINT16* k053247_ram;
316311   m_k055673->k053247_get_ram(&k053247_ram);
317312
318   if (m_gx_objdma && gx_spriteram && k053247_ram) memcpy(gx_spriteram, k053247_ram, 0x1000);
313   if (m_gx_objdma && m_gx_spriteram && k053247_ram) memcpy(m_gx_spriteram, k053247_ram, 0x1000);
319314}
320315
321316void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect,
r241752r241753
416411      // only enable shadows beyond a +/-7 RGB threshold
417412      for (j=0,i=0; i<3; j+=3,i++)
418413      {
419         k = K054338_shdRGB[j  ]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; }
420         k = K054338_shdRGB[j+1]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; }
421         k = K054338_shdRGB[j+2]; if (k < -7 || k > 7) { shadowon[i] = 1; }
414         k = m_K054338_shdRGB[j  ]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; }
415         k = m_K054338_shdRGB[j+1]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; }
416         k = m_K054338_shdRGB[j+2]; if (k < -7 || k > 7) { shadowon[i] = 1; }
422417      }
423418
424419      // SHDON specifies layers on which shadows can be projected (see detail on p.65 7.2.8)
r241752r241753
496491   {
497492      int pri = 0;
498493
499      if (!(gx_spriteram[offs] & 0x8000)) continue;
494      if (!(m_gx_spriteram[offs] & 0x8000)) continue;
500495
501      int zcode = gx_spriteram[offs] & 0xff;
496      int zcode = m_gx_spriteram[offs] & 0xff;
502497
503498      // invert z-order when opset_pri is set (see p.51 OPSET PRI)
504499      if (m_k053247_opset & 0x10) zcode = 0xff - zcode;
505500
506      int code  = gx_spriteram[offs+1];
507      int color = k = gx_spriteram[offs+6];
508      l     = gx_spriteram[offs+7];
501      int code  = m_gx_spriteram[offs+1];
502      int color = k = m_gx_spriteram[offs+6];
503      l     = m_gx_spriteram[offs+7];
509504
510505      m_k055673->m_k053247_cb(&code, &color, &pri);
511506
r241752r241753
869864
870865
871866         m_k055673->k053247_draw_single_sprite_gxcore(bitmap, cliprect,
872            m_gx_objzbuf, m_gx_shdzbuf, code, gx_spriteram, offs,
867            m_gx_objzbuf, m_gx_shdzbuf, code, m_gx_spriteram, offs,
873868            color, alpha, drawmode, zcode, pri,
874869            /* non-gx only */
875870            0,0,NULL,NULL,0
r241752r241753
927922   SET_TILE_INFO_MEMBER(0, tileno, colour, TILE_FLIPYX(flip));
928923}
929924
930static int konamigx_type3_psac2_actual_bank;
931//int konamigx_type3_psac2_actual_last_bank = 0;
932925
933926WRITE32_MEMBER(konamigx_state::konamigx_type3_psac2_bank_w)
934927{
935928   // other bits are used for something...
936929
937930   COMBINE_DATA(&m_konamigx_type3_psac2_bank[offset]);
938   konamigx_type3_psac2_actual_bank = (m_konamigx_type3_psac2_bank[0] & 0x10000000) >> 28;
931   m_konamigx_type3_psac2_actual_bank = (m_konamigx_type3_psac2_bank[0] & 0x10000000) >> 28;
939932
940933   /* handle this by creating 2 roz tilemaps instead, otherwise performance dies completely on dual screen mode
941   if (konamigx_type3_psac2_actual_bank!=konamigx_type3_psac2_actual_last_bank)
934   if (m_konamigx_type3_psac2_actual_bank!=m_konamigx_type3_psac2_actual_last_bank)
942935   {
943936       m_gx_psac_tilemap->mark_all_dirty();
944       konamigx_type3_psac2_actual_last_bank = konamigx_type3_psac2_actual_bank;
937       m_konamigx_type3_psac2_actual_last_bank = m_konamigx_type3_psac2_actual_bank;
945938   }
946939   */
947940}
r241752r241753
956949
957950   int base_index = tile_index;
958951
959//  if (konamigx_type3_psac2_actual_bank)
952//  if (m_konamigx_type3_psac2_actual_bank)
960953//      base_index+=0x20000/2;
961954
962955
r241752r241753
977970
978971   int base_index = tile_index;
979972
980//  if (konamigx_type3_psac2_actual_bank)
973//  if (m_konamigx_type3_psac2_actual_bank)
981974//      base_index+=0x20000/2;
982975
983976
r241752r241753
14321425      temprect = cliprect;
14331426      temprect.max_x = cliprect.min_x+320;
14341427
1435      if (konamigx_type3_psac2_actual_bank == 1) K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap_alt, 0,0,0); // soccerss playfield
1428      if (m_konamigx_type3_psac2_actual_bank == 1) K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap_alt, 0,0,0); // soccerss playfield
14361429      else K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap, 0,0,0); // soccerss playfield
14371430
14381431
trunk/src/mame/video/konamiic.txt
r241752r241753
211211It manages sprites and 32x32 or 64x32 tilemap (only Double Dribble uses the
21221264x32 one).
213213The chip also generates clock and interrupt signals suitable for a 6809.
214It uses 0x2000 bytes of RAM for the tilemaps and sprites, and an additional
2150x100 bytes, maybe for scroll RAM and line buffers. The maximum addressable
214It uses 0x2000 bytes of static RAM for the tilemaps and sprite lists, and two
21564kx4bit DRAMs, presumably as a double frame buffer. The maximum addressable
216216ROM is 0x20000 bytes (addressed 16 bits at a time). Tile and sprite data both
217217come from the same ROM space. Double Dribble and Jackal have external circuitry
218218to extend the limits and use separated addressing spaces for sprites and tiles.
r241752r241753
234234outputs:
235235- address lines for tilemap RAM (AX0-AX12)
236236- data lines for tilemap RAM (VO0-VO7)
237- address lines for the small RAM (FA0-FA7)
238- data lines for the small RAM (FD0-FD7)
237- address lines for the DRAMs (FA0-FA7)
238- control lines for the DRAMs (NWR0, NWR1, NRAS, NCAS, NFOE)
239- data lines for the DRAMs (FD0-FD7)
239240- address lines for the gfx ROMs (R0-R15)
240241- address lines for the tile lookup PROMs (VCF0-VCF3, VCB0-VCB3)
241242- address lines for the sprite lookup PROMs (OCB0-OCB3, OCF0-OCF3)
trunk/src/mame/video/psychic5.c
r241752r241753
1010#include "video/jalblend.h"
1111#include "includes/psychic5.h"
1212
13#define BG_SCROLLX_LSB      0x308
14#define BG_SCROLLX_MSB      0x309
15#define BG_SCROLLY_LSB      0x30a
16#define BG_SCROLLY_MSB      0x30b
17#define BG_SCREEN_MODE      0x30c
13
1814#define BG_PAL_INTENSITY_RG 0x1fe
1915#define BG_PAL_INTENSITY_BU 0x1ff
2016
r241752r241753
2319  Palette color
2420***************************************************************************/
2521
26void psychic5_state::psychic5_change_palette(int color, int offset)
22void psychic5_state::psychic5_change_palette(int offset, UINT8* palram, int palbase)
2723{
28   UINT8 lo = m_ps5_palette_ram[offset & ~1];
29   UINT8 hi = m_ps5_palette_ram[offset | 1];
30   jal_blend_set(color, hi & 0x0f);
31   m_palette->set_pen_color(color, pal4bit(lo >> 4), pal4bit(lo), pal4bit(hi >> 4));
24   UINT8 lo = palram[(offset) & ~1];
25   UINT8 hi = palram[(offset) | 1];
26
27   int color = offset >> 1;
28
29   jal_blend_set(palbase + color, hi & 0x0f);
30   m_palette->set_pen_color(palbase + color, pal4bit(lo >> 4), pal4bit(lo), pal4bit(hi >> 4));
3231}
3332
3433void psychic5_state::psychic5_change_bg_palette(int color, int lo_offs, int hi_offs)
r241752r241753
4443
4544   irgb = rgb_t(ir,ig,ib);
4645
47   lo = m_ps5_palette_ram[lo_offs];
48   hi = m_ps5_palette_ram[hi_offs];
46   lo = m_ps5_palette_ram_bg[lo_offs];
47   hi = m_ps5_palette_ram_bg[hi_offs];
4948
5049   /* red,green,blue component */
5150   r = pal4bit(lo >> 4);
r241752r241753
5352   b = pal4bit(hi >> 4);
5453
5554   /* Grey background enable */
56   if (m_bg_status & 2)
55   if (m_bg_control[4] & 2)
5756   {
5857      UINT8 val = (r + g + b) / 3;        /* Grey */
5958      /* Just leave plain grey */
r241752r241753
7372void psychic5_state::set_background_palette_intensity()
7473{
7574   int i;
76   m_palette_intensity = m_ps5_palette_ram[BG_PAL_INTENSITY_BU] |
77                  (m_ps5_palette_ram[BG_PAL_INTENSITY_RG]<<8);
75   m_palette_intensity = m_ps5_palette_ram_sp[BG_PAL_INTENSITY_BU] |
76                  (m_ps5_palette_ram_sp[BG_PAL_INTENSITY_RG]<<8);
7877
7978   /* for all of the background palette */
8079   for (i = 0; i < 0x100; i++)
81      psychic5_change_bg_palette(m_bg_palette_base+i,m_bg_palette_ram_base+i*2,m_bg_palette_ram_base+i*2+1);
80      psychic5_change_bg_palette(i+0x100,i*2,i*2+1);
8281}
8382
8483
r241752r241753
9493WRITE8_MEMBER(psychic5_state::psychic5_vram_page_select_w)
9594{
9695   m_ps5_vram_page = data & 1;
96   m_vrambank->set_bank(data);
9797}
9898
9999WRITE8_MEMBER(psychic5_state::psychic5_title_screen_w)
r241752r241753
101101   m_title_screen = data;
102102}
103103
104READ8_MEMBER(psychic5_state::psychic5_paged_ram_r)
105{
106   if (m_ps5_vram_page == 1)
107   {
108      switch (offset)
109      {
110         case 0x00: return ioport("SYSTEM")->read();
111         case 0x01: return ioport("P1")->read();
112         case 0x02: return ioport("P2")->read();
113         case 0x03: return ioport("DSW1")->read();
114         case 0x04: return ioport("DSW2")->read();
115      }
116   }
117104
118   return m_ps5_pagedram[m_ps5_vram_page][offset];
105
106WRITE8_MEMBER(psychic5_state::sprite_col_w)
107{
108   m_ps5_palette_ram_sp[offset] = data;
109   psychic5_change_palette(offset,m_ps5_palette_ram_sp, 0x000);
119110}
120111
121WRITE8_MEMBER(psychic5_state::psychic5_paged_ram_w)
112WRITE8_MEMBER(psychic5_state::bg_col_w)
122113{
123   m_ps5_pagedram[m_ps5_vram_page][offset] = data;
114   m_ps5_palette_ram_bg[offset] = data;
115   psychic5_change_palette(offset,m_ps5_palette_ram_bg, 0x100);
116}
124117
125   if (m_ps5_vram_page == 0)
126   {
127      if (offset <= 0xfff)
128         m_bg_tilemap->mark_tile_dirty(offset >> 1);
129   }
130   else
131   {
132      if (offset == BG_SCROLLX_LSB || offset == BG_SCROLLX_MSB)
133      {
134         UINT16 bg_scrollx = m_ps5_io_ram[BG_SCROLLX_LSB] | (m_ps5_io_ram[BG_SCROLLX_MSB] << 8);
135         m_bg_tilemap->set_scrollx(0, bg_scrollx);
136      }
137      else if (offset == BG_SCROLLY_LSB || offset == BG_SCROLLY_MSB)
138      {
139         UINT16 bg_scrolly = m_ps5_io_ram[BG_SCROLLY_LSB] | (m_ps5_io_ram[BG_SCROLLY_MSB] << 8);
140         m_bg_tilemap->set_scrolly(0, bg_scrolly);
141      }
142      else if (offset == BG_SCREEN_MODE)
143      {
144         m_bg_status = m_ps5_io_ram[BG_SCREEN_MODE];
145      }
146      else if (offset >= 0x400 && offset <= 0x5ff)    /* Sprite color */
147         psychic5_change_palette(((offset >> 1) & 0xff)+0x000,offset-0x400);
148      else if (offset >= 0x800 && offset <= 0x9ff)    /* BG color */
149         psychic5_change_palette(((offset >> 1) & 0xff)+0x100,offset-0x400);
150      else if (offset >= 0xa00 && offset <= 0xbff)    /* Text color */
151         psychic5_change_palette(((offset >> 1) & 0xff)+0x200,offset-0x400);
152      else if (offset >= 0x1000)
153         m_fg_tilemap->mark_tile_dirty((offset-0x1000) >> 1);
154   }
118WRITE8_MEMBER(psychic5_state::tx_col_w)
119{
120   m_ps5_palette_ram_tx[offset] = data;
121   psychic5_change_palette(offset,m_ps5_palette_ram_tx, 0x200);
155122}
156123
157WRITE8_MEMBER(psychic5_state::bombsa_paged_ram_w)
124
125WRITE8_MEMBER(psychic5_state::fg_videoram_w)
158126{
159   m_ps5_pagedram[m_ps5_vram_page][offset] = data;
127   m_fg_videoram[offset] = data;
128   m_fg_tilemap->mark_tile_dirty(offset >> 1);
129}
160130
161   if (m_ps5_vram_page == 0)
162   {
163      m_bg_tilemap->mark_tile_dirty(offset >> 1);
164   }
165   else
166   {
167      if (offset == BG_SCROLLX_LSB || offset == BG_SCROLLX_MSB)
168      {
169         UINT16 bg_scrollx = m_ps5_io_ram[BG_SCROLLX_LSB] | (m_ps5_io_ram[BG_SCROLLX_MSB] << 8);
170         m_bg_tilemap->set_scrollx(0, bg_scrollx);
171      }
172      else if (offset == BG_SCROLLY_LSB || offset == BG_SCROLLY_MSB)
173      {
174         UINT16 bg_scrolly = m_ps5_io_ram[BG_SCROLLY_LSB] | (m_ps5_io_ram[BG_SCROLLY_MSB] << 8);
175         m_bg_tilemap->set_scrolly(0, bg_scrolly);
176      }
177      else if (offset == BG_SCREEN_MODE)
178      {
179         m_bg_status = m_ps5_io_ram[BG_SCREEN_MODE];
180      }
181      else if (offset >= 0x0800 && offset <= 0x0fff)
182         m_fg_tilemap->mark_tile_dirty((offset & 0x7ff) >> 1);
183      else if (offset >= 0x1000 && offset <= 0x15ff)
184         psychic5_change_palette((offset >> 1) & 0x3ff, offset-0x1000);
185   }
131WRITE8_MEMBER( psychic5_state::bg_videoram_w )
132{   
133   m_bg_videoram[offset] = data;
134   m_bg_tilemap->mark_tile_dirty(offset >> 1);
186135}
187136
137
138
188139WRITE8_MEMBER(psychic5_state::bombsa_unknown_w)
189140{
190141   m_bombsa_unknown = data;
r241752r241753
224175
225176VIDEO_START_MEMBER(psychic5_state,psychic5)
226177{
227   /*                          info              offset             w   h  col  row */
228178   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(psychic5_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 64, 32);
229179   m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(psychic5_state::get_fg_tile_info),this), TILEMAP_SCAN_COLS,  8,  8, 32, 32);
230
231180   m_fg_tilemap->set_transparent_pen(15);
232
233   m_ps5_pagedram[0] = auto_alloc_array(machine(), UINT8, 0x2000);
234   m_ps5_pagedram[1] = auto_alloc_array(machine(), UINT8, 0x2000);
235
236   m_bg_videoram  = &m_ps5_pagedram[0][0x0000];
237   m_ps5_dummy_bg_ram      = &m_ps5_pagedram[0][0x1000];
238   m_ps5_io_ram            = &m_ps5_pagedram[1][0x0000];
239   m_ps5_palette_ram       = &m_ps5_pagedram[1][0x0400];
240   m_fg_videoram  = &m_ps5_pagedram[1][0x1000];
241
242181   jal_blend_init(machine(), 1);
243182
244   m_bg_palette_ram_base = 0x400;
245   m_bg_palette_base = 0x100;
246183}
247184
248185VIDEO_START_MEMBER(psychic5_state,bombsa)
249186{
250   /*                          info              offset             w   h   col  row */
251187   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(psychic5_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 32);
252188   m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(psychic5_state::get_fg_tile_info),this), TILEMAP_SCAN_COLS,  8,  8,  32, 32);
253
254189   m_fg_tilemap->set_transparent_pen(15);
255
256   m_ps5_pagedram[0] = auto_alloc_array(machine(), UINT8, 0x2000);
257   m_ps5_pagedram[1] = auto_alloc_array(machine(), UINT8, 0x2000);
258
259   m_bg_videoram  = &m_ps5_pagedram[0][0x0000];
260   m_ps5_dummy_bg_ram      = &m_ps5_pagedram[0][0x1000];
261   m_ps5_io_ram            = &m_ps5_pagedram[1][0x0000];
262   m_fg_videoram  = &m_ps5_pagedram[1][0x0800];
263   m_ps5_palette_ram       = &m_ps5_pagedram[1][0x1000];
264
265190   jal_blend_init(machine(), 0);
266
267   m_bg_palette_ram_base = 0x000;
268   m_bg_palette_base = 0x000;
269191}
270192
271193VIDEO_RESET_MEMBER(psychic5_state,psychic5)
272194{
273195   m_bg_clip_mode = 0;
274196   m_ps5_vram_page = 0;
275   m_bg_status = 0;
276   memset(m_ps5_pagedram[0],0,0x2000);
277   memset(m_ps5_pagedram[1],0,0x2000);
278   m_palette_intensity = 0;
279}
280
281VIDEO_RESET_MEMBER(psychic5_state,bombsa)
282{
283   m_ps5_vram_page = 0;
284   m_bg_status = 0;
285197   m_title_screen = 0;
286   memset(m_ps5_pagedram[0],0,0x2000);
287   memset(m_ps5_pagedram[1],0,0x2000);
288198   m_palette_intensity = 0;
289199}
290200
291201
202
292203/***************************************************************************
293204  Screen refresh
294205***************************************************************************/
r241752r241753
406317
407318UINT32 psychic5_state::screen_update_psychic5(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
408319{
320   UINT16 bg_scrollx = m_bg_control[0] | (m_bg_control[1] << 8);
321   m_bg_tilemap->set_scrollx(0, bg_scrollx);
322   UINT16 bg_scrolly = m_bg_control[2] | (m_bg_control[3] << 8);
323   m_bg_tilemap->set_scrolly(0, bg_scrolly);
324
409325   bitmap.fill(m_palette->black_pen(), cliprect);
410   if (m_bg_status & 1)    /* Backgound enable */
326   if (m_bg_control[4] & 1)    /* Backgound enable */
411327      draw_background(screen, bitmap, cliprect);
412328   if (!(m_title_screen & 1))
413329      draw_sprites(bitmap, cliprect);
r241752r241753
417333
418334UINT32 psychic5_state::screen_update_bombsa(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
419335{
420   if (m_bg_status & 1)    /* Backgound enable */
336   UINT16 bg_scrollx = m_bg_control[0] | (m_bg_control[1] << 8);
337   m_bg_tilemap->set_scrollx(0, bg_scrollx);
338   UINT16 bg_scrolly = m_bg_control[2] | (m_bg_control[3] << 8);
339   m_bg_tilemap->set_scrolly(0, bg_scrolly);
340   bitmap.fill(m_palette->black_pen(), cliprect);
341
342   if (m_bg_control[4] & 1)    /* Backgound enable */
421343      m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
422344   else
423345      bitmap.fill(m_palette->pen(0x0ff), cliprect);
trunk/src/mame/video/rdpspn16.c
r241752r241753
572572   {
573573      if (x >= clipx1 && x < clipx2)
574574      {
575         if (object.MiscState.FBSize < 2 || object.MiscState.FBSize > 4)
576            fatalerror("unsupported FBSize %d\n", object.MiscState.FBSize);
575577         ((this)->*(_Fill[object.MiscState.FBSize - 2]))(fb_index + x, object);
576578      }
577579
trunk/src/mame/video/rdptpipe.c
r241752r241753
595595   userdata->m_precomp_s = nexts;
596596   userdata->m_precomp_t = nextt;
597597
598   INT32 lodclamp = (((*sst & 0x60000) > 0) | ((nextt & 0x60000) > 0)) || (((*sss & 0x60000) > 0) | ((nexts & 0x60000) > 0));
599
600   INT32 horstep = SIGN17(nexts & 0x1ffff) - SIGN17(*sss & 0x1ffff);
601   INT32 vertstep = SIGN17(nextt & 0x1ffff) - SIGN17(*sst & 0x1ffff);
602   if (horstep & 0x20000)
603   {
604      horstep = ~horstep & 0x1ffff;
605   }
606   if (vertstep & 0x20000)
607   {
608      vertstep = ~vertstep & 0x1ffff;
609   }
610
611   INT32 lod = (horstep >= vertstep) ? horstep : vertstep;
612
598613   int tempanded;
599614   if (*sss & 0x40000)
600615   {
r241752r241753
645660         *sst &= 0xffff;
646661      }
647662   }
663
664   if ((lod & 0x4000) || lodclamp)
665   {
666      lod = 0x7fff;
667   }
668   else if (lod < object.MiscState.MinLevel)
669   {
670      lod = object.MiscState.MinLevel;
671   }
672
673   bool magnify = (lod < 32);
674   INT32 l_tile = m_rdp->GetLog2((lod >> 5) & 0xff);
675   bool distant = ((lod & 0x6000) || (l_tile >= object.MiscState.MaxLevel));
676
677   userdata->LODFraction = ((lod << 3) >> l_tile) & 0xff;
678
679   if(!object.OtherModes.sharpen_tex_en && !object.OtherModes.detail_tex_en)
680   {
681      if (distant)
682      {
683         userdata->LODFraction = 0xff;
684      }
685      else if (magnify)
686      {
687         userdata->LODFraction = 0;
688      }
689   }
690
691   if(object.OtherModes.sharpen_tex_en && magnify)
692   {
693      userdata->LODFraction |= 0x100;
694   }
648695}
649696
650697void N64TexturePipeT::LOD2Cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32 w, INT32 dsinc, INT32 dtinc, INT32 dwinc, INT32 prim_tile, INT32* t1, INT32* t2, rdp_span_aux *userdata, const rdp_poly_state& object)
r241752r241753
761808
762809   if(object.OtherModes.sharpen_tex_en && magnify)
763810   {
764      userdata->LODFraction = userdata->LODFraction | 0x100;
811      userdata->LODFraction |= 0x100;
765812   }
766813
767814   if (object.OtherModes.tex_lod_en)
trunk/src/mame/video/rockrage.c
r241752r241753
44PALETTE_INIT_MEMBER(rockrage_state, rockrage)
55{
66   const UINT8 *color_prom = memregion("proms")->base();
7   int i;
87
9   /* sprites */
10   for (i = 0x20; i < 0x40; i++)
11      palette.set_pen_indirect(i, i);
12
13   /* characters */
14   for (i = 0x40; i < 0x140; i++)
8   for (int i = 0; i < 256*3; i++)
159   {
16      UINT8 ctabentry;
17
18      ctabentry = (color_prom[(i - 0x40) + 0x000] & 0x0f) | 0x00;
19      palette.set_pen_indirect(i + 0x000, ctabentry);
20
21      ctabentry = (color_prom[(i - 0x40) + 0x100] & 0x0f) | 0x10;
22      palette.set_pen_indirect(i + 0x100, ctabentry);
10      // layer0 uses colors 0x00-0x0f; layer1 uses 0x10-0x1f; sprites use 0x20-0x2f
11      UINT8 colorbase = (i / 256) * 16;
12      UINT8 ctabentry = (color_prom[i] & 0x0f) | colorbase;
13      palette.set_pen_indirect(i, ctabentry);
2314   }
2415}
2516
r241752r241753
5041{
5142   *code |= ((*color & 0x40) << 2) | ((*color & 0x80) << 1) * ((m_vreg & 0x03) << 1);
5243   *code = (*code << 2) | ((*color & 0x30) >> 4);
53   *color = 0;
44   *color = 0 + (*color & 0x0f);
5445}
5546
5647
trunk/src/mame/video/tia.c
r241752r241753
269269         double G = Y - 0.272 * I - 0.647 * Q;
270270         double B = Y - 1.106 * I + 1.703 * Q;
271271
272         R = pow(R, 0.9) / pow(1, 0.9);
273         G = pow(G, 0.9) / pow(1, 0.9);
274         B = pow(B, 0.9) / pow(1, 0.9);
275
276272         if (R < 0) R = 0;
277273         if (G < 0) G = 0;
278274         if (B < 0) B = 0;
279275
276         R = pow(R, 0.9);
277         G = pow(G, 0.9);
278         B = pow(B, 0.9);
279
280280         if (R > 1) R = 1;
281281         if (G > 1) G = 1;
282282         if (B > 1) B = 1;
r241752r241753
328328         double G = Y - 0.344 * U - 0.714 * V;
329329         double B = Y + 1.770 * U;
330330
331         R = pow(R, 1.2) / pow(1, 1.2);
332         G = pow(G, 1.2) / pow(1, 1.2);
333         B = pow(B, 1.2) / pow(1, 1.2);
334
335331         if (R < 0) R = 0;
336332         if (G < 0) G = 0;
337333         if (B < 0) B = 0;
338334
335         R = pow(R, 1.2);
336         G = pow(G, 1.2);
337         B = pow(B, 1.2);
338
339339         if (R > 1) R = 1;
340340         if (G > 1) G = 1;
341341         if (B > 1) B = 1;
trunk/src/mame/video/twin16.c
r241752r241753
1919
2020enum
2121{
22   TWIN16_SCREEN_FLIPY     = 0x01,
23   TWIN16_SCREEN_FLIPX     = 0x02, // confirmed: Hard Puncher Intro
24   TWIN16_UNKNOWN1         = 0x04, // ? Hard Puncher uses this
25   TWIN16_PLANE_ORDER      = 0x08, // confirmed: Devil Worlds
26   TWIN16_TILE_FLIPX       = 0x10, // unused?
27   TWIN16_TILE_FLIPY       = 0x20  // confirmed? Vulcan Venture
22   TWIN16_SCREEN_FLIPY = 0x01,
23   TWIN16_SCREEN_FLIPX = 0x02, // confirmed: Hard Puncher Intro
24   TWIN16_PRI0         = 0x04, // PRI0 input into 007789 PAL
25   TWIN16_PRI1         = 0x08, // PRI1 input into 007789 PAL
26   TWIN16_PRI2_UNUSED  = 0x10, // schematic shows as PRI2 input, but unused
27   TWIN16_TILE_FLIPY   = 0x20  // confirmed: Vulcan Venture
2828};
2929
3030enum
3131{
3232   // user-defined priorities
33   TWIN16_BG_LAYER1            = 0x01,
34   TWIN16_SPRITE_PRI_L1        = 0x02,
35   TWIN16_BG_LAYER2            = 0x04,
36   TWIN16_SPRITE_PRI_L2        = 0x08,
37   TWIN16_SPRITE_OCCUPIED      = 0x10, // sprite on screen pixel
38   TWIN16_SPRITE_CAST_SHADOW   = 0x20
33   TWIN16_BG_OVER_SPRITES = 0x01, // BG pixel has priority over opaque sprite pixels
34   TWIN16_BG_NO_SHADOW    = 0x02, // BG pixel has priority over shadow sprite pixels
35   TWIN16_SPRITE_OCCUPIED = 0x04
3936};
4037
4138
r241752r241753
107104            flip |= (m_video_register&TWIN16_SCREEN_FLIPY) ? TILEMAP_FLIPY : 0;
108105            machine().tilemap().set_flip_all(flip);
109106         }
110         if (changed & (TWIN16_TILE_FLIPX | TWIN16_TILE_FLIPY))
107         if (changed & TWIN16_TILE_FLIPY)
111108         {
112109            m_scroll_tmap[0]->mark_all_dirty();
113110            m_scroll_tmap[1]->mark_all_dirty();
r241752r241753
177174 *   2  | -------xxxxxxxxx | xpos
178175 * -----+------------------+
179176 *   3  | x--------------- | enable
180 *   3  | -x-------------- | priority   ?
181 *   3  | -----x---------- | no shadow  ?
177 *   3  | -xxxxx---------- | ?
182178 *   3  | ------x--------- | yflip  ?
183179 *   3  | -------x-------- | xflip
184180 *   3  | --------xx------ | height
r241752r241753
230226         UINT32 xpos = (0x10000*source[4])|source[5];
231227         UINT32 ypos = (0x10000*source[6])|source[7];
232228
233         /* notes on uncertain attributes:
234         shadows: pen $F only (like other Konami hw), used in devilw, fround,
235          miaj? (shadows are solid in tmnt hw version),
236          gradius2? (ship exhaust)
229         /* notes on sprite attributes:
237230
238         sprite-background priority: in devilw, most sprites look best at high priority,
239         in gradius2, most sprites look best at low priority. exceptions:
240         - devilw prologue: sprites behind crowd (maybe more, haven't completed the game)
241         - gradius2 intro showing earlier games: sprites above layers
231         The only inputs from the sprite hardware into the mixer PAL are four bits of
232         pixel data, with 0000 being transparent, 1111 being shadow, and anything else
233         opaque. Sprite to background priority, and whether shadows are visible, depends
234         entirely on the priority mode bits in m_video_register and on the underlying
235         background pixel, and not on any of the sprite attribute bits.
242236
243         currently using (priority&0x200), broken:
244         - devilw prologue: sprites should be behind crowd
245         - gradius2 level 7: bosses should be behind portal (ok except brain boss and mouth boss)
246         - gradius2 ending: sun should be behind planet
237         Shadows in the devilw lava stages look a bit strange; the shadows "punch holes"
238         in the platforms and reveal the lava underneath. As far as I can tell from the
239         schematics this has to be correct; unlike later Konami hardware there seems to
240         be no way for a sprite to cast a shadow onto another sprite.
247241
248         does TWIN16_PLANE_ORDER affect it?
249
250         more?
251         devilw monster dens exploding monochrome, players fading to white in prologue, and trees in
252         the 1st level shrinking with a solid green color look odd, maybe alpha blended?
253
254         fround, hpuncher, miaj, cuebrickj, don't use the preprocessor. all sprites are expected
255         to be high priority, and shadows are enabled
242         fround, hpuncher, miaj, cuebrickj, don't use the preprocessor.
256243         */
257         UINT16 attributes = 0x8000| // enabled
258            (source[2]&0x03ff)| // scale,size,color
259            (source[2]&0x4000)>>4|  // no-shadow? (gradius2 level 7 boss sets this bit and appears to expect pen $F to be solid)
260            (priority&0x200)<<5;    // sprite-background priority?
244         UINT16 attributes = 0x8000 | (source[2]&0x03ff); // scale,size,color
261245
262246         dest[0] = source[3]; /* gfx data */
263247         dest[1] = ((xpos>>8) - dx)&0xffff;
r241752r241753
291275         const UINT16 *pen_data = 0;
292276         int flipy = attributes&0x0200;
293277         int flipx = attributes&0x0100;
294         int priority = (attributes&0x4000)?TWIN16_SPRITE_PRI_L1:TWIN16_SPRITE_PRI_L2;
295278
296279         if( m_is_fround ) {
297280            /* fround board */
r241752r241753
360343                  {
361344                     UINT16 pen = pen_data[x>>2]>>((~x&3)<<2)&0xf;
362345
363                     if( pen )
346                     if( pen && !(pdest[sx] & TWIN16_SPRITE_OCCUPIED))
364347                     {
365                        int shadow = (pen==0xf) & ((attributes&0x400)==0);
348                        pdest[sx] |= TWIN16_SPRITE_OCCUPIED;
366349
367                        if (pdest[sx]<priority) {
368                           if (shadow) {
350                        if (pen==0xf) // shadow
351                        {
352                           if (!(pdest[sx] & TWIN16_BG_NO_SHADOW))
369353                              dest[sx] = m_palette->shadow_table()[dest[sx]];
370                              pdest[sx]|=TWIN16_SPRITE_CAST_SHADOW;
371                           }
372                           else {
354                        }
355                        else // opaque pixel
356                        {
357                           if (!(pdest[sx] & TWIN16_BG_OVER_SPRITES))
373358                              dest[sx] = pal_base + pen;
374                           }
375359                        }
376                        else if (!shadow && pdest[sx]&TWIN16_SPRITE_CAST_SHADOW && (pdest[sx]&0xf)<priority) {
377                           // shadow cast onto sprite below, evident in devilw lava level
378                           dest[sx] = m_palette->shadow_table()[pal_base + pen];
379                           pdest[sx]^=TWIN16_SPRITE_CAST_SHADOW;
380                        }
381
382                        pdest[sx]|=TWIN16_SPRITE_OCCUPIED;
383360                     }
384361                  }
385362               }
r241752r241753
412389void twin16_state::tile_get_info(tile_data &tileinfo, UINT16 data, int color_base)
413390{
414391   /* fedcba9876543210
415      xxx------------- color
392      xxx------------- color; high bit is also priority over sprites
416393      ---xxxxxxxxxxxxx tile number
417394   */
418395   int code = (data & 0x1fff);
419396   int color = color_base + (data >> 13);
420397   int flags = 0;
421   if (m_video_register & TWIN16_TILE_FLIPX) flags |= TILE_FLIPX;
422398   if (m_video_register & TWIN16_TILE_FLIPY) flags |= TILE_FLIPY;
423399   SET_TILE_INFO_MEMBER(1, code, color, flags);
400   tileinfo.category = BIT(data, 15);
424401}
425402
426403void fround_state::tile_get_info(tile_data &tileinfo, UINT16 data, int color_base)
427404{
428405   /* fedcba9876543210
429      xxx------------- color
406      xxx------------- color; high bit is also priority over sprites
430407      ---xx----------- tile bank
431408      -----xxxxxxxxxxx tile number
432409   */
r241752r241753
434411   int code = (m_gfx_bank[bank] << 11) | (data & 0x7ff);
435412   int color = color_base | (data >> 13);
436413   int flags = 0;
437   if (m_video_register & TWIN16_TILE_FLIPX) flags |= TILE_FLIPX;
438414   if (m_video_register & TWIN16_TILE_FLIPY) flags |= TILE_FLIPY;
439415   SET_TILE_INFO_MEMBER(1, code, color, flags);
416   tileinfo.category = BIT(data, 15);
440417}
441418
442419TILE_GET_INFO_MEMBER(twin16_state::layer0_tile_info)
r241752r241753
485462
486463UINT32 twin16_state::screen_update_twin16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
487464{
488   int layer = m_video_register & TWIN16_PLANE_ORDER ? 0 : 1;
465/*
466    PAL equations (007789 @ 11J):
489467
490   m_scroll_tmap[layer]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, TWIN16_BG_LAYER1, 0);
491   m_scroll_tmap[layer^1]->draw(screen, bitmap, cliprect, 0, TWIN16_BG_LAYER2);
468    /SHAD = /FIX * /PRI1 * OCO0 * OCO1 * OCO2 * OCO3
469          + /FIX * /PRI0 * OCO0 * OCO1 * OCO2 * OCO3 * /V1C0
470          + /FIX * PRI0 * OCO0 * OCO1 * OCO2 * OCO3 * /V2C6
471          + /FIX * PRI0 * /V2C0 * /V2C3 * OCO0 * /V2C2 * OCO1 * /V2C1 * OCO2 * OCO3
492472
473    /SELB = /FIX * OCO0 * OCO1 * OCO2 * OCO3
474          + /FIX * /OCO0 * /OCO1 * /OCO2 * /OCO3
475          + /FIX * PRI0 * /PRI1 * V1C0
476          + /FIX * PRI0 * PRI1 * V2C0 * V2C6
477          + /FIX * PRI0 * PRI1 * V2C1 * V2C6
478          + /FIX * PRI0 * PRI1 * V2C2 * V2C6
479          + /FIX * PRI0 * PRI1 * V2C3 * V2C6
480
481     SELA = FIX
482          + PRI0 * /PRI1 * V1C0
483          + /PRI1 * OCO0 * OCO1 * OCO2 * OCO3 * V1C0
484          + /PRI1 * /OCO0 * /OCO1 * /OCO2 * /OCO3 * V1C0
485          + PRI1 * /V2C0 * /V2C3 * OCO0 * /V2C2 * OCO1 * /V2C1 * OCO2 * OCO3
486          + PRI1 * /V2C0 * /V2C3 * /OCO0 * /V2C2 * /OCO1 * /V2C1 * /OCO2 * /OCO3
487
488     SELB  SELA  Visible layer
489      0     0    VRAM2
490      0     1    VRAM1
491      1     0    Object
492      1     1    Fix
493
494    Final Round uses a PROM (not dumped) instead of the PAL
495    and some discrete logic to combine some of the inputs.
496    Inputs to the PROM are:
497
498    A0 = V1C0 | V1C1 | V1C2 | V1C3
499    A1 = V2C0 | V2C1 | V2C2 | V2C3
500    A2 = OCO0 | OCO1 | OCO2 | OCO3
501    A3 = FIX0 | FIX1 | FIX2 | FIX3
502    A4 = ~(OCD0 & OCD1 & OCD2 & OCD3)
503    A5 = V2C6
504    A6 = PRI0
505    A7 = PRI1
506*/
507   screen.priority().fill(0, cliprect);
508
509   switch ((m_video_register >> 2) & 0x3)
510   {
511      case 0: // PRI1 = 0, PRI0 = 0
512         m_scroll_tmap[1]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_ALL_CATEGORIES | TILEMAP_DRAW_OPAQUE);
513         m_scroll_tmap[0]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_ALL_CATEGORIES);
514         break;
515      case 1: // PRI1 = 0, PRI0 = 1
516         m_scroll_tmap[1]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_ALL_CATEGORIES | TILEMAP_DRAW_OPAQUE);
517         m_scroll_tmap[0]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_ALL_CATEGORIES, TWIN16_BG_OVER_SPRITES);
518         break;
519      case 2: // PRI1 = 1, PRI0 = 0
520         m_scroll_tmap[0]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_ALL_CATEGORIES | TILEMAP_DRAW_OPAQUE);
521         m_scroll_tmap[0]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_ALL_CATEGORIES, TWIN16_BG_NO_SHADOW);
522         m_scroll_tmap[1]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_ALL_CATEGORIES);
523         break;
524      case 3: // PRI1 = 1, PRI0 = 1
525         m_scroll_tmap[0]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_ALL_CATEGORIES | TILEMAP_DRAW_OPAQUE);
526         m_scroll_tmap[1]->draw(screen, bitmap, cliprect, 0);
527         m_scroll_tmap[1]->draw(screen, bitmap, cliprect, 1, TWIN16_BG_OVER_SPRITES | TWIN16_BG_NO_SHADOW);
528         break;
529   }
530
493531   draw_sprites( screen, bitmap );
494532
495533   m_fixed_tmap->draw(screen, bitmap, cliprect, 0);
trunk/src/mame/video/tx1.c
r241752r241753
14381438***************************************************************************/
14391439
14401440void tx1_state::buggyboy_get_roadpix(int screen, int ls161, UINT8 rva0_6, UINT8 sld, UINT32 *_rorev,
1441                           UINT8 *rc0, UINT8 *rc1, UINT8 *rc2, UINT8 *rc3,
1442                           const UINT8 *rom, const UINT8 *prom0, const UINT8 *prom1, const UINT8 *prom2)
1441                           UINT8 *rc0, UINT8 *rc1, UINT8 *rc2, UINT8 *rc3)
14431442{
14441443   /* Counter Q10-7 are added to 384 */
14451444   UINT16 ls283_159 = (ls161 & 0x780) + 128 + (256 * screen);
r241752r241753
14491448   UINT8 d0 = 0;
14501449   UINT8 d1 = 0;
14511450
1451   /* ROM/PROM lookup tables */
1452   const UINT8 *rom   = memregion("road")->base();
1453   const UINT8 *prom0 = rom + 0x4000;
1454   const UINT8 *prom1 = rom + 0x4200;
1455   const UINT8 *prom2 = rom + 0x4400;
1456
14521457   /* Latch road reverse bit */
14531458   *_rorev = !( (rom_en && rom_flip) || (!rom_en && (ls161 & 0x4000)) );
14541459
r241752r241753
15391544
15401545   /* ROM/PROM lookup tables */
15411546   const UINT8 *rcols = (UINT8*)(memregion("proms")->base() + 0x1500);
1542   const UINT8 *rom   = memregion("road")->base();
1543   const UINT8 *prom0 = rom + 0x4000;
1544   const UINT8 *prom1 = rom + 0x4200;
1545   const UINT8 *prom2 = rom + 0x4400;
1546   const UINT8 *vprom = rom + 0x4600;
1547   const UINT8 *vprom   = memregion("road")->base() + 0x4600;
15471548
15481549   /* Extract constant values */
15491550   tcmd     = ((vregs.scol & 0xc000) >> 12) | ((vregs.scol & 0x00c0) >> 6);
r241752r241753
16671668      /* Have we crossed a road gfx strip boundary? */
16681669      if (ls161 & 7)
16691670      {
1670         buggyboy_get_roadpix(0, ls161, rva0_6, sld, &_rorevls, &rc0[0], &rc1[0], &rc2[0], &rc3[0], rom, prom0, prom1, prom2);
1671         buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0[1], &rc1[1], &rc2[1], &rc3[1], rom, prom0, prom1, prom2);
1672         buggyboy_get_roadpix(2, ls161, rva0_6, sld, &_rorevrs, &rc0[2], &rc1[2], &rc2[2], &rc3[2], rom, prom0, prom1, prom2);
1671         buggyboy_get_roadpix(0, ls161, rva0_6, sld, &_rorevls, &rc0[0], &rc1[0], &rc2[0], &rc3[0]);
1672         buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0[1], &rc1[1], &rc2[1], &rc3[1]);
1673         buggyboy_get_roadpix(2, ls161, rva0_6, sld, &_rorevrs, &rc0[2], &rc1[2], &rc2[2], &rc3[2]);
16731674      }
16741675
16751676      /* We can evaluate some of the pixel logic outside of the x-loop */
r241752r241753
17491750         /* Load in a new road gfx strip? */
17501751         if (!(ls161 & 7))
17511752         {
1752            buggyboy_get_roadpix(0, ls161, rva0_6, sld, &_rorevls, &rc0[0], &rc1[0], &rc2[0], &rc3[0], rom, prom0, prom1, prom2);
1753            buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0[1], &rc1[1], &rc2[1], &rc3[1], rom, prom0, prom1, prom2);
1754            buggyboy_get_roadpix(2, ls161, rva0_6, sld, &_rorevrs, &rc0[2], &rc1[2], &rc2[2], &rc3[2], rom, prom0, prom1, prom2);
1753            buggyboy_get_roadpix(0, ls161, rva0_6, sld, &_rorevls, &rc0[0], &rc1[0], &rc2[0], &rc3[0]);
1754            buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0[1], &rc1[1], &rc2[1], &rc3[1]);
1755            buggyboy_get_roadpix(2, ls161, rva0_6, sld, &_rorevrs, &rc0[2], &rc1[2], &rc2[2], &rc3[2]);
17551756         }
17561757
17571758         /* Road camber/banking */
r241752r241753
21702171
21712172   /* ROM/PROM lookup tables */
21722173   const UINT8 *rcols = (UINT8*)(memregion("proms")->base() + 0x1500);
2173   const UINT8 *rom   = memregion("road")->base();
2174   const UINT8 *prom0 = rom + 0x4000;
2175   const UINT8 *prom1 = rom + 0x4200;
2176   const UINT8 *prom2 = rom + 0x4400;
2177   const UINT8 *vprom = rom + 0x4600;
2174   const UINT8 *vprom = memregion("road")->base() + 0x4600;
21782175
21792176   /* Extract constant values */
21802177   tcmd     = ((vregs.scol & 0xc000) >> 12) | ((vregs.scol & 0x00c0) >> 6);
r241752r241753
22962293
22972294      /* Have we crossed a road gfx strip boundary? */
22982295      if (ls161 & 7)
2299         buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0, &rc1, &rc2, &rc3, rom, prom0, prom1, prom2);
2296         buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0, &rc1, &rc2, &rc3);
23002297
23012298      for (x = 0; x < 256; ++x)
23022299      {
r241752r241753
23312328
23322329         /* Load in a new road gfx strip? */
23332330         if (!(ls161 & 7))
2334            buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0, &rc1, &rc2, &rc3, rom, prom0, prom1, prom2);
2331            buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0, &rc1, &rc2, &rc3);
23352332
23362333         /* Road camber */
23372334         if (vregs.bank_mode == 0)
trunk/src/mess/drivers/ace.c
r241752r241753
711711   MCFG_Z80PIO_OUT_PA_CB(WRITE8(ace_state, pio_pa_w))
712712   MCFG_Z80PIO_OUT_PB_CB(DEVWRITE8("cent_data_out", output_latch_device, write))
713713
714   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
714   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
715715   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
716716
717717   // internal ram
trunk/src/mess/drivers/amiga.c
r241752r241753
13431343   MCFG_RS232_CTS_HANDLER(WRITELINE(amiga_state, rs232_cts_w))
13441344
13451345   // centronics
1346   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
1346   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
13471347   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(amiga_state, centronics_ack_w))
13481348   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(amiga_state, centronics_busy_w))
13491349   MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(amiga_state, centronics_perror_w))
trunk/src/mess/drivers/amstrad.c
r241752r241753
804804   SLOT_INTERFACE("amsrs232", CPC_RS232_AMS)
805805   SLOT_INTERFACE("sf2", CPC_SYMBIFACE2)
806806   SLOT_INTERFACE("amdrum", CPC_AMDRUM)
807   SLOT_INTERFACE("playcity", CPC_PLAYCITY)
807808SLOT_INTERFACE_END
808809
809810SLOT_INTERFACE_START(cpcplus_exp_cards)
r241752r241753
815816   SLOT_INTERFACE("amsrs232", CPC_RS232_AMS)
816817   SLOT_INTERFACE("sf2", CPC_SYMBIFACE2)
817818   SLOT_INTERFACE("amdrum", CPC_AMDRUM)
819   SLOT_INTERFACE("playcity", CPC_PLAYCITY)
818820SLOT_INTERFACE_END
819821
820SLOT_INTERFACE_START(amstrad_printers)
822SLOT_INTERFACE_START(amstrad_centronics_devices)
821823   SLOT_INTERFACE("pl80", COMX_PL80)
822824   SLOT_INTERFACE("ex800", EPSON_EX800)
823825   SLOT_INTERFACE("lx800", EPSON_LX800)
r241752r241753
862864   MCFG_MC6845_OUT_DE_CB(WRITELINE(amstrad_state, amstrad_de_changed))
863865   MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(amstrad_state, amstrad_hsync_changed))
864866   MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(amstrad_state, amstrad_vsync_changed))
867   MCFG_MC6845_OUT_CUR_CB(DEVWRITELINE("exp", cpc_expansion_slot_device, cursor_w))
865868
866869   MCFG_VIDEO_START_OVERRIDE(amstrad_state,amstrad)
867870
r241752r241753
874877   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
875878
876879   /* printer */
877   MCFG_CENTRONICS_ADD("centronics", amstrad_printers, "printer")
880   MCFG_CENTRONICS_ADD("centronics", amstrad_centronics_devices, "printer")
878881   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(amstrad_state, write_centronics_busy))
879882
880883   /* snapshot */
r241752r241753
969972   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
970973
971974   /* printer */
972   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
975   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
973976   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(amstrad_state, write_centronics_busy))
974977
975978   /* snapshot */
trunk/src/mess/drivers/apf.c
r241752r241753
259259   m_ca2 = 0;
260260
261261   // apfimag only
262   if (m_cass)
263      m_cass->change_state(CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
264
265   // apfimag only
266262   if (m_ram)
267263   {
268264      /* if we specified 8K of RAM, delete the extended RAM */
r241752r241753
554550   MCFG_APF_CARTRIDGE_ADD("cartslot", apf_cart, NULL)
555551
556552   /* software lists */
557   MCFG_SOFTWARE_LIST_ADD("cart_list","apfm1000")
553   MCFG_SOFTWARE_LIST_ADD("cart_list", "apfm1000")
558554MACHINE_CONFIG_END
559555
560556static MACHINE_CONFIG_DERIVED( apfimag, apfm1000 )
r241752r241753
574570   MCFG_PIA_READPB_HANDLER(READ8(apf_state, pia1_portb_r))
575571   MCFG_PIA_WRITEPB_HANDLER(WRITE8(apf_state, pia1_portb_w))
576572
577   MCFG_CASSETTE_ADD( "cassette" )
573   MCFG_CASSETTE_ADD("cassette")
578574   MCFG_CASSETTE_FORMATS(apf_cassette_formats)
579   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY)
575   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED)
580576
581577   MCFG_FD1771x_ADD("fdc", 1000000) // guess
582578   MCFG_FLOPPY_DRIVE_ADD("fdc:0", apf_floppies, "525dd", floppy_image_device::default_floppy_formats)
583579   MCFG_FLOPPY_DRIVE_ADD("fdc:1", apf_floppies, "525dd", floppy_image_device::default_floppy_formats)
580
581   MCFG_SOFTWARE_LIST_ADD("cass_list", "apfimag_cass")
584582MACHINE_CONFIG_END
585583
586584
trunk/src/mess/drivers/applix.c
r241752r241753
877877   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(applix_state, applix_pb_w))
878878   MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m68000_device, write_irq2))
879879
880   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
880   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
881881   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522", via6522_device, write_ca1))
882882   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("via6522", via6522_device, write_pa0))
883883
trunk/src/mess/drivers/apricot.c
r241752r241753
384384   MCFG_RS232_CTS_HANDLER(DEVWRITELINE("ic15", z80dart_device, ctsa_w))
385385
386386   // centronics printer
387   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
387   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
388388   MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in")
389389   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("ic15", z80dart_device, ctsb_w))
390390   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("ic15", z80dart_device, dcdb_w))
trunk/src/mess/drivers/apricotf.c
r241752r241753
294294   MCFG_Z80CTC_ZC1_CB(WRITELINE(f1_state, ctc_z1_w))
295295   MCFG_Z80CTC_ZC2_CB(WRITELINE(f1_state, ctc_z2_w))
296296
297   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
297   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
298298   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(Z80SIO2_TAG, z80dart_device, ctsa_w))
299299
300300   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
trunk/src/mess/drivers/apricotp.c
r241752r241753
534534   MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":0", fp_floppies, "35dd", floppy_image_device::default_floppy_formats)
535535   MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":1", fp_floppies, NULL,   floppy_image_device::default_floppy_formats)
536536
537   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
537   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
538538   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fp_state, write_centronics_busy))
539539   MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(fp_state, write_centronics_select))
540540   MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(fp_state, write_centronics_fault))
trunk/src/mess/drivers/astrocde.c
r241752r241753
1414#include "sound/astrocde.h"
1515#include "bus/astrocde/slot.h"
1616#include "bus/astrocde/rom.h"
17#include "bus/astrocde/exp.h"
18#include "bus/astrocde/ram.h"
1719
1820class astrocde_mess_state : public astrocde_state
1921{
2022public:
2123   astrocde_mess_state(const machine_config &mconfig, device_type type, const char *tag)
2224      : astrocde_state(mconfig, type, tag),
23      m_cart(*this, "cartslot")
25      m_cart(*this, "cartslot"),
26      m_exp(*this, "exp")
2427      { }
2528
2629   required_device<astrocade_cart_slot_device> m_cart;
27   void get_ram_expansion_settings(int &ram_expansion_installed, int &write_protect_on, int &expansion_ram_start, int &expansion_ram_end, int &shadow_ram_end);
30   required_device<astrocade_exp_device> m_exp;
2831   DECLARE_MACHINE_START(astrocde);
29   DECLARE_MACHINE_RESET(astrocde);
30   DECLARE_INPUT_CHANGED_MEMBER(set_write_protect);
3132};
3233
33/*************************************
34/*********************************************************************************
3435 *
3536 *  Memory maps
3637 *
r241752r241753
4243 * by an extended BASIC program.  Bally and Astrocade BASIC can access from
4344 * $5000 to $7FFF if available.
4445 *
45 *  RAM Expansions
46 *
47 * Several third party RAM expansions have been made for the Astrocade.  These
48 * allow access to various ranges of the expansion memory ($5000 to $FFFF).
49 * A RAM expansion is required to use extended BASIC programs like Blue RAM BASIC
50 * and VIPERSoft BASIC.  All of the expansions also have a RAM protect switch, which
51 * can be flipped at any time to make the RAM act like ROM.  Extended BASIC
52 * programs need access to the RAM and won't work with RAM protect enabled, but
53 * this can be useful with Bally and Astrocade BASIC.  They also have a range switch
54 * (not implemented).  The default position is 6K, but it can be switched to
55 * 2K.  This means that the expanded memory starting at $6000 will instead be
56 * mapped to the cartridge memory starting at $2000.  So it would be possible to
57 * load a cartridge program from tape into the expansion memory, then flip the range
58 * switch and run it as a cartridge.  This is useful for cartridge development.
59 *
60 * NOTE:  If you have any trouble running cartridges with a RAM expansion installed, hit reset.
61 *
62 * Blue RAM -- available in 4K, 16K, and 32K.  These also use an INS8154 chip,
63 * (not yet implemented) which has an additional $80 bytes of RAM mapped
64 * immediately after the end of the expansion address space.  This memory
65 * can't be write protected.  The INS8154 has I/O features needed for loading
66 * tape programs into Blue RAM BASIC, as well as running the Blue RAM Utility cart.
67 * 4K:  $6000 to $6FFF (can't run VIPERSoft BASIC, because this program needs memory
68 * past this range)
69 * 16K:  $6000 to $9FFF
70 * 32K:  $6000 to $DFFF
71 *
72 * VIPER System 1 -- This is available in 16K only.  It also includes a keyboard (not implemented).
73 * 16K:  $6000 to $9FFF
74 *
75 * Lil' WHITE RAM -- This is available in 32K only.  Attempts to read and write
76 * to memory outside of its address range ($D000 to $FFFF) are mapped to the expansion
77 * memory $5000 to $7FFF.  The current implementation won't allow the shadow RAM area
78 * to be accessed when RAM protect is on, but there is no known software that will
79 * access the upper range of the expansion RAM when RAM protect is enabled.
80 * 32K:  $5000 to $CFFF
81 *
82 * R&L 64K RAM Board -- This is a highly configurable kit.  RAM can be installed in
83 * 2K increments.  So, the entire 44K expansion memory can be filled.  It is also
84 * possible to override the rest of the memory map with RAM (not implemented).
85 * There are 32 switches allowing users to activate and deactivate each 2K block (not implemented).
86 * RAM write protection can be implemented in three ranges through jumpers or by
87 * installing switches.  The ranges are $0000 to $0FFF (first 4K), $0000 to $3FFF (first 16K),
88 * and $0000 to $FFFF (all 64K).  The current implementation is for 44K expansion memory mapped from
89 * $5000 to $FFFF, with only a single write protect covering this entire range.
90 *
91 *************************************/
46 *********************************************************************************/
9247
9348static ADDRESS_MAP_START( astrocade_mem, AS_PROGRAM, 8, astrocde_mess_state )
9449   AM_RANGE(0x0000, 0x0fff) AM_ROM AM_WRITE(astrocade_funcgen_w)
9550   AM_RANGE(0x1000, 0x3fff) AM_ROM /* Star Fortress writes in here?? */
9651   AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("videoram") /* ASG */
52   //AM_RANGE(0x5000, 0xffff) AM_DEVREADWRITE("exp", astrocade_exp_device, read, write)
9753ADDRESS_MAP_END
9854
9955
r241752r241753
10157   AM_RANGE(0x00, 0x1f) AM_MIRROR(0xff00) AM_MASK(0xffff) AM_READWRITE(astrocade_data_chip_register_r, astrocade_data_chip_register_w)
10258ADDRESS_MAP_END
10359
104INPUT_CHANGED_MEMBER(astrocde_mess_state::set_write_protect)  // run when RAM expansion write protect switch is changed
105{
106   int ram_expansion_installed = 0, write_protect_on = 0, expansion_ram_start = 0, expansion_ram_end = 0, shadow_ram_end = 0;
107   address_space &space = m_maincpu->space(AS_PROGRAM);
108   UINT8 *expram = machine().device<ram_device>("ram_tag")->pointer();
109
110   get_ram_expansion_settings(ram_expansion_installed, write_protect_on, expansion_ram_start, expansion_ram_end, shadow_ram_end);  // passing by reference
111
112   if (ram_expansion_installed == 1)
113   {
114      if (write_protect_on == 0)  // write protect off, so install memory normally
115      {
116         space.install_ram(expansion_ram_start, expansion_ram_end, expram);
117         if (shadow_ram_end > expansion_ram_end)
118            space.install_ram(expansion_ram_end + 1, shadow_ram_end, expram);
119      }
120      else  // write protect on, so make memory read only
121      {
122         space.nop_write(expansion_ram_start, expansion_ram_end);
123      }
124   }
125}
126
12760/*************************************
12861 *
12962 *  Input ports
r241752r241753
227160
228161   PORT_START("P4_KNOB")
229162   PORT_BIT(0xff, 0x00, IPT_PADDLE) PORT_INVERT PORT_SENSITIVITY(85) PORT_KEYDELTA(10) PORT_CENTERDELTA(0) PORT_MINMAX(0,255) PORT_CODE_DEC(KEYCODE_Y) PORT_CODE_INC(KEYCODE_U) PORT_PLAYER(4)
230
231   PORT_START("CFG")   /* machine config */
232   PORT_DIPNAME( 0x3f, 0x00, "RAM Expansion")
233   PORT_DIPSETTING(    0x00, "No RAM Expansion")
234   PORT_DIPSETTING(    0x01, "16KB Viper System 1 RAM Expansion")
235   PORT_DIPSETTING(    0x02, "32KB Lil' WHITE RAM Expansion")
236   PORT_DIPSETTING(    0x04, "R&L 64K RAM Board (44K installed)")
237   PORT_DIPSETTING(    0x08, "4KB Blue RAM Expansion")
238   PORT_DIPSETTING(    0x10, "16KB Blue RAM Expansion")
239   PORT_DIPSETTING(    0x20, "32KB Blue RAM Expansion")
240
241   PORT_START("PROTECT")  /* Write protect RAM */
242   PORT_DIPNAME( 0x01, 0x00, "Write Protect RAM") PORT_CHANGED_MEMBER(DEVICE_SELF, astrocde_mess_state, set_write_protect, 0)
243   PORT_DIPSETTING( 0x00, "Write Protect Off")
244   PORT_DIPSETTING( 0x01, "Write Protect On")
245163INPUT_PORTS_END
246164
247165
r241752r241753
257175   SLOT_INTERFACE_INTERNAL("rom_512k",  ASTROCADE_ROM_512K)
258176SLOT_INTERFACE_END
259177
178static SLOT_INTERFACE_START(astrocade_exp)
179   SLOT_INTERFACE("blue_ram_4k",   ASTROCADE_BLUERAM_4K)
180   SLOT_INTERFACE("blue_ram_16k",  ASTROCADE_BLUERAM_16K)
181   SLOT_INTERFACE("blue_ram_32k",  ASTROCADE_BLUERAM_32K)
182   SLOT_INTERFACE("viper_sys1",    ASTROCADE_VIPER_SYS1)
183   SLOT_INTERFACE("lil_white_ram", ASTROCADE_WHITERAM)
184   SLOT_INTERFACE("rl64_ram",      ASTROCADE_RL64RAM)
185SLOT_INTERFACE_END
260186
187
261188static MACHINE_CONFIG_START( astrocde, astrocde_mess_state )
262189   /* basic machine hardware */
263190   MCFG_CPU_ADD("maincpu", Z80, ASTROCADE_CLOCK/4)        /* 1.789 MHz */
r241752r241753
265192   MCFG_CPU_IO_MAP(astrocade_io)
266193
267194   MCFG_MACHINE_START_OVERRIDE(astrocde_mess_state, astrocde)
268   MCFG_MACHINE_RESET_OVERRIDE(astrocde_mess_state, astrocde)
269195
270196   /* video hardware */
271197   MCFG_SCREEN_ADD("screen", RASTER)
r241752r241753
281207   MCFG_SOUND_ADD("astrocade1", ASTROCADE, ASTROCADE_CLOCK/4)
282208   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
283209
284   /* optional expansion ram (installed in machine_reset)*/
285   MCFG_RAM_ADD("ram_tag")
286   MCFG_RAM_DEFAULT_SIZE("32k")
210   /* expansion port */
211   MCFG_ASTROCADE_EXPANSION_SLOT_ADD("exp", astrocade_exp, NULL)
287212
288213   /* cartridge */
289214   MCFG_ASTROCADE_CARTRIDGE_ADD("cartslot", astrocade_cart, NULL)
r241752r241753
329254{
330255   if (m_cart->exists())
331256      m_maincpu->space(AS_PROGRAM).install_read_handler(0x2000, 0x3fff, read8_delegate(FUNC(astrocade_cart_slot_device::read_rom),(astrocade_cart_slot_device*)m_cart));
332}
333257
334MACHINE_RESET_MEMBER(astrocde_mess_state, astrocde)
335{
336   int ram_expansion_installed = 0, write_protect_on = 0, expansion_ram_start = 0, expansion_ram_end = 0, shadow_ram_end = 0;
337   address_space &space = m_maincpu->space(AS_PROGRAM);
338   UINT8 *expram = machine().device<ram_device>("ram_tag")->pointer();
339   space.unmap_readwrite(0x5000, 0xffff);  // unmap any previously installed expansion RAM
340
341   get_ram_expansion_settings(ram_expansion_installed, write_protect_on, expansion_ram_start, expansion_ram_end, shadow_ram_end);  // passing by reference
342
343   if (ram_expansion_installed == 1)
344   {
345      if (write_protect_on == 0)  // write protect off, so install memory normally
346      {
347         space.install_ram(expansion_ram_start, expansion_ram_end, expram);
348         if (shadow_ram_end > expansion_ram_end)
349            space.install_ram(expansion_ram_end + 1, shadow_ram_end, expram);
350      }
351      else  // write protect on, so make memory read only
352      {
353         space.nop_write(expansion_ram_start, expansion_ram_end);
354      }
355   }
258   // if no RAM is mounted and the handlers are installed, the system starts with garbage on screen and a RESET is necessary
259   // thus, install RAM only if an expansion is mounted
260   if (m_exp->get_card_mounted())
261      m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x5000, 0xffff, read8_delegate(FUNC(astrocade_exp_device::read),(astrocade_exp_device*)m_exp), write8_delegate(FUNC(astrocade_exp_device::write),(astrocade_exp_device*)m_exp));
356262}
357263
358void astrocde_mess_state::get_ram_expansion_settings(int &ram_expansion_installed, int &write_protect_on, int &expansion_ram_start, int &expansion_ram_end, int &shadow_ram_end)
359{
360   if (ioport("PROTECT")->read() == 0x01)
361      write_protect_on = 1;
362   else
363      write_protect_on = 0;
364
365   ram_expansion_installed = 1;
366
367   switch(ioport("CFG")->read())  // check RAM expansion configuration and set address ranges
368   {
369      case 0x00:  // No RAM Expansion
370            ram_expansion_installed = 0;
371            break;
372      case 0x01:  // 16KB Viper System 1 RAM Expansion
373            expansion_ram_start = 0x6000;
374            expansion_ram_end = 0x9fff;
375            shadow_ram_end = 0;
376            break;
377      case 0x02:  // "32KB Lil' WHITE RAM Expansion
378            expansion_ram_start = 0x5000;
379            expansion_ram_end = 0xcfff;
380            shadow_ram_end = 0xffff;
381            break;
382      case 0x04:  // R&L 64K RAM Board (44KB installed)
383            expansion_ram_start = 0x5000;
384            expansion_ram_end = 0xffff;
385            shadow_ram_end = 0;
386            break;
387      case 0x08:  // 4KB Blue RAM Expansion
388            expansion_ram_start = 0x6000;
389            expansion_ram_end = 0x6fff;
390            shadow_ram_end = 0;
391            break;
392      case 0x10:  // 16KB Blue RAM Expansion
393            expansion_ram_start = 0x6000;
394            expansion_ram_end = 0x9fff;
395            shadow_ram_end = 0;
396            break;
397      case 0x20:  // 32KB Blue RAM Expansion
398            expansion_ram_start = 0x6000;
399            expansion_ram_end = 0xdfff;
400            shadow_ram_end = 0;
401            break;
402      default:
403         break;
404   }
405}
406
407
408264/*************************************
409265 *
410266 *  Driver definitions
trunk/src/mess/drivers/atarist.c
r241752r241753
21062106   MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", st_state::floppy_formats)
21072107   MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, 0,      st_state::floppy_formats)
21082108
2109   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
2109   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
21102110   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i0_w))
21112111
21122112   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241752r241753
21972197   MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", st_state::floppy_formats)
21982198   MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, 0,      st_state::floppy_formats)
21992199
2200   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
2200   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
22012201   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i0_w))
22022202
22032203   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241752r241753
22952295   MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", st_state::floppy_formats)
22962296   MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, 0,      st_state::floppy_formats)
22972297
2298   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
2298   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
22992299   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i0_w))
23002300
23012301   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241752r241753
24082408   MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", 0, st_state::floppy_formats)
24092409   MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, 0,      0, st_state::floppy_formats)
24102410
2411   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
2411   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
24122412   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i0_w))
24132413
24142414   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
trunk/src/mess/drivers/atom.c
r241752r241753
725725   MCFG_I8271_FLOPPIES(FLOPPY_0, FLOPPY_1)
726726   MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(atom_floppy_interface)
727727
728   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
728   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
729729   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(R6522_TAG, via6522_device, write_ca1))
730730   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(R6522_TAG, via6522_device, write_pa7))
731731
r241752r241753
822822   MCFG_I8255_IN_PORTC_CB(READ8(atom_state, ppi_pc_r))
823823   MCFG_I8255_OUT_PORTC_CB(WRITE8(atom_state, ppi_pc_w))
824824
825   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
825   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
826826   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(R6522_TAG, via6522_device, write_ca1))
827827   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(R6522_TAG, via6522_device, write_pa7))
828828
trunk/src/mess/drivers/bbc.c
r241752r241753
748748   MCFG_UPD7002_EOC_CB(bbc_state, BBC_uPD7002_EOC)
749749
750750   /* printer */
751   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
751   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
752752   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
753753
754754   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241752r241753
810810   MCFG_UPD7002_EOC_CB(bbc_state, BBC_uPD7002_EOC)
811811
812812   /* printer */
813   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
813   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
814814   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
815815
816816   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241752r241753
919919   MCFG_MC146818_ADD( "rtc", XTAL_32_768kHz )
920920
921921   /* printer */
922   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
922   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
923923   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
924924
925925   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
trunk/src/mess/drivers/bebox.c
r241752r241753
1212
1313/* Components */
1414#include "video/pc_vga.h"
15#include "bus/pci/cirrus.h"
15#include "bus/lpci/cirrus.h"
1616#include "cpu/powerpc/ppc.h"
1717#include "sound/3812intf.h"
1818#include "machine/ins8250.h"
1919#include "machine/pic8259.h"
2020#include "machine/mc146818.h"
21#include "bus/pci/pci.h"
21#include "bus/lpci/pci.h"
2222#include "machine/am9517a.h"
2323#include "machine/pckeybrd.h"
2424#include "machine/idectrl.h"
25#include "bus/pci/mpc105.h"
25#include "bus/lpci/mpc105.h"
2626#include "machine/intelfsh.h"
2727#include "bus/scsi/scsi.h"
2828#include "machine/53c810.h"
trunk/src/mess/drivers/bullet.c
r241752r241753
11491149   MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":6", bullet_8_floppies, NULL,      floppy_image_device::default_floppy_formats)
11501150   MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":7", bullet_8_floppies, NULL,      floppy_image_device::default_floppy_formats)
11511151
1152   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
1152   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
11531153   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(bullet_state, write_centronics_busy))
11541154   MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(bullet_state, write_centronics_perror))
11551155   MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(bullet_state, write_centronics_select))
r241752r241753
12331233   MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":8", bullet_35_floppies, NULL, floppy_image_device::default_floppy_formats)
12341234   MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":9", bullet_35_floppies, NULL, floppy_image_device::default_floppy_formats)
12351235
1236   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
1236   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
12371237   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(bullet_state, write_centronics_busy))
12381238
12391239   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
trunk/src/mess/drivers/bw12.c
r241752r241753
613613   MCFG_RS232_CTS_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, ctsb_w))
614614
615615   /* printer */
616   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
616   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
617617   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(PIA6821_TAG, pia6821_device, ca1_w))
618618   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(bw12_state, write_centronics_busy))
619619   MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(bw12_state, write_centronics_fault))
trunk/src/mess/drivers/bw2.c
r241752r241753
618618   MCFG_DEVICE_ADDRESS_MAP(AS_0, lcdc_map)
619619   MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
620620
621   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
621   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
622622   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(bw2_state, write_centronics_busy))
623623
624624   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
trunk/src/mess/drivers/cat.c
r241752r241753
12441244   MCFG_MC68681_B_TX_CALLBACK(WRITELINE(cat_state, cat_duart_txb))
12451245   MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(cat_state, cat_duart_output))
12461246
1247   MCFG_CENTRONICS_ADD("ctx", centronics_printers, "printer")
1247   MCFG_CENTRONICS_ADD("ctx", centronics_devices, "printer")
12481248   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(cat_state, prn_ack_ff))
12491249   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("duartn68681", mc68681_device, ip4_w)) MCFG_DEVCB_XOR(1)
12501250   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("ctx_data_out", "ctx")
trunk/src/mess/drivers/clcd.c
r241752r241753
767767   MCFG_RS232_DSR_HANDLER(DEVWRITELINE("acia", mos6551_device, write_dsr))
768768   MCFG_RS232_CTS_HANDLER(DEVWRITELINE("via1", via6522_device, write_pb4))
769769
770   MCFG_CENTRONICS_ADD("centronics", centronics_printers, NULL)
770   MCFG_CENTRONICS_ADD("centronics", centronics_devices, NULL)
771771   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("via1", via6522_device, write_pb6)) MCFG_DEVCB_XOR(1)
772772
773773   MCFG_DEVICE_ADD("bank1", ADDRESS_MAP_BANK, 0)
trunk/src/mess/drivers/compis.c
r241752r241753
706706   MCFG_RS232_DCD_HANDLER(DEVWRITELINE(I8274_TAG, z80dart_device, dcdb_w))
707707   MCFG_RS232_CTS_HANDLER(DEVWRITELINE(I8274_TAG, z80dart_device, ctsb_w))
708708
709   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
709   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
710710   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(compis_state, write_centronics_busy))
711711   MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(compis_state, write_centronics_select))
712712   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
trunk/src/mess/drivers/crvision.c
r241752r241753
771771   MCFG_CASSETTE_ADD("cassette")
772772   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
773773
774   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
774   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
775775   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit7))
776776
777777   MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0)
r241752r241753
850850   MCFG_CASSETTE_ADD("cassette")
851851   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
852852
853   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
853   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
854854   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(laser2001_state, write_centronics_busy))
855855
856856   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
trunk/src/mess/drivers/dmv.c
r241752r241753
2525#include "bus/dmv/k220.h"
2626#include "bus/dmv/k230.h"
2727#include "bus/dmv/k233.h"
28#include "bus/dmv/k803.h"
2829#include "bus/dmv/k806.h"
2930#include "bus/dmv/ram.h"
3031
r241752r241753
114115   DECLARE_READ8_MEMBER(exp_program_r);
115116   DECLARE_WRITE8_MEMBER(exp_program_w);
116117   DECLARE_WRITE_LINE_MEMBER(thold7_w);
117   DECLARE_WRITE_LINE_MEMBER(busint_w);
118
119   void update_busint(int slot, int state);
120   DECLARE_WRITE_LINE_MEMBER(busint2_w)    { update_busint(0, state); }
121   DECLARE_WRITE_LINE_MEMBER(busint2a_w)   { update_busint(1, state); }
122   DECLARE_WRITE_LINE_MEMBER(busint3_w)    { update_busint(2, state); }
123   DECLARE_WRITE_LINE_MEMBER(busint4_w)    { update_busint(3, state); }
124   DECLARE_WRITE_LINE_MEMBER(busint5_w)    { update_busint(4, state); }
125   DECLARE_WRITE_LINE_MEMBER(busint6_w)    { update_busint(5, state); }
126   DECLARE_WRITE_LINE_MEMBER(busint7_w)    { update_busint(6, state); }
127   DECLARE_WRITE_LINE_MEMBER(busint7a_w)   { update_busint(7, state); }
128
118129   DECLARE_FLOPPY_FORMATS( floppy_formats );
119130
120131   UINT8 program_read(address_space &space, int cas, offs_t offset);
r241752r241753
146157   int         m_dack3_line;
147158   int         m_sd_poll_state;
148159   int         m_floppy_motor;
160   int         m_busint[8];
149161};
150162
151163WRITE8_MEMBER(dmv_state::tc_set_w)
r241752r241753
329341
330342static SLOT_INTERFACE_START( dmv_floppies )
331343      SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
344      SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
332345SLOT_INTERFACE_END
333346
334347
r241752r241753
375388   }
376389}
377390
378WRITE_LINE_MEMBER( dmv_state::busint_w )
391void dmv_state::update_busint(int slot, int state)
379392{
380   m_slot7a->irq2_w(state);
381   m_slot7->irq2_w(state);
393   m_busint[slot] = state;
394
395   int new_state = CLEAR_LINE;
396   for (int i=0; i<8; i++)
397      if (m_busint[i] != CLEAR_LINE)
398      {
399         new_state = ASSERT_LINE;
400         break;
401      }
402
403   m_slot7a->irq2_w(new_state);
404   m_slot7->irq2_w(new_state);
405   m_maincpu->set_input_line(0, new_state);
382406}
383407
384408void dmv_state::program_write(address_space &space, int cas, offs_t offset, UINT8 data)
r241752r241753
505529   m_switch16 = 0;
506530   m_thold7 = 0;
507531   m_dma_hrq = 0;
532   memset(m_busint, 0, sizeof(m_busint));
508533
509534   update_halt_line();
510535}
r241752r241753
606631
607632static SLOT_INTERFACE_START(dmv_slot2_6)
608633   SLOT_INTERFACE("k233", DMV_K233)            // K233 16K Shared RAM
634   SLOT_INTERFACE("k803", DMV_K803)            // K803 RTC module
609635   SLOT_INTERFACE("k806", DMV_K806)            // K806 Mouse module
610636SLOT_INTERFACE_END
611637
r241752r241753
692718   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot1, NULL, false)
693719   MCFG_DEVICE_ADD("slot2", DMVCART_SLOT, 0)
694720   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false)
721   MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint2_w))
695722   MCFG_DEVICE_ADD("slot2a", DMVCART_SLOT, 0)
696723   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2a, NULL, false)
724   MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint2a_w))
697725   MCFG_DEVICE_ADD("slot3", DMVCART_SLOT, 0)
698726   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false)
727   MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint3_w))
699728   MCFG_DEVICE_ADD("slot4", DMVCART_SLOT, 0)
700729   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false)
730   MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint4_w))
701731   MCFG_DEVICE_ADD("slot5", DMVCART_SLOT, 0)
702732   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false)
733   MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint5_w))
703734   MCFG_DEVICE_ADD("slot6", DMVCART_SLOT, 0)
704735   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false)
736   MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint6_w))
705737
706738   MCFG_DEVICE_ADD("slot7", DMVCART_SLOT, 0)
707739   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot7, NULL, false)
708740   MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(READ8(dmv_state, exp_program_r), WRITE8(dmv_state, exp_program_w))
709741   MCFG_DMVCART_SLOT_OUT_THOLD_CB(WRITELINE(dmv_state, thold7_w))
710   MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(dmv_state, busint_w))
742   MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint7_w))
711743   MCFG_DEVICE_ADD("slot7a", DMVCART_SLOT, 0)
712744   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot7a, "k230", false)
713745   MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(READ8(dmv_state, exp_program_r), WRITE8(dmv_state, exp_program_w))
714746   MCFG_DMVCART_SLOT_OUT_THOLD_CB(WRITELINE(dmv_state, thold7_w))
715   MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(dmv_state, busint_w))
747   MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint7a_w))
716748
717749   MCFG_SOFTWARE_LIST_ADD("flop_list", "dmv")
718750
trunk/src/mess/drivers/dvk_ksm.c
r0r241753
1/***************************************************************************
2
3    KSM (Kontroller Simvolnogo Monitora = Character Display Controller),
4    a single-board replacement for standalone 15IE-00-013 terminal (ie15.c)
5    in later-model DVK desktops.
6
7    MPI (Q-Bus clone) board, consumes only power from the bus.
8    Interfaces with MS7004 (DEC LK201 workalike) keyboard and monochrome CRT.
9
10    Hardware revisions (XXX verify everything):
11    - 7.102.076 -- has DIP switches, SRAM at 0x2000, model name "KSM"
12    - 7.102.228 -- no DIP switches, SRAM at 0x2100, model name "KSM-01"
13
14    Emulates a VT52 without copier (ESC Z response is ESC / M), with
15    Hold Screen mode and Graphics character set (but it is unique and
16    mapped to a different range -- 100..137).
17
18    F4 + 0..9 on numeric keypad = setup mode.  0 changes serial port speed,
19    1..9 toggle one of mode bits:
20
21   1   XON/XOFF   0: Off  1: On
22   2   Character set   0: N0/N1  2: N2
23   3   Auto LF      0: Off  1: On
24   4   Auto repeat   0: On  1: Off
25   5   Auto wraparound   0: On  1: Off
26   6   Interpret controls   0: Interpret  1: Display
27   7   Parity check   0: Off  1: On
28   8   Parity bits   0: None  1: Even
29   9   Stop bits
30
31    N0/N1 charset has regular ASCII in C0 page and Cyrillic in C1 page,
32    switching between them via SI/SO.   N2 charset has uppercase Cyrillic
33    chars in place of lowercase Latin ones.
34
35    F1 toggles Hold Screen mode.
36    F9 resets terminal (clears memory).
37    F20 toggles on/off-line mode.
38
39    Terminfo description would be something like
40
41ksm|DVK KSM,
42   am, bw, dch1=\EP, ich1=\EQ,
43   acsc=hRiTjXkClJmFnNqUtEuPv\174wKxW.M\054Q\055S\053\136~_{@}Z0\177,
44   use=vt52,
45
46    To do:
47    - make Caps Lock work
48    - verify if pixel stretching is done by hw
49    - verify details of hw revisions
50    - baud rate selection (missing feature in bitbanger)
51
52****************************************************************************/
53
54#include "emu.h"
55
56#include "bus/rs232/rs232.h"
57#include "cpu/i8085/i8085.h"
58#include "machine/clock.h"
59#include "machine/i8251.h"
60#include "machine/i8255.h"
61#include "machine/ms7004.h"
62#include "machine/pic8259.h"
63
64#define SCREEN_PAGE (80*48)
65
66#define KSM_TOTAL_HORZ 1000
67#define KSM_DISP_HORZ  800
68#define KSM_HORZ_START 200
69
70#define KSM_TOTAL_VERT 28*11
71#define KSM_DISP_VERT  25*11
72#define KSM_VERT_START 2*11
73
74#define KSM_STATUSLINE_TOTAL 11
75#define KSM_STATUSLINE_VRAM 0xF8B0
76
77#define VERBOSE_DBG 0       /* general debug messages */
78
79#define DBG_LOG(N,M,A) \
80   do { \
81      if(VERBOSE_DBG>=N) \
82      { \
83         if( M ) \
84            logerror("%11.6f at %s: %-24s",machine().time().as_double(),machine().describe_context(),(char*)M ); \
85         logerror A; \
86      } \
87   } while (0)
88
89
90class ksm_state : public driver_device
91{
92public:
93   ksm_state(const machine_config &mconfig, device_type type, const char *tag) :
94      driver_device(mconfig, type, tag),
95      m_p_videoram(*this, "videoram"),
96      m_maincpu(*this, "maincpu"),
97      m_pic8259(*this, "pic8259"),
98      m_i8251line(*this, "i8251line"),
99      m_rs232(*this, "rs232"),
100      m_i8251kbd(*this, "i8251kbd"),
101      m_ms7004(*this, "ms7004"),
102      m_screen(*this, "screen")
103   { }
104
105   virtual void machine_reset();
106   virtual void video_start();
107   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
108   TIMER_DEVICE_CALLBACK_MEMBER( scanline_callback );
109
110   DECLARE_WRITE_LINE_MEMBER(write_keyboard_clock);
111   DECLARE_WRITE_LINE_MEMBER(write_line_clock);
112
113   DECLARE_WRITE8_MEMBER(ksm_ppi_porta_w);
114   DECLARE_WRITE8_MEMBER(ksm_ppi_portc_w);
115
116private:
117   UINT32 draw_scanline(UINT16 *p, UINT16 offset, UINT8 scanline);
118   rectangle m_tmpclip;
119   bitmap_ind16 m_tmpbmp;
120
121   const UINT8 *m_p_chargen;
122   struct {
123      UINT8 line;
124      UINT16 ptr;
125   } m_video;
126
127protected:
128   required_shared_ptr<UINT8> m_p_videoram;
129   required_device<cpu_device> m_maincpu;
130   required_device<pic8259_device>  m_pic8259;
131   required_device<i8251_device> m_i8251line;
132   required_device<rs232_port_device> m_rs232;
133   required_device<i8251_device> m_i8251kbd;
134   required_device<ms7004_device> m_ms7004;
135   required_device<screen_device> m_screen;
136};
137
138static ADDRESS_MAP_START( ksm_mem, AS_PROGRAM, 8, ksm_state )
139   ADDRESS_MAP_UNMAP_HIGH
140   AM_RANGE (0x0000, 0x0fff) AM_ROM
141   AM_RANGE (0x2000, 0x21ff) AM_RAM
142   AM_RANGE (0xc000, 0xffff) AM_RAM AM_SHARE("videoram")
143ADDRESS_MAP_END
144
145static ADDRESS_MAP_START( ksm_io, AS_IO, 8, ksm_state )
146   ADDRESS_MAP_UNMAP_HIGH
147   AM_RANGE (0x5e, 0x5f) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
148   AM_RANGE (0x6e, 0x6e) AM_DEVREADWRITE("i8251kbd", i8251_device, data_r, data_w)
149   AM_RANGE (0x6f, 0x6f) AM_DEVREADWRITE("i8251kbd", i8251_device, status_r, control_w)
150   AM_RANGE (0x76, 0x76) AM_DEVREADWRITE("i8251line", i8251_device, data_r, data_w)
151   AM_RANGE (0x77, 0x77) AM_DEVREADWRITE("i8251line", i8251_device, status_r, control_w)
152   AM_RANGE (0x78, 0x7b) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
153ADDRESS_MAP_END
154
155/* Input ports */
156static INPUT_PORTS_START( ksm )
157   PORT_START("SA1")
158   PORT_DIPNAME(0x01, 0x01, "Stop bits")
159   PORT_DIPSETTING(0x00, "2 bits")
160   PORT_DIPSETTING(0x01, "1 bit")
161   PORT_DIPNAME(0x02, 0x00, "Parity bits")
162   PORT_DIPSETTING(0x00, "0 bits")
163   PORT_DIPSETTING(0x02, "1 bit")
164   PORT_DIPNAME(0x04, 0x00, "Parity check")
165   PORT_DIPSETTING(0x00, "Off")
166   PORT_DIPSETTING(0x04, "On")
167   PORT_DIPNAME(0x08, 0x00, "Interpret controls")
168   PORT_DIPSETTING(0x00, "Interpret")
169   PORT_DIPSETTING(0x08, "Display")
170   PORT_DIPNAME(0x10, 0x00, "Auto wraparound")
171   PORT_DIPSETTING(0x00, "On")
172   PORT_DIPSETTING(0x10, "Off")
173   PORT_DIPNAME(0x20, 0x00, "Auto repeat")
174   PORT_DIPSETTING(0x00, "On")
175   PORT_DIPSETTING(0x20, "Off")
176   PORT_DIPNAME(0x40, 0x00, "Auto CR/LF")
177   PORT_DIPSETTING(0x00, "Off")
178   PORT_DIPSETTING(0x40, "On")
179   PORT_DIPNAME(0x80, 0x00, "Character set")
180   PORT_DIPSETTING(0x00, "KOI-8 N0/N1")
181   PORT_DIPSETTING(0x80, "KOI-8 N2")
182   PORT_START("SA2")
183   PORT_DIPNAME(0x01, 0x00, "XON/XOFF")
184   PORT_DIPSETTING(0x00, "Off")
185   PORT_DIPSETTING(0x01, "On")
186   PORT_DIPNAME(0x0E, 0x00, "Baud rate")
187   PORT_DIPSETTING(0x00, "9600")
188   PORT_DIPSETTING(0x02, "4800")
189   PORT_DIPSETTING(0x04, "2400")
190   PORT_DIPSETTING(0x06, "1200")
191   PORT_DIPSETTING(0x08, "600")
192   PORT_DIPSETTING(0x0A, "300")
193   PORT_DIPSETTING(0x0C, "150")
194   PORT_DIPSETTING(0x0E, "75")
195INPUT_PORTS_END
196
197void ksm_state::machine_reset()
198{
199   memset(&m_video, 0, sizeof(m_video));
200}
201
202void ksm_state::video_start()
203{
204   m_p_chargen = memregion("chargen")->base();
205
206   m_tmpclip = rectangle(0, KSM_DISP_HORZ-1, 0, KSM_DISP_VERT-1);
207   m_tmpbmp.allocate(KSM_DISP_HORZ, KSM_DISP_VERT);
208}
209
210WRITE8_MEMBER(ksm_state::ksm_ppi_porta_w)
211{
212   DBG_LOG(1,"PPI port A", ("line %d\n", data));
213   m_video.line = data;
214}
215
216WRITE8_MEMBER(ksm_state::ksm_ppi_portc_w)
217{
218   DBG_LOG(1,"PPI port C", ("blink %d speed %d\n", BIT(data, 7), ((data >> 4) & 7) ));
219}
220
221WRITE_LINE_MEMBER(ksm_state::write_keyboard_clock)
222{
223//   KSM never sends data to keyboard
224//   m_i8251kbd->write_txc(state);
225   m_i8251kbd->write_rxc(state);
226}
227
228WRITE_LINE_MEMBER(ksm_state::write_line_clock)
229{
230   m_i8251line->write_txc(state);
231   m_i8251line->write_rxc(state);
232}
233
234/*
235    Raster size is 28x11 scan lines.
236    XXX VBlank is active for 2 topmost on-screen rows and 1 at the bottom.
237
238    Usable raster is 800 x 275 pixels (80 x 25 characters).  24 lines are
239    available to the user and 25th (topmost) line is the status line.
240    Status line displays current serial port speed and 9 setup bits.
241
242    No character attributes are available, but in 'display controls' mode
243    control characters stored in memory are shown as blinking chars.
244
245    Character cell is 10 x 11; character generator provides 7 x 8 of that.
246    3 extra horizontal pixels are always XXX blank.  Blinking XXX cursor may be
247    displayed on 3 extra scan lines.
248*/
249
250UINT32 ksm_state::draw_scanline(UINT16 *p, UINT16 offset, UINT8 scanline)
251{
252   UINT8 gfx, fg, bg, ra, blink;
253   UINT16 x, chr;
254
255   bg = 0; fg = 1; ra = scanline % 8;
256   blink = (m_screen->frame_number() % 10) > 4;
257   if (scanline > 7) {
258      offset -= 0x2000;
259   }
260
261   for (x = offset; x < offset + 80; x++)
262   {
263      chr = m_p_videoram[x] << 3;
264      gfx = m_p_chargen[chr | ra];
265
266      if ((scanline > 7 && blink) || ((chr < (0x20<<3)) && !blink))
267         gfx = 0;
268
269      *p++ = BIT(gfx, 6) ? fg : bg;
270      *p++ = BIT(gfx, 5) ? fg : bg;
271      *p++ = BIT(gfx, 4) ? fg : bg;
272      *p++ = BIT(gfx, 3) ? fg : bg;
273      *p++ = BIT(gfx, 2) ? fg : bg;
274      *p++ = BIT(gfx, 1) ? fg : bg;
275      *p++ = BIT(gfx, 0) ? fg : bg;
276      *p++ = bg;
277      *p++ = bg;
278      *p++ = bg;
279   }
280   return 0;
281}
282
283TIMER_DEVICE_CALLBACK_MEMBER(ksm_state::scanline_callback)
284{
285   UINT16 y = m_screen->vpos();
286   UINT16 offset;
287   
288   DBG_LOG(2,"scanline_cb",
289      ("addr %02x frame %" I64FMT "d x %.4d y %.3d row %.2d\n",
290      m_video.line, m_screen->frame_number(), m_screen->hpos(), y, y%11));
291
292   if (y < KSM_VERT_START) return;
293   y -= KSM_VERT_START;
294   if (y >= KSM_DISP_VERT) return;
295
296   if (y < KSM_STATUSLINE_TOTAL) {
297      offset = KSM_STATUSLINE_VRAM - 0xC000;
298   } else {
299      offset = 0x2000 + 0x30 + (((m_video.line + y/11 - 1) % 48) << 7);
300   }
301
302   draw_scanline(&m_tmpbmp.pix16(y), offset, y%11);
303}
304
305UINT32 ksm_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
306{
307   copybitmap(bitmap, m_tmpbmp, 0, 0, KSM_HORZ_START, KSM_VERT_START, cliprect);
308   return 0;
309}
310
311
312/* F4 Character Displayer */
313static const gfx_layout ksm_charlayout =
314{
315   7, 8,                   /* 7x8 pixels in 10x11 cell */
316   256,                    /* 256 characters */
317   1,                      /* 1 bits per pixel */
318   { 0 },                  /* no bitplanes */
319   /* x offsets */
320   { 1, 2, 3, 4, 5, 6, 7 },
321   /* y offsets */
322   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
323   8*8                 /* every char takes 8 bytes */
324};
325
326static GFXDECODE_START( ksm )
327   GFXDECODE_ENTRY("chargen", 0x0000, ksm_charlayout, 0, 1)
328GFXDECODE_END
329
330static MACHINE_CONFIG_START( ksm, ksm_state )
331   MCFG_CPU_ADD("maincpu", I8080, XTAL_15_4MHz/10)
332   MCFG_CPU_PROGRAM_MAP(ksm_mem)
333   MCFG_CPU_IO_MAP(ksm_io)
334   MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
335
336   MCFG_TIMER_DRIVER_ADD_PERIODIC("scantimer", ksm_state, scanline_callback, attotime::from_hz(50*28*11))
337   MCFG_TIMER_START_DELAY(attotime::from_hz(XTAL_15_4MHz/KSM_HORZ_START))
338
339   MCFG_SCREEN_ADD("screen", RASTER)
340   MCFG_SCREEN_UPDATE_DRIVER(ksm_state, screen_update)
341   MCFG_SCREEN_RAW_PARAMS(XTAL_15_4MHz, KSM_TOTAL_HORZ, KSM_HORZ_START,
342      KSM_HORZ_START+KSM_DISP_HORZ, KSM_TOTAL_VERT, KSM_VERT_START,
343      KSM_VERT_START+KSM_DISP_VERT);
344
345   MCFG_SCREEN_PALETTE("palette")
346
347   MCFG_GFXDECODE_ADD("gfxdecode", "palette", ksm)
348   MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
349
350   MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL )
351
352   MCFG_DEVICE_ADD("ppi8255", I8255, 0)
353   MCFG_I8255_OUT_PORTA_CB(WRITE8(ksm_state, ksm_ppi_porta_w))
354   MCFG_I8255_IN_PORTB_CB(IOPORT("SA1"))
355   MCFG_I8255_IN_PORTC_CB(IOPORT("SA2"))
356   MCFG_I8255_OUT_PORTC_CB(WRITE8(ksm_state, ksm_ppi_portc_w))
357
358   // serial connection to host
359   MCFG_DEVICE_ADD( "i8251line", I8251, 0)
360   MCFG_I8251_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd))
361   MCFG_I8251_DTR_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_dtr))
362   MCFG_I8251_RTS_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_rts))
363   MCFG_I8251_RXRDY_HANDLER(DEVWRITELINE("pic8259", pic8259_device, ir3_w))
364
365   MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "null_modem")
366   MCFG_RS232_RXD_HANDLER(DEVWRITELINE("i8251line", i8251_device, write_rxd))
367   MCFG_RS232_CTS_HANDLER(DEVWRITELINE("i8251line", i8251_device, write_cts))
368   MCFG_RS232_DSR_HANDLER(DEVWRITELINE("i8251line", i8251_device, write_dsr))
369
370   MCFG_DEVICE_ADD("line_clock", CLOCK, 9600*16) // 8251 is set to /16 on the clock input
371   MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(ksm_state, write_line_clock))
372
373   // serial connection to MS7004 keyboard
374   MCFG_DEVICE_ADD( "i8251kbd", I8251, 0)
375   MCFG_I8251_RXRDY_HANDLER(DEVWRITELINE("pic8259", pic8259_device, ir1_w))
376
377   MCFG_DEVICE_ADD("ms7004", MS7004, 0)
378   MCFG_MS7004_TX_HANDLER(DEVWRITELINE("i8251kbd", i8251_device, write_rxd))
379
380   // baud rate is supposed to be 4800 but keyboard is slightly faster
381   MCFG_DEVICE_ADD("keyboard_clock", CLOCK, 4960*16)
382   MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(ksm_state, write_keyboard_clock))
383MACHINE_CONFIG_END
384
385
386/*
387   Assumes that SRAM is at 0x2000, which is where technical manual puts it.
388   Chargen has 1 missing pixel in 'G' character.
389*/
390ROM_START( dvk_ksm )
391   ROM_REGION(0x1000, "maincpu", ROMREGION_ERASE00)
392   ROM_LOAD( "ksm_04_rom0_d32.bin", 0x0000, 0x0800, CRC(6ad62715) SHA1(20f8f95119bc7fc6e0f16c67864e339a86edb44d))
393   ROM_LOAD( "ksm_05_rom1_d33.bin", 0x0800, 0x0800, CRC(5b29bcd2) SHA1(1f4f82c2f88f1e8615ec02076559dc606497e654))
394
395   ROM_REGION(0x0800, "chargen", ROMREGION_ERASE00)
396   ROM_LOAD("ksm_03_cg_d31.bin", 0x0000, 0x0800, CRC(98853aa7) SHA1(09b8e1b5b10a00c0b0ae7e36ad1328113d31230a))
397ROM_END
398
399/*
400   Assumes that SRAM is at 0x2100, otherwise identical.
401   Chargen has no missing pixels in 'G' character.
402*/
403ROM_START( dvk_ksm01 )
404   ROM_REGION(0x1000, "maincpu", ROMREGION_ERASE00)
405   ROM_LOAD( "ksm_04_rom0_d32.bin", 0x0000, 0x0800, CRC(5276dc9a) SHA1(dd41dfb4cb3f1cf22d96d95f1ff6a27fe4eb9a38))
406   ROM_LOAD( "ksm_05_rom1_d33.bin", 0x0800, 0x0800, CRC(5b29bcd2) SHA1(1f4f82c2f88f1e8615ec02076559dc606497e654))
407
408   ROM_REGION(0x0800, "chargen", ROMREGION_ERASE00)
409   ROM_LOAD("ksm_03_cg_d31.bin", 0x0000, 0x0800, CRC(98853aa7) SHA1(c7871a96f135db05c3c8d718fbdf1728e22e72b7))
410ROM_END
411
412/* Driver */
413
414/*    YEAR  NAME      PARENT  COMPAT   MACHINE    INPUT    INIT                      COMPANY     FULLNAME       FLAGS */
415COMP( 1986, dvk_ksm,  0,      0,       ksm,       ksm,     driver_device,     0,     "USSR",     "DVK KSM",     0)
416COMP( 198?, dvk_ksm01,0  ,    0,       ksm,       ksm,     driver_device,     0,     "USSR",     "DVK KSM-01",  0)
trunk/src/mess/drivers/einstein.c
r241752r241753
730730   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
731731
732732   /* printer */
733   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
733   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
734734   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(IC_I063, z80pio_device, strobe_a))
735735   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(einstein_state, write_centronics_busy))
736736   MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(einstein_state, write_centronics_perror))
trunk/src/mess/drivers/elwro800.c
r241752r241753
573573   MCFG_I8255_OUT_PORTC_CB(WRITE8(elwro800_state, i8255_port_c_w))
574574
575575   /* printer */
576   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
576   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
577577   MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in")
578578   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(elwro800_state, write_centronics_ack))
579579
trunk/src/mess/drivers/ep64.c
r241752r241753
521521   MCFG_EP64_EXPANSION_BUS_SLOT_NMI_CALLBACK(INPUTLINE(Z80_TAG, INPUT_LINE_NMI))
522522   MCFG_EP64_EXPANSION_BUS_SLOT_WAIT_CALLBACK(INPUTLINE(Z80_TAG, Z80_INPUT_LINE_WAIT))
523523
524   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
524   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
525525   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(ep64_state, write_centronics_busy))
526526   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
527527
trunk/src/mess/drivers/fc100.c
r241752r241753
552552
553553   MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "fc100_cart")
554554
555   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
555   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
556556   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit4))
557557   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit5))
558558   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
trunk/src/mess/drivers/fm7.c
r241752r241753
20882088   MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_intrq_w))
20892089   MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_drq_w))
20902090
2091   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
2091   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
20922092   MCFG_SLOT_OPTION_ADD( "dsjoy", DEMPA_SHINBUNSHA_JOYSTICK )
20932093   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fm7_state, write_centronics_busy))
20942094   MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(fm7_state, write_centronics_fault))
r241752r241753
21452145   MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_intrq_w))
21462146   MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_drq_w))
21472147
2148   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
2148   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
21492149   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fm7_state, write_centronics_busy))
21502150   MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(fm7_state, write_centronics_fault))
21512151   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(fm7_state, write_centronics_ack))
r241752r241753
22212221   MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_intrq_w))
22222222   MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_drq_w))
22232223
2224   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
2224   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
22252225   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fm7_state, write_centronics_busy))
22262226   MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(fm7_state, write_centronics_fault))
22272227   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(fm7_state, write_centronics_ack))
r241752r241753
22992299   MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_intrq_w))
23002300   MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_drq_w))
23012301
2302   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
2302   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
23032303   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fm7_state, write_centronics_busy))
23042304   MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(fm7_state, write_centronics_fault))
23052305   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(fm7_state, write_centronics_ack))
r241752r241753
23532353   MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_intrq_w))
23542354   MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_drq_w))
23552355
2356   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
2356   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
23572357   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fm7_state, write_centronics_busy))
23582358   MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(fm7_state, write_centronics_fault))
23592359   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(fm7_state, write_centronics_ack))
trunk/src/mess/drivers/fp1100.c
r241752r241753
674674   MCFG_MC6845_UPDATE_ROW_CB(fp1100_state, fp1100_update_row)
675675
676676   /* Printer */
677   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
677   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
678678   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fp1100_state, centronics_busy_w))
679679   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
680680
trunk/src/mess/drivers/gamate.c
r0r241753
1/******************************************************************************
2 PeT mess@utanet.at 2007, 2014
3******************************************************************************/
4
5#include "emu.h"
6#include "cpu/m6502/m6502.h"
7#include "bus/generic/slot.h"
8#include "bus/generic/carts.h"
9#include "rendlay.h"
10
11class gamate_state : public driver_device
12{
13public:
14   gamate_state(const machine_config &mconfig, device_type type, const char *tag)
15      : driver_device(mconfig, type, tag)
16      , m_maincpu(*this, "maincpu")
17      , m_cart(*this, "cartslot")
18//      , m_gfxdecode(*this, "gfxdecode")
19      , m_io_joy(*this, "JOY")
20      ,   m_palette(*this, "palette")
21   { }
22
23   DECLARE_PALETTE_INIT(gamate);
24   DECLARE_READ8_MEMBER(video_r);
25   DECLARE_READ8_MEMBER(pad_r);
26   DECLARE_WRITE8_MEMBER(video_w);
27   DECLARE_WRITE8_MEMBER(audio_w);
28   DECLARE_WRITE8_MEMBER(bios_w);
29   DECLARE_DRIVER_INIT(gamate);
30   UINT32 screen_update_gamate(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
31   INTERRUPT_GEN_MEMBER(gamate_interrupt);
32
33private:
34   virtual void machine_start();
35
36   struct
37   {
38   UINT8 reg[8];
39   struct {
40      bool write; // else tilemap
41      bool page2; // else page1
42      UINT8 data[2][0x100][0x20];
43      } bitmap;
44   struct {
45      UINT8 data[32][32];
46   } tilemap;
47   UINT8 x, y;
48   } video;
49
50//  UINT8 m_ports[5];
51//  UINT8 m_ram[0x4000];
52   required_device<cpu_device> m_maincpu;
53   required_device<generic_slot_device> m_cart;
54//  required_device<gfxdecode_device> m_gfxdecode;
55   required_ioport m_io_joy;
56   required_device<palette_device> m_palette;
57};
58
59WRITE8_MEMBER( gamate_state::video_w )
60{
61   if (m_maincpu->pc()<0xf000)
62   logerror("%.6f %04x video write %04x %02x\n", machine().time().as_double(), m_maincpu->pc(), offset,data);
63   video.reg[offset]=data;
64   switch (offset) {
65   case 1: video.bitmap.write=data&0x40;break; // probably y increment
66   case 4: video.bitmap.page2=data&0x80;video.x=data&0x7f;break;
67   case 5: video.y=data;break;
68   case 7:
69   if (video.bitmap.write) {
70      if (video.x<ARRAY_LENGTH(video.bitmap.data[0][0]) /*&& video.y<ARRAY_LENGTH(video.bitmap.data[0])*/)
71      video.bitmap.data[video.bitmap.page2][video.y][video.x]=data;
72      else
73      logerror("%.6f %04x video bitmap x %x invalid\n",machine().time().as_double(), m_maincpu->pc(), video.x);
74      video.y++;
75   } else {
76      if (video.x<ARRAY_LENGTH(video.tilemap.data[0]) && (video.y&0x1f)<ARRAY_LENGTH(video.tilemap.data))
77      video.tilemap.data[video.y&0x1f][video.x]=data;
78      else
79      logerror("%.6f %04x video tilemap %x %x invalid\n",machine().time().as_double(), m_maincpu->pc(), video.x, video.y);
80      video.x++;
81   }
82   }
83}
84
85READ8_MEMBER( gamate_state::video_r )
86{
87   if (offset!=6) return 0;
88   UINT8 data=0;
89   if (video.bitmap.write) {
90      if (video.x<ARRAY_LENGTH(video.bitmap.data[0][0]) /*&& video.y<ARRAY_LENGTH(video.bitmap.data[0])*/)
91      data=video.bitmap.data[video.bitmap.page2][video.y][video.x];
92      else
93      logerror("%.6f video bitmap x %x invalid\n",machine().time().as_double(),video.x);
94   } else {
95      if (video.x<ARRAY_LENGTH(video.tilemap.data[0]) && video.y<ARRAY_LENGTH(video.tilemap.data))
96      data=video.tilemap.data[video.y][video.x];
97      else
98      logerror("%.6f video tilemap %x %x invalid\n",machine().time().as_double(),video.x, video.y);
99   }
100   if (m_maincpu->pc()<0xf000)
101   logerror("%.6f video read %04x %02x\n",machine().time().as_double(),offset, data);
102   return data;
103}
104
105WRITE8_MEMBER( gamate_state::audio_w )
106{
107   //  logerror("%.6f audio write %04x %02x\n",timer_get_time(),offset,data);
108}
109
110WRITE8_MEMBER( gamate_state::bios_w )
111{
112   UINT8 *memory = *memregion("main_cpu"); //memory_region (REGION_CPU1);
113
114   unsigned short stack=m_maincpu->sp();//cpu_get_reg(M6502_S)|0x100;
115   unsigned short address= memory[stack+1]|(memory[stack+2]<<8);
116   switch (offset) {
117   case 0x12:
118   logerror("%.6f bios api %04x %04x string:%04x x:%02x y:%02x\n",
119            machine().time().as_double(), offset|0xf000, address,
120            memory[0]|(memory[1]<<8), 0, 0);//cpu_get_reg(M6502_X), cpu_get_reg(M6502_Y) );
121   break;
122   case 0x15:
123   logerror("%.6f bios api %04x %04x string:%04x x:%02x y:%02x\n",
124            machine().time().as_double(), offset|0xf000, address,
125            memory[0]|(memory[1]<<8), 0, 0); //cpu_get_reg(M6502_X), cpu_get_reg(M6502_Y) );
126   break;
127   case 0x18:
128   logerror("%.6f bios api %04x %04x string:%04x\n",machine().time().as_double(), offset|0xf000, address,
129            memory[0]|(memory[1]<<8) );
130   break;
131   case 0x1b:
132   logerror("%.6f bios api %04x %04x string:%04x\n",machine().time().as_double(), offset|0xf000, address,
133            memory[0]|(memory[1]<<8) );
134   break;
135   case 0x1e:
136   logerror("%.6f bios api %04x %04x string:%04x\n",machine().time().as_double(), offset|0xf000, address,
137            memory[0]|(memory[1]<<8) );
138   break;
139   case 0x2a: // cube up menu lighting
140   logerror("%.6f bios api %04x %04x 1c1d:%04x a:%02x x:%02x y:%02x\n",
141            machine().time().as_double(), offset|0xf000, address,
142            memory[0x1c]|(memory[0x1d]<<8),
143            0,0,0);//cpu_get_reg(M6502_A), cpu_get_reg(M6502_X), cpu_get_reg(M6502_Y) );
144   break;
145   default:
146   logerror("%.6f bios api %04x %04x\n",machine().time().as_double(), offset|0xf000, address);
147   }
148}
149
150READ8_MEMBER( gamate_state::pad_r )
151{
152   UINT8 data=m_io_joy->read();//readinputport(0);
153   //  logerror("%.6f pad read %04x %02x\n",timer_get_time(),offset,data);
154   return data;
155}
156
157static ADDRESS_MAP_START( gamate_mem, AS_PROGRAM, 8, gamate_state )
158//  AM_RANGE(0x4000, 0x7fff) AM_READWRITE(gmaster_io_r, gmaster_io_w)
159
160   AM_RANGE(0x0000, 0x03ff) AM_RAM
161   AM_RANGE(0x4000, 0x400d) AM_WRITE(audio_w)
162   AM_RANGE(0x4400, 0x4400) AM_READ(pad_r)
163//  AM_RANGE(0x5006, 0x5006) AM_READ(video_r)
164//  AM_RANGE(0x5000, 0x5007) AM_WRITE(video_w)
165   AM_RANGE(0x5000, 0x5007) AM_READWRITE(video_r, video_w)
166
167   AM_RANGE(0x6000, 0xdfff) AM_ROM
168   AM_RANGE(0xf000, 0xffff) AM_ROM
169ADDRESS_MAP_END
170
171
172static INPUT_PORTS_START( gamate )
173   PORT_START("JOY")
174   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP)
175   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
176   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) // left?
177   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) // rechts?
178   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("A")
179   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_NAME("B")
180   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START) PORT_NAME("start/pause")
181   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SELECT) PORT_NAME("select")
182INPUT_PORTS_END
183
184#if 0
185static const struct gfx_layout gamate_charlayout =
186{
187      4,      /* width of object */
188      1,      /* height of object */
189      256,/* 256 characters */
190      2,      /* bits per pixel */
191      { 0,1 }, /* no bitplanes */
192      /* x offsets */
193      { 0,2,4,6 },
194      /* y offsets */
195      { 0 },
196      8*1 /* size of 1 object in bits */
197};
198
199static const unsigned short gamate_palette[4] =
200{
201   0,1,2,3
202};
203#endif
204
205/* palette in red, green, blue tribles */
206static const unsigned char gamate_colors[4][3] =
207{
208   { 255,255,255 },
209   { 0xa0, 0xa0, 0xa0 },
210   { 0x60, 0x60, 0x60 },
211   { 0, 0, 0 }
212};
213
214#if 0
215static GFXDECODE_START( gamate_charlayout )
216      GFXDECODE_ENTRY( "gfx1", 0x0000, gamate_charlayout, 0, 0x100 )
217GFXDECODE_END
218#endif
219
220PALETTE_INIT_MEMBER(gamate_state, gamate)
221{
222   int i;
223
224   for (i = 0; i < 4; i++)
225   {
226      palette.set_pen_color(i, gamate_colors[i][0], gamate_colors[i][1], gamate_colors[i][2]);
227   }
228#if 0
229   for (int i = 0; i < 8; i++)
230      palette.set_indirect_color(i, arcadia_colors[i]);
231
232   for (int i = 0; i < 128+8; i++)
233      palette.set_pen_indirect(i, arcadia_palette[i]);
234#endif
235}
236
237
238static void BlitPlane(UINT16* line, UINT8 plane1, UINT8 plane2)
239{
240   line[3]=(plane1&1)|((plane2<<1)&2);
241   line[2]=((plane1>>1)&1)|((plane2<<0)&2);
242   line[1]=((plane1>>2)&1)|((plane2>>1)&2);
243   line[0]=((plane1>>3)&1)|((plane2>>2)&2);
244}
245
246UINT32 gamate_state::screen_update_gamate(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
247{
248   int x, y, j;
249   for (y=0;y<160;y++) {
250   for (x=0, j=0;x<160;x+=8, j++) {
251//  for (y=0;y<256;y++) {
252//    for (x=0, j=0;x<256;x+=8, j++) {
253      UINT8 d1=video.bitmap.data[0][y][j];
254      UINT8 d2=video.bitmap.data[1][y][j];
255#if 0
256      UINT16 data=PLANES2_2_PACKED(d1, d2);
257      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), (data>>8)&0xff,0,0,0, x, y);
258      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), data&0xff,0,0,0, x+4, y);
259#else
260         BlitPlane(&bitmap.pix16(y, x+4), d1, d2);
261         BlitPlane(&bitmap.pix16(y, x), d1>>4, d2>>4);
262#endif
263   }
264   }
265   for (y=0; y<32; y++) {
266   for (x=0; x<32; x++) {
267#if 0
268      UINT8 d=video.tilemap.data[y][x];
269      if (d) {
270      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0xff,0,0,0, 256+x*8, y*8);
271      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0xff,0,0,0, 256+x*8, y*8+1);
272      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0xff,0,0,0, 256+x*8, y*8+2);
273      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0xff,0,0,0, 256+x*8, y*8+3);
274      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0xff,0,0,0, 256+x*8, y*8+4);
275      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0xff,0,0,0, 256+x*8, y*8+5);
276      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0xff,0,0,0, 256+x*8, y*8+6);
277      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0xff,0,0,0, 256+x*8, y*8+7);
278      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0xff,0,0,0, 260+x*8, y*8);
279      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0xff,0,0,0, 260+x*8, y*8+1);
280      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0xff,0,0,0, 260+x*8, y*8+2);
281      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0xff,0,0,0, 260+x*8, y*8+3);
282      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0xff,0,0,0, 260+x*8, y*8+4);
283      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0xff,0,0,0, 260+x*8, y*8+5);
284      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0xff,0,0,0, 260+x*8, y*8+6);
285      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0xff,0,0,0, 260+x*8, y*8+7);
286      } else {
287      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0,0,0,0, 256+x*8, y*8);
288      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0,0,0,0, 256+x*8, y*8+1);
289      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0,0,0,0, 256+x*8, y*8+2);
290      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0,0,0,0, 256+x*8, y*8+3);
291      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0,0,0,0, 256+x*8, y*8+4);
292      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0,0,0,0, 256+x*8, y*8+5);
293      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0,0,0,0, 256+x*8, y*8+6);
294      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0,0,0,0, 256+x*8, y*8+7);
295      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0,0,0,0, 260+x*8, y*8);
296      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0,0,0,0, 260+x*8, y*8+1);
297      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0,0,0,0, 260+x*8, y*8+2);
298      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0,0,0,0, 260+x*8, y*8+3);
299      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0,0,0,0, 260+x*8, y*8+4);
300      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0,0,0,0, 260+x*8, y*8+5);
301      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0,0,0,0, 260+x*8, y*8+6);
302      m_gfxdecode->gfx(0)->opaque(bitmap, bitmap.cliprect(), 0,0,0,0, 260+x*8, y*8+7);
303      }
304#endif
305   }
306   }
307   return 0;
308}
309
310DRIVER_INIT_MEMBER(gamate_state,gamate)
311{
312   memset(&video, 0, sizeof(video));/* memset(m_ram, 0, sizeof(m_ram));*/
313   UINT8 *gfx=memregion("gfx1")->base();   for (int i=0; i<256; i++) gfx[i]=i;
314}
315
316
317void gamate_state::machine_start()
318{
319   if (m_cart->exists())
320      m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000, 0xdfff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
321#if 0
322   save_item(NAME(m_video.data));
323   save_item(NAME(m_video.index));
324   save_item(NAME(m_video.x));
325   save_item(NAME(m_video.y));
326   save_item(NAME(m_video.mode));
327   save_item(NAME(m_video.delayed));
328   save_item(NAME(m_video.pixels));
329   save_item(NAME(m_ports));
330   save_item(NAME(m_ram));
331#endif
332}
333
334
335INTERRUPT_GEN_MEMBER(gamate_state::gamate_interrupt)
336{
337//  m_maincpu->set_input_line(UPD7810_INTFE1, ASSERT_LINE);
338   static bool state=false;
339//  m_maincpu->set_input_line(M6502_IRQ_LINE, state?ASSERT_LINE: CLEAR_LINE);
340   state=!state;
341//  cpu_set_irq_line(0, M6502_INT_IRQ, PULSE_LINE);
342}
343
344static MACHINE_CONFIG_START( gamate, gamate_state )
345   MCFG_CPU_ADD("maincpu", M6502, 4433000)
346   MCFG_CPU_PROGRAM_MAP(gamate_mem)
347   MCFG_CPU_VBLANK_INT_DRIVER("screen", gamate_state,  gamate_interrupt)
348
349   MCFG_SCREEN_ADD("screen", LCD)
350   MCFG_SCREEN_REFRESH_RATE(60)
351#if 0
352   MCFG_SCREEN_SIZE(512, 256)
353   MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
354#else
355   MCFG_SCREEN_SIZE(160, 160)
356   MCFG_SCREEN_VISIBLE_AREA(0, 160-1, 0, 160-1)
357#endif
358   MCFG_SCREEN_UPDATE_DRIVER(gamate_state, screen_update_gamate)
359   MCFG_SCREEN_PALETTE("palette")
360
361//  MCFG_GFXDECODE_ADD("gfxdecode", "palette", gamate )
362   MCFG_PALETTE_ADD("palette", ARRAY_LENGTH(gamate_colors))
363//  MCFG_PALETTE_INDIRECT_ENTRIES(4)
364   MCFG_PALETTE_INIT_OWNER(gamate_state, gamate)
365   MCFG_DEFAULT_LAYOUT(layout_lcd)
366
367   MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_linear_slot, "gamate_cart")
368   MCFG_GENERIC_MANDATORY
369
370   MCFG_SOFTWARE_LIST_ADD("cart_list", "gamate")
371MACHINE_CONFIG_END
372
373
374ROM_START(gamate)
375   ROM_REGION(0x10000,"maincpu", 0)
376   ROM_LOAD("gamate.bin", 0xf000, 0x1000, BAD_DUMP CRC(b8bf539b) SHA1(d00cb43b8a4cb0cc7fea06bee5f08490a71f5690) )
377//  ROM_LOAD("gamate.bin", 0xf000, 0x1000, CRC(b8bf539b) SHA1(d00cb43b8a4cb0cc7fea06bee5f08490a71f5690) )
378   ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
379ROM_END
380
381
382/*    YEAR  NAME      PARENT  COMPAT    MACHINE   INPUT    CLASS          INIT      COMPANY    FULLNAME */
383CONS( 19??, gamate,  0,      0,        gamate,  gamate, gamate_state, gamate, "Bit Corp", "Gamate", GAME_NOT_WORKING | GAME_NO_SOUND)
trunk/src/mess/drivers/gimix.c
r241752r241753
485485   m_floppy0_ready = false;
486486   m_floppy1_ready = false;
487487   membank("lower_ram")->set_base(m_ram->pointer());
488   membank("upper_ram")->set_base(m_ram->pointer()+0x10000);
488   if(m_ram->size() > 65536)
489      membank("upper_ram")->set_base(m_ram->pointer()+0x10000);
489490
490491   // initialise FDC clock based on DIP Switch S2-9 (5.25"/8" drive select)
491492   if(m_dma_dip->read() & 0x00000100)
trunk/src/mess/drivers/gmaster.c
r241752r241753
2828   DECLARE_WRITE8_MEMBER(gmaster_port_w);
2929   DECLARE_DRIVER_INIT(gmaster) { memset(&m_video, 0, sizeof(m_video)); memset(m_ram, 0, sizeof(m_ram)); }
3030   UINT32 screen_update_gmaster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
31   INTERRUPT_GEN_MEMBER(gmaster_interrupt);
3231
3332private:
3433   virtual void machine_start();
r241752r241753
278277}
279278
280279
281INTERRUPT_GEN_MEMBER(gmaster_state::gmaster_interrupt)
282{
283   m_maincpu->set_input_line(UPD7810_INTFE1, ASSERT_LINE);
284}
285
286280static MACHINE_CONFIG_START( gmaster, gmaster_state )
287281   MCFG_CPU_ADD("maincpu", UPD7810, XTAL_12MHz/2/*?*/)  // upd78c11 in the unit
288282   MCFG_CPU_PROGRAM_MAP(gmaster_mem)
289283   MCFG_CPU_IO_MAP( gmaster_io)
290   MCFG_CPU_VBLANK_INT_DRIVER("screen", gmaster_state,  gmaster_interrupt)
291284
292285   MCFG_SCREEN_ADD("screen", LCD)
293286   MCFG_SCREEN_REFRESH_RATE(60)
trunk/src/mess/drivers/hx20.c
r241752r241753
864864   MCFG_RAM_EXTRA_OPTIONS("32K")
865865
866866   // software lists
867   MCFG_SOFTWARE_LIST_ADD("flop_list", "hx20_flop")
867   MCFG_SOFTWARE_LIST_ADD("epson_cpm_list", "epson_cpm")
868868MACHINE_CONFIG_END
869869
870870
trunk/src/mess/drivers/isbc.c
r241752r241753
283283   MCFG_I8255_IN_PORTB_CB(DEVREAD8("cent_status_in", input_buffer_device, read))
284284   MCFG_I8255_OUT_PORTC_CB(WRITE8(isbc_state, ppi_c_w))
285285
286   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
286   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
287287   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(isbc_state, write_centronics_ack))
288288   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit7))
289289   MCFG_CENTRONICS_FAULT_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit6))
trunk/src/mess/drivers/jtc.c
r241752r241753
735735   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
736736
737737   /* printer */
738   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
738   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
739739   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(jtc_state, write_centronics_busy))
740740MACHINE_CONFIG_END
741741
trunk/src/mess/drivers/kaypro.c
r241752r241753
207207   /* devices */
208208   MCFG_QUICKLOAD_ADD("quickload", kaypro_state, kaypro, "com,cpm", 3)
209209
210   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
210   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
211211   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(kaypro_state, write_centronics_busy))
212212
213213   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241752r241753
281281
282282   MCFG_QUICKLOAD_ADD("quickload", kaypro_state, kaypro, "com,cpm", 3)
283283
284   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
284   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
285285   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(kaypro_state, write_centronics_busy))
286286
287287   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
trunk/src/mess/drivers/kyocera.c
r241752r241753
13761376   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
13771377   MCFG_RS232_RXD_HANDLER(DEVWRITELINE(IM6402_TAG, im6402_device, write_rri))
13781378
1379   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
1379   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
13801380   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(kc85_state, write_centronics_busy))
13811381   MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(kc85_state, write_centronics_select))
13821382
r241752r241753
14261426   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
14271427   MCFG_RS232_RXD_HANDLER(DEVWRITELINE(IM6402_TAG, im6402_device, write_rri))
14281428
1429   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
1429   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
14301430   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(kc85_state, write_centronics_busy))
14311431   MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(kc85_state, write_centronics_select))
14321432
r241752r241753
14861486   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
14871487   MCFG_RS232_RXD_HANDLER(DEVWRITELINE(IM6402_TAG, im6402_device, write_rri))
14881488
1489   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
1489   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
14901490   MCFG_CASSETTE_ADD("cassette")
14911491   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
14921492
r241752r241753
15501550   MCFG_RS232_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr))
15511551
15521552//  MCFG_MC14412_ADD(MC14412_TAG, XTAL_1MHz)
1553   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
1553   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
15541554   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(tandy200_state, write_centronics_busy))
15551555   MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(tandy200_state, write_centronics_select))
15561556
trunk/src/mess/drivers/lviv.c
r241752r241753
486486ROM_END
487487
488488/*    YEAR  NAME    PARENT  COMPAT  MACHINE INPUT   INIT    COMPANY         FULLNAME    FLAGS */
489COMP( 1989, lviv,   0,      0,      lviv,   lviv, driver_device,   0,      "V. I. Lenin",  "Lviv" ,    0 )
489COMP( 1989, lviv,   0,      0,      lviv,   lviv, driver_device,   0,      "V. I. Lenin",  "PK-01 Lviv" ,    0 )
trunk/src/mess/drivers/m5.c
r241752r241753
595595   // CK0 = EXINT, CK1 = GND, CK2 = TCK, CK3 = VDP INT
596596   // ZC2 = EXCLK
597597
598   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
598   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
599599   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(m5_state, write_centronics_busy))
600600
601601   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
r241752r241753
603603   MCFG_CASSETTE_ADD("cassette")
604604   MCFG_CASSETTE_FORMATS(sordm5_cassette_formats)
605605   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY)
606   MCFG_CASSETTE_INTERFACE("m5_cass")
606607
607608   MCFG_DEVICE_ADD(I8255A_TAG, I8255, 0)
608609   MCFG_I8255_IN_PORTA_CB(READ8(m5_state, ppi_pa_r))
r241752r241753
621622   //MCFG_GENERIC_MANDATORY
622623
623624   // software lists
624   MCFG_SOFTWARE_LIST_ADD("cart_list", "m5")
625   MCFG_SOFTWARE_LIST_ADD("cart_list", "m5_cart")
626   MCFG_SOFTWARE_LIST_ADD("cass_list", "m5_cass")
625627
626628   // internal ram
627629   MCFG_RAM_ADD(RAM_TAG)
trunk/src/mess/drivers/mbee.c
r241752r241753
699699   MCFG_QUICKLOAD_ADD("quickload", mbee_state, mbee, "mwb,com,bee", 2)
700700   MCFG_QUICKLOAD_ADD("quickload2", mbee_state, mbee_z80bin, "bin", 2)
701701
702   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
702   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
703703
704704   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
705705
r241752r241753
757757   MCFG_QUICKLOAD_ADD("quickload", mbee_state, mbee, "mwb,com,bee", 2)
758758   MCFG_QUICKLOAD_ADD("quickload2", mbee_state, mbee_z80bin, "bin", 2)
759759
760   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
760   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
761761
762762   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
763763
trunk/src/mess/drivers/mc1000.c
r241752r241753
453453   MCFG_CASSETTE_ADD("cassette")
454454   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
455455
456   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
456   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
457457   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(mc1000_state, write_centronics_busy))
458458
459459   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
trunk/src/mess/drivers/mc1502.c
r241752r241753
7676//  DBG_LOG(2,"mc1502_ppi_portb_w",("( %02X )\n", data));
7777   m_ppi_portb = data;
7878   m_pit8253->write_gate2(BIT(data, 0));
79//  mc1502_speaker_set_spkrdata(BIT(data, 1));
79   mc1502_speaker_set_spkrdata(BIT(data, 1));
8080   m_centronics->write_strobe(BIT(data, 2));
8181   m_centronics->write_autofd(BIT(data, 3));
8282   m_centronics->write_init(BIT(data, 4));
r241752r241753
163163WRITE_LINE_MEMBER(mc1502_state::mc1502_pit8253_out2_changed)
164164{
165165   m_pit_out2 = state;
166//  mc1502_speaker_set_input( state );
166   m_speaker->level_w(m_spkrdata & m_pit_out2);
167167   m_cassette->output(state ? 1 : -1);
168168}
169169
170WRITE_LINE_MEMBER(mc1502_state::mc1502_speaker_set_spkrdata)
171{
172   m_spkrdata = state ? 1 : 0;
173   m_speaker->level_w(m_spkrdata & m_pit_out2);
174}
175
170176DRIVER_INIT_MEMBER( mc1502_state, mc1502 )
171177{
172178   address_space &program = m_maincpu->space(AS_PROGRAM);
r241752r241753
197203MACHINE_RESET_MEMBER( mc1502_state, mc1502 )
198204{
199205   DBG_LOG(0,"init",("machine_reset()\n"));
206
207   m_spkrdata = 0;
208   m_pit_out2 = 1;
209   m_ppi_portb = 0;
210   m_ppi_portc = 0;
211   m_speaker->level_w(0);
200212}
201213
202214/*
r241752r241753
295307   MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
296308   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
297309
298   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
310   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
299311   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit6))
300312   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit7))
301313   MCFG_CENTRONICS_FAULT_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit4))
r241752r241753
324336MACHINE_CONFIG_END
325337
326338
339/*
340        Apparently there was a hardware revision with built-in floppy
341        controller mapped to alternate set of ports; v531 and v533
342        support this revision. v533 is possibly not an original BIOS, it
343        supports autoboot which none of others do. v521h is a version
344        with support for 3rd party hard disk controller (not emulated).
345        v51 is designed for a different keyboard layout (JCUKEN, not
346        QWERTY).
347*/
327348ROM_START( mc1502 )
328349   ROM_REGION16_LE(0x100000,"maincpu", 0)
329350
330351   ROM_DEFAULT_BIOS("v52")
331   ROM_SYSTEM_BIOS(0, "v50", "v5.0")
352   ROM_SYSTEM_BIOS(0, "v50", "v5.0 10/05/89")
332353   ROMX_LOAD( "monitor_5_0.rom",  0xfc000, 0x4000, CRC(9e97c6a0) SHA1(16a304e8de69ec4d8b92acda6bf28454c361a24f),ROM_BIOS(1))
333   ROM_SYSTEM_BIOS(1, "v52", "v5.2")
354   ROM_SYSTEM_BIOS(1, "v52", "v5.2 22/03/91")
334355   ROMX_LOAD( "monitor_5_2.rom",  0xfc000, 0x4000, CRC(0e65491e) SHA1(8a4d556473b5e0e59b05fab77c79c29f4d562412),ROM_BIOS(2))
335   ROM_SYSTEM_BIOS(2, "v531", "v5.31")
336   ROMX_LOAD( "monitor_5_31.rom", 0xfc000, 0x4000, CRC(a48295d5) SHA1(6f38977c22f9cc6c2bc6f6e53edc4048ca6b6721),ROM_BIOS(3))
337   ROM_SYSTEM_BIOS(3, "v533", "v5.33")
338   ROMX_LOAD( "0_(cbc0).bin", 0xfc000, 0x2000, CRC(9a55bc4f) SHA1(81da44eec2e52cf04b1fc7053502270f51270590),ROM_BIOS(4))
339   ROMX_LOAD( "1_(dfe2).bin", 0xfe000, 0x2000, CRC(8dec077a) SHA1(d6f6d7cc2183abc77fbd9cd59132de5766f7c458),ROM_BIOS(4))
356   ROM_SYSTEM_BIOS(2, "v521", "v5.21 12/10/92")
357   ROMX_LOAD( "monitor_5_21.rom", 0xfc000, 0x4000, CRC(28c8f653) SHA1(04b0b09e0b86d9648a83352cc1590eb8963833e0),ROM_BIOS(3))
358   ROM_SYSTEM_BIOS(3, "v531", "v5.31 12/10/92")
359   ROMX_LOAD( "monitor_5_31.rom", 0xfc000, 0x4000, CRC(a48295d5) SHA1(6f38977c22f9cc6c2bc6f6e53edc4048ca6b6721),ROM_BIOS(4))
360   ROM_SYSTEM_BIOS(4, "v533", "v5.33 01/08/93")
361   ROMX_LOAD( "0_(cbc0).bin", 0xfc000, 0x2000, CRC(9a55bc4f) SHA1(81da44eec2e52cf04b1fc7053502270f51270590),ROM_BIOS(5))
362   ROMX_LOAD( "1_(dfe2).bin", 0xfe000, 0x2000, CRC(8dec077a) SHA1(d6f6d7cc2183abc77fbd9cd59132de5766f7c458),ROM_BIOS(5))
363
364   // 5.21 + 3rd party HDC support. fails checksum test so marked BAD_DUMP.
365   ROM_SYSTEM_BIOS(5, "v521h", "v5.21h 22/09/93")
366   ROMX_LOAD( "mshbios0.pgm", 0xfc000, 0x2000, BAD_DUMP CRC(be447261) SHA1(b93c597c17dfa4b678f72c20a3f7119b73e6ba1c),ROM_BIOS(6))
367   ROMX_LOAD( "mshbios1.pgm", 0xfe000, 0x2000, BAD_DUMP CRC(89e2eaf2) SHA1(37d6b225b5e35574fdac81219589407d925225be),ROM_BIOS(6))
368
369   // 5.3
370   ROM_SYSTEM_BIOS(6, "v53", "v5.3 10/11/91")
371   ROMX_LOAD( "1502~3b0.pgm", 0xfc000, 0x2000, CRC(dc148763) SHA1(7a5e66438007b2de328ac680614f9c4ff60f6a75),ROM_BIOS(7))
372   ROMX_LOAD( "1502~3b1.pgm", 0xfe000, 0x2000, CRC(17fc2af2) SHA1(a060d7b7302dfa639025f025106b50412cf26953),ROM_BIOS(7))
373   // 5.1 -- JCUKEN keyboard
374   ROM_SYSTEM_BIOS(7, "v51", "v5.1 10/12/90")
375   ROMX_LOAD( "ms1502b0.pgm", 0xfc000, 0x2000, CRC(92fcc29a) SHA1(930a4cffcd6ec6110dd9a18bd389b78f0ccb110a),ROM_BIOS(8))
376   ROMX_LOAD( "ms1502b1.pgm", 0xfe000, 0x2000, CRC(fe355a58) SHA1(b4ef7775045c6f2095e2b487fe19824986a4892c),ROM_BIOS(8))
377   // 5.31
378   ROM_SYSTEM_BIOS(8, "v531_92", "v5.31 12/10/92")
379   ROMX_LOAD( "ms531b0.pgm", 0xfc000, 0x2000, CRC(d97157d1) SHA1(cb1a1e0e2d9a0fcc78f9b09bfb4814d408ee4fae),ROM_BIOS(9))
380   ROMX_LOAD( "ms531b1.pgm", 0xfe000, 0x2000, CRC(b1368e1a) SHA1(286496d25dc0ac2d8fe1802caffc6c37b236d105),ROM_BIOS(9))
381   // 5.2
382   ROM_SYSTEM_BIOS(9, "v52_91", "v5.2 10/11/91")
383   ROMX_LOAD( "msv5~2b0.pgm", 0xfc000, 0x2000, CRC(f7f370e9) SHA1(e069a35005581a02856853b57dd511ab8e10054b),ROM_BIOS(10))
384   ROMX_LOAD( "msv5~2b1.pgm", 0xfe000, 0x2000, CRC(d50e1c43) SHA1(22724dec0052ee9e52f44f5914f2f5f3fae14612),ROM_BIOS(10))
385
386   ROM_REGION(0x2000,"gfx1", ROMREGION_ERASE00)
387   ROM_LOAD( "symgen.rom", 0x0000, 0x2000, CRC(b2747a52) SHA1(6766d275467672436e91ac2997ac6b77700eba1e))
340388ROM_END
341389
390/*
391        Predecessor of MC1502, same keyboard attachment but
392        different video subsystem (not emulated).
393*/
342394ROM_START( pk88 )
343395   ROM_REGION16_LE(0x100000,"maincpu", 0)
344396
r241752r241753
358410
359411/*     YEAR     NAME        PARENT      COMPAT  MACHINE     INPUT       INIT                COMPANY       FULLNAME */
360412COMP ( 1989,    mc1502,     ibm5150,    0,      mc1502,     mc1502,     mc1502_state, mc1502,   "NPO Microprocessor", "Elektronika MC-1502", 0)
361COMP ( 1990,    pk88,       ibm5150,    0,      pk88,       mc1502,     mc1502_state, mc1502,   "NPO Microprocessor", "Elektronika PK-88", GAME_NOT_WORKING | GAME_NO_SOUND)
413COMP ( 1988,    pk88,       ibm5150,    0,      pk88,       mc1502,     mc1502_state, mc1502,   "NPO Microprocessor", "Elektronika PK-88", GAME_NOT_WORKING | GAME_NO_SOUND)
trunk/src/mess/drivers/merlin.c
r241752r241753
1/*
1/***************************************************************************
22
3    Parker Bros Merlin handheld computer game
3  Parker Bros Merlin handheld computer game
4  * TMS1100NLL MP3404A-N2 (has internal ROM)
5 
6  Other games assumed to be on similar hardware:
7  - Dr. Smith - by Tomy, released in Japan (basically a white version of Merlin,
8    let's assume for now that the ROM contents is identical)
9  - Master Merlin
10 
11  Another sequel, called Split Second, looks like different hardware.
412
5*/
613
14  TODO:
15  - accurate speaker levels (tone pitch sounds good though)
16  - is the rom dump good?
17
18***************************************************************************/
19
720#include "emu.h"
821#include "cpu/tms0980/tms0980.h"
922#include "sound/speaker.h"
1023
11/* Layout */
1224#include "merlin.lh"
1325
26// master clock is a single stage RC oscillator: R=33K, C=100pf,
27// according to the TMS 1000 series data manual this is around 350kHz
28#define MERLIN_RC_CLOCK (350000)
1429
30
1531class merlin_state : public driver_device
1632{
1733public:
1834   merlin_state(const machine_config &mconfig, device_type type, const char *tag)
1935      : driver_device(mconfig, type, tag),
20         m_speaker(*this, "speaker") ,
21      m_maincpu(*this, "maincpu") { }
36      m_maincpu(*this, "maincpu"),
37      m_button_matrix(*this, "O"),
38      m_speaker(*this, "speaker")
39   { }
2240
23   virtual void machine_start();
24
25   required_device<speaker_sound_device> m_speaker;
26
2741   DECLARE_READ8_MEMBER(read_k);
2842   DECLARE_WRITE16_MEMBER(write_o);
2943   DECLARE_WRITE16_MEMBER(write_r);
3044
45   virtual void machine_start();
46
3147protected:
32   UINT16  m_o;
33   UINT16  m_r;
3448   required_device<cpu_device> m_maincpu;
49   required_ioport_array<4> m_button_matrix;
50   required_device<speaker_sound_device> m_speaker;
51
52   UINT16 m_o;
3553};
3654
3755
38#define LOG 0
56/***************************************************************************
3957
58  I/O
4059
41static INPUT_PORTS_START( merlin )
42   PORT_START("O0")
43   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(KEYCODE_0)     PORT_NAME("R0")  // R0
44   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(KEYCODE_1)     PORT_NAME("R1")  // R1
45   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_3)     PORT_NAME("R3")  // R3
46   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_2)     PORT_NAME("R2")  // R2
60***************************************************************************/
4761
48   PORT_START("O1")
49   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_4)     PORT_NAME("R4")  // R4
50   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_5)     PORT_NAME("R5")  // R5
51   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_CODE(KEYCODE_7)     PORT_NAME("R7")  // R7
52   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON7) PORT_CODE(KEYCODE_6)     PORT_NAME("R6")  // R6
62/* The keypad is a 4*4 matrix, connected like so:
5363
54   PORT_START("O2")
55   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_8)     PORT_NAME("R8")  // R8
56   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_9)     PORT_NAME("R9")  // R9
57   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON13) PORT_CODE(KEYCODE_S)     PORT_NAME("Same Game")  // SG - same game
58   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_MINUS) PORT_NAME("R10")  // R10
59
60   PORT_START("O3")
61   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
62   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON15) PORT_CODE(KEYCODE_C)     PORT_NAME("Comp Turn")  // Comp Turn
63   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_H)     PORT_NAME("Hit Me")  // Hit me
64   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_N)     PORT_NAME("New Game")  // NG - new game
65
66INPUT_PORTS_END
67
68
69/*
70The keypad is a 4*4 matrix, connected like so:
71
7264       +----+  +----+  +----+  +----+
7365O0 o---| R0 |--| R1 |--| R2 |--| R3 |
7466       +----+  +----+  +----+  +----+
r241752r241753
8880          o       o       o       o
8981         K1      K2      K8      K4
9082
91SG = same game, CT = comp turn, NG = new game, HM = hit me
92*/
83SG = same game, CT = comp turn, NG = new game, HM = hit me */
9384
9485READ8_MEMBER(merlin_state::read_k)
9586{
96   UINT8 data = 0;
87   UINT8 k = 0;
88   
89   // read selected button rows
90   for (int i = 0; i < 4; i++)
91      if (m_o & (1 << i))
92         k |= m_button_matrix[i]->read();
9793
98   if (LOG)
99      logerror( "read_k\n" );
94   return k;
95}
10096
101   if ( m_o & 0x01 )
102   {
103      data |= ioport("O0")->read();
104   }
97WRITE16_MEMBER(merlin_state::write_o)
98{
99   /* The speaker is connected to O4 through O6.  The 3 outputs are paralleled for
100   increased current driving capability.  They are passed thru a 220 ohm resistor
101   and then to the speaker, which has the other side grounded.  The software then
102   toggles these lines to make sounds and noises. (There is no audio generator
103   other than toggling it with a software delay between to make tones). */
104   static const int count[8] = { 0, 1, 1, 2, 1, 2, 2, 3 };
105   m_speaker->level_w(count[data >> 4 & 7]);
105106
106   if ( m_o & 0x02 )
107   {
108      data |= ioport("O1")->read();
109   }
107   // O0-O3: input mux
108   // O7: N/C
109   m_o = data;
110}
110111
111   if ( m_o & 0x04 )
112   {
113      data |= ioport("O2")->read();
114   }
112WRITE16_MEMBER(merlin_state::write_r)
113{
114   /* LEDs:
115115
116   if ( m_o & 0x08 )
117   {
118      data |= ioport("O3")->read();
119   }
120
121   return data;
116        R0
117   R1   R2   R3
118   R4   R5   R6
119   R7   R8   R9
120        R10
121   */
122   for (int i = 0; i < 11; i++)
123      output_set_lamp_value(i, data >> i & 1);
122124}
123125
124126
125/*
126The speaker is connected to O4 through O6.  The 3 outputs are paralleled for
127increased current driving capability.  They are passed thru a 220 ohm resistor
128and then to the speaker, which has the other side grounded.  The software then
129toggles these lines to make sounds and noises. (There is no audio generator
130other than toggling it with a software delay between to make tones).
131*/
132127
133WRITE16_MEMBER(merlin_state::write_o)
134{
135   if (LOG)
136      logerror( "write_o: write %02x\n", data );
128/***************************************************************************
137129
138   m_o = data;
130  Inputs
139131
140   m_speaker->level_w(m_o & 0x70);
141}
132***************************************************************************/
142133
134static INPUT_PORTS_START( merlin )
135   PORT_START("O.0")
136   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(KEYCODE_0) PORT_NAME("Button R0")
137   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(KEYCODE_1) PORT_NAME("Button R1")
138   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_CODE(KEYCODE_3) PORT_NAME("Button R3")
139   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_CODE(KEYCODE_2) PORT_NAME("Button R2")
143140
144/*
141   PORT_START("O.1")
142   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_CODE(KEYCODE_4) PORT_NAME("Button R4")
143   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_CODE(KEYCODE_5) PORT_NAME("Button R5")
144   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_CODE(KEYCODE_7) PORT_NAME("Button R7")
145   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON7) PORT_CODE(KEYCODE_6) PORT_NAME("Button R6")
145146
146  LEDs:
147   PORT_START("O.2")
148   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_CODE(KEYCODE_8) PORT_NAME("Button R8")
149   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON10) PORT_CODE(KEYCODE_9) PORT_NAME("Button R9")
150   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON13) PORT_CODE(KEYCODE_S) PORT_NAME("Same Game")
151   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON11) PORT_CODE(KEYCODE_MINUS) PORT_NAME("Button R10")
147152
148      R0
149 R1   R2   R3
150 R4   R5   R6
151 R7   R8   R9
152      R10
153   PORT_START("O.3")
154   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
155   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON15) PORT_CODE(KEYCODE_C) PORT_NAME("Comp Turn")
156   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON14) PORT_CODE(KEYCODE_H) PORT_NAME("Hit Me")
157   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON12) PORT_CODE(KEYCODE_N) PORT_NAME("New Game")
158INPUT_PORTS_END
153159
154When that particular R output is high, that LED is on.
155*/
156160
157WRITE16_MEMBER(merlin_state::write_r)
158{
159   if (LOG)
160      logerror( "write_r: write %04x\n", data );
161161
162   m_r = data;
162/***************************************************************************
163163
164   output_set_value( "led_0",  BIT( m_r,  0 ) );
165   output_set_value( "led_1",  BIT( m_r,  1 ) );
166   output_set_value( "led_2",  BIT( m_r,  2 ) );
167   output_set_value( "led_3",  BIT( m_r,  3 ) );
168   output_set_value( "led_4",  BIT( m_r,  4 ) );
169   output_set_value( "led_5",  BIT( m_r,  5 ) );
170   output_set_value( "led_6",  BIT( m_r,  6 ) );
171   output_set_value( "led_7",  BIT( m_r,  7 ) );
172   output_set_value( "led_8",  BIT( m_r,  8 ) );
173   output_set_value( "led_9",  BIT( m_r,  9 ) );
174   output_set_value( "led_10", BIT( m_r, 10 ) );
175}
164  Machine Config
176165
166***************************************************************************/
177167
178168void merlin_state::machine_start()
179169{
170   m_o = 0;
180171   save_item(NAME(m_o));
181   save_item(NAME(m_r));
182172}
183173
184174
r241752r241753
191181   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
192182};
193183
184static const INT16 speaker_levels[] = { 0, 32767, 0, 32767 }; // unknown too, due to output_pla being unknown
194185
186
195187static MACHINE_CONFIG_START( merlin, merlin_state )
196   MCFG_CPU_ADD( "maincpu", TMS1100, 500000 )  /* Clock may be wrong */
197   MCFG_TMS1XXX_OUTPUT_PLA( merlin_output_pla )
198   MCFG_TMS1XXX_READ_K( READ8( merlin_state, read_k ) )
199   MCFG_TMS1XXX_WRITE_O( WRITE16( merlin_state, write_o ) )
200   MCFG_TMS1XXX_WRITE_R( WRITE16( merlin_state, write_r ) )
201188
189   /* basic machine hardware */
190   MCFG_CPU_ADD( "maincpu", TMS1100, MERLIN_RC_CLOCK )
191   MCFG_TMS1XXX_OUTPUT_PLA(merlin_output_pla)
192   MCFG_TMS1XXX_READ_K(READ8( merlin_state, read_k))
193   MCFG_TMS1XXX_WRITE_O(WRITE16( merlin_state, write_o))
194   MCFG_TMS1XXX_WRITE_R(WRITE16( merlin_state, write_r))
195
202196   MCFG_DEFAULT_LAYOUT(layout_merlin)
203197
198   /* no video! */
199
200   /* sound hardware */
204201   MCFG_SPEAKER_STANDARD_MONO("mono")
205202   MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
203   MCFG_SPEAKER_LEVELS(4, speaker_levels)
206204   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
207205MACHINE_CONFIG_END
208206
209207
208
209/***************************************************************************
210
211  Game driver(s)
212
213***************************************************************************/
214
210215ROM_START( merlin )
211216   ROM_REGION( 0x800, "maincpu", 0 )
212217   // This rom needs verification, that's why it is marked as a bad dump
r241752r241753
216221   ROM_LOAD( "mp3404", 0x0000, 0x800, BAD_DUMP CRC(7515a75d) SHA1(76ca3605d3fde1df62f79b9bb1f534c2a2ae0229) )
217222ROM_END
218223
219/***************************************************************************
220224
221  Game driver(s)
222
223***************************************************************************/
224
225/*    YEAR  NAME        PARENT  COMPAT  MACHINE     INPUT   INIT    COMPANY            FULLNAME      FLAGS */
226CONS( 1978, merlin,     0,      0,      merlin,     merlin, driver_device,  0,      "Parker Brothers", "Merlin", 0 )
225CONS( 1978, merlin, 0, 0, merlin, merlin, driver_device, 0, "Parker Brothers", "Merlin", GAME_SUPPORTS_SAVE )
trunk/src/mess/drivers/msx.c
r241752r241753
517517
518518
519519#include "includes/msx.h"
520#include "bus/centronics/covox.h"
521520#include "formats/dsk_dsk.h"
522521#include "formats/dmk_dsk.h"
523522#include "machine/msx_matsushita.h"
r241752r241753
13511350   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
13521351
13531352   /* printer */
1354   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
1355   MCFG_SLOT_OPTION_ADD( "covox", CENTRONICS_COVOX )
1353   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
13561354   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit1))
13571355
13581356   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241752r241753
14401438   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
14411439
14421440   /* printer */
1443   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
1444   MCFG_SLOT_OPTION_ADD( "covox", CENTRONICS_COVOX )
1441   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
14451442   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit1))
14461443
14471444   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241752r241753
15051502   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
15061503
15071504   /* printer */
1508   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
1509   MCFG_SLOT_OPTION_ADD( "covox", CENTRONICS_COVOX )
1505   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
15101506   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit1))
15111507
15121508   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
trunk/src/mess/drivers/mtx.c
r241752r241753
312312
313313   MCFG_TIMER_DRIVER_ADD_PERIODIC("z80ctc_timer", mtx_state, ctc_tick, attotime::from_hz(XTAL_4MHz/13))
314314
315   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
315   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
316316   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(mtx_state, write_centronics_busy))
317317   MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(mtx_state, write_centronics_fault))
318318   MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(mtx_state, write_centronics_perror))
trunk/src/mess/drivers/mz700.c
r241752r241753
406406   MCFG_Z80PIO_OUT_PA_CB(WRITE8(mz_state, mz800_z80pio_port_a_w))
407407   MCFG_Z80PIO_OUT_PB_CB(DEVWRITE8("cent_data_out", output_latch_device, write))
408408
409   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
409   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
410410
411411   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
412412MACHINE_CONFIG_END
trunk/src/mess/drivers/nc.c
r241752r241753
14231423   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
14241424
14251425   /* printer */
1426   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
1426   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
14271427   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(nc_state, write_nc100_centronics_ack))
14281428   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(nc_state, write_centronics_busy))
14291429
trunk/src/mess/drivers/oric.c
r241752r241753
793793   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
794794
795795   /* printer */
796   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
796   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
797797   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522", via6522_device, write_ca1))
798798   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
799799
trunk/src/mess/drivers/pasogo.c
r241752r241753
688688   m_u73_q2 = 0;
689689   m_out1 = 2; // initial state of pit output is undefined
690690   m_pc_spkrdata = 0;
691   m_pit_out2 = 0;
691   m_pit_out2 = 1;
692692   m_dma_channel = -1;
693693   m_cur_eop = false;
694694}
trunk/src/mess/drivers/pc1512.c
r241752r241753
11311131   m_nmi_enable = 0;
11321132   m_toggle = 0;
11331133   m_kb_bits = 0;
1134   m_pit2 = 1;
11341135
11351136   m_lpen = 0;
11361137   m_blink = 0;
r241752r241753
12591260   MCFG_INS8250_OUT_RTS_CB(DEVWRITELINE(RS232_TAG, rs232_port_device, write_rts))
12601261   MCFG_INS8250_OUT_INT_CB(DEVWRITELINE(I8259A2_TAG, pic8259_device, ir4_w))
12611262
1262   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
1263   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
12631264   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(pc1512_state, write_centronics_ack))
12641265   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(pc1512_state, write_centronics_busy))
12651266   MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(pc1512_state, write_centronics_perror))
r241752r241753
13801381   MCFG_INS8250_OUT_INT_CB(DEVWRITELINE(I8259A2_TAG, pic8259_device, ir4_w))
13811382
13821383
1383   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
1384   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
13841385   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(pc1512_state, write_centronics_ack))
13851386   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(pc1512_state, write_centronics_busy))
13861387   MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(pc1512_state, write_centronics_perror))
trunk/src/mess/drivers/pc8001.c
r241752r241753
508508   MCFG_UPD3301_DRAW_CHARACTER_CALLBACK_OWNER(pc8001_state, pc8001_display_pixels)
509509   MCFG_UPD3301_VRTC_CALLBACK(DEVWRITELINE(I8257_TAG, i8257_device, dreq2_w))
510510
511   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
511   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
512512   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(pc8001_state, write_centronics_ack))
513513   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(pc8001_state, write_centronics_busy))
514514
r241752r241753
557557   MCFG_UPD3301_DRAW_CHARACTER_CALLBACK_OWNER(pc8001_state, pc8001_display_pixels)
558558   MCFG_UPD3301_VRTC_CALLBACK(DEVWRITELINE(I8257_TAG, i8257_device, dreq2_w))
559559
560   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
560   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
561561
562562   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
563563
trunk/src/mess/drivers/pc8801.c
r241752r241753
26052605   MCFG_I8214_ADD(I8214_TAG, MASTER_CLOCK, pic_intf)
26062606   #endif
26072607   MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, NULL)
2608   //MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
2608   //MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
26092609   MCFG_CASSETTE_ADD("cassette")
26102610   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
26112611
trunk/src/mess/drivers/pc9801.c
r241752r241753
33493349   {
33503350      address_space& space = m_maincpu->space(AS_PROGRAM);
33513351      membank("wram")->set_base(m_ram->pointer());
3352      space.install_read_bank(0x100000,  0x100000 + m_ram_size - 1, "ext_wram");
3353      space.install_write_bank(0x100000,  0x100000 + m_ram_size - 1, "ext_wram");
3354      membank("ext_wram")->set_base(m_ram->pointer() + 0xa0000);
3352      if(m_ram_size)
3353      {
3354         space.install_read_bank(0x100000,  0x100000 + m_ram_size - 1, "ext_wram");
3355         space.install_write_bank(0x100000,  0x100000 + m_ram_size - 1, "ext_wram");
3356         membank("ext_wram")->set_base(m_ram->pointer() + 0xa0000);
3357      }
33553358   }
33563359
33573360   m_ide_rom = memregion("ide")->base();
trunk/src/mess/drivers/pencil2.c
r241752r241753
304304   MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "pencil2_cart")
305305
306306   /* printer */
307   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
307   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
308308   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(pencil2_state, write_centronics_ack))
309309   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(pencil2_state, write_centronics_busy))
310310
trunk/src/mess/drivers/phc25.c
r241752r241753
322322   MCFG_CASSETTE_FORMATS(phc25_cassette_formats)
323323   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
324324
325   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
325   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
326326   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(phc25_state, write_centronics_busy))
327327
328328   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
trunk/src/mess/drivers/portfoli.c
r241752r241753
838838   MCFG_I8255_OUT_PORTB_CB(DEVWRITE8("cent_ctrl_out", output_latch_device, write))
839839   MCFG_I8255_IN_PORTC_CB(DEVREAD8("cent_status_in", input_buffer_device, read))
840840
841   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
841   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
842842   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit5))
843843   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit4))
844844   MCFG_CENTRONICS_FAULT_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit3))
trunk/src/mess/drivers/prof180x.c
r241752r241753
254254   MCFG_FLOPPY_DRIVE_ADD(FDC9268_TAG ":3", prof180x_floppies, "35dd", floppy_image_device::default_floppy_formats)
255255
256256   //MCFG_RTC8583_ADD(MK3835_TAG, rtc_intf)
257   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
257   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
258258
259259   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
260260
trunk/src/mess/drivers/psion.c
r241752r241753
595595   MCFG_PSION_DATAPACK_ADD("pack2")
596596
597597   /* Software lists */
598   MCFG_SOFTWARE_LIST_ADD("pack_list", "psion")
598   MCFG_SOFTWARE_LIST_ADD("pack_list", "psion2")
599599MACHINE_CONFIG_END
600600
601601/* basic configuration for 4 lines display */
r241752r241753
624624   MCFG_DEVICE_MODIFY("hd44780")
625625   MCFG_HD44780_LCD_SIZE(1, 16)
626626   MCFG_HD44780_PIXEL_UPDATE_CB(psion1_state::psion1_pixel_update)
627
628   /* Software lists */
629   MCFG_SOFTWARE_LIST_REMOVE("pack_list")
630   MCFG_SOFTWARE_LIST_ADD("pack_list", "psion1")
627631MACHINE_CONFIG_END
628632
629633static MACHINE_CONFIG_DERIVED( psioncm, psion_2lines )
r241752r241753
696700   ROMX_LOAD( "34-lag.rom",   0x8000, 0x8000,  CRC(13a92c4b) SHA1(dab8bd6a41a5fd509c5ad4b0b0ab80d14f2c421a), ROM_BIOS(2))
697701   ROM_SYSTEM_BIOS(2, "v36", "LA v3.6")
698702   ROMX_LOAD( "36-la.rom",    0x8000, 0x8000,  CRC(7442c7f6) SHA1(94f15bd06bd750be70fa4a4ab588237c5a703f65), ROM_BIOS(3))
703   ROM_SYSTEM_BIOS(3, "v30", "LA v3.0")
704   ROMX_LOAD( "30-lahp.rom",    0x8000, 0x8000,  CRC(50192528) SHA1(c556d53f70bf5ecae756b2ebfc6d954912316bbe), ROM_BIOS(4))
699705ROM_END
700706
701707ROM_START( psionp200 )
trunk/src/mess/drivers/ptcsol.c
r241752r241753
747747   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) // cass2 speaker
748748
749749   // devices
750   MCFG_CASSETTE_ADD( "cassette" )
750   MCFG_CASSETTE_ADD("cassette")
751751   MCFG_CASSETTE_FORMATS(sol20_cassette_formats)
752752   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
753   MCFG_CASSETTE_INTERFACE("sol20_cass")
753754
754   MCFG_CASSETTE_ADD( "cassette2" )
755   MCFG_CASSETTE_ADD("cassette2")
755756   MCFG_CASSETTE_FORMATS(sol20_cassette_formats)
756757   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
758   MCFG_CASSETTE_INTERFACE("sol20_cass")
757759
758   MCFG_DEVICE_ADD( "uart", AY31015, 0 )
760   MCFG_DEVICE_ADD("uart", AY31015, 0)
759761   MCFG_AY31015_TX_CLOCK(4800.0)
760762   MCFG_AY31015_RX_CLOCK(4800.0)
761   MCFG_DEVICE_ADD( "uart_s", AY31015, 0 )
763   MCFG_DEVICE_ADD("uart_s", AY31015, 0)
762764   MCFG_AY31015_TX_CLOCK(4800.0)
763765   MCFG_AY31015_RX_CLOCK(4800.0)
764766   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
765767   MCFG_GENERIC_KEYBOARD_CB(WRITE8(sol20_state, kbd_put))
768
769   MCFG_SOFTWARE_LIST_ADD("cass_list", "sol20_cass")
766770MACHINE_CONFIG_END
767771
768772/* ROM definition */
trunk/src/mess/drivers/px4.c
r241752r241753
1919#include "machine/ram.h"
2020#include "machine/nvram.h"
2121#include "sound/speaker.h"
22
2322#include "bus/generic/slot.h"
2423#include "bus/generic/carts.h"
24#include "coreutil.h"
2525#include "px4.lh"
2626
2727
r241752r241753
3131
3232#define VERBOSE 1
3333
34// interrupt sources
35#define INT0_7508   0x01
36#define INT1_ART    0x02
37#define INT2_ICF    0x04
38#define INT3_OVF    0x08
39#define INT4_EXT    0x10
4034
41// 7508 interrupt sources
42#define UPD7508_INT_ALARM       0x02
43#define UPD7508_INT_POWER_FAIL  0x04
44#define UPD7508_INT_7508_RESET  0x08
45#define UPD7508_INT_Z80_RESET   0x10
46#define UPD7508_INT_ONE_SECOND  0x20
47
48// art (asynchronous receiver transmitter)
49#define ART_TXRDY   0x01    // output buffer empty
50#define ART_RXRDY   0x02    // data byte received
51#define ART_TXEMPTY 0x04    // transmit buffer empty
52#define ART_PE      0x08    // parity error
53#define ART_OE      0x10    // overrun error
54#define ART_FE      0x20    // framing error
55
56
5735//**************************************************************************
5836//  MACROS
5937//**************************************************************************
r241752r241753
6745//  TYPE DEFINITIONS
6846//**************************************************************************
6947
70class px4_state : public driver_device,
71               public device_serial_interface
48class px4_state : public driver_device,   public device_serial_interface
7249{
7350public:
7451   px4_state(const machine_config &mconfig, device_type type, const char *tag) :
r241752r241753
7653   device_serial_interface(mconfig, *this),
7754   m_z80(*this, "maincpu"),
7855   m_ram(*this, RAM_TAG),
56   m_nvram(*this, "nvram"),
7957   m_centronics(*this, "centronics"),
8058   m_ext_cas(*this, "extcas"),
8159   m_ext_cas_timer(*this, "extcas_timer"),
8260   m_speaker(*this, "speaker"),
8361   m_sio(*this, "sio"),
8462   m_rs232(*this, "rs232"),
85   m_caps1(*this, "capsule1"),
86   m_caps2(*this, "capsule2"),
87   m_rdsocket(*this, "ramdisk_socket"),
63   m_caps1(*this, "capsule1"),   m_caps2(*this, "capsule2"),
64   m_caps1_rom(NULL), m_caps2_rom(NULL),
65   m_ctrl1(0), m_icrb(0), m_bankr(0),
8866   m_isr(0), m_ier(0), m_str(0), m_sior(0xbf),
67   m_frc_value(0), m_frc_latch(0),
68   m_vadr(0), m_yoff(0),
69   m_receive_timer(NULL), m_transmit_timer(NULL),
8970   m_artdir(0xff), m_artdor(0xff), m_artsr(0), m_artcr(0),
9071   m_swr(0),
9172   m_one_sec_int_enabled(true), m_alarm_int_enabled(true), m_key_int_enabled(true),
92   m_ramdisk_address(0),
93   m_ear_last_state(0)
73   m_key_status(0), m_interrupt_status(0),
74   m_time(), m_clock_state(0),
75   m_ear_last_state(0),
76   m_sio_pin(0), m_serial_rx(0), m_rs232_dcd(0), m_rs232_cts(0),
77   m_centronics_busy(0), m_centronics_perror(0)
9478   { }
9579
80   DECLARE_DRIVER_INIT( px4 );
81
82   DECLARE_PALETTE_INIT( px4 );
83   UINT32 screen_update_px4(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
84
85   DECLARE_READ8_MEMBER( icrlc_r );
86   DECLARE_WRITE8_MEMBER( ctrl1_w );
87   DECLARE_READ8_MEMBER( icrhc_r );
88   DECLARE_WRITE8_MEMBER( cmdr_w );
89   DECLARE_READ8_MEMBER( icrlb_r );
90   DECLARE_WRITE8_MEMBER( ctrl2_w );
91   DECLARE_READ8_MEMBER( icrhb_r );
92   DECLARE_READ8_MEMBER( isr_r );
93   DECLARE_WRITE8_MEMBER( ier_w );
94   DECLARE_READ8_MEMBER( str_r );
95   DECLARE_WRITE8_MEMBER( bankr_w );
96   DECLARE_READ8_MEMBER( sior_r );
97   DECLARE_WRITE8_MEMBER( sior_w );
98   DECLARE_WRITE8_MEMBER( vadr_w );
99   DECLARE_WRITE8_MEMBER( yoff_w );
100   DECLARE_WRITE8_MEMBER( fr_w );
101   DECLARE_WRITE8_MEMBER( spur_w );
102   DECLARE_READ8_MEMBER( ctgif_r );
103   DECLARE_WRITE8_MEMBER( ctgif_w );
104   DECLARE_READ8_MEMBER( artdir_r );
105   DECLARE_WRITE8_MEMBER( artdor_w );
106   DECLARE_READ8_MEMBER( artsr_r );
107   DECLARE_WRITE8_MEMBER( artmr_w );
108   DECLARE_READ8_MEMBER( iostr_r );
109   DECLARE_WRITE8_MEMBER( artcr_w );
110   DECLARE_WRITE8_MEMBER( swr_w );
111   DECLARE_WRITE8_MEMBER( ioctlr_w );
112
113   DECLARE_INPUT_CHANGED_MEMBER( key_callback );
114
115   TIMER_DEVICE_CALLBACK_MEMBER( ext_cassette_read );
116   TIMER_DEVICE_CALLBACK_MEMBER( frc_tick );
117   TIMER_DEVICE_CALLBACK_MEMBER( upd7508_1sec_callback );
118
119   // serial
120   DECLARE_WRITE_LINE_MEMBER( sio_rx_w );
121   DECLARE_WRITE_LINE_MEMBER( sio_pin_w );
122   DECLARE_WRITE_LINE_MEMBER( rs232_rx_w );
123   DECLARE_WRITE_LINE_MEMBER( rs232_dcd_w );
124   DECLARE_WRITE_LINE_MEMBER( rs232_dsr_w );
125   DECLARE_WRITE_LINE_MEMBER( rs232_cts_w );
126   TIMER_CALLBACK_MEMBER( transmit_data );
127   TIMER_CALLBACK_MEMBER( receive_data );
128
129   // centronics
130   DECLARE_WRITE_LINE_MEMBER( centronics_busy_w ) { m_centronics_busy = state; }
131   DECLARE_WRITE_LINE_MEMBER( centronics_perror_w ) { m_centronics_perror = state; }
132
133protected:
134   // driver_device overrides
135   virtual void machine_start();
136   virtual void machine_reset();
137
138   // device_serial_interface overrides
139   virtual void tra_callback();
140   virtual void tra_complete();
141   virtual void rcv_callback();
142   virtual void rcv_complete();
143
144   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
145
146private:
147   // z80 interrupt sources
148   enum
149   {
150      INT0_7508 = 0x01,
151      INT1_ART  = 0x02,
152      INT2_ICF  = 0x04,
153      INT3_OVF  = 0x08,
154      INT4_EXT  = 0x10
155   };
156
157   // 7508 interrupt sources
158   enum
159   {
160      UPD7508_INT_ALARM      = 0x02,
161      UPD7508_INT_POWER_FAIL = 0x04,
162      UPD7508_INT_7508_RESET = 0x08,
163      UPD7508_INT_Z80_RESET  = 0x10,
164      UPD7508_INT_ONE_SECOND = 0x20
165   };
166
167   // art (asynchronous receiver transmitter)
168   enum
169   {
170      ART_TXRDY   = 0x01, // output buffer empty
171      ART_RXRDY   = 0x02, // data byte received
172      ART_TXEMPTY = 0x04, // transmit buffer empty
173      ART_PE      = 0x08, // parity error
174      ART_OE      = 0x10, // overrun error
175      ART_FE      = 0x20  // framing error
176   };
177
178   void gapnit_interrupt();
179
180   DECLARE_WRITE_LINE_MEMBER( serial_rx_w );
181   void txd_w(int data);
182
183   void install_rom_capsule(address_space &space, int size, memory_region *mem);
184
96185   // internal devices
97186   required_device<cpu_device> m_z80;
98187   required_device<ram_device> m_ram;
188   required_device<nvram_device> m_nvram;
99189   required_device<centronics_device> m_centronics;
100190   required_device<cassette_image_device> m_ext_cas;
101191   required_device<timer_device> m_ext_cas_timer;
r241752r241753
104194   required_device<rs232_port_device> m_rs232;
105195   required_device<generic_slot_device> m_caps1;
106196   required_device<generic_slot_device> m_caps2;
107   optional_device<generic_slot_device> m_rdsocket;
108197
109198   memory_region *m_caps1_rom;
110199   memory_region *m_caps2_rom;
r241752r241753
126215   UINT8 m_vadr;
127216   UINT8 m_yoff;
128217
129   void gapnit_interrupt();
130
131218   // gapnio
132219   emu_timer *m_receive_timer;
133220   emu_timer *m_transmit_timer;
r241752r241753
137224   UINT8 m_artcr;
138225   UINT8 m_swr;
139226
140   void txd_w(int data);
141
142227   // 7508 internal
143228   bool m_one_sec_int_enabled;
144229   bool m_alarm_int_enabled;
r241752r241753
147232   UINT8 m_key_status;
148233   UINT8 m_interrupt_status;
149234
150   // external ramdisk
151   offs_t m_ramdisk_address;
152   UINT8 *m_ramdisk;
235   system_time m_time;
236   int m_clock_state;
153237
154238   // external cassette/barcode reader
155239   int m_ear_last_state;
156240
157   void install_rom_capsule(address_space &space, int size, memory_region *mem);
241   // serial
242   int m_sio_pin;
243   int m_serial_rx;
244   int m_rs232_dcd;
245   int m_rs232_cts;
158246
159   // device_serial_interface overrides
160   virtual void tra_callback();
161   virtual void tra_complete();
162   virtual void rcv_callback();
163   virtual void rcv_complete();
247   // centronics
248   int m_centronics_busy;
249   int m_centronics_perror;
250};
164251
165   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
252class px4p_state : public px4_state
253{
254public:
255   px4p_state(const machine_config &mconfig, device_type type, const char *tag) :
256   px4_state(mconfig, type, tag),
257   m_rdnvram(*this, "rdnvram"),
258   m_rdsocket(*this, "ramdisk_socket"),
259   m_ramdisk_address(0),
260   m_ramdisk(NULL)
261   { }
166262
167   DECLARE_WRITE_LINE_MEMBER( sio_rx_w );
168   DECLARE_WRITE_LINE_MEMBER( sio_pin_w );
263   DECLARE_DRIVER_INIT( px4p );
169264
170   DECLARE_WRITE_LINE_MEMBER( rs232_rx_w );
171   DECLARE_WRITE_LINE_MEMBER( rs232_dcd_w );
172   DECLARE_WRITE_LINE_MEMBER( rs232_dsr_w );
173   DECLARE_WRITE_LINE_MEMBER( rs232_cts_w );
265   DECLARE_PALETTE_INIT( px4p );
174266
175   int m_sio_pin;
267   DECLARE_WRITE8_MEMBER( ramdisk_address_w );
268   DECLARE_READ8_MEMBER( ramdisk_data_r );
269   DECLARE_WRITE8_MEMBER( ramdisk_data_w );
270   DECLARE_READ8_MEMBER( ramdisk_control_r );
176271
177   int m_serial_rx;
178   int m_rs232_dcd;
179   int m_rs232_cts;
180
181   DECLARE_READ8_MEMBER(px4_icrlc_r);
182   DECLARE_WRITE8_MEMBER(px4_ctrl1_w);
183   DECLARE_READ8_MEMBER(px4_icrhc_r);
184   DECLARE_WRITE8_MEMBER(px4_cmdr_w);
185   DECLARE_READ8_MEMBER(px4_icrlb_r);
186   DECLARE_WRITE8_MEMBER(px4_ctrl2_w);
187   DECLARE_READ8_MEMBER(px4_icrhb_r);
188   DECLARE_READ8_MEMBER(px4_isr_r);
189   DECLARE_WRITE8_MEMBER(px4_ier_w);
190   DECLARE_READ8_MEMBER(px4_str_r);
191   DECLARE_WRITE8_MEMBER(px4_bankr_w);
192   DECLARE_READ8_MEMBER(px4_sior_r);
193   DECLARE_WRITE8_MEMBER(px4_sior_w);
194   DECLARE_WRITE8_MEMBER(px4_vadr_w);
195   DECLARE_WRITE8_MEMBER(px4_yoff_w);
196   DECLARE_WRITE8_MEMBER(px4_fr_w);
197   DECLARE_WRITE8_MEMBER(px4_spur_w);
198   DECLARE_READ8_MEMBER(px4_ctgif_r);
199   DECLARE_WRITE8_MEMBER(px4_ctgif_w);
200   DECLARE_READ8_MEMBER(px4_artdir_r);
201   DECLARE_WRITE8_MEMBER(px4_artdor_w);
202   DECLARE_READ8_MEMBER(px4_artsr_r);
203   DECLARE_WRITE8_MEMBER(px4_artmr_w);
204   DECLARE_READ8_MEMBER(px4_iostr_r);
205   DECLARE_WRITE8_MEMBER(px4_artcr_w);
206   DECLARE_WRITE8_MEMBER(px4_swr_w);
207   DECLARE_WRITE8_MEMBER(px4_ioctlr_w);
208   DECLARE_WRITE8_MEMBER(px4_ramdisk_address_w);
209   DECLARE_READ8_MEMBER(px4_ramdisk_data_r);
210   DECLARE_WRITE8_MEMBER(px4_ramdisk_data_w);
211   DECLARE_READ8_MEMBER(px4_ramdisk_control_r);
212   DECLARE_DRIVER_INIT(px4);
213   DECLARE_DRIVER_INIT(px4p);
272protected:
273   // driver_device overrides
214274   virtual void machine_start();
215   virtual void machine_reset();
216   DECLARE_PALETTE_INIT(px4);
217   DECLARE_MACHINE_START(px4_ramdisk);
218   DECLARE_PALETTE_INIT(px4p);
219   UINT32 screen_update_px4(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
220   DECLARE_INPUT_CHANGED_MEMBER(key_callback);
221   TIMER_DEVICE_CALLBACK_MEMBER( ext_cassette_read );
222   TIMER_CALLBACK_MEMBER(transmit_data);
223   TIMER_CALLBACK_MEMBER(receive_data);
224   TIMER_DEVICE_CALLBACK_MEMBER(frc_tick);
225   TIMER_DEVICE_CALLBACK_MEMBER(upd7508_1sec_callback);
226275
227   int m_centronics_busy;
228   int m_centronics_perror;
229   DECLARE_WRITE_LINE_MEMBER(write_centronics_busy);
230   DECLARE_WRITE_LINE_MEMBER(write_centronics_perror);
276private:
277   required_device<nvram_device> m_rdnvram;
278   required_device<generic_slot_device> m_rdsocket;
231279
232private:
233   DECLARE_WRITE_LINE_MEMBER( serial_rx_w );
280   offs_t m_ramdisk_address;
281   UINT8 *m_ramdisk;
234282};
235283
236284
r241752r241753
310358}
311359
312360// input capture register low command trigger
313READ8_MEMBER( px4_state::px4_icrlc_r )
361READ8_MEMBER( px4_state::icrlc_r )
314362{
315363   if (VERBOSE)
316      logerror("%s: px4_icrlc_r\n", machine().describe_context());
364      logerror("%s: icrlc_r\n", machine().describe_context());
317365
318366   // latch value
319367   m_frc_latch = m_frc_value;
r241752r241753
322370}
323371
324372// control register 1
325WRITE8_MEMBER( px4_state::px4_ctrl1_w )
373WRITE8_MEMBER( px4_state::ctrl1_w )
326374{
327375   const int rcv_rates[] = { 110, 150, 300, 600, 1200, 2400, 4800, 9600, 75, 1200, 19200, 38400, 200 };
328376   const int tra_rates[] = { 110, 150, 300, 600, 1200, 2400, 4800, 9600, 1200, 75, 19200, 38400, 200 };
329377
330378   if (VERBOSE)
331      logerror("%s: px4_ctrl1_w (0x%02x)\n", machine().describe_context(), data);
379      logerror("%s: ctrl1_w (0x%02x)\n", machine().describe_context(), data);
332380
333381   // baudrate generator
334382   int baud = data >> 4;
r241752r241753
346394}
347395
348396// input capture register high command trigger
349READ8_MEMBER( px4_state::px4_icrhc_r )
397READ8_MEMBER( px4_state::icrhc_r )
350398{
351399   if (VERBOSE)
352      logerror("%s: px4_icrhc_r\n", machine().describe_context());
400      logerror("%s: icrhc_r\n", machine().describe_context());
353401
354402   return (m_frc_latch >> 8) & 0xff;
355403}
356404
357405// command register
358WRITE8_MEMBER( px4_state::px4_cmdr_w )
406WRITE8_MEMBER( px4_state::cmdr_w )
359407{
360408   if (0)
361      logerror("%s: px4_cmdr_w (0x%02x)\n", machine().describe_context(), data);
409      logerror("%s: cmdr_w (0x%02x)\n", machine().describe_context(), data);
362410
363411   // clear overflow interrupt?
364412   if (BIT(data, 2))
r241752r241753
369417}
370418
371419// input capture register low barcode trigger
372READ8_MEMBER( px4_state::px4_icrlb_r )
420READ8_MEMBER( px4_state::icrlb_r )
373421{
374422   if (VERBOSE)
375      logerror("%s: px4_icrlb_r\n", machine().describe_context());
423      logerror("%s: icrlb_r\n", machine().describe_context());
376424
377425   return m_icrb & 0xff;
378426}
379427
380428// control register 2
381WRITE8_MEMBER( px4_state::px4_ctrl2_w )
429WRITE8_MEMBER( px4_state::ctrl2_w )
382430{
383431   if (VERBOSE)
384      logerror("%s: px4_ctrl2_w (0x%02x)\n", machine().describe_context(), data);
432      logerror("%s: ctrl2_w (0x%02x)\n", machine().describe_context(), data);
385433
386434   // bit 0, MIC, cassette output
387435   m_ext_cas->output( BIT(data, 0) ? -1.0 : +1.0);
r241752r241753
400448}
401449
402450// input capture register high barcode trigger
403READ8_MEMBER( px4_state::px4_icrhb_r )
451READ8_MEMBER( px4_state::icrhb_r )
404452{
405453   if (VERBOSE)
406      logerror("%s: px4_icrhb_r\n", machine().describe_context());
454      logerror("%s: icrhb_r\n", machine().describe_context());
407455
408456   // clear icf interrupt
409457   m_isr &= ~INT2_ICF;
r241752r241753
413461}
414462
415463// interrupt status register
416READ8_MEMBER( px4_state::px4_isr_r )
464READ8_MEMBER( px4_state::isr_r )
417465{
418466   if (VERBOSE)
419      logerror("%s: px4_isr_r\n", machine().describe_context());
467      logerror("%s: isr_r\n", machine().describe_context());
420468
421469   return m_isr;
422470}
423471
424472// interrupt enable register
425WRITE8_MEMBER( px4_state::px4_ier_w )
473WRITE8_MEMBER( px4_state::ier_w )
426474{
427475   if (0)
428      logerror("%s: px4_ier_w (0x%02x)\n", machine().describe_context(), data);
476      logerror("%s: ier_w (0x%02x)\n", machine().describe_context(), data);
429477
430478   m_ier = data;
431479   gapnit_interrupt();
432480}
433481
434482// status register
435READ8_MEMBER( px4_state::px4_str_r )
483READ8_MEMBER( px4_state::str_r )
436484{
437485   UINT8 data = 0;
438486
439487   if (0)
440      logerror("%s: px4_str_r\n", machine().describe_context());
488      logerror("%s: str_r\n", machine().describe_context());
441489
442490   data |= (m_ext_cas)->input() > 0 ? 1 : 0;
443491   data |= 1 << 1;   // BCRD, barcode reader input
r241752r241753
467515}
468516
469517// bank register
470WRITE8_MEMBER( px4_state::px4_bankr_w )
518WRITE8_MEMBER( px4_state::bankr_w )
471519{
472520   address_space &space_program = m_z80->space(AS_PROGRAM);
473521
474522   if (0)
475      logerror("%s: px4_bankr_w (0x%02x)\n", machine().describe_context(), data);
523      logerror("%s: bankr_w (0x%02x)\n", machine().describe_context(), data);
476524
477525   m_bankr = data;
478526
r241752r241753
505553}
506554
507555// serial io register
508READ8_MEMBER( px4_state::px4_sior_r )
556READ8_MEMBER( px4_state::sior_r )
509557{
510558   if (0)
511      logerror("%s: px4_sior_r 0x%02x\n", machine().describe_context(), m_sior);
559      logerror("%s: sior_r 0x%02x\n", machine().describe_context(), m_sior);
512560
561   // reading clock?
562   if (m_clock_state > 0)
563   {
564      switch (m_clock_state++)
565      {
566      case 1: m_sior = (dec_2_bcd(m_time.local_time.year) >> 4) & 0xf; break;
567      case 2: m_sior = dec_2_bcd(m_time.local_time.year) & 0xf; break;
568      case 3:   m_sior = dec_2_bcd(m_time.local_time.month + 1); break;
569      case 4: m_sior = dec_2_bcd(m_time.local_time.mday); break;
570      case 5: m_sior = dec_2_bcd(m_time.local_time.hour); break;
571      case 6: m_sior = dec_2_bcd(m_time.local_time.minute); break;
572      case 7: m_sior = dec_2_bcd(m_time.local_time.second); break;
573      case 8: m_sior = dec_2_bcd(m_time.local_time.weekday); break;
574      }
575
576      // done?
577      if (m_clock_state == 9)
578         m_clock_state = 0;
579   }
580
513581   return m_sior;
514582}
515583
516584// serial io register
517WRITE8_MEMBER( px4_state::px4_sior_w )
585WRITE8_MEMBER( px4_state::sior_w )
518586{
519587   if (0)
520      logerror("%s: px4_sior_w (0x%02x)\n", machine().describe_context(), data);
588      logerror("%s: sior_w (0x%02x)\n", machine().describe_context(), data);
521589
522   m_sior = data;
523
524   switch (data)
590   // writing clock?
591   if (m_clock_state > 0)
525592   {
526   case 0x01:
593      time_t time = m_time.time;
594      struct tm *t = localtime(&time);
527595
528      if (VERBOSE)
529         logerror("7508 cmd: Power OFF\n");
596      switch (m_clock_state++)
597      {
598      case 1:
599         {
600            int year = dec_2_bcd(m_time.local_time.year);
601            year = (year & 0xff0f) | ((data & 0xf) << 4);
602            t->tm_year = bcd_2_dec(year) - 1900;
603         }
604         break;
605      case 2:
606         {
607            int year = dec_2_bcd(m_time.local_time.year);
608            year = (year & 0xfff0) | (data & 0xf);
609            t->tm_year = bcd_2_dec(year) - 1900;
610         }
611         break;
612      case 3: t->tm_mon = bcd_2_dec(data & 0x7f) - 1; break;
613      case 4: t->tm_mday = bcd_2_dec(data & 0x7f); break;
614      case 5: t->tm_hour = bcd_2_dec(data & 0x7f); break;
615      case 6: t->tm_min = bcd_2_dec(data & 0x7f); break;
616      case 7: t->tm_sec = bcd_2_dec(data & 0x7f); break;
617      case 8: t->tm_wday = bcd_2_dec(data & 0x7f); break;
618      }
530619
531      break;
620      // update
621      m_time.set(mktime(t));
532622
533   case 0x02:
623      // done?
624      if (m_clock_state == 9)
625         m_clock_state = 0;
626   }
627   else
628   {
629      m_sior = data;
534630
535      if (VERBOSE)
536         logerror("7508 cmd: Read Status\n");
537
538      if (m_interrupt_status != 0)
631      switch (data)
539632      {
633      case 0x01:
540634         if (VERBOSE)
541            logerror("> 7508 has interrupts pending: 0x%02x\n", m_interrupt_status);
635            logerror("7508 cmd: Power OFF\n");
542636
543         // signal the interrupt(s)
544         m_sior = 0xc1 | m_interrupt_status;
545         m_interrupt_status = 0x00;
546      }
547      else if (m_key_status != 0xff)
548      {
549         m_sior = m_key_status;
550         m_key_status = 0xff;
551      }
552      else
553      {
554         // nothing happened
555         m_sior = 0xbf;
556      }
637         break;
557638
558      break;
639      case 0x02:
640         if (VERBOSE)
641            logerror("7508 cmd: Read Status\n");
559642
560   case 0x03: if (VERBOSE) logerror("7508 cmd: KB Reset\n"); break;
561   case 0x04: if (VERBOSE) logerror("7508 cmd: KB Repeat Timer 1 Set\n"); break;
562   case 0x14: if (VERBOSE) logerror("7508 cmd: KB Repeat Timer 2 Set\n"); break;
563   case 0x24: if (VERBOSE) logerror("7508 cmd: KB Repeat Timer 1 Read\n"); break;
564   case 0x34: if (VERBOSE) logerror("7508 cmd: KB Repeat Timer 2 Read\n"); break;
565   case 0x05: if (VERBOSE) logerror("7508 cmd: KB Repeat OFF\n"); break;
566   case 0x15: if (VERBOSE) logerror("7508 cmd: KB Repeat ON\n"); break;
643         if (m_interrupt_status != 0)
644         {
645            if (VERBOSE)
646               logerror("> 7508 has interrupts pending: 0x%02x\n", m_interrupt_status);
567647
568   case 0x06:
648            // signal the interrupt(s)
649            m_sior = 0xc1 | m_interrupt_status;
650            m_interrupt_status = 0x00;
651         }
652         else if (m_key_status != 0xff)
653         {
654            m_sior = m_key_status;
655            m_key_status = 0xff;
656         }
657         else
658         {
659            // nothing happened
660            m_sior = 0xbf;
661         }
569662
570      if (VERBOSE)
571         logerror("7508 cmd: KB Interrupt OFF\n");
663         break;
572664
573      m_key_int_enabled = false;
574      break;
665      case 0x03: if (VERBOSE) logerror("7508 cmd: KB Reset\n"); break;
666      case 0x04: if (VERBOSE) logerror("7508 cmd: KB Repeat Timer 1 Set\n"); break;
667      case 0x14: if (VERBOSE) logerror("7508 cmd: KB Repeat Timer 2 Set\n"); break;
668      case 0x24: if (VERBOSE) logerror("7508 cmd: KB Repeat Timer 1 Read\n"); break;
669      case 0x34: if (VERBOSE) logerror("7508 cmd: KB Repeat Timer 2 Read\n"); break;
670      case 0x05: if (VERBOSE) logerror("7508 cmd: KB Repeat OFF\n"); break;
671      case 0x15: if (VERBOSE) logerror("7508 cmd: KB Repeat ON\n"); break;
575672
576   case 0x16:
673      case 0x06:
674         if (VERBOSE)
675            logerror("7508 cmd: KB Interrupt OFF\n");
577676
578      if (VERBOSE)
579         logerror("7508 cmd: KB Interrupt ON\n");
677         m_key_int_enabled = false;
678         break;
580679
581      m_key_int_enabled = true;
582      break;
680      case 0x16:
681         if (VERBOSE)
682            logerror("7508 cmd: KB Interrupt ON\n");
583683
584   case 0x07: if (VERBOSE) logerror("7508 cmd: Clock Read\n"); break;
585   case 0x17: if (VERBOSE) logerror("7508 cmd: Clock Write\n"); break;
684         m_key_int_enabled = true;
685         break;
586686
587   case 0x08:
687      case 0x07:
688         if (VERBOSE)
689            logerror("7508 cmd: Clock Read\n");
588690
589      if (VERBOSE)
590         logerror("7508 cmd: Power Switch Read\n");
691         m_clock_state = 1;
692         break;
591693
592      // indicate that the power switch is in the "ON" position
593      m_sior = 0x01;
594      break;
694      case 0x17:
695         if (VERBOSE)
696            logerror("7508 cmd: Clock Write\n");
595697
596   case 0x09: if (VERBOSE) logerror("7508 cmd: Alarm Read\n"); break;
597   case 0x19: if (VERBOSE) logerror("7508 cmd: Alarm Set\n"); break;
598   case 0x29: if (VERBOSE) logerror("7508 cmd: Alarm OFF\n"); break;
599   case 0x39: if (VERBOSE) logerror("7508 cmd: Alarm ON\n"); break;
698         m_clock_state = 1;
699         break;
600700
601   case 0x0a:
701      case 0x08:
702         if (VERBOSE)
703            logerror("7508 cmd: Power Switch Read\n");
602704
603      if (VERBOSE)
604         logerror("7508 cmd: DIP Switch Read\n");
605      m_sior = ioport("dips")->read();
606      break;
705         // indicate that the power switch is in the "ON" position
706         m_sior = 0x01;
707         break;
607708
608   case 0x0b: if (VERBOSE) logerror("7508 cmd: Stop Key Interrupt disable\n"); break;
609   case 0x1b: if (VERBOSE) logerror("7508 cmd: Stop Key Interrupt enable\n"); break;
610   case 0x0c: if (VERBOSE) logerror("7508 cmd: 7 chr. Buffer\n"); break;
611   case 0x1c: if (VERBOSE) logerror("7508 cmd: 1 chr. Buffer\n"); break;
709      case 0x09: if (VERBOSE) logerror("7508 cmd: Alarm Read\n"); break;
710      case 0x19: if (VERBOSE) logerror("7508 cmd: Alarm Set\n"); break;
711      case 0x29: if (VERBOSE) logerror("7508 cmd: Alarm OFF\n"); break;
712      case 0x39: if (VERBOSE) logerror("7508 cmd: Alarm ON\n"); break;
612713
613   case 0x0d:
714      case 0x0a:
715         if (VERBOSE)
716            logerror("7508 cmd: DIP Switch Read\n");
717         m_sior = ioport("dips")->read();
718         break;
614719
615      if (VERBOSE)
616         logerror("7508 cmd: 1 sec. Interrupt OFF\n");
720      case 0x0b: if (VERBOSE) logerror("7508 cmd: Stop Key Interrupt disable\n"); break;
721      case 0x1b: if (VERBOSE) logerror("7508 cmd: Stop Key Interrupt enable\n"); break;
722      case 0x0c: if (VERBOSE) logerror("7508 cmd: 7 chr. Buffer\n"); break;
723      case 0x1c: if (VERBOSE) logerror("7508 cmd: 1 chr. Buffer\n"); break;
617724
618      m_one_sec_int_enabled = false;
619      break;
725      case 0x0d:
726         if (VERBOSE)
727            logerror("7508 cmd: 1 sec. Interrupt OFF\n");
620728
621   case 0x1d:
729         m_one_sec_int_enabled = false;
730         break;
622731
623      if (VERBOSE)
624         logerror("7508 cmd: 1 sec. Interrupt ON\n");
732      case 0x1d:
733         if (VERBOSE)
734            logerror("7508 cmd: 1 sec. Interrupt ON\n");
625735
626      m_one_sec_int_enabled = true;
627      break;
736         m_one_sec_int_enabled = true;
737         break;
628738
629   case 0x0e:
739      case 0x0e:
740         if (VERBOSE)
741            logerror("7508 cmd: KB Clear\n");
630742
631      if (VERBOSE)
632         logerror("7508 cmd: KB Clear\n");
743         m_sior = 0xbf;
744         break;
633745
634      m_sior = 0xbf;
635      break;
636
637   case 0x0f: if (VERBOSE) logerror("7508 cmd: System Reset\n"); break;
746      case 0x0f: if (VERBOSE) logerror("7508 cmd: System Reset\n"); break;
747      }
638748   }
639749}
640750
r241752r241753
644754//**************************************************************************
645755
646756// vram start address register
647WRITE8_MEMBER( px4_state::px4_vadr_w )
757WRITE8_MEMBER( px4_state::vadr_w )
648758{
649759   if (VERBOSE)
650      logerror("%s: px4_vadr_w (0x%02x)\n", machine().describe_context(), data);
760      logerror("%s: vadr_w (0x%02x)\n", machine().describe_context(), data);
651761
652762   m_vadr = data;
653763}
654764
655765// y offset register
656WRITE8_MEMBER( px4_state::px4_yoff_w )
766WRITE8_MEMBER( px4_state::yoff_w )
657767{
658768   if (VERBOSE)
659      logerror("%s: px4_yoff_w (0x%02x)\n", machine().describe_context(), data);
769      logerror("%s: yoff_w (0x%02x)\n", machine().describe_context(), data);
660770
661771   m_yoff = data;
662772}
663773
664774// frame register
665WRITE8_MEMBER( px4_state::px4_fr_w )
775WRITE8_MEMBER( px4_state::fr_w )
666776{
667777   if (VERBOSE)
668      logerror("%s: px4_fr_w (0x%02x)\n", machine().describe_context(), data);
778      logerror("%s: fr_w (0x%02x)\n", machine().describe_context(), data);
669779}
670780
671781// speed-up register
672WRITE8_MEMBER( px4_state::px4_spur_w )
782WRITE8_MEMBER( px4_state::spur_w )
673783{
674784   if (VERBOSE)
675      logerror("%s: px4_spur_w (0x%02x)\n", machine().describe_context(), data);
785      logerror("%s: spur_w (0x%02x)\n", machine().describe_context(), data);
676786}
677787
678788
r241752r241753
728838   if (ART_TX_ENABLED)
729839   {
730840      if (ART_BREAK)
731      {
732         // transmit break
733         txd_w(0);
734      }
841         txd_w(0); // transmit break
735842      else
736      {
737         // transmit data
738         txd_w(transmit_register_get_data_bit());
739      }
843         txd_w(transmit_register_get_data_bit()); // transmit data
740844   }
741845   else
742   {
743      // transmit mark
744      txd_w(1);
745   }
846      txd_w(1); // transmit mark
746847}
747848
748849void px4_state::tra_complete()
r241752r241753
763864void px4_state::rcv_callback()
764865{
765866   if (ART_RX_ENABLED)
766   {
767      // receive data
768      receive_register_update_bit(m_serial_rx);
769   }
867      receive_register_update_bit(m_serial_rx); // receive data
770868}
771869
772870void px4_state::rcv_complete()
r241752r241753
800898}
801899
802900// cartridge interface
803READ8_MEMBER( px4_state::px4_ctgif_r )
901READ8_MEMBER( px4_state::ctgif_r )
804902{
805903   if (VERBOSE)
806      logerror("%s: px4_ctgif_r @ 0x%02x\n", machine().describe_context(), offset);
904      logerror("%s: ctgif_r @ 0x%02x\n", machine().describe_context(), offset);
807905
808906   return 0x00;
809907}
810908
811909// cartridge interface
812WRITE8_MEMBER( px4_state::px4_ctgif_w )
910WRITE8_MEMBER( px4_state::ctgif_w )
813911{
814912   if (VERBOSE)
815      logerror("%s: px4_ctgif_w (0x%02x @ 0x%02x)\n", machine().describe_context(), data, offset);
913      logerror("%s: ctgif_w (0x%02x @ 0x%02x)\n", machine().describe_context(), data, offset);
816914}
817915
818916// art data input register
819READ8_MEMBER( px4_state::px4_artdir_r )
917READ8_MEMBER( px4_state::artdir_r )
820918{
821919   if (VERBOSE)
822      logerror("%s: px4_artdir_r (%02x)\n", machine().describe_context(), m_artdir);
920      logerror("%s: artdir_r (%02x)\n", machine().describe_context(), m_artdir);
823921
824922   // clear ready
825923   m_artsr &= ~ART_RXRDY;
r241752r241753
832930}
833931
834932// art data output register
835WRITE8_MEMBER( px4_state::px4_artdor_w )
933WRITE8_MEMBER( px4_state::artdor_w )
836934{
837935   if (VERBOSE)
838      logerror("%s: px4_artdor_w (0x%02x)\n", machine().describe_context(), data);
936      logerror("%s: artdor_w (0x%02x)\n", machine().describe_context(), data);
839937
840938   m_artdor = data;
841939
r241752r241753
853951}
854952
855953// art status register
856READ8_MEMBER( px4_state::px4_artsr_r )
954READ8_MEMBER( px4_state::artsr_r )
857955{
858956   if (0)
859      logerror("%s: px4_artsr_r (%02x)\n", machine().describe_context(), m_artsr);
957      logerror("%s: artsr_r (%02x)\n", machine().describe_context(), m_artsr);
860958
861959   return m_artsr;
862960}
863961
864962// art mode register
865WRITE8_MEMBER( px4_state::px4_artmr_w )
963WRITE8_MEMBER( px4_state::artmr_w )
866964{
867965   int data_bit_count = BIT(data, 2) ? 8 : 7;
868966   parity_t parity = BIT(data, 4) ? (BIT(data, 5) ? PARITY_EVEN : PARITY_ODD) : PARITY_NONE;
r241752r241753
874972   set_data_frame(1, data_bit_count, parity, stop_bits);
875973}
876974
877WRITE_LINE_MEMBER( px4_state::write_centronics_busy )
878{
879   m_centronics_busy = state;
880}
881
882WRITE_LINE_MEMBER( px4_state::write_centronics_perror )
883{
884   m_centronics_perror = state;
885}
886
887975// io status register
888READ8_MEMBER( px4_state::px4_iostr_r )
976READ8_MEMBER( px4_state::iostr_r )
889977{
890978   UINT8 data = 0;
891979
r241752r241753
907995   data |= 0 << 7;   // bit 7, caud - audio input from cartridge
908996
909997   if (0)
910      logerror("%s: px4_iostr_r: rx = %d, dcd = %d, cts = %d\n", machine().describe_context(), BIT(data, 3), BIT(data, 4), BIT(data, 5));
998      logerror("%s: iostr_r: rx = %d, dcd = %d, cts = %d\n", machine().describe_context(), BIT(data, 3), BIT(data, 4), BIT(data, 5));
911999
9121000   return data;
9131001}
9141002
9151003// art command register
916WRITE8_MEMBER( px4_state::px4_artcr_w )
1004WRITE8_MEMBER( px4_state::artcr_w )
9171005{
9181006   if (VERBOSE)
919      logerror("%s: px4_artcr_w (0x%02x)\n", machine().describe_context(), data);
1007      logerror("%s: artcr_w (0x%02x)\n", machine().describe_context(), data);
9201008
9211009   m_artcr = data;
9221010
r241752r241753
9301018}
9311019
9321020// switch register
933WRITE8_MEMBER( px4_state::px4_swr_w )
1021WRITE8_MEMBER( px4_state::swr_w )
9341022{
9351023   if (VERBOSE)
9361024   {
r241752r241753
9441032}
9451033
9461034// io control register
947WRITE8_MEMBER( px4_state::px4_ioctlr_w )
1035WRITE8_MEMBER( px4_state::ioctlr_w )
9481036{
9491037   if (VERBOSE)
950      logerror("%s: px4_ioctlr_w (0x%02x)\n", machine().describe_context(), data);
1038      logerror("%s: ioctlr_w (0x%02x)\n", machine().describe_context(), data);
9511039
9521040   m_centronics->write_strobe(!BIT(data, 0));
9531041   m_centronics->write_init(BIT(data, 1));
r241752r241753
9791067      m_isr |= INT0_7508;
9801068      gapnit_interrupt();
9811069   }
1070
1071   // update clock
1072   m_time.set(m_time.time + 1);
9821073}
9831074
9841075INPUT_CHANGED_MEMBER( px4_state::key_callback )
r241752r241753
10251116//  EXTERNAL RAM-DISK
10261117//**************************************************************************
10271118
1028WRITE8_MEMBER( px4_state::px4_ramdisk_address_w )
1119WRITE8_MEMBER( px4p_state::ramdisk_address_w )
10291120{
10301121   switch (offset)
10311122   {
r241752r241753
10351126   }
10361127}
10371128
1038READ8_MEMBER( px4_state::px4_ramdisk_data_r )
1129READ8_MEMBER( px4p_state::ramdisk_data_r )
10391130{
10401131   UINT8 ret = 0xff;
10411132
r241752r241753
10551146   return ret;
10561147}
10571148
1058WRITE8_MEMBER( px4_state::px4_ramdisk_data_w )
1149WRITE8_MEMBER( px4p_state::ramdisk_data_w )
10591150{
10601151   if (m_ramdisk_address < 0x20000)
10611152      m_ramdisk[m_ramdisk_address] = data;
r241752r241753
10631154   m_ramdisk_address = (m_ramdisk_address & 0xffff00) | ((m_ramdisk_address & 0xff) + 1);
10641155}
10651156
1066READ8_MEMBER( px4_state::px4_ramdisk_control_r )
1157READ8_MEMBER( px4p_state::ramdisk_control_r )
10671158{
10681159   // bit 7 determines the presence of a ram-disk
10691160   return 0x7f;
r241752r241753
11271218   membank("bank2")->set_base(m_ram->pointer() + 0x8000);
11281219}
11291220
1130DRIVER_INIT_MEMBER( px4_state, px4p )
1221DRIVER_INIT_MEMBER( px4p_state, px4p )
11311222{
11321223   DRIVER_INIT_CALL(px4);
11331224
r241752r241753
11401231   astring region_tag;
11411232   m_caps1_rom = memregion(region_tag.cpy(m_caps1->tag()).cat(GENERIC_ROM_REGION_TAG));
11421233   m_caps2_rom = memregion(region_tag.cpy(m_caps2->tag()).cat(GENERIC_ROM_REGION_TAG));
1234
1235   m_nvram->set_base(m_ram->pointer(), 0x10000);
1236
1237   // initialize clock
1238   machine().base_datetime(m_time);
11431239}
11441240
11451241void px4_state::machine_reset()
11461242{
1147   m_artsr = ART_TXRDY | ART_TXEMPTY;
1243   m_artsr = ART_TXRDY | ART_TXEMPTY | (!m_rs232->dsr_r() << 7);
11481244   receive_register_reset();
11491245   transmit_register_reset();
11501246}
11511247
1152MACHINE_START_MEMBER( px4_state, px4_ramdisk )
1248void px4p_state::machine_start()
11531249{
11541250   px4_state::machine_start();
1155   machine().device<nvram_device>("nvram")->set_base(m_ramdisk, 0x20000);
1251   m_rdnvram->set_base(m_ramdisk, 0x20000);
11561252}
11571253
11581254
r241752r241753
11691265   ADDRESS_MAP_UNMAP_HIGH
11701266   ADDRESS_MAP_GLOBAL_MASK(0xff)
11711267   // gapnit, 0x00-0x07
1172   AM_RANGE(0x00, 0x00) AM_READWRITE(px4_icrlc_r, px4_ctrl1_w)
1173   AM_RANGE(0x01, 0x01) AM_READWRITE(px4_icrhc_r, px4_cmdr_w)
1174   AM_RANGE(0x02, 0x02) AM_READWRITE(px4_icrlb_r, px4_ctrl2_w)
1175   AM_RANGE(0x03, 0x03) AM_READ(px4_icrhb_r)
1176   AM_RANGE(0x04, 0x04) AM_READWRITE(px4_isr_r, px4_ier_w)
1177   AM_RANGE(0x05, 0x05) AM_READWRITE(px4_str_r, px4_bankr_w)
1178   AM_RANGE(0x06, 0x06) AM_READWRITE(px4_sior_r, px4_sior_w)
1268   AM_RANGE(0x00, 0x00) AM_READWRITE( icrlc_r, ctrl1_w )
1269   AM_RANGE(0x01, 0x01) AM_READWRITE( icrhc_r, cmdr_w )
1270   AM_RANGE(0x02, 0x02) AM_READWRITE( icrlb_r, ctrl2_w )
1271   AM_RANGE(0x03, 0x03) AM_READ( icrhb_r )
1272   AM_RANGE(0x04, 0x04) AM_READWRITE( isr_r, ier_w )
1273   AM_RANGE(0x05, 0x05) AM_READWRITE( str_r, bankr_w )
1274   AM_RANGE(0x06, 0x06) AM_READWRITE( sior_r, sior_w )
11791275   AM_RANGE(0x07, 0x07) AM_NOP
11801276   // gapndl, 0x08-0x0f
1181   AM_RANGE(0x08, 0x08) AM_WRITE(px4_vadr_w)
1182   AM_RANGE(0x09, 0x09) AM_WRITE(px4_yoff_w)
1183   AM_RANGE(0x0a, 0x0a) AM_WRITE(px4_fr_w)
1184   AM_RANGE(0x0b, 0x0b) AM_WRITE(px4_spur_w)
1277   AM_RANGE(0x08, 0x08) AM_WRITE( vadr_w )
1278   AM_RANGE(0x09, 0x09) AM_WRITE( yoff_w )
1279   AM_RANGE(0x0a, 0x0a) AM_WRITE( fr_w )
1280   AM_RANGE(0x0b, 0x0b) AM_WRITE( spur_w )
11851281   AM_RANGE(0x0c, 0x0f) AM_NOP
11861282   // gapnio, 0x10-0x1f
1187   AM_RANGE(0x10, 0x13) AM_READWRITE(px4_ctgif_r, px4_ctgif_w)
1188   AM_RANGE(0x14, 0x14) AM_READWRITE(px4_artdir_r, px4_artdor_w)
1189   AM_RANGE(0x15, 0x15) AM_READWRITE(px4_artsr_r, px4_artmr_w)
1190   AM_RANGE(0x16, 0x16) AM_READWRITE(px4_iostr_r, px4_artcr_w)
1283   AM_RANGE(0x10, 0x13) AM_READWRITE( ctgif_r, ctgif_w )
1284   AM_RANGE(0x14, 0x14) AM_READWRITE( artdir_r, artdor_w )
1285   AM_RANGE(0x15, 0x15) AM_READWRITE( artsr_r, artmr_w )
1286   AM_RANGE(0x16, 0x16) AM_READWRITE( iostr_r, artcr_w )
11911287   AM_RANGE(0x17, 0x17) AM_DEVWRITE("cent_data_out", output_latch_device, write)
1192   AM_RANGE(0x18, 0x18) AM_WRITE(px4_swr_w)
1193   AM_RANGE(0x19, 0x19) AM_WRITE(px4_ioctlr_w)
1288   AM_RANGE(0x18, 0x18) AM_WRITE( swr_w )
1289   AM_RANGE(0x19, 0x19) AM_WRITE( ioctlr_w )
11941290   AM_RANGE(0x1a, 0x1f) AM_NOP
11951291ADDRESS_MAP_END
11961292
1197static ADDRESS_MAP_START( px4p_io, AS_IO, 8, px4_state )
1293static ADDRESS_MAP_START( px4p_io, AS_IO, 8, px4p_state )
11981294   AM_IMPORT_FROM(px4_io)
1199   AM_RANGE(0x90, 0x92) AM_WRITE(px4_ramdisk_address_w)
1200   AM_RANGE(0x93, 0x93) AM_READWRITE(px4_ramdisk_data_r, px4_ramdisk_data_w)
1201   AM_RANGE(0x94, 0x94) AM_READ(px4_ramdisk_control_r)
1295   AM_RANGE(0x90, 0x92) AM_WRITE(ramdisk_address_w )
1296   AM_RANGE(0x93, 0x93) AM_READWRITE(ramdisk_data_r, ramdisk_data_w )
1297   AM_RANGE(0x94, 0x94) AM_READ(ramdisk_control_r)
12021298ADDRESS_MAP_END
12031299
12041300
r241752r241753
13611457//  PALETTE
13621458//**************************************************************************
13631459
1364PALETTE_INIT_MEMBER(px4_state, px4)
1460PALETTE_INIT_MEMBER( px4_state, px4 )
13651461{
13661462   palette.set_pen_color(0, rgb_t(138, 146, 148));
13671463   palette.set_pen_color(1, rgb_t(92, 83, 88));
13681464}
13691465
1370PALETTE_INIT_MEMBER(px4_state, px4p)
1466PALETTE_INIT_MEMBER( px4p_state, px4p )
13711467{
13721468   palette.set_pen_color(0, rgb_t(149, 157, 130));
13731469   palette.set_pen_color(1, rgb_t(92, 83, 88));
r241752r241753
14081504   // internal ram
14091505   MCFG_RAM_ADD(RAM_TAG)
14101506   MCFG_RAM_DEFAULT_SIZE("64k")
1507   MCFG_NVRAM_ADD_NO_FILL("nvram")
14111508
14121509   // centronics printer
1413   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
1414   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(px4_state, write_centronics_busy))
1415   MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(px4_state, write_centronics_perror))
1510   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
1511   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(px4_state, centronics_busy_w))
1512   MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(px4_state, centronics_perror_w))
14161513
14171514   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
14181515
r241752r241753
14401537
14411538   // software list
14421539   MCFG_SOFTWARE_LIST_ADD("cart_list", "px4_cart")
1540   MCFG_SOFTWARE_LIST_ADD("epson_cpm_list", "epson_cpm")
14431541MACHINE_CONFIG_END
14441542
1445static MACHINE_CONFIG_DERIVED( px4p, px4 )
1543static MACHINE_CONFIG_DERIVED_CLASS( px4p, px4, px4p_state )
14461544   MCFG_CPU_MODIFY("maincpu")
14471545   MCFG_CPU_IO_MAP(px4p_io)
14481546
1449   MCFG_MACHINE_START_OVERRIDE(px4_state, px4_ramdisk)
1450   MCFG_NVRAM_ADD_0FILL("nvram")
1547   MCFG_NVRAM_ADD_0FILL("rdnvram")
14511548
14521549   MCFG_PALETTE_MODIFY("palette")
1453   MCFG_PALETTE_INIT_OWNER(px4_state, px4p)
1550   MCFG_PALETTE_INIT_OWNER(px4p_state, px4p)
14541551
14551552   MCFG_GENERIC_CARTSLOT_ADD("ramdisk_socket", generic_plain_slot, "px4_cart")
14561553MACHINE_CONFIG_END
r241752r241753
14641561
14651562ROM_START( px4 )
14661563   ROM_REGION(0x8000, "os", 0)
1467   ROM_LOAD("m25122aa_po_px4.10c", 0x0000, 0x8000, CRC(62d60dc6) SHA1(3d32ec79a317de7c84c378302e95f48d56505502))
1564   ROM_SYSTEM_BIOS(0, "default",  "PX-4 OS ROM")
1565   ROMX_LOAD("m25122aa_po_px4.10c", 0x0000, 0x8000, CRC(62d60dc6) SHA1(3d32ec79a317de7c84c378302e95f48d56505502), ROM_BIOS(1))
1566   ROM_SYSTEM_BIOS(1, "ramtest",  "PX-4/PX-8 DRAM Test Ver. 1.0")
1567   ROMX_LOAD("ramtest.10c", 0x0000, 0x8000, CRC(f8aced5f) SHA1(a5a2f398e602aa349c3636d6659dd0c7eaba07fb), ROM_BIOS(2))
14681568
14691569   ROM_REGION(0x1000, "slave", 0)
14701570   ROM_LOAD("upd7508.bin", 0x0000, 0x1000, NO_DUMP)
r241752r241753
14721572
14731573ROM_START( px4p )
14741574   ROM_REGION(0x8000, "os", 0)
1475   ROM_LOAD("b0_pxa.10c", 0x0000, 0x8000, CRC(d74b9ef5) SHA1(baceee076c12f5a16f7a26000e9bc395d021c455))
1575   ROM_SYSTEM_BIOS(0, "default",  "PX-4+ OS ROM")
1576   ROMX_LOAD("b0_pxa.10c", 0x0000, 0x8000, CRC(d74b9ef5) SHA1(baceee076c12f5a16f7a26000e9bc395d021c455), ROM_BIOS(1))
1577   ROM_SYSTEM_BIOS(1, "ramtest",  "PX-4/PX-8 DRAM Test Ver. 1.0")
1578   ROMX_LOAD("ramtest.10c", 0x0000, 0x8000, CRC(f8aced5f) SHA1(a5a2f398e602aa349c3636d6659dd0c7eaba07fb), ROM_BIOS(2))
14761579
14771580   ROM_REGION(0x1000, "slave", 0)
14781581   ROM_LOAD("upd7508.bin", 0x0000, 0x1000, NO_DUMP)
r241752r241753
14831586//  GAME DRIVERS
14841587//**************************************************************************
14851588
1486//    YEAR  NAME  PARENT  COMPAT  MACHINE  INPUT      CLASS      INIT  COMPANY  FULLNAME  FLAGS
1487COMP( 1985, px4,  0,      0,      px4,     px4_h450a, px4_state, px4,  "Epson", "PX-4",   0 )
1488COMP( 1985, px4p, px4,    0,      px4p,    px4_h450a, px4_state, px4p, "Epson", "PX-4+",  0 )
1589//    YEAR  NAME  PARENT  COMPAT  MACHINE  INPUT      CLASS       INIT  COMPANY  FULLNAME  FLAGS
1590COMP( 1985, px4,  0,      0,      px4,     px4_h450a, px4_state,  px4,  "Epson", "PX-4",   0 )
1591COMP( 1985, px4p, px4,    0,      px4p,    px4_h450a, px4p_state, px4p, "Epson", "PX-4+",  0 )
trunk/src/mess/drivers/px8.c
r241752r241753
801801   /* internal ram */
802802   MCFG_RAM_ADD(RAM_TAG)
803803   MCFG_RAM_DEFAULT_SIZE("64K")
804   
805   // software
806   MCFG_SOFTWARE_LIST_ADD("epson_cpm_list", "epson_cpm")
804807MACHINE_CONFIG_END
805808
806809/***************************************************************************
trunk/src/mess/drivers/rmnimbus.c
r241752r241753
178178   MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(CENTRONICS_TAG, centronics_device, write_strobe))
179179   MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE(MAINCPU_TAG, i80186_cpu_device, int3_w))
180180
181   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
181   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
182182   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(VIA_TAG, via6522_device, write_ca1)) MCFG_DEVCB_INVERT
183183
184184   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
trunk/src/mess/drivers/sage2.c
r241752r241753
496496   MCFG_UPD765A_ADD(UPD765_TAG, false, false)
497497   MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(sage2_state, fdc_irq))
498498
499   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
499   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
500500   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(sage2_state, write_centronics_ack))
501501   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(sage2_state, write_centronics_busy))
502502   MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(sage2_state, write_centronics_perror))
trunk/src/mess/drivers/samcoupe.c
r241752r241753
543543   MCFG_PALETTE_INIT_OWNER(samcoupe_state, samcoupe)
544544
545545   /* devices */
546   MCFG_CENTRONICS_ADD("lpt1", centronics_printers, "printer")
546   MCFG_CENTRONICS_ADD("lpt1", centronics_devices, "printer")
547547   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(samcoupe_state, write_lpt1_busy))
548548
549549   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("lpt1_data_out", "lpt1")
550550
551   MCFG_CENTRONICS_ADD("lpt2", centronics_printers, "printer")
551   MCFG_CENTRONICS_ADD("lpt2", centronics_devices, "printer")
552552   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(samcoupe_state, write_lpt2_busy))
553553
554554   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("lpt2_data_out", "lpt2")
trunk/src/mess/drivers/sg1000.c
r241752r241753
855855   MCFG_UPD765A_ADD(UPD765_TAG, false, false)
856856   MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", sf7000_floppies, "3ssdd", sf7000_state::floppy_formats)
857857
858   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
858   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
859859
860860   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
861861
trunk/src/mess/drivers/sh4robot.c
r241752r241753
8888/* Driver */
8989
9090/*    YEAR  NAME    PARENT  COMPAT   MACHINE    INPUT    INIT    CONFIG COMPANY   FULLNAME       FLAGS */
91COMP( ????, sh4robot,  0,       0,  sh4robot,   sh4robot, driver_device,   0,   "", "Robot", GAME_NOT_WORKING | GAME_NO_SOUND)
91COMP( 20??, sh4robot,  0,       0,  sh4robot,   sh4robot, driver_device,   0,   "<unknown>", "Robot", GAME_NOT_WORKING | GAME_NO_SOUND)
trunk/src/mess/drivers/simon.c
r0r241753
1// license:BSD-3-Clause
2// copyright-holders:hap
3/***************************************************************************
4
5  Milton Bradley Simon
6 
7  Revision A hardware:
8  * TMS1000 (has internal ROM), DS75494 lamp driver
9 
10  Newer revisions have a smaller 16-pin MB4850 chip instead of the TMS1000.
11  This one has been decapped too, but we couldn't yet find the internal ROM.
12 
13  Other games assumed to be on similar hardware:
14  - Pocket Simon
15  - Super Simon
16
17***************************************************************************/
18
19#include "emu.h"
20#include "cpu/tms0980/tms0980.h"
21#include "sound/speaker.h"
22
23#include "simon.lh"
24
25// master clock is a single stage RC oscillator: R=33K, C=100pf,
26// according to the TMS 1000 series data manual this is around 350kHz
27#define SIMON_RC_CLOCK (350000)
28
29
30class simon_state : public driver_device
31{
32public:
33   simon_state(const machine_config &mconfig, device_type type, const char *tag)
34      : driver_device(mconfig, type, tag),
35      m_maincpu(*this, "maincpu"),
36      m_button_matrix(*this, "IN"),
37      m_speaker(*this, "speaker")
38   { }
39
40   required_device<cpu_device> m_maincpu;
41   required_ioport_array<4> m_button_matrix;
42   required_device<speaker_sound_device> m_speaker;
43
44   UINT16 m_r;
45
46   DECLARE_READ8_MEMBER(read_k);
47   DECLARE_WRITE16_MEMBER(write_o);
48   DECLARE_WRITE16_MEMBER(write_r);
49
50   virtual void machine_start();
51};
52
53
54/***************************************************************************
55
56  I/O
57
58***************************************************************************/
59
60READ8_MEMBER(simon_state::read_k)
61{
62   UINT8 k = 0;
63   
64   // read selected button rows
65   for (int i = 0; i < 4; i++)
66   {
67      static int r[4] = { 0, 1, 2, 9 };
68      if (m_r & (1 << r[i]))
69         k |= m_button_matrix[i]->read();
70   }
71
72   return k;
73}
74
75WRITE16_MEMBER(simon_state::write_r)
76{
77   // R4-R8 go through an 75494 IC first:
78   // R4 -> 75494 IN6 -> green lamp
79   // R5 -> 75494 IN3 -> red lamp
80   // R6 -> 75494 IN5 -> yellow lamp
81   // R7 -> 75494 IN2 -> blue lamp
82   for (int i = 0; i < 4; i++)
83      output_set_lamp_value(i, data >> (4 + i) & 1);
84   
85   // R8 -> 75494 IN0 -> speaker
86   m_speaker->level_w(data >> 8 & 1);
87
88   // R0,R1,R2,R9: input mux
89   // R3: GND
90   // other bits: N/C
91   m_r = data;
92}
93
94WRITE16_MEMBER(simon_state::write_o)
95{
96   // N/C
97}
98
99
100
101/***************************************************************************
102
103  Inputs
104
105***************************************************************************/
106
107static INPUT_PORTS_START( simon )
108   PORT_START("IN.0")
109   PORT_CONFNAME( 0x07, 0x02, "Game Select")
110   PORT_CONFSETTING(    0x02, "1" )
111   PORT_CONFSETTING(    0x01, "2" )
112   PORT_CONFSETTING(    0x04, "3" )
113   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
114
115   PORT_START("IN.1")
116   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Green Button")
117   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Red Button")
118   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("Yellow Button")
119   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_NAME("Blue Button")
120
121   PORT_START("IN.2")
122   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_NAME("Start")
123   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Last")
124   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Longest")
125   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
126
127   PORT_START("IN.3")
128   PORT_CONFNAME( 0x0f, 0x01, "Skill Level")
129   PORT_CONFSETTING(    0x02, "1" )
130   PORT_CONFSETTING(    0x04, "2" )
131   PORT_CONFSETTING(    0x08, "3" )
132   PORT_CONFSETTING(    0x01, "4" )
133INPUT_PORTS_END
134
135
136
137/***************************************************************************
138
139  Machine Config
140
141***************************************************************************/
142
143void simon_state::machine_start()
144{
145   m_r = 0;
146   save_item(NAME(m_r));
147}
148
149
150static const UINT16 simon_output_pla[0x20] =
151{
152   /* The output PLA just maps 1 2 4 8 and SL to O0-O4 */
153   0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
154   0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
155   0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
156   0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
157};
158
159
160static MACHINE_CONFIG_START( simon, simon_state )
161
162   /* basic machine hardware */
163   MCFG_CPU_ADD( "maincpu", TMS1000, SIMON_RC_CLOCK )
164   MCFG_TMS1XXX_OUTPUT_PLA(simon_output_pla)
165   MCFG_TMS1XXX_READ_K(READ8(simon_state, read_k))
166   MCFG_TMS1XXX_WRITE_O(WRITE16(simon_state, write_o))
167   MCFG_TMS1XXX_WRITE_R(WRITE16(simon_state, write_r))
168
169   MCFG_DEFAULT_LAYOUT(layout_simon)
170
171   /* no video! */
172
173   /* sound hardware */
174   MCFG_SPEAKER_STANDARD_MONO("mono")
175   MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
176   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
177MACHINE_CONFIG_END
178
179
180
181/***************************************************************************
182
183  Game driver(s)
184
185***************************************************************************/
186
187ROM_START( simon )
188   ROM_REGION( 0x0800, "maincpu", ROMREGION_ERASE00 )
189   ROM_LOAD( "tms1000.u1", 0x0000, 0x0400, CRC(9961719d) SHA1(35dddb018a8a2b31f377ab49c1f0cb76951b81c0) )
190ROM_END
191
192
193CONS( 1978, simon, 0, 0, simon, simon, driver_device, 0, "Milton Bradley", "Simon (Rev. A)", GAME_SUPPORTS_SAVE )
trunk/src/mess/drivers/sorcerer.c
r241752r241753
426426   MCFG_AY31015_RX_CLOCK(4800.0)
427427
428428   /* printer */
429   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "covox")
430   MCFG_SLOT_OPTION_ADD( "covox", CENTRONICS_COVOX )
429   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "covox")
431430
432431   /* The use of the parallel port as a general purpose port is not emulated.
433432   Currently the only use is to read the printer status in the Centronics CENDRV bios routine. */
trunk/src/mess/drivers/spc1000.c
r241752r241753
25252014-10-11: Replaced above code with MESS-compliant code [Meeso Kim]
2626
2727****************************************************************************/
28/*
29 * SAMSUNG SPC-1000 Series (info from zannylim)
30 *
31 * YEAR MODEL           MainVideo       PRT     FDD
32 * ---- --------------  ------  -----   ------  -------
33 * 1982 SPC-1000        S68047  RGB     buffer  -
34 * 1983 SPC-1000        S68047  RF-TV   buffer  -
35 * 1983 SPC-1100        S68047  RF-TV   -       -
36 * 1983 SPC-1000/1100   MC6847  RF-TV   direct  support
37 * 1985 SPC-1000A       MC6847  RF-TV   direct  support
38 *
39 * 2nd Video Display Processor type 1 : VDP UNIT (TMS9918 + 4KB VRAM) by staticsoft
40 * 2nd Video Display Processor type 2 : SOFT BOX (TMS9918 + 4KB VRAM with BIOS) by sammi computer
41 *
42 * Intelligence FDD : SD-725(2FDD, RS232C), SD-720(1FDD), SD-725A(2FDD), SD-725B(Desktop 2FDD, RS232C) - EPSON TF20 F100
43 * External FDD with Expansion slot : KWE-1000 by kyungwoo
44 *
45 * Network device : ISAM-1000 by samsung
46 *
47 *              +---------PRT------RGB----TVRF--+   SPC-1000
48 *              +                               +
49 *              +   ROM0                        +   CPU : Z80A (4MHz)
50 *              +   ROM1                        +   RAM : 64KB
51 *      +-------+   ROM2  AY-3-8910             +   VRAM : 6KB
52 *      +                             SPC-1000  +   VDG : AMI S68047 with TTL RGB output
53 *     IPL                                      +   PSG : AY-3-8910
54 *     RESET                          S68047    +
55 *      +           Z80A                        +   Include Internal Data-recorder
56 *      +    ROM3                               +
57 *      +                                       +   ROM : 32KB (8KB x 4)
58 *      +---------------------------------------+
59 *
60 *              +---------PRT----VIDEO----TVRF--+   SPC-1000
61 *              +                               +
62 *              +   ROM0                 LM1889 +   Support RF TV Support, but Removed RGB output
63 *              +   ROM1                        +
64 *      +-------+   ROM2  AY-3-8910   SPC-1000  +
65 *      +                                 1100  +
66 *     IPL                                      +
67 *     RESET                          S68047    +
68 *      +           Z80A                        +
69 *      +    ROM3                               +
70 *      +                                       +
71 *      +---------------------------------------+
72 *
73 *              +----------------VIDEO----TVRF--+   SPC-1100
74 *              +                               +
75 *              +   ROM0                 LM1889 +   Removed Printer port
76 *              +   ROM1       LM386(5V)        +
77 *      +-------+   ROM2  AY-3-8910   SPC-1000  +
78 *      +                                 1100  +
79 *     IPL                                      +
80 *     RESET                          S68047    +
81 *      +           Z80A                        +
82 *      +    ROM3                               +
83 *      +                                       +
84 *      +---------------------------------------+
85 *
86 *              +---------PRT----VIDEO----TVRF--+   SPC-1000, SPC-1100
87 *              +                               +
88 *              +   ROM0                 MC1372 +   New Video Display Generator : MC6847
89 *              +   ROM1       LM386(5V)        +
90 *      +-------+   ROM2  AY-3-8910             +
91 *      +           ROM3         SPC-1000/1100  +
92 *     IPL                                      +
93 *     RESET                          MC6847    +
94 *      +           Z80A                        +
95 *      +                                       +
96 *      +                                       +
97 *      +---------------------------------------+
98 *
99 *              +---------PRT----VIDEO----TVRF--+   SPC-1000, SPC-1100
100 *              +                               +
101 *              +   ROM0              S4 MC1372 +   REV PCB No.839291
102 *              +   ROM1       LM386(5V)        +
103 *      +-------+   ROM2  AY-3-8910             +   Add composite color on/off switch
104 *      +           ROM3         SPC-1000/1100  +
105 *     IPL                                      +
106 *     RESET                          MC6847    +
107 *      +           Z80A                        +
108 *      +                                       +
109 *      +                                       +
110 *      +---------------------------------------+
111 *
112 *              +---------PRT----VIDEO----TVRF--+   SPC-1000A
113 *              +                               +
114 *              +   ROM0              S4 MC1372 +   Internal Data-recorder with Cassette Audio Player
115 *              +   ROM1       LM386(12V)       +   Add FDD auto detect
116 *      +-------+   ROM2  AY-3-8910             +   Remove IPL button
117 *      + SPC-1000A ROM3                        +   Change DRAM refresh circuit
118 *     IPL                                      +   Use 64K DRAM made by Samsung
119 *      +                             MC6847    +   Use TTL IC made by Goldstar
120 *      +           Z80A                        +
121 *      +                                       +
122 *      +                                       +
123 *      +---------------------------------------+
124 *
125 */
28126
29
30127#include "emu.h"
31128#include "cpu/z80/z80.h"
32129#include "machine/ram.h"
trunk/src/mess/drivers/specpls3.c
r241752r241753
382382   MCFG_FLOPPY_DRIVE_ADD("upd765:0", specpls3_floppies, "3ssdd", spectrum_state::floppy_formats)
383383   MCFG_FLOPPY_DRIVE_ADD("upd765:1", specpls3_floppies, "3ssdd", spectrum_state::floppy_formats)
384384
385   MCFG_SOFTWARE_LIST_ADD("flop_list","spectrum_flop")
385   MCFG_SOFTWARE_LIST_ADD("flop_list", "specpls3_flop")
386386MACHINE_CONFIG_END
387387
388388/***************************************************************************
trunk/src/mess/drivers/spectrum.c
r241752r241753
708708   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
709709   MCFG_CASSETTE_INTERFACE("spectrum_cass")
710710
711   MCFG_SOFTWARE_LIST_ADD("cass_list","spectrum_cass")
711   MCFG_SOFTWARE_LIST_ADD("cass_list", "spectrum_cass")
712712
713713   /* cartridge */
714714   MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "spectrum_cart")
715715   MCFG_GENERIC_EXTENSIONS("bin,rom")
716716   MCFG_GENERIC_LOAD(spectrum_state, spectrum_cart)
717717
718   MCFG_SOFTWARE_LIST_ADD("cart_list","spectrum")
718   MCFG_SOFTWARE_LIST_ADD("cart_list", "spectrum_cart")
719719MACHINE_CONFIG_END
720720
721721MACHINE_CONFIG_DERIVED( spectrum, spectrum_common )
trunk/src/mess/drivers/super80.c
r241752r241753
719719   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
720720
721721   /* printer */
722   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
722   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
723723   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit7))
724724
725725   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241752r241753
806806   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
807807
808808   /* printer */
809   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
809   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
810810   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit7))
811811
812812   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
trunk/src/mess/drivers/svi318.c
r241752r241753
165165   PORT_BIT (0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT)    PORT_CHAR(UCHAR_SHIFT_1)
166166   PORT_BIT (0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL)          PORT_CHAR(UCHAR_SHIFT_2)
167167   PORT_BIT (0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left Grph") PORT_CODE(KEYCODE_LALT)         PORT_CHAR(UCHAR_MAMEKEY(PGUP))
168   PORT_BIT (0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Rright Grph") PORT_CODE(KEYCODE_RALT)       PORT_CHAR(UCHAR_MAMEKEY(PGDN))
168   PORT_BIT (0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right Grph") PORT_CODE(KEYCODE_RALT)       PORT_CHAR(UCHAR_MAMEKEY(PGDN))
169169   PORT_BIT (0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ESC)                                 PORT_CHAR(UCHAR_MAMEKEY(ESC))
170170   PORT_BIT (0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Stop") PORT_CODE(KEYCODE_END)               PORT_CHAR(UCHAR_MAMEKEY(END))
171171   PORT_BIT (0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER)                               PORT_CHAR(13)
r241752r241753
295295   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
296296
297297   /* printer */
298   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
298   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
299299   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(svi318_state, write_centronics_busy))
300300
301301   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241752r241753
424424   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
425425
426426   /* printer */
427   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
427   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
428428   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(svi318_state, write_centronics_busy))
429429
430430   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
trunk/src/mess/drivers/tandy2k.c
r241752r241753
844844   MCFG_FLOPPY_DRIVE_ADD(I8272A_TAG ":0", tandy2k_floppies, "525qd", tandy2k_state::floppy_formats)
845845   MCFG_FLOPPY_DRIVE_ADD(I8272A_TAG ":1", tandy2k_floppies, "525qd", tandy2k_state::floppy_formats)
846846
847   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
847   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
848848   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(tandy2k_state, write_centronics_ack))
849849   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(tandy2k_state, write_centronics_busy))
850850   MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(tandy2k_state, write_centronics_perror))
trunk/src/mess/drivers/thomson.c
r241752r241753
14511451   MCFG_DEVICE_MODIFY("mc6846")
14521452   MCFG_MC6846_OUT_PORT_CB(WRITE8(thomson_state, to9_timer_port_out))
14531453
1454   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
1454   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
14551455   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(thomson_state, write_centronics_busy))
14561456
14571457   /* internal ram */
r241752r241753
16701670   MCFG_PIA_CB2_HANDLER(NULL)
16711671   MCFG_PIA_IRQA_HANDLER(NULL)
16721672
1673   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
1673   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
16741674   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(thomson_state, write_centronics_busy))
16751675
16761676   MCFG_DEVICE_MODIFY("mc6846")
r241752r241753
18261826   MCFG_PIA_IRQA_HANDLER(NULL)
18271827   MCFG_PIA_IRQB_HANDLER(WRITELINE(thomson_state, thom_firq_1))
18281828
1829   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
1829   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
18301830   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(thomson_state, write_centronics_busy))
18311831
18321832   MCFG_DEVICE_MODIFY("mc6846")
r241752r241753
21762176   MCFG_PIA_WRITEPA_HANDLER(WRITE8(thomson_state, mo6_game_porta_out))
21772177   MCFG_PIA_CB2_HANDLER(WRITELINE(thomson_state, mo6_game_cb2_out))
21782178
2179   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
2179   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
21802180   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(thomson_state, write_centronics_busy))
21812181
21822182   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241752r241753
24162416   MCFG_DEVICE_MODIFY(THOM_PIA_GAME)
24172417   MCFG_PIA_WRITEPA_HANDLER(WRITE8(thomson_state, mo6_game_porta_out))
24182418
2419   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
2419   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
24202420   MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in")
24212421   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(thomson_state, write_centronics_busy))
24222422
trunk/src/mess/drivers/tiki100.c
r241752r241753
686686   MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL)
687687   MCFG_RS232_RXD_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxb_w))
688688
689   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
689   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
690690   MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in")
691691   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(tiki100_state, write_centronics_ack))
692692   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(tiki100_state, write_centronics_busy))
trunk/src/mess/drivers/tmc600.c
r241752r241753
267267   MCFG_FRAGMENT_ADD(tmc600_video)
268268
269269   /* devices */
270   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
270   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
271271
272272   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
273273
trunk/src/mess/drivers/trs80.c
r241752r241753
601601
602602   MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(trs80_floppy_interface)
603603
604   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
604   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
605605   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit7))
606606   MCFG_CENTRONICS_PERROR_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit6))
607607   MCFG_CENTRONICS_SELECT_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit5))
trunk/src/mess/drivers/trs80m2.c
r241752r241753
756756   MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_8MHz/2, 0, 0, 0, 0)
757757   MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0))
758758
759   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
759   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
760760   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(Z80PIO_TAG, z80pio_device, strobe_b))
761761   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(trs80m2_state, write_centronics_busy))
762762   MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(trs80m2_state, write_centronics_fault))
r241752r241753
848848
849849   MCFG_PIC8259_ADD(AM9519A_TAG, INPUTLINE(M68000_TAG, M68K_IRQ_5), VCC, NULL )
850850
851   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
851   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
852852   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(Z80PIO_TAG, z80pio_device, strobe_b))
853853   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(trs80m2_state, write_centronics_busy))
854854   MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(trs80m2_state, write_centronics_fault))
trunk/src/mess/drivers/tutor.c
r241752r241753
720720   MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
721721   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
722722
723   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
723   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
724724   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(tutor_state, write_centronics_busy))
725725
726726   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
trunk/src/mess/drivers/tvc.c
r241752r241753
788788   MCFG_TVC_SOUND_SNDINT_CALLBACK(WRITELINE(tvc_state, int_ff_set))
789789   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
790790
791   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
791   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
792792   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(tvc_state, centronics_ack))
793793
794794   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
trunk/src/mess/drivers/v1050.c
r241752r241753
11291129   MCFG_SOFTWARE_LIST_ADD("hdd_list", "v1050_hdd")
11301130
11311131   // printer
1132   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
1132   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
11331133   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(v1050_state, write_centronics_busy))
11341134   MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(v1050_state, write_centronics_perror))
11351135
trunk/src/mess/drivers/victor9k.c
r241752r241753
1111
1212/*
1313
14    Sector format
15    -------------
16
17    Header sync
18    Sector header (header ID, track ID, sector ID, and checksum)
19    Gap 1
20    Data Sync
21    Data field (data sync, data ID, data bytes, and checksum)
22    Gap 2
23
24    Track format
25    ------------
26
27    ZONE        LOWER HEAD  UPPER HEAD  SECTORS     ROTATIONAL
28    NUMBER      TRACKS      TRACKS      PER TRACK   PERIOD (MS)
29
30    0           0-3         unused      19          237.9
31    1           4-15        0-7         18          224.5
32    2           16-26       8-18        17          212.2
33    3           27-37       19-29       16          199.9
34    4           38-48       30-40       15          187.6
35    5           49-59       41-51       14          175.3
36    6           60-70       52-62       13          163.0
37    7           71-79       63-74       12          149.6
38    8           unused      75-79       11          144.0
39
40*/
41
42/*
43
4414    TODO:
4515
4616    - floppy 8048
r241752r241753
5929
6030
6131//**************************************************************************
62//  READ/WRITE HANDLERS
63//**************************************************************************
64
65//-------------------------------------------------
66//  floppy_p1_r -
67//-------------------------------------------------
68
69READ8_MEMBER( victor9k_state::floppy_p1_r )
70{
71   /*
72
73       bit     description
74
75       0       L0MS0
76       1       L0MS1
77       2       L0MS2
78       3       L0MS3
79       4       L1MS0
80       5       L1MS1
81       6       L1MS2
82       7       L1MS3
83
84   */
85
86   return m_lms;
87}
88
89
90//-------------------------------------------------
91//  floppy_p2_r -
92//-------------------------------------------------
93
94READ8_MEMBER( victor9k_state::floppy_p2_r )
95{
96   /*
97
98       bit     description
99
100       0
101       1
102       2
103       3
104       4
105       5
106       6       RDY0
107       7       RDY1
108
109   */
110
111   UINT8 data = 0;
112
113   data |= m_rdy0 << 6;
114   data |= m_rdy1 << 7;
115
116   return data;
117}
118
119
120//-------------------------------------------------
121//  floppy_p2_w -
122//-------------------------------------------------
123
124WRITE8_MEMBER( victor9k_state::floppy_p2_w )
125{
126   /*
127
128       bit     description
129
130       0       START0
131       1       STOP0
132       2       START1
133       3       STOP1
134       4       SEL1
135       5       SEL0
136       6
137       7
138
139   */
140
141   if (BIT(data, 0)) m_floppy0->mon_w(0);
142   if (BIT(data, 1)) m_floppy0->mon_w(1);
143   if (BIT(data, 2)) m_floppy1->mon_w(0);
144   if (BIT(data, 3)) m_floppy1->mon_w(1);
145
146   int sel0 = BIT(data, 5);
147
148   if (m_sel0 && !sel0)
149   {
150      m_da0 = m_da;
151      //m_floppy0->set_rpm();
152   }
153
154   m_sel0 = sel0;
155
156   int sel1 = BIT(data, 4);
157
158   if (m_sel1 && !sel1)
159   {
160      m_da1 = m_da;
161      //m_floppy1->set_rpm();
162   }
163
164   m_sel1 = sel1;
165}
166
167
168//-------------------------------------------------
169//  tach0_r -
170//-------------------------------------------------
171
172READ8_MEMBER( victor9k_state::tach0_r )
173{
174   return m_tach0;
175}
176
177
178//-------------------------------------------------
179//  tach1_r -
180//-------------------------------------------------
181
182READ8_MEMBER( victor9k_state::tach1_r )
183{
184   return m_tach1;
185}
186
187
188//-------------------------------------------------
189//  da_w -
190//-------------------------------------------------
191
192WRITE8_MEMBER( victor9k_state::da_w )
193{
194   m_da = data;
195}
196
197
198
199//**************************************************************************
20032//  ADDRESS MAPS
20133//**************************************************************************
20234
r241752r241753
20638
20739static ADDRESS_MAP_START( victor9k_mem, AS_PROGRAM, 8, victor9k_state )
20840//  AM_RANGE(0x00000, 0xdffff) AM_RAM
41   AM_RANGE(0x20000, 0xdffff) AM_NOP
20942   AM_RANGE(0xe0000, 0xe0001) AM_DEVREADWRITE(I8259A_TAG, pic8259_device, read, write)
21043   AM_RANGE(0xe0020, 0xe0023) AM_DEVREADWRITE(I8253_TAG, pit8253_device, read, write)
21144   AM_RANGE(0xe0040, 0xe0043) AM_DEVREADWRITE(UPD7201_TAG, upd7201_device, cd_ba_r, cd_ba_w)
212   AM_RANGE(0xe8000, 0xe8000) AM_DEVREADWRITE(HD46505S_TAG, mc6845_device, status_r, address_w)
213   AM_RANGE(0xe8001, 0xe8001) AM_DEVREADWRITE(HD46505S_TAG, mc6845_device, register_r, register_w)
214   AM_RANGE(0xe8020, 0xe802f) AM_DEVREADWRITE(M6522_1_TAG, via6522_device, read, write)
215   AM_RANGE(0xe8040, 0xe804f) AM_DEVREADWRITE(M6522_2_TAG, via6522_device, read, write)
216   AM_RANGE(0xe8060, 0xe8061) AM_DEVREADWRITE(MC6852_TAG, mc6852_device, read, write)
217   AM_RANGE(0xe8080, 0xe808f) AM_DEVREADWRITE(M6522_3_TAG, via6522_device, read, write)
218   AM_RANGE(0xe80a0, 0xe80af) AM_DEVREADWRITE(M6522_4_TAG, via6522_device, read, write)
219   AM_RANGE(0xe80c0, 0xe80cf) AM_DEVREADWRITE(M6522_6_TAG, via6522_device, read, write)
220   AM_RANGE(0xe80e0, 0xe80ef) AM_DEVREADWRITE(M6522_5_TAG, via6522_device, read, write)
45   AM_RANGE(0xe8000, 0xe8000) AM_MIRROR(0x7f00) AM_DEVREADWRITE(HD46505S_TAG, mc6845_device, status_r, address_w)
46   AM_RANGE(0xe8001, 0xe8001) AM_MIRROR(0x7f00) AM_DEVREADWRITE(HD46505S_TAG, mc6845_device, register_r, register_w)
47   AM_RANGE(0xe8020, 0xe802f) AM_MIRROR(0x7f00) AM_DEVREADWRITE(M6522_1_TAG, via6522_device, read, write)
48   AM_RANGE(0xe8040, 0xe804f) AM_MIRROR(0x7f00) AM_DEVREADWRITE(M6522_2_TAG, via6522_device, read, write)
49   AM_RANGE(0xe8060, 0xe8061) AM_MIRROR(0x7f00) AM_DEVREADWRITE(MC6852_TAG, mc6852_device, read, write)
50   AM_RANGE(0xe8080, 0xe808f) AM_MIRROR(0x7f00) AM_DEVREADWRITE(M6522_3_TAG, via6522_device, read, write)
51   AM_RANGE(0xe80a0, 0xe80af) AM_MIRROR(0x7f00) AM_DEVREADWRITE(FDC_TAG, victor_9000_fdc_t, cs5_r, cs5_w)
52   AM_RANGE(0xe80c0, 0xe80cf) AM_MIRROR(0x7f00) AM_DEVREADWRITE(FDC_TAG, victor_9000_fdc_t, cs6_r, cs6_w)
53   AM_RANGE(0xe80e0, 0xe80ef) AM_MIRROR(0x7f00) AM_DEVREADWRITE(FDC_TAG, victor_9000_fdc_t, cs7_r, cs7_w)
22154   AM_RANGE(0xf0000, 0xf0fff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("video_ram")
22255   AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION(I8088_TAG, 0)
22356ADDRESS_MAP_END
22457
22558
226//-------------------------------------------------
227//  ADDRESS_MAP( floppy_io )
228//-------------------------------------------------
22959
230static ADDRESS_MAP_START( floppy_io, AS_IO, 8, victor9k_state )
231   AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(floppy_p1_r) AM_WRITENOP
232   AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(floppy_p2_r, floppy_p2_w)
233   AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(tach0_r)
234   AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(tach1_r)
235   AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_WRITE(da_w)
236ADDRESS_MAP_END
237
238
239
24060//**************************************************************************
24161//  INPUT PORTS
24262//**************************************************************************
r241752r241753
341161{
342162   m_ssda_irq = state;
343163
344   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq);
164   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_fdc_irq);
345165}
346166
347167
r241752r241753
413233{
414234   m_via1_irq = state;
415235
416   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq);
236   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_fdc_irq);
417237}
418238
419239WRITE8_MEMBER( victor9k_state::via2_pa_w )
r241752r241753
480300{
481301   m_via2_irq = state;
482302
483   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq);
303   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_fdc_irq);
484304}
485305
486306
r241752r241753
520340{
521341   m_via3_irq = state;
522342
523   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq);
343   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_fdc_irq);
524344}
525345
526346
527WRITE8_MEMBER( victor9k_state::via4_pa_w )
528{
529   /*
530
531       bit     description
532
533       PA0     L0MS0
534       PA1     L0MS1
535       PA2     L0MS2
536       PA3     L0MS3
537       PA4     ST0A
538       PA5     ST0B
539       PA6     ST0C
540       PA7     ST0D
541
542   */
543
544   m_lms = (m_lms & 0xf0) | (data & 0x0f);
545   m_st[0] = data >> 4;
546}
547
548WRITE8_MEMBER( victor9k_state::via4_pb_w )
549{
550   /*
551
552       bit     description
553
554       PB0     L1MS0
555       PB1     L1MS1
556       PB2     L1MS2
557       PB3     L1MS3
558       PB4     ST1A
559       PB5     ST1B
560       PB6     ST1C
561       PB7     ST1D
562
563   */
564
565   m_lms = (data << 4) | (m_lms & 0x0f);
566   m_st[1] = data >> 4;
567}
568
569WRITE_LINE_MEMBER( victor9k_state::mode_w )
570{
571}
572
573WRITE_LINE_MEMBER( victor9k_state::via4_irq_w )
574{
575   m_via4_irq = state;
576
577   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq);
578}
579
580
581/*
582
583    bit     description
584
585    PA0     E0
586    PA1     E1
587    PA2     I1
588    PA3     E2
589    PA4     E4
590    PA5     E5
591    PA6     I7
592    PA7     E6
593
594*/
595
596WRITE8_MEMBER( victor9k_state::via5_pb_w )
597{
598   /*
599
600       bit     description
601
602       PB0     WD0
603       PB1     WD1
604       PB2     WD2
605       PB3     WD3
606       PB4     WD4
607       PB5     WD5
608       PB6     WD6
609       PB7     WD7
610
611   */
612}
613
614WRITE_LINE_MEMBER( victor9k_state::via5_irq_w )
615{
616   m_via5_irq = state;
617
618   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq);
619}
620
621
622READ8_MEMBER( victor9k_state::via6_pa_r )
623{
624   /*
625
626       bit     description
627
628       PA0
629       PA1     _TRK0D0
630       PA2
631       PA3     _TRK0D1
632       PA4
633       PA5
634       PA6     WPS
635       PA7     _SYNC
636
637   */
638
639   UINT8 data = 0;
640
641   // track 0 drive A sense
642   data |= m_floppy0->trk00_r() << 1;
643
644   // track 0 drive B sense
645   data |= m_floppy1->trk00_r() << 3;
646
647   // write protect sense
648   data |= (m_drive ? m_floppy1->wpt_r() : m_floppy0->wpt_r()) << 6;
649
650   // disk sync detect
651   data |= m_sync << 7;
652
653   return data;
654}
655
656WRITE8_MEMBER( victor9k_state::via6_pa_w )
657{
658   /*
659
660       bit     description
661
662       PA0     LED0A
663       PA1
664       PA2     LED1A
665       PA3
666       PA4     SIDE SELECT
667       PA5     DRIVE SELECT
668       PA6
669       PA7
670
671   */
672
673   // LED, drive A
674   output_set_led_value(LED_A, BIT(data, 0));
675
676   // LED, drive B
677   output_set_led_value(LED_B, BIT(data, 2));
678
679   // dual side select
680   m_side = BIT(data, 4);
681
682   // select drive A/B
683   m_drive = BIT(data, 5);
684}
685
686READ8_MEMBER( victor9k_state::via6_pb_r )
687{
688   /*
689
690       bit     description
691
692       PB0     RDY0
693       PB1     RDY1
694       PB2
695       PB3     _DS1
696       PB4     _DS0
697       PB5     SINGLE/_DOUBLE SIDED
698       PB6
699       PB7
700
701   */
702
703   UINT8 data = 0;
704
705   // motor speed status, drive A
706   data |= m_rdy0;
707
708   // motor speed status, drive B
709   data |= m_rdy1 << 1;
710
711   // door B sense
712   data |= m_ds1 << 3;
713
714   // door A sense
715   data |= m_ds0 << 4;
716
717   // single/double sided
718   data |= (m_drive ? m_floppy1->twosid_r() : m_floppy0->twosid_r()) << 5;
719
720   return data;
721}
722
723WRITE8_MEMBER( victor9k_state::via6_pb_w )
724{
725   /*
726
727       bit     description
728
729       PB0
730       PB1
731       PB2     _SCRESET
732       PB3
733       PB4
734       PB5
735       PB6     STP0
736       PB7     STP1
737
738   */
739
740   // motor speed controller reset
741   if (!BIT(data, 2))
742      m_fdc_cpu->reset();
743
744   // stepper enable A
745   m_stp[0] = BIT(data, 6);
746
747   // stepper enable B
748   m_stp[1] = BIT(data, 7);
749}
750
751WRITE_LINE_MEMBER( victor9k_state::drw_w )
752{
753}
754
755WRITE_LINE_MEMBER( victor9k_state::erase_w )
756{
757}
758
759WRITE_LINE_MEMBER( victor9k_state::via6_irq_w )
760{
761   m_via6_irq = state;
762
763   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq);
764}
765
766
767347//-------------------------------------------------
768348//  VICTOR9K_KEYBOARD_INTERFACE( kb_intf )
769349//-------------------------------------------------
770350
771351WRITE_LINE_MEMBER( victor9k_state::kbrdy_w )
772352{
353   //logerror("KBRDY %u\n", state);
773354   m_via2->write_cb1(state);
774355
775356   m_pic->ir6_w(state ? CLEAR_LINE : ASSERT_LINE);
r241752r241753
777358
778359WRITE_LINE_MEMBER( victor9k_state::kbdata_w )
779360{
361   //logerror("KBDATA %u\n", state);
780362   m_via2->write_cb2(state);
781363   m_via2->write_pa6(state);
782364}
783365
784//-------------------------------------------------
785//  SLOT_INTERFACE( victor9k_floppies )
786//-------------------------------------------------
787366
788void victor9k_state::ready0_cb(floppy_image_device *device, int state)
367WRITE_LINE_MEMBER( victor9k_state::fdc_irq_w )
789368{
790   m_rdy0 = state;
369   m_fdc_irq = state;
791370
792   m_via5->write_ca2(m_rdy0);
371   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_fdc_irq);
793372}
794373
795int victor9k_state::load0_cb(floppy_image_device *device)
796{
797   m_ds0 = 0;
798374
799   m_via4->write_ca1(m_ds0);
800
801   return IMAGE_INIT_PASS;
802}
803
804void victor9k_state::unload0_cb(floppy_image_device *device)
805{
806   m_ds0 = 1;
807
808   m_via4->write_ca1(m_ds0);
809}
810
811void victor9k_state::ready1_cb(floppy_image_device *device, int state)
812{
813   m_rdy1 = state;
814
815   m_via5->write_cb2(m_rdy1);
816}
817
818int victor9k_state::load1_cb(floppy_image_device *device)
819{
820   m_ds1 = 0;
821
822   m_via4->write_cb1(m_ds1);
823
824   return IMAGE_INIT_PASS;
825}
826
827void victor9k_state::unload1_cb(floppy_image_device *device)
828{
829   m_ds1 = 1;
830
831   m_via4->write_cb1(m_ds1);
832}
833
834static SLOT_INTERFACE_START( victor9k_floppies )
835   SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
836SLOT_INTERFACE_END
837
838
839375//**************************************************************************
840376//  MACHINE INITIALIZATION
841377//**************************************************************************
842378
843//-------------------------------------------------
844//  MACHINE_START( victor9k )
845//-------------------------------------------------
846
847379void victor9k_state::machine_start()
848380{
849   // set floppy callbacks
850   m_floppy0->setup_ready_cb(floppy_image_device::ready_cb(FUNC(victor9k_state::ready0_cb), this));
851   m_floppy0->setup_load_cb(floppy_image_device::load_cb(FUNC(victor9k_state::load0_cb), this));
852   m_floppy0->setup_unload_cb(floppy_image_device::unload_cb(FUNC(victor9k_state::unload0_cb), this));
853   m_floppy1->setup_ready_cb(floppy_image_device::ready_cb(FUNC(victor9k_state::ready1_cb), this));
854   m_floppy1->setup_load_cb(floppy_image_device::load_cb(FUNC(victor9k_state::load1_cb), this));
855   m_floppy1->setup_unload_cb(floppy_image_device::unload_cb(FUNC(victor9k_state::unload1_cb), this));
381   // state saving
382   save_item(NAME(m_brt));
383   save_item(NAME(m_cont));
384   save_item(NAME(m_via1_irq));
385   save_item(NAME(m_via2_irq));
386   save_item(NAME(m_via3_irq));
387   save_item(NAME(m_fdc_irq));
388   save_item(NAME(m_ssda_irq));
856389
857390   // memory banking
858391   address_space &program = m_maincpu->space(AS_PROGRAM);
859392   program.install_ram(0x00000, m_ram->size() - 1, m_ram->pointer());
393}
860394
861   m_via5->write_ca1(m_brdy);
862   m_via6->write_ca1(m_gcrerr);
395void victor9k_state::machine_reset()
396{
397   m_maincpu->reset();
398   m_upd7201->reset();
399   m_ssda->reset();
400   m_via1->reset();
401   m_via2->reset();
402   m_via3->reset();
403   m_crtc->reset();
404   m_fdc->reset();
863405}
864406
865407
866
867408//**************************************************************************
868409//  MACHINE CONFIGURATION
869410//**************************************************************************
r241752r241753
878419   MCFG_CPU_PROGRAM_MAP(victor9k_mem)
879420   MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE(I8259A_TAG, pic8259_device, inta_cb)
880421
881   MCFG_CPU_ADD(I8048_TAG, I8048, XTAL_30MHz/6)
882   MCFG_CPU_IO_MAP(floppy_io)
883
884422   // video hardware
885423   MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
886424   MCFG_SCREEN_REFRESH_RATE(50)
r241752r241753
952490   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via3_pb_w))
953491   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via3_irq_w))
954492
955   MCFG_DEVICE_ADD(M6522_4_TAG, VIA6522, XTAL_30MHz/30)
956   MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor9k_state, via4_pa_w))
957   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via4_pb_w))
958   MCFG_VIA6522_CA2_HANDLER(WRITELINE(victor9k_state, mode_w))
959   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via4_irq_w))
960
961   MCFG_DEVICE_ADD(M6522_5_TAG, VIA6522, XTAL_30MHz/30)
962   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via5_irq_w))
963
964   MCFG_DEVICE_ADD(M6522_6_TAG, VIA6522, XTAL_30MHz/30)
965   MCFG_VIA6522_READPA_HANDLER(READ8(victor9k_state, via6_pa_r))
966   MCFG_VIA6522_READPB_HANDLER(READ8(victor9k_state, via6_pb_r))
967   MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor9k_state, via6_pa_w))
968   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via6_pb_w))
969   MCFG_VIA6522_CA2_HANDLER(WRITELINE(victor9k_state, drw_w))
970   MCFG_VIA6522_CB2_HANDLER(WRITELINE(victor9k_state, erase_w))
971   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via6_irq_w))
972
973   MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":0", victor9k_floppies, "525qd", floppy_image_device::default_floppy_formats)
974   MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":1", victor9k_floppies, "525qd", floppy_image_device::default_floppy_formats)
975
976493   MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL)
977494   MCFG_RS232_RXD_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, rxa_w))
978495   MCFG_RS232_DCD_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, dcda_w))
r241752r241753
991508   MCFG_VICTOR9K_KBRDY_HANDLER(WRITELINE(victor9k_state, kbrdy_w))
992509   MCFG_VICTOR9K_KBDATA_HANDLER(WRITELINE(victor9k_state, kbdata_w))
993510
511   MCFG_DEVICE_ADD(FDC_TAG, VICTOR_9000_FDC, 0)
512   MCFG_VICTOR_9000_FDC_IRQ_CB(WRITELINE(victor9k_state, fdc_irq_w))
513   MCFG_VICTOR_9000_FDC_SYN_CB(DEVWRITELINE(I8259A_TAG, pic8259_device, ir0_w)) MCFG_DEVCB_XOR(1)
514   MCFG_VICTOR_9000_FDC_LBRDY_CB(INPUTLINE(I8088_TAG, INPUT_LINE_TEST)) MCFG_DEVCB_XOR(1)
515
994516   // internal ram
995517   MCFG_RAM_ADD(RAM_TAG)
996518   MCFG_RAM_DEFAULT_SIZE("128K")
r241752r241753
1019541   ROM_SYSTEM_BIOS( 1, "univ", "Universal" )
1020542   ROMX_LOAD( "v9000 univ. fe f3f7 13db.7j", 0x0000, 0x1000, CRC(25c7a59f) SHA1(8784e9aa7eb9439f81e18b8e223c94714e033911), ROM_BIOS(2) )
1021543   ROMX_LOAD( "v9000 univ. ff f3f7 39fe.8j", 0x1000, 0x1000, CRC(496c7467) SHA1(eccf428f62ef94ab85f4a43ba59ae6a066244a66), ROM_BIOS(2) )
1022
1023   ROM_REGION( 0x400, I8048_TAG, 0)
1024   ROM_LOAD( "36080.5d", 0x000, 0x400, CRC(9bf49f7d) SHA1(b3a11bb65105db66ae1985b6f482aab6ea1da38b) )
1025
1026   ROM_REGION( 0x800, "gcr", 0 )
1027   ROM_LOAD( "100836-001.4k", 0x000, 0x800, CRC(adc601bd) SHA1(6eeff3d2063ae2d97452101aa61e27ef83a467e5) )
1028544ROM_END
1029545
1030546
trunk/src/mess/drivers/wangpc.c
r241752r241753
11271127   MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", wangpc_floppies, "525dd", wangpc_state::floppy_formats)
11281128   MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", wangpc_floppies, "525dd", wangpc_state::floppy_formats)
11291129
1130   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
1130   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
11311131   MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in")
11321132   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(wangpc_state, write_centronics_ack))
11331133   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(wangpc_state, write_centronics_busy))
trunk/src/mess/drivers/wswan.c
r241752r241753
3535#include "wswan.lh"
3636
3737static ADDRESS_MAP_START (wswan_mem, AS_PROGRAM, 8, wswan_state)
38   AM_RANGE(0x00000, 0x03fff) AM_RAM       // 16kb RAM / 4 colour tiles
38   AM_RANGE(0x00000, 0x03fff) AM_DEVREADWRITE("vdp", wswan_video_device, vram_r, vram_w)       // 16kb RAM / 4 colour tiles
3939   AM_RANGE(0x04000, 0x0ffff) AM_NOP       // nothing
4040   //AM_RANGE(0x10000, 0xeffff)    // cart range, setup at machine_start
4141   AM_RANGE(0xf0000, 0xfffff) AM_READ(bios_r)
4242ADDRESS_MAP_END
4343
4444static ADDRESS_MAP_START (wscolor_mem, AS_PROGRAM, 8, wswan_state)
45   AM_RANGE(0x00000, 0x0ffff) AM_RAM       // 16kb RAM / 4 colour tiles, 16 colour tiles + palettes
45   AM_RANGE(0x00000, 0x0ffff) AM_DEVREADWRITE("vdp", wswan_video_device, vram_r, vram_w)       // 16kb RAM / 4 colour tiles, 16 colour tiles + palettes
4646   //AM_RANGE(0x10000, 0xeffff)    // cart range, setup at machine_start
4747   AM_RANGE(0xf0000, 0xfffff) AM_READ(bios_r)
4848ADDRESS_MAP_END
r241752r241753
8383   }
8484}
8585
86PALETTE_INIT_MEMBER(wswan_state,wscolor)
86PALETTE_INIT_MEMBER(wswan_state, wscolor)
8787{
8888   for (int i = 0; i < 4096; i++)
8989   {
r241752r241753
9595}
9696
9797static SLOT_INTERFACE_START(wswan_cart)
98   SLOT_INTERFACE_INTERNAL("ws_rom",         WS_ROM_STD)
99   SLOT_INTERFACE_INTERNAL("ws_sram",        WS_ROM_SRAM)
100   SLOT_INTERFACE_INTERNAL("ws_eeprom",      WS_ROM_EEPROM)
98   SLOT_INTERFACE_INTERNAL("ws_rom",     WS_ROM_STD)
99   SLOT_INTERFACE_INTERNAL("ws_sram",    WS_ROM_SRAM)
100   SLOT_INTERFACE_INTERNAL("ws_eeprom",  WS_ROM_EEPROM)
101101SLOT_INTERFACE_END
102102
103103static MACHINE_CONFIG_START( wswan, wswan_state )
r241752r241753
106106   MCFG_CPU_PROGRAM_MAP(wswan_mem)
107107   MCFG_CPU_IO_MAP(wswan_io)
108108
109   MCFG_DEVICE_ADD("vdp", WSWAN_VIDEO, 0)
110   MCFG_WSWAN_VIDEO_TYPE(VDP_TYPE_WSWAN)
111   MCFG_WSWAN_VIDEO_IRQ_CB(wswan_state, set_irq_line)
112   MCFG_WSWAN_VIDEO_DMASND_CB(wswan_state, dma_sound_cb)
113
109114   MCFG_SCREEN_ADD("screen", LCD)
110115   MCFG_SCREEN_REFRESH_RATE(75)
111116   MCFG_SCREEN_VBLANK_TIME(0)
112   MCFG_SCREEN_UPDATE_DRIVER(wswan_state, screen_update)
113   MCFG_SCREEN_SIZE( WSWAN_X_PIXELS, WSWAN_Y_PIXELS )
117   MCFG_SCREEN_UPDATE_DEVICE("vdp", wswan_video_device, screen_update)
118   MCFG_SCREEN_SIZE(WSWAN_X_PIXELS, WSWAN_Y_PIXELS)
114119   MCFG_SCREEN_VISIBLE_AREA(0*8, WSWAN_X_PIXELS - 1, 0, WSWAN_Y_PIXELS - 1)
115120   MCFG_SCREEN_PALETTE("palette")
116121
r241752r241753
141146static MACHINE_CONFIG_DERIVED( wscolor, wswan )
142147   MCFG_CPU_MODIFY("maincpu")
143148   MCFG_CPU_PROGRAM_MAP(wscolor_mem)
144   MCFG_MACHINE_START_OVERRIDE(wswan_state, wscolor )
149   MCFG_MACHINE_START_OVERRIDE(wswan_state, wscolor)
145150
151   MCFG_DEVICE_MODIFY("vdp")
152   MCFG_WSWAN_VIDEO_TYPE(VDP_TYPE_WSC)
153
146154   MCFG_PALETTE_MODIFY("palette")
147155   MCFG_PALETTE_ENTRIES(4096)
148   MCFG_PALETTE_INIT_OWNER(wswan_state, wscolor )
156   MCFG_PALETTE_INIT_OWNER(wswan_state, wscolor)
149157
150158   /* software lists */
151159   MCFG_DEVICE_REMOVE("cart_list")
trunk/src/mess/drivers/x07.c
r241752r241753
15131513   MCFG_GENERIC_LOAD(x07_state, x07_card)
15141514
15151515   /* cassette */
1516   MCFG_CASSETTE_ADD( "cassette" )
1516   MCFG_CASSETTE_ADD("cassette")
15171517   MCFG_CASSETTE_FORMATS(x07_cassette_formats)
15181518   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
15191519   MCFG_CASSETTE_INTERFACE("x07_cass")
15201520
15211521   /* Software lists */
15221522   MCFG_SOFTWARE_LIST_ADD("card_list", "x07_card")
1523   MCFG_SOFTWARE_LIST_ADD("cass_list", "x07_cass")
15231524MACHINE_CONFIG_END
15241525
15251526/* ROM definition */
trunk/src/mess/drivers/xerox820.c
r241752r241753
2525    - Xerox 16/8
2626    - Emerald Microware X120 board
2727    - type in Monitor v1.0 from manual
28    - proper keyboard emulation (MCU?)
28    - ASCII keyboard
29    - low-profile keyboard
2930
3031    http://users.telenet.be/lust/Xerox820/index.htm
3132    http://www.classiccmp.org/dunfield/img41867/system.htm
r241752r241753
3839
3940
4041#include "includes/xerox820.h"
41#include "bus/rs232/rs232.h"
4242
43#define KEYBOARD_TAG "keyboard"
44
4543/* Read/Write Handlers */
4644
4745void xerox820_state::bankswitch(int bank)
r241752r241753
7169   if (bank)
7270   {
7371      /* ROM */
74      program.install_rom(0x0000, 0x17ff, m_rom->base());
75      program.unmap_readwrite(0x1800, 0x2fff);
72      program.install_rom(0x0000, 0x1fff, m_rom->base());
73      program.unmap_readwrite(0x2000, 0x2fff);
7674      program.install_ram(0x3000, 0x3fff, m_video_ram);
7775      program.unmap_readwrite(0x4000, 0xbfff);
7876   }
r241752r241753
319317
320318   */
321319
322   return m_keydata;
320   return m_kb->read() ^ 0xff;
323321};
324322
325323WRITE8_MEMBER( xerox820ii_state::rdpio_pb_w )
r241752r241753
406404   m_sio->txca_w(state);
407405}
408406
409WRITE8_MEMBER( xerox820_state::kbd_w )
410{
411   m_keydata = ~data;
412
413   /* strobe in keyboard data */
414   m_kbpio->strobe_b(0);
415   m_kbpio->strobe_b(1);
416}
417
418407/* Video */
419408
420409UINT32 xerox820_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
r241752r241753
469458void xerox820_state::machine_start()
470459{
471460   // state saving
472   save_item(NAME(m_keydata));
473461   save_item(NAME(m_scroll));
474462   save_item(NAME(m_ncset2));
475463   save_item(NAME(m_vatt));
r241752r241753
626614   MCFG_COM8116_FR_HANDLER(WRITELINE(xerox820_state, fr_w))
627615   MCFG_COM8116_FT_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxtxcb_w))
628616
629   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
630   MCFG_GENERIC_KEYBOARD_CB(WRITE8(xerox820_state, kbd_w))
617   MCFG_DEVICE_ADD(KEYBOARD_TAG, XEROX_820_KEYBOARD, 0)
618   MCFG_XEROX_820_KEYBOARD_KBSTB_CALLBACK(DEVWRITELINE(Z80PIO_KB_TAG, z80pio_device, strobe_b))
631619
632620   /* internal ram */
633621   MCFG_RAM_ADD(RAM_TAG)
r241752r241753
713701   MCFG_COM8116_FR_HANDLER(WRITELINE(xerox820_state, fr_w))
714702   MCFG_COM8116_FT_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxtxcb_w))
715703
716   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
717   MCFG_GENERIC_KEYBOARD_CB(WRITE8(xerox820_state, kbd_w))
704   MCFG_DEVICE_ADD(KEYBOARD_TAG, XEROX_820_KEYBOARD, 0)
705   MCFG_XEROX_820_KEYBOARD_KBSTB_CALLBACK(DEVWRITELINE(Z80PIO_KB_TAG, z80pio_device, strobe_b))
718706
719707   // SASI bus
720708   MCFG_DEVICE_ADD(SASIBUS_TAG, SCSI_PORT, 0)
r241752r241753
758746
759747ROM_START( bigboard )
760748   ROM_REGION( 0x1000, Z80_TAG, 0 )
761   ROM_LOAD( "bigboard.u67", 0x0000, 0x0800, CRC(5a85a228) SHA1(d51a2cbd0aae80315bda9530275aabfe8305364e))
749   ROM_LOAD( "bigboard.u67", 0x0000, 0x0800, CRC(5a85a228) SHA1(d51a2cbd0aae80315bda9530275aabfe8305364e) )
762750
763751   ROM_REGION( 0x800, "chargen", 0 )
764752   ROM_LOAD( "bigboard.u73", 0x0000, 0x0800, CRC(10bf0d81) SHA1(7ec73670a4d9d6421a5d6a4c4edc8b7c87923f6c) )
r241752r241753
784772
785773   ROM_REGION( 0x800, "chargen", 0 )
786774   ROM_LOAD( "x820.u92", 0x0000, 0x0800, CRC(b823fa98) SHA1(ad0ea346aa257a53ad5701f4201896a2b3a0f928) )
787
788   ROM_REGION( 0x800, "keyboard", 0 )
789   ROM_LOAD( "keyboard", 0x0000, 0x0800, NO_DUMP )
790775ROM_END
791776
792777ROM_START( x820ii )
793   ROM_REGION( 0x1800, Z80_TAG, 0 )
778   ROM_REGION( 0x2000, Z80_TAG, 0 )
794779   ROM_DEFAULT_BIOS( "v404" )
795   ROM_SYSTEM_BIOS( 0, "v404", "Balcones Operating System v4.04" )
796   ROMX_LOAD( "537p3652.u33", 0x0000, 0x0800, CRC(7807cfbb) SHA1(bd3cc5cc5c59c84a50747aae5c17eb4617b0dbc3), ROM_BIOS(1) )
797   ROMX_LOAD( "537p3653.u34", 0x0800, 0x0800, CRC(a9c6c0c3) SHA1(c2da9d1bf0da96e6b8bfa722783e411d2fe6deb9), ROM_BIOS(1) )
798   ROMX_LOAD( "537p3654.u35", 0x1000, 0x0800, CRC(a8a07223) SHA1(e8ae1ebf2d7caf76771205f577b88ae493836ac9), ROM_BIOS(1) )
780   ROM_SYSTEM_BIOS( 0, "v400", "Balcones Operating System v4.00" ) // Initial U.S. 3-ROM set: support for double density disks
781   ROMX_LOAD( "v400.u33", 0x0000, 0x0800, NO_DUMP, ROM_BIOS(1) )
782   ROMX_LOAD( "v400.u34", 0x0800, 0x0800, NO_DUMP, ROM_BIOS(1) )
783   ROMX_LOAD( "v400.u35", 0x1000, 0x0800, NO_DUMP, ROM_BIOS(1) )
784   ROM_SYSTEM_BIOS( 1, "v401", "Balcones Operating System v4.01" ) // Corrected overflow problem with large data files
785   ROMX_LOAD( "v401.u33", 0x0000, 0x0800, NO_DUMP, ROM_BIOS(2) )
786   ROMX_LOAD( "v401.u34", 0x0800, 0x0800, NO_DUMP, ROM_BIOS(2) )
787   ROMX_LOAD( "v401.u35", 0x1000, 0x0800, NO_DUMP, ROM_BIOS(2) )
788   ROM_SYSTEM_BIOS( 2, "v402", "Balcones Operating System v4.02" ) // Rank Xerox (European) boot ROM version of US 4.01
789   ROMX_LOAD( "v402.u33", 0x0000, 0x0800, NO_DUMP, ROM_BIOS(3) )
790   ROMX_LOAD( "v402.u34", 0x0800, 0x0800, NO_DUMP, ROM_BIOS(3) )
791   ROMX_LOAD( "v402.u35", 0x1000, 0x0800, NO_DUMP, ROM_BIOS(3) )
792   ROM_SYSTEM_BIOS( 3, "v403", "Balcones Operating System v4.03" ) // Incorporate programmable communications option and support for the low-profile keyboard (4-ROM set and type-ahead input buffer)
793   ROMX_LOAD( "v403.u33", 0x0000, 0x0800, NO_DUMP, ROM_BIOS(4) )
794   ROMX_LOAD( "v403.u34", 0x0800, 0x0800, NO_DUMP, ROM_BIOS(4) )
795   ROMX_LOAD( "v403.u35", 0x1000, 0x0800, NO_DUMP, ROM_BIOS(4) )
796   ROMX_LOAD( "v403.u36", 0x1800, 0x0800, NO_DUMP, ROM_BIOS(4) )
797   ROM_SYSTEM_BIOS( 4, "v404", "Balcones Operating System v4.04" ) // Changes sign-on message from Xerox 820-II to Xerox
798   ROMX_LOAD( "537p3652.u33", 0x0000, 0x0800, CRC(7807cfbb) SHA1(bd3cc5cc5c59c84a50747aae5c17eb4617b0dbc3), ROM_BIOS(5) )
799   ROMX_LOAD( "537p3653.u34", 0x0800, 0x0800, CRC(a9c6c0c3) SHA1(c2da9d1bf0da96e6b8bfa722783e411d2fe6deb9), ROM_BIOS(5) )
800   ROMX_LOAD( "537p3654.u35", 0x1000, 0x0800, CRC(a8a07223) SHA1(e8ae1ebf2d7caf76771205f577b88ae493836ac9), ROM_BIOS(5) )
801   ROMX_LOAD( "v404.u36", 0x1800, 0x0800, NO_DUMP, ROM_BIOS(5) ) // fitted for low-profile keyboard only
802   ROM_SYSTEM_BIOS( 5, "v50", "Balcones Operating System v5.0" ) // Operating system modifications for DEM and new 5.25" disk controller (4 new boot ROMs)
803   ROMX_LOAD( "v50.u33", 0x0000, 0x0800, NO_DUMP, ROM_BIOS(6) )
804   ROMX_LOAD( "v50.u34", 0x0800, 0x0800, NO_DUMP, ROM_BIOS(6) )
805   ROMX_LOAD( "v50.u35", 0x1000, 0x0800, NO_DUMP, ROM_BIOS(6) )
806   ROMX_LOAD( "v50.u36", 0x1800, 0x0800, NO_DUMP, ROM_BIOS(6) ) // fitted for low-profile keyboard only
799807
800808   ROM_REGION( 0x1000, "chargen", 0 )
801809   ROM_LOAD( "x820ii.u57", 0x0000, 0x0800, CRC(1a50f600) SHA1(df4470c80611c14fa7ea8591f741fbbecdfe4fd9) )
802810   ROM_LOAD( "x820ii.u58", 0x0800, 0x0800, CRC(aca4b9b3) SHA1(77f41470b0151945b8d3c3a935fc66409e9157b3) )
803
804   ROM_REGION( 0x400, "keyboard", 0 )
805   ROM_LOAD( "820iikey.bin", 0x000, 0x400, CRC(8ea3b39b) SHA1(3f05959f54a558b273567b1b4f0c7cdf46d8d9bf) )
806811ROM_END
807812
808813ROM_START( x168 )
809   ROM_REGION( 0x1800, Z80_TAG, 0 )
814   ROM_REGION( 0x2000, Z80_TAG, 0 )
810815   ROM_DEFAULT_BIOS( "v404" )
811   ROM_SYSTEM_BIOS( 0, "v404", "Balcones Operating System v4.04" )
816   ROM_SYSTEM_BIOS( 0, "v404", "Balcones Operating System v4.04" ) // Changes sign-on message from Xerox 820-II to Xerox
812817   ROMX_LOAD( "537p3652.u33", 0x0000, 0x0800, CRC(7807cfbb) SHA1(bd3cc5cc5c59c84a50747aae5c17eb4617b0dbc3), ROM_BIOS(1) )
813818   ROMX_LOAD( "537p3653.u34", 0x0800, 0x0800, CRC(a9c6c0c3) SHA1(c2da9d1bf0da96e6b8bfa722783e411d2fe6deb9), ROM_BIOS(1) )
814819   ROMX_LOAD( "537p3654.u35", 0x1000, 0x0800, CRC(a8a07223) SHA1(e8ae1ebf2d7caf76771205f577b88ae493836ac9), ROM_BIOS(1) )
820   ROMX_LOAD( "v404.u36", 0x1800, 0x0800, NO_DUMP, ROM_BIOS(1) ) // fitted for low-profile keyboard only
821   ROM_SYSTEM_BIOS( 1, "v50", "Balcones Operating System v5.0" ) // Operating system modifications for DEM and new 5.25" disk controller (4 new boot ROMs)
822   ROMX_LOAD( "v50.u33", 0x0000, 0x0800, NO_DUMP, ROM_BIOS(2) )
823   ROMX_LOAD( "v50.u34", 0x0800, 0x0800, NO_DUMP, ROM_BIOS(2) )
824   ROMX_LOAD( "v50.u35", 0x1000, 0x0800, NO_DUMP, ROM_BIOS(2) )
825   ROMX_LOAD( "v50.u36", 0x1800, 0x0800, NO_DUMP, ROM_BIOS(2) ) // fitted for low-profile keyboard only
815826
816827   ROM_REGION( 0x1000, I8086_TAG, 0 )
817828   ROM_LOAD( "8086.u33", 0x0000, 0x1000, CRC(ee49e3dc) SHA1(a5f20c74fc53f9d695d8894534ab69a39e2c38d8) )
r241752r241753
819830   ROM_REGION( 0x1000, "chargen", 0 )
820831   ROM_LOAD( "x820ii.u57", 0x0000, 0x0800, CRC(1a50f600) SHA1(df4470c80611c14fa7ea8591f741fbbecdfe4fd9) )
821832   ROM_LOAD( "x820ii.u58", 0x0800, 0x0800, CRC(aca4b9b3) SHA1(77f41470b0151945b8d3c3a935fc66409e9157b3) )
822
823   ROM_REGION( 0x400, "keyboard", 0 )
824   ROM_LOAD( "820iikey.bin", 0x000, 0x400, CRC(8ea3b39b) SHA1(3f05959f54a558b273567b1b4f0c7cdf46d8d9bf) )
825833ROM_END
826834
827835ROM_START( mk83 )
828836   ROM_REGION( 0x1000, Z80_TAG, 0 )
829   ROM_LOAD( "2732mk83.bin", 0x0000, 0x1000, CRC(a845c7e1) SHA1(3ccf629c5cd384953794ac4a1d2b45678bd40e92))
837   ROM_LOAD( "2732mk83.bin", 0x0000, 0x1000, CRC(a845c7e1) SHA1(3ccf629c5cd384953794ac4a1d2b45678bd40e92) )
838
830839   ROM_REGION( 0x800, "chargen", 0 )
831   ROM_LOAD( "2716mk83.bin", 0x0000, 0x0800, CRC(10bf0d81) SHA1(7ec73670a4d9d6421a5d6a4c4edc8b7c87923f6c))
840   ROM_LOAD( "2716mk83.bin", 0x0000, 0x0800, CRC(10bf0d81) SHA1(7ec73670a4d9d6421a5d6a4c4edc8b7c87923f6c) )
832841ROM_END
833842
834843/* System Drivers */
835844
836845/*    YEAR  NAME        PARENT      COMPAT  MACHINE     INPUT       INIT    COMPANY                         FULLNAME        FLAGS */
837COMP( 1980, bigboard,   0,          0,      bigboard,   xerox820, driver_device,   0,      "Digital Research Computers",   "Big Board",     GAME_IMPERFECT_KEYBOARD )
838COMP( 1981, x820,       bigboard,   0,      xerox820,   xerox820, driver_device,   0,      "Xerox",                        "Xerox 820",     GAME_IMPERFECT_KEYBOARD | GAME_NO_SOUND_HW )
839COMP( 1982, mk82,       bigboard,   0,      bigboard,   xerox820, driver_device,   0,      "Scomar",                       "MK-82",         GAME_IMPERFECT_KEYBOARD )
840COMP( 1983, x820ii,     0,          0,      xerox820ii, xerox820, driver_device,   0,      "Xerox",                        "Xerox 820-II",  GAME_NOT_WORKING | GAME_IMPERFECT_KEYBOARD )
841COMP( 1983, x168,       x820ii,     0,      xerox168,   xerox820, driver_device,   0,      "Xerox",                        "Xerox 16/8",    GAME_NOT_WORKING | GAME_IMPERFECT_KEYBOARD )
842COMP( 1983, mk83,       x820ii,     0,      mk83,       xerox820, driver_device,   0,      "Scomar",                       "MK-83",         GAME_NOT_WORKING | GAME_IMPERFECT_KEYBOARD | GAME_NO_SOUND_HW )
846COMP( 1980, bigboard,   0,          0,      bigboard,   xerox820, driver_device,   0,      "Digital Research Computers",   "Big Board",     0 )
847COMP( 1981, x820,       bigboard,   0,      xerox820,   xerox820, driver_device,   0,      "Xerox",                        "Xerox 820",     GAME_NO_SOUND_HW )
848COMP( 1982, mk82,       bigboard,   0,      bigboard,   xerox820, driver_device,   0,      "Scomar",                       "MK-82",         0 )
849COMP( 1983, x820ii,     0,          0,      xerox820ii, xerox820, driver_device,   0,      "Xerox",                        "Xerox 820-II",  GAME_NOT_WORKING )
850COMP( 1983, x168,       x820ii,     0,      xerox168,   xerox820, driver_device,   0,      "Xerox",                        "Xerox 16/8",    GAME_NOT_WORKING )
851COMP( 1983, mk83,       x820ii,     0,      mk83,       xerox820, driver_device,   0,      "Scomar",                       "MK-83",         GAME_NOT_WORKING | GAME_NO_SOUND_HW )
trunk/src/mess/drivers/xor100.c
r241752r241753
558558   MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":2", xor100_floppies, NULL,    floppy_image_device::default_floppy_formats)
559559   MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":3", xor100_floppies, NULL,    floppy_image_device::default_floppy_formats)
560560
561   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
561   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
562562   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(I8255A_TAG, i8255_device, pc4_w))
563563   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(xor100_state, write_centronics_busy))
564564   MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(xor100_state, write_centronics_select))
trunk/src/mess/includes/amstrad.h
r241752r241753
2222#include "bus/cpc/cpc_rs232.h"
2323#include "bus/cpc/symbfac2.h"
2424#include "bus/cpc/amdrum.h"
25#include "bus/cpc/playcity.h"
2526#include "machine/ram.h"
2627#include "imagedev/cassette.h"
2728#include "bus/centronics/ctronics.h"
trunk/src/mess/includes/at.h
r241752r241753
1717#include "machine/ins8250.h"
1818#include "machine/mc146818.h"
1919#include "machine/pic8259.h"
20#include "bus/pci/i82371ab.h"
21#include "bus/pci/i82371sb.h"
22#include "bus/pci/i82439tx.h"
20#include "bus/lpci/i82371ab.h"
21#include "bus/lpci/i82371sb.h"
22#include "bus/lpci/i82439tx.h"
2323#include "machine/cs8221.h"
2424#include "machine/pit8253.h"
2525#include "machine/wd7600.h"
r241752r241753
2929
3030#include "imagedev/harddriv.h"
3131#include "machine/am9517a.h"
32#include "bus/pci/pci.h"
32#include "bus/lpci/pci.h"
3333
3434#include "sound/dac.h"
3535#include "sound/speaker.h"
trunk/src/mess/includes/mc1502.h
r241752r241753
5959      emu_timer   *keyb_signal_timer;
6060   } m_kbd;
6161
62   UINT8                   m_ppi_portb;
63   UINT8                   m_ppi_portc;
64   UINT8 m_mc1502_spkrdata;
65   UINT8 m_mc1502_input;
62   UINT8 m_ppi_portb;
63   UINT8 m_ppi_portc;
64   UINT8 m_spkrdata;
6665
6766   DECLARE_WRITE_LINE_MEMBER(mc1502_pit8253_out1_changed);
6867   DECLARE_WRITE_LINE_MEMBER(mc1502_pit8253_out2_changed);
trunk/src/mess/includes/sorcerer.h
r241752r241753
1313#include "sound/wave.h"
1414#include "machine/ay31015.h"
1515#include "bus/centronics/ctronics.h"
16#include "bus/centronics/covox.h"
1716#include "machine/ram.h"
1817#include "imagedev/cassette.h"
1918#include "imagedev/snapquik.h"
trunk/src/mess/includes/ti85.h
r241752r241753
8686   UINT8 m_ON_interrupt_status;
8787   UINT8 m_ON_pressed;
8888   UINT8 m_flash_unlocked;
89   UINT8 m_ti8x_memory_page_0;
9089   UINT8 m_ti8x_memory_page_1;
9190   UINT8 m_ti8x_memory_page_2;
9291   UINT8 m_ti8x_memory_page_3;
92   bool m_booting;
9393   UINT8 m_LCD_mask;
9494   UINT8 m_power_mode;
9595   UINT8 m_cpu_speed;
r241752r241753
217217   void ti85_setup_snapshot (UINT8 * data);
218218   void ti86_setup_snapshot (UINT8 * data);
219219   DECLARE_SNAPSHOT_LOAD_MEMBER( ti8x );
220   DECLARE_DIRECT_UPDATE_MEMBER( ti83p_direct_update_handler );
220221   
221222   ti83pse_timer m_ctimer[3];
222223   
trunk/src/mess/includes/victor9k.h
r241752r241753
1616
1717#include "bus/rs232/rs232.h"
1818#include "cpu/i86/i86.h"
19#include "cpu/mcs48/mcs48.h"
19#include "formats/victor9k_dsk.h"
2020#include "imagedev/floppy.h"
2121#include "machine/ram.h"
2222#include "bus/centronics/ctronics.h"
r241752r241753
2727#include "machine/pic8259.h"
2828#include "machine/z80dart.h"
2929#include "machine/victor9kb.h"
30#include "machine/victor9k_fdc.h"
3031#include "sound/hc55516.h"
3132#include "video/mc6845.h"
3233
3334#define I8088_TAG       "8l"
34#define I8048_TAG       "5d"
3535#define I8253_TAG       "13h"
3636#define I8259A_TAG      "7l"
3737#define UPD7201_TAG     "16e"
r241752r241753
4141#define M6522_1_TAG     "m6522_1"
4242#define M6522_2_TAG     "m6522_2"
4343#define M6522_3_TAG     "14l"
44#define M6522_4_TAG     "1f"
45#define M6522_5_TAG     "1k"
46#define M6522_6_TAG     "1h"
4744#define DAC0808_0_TAG   "5b"
4845#define DAC0808_1_TAG   "5c"
4946#define CENTRONICS_TAG  "centronics"
r241752r241753
5148#define RS232_B_TAG     "rs232b"
5249#define SCREEN_TAG      "screen"
5350#define VICTOR9K_KEYBOARD_TAG   "victor9kb"
51#define FDC_TAG         "fdc"
5452
5553class victor9k_state : public driver_device
5654{
5755public:
58   victor9k_state(const machine_config &mconfig, device_type type, const char *tag)
59      : driver_device(mconfig, type, tag),
60         m_maincpu(*this, I8088_TAG),
61         m_fdc_cpu(*this, I8048_TAG),
62         m_ieee488(*this, IEEE488_TAG),
63         m_pic(*this, I8259A_TAG),
64         m_upd7201(*this, UPD7201_TAG),
65         m_ssda(*this, MC6852_TAG),
66         m_via1(*this, M6522_1_TAG),
67         m_via2(*this, M6522_2_TAG),
68         m_via3(*this, M6522_3_TAG),
69         m_via4(*this, M6522_4_TAG),
70         m_via5(*this, M6522_5_TAG),
71         m_via6(*this, M6522_6_TAG),
72         m_cvsd(*this, HC55516_TAG),
73         m_crtc(*this, HD46505S_TAG),
74         m_ram(*this, RAM_TAG),
75         m_floppy0(*this, I8048_TAG":0:525qd"),
76         m_floppy1(*this, I8048_TAG":1:525qd"),
77         m_kb(*this, VICTOR9K_KEYBOARD_TAG),
78         m_rs232a(*this, RS232_A_TAG),
79         m_rs232b(*this, RS232_B_TAG),
80         m_video_ram(*this, "video_ram"),
81         m_da(0),
82         m_da0(0),
83         m_da1(0),
84         m_sel0(0),
85         m_sel1(0),
86         m_tach0(0),
87         m_tach1(0),
88         m_rdy0(0),
89         m_rdy1(0),
90         m_ds0(1),
91         m_ds1(1),
92         m_lms(0),
93         m_brdy(1),
94         m_sync(1),
95         m_gcrerr(0),
96         m_palette(*this, "palette")
56   victor9k_state(const machine_config &mconfig, device_type type, const char *tag) :
57      driver_device(mconfig, type, tag),
58      m_maincpu(*this, I8088_TAG),
59      m_ieee488(*this, IEEE488_TAG),
60      m_pic(*this, I8259A_TAG),
61      m_upd7201(*this, UPD7201_TAG),
62      m_ssda(*this, MC6852_TAG),
63      m_via1(*this, M6522_1_TAG),
64      m_via2(*this, M6522_2_TAG),
65      m_via3(*this, M6522_3_TAG),
66      m_cvsd(*this, HC55516_TAG),
67      m_crtc(*this, HD46505S_TAG),
68      m_ram(*this, RAM_TAG),
69      m_kb(*this, VICTOR9K_KEYBOARD_TAG),
70      m_fdc(*this, FDC_TAG),
71      m_rs232a(*this, RS232_A_TAG),
72      m_rs232b(*this, RS232_B_TAG),
73      m_palette(*this, "palette"),
74      m_video_ram(*this, "video_ram"),
75      m_brt(0),
76      m_cont(0),
77      m_via1_irq(CLEAR_LINE),
78      m_via2_irq(CLEAR_LINE),
79      m_via3_irq(CLEAR_LINE),
80      m_fdc_irq(CLEAR_LINE),
81      m_ssda_irq(CLEAR_LINE)
9782   { }
9883
9984   required_device<cpu_device> m_maincpu;
100   required_device<cpu_device> m_fdc_cpu;
10185   required_device<ieee488_device> m_ieee488;
10286   required_device<pic8259_device> m_pic;
10387   required_device<upd7201_device> m_upd7201;
r241752r241753
10589   required_device<via6522_device> m_via1;
10690   required_device<via6522_device> m_via2;
10791   required_device<via6522_device> m_via3;
108   required_device<via6522_device> m_via4;
109   required_device<via6522_device> m_via5;
110   required_device<via6522_device> m_via6;
11192   required_device<hc55516_device> m_cvsd;
11293   required_device<mc6845_device> m_crtc;
11394   required_device<ram_device> m_ram;
114   required_device<floppy_image_device> m_floppy0;
115   required_device<floppy_image_device> m_floppy1;
11695   required_device<victor9k_keyboard_device> m_kb;
96   required_device<victor_9000_fdc_t> m_fdc;
11797   required_device<rs232_port_device> m_rs232a;
11898   required_device<rs232_port_device> m_rs232b;
99   required_device<palette_device> m_palette;
100   required_shared_ptr<UINT8> m_video_ram;
119101
120102   virtual void machine_start();
103   virtual void machine_reset();
121104
122   DECLARE_READ8_MEMBER( floppy_p1_r );
123   DECLARE_READ8_MEMBER( floppy_p2_r );
124   DECLARE_WRITE8_MEMBER( floppy_p2_w );
125   DECLARE_READ8_MEMBER( tach0_r );
126   DECLARE_READ8_MEMBER( tach1_r );
127   DECLARE_WRITE8_MEMBER( da_w );
128
129105   DECLARE_WRITE8_MEMBER( via1_pa_w );
130106   DECLARE_WRITE_LINE_MEMBER( write_nfrd );
131107   DECLARE_WRITE_LINE_MEMBER( write_ndac );
r241752r241753
142118   DECLARE_WRITE8_MEMBER( via3_pb_w );
143119   DECLARE_WRITE_LINE_MEMBER( via3_irq_w );
144120
145   DECLARE_WRITE8_MEMBER( via4_pa_w );
146   DECLARE_WRITE8_MEMBER( via4_pb_w );
147   DECLARE_WRITE_LINE_MEMBER( mode_w );
148   DECLARE_WRITE_LINE_MEMBER( via4_irq_w );
121   DECLARE_WRITE_LINE_MEMBER( fdc_irq_w );
149122
150   DECLARE_WRITE8_MEMBER( via5_pb_w );
151   DECLARE_WRITE_LINE_MEMBER( via5_irq_w );
123   DECLARE_WRITE_LINE_MEMBER( ssda_irq_w );
152124
153   DECLARE_READ8_MEMBER( via6_pa_r );
154   DECLARE_READ8_MEMBER( via6_pb_r );
155   DECLARE_WRITE8_MEMBER( via6_pa_w );
156   DECLARE_WRITE8_MEMBER( via6_pb_w );
157   DECLARE_WRITE_LINE_MEMBER( drw_w );
158   DECLARE_WRITE_LINE_MEMBER( erase_w );
159125   DECLARE_WRITE_LINE_MEMBER( kbrdy_w );
160126   DECLARE_WRITE_LINE_MEMBER( kbdata_w );
161127   DECLARE_WRITE_LINE_MEMBER( vert_w );
162   DECLARE_WRITE_LINE_MEMBER( via6_irq_w );
163128
164   DECLARE_WRITE_LINE_MEMBER( ssda_irq_w );
165129   MC6845_UPDATE_ROW( crtc_update_row );
166130
167   void ready0_cb(floppy_image_device *, int device);
168   int load0_cb(floppy_image_device *device);
169   void unload0_cb(floppy_image_device *device);
170   void ready1_cb(floppy_image_device *, int device);
171   int load1_cb(floppy_image_device *device);
172   void unload1_cb(floppy_image_device *device);
173
174   enum
175   {
176      LED_A = 0,
177      LED_B
178   };
179
180131   /* video state */
181   required_shared_ptr<UINT8> m_video_ram;
182132   int m_brt;
183133   int m_cont;
184134
r241752r241753
186136   int m_via1_irq;
187137   int m_via2_irq;
188138   int m_via3_irq;
189   int m_via4_irq;
190   int m_via5_irq;
191   int m_via6_irq;
139   int m_fdc_irq;
192140   int m_ssda_irq;
193141
194   /* floppy state */
195   UINT8 m_da;
196   UINT8 m_da0;
197   UINT8 m_da1;
198   int m_sel0;
199   int m_sel1;
200   int m_tach0;
201   int m_tach1;
202   int m_rdy0;
203   int m_rdy1;
204   int m_ds0;
205   int m_ds1;
206   UINT8 m_lms;                         /* motor speed */
207   int m_st[2];                        /* stepper phase */
208   int m_stp[2];                        /* stepper enable */
209   int m_drive;                        /* selected drive */
210   int m_side;                         /* selected side */
211   int m_brdy;
212   int m_sync;
213   int m_gcrerr;
214
215142   DECLARE_WRITE_LINE_MEMBER(mux_serial_b_w);
216143   DECLARE_WRITE_LINE_MEMBER(mux_serial_a_w);
217   required_device<palette_device> m_palette;
218144};
219145
220146#endif
trunk/src/mess/includes/wswan.h
r241752r241753
1010#define WSWAN_TYPE_MONO 0
1111#define WSWAN_TYPE_COLOR 1
1212
13#define WSWAN_X_PIXELS  (28*8)
14#define WSWAN_Y_PIXELS  (18*8)
15
1613#define INTERNAL_EEPROM_SIZE    1024
1714
1815#include "emu.h"
1916#include "cpu/v30mz/v30mz.h"
20#include "audio/wswan_snd.h"
2117#include "machine/nvram.h"
18#include "audio/wswan_snd.h"
19#include "video/wswan_video.h"
2220#include "bus/wswan/slot.h"
2321#include "bus/wswan/rom.h"
2422
r241752r241753
3028   UINT8   enable;     /* Enabled */
3129};
3230
33struct VDP
34{
35   UINT8 layer_bg_enable;          /* Background layer on/off */
36   UINT8 layer_fg_enable;          /* Foreground layer on/off */
37   UINT8 sprites_enable;           /* Sprites on/off */
38   UINT8 window_sprites_enable;        /* Sprite window on/off */
39   UINT8 window_fg_mode;           /* 0:inside/outside, 1:??, 2:inside, 3:outside */
40   UINT8 current_line;         /* Current scanline : 0-158 (159?) */
41   UINT8 line_compare;         /* Line to trigger line interrupt on */
42   UINT32 sprite_table_address;        /* Address of the sprite table */
43   UINT8 sprite_table_buffer[512];
44   UINT8 sprite_first;         /* First sprite to draw */
45   UINT8 sprite_count;         /* Number of sprites to draw */
46   UINT16 layer_bg_address;        /* Address of the background screen map */
47   UINT16 layer_fg_address;        /* Address of the foreground screen map */
48   UINT8 window_fg_left;           /* Left coordinate of foreground window */
49   UINT8 window_fg_top;            /* Top coordinate of foreground window */
50   UINT8 window_fg_right;          /* Right coordinate of foreground window */
51   UINT8 window_fg_bottom;         /* Bottom coordinate of foreground window */
52   UINT8 window_sprites_left;      /* Left coordinate of sprites window */
53   UINT8 window_sprites_top;       /* Top coordinate of sprites window */
54   UINT8 window_sprites_right;     /* Right coordinate of sprites window */
55   UINT8 window_sprites_bottom;        /* Bottom coordinate of sprites window */
56   UINT8 layer_bg_scroll_x;        /* Background layer X scroll */
57   UINT8 layer_bg_scroll_y;        /* Background layer Y scroll */
58   UINT8 layer_fg_scroll_x;        /* Foreground layer X scroll */
59   UINT8 layer_fg_scroll_y;        /* Foreground layer Y scroll */
60   UINT8 lcd_enable;           /* LCD on/off */
61   UINT8 icons;                /* FIXME: What do we do with these? Maybe artwork? */
62   UINT8 color_mode;           /* monochrome/color mode */
63   UINT8 colors_16;            /* 4/16 colors mode */
64   UINT8 tile_packed;          /* layered/packed tile mode switch */
65   UINT8 timer_hblank_enable;      /* Horizontal blank interrupt on/off */
66   UINT8 timer_hblank_mode;        /* Horizontal blank timer mode */
67   UINT16 timer_hblank_reload;     /* Horizontal blank timer reload value */
68   UINT16 timer_hblank_count;      /* Horizontal blank timer counter value */
69   UINT8 timer_vblank_enable;      /* Vertical blank interrupt on/off */
70   UINT8 timer_vblank_mode;        /* Vertical blank timer mode */
71   UINT16 timer_vblank_reload;     /* Vertical blank timer reload value */
72   UINT16 timer_vblank_count;      /* Vertical blank timer counter value */
73   UINT8 *vram;                /* pointer to start of ram/vram (set by machine_reset) */
74   UINT8 *palette_vram;            /* pointer to start of palette area in ram/vram (set by machine_reset), WSC only */
75   int main_palette[8];
76   emu_timer *timer;
77};
7831
79
8032class wswan_state : public driver_device
8133{
8234public:
8335   wswan_state(const machine_config &mconfig, device_type type, const char *tag)
8436      : driver_device(mconfig, type, tag),
8537      m_maincpu(*this, "maincpu"),
38      m_vdp(*this, "vdp"),
8639      m_sound(*this, "custom"),
8740      m_cart(*this, "cartslot"),
8841      m_cursx(*this, "CURSX"),
8942      m_cursy(*this, "CURSY"),
90      m_buttons(*this, "BUTTONS") { }
91
92   virtual void video_start();
93
94   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
95
43      m_buttons(*this, "BUTTONS")
44   { }
45   
9646   required_device<cpu_device> m_maincpu;
47   required_device<wswan_video_device> m_vdp;
9748   required_device<wswan_sound_device> m_sound;
9849   required_device<ws_cart_slot_device> m_cart;
9950   DECLARE_READ8_MEMBER(bios_r);
10051   DECLARE_READ8_MEMBER(port_r);
10152   DECLARE_WRITE8_MEMBER(port_w);
102
103   VDP m_vdp;
53   
10454   UINT8 m_ws_portram[256];
10555   UINT8 m_internal_eeprom[INTERNAL_EEPROM_SIZE];
10656   UINT8 m_system_type;
10757   SoundDMA m_sound_dma;
108   UINT8 *m_ws_ram;
10958   UINT8 *m_ws_bios_bank;
11059   UINT8 m_bios_disabled;
111   int m_pal[16][16];
112   bitmap_ind16 m_bitmap;
11360   UINT8 m_rotate;
114
115   void wswan_clear_irq_line(int irq);
61   
62   void set_irq_line(int irq);
63   void dma_sound_cb();
11664   void common_start();
11765   virtual void machine_start();
11866   virtual void machine_reset();
11967   DECLARE_PALETTE_INIT(wswan);
12068   DECLARE_MACHINE_START(wscolor);
12169   DECLARE_PALETTE_INIT(wscolor);
122   TIMER_CALLBACK_MEMBER(wswan_scanline_interrupt);
123
70   
12471protected:
12572   /* Interrupt flags */
12673   static const UINT8 WSWAN_IFLAG_STX    = 0x01;
r241752r241753
13178   static const UINT8 WSWAN_IFLAG_VBLTMR = 0x20;
13279   static const UINT8 WSWAN_IFLAG_VBL    = 0x40;
13380   static const UINT8 WSWAN_IFLAG_HBLTMR = 0x80;
134
81   
13582   /* Interrupts */
13683   static const UINT8 WSWAN_INT_STX    = 0;
13784   static const UINT8 WSWAN_INT_KEY    = 1;
r241752r241753
14188   static const UINT8 WSWAN_INT_VBLTMR = 5;
14289   static const UINT8 WSWAN_INT_VBL    = 6;
14390   static const UINT8 WSWAN_INT_HBLTMR = 7;
144
91   
14592   required_ioport m_cursx;
14693   required_ioport m_cursy;
14794   required_ioport m_buttons;
148
149   void wswan_register_save();
150   void wswan_postload();
151   void wswan_handle_irqs();
152   void wswan_set_irq_line(int irq);
153   void wswan_setup_palettes();
154   void wswan_draw_background();
155   void wswan_draw_foreground_0();
156   void wswan_draw_foreground_2();
157   void wswan_draw_foreground_3();
158   void wswan_handle_sprites( int mask );
159   void wswan_refresh_scanline( );
95   
96   void register_save();
97   void handle_irqs();
98   void clear_irq_line(int irq);
16099};
161100
162101
trunk/src/mess/includes/xerox820.h
r241752r241753
55
66#include "emu.h"
77#include "bus/scsi/sa1403d.h"
8#include "bus/rs232/rs232.h"
89#include "cpu/z80/z80.h"
910#include "cpu/z80/z80daisy.h"
1011#include "cpu/i86/i86.h"
1112#include "machine/com8116.h"
12#include "machine/keyboard.h"
1313#include "machine/ram.h"
1414#include "bus/scsi/scsi.h"
1515#include "bus/scsi/scsihd.h"
1616#include "machine/wd_fdc.h"
17#include "machine/x820kb.h"
1718#include "machine/z80pio.h"
1819#include "machine/z80ctc.h"
1920#include "machine/z80dart.h"
r241752r241753
3536#define SASIBUS_TAG     "sasi"
3637#define RS232_A_TAG     "rs232a"
3738#define RS232_B_TAG     "rs232b"
39#define KEYBOARD_TAG   "kb"
3840
3941#define XEROX820_VIDEORAM_SIZE  0x1000
4042#define XEROX820_VIDEORAM_MASK  0x0fff
r241752r241753
4244class xerox820_state : public driver_device
4345{
4446public:
45   xerox820_state(const machine_config &mconfig, device_type type, const char *tag)
46      : driver_device(mconfig, type, tag),
47         m_maincpu(*this, Z80_TAG),
48         m_kbpio(*this, Z80PIO_KB_TAG),
49         m_ctc(*this, Z80CTC_TAG),
50         m_sio(*this, Z80SIO_TAG),
51         m_fdc(*this, FD1771_TAG),
52         m_ram(*this, RAM_TAG),
53         m_palette(*this, "palette"),
54         m_floppy0(*this, FD1771_TAG":0"),
55         m_floppy1(*this, FD1771_TAG":1"),
56         m_rom(*this, Z80_TAG),
57         m_char_rom(*this, "chargen"),
58         m_video_ram(*this, "video_ram"),
59         m_fdc_irq(0),
60         m_fdc_drq(0),
61         m_8n5(0),
62         m_400_460(0)
47   xerox820_state(const machine_config &mconfig, device_type type, const char *tag) :
48      driver_device(mconfig, type, tag),
49      m_maincpu(*this, Z80_TAG),
50      m_kbpio(*this, Z80PIO_KB_TAG),
51      m_ctc(*this, Z80CTC_TAG),
52      m_sio(*this, Z80SIO_TAG),
53      m_fdc(*this, FD1771_TAG),
54      m_ram(*this, RAM_TAG),
55      m_palette(*this, "palette"),
56      m_floppy0(*this, FD1771_TAG":0"),
57      m_floppy1(*this, FD1771_TAG":1"),
58      m_kb(*this, KEYBOARD_TAG),
59      m_rom(*this, Z80_TAG),
60      m_char_rom(*this, "chargen"),
61      m_video_ram(*this, "video_ram"),
62      m_fdc_irq(0),
63      m_fdc_drq(0),
64      m_8n5(0),
65      m_400_460(0)
6366   { }
6467
6568   virtual void machine_start();
r241752r241753
7679   required_device<palette_device> m_palette;
7780   required_device<floppy_connector> m_floppy0;
7881   required_device<floppy_connector> m_floppy1;
82   required_device<xerox_820_keyboard_t> m_kb;
7983   required_memory_region m_rom;
8084   required_memory_region m_char_rom;
8185   required_shared_ptr<UINT8> m_video_ram;
r241752r241753
8993   DECLARE_READ8_MEMBER( kbpio_pb_r );
9094   DECLARE_WRITE_LINE_MEMBER( intrq_w );
9195   DECLARE_WRITE_LINE_MEMBER( drq_w );
92   DECLARE_WRITE8_MEMBER( kbd_w );
9396   DECLARE_WRITE_LINE_MEMBER( fr_w );
9497   DECLARE_WRITE_LINE_MEMBER( fdc_intrq_w );
9598   DECLARE_WRITE_LINE_MEMBER( fdc_drq_w );
9699
97   void bankswitch(int bank);
100   virtual void bankswitch(int bank);
98101   void update_nmi();
99102
100   /* keyboard state */
101   int m_keydata;                      /* keyboard data */
102
103103   /* video state */
104104   UINT8 m_scroll;                     /* vertical scroll */
105105   UINT8 m_framecnt;
trunk/src/mess/layout/merlin.lay
r241752r241753
11<?xml version="1.0"?>
22<mamelayout version="2">
3   <element name="background">
4      <rect>
5         <bounds left="0" top="0" right="1" bottom="1" />
6         <color red="0.0" green="0.0" blue="0.0" />
7      </rect>
3
4
5<!-- define elements -->
6
7   <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
8   <element name="static_red"><rect><color red="0.8" green="0.14" blue="0.18" /></rect></element>
9   <element name="static_darkred"><rect><color red="0.64" green="0.10" blue="0.13" /></rect></element>
10
11   <!-- buttons are not pushbuttons, they are pressed very lightly -->
12
13   <element name="button" defstate="0">
14      <text state="0" string=" "><color red="0.0" green="0.0" blue="0.0" /></text>
15      <text state="1" string=" "><color red="0.0" green="0.0" blue="0.0" /></text>
16      <disk state="1">
17         <bounds x="0.13" y="0.13" width="0.74" height="0.74"/>
18         <color red="0.33" green="0.33" blue="0.22" />
19      </disk>
820   </element>
921
1022   <element name="led" defstate="0">
11      <rect state="0">
12         <color red="0.2" green="0" blue="0" />
13      </rect>
14      <rect state="1">
15         <color red="0.9" green="0" blue="0" />
16      </rect>
23      <text string=" "><color red="0.0" green="0.0" blue="0.0" /></text>
24      <disk>
25         <bounds x="0.30" y="0.30" width="0.40" height="0.40"/>
26         <color red="0.0" green="0.0" blue="0.0" />
27      </disk>
28      <disk state="0">
29         <bounds x="0.36" y="0.36" width="0.28" height="0.28"/>
30         <color red="0.25" green="0.05" blue="0.04" />
31      </disk>
32      <disk state="1">
33         <bounds x="0.36" y="0.36" width="0.28" height="0.28"/>
34         <color red="1.0" green="0.2" blue="0.15" />
35      </disk>
1736   </element>
1837
19   <element name="0" defstate="0">
20      <rect>
21         <bounds x="2" y="2" width="48" height="48"/>
22         <color red="0.1" green="0.1" blue="0.1" />
23      </rect>
24      <rect state="0">
25         <bounds x="0" y="0" width="48" height="48"/>
26         <color red="0.25" green="0.25" blue="0.25" />
27      </rect>
28      <text string="0" state="0">
29         <bounds x="8" y="24" width="40" height="20"/>
30         <color red="1.0" green="1.0" blue="1.0" />
38
39   <!-- number panels -->
40
41   <element name="panel_0">
42      <rect><color red="0.64" green="0.10" blue="0.13" /></rect>
43      <disk>
44         <bounds x="0.13" y="0.13" width="0.74" height="0.74"/>
45         <color red="0.68" green="0.675" blue="0.66" />
46      </disk>
47      <text string="0" align="2">
48         <bounds left="0.0" right="0.96" top="0.75" bottom="1.0"/>
49         <color red="0.71" green="0.22" blue="0.28" />
3150      </text>
32      <rect state="1">
33         <bounds x="2" y="2" width="48" height="48"/>
34         <color red="0.25" green="0.25" blue="0.25" />
35      </rect>
36      <text string="0" state="1">
37         <bounds x="10" y="26" width="40" height="20"/>
38         <color red="1.0" green="1.0" blue="1.0" />
39      </text>
4051   </element>
4152
42   <element name="1" defstate="0">
43      <rect>
44         <bounds x="2" y="2" width="48" height="48"/>
45         <color red="0.1" green="0.1" blue="0.1" />
46      </rect>
47      <rect state="0">
48         <bounds x="0" y="0" width="48" height="48"/>
49         <color red="0.25" green="0.25" blue="0.25" />
50      </rect>
51      <text string="1" state="0">
52         <bounds x="8" y="24" width="40" height="20"/>
53         <color red="1.0" green="1.0" blue="1.0" />
53   <element name="panel_1">
54      <rect><color red="0.64" green="0.10" blue="0.13" /></rect>
55      <disk>
56         <bounds x="0.13" y="0.13" width="0.74" height="0.74"/>
57         <color red="0.68" green="0.675" blue="0.66" />
58      </disk>
59      <text string="1" align="2">
60         <bounds left="0.0" right="0.96" top="0.75" bottom="1.0"/>
61         <color red="0.71" green="0.22" blue="0.28" />
5462      </text>
55      <rect state="1">
56         <bounds x="2" y="2" width="48" height="48"/>
57         <color red="0.25" green="0.25" blue="0.25" />
58      </rect>
59      <text string="1" state="1">
60         <bounds x="10" y="26" width="40" height="20"/>
61         <color red="1.0" green="1.0" blue="1.0" />
62      </text>
6363   </element>
6464
65   <element name="2" defstate="0">
66      <rect>
67         <bounds x="2" y="2" width="48" height="48"/>
68         <color red="0.1" green="0.1" blue="0.1" />
69      </rect>
70      <rect state="0">
71         <bounds x="0" y="0" width="48" height="48"/>
72         <color red="0.25" green="0.25" blue="0.25" />
73      </rect>
74      <text string="2" state="0">
75         <bounds x="8" y="24" width="40" height="20"/>
76         <color red="1.0" green="1.0" blue="1.0" />
65   <element name="panel_2">
66      <rect><color red="0.64" green="0.10" blue="0.13" /></rect>
67      <disk>
68         <bounds x="0.13" y="0.13" width="0.74" height="0.74"/>
69         <color red="0.68" green="0.675" blue="0.66" />
70      </disk>
71      <text string="2" align="2">
72         <bounds left="0.0" right="0.96" top="0.75" bottom="1.0"/>
73         <color red="0.71" green="0.22" blue="0.28" />
7774      </text>
78      <rect state="1">
79         <bounds x="2" y="2" width="48" height="48"/>
80         <color red="0.25" green="0.25" blue="0.25" />
81      </rect>
82      <text string="2" state="1">
83         <bounds x="10" y="26" width="40" height="20"/>
84         <color red="1.0" green="1.0" blue="1.0" />
85      </text>
8675   </element>
8776
88   <element name="3" defstate="0">
89      <rect>
90         <bounds x="2" y="2" width="48" height="48"/>
91         <color red="0.1" green="0.1" blue="0.1" />
92      </rect>
93      <rect state="0">
94         <bounds x="0" y="0" width="48" height="48"/>
95         <color red="0.25" green="0.25" blue="0.25" />
96      </rect>
97      <text string="3" state="0">
98         <bounds x="8" y="24" width="40" height="20"/>
99         <color red="1.0" green="1.0" blue="1.0" />
77   <element name="panel_3">
78      <rect><color red="0.64" green="0.10" blue="0.13" /></rect>
79      <disk>
80         <bounds x="0.13" y="0.13" width="0.74" height="0.74"/>
81         <color red="0.68" green="0.675" blue="0.66" />
82      </disk>
83      <text string="3" align="2">
84         <bounds left="0.0" right="0.96" top="0.75" bottom="1.0"/>
85         <color red="0.71" green="0.22" blue="0.28" />
10086      </text>
101      <rect state="1">
102         <bounds x="2" y="2" width="48" height="48"/>
103         <color red="0.25" green="0.25" blue="0.25" />
104      </rect>
105      <text string="3" state="1">
106         <bounds x="10" y="26" width="40" height="20"/>
107         <color red="1.0" green="1.0" blue="1.0" />
108      </text>
10987   </element>
11088
111   <element name="4" defstate="0">
112      <rect>
113         <bounds x="2" y="2" width="48" height="48"/>
114         <color red="0.1" green="0.1" blue="0.1" />
115      </rect>
116      <rect state="0">
117         <bounds x="0" y="0" width="48" height="48"/>
118         <color red="0.25" green="0.25" blue="0.25" />
119      </rect>
120      <text string="4" state="0">
121         <bounds x="8" y="24" width="40" height="20"/>
122         <color red="1.0" green="1.0" blue="1.0" />
89   <element name="panel_4">
90      <rect><color red="0.64" green="0.10" blue="0.13" /></rect>
91      <disk>
92         <bounds x="0.13" y="0.13" width="0.74" height="0.74"/>
93         <color red="0.68" green="0.675" blue="0.66" />
94      </disk>
95      <text string="4" align="2">
96         <bounds left="0.0" right="0.96" top="0.75" bottom="1.0"/>
97         <color red="0.71" green="0.22" blue="0.28" />
12398      </text>
124      <rect state="1">
125         <bounds x="2" y="2" width="48" height="48"/>
126         <color red="0.25" green="0.25" blue="0.25" />
127      </rect>
128      <text string="4" state="1">
129         <bounds x="10" y="26" width="40" height="20"/>
130         <color red="1.0" green="1.0" blue="1.0" />
131      </text>
13299   </element>
133100
134   <element name="5" defstate="0">
135      <rect>
136         <bounds x="2" y="2" width="48" height="48"/>
137         <color red="0.1" green="0.1" blue="0.1" />
138      </rect>
139      <rect state="0">
140         <bounds x="0" y="0" width="48" height="48"/>
141         <color red="0.25" green="0.25" blue="0.25" />
142      </rect>
143      <text string="5" state="0">
144         <bounds x="8" y="24" width="40" height="20"/>
145         <color red="1.0" green="1.0" blue="1.0" />
101   <element name="panel_5">
102      <rect><color red="0.64" green="0.10" blue="0.13" /></rect>
103      <disk>
104         <bounds x="0.13" y="0.13" width="0.74" height="0.74"/>
105         <color red="0.68" green="0.675" blue="0.66" />
106      </disk>
107      <text string="5" align="2">
108         <bounds left="0.0" right="0.96" top="0.75" bottom="1.0"/>
109         <color red="0.71" green="0.22" blue="0.28" />
146110      </text>
147      <rect state="1">
148         <bounds x="2" y="2" width="48" height="48"/>
149         <color red="0.25" green="0.25" blue="0.25" />
150      </rect>
151      <text string="5" state="1">
152         <bounds x="10" y="26" width="40" height="20"/>
153         <color red="1.0" green="1.0" blue="1.0" />
154      </text>
155111   </element>
156112
157   <element name="6" defstate="0">
158      <rect>
159         <bounds x="2" y="2" width="48" height="48"/>
160         <color red="0.1" green="0.1" blue="0.1" />
161      </rect>
162      <rect state="0">
163         <bounds x="0" y="0" width="48" height="48"/>
164         <color red="0.25" green="0.25" blue="0.25" />
165      </rect>
166      <text string="6" state="0">
167         <bounds x="8" y="24" width="40" height="20"/>
168         <color red="1.0" green="1.0" blue="1.0" />
113   <element name="panel_6">
114      <rect><color red="0.64" green="0.10" blue="0.13" /></rect>
115      <disk>
116         <bounds x="0.13" y="0.13" width="0.74" height="0.74"/>
117         <color red="0.68" green="0.675" blue="0.66" />
118      </disk>
119      <text string="6" align="2">
120         <bounds left="0.0" right="0.96" top="0.75" bottom="1.0"/>
121         <color red="0.71" green="0.22" blue="0.28" />
169122      </text>
170      <rect state="1">
171         <bounds x="2" y="2" width="48" height="48"/>
172         <color red="0.25" green="0.25" blue="0.25" />
173      </rect>
174      <text string="6" state="1">
175         <bounds x="10" y="26" width="40" height="20"/>
176         <color red="1.0" green="1.0" blue="1.0" />
177      </text>
178123   </element>
179124
180   <element name="7" defstate="0">
181      <rect>
182         <bounds x="2" y="2" width="48" height="48"/>
183         <color red="0.1" green="0.1" blue="0.1" />
184      </rect>
185      <rect state="0">
186         <bounds x="0" y="0" width="48" height="48"/>
187         <color red="0.25" green="0.25" blue="0.25" />
188      </rect>
189      <text string="7" state="0">
190         <bounds x="8" y="24" width="40" height="20"/>
191         <color red="1.0" green="1.0" blue="1.0" />
125   <element name="panel_7">
126      <rect><color red="0.64" green="0.10" blue="0.13" /></rect>
127      <disk>
128         <bounds x="0.13" y="0.13" width="0.74" height="0.74"/>
129         <color red="0.68" green="0.675" blue="0.66" />
130      </disk>
131      <text string="7" align="2">
132         <bounds left="0.0" right="0.96" top="0.75" bottom="1.0"/>
133         <color red="0.71" green="0.22" blue="0.28" />
192134      </text>
193      <rect state="1">
194         <bounds x="2" y="2" width="48" height="48"/>
195         <color red="0.25" green="0.25" blue="0.25" />
196      </rect>
197      <text string="7" state="1">
198         <bounds x="10" y="26" width="40" height="20"/>
199         <color red="1.0" green="1.0" blue="1.0" />
200      </text>
201135   </element>
202136
203   <element name="8" defstate="0">
204      <rect>
205         <bounds x="2" y="2" width="48" height="48"/>
206         <color red="0.1" green="0.1" blue="0.1" />
207      </rect>
208      <rect state="0">
209         <bounds x="0" y="0" width="48" height="48"/>
210         <color red="0.25" green="0.25" blue="0.25" />
211      </rect>
212      <text string="8" state="0">
213         <bounds x="8" y="24" width="40" height="20"/>
214         <color red="1.0" green="1.0" blue="1.0" />
137   <element name="panel_8">
138      <rect><color red="0.64" green="0.10" blue="0.13" /></rect>
139      <disk>
140         <bounds x="0.13" y="0.13" width="0.74" height="0.74"/>
141         <color red="0.68" green="0.675" blue="0.66" />
142      </disk>
143      <text string="8" align="2">
144         <bounds left="0.0" right="0.96" top="0.75" bottom="1.0"/>
145         <color red="0.71" green="0.22" blue="0.28" />
215146      </text>
216      <rect state="1">
217         <bounds x="2" y="2" width="48" height="48"/>
218         <color red="0.25" green="0.25" blue="0.25" />
219      </rect>
220      <text string="8" state="1">
221         <bounds x="10" y="26" width="40" height="20"/>
222         <color red="1.0" green="1.0" blue="1.0" />
223      </text>
224147   </element>
225148
226   <element name="9" defstate="0">
227      <rect>
228         <bounds x="2" y="2" width="48" height="48"/>
229         <color red="0.1" green="0.1" blue="0.1" />
230      </rect>
231      <rect state="0">
232         <bounds x="0" y="0" width="48" height="48"/>
233         <color red="0.25" green="0.25" blue="0.25" />
234      </rect>
235      <text string="9" state="0">
236         <bounds x="8" y="24" width="40" height="20"/>
237         <color red="1.0" green="1.0" blue="1.0" />
149   <element name="panel_9">
150      <rect><color red="0.64" green="0.10" blue="0.13" /></rect>
151      <disk>
152         <bounds x="0.13" y="0.13" width="0.74" height="0.74"/>
153         <color red="0.68" green="0.675" blue="0.66" />
154      </disk>
155      <text string="9" align="2">
156         <bounds left="0.0" right="0.96" top="0.75" bottom="1.0"/>
157         <color red="0.71" green="0.22" blue="0.28" />
238158      </text>
239      <rect state="1">
240         <bounds x="2" y="2" width="48" height="48"/>
241         <color red="0.25" green="0.25" blue="0.25" />
242      </rect>
243      <text string="9" state="1">
244         <bounds x="10" y="26" width="40" height="20"/>
245         <color red="1.0" green="1.0" blue="1.0" />
246      </text>
247159   </element>
248160
249   <element name="10" defstate="0">
250      <rect>
251         <bounds x="2" y="2" width="48" height="48"/>
252         <color red="0.1" green="0.1" blue="0.1" />
253      </rect>
254      <rect state="0">
255         <bounds x="0" y="0" width="48" height="48"/>
256         <color red="0.25" green="0.25" blue="0.25" />
257      </rect>
258      <text string="10" state="0">
259         <bounds x="8" y="24" width="40" height="20"/>
260         <color red="1.0" green="1.0" blue="1.0" />
161   <element name="panel_10">
162      <rect><color red="0.64" green="0.10" blue="0.13" /></rect>
163      <disk>
164         <bounds x="0.13" y="0.13" width="0.74" height="0.74"/>
165         <color red="0.68" green="0.675" blue="0.66" />
166      </disk>
167      <text string="10" align="2">
168         <bounds left="0.0" right="0.98" top="0.75" bottom="1.0"/>
169         <color red="0.71" green="0.22" blue="0.28" />
261170      </text>
262      <rect state="1">
263         <bounds x="2" y="2" width="48" height="48"/>
264         <color red="0.25" green="0.25" blue="0.25" />
265      </rect>
266      <text string="10" state="1">
267         <bounds x="10" y="26" width="40" height="20"/>
268         <color red="1.0" green="1.0" blue="1.0" />
269      </text>
270171   </element>
271172
272   <element name="new_game" defstate="0">
273      <rect>
274         <bounds x="2" y="2" width="48" height="48"/>
275         <color red="0.1" green="0.1" blue="0.1" />
276      </rect>
277      <rect state="0">
278         <bounds x="0" y="0" width="48" height="48"/>
279         <color red="0.25" green="0.25" blue="0.25" />
280      </rect>
281      <text string="NEW GAME" state="0">
282         <bounds x="8" y="24" width="40" height="20"/>
283         <color red="1.0" green="1.0" blue="1.0" />
173
174   <!-- bottom panels -->
175
176   <element name="panel_newgame">
177      <rect><color red="0.68" green="0.675" blue="0.66" /></rect>
178      <text string="NEW">
179         <bounds x="0.0" y="0.25" width="1.0" height="0.24"/>
180         <color red="0.0" green="0.0" blue="0.0" />
284181      </text>
285      <rect state="1">
286         <bounds x="2" y="2" width="48" height="48"/>
287         <color red="0.25" green="0.25" blue="0.25" />
288      </rect>
289      <text string="NEW GAME" state="1">
290         <bounds x="10" y="26" width="40" height="20"/>
291         <color red="1.0" green="1.0" blue="1.0" />
182      <text string="GAME">
183         <bounds x="0.0" y="0.50" width="1.0" height="0.24"/>
184         <color red="0.0" green="0.0" blue="0.0" />
292185      </text>
293186   </element>
294187
295   <element name="same_game" defstate="0">
296      <rect>
297         <bounds x="2" y="2" width="48" height="48"/>
298         <color red="0.1" green="0.1" blue="0.1" />
299      </rect>
300      <rect state="0">
301         <bounds x="0" y="0" width="48" height="48"/>
302         <color red="0.25" green="0.25" blue="0.25" />
303      </rect>
304      <text string="SAME GAME" state="0">
305         <bounds x="8" y="24" width="40" height="20"/>
306         <color red="1.0" green="1.0" blue="1.0" />
188   <element name="panel_samegame">
189      <rect><color red="0.68" green="0.675" blue="0.66" /></rect>
190      <text string="SAME">
191         <bounds x="0.0" y="0.25" width="1.0" height="0.24"/>
192         <color red="0.0" green="0.0" blue="0.0" />
307193      </text>
308      <rect state="1">
309         <bounds x="2" y="2" width="48" height="48"/>
310         <color red="0.25" green="0.25" blue="0.25" />
311      </rect>
312      <text string="SAME GAME" state="1">
313         <bounds x="10" y="26" width="40" height="20"/>
314         <color red="1.0" green="1.0" blue="1.0" />
194      <text string="GAME">
195         <bounds x="0.0" y="0.50" width="1.0" height="0.24"/>
196         <color red="0.0" green="0.0" blue="0.0" />
315197      </text>
316198   </element>
317199
318   <element name="hit_me" defstate="0">
319      <rect>
320         <bounds x="2" y="2" width="48" height="48"/>
321         <color red="0.1" green="0.1" blue="0.1" />
322      </rect>
323      <rect state="0">
324         <bounds x="0" y="0" width="48" height="48"/>
325         <color red="0.25" green="0.25" blue="0.25" />
326      </rect>
327      <text string="HIT ME" state="0">
328         <bounds x="8" y="24" width="40" height="20"/>
329         <color red="1.0" green="1.0" blue="1.0" />
200   <element name="panel_hitme">
201      <rect><color red="0.68" green="0.675" blue="0.66" /></rect>
202      <text string="HIT">
203         <bounds x="0.0" y="0.25" width="1.0" height="0.24"/>
204         <color red="0.0" green="0.0" blue="0.0" />
330205      </text>
331      <rect state="1">
332         <bounds x="2" y="2" width="48" height="48"/>
333         <color red="0.25" green="0.25" blue="0.25" />
334      </rect>
335      <text string="HIT ME" state="1">
336         <bounds x="10" y="26" width="40" height="20"/>
337         <color red="1.0" green="1.0" blue="1.0" />
206      <text string="ME">
207         <bounds x="0.0" y="0.50" width="1.0" height="0.24"/>
208         <color red="0.0" green="0.0" blue="0.0" />
338209      </text>
339210   </element>
340211
341   <element name="comp_turn" defstate="0">
342      <rect>
343         <bounds x="2" y="2" width="48" height="48"/>
344         <color red="0.1" green="0.1" blue="0.1" />
345      </rect>
346      <rect state="0">
347         <bounds x="0" y="0" width="48" height="48"/>
348         <color red="0.25" green="0.25" blue="0.25" />
349      </rect>
350      <text string="COMP TURN" state="0">
351         <bounds x="8" y="24" width="40" height="20"/>
352         <color red="1.0" green="1.0" blue="1.0" />
212   <element name="panel_compturn">
213      <rect><color red="0.68" green="0.675" blue="0.66" /></rect>
214      <text string="COMP">
215         <bounds x="0.0" y="0.25" width="1.0" height="0.24"/>
216         <color red="0.0" green="0.0" blue="0.0" />
353217      </text>
354      <rect state="1">
355         <bounds x="2" y="2" width="48" height="48"/>
356         <color red="0.25" green="0.25" blue="0.25" />
357      </rect>
358      <text string="COMP TURN" state="1">
359         <bounds x="10" y="26" width="40" height="20"/>
360         <color red="1.0" green="1.0" blue="1.0" />
218      <text string="TURN">
219         <bounds x="0.0" y="0.50" width="1.0" height="0.24"/>
220         <color red="0.0" green="0.0" blue="0.0" />
361221      </text>
362222   </element>
363223
364   <view name="Default Layout">
365224
366      <!-- Black background -->
367      <bezel element="background">
368         <bounds left="0" top="0" right="200" bottom="250" />
225
226<!-- build screen -->
227
228   <view name="Internal Layout">
229      <bounds left="0" right="88" top="0" bottom="216" />
230      <bezel element="static_black">
231         <bounds left="0" right="88" top="0" bottom="216" />
369232      </bezel>
370233
371      <!-- LEDs and number buttons -->
234   <!-- (don't care about the upper loudspeaker+logo part) -->
372235
373      <bezel name="led_0" element="led">
374         <bounds x="100" y="20" width="20" height="10" />
236      <bezel element="static_darkred">
237         <bounds x="10" y="4" width="68" height="160" />
375238      </bezel>
376      <bezel element="0" inputtag="O0" inputmask="0x01">
377         <bounds x="100" y="32" width="20" height="10" />
378      </bezel>
379239
380      <bezel name="led_1" element="led">
381         <bounds x="50" y="50" width="20" height="10" />
240      <bezel element="static_red">
241         <bounds x="7" y="0" width="74" height="8" />
382242      </bezel>
383      <bezel element="1" inputtag="O0" inputmask="0x02">
384         <bounds x="50" y="62" width="20" height="10" />
243      <bezel element="static_red">
244         <bounds x="4" y="14" width="80" height="128" />
385245      </bezel>
246      <bezel element="static_red">
247         <bounds x="7" y="148" width="74" height="62" />
248      </bezel>
386249
387      <bezel name="led_2" element="led">
388         <bounds x="100" y="50" width="20" height="10" />
250
251   <!-- number panels -->
252
253      <bezel element="panel_0">
254         <bounds x="34" y="20" width="20" height="20" />
389255      </bezel>
390      <bezel element="2" inputtag="O0" inputmask="0x08">
391         <bounds x="100" y="62" width="20" height="10" />
256      <bezel name="lamp0" element="led">
257         <bounds x="34" y="20" width="20" height="20" />
392258      </bezel>
259      <bezel element="button" inputtag="O.0" inputmask="0x01">
260         <bounds x="34" y="20" width="20" height="20" />
261         <color alpha="0.2" />
262      </bezel>
393263
394      <bezel name="led_3" element="led">
395         <bounds x="150" y="50" width="20" height="10" />
264      <bezel element="panel_1">
265         <bounds x="10" y="44" width="20" height="20" />
396266      </bezel>
397      <bezel element="3" inputtag="O0" inputmask="0x04">
398         <bounds x="150" y="62" width="20" height="10" />
267      <bezel name="lamp1" element="led">
268         <bounds x="10" y="44" width="20" height="20" />
399269      </bezel>
400
401
402      <bezel name="led_4" element="led">
403         <bounds x="50" y="80" width="20" height="10" />
270      <bezel element="button" inputtag="O.0" inputmask="0x02">
271         <bounds x="10" y="44" width="20" height="20" />
272         <color alpha="0.2" />
404273      </bezel>
405      <bezel element="4" inputtag="O1" inputmask="0x01">
406         <bounds x="50" y="92" width="20" height="10" />
274      <bezel element="panel_2">
275         <bounds x="34" y="44" width="20" height="20" />
407276      </bezel>
408
409      <bezel name="led_5" element="led">
410         <bounds x="100" y="80" width="20" height="10" />
277      <bezel name="lamp2" element="led">
278         <bounds x="34" y="44" width="20" height="20" />
411279      </bezel>
412      <bezel element="5" inputtag="O1" inputmask="0x02">
413         <bounds x="100" y="92" width="20" height="10" />
280      <bezel element="button" inputtag="O.0" inputmask="0x08">
281         <bounds x="34" y="44" width="20" height="20" />
282         <color alpha="0.2" />
414283      </bezel>
284      <bezel element="panel_3">
285         <bounds x="58" y="44" width="20" height="20" />
286      </bezel>
287      <bezel name="lamp3" element="led">
288         <bounds x="58" y="44" width="20" height="20" />
289      </bezel>
290      <bezel element="button" inputtag="O.0" inputmask="0x04">
291         <bounds x="58" y="44" width="20" height="20" />
292         <color alpha="0.2" />
293      </bezel>
415294
416      <bezel name="led_6" element="led">
417         <bounds x="150" y="80" width="20" height="10" />
295      <bezel element="panel_4">
296         <bounds x="10" y="68" width="20" height="20" />
418297      </bezel>
419      <bezel element="6" inputtag="O1" inputmask="0x08">
420         <bounds x="150" y="92" width="20" height="10" />
298      <bezel name="lamp4" element="led">
299         <bounds x="10" y="68" width="20" height="20" />
421300      </bezel>
301      <bezel element="button" inputtag="O.1" inputmask="0x01">
302         <bounds x="10" y="68" width="20" height="20" />
303         <color alpha="0.2" />
304      </bezel>
305      <bezel element="panel_5">
306         <bounds x="34" y="68" width="20" height="20" />
307      </bezel>
308      <bezel name="lamp5" element="led">
309         <bounds x="34" y="68" width="20" height="20" />
310      </bezel>
311      <bezel element="button" inputtag="O.1" inputmask="0x02">
312         <bounds x="34" y="68" width="20" height="20" />
313         <color alpha="0.2" />
314      </bezel>
315      <bezel element="panel_6">
316         <bounds x="58" y="68" width="20" height="20" />
317      </bezel>
318      <bezel name="lamp6" element="led">
319         <bounds x="58" y="68" width="20" height="20" />
320      </bezel>
321      <bezel element="button" inputtag="O.1" inputmask="0x08">
322         <bounds x="58" y="68" width="20" height="20" />
323         <color alpha="0.2" />
324      </bezel>
422325
423
424      <bezel name="led_7" element="led">
425         <bounds x="50" y="110" width="20" height="10" />
326      <bezel element="panel_7">
327         <bounds x="10" y="92" width="20" height="20" />
426328      </bezel>
427      <bezel element="7" inputtag="O1" inputmask="0x04">
428         <bounds x="50" y="122" width="20" height="10" />
329      <bezel name="lamp7" element="led">
330         <bounds x="10" y="92" width="20" height="20" />
429331      </bezel>
430      <bezel name="led_8" element="led">
431         <bounds x="100" y="110" width="20" height="10" />
332      <bezel element="button" inputtag="O.1" inputmask="0x04">
333         <bounds x="10" y="92" width="20" height="20" />
334         <color alpha="0.2" />
432335      </bezel>
433      <bezel element="8" inputtag="O2" inputmask="0x01">
434         <bounds x="100" y="122" width="20" height="10" />
336      <bezel element="panel_8">
337         <bounds x="34" y="92" width="20" height="20" />
435338      </bezel>
436      <bezel name="led_9" element="led">
437         <bounds x="150" y="110" width="20" height="10" />
339      <bezel name="lamp8" element="led">
340         <bounds x="34" y="92" width="20" height="20" />
438341      </bezel>
439      <bezel element="9" inputtag="O2" inputmask="0x02">
440         <bounds x="150" y="122" width="20" height="10" />
342      <bezel element="button" inputtag="O.2" inputmask="0x01">
343         <bounds x="34" y="92" width="20" height="20" />
344         <color alpha="0.2" />
441345      </bezel>
346      <bezel element="panel_9">
347         <bounds x="58" y="92" width="20" height="20" />
348      </bezel>
349      <bezel name="lamp9" element="led">
350         <bounds x="58" y="92" width="20" height="20" />
351      </bezel>
352      <bezel element="button" inputtag="O.2" inputmask="0x02">
353         <bounds x="58" y="92" width="20" height="20" />
354         <color alpha="0.2" />
355      </bezel>
442356
443
444      <bezel name="led_10" element="led">
445         <bounds x="100" y="140" width="20" height="10" />
357      <bezel element="panel_10">
358         <bounds x="34" y="116" width="20" height="20" />
446359      </bezel>
447      <bezel element="10" inputtag="O2" inputmask="0x08">
448         <bounds x="100" y="152" width="20" height="10" />
360      <bezel name="lamp10" element="led">
361         <bounds x="34" y="116" width="20" height="20" />
449362      </bezel>
363      <bezel element="button" inputtag="O.2" inputmask="0x08">
364         <bounds x="34" y="116" width="20" height="20" />
365         <color alpha="0.2" />
366      </bezel>
450367
451368
452      <!-- Other buttons -->
369   <!-- bottom panels -->
453370
454      <bezel element="new_game" inputtag="O3" inputmask="0x08">
455         <bounds x="75" y="170" width="30" height="30" />
371      <bezel element="panel_newgame">
372         <bounds x="21" y="156" width="20" height="20" />
456373      </bezel>
457      <bezel element="same_game" inputtag="O2" inputmask="0x04">
458         <bounds x="125" y="170" width="30" height="30" />
374      <bezel element="button" inputtag="O.3" inputmask="0x08">
375         <bounds x="21" y="156" width="20" height="20" />
376         <color alpha="0.2" />
459377      </bezel>
460378
461      <bezel element="hit_me" inputtag="O3" inputmask="0x04">
462         <bounds x="75" y="210" width="30" height="30" />
379      <bezel element="panel_samegame">
380         <bounds x="47" y="156" width="20" height="20" />
463381      </bezel>
464      <bezel element="comp_turn" inputtag="O3" inputmask="0x02">
465         <bounds x="125" y="210" width="30" height="30" />
382      <bezel element="button" inputtag="O.2" inputmask="0x04">
383         <bounds x="47" y="156" width="20" height="20" />
384         <color alpha="0.2" />
466385      </bezel>
386
387      <bezel element="panel_hitme">
388         <bounds x="21" y="182" width="20" height="20" />
389      </bezel>
390      <bezel element="button" inputtag="O.3" inputmask="0x04">
391         <bounds x="21" y="182" width="20" height="20" />
392         <color alpha="0.2" />
393      </bezel>
394
395      <bezel element="panel_compturn">
396         <bounds x="47" y="182" width="20" height="20" />
397      </bezel>
398      <bezel element="button" inputtag="O.3" inputmask="0x02">
399         <bounds x="47" y="182" width="20" height="20" />
400         <color alpha="0.2" />
401      </bezel>
402
467403   </view>
468404</mamelayout>
trunk/src/mess/layout/simon.lay
r0r241753
1<?xml version="1.0"?>
2<mamelayout version="2">
3
4
5<!-- define elements -->
6
7   <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
8   <element name="disk_black"><disk><color red="0.0" green="0.0" blue="0.0" /></disk></element>
9   <element name="disk_grey"><disk><color red="0.6" green="0.6" blue="0.6" /></disk></element>
10
11<!-- TODO: add these, maybe -->
12   <element name="text_game">
13      <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
14      <text string="GAME">
15         <color red="0.0" green="0.0" blue="0.0" />
16      </text>
17   </element>
18   <element name="text_skill">
19      <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
20      <text string="SKILL LEVEL">
21         <color red="0.0" green="0.0" blue="0.0" />
22      </text>
23   </element>
24
25   <element name="text_last">
26      <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
27      <text string="LAST">
28         <color red="0.0" green="0.0" blue="0.0" />
29      </text>
30   </element>
31   <element name="text_start">
32      <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
33      <text string="START">
34         <color red="0.0" green="0.0" blue="0.0" />
35      </text>
36   </element>
37   <element name="text_long">
38      <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
39      <text string="LONGEST">
40         <color red="0.0" green="0.0" blue="0.0" />
41      </text>
42   </element>
43
44   <element name="button_r" defstate="0">
45      <disk><color red="0.0" green="0.0" blue="0.0" /></disk>
46      <disk state="0">
47         <color red="0.8" green="0.25" blue="0.1" />
48         <bounds x="0.2" y="0.2" width="0.6" height="0.6" />
49      </disk>
50      <disk state="1">
51         <color red="0.8" green="0.25" blue="0.1" />
52         <bounds x="0.28" y="0.28" width="0.44" height="0.44" />
53      </disk>
54   </element>
55   <element name="button_y" defstate="0">
56      <disk><color red="0.0" green="0.0" blue="0.0" /></disk>
57      <disk state="0">
58         <color red="0.8" green="0.78" blue="0.1" />
59         <bounds x="0.2" y="0.2" width="0.6" height="0.6" />
60      </disk>
61      <disk state="1">
62         <color red="0.8" green="0.78" blue="0.1" />
63         <bounds x="0.28" y="0.28" width="0.44" height="0.44" />
64      </disk>
65   </element>
66
67   <element name="lamp_g" defstate="0">
68      <rect state="0"><color red="0.15" green="0.5" blue="0.1" /></rect>
69      <rect state="1"><color red="0.52" green="1.0" blue="0.4" /></rect>
70   </element>
71   <element name="lamp_r" defstate="0">
72      <rect state="0"><color red="0.5" green="0.15" blue="0.1" /></rect>
73      <rect state="1"><color red="1.0" green="0.4" blue="0.28" /></rect>
74   </element>
75   <element name="lamp_y" defstate="0">
76      <rect state="0"><color red="0.5" green="0.45" blue="0.1" /></rect>
77      <rect state="1"><color red="1.0" green="0.93" blue="0.4" /></rect>
78   </element>
79   <element name="lamp_b" defstate="0">
80      <rect state="0"><color red="0.1" green="0.15" blue="0.5" /></rect>
81      <rect state="1"><color red="0.3" green="0.42" blue="1.0" /></rect>
82   </element>
83
84
85
86<!-- build screen -->
87
88   <view name="Internal Layout">
89      <bounds left="0" right="200" top="0" bottom="200" />
90      <bezel element="static_black">
91         <bounds left="0" right="200" top="0" bottom="200" />
92      </bezel>
93
94   <!-- big lamps -->
95
96      <bezel name="lamp0" element="lamp_g" inputtag="IN.1" inputmask="0x01" >
97         <bounds left="0" right="91" top="0" bottom="50" />
98      </bezel>
99      <bezel name="lamp0" element="lamp_g" inputtag="IN.1" inputmask="0x01" >
100         <bounds left="0" right="50" top="0" bottom="91" />
101      </bezel>
102      <bezel name="lamp0" element="lamp_g" inputtag="IN.1" inputmask="0x01" >
103         <bounds x="40" y="40" width="20" height="20" />
104      </bezel>
105
106      <bezel name="lamp1" element="lamp_r" inputtag="IN.1" inputmask="0x02" >
107         <bounds left="109" right="200" top="0" bottom="50" />
108      </bezel>
109      <bezel name="lamp1" element="lamp_r" inputtag="IN.1" inputmask="0x02" >
110         <bounds left="150" right="200" top="0" bottom="91" />
111      </bezel>
112      <bezel name="lamp1" element="lamp_r" inputtag="IN.1" inputmask="0x02" >
113         <bounds x="140" y="40" width="20" height="20" />
114      </bezel>
115
116      <bezel name="lamp2" element="lamp_y" inputtag="IN.1" inputmask="0x04" >
117         <bounds left="0" right="91" top="150" bottom="200" />
118      </bezel>
119      <bezel name="lamp2" element="lamp_y" inputtag="IN.1" inputmask="0x04" >
120         <bounds left="0" right="50" top="109" bottom="200" />
121      </bezel>
122      <bezel name="lamp2" element="lamp_y" inputtag="IN.1" inputmask="0x04" >
123         <bounds x="40" y="140" width="20" height="20" />
124      </bezel>
125
126      <bezel name="lamp3" element="lamp_b" inputtag="IN.1" inputmask="0x08" >
127         <bounds left="109" right="200" top="150" bottom="200" />
128      </bezel>
129      <bezel name="lamp3" element="lamp_b" inputtag="IN.1" inputmask="0x08" >
130         <bounds left="150" right="200" top="109" bottom="200" />
131      </bezel>
132      <bezel name="lamp3" element="lamp_b" inputtag="IN.1" inputmask="0x08" >
133         <bounds x="140" y="140" width="20" height="20" />
134      </bezel>
135
136
137      <bezel element="static_black">
138         <bounds x="0" y="90" width="200" height="20" />
139      </bezel>
140      <bezel element="static_black">
141         <bounds x="90" y="0" width="20" height="200" />
142      </bezel>
143      <bezel element="disk_black">
144         <bounds x="35" y="35" width="130" height="130" />
145      </bezel>
146
147      <bezel element="disk_grey">
148         <bounds x="50" y="50" width="100" height="100" />
149      </bezel>
150      <bezel element="static_black">
151         <bounds x="52" y="90" width="96" height="1" />
152      </bezel>
153
154
155   <!-- other controls -->
156
157      <bezel element="text_last">
158         <bounds x="65" y="110" width="20" height="4" />
159      </bezel>
160      <bezel element="button_y" inputtag="IN.2" inputmask="0x02">
161         <bounds x="71" y="115" width="8" height="8" />
162      </bezel>
163
164      <bezel element="text_start">
165         <bounds x="90" y="110" width="20" height="4" />
166      </bezel>
167      <bezel element="button_r" inputtag="IN.2" inputmask="0x01">
168         <bounds x="96" y="115" width="8" height="8" />
169      </bezel>
170
171      <bezel element="text_long">
172         <bounds x="115" y="110" width="20" height="4" />
173      </bezel>
174      <bezel element="button_y" inputtag="IN.2" inputmask="0x04">
175         <bounds x="121" y="115" width="8" height="8" />
176      </bezel>
177
178
179   </view>
180</mamelayout>
trunk/src/mess/machine/at.c
r241752r241753
300300MACHINE_RESET_MEMBER(at_state,at)
301301{
302302   m_at_spkrdata = 0;
303   m_pit_out2 = 0;
303   m_pit_out2 = 1;
304304   m_dma_channel = -1;
305305   m_cur_eop = false;
306306}
trunk/src/mess/machine/bebox.c
r241752r241753
9393
9494/* Components */
9595#include "video/pc_vga.h"
96#include "bus/pci/cirrus.h"
96#include "bus/lpci/cirrus.h"
9797#include "cpu/powerpc/ppc.h"
9898#include "machine/ins8250.h"
9999#include "machine/upd765.h"
r241752r241753
101101#include "machine/pic8259.h"
102102#include "machine/am9517a.h"
103103#include "machine/ataintf.h"
104#include "bus/pci/pci.h"
104#include "bus/lpci/pci.h"
105105#include "machine/intelfsh.h"
106106#include "machine/53c810.h"
107107#include "machine/ram.h"
trunk/src/mess/machine/coco.c
r241752r241753
681681   /* determine the sound mux status */
682682   soundmux_status_t status = soundmux_status();
683683
684    /* the SC77526 DAC chip internally biases the AC-coupled sound inputs for Cassette and Cartridge at the midpoint of the 3.9v output range */
685    bool bCassSoundEnable = (status == (SOUNDMUX_ENABLE | SOUNDMUX_SEL1));
686    bool bCartSoundEnable = (status == (SOUNDMUX_ENABLE | SOUNDMUX_SEL2));
687    UINT8 cassette_sound = (bCassSoundEnable ? 0x40 : 0);
688    UINT8 cart_sound = (bCartSoundEnable ? 0x40 : 0);
689
684690   /* determine the value to send to the DAC */
685691   m_dac_output = (m_pia_1->a_output() & 0xFC) >> 2;
686   UINT8 sound_output = single_bit_sound + (status == SOUNDMUX_ENABLE ? m_dac_output << 1 : 0);
687   m_dac->write_unsigned8(sound_output);
692   UINT8 dac_sound =  (status == SOUNDMUX_ENABLE ? m_dac_output << 1 : 0);
693   m_dac->write_unsigned8(single_bit_sound + dac_sound + cassette_sound + cart_sound);
688694
689695   /* determine the cassette sound status */
690   cassette_state cas_sound = (status == (SOUNDMUX_ENABLE | SOUNDMUX_SEL1))
691      ? CASSETTE_SPEAKER_ENABLED
692      : CASSETTE_SPEAKER_MUTED;
696   cassette_state cas_sound = bCassSoundEnable ? CASSETTE_SPEAKER_ENABLED : CASSETTE_SPEAKER_MUTED;
693697   m_cassette->change_state(cas_sound, CASSETTE_MASK_SPEAKER);
694698
695699   /* determine the cartridge sound status */
696   m_cococart->cart_set_line(
697      COCOCART_LINE_SOUND_ENABLE,
698      (status == (SOUNDMUX_ENABLE | SOUNDMUX_SEL2)) ? COCOCART_LINE_VALUE_ASSERT : COCOCART_LINE_VALUE_CLEAR);
700   m_cococart->cart_set_line(COCOCART_LINE_SOUND_ENABLE, bCartSoundEnable ? COCOCART_LINE_VALUE_ASSERT : COCOCART_LINE_VALUE_CLEAR);
699701}
700702
701703
trunk/src/mess/machine/genpc.c
r241752r241753
572572   m_u73_q2 = 0;
573573   m_out1 = 2; // initial state of pit output is undefined
574574   m_pc_spkrdata = 0;
575   m_pit_out2 = 0;
575   m_pit_out2 = 1;
576576   m_dma_channel = -1;
577577   m_cur_eop = false;
578578   memset(m_dma_offset,0,sizeof(m_dma_offset));
trunk/src/mess/machine/ms7004.c
r0r241753
1/*
2    Electronika MS 7004 keyboard (DEC LK-201 workalike with extra keys
3    for Cyrillic characters).
4
5    To do:
6    - debug keymap
7    - receive data from host (not used by KSM but used by other boards)
8    - connect LEDs and speaker
9*/
10
11#include "emu.h"
12#include "ms7004.h"
13
14#define VERBOSE_DBG 1       /* general debug messages */
15
16#define DBG_LOG(N,M,A) \
17   do { \
18   if(VERBOSE_DBG>=N) \
19      { \
20         logerror("%11.6f at %s: ",machine().time().as_double(),machine().describe_context()); \
21         logerror A; \
22      } \
23   } while (0)
24
25//**************************************************************************
26//  MACROS / CONSTANTS
27//**************************************************************************
28
29#define MS7004_CPU_TAG   "i8048"
30#define MS7004_SPK_TAG   "beeper"
31
32
33//**************************************************************************
34//  DEVICE DEFINITIONS
35//**************************************************************************
36
37const device_type MS7004 = &device_creator<ms7004_device>;
38
39ROM_START( ms7004 )
40   ROM_REGION (0x800, MS7004_CPU_TAG, 0)
41   ROM_LOAD ("mc7004_keyboard_original.rom", 0x0000, 0x800, CRC(69fcab53) SHA1(2d7cc7cd182f2ee09ecf2c539e33db3c2195f778))
42ROM_END
43
44//-------------------------------------------------
45//  ADDRESS_MAP
46//-------------------------------------------------
47
48static ADDRESS_MAP_START( ms7004_map, AS_IO, 8, ms7004_device )
49   AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(p1_w)
50   AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w)
51   AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r)
52   AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_DEVWRITE("i8243", i8243_device, i8243_prog_w)
53ADDRESS_MAP_END
54
55//-------------------------------------------------
56//  MACHINE_CONFIG
57//-------------------------------------------------
58
59static MACHINE_CONFIG_FRAGMENT( ms7004 )
60   MCFG_CPU_ADD(MS7004_CPU_TAG, I8048, XTAL_4_608MHz)
61   MCFG_CPU_IO_MAP(ms7004_map)
62
63   MCFG_I8243_ADD("i8243", NOOP, WRITE8(ms7004_device, i8243_port_w))
64
65   MCFG_SPEAKER_STANDARD_MONO("mono")
66   MCFG_SOUND_ADD(MS7004_SPK_TAG, BEEP, 0)
67   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
68MACHINE_CONFIG_END
69
70
71//-------------------------------------------------
72//  machine_config_additions - device-specific
73//  machine configurations
74//-------------------------------------------------
75
76machine_config_constructor ms7004_device::device_mconfig_additions() const
77{
78   return MACHINE_CONFIG_NAME( ms7004 );
79}
80
81const rom_entry *ms7004_device::device_rom_region() const
82{
83   return ROM_NAME( ms7004 );
84}
85
86//-------------------------------------------------
87//  INPUT_PORTS( ms7004 )
88//-------------------------------------------------
89/*
90bit   sig   XSn   ВРn
91---   ---   ---   ---
920   8   16   15
931   9   15   14
942   10   14   13
953   11   13   12
964   12   19   16
975   13   12   11
986   14   11   10
997   15   10   9
1008   16   9   8
1019   17   8   7
10210   18   7   6
10311   19   6   5
10412   20   3   1
10513   21   1   2
10614   22   4   3
10715   23   5   4
108
1090xc9   KEY_LANGLE_RANGLE   'резервная клавиша'
1100xbc   KEY_DELETE   ЗБ
1110xbd   KEY_RETURN   ВК
1120xbf   KEY_TILDE   '; +'
1130xc4   -      'Ъ'
1140xca   -      '/ ?'
1150xed   KEY_PERIOD   'Ю @'
1160xf1   -      '_'
117<...>
118
1190x56   KEY_F1      СТОП КАДР
1200x57   KEY_F2      ПЕЧАТЬ КАДРА
1210x58   KEY_F3      ПАУЗА
1220x59   KEY_F4      УСТ РЕЖИМА
1230x5a   KEY_F5      Ф5
124
1250x64   KEY_F6      ПРЕРЫВ
1260x65   KEY_F7      ПРОДОЛЖ
1270x66   KEY_F8      ОТМЕН
1280x67   KEY_F9      ОСНОВН КАДР
1290x69   KEY_F10      ВЫХОД
130
1310x71   KEY_F11      Ф11 (АР2)
1320x72   KEY_F12      Ф12 (ВШ)
1330x73   KEY_F13      Ф13 (ПС)
1340x74   KEY_F14      ДОП ВАРИАНТ
135
1360x7c   KEY_HELP   ПМ
1370x7d   KEY_MENU   ИСП
138
1390x80   KEY_F17      Ф17
1400x81   KEY_F18      Ф18
1410x82   KEY_F19      Ф19
1420x83   KEY_F20      Ф20
143
1440xb0   KEY_LOCK   ФКС
1450xae   KEY_SHIFT   ВР
1460xaf   KEY_CTRL   СУ
147
1480xb1   KEY_META   КМП
1490xb2   -      РУС/ЛАТ
150
1510x8a   KEY_FIND   НТ
1520x8b   KEY_INSERT_HERE   ВСТ
1530x8c   KEY_REMOVE   УДАЛ
1540x8d   KEY_SELECT   ВЫБР
1550x8e   KEY_PREV_SCREEN   ПРЕД КАДР
1560x8f   KEY_NEXT_SCREEN   СЛЕД КАДР
157
158nothing sends '@' or '`'
159
160`/~   sends ^/~
1612/@   sends 2/"
1626/^   sends 6/&
1637/&   sends 7/'
1648/ *   sends 8/(
1659/(   sends 9/)
1660/)   sends 0/0
167-/_   sends _/_
168+/=   sends -/=
169;/:   sends ;/+
170'/"   sends :/ *
171
172F10   sends ^C
173F11   sends ESC
174F12   sends ^H
175*/
176INPUT_PORTS_START( ms7004 )
177   PORT_START("KBD12")   // vertical row 1
178   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Print Screen (F2)") PORT_CODE(KEYCODE_F2)
179   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Hold Screen (F1)") PORT_CODE(KEYCODE_F1)
180   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) // '{' / '|'
181   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(";") PORT_CODE(KEYCODE_COLON) // '+'
182   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB)
183   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL)
184   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Caps Lock") PORT_CODE(KEYCODE_CAPSLOCK) // what
185   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("LShift") PORT_CODE(KEYCODE_LSHIFT)
186
187   PORT_START("KBD13")   // vertical row 2
188   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Setup (F3)") PORT_CODE(KEYCODE_F3)
189   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Data / Talk (F4)") PORT_CODE(KEYCODE_F4)
190   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("1") PORT_CODE(KEYCODE_1)
191   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("J") PORT_CODE(KEYCODE_J)
192   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("C") PORT_CODE(KEYCODE_C)
193   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F") PORT_CODE(KEYCODE_F)
194   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Rus/Lat") PORT_CODE(KEYCODE_ESC)
195   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Compose") PORT_CODE(KEYCODE_LALT)
196
197   PORT_START("KBD14")   // vertical row 3
198   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Break (F5)") PORT_CODE(KEYCODE_F5)
199   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
200   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("2") PORT_CODE(KEYCODE_2)
201   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("U") PORT_CODE(KEYCODE_U)
202   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Y") PORT_CODE(KEYCODE_Y)
203   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Tilde") PORT_CODE(KEYCODE_TILDE) // ^
204   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Q") PORT_CODE(KEYCODE_Q)
205   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
206
207   PORT_START("KBD15")   // vertical row 4
208   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
209   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3") PORT_CODE(KEYCODE_3)
210   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("4") PORT_CODE(KEYCODE_4)
211   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("K") PORT_CODE(KEYCODE_K)
212   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("W") PORT_CODE(KEYCODE_W)
213   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("S") PORT_CODE(KEYCODE_S)
214   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
215   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
216
217   PORT_START("KBD11")   // vertical row 5
218   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Interrupt (F6)") PORT_CODE(KEYCODE_F6)
219   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("5") PORT_CODE(KEYCODE_5)
220   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("E") PORT_CODE(KEYCODE_E)
221   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("P") PORT_CODE(KEYCODE_P)
222   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("A") PORT_CODE(KEYCODE_A)
223   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("M") PORT_CODE(KEYCODE_M)
224   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
225   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
226
227   PORT_START("KBD10")   // vertical row 6
228   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Resume (F7)") PORT_CODE(KEYCODE_F7)
229   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6") PORT_CODE(KEYCODE_6)
230   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("N") PORT_CODE(KEYCODE_N)
231   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("G") PORT_CODE(KEYCODE_G)
232   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("R") PORT_CODE(KEYCODE_R)
233   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("T") PORT_CODE(KEYCODE_T)
234   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("I") PORT_CODE(KEYCODE_I)
235   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE)
236
237   PORT_START("KBD9")   // vertical row 7
238   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Cancel (F8)") PORT_CODE(KEYCODE_F8)
239   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Main Screen (F9)") PORT_CODE(KEYCODE_F9)
240   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7") PORT_CODE(KEYCODE_7)
241   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("[") PORT_CODE(KEYCODE_OPENBRACE)
242   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("]") PORT_CODE(KEYCODE_CLOSEBRACE)
243   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("O") PORT_CODE(KEYCODE_O)
244   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("X") PORT_CODE(KEYCODE_X)
245   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("B") PORT_CODE(KEYCODE_B)
246
247   PORT_START("KBD8")   // vertical row 8
248   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Exit (F10)") PORT_CODE(KEYCODE_F10)
249   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("9") PORT_CODE(KEYCODE_9)
250   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("8") PORT_CODE(KEYCODE_8)
251   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Z") PORT_CODE(KEYCODE_Z)
252   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("D") PORT_CODE(KEYCODE_D)
253   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("L") PORT_CODE(KEYCODE_L)
254   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) // '@'
255   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA)
256
257   PORT_START("KBD7")   // vertical row 9
258   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
259   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("ESC (F11)") PORT_CODE(KEYCODE_F11)
260   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("0") PORT_CODE(KEYCODE_0)
261   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("=") PORT_CODE(KEYCODE_EQUALS)
262   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("H") PORT_CODE(KEYCODE_H)
263   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("V") PORT_CODE(KEYCODE_V)
264   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\\") PORT_CODE(KEYCODE_BACKSLASH)
265   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/") PORT_CODE(KEYCODE_SLASH)
266
267   PORT_START("KBD6")   // vertical row 10
268   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("BS (F12)") PORT_CODE(KEYCODE_F12)
269   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("LF (F13)") PORT_CODE(KEYCODE_PRTSCR)
270   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) // '}'
271   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
272   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("'") PORT_CODE(KEYCODE_QUOTE) // ':'
273   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) // 'ъ'
274   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(".") PORT_CODE(KEYCODE_STOP)
275   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS)
276
277   PORT_START("KBD5")   // vertical row 11
278   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Additional Options (F14)") PORT_CODE(KEYCODE_PAUSE)
279   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
280   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Delete <X") PORT_CODE(KEYCODE_BACKSPACE)
281   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) // ???
282   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER)
283   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
284   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("RShift") PORT_CODE(KEYCODE_RSHIFT)
285   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
286
287   PORT_START("KBD3")   // vertical row 12
288   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Help (F15)") PORT_CODE(KEYCODE_RALT)
289   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Insert Here") PORT_CODE(KEYCODE_HOME)
290   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Find") PORT_CODE(KEYCODE_INSERT)
291   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Select") PORT_CODE(KEYCODE_DEL)
292   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Up") PORT_CODE(KEYCODE_UP)
293   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
294   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT)
295   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
296
297   PORT_START("KBD2")   // vertical row 13
298   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
299   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Remove") PORT_CODE(KEYCODE_PGUP)
300   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Next [v]") PORT_CODE(KEYCODE_PGDN)
301   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Previous [^]") PORT_CODE(KEYCODE_END)
302   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
303   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT)
304   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN)
305   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
306
307   PORT_START("KBD1")   // vertical row 14
308   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Do (F16)") PORT_CODE(KEYCODE_RCONTROL)
309   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
310   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PF1") PORT_CODE(KEYCODE_NUMLOCK)
311   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 7") PORT_CODE(KEYCODE_7_PAD)
312   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 4") PORT_CODE(KEYCODE_4_PAD)
313   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 1") PORT_CODE(KEYCODE_1_PAD)
314   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 2") PORT_CODE(KEYCODE_2_PAD)
315   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 0") PORT_CODE(KEYCODE_0_PAD)
316
317   PORT_START("KBD0")   // vertical row 15
318   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F17")
319   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F18")
320   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PF2") PORT_CODE(KEYCODE_SLASH_PAD)
321   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PF3") PORT_CODE(KEYCODE_ASTERISK)
322   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 8") PORT_CODE(KEYCODE_8_PAD)
323   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 5") PORT_CODE(KEYCODE_5_PAD)
324   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 6") PORT_CODE(KEYCODE_6_PAD)
325   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 3") PORT_CODE(KEYCODE_3_PAD)
326
327   PORT_START("KBD4")   // vertical row 16
328   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F19")
329   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F20")
330   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PF4") PORT_CODE(KEYCODE_MINUS_PAD)
331   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 9") PORT_CODE(KEYCODE_9_PAD)
332   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num ,") PORT_CODE(KEYCODE_PLUS_PAD)
333   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num -")
334   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num .") PORT_CODE(KEYCODE_DEL_PAD)  // "." on num.pad
335   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER_PAD)
336INPUT_PORTS_END
337
338
339//-------------------------------------------------
340//  input_ports - device-specific input ports
341//-------------------------------------------------
342
343ioport_constructor ms7004_device::device_input_ports() const
344{
345   return INPUT_PORTS_NAME( ms7004 );
346}
347
348//**************************************************************************
349//  LIVE DEVICE
350//**************************************************************************
351
352//-------------------------------------------------
353//  ms7004_device - constructor
354//-------------------------------------------------
355
356ms7004_device::ms7004_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
357   : device_t(mconfig, MS7004, "MS7004 keyboard", tag, owner, clock, "ms7004", __FILE__),
358//   device_serial_interface(mconfig, *this),
359   m_maincpu(*this, MS7004_CPU_TAG),
360   m_speaker(*this, MS7004_SPK_TAG),
361   m_i8243(*this, "i8243"),
362   m_kbd0(*this, "KBD0"),
363   m_kbd1(*this, "KBD1"),
364   m_kbd2(*this, "KBD2"),
365   m_kbd3(*this, "KBD3"),
366   m_kbd4(*this, "KBD4"),
367   m_kbd5(*this, "KBD5"),
368   m_kbd6(*this, "KBD6"),
369   m_kbd7(*this, "KBD7"),
370   m_kbd8(*this, "KBD8"),
371   m_kbd9(*this, "KBD9"),
372   m_kbd10(*this, "KBD10"),
373   m_kbd11(*this, "KBD11"),
374   m_kbd12(*this, "KBD12"),
375   m_kbd13(*this, "KBD13"),
376   m_kbd14(*this, "KBD14"),
377   m_kbd15(*this, "KBD15"),
378   m_tx_handler(*this)
379{
380}
381
382//-------------------------------------------------
383//  device_start - device-specific startup
384//-------------------------------------------------
385
386void ms7004_device::device_start()
387{
388   m_tx_handler.resolve_safe();
389}
390
391
392//-------------------------------------------------
393//  device_reset - device-specific reset
394//-------------------------------------------------
395
396void ms7004_device::device_reset()
397{
398}
399
400
401//-------------------------------------------------
402//  p1_w -
403//-------------------------------------------------
404
405WRITE8_MEMBER( ms7004_device::p1_w )
406{
407   /*
408       bit     description
409
410       0       Matrix row bit 0
411       1       Matrix row bit 1
412       2       Matrix row bit 2
413       3       Speaker
414       4       -STROBE (to matrix mux)
415       5       LED "Latin"
416       6
417       7       Serial TX
418   */
419   DBG_LOG(1,0,( "%s: p1_w %02x = send %d\n", tag(), data, BIT(data, 7)));
420
421   m_p1 = data;
422   m_tx_handler(BIT(data, 7));
423}
424
425
426//-------------------------------------------------
427//  p2_w -
428//-------------------------------------------------
429
430WRITE8_MEMBER( ms7004_device::p2_w )
431{
432   /*
433       bit     description
434
435       0       Matrix columns, to 8243 (port 4)
436       1       Matrix columns, to 8243 (port 5)
437       2       Matrix columns, to 8243 (port 6)
438       3       Matrix columns, to 8243 (port 7)
439       4       LED "Wait"
440       5       LED "Compose"
441       6       LED "Caps"
442       7       LED "Hold"
443   */
444   DBG_LOG(2,0,( "%s: p2_w %02x = col %d\n", tag(), data, data&15));
445
446   m_p2 = data;
447   m_i8243->i8243_p2_w(space, offset, data);
448}
449
450
451//-------------------------------------------------
452//  prog_w -
453//-------------------------------------------------
454
455WRITE8_MEMBER( ms7004_device::i8243_port_w )
456{
457   int sense = 0;
458
459   DBG_LOG(2,0,( "%s: 8243 port %d data %02xH\n",
460      tag(), offset + 4, data));
461   
462   if (data) {
463      switch(offset << 4 | data) {
464         case 0x01: sense = m_kbd0->read(); break;
465         case 0x02: sense = m_kbd1->read(); break;
466         case 0x04: sense = m_kbd2->read(); break;
467         case 0x08: sense = m_kbd3->read(); break;
468         case 0x11: sense = m_kbd4->read(); break;
469         case 0x12: sense = m_kbd5->read(); break;
470         case 0x14: sense = m_kbd6->read(); break;
471         case 0x18: sense = m_kbd7->read(); break;
472         case 0x21: sense = m_kbd8->read(); break;
473         case 0x22: sense = m_kbd9->read(); break;
474         case 0x24: sense = m_kbd10->read(); break;
475         case 0x28: sense = m_kbd11->read(); break;
476         case 0x31: sense = m_kbd12->read(); break;
477         case 0x32: sense = m_kbd13->read(); break;
478         case 0x34: sense = m_kbd14->read(); break;
479         case 0x38: sense = m_kbd15->read(); break;
480      }
481      m_keylatch = BIT(sense, (m_p1 & 7));
482      DBG_LOG(2,0,( "%s: row %d col %02x t1 %d\n",
483         tag(), (m_p1 & 7), (offset << 4 | data), m_keylatch));
484   }
485}
486
487
488//-------------------------------------------------
489//  t1_r -
490//-------------------------------------------------
491
492READ8_MEMBER( ms7004_device::t1_r )
493{
494   if (!BIT(m_p1,4))
495      return m_keylatch;
496   else
497      return 0;
498}
trunk/src/mess/machine/ms7004.h
r0r241753
1#pragma once
2
3#ifndef __MS7004_H__
4#define __MS7004_H__
5
6#include "emu.h"
7#include "cpu/mcs48/mcs48.h"
8#include "machine/i8243.h"
9#include "sound/beep.h"
10
11//**************************************************************************
12//  MACROS / CONSTANTS
13//**************************************************************************
14
15
16//**************************************************************************
17//  INTERFACE CONFIGURATION MACROS
18//**************************************************************************
19
20#define MCFG_MS7004_TX_HANDLER(_cb) \
21   devcb = &ms7004_device::set_tx_handler(*device, DEVCB_##_cb);
22
23
24//**************************************************************************
25//  TYPE DEFINITIONS
26//**************************************************************************
27
28// ======================> ms7004_device
29
30class ms7004_device : public device_t //, public device_serial_interface
31{
32public:
33   // construction/destruction
34   ms7004_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
35
36   template<class _Object> static devcb_base &set_tx_handler(device_t &device, _Object wr) { return downcast<ms7004_device &>(device).m_tx_handler.set_callback(wr); }
37
38   DECLARE_WRITE8_MEMBER( p1_w );
39   DECLARE_WRITE8_MEMBER( p2_w );
40   DECLARE_READ8_MEMBER( t1_r );
41   DECLARE_WRITE8_MEMBER( i8243_port_w );
42
43protected:
44   // device-level overrides
45   virtual machine_config_constructor device_mconfig_additions() const;
46   virtual const rom_entry *device_rom_region() const;
47   virtual ioport_constructor device_input_ports() const;
48   virtual void device_start();
49   virtual void device_reset();
50
51private:
52   required_device<cpu_device> m_maincpu;
53   required_device<beep_device> m_speaker;
54   required_device<i8243_device> m_i8243;
55
56   required_ioport m_kbd0;
57   required_ioport m_kbd1;
58   required_ioport m_kbd2;
59   required_ioport m_kbd3;
60   required_ioport m_kbd4;
61   required_ioport m_kbd5;
62   required_ioport m_kbd6;
63   required_ioport m_kbd7;
64   required_ioport m_kbd8;
65   required_ioport m_kbd9;
66   required_ioport m_kbd10;
67   required_ioport m_kbd11;
68   required_ioport m_kbd12;
69   required_ioport m_kbd13;
70   required_ioport m_kbd14;
71   required_ioport m_kbd15;
72
73   int m_keylatch;                 // keyboard row latch
74   UINT8 m_p1;
75   UINT8 m_p2;
76
77   devcb_write_line m_tx_handler;
78};
79
80// device type definition
81extern const device_type MS7004;
82
83#endif
trunk/src/mess/machine/thomson.c
r241752r241753
638638   MCFG_RS232_CTS_HANDLER(WRITELINE(to7_io_line_device, write_cts))
639639   MCFG_RS232_DSR_HANDLER(WRITELINE(to7_io_line_device, write_dsr))
640640
641   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
641   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
642642   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(THOM_PIA_IO, pia6821_device, cb1_w))
643643   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(to7_io_line_device, write_centronics_busy))
644644
trunk/src/mess/machine/ti85.c
r241752r241753
154154{
155155   //address_space &space = m_maincpu->space(AS_PROGRAM);
156156
157   m_membank1->set_bank(0); //Always flash page 0, well allmost
157   m_membank1->set_bank(m_booting ? 0x1f : 0); //Always flash page 0, well allmost
158158   
159159   if (m_ti83p_port4 & 1)
160160   {
r241752r241753
182182{
183183   //address_space &space = m_maincpu->space(AS_PROGRAM);
184184   
185   m_membank1->set_bank(m_ti8x_memory_page_0);
185   m_membank1->set_bank(m_booting ? (m_model==TI84P ? 0x3f : 0x7f) : 0);
186186   
187187   if (m_ti83p_port4 & 1)
188188    {
r241752r241753
273273   m_PCR = 0xc0;
274274}
275275
276DIRECT_UPDATE_MEMBER(ti85_state::ti83p_direct_update_handler)
277{
278   if (m_booting)
279   {
280        if (((m_ti83p_port4 & 1) && (address >= 0x4000 && address < 0xc000)) || (address >= 0x4000 && address < 0x8000))
281        {
282            m_booting = false;
283         update_ti83p_memory();
284      }
285    }
286   return address;
287}
288
289
276290MACHINE_RESET_MEMBER(ti85_state,ti83p)
277291{
278292   m_red_out = 0x00;
279293   m_white_out = 0x00;
280294   m_PCR = 0xc0;
281295
282   m_ti8x_memory_page_0 = 0;//0x1f;
283296
284    if (m_model == TI83P)
285    {
286        m_ti8x_memory_page_1 = 0x1f;
287    }
288    else if (m_model == TI84P)
289    {
290        m_ti8x_memory_page_1 = 0x3f;
291    }
292    else
293    {
294       m_ti8x_memory_page_1 = 0x7f;
295    }
296
297    m_ti8x_memory_page_1 = 0;
297298   m_ti8x_memory_page_2 = 0;
298299   m_ti8x_memory_page_3 = 0;
299300   m_ti83p_port4 = 1;
301   m_booting = true;
300302   if (m_model == TI83P)
301303    {
302304        update_ti83p_memory();
r241752r241753
305307    {
306308        update_ti83pse_memory();
307309    }
308
309   m_maincpu->set_pc(0x8000);
310310}
311311
312312MACHINE_START_MEMBER(ti85_state,ti83p)
r241752r241753
314314   m_model = TI83P;
315315   //address_space &space = m_maincpu->space(AS_PROGRAM);
316316   //m_bios = memregion("flash")->base();
317   m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(ti85_state::ti83p_direct_update_handler), this));
317318
318319   m_timer_interrupt_mask = 0;
319320   m_timer_interrupt_status = 0;
320321   m_ON_interrupt_mask = 0;
321322   m_ON_interrupt_status = 0;
322323   m_ON_pressed = 0;
323   m_ti8x_memory_page_0 = 0;//0x1f;
324   m_ti8x_memory_page_1 = 0x1f;
324   m_ti8x_memory_page_1 = 0;
325325   m_ti8x_memory_page_2 = 0;
326326   m_ti8x_memory_page_3 = 0;
327327   m_LCD_memory_base = 0;
r241752r241753
334334   m_ti83p_port4 = 1;
335335   m_flash_unlocked = 0;
336336
337   m_booting = true;
338
337339    ti85_state::update_ti83p_memory();
338   m_maincpu->set_pc(0x8000); //this is a hack due to incomplete memory mapping emulation
339340
340341
341342   machine().scheduler().timer_pulse(attotime::from_hz(256), timer_expired_delegate(FUNC(ti85_state::ti83_timer1_callback),this));
r241752r241753
345346   /* save states and debugging */
346347   save_item(NAME(m_timer_interrupt_status));
347348    save_item(NAME(m_timer_interrupt_mask));
348   save_item(NAME(m_ti8x_memory_page_0));
349349   save_item(NAME(m_ti8x_memory_page_1));
350350   save_item(NAME(m_ti8x_memory_page_2));
351351   save_item(NAME(m_ti8x_memory_page_3));
352352   save_item(NAME(m_ti83p_port4));
353   save_item(NAME(m_booting));
353354}
354355
355356void ti85_state::ti8xpse_init_common()
r241752r241753
363364   m_ON_interrupt_mask = 0;
364365   m_ON_interrupt_status = 0;
365366   m_ON_pressed = 0;
366   m_ti8x_memory_page_0 = 00;//0x7f;
367   m_ti8x_memory_page_1 = (m_model != TI84P ) ? 0x7f : 0x3f ;
367   m_ti8x_memory_page_1 = 0;
368368   m_ti8x_memory_page_2 = 0;
369369   m_ti8x_memory_page_3 = 0;
370370   m_LCD_memory_base = 0;
r241752r241753
378378   m_flash_unlocked = 0;
379379
380380   ti85_state::update_ti83pse_memory();
381   m_maincpu->set_pc(0x8000);//same as above, hack to work around incomplete memory mapping emulation
381   m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(ti85_state::ti83p_direct_update_handler), this));
382382
383383
384384   machine().scheduler().timer_pulse(attotime::from_hz(256), timer_expired_delegate(FUNC(ti85_state::ti83_timer1_callback),this));
r241752r241753
391391      /* save states and debugging */
392392   save_item(NAME(m_ctimer_interrupt_status));
393393   save_item(NAME(m_timer_interrupt_status));
394   save_item(NAME(m_ti8x_memory_page_0));
395394   save_item(NAME(m_ti8x_memory_page_1));
396395   save_item(NAME(m_ti8x_memory_page_2));
397396   save_item(NAME(m_ti8x_memory_page_3));
trunk/src/mess/machine/victor9k_fdc.c
r0r241753
1// license:BSD-3-Clause
2// copyright-holders:Curt Coder
3/**********************************************************************
4
5    Victor 9000 floppy disk controller emulation
6
7    Copyright MESS Team.
8    Visit http://mamedev.org for licensing and usage restrictions.
9
10**********************************************************************/
11
12/*
13
14    TODO:
15
16   - disk error 2 (cannot find block header?)
17   - 8048 spindle speed control
18    - read PLL
19    - write logic
20
21*/
22
23#include "victor9k_fdc.h"
24
25
26
27//**************************************************************************
28//  MACROS / CONSTANTS
29//**************************************************************************
30
31#define LOG 0
32#define LOG_VIA 0
33#define LOG_SCP 0
34
35#define I8048_TAG       "5d"
36#define M6522_4_TAG     "1f"
37#define M6522_5_TAG     "1k"
38#define M6522_6_TAG     "1h"
39
40
41
42//**************************************************************************
43//  DEVICE DEFINITIONS
44//**************************************************************************
45
46const device_type VICTOR_9000_FDC = &device_creator<victor_9000_fdc_t>;
47
48
49//-------------------------------------------------
50//  ROM( victor_9000_fdc )
51//-------------------------------------------------
52
53ROM_START( victor_9000_fdc )
54   ROM_REGION( 0x400, I8048_TAG, 0)
55   ROM_LOAD( "36080.5d", 0x000, 0x400, CRC(9bf49f7d) SHA1(b3a11bb65105db66ae1985b6f482aab6ea1da38b) )
56
57   ROM_REGION( 0x800, "gcr", 0 )
58   ROM_LOAD( "100836-001.4k", 0x000, 0x800, CRC(adc601bd) SHA1(6eeff3d2063ae2d97452101aa61e27ef83a467e5) )
59ROM_END
60
61
62//-------------------------------------------------
63//  rom_region - device-specific ROM region
64//-------------------------------------------------
65
66const rom_entry *victor_9000_fdc_t::device_rom_region() const
67{
68   return ROM_NAME( victor_9000_fdc );
69}
70
71
72//-------------------------------------------------
73//  ADDRESS_MAP( floppy_io )
74//-------------------------------------------------
75
76static ADDRESS_MAP_START( floppy_io, AS_IO, 8, victor_9000_fdc_t )
77   AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(floppy_p1_r) AM_WRITENOP
78   AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(floppy_p2_r, floppy_p2_w)
79   AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(tach0_r)
80   AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(tach1_r)
81   AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_WRITE(da_w)
82ADDRESS_MAP_END
83
84
85//-------------------------------------------------
86//  SLOT_INTERFACE( victor9k_floppies )
87//-------------------------------------------------
88
89int victor_9000_fdc_t::load0_cb(floppy_image_device *device)
90{
91   m_via4->write_ca1(0);
92
93   return IMAGE_INIT_PASS;
94}
95
96void victor_9000_fdc_t::unload0_cb(floppy_image_device *device)
97{
98   m_via4->write_ca1(1);
99}
100
101int victor_9000_fdc_t::load1_cb(floppy_image_device *device)
102{
103   m_via4->write_cb1(0);
104
105   return IMAGE_INIT_PASS;
106}
107
108void victor_9000_fdc_t::unload1_cb(floppy_image_device *device)
109{
110   m_via4->write_cb1(1);
111}
112
113static SLOT_INTERFACE_START( victor9k_floppies )
114   SLOT_INTERFACE( "525ssqd", FLOPPY_525_SSQD ) // Tandon TM100-3 with custom electronics
115   SLOT_INTERFACE( "525qd", FLOPPY_525_QD ) // Tandon TM100-4 with custom electronics
116SLOT_INTERFACE_END
117
118FLOPPY_FORMATS_MEMBER( victor_9000_fdc_t::floppy_formats )
119   FLOPPY_VICTOR_9000_FORMAT
120FLOPPY_FORMATS_END
121
122
123//-------------------------------------------------
124//  MACHINE_CONFIG_FRAGMENT( victor_9000_fdc )
125//-------------------------------------------------
126
127static MACHINE_CONFIG_FRAGMENT( victor_9000_fdc )
128   MCFG_CPU_ADD(I8048_TAG, I8048, XTAL_30MHz/6)
129   MCFG_CPU_IO_MAP(floppy_io)
130
131   MCFG_DEVICE_ADD(M6522_4_TAG, VIA6522, XTAL_30MHz/30)
132   MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor_9000_fdc_t, via4_pa_w))
133   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor_9000_fdc_t, via4_pb_w))
134   MCFG_VIA6522_CA2_HANDLER(WRITELINE(victor_9000_fdc_t, wrsync_w))
135   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor_9000_fdc_t, via4_irq_w))
136
137   MCFG_DEVICE_ADD(M6522_5_TAG, VIA6522, XTAL_30MHz/30)
138   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor_9000_fdc_t, via5_irq_w))
139   MCFG_VIA6522_READPA_HANDLER(READ8(victor_9000_fdc_t, via5_pa_r))
140   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor_9000_fdc_t, via5_pb_w))
141
142   MCFG_DEVICE_ADD(M6522_6_TAG, VIA6522, XTAL_30MHz/30)
143   MCFG_VIA6522_READPA_HANDLER(READ8(victor_9000_fdc_t, via6_pa_r))
144   MCFG_VIA6522_READPB_HANDLER(READ8(victor_9000_fdc_t, via6_pb_r))
145   MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(victor_9000_fdc_t, via6_pa_w))
146   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor_9000_fdc_t, via6_pb_w))
147   MCFG_VIA6522_CA2_HANDLER(WRITELINE(victor_9000_fdc_t, drw_w))
148   MCFG_VIA6522_CB2_HANDLER(WRITELINE(victor_9000_fdc_t, erase_w))
149   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor_9000_fdc_t, via6_irq_w))
150
151   MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":0", victor9k_floppies, "525qd", victor_9000_fdc_t::floppy_formats)
152   MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":1", victor9k_floppies, "525qd", victor_9000_fdc_t::floppy_formats)
153MACHINE_CONFIG_END
154
155
156//-------------------------------------------------
157//  machine_config_additions - device-specific
158//  machine configurations
159//-------------------------------------------------
160
161machine_config_constructor victor_9000_fdc_t::device_mconfig_additions() const
162{
163   return MACHINE_CONFIG_NAME( victor_9000_fdc );
164}
165
166
167
168//**************************************************************************
169//  LIVE DEVICE
170//**************************************************************************
171
172//-------------------------------------------------
173//  victor_9000_fdc_t - constructor
174//-------------------------------------------------
175
176victor_9000_fdc_t::victor_9000_fdc_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
177   device_t(mconfig, VICTOR_9000_FDC, "Victor 9000 FDC", tag, owner, clock, "victor9k_fdc", __FILE__),
178   m_irq_cb(*this),
179   m_syn_cb(*this),
180   m_lbrdy_cb(*this),
181   m_maincpu(*this, I8048_TAG),
182   m_via4(*this, M6522_4_TAG),
183   m_via5(*this, M6522_5_TAG),
184   m_via6(*this, M6522_6_TAG),
185   m_floppy0(*this, I8048_TAG":0:525qd"),
186   m_floppy1(*this, I8048_TAG":1:525qd"),
187   m_gcr_rom(*this, "gcr"),
188   m_da(0),
189   m_da0(0),
190   m_da1(0),
191   m_start0(1),
192   m_stop0(1),
193   m_start1(1),
194   m_stop1(1),
195   m_sel0(0),
196   m_sel1(0),
197   m_tach0(0),
198   m_tach1(0),
199   m_rdy0(0),
200   m_rdy1(0),
201   m_l0ms(0),
202   m_l1ms(0),
203   m_st0(0),
204   m_st1(0),
205   m_stp0(0),
206   m_stp1(0),
207   m_drive(0),
208   m_side(0),
209   m_via4_irq(CLEAR_LINE),
210   m_via5_irq(CLEAR_LINE),
211   m_via6_irq(CLEAR_LINE),
212   m_syn(0),
213   m_lbrdy(1),
214   m_period(attotime::from_nsec(2130))
215{
216   cur_live.tm = attotime::never;
217   cur_live.state = IDLE;
218   cur_live.next_state = -1;
219   cur_live.write_position = 0;
220   cur_live.write_start_time = attotime::never;
221}
222
223
224//-------------------------------------------------
225//  device_start - device-specific startup
226//-------------------------------------------------
227
228void victor_9000_fdc_t::device_start()
229{
230   // allocate timer
231   t_gen = timer_alloc(TM_GEN);
232   t_tach0 = timer_alloc(TM_TACH0);
233   t_tach1 = timer_alloc(TM_TACH1);
234
235   // state saving
236   save_item(NAME(m_da));
237   save_item(NAME(m_da0));
238   save_item(NAME(m_da1));
239   save_item(NAME(m_start0));
240   save_item(NAME(m_stop0));
241   save_item(NAME(m_start1));
242   save_item(NAME(m_stop1));
243   save_item(NAME(m_sel0));
244   save_item(NAME(m_sel1));
245   save_item(NAME(m_tach0));
246   save_item(NAME(m_tach1));
247   save_item(NAME(m_rdy0));
248   save_item(NAME(m_rdy1));
249   save_item(NAME(m_l0ms));
250   save_item(NAME(m_l1ms));
251   save_item(NAME(m_st0));
252   save_item(NAME(m_st1));
253   save_item(NAME(m_stp0));
254   save_item(NAME(m_stp1));
255   save_item(NAME(m_drive));
256   save_item(NAME(m_side));
257   save_item(NAME(m_drw));
258   save_item(NAME(m_erase));
259   save_item(NAME(m_via4_irq));
260   save_item(NAME(m_via5_irq));
261   save_item(NAME(m_via6_irq));
262   save_item(NAME(m_syn));
263   save_item(NAME(m_lbrdy));
264}
265
266
267//-------------------------------------------------
268//  device_reset - device-specific reset
269//-------------------------------------------------
270
271void victor_9000_fdc_t::device_reset()
272{
273   live_abort();
274
275   // resolve callbacks
276   m_irq_cb.resolve_safe();
277   m_syn_cb.resolve_safe();
278   m_lbrdy_cb.resolve_safe();
279
280   // reset devices
281   m_via4->reset();
282   m_via5->reset();
283   m_via6->reset();
284
285   // set floppy callbacks
286   m_floppy0->setup_load_cb(floppy_image_device::load_cb(FUNC(victor_9000_fdc_t::load0_cb), this));
287   m_floppy0->setup_unload_cb(floppy_image_device::unload_cb(FUNC(victor_9000_fdc_t::unload0_cb), this));
288
289   m_floppy1->setup_load_cb(floppy_image_device::load_cb(FUNC(victor_9000_fdc_t::load1_cb), this));
290   m_floppy1->setup_unload_cb(floppy_image_device::unload_cb(FUNC(victor_9000_fdc_t::unload1_cb), this));
291}
292
293
294//-------------------------------------------------
295//  device_timer - handler timer events
296//-------------------------------------------------
297
298void victor_9000_fdc_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
299{
300   switch (id)
301   {
302   case TM_GEN:
303      live_sync();
304      live_run();
305      break;
306
307   case TM_TACH0:
308      // TODO
309      break;
310
311   case TM_TACH1:
312      // TODO
313      break;
314   }
315}
316
317
318//-------------------------------------------------
319//  floppy_p1_r -
320//-------------------------------------------------
321
322READ8_MEMBER( victor_9000_fdc_t::floppy_p1_r )
323{
324   /*
325
326       bit     description
327
328       0       L0MS0
329       1       L0MS1
330       2       L0MS2
331       3       L0MS3
332       4       L1MS0
333       5       L1MS1
334       6       L1MS2
335       7       L1MS3
336
337   */
338
339   return (m_l1ms << 4) | m_l0ms;
340}
341
342
343//-------------------------------------------------
344//  floppy_p2_r -
345//-------------------------------------------------
346
347READ8_MEMBER( victor_9000_fdc_t::floppy_p2_r )
348{
349   return m_p2; // TODO needed because of ORL/ANL P2, should be in mcs48.c
350}
351
352
353//-------------------------------------------------
354//  floppy_p2_w -
355//-------------------------------------------------
356
357WRITE8_MEMBER( victor_9000_fdc_t::floppy_p2_w )
358{
359   /*
360
361       bit     description
362
363       0       START0
364       1       STOP0
365       2       START1
366       3       STOP1
367       4       SEL1
368       5       SEL0
369       6       RDY0
370       7       RDY1
371
372   */
373
374   m_p2 = data;
375
376   bool sync = false;
377
378   int start0 = BIT(data, 0);
379   if (m_start0 != start0) sync = true;
380
381   int stop0 = BIT(data, 1);
382   if (m_stop0 != stop0) sync = true;
383
384   int start1 = BIT(data, 2);
385   if (m_start1 != start1) sync = true;
386
387   int stop1 = BIT(data, 3);
388   if (m_stop1 != stop1) sync = true;
389
390   int sel0 = BIT(data, 5);
391   if (m_sel0 != sel0) sync = true;
392
393   int sel1 = BIT(data, 4);
394   if (m_sel1 != sel1) sync = true;
395
396   //m_rdy0 = BIT(data, 6);
397   //m_via5->write_ca2(m_rdy0);
398
399   //m_rdy1 = BIT(data, 7);
400   //m_via5->write_cb2(m_rdy1);
401
402   if (LOG_SCP) logerror("%s %s START0/STOP0/SEL0/RDY0 %u/%u/%u/%u START1/STOP1/SEL1/RDY1 %u/%u/%u/%u\n", machine().time().as_string(), machine().describe_context(), start0, stop0, sel0, m_rdy0, start1, stop1, sel1, m_rdy1);
403
404   if (sync)
405   {
406      live_sync();
407
408      m_start0 = start0;
409      m_stop0 = stop0;
410      m_sel0 = sel0;
411      //update_spindle_motor(m_floppy0, t_tach0, m_start0, m_stop0, m_sel0, m_da0);
412
413      m_start1 = start1;
414      m_stop1 = stop1;
415      m_sel1 = sel1;
416      //update_spindle_motor(m_floppy1, t_tach1, m_start1, m_stop1, m_sel1, m_da1);
417
418      checkpoint();
419
420      if (!m_floppy0->mon_r() || !m_floppy1->mon_r()) {
421         if(cur_live.state == IDLE) {
422            live_start();
423         }
424      } else {
425         live_abort();
426      }
427
428      live_run();
429   }
430}
431
432
433//-------------------------------------------------
434//  tach0_r -
435//-------------------------------------------------
436
437READ8_MEMBER( victor_9000_fdc_t::tach0_r )
438{
439   return m_tach0;
440}
441
442
443//-------------------------------------------------
444//  tach1_r -
445//-------------------------------------------------
446
447READ8_MEMBER( victor_9000_fdc_t::tach1_r )
448{
449   return m_tach1;
450}
451
452
453void victor_9000_fdc_t::update_stepper_motor(floppy_image_device *floppy, int stp, int old_st, int st)
454{
455   if (stp) return;
456
457   int tracks = 0;
458
459   switch (old_st)
460   {
461   case   6: if (st == 0xa) tracks++; else if (st ==   5) tracks--; break;
462   case   5: if (st ==   6) tracks++; else if (st ==   9) tracks--; break;
463   case   9: if (st ==   5) tracks++; else if (st == 0xa) tracks--; break;
464   case 0xa: if (st ==   9) tracks++; else if (st ==   6) tracks--; break;
465   }
466
467   if (tracks == -1)
468   {
469      floppy->dir_w(1);
470      floppy->stp_w(1);
471      floppy->stp_w(0);
472   }
473   else if (tracks == 1)
474   {
475      floppy->dir_w(0);
476      floppy->stp_w(1);
477      floppy->stp_w(0);
478   }
479}
480
481void victor_9000_fdc_t::update_spindle_motor(floppy_image_device *floppy, emu_timer *t_tach, bool start, bool stop, bool sel, UINT8 &da)
482{
483   if (start && !stop && floppy->mon_r()) {
484      if (LOG_SCP) logerror("%s: motor start\n", floppy->tag());
485      floppy->mon_w(0);
486   } else if (stop && !floppy->mon_r()) {
487      if (LOG_SCP) logerror("%s: motor stop\n", floppy->tag());
488      floppy->mon_w(1);
489   }
490
491   if (sel) {
492      da = m_da;
493   }
494}
495
496
497//-------------------------------------------------
498//  da_w -
499//-------------------------------------------------
500
501WRITE8_MEMBER( victor_9000_fdc_t::da_w )
502{
503   if (LOG_SCP) logerror("%s %s DA %02x\n", machine().time().as_string(), machine().describe_context(), data);
504
505   if (m_da != data)
506   {
507      live_sync();
508      m_da = data;
509      update_spindle_motor(m_floppy0, t_tach0, m_start0, m_stop0, m_sel0, m_da0);
510      update_spindle_motor(m_floppy1, t_tach1, m_start1, m_stop1, m_sel1, m_da1);
511      checkpoint();
512      live_run();
513   }
514}
515
516WRITE8_MEMBER( victor_9000_fdc_t::via4_pa_w )
517{
518   /*
519
520       bit     description
521
522       PA0     L0MS0
523       PA1     L0MS1
524       PA2     L0MS2
525       PA3     L0MS3
526       PA4     ST0A
527       PA5     ST0B
528       PA6     ST0C
529       PA7     ST0D
530
531   */
532
533   m_l0ms = data & 0x0f;
534
535   { // HACK to bypass SCP
536      m_floppy0->mon_w((m_l0ms == 0xf) ? 1 : 0);
537      m_floppy0->set_rpm(victor9k_format::get_rpm(m_side, m_floppy0->get_cyl()));
538      m_rdy0 = (m_l0ms == 0xf) ? 0 : 1;
539      m_via5->write_ca2(m_rdy0);
540   }
541
542   UINT8 st0 = data >> 4;
543
544   if (LOG_VIA) logerror("%s %s L0MS %01x ST0 %01x\n", machine().time().as_string(), machine().describe_context(), m_l0ms, st0);
545
546   if (m_st0 != st0)
547   {
548      live_sync();
549      update_stepper_motor(m_floppy0, m_stp0, st0, m_st0);
550      m_st0 = st0;
551      checkpoint();
552      live_run();
553   }
554}
555
556WRITE8_MEMBER( victor_9000_fdc_t::via4_pb_w )
557{
558   /*
559
560       bit     description
561
562       PB0     L1MS0
563       PB1     L1MS1
564       PB2     L1MS2
565       PB3     L1MS3
566       PB4     ST1A
567       PB5     ST1B
568       PB6     ST1C
569       PB7     ST1D
570
571   */
572
573   m_l1ms = data & 0x0f;
574
575   { // HACK to bypass SCP
576      m_floppy1->mon_w((m_l1ms == 0xf) ? 1 : 0);
577      m_floppy1->set_rpm(victor9k_format::get_rpm(m_side, m_floppy1->get_cyl()));
578      m_rdy1 = (m_l1ms == 0xf) ? 0 : 1;
579      m_via5->write_cb2(m_rdy1);
580   }
581
582   UINT8 st1 = data >> 4;
583
584   if (LOG_VIA) logerror("%s %s L1MS %01x ST1 %01x\n", machine().time().as_string(), machine().describe_context(), m_l1ms, st1);
585
586   if (m_st1 != st1)
587   {
588      live_sync();
589      update_stepper_motor(m_floppy1, m_stp1, st1, m_st1);
590      m_st1 = st1;
591      checkpoint();
592      live_run();
593   }
594}
595
596WRITE_LINE_MEMBER( victor_9000_fdc_t::wrsync_w )
597{
598   if (m_wrsync != state)
599   {
600      live_sync();
601      m_wrsync = state;
602      cur_live.wrsync = state;
603      checkpoint();
604      if (LOG_VIA) logerror("%s %s ERASE %u\n", machine().time().as_string(), machine().describe_context(), state);
605      live_run();
606   }
607}
608
609WRITE_LINE_MEMBER( victor_9000_fdc_t::via4_irq_w )
610{
611   m_via4_irq = state;
612
613   m_irq_cb(m_via4_irq || m_via5_irq || m_via6_irq);
614}
615
616READ8_MEMBER( victor_9000_fdc_t::via5_pa_r )
617{
618   /*
619
620       bit     description
621
622       PA0     E0
623       PA1     E1
624       PA2     I1
625       PA3     E2
626       PA4     E4
627       PA5     E5
628       PA6     I7
629       PA7     E6
630
631   */
632
633   UINT8 e = checkpoint_live.e;
634   UINT8 i = checkpoint_live.i;
635
636   return BIT(e, 6) << 7 | BIT(i, 7) << 6 | BIT(e, 5) << 5 | BIT(e, 4) << 4 | BIT(e, 2) << 3 | BIT(i, 1) << 2 | (e & 0x03);
637}
638
639WRITE8_MEMBER( victor_9000_fdc_t::via5_pb_w )
640{
641   /*
642
643       bit     description
644
645       PB0     WD0
646       PB1     WD1
647       PB2     WD2
648       PB3     WD3
649       PB4     WD4
650       PB5     WD5
651       PB6     WD6
652       PB7     WD7
653
654   */
655
656   if (m_wd != data)
657   {
658      live_sync();
659      m_wd = cur_live.wd = data;
660      if (LOG_VIA) logerror("%s %s WD %02x\n", machine().time().as_string(), machine().describe_context(), data);
661      checkpoint();
662      live_run();
663   }
664}
665
666WRITE_LINE_MEMBER( victor_9000_fdc_t::via5_irq_w )
667{
668   m_via5_irq = state;
669
670   m_irq_cb(m_via4_irq || m_via5_irq || m_via6_irq);
671}
672
673
674READ8_MEMBER( victor_9000_fdc_t::via6_pa_r )
675{
676   /*
677
678       bit     description
679
680       PA0
681       PA1     _TRK0D0
682       PA2
683       PA3     _TRK0D1
684       PA4
685       PA5
686       PA6     WPS
687       PA7     _SYNC
688
689   */
690
691   if (LOG_VIA) logerror("%s %s TRK0D0 %u TRK0D1 %u SYNC %u\n", machine().time().as_string(), machine().describe_context(), m_floppy0->trk00_r(), m_floppy1->trk00_r(), checkpoint_live.sync);
692
693   UINT8 data = 0;
694
695   // track 0 drive A sense
696   data |= m_floppy0->trk00_r() << 1;
697
698   // track 0 drive B sense
699   data |= m_floppy1->trk00_r() << 3;
700
701   // write protect sense
702   data |= (m_drive ? m_floppy1->wpt_r() : m_floppy0->wpt_r()) << 6;
703
704   // disk sync detect
705   data |= checkpoint_live.sync << 7;
706
707   return data;
708}
709
710WRITE8_MEMBER( victor_9000_fdc_t::via6_pa_w )
711{
712   /*
713
714       bit     description
715
716       PA0     LED0A
717       PA1
718       PA2     LED1A
719       PA3
720       PA4     SIDE SELECT
721       PA5     DRIVE SELECT
722       PA6
723       PA7
724
725   */
726
727   // LED, drive A
728   output_set_led_value(LED_A, BIT(data, 0));
729
730   // LED, drive B
731   output_set_led_value(LED_B, BIT(data, 2));
732
733   bool sync = false;
734
735   // dual side select
736   int side = BIT(data, 4);
737   if (m_side != side) sync = true;
738
739   // select drive A/B
740   int drive = BIT(data, 5);
741   if (m_drive != drive) sync = true;
742
743   if (sync)
744   {
745      live_sync();
746
747      m_side = side;
748      cur_live.side = side;
749      m_floppy0->ss_w(side);
750      m_floppy1->ss_w(side);
751
752      m_drive = drive;
753      cur_live.drive = drive;
754
755      if (LOG_VIA) logerror("%s %s SIDE %u DRIVE %u\n", machine().time().as_string(), machine().describe_context(), side, drive);
756
757      checkpoint();
758      live_run();
759   }
760}
761
762READ8_MEMBER( victor_9000_fdc_t::via6_pb_r )
763{
764   /*
765
766       bit     description
767
768       PB0     RDY0
769       PB1     RDY1
770       PB2
771       PB3     _DS1
772       PB4     _DS0
773       PB5     SINGLE/_DOUBLE SIDED
774       PB6
775       PB7
776
777   */
778
779   UINT8 data = 0;
780
781   // motor speed status, drive A
782   data |= m_rdy0;
783
784   // motor speed status, drive B
785   data |= m_rdy1 << 1;
786
787   // door B sense
788   data |= (m_floppy1->exists() ? 0 : 1) << 3;
789
790   // door A sense
791   data |= (m_floppy0->exists() ? 0 : 1) << 4;
792
793   // single/double sided
794   data |= (m_drive ? m_floppy1->twosid_r() : m_floppy0->twosid_r()) << 5;
795
796   return data;
797}
798
799WRITE8_MEMBER( victor_9000_fdc_t::via6_pb_w )
800{
801   /*
802
803       bit     description
804
805       PB0
806       PB1
807       PB2     _SCRESET
808       PB3
809       PB4
810       PB5
811       PB6     STP0
812       PB7     STP1
813
814   */
815
816   // motor speed controller reset
817   if (!BIT(data, 2))
818      m_maincpu->reset();
819
820   bool sync = false;
821
822   // stepper enable A
823   int stp0 = BIT(data, 6);
824   if (m_stp0 != stp0) sync = true;
825
826   // stepper enable B
827   int stp1 = BIT(data, 7);
828   if (m_stp1 != stp1) sync = true;
829
830   if (sync)
831   {
832      live_sync();
833
834      m_stp0 = stp0;
835      update_stepper_motor(m_floppy0, m_stp0, m_st0, m_st0);
836
837      m_stp1 = stp1;
838      update_stepper_motor(m_floppy1, m_stp1, m_st1, m_st1);
839
840      if (LOG_VIA) logerror("%s %s STP0 %u STP1 %u\n", machine().time().as_string(), machine().describe_context(), stp0, stp1);
841
842      checkpoint();
843      live_run();
844   }
845}
846
847WRITE_LINE_MEMBER( victor_9000_fdc_t::drw_w )
848{
849   if (m_drw != state)
850   {
851      live_sync();
852      m_drw = cur_live.drw = state;
853      checkpoint();
854      if (LOG_VIA) logerror("%s %s DRW %u\n", machine().time().as_string(), machine().describe_context(), state);
855      if (state) {
856         stop_writing(machine().time());
857      } else {
858         start_writing(machine().time());
859      }
860      live_run();
861   }
862}
863
864WRITE_LINE_MEMBER( victor_9000_fdc_t::erase_w )
865{
866   if (m_erase != state)
867   {
868      live_sync();
869      m_erase = cur_live.erase = state;
870      checkpoint();
871      if (LOG_VIA) logerror("%s %s ERASE %u\n", machine().time().as_string(), machine().describe_context(), state);
872      live_run();
873   }
874}
875
876WRITE_LINE_MEMBER( victor_9000_fdc_t::via6_irq_w )
877{
878   m_via6_irq = state;
879
880   m_irq_cb(m_via4_irq || m_via5_irq || m_via6_irq);
881}
882
883READ8_MEMBER( victor_9000_fdc_t::cs7_r )
884{
885   if (!checkpoint_live.lbrdy)
886   {
887      live_sync();
888      cur_live.lbrdy = 1;
889      if (LOG_VIA) logerror("%s %s LBRDY 1\n", machine().time().as_string(), machine().describe_context());
890      m_lbrdy_cb(1);
891      checkpoint();
892      live_run();
893   }
894
895   return m_via5->read(space, offset);
896}
897
898WRITE8_MEMBER( victor_9000_fdc_t::cs7_w )
899{
900   if (!checkpoint_live.lbrdy)
901   {
902      live_sync();
903      cur_live.lbrdy = 1;
904      if (LOG_VIA) logerror("%s %s LBRDY 1\n", machine().time().as_string(), machine().describe_context());
905      m_lbrdy_cb(1);
906      checkpoint();
907      live_run();
908   }
909
910   m_via5->write(space, offset, data);
911}
912
913floppy_image_device* victor_9000_fdc_t::get_floppy()
914{
915   return m_drive ? m_floppy1 : m_floppy0;
916}
917
918void victor_9000_fdc_t::live_start()
919{
920   cur_live.tm = machine().time();
921   cur_live.state = RUNNING;
922   cur_live.next_state = -1;
923
924   cur_live.shift_reg = 0;
925   cur_live.shift_reg_write = 0;
926   cur_live.bit_counter = 0;
927   cur_live.sync_bit_counter = 0;
928   cur_live.sync_byte_counter = 0;
929
930   cur_live.drive = m_drive;
931   cur_live.side = m_side;
932   cur_live.drw = m_drw;
933   cur_live.wd = m_wd;
934   cur_live.wrsync = m_wrsync;
935   cur_live.erase = m_erase;
936
937   checkpoint_live = cur_live;
938
939   live_run();
940}
941
942void victor_9000_fdc_t::checkpoint()
943{
944   get_next_edge(machine().time());
945   checkpoint_live = cur_live;
946}
947
948void victor_9000_fdc_t::rollback()
949{
950   cur_live = checkpoint_live;
951   get_next_edge(cur_live.tm);
952}
953
954void victor_9000_fdc_t::start_writing(const attotime &tm)
955{
956   cur_live.write_start_time = tm;
957   cur_live.write_position = 0;
958}
959
960void victor_9000_fdc_t::stop_writing(const attotime &tm)
961{
962   commit(tm);
963   cur_live.write_start_time = attotime::never;
964}
965
966bool victor_9000_fdc_t::write_next_bit(bool bit, const attotime &limit)
967{
968   if(cur_live.write_start_time.is_never()) {
969      cur_live.write_start_time = cur_live.tm;
970      cur_live.write_position = 0;
971   }
972
973   attotime etime = cur_live.tm + m_period;
974   if(etime > limit)
975      return true;
976
977   if(bit && cur_live.write_position < ARRAY_LENGTH(cur_live.write_buffer))
978      cur_live.write_buffer[cur_live.write_position++] = cur_live.tm;
979
980   if (LOG) logerror("%s write bit %u (%u)\n", cur_live.tm.as_string(), cur_live.bit_counter, bit);
981
982   return false;
983}
984
985void victor_9000_fdc_t::commit(const attotime &tm)
986{
987   if(cur_live.write_start_time.is_never() || tm == cur_live.write_start_time || !cur_live.write_position)
988      return;
989
990   if (LOG) logerror("%s committing %u transitions since %s\n", tm.as_string(), cur_live.write_position, cur_live.write_start_time.as_string());
991
992   if(get_floppy())
993      get_floppy()->write_flux(cur_live.write_start_time, tm, cur_live.write_position, cur_live.write_buffer);
994
995   cur_live.write_start_time = tm;
996   cur_live.write_position = 0;
997}
998
999void victor_9000_fdc_t::live_delay(int state)
1000{
1001   cur_live.next_state = state;
1002   if(cur_live.tm != machine().time())
1003      t_gen->adjust(cur_live.tm - machine().time());
1004   else
1005      live_sync();
1006}
1007
1008void victor_9000_fdc_t::live_sync()
1009{
1010   if(!cur_live.tm.is_never()) {
1011      if(cur_live.tm > machine().time()) {
1012         rollback();
1013         live_run(machine().time());
1014         commit(cur_live.tm);
1015      } else {
1016         commit(cur_live.tm);
1017         if(cur_live.next_state != -1) {
1018            cur_live.state = cur_live.next_state;
1019            cur_live.next_state = -1;
1020         }
1021         if(cur_live.state == IDLE) {
1022            stop_writing(cur_live.tm);
1023            cur_live.tm = attotime::never;
1024         }
1025      }
1026      cur_live.next_state = -1;
1027      checkpoint();
1028   }
1029}
1030
1031void victor_9000_fdc_t::live_abort()
1032{
1033   if(!cur_live.tm.is_never() && cur_live.tm > machine().time()) {
1034      rollback();
1035      live_run(machine().time());
1036   }
1037
1038   stop_writing(cur_live.tm);
1039
1040   cur_live.tm = attotime::never;
1041   cur_live.state = IDLE;
1042   cur_live.next_state = -1;
1043   cur_live.write_position = 0;
1044   cur_live.write_start_time = attotime::never;
1045
1046   cur_live.brdy = 1;
1047   cur_live.lbrdy = 1;
1048   cur_live.sync = 1;
1049   cur_live.syn = 1;
1050   cur_live.gcr_err = 1;
1051}
1052
1053void victor_9000_fdc_t::live_run(const attotime &limit)
1054{
1055   if(cur_live.state == IDLE || cur_live.next_state != -1)
1056      return;
1057
1058   for(;;) {
1059      switch(cur_live.state) {
1060      case RUNNING: {
1061         bool syncpoint = false;
1062
1063         if (cur_live.tm > limit)
1064            return;
1065
1066         // read bit
1067         int bit = get_next_bit(cur_live.tm, limit);
1068         if(bit < 0)
1069            return;
1070
1071         cur_live.shift_reg <<= 1;
1072         cur_live.shift_reg |= bit;
1073         cur_live.shift_reg &= 0x3ff;
1074
1075         // sync
1076         int sync = !(cur_live.shift_reg == 0x3ff);
1077
1078         // bit counter
1079         if (!sync) {
1080            cur_live.bit_counter = 0;
1081         } else if (cur_live.sync) {
1082            cur_live.bit_counter++;
1083            if (cur_live.bit_counter == 10) {
1084               cur_live.bit_counter = 0;
1085            }
1086         }
1087
1088         // sync counter
1089         if (sync) {
1090            cur_live.sync_bit_counter = 0;
1091            cur_live.sync_byte_counter = 10;
1092         } else if (!cur_live.sync) {
1093            cur_live.sync_bit_counter++;
1094            if (cur_live.sync_bit_counter == 10) {
1095               cur_live.sync_bit_counter = 0;
1096               cur_live.sync_byte_counter++;
1097               if (cur_live.sync_byte_counter == 16) {
1098                  cur_live.sync_byte_counter = 0;
1099               }
1100            }
1101         }
1102
1103         // syn
1104         int syn = !(cur_live.sync_byte_counter == 15);
1105
1106         if (LOG) logerror("%s bit %u sync %u bc %u sbc %u sBC %u syn %u\n",cur_live.tm.as_string(),bit,sync,cur_live.bit_counter,cur_live.sync_bit_counter,cur_live.sync_byte_counter,syn);
1107
1108         // GCR decoder
1109         if (cur_live.drw) {
1110            cur_live.i = cur_live.drw << 10 | cur_live.shift_reg;
1111         } else {
1112            cur_live.i = cur_live.drw << 10 | ((cur_live.wd & 0xf0) << 1) | cur_live.wrsync << 4 | (cur_live.wd & 0x0f);
1113         }
1114
1115         cur_live.e = m_gcr_rom->base()[cur_live.i];
1116
1117         // byte ready
1118         int brdy = !(cur_live.bit_counter == 9);
1119
1120         // GCR error
1121         int gcr_err = !(brdy || BIT(cur_live.e, 3));
1122
1123         if (brdy != cur_live.brdy) {
1124            if (LOG) logerror("%s BRDY %u\n", cur_live.tm.as_string(),brdy);
1125            if (LOG && !brdy)
1126            {
1127               UINT8 e = cur_live.e;
1128               UINT8 i = cur_live.i;
1129
1130               UINT8 data = BIT(e, 6) << 7 | BIT(i, 7) << 6 | BIT(e, 5) << 5 | BIT(e, 4) << 4 | BIT(e, 2) << 3 | BIT(i, 1) << 2 | (e & 0x03);
1131               logerror("%s BRDY %02x\n",cur_live.tm.as_string(),data);
1132            }
1133            cur_live.brdy = brdy;
1134            if (!brdy) cur_live.lbrdy = 0;
1135            syncpoint = true;
1136         }
1137
1138         if (sync != cur_live.sync) {
1139            if (LOG) logerror("%s SYNC %u\n", cur_live.tm.as_string(),sync);
1140            cur_live.sync = sync;
1141            syncpoint = true;
1142         }
1143
1144         if (syn != cur_live.syn) {
1145            if (LOG) logerror("%s SYN %u\n", cur_live.tm.as_string(),syn);
1146            cur_live.syn = syn;
1147            syncpoint = true;
1148         }
1149
1150         if (gcr_err != cur_live.gcr_err) {
1151            if (LOG) logerror("%s GCR ERR %u\n", cur_live.tm.as_string(),gcr_err);
1152            cur_live.gcr_err = gcr_err;
1153            syncpoint = true;
1154         }
1155
1156         if (syncpoint) {
1157            commit(cur_live.tm);
1158
1159            cur_live.tm += m_period;
1160            live_delay(RUNNING_SYNCPOINT);
1161            return;
1162         }
1163
1164         cur_live.tm += m_period;
1165         break;
1166      }
1167
1168      case RUNNING_SYNCPOINT: {
1169         m_lbrdy_cb(cur_live.lbrdy);
1170         m_syn_cb(cur_live.syn);
1171
1172         cur_live.state = RUNNING;
1173         checkpoint();
1174         break;
1175      }
1176      }
1177   }
1178}
1179
1180void victor_9000_fdc_t::get_next_edge(const attotime &when)
1181{
1182   floppy_image_device *floppy = get_floppy();
1183
1184   cur_live.edge = floppy ? floppy->get_next_transition(when) : attotime::never;
1185}
1186
1187int victor_9000_fdc_t::get_next_bit(attotime &tm, const attotime &limit)
1188{
1189   attotime next = tm + m_period;
1190
1191   int bit = (cur_live.edge.is_never() || cur_live.edge >= next) ? 0 : 1;
1192
1193   if (bit) {
1194      get_next_edge(next);
1195   }
1196
1197   return bit;
1198}
trunk/src/mess/machine/victor9k_fdc.h
r0r241753
1// license:BSD-3-Clause
2// copyright-holders:Curt Coder
3/**********************************************************************
4
5    Victor 9000 floppy disk controller emulation
6
7    Copyright MESS Team.
8    Visit http://mamedev.org for licensing and usage restrictions.
9
10**********************************************************************/
11
12#pragma once
13
14#ifndef __VICTOR_9000_FDC__
15#define __VICTOR_9000_FDC__
16
17#include "emu.h"
18#include "cpu/mcs48/mcs48.h"
19#include "formats/victor9k_dsk.h"
20#include "imagedev/floppy.h"
21#include "machine/6522via.h"
22
23
24
25//**************************************************************************
26//  INTERFACE CONFIGURATION MACROS
27//**************************************************************************
28
29#define MCFG_VICTOR_9000_FDC_IRQ_CB(_write) \
30   devcb = &victor_9000_fdc_t::set_irq_wr_callback(*device, DEVCB_##_write);
31
32#define MCFG_VICTOR_9000_FDC_SYN_CB(_write) \
33   devcb = &victor_9000_fdc_t::set_syn_wr_callback(*device, DEVCB_##_write);
34
35#define MCFG_VICTOR_9000_FDC_LBRDY_CB(_write) \
36   devcb = &victor_9000_fdc_t::set_lbrdy_wr_callback(*device, DEVCB_##_write);
37
38
39
40//**************************************************************************
41//  TYPE DEFINITIONS
42//**************************************************************************
43
44// ======================> victor_9000_fdc_t
45
46class victor_9000_fdc_t :  public device_t
47{
48public:
49   // construction/destruction
50   victor_9000_fdc_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
51
52   template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<victor_9000_fdc_t &>(device).m_irq_cb.set_callback(object); }
53   template<class _Object> static devcb_base &set_syn_wr_callback(device_t &device, _Object object) { return downcast<victor_9000_fdc_t &>(device).m_syn_cb.set_callback(object); }
54   template<class _Object> static devcb_base &set_lbrdy_wr_callback(device_t &device, _Object object) { return downcast<victor_9000_fdc_t &>(device).m_lbrdy_cb.set_callback(object); }
55
56   DECLARE_READ8_MEMBER( cs5_r ) { return m_via4->read(space, offset); }
57   DECLARE_WRITE8_MEMBER( cs5_w ) { m_via4->write(space, offset, data); }
58   DECLARE_READ8_MEMBER( cs6_r ) { return m_via6->read(space, offset); }
59   DECLARE_WRITE8_MEMBER( cs6_w ) { m_via6->write(space, offset, data); }
60   DECLARE_READ8_MEMBER( cs7_r );
61   DECLARE_WRITE8_MEMBER( cs7_w );
62
63   DECLARE_FLOPPY_FORMATS( floppy_formats );
64
65   DECLARE_READ8_MEMBER( floppy_p1_r );
66   DECLARE_READ8_MEMBER( floppy_p2_r );
67   DECLARE_WRITE8_MEMBER( floppy_p2_w );
68   DECLARE_READ8_MEMBER( tach0_r );
69   DECLARE_READ8_MEMBER( tach1_r );
70   DECLARE_WRITE8_MEMBER( da_w );
71
72   DECLARE_WRITE8_MEMBER( via4_pa_w );
73   DECLARE_WRITE8_MEMBER( via4_pb_w );
74   DECLARE_WRITE_LINE_MEMBER( wrsync_w );
75   DECLARE_WRITE_LINE_MEMBER( via4_irq_w );
76
77   DECLARE_READ8_MEMBER( via5_pa_r );
78   DECLARE_WRITE8_MEMBER( via5_pb_w );
79   DECLARE_WRITE_LINE_MEMBER( via5_irq_w );
80
81   DECLARE_READ8_MEMBER( via6_pa_r );
82   DECLARE_READ8_MEMBER( via6_pb_r );
83   DECLARE_WRITE8_MEMBER( via6_pa_w );
84   DECLARE_WRITE8_MEMBER( via6_pb_w );
85   DECLARE_WRITE_LINE_MEMBER( drw_w );
86   DECLARE_WRITE_LINE_MEMBER( erase_w );
87   DECLARE_WRITE_LINE_MEMBER( via6_irq_w );
88
89protected:
90   // device-level overrides
91   virtual void device_start();
92   virtual void device_reset();
93   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
94
95   // optional information overrides
96   virtual const rom_entry *device_rom_region() const;
97   virtual machine_config_constructor device_mconfig_additions() const;
98
99private:
100   enum
101   {
102      TM_GEN,
103      TM_TACH0,
104      TM_TACH1
105   };
106
107   enum
108   {
109      LED_A = 0,
110      LED_B
111   };
112
113   enum {
114      IDLE,
115      RUNNING,
116      RUNNING_SYNCPOINT
117   };
118
119   struct live_info {
120      attotime tm;
121      int state, next_state;
122
123      int drive;
124      int side;
125      int drw;
126
127      // common
128      offs_t i;
129      UINT8 e;
130
131      // read
132      attotime edge;
133      UINT16 shift_reg;
134      int bit_counter;
135      int sync_bit_counter;
136      int sync_byte_counter;
137      int brdy;
138      int lbrdy;
139      int sync;
140      int syn;
141      int gcr_err;
142
143      // write
144      UINT16 shift_reg_write;
145      attotime write_start_time;
146      attotime write_buffer[32];
147      int write_position;
148      UINT8 wd;
149      int wrsync;
150      int gcr_data;
151      int erase;
152   };
153
154   devcb_write_line m_irq_cb;
155   devcb_write_line m_syn_cb;
156   devcb_write_line m_lbrdy_cb;
157
158   required_device<cpu_device> m_maincpu;
159   required_device<via6522_device> m_via4;
160   required_device<via6522_device> m_via5;
161   required_device<via6522_device> m_via6;
162   required_device<floppy_image_device> m_floppy0;
163   required_device<floppy_image_device> m_floppy1;
164   required_memory_region m_gcr_rom;
165
166   void update_stepper_motor(floppy_image_device *floppy, int stp, int old_st, int st);
167   void update_spindle_motor(floppy_image_device *floppy, emu_timer *t_tach, bool start, bool stop, bool sel, UINT8 &da);
168
169   int load0_cb(floppy_image_device *device);
170   void unload0_cb(floppy_image_device *device);
171
172   int load1_cb(floppy_image_device *device);
173   void unload1_cb(floppy_image_device *device);
174
175   UINT8 m_p2;
176
177   /* floppy state */
178   UINT8 m_da;
179   UINT8 m_da0;
180   UINT8 m_da1;
181   int m_start0;
182   int m_stop0;
183   int m_start1;
184   int m_stop1;
185   int m_sel0;
186   int m_sel1;
187   int m_tach0;
188   int m_tach1;
189   int m_rdy0;
190   int m_rdy1;
191   UINT8 m_l0ms;
192   UINT8 m_l1ms;
193   int m_st0;
194   int m_st1;
195   int m_stp0;
196   int m_stp1;
197   int m_drive;
198   int m_side;
199   int m_drw;
200   int m_erase;
201   UINT8 m_wd;
202   int m_wrsync;
203
204   int m_via4_irq;
205   int m_via5_irq;
206   int m_via6_irq;
207   int m_syn;
208   int m_lbrdy;
209
210   attotime m_period;
211
212   live_info cur_live, checkpoint_live;
213   emu_timer *t_gen, *t_tach0, *t_tach1;
214
215   floppy_image_device* get_floppy();
216   void live_start();
217   void checkpoint();
218   void rollback();
219   bool write_next_bit(bool bit, const attotime &limit);
220   void start_writing(const attotime &tm);
221   void commit(const attotime &tm);
222   void stop_writing(const attotime &tm);
223   void live_delay(int state);
224   void live_sync();
225   void live_abort();
226   void live_run(const attotime &limit = attotime::never);
227   void get_next_edge(const attotime &when);
228   int get_next_bit(attotime &tm, const attotime &limit);
229};
230
231
232
233// device type definition
234extern const device_type VICTOR_9000_FDC;
235
236
237
238#endif
trunk/src/mess/machine/victor9kb.c
r241752r241753
2828const device_type VICTOR9K_KEYBOARD = &device_creator<victor9k_keyboard_device>;
2929
3030
31
3231//-------------------------------------------------
3332//  ROM( victor9k_keyboard )
3433//-------------------------------------------------
r241752r241753
237236//  victor9k_keyboard_device - constructor
238237//-------------------------------------------------
239238
240victor9k_keyboard_device::victor9k_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
241   : device_t(mconfig, VICTOR9K_KEYBOARD, "Victor 9000 Keyboard", tag, owner, clock, "victor9kb", __FILE__),
242      m_maincpu(*this, I8021_TAG),
243      m_y0(*this, "Y0"),
244      m_y1(*this, "Y1"),
245      m_y2(*this, "Y2"),
246      m_y3(*this, "Y3"),
247      m_y4(*this, "Y4"),
248      m_y5(*this, "Y5"),
249      m_y6(*this, "Y6"),
250      m_y7(*this, "Y7"),
251      m_y8(*this, "Y8"),
252      m_y9(*this, "Y9"),
253      m_ya(*this, "YA"),
254      m_yb(*this, "YB"),
255      m_yc(*this, "YC"),
256      m_kbrdy_handler(*this),
257      m_kbdata_handler(*this),
258      m_y(0),
259      m_kbrdy(1),
260      m_kbdata(1),
261      m_kback(1)
239victor9k_keyboard_device::victor9k_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
240   device_t(mconfig, VICTOR9K_KEYBOARD, "Victor 9000 Keyboard", tag, owner, clock, "victor9kb", __FILE__),
241   m_maincpu(*this, I8021_TAG),
242   m_y0(*this, "Y0"),
243   m_y1(*this, "Y1"),
244   m_y2(*this, "Y2"),
245   m_y3(*this, "Y3"),
246   m_y4(*this, "Y4"),
247   m_y5(*this, "Y5"),
248   m_y6(*this, "Y6"),
249   m_y7(*this, "Y7"),
250   m_y8(*this, "Y8"),
251   m_y9(*this, "Y9"),
252   m_ya(*this, "YA"),
253   m_yb(*this, "YB"),
254   m_yc(*this, "YC"),
255   m_kbrdy_handler(*this),
256   m_kbdata_handler(*this),
257   m_y(0),
258   m_kbrdy(1),
259   m_kbdata(1),
260   m_kback(1)
262261{
263262}
264263
r241752r241753
291290
292291
293292//-------------------------------------------------
294//  kbrdy_r -
295//-------------------------------------------------
296
297READ_LINE_MEMBER( victor9k_keyboard_device::kbrdy_r )
298{
299   return m_kbrdy;
300}
301
302
303//-------------------------------------------------
304293//  kback_w -
305294//-------------------------------------------------
306295
307296WRITE_LINE_MEMBER( victor9k_keyboard_device::kback_w )
308297{
298   //logerror("KBACK %u\n", state);
309299   m_kback = state;
310300}
311301
312302
313303//-------------------------------------------------
314//  kbdata_r -
315//-------------------------------------------------
316
317READ_LINE_MEMBER( victor9k_keyboard_device::kbdata_r )
318{
319   return m_kbdata;
320}
321
322
323//-------------------------------------------------
324304//  kb_p1_r -
325305//-------------------------------------------------
326306
r241752r241753
360340      m_y = data & 0x0f;
361341   }
362342
363   logerror("P1 %02x\n", data);
343   //logerror("P1 %02x\n", data);
364344}
365345
366346
r241752r241753
374354
375355       bit     description
376356
377       P20     keylatch enable ?
378       P21
379       P22     key available ?
380       P23     data ?
357       P20     ?
358       P21    KBRDY
359       P22     ?
360       P23     KBDATA
381361
382362   */
383363
384   int kbrdy = BIT(data, 2);
364   int kbrdy = BIT(data, 1);
385365
386366   if (m_kbrdy != kbrdy)
387367   {
r241752r241753
397377      m_kbdata_handler(m_kbdata);
398378   }
399379
400   logerror("P2 %01x\n", data & 0x0f);
380   //logerror("P2 %02x\n", data);
401381}
402382
403383
r241752r241753
407387
408388READ8_MEMBER( victor9k_keyboard_device::kb_t1_r )
409389{
410   logerror("read T1 %u\n", m_kback);
411
412390   return m_kback;
413391}
trunk/src/mess/machine/victor9kb.h
r241752r241753
5151   virtual machine_config_constructor device_mconfig_additions() const;
5252   virtual ioport_constructor device_input_ports() const;
5353
54   DECLARE_READ_LINE_MEMBER( kbrdy_r );
5554   DECLARE_WRITE_LINE_MEMBER( kback_w );
56   DECLARE_READ_LINE_MEMBER( kbdata_r );
5755
5856   // not really public
5957   DECLARE_READ8_MEMBER( kb_p1_r );
trunk/src/mess/machine/wswan.c
r241752r241753
7878   0xea, 0xc0, 0xff, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
7979};
8080
81void wswan_state::wswan_handle_irqs()
81void wswan_state::handle_irqs()
8282{
83   if ( m_ws_portram[0xb2] & m_ws_portram[0xb6] & WSWAN_IFLAG_HBLTMR )
83   if (m_ws_portram[0xb2] & m_ws_portram[0xb6] & WSWAN_IFLAG_HBLTMR)
8484   {
85      m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_ws_portram[0xb0] + WSWAN_INT_HBLTMR );
85      m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_ws_portram[0xb0] + WSWAN_INT_HBLTMR);
8686   }
87   else if ( m_ws_portram[0xb2] & m_ws_portram[0xb6] & WSWAN_IFLAG_VBL )
87   else if (m_ws_portram[0xb2] & m_ws_portram[0xb6] & WSWAN_IFLAG_VBL)
8888   {
89      m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_ws_portram[0xb0] + WSWAN_INT_VBL );
89      m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_ws_portram[0xb0] + WSWAN_INT_VBL);
9090   }
91   else if ( m_ws_portram[0xb2] & m_ws_portram[0xb6] & WSWAN_IFLAG_VBLTMR )
91   else if (m_ws_portram[0xb2] & m_ws_portram[0xb6] & WSWAN_IFLAG_VBLTMR)
9292   {
93      m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_ws_portram[0xb0] + WSWAN_INT_VBLTMR );
93      m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_ws_portram[0xb0] + WSWAN_INT_VBLTMR);
9494   }
95   else if ( m_ws_portram[0xb2] & m_ws_portram[0xb6] & WSWAN_IFLAG_LCMP )
95   else if (m_ws_portram[0xb2] & m_ws_portram[0xb6] & WSWAN_IFLAG_LCMP)
9696   {
97      m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_ws_portram[0xb0] + WSWAN_INT_LCMP );
97      m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_ws_portram[0xb0] + WSWAN_INT_LCMP);
9898   }
99   else if ( m_ws_portram[0xb2] & m_ws_portram[0xb6] & WSWAN_IFLAG_SRX )
99   else if (m_ws_portram[0xb2] & m_ws_portram[0xb6] & WSWAN_IFLAG_SRX)
100100   {
101      m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_ws_portram[0xb0] + WSWAN_INT_SRX );
101      m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_ws_portram[0xb0] + WSWAN_INT_SRX);
102102   }
103   else if ( m_ws_portram[0xb2] & m_ws_portram[0xb6] & WSWAN_IFLAG_RTC )
103   else if (m_ws_portram[0xb2] & m_ws_portram[0xb6] & WSWAN_IFLAG_RTC)
104104   {
105      m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_ws_portram[0xb0] + WSWAN_INT_RTC );
105      m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_ws_portram[0xb0] + WSWAN_INT_RTC);
106106   }
107   else if ( m_ws_portram[0xb2] & m_ws_portram[0xb6] & WSWAN_IFLAG_KEY )
107   else if (m_ws_portram[0xb2] & m_ws_portram[0xb6] & WSWAN_IFLAG_KEY)
108108   {
109      m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_ws_portram[0xb0] + WSWAN_INT_KEY );
109      m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_ws_portram[0xb0] + WSWAN_INT_KEY);
110110   }
111   else if ( m_ws_portram[0xb2] & m_ws_portram[0xb6] & WSWAN_IFLAG_STX )
111   else if (m_ws_portram[0xb2] & m_ws_portram[0xb6] & WSWAN_IFLAG_STX)
112112   {
113      m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_ws_portram[0xb0] + WSWAN_INT_STX );
113      m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_ws_portram[0xb0] + WSWAN_INT_STX);
114114   }
115115   else
116116   {
117      m_maincpu->set_input_line(0, CLEAR_LINE );
117      m_maincpu->set_input_line(0, CLEAR_LINE);
118118   }
119119}
120120
121void wswan_state::wswan_set_irq_line(int irq)
121void wswan_state::set_irq_line(int irq)
122122{
123   if ( m_ws_portram[0xb2] & irq )
123   if (m_ws_portram[0xb2] & irq)
124124   {
125125      m_ws_portram[0xb6] |= irq;
126      wswan_handle_irqs();
126      handle_irqs();
127127   }
128128}
129129
130void wswan_state::wswan_clear_irq_line(int irq)
130void wswan_state::dma_sound_cb()
131131{
132   if ((m_sound_dma.enable & 0x88) == 0x80)
133   {
134      address_space &space = m_maincpu->space(AS_PROGRAM);
135      /* TODO: Output sound DMA byte */
136      port_w(space, 0x89, space.read_byte(m_sound_dma.source));
137      m_sound_dma.size--;
138      m_sound_dma.source = (m_sound_dma.source + 1) & 0x0fffff;
139      if (m_sound_dma.size == 0)
140      {
141         m_sound_dma.enable &= 0x7F;
142      }
143   }
144}
145
146void wswan_state::clear_irq_line(int irq)
147{
132148   m_ws_portram[0xb6] &= ~irq;
133   wswan_handle_irqs();
149   handle_irqs();
134150}
135151
136void wswan_state::wswan_register_save()
152void wswan_state::register_save()
137153{
138154   save_item(NAME(m_ws_portram));
139155   save_item(NAME(m_internal_eeprom));
140156   save_item(NAME(m_bios_disabled));
141157   save_item(NAME(m_rotate));
142
143   save_item(NAME(m_vdp.layer_bg_enable));
144   save_item(NAME(m_vdp.layer_fg_enable));
145   save_item(NAME(m_vdp.sprites_enable));
146   save_item(NAME(m_vdp.window_sprites_enable));
147   save_item(NAME(m_vdp.window_fg_mode));
148   save_item(NAME(m_vdp.current_line));
149   save_item(NAME(m_vdp.line_compare));
150   save_item(NAME(m_vdp.sprite_table_address));
151   save_item(NAME(m_vdp.sprite_table_buffer));
152   save_item(NAME(m_vdp.sprite_first));
153   save_item(NAME(m_vdp.sprite_count));
154   save_item(NAME(m_vdp.layer_bg_address));
155   save_item(NAME(m_vdp.layer_fg_address));
156   save_item(NAME(m_vdp.window_fg_left));
157   save_item(NAME(m_vdp.window_fg_top));
158   save_item(NAME(m_vdp.window_fg_right));
159   save_item(NAME(m_vdp.window_fg_bottom));
160   save_item(NAME(m_vdp.window_sprites_left));
161   save_item(NAME(m_vdp.window_sprites_top));
162   save_item(NAME(m_vdp.window_sprites_right));
163   save_item(NAME(m_vdp.window_sprites_bottom));
164   save_item(NAME(m_vdp.layer_bg_scroll_x));
165   save_item(NAME(m_vdp.layer_bg_scroll_y));
166   save_item(NAME(m_vdp.layer_fg_scroll_x));
167   save_item(NAME(m_vdp.layer_fg_scroll_y));
168   save_item(NAME(m_vdp.lcd_enable));
169   save_item(NAME(m_vdp.icons));
170   save_item(NAME(m_vdp.color_mode));
171   save_item(NAME(m_vdp.colors_16));
172   save_item(NAME(m_vdp.tile_packed));
173   save_item(NAME(m_vdp.timer_hblank_enable));
174   save_item(NAME(m_vdp.timer_hblank_mode));
175   save_item(NAME(m_vdp.timer_hblank_reload));
176   save_item(NAME(m_vdp.timer_vblank_enable));
177   save_item(NAME(m_vdp.timer_vblank_mode));
178   save_item(NAME(m_vdp.timer_vblank_reload));
179   save_item(NAME(m_vdp.timer_vblank_count));
180   save_item(NAME(m_vdp.main_palette));
181
158   
182159   save_item(NAME(m_sound_dma.source));
183160   save_item(NAME(m_sound_dma.size));
184161   save_item(NAME(m_sound_dma.enable));
185
162   
186163   if (m_cart->exists())
187164      m_cart->save_nvram();
188
189   machine().save().register_postload(save_prepost_delegate(FUNC(wswan_state::wswan_postload), this));
190165}
191166
192void wswan_state::wswan_postload()
193{
194   address_space &space = m_maincpu->space(AS_PROGRAM);
195   // restore the vdp pointers
196   m_vdp.vram = (UINT8*)space.get_read_ptr(0);
197   m_vdp.palette_vram = (UINT8*)space.get_read_ptr((m_system_type == TYPE_WSC) ? 0xfe00 : 0);
198}
199
200167void wswan_state::common_start()
201168{
202169   m_ws_bios_bank = auto_alloc_array(machine(), UINT8, 0x10000);
203170   memcpy(m_ws_bios_bank + 0xffc0, ws_fake_bios_code, 0x40);
204
205   m_vdp.timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(wswan_state::wswan_scanline_interrupt),this), &m_vdp);
206   m_vdp.timer->adjust(attotime::from_ticks(256, 3072000), 0, attotime::from_ticks(256, 3072000));
207
208   wswan_register_save();
209
171   
172   register_save();
173   
210174   machine().device<nvram_device>("nvram")->set_base(m_internal_eeprom, INTERNAL_EEPROM_SIZE);
211
175   
212176   if (m_cart->exists())
213177   {
214178      // ROM
215179      m_maincpu->space(AS_PROGRAM).install_read_handler(0x20000, 0x2ffff, read8_delegate(FUNC(ws_cart_slot_device::read_rom20),(ws_cart_slot_device*)m_cart));
216180      m_maincpu->space(AS_PROGRAM).install_read_handler(0x30000, 0x3ffff, read8_delegate(FUNC(ws_cart_slot_device::read_rom30),(ws_cart_slot_device*)m_cart));
217181      m_maincpu->space(AS_PROGRAM).install_read_handler(0x40000, 0xeffff, read8_delegate(FUNC(ws_cart_slot_device::read_rom40),(ws_cart_slot_device*)m_cart));
218
182     
219183      // SRAM
220184      if (m_cart->get_type() == WS_SRAM)
221185      {
r241752r241753
231195   m_system_type = TYPE_WSWAN;
232196}
233197
234MACHINE_START_MEMBER(wswan_state,wscolor)
198MACHINE_START_MEMBER(wswan_state, wscolor)
235199{
236200   common_start();
237201   m_system_type = TYPE_WSC;
r241752r241753
239203
240204void wswan_state::machine_reset()
241205{
242   address_space &space = m_maincpu->space(AS_PROGRAM);
243
244206   m_bios_disabled = 0;
245
246   m_ws_ram = (UINT8*) m_maincpu->space(AS_PROGRAM).get_read_ptr(0);
247   memset(m_ws_ram, 0, 0xffff);
248
207   
249208   if (m_cart->exists())
250209      m_rotate = m_cart->get_is_rotated();
251210   else
252211      m_rotate = 0;
253
212   
254213   /* Intialize ports */
255214   memcpy(m_ws_portram, ws_portram_init, 256);
256
257   /* Initialize VDP */
258   memset(&m_vdp, 0, sizeof(m_vdp));
259
260   m_vdp.vram = (UINT8*)space.get_read_ptr(0);
261   m_vdp.palette_vram = (UINT8*)space.get_read_ptr(( m_system_type == TYPE_WSC ) ? 0xFE00 : 0 );
262   m_vdp.current_line = 145;  /* Randomly chosen, beginning of VBlank period to give cart some time to boot up */
263   m_vdp.color_mode = 0;
264   m_vdp.colors_16 = 0;
265   m_vdp.tile_packed = 0;
266
215   
267216   render_target *target = machine().render().first_target();
268217   target->set_view(m_rotate);
269
218   
270219   /* Initialize sound DMA */
271220   memset(&m_sound_dma, 0, sizeof(m_sound_dma));
272221}
r241752r241753
282231READ8_MEMBER( wswan_state::port_r )
283232{
284233   UINT8 value = m_ws_portram[offset];
285
234   
286235   if (offset != 2)
287236      logerror("PC=%X: port read %02X\n", m_maincpu->pc(), offset);
237   
238   if (offset < 0x40 || (offset >= 0xa1 && offset < 0xb0))
239      return m_vdp->reg_r(space, offset);
240   
288241   switch (offset)
289242   {
290      case 0x02:      // Current line
291         value = m_vdp.current_line;
292         break;
293243      case 0x4a:      // Sound DMA source address (low)
294244         value = m_sound_dma.source & 0xff;
295245         break;
r241752r241753
308258      case 0x52:      // Sound DMA start/stop
309259         value = m_sound_dma.enable;
310260         break;
261      case 0x60:
262         value = m_vdp->reg_r(space, offset);
263         break;
311264      case 0xa0:      // Hardware type
312               // Bit 0 - Disable/enable Bios
313               // Bit 1 - Determine mono/color
314               // Bit 2 - Determine color/crystal
265         // Bit 0 - Disable/enable Bios
266         // Bit 1 - Determine mono/color
267         // Bit 2 - Determine color/crystal
315268         value = value & ~ 0x02;
316269         if (m_system_type == TYPE_WSC)
317270            value |= 2;
318271         break;
319      case 0xa8:
320         value = m_vdp.timer_hblank_count & 0xff;
321         break;
322      case 0xa9:
323         value = m_vdp.timer_hblank_count >> 8;
324         break;
325      case 0xaa:
326         value = m_vdp.timer_vblank_count & 0xff;
327         break;
328      case 0xab:
329         value = m_vdp.timer_vblank_count >> 8;
330         break;
331272      case 0xc0:
332273      case 0xc1:
333274      case 0xc2:
r241752r241753
347288         value = m_cart->read_io(space, offset & 0x0f);
348289         break;
349290   }
350
291   
351292   return value;
352293}
353294
r241752r241753
356297   address_space &mem = m_maincpu->space(AS_PROGRAM);
357298   UINT8 input;
358299   logerror("PC=%X: port write %02X <- %02X\n", m_maincpu->pc(), offset, data);
300   
301   if (offset < 0x40 || (offset >= 0xa1 && offset < 0xb0))
302   {
303      m_vdp->reg_w(space, offset, data);
304      return;
305   }
306   
359307   switch (offset)
360308   {
361      case 0x00:  /* Display control
362                   Bit 0   - Background layer enable
363                   Bit 1   - Foreground layer enable
364                   Bit 2   - Sprites enable
365                   Bit 3   - Sprite window enable
366                   Bit 4-5 - Foreground window configuration
367                             00 - Foreground layer is displayed inside and outside foreground window area
368                             01 - Unknown
369                             10 - Foreground layer is displayed only inside foreground window area
370                             11 - Foreground layer is displayed outside foreground window area
371                   Bit 6-7 - Unknown
372                */
373         m_vdp.layer_bg_enable = data & 0x1;
374         m_vdp.layer_fg_enable = (data & 0x2) >> 1;
375         m_vdp.sprites_enable = (data & 0x4) >> 2;
376         m_vdp.window_sprites_enable = (data & 0x8) >> 3;
377         m_vdp.window_fg_mode = (data & 0x30) >> 4;
378         break;
379      case 0x01:  /* Background colour
380                   In 16 colour mode:
381                   Bit 0-3 - Palette index
382                   Bit 4-7 - Palette number
383                   Otherwise:
384                   Bit 0-2 - Main palette index
385                   Bit 3-7 - Unknown
386                */
387         break;
388      case 0x02:  /* Current scanline
389                   Bit 0-7 - Current scanline (Most likely read-only)
390                */
391         logerror( "Write to current scanline! Current value: %d  Data to write: %d\n", m_vdp.current_line, data );
392         /* Returning so we don't overwrite the value here, not that it
393          * really matters */
394         return;
395      case 0x03:  /* Line compare
396                   Bit 0-7 - Line compare
397                */
398         m_vdp.line_compare = data;
399         logerror( "Write to line compare: %d\n", data );
400         break;
401      case 0x04:  /* Sprite table base address
402                   Bit 0-5 - Determine sprite table base address 0 0xxxxxx0 00000000
403                   Bit 6-7 - Unknown
404                */
405         m_vdp.sprite_table_address = ( data & 0x3F ) << 9;
406         break;
407      case 0x05:  /* Number of sprite to start drawing with
408                   Bit 0-7 - First sprite number
409                */
410         //m_vdp.sprite_first = data;
411         if (data) logerror("non-zero first sprite %d\n", m_vdp.sprite_first);
412         break;
413      case 0x06:  /* Number of sprites to draw
414                   Bit 0-7 - Number of sprites to draw
415                */
416         //m_vdp.sprite_count = data;
417         break;
418      case 0x07:  /* Background/Foreground table base addresses
419                   Bit 0-2 - Determine background table base address 00xxx000 00000000
420                   Bit 3   - Unknown
421                   Bit 4-6 - Determine foreground table base address 00xxx000 00000000
422                   Bit 7   - Unknown
423                */
424         m_vdp.layer_bg_address = (data & 0x7) << 11;
425         m_vdp.layer_fg_address = (data & 0x70) << 7;
426         break;
427      case 0x08:  /* Left coordinate of foreground window
428                   Bit 0-7 - Left coordinate of foreground window area
429                */
430         m_vdp.window_fg_left = data;
431         break;
432      case 0x09:  /* Top coordinate of foreground window
433                   Bit 0-7 - Top coordinatte of foreground window area
434                */
435         m_vdp.window_fg_top = data;
436         break;
437      case 0x0a:  /* Right coordinate of foreground window
438                   Bit 0-7 - Right coordinate of foreground window area
439                */
440         m_vdp.window_fg_right = data;
441         break;
442      case 0x0b:  /* Bottom coordinate of foreground window
443                   Bit 0-7 - Bottom coordinate of foreground window area
444                */
445         m_vdp.window_fg_bottom = data;
446         break;
447      case 0x0c:  /* Left coordinate of sprite window
448                   Bit 0-7 - Left coordinate of sprite window area
449                */
450         m_vdp.window_sprites_left = data;
451         break;
452      case 0x0d:  /* Top coordinate of sprite window
453                   Bit 0-7 - Top coordinate of sprite window area
454                */
455         m_vdp.window_sprites_top = data;
456         break;
457      case 0x0e:  /* Right coordinate of sprite window
458                   Bit 0-7 - Right coordinate of sprite window area
459                */
460         m_vdp.window_sprites_right = data;
461         break;
462      case 0x0f:  /* Bottom coordinate of sprite window
463                   Bit 0-7 - Bottom coordiante of sprite window area
464                */
465         m_vdp.window_sprites_bottom = data;
466         break;
467      case 0x10:  /* Background layer X scroll
468                   Bit 0-7 - Background layer X scroll
469                */
470         m_vdp.layer_bg_scroll_x = data;
471         break;
472      case 0x11:  /* Background layer Y scroll
473                   Bit 0-7 - Background layer Y scroll
474                */
475         m_vdp.layer_bg_scroll_y = data;
476         break;
477      case 0x12:  /* Foreground layer X scroll
478                   Bit 0-7 - Foreground layer X scroll
479                */
480         m_vdp.layer_fg_scroll_x = data;
481         break;
482      case 0x13:  /* Foreground layer Y scroll
483                   Bit 0-7 - Foreground layer Y scroll
484                */
485         m_vdp.layer_fg_scroll_y = data;
486         break;
487      case 0x14:  /* LCD control
488                   Bit 0   - LCD enable
489                   Bit 1-7 - Unknown
490                */
491         m_vdp.lcd_enable = data & 0x1;
492         break;
493      case 0x15:  /* LCD icons
494                   Bit 0   - LCD sleep icon enable
495                   Bit 1   - Vertical position icon enable
496                   Bit 2   - Horizontal position icon enable
497                   Bit 3   - Dot 1 icon enable
498                   Bit 4   - Dot 2 icon enable
499                   Bit 5   - Dot 3 icon enable
500                   Bit 6-7 - Unknown
501                */
502         m_vdp.icons = data; /* ummmmm */
503         break;
504      case 0x1c:  /* Palette colors 0 and 1
505                   Bit 0-3 - Gray tone setting for main palette index 0
506                   Bit 4-7 - Gray tone setting for main palette index 1
507                */
508         if (m_system_type == TYPE_WSC)
509         {
510            int i = 15 - ( data & 0x0F );
511            int j = 15 - ( ( data & 0xF0 ) >> 4 );
512            m_vdp.main_palette[0] = ( i << 8 ) | ( i << 4 ) | i;
513            m_vdp.main_palette[1] = ( j << 8 ) | ( j << 4 ) | j;
514         }
515         else
516         {
517            m_vdp.main_palette[0] = data & 0x0F;
518            m_vdp.main_palette[1] = ( data & 0xF0 ) >> 4;
519         }
520         break;
521      case 0x1d:  /* Palette colors 2 and 3
522                   Bit 0-3 - Gray tone setting for main palette index 2
523                   Bit 4-7 - Gray tone setting for main palette index 3
524                */
525         if (m_system_type == TYPE_WSC)
526         {
527            int i = 15 - ( data & 0x0F );
528            int j = 15 - ( ( data & 0xF0 ) >> 4 );
529            m_vdp.main_palette[2] = ( i << 8 ) | ( i << 4 ) | i;
530            m_vdp.main_palette[3] = ( j << 8 ) | ( j << 4 ) | j;
531         }
532         else
533         {
534            m_vdp.main_palette[2] = data & 0x0F;
535            m_vdp.main_palette[3] = ( data & 0xF0 ) >> 4;
536         }
537         break;
538      case 0x1e:  /* Palette colors 4 and 5
539                   Bit 0-3 - Gray tone setting for main palette index 4
540                   Bit 4-7 - Gray tone setting for main paeltte index 5
541                */
542         if (m_system_type == TYPE_WSC)
543         {
544            int i = 15 - ( data & 0x0F );
545            int j = 15 - ( ( data & 0xF0 ) >> 4 );
546            m_vdp.main_palette[4] = ( i << 8 ) | ( i << 4 ) | i;
547            m_vdp.main_palette[5] = ( j << 8 ) | ( j << 4 ) | j;
548         }
549         else
550         {
551            m_vdp.main_palette[4] = data & 0x0F;
552            m_vdp.main_palette[5] = ( data & 0xF0 ) >> 4;
553         }
554         break;
555      case 0x1f:  /* Palette colors 6 and 7
556                   Bit 0-3 - Gray tone setting for main palette index 6
557                   Bit 4-7 - Gray tone setting for main palette index 7
558                */
559         if (m_system_type == TYPE_WSC)
560         {
561            int i = 15 - ( data & 0x0F );
562            int j = 15 - ( ( data & 0xF0 ) >> 4 );
563            m_vdp.main_palette[6] = ( i << 8 ) | ( i << 4 ) | i;
564            m_vdp.main_palette[7] = ( j << 8 ) | ( j << 4 ) | j;
565         }
566         else
567         {
568            m_vdp.main_palette[6] = data & 0x0F;
569            m_vdp.main_palette[7] = ( data & 0xF0 ) >> 4;
570         }
571         break;
572      case 0x20:  /* tile/sprite palette settings
573                   Bit 0-3 - Palette 0 index 0
574                   Bit 4-7 - Palette 0 index 1 */
575      case 0x21:  /* Bit 0-3 - Palette 0 index 2
576                   Bit 4-7 - Palette 0 index 3 */
577      case 0x22:  /* Bit 0-3 - Palette 1 index 0
578                   Bit 4-7 - Palette 1 index 1 */
579      case 0x23:  /* Bit 0-3 - Palette 1 index 2
580                   Bit 4-7 - Palette 1 index 3 */
581      case 0x24:  /* Bit 0-3 - Palette 2 index 0
582                   Bit 4-7 - Palette 2 index 1 */
583      case 0x25:  /* Bit 0-3 - Palette 2 index 2
584                   Bit 4-7 - Palette 2 index 3 */
585      case 0x26:  /* Bit 0-3 - Palette 3 index 0
586                   Bit 4-7 - Palette 3 index 1 */
587      case 0x27:  /* Bit 0-3 - Palette 3 index 2
588                   Bit 4-7 - Palette 3 index 3 */
589      case 0x28:  /* Bit 0-3 - Palette 4 index 0
590                   Bit 4-7 - Palette 4 index 1 */
591      case 0x29:  /* Bit 0-3 - Palette 4 index 2
592                   Bit 4-7 - Palette 4 index 3 */
593      case 0x2a:  /* Bit 0-3 - Palette 5 index 0
594                   Bit 4-7 - Palette 5 index 1 */
595      case 0x2b:  /* Bit 0-3 - Palette 5 index 2
596                   Bit 4-7 - Palette 5 index 3 */
597      case 0x2c:  /* Bit 0-3 - Palette 6 index 0
598                   Bit 4-7 - Palette 6 index 1 */
599      case 0x2d:  /* Bit 0-3 - Palette 6 index 2
600                   Bit 4-7 - Palette 6 index 3 */
601      case 0x2e:  /* Bit 0-3 - Palette 7 index 0
602                   Bit 4-7 - Palette 7 index 1 */
603      case 0x2f:  /* Bit 0-3 - Palette 7 index 2
604                   Bit 4-7 - Palette 7 index 3 */
605      case 0x30:  /* Bit 0-3 - Palette 8 / Sprite Palette 0 index 0
606                   Bit 4-7 - Palette 8 / Sprite Palette 0 index 1 */
607      case 0x31:  /* Bit 0-3 - Palette 8 / Sprite Palette 0 index 2
608                   Bit 4-7 - Palette 8 / Sprite Palette 0 index 3 */
609      case 0x32:  /* Bit 0-3 - Palette 9 / Sprite Palette 1 index 0
610                   Bit 4-7 - Palette 9 / Sprite Palette 1 index 1 */
611      case 0x33:  /* Bit 0-3 - Palette 9 / Sprite Palette 1 index 2
612                   Bit 4-7 - Palette 9 / Sprite Palette 1 index 3 */
613      case 0x34:  /* Bit 0-3 - Palette 10 / Sprite Palette 2 index 0
614                   Bit 4-7 - Palette 10 / Sprite Palette 2 index 1 */
615      case 0x35:  /* Bit 0-3 - Palette 10 / Sprite Palette 2 index 2
616                   Bit 4-7 - Palette 10 / Sprite Palette 2 index 3 */
617      case 0x36:  /* Bit 0-3 - Palette 11 / Sprite Palette 3 index 0
618                   Bit 4-7 - Palette 11 / Sprite Palette 3 index 1 */
619      case 0x37:  /* Bit 0-3 - Palette 11 / Sprite Palette 3 index 2
620                   Bit 4-7 - Palette 11 / Sprite Palette 3 index 3 */
621      case 0x38:  /* Bit 0-3 - Palette 12 / Sprite Palette 4 index 0
622                   Bit 4-7 - Palette 12 / Sprite Palette 4 index 1 */
623      case 0x39:  /* Bit 0-3 - Palette 12 / Sprite Palette 4 index 2
624                   Bit 4-7 - Palette 12 / Sprite Palette 4 index 3 */
625      case 0x3a:  /* Bit 0-3 - Palette 13 / Sprite Palette 5 index 0
626                   Bit 4-7 - Palette 13 / Sprite Palette 5 index 1 */
627      case 0x3b:  /* Bit 0-3 - Palette 13 / Sprite Palette 5 index 2
628                   Bit 4-7 - Palette 13 / Sprite Palette 5 index 3 */
629      case 0x3c:  /* Bit 0-3 - Palette 14 / Sprite Palette 6 index 0
630                   Bit 4-7 - Palette 14 / Sprite Palette 6 index 1 */
631      case 0x3d:  /* Bit 0-3 - Palette 14 / Sprite Palette 6 index 2
632                   Bit 4-7 - Palette 14 / Sprite Palette 6 index 3 */
633      case 0x3e:  /* Bit 0-3 - Palette 15 / Sprite Palette 7 index 0
634                   Bit 4-7 - Palette 15 / Sprite Palette 7 index 1 */
635      case 0x3f:  /* Bit 0-3 - Palette 15 / Sprite Palette 7 index 2
636                   Bit 4-7 - Palette 15 / Sprite Palette 7 index 3 */
637         break;
638309      case 0x40:  /* DMA source address (low)
639                   Bit 0-7 - DMA source address bit 0-7
640                */
310                Bit 0-7 - DMA source address bit 0-7
311                */
641312      case 0x41:  /* DMA source address (high)
642                   Bit 0-7 - DMA source address bit 8-15
643                */
313                Bit 0-7 - DMA source address bit 8-15
314                */
644315      case 0x42:  /* DMA source bank
645                   Bit 0-7 - DMA source bank number
646                */
316                Bit 0-7 - DMA source bank number
317                */
647318      case 0x43:  /* DMA destination bank
648                   Bit 0-7 - DMA destination bank number
649                */
319                Bit 0-7 - DMA destination bank number
320                */
650321      case 0x44:  /* DMA destination address (low)
651                   Bit 0-7 - DMA destination address bit 0-7
652                */
322                Bit 0-7 - DMA destination address bit 0-7
323                */
653324      case 0x45:  /* DMA destination address (high)
654                   Bit 0-7 - DMA destination address bit 8-15
655                */
325                Bit 0-7 - DMA destination address bit 8-15
326                */
656327      case 0x46:  /* Size of copied data (low)
657                   Bit 0-7 - DMA size bit 0-7
658                */
328                Bit 0-7 - DMA size bit 0-7
329                */
659330      case 0x47:  /* Size of copied data (high)
660                   Bit 0-7 - DMA size bit 8-15
661                */
331                Bit 0-7 - DMA size bit 8-15
332                */
662333         break;
663334      case 0x48:  /* DMA control
664                   Bit 0-6 - Unknown
665                   Bit 7   - DMA stop/start
666                */
335                Bit 0-6 - Unknown
336                Bit 7   - DMA stop/start
337                */
667338         if (data & 0x80)
668339         {
669340            UINT32 src, dst;
670341            UINT16 length;
671
342           
672343            src = m_ws_portram[0x40] + (m_ws_portram[0x41] << 8) + (m_ws_portram[0x42] << 16);
673344            dst = m_ws_portram[0x44] + (m_ws_portram[0x45] << 8) + (m_ws_portram[0x43] << 16);
674345            length = m_ws_portram[0x46] + (m_ws_portram[0x47] << 8);
r241752r241753
679350               dst++;
680351            }
681352#ifdef MAME_DEBUG
682               logerror("DMA  src:%X dst:%X length:%d\n", src, dst, length);
353            logerror("DMA  src:%X dst:%X length:%d\n", src, dst, length);
683354#endif
684355            m_ws_portram[0x40] = src & 0xff;
685356            m_ws_portram[0x41] = (src >> 8) & 0xff;
r241752r241753
691362         }
692363         break;
693364      case 0x4a:  /* Sound DMA source address (low)
694                   Bit 0-7 - Sound DMA source address bit 0-7
695                */
365                Bit 0-7 - Sound DMA source address bit 0-7
366                */
696367         m_sound_dma.source = (m_sound_dma.source & 0x0fff00) | data;
697368         break;
698369      case 0x4b:  /* Sound DMA source address (high)
699                   Bit 0-7 - Sound DMA source address bit 8-15
700                */
370                Bit 0-7 - Sound DMA source address bit 8-15
371                */
701372         m_sound_dma.source = (m_sound_dma.source & 0x0f00ff) | (data << 8);
702373         break;
703374      case 0x4c:  /* Sound DMA source memory segment
704                   Bit 0-3 - Sound DMA source address segment
705                   Bit 4-7 - Unknown
706                */
375                Bit 0-3 - Sound DMA source address segment
376                Bit 4-7 - Unknown
377                */
707378         m_sound_dma.source = (m_sound_dma.source & 0xffff) | ((data & 0x0f) << 16);
708379         break;
709380      case 0x4d:  /* Unknown */
710381         break;
711382      case 0x4e:  /* Sound DMA transfer size (low)
712                   Bit 0-7 - Sound DMA transfer size bit 0-7
713                */
383                Bit 0-7 - Sound DMA transfer size bit 0-7
384                */
714385         m_sound_dma.size = (m_sound_dma.size & 0xff00) | data;
715386         break;
716387      case 0x4f:  /* Sound DMA transfer size (high)
717                   Bit 0-7 - Sound DMA transfer size bit 8-15
718                */
388                Bit 0-7 - Sound DMA transfer size bit 8-15
389                */
719390         m_sound_dma.size = (m_sound_dma.size & 0xff) | (data << 8);
720391         break;
721392      case 0x50:  /* Unknown */
722393      case 0x51:  /* Unknown */
723394         break;
724395      case 0x52:  /* Sound DMA start/stop
725                   Bit 0-6 - Unknown
726                   Bit 7   - Sound DMA stop/start
727                */
396                Bit 0-6 - Unknown
397                Bit 7   - Sound DMA stop/start
398                */
728399         m_sound_dma.enable = data;
729400         break;
730      case 0x60:  /* Video mode
731                   Bit 0-4 - Unknown
732                   Bit 5   - Packed mode 0 = not packed mode, 1 = packed mode
733                   Bit 6   - 4/16 colour mode select: 0 = 4 colour mode, 1 = 16 colour mode
734                   Bit 7   - monochrome/colour mode select: 0 = monochrome mode, 1 = colour mode
735                */
736         /*
737          * 111  - packed, 16 color, use 4000/8000, color
738          * 110  - not packed, 16 color, use 4000/8000, color
739          * 101  - packed, 4 color, use 2000, color
740          * 100  - not packed, 4 color, use 2000, color
741          * 011  - packed, 16 color, use 4000/8000, monochrome
742          * 010  - not packed, 16 color , use 4000/8000, monochrome
743          * 001  - packed, 4 color, use 2000, monochrome
744          * 000  - not packed, 4 color, use 2000, monochrome - Regular WS monochrome
745          */
746         if (m_system_type == TYPE_WSC)
747         {
748            m_vdp.color_mode = data & 0x80;
749            m_vdp.colors_16 = data & 0x40;
750            m_vdp.tile_packed = data & 0x20;
751         }
401      case 0x60:
402         m_vdp->reg_w(space, offset, data);
752403         break;
753404      case 0x80:  /* Audio 1 freq (lo)
754                   Bit 0-7 - Audio channel 1 frequency bit 0-7
755                */
405                Bit 0-7 - Audio channel 1 frequency bit 0-7
406                */
756407      case 0x81:  /* Audio 1 freq (hi)
757                   Bit 0-7 - Audio channel 1 frequency bit 8-15
758                */
408                Bit 0-7 - Audio channel 1 frequency bit 8-15
409                */
759410      case 0x82:  /* Audio 2 freq (lo)
760                   Bit 0-7 - Audio channel 2 frequency bit 0-7
761                */
411                Bit 0-7 - Audio channel 2 frequency bit 0-7
412                */
762413      case 0x83:  /* Audio 2 freq (hi)
763                   Bit 0-7 - Audio channel 2 frequency bit 8-15
764                */
414                Bit 0-7 - Audio channel 2 frequency bit 8-15
415                */
765416      case 0x84:  /* Audio 3 freq (lo)
766                   Bit 0-7 - Audio channel 3 frequency bit 0-7
767                */
417                Bit 0-7 - Audio channel 3 frequency bit 0-7
418                */
768419      case 0x85:  /* Audio 3 freq (hi)
769                   Bit 0-7 - Audio channel 3 frequency bit 8-15
770                */
420                Bit 0-7 - Audio channel 3 frequency bit 8-15
421                */
771422      case 0x86:  /* Audio 4 freq (lo)
772                   Bit 0-7 - Audio channel 4 frequency bit 0-7
773                */
423                Bit 0-7 - Audio channel 4 frequency bit 0-7
424                */
774425      case 0x87:  /* Audio 4 freq (hi)
775                   Bit 0-7 - Audio channel 4 frequency bit 8-15
776                */
426                Bit 0-7 - Audio channel 4 frequency bit 8-15
427                */
777428      case 0x88:  /* Audio 1 volume
778                   Bit 0-3 - Right volume audio channel 1
779                   Bit 4-7 - Left volume audio channel 1
780                */
429                Bit 0-3 - Right volume audio channel 1
430                Bit 4-7 - Left volume audio channel 1
431                */
781432      case 0x89:  /* Audio 2 volume
782                   Bit 0-3 - Right volume audio channel 2
783                   Bit 4-7 - Left volume audio channel 2
784                */
433                Bit 0-3 - Right volume audio channel 2
434                Bit 4-7 - Left volume audio channel 2
435                */
785436      case 0x8a:  /* Audio 3 volume
786                   Bit 0-3 - Right volume audio channel 3
787                   Bit 4-7 - Left volume audio channel 3
788                */
437                Bit 0-3 - Right volume audio channel 3
438                Bit 4-7 - Left volume audio channel 3
439                */
789440      case 0x8b:  /* Audio 4 volume
790                   Bit 0-3 - Right volume audio channel 4
791                   Bit 4-7 - Left volume audio channel 4
792                */
441                Bit 0-3 - Right volume audio channel 4
442                Bit 4-7 - Left volume audio channel 4
443                */
793444      case 0x8c:  /* Sweep step
794                   Bit 0-7 - Sweep step
795                */
445                Bit 0-7 - Sweep step
446                */
796447      case 0x8d:  /* Sweep time
797                   Bit 0-7 - Sweep time
798                */
448                Bit 0-7 - Sweep time
449                */
799450      case 0x8e:  /* Noise control
800                   Bit 0-2 - Noise generator type
801                   Bit 3   - Reset
802                   Bit 4   - Enable
803                   Bit 5-7 - Unknown
804                */
451                Bit 0-2 - Noise generator type
452                Bit 3   - Reset
453                Bit 4   - Enable
454                Bit 5-7 - Unknown
455                */
805456      case 0x8f:  /* Sample location
806                   Bit 0-7 - Sample address location 0 00xxxxxx xx000000
807                */
457                Bit 0-7 - Sample address location 0 00xxxxxx xx000000
458                */
808459      case 0x90:  /* Audio control
809                   Bit 0   - Audio 1 enable
810                   Bit 1   - Audio 2 enable
811                   Bit 2   - Audio 3 enable
812                   Bit 3   - Audio 4 enable
813                   Bit 4   - Unknown
814                   Bit 5   - Audio 2 voice mode enable
815                   Bit 6   - Audio 3 sweep mode enable
816                   Bit 7   - Audio 4 noise mode enable
817                */
460                Bit 0   - Audio 1 enable
461                Bit 1   - Audio 2 enable
462                Bit 2   - Audio 3 enable
463                Bit 3   - Audio 4 enable
464                Bit 4   - Unknown
465                Bit 5   - Audio 2 voice mode enable
466                Bit 6   - Audio 3 sweep mode enable
467                Bit 7   - Audio 4 noise mode enable
468                */
818469      case 0x91:  /* Audio output
819                   Bit 0   - Mono select
820                   Bit 1-2 - Output volume
821                   Bit 3   - External stereo
822                   Bit 4-6 - Unknown
823                   Bit 7   - External speaker (Read-only, set by hardware)
824                */
470                Bit 0   - Mono select
471                Bit 1-2 - Output volume
472                Bit 3   - External stereo
473                Bit 4-6 - Unknown
474                Bit 7   - External speaker (Read-only, set by hardware)
475                */
825476      case 0x92:  /* Noise counter shift register (lo)
826                   Bit 0-7 - Noise counter shift register bit 0-7
827                */
477                Bit 0-7 - Noise counter shift register bit 0-7
478                */
828479      case 0x93:  /* Noise counter shift register (hi)
829                   Bit 0-6 - Noise counter shift register bit 8-14
830                   bit 7   - Unknown
831                */
480                Bit 0-6 - Noise counter shift register bit 8-14
481                bit 7   - Unknown
482                */
832483      case 0x94:  /* Master volume
833                   Bit 0-3 - Master volume
834                   Bit 4-7 - Unknown
835                */
484                Bit 0-3 - Master volume
485                Bit 4-7 - Unknown
486                */
836487         m_sound->port_w(space, offset, data);
837488         break;
838489      case 0xa0:  /* Hardware type - this is probably read only
839                   Bit 0   - Enable cartridge slot and/or disable bios
840                   Bit 1   - Hardware type: 0 = WS, 1 = WSC
841                   Bit 2-7 - Unknown
842                */
490                Bit 0   - Enable cartridge slot and/or disable bios
491                Bit 1   - Hardware type: 0 = WS, 1 = WSC
492                Bit 2-7 - Unknown
493                */
843494         if ((data & 0x01) && !m_bios_disabled)
844495            m_bios_disabled = 1;
845496         break;
846      case 0xa2:  /* Timer control
847                   Bit 0   - HBlank Timer enable
848                   Bit 1   - HBlank Timer mode: 0 = one shot, 1 = auto reset
849                   Bit 2   - VBlank Timer(1/75s) enable
850                   Bit 3   - VBlank Timer mode: 0 = one shot, 1 = auto reset
851                   Bit 4-7 - Unknown
852                */
853         m_vdp.timer_hblank_enable = BIT(data, 0);
854         m_vdp.timer_hblank_mode =   BIT(data, 1);
855         m_vdp.timer_vblank_enable = BIT(data, 2);
856         m_vdp.timer_vblank_mode =   BIT(data, 3);
857         break;
858      case 0xa4:  /* HBlank timer frequency (low) - reload value
859                   Bit 0-7 - HBlank timer reload value bit 0-7
860                */
861         m_vdp.timer_hblank_reload &= 0xff00;
862         m_vdp.timer_hblank_reload += data;
863         m_vdp.timer_hblank_count = m_vdp.timer_hblank_reload;
864         break;
865      case 0xa5:  /* HBlank timer frequency (high) - reload value
866                   Bit 8-15 - HBlank timer reload value bit 8-15
867                */
868         m_vdp.timer_hblank_reload &= 0xff;
869         m_vdp.timer_hblank_reload += data << 8;
870         m_vdp.timer_hblank_count = m_vdp.timer_hblank_reload;
871         break;
872      case 0xa6:  /* VBlank timer frequency (low) - reload value
873                   Bit 0-7 - VBlank timer reload value bit 0-7
874                */
875         m_vdp.timer_vblank_reload &= 0xff00;
876         m_vdp.timer_vblank_reload += data;
877         m_vdp.timer_vblank_count = m_vdp.timer_vblank_reload;
878         break;
879      case 0xa7:  /* VBlank timer frequency (high) - reload value
880                   Bit 0-7 - VBlank timer reload value bit 8-15
881                */
882         m_vdp.timer_vblank_reload &= 0xff;
883         m_vdp.timer_vblank_reload += data << 8;
884         m_vdp.timer_vblank_count = m_vdp.timer_vblank_reload;
885         break;
886      case 0xa8:  /* HBlank counter (low)
887                   Bit 0-7 - HBlank counter bit 0-7
888                */
889      case 0xa9:  /* HBlank counter (high)
890                   Bit 0-7 - HBlank counter bit 8-15
891                */
892      case 0xaa:  /* VBlank counter (low)
893                   Bit 0-7 - VBlank counter bit 0-7
894                */
895      case 0xab:  /* VBlank counter (high)
896                   Bit 0-7 - VBlank counter bit 8-15
897                */
898         break;
899
497         
900498      case 0xb0:  /* Interrupt base vector
901                   Bit 0-7 - Interrupt base vector
902                */
499                Bit 0-7 - Interrupt base vector
500                */
903501         break;
904502      case 0xb1:  /* Communication byte
905                   Bit 0-7 - Communication byte
906                */
503                Bit 0-7 - Communication byte
504                */
907505         break;
908506      case 0xb2:  /* Interrupt enable
909                   Bit 0   - Serial transmit interrupt enable
910                   Bit 1   - Key press interrupt enable
911                   Bit 2   - RTC alarm interrupt enable
912                   Bit 3   - Serial receive interrupt enable
913                   Bit 4   - Drawing line detection interrupt enable
914                   Bit 5   - VBlank timer interrupt enable
915                   Bit 6   - VBlank interrupt enable
916                   Bit 7   - HBlank timer interrupt enable
917                */
507                Bit 0   - Serial transmit interrupt enable
508                Bit 1   - Key press interrupt enable
509                Bit 2   - RTC alarm interrupt enable
510                Bit 3   - Serial receive interrupt enable
511                Bit 4   - Drawing line detection interrupt enable
512                Bit 5   - VBlank timer interrupt enable
513                Bit 6   - VBlank interrupt enable
514                Bit 7   - HBlank timer interrupt enable
515                */
918516         break;
919517      case 0xb3:  /* serial communication control
920                   Bit 0   - Receive complete
921                   Bit 1   - Error
922                   Bit 2   - Send complete
923                   Bit 3-4 - Unknown
924                   Bit 5   - Send data interrupt generation
925                   Bit 6   - Connection speed: 0 = 9600 bps, 1 = 38400 bps
926                   bit 7   - Receive data interrupt generation
927                */
928//          data |= 0x02;
518                Bit 0   - Receive complete
519                Bit 1   - Error
520                Bit 2   - Send complete
521                Bit 3-4 - Unknown
522                Bit 5   - Send data interrupt generation
523                Bit 6   - Connection speed: 0 = 9600 bps, 1 = 38400 bps
524                bit 7   - Receive data interrupt generation
525                */
526         //          data |= 0x02;
929527         m_ws_portram[0xb1] = 0xff;
930528         if (data & 0x80)
931529         {
932//              m_ws_portram[0xb1] = 0x00;
530            //              m_ws_portram[0xb1] = 0x00;
933531            data |= 0x04;
934532         }
935533         if (data & 0x20)
936534         {
937//              data |= 0x01;
535            //              data |= 0x01;
938536         }
939537         break;
940538      case 0xb5:  /* Read controls
941                   Bit 0-3 - Current state of input lines (read-only)
942                   Bit 4-6 - Select line of inputs to read
943                             001 - Read Y cursors
944                             010 - Read X cursors
945                             100 - Read START,A,B buttons
946                   Bit 7   - Unknown
947                */
539                Bit 0-3 - Current state of input lines (read-only)
540                Bit 4-6 - Select line of inputs to read
541                001 - Read Y cursors
542                010 - Read X cursors
543                100 - Read START,A,B buttons
544                Bit 7   - Unknown
545                */
948546         data = data & 0xf0;
949547         switch (data)
950         {
951            case 0x10:  /* Read Y cursors: Y1 - Y2 - Y3 - Y4 */
952               input = m_cursy->read();
953               if (m_rotate) // reorient controls if the console is rotated
954               {
955                  if (input & 0x01) data |= 0x02;
956                  if (input & 0x02) data |= 0x04;
957                  if (input & 0x04) data |= 0x08;
958                  if (input & 0x08) data |= 0x01;
959               }
960               else
961                  data = data | input;
548      {
549         case 0x10:  /* Read Y cursors: Y1 - Y2 - Y3 - Y4 */
550            input = m_cursy->read();
551            if (m_rotate) // reorient controls if the console is rotated
552            {
553               if (input & 0x01) data |= 0x02;
554               if (input & 0x02) data |= 0x04;
555               if (input & 0x04) data |= 0x08;
556               if (input & 0x08) data |= 0x01;
557            }
558            else
559               data = data | input;
962560            break;
963            case 0x20:  /* Read X cursors: X1 - X2 - X3 - X4 */
964               input = m_cursx->read();
965               if (m_rotate) // reorient controls if the console is rotated
966               {
967                  if (input & 0x01) data |= 0x02;
968                  if (input & 0x02) data |= 0x04;
969                  if (input & 0x04) data |= 0x08;
970                  if (input & 0x08) data |= 0x01;
971               }
972               else
973                  data = data | input;
561         case 0x20:  /* Read X cursors: X1 - X2 - X3 - X4 */
562            input = m_cursx->read();
563            if (m_rotate) // reorient controls if the console is rotated
564            {
565               if (input & 0x01) data |= 0x02;
566               if (input & 0x02) data |= 0x04;
567               if (input & 0x04) data |= 0x08;
568               if (input & 0x08) data |= 0x01;
569            }
570            else
571               data = data | input;
974572            break;
975            case 0x40:  /* Read buttons: START - A - B */
976               data = data | m_buttons->read();
573         case 0x40:  /* Read buttons: START - A - B */
574            data = data | m_buttons->read();
977575            break;
978         }
576      }
979577         break;
980578      case 0xb6:  /* Interrupt acknowledge
981                   Bit 0   - Serial transmit interrupt acknowledge
982                   Bit 1   - Key press interrupt acknowledge
983                   Bit 2   - RTC alarm interrupt acknowledge
984                   Bit 3   - Serial receive interrupt acknowledge
985                   Bit 4   - Drawing line detection interrupt acknowledge
986                   Bit 5   - VBlank timer interrupt acknowledge
987                   Bit 6   - VBlank interrupt acknowledge
988                   Bit 7   - HBlank timer interrupt acknowledge
989                */
990         wswan_clear_irq_line(data);
579                Bit 0   - Serial transmit interrupt acknowledge
580                Bit 1   - Key press interrupt acknowledge
581                Bit 2   - RTC alarm interrupt acknowledge
582                Bit 3   - Serial receive interrupt acknowledge
583                Bit 4   - Drawing line detection interrupt acknowledge
584                Bit 5   - VBlank timer interrupt acknowledge
585                Bit 6   - VBlank interrupt acknowledge
586                Bit 7   - HBlank timer interrupt acknowledge
587                */
588         clear_irq_line(data);
991589         data = m_ws_portram[0xb6];
992590         break;
993591      case 0xba:  /* Internal EEPROM data (low)
994                   Bit 0-7 - Internal EEPROM data transfer bit 0-7
995                */
592                Bit 0-7 - Internal EEPROM data transfer bit 0-7
593                */
996594      case 0xbb:  /* Internal EEPROM data (high)
997                   Bit 0-7 - Internal EEPROM data transfer bit 8-15
998                */
595                Bit 0-7 - Internal EEPROM data transfer bit 8-15
596                */
999597         break;
1000598      case 0xbc:  /* Internal EEPROM address (low)
1001                   Bit 0-7 - Internal EEPROM address bit 1-8
1002                */
599                Bit 0-7 - Internal EEPROM address bit 1-8
600                */
1003601      case 0xbd:  /* Internal EEPROM address (high)
1004                   Bit 0   - Internal EEPROM address bit 9(?)
1005                   Bit 1-7 - Unknown
1006                   Only 1KByte internal EEPROM??
1007                */
602                Bit 0   - Internal EEPROM address bit 9(?)
603                Bit 1-7 - Unknown
604                Only 1KByte internal EEPROM??
605                */
1008606         break;
1009607      case 0xbe:  /* Internal EEPROM command
1010                   Bit 0   - Read complete (read only)
1011                   Bit 1   - Write complete (read only)
1012                   Bit 2-3 - Unknown
1013                   Bit 4   - Read
1014                   Bit 5   - Write
1015                   Bit 6   - Protect
1016                   Bit 7   - Initialize
1017                */
608                Bit 0   - Read complete (read only)
609                Bit 1   - Write complete (read only)
610                Bit 2-3 - Unknown
611                Bit 4   - Read
612                Bit 5   - Write
613                Bit 6   - Protect
614                Bit 7   - Initialize
615                */
1018616         if (data & 0x20)
1019617         {
1020618            UINT16 addr = ( ( ( m_ws_portram[0xbd] << 8 ) | m_ws_portram[0xbc] ) << 1 ) & 0x1FF;
r241752r241753
1056654         logerror( "Write to unsupported port: %X - %X\n", offset, data );
1057655         break;
1058656   }
1059
657   
1060658   /* Update the port value */
1061659   m_ws_portram[offset] = data;
1062660}
1063
1064
1065TIMER_CALLBACK_MEMBER(wswan_state::wswan_scanline_interrupt)
1066{
1067   if( m_vdp.current_line < 144 )
1068   {
1069      wswan_refresh_scanline();
1070   }
1071
1072   /* Decrement 12kHz (HBlank) counter */
1073   if ( m_vdp.timer_hblank_enable && m_vdp.timer_hblank_reload != 0 )
1074   {
1075      m_vdp.timer_hblank_count--;
1076      logerror( "timer_hblank_count: %X\n", m_vdp.timer_hblank_count );
1077      if ( m_vdp.timer_hblank_count == 0 )
1078      {
1079         if ( m_vdp.timer_hblank_mode )
1080         {
1081            m_vdp.timer_hblank_count = m_vdp.timer_hblank_reload;
1082         }
1083         else
1084         {
1085            m_vdp.timer_hblank_reload = 0;
1086         }
1087         logerror( "trigerring hbltmr interrupt\n" );
1088         wswan_set_irq_line( WSWAN_IFLAG_HBLTMR );
1089      }
1090   }
1091
1092   /* Handle Sound DMA */
1093   if ( ( m_sound_dma.enable & 0x88 ) == 0x80 )
1094   {
1095      address_space &space = m_maincpu->space(AS_PROGRAM );
1096      /* TODO: Output sound DMA byte */
1097      port_w( space, 0x89, space.read_byte(m_sound_dma.source ) );
1098      m_sound_dma.size--;
1099      m_sound_dma.source = ( m_sound_dma.source + 1 ) & 0x0FFFFF;
1100      if ( m_sound_dma.size == 0 )
1101      {
1102         m_sound_dma.enable &= 0x7F;
1103      }
1104   }
1105
1106//  m_vdp.current_line = (m_vdp.current_line + 1) % 159;
1107
1108   if( m_vdp.current_line == 144 ) // buffer sprite table
1109   {
1110      memcpy(m_vdp.sprite_table_buffer, &m_vdp.vram[m_vdp.sprite_table_address], 512);
1111      m_vdp.sprite_count = m_ws_portram[0x06];
1112      m_vdp.sprite_first = m_ws_portram[0x05]; // always zero?
1113   }
1114
1115   if( m_vdp.current_line == 144 )
1116   {
1117      wswan_set_irq_line( WSWAN_IFLAG_VBL );
1118      /* Decrement 75Hz (VBlank) counter */
1119      if ( m_vdp.timer_vblank_enable && m_vdp.timer_vblank_reload != 0 )
1120      {
1121         m_vdp.timer_vblank_count--;
1122         logerror( "timer_vblank_count: %X\n", m_vdp.timer_vblank_count );
1123         if ( m_vdp.timer_vblank_count == 0 )
1124         {
1125            if ( m_vdp.timer_vblank_mode )
1126            {
1127               m_vdp.timer_vblank_count = m_vdp.timer_vblank_reload;
1128            }
1129            else
1130            {
1131               m_vdp.timer_vblank_reload = 0;
1132            }
1133            logerror( "triggering vbltmr interrupt\n" );
1134            wswan_set_irq_line( WSWAN_IFLAG_VBLTMR );
1135         }
1136      }
1137   }
1138
1139//  m_vdp.current_line = (m_vdp.current_line + 1) % 159;
1140
1141   if ( m_vdp.current_line == m_vdp.line_compare )
1142   {
1143      wswan_set_irq_line( WSWAN_IFLAG_LCMP );
1144   }
1145
1146   m_vdp.current_line = (m_vdp.current_line + 1) % 159;
1147}
trunk/src/mess/machine/x820kb.c
r0r241753
1// license:BSD-3-Clause
2// copyright-holders:Curt Coder
3/**********************************************************************
4
5    Xerox 820/820-II ASCII keyboard emulation
6
7    Copyright MESS Team.
8    Visit http://mamedev.org for licensing and usage restrictions.
9
10*********************************************************************/
11
12/*
13
14PCB Layout
15----------
16
17Maxi-Switch Co.
18630107-02
19
20|-----------------------------------------------------------------------|
21|                                                       |--CN1--| CN2   |
22|            8748   6MHz                 74154   *                      |
23|                                                                       |
24|-----------------------------------------------------------------------|
25
26Notes:
27    All IC's shown.
28
29    8048        - NEC D8748D
30    74154       - 4-line to 16-line decoder/multiplexer
31    *           - unpopulated 8-pin chip
32    CN1         - 2x16 PCB header
33    CN2         - unpopulated RJ-45? connector
34
35*/
36
37/*
38
39   TODO:
40
41   - repeat
42   - what are T0/T1/INT?
43
44*/
45
46#include "x820kb.h"
47
48
49
50//**************************************************************************
51//  MACROS / CONSTANTS
52//**************************************************************************
53
54#define I8748_TAG       "i8748"
55
56
57
58//**************************************************************************
59//  DEVICE DEFINITIONS
60//**************************************************************************
61
62const device_type XEROX_820_KEYBOARD = &device_creator<xerox_820_keyboard_t>;
63
64
65//-------------------------------------------------
66//  ROM( xerox_820_keyboard )
67//-------------------------------------------------
68
69ROM_START( xerox_820_keyboard )
70   ROM_REGION( 0x400, I8748_TAG, 0 )
71   ROM_LOAD( "820iikey.bin", 0x000, 0x400, CRC(8ea3b39b) SHA1(3f05959f54a558b273567b1b4f0c7cdf46d8d9bf) )
72ROM_END
73
74
75//-------------------------------------------------
76//  rom_region - device-specific ROM region
77//-------------------------------------------------
78
79const rom_entry *xerox_820_keyboard_t::device_rom_region() const
80{
81   return ROM_NAME( xerox_820_keyboard );
82}
83
84
85//-------------------------------------------------
86//  ADDRESS_MAP( kb_io )
87//-------------------------------------------------
88
89static ADDRESS_MAP_START( xerox_820_keyboard_io, AS_IO, 8, xerox_820_keyboard_t )
90   AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(kb_p1_r, kb_p1_w)
91   AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(kb_p2_r) AM_WRITENOP
92   AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(kb_t0_r)
93   AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T1) AM_READ(kb_t1_r)
94   AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_WRITE(kb_bus_w)
95ADDRESS_MAP_END
96
97
98//-------------------------------------------------
99//  MACHINE_DRIVER( xerox_820_keyboard )
100//-------------------------------------------------
101
102static MACHINE_CONFIG_FRAGMENT( xerox_820_keyboard )
103   MCFG_CPU_ADD(I8748_TAG, I8048, XTAL_6MHz)
104   MCFG_CPU_IO_MAP(xerox_820_keyboard_io)
105MACHINE_CONFIG_END
106
107
108//-------------------------------------------------
109//  machine_config_additions - device-specific
110//  machine configurations
111//-------------------------------------------------
112
113machine_config_constructor xerox_820_keyboard_t::device_mconfig_additions() const
114{
115   return MACHINE_CONFIG_NAME( xerox_820_keyboard );
116}
117
118
119//-------------------------------------------------
120//  INPUT_PORTS( xerox_820_keyboard )
121//-------------------------------------------------
122
123INPUT_PORTS_START( xerox_820_keyboard )
124   PORT_START("Y0")
125   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
126   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
127   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
128   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
129   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
130   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
131   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
132   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
133
134   PORT_START("Y1")
135   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
136   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
137   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
138   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
139   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}')
140   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ESC") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
141   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD))
142   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD))
143
144   PORT_START("Y2")
145   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
146   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD))
147   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_UP) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
148   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("LINE FEED") PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD))
149   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RETURN") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
150   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('"') PORT_CHAR('`')
151   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':') PORT_CHAR('~')
152   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
153
154   PORT_START("Y3")
155   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad .")
156   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
157   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_RIGHT) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
158   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_DOWN) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
159   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_LEFT) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
160   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') PORT_CHAR('\\')
161   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
162   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
163
164   PORT_START("Y4")
165   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD))
166   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // ; =
167   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED ) // : < >
168   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD))
169   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
170   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD))
171   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD))
172   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
173
174   PORT_START("Y5")
175   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('*')
176   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CHAR('0') PORT_CHAR(')')
177   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CHAR('9') PORT_CHAR('(')
178   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
179   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+')
180   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("BACK SPACE") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
181   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("DEL") PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL))
182   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad -") PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD))
183
184   PORT_START("Y6")
185   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
186   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('^')
187   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
188   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
189   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
190   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@')
191   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
192   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("HELP") PORT_CODE(KEYCODE_TILDE)
193
194   PORT_START("Y7")
195   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
196   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
197   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
198   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
199   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
200   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
201   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
202   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("TAB") PORT_CODE(KEYCODE_TAB) PORT_CHAR(UCHAR_MAMEKEY(TAB))
203
204   PORT_START("Y8")
205   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
206   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
207   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
208   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
209   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
210   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
211   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
212   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
213
214   PORT_START("YF")
215   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("LOCK") PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) PORT_TOGGLE
216   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
217   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Left CTRL") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL))
218   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
219   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
220   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
221   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Right CTRL") PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(RCONTROL))
222   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
223INPUT_PORTS_END
224
225
226//-------------------------------------------------
227//  input_ports - device-specific input ports
228//-------------------------------------------------
229
230ioport_constructor xerox_820_keyboard_t::device_input_ports() const
231{
232   return INPUT_PORTS_NAME( xerox_820_keyboard );
233}
234
235
236
237//**************************************************************************
238//  LIVE DEVICE
239//**************************************************************************
240
241//-------------------------------------------------
242//  xerox_820_keyboard_t - constructor
243//-------------------------------------------------
244
245xerox_820_keyboard_t::xerox_820_keyboard_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
246   device_t(mconfig, XEROX_820_KEYBOARD, "Xerox 820 Keyboard", tag, owner, clock, "x820kb", __FILE__),
247   m_maincpu(*this, I8748_TAG),
248   m_y0(*this, "Y0"),
249   m_y1(*this, "Y1"),
250   m_y2(*this, "Y2"),
251   m_y3(*this, "Y3"),
252   m_y4(*this, "Y4"),
253   m_y5(*this, "Y5"),
254   m_y6(*this, "Y6"),
255   m_y7(*this, "Y7"),
256   m_y8(*this, "Y8"),
257   m_yf(*this, "YF"),
258   m_kbstb_cb(*this),
259   m_p1(0xff),
260   m_bus(0xff)
261{
262}
263
264
265//-------------------------------------------------
266//  device_start - device-specific startup
267//-------------------------------------------------
268
269void xerox_820_keyboard_t::device_start()
270{
271   // state saving
272   save_item(NAME(m_p1));
273   save_item(NAME(m_bus));
274}
275
276
277//-------------------------------------------------
278//  device_reset - device-specific reset
279//-------------------------------------------------
280
281void xerox_820_keyboard_t::device_reset()
282{
283   m_kbstb_cb.resolve_safe();
284}
285
286void xerox_820_keyboard_t::device_reset_after_children()
287{
288   m_maincpu->set_input_line(MCS48_INPUT_IRQ, ASSERT_LINE);
289}
290
291
292//-------------------------------------------------
293//  kb_p1_r -
294//-------------------------------------------------
295
296READ8_MEMBER( xerox_820_keyboard_t::kb_p1_r )
297{
298   return m_p1; // TODO: move to mcs48.c
299}
300
301
302//-------------------------------------------------
303//  kb_p1_w -
304//-------------------------------------------------
305
306WRITE8_MEMBER( xerox_820_keyboard_t::kb_p1_w )
307{
308   /*
309
310      bit    description
311
312      0       A0
313      1       A1
314      2       A2
315      3       A3
316      4         KBSTB
317      5
318      6
319      7      ? (toggled if T1=0)
320
321   */
322
323   m_p1 = data;
324
325   m_kbstb_cb(BIT(data, 4) ? CLEAR_LINE : ASSERT_LINE);
326}
327
328
329//-------------------------------------------------
330//  kb_p2_r -
331//-------------------------------------------------
332
333READ8_MEMBER( xerox_820_keyboard_t::kb_p2_r )
334{
335   UINT8 data = 0xff;
336
337   switch (m_p1 & 0x0f)
338   {
339      case 0: data &= m_y0->read(); break;
340      case 1: data &= m_y1->read(); break;
341      case 2: data &= m_y2->read(); break;
342      case 3: data &= m_y3->read(); break;
343      case 4: data &= m_y4->read(); break;
344      case 5: data &= m_y5->read(); break;
345      case 6: data &= m_y6->read(); break;
346      case 7: data &= m_y7->read(); break;
347      case 8: data &= m_y8->read(); break;
348      case 0xf: data &= m_yf->read(); break;
349   }
350
351   return data;
352}
353
354
355//-------------------------------------------------
356//  kb_t0_r -
357//-------------------------------------------------
358
359READ8_MEMBER( xerox_820_keyboard_t::kb_t0_r )
360{
361   UINT8 data = 1;
362
363   switch (m_p1 & 0x0f)
364   {
365      case 0xd: data = 1; break; // ??? if 0, return key data | 0x80
366      case 0xe: data = 1; break; // ??? if 0, set r6=1
367   }
368
369   return data;
370}
371
372
373//-------------------------------------------------
374//  kb_t1_r -
375//-------------------------------------------------
376
377READ8_MEMBER( xerox_820_keyboard_t::kb_t1_r )
378{
379   return 1; // ??? if 0, toggle P17
380}
381
382
383//-------------------------------------------------
384//  kb_bus_w -
385//-------------------------------------------------
386
387WRITE8_MEMBER( xerox_820_keyboard_t::kb_bus_w )
388{
389   m_bus = data;
390}
trunk/src/mess/machine/x820kb.h
r0r241753
1// license:BSD-3-Clause
2// copyright-holders:Curt Coder
3/**********************************************************************
4
5    Xerox 820/820-II ASCII keyboard emulation
6
7    Copyright MESS Team.
8    Visit http://mamedev.org for licensing and usage restrictions.
9
10*********************************************************************/
11
12#pragma once
13
14#ifndef __XEROX_820_KEYBOARD__
15#define __XEROX_820_KEYBOARD__
16
17#include "emu.h"
18#include "cpu/mcs48/mcs48.h"
19
20
21
22//**************************************************************************
23//  INTERFACE CONFIGURATION MACROS
24//**************************************************************************
25
26#define MCFG_XEROX_820_KEYBOARD_KBSTB_CALLBACK(_devcb) \
27   devcb = &xerox_820_keyboard_t::set_kbstb_wr_callback(*device, DEVCB_##_devcb);
28
29
30
31//**************************************************************************
32//  TYPE DEFINITIONS
33//**************************************************************************
34
35// ======================> xerox_820_keyboard_t
36
37class xerox_820_keyboard_t :  public device_t
38{
39public:
40   // construction/destruction
41   xerox_820_keyboard_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
42
43   template<class _Object> static devcb_base &set_kbstb_wr_callback(device_t &device, _Object object) { return downcast<xerox_820_keyboard_t &>(device).m_kbstb_cb.set_callback(object); }
44
45   // optional information overrides
46   virtual const rom_entry *device_rom_region() const;
47   virtual machine_config_constructor device_mconfig_additions() const;
48   virtual ioport_constructor device_input_ports() const;
49
50   UINT8 read() { return m_bus; }
51
52   DECLARE_READ8_MEMBER( kb_p1_r );
53   DECLARE_WRITE8_MEMBER( kb_p1_w );
54   DECLARE_READ8_MEMBER( kb_p2_r );
55   DECLARE_READ8_MEMBER( kb_t0_r );
56   DECLARE_READ8_MEMBER( kb_t1_r );
57   DECLARE_WRITE8_MEMBER( kb_bus_w );
58
59protected:
60   // device-level overrides
61   virtual void device_start();
62   virtual void device_reset();
63   virtual void device_reset_after_children();
64
65private:
66   required_device<cpu_device> m_maincpu;
67   required_ioport m_y0;
68   required_ioport m_y1;
69   required_ioport m_y2;
70   required_ioport m_y3;
71   required_ioport m_y4;
72   required_ioport m_y5;
73   required_ioport m_y6;
74   required_ioport m_y7;
75   required_ioport m_y8;
76   required_ioport m_yf;
77
78   devcb_write_line   m_kbstb_cb;
79
80   UINT8 m_p1;
81   UINT8 m_bus;
82};
83
84
85// device type definition
86extern const device_type XEROX_820_KEYBOARD;
87
88
89
90#endif
trunk/src/mess/mess.lst
r241752r241753
297297
298298// Milton Bradley
299299microvsn  // MicroVision - 1979
300simon
300301
301302// Entex
302303advision  // Adventurevision
r241752r241753
332333// EPOCH
333334gamepock  // Epoch Game Pocket Computer
334335
336// Bit Corp
337gamate   // Bit Corp Gamate
338
335339// KOEI
336340pasogo  // KOEI PasoGo
337341
r241752r241753
24742478vax785
24752479ms0515
24762480ie15
2481dvk_ksm
24772482asmapro
24782483asma2k
24792484altos5
trunk/src/mess/mess.mak
r241752r241753
425425MACHINES += LDVP931
426426MACHINES += LH5810
427427MACHINES += LINFLASH
428#MACHINES += LPCI
428429MACHINES += LSI53C810
429430MACHINES += M68307
430431MACHINES += M68340
r241752r241753
478479MACHINES += PC_LPT
479480MACHINES += PCCARD
480481MACHINES += PCF8593
481#MACHINES += PCI
482482MACHINES += PCKEYBRD
483483MACHINES += PIC8259
484484MACHINES += PIT8253
r241752r241753
599599BUSES += ISA
600600BUSES += ISBX
601601BUSES += KC
602BUSES += LPCI
602603BUSES += MACPDS
603604BUSES += MIDI
604605BUSES += MEGADRIVE
r241752r241753
609610BUSES += O2
610611BUSES += ORICEXT
611612BUSES += PCE
612BUSES += PCI
613613BUSES += PC_JOY
614614BUSES += PC_KBD
615615BUSES += PET
r241752r241753
901901   $(MAME_MACHINE)/naomim2.o   \
902902   $(MAME_MACHINE)/naomim4.o   \
903903   $(MAME_MACHINE)/naomirom.o  \
904   $(MAME_MACHINE)/315-5881_crypt.o  \
904905   $(MAME_VIDEO)/powervr2.o    \
905906   $(MAME_DRIVERS)/neogeo.o    \
906907   $(MAME_MACHINE)/neoboot.o   \
r241752r241753
959960   $(MESS_DRIVERS)/apricotf.o  \
960961   $(MESS_DRIVERS)/apricotp.o  \
961962   $(MESS_MACHINE)/apricotkb.o \
962   $(MESS_DRIVERS)/victor9k.o $(MESS_MACHINE)/victor9kb.o \
963   $(MESS_DRIVERS)/victor9k.o $(MESS_MACHINE)/victor9kb.o $(MESS_MACHINE)/victor9k_fdc.o \
963964
964965$(MESSOBJ)/adc.a:               \
965966   $(MESS_DRIVERS)/super6.o    \
r241752r241753
10291030$(MESSOBJ)/bandai.a:            \
10301031   $(MESS_DRIVERS)/sv8000.o    \
10311032   $(MESS_DRIVERS)/rx78.o      \
1032   $(MESS_DRIVERS)/wswan.o $(MESS_AUDIO)/wswan_snd.o $(MESS_MACHINE)/wswan.o $(MESS_VIDEO)/wswan.o \
1033   $(MESS_DRIVERS)/wswan.o $(MESS_AUDIO)/wswan_snd.o $(MESS_MACHINE)/wswan.o $(MESS_VIDEO)/wswan_video.o \
10331034
10341035$(MESSOBJ)/be.a:                \
10351036   $(MESS_DRIVERS)/bebox.o $(MESS_MACHINE)/bebox.o \
r241752r241753
11791180
11801181$(MESSOBJ)/elektrka.a:          \
11811182   $(MESS_DRIVERS)/bk.o $(MESS_MACHINE)/bk.o $(MESS_VIDEO)/bk.o \
1183   $(MESS_DRIVERS)/dvk_ksm.o $(MESS_MACHINE)/ms7004.o \
11821184   $(MESS_DRIVERS)/mk85.o      \
11831185   $(MESS_DRIVERS)/mk90.o      \
11841186
r241752r241753
13511353
13521354$(MESSOBJ)/mb.a:                \
13531355   $(MESS_DRIVERS)/microvsn.o  \
1356   $(MESS_DRIVERS)/simon.o     \
13541357
13551358$(MESSOBJ)/mchester.a:          \
13561359   $(MESS_DRIVERS)/ssem.o      \
r241752r241753
18291832   $(MESS_DRIVERS)/jupiter.o   \
18301833
18311834$(MESSOBJ)/xerox.a:             \
1832   $(MESS_DRIVERS)/xerox820.o  \
1835   $(MESS_DRIVERS)/xerox820.o $(MESS_MACHINE)/x820kb.o \
18331836   $(MESS_DRIVERS)/bigbord2.o  \
18341837   $(MESS_DRIVERS)/alto2.o     \
18351838
r241752r241753
18961899   $(MESS_DRIVERS)/fc100.o     \
18971900   $(MESS_DRIVERS)/fk1.o       \
18981901   $(MESS_DRIVERS)/ft68m.o     \
1902   $(MESS_DRIVERS)/gamate.o    \
18991903   $(MESS_DRIVERS)/gameking.o  \
19001904   $(MESS_DRIVERS)/gimix.o     \
19011905   $(MESS_DRIVERS)/grfd2301.o  \
r241752r241753
21212125$(MESS_DRIVERS)/sdk85.o:    $(MESS_LAYOUT)/sdk85.lh
21222126$(MESS_DRIVERS)/sdk86.o:    $(MESS_LAYOUT)/sdk86.lh
21232127$(MESS_DRIVERS)/selz80.o:   $(MESS_LAYOUT)/selz80.lh
2128$(MESS_DRIVERS)/simon.o:    $(MESS_LAYOUT)/simon.lh
21242129$(MESS_DRIVERS)/sitcom.o:   $(MESS_LAYOUT)/sitcom.lh
21252130$(MESS_DRIVERS)/slc1.o:     $(MESS_LAYOUT)/slc1.lh
21262131$(MESS_DRIVERS)/sms.o:      $(MESS_LAYOUT)/sms1.lh
trunk/src/mess/tools/castool/main.c
r241752r241753
2020#include "corestr.h"
2121
2222#include "formats/a26_cas.h"
23#include "formats/ace_tap.h"
24#include "formats/adam_cas.h"
2325#include "formats/apf_apt.h"
2426#include "formats/cbm_tap.h"
2527#include "formats/cgen_cas.h"
2628#include "formats/coco_cas.h"
2729#include "formats/csw_cas.h"
30#include "formats/fm7_cas.h"
2831#include "formats/fmsx_cas.h"
2932#include "formats/gtp_cas.h"
3033#include "formats/hect_tap.h"
31#include "formats/ace_tap.h"
32#include "formats/adam_cas.h"
3334#include "formats/kc_cas.h"
3435#include "formats/kim1_cas.h"
3536#include "formats/lviv_lvt.h"
3637#include "formats/mz_cas.h"
3738#include "formats/orao_cas.h"
3839#include "formats/oric_tap.h"
40#include "formats/p6001_cas.h"
41#include "formats/phc25_cas.h"
3942#include "formats/pmd_cas.h"
4043#include "formats/primoptp.h"
4144#include "formats/rk_cas.h"
4245#include "formats/sc3000_bit.h"
46#include "formats/sol_cas.h"
47#include "formats/sorc_cas.h"
4348#include "formats/sord_cas.h"
49#include "formats/spc1000_cas.h"
4450#include "formats/svi_cas.h"
4551#include "formats/thom_cas.h"
4652#include "formats/trs_cas.h"
r241752r241753
5056#include "formats/vg5k_cas.h"
5157#include "formats/vt_cas.h"
5258#include "formats/x07_cas.h"
59#include "formats/x1_tap.h"
5360#include "formats/zx81_p.h"
5461
5562struct SupportedCassetteFormats
r241752r241753
6067};
6168
6269const struct SupportedCassetteFormats formats[] = {
63   {"a26", a26_cassette_formats               ,"Atari 2600"},
64   {"ddp", coleco_adam_cassette_formats       ,"Coleco Adam"},
70   {"a26", a26_cassette_formats               ,"Atari 2600 SuperCharger"},
6571   {"apf", apf_cassette_formats               ,"APF Imagination Machine"},
66   {"cbm", cbm_cassette_formats               ,"Commodore"},
67   {"cgenie", cgenie_cassette_formats         ,"Colour Genie"},
68   {"coco", coco_cassette_formats             ,"TRS-80 Radio Shack Color Computer Family"},
72   {"bbc", bbc_cassette_formats               ,"Acorn BBC & Electron"},
73   {"cbm", cbm_cassette_formats               ,"Commodore 8-bit series"},
74   {"cdt", cdt_cassette_formats               ,"Amstrad CPC"},
75   {"cgenie", cgenie_cassette_formats         ,"EACA Colour Genie"},
76   {"coco", coco_cassette_formats             ,"Tandy Radio Shack Color Computer"},
6977   {"csw", csw_cassette_formats               ,"Compressed Square Wave"},
70   {"bbc", bbc_cassette_formats               ,"BBC"},
71   {"fmxs", fmsx_cassette_formats             ,"MSX"},
72   {"gtp", gtp_cassette_formats               ,"Galaksija"},
73   {"hector", hector_cassette_formats         ,"Hector - k7 : classical, FOR : forth cassette "},
74   {"jupiter", ace_cassette_formats           ,"Jupiter"},
78   {"ddp", coleco_adam_cassette_formats       ,"Coleco ADAM"},
79   {"fm7", fm7_cassette_formats               ,"Fujitsu FM-7"},
80   {"fmsx", fmsx_cassette_formats             ,"MSX"},
81   {"gtp", gtp_cassette_formats               ,"Elektronika inzenjering Galaksija"},
82   {"hector", hector_cassette_formats         ,"Micronique Hector & Interact Family Computer"},
83   {"jupiter", ace_cassette_formats           ,"Jupiter Cantab Jupiter Ace"},
7584   {"kc85", kc_cassette_formats               ,"VEB Mikroelektronik KC 85"},
76   {"kim1", kim1_cassette_formats             ,"KIM-1"},
77   {"lviv", lviv_lvt_format                   ,"Lviv"},
78   {"mz", mz700_cassette_formats              ,"Sharp MZ"},
79   {"orao", orao_cassette_formats             ,"Orao"},
80   {"oric", oric_cassette_formats             ,"Oric"},
81   {"pmd85", pmd85_cassette_formats           ,"PMD-85"},
82   {"primo", primo_ptp_format                 ,"Primo"},
85   {"kim1", kim1_cassette_formats             ,"MOS KIM-1"},
86   {"lviv", lviv_lvt_format                   ,"PK-01 Lviv"},
87   {"mo5", mo5_cassette_formats               ,"Thomson MO-series"},
88   {"mz", mz700_cassette_formats              ,"Sharp MZ-700"},
89   {"orao", orao_cassette_formats             ,"PEL Varazdin Orao"},
90   {"oric", oric_cassette_formats             ,"Tangerine Oric"},
91   {"pc6001", pc6001_cassette_formats         ,"NEC PC-6001"},
92   {"phc25", phc25_cassette_formats           ,"Sanyo PHC-25"},
93   {"pmd85", pmd85_cassette_formats           ,"Tesla PMD-85"},
94   {"primo", primo_ptp_format                 ,"Microkey Primo"},
8395   {"rku", rku_cassette_formats               ,"UT-88"},
8496   {"rk8", rk8_cassette_formats               ,"Mikro-80"},
8597   {"rks", rks_cassette_formats               ,"Specialist"},
8698   {"rko", rko_cassette_formats               ,"Orion"},
8799   {"rkr", rkr_cassette_formats               ,"Radio-86RK"},
88   {"rka", rka_cassette_formats               ,"Apogee"},
100   {"rka", rka_cassette_formats               ,"Zavod BRA Apogee BK-01"},
89101   {"rkm", rkm_cassette_formats               ,"Mikrosha"},
90   {"rkp", rkp_cassette_formats               ,"Partner"},
102   {"rkp", rkp_cassette_formats               ,"SAM SKB VM Partner-01.01"},
91103   {"sc3000", sc3000_cassette_formats         ,"Sega SC-3000"},
104   {"sol20", sol20_cassette_formats           ,"PTC SOL-20"},
105   {"sorcerer", sorcerer_cassette_formats     ,"Exidy Sorcerer"},
92106   {"sordm5", sordm5_cassette_formats         ,"Sord M5"},
93   {"svi", svi_cassette_formats               ,"SVI"},
94   {"to7", to7_cassette_formats               ,"Thomson TO"},
95   {"mo5", mo5_cassette_formats               ,"Thomson MO"},
107   {"spc1000", spc1000_cassette_formats       ,"Samsung SPC-1000"},   
108   {"svi", svi_cassette_formats               ,"Spectravideo SVI-318 & SVI-328"},
109   {"to7", to7_cassette_formats               ,"Thomson TO-series"},
96110   {"trs80l2", trs80l2_cassette_formats       ,"TRS-80 Level 2"},
97111   {"tvc64", tvc64_cassette_formats           ,"Videoton TVC 64"},
98   {"tzx", tzx_cassette_formats               ,"ZX Spectrum"},
99   {"cdt", cdt_cassette_formats               ,"Amstrad CPC"},
112   {"tzx", tzx_cassette_formats               ,"Sinclair ZX Spectrum"},
100113   {"uef", uef_cassette_formats               ,"Acorn Electron"},
101   {"vg5k", vg5k_cassette_formats             ,"VG 5000 k7"},
114   {"vg5k", vg5k_cassette_formats             ,"Philips VG 5000"},
102115   {"vtech1", vtech1_cassette_formats         ,"Video Technology Laser 110-310"},
103116   {"vtech2", vtech2_cassette_formats         ,"Video Technology Laser 350-700"},
104117   {"x07", x07_cassette_formats               ,"Canon X-07"},
118   {"x1", x1_cassette_formats                 ,"Sharp X1"},
119   {"zx80_o", zx80_o_format                   ,"Sinclair ZX80"},
105120   {"zx81_p", zx81_p_format                   ,"Sinclair ZX81"},
106   {"zx80_o", zx80_o_format                   ,"Sinclair ZX80"},
121
122
123   
107124   {NULL,NULL,NULL}
108125};
109126
trunk/src/mess/video/wswan.c
r241752r241753
1/***************************************************************************
2
3  wswan.c
4
5  File to handle video emulation of the Bandai WonderSwan.
6
7  Anthony Kruize
8  Wilbert Pol
9
10***************************************************************************/
11
12#include "includes/wswan.h"
13
14void wswan_state::wswan_setup_palettes()
15{
16   int i,j;
17
18   if ( m_vdp.color_mode ) {
19      for( i = 0; i < 16; i++ ) {
20         for( j = 0; j < 16; j++ ) {
21            m_pal[i][j] = ( ( m_vdp.palette_vram[ ( i << 5 ) + j*2 + 1 ] << 8 ) | m_vdp.palette_vram[ ( i << 5 ) + j*2 ] ) & 0x0FFF;
22         }
23      }
24   } else {
25      for( i = 0; i < 16; i++ ) {
26         m_pal[i][0] = m_ws_portram[ 0x20 + ( i << 1 ) ] & 0x07;
27         m_pal[i][1] = ( m_ws_portram[ 0x20 + ( i << 1 ) ] >> 4 ) & 0x07;
28         m_pal[i][2] = m_ws_portram[ 0x21 + ( i << 1 ) ] & 0x07;
29         m_pal[i][3] = ( m_ws_portram[ 0x21 + ( i << 1 ) ] >> 4 ) & 0x07;
30      }
31   }
32}
33
34void wswan_state::wswan_draw_background()
35{
36   UINT16  map_addr;
37   UINT8   start_column;
38   int column;
39
40   map_addr = m_vdp.layer_bg_address + ( ( ( m_vdp.current_line + m_vdp.layer_bg_scroll_y ) & 0xF8 ) << 3 );
41   start_column = ( m_vdp.layer_bg_scroll_x >> 3 );
42   for( column = 0; column < 29; column++ ) {
43      int tile_data, tile_number, tile_palette, tile_line, tile_address;
44      UINT32  plane0=0, plane1=0, plane2=0, plane3=0;
45      int x, x_offset;
46
47      tile_data = ( m_vdp.vram[ map_addr + ( ( ( start_column + column ) & 0x1F ) << 1 ) + 1 ] << 8 )
48               | m_vdp.vram[ map_addr + ( ( ( start_column + column ) & 0x1F ) << 1 ) ];
49      tile_number = tile_data & 0x01FF;
50      tile_palette = ( tile_data >> 9 ) & 0x0F;
51
52      tile_line = ( m_vdp.current_line + m_vdp.layer_bg_scroll_y ) & 0x07;
53      if ( tile_data & 0x8000 ) {
54         tile_line = 7 - tile_line;
55      }
56
57      if ( m_vdp.colors_16 ) {
58         tile_address = ( ( tile_data & 0x2000 ) ? 0x8000 : 0x4000 ) + ( tile_number * 32 ) + ( tile_line << 2 );
59         if ( m_vdp.tile_packed ) {
60            plane0 = ( m_vdp.vram[ tile_address + 0 ] << 24 ) | ( m_vdp.vram[ tile_address + 1 ] << 16 ) | ( m_vdp.vram[ tile_address + 2 ] << 8 ) | m_vdp.vram[ tile_address + 3 ];
61         } else {
62            plane0 = m_vdp.vram[ tile_address + 0 ];
63            plane1 = m_vdp.vram[ tile_address + 1 ] << 1;
64            plane2 = m_vdp.vram[ tile_address + 2 ] << 2;
65            plane3 = m_vdp.vram[ tile_address + 3 ] << 3;
66         }
67      } else {
68         tile_address = 0x2000 + ( tile_number * 16 ) + ( tile_line << 1 );
69         if ( m_vdp.tile_packed ) {
70            plane0 = ( m_vdp.vram[ tile_address + 0 ] << 8 ) | m_vdp.vram[ tile_address + 1 ];
71         } else {
72            plane0 = m_vdp.vram[ tile_address + 0 ];
73            plane1 = m_vdp.vram[ tile_address + 1 ] << 1;
74            plane2 = 0;
75            plane3 = 0;
76         }
77      }
78
79      for( x = 0; x < 8; x++ ) {
80         int col;
81         if ( m_vdp.tile_packed ) {
82            if ( m_vdp.colors_16 ) {
83               col = plane0 & 0x0F;
84               plane0 = plane0 >> 4;
85            } else {
86               col = plane0 & 0x03;
87               plane0 = plane0 >> 2;
88            }
89         } else {
90            col = ( plane3 & 8 ) | ( plane2 & 4 ) | ( plane1 & 2 ) | ( plane0 & 1 );
91            plane3 = plane3 >> 1;
92            plane2 = plane2 >> 1;
93            plane1 = plane1 >> 1;
94            plane0 = plane0 >> 1;
95         }
96         if ( tile_data & 0x4000 ) {
97            x_offset = x + ( column << 3 ) - ( m_vdp.layer_bg_scroll_x & 0x07 );
98         } else {
99            x_offset = 7 - x + ( column << 3 ) - ( m_vdp.layer_bg_scroll_x & 0x07 );
100         }
101         if ( x_offset >= 0 && x_offset < WSWAN_X_PIXELS ) {
102            if ( m_vdp.colors_16 ) {
103               if ( col ) {
104                  if ( m_vdp.color_mode ) {
105                     m_bitmap.pix16(m_vdp.current_line, x_offset) = m_pal[tile_palette][col];
106                  } else {
107                     /* Hmmmm, what should we do here... Is this correct?? */
108                     m_bitmap.pix16(m_vdp.current_line, x_offset) = m_pal[tile_palette][col];
109                  }
110               }
111            } else {
112               if ( col || !(tile_palette & 4 ) ) {
113                  if ( m_vdp.color_mode ) {
114                     m_bitmap.pix16(m_vdp.current_line, x_offset) = m_pal[tile_palette][col];
115                  } else {
116                     m_bitmap.pix16(m_vdp.current_line, x_offset) = m_vdp.main_palette[m_pal[tile_palette][col]];
117                  }
118               }
119            }
120         }
121      }
122   }
123}
124
125void wswan_state::wswan_draw_foreground_0()
126{
127   UINT16  map_addr;
128   UINT8   start_column;
129   int column;
130   map_addr = m_vdp.layer_fg_address + ( ( ( m_vdp.current_line + m_vdp.layer_fg_scroll_y ) & 0xF8 ) << 3 );
131   start_column = ( m_vdp.layer_fg_scroll_x >> 3 );
132   for( column = 0; column < 29; column++ ) {
133      UINT32  plane0 = 0, plane1 = 0, plane2 = 0, plane3 = 0;
134      int x, x_offset, tile_line, tile_address;
135      int tile_data = ( m_vdp.vram[ map_addr + ( ( ( start_column + column ) & 0x1F ) << 1 ) + 1 ] << 8 )
136                           | m_vdp.vram[ map_addr + ( ( ( start_column + column ) & 0x1F ) << 1 ) ];
137      int tile_number = tile_data & 0x01FF;
138      int tile_palette = ( tile_data >> 9 ) & 0x0F;
139
140      tile_line = ( m_vdp.current_line + m_vdp.layer_fg_scroll_y ) & 0x07;
141      if ( tile_data & 0x8000 ) {
142         tile_line = 7 - tile_line;
143      }
144
145      if ( m_vdp.colors_16 ) {
146         tile_address = ( ( tile_data & 0x2000 ) ? 0x8000 : 0x4000 ) + ( tile_number * 32 ) + ( tile_line << 2 );
147         if ( m_vdp.tile_packed ) {
148            plane0 = ( m_vdp.vram[ tile_address + 0 ] << 24 ) | ( m_vdp.vram[ tile_address + 1 ] << 16 ) | ( m_vdp.vram[ tile_address + 2 ] << 8 ) | m_vdp.vram[ tile_address + 3 ];
149         } else {
150            plane0 = m_vdp.vram[ tile_address + 0 ];
151            plane1 = m_vdp.vram[ tile_address + 1 ] << 1;
152            plane2 = m_vdp.vram[ tile_address + 2 ] << 2;
153            plane3 = m_vdp.vram[ tile_address + 3 ] << 3;
154         }
155      } else {
156         tile_address = 0x2000 + ( tile_number * 16 ) + ( tile_line << 1 );
157         if ( m_vdp.tile_packed ) {
158            plane0 = ( m_vdp.vram[ tile_address + 0 ] << 8 ) | m_vdp.vram[ tile_address + 1 ];
159         } else {
160            plane0 = m_vdp.vram[ tile_address + 0 ];
161            plane1 = m_vdp.vram[ tile_address + 1 ] << 1;
162            plane2 = 0;
163            plane3 = 0;
164         }
165      }
166
167      for( x = 0; x < 8; x++ ) {
168         int col;
169         if ( m_vdp.tile_packed ) {
170            if ( m_vdp.colors_16 ) {
171               col = plane0 & 0x0F;
172               plane0 = plane0 >> 4;
173            } else {
174               col = plane0 & 0x03;
175               plane0 = plane0 >> 2;
176            }
177         } else {
178            col = ( plane3 & 8 ) | ( plane2 & 4 ) | ( plane1 & 2 ) | ( plane0 & 1 );
179            plane3 = plane3 >> 1;
180            plane2 = plane2 >> 1;
181            plane1 = plane1 >> 1;
182            plane0 = plane0 >> 1;
183         }
184         if ( tile_data & 0x4000 ) {
185            x_offset = x + ( column << 3 ) - ( m_vdp.layer_fg_scroll_x & 0x07 );
186         } else {
187            x_offset = 7 - x + ( column << 3 ) - ( m_vdp.layer_fg_scroll_x & 0x07 );
188         }
189         if ( x_offset >= 0 && x_offset < WSWAN_X_PIXELS ) {
190            if ( m_vdp.colors_16 ) {
191               if ( col ) {
192//                      if ( m_vdp.color_mode ) {
193                     m_bitmap.pix16(m_vdp.current_line, x_offset) = m_pal[tile_palette][col];
194//                      } else {
195//                          /* Hmmmm, what should we do here... Is this correct?? */
196//                          m_bitmap.pix16(m_vdp.current_line, x_offset) = m_pal[tile_palette][col];
197//                      }
198               }
199            } else {
200               if ( col || !(tile_palette & 4 ) ) {
201                  if ( m_vdp.color_mode ) {
202                     m_bitmap.pix16(m_vdp.current_line, x_offset) = m_pal[tile_palette][col];
203                  } else {
204                     m_bitmap.pix16(m_vdp.current_line, x_offset) = m_vdp.main_palette[m_pal[tile_palette][col]];
205                  }
206               }
207            }
208         }
209      }
210   }
211}
212
213void wswan_state::wswan_draw_foreground_2()
214{
215   UINT16  map_addr;
216   UINT8   start_column;
217   int column;
218   map_addr = m_vdp.layer_fg_address + ( ( ( m_vdp.current_line + m_vdp.layer_fg_scroll_y ) & 0xF8 ) << 3 );
219   start_column = ( m_vdp.layer_fg_scroll_x >> 3 );
220   for( column = 0; column < 29; column++ ) {
221      UINT32  plane0 = 0, plane1 = 0, plane2 = 0, plane3 = 0;
222      int x, x_offset, tile_line, tile_address;
223      int tile_data = ( m_vdp.vram[ map_addr + ( ( ( start_column + column ) & 0x1F ) << 1 ) + 1 ] << 8 )
224                  | m_vdp.vram[ map_addr + ( ( ( start_column + column ) & 0x1F ) << 1 ) ];
225      int tile_number = tile_data & 0x01FF;
226      int tile_palette = ( tile_data >> 9 ) & 0x0F;
227
228      tile_line = ( m_vdp.current_line + m_vdp.layer_fg_scroll_y ) & 0x07;
229      if ( tile_data & 0x8000 ) {
230         tile_line = 7 - tile_line;
231      }
232
233      if ( m_vdp.colors_16 ) {
234         tile_address = ( ( tile_data & 0x2000 ) ? 0x8000 : 0x4000 ) + ( tile_number * 32 ) + ( tile_line << 2 );
235         if ( m_vdp.tile_packed ) {
236            plane0 = ( m_vdp.vram[ tile_address + 0 ] << 24 ) | ( m_vdp.vram[ tile_address + 1 ] << 16 ) | ( m_vdp.vram[ tile_address + 2 ] << 8 ) | m_vdp.vram[ tile_address + 3 ];
237         } else {
238            plane0 = m_vdp.vram[ tile_address + 0 ];
239            plane1 = m_vdp.vram[ tile_address + 1 ] << 1;
240            plane2 = m_vdp.vram[ tile_address + 2 ] << 2;
241            plane3 = m_vdp.vram[ tile_address + 3 ] << 3;
242         }
243      } else {
244         tile_address = 0x2000 + ( tile_number * 16 ) + ( tile_line << 1 );
245         if ( m_vdp.tile_packed ) {
246            plane0 = ( m_vdp.vram[ tile_address + 0 ] << 8 ) | m_vdp.vram[ tile_address + 1 ];
247         } else {
248            plane0 = m_vdp.vram[ tile_address + 0 ];
249            plane1 = m_vdp.vram[ tile_address + 1 ] << 1;
250            plane2 = 0;
251            plane3 = 0;
252         }
253      }
254
255      for( x = 0; x < 8; x++ ) {
256         int col;
257         if ( m_vdp.tile_packed ) {
258            if ( m_vdp.colors_16 ) {
259               col = plane0 & 0x0F;
260               plane0 = plane0 >> 4;
261            } else {
262               col = plane0 & 0x03;
263               plane0 = plane0 >> 2;
264            }
265         } else {
266            col = ( plane3 & 8 ) | ( plane2 & 4 ) | ( plane1 & 2 ) | ( plane0 & 1 );
267            plane3 = plane3 >> 1;
268            plane2 = plane2 >> 1;
269            plane1 = plane1 >> 1;
270            plane0 = plane0 >> 1;
271         }
272         if ( tile_data & 0x4000 ) {
273            x_offset = x + ( column << 3 ) - ( m_vdp.layer_fg_scroll_x & 0x07 );
274         } else {
275            x_offset = 7 - x + ( column << 3 ) - ( m_vdp.layer_fg_scroll_x & 0x07 );
276         }
277         if ( x_offset >= 0 && x_offset >= m_vdp.window_fg_left && x_offset < m_vdp.window_fg_right && x_offset < WSWAN_X_PIXELS ) {
278            if ( m_vdp.colors_16 ) {
279               if ( col ) {
280                  if ( m_vdp.color_mode ) {
281                     m_bitmap.pix16(m_vdp.current_line, x_offset) = m_pal[tile_palette][col];
282                  } else {
283                     /* Hmmmm, what should we do here... Is this correct?? */
284                     m_bitmap.pix16(m_vdp.current_line, x_offset) = m_pal[tile_palette][col];
285                  }
286               }
287            } else {
288               if ( col || !(tile_palette & 4 ) ) {
289                  if ( m_vdp.color_mode ) {
290                     m_bitmap.pix16(m_vdp.current_line, x_offset) = m_pal[tile_palette][col];
291                  } else {
292                     m_bitmap.pix16(m_vdp.current_line, x_offset) = m_vdp.main_palette[m_pal[tile_palette][col]];
293                  }
294               }
295            }
296         }
297      }
298   }
299}
300
301void wswan_state::wswan_draw_foreground_3()
302{
303   UINT16  map_addr;
304   UINT8   start_column;
305   int column;
306   map_addr = m_vdp.layer_fg_address + ( ( ( m_vdp.current_line + m_vdp.layer_fg_scroll_y ) & 0xF8 ) << 3 );
307   start_column = ( m_vdp.layer_fg_scroll_x >> 3 );
308   for( column = 0; column < 29; column++ ) {
309      UINT32  plane0 = 0, plane1 = 0, plane2 = 0, plane3 = 0;
310      int x, x_offset, tile_line, tile_address;
311      int tile_data = ( m_vdp.vram[ map_addr + ( ( ( start_column + column ) & 0x1F ) << 1 ) + 1 ] << 8 )
312                  | m_vdp.vram[ map_addr + ( ( ( start_column + column ) & 0x1F ) << 1 ) ];
313      int tile_number = tile_data & 0x01FF;
314      int tile_palette = ( tile_data >> 9 ) & 0x0F;
315
316      tile_line = ( m_vdp.current_line + m_vdp.layer_fg_scroll_y ) & 0x07;
317      if ( tile_data & 0x8000 ) { // vflip
318         tile_line = 7 - tile_line;
319      }
320
321      if ( m_vdp.colors_16 ) {
322         tile_address = ( ( tile_data & 0x2000 ) ? 0x8000 : 0x4000 ) + ( tile_number * 32 ) + ( tile_line << 2 );
323         if ( m_vdp.tile_packed ) {
324            plane0 = ( m_vdp.vram[ tile_address + 0 ] << 24 ) | ( m_vdp.vram[ tile_address + 1 ] << 16 ) | ( m_vdp.vram[ tile_address + 2 ] << 8 ) | m_vdp.vram[ tile_address + 3 ];
325         } else {
326            plane0 = m_vdp.vram[ tile_address + 0 ];
327            plane1 = m_vdp.vram[ tile_address + 1 ] << 1;
328            plane2 = m_vdp.vram[ tile_address + 2 ] << 2;
329            plane3 = m_vdp.vram[ tile_address + 3 ] << 3;
330         }
331      } else {
332         tile_address = 0x2000 + ( tile_number * 16 ) + ( tile_line << 1 );
333         if ( m_vdp.tile_packed ) {
334            plane0 = ( m_vdp.vram[ tile_address + 0 ] << 8 ) | m_vdp.vram[ tile_address + 1 ];
335         } else {
336            plane0 = m_vdp.vram[ tile_address + 0 ];
337            plane1 = m_vdp.vram[ tile_address + 1 ] << 1;
338            plane2 = 0;
339            plane3 = 0;
340         }
341      }
342
343      for( x = 0; x < 8; x++ ) {
344         int col;
345         if ( m_vdp.tile_packed ) {
346            if ( m_vdp.colors_16 ) {
347               col = plane0 & 0x0F;
348               plane0 = plane0 >> 4;
349            } else {
350               col = plane0 & 0x03;
351               plane0 = plane0 >> 2;
352            }
353         } else {
354            col = ( plane3 & 8 ) | ( plane2 & 4 ) | ( plane1 & 2 ) | ( plane0 & 1 );
355            plane3 = plane3 >> 1;
356            plane2 = plane2 >> 1;
357            plane1 = plane1 >> 1;
358            plane0 = plane0 >> 1;
359         }
360         if ( tile_data & 0x4000 ) {
361            x_offset = x + ( column << 3 ) - ( m_vdp.layer_fg_scroll_x & 0x07 );
362         } else {
363            x_offset = 7 - x + ( column << 3 ) - ( m_vdp.layer_fg_scroll_x & 0x07 );
364         }
365         if ( ( x_offset >= 0 && x_offset < m_vdp.window_fg_left ) || ( x_offset >= m_vdp.window_fg_right && x_offset < WSWAN_X_PIXELS ) ) {
366            if ( m_vdp.colors_16 ) {
367               if ( col ) {
368                  if ( m_vdp.color_mode ) {
369                     m_bitmap.pix16(m_vdp.current_line, x_offset) = m_pal[tile_palette][col];
370                  } else {
371                     /* Hmmmm, what should we do here... Is this correct?? */
372                     m_bitmap.pix16(m_vdp.current_line, x_offset) = m_pal[tile_palette][col];
373                  }
374               }
375            } else {
376               if ( col || !(tile_palette & 4 ) ) {
377                  if ( m_vdp.color_mode ) {
378                     m_bitmap.pix16(m_vdp.current_line, x_offset) = m_pal[tile_palette][col];
379                  } else {
380                     m_bitmap.pix16(m_vdp.current_line, x_offset) = m_vdp.main_palette[m_pal[tile_palette][col]];
381                  }
382               }
383            }
384         }
385      }
386   }
387}
388
389void wswan_state::wswan_handle_sprites(int mask )
390{
391   int i;
392   if ( m_vdp.sprite_count == 0 )
393      return;
394   for( i = m_vdp.sprite_first + m_vdp.sprite_count - 1; i >= m_vdp.sprite_first; i-- ) {
395      UINT8   x, y;
396      UINT16  tile_data;
397      int tile_line;
398
399      tile_data = ( m_vdp.sprite_table_buffer[ i * 4 + 1 ] << 8 ) | m_vdp.sprite_table_buffer[ i * 4 ];
400      y = m_vdp.sprite_table_buffer[ i * 4 + 2 ];
401      x = m_vdp.sprite_table_buffer[ i * 4 + 3 ];
402      tile_line = m_vdp.current_line - y;
403      tile_line = tile_line & 0xFF;
404      if ( ( tile_line >= 0 ) && ( tile_line < 8 ) && ( ( tile_data & 0x2000 ) == mask ) ) {
405         UINT32  plane0 = 0, plane1 = 0, plane2 = 0, plane3 = 0;
406         int j, x_offset, tile_address;
407         int tile_number = tile_data & 0x01FF;
408         int tile_palette = 8 + ( ( tile_data >> 9 ) & 0x07 );
409         int check_clip = 0;
410         if ( tile_data & 0x8000 ) {
411            tile_line = 7 - tile_line;
412         }
413
414         if ( m_vdp.colors_16 ) {
415            tile_address = 0x4000 + ( tile_number * 32 ) + ( tile_line << 2 );
416            if ( m_vdp.tile_packed ) {
417               plane0 = ( m_vdp.vram[ tile_address + 0 ] << 24 ) | ( m_vdp.vram[ tile_address + 1 ] << 16 ) | ( m_vdp.vram[ tile_address + 2 ] << 8 ) | m_vdp.vram[ tile_address + 3 ];
418            } else {
419               plane0 = m_vdp.vram[ tile_address + 0 ];
420               plane1 = m_vdp.vram[ tile_address + 1 ] << 1;
421               plane2 = m_vdp.vram[ tile_address + 2 ] << 2;
422               plane3 = m_vdp.vram[ tile_address + 3 ] << 3;
423            }
424         } else {
425            tile_address = 0x2000 + ( tile_number * 16 ) + ( tile_line << 1 );
426            if ( m_vdp.tile_packed ) {
427               plane0 = ( m_vdp.vram[ tile_address + 0 ] << 8 ) | m_vdp.vram[ tile_address + 1 ];
428            } else {
429               plane0 = m_vdp.vram[ tile_address + 0 ];
430               plane1 = m_vdp.vram[ tile_address + 1 ] << 1;
431               plane2 = 0;
432               plane3 = 0;
433            }
434         }
435
436         if ( m_vdp.window_sprites_enable ) {
437            if ( tile_data & 0x1000 ) {
438               if ( m_vdp.current_line >= m_vdp.window_sprites_top && m_vdp.current_line <= m_vdp.window_sprites_bottom ) {
439                  check_clip = 1;
440               }
441            } else {
442               if ( m_vdp.current_line < m_vdp.window_sprites_top || m_vdp.current_line > m_vdp.window_sprites_bottom ) {
443                  continue;
444               }
445            }
446         }
447
448         for ( j = 0; j < 8; j++ ) {
449            int col;
450            if ( m_vdp.tile_packed ) {
451               if ( m_vdp.colors_16 ) {
452                  col = plane0 & 0x0F;
453                  plane0 = plane0 >> 4;
454               } else {
455                  col = plane0 & 0x03;
456                  plane0 = plane0 >> 2;
457               }
458            } else {
459               col = ( plane3 & 8 ) | ( plane2 & 4 ) | ( plane1 & 2 ) | ( plane0 & 1 );
460               plane3 = plane3 >> 1;
461               plane2 = plane2 >> 1;
462               plane1 = plane1 >> 1;
463               plane0 = plane0 >> 1;
464            }
465            if ( tile_data & 0x4000 ) {
466               x_offset = x + j;
467            } else {
468               x_offset = x + 7 - j;
469            }
470            x_offset = x_offset & 0xFF;
471            if ( m_vdp.window_sprites_enable ) {
472               if ( tile_data & 0x1000 && check_clip ) {
473                  if ( x_offset >= m_vdp.window_sprites_left && x_offset <= m_vdp.window_sprites_right ) {
474                     continue;
475                  }
476               } else {
477                  if ( x_offset < m_vdp.window_sprites_left || x_offset > m_vdp.window_sprites_right ) {
478//                          continue;
479                  }
480               }
481            }
482            if ( x_offset >= 0 && x_offset < WSWAN_X_PIXELS ) {
483               if ( m_vdp.colors_16 ) {
484                  if ( col ) {
485                     if ( m_vdp.color_mode ) {
486                        m_bitmap.pix16(m_vdp.current_line, x_offset) = m_pal[tile_palette][col];
487                     } else {
488                        /* Hmmmm, what should we do here... Is this correct?? */
489                        m_bitmap.pix16(m_vdp.current_line, x_offset) = m_pal[tile_palette][col];
490                     }
491                  }
492               } else {
493                  if ( col || !(tile_palette & 4 ) ) {
494                     if ( m_vdp.color_mode ) {
495                        m_bitmap.pix16(m_vdp.current_line, x_offset) = m_pal[tile_palette][col];
496                     } else {
497                        m_bitmap.pix16(m_vdp.current_line, x_offset) = m_vdp.main_palette[m_pal[tile_palette][col]];
498                     }
499                  }
500               }
501            }
502         }
503      }
504   }
505}
506
507void wswan_state::wswan_refresh_scanline()
508{
509   wswan_setup_palettes();
510
511   rectangle rec(0, WSWAN_X_PIXELS, m_vdp.current_line, m_vdp.current_line);
512   if ( m_ws_portram[0x14] ) {
513      /* Not sure if these background color checks and settings are correct */
514      if ( m_vdp.color_mode && m_vdp.colors_16 ) {
515         m_bitmap.fill( m_pal[m_ws_portram[0x01]>>4][m_ws_portram[0x01]&0x0F], rec );
516      } else {
517         m_bitmap.fill( m_vdp.main_palette[m_ws_portram[0x01]&0x07], rec );
518      }
519   } else {
520      m_bitmap.fill( 0, rec );
521      return;
522   }
523
524   /*
525    * Draw background layer
526    */
527   if ( m_vdp.layer_bg_enable ) {
528      wswan_draw_background();
529   }
530
531   /*
532    * Draw sprites between background and foreground layers
533    */
534   if ( m_vdp.sprites_enable ) {
535      wswan_handle_sprites(0);
536   }
537
538   /*
539    * Draw foreground layer, taking window settings into account
540    */
541   if ( m_vdp.layer_fg_enable ) {
542      switch( m_vdp.window_fg_mode ) {
543      case 0: /* FG inside & outside window area */
544         wswan_draw_foreground_0();
545         break;
546      case 1: /* ??? */
547         logerror( "Unknown foreground mode 1 set\n" );
548         break;
549      case 2: /* FG only inside window area */
550         if ( m_vdp.current_line >= m_vdp.window_fg_top && m_vdp.current_line <= m_vdp.window_fg_bottom ) {
551            wswan_draw_foreground_2();
552         }
553         break;
554      case 3: /* FG only outside window area */
555         if ( m_vdp.current_line < m_vdp.window_fg_top || m_vdp.current_line > m_vdp.window_fg_bottom ) {
556            wswan_draw_foreground_0();
557         } else {
558            wswan_draw_foreground_3();
559         }
560         break;
561      }
562   }
563
564   /*
565    * Draw sprites in front of foreground layer
566    */
567   if ( m_vdp.sprites_enable ) {
568      wswan_handle_sprites(0x2000);
569   }
570}
571
572
573void wswan_state::video_start()
574{
575   machine().first_screen()->register_screen_bitmap(m_bitmap);
576   save_item(NAME(m_bitmap));
577}
578
579UINT32 wswan_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
580{
581   copybitmap(bitmap, m_bitmap, 0, 0, 0, 0, cliprect);
582   return 0;
583}
trunk/src/mess/video/wswan_video.c
r0r241753
1/***************************************************************************
2 
3 wswan_video.c
4 
5 File to handle video emulation of the Bandai WonderSwan VDP.
6 
7 Anthony Kruize
8 Wilbert Pol
9 
10 TODO:
11   - remove the redundant parts of m_regs
12   - split the Color VDP from the Mono VDP?
13 
14 ***************************************************************************/
15
16#include "wswan_video.h"
17
18const device_type WSWAN_VIDEO = &device_creator<wswan_video_device>;
19
20
21wswan_video_device::wswan_video_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
22               : device_t(mconfig, WSWAN_VIDEO, "Bandai WonderSwan VDP", tag, owner, clock, "wswan_video", __FILE__),
23               m_vdp_type(VDP_TYPE_WSWAN)
24{
25}
26
27
28void wswan_video_device::common_save()
29{
30   save_item(NAME(m_bitmap));
31   save_item(NAME(m_vram));
32   save_item(NAME(m_palette_port));
33   save_item(NAME(m_pal));
34   save_item(NAME(m_regs));
35   
36   save_item(NAME(m_layer_bg_enable));
37   save_item(NAME(m_layer_fg_enable));
38   save_item(NAME(m_sprites_enable));
39   save_item(NAME(m_window_sprites_enable));
40   save_item(NAME(m_window_fg_mode));
41   save_item(NAME(m_bg_control));
42   save_item(NAME(m_current_line));
43   save_item(NAME(m_line_compare));
44   save_item(NAME(m_sprite_table_address));
45   save_item(NAME(m_sprite_table_buffer));
46   save_item(NAME(m_sprite_first));
47   save_item(NAME(m_sprite_count));
48   save_item(NAME(m_sprite_first_latch));
49   save_item(NAME(m_sprite_count_latch));
50   save_item(NAME(m_layer_bg_address));
51   save_item(NAME(m_layer_fg_address));
52   save_item(NAME(m_window_fg_left));
53   save_item(NAME(m_window_fg_top));
54   save_item(NAME(m_window_fg_right));
55   save_item(NAME(m_window_fg_bottom));
56   save_item(NAME(m_window_sprites_left));
57   save_item(NAME(m_window_sprites_top));
58   save_item(NAME(m_window_sprites_right));
59   save_item(NAME(m_window_sprites_bottom));
60   save_item(NAME(m_layer_bg_scroll_x));
61   save_item(NAME(m_layer_bg_scroll_y));
62   save_item(NAME(m_layer_fg_scroll_x));
63   save_item(NAME(m_layer_fg_scroll_y));
64   save_item(NAME(m_lcd_control));
65   save_item(NAME(m_icons));
66   save_item(NAME(m_color_mode));
67   save_item(NAME(m_colors_16));
68   save_item(NAME(m_tile_packed));
69   save_item(NAME(m_timer_hblank_enable));
70   save_item(NAME(m_timer_hblank_mode));
71   save_item(NAME(m_timer_hblank_reload));
72   save_item(NAME(m_timer_vblank_enable));
73   save_item(NAME(m_timer_vblank_mode));
74   save_item(NAME(m_timer_vblank_reload));
75   save_item(NAME(m_timer_vblank_count));
76   save_item(NAME(m_main_palette));
77}
78
79void wswan_video_device::device_start()
80{
81   machine().first_screen()->register_screen_bitmap(m_bitmap);
82   
83   m_timer = timer_alloc(TIMER_SCANLINE);
84   m_timer->adjust(attotime::from_ticks(256, 3072000), 0, attotime::from_ticks(256, 3072000));
85   
86   // bind callbacks
87   m_set_irq_cb.bind_relative_to(*owner());
88   m_snd_dma_cb.bind_relative_to(*owner());
89
90   if (m_vdp_type == VDP_TYPE_WSC)
91   {
92      m_vram.resize_and_clear(0x10000);
93      m_palette_vram = m_vram + 0xfe00;
94   }
95   else
96   {
97      m_vram.resize_and_clear(0x4000);
98      m_palette_vram = m_vram;
99   }
100
101   common_save();
102}
103
104// This is a copy of ws_portram_init
105// TODO: remove unneeded parts!
106static const UINT8 vdp_regs_init[256] =
107{
108   0x00, 0x00, 0x00/*?*/, 0xbb, 0x00, 0x00, 0x00, 0x26, 0xfe, 0xde, 0xf9, 0xfb, 0xdb, 0xd7, 0x7f, 0xf5,
109   0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x9e, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x99, 0xfd, 0xb7, 0xdf,
110   0x30, 0x57, 0x75, 0x76, 0x15, 0x73, 0x70/*77?*/, 0x77, 0x20, 0x75, 0x50, 0x36, 0x70, 0x67, 0x50, 0x77,
111   0x57, 0x54, 0x75, 0x77, 0x75, 0x17, 0x37, 0x73, 0x50, 0x57, 0x60, 0x77, 0x70, 0x77, 0x10, 0x73,
112   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
113   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
114   0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00,
115   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
116   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00,
117   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
118   0x87, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x4f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
119   0x00, 0xdb, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x83, 0x00,
120   0x2f, 0x3f, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
121   0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
122   0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
123   0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1
124};
125
126
127void wswan_video_device::device_reset()
128{
129   m_layer_bg_enable = 0;
130   m_layer_fg_enable = 0;
131   m_sprites_enable = 0;
132   m_window_sprites_enable = 0;
133   m_window_fg_mode = 0;
134   m_bg_control = 0;
135   m_current_line = 145;  // Randomly chosen, beginning of VBlank period to give cart some time to boot up
136   m_line_compare = 0;
137   m_sprite_table_address = 0;
138   m_sprite_first = 0;
139   m_sprite_count = 0;
140   m_sprite_first_latch = 0;
141   m_sprite_count_latch = 0;
142   m_layer_bg_address = 0;
143   m_layer_fg_address = 0;
144   m_window_fg_left = 0;
145   m_window_fg_top = 0;
146   m_window_fg_right = 0;
147   m_window_fg_bottom = 0;
148   m_window_sprites_left = 0;
149   m_window_sprites_top = 0;
150   m_window_sprites_right = 0;
151   m_window_sprites_bottom = 0;
152   m_layer_bg_scroll_x = 0;
153   m_layer_bg_scroll_y = 0;
154   m_layer_fg_scroll_x = 0;
155   m_layer_fg_scroll_y = 0;
156   m_lcd_control = 0x01;
157   m_icons = 0;
158   m_color_mode = 0;
159   m_colors_16 = 0;
160   m_tile_packed = 0;
161   m_timer_hblank_enable = 0;
162   m_timer_hblank_mode = 0;
163   m_timer_hblank_reload = 0;
164   m_timer_hblank_count = 0;
165   m_timer_vblank_enable = 0;
166   m_timer_vblank_mode = 0;
167   m_timer_vblank_reload = 0;
168   m_timer_vblank_count = 0;      /* Vertical blank timer counter value */
169   
170   memset(m_sprite_table_buffer, 0, sizeof(m_sprite_table_buffer));
171   memset(m_main_palette, 0, sizeof(m_main_palette));
172   memcpy(m_regs, vdp_regs_init, 256);
173   for (int i = 0; i < 0x20; i++)
174      m_palette_port[i] = m_regs[i + 0x20];
175
176   setup_palettes();
177}
178
179
180void wswan_video_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
181{
182   switch (id)
183   {
184      case TIMER_SCANLINE:
185         scanline_interrupt();
186         break;
187   }
188}
189
190
191void wswan_video_device::setup_palettes()
192{
193   if (m_color_mode)
194   {
195      for (int i = 0; i < 16; i++)
196         for (int j = 0; j < 16; j++)
197            m_pal[i][j] = ((m_palette_vram[(i << 5) + j * 2 + 1] << 8) | m_palette_vram[(i << 5) + j * 2]) & 0x0fff;
198   }
199   else
200   {
201      for (int  i = 0; i < 16; i++)
202      {
203         m_pal[i][0] = (m_palette_port[(i << 1)] >> 0) & 0x07;
204         m_pal[i][1] = (m_palette_port[(i << 1)] >> 4) & 0x07;
205         m_pal[i][2] = (m_palette_port[(i << 1) + 1] >> 0) & 0x07;
206         m_pal[i][3] = (m_palette_port[(i << 1) + 1] >> 4) & 0x07;
207      }
208   }
209}
210
211void wswan_video_device::draw_background()
212{
213   UINT16 map_addr = m_layer_bg_address + (((m_current_line + m_layer_bg_scroll_y) & 0xf8) << 3);
214   UINT8 start_column = (m_layer_bg_scroll_x >> 3);
215   
216   for (int column = 0; column < 29; column++)
217   {
218      UINT32 plane0 = 0, plane1 = 0, plane2 = 0, plane3 = 0;
219      int x_offset, tile_line, tile_address;
220      int tile_data =  (m_vram[map_addr + (((start_column + column) & 0x1f) << 1) + 1] << 8)
221                  | m_vram[map_addr + (((start_column + column) & 0x1f) << 1)];
222      int tile_number = tile_data & 0x01ff;
223      int tile_palette = (tile_data >> 9) & 0x0f;
224     
225      tile_line = (m_current_line + m_layer_bg_scroll_y) & 0x07;
226      if (tile_data & 0x8000) // vflip
227         tile_line = 7 - tile_line;
228     
229      if (m_colors_16)
230      {
231         tile_address = ((tile_data & 0x2000) ? 0x8000 : 0x4000) + (tile_number * 32) + (tile_line << 2);
232         if (m_tile_packed)
233         {
234            plane0 = (m_vram[tile_address + 0] << 24) | (m_vram[tile_address + 1] << 16) | (m_vram[tile_address + 2] << 8) | m_vram[tile_address + 3];
235         }
236         else
237         {
238            plane0 = m_vram[tile_address + 0];
239            plane1 = m_vram[tile_address + 1] << 1;
240            plane2 = m_vram[tile_address + 2] << 2;
241            plane3 = m_vram[tile_address + 3] << 3;
242         }
243      }
244      else
245      {
246         tile_address = 0x2000 + (tile_number * 16) + (tile_line << 1);
247         if (m_tile_packed)
248         {
249            plane0 = (m_vram[tile_address + 0] << 8) | m_vram[tile_address + 1];
250         }
251         else
252         {
253            plane0 = m_vram[tile_address + 0];
254            plane1 = m_vram[tile_address + 1] << 1;
255            plane2 = 0;
256            plane3 = 0;
257         }
258      }
259     
260      for (int x = 0; x < 8; x++)
261      {
262         int col;
263         if (m_tile_packed)
264         {
265            if (m_colors_16)
266            {
267               col = plane0 & 0x0f;
268               plane0 = plane0 >> 4;
269            }
270            else
271            {
272               col = plane0 & 0x03;
273               plane0 = plane0 >> 2;
274            }
275         }
276         else
277         {
278            col = (plane3 & 8) | (plane2 & 4) | (plane1 & 2) | (plane0 & 1);
279            plane3 = plane3 >> 1;
280            plane2 = plane2 >> 1;
281            plane1 = plane1 >> 1;
282            plane0 = plane0 >> 1;
283         }
284
285         if (tile_data & 0x4000)
286            x_offset = x + (column << 3) - (m_layer_bg_scroll_x & 0x07);
287         else
288            x_offset = 7 - x + (column << 3) - (m_layer_bg_scroll_x & 0x07);
289
290         if (x_offset >= 0 && x_offset < WSWAN_X_PIXELS)
291         {
292            if (m_colors_16)
293            {
294               if (col)
295               {
296                  if (m_color_mode)
297                     m_bitmap.pix16(m_current_line, x_offset) = m_pal[tile_palette][col];
298                  else
299                  {
300                     /* Hmmmm, what should we do here... Is this correct?? */
301                     m_bitmap.pix16(m_current_line, x_offset) = m_pal[tile_palette][col];
302                  }
303               }
304            }
305            else
306            {
307               if (col || !(tile_palette & 4))
308               {
309                  if (m_color_mode)
310                     m_bitmap.pix16(m_current_line, x_offset) = m_pal[tile_palette][col];
311                  else
312                     m_bitmap.pix16(m_current_line, x_offset) = m_main_palette[m_pal[tile_palette][col]];
313               }
314            }
315         }
316      }
317   }
318}
319
320void wswan_video_device::draw_foreground_0()
321{
322   UINT16 map_addr = m_layer_fg_address + (((m_current_line + m_layer_fg_scroll_y) & 0xf8) << 3);
323   UINT8 start_column = (m_layer_fg_scroll_x >> 3);
324
325   for (int column = 0; column < 29; column++)
326   {
327      UINT32 plane0 = 0, plane1 = 0, plane2 = 0, plane3 = 0;
328      int x_offset, tile_line, tile_address;
329      int tile_data =  (m_vram[map_addr + (((start_column + column) & 0x1f) << 1) + 1] << 8)
330                  | m_vram[map_addr + (((start_column + column) & 0x1f) << 1)];
331      int tile_number = tile_data & 0x01ff;
332      int tile_palette = (tile_data >> 9) & 0x0f;
333     
334      tile_line = (m_current_line + m_layer_fg_scroll_y) & 0x07;
335      if (tile_data & 0x8000) // vflip
336         tile_line = 7 - tile_line;
337     
338      if (m_colors_16)
339      {
340         tile_address = ((tile_data & 0x2000) ? 0x8000 : 0x4000) + (tile_number * 32) + (tile_line << 2);
341         if (m_tile_packed)
342         {
343            plane0 = (m_vram[tile_address + 0] << 24) | (m_vram[tile_address + 1] << 16) | (m_vram[tile_address + 2] << 8) | m_vram[tile_address + 3];
344         }
345         else
346         {
347            plane0 = m_vram[tile_address + 0];
348            plane1 = m_vram[tile_address + 1] << 1;
349            plane2 = m_vram[tile_address + 2] << 2;
350            plane3 = m_vram[tile_address + 3] << 3;
351         }
352      }
353      else
354      {
355         tile_address = 0x2000 + (tile_number * 16) + (tile_line << 1);
356         if (m_tile_packed)
357         {
358            plane0 = (m_vram[tile_address + 0] << 8) | m_vram[tile_address + 1];
359         }
360         else
361         {
362            plane0 = m_vram[tile_address + 0];
363            plane1 = m_vram[tile_address + 1] << 1;
364            plane2 = 0;
365            plane3 = 0;
366         }
367      }
368
369      for (int x = 0; x < 8; x++ )
370      {
371         int col;
372         if (m_tile_packed)
373         {
374            if (m_colors_16)
375            {
376               col = plane0 & 0x0f;
377               plane0 = plane0 >> 4;
378            }
379            else
380            {
381               col = plane0 & 0x03;
382               plane0 = plane0 >> 2;
383            }
384         }
385         else
386         {
387            col = (plane3 & 8) | (plane2 & 4) | (plane1 & 2) | (plane0 & 1);
388            plane3 = plane3 >> 1;
389            plane2 = plane2 >> 1;
390            plane1 = plane1 >> 1;
391            plane0 = plane0 >> 1;
392         }
393
394         if (tile_data & 0x4000)
395            x_offset = x + (column << 3) - (m_layer_fg_scroll_x & 0x07);
396         else
397            x_offset = 7 - x + (column << 3) - (m_layer_fg_scroll_x & 0x07);
398
399         if (x_offset >= 0 && x_offset < WSWAN_X_PIXELS)
400         {
401            if (m_colors_16)
402            {
403               if (col)
404               {
405//                      if (m_color_mode) {
406                  m_bitmap.pix16(m_current_line, x_offset) = m_pal[tile_palette][col];
407//                      } else {
408//                          /* Hmmmm, what should we do here... Is this correct?? */
409//                          m_bitmap.pix16(m_current_line, x_offset) = m_pal[tile_palette][col];
410//                      }
411               }
412            }
413            else
414            {
415               if (col || !(tile_palette & 4))
416               {
417                  if (m_color_mode)
418                     m_bitmap.pix16(m_current_line, x_offset) = m_pal[tile_palette][col];
419                  else
420                     m_bitmap.pix16(m_current_line, x_offset) = m_main_palette[m_pal[tile_palette][col]];
421               }
422            }
423         }
424      }
425   }
426}
427
428void wswan_video_device::draw_foreground_2()
429{
430   UINT16 map_addr = m_layer_fg_address + (((m_current_line + m_layer_fg_scroll_y) & 0xf8) << 3);
431   UINT8 start_column = (m_layer_fg_scroll_x >> 3);
432   
433   for (int column = 0; column < 29; column++)
434   {
435      UINT32 plane0 = 0, plane1 = 0, plane2 = 0, plane3 = 0;
436      int x_offset, tile_line, tile_address;
437      int tile_data =  (m_vram[map_addr + (((start_column + column) & 0x1f) << 1) + 1] << 8)
438                  | m_vram[map_addr + (((start_column + column) & 0x1f) << 1)];
439      int tile_number = tile_data & 0x01ff;
440      int tile_palette = (tile_data >> 9) & 0x0f;
441     
442      tile_line = (m_current_line + m_layer_fg_scroll_y) & 0x07;
443      if (tile_data & 0x8000) // vflip
444         tile_line = 7 - tile_line;
445
446     
447      if (m_colors_16)
448      {
449         tile_address = ((tile_data & 0x2000) ? 0x8000 : 0x4000) + (tile_number * 32) + (tile_line << 2);
450         if (m_tile_packed)
451         {
452            plane0 = (m_vram[tile_address + 0] << 24) | (m_vram[tile_address + 1] << 16) | (m_vram[tile_address + 2] << 8) | m_vram[tile_address + 3];
453         }
454         else
455         {
456            plane0 = m_vram[tile_address + 0];
457            plane1 = m_vram[tile_address + 1] << 1;
458            plane2 = m_vram[tile_address + 2] << 2;
459            plane3 = m_vram[tile_address + 3] << 3;
460         }
461      }
462      else
463      {
464         tile_address = 0x2000 + (tile_number * 16) + (tile_line << 1);
465         if (m_tile_packed)
466         {
467            plane0 = (m_vram[tile_address + 0] << 8) | m_vram[tile_address + 1];
468         }
469         else
470         {
471            plane0 = m_vram[tile_address + 0];
472            plane1 = m_vram[tile_address + 1] << 1;
473            plane2 = 0;
474            plane3 = 0;
475         }
476      }
477
478      for (int x = 0; x < 8; x++)
479      {
480         int col;
481         if (m_tile_packed)
482         {
483            if (m_colors_16)
484            {
485               col = plane0 & 0x0f;
486               plane0 = plane0 >> 4;
487            }
488            else
489            {
490               col = plane0 & 0x03;
491               plane0 = plane0 >> 2;
492            }
493         }
494         else
495         {
496            col = (plane3 & 8) | (plane2 & 4) | (plane1 & 2) | (plane0 & 1);
497            plane3 = plane3 >> 1;
498            plane2 = plane2 >> 1;
499            plane1 = plane1 >> 1;
500            plane0 = plane0 >> 1;
501         }
502
503         if (tile_data & 0x4000)
504            x_offset = x + (column << 3) - (m_layer_fg_scroll_x & 0x07);
505         else
506            x_offset = 7 - x + (column << 3) - (m_layer_fg_scroll_x & 0x07);
507
508         if (x_offset >= 0 && x_offset >= m_window_fg_left && x_offset < m_window_fg_right && x_offset < WSWAN_X_PIXELS)
509         {
510            if (m_colors_16)
511            {
512               if (col)
513               {
514                  if (m_color_mode)
515                     m_bitmap.pix16(m_current_line, x_offset) = m_pal[tile_palette][col];
516                  else
517                     /* Hmmmm, what should we do here... Is this correct?? */
518                     m_bitmap.pix16(m_current_line, x_offset) = m_pal[tile_palette][col];
519               }
520            }
521            else
522            {
523               if (col || !(tile_palette & 4))
524               {
525                  if (m_color_mode)
526                     m_bitmap.pix16(m_current_line, x_offset) = m_pal[tile_palette][col];
527                  else
528                     m_bitmap.pix16(m_current_line, x_offset) = m_main_palette[m_pal[tile_palette][col]];
529               }
530            }
531         }
532      }
533   }
534}
535
536void wswan_video_device::draw_foreground_3()
537{
538   UINT16 map_addr = m_layer_fg_address + (((m_current_line + m_layer_fg_scroll_y) & 0xf8) << 3);
539   UINT8 start_column = (m_layer_fg_scroll_x >> 3);
540   
541   for (int column = 0; column < 29; column++)
542   {
543      UINT32 plane0 = 0, plane1 = 0, plane2 = 0, plane3 = 0;
544      int x_offset, tile_line, tile_address;
545      int tile_data =  (m_vram[map_addr + (((start_column + column) & 0x1f) << 1) + 1] << 8)
546                  | m_vram[map_addr + (((start_column + column) & 0x1f) << 1)];
547      int tile_number = tile_data & 0x01ff;
548      int tile_palette = (tile_data >> 9) & 0x0f;
549
550      tile_line = (m_current_line + m_layer_fg_scroll_y) & 0x07;
551      if (tile_data & 0x8000) // vflip
552         tile_line = 7 - tile_line;
553     
554      if (m_colors_16)
555      {
556         tile_address = ((tile_data & 0x2000) ? 0x8000 : 0x4000) + (tile_number * 32) + (tile_line << 2);
557         if (m_tile_packed)
558         {
559            plane0 = (m_vram[tile_address + 0] << 24) | (m_vram[tile_address + 1] << 16) | (m_vram[tile_address + 2] << 8) | m_vram[tile_address + 3];
560         }
561         else
562         {
563            plane0 = m_vram[tile_address + 0];
564            plane1 = m_vram[tile_address + 1] << 1;
565            plane2 = m_vram[tile_address + 2] << 2;
566            plane3 = m_vram[tile_address + 3] << 3;
567         }
568      }
569      else
570      {
571         tile_address = 0x2000 + (tile_number * 16) + (tile_line << 1);
572         if (m_tile_packed)
573         {
574            plane0 = (m_vram[tile_address + 0] << 8) | m_vram[tile_address + 1];
575         }
576         else
577         {
578            plane0 = m_vram[tile_address + 0];
579            plane1 = m_vram[tile_address + 1] << 1;
580            plane2 = 0;
581            plane3 = 0;
582         }
583      }
584
585      for (int x = 0; x < 8; x++)
586      {
587         int col;
588         if (m_tile_packed)
589         {
590            if (m_colors_16)
591            {
592               col = plane0 & 0x0f;
593               plane0 = plane0 >> 4;
594            }
595            else
596            {
597               col = plane0 & 0x03;
598               plane0 = plane0 >> 2;
599            }
600         }
601         else
602         {
603            col = (plane3 & 8) | (plane2 & 4) | (plane1 & 2) | (plane0 & 1);
604            plane3 = plane3 >> 1;
605            plane2 = plane2 >> 1;
606            plane1 = plane1 >> 1;
607            plane0 = plane0 >> 1;
608         }
609
610         if (tile_data & 0x4000)
611            x_offset = x + (column << 3) - (m_layer_fg_scroll_x & 0x07);
612         else
613            x_offset = 7 - x + (column << 3) - (m_layer_fg_scroll_x & 0x07);
614
615         if ((x_offset >= 0 && x_offset < m_window_fg_left) || (x_offset >= m_window_fg_right && x_offset < WSWAN_X_PIXELS))
616         {
617            if (m_colors_16)
618            {
619               if (col)
620               {
621                  if (m_color_mode)
622                     m_bitmap.pix16(m_current_line, x_offset) = m_pal[tile_palette][col];
623                  else
624                     /* Hmmmm, what should we do here... Is this correct?? */
625                     m_bitmap.pix16(m_current_line, x_offset) = m_pal[tile_palette][col];
626               }
627            }
628            else
629            {
630               if (col || !(tile_palette & 4))
631               {
632                  if (m_color_mode)
633                     m_bitmap.pix16(m_current_line, x_offset) = m_pal[tile_palette][col];
634                  else
635                     m_bitmap.pix16(m_current_line, x_offset) = m_main_palette[m_pal[tile_palette][col]];
636               }
637            }
638         }
639      }
640   }
641}
642
643void wswan_video_device::handle_sprites(int mask)
644{
645   if (m_sprite_count == 0)
646      return;
647
648   for (int i = m_sprite_first + m_sprite_count - 1; i >= m_sprite_first; i--)
649   {
650      UINT16 tile_data = (m_sprite_table_buffer[i * 4 + 1] << 8) | m_sprite_table_buffer[i * 4];
651      UINT8 y = m_sprite_table_buffer[ i * 4 + 2 ];
652      UINT8 x = m_sprite_table_buffer[ i * 4 + 3 ];
653      int tile_line = (m_current_line - y) & 0xff;
654
655      if ((tile_line >= 0) && (tile_line < 8) && ((tile_data & 0x2000) == mask))
656      {
657         UINT32 plane0 = 0, plane1 = 0, plane2 = 0, plane3 = 0;
658         int x_offset, tile_address;
659         int tile_number = tile_data & 0x01ff;
660         int tile_palette = 8 + ((tile_data >> 9) & 0x07);
661         int check_clip = 0;
662
663         if (tile_data & 0x8000)
664            tile_line = 7 - tile_line;
665         
666         if (m_colors_16)
667         {
668            tile_address = 0x4000 + (tile_number * 32) + (tile_line << 2);
669            if (m_tile_packed)
670            {
671               plane0 = (m_vram[tile_address + 0] << 24) | (m_vram[tile_address + 1] << 16) | (m_vram[tile_address + 2] << 8) | m_vram[tile_address + 3];
672            }
673            else
674            {
675               plane0 = m_vram[tile_address + 0];
676               plane1 = m_vram[tile_address + 1] << 1;
677               plane2 = m_vram[tile_address + 2] << 2;
678               plane3 = m_vram[tile_address + 3] << 3;
679            }
680         }
681         else
682         {
683            tile_address = 0x2000 + (tile_number * 16) + (tile_line << 1);
684            if (m_tile_packed)
685            {
686               plane0 = (m_vram[tile_address + 0] << 8) | m_vram[tile_address + 1];
687            }
688            else
689            {
690               plane0 = m_vram[tile_address + 0];
691               plane1 = m_vram[tile_address + 1] << 1;
692               plane2 = 0;
693               plane3 = 0;
694            }
695         }
696         
697         if (m_window_sprites_enable)
698         {
699            if (tile_data & 0x1000)
700            {
701               if (m_current_line >= m_window_sprites_top && m_current_line <= m_window_sprites_bottom)
702                  check_clip = 1;
703            }
704            else
705            {
706               if (m_current_line < m_window_sprites_top || m_current_line > m_window_sprites_bottom)
707                  continue;
708            }
709         }
710         
711         for (int j = 0; j < 8; j++)
712         {
713            int col;
714            if (m_tile_packed)
715            {
716               if (m_colors_16)
717               {
718                  col = plane0 & 0x0f;
719                  plane0 = plane0 >> 4;
720               }
721               else
722               {
723                  col = plane0 & 0x03;
724                  plane0 = plane0 >> 2;
725               }
726            }
727            else
728            {
729               col = (plane3 & 8) | (plane2 & 4) | (plane1 & 2) | (plane0 & 1);
730               plane3 = plane3 >> 1;
731               plane2 = plane2 >> 1;
732               plane1 = plane1 >> 1;
733               plane0 = plane0 >> 1;
734            }
735
736            if (tile_data & 0x4000)
737               x_offset = x + j;
738            else
739               x_offset = x + 7 - j;
740
741            x_offset = x_offset & 0xff;
742
743            if (m_window_sprites_enable)
744            {
745               if (tile_data & 0x1000 && check_clip)
746               {
747                  if (x_offset >= m_window_sprites_left && x_offset <= m_window_sprites_right)
748                     continue;
749               }
750               else
751               {
752                  if (x_offset < m_window_sprites_left || x_offset > m_window_sprites_right)
753                  {
754//                          continue;
755                  }
756               }
757            }
758            if (x_offset >= 0 && x_offset < WSWAN_X_PIXELS)
759            {
760               if (m_colors_16)
761               {
762                  if (col)
763                  {
764                     if (m_color_mode)
765                        m_bitmap.pix16(m_current_line, x_offset) = m_pal[tile_palette][col];
766                     else
767                        /* Hmmmm, what should we do here... Is this correct?? */
768                        m_bitmap.pix16(m_current_line, x_offset) = m_pal[tile_palette][col];
769                  }
770               }
771               else
772               {
773                  if (col || !(tile_palette & 4))
774                  {
775                     if (m_color_mode)
776                        m_bitmap.pix16(m_current_line, x_offset) = m_pal[tile_palette][col];
777                     else
778                        m_bitmap.pix16(m_current_line, x_offset) = m_main_palette[m_pal[tile_palette][col]];
779                  }
780               }
781            }
782         }
783      }
784   }
785}
786
787
788void wswan_video_device::refresh_scanline()
789{
790   setup_palettes();
791   
792   rectangle rec(0, WSWAN_X_PIXELS, m_current_line, m_current_line);
793   if (m_lcd_control)
794   {
795      /* Not sure if these background color checks and settings are correct */
796      if (m_color_mode && m_colors_16)
797         m_bitmap.fill(m_pal[m_bg_control >> 4][m_bg_control & 0x0f], rec);
798      else
799         m_bitmap.fill(m_main_palette[m_bg_control & 0x07], rec);
800   }
801   else
802   {
803      m_bitmap.fill(0, rec);
804      return;
805   }
806   
807   // Draw background layer
808   if (m_layer_bg_enable)
809      draw_background();
810   
811   // Draw sprites between background and foreground layers
812   if (m_sprites_enable)
813      handle_sprites(0);
814   
815   // Draw foreground layer, taking window settings into account
816   if (m_layer_fg_enable)
817   {
818      switch (m_window_fg_mode)
819      {
820         case 0: // FG inside & outside window area
821            draw_foreground_0();
822            break;
823         case 1: // ???
824            logerror("Unknown foreground mode 1 set\n");
825            break;
826         case 2: // FG only inside window area
827            if (m_current_line >= m_window_fg_top && m_current_line <= m_window_fg_bottom)
828               draw_foreground_2();
829            break;
830         case 3: // FG only outside window area
831            if (m_current_line < m_window_fg_top || m_current_line > m_window_fg_bottom)
832               draw_foreground_0();
833            else
834               draw_foreground_3();
835            break;
836      }
837   }
838   
839   // Draw sprites in front of foreground layer
840   if (m_sprites_enable)
841      handle_sprites(0x2000);
842}
843
844
845
846UINT32 wswan_video_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
847{
848   copybitmap(bitmap, m_bitmap, 0, 0, 0, 0, cliprect);
849   return 0;
850}
851
852
853READ8_MEMBER(wswan_video_device::reg_r)
854{
855   UINT8 value = m_regs[offset];
856
857   if (offset >= 0x20 && offset < 0x40)
858      return m_palette_port[offset & 0x1f];
859
860   switch (offset)
861   {
862      case 0x01:
863         value = m_bg_control;
864         break;
865      case 0x02:
866         value = m_current_line;
867         break;
868      case 0x14:
869         value = m_lcd_control;
870         break;
871      case 0xa8:
872         value = m_timer_hblank_count & 0xff;
873         break;
874      case 0xa9:
875         value = m_timer_hblank_count >> 8;
876         break;
877      case 0xaa:
878         value = m_timer_vblank_count & 0xff;
879         break;
880      case 0xab:
881         value = m_timer_vblank_count >> 8;
882         break;
883   }
884   
885   return value;
886}
887
888
889WRITE8_MEMBER(wswan_video_device::reg_w)
890{
891   if (offset >= 0x20 && offset < 0x40)
892   {
893      // 0x20-0x3f tile/sprite palette settings
894      // even offs
895      //   Bit 0-3 - Palette (offs & 0x1f)/2 index 0
896      //   Bit 4-7 - Palette (offs & 0x1f)/2 index 1
897      // odd offs
898      //   Bit 0-3 - Palette (offs & 0x1f)/2 index 2
899      //   Bit 4-7 - Palette (offs & 0x1f)/2 index 3
900      m_palette_port[offset & 0x1f] = data;
901      return;
902   }
903     
904   switch (offset)
905   {
906      case 0x00:  // Display control
907               // Bit 0   - Background layer enable
908               // Bit 1   - Foreground layer enable
909               // Bit 2   - Sprites enable
910               // Bit 3   - Sprite window enable
911               // Bit 4-5 - Foreground window configuration
912               //      00 - Foreground layer is displayed inside and outside foreground window area
913               //      01 - Unknown
914               //      10 - Foreground layer is displayed only inside foreground window area
915               //      11 - Foreground layer is displayed outside foreground window area
916               // Bit 6-7 - Unknown
917         m_layer_bg_enable = data & 0x1;
918         m_layer_fg_enable = (data & 0x2) >> 1;
919         m_sprites_enable = (data & 0x4) >> 2;
920         m_window_sprites_enable = (data & 0x8) >> 3;
921         m_window_fg_mode = (data & 0x30) >> 4;
922         break;
923      case 0x01:  // Background colour
924               // In 16 colour mode:
925               //   Bit 0-3 - Palette index
926               //   Bit 4-7 - Palette number
927               // Otherwise:
928               //   Bit 0-2 - Main palette index
929               //   Bit 3-7 - Unknown
930         m_bg_control = data;
931         break;
932      case 0x02:  // Current scanline (Most likely read-only)
933         logerror("Write to current scanline! Current value: %d  Data to write: %d\n", m_current_line, data);
934         // Returning so we don't overwrite the value here, not that it really matters
935         return;
936      case 0x03:  // Line compare
937         m_line_compare = data;
938         logerror("Write to line compare: %d\n", data);
939         break;
940      case 0x04:  // Sprite table base address
941               // Bit 0-5 - Determine sprite table base address 0 0xxxxxx0 00000000
942               // Bit 6-7 - Unknown
943         m_sprite_table_address = (data & 0x3f) << 9;
944         break;
945      case 0x05:  // First sprite number (the one we start drawing with)
946         m_sprite_first_latch = data;
947         if (data) logerror("non-zero first sprite %d\n", data);
948         break;
949      case 0x06:  // Number of sprites to draw
950         m_sprite_count_latch = data;
951         break;
952      case 0x07:  // Background/Foreground table base addresses
953               // Bit 0-2 - Determine background table base address 00xxx000 00000000
954               // Bit 3   - Unknown
955               // Bit 4-6 - Determine foreground table base address 00xxx000 00000000
956               // Bit 7   - Unknown
957         m_layer_bg_address = (data & 0x7) << 11;
958         m_layer_fg_address = (data & 0x70) << 7;
959         break;
960      case 0x08:  // Left coordinate of foreground window
961         m_window_fg_left = data;
962         break;
963      case 0x09:  // Top coordinate of foreground window
964         m_window_fg_top = data;
965         break;
966      case 0x0a:  // Right coordinate of foreground window
967         m_window_fg_right = data;
968         break;
969      case 0x0b:  // Bottom coordinate of foreground window
970         m_window_fg_bottom = data;
971         break;
972      case 0x0c:  // Left coordinate of sprite window
973         m_window_sprites_left = data;
974         break;
975      case 0x0d:  // Top coordinate of sprite window
976         m_window_sprites_top = data;
977         break;
978      case 0x0e:  // Right coordinate of sprite window
979         m_window_sprites_right = data;
980         break;
981      case 0x0f:  // Bottom coordinate of sprite window
982         m_window_sprites_bottom = data;
983         break;
984      case 0x10:  // Background layer X scroll
985         m_layer_bg_scroll_x = data;
986         break;
987      case 0x11:  // Background layer Y scroll
988         m_layer_bg_scroll_y = data;
989         break;
990      case 0x12:  // Foreground layer X scroll
991         m_layer_fg_scroll_x = data;
992         break;
993      case 0x13:  // Foreground layer Y scroll
994         m_layer_fg_scroll_y = data;
995         break;
996      case 0x14:  // LCD control
997               // Bit 0   - LCD enable
998               // Bit 1-7 - Unknown
999         m_lcd_control = data;
1000         break;
1001      case 0x15:  // LCD icons
1002               // Bit 0   - LCD sleep icon enable
1003               // Bit 1   - Vertical position icon enable
1004               // Bit 2   - Horizontal position icon enable
1005               // Bit 3   - Dot 1 icon enable
1006               // Bit 4   - Dot 2 icon enable
1007               // Bit 5   - Dot 3 icon enable
1008               // Bit 6-7 - Unknown
1009         m_icons = data; /* ummmmm */
1010         break;
1011      case 0x1c:  // Palette colors 0 and 1
1012               // Bit 0-3 - Gray tone setting for main palette index 0
1013               // Bit 4-7 - Gray tone setting for main palette index 1
1014         if (m_vdp_type == VDP_TYPE_WSC)
1015         {
1016            int i = 15 - (data & 0x0f);
1017            int j = 15 - ((data & 0xf0) >> 4);
1018            m_main_palette[0] = (i << 8) | (i << 4) | i;
1019            m_main_palette[1] = (j << 8) | (j << 4) | j;
1020         }
1021         else
1022         {
1023            m_main_palette[0] = data & 0x0f;
1024            m_main_palette[1] = (data & 0xf0) >> 4;
1025         }
1026         break;
1027      case 0x1d:  // Palette colors 2 and 3
1028               // Bit 0-3 - Gray tone setting for main palette index 2
1029               // Bit 4-7 - Gray tone setting for main palette index 3
1030         if (m_vdp_type == VDP_TYPE_WSC)
1031         {
1032            int i = 15 - (data & 0x0f);
1033            int j = 15 - ((data & 0xf0) >> 4);
1034            m_main_palette[2] = (i << 8) | (i << 4) | i;
1035            m_main_palette[3] = (j << 8) | (j << 4) | j;
1036         }
1037         else
1038         {
1039            m_main_palette[2] = data & 0x0f;
1040            m_main_palette[3] = (data & 0xf0) >> 4;
1041         }
1042         break;
1043      case 0x1e:  // Palette colors 4 and 5
1044               // Bit 0-3 - Gray tone setting for main palette index 4
1045               // Bit 4-7 - Gray tone setting for main palette index 5
1046         if (m_vdp_type == VDP_TYPE_WSC)
1047         {
1048            int i = 15 - (data & 0x0f);
1049            int j = 15 - ((data & 0xf0) >> 4);
1050            m_main_palette[4] = (i << 8) | (i << 4) | i;
1051            m_main_palette[5] = (j << 8) | (j << 4) | j;
1052         }
1053         else
1054         {
1055            m_main_palette[4] = data & 0x0f;
1056            m_main_palette[5] = (data & 0xf0) >> 4;
1057         }
1058         break;
1059      case 0x1f:  // Palette colors 6 and 7
1060               // Bit 0-3 - Gray tone setting for main palette index 6
1061               // Bit 4-7 - Gray tone setting for main palette index 7
1062         if (m_vdp_type == VDP_TYPE_WSC)
1063         {
1064            int i = 15 - (data & 0x0f);
1065            int j = 15 - ((data & 0xf0) >> 4);
1066            m_main_palette[6] = (i << 8) | (i << 4) | i;
1067            m_main_palette[7] = (j << 8) | (j << 4) | j;
1068         }
1069         else
1070         {
1071            m_main_palette[6] = data & 0x0f;
1072            m_main_palette[7] = (data & 0xf0) >> 4;
1073         }
1074         break;
1075      case 0x60:  // Video mode
1076               // Bit 0-4 - Unknown
1077               // Bit 5   - Packed mode 0 = not packed mode, 1 = packed mode
1078               // Bit 6   - 4/16 colour mode select: 0 = 4 colour mode, 1 = 16 colour mode
1079               // Bit 7   - monochrome/colour mode select: 0 = monochrome mode, 1 = colour mode
1080         /*
1081          * 111  - packed, 16 color, use 4000/8000, color
1082          * 110  - not packed, 16 color, use 4000/8000, color
1083          * 101  - packed, 4 color, use 2000, color
1084          * 100  - not packed, 4 color, use 2000, color
1085          * 011  - packed, 16 color, use 4000/8000, monochrome
1086          * 010  - not packed, 16 color , use 4000/8000, monochrome
1087          * 001  - packed, 4 color, use 2000, monochrome
1088          * 000  - not packed, 4 color, use 2000, monochrome - Regular WS monochrome
1089          */
1090         if (m_vdp_type == VDP_TYPE_WSC)
1091         {
1092            m_color_mode = data & 0x80;
1093            m_colors_16 = data & 0x40;
1094            m_tile_packed = data & 0x20;
1095         }
1096         break;
1097      case 0xa2:  // Timer control
1098               // Bit 0   - HBlank Timer enable
1099               // Bit 1   - HBlank Timer mode: 0 = one shot, 1 = auto reset
1100               // Bit 2   - VBlank Timer(1/75s) enable
1101               // Bit 3   - VBlank Timer mode: 0 = one shot, 1 = auto reset
1102               // Bit 4-7 - Unknown
1103         m_timer_hblank_enable = BIT(data, 0);
1104         m_timer_hblank_mode =   BIT(data, 1);
1105         m_timer_vblank_enable = BIT(data, 2);
1106         m_timer_vblank_mode =   BIT(data, 3);
1107         break;
1108      case 0xa4:  // HBlank timer frequency reload value (bits 0-7)
1109         m_timer_hblank_reload &= 0xff00;
1110         m_timer_hblank_reload += data;
1111         m_timer_hblank_count = m_timer_hblank_reload;
1112         break;
1113      case 0xa5:  // HBlank timer frequency reload value (bits 8-15)
1114         m_timer_hblank_reload &= 0xff;
1115         m_timer_hblank_reload += data << 8;
1116         m_timer_hblank_count = m_timer_hblank_reload;
1117         break;
1118      case 0xa6:  // VBlank timer frequency reload value (bits 0-7)
1119         m_timer_vblank_reload &= 0xff00;
1120         m_timer_vblank_reload += data;
1121         m_timer_vblank_count = m_timer_vblank_reload;
1122         break;
1123      case 0xa7:  // VBlank timer frequency reload value (bits 8-15)
1124         m_timer_vblank_reload &= 0xff;
1125         m_timer_vblank_reload += data << 8;
1126         m_timer_vblank_count = m_timer_vblank_reload;
1127         break;
1128      case 0xa8:  // HBlank counter (bits 0-7)
1129      case 0xa9:  // HBlank counter (bits 8-15)
1130      case 0xaa:  // VBlank counter (bits 0-7)
1131      case 0xab:  // VBlank counter (bits 8-15)
1132         break;
1133   }
1134
1135   m_regs[offset] = data;
1136}
1137
1138
1139void wswan_video_device::scanline_interrupt()
1140{
1141   if (m_current_line < 144)
1142      refresh_scanline();
1143   
1144   // Decrement 12kHz (HBlank) counter
1145   if (m_timer_hblank_enable && m_timer_hblank_reload != 0)
1146   {
1147      m_timer_hblank_count--;
1148      logerror("timer_hblank_count: %X\n", m_timer_hblank_count);
1149      if (m_timer_hblank_count == 0)
1150      {
1151         if (m_timer_hblank_mode)
1152            m_timer_hblank_count = m_timer_hblank_reload;
1153         else
1154            m_timer_hblank_reload = 0;
1155         
1156         logerror( "trigerring hbltmr interrupt\n" );
1157         m_set_irq_cb(WSWAN_VIDEO_IFLAG_HBLTMR);
1158      }
1159   }
1160   
1161   // Handle Sound DMA
1162   m_snd_dma_cb();
1163   
1164//  m_current_line = (m_current_line + 1) % 159;
1165   
1166   if (m_current_line == 144) // buffer sprite table
1167   {
1168      memcpy(m_sprite_table_buffer, &m_vram[m_sprite_table_address], 512);
1169      m_sprite_first = m_sprite_first_latch; // always zero?
1170      m_sprite_count = m_sprite_count_latch;
1171   }
1172   
1173   if (m_current_line == 144)
1174   {
1175      m_set_irq_cb(WSWAN_VIDEO_IFLAG_VBL);
1176      /* Decrement 75Hz (VBlank) counter */
1177      if (m_timer_vblank_enable && m_timer_vblank_reload != 0)
1178      {
1179         m_timer_vblank_count--;
1180         logerror("timer_vblank_count: %X\n", m_timer_vblank_count);
1181         if (m_timer_vblank_count == 0)
1182         {
1183            if (m_timer_vblank_mode)
1184               m_timer_vblank_count = m_timer_vblank_reload;
1185            else
1186               m_timer_vblank_reload = 0;
1187           
1188            logerror("triggering vbltmr interrupt\n");
1189            m_set_irq_cb(WSWAN_VIDEO_IFLAG_VBLTMR);
1190         }
1191      }
1192   }
1193   
1194//  m_current_line = (m_current_line + 1) % 159;
1195   
1196   if (m_current_line == m_line_compare)
1197      m_set_irq_cb(WSWAN_VIDEO_IFLAG_LCMP);
1198   
1199   m_current_line = (m_current_line + 1) % 159;
1200}
1201
1202
1203READ8_MEMBER(wswan_video_device::vram_r)
1204{
1205   return m_vram[offset];
1206}
1207
1208WRITE8_MEMBER(wswan_video_device::vram_w)
1209{
1210   m_vram[offset] = data;
1211}
trunk/src/mess/video/wswan_video.h
r0r241753
1/**********************************************************************
2
3 wswan.h
4 
5 File to handle video emulation of the Bandai WonderSwan.
6 
7 Anthony Kruize
8 Wilbert Pol
9
10**********************************************************************/
11
12#ifndef __WSWAN_VIDEO__
13#define __WSWAN_VIDEO__
14
15#include "emu.h"
16
17enum
18{
19   VDP_TYPE_WSWAN = 0,
20   VDP_TYPE_WSC
21};
22
23#define WSWAN_X_PIXELS  (28*8)
24#define WSWAN_Y_PIXELS  (18*8)
25
26
27
28typedef device_delegate<void (int irq)> wswan_video_irq_cb_delegate;
29#define WSWAN_VIDEO_IRQ_CB_MEMBER(_name)   void _name(int irq)
30
31typedef device_delegate<void (void)> wswan_video_dmasnd_cb_delegate;
32#define WSWAN_VIDEO_DMASND_CB_MEMBER(_name)   void _name(void)
33
34#define MCFG_WSWAN_VIDEO_IRQ_CB(_class, _method) \
35   wswan_video_device::set_irq_callback(*device, wswan_video_irq_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
36
37#define MCFG_WSWAN_VIDEO_DMASND_CB(_class, _method) \
38   wswan_video_device::set_dmasnd_callback(*device, wswan_video_dmasnd_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
39
40#define MCFG_WSWAN_VIDEO_TYPE( _type) \
41   wswan_video_device::set_vdp_type(*device, _type);
42
43
44class wswan_video_device : public device_t
45{
46public:
47   wswan_video_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
48   ~wswan_video_device() {}
49
50   // static configuration
51   static void set_irq_callback(device_t &device, wswan_video_irq_cb_delegate callback) { downcast<wswan_video_device &>(device).m_set_irq_cb = callback; }
52   static void set_dmasnd_callback(device_t &device, wswan_video_dmasnd_cb_delegate callback) { downcast<wswan_video_device &>(device).m_snd_dma_cb = callback; }
53   static void set_vdp_type(device_t &device, int type) { downcast<wswan_video_device &>(device).m_vdp_type = type; }
54
55   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
56
57   virtual DECLARE_READ8_MEMBER(vram_r);
58   virtual DECLARE_WRITE8_MEMBER(vram_w);
59   virtual DECLARE_READ8_MEMBER(reg_r);
60   virtual DECLARE_WRITE8_MEMBER(reg_w);
61
62protected:
63   // device-level overrides
64   virtual void device_start();
65   virtual void device_reset();
66   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
67
68   void setup_palettes();
69   void draw_background();
70   void draw_foreground_0();
71   void draw_foreground_2();
72   void draw_foreground_3();
73   void handle_sprites(int mask);
74   void refresh_scanline();
75   void scanline_interrupt();
76   void common_save();
77   
78   bitmap_ind16 m_bitmap;
79   UINT8 m_layer_bg_enable;          /* Background layer on/off */
80   UINT8 m_layer_fg_enable;          /* Foreground layer on/off */
81   UINT8 m_sprites_enable;           /* Sprites on/off */
82   UINT8 m_window_sprites_enable;        /* Sprite window on/off */
83   UINT8 m_window_fg_mode;           /* 0:inside/outside, 1:??, 2:inside, 3:outside */
84   UINT8 m_bg_control;
85   UINT8 m_current_line;         /* Current scanline : 0-158 (159?) */
86   UINT8 m_line_compare;         /* Line to trigger line interrupt on */
87   UINT32 m_sprite_table_address;        /* Address of the sprite table */
88   UINT8 m_sprite_table_buffer[512];
89   UINT8 m_sprite_first;         /* First sprite to draw */
90   UINT8 m_sprite_count;         /* Number of sprites to draw */
91   UINT8 m_sprite_first_latch;
92   UINT8 m_sprite_count_latch;
93   UINT16 m_layer_bg_address;        /* Address of the background screen map */
94   UINT16 m_layer_fg_address;        /* Address of the foreground screen map */
95   UINT8 m_window_fg_left;           /* Left coordinate of foreground window */
96   UINT8 m_window_fg_top;            /* Top coordinate of foreground window */
97   UINT8 m_window_fg_right;          /* Right coordinate of foreground window */
98   UINT8 m_window_fg_bottom;         /* Bottom coordinate of foreground window */
99   UINT8 m_window_sprites_left;      /* Left coordinate of sprites window */
100   UINT8 m_window_sprites_top;       /* Top coordinate of sprites window */
101   UINT8 m_window_sprites_right;     /* Right coordinate of sprites window */
102   UINT8 m_window_sprites_bottom;        /* Bottom coordinate of sprites window */
103   UINT8 m_layer_bg_scroll_x;        /* Background layer X scroll */
104   UINT8 m_layer_bg_scroll_y;        /* Background layer Y scroll */
105   UINT8 m_layer_fg_scroll_x;        /* Foreground layer X scroll */
106   UINT8 m_layer_fg_scroll_y;        /* Foreground layer Y scroll */
107   UINT8 m_lcd_control;           /* LCD on/off */
108   UINT8 m_icons;                /* FIXME: What do we do with these? Maybe artwork? */
109   UINT8 m_color_mode;           /* monochrome/color mode */
110   UINT8 m_colors_16;            /* 4/16 colors mode */
111   UINT8 m_tile_packed;          /* layered/packed tile mode switch */
112   UINT8 m_timer_hblank_enable;      /* Horizontal blank interrupt on/off */
113   UINT8 m_timer_hblank_mode;        /* Horizontal blank timer mode */
114   UINT16 m_timer_hblank_reload;     /* Horizontal blank timer reload value */
115   UINT16 m_timer_hblank_count;      /* Horizontal blank timer counter value */
116   UINT8 m_timer_vblank_enable;      /* Vertical blank interrupt on/off */
117   UINT8 m_timer_vblank_mode;        /* Vertical blank timer mode */
118   UINT16 m_timer_vblank_reload;     /* Vertical blank timer reload value */
119   UINT16 m_timer_vblank_count;      /* Vertical blank timer counter value */
120   int m_main_palette[8];
121   emu_timer *m_timer;
122
123   dynamic_buffer m_vram;
124   UINT8 *m_palette_vram;
125   UINT8 m_palette_port[0x20];
126   int m_pal[16][16];
127   UINT8 m_regs[256];
128
129   wswan_video_irq_cb_delegate m_set_irq_cb;
130   wswan_video_dmasnd_cb_delegate m_snd_dma_cb;
131   int m_vdp_type;
132
133   // timer IDs
134   static const device_timer_id TIMER_SCANLINE = 0;
135
136   // interrupt flags
137   // these are the same as the wswan.h ones
138   static const UINT8 WSWAN_VIDEO_IFLAG_LCMP   = 0x10;
139   static const UINT8 WSWAN_VIDEO_IFLAG_VBLTMR = 0x20;
140   static const UINT8 WSWAN_VIDEO_IFLAG_VBL    = 0x40;
141   static const UINT8 WSWAN_VIDEO_IFLAG_HBLTMR = 0x80;
142};
143
144extern const device_type WSWAN_VIDEO;
145
146
147#endif
trunk/src/osd/sdl/man/castool.1
r241752r241753
66.\" Cesare Falco <c.falco@ubuntu.com>, February 2011
77.\"
88.\"
9.TH CASTOOL 1 2014-07-31 0.154 "MESS Generic cassette manipulation tool"
9.TH CASTOOL 1 2014-10-15 0.155 "MESS Generic cassette manipulation tool"
1010.\"
1111.\"
1212.\" NAME chapter
trunk/src/osd/sdl/man/chdman.1
r241752r241753
66.\" Ashley T. Howes <debiandev@ashleyhowes.com>, February 2005
77.\" updated by Cesare Falco <c.falco@ubuntu.com>, February 2007
88.\"
9.TH CHDMAN 1 2014-07-31 0.154 "MAME Compressed Hunks of Data (CHD) manager"
9.TH CHDMAN 1 2014-10-15 0.155 "MAME Compressed Hunks of Data (CHD) manager"
1010.\"
1111.\" NAME chapter
1212.SH NAME
trunk/src/osd/sdl/man/floptool.1
r0r241753
1.\"  -*- nroff -*-
2.\"
3.\" floptool.1
4.\"
5.\" Man page created from usage info
6.\" Cesare Falco <c.falco@ubuntu.com>, April 2014
7.\"
8.\"
9.TH FLOPTOOL 1 2014-10-15 0.155 "MESS Generic floppy manipulation tool"
10.\"
11.\"
12.\" NAME chapter
13.SH NAME
14floptool \- MESS Generic floppy image manipulation tool
15.\"
16.\"
17.\" SYNOPSIS chapter
18.SH SYNOPSIS
19.B floptool
20.I option
21.\"
22.\"
23.\" DESCRIPTION chapter
24.SH DESCRIPTION
25.B floptool
26is a tool for the maintenance and manipulation of floppy disk
27images that MESS users need to deal with.
28.\"
29.\"
30.\" COMMANDS chapter
31.SH COMMANDS
32.TP
33.B identify \fIinputfile\fR [\fIinputfile \fR... ]
34Determine the format of a floppy disk image.
35.TP
36.B convert [\fIinputformat\fR|\fIauto\fR] \fIoutputformat inputfile outputfile
37Convert a floppy disk image to a different format.
38.\"
39.\"
40.\" EXAMPLES chapter
41.SH EXAMPLES
42.B floptool identify image.dsk
43.\"
44.\"
45.\" SEE ALSO chapter
46.SH SEE ALSO
47mess(6)
trunk/src/osd/sdl/man/imgtool.1
r241752r241753
66.\" Cesare Falco <c.falco@ubuntu.com>, February 2011
77.\"
88.\"
9.TH IMGTOOL 1 2014-07-31 0.154 "MESS media image manipulation tool"
9.TH IMGTOOL 1 2014-10-15 0.155 "MESS media image manipulation tool"
1010.\"
1111.\"
1212.\" NAME chapter
trunk/src/osd/sdl/man/jedutil.1
r241752r241753
88.\" References
99.\" http://aarongiles.com/?p=159
1010.\"
11.TH JEDUTIL 1 2014-07-31 0.154 "MAME JEDEC file utilities"
11.TH JEDUTIL 1 2014-10-15 0.155 "MAME JEDEC file utilities"
1212.\"
1313.\" NAME chapter
1414.SH NAME
trunk/src/osd/sdl/man/ldresample.1
r241752r241753
33.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
44.\" other parameters are allowed: see man(7), man(1)
55.\"
6.TH LDRESAMPLE 1 2014-07-31 0.154 "MAME laserdisc audio manipulation tool"
6.TH LDRESAMPLE 1 2014-10-15 0.155 "MAME laserdisc audio manipulation tool"
77.\"
88.\" Please adjust this date whenever revising the manpage.
99.\"
trunk/src/osd/sdl/man/ldverify.1
r241752r241753
55.\" Man page created from source and usage information by
66.\" Cesare Falco <c.falco@ubuntu.com>, August 2008
77.\"
8.TH LDVERIFY 1 2014-07-31 0.154 "MAME laserdisc data checker"
8.TH LDVERIFY 1 2014-10-15 0.155 "MAME laserdisc data checker"
99.\"
1010.\" NAME chapter
1111.SH NAME
trunk/src/osd/sdl/man/mame.6
r241752r241753
1313.\" and updated by Andrew Burton <burtona@gol.com>, July 2003
1414.\"
1515.\"
16.TH MAME 6 2014-07-31 0.154 "MAME \- The Multiple Arcade Machine Emulator"
16.TH MAME 6 2014-10-15 0.155 "MAME \- The Multiple Arcade Machine Emulator"
1717.\"
1818.\"
1919.\" NAME chapter
r241752r241753
933933.B \-natural, \-nat
934934Allows user to specify whether or not to use a natural keyboard.
935935This allows you to start your game or system in a 'native' mode, depending
936on your region, allowing compatability for non\-"QWERTY" style keyboards.
937The default is OFF (-nonatural).
936on your region, allowing compatibility for non\-"QWERTY" style keyboards.
937The default is OFF (\-nonatural).
938938.TP
939939.B \-joystick_contradictory
940940Enable contradictory direction digital joystick input at the same time.
trunk/src/osd/sdl/man/mess.6
r241752r241753
1616.\" http://www.mess.org/
1717.\"
1818.\"
19.TH MESS 6 2014-07-31 0.154 "The Multiple Emulator Super System (MESS)"
19.TH MESS 6 2014-10-15 0.155 "The Multiple Emulator Super System (MESS)"
2020.\"
2121.\"
2222.\" NAME chapter
r241752r241753
935935.B \-natural, \-nat
936936Allows user to specify whether or not to use a natural keyboard.
937937This allows you to start your game or system in a 'native' mode, depending
938on your region, allowing compatability for non\-"QWERTY" style keyboards.
939The default is OFF (-nonatural).
938on your region, allowing compatibility for non\-"QWERTY" style keyboards.
939The default is OFF (\-nonatural).
940940.TP
941941.B \-uimodekey, \-umk
942942Specifies the key used to toggle between full and partial UI mode.
trunk/src/osd/sdl/man/romcmp.1
r241752r241753
99.\" References
1010.\" http://www.mame.net/mamefaq.html
1111.\"
12.TH ROMCMP 1 2014-07-31 0.154 "MAME romset checking tool"
12.TH ROMCMP 1 2014-10-15 0.155 "MAME romset checking tool"
1313.\"
1414.\" NAME chapter
1515.SH NAME
trunk/src/osd/sdl/man/testkeys.1
r241752r241753
55.\" Man page created from source and usage information
66.\" Cesare Falco <c.falco@ubuntu.com>, February 2007
77.\"
8.TH TESTKEYS 1 2014-07-31 0.154 "MAME SDL keycode scanner"
8.TH TESTKEYS 1 2014-10-15 0.155 "MAME SDL keycode scanner"
99.\"
1010.\" NAME chapter
1111.SH NAME
trunk/src/osd/sdl/sdl.mak
r241752r241753
8383OSDSRC = $(SRC)/osd
8484OSDOBJ = $(OBJ)/osd
8585
86# default to SDL2 for non-OS/2 builds now
86# default to SDL2 for non-OS/2, non-Emscripten builds now
8787ifndef SDL_LIBVER
8888ifneq ($(TARGETOS),os2)
89ifneq ($(TARGETOS),emscripten)
8990SDL_LIBVER = sdl2
9091else
9192SDL_LIBVER = sdl
9293endif
94else
95SDL_LIBVER = sdl
9396endif
97endif
9498
9599ifndef NO_USE_QTDEBUG
96100OBJDIRS += $(OSDOBJ)/modules/debugger/qt
r241752r241753
258262NO_USE_XINPUT = 1
259263NO_USE_MIDI = 1
260264NO_USE_QTDEBUG = 1
265DONT_USE_NETWORK = 1
261266endif
262267
263268ifeq ($(TARGETOS),macosx)
r241752r241753
779784LIBS += -lpcap
780785endif
781786endif
787else
788OSDOBJS += $(SDLOBJ)/netdev.o
782789endif
783790
784791#-------------------------------------------------


Previous 199869 Revisions Next


© 1997-2024 The MAME Team