Previous 199869 Revisions Next

r33238 Thursday 6th November, 2014 at 14:10:11 UTC by Cowering
Backport MBC1COL detector from GoodGBx
[/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/gameboy]gb_slot.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
r241749r241750
88/cfg
99/diff
1010/ini
11/inp
1211/nvram
1312/obj
1413/snap
trunk/hash/amiga_workbench.xml
r241749r241750
212212      </part>
213213   </software>
214214
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>
215   <software name="wb133r3434" cloneof="wbenc133">
216      <description>Workbench 1.3.3 (Rev. 34.34)</description>
220217      <year>1990</year>
221218      <publisher>Commodore</publisher>
219
222220      <part name="flop1" interface="floppy_3_5">
223         <feature name="part_id" value="Workbench 1.3.3 (US)" />
221         <feature name="part_id" value="Amiga Workbench Version 1.3.3 (Rev. 34.34)" />
224222         <dataarea name="flop" size="901120">
225            <rom name="317746-04_workbench.adf" size="901120" crc="bf299bca" sha1="8bac53a89cd1fe5a7762de9bd61a1592f10af2df" status="baddump" offset="0"/>
223            <rom name="317746-04_workbench.adf" size="901120" crc="bf299bca" sha1="8bac53a89cd1fe5a7762de9bd61a1592f10af2df" offset="0"/>
226224         </dataarea>
227225      </part>
226
228227      <part name="flop2" interface="floppy_3_5">
229         <feature name="part_id" value="Extras 1.3 (US)" />
228         <feature name="part_id" value="Amiga Extras Amiga Basic Printer Drivers Version 1.3" />
230229         <dataarea name="flop" size="901120">
231230            <rom name="317748-02_extras.adf" size="901120" crc="256a4b82" sha1="465a65aa89fe4b016fee968ef75ab08de9bdfbc6" offset="0"/>
232231         </dataarea>
r241749r241750
497496      </part>
498497   </software>
499498
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
513499</softwarelist>
trunk/hash/apfimag_cass.xml
r241749r241750
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
r241749r241750
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
1010942   <software name="dbase238"> <!-- CP/M-80 -->
1011943      <description>dBASE II v2.38</description>
1012944      <year>198?</year>
r241749r241750
11111043      </part>
11121044   </software>
11131045
1114   <software name="acad"> <!-- MS-DOS -->
1046   <software name="acad" supported="no"> <!-- MS-DOS --> <!-- graphic mode doesn't works -->
11151047      <description>AutoCAD</description>
11161048      <year>1987</year>
11171049      <publisher>&lt;unknown&gt;</publisher>
r241749r241750
11281060      </part>
11291061   </software>
11301062
1131   <software name="acada" cloneof="acad"> <!-- MS-DOS -->
1063   <software name="acada" cloneof="acad" supported="no"> <!-- MS-DOS --> <!-- graphic mode doesn't works -->
11321064      <description>AutoCAD (Alt 1)</description>
11331065      <year>1987</year>
11341066      <publisher>&lt;unknown&gt;</publisher>
r241749r241750
11551087      </part>
11561088   </software>
11571089
1158   <software name="acadb" cloneof="acad"> <!-- MS-DOS -->
1090   <software name="acadb" cloneof="acad" supported="no"> <!-- MS-DOS --> <!-- graphic mode doesn't works -->
11591091      <description>AutoCAD (Alt 2)</description>
11601092      <year>1987</year>
11611093      <publisher>&lt;unknown&gt;</publisher>
trunk/hash/ec1841.xml
r241749r241750
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="f8082286" offset="0" />
134            <rom name="ec1841-voice41.td0" size="205475" sha1="5561649fde90bccc743ce61a5d4a50e07cd5a674" crc="1f85afad" offset="0" />
135135         </dataarea>
136136      </part>
137137   </software>
trunk/hash/epson_cpm.xml
r241749r241750
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
r241749r241750
11<?xml version="1.0"?>
22<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3<softwarelist name="fmtowns_cd" description="FM Towns CD-ROMs">
3<softwarelist name="fmtowns" 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
r241749r241750
3333
3434-->
3535
36<softwarelist name="g7400" description="Philips Videopac Plus G7400 cartridges">
36<softwarelist name="vg7400" description="Philips Videopac Plus G7400 cartridges">
3737
3838<!-- Phillips Videopac+ G7400 carts -->
3939
trunk/hash/galaxy.xml
r241749r241750
55
66   <software name="asteroid">
77      <description>Asteroidi</description>
8      <year>1984</year>
9      <publisher>GAC Software</publisher>
8      <year>19??</year>
9      <publisher>&lt;unknown&gt;</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="0" />
12            <rom name="asteroidi.gtp" size="1298" crc="70aa80a3" sha1="1bc96cdf7602bbb24b02f5f9cb9aac709f3a7080" offset="0x0000" />
1313         </dataarea>
1414      </part>
1515   </software>
r241749r241750
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="0" />
23            <rom name="biljar.gtp" size="1017" crc="469ba6a2" sha1="b93a3a968e3fe004958f61d6fcf63268be01517d" offset="0x0000" />
2424         </dataarea>
2525      </part>
2626   </software>
2727
28   <software name="bioritam">
29      <description>Bioritam</description>
30      <year>1984</year>
31      <publisher>Galaxy Computer</publisher>
28   <software name="biorita1">
29      <description>Bioritam1</description>
30      <year>19??</year>
31      <publisher>&lt;unknown&gt;</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="0" />
34            <rom name="bioritam1.gtp" size="2996" crc="86d9274a" sha1="b71ef12740d0cb10d8ae0b5eb30d6f3fd1f7fb86" offset="0x0000" />
3535         </dataarea>
3636      </part>
3737   </software>
3838
3939   <software name="biorita2">
40      <description>Bioritam (Alt)</description>
40      <description>Bioritam2</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="0" />
45            <rom name="bioritam2.gtp" size="1366" crc="997e491e" sha1="b61d390bc33e2568526af5a2116ec87d7ac7e505" offset="0x0000" />
4646         </dataarea>
4747      </part>
4848   </software>
4949
50   <software name="bladeall">
51      <description>Blade Alley</description>
52      <year>1985</year>
53      <publisher>Jasmin Halilovic</publisher>
50   <software name="bladall">
51      <description>BladeAlley</description>
52      <year>19??</year>
53      <publisher>&lt;unknown&gt;</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="0" />
56            <rom name="bladealley.gtp" size="1879" crc="723da222" sha1="b8d7978a67595ef1107919771cbe7b9919ad2fe5" offset="0x0000" />
5757         </dataarea>
5858      </part>
5959   </software>
r241749r241750
6161   <software name="bombard">
6262      <description>Bombarder</description>
6363      <year>19??</year>
64      <publisher>Nenad Balint</publisher>
64      <publisher>&lt;unknown&gt;</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="0" />
67            <rom name="bombarder.gtp" size="1880" crc="7d584b08" sha1="a0629636f015381f8d4132af8d95577fdef12ed7" offset="0x0000" />
6868         </dataarea>
6969      </part>
7070   </software>
7171
7272   <software name="charfire">
73      <description>Chariots of Fire</description>
73      <description>ChariotsOfFire</description>
7474      <year>19??</year>
75      <publisher>Dragan Yujkov</publisher>
75      <publisher>&lt;unknown&gt;</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="0" />
78            <rom name="chariotsoffire.gtp" size="290" crc="33e9fad9" sha1="7e80787f2314c6dad333856b2a1683ddcffafdf4" offset="0x0000" />
7979         </dataarea>
8080      </part>
8181   </software>
r241749r241750
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="0" />
89            <rom name="comets.gtp" size="411" crc="8ccc82a6" sha1="e283c077c660182ffba71f1f5300f893eaf13915" offset="0x0000" />
9090         </dataarea>
9191      </part>
9292   </software>
9393
9494   <software name="dijamant">
95      <description>Dijamantski Rudnik</description>
96      <year>1985</year>
97      <publisher>Nenad Balint</publisher>
95      <description>DijamantskiRudnik</description>
96      <year>19??</year>
97      <publisher>&lt;unknown&gt;</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="0" />
100            <rom name="dijamantskirudnik.gtp" size="2754" crc="d7c5a9ba" sha1="f1669e88644fe4fca1387b00f617aff80162028e" offset="0x0000" />
101101         </dataarea>
102102      </part>
103103   </software>
104104
105105   <software name="dijamanta" cloneof="dijamant">
106      <description>Dijamantski Rudnik (Alt Format)</description>
107      <year>1985</year>
108      <publisher>Nenad Balint</publisher>
106      <description>DijamantskiRudnik_ALT</description>
107      <year>19??</year>
108      <publisher>&lt;unknown&gt;</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="0" />
111            <rom name="dr.gal" size="8244" crc="c73c2187" sha1="9e2fe7856657df1db846f54f008e7e8a823aa8ac" offset="0x0000" />
112112         </dataarea>
113113      </part>
114114   </software>
r241749r241750
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="0" />
122            <rom name="egemond.gtp" size="2913" crc="7c85c513" sha1="ca001178ba823a3a7258147473723321f424c535" offset="0x0000" />
123123         </dataarea>
124124      </part>
125125   </software>
126126
127127   <software name="evolucia">
128128      <description>Evolucija</description>
129      <year>1984</year>
130      <publisher>Dejan Ristanovic</publisher>
129      <year>19??</year>
130      <publisher>&lt;unknown&gt;</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="0" />
133            <rom name="evolucija.gtp" size="1063" crc="c3a8c0f1" sha1="b195af2a260db880166aae754054d1a89a34f73f" offset="0x0000" />
134134         </dataarea>
135135      </part>
136136   </software>
137137
138138   <software name="f1">
139      <description>Formula 1</description>
139      <description>Formula1</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="0" />
144            <rom name="formula1.gtp" size="1194" crc="3efb14c1" sha1="8a48a4bf98c59ae2ed373f6c2db30dfb1cbf14be" offset="0x0000" />
145145         </dataarea>
146146      </part>
147147   </software>
148148
149149   <software name="four">
150150      <description>Four</description>
151      <year>1986</year>
152      <publisher>Dragan Yujkov</publisher>
151      <year>19??</year>
152      <publisher>&lt;unknown&gt;</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="0" />
155            <rom name="four.gtp" size="2631" crc="9ee92e36" sha1="9c7b83ba138e77bc258d3e495146e8971779b4d2" offset="0x0000" />
156156         </dataarea>
157157      </part>
158158   </software>
159159
160160   <software name="galakrat">
161      <description>Galakticki Rat</description>
162      <year>1985</year>
163      <publisher>Antonic Voja</publisher>
161      <description>GalaktickiRat</description>
162      <year>19??</year>
163      <publisher>&lt;unknown&gt;</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="0" />
166            <rom name="galaktickirat.gtp" size="2238" crc="e7a5260e" sha1="510c411b524b80b621655f4038581811818dc7d2" offset="0x0000" />
167167         </dataarea>
168168      </part>
169169   </software>
170170
171171   <software name="hhorace">
172      <description>Hungry Horace</description>
172      <description>HungryHorace</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="0" />
177            <rom name="hungryhorace.gtp" size="797" crc="f3c15d57" sha1="e1217926da7560e9a6a6582df3bbe22ca59e2ed1" offset="0x0000" />
178178         </dataarea>
179179      </part>
180180   </software>
181181
182182   <software name="igradisk">
183      <description>Igra Diskova</description>
184      <year>1985</year>
185      <publisher>Yojislav Mihailovic</publisher>
183      <description>IgraDiskova</description>
184      <year>19??</year>
185      <publisher>&lt;unknown&gt;</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="0" />
188            <rom name="igradiskova.gtp" size="1768" crc="7e37f44d" sha1="c60e55ff82287c7f0d610c1f403de7f75f206054" offset="0x0000" />
189189         </dataarea>
190190      </part>
191191   </software>
192192
193193   <software name="spiridon">
194      <description>Inspektor Spiridon</description>
194      <description>InspektorSpiridon</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="0" />
199            <rom name="inspektorspiridon.gtp" size="4112" crc="15a1ef41" sha1="0f173c16aec2abde535fdb88438a8408c1c114ec" offset="0x0000" />
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="0" />
204            <rom name="inspektorspiridonupustvo.gtp" size="2255" crc="01056c67" sha1="d658f2a5b749f20bdb0bd31b33e2a7a95cf3d378" offset="0x0000" />
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="0" />
209            <rom name="inspektorspiridonvaranje.gtp" size="549" crc="3c780376" sha1="5bd7015082a350dda324ca8d497e5cbd0d73a289" offset="0x0000" />
210210         </dataarea>
211211      </part>
212212   </software>
213213
214214   <software name="jumpjack">
215      <description>Jumping Jack</description>
216      <year>1985</year>
217      <publisher>Antonic Voja</publisher>
215      <description>JumpingJack</description>
216      <year>19??</year>
217      <publisher>&lt;unknown&gt;</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="0" />
220            <rom name="jumpingjack.gtp" size="1891" crc="4b158c1d" sha1="fb6019ac9fbefd87ffcba592178b6568607680b0" offset="0x0000" />
221221         </dataarea>
222222      </part>
223223   </software>
224224
225225   <software name="lightcyc">
226      <description>Light Cycles</description>
227      <year>1985</year>
228      <publisher>Bojan Stanojevic</publisher>
226      <description>LightCycles</description>
227      <year>19??</year>
228      <publisher>&lt;unknown&gt;</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="0" />
231            <rom name="lightcycles.gtp" size="1245" crc="838cf2e2" sha1="6da589007fbf3688f63da88ced241907e8bee774" offset="0x0000" />
232232         </dataarea>
233233      </part>
234234   </software>
235235
236236   <software name="lightcy2">
237      <description>Light Cycles (Alt)</description>
237      <description>LightCycles2</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="0" />
242            <rom name="lightcycles2.gtp" size="1550" crc="f271a8a9" sha1="00dc59dfa6dd6a33edbbedc18f6300e445f170a0" offset="0x0000" />
243243         </dataarea>
244244      </part>
245245   </software>
246246
247247   <software name="lightshw">
248      <description>Light Show</description>
249      <year>1987</year>
250      <publisher>Dragan Vujkov</publisher>
248      <description>LightShow</description>
249      <year>19??</year>
250      <publisher>&lt;unknown&gt;</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="0" />
253            <rom name="lightshow.gtp" size="3001" crc="27ae9809" sha1="d8a95e689dd8c84b71cf375c5f57010e8a9ae4b4" offset="0x0000" />
254254         </dataarea>
255255      </part>
256256   </software>
257257
258258   <software name="mminer">
259      <description>Manic Miner</description>
259      <description>ManicMiner</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="0" />
264            <rom name="manicminer.gtp" size="4378" crc="2ab18f85" sha1="ad12006ccc3bc5c8e27c60eaeac83164ab1b86eb" offset="0x0000" />
265265         </dataarea>
266266      </part>
267267   </software>
268268
269269   <software name="mastrmnd">
270270      <description>Mastermajnd</description>
271      <year>1984</year>
272      <publisher>Dejan Ristanovic</publisher>
271      <year>19??</year>
272      <publisher>&lt;unknown&gt;</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="0" />
275            <rom name="mastermajnd.gtp" size="2077" crc="6daf8f56" sha1="fe6f3f6fbbc75cded96d3217c7f4475f81bb3065" offset="0x0000" />
276276         </dataarea>
277277      </part>
278278   </software>
279279
280280   <software name="mastrmn2">
281      <description>Mastermind</description>
281      <description>Mastermind2</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="0" />
286            <rom name="mastermind2.gtp" size="1035" crc="f27a7818" sha1="b8b93ce87792bd48e59e11e583838e2a8eea937d" offset="0x0000" />
287287         </dataarea>
288288      </part>
289289   </software>
r241749r241750
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="0" />
297            <rom name="maze.gtp" size="2530" crc="9a2eb6e9" sha1="89fc487ef0f8e505525e98396ecc5a16a70379d5" offset="0x0000" />
298298         </dataarea>
299299      </part>
300300   </software>
r241749r241750
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="0" />
308            <rom name="memorija.gtp" size="2357" crc="c5db1192" sha1="8d1c475f1b18f5b9e05583bfdafda1c2e45378c3" offset="0x0000" />
309309         </dataarea>
310310      </part>
311311   </software>
r241749r241750
313313   <software name="monitor">
314314      <description>Monitor</description>
315315      <year>19??</year>
316      <publisher>Antonic Voja</publisher>
316      <publisher>&lt;unknown&gt;</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="0" />
319            <rom name="monitor.gtp" size="2073" crc="f22eceb3" sha1="c9830a9d419681b9f345b44b091c0d82d4239a08" offset="0x0000" />
320320         </dataarea>
321321      </part>
322322   </software>
323323
324324   <software name="nightpil">
325      <description>Night Pilot</description>
326      <year>1985</year>
327      <publisher>Dragutin Vukotic</publisher>
325      <description>NightPilot</description>
326      <year>19??</year>
327      <publisher>&lt;unknown&gt;</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="0" />
330            <rom name="nightpilot.gtp" size="4854" crc="97f02860" sha1="44c4cec4abb012e81dfdc4255f4c42b82e9ff167" offset="0x0000" />
331331         </dataarea>
332332      </part>
333333   </software>
r241749r241750
335335   <software name="oscil">
336336      <description>Oscilacije</description>
337337      <year>19??</year>
338      <publisher>Dragan Vujkov</publisher>
338      <publisher>&lt;unknown&gt;</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="0" />
341            <rom name="oscilacije.gtp" size="504" crc="83392fb3" sha1="bce729ee54a326ee7db9c9dd7dd33145b0cc64db" offset="0x0000" />
342342         </dataarea>
343343      </part>
344344   </software>
345345
346346   <software name="pacmanp">
347      <description>Pac Man (Plus)</description>
347      <description>PacManPlus</description>
348348      <year>19??</year>
349      <publisher>Josip Perusanec</publisher>
349      <publisher>&lt;unknown&gt;</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="0" />
352            <rom name="pacmanplus.gtp" size="12572" crc="cbb8af07" sha1="e3f048454c4a9d62835f80256fdfebbfaef5561b" offset="0x0000" />
353353         </dataarea>
354354      </part>
355355   </software>
356356
357357   <software name="pamtilic">
358358      <description>Pamtilice</description>
359      <year>1985</year>
360      <publisher>Peca Milosavljevic</publisher>
359      <year>19??</year>
360      <publisher>&lt;unknown&gt;</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="0" />
363            <rom name="pamtilice.gtp" size="3076" crc="1ae4d73f" sha1="60332bc1ac30abe9f737a8524fcb581003fd7077" offset="0x0000" />
364364         </dataarea>
365365      </part>
366366   </software>
367367
368368   <software name="poker">
369369      <description>Poker</description>
370      <year>1985</year>
371      <publisher>Nenad Balint</publisher>
370      <year>19??</year>
371      <publisher>&lt;unknown&gt;</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="0" />
374            <rom name="poker.gtp" size="4424" crc="ff4d5af3" sha1="59258c130121ac718ca8f256f293ef2e4e9742df" offset="0x0000" />
375375         </dataarea>
376376      </part>
377377   </software>
378378
379379   <software name="pozivniz">
380      <description>Pozivni Znak</description>
380      <description>PozivniZnak</description>
381381      <year>19??</year>
382      <publisher>Dragan Vujkov</publisher>
382      <publisher>&lt;unknown&gt;</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="0" />
385            <rom name="pozivniznak.gtp" size="414" crc="2d7273a3" sha1="694c770409781f96b422a5b55f9222700fa08531" offset="0x0000" />
386386         </dataarea>
387387      </part>
388388   </software>
389389
390390   <software name="raindrop">
391      <description>Rain Drops</description>
391      <description>RainDrops</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="0" />
396            <rom name="raindrops.gtp" size="573" crc="02642e02" sha1="d9880a1cb0180c8203cc71fab09687a808244d9a" offset="0x0000" />
397397         </dataarea>
398398      </part>
399399   </software>
r241749r241750
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="0" />
407            <rom name="scater.gtp" size="1892" crc="bd4be810" sha1="59d027a4111b15fd30b9290e87a2edb438e1614f" offset="0x0000" />
408408         </dataarea>
409409      </part>
410410   </software>
r241749r241750
412412   <software name="sintesaj">
413413      <description>Sintesajzer</description>
414414      <year>19??</year>
415      <publisher>Dragan Vujkov</publisher>
415      <publisher>&lt;unknown&gt;</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="0" />
418            <rom name="sintesajzer.gtp" size="901" crc="f747478d" sha1="51b9f20f154f5631fbee88c6df906c95f8929de6" offset="0x0000" />
419419         </dataarea>
420420      </part>
421421   </software>
422422
423423   <software name="slalom2">
424      <description>Slalom II</description>
425      <year>1985</year>
426      <publisher>Zeljko Gerovac</publisher>
424      <description>Slalom2</description>
425      <year>19??</year>
426      <publisher>&lt;unknown&gt;</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="0" />
429            <rom name="slalom2.gtp" size="1328" crc="722f26ed" sha1="d9b87941fd19606d53b72cb319c4d3dc7e6880d6" offset="0x0000" />
430430         </dataarea>
431431      </part>
432432   </software>
433433
434434   <software name="snake">
435      <description>Snake (Nenad Balint)</description>
436      <year>1984</year>
437      <publisher>Nenad Balint</publisher>
435      <description>Snake</description>
436      <year>19??</year>
437      <publisher>&lt;unknown&gt;</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="0" />
440            <rom name="snake.gtp" size="3173" crc="ae7e097b" sha1="8b90a3ba49711ea7bd6fc7058a71c0699fc49cb1" offset="0x0000" />
441441         </dataarea>
442442      </part>
443443   </software>
444444
445   <software name="snakedv">
446      <description>Snake (Dragan Vujkov)</description>
447      <year>1987</year>
448      <publisher>Dragan Vujkov</publisher>
445   <software name="snake2">
446      <description>Snake2</description>
447      <year>19??</year>
448      <publisher>&lt;unknown&gt;</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="0" />
451            <rom name="snake2.gtp" size="1686" crc="18127599" sha1="c37d5cf13704b374b3c76d4ac7b80787dfb88dc8" offset="0x0000" />
452452         </dataarea>
453453      </part>
454454   </software>
455455
456456   <software name="squash">
457457      <description>Squash</description>
458      <year>1986</year>
458      <year>19??</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="0" />
462            <rom name="squash.gtp" size="1504" crc="ad4657df" sha1="b5a781c1a97086a3ae2da08f1ed975253a4a035b" offset="0x0000" />
463463         </dataarea>
464464      </part>
465465   </software>
466466
467467   <software name="squasha" cloneof="squash">
468      <description>Squash (Alt Format)</description>
468      <description>Squash_ALT</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="0" />
473            <rom name="squash.gal" size="8244" crc="a54b6d45" sha1="140530381ea8964bd32cecd13659f7131fcdb709" offset="0x0000" />
474474         </dataarea>
475475      </part>
476476   </software>
477477
478478   <software name="scruiser">
479      <description>Super Cruiser</description>
480      <year>1985</year>
481      <publisher>Jasmin Halilovic</publisher>
479      <description>SuperCruiser</description>
480      <year>19??</year>
481      <publisher>&lt;unknown&gt;</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="0" />
484            <rom name="supercruiser.gtp" size="2569" crc="b9faec35" sha1="a68d01975952c117e9620cfcdeb9ca7350964c54" offset="0x0000" />
485485         </dataarea>
486486      </part>
487487   </software>
488488
489489   <software name="scruisera" cloneof="scruiser">
490      <description>Super Cruiser (Alt Format)</description>
491      <year>1985</year>
492      <publisher>Jasmin Halilovic</publisher>
490      <description>SuperCruiser_ALT</description>
491      <year>19??</year>
492      <publisher>&lt;unknown&gt;</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="0" />
495            <rom name="sc.gal" size="8244" crc="8ae78ffb" sha1="7e4217afd4d725dd14af55bf7d0796dd51cc868d" offset="0x0000" />
496496         </dataarea>
497497      </part>
498498   </software>
499499
500500   <software name="supersah">
501      <description>Super-Sah</description>
502      <year>1984</year>
503      <publisher>Page Software</publisher>
501      <description>SuperSah</description>
502      <year>19??</year>
503      <publisher>&lt;unknown&gt;</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="0" />
506            <rom name="supersah.gtp" size="5773" crc="9d24e956" sha1="8bb4898a2e5a538ab6f896b0f0d9f796d9e366d5" offset="0x0000" />
507507         </dataarea>
508508      </part>
509509   </software>
510510
511511   <software name="strgovac">
512      <description>Svemirski Trgovac</description>
513      <year>198?</year>
514      <publisher>Ilija Vitanov</publisher>
512      <description>SvemirskiTrgovac</description>
513      <year>19??</year>
514      <publisher>&lt;unknown&gt;</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="0" />
517            <rom name="svemirskitrgovac.gtp" size="2982" crc="a01a1594" sha1="7cca6dc667a29de5f53b105287dc889869aad383" offset="0x0000" />
518518         </dataarea>
519519      </part>
520520   </software>
521521
522522   <software name="svetleci">
523      <description>Svetleci Bicikli (Plus)</description>
524      <year>1986</year>
525      <publisher>Nenad Balint</publisher>
523      <description>SvetleciBicikliPlus</description>
524      <year>19??</year>
525      <publisher>&lt;unknown&gt;</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="0" />
528            <rom name="svetlecibicikliplus.gtp" size="2583" crc="2d4000fe" sha1="de2b47c73c3a324a223147e41c327a52c372875e" offset="0x0000" />
529529         </dataarea>
530530      </part>
531531   </software>
532532
533533   <software name="tenis">
534534      <description>Tenis</description>
535      <year>1985</year>
536      <publisher>Nenad Balint</publisher>
535      <year>19??</year>
536      <publisher>&lt;unknown&gt;</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="0" />
539            <rom name="tenis.gtp" size="2389" crc="6f158ac7" sha1="3dd52ce8f6dbc1d5114c4a63ed5c40666e79c40f" offset="0x0000" />
540540         </dataarea>
541541      </part>
542542   </software>
543543
544544   <software name="tenis3">
545      <description>Tenis 3</description>
546      <year>1986</year>
547      <publisher>Dragan Yujkov</publisher>
545      <description>Tenis3</description>
546      <year>19??</year>
547      <publisher>&lt;unknown&gt;</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="0" />
550            <rom name="tenis3.gtp" size="1874" crc="bc263558" sha1="2bdfcc96e8e4844cc9edae7670710f72d7bf3e1f" offset="0x0000" />
551551         </dataarea>
552552      </part>
553553   </software>
554554
555555   <software name="tetris">
556556      <description>Tetris</description>
557      <year>1988</year>
558      <publisher>Dragoljub Obradovic</publisher>
557      <year>19??</year>
558      <publisher>&lt;unknown&gt;</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="0" />
561            <rom name="tetrisplus.gtp" size="2709" crc="5a6a819b" sha1="7a60930d6269b3ac9898ce0dc2bada8e5626f270" offset="0x0000" />
562562         </dataarea>
563563      </part>
564564   </software>
565565
566566   <software name="tetrisp">
567      <description>Tetris (Plus)</description>
568      <year>1988</year>
569      <publisher>Dragoljub Obradovic</publisher>
567      <description>TetrisPlus</description>
568      <year>19??</year>
569      <publisher>&lt;unknown&gt;</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="0" />
572            <rom name="tetrisplusq.gtp" size="2706" crc="64015b12" sha1="1d062b4abd1bfdc977568378a61f2bbdf65e2602" offset="0x0000" />
573573         </dataarea>
574574      </part>
575575   </software>
576576
577577   <software name="tetrisa" cloneof="tetris">
578      <description>Tetris (Alt Format)</description>
578      <description>Tetris_ALT</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="0" />
583            <rom name="tetris.gal" size="8244" crc="12bc9373" sha1="008d85b379861416c38e3300477a3772959344a1" offset="0x0000" />
584584         </dataarea>
585585      </part>
586586   </software>
587587
588588   <software name="wall">
589589      <description>Wall</description>
590      <year>1986</year>
591      <publisher>Dragan Vujkov</publisher>
590      <year>19??</year>
591      <publisher>&lt;unknown&gt;</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="0" />
594            <rom name="wall.gtp" size="1328" crc="602db525" sha1="fe31a2455376427436e2638e3452633a2a0f2c9a" offset="0x0000" />
595595         </dataarea>
596596      </part>
597597   </software>
r241749r241750
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="0" />
605            <rom name="wonderer.gtp" size="2863" crc="0e7310b7" sha1="e7dd10af2970ada6ca4d7c3eaaa0b3c3b9b929e9" offset="0x0000" />
606606         </dataarea>
607607      </part>
608608   </software>
609609
610610   <software name="wonder2">
611      <description>Wonderer 2</description>
611      <description>Wonderer2</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="0" />
616            <rom name="wonderer2.gtp" size="1866" crc="cd4ae466" sha1="1e5f8e9be2be400ceed8d547d41f3cfe3d9eb072" offset="0x0000" />
617617         </dataarea>
618618      </part>
619619   </software>
620620
621621   <software name="zamak">
622622      <description>Zamak</description>
623      <year>1984</year>
624      <publisher>Antonic Voja</publisher>
623      <year>19??</year>
624      <publisher>&lt;unknown&gt;</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="0" />
627            <rom name="zamak.gtp" size="3015" crc="7d0cc0c9" sha1="e10d2cf3be1a79febc062ade3f8d5c3713bd43ca" offset="0x0000" />
628628         </dataarea>
629629      </part>
630630   </software>
631631
632632   <software name="zid">
633633      <description>Zid</description>
634      <year>1984</year>
635      <publisher>GAC Software</publisher>
634      <year>19??</year>
635      <publisher>&lt;unknown&gt;</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="0" />
638            <rom name="zid.gtp" size="2142" crc="2302a824" sha1="19b34c1ad8ce33e638e297d68221fffc6c8e9e56" offset="0x0000" />
639639         </dataarea>
640640      </part>
641641   </software>
642642
643643   <software name="ziul">
644644      <description>Ziul</description>
645      <year>1984</year>
646      <publisher>Dejan Ristanovic</publisher>
645      <year>19??</year>
646      <publisher>&lt;unknown&gt;</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="0" />
649            <rom name="ziul.gtp" size="6673" crc="f8322dad" sha1="d2988be278dc7328257841789042976799cf39ef" offset="0x0000" />
650650         </dataarea>
651651      </part>
652652   </software>
r241749r241750
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="0" />
660            <rom name="zvezdice.gtp" size="1584" crc="d45e9a5b" sha1="63cf1089407873e2eb4a43703985e41f6b0623f7" offset="0x0000" />
661661         </dataarea>
662662      </part>
663663   </software>
664664
665665   <software name="zvjezdan">
666      <description>Zvjezdane Staze</description>
667      <year>1985</year>
666      <description>ZvjezdaneStaze</description>
667      <year>19??</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="0" />
671            <rom name="zvjezdanestaze.gtp" size="4950" crc="40fcf0b0" sha1="c44d72cead914b31d5f7f26eebb2f3dc9acea498" offset="0x0000" />
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
731676</softwarelist>
trunk/hash/gamate.xml
r241749r241750
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
r241749r241750
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
1011  - Terminator 2 - Judgement Day (Jpn) by Acclaim
1112
1213Other undumped games:
r241749r241750
84148415   </software>
84158416
84168417   <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">
84288418      <description>Super Golf (Jpn)</description>
84298419      <year>1991</year>
84308420      <publisher>Sigma Enterprises</publisher>
trunk/hash/gameking.xml
r241749r241750
55
66<softwarelist name="gameking" description="TimeTop GameKing cartridges">
77
8   <software name="2004" supported="no">
8   <software name="2004">
99      <description>2004</description>
1010      <year>200?</year>
1111      <publisher>TimeTop</publisher>
r241749r241750
1616      </part>
1717   </software>
1818
19   <software name="alcarlo" supported="no">
19   <software name="alcarlo">
2020      <description>Adventure Legend Carlo</description>
2121      <year>200?</year>
2222      <publisher>TimeTop</publisher>
r241749r241750
2727      </part>
2828   </software>
2929
30   <software name="aries" supported="no">
30   <software name="aries">
3131      <description>Aries</description>
3232      <year>200?</year>
3333      <publisher>TimeTop</publisher>
r241749r241750
3838      </part>
3939   </software>
4040
41   <software name="dinoadv" supported="no">
41   <software name="dinoadv">
4242      <description>Dino Adventure Legend</description>
4343      <year>200?</year>
4444      <publisher>TimeTop</publisher>
r241749r241750
4949      </part>
5050   </software>
5151
52   <software name="duckman" supported="no">
52   <software name="duckman">
5353      <description>Duck Man</description>
5454      <year>200?</year>
5555      <publisher>TimeTop</publisher>
r241749r241750
6060      </part>
6161   </software>
6262
63   <software name="happybal" supported="no">
63   <software name="happybal">
6464      <description>Happy Ball</description>
6565      <year>200?</year>
6666      <publisher>TimeTop</publisher>
r241749r241750
7171      </part>
7272   </software>
7373
74   <software name="happykil" supported="no">
74   <software name="happykil">
7575      <description>Happy Killer</description>
7676      <year>200?</year>
7777      <publisher>TimeTop</publisher>
r241749r241750
8282      </part>
8383   </software>
8484
85   <software name="lanner" supported="no">
85   <software name="lanner">
8686      <description>Lanneret</description>
8787      <year>200?</year>
8888      <publisher>TimeTop</publisher>
r241749r241750
9393      </part>
9494   </software>
9595
96   <software name="penguin" supported="no">
96   <software name="penguin">
9797      <description>Penguin</description>
9898      <year>200?</year>
9999      <publisher>TimeTop</publisher>
r241749r241750
104104      </part>
105105   </software>
106106
107   <software name="popper" supported="no">
107   <software name="popper">
108108      <description>Popper</description>
109109      <year>200?</year>
110110      <publisher>TimeTop</publisher>
r241749r241750
115115      </part>
116116   </software>
117117
118   <software name="sthero" supported="no">
118   <software name="sthero">
119119      <description>Street Hero</description>
120120      <year>200?</year>
121121      <publisher>TimeTop</publisher>
r241749r241750
126126      </part>
127127   </software>
128128
129   <software name="smotor" supported="no">
129   <software name="smotor">
130130      <description>Supermotor</description>
131131      <year>200?</year>
132132      <publisher>TimeTop</publisher>
r241749r241750
137137      </part>
138138   </software>
139139
140   <software name="trojanl" supported="no">
140   <software name="trojanl">
141141      <description>Trojan Legend</description>
142142      <year>200?</year>
143143      <publisher>TimeTop</publisher>
trunk/hash/gbcolor.xml
r241749r241750
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="f6768930" sha1="462e5120831c2298bb5138bf25b4c8c72b372407" offset="000000" />
10289            <rom name="hello kitty no magical museum (japan).bin" size="1048576" crc="5174584f" sha1="f274c780fc3bf4f95b5c17afd0ec73824bedee5c" offset="000000" />
1029010290         </dataarea>
1029110291         <dataarea name="nvram" size="8192">
1029210292         </dataarea>
trunk/hash/hx20_flop.xml
r0r241750
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
r241749r241750
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>
28932825</softwarelist>
trunk/hash/ibm5170.xml
r241749r241750
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
40113969   <software name="sserv2">
40123970      <!-- Dumped via Kryoflux, shows as good and unmodified -->
40133971      <description>Silent Service II (Version 457.01)</description>
trunk/hash/intv.xml
r241749r241750
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"/>
3534      <part name="cart" interface="intv_cart">
3635         <feature name="slot" value="intv_rom" />
3736         <dataarea name="5000" size="0x3000">
r241749r241750
9190      </part>
9291   </software>
9392
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
10893   <software name="atlantis">
10994      <description>Atlantis</description>
11095      <year>1982</year>
r241749r241750
517502      </part>
518503   </software>
519504
520<!-- At title screen, press 4+7 in both keypads to start Deadly Dogs, a TRON Deadly Disks hack with BurgerTime gfx -->
521505   <software name="digdug">
522506      <description>Dig Dug</description>
523507      <year>1987</year>
r241749r241750
18391823      </part>
18401824   </software>
18411825
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
18541826   <software name="advtron">
18551827      <description>Adventures of TRON (Unreleased)</description>
18561828      <year>1982</year>
r241749r241750
19021874      </part>
19031875   </software>
19041876
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
19171877   <software name="choplift">
19181878      <description>Choplifter! (Prototype)</description>
19191879      <year>1983</year>
r241749r241750
19441904      </part>
19451905   </software>
19461906
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
19591907   <software name="gftgold">
19601908      <description>Go for the Gold! (Prototype)</description>
19611909      <year>1983</year>
r241749r241750
20872035      </part>
20882036   </software>
20892037
2090   <software name="llight">
2038   <software name="league">
20912039      <description>League of Light (Prototype)</description>
20922040      <year>1983</year>
20932041      <publisher>Activision</publisher>
r241749r241750
20992047      </part>
21002048   </software>
21012049
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
21262050   <software name="magic">
21272051      <description>Magic Carousel (Prototype)</description>
21282052      <year>1983</year>
r241749r241750
21512075      </part>
21522076   </software>
21532077
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
21902078   <software name="mycastle" cloneof="thcastle">
21912079      <description>Mystic Castle (Prototype)</description>
21922080      <year>1982</year>
r241749r241750
22562144      </part>
22572145   </software>
22582146
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
22712147   <software name="rrubble">
22722148      <description>Robot Rubble (Prototype)</description>
22732149      <year>1983</year>
r241749r241750
22802156      </part>
22812157   </software>
22822158
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
23072159   <software name="rockybw">
23082160      <description>Rocky &amp; Bullwinckle (Unreleased)</description>
23092161      <year>1983</year>
r241749r241750
23912243      </part>
23922244   </software>
23932245
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
24062246   <software name="yogi">
24072247      <description>Yogi's Frustration (Unreleased)</description>
24082248      <year>1983</year>
r241749r241750
25532393      </part>
25542394   </software>
25552395
2556   <software name="spacecnt" cloneof="sspartan">
2396   <software name="spacecnt">
25572397      <description>Space Cunt</description>
2558      <year>1983</year>
2559      <publisher>Mattel Electronics</publisher>
2398      <year>200?</year>
2399      <publisher>IntelligentVision</publisher>
25602400      <info name="usage" value="Uses Intellivoice"/>
25612401      <part name="cart" interface="intv_cart">
25622402         <feature name="slot" value="intv_rom" />
trunk/hash/m5.xml
r0r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
33<!--
44    UNDUMPED / TO BE REDUMPED LIST
55
6    2IN1 (COSMIC SPACEHEAD FANTASTIC DIZZY) PAL
67    ADVANCED DAISENRYAKU            JAPAN       we have Rev A, Rev 0 needed (does it exist?)
78    CAPTAIN PLANET              ASIA
89    DAVIS CUP TENNIS                JAPAN
r241749r241750
1314    FERRARI GRAND PRIX CHALLENGE        PAL     we have Rev A, Rev 0 needed (does it exist?)
1415    FIFA SOCCER                 JAPAN
1516    FIRE SHARK                  PAL     dump check
17    GAIN GROUND                 PAL     revision order check
1618    GALAXY FORCE II             ALL     we have Rev B, Rev 0 and Rev A needed (does it exist?)
1719    INTERNATIONAL SUPERSTAR SOCCER      BRAZIL
1820    JEWEL MASTER                USA/PAL     we have Rev A, Rev 0 needed (does it match Japanese release?)
r241749r241750
4042  * Ghoul Patrol
4143  * Beethoven's 2nd
4244  * Iron Hammer (from http://www.youtube.com/watch?v=uQG0tZQaKUg )
45  * Bill's Tomato Game (from http://www.youtube.com/watch?v=GeCuBe2xd8A )
4346  * Total Carnage
4447  * Monster Hunter
4548  * Brown 60
r241749r241750
107110<!-- Fully documented: confirmed dumps + PCB pics -->
108111
109112
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
129113<!-- Both Euro and USA confirmed -->
130114   <software name="688atsub">
131115      <description>688 Attack Sub (Euro, USA)</description>
r241749r241750
841825   </software>
842826
843827
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
866828   <software name="batman">
867829      <description>Batman (Euro)</description>
868830      <year>1992</year>
r241749r241750
11441106
11451107
11461108<!-- 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 -->
11771109   <software name="buckrog">
11781110      <description>Buck Rogers - Countdown to Doomsday (Euro, USA)</description>
11791111      <year>1991</year>
r241749r241750
12211153   </software>
12221154
12231155
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
12391156   <software name="burnforc">
12401157      <!-- Namcot PCB (blob epoxy chip) -->
12411158      <description>Burning Force (Euro)</description>
r241749r241750
15641481   </software>
15651482
15661483
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
15811484   <software name="collslam">
15821485      <description>College Slam (USA)</description>
15831486      <year>1996</year>
r241749r241750
22942197   </software>
22952198
22962199
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
23142200<!-- Only Euro is confirmed -->
23152201   <software name="ecco">
23162202      <description>Ecco the Dolphin (Euro, USA, Kor)</description>
r241749r241750
30232909   </software>
30242910
30252911
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
30542912<!-- Only Euro is confirmed -->
30552913   <software name="gground">
30562914      <description>Gain Ground (World, Rev. A)</description>
r241749r241750
31493007   </software>
31503008
31513009
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
31663010<!-- Only Euro is confirmed -->
31673011   <software name="genchaos">
31683012      <description>General Chaos (Euro, USA)</description>
r241749r241750
34823326
34833327
34843328<!-- 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 -->
35003329   <software name="hardbl94">
35013330      <description>HardBall '94 (Euro, USA)</description>
35023331      <year>1994</year>
r241749r241750
37253554   </software>
37263555
37273556
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
37423557   <software name="intrugby">
37433558      <description>International Rugby (Euro)</description>
37443559      <year>1993</year>
r241749r241750
38273642   </software>
38283643
38293644
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
38503645<!-- Only Euro is confirmed, USA with label C55-01? needs to be verified -->
38513646   <software name="jbdougko">
38523647      <description>James 'Buster' Douglas Knockout Boxing (Euro, USA)</description>
r241749r241750
39413736   </software>
39423737
39433738
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
39583739<!-- Only Euro is confirmed -->
39593740   <software name="jewelms">
39603741      <description>Jewel Master (Euro, USA, Rev. A)</description>
r241749r241750
49994780   </software>
50004781
50014782
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
50344783   <software name="mmprtm">
50354784      <description>Mighty Morphin Power Rangers - The Movie (Euro)</description>
50364785      <year>1995</year>
r241749r241750
53815130   </software>
53825131
53835132
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
54065133   <software name="bullvslaj" cloneof="bullvsla">
54075134      <description>NBA Pro Basketball - Bulls Vs Lakers (Jpn)</description>
54085135      <year>1993</year>
r241749r241750
59065633
59075634
59085635<!-- 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 -->
59315636   <software name="pga96">
59325637      <description>PGA Tour 96 (Euro, USA)</description>
59335638      <year>1995</year>
r241749r241750
60185723   </software>
60195724
60205725
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
60435726   <software name="phantom">
60445727      <description>Phantom 2040 (Euro)</description>
60455728      <year>1995</year>
r241749r241750
61905873   </software>
61915874
61925875
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
62115876   <software name="pdrive">
62125877      <description>Power Drive (Euro)</description>
62135878      <year>1994</year>
r241749r241750
62375902   </software>
62385903
62395904
6240<!-- Both Euro and USA are confirmed -->
5905<!-- Only Euro is confirmed -->
62415906   <software name="predatr2">
62425907      <description>Predator 2 (Euro, USA)</description>
62435908      <year>1992</year>
62445909      <publisher>Arena</publisher>
62455910      <part name="cart" interface="megadriv_cart">
6246         <feature name="pcb" value="670100 REV 1 (EUR), 670100 REV 5 (USA)"/>
5911         <feature name="pcb" value="670100 REV 1"/>
62475912         <feature name="ic1" value="MPR-15069 W71"/>
62485913         <dataarea name="rom" width="16" endianness="big" size="1048576">
62495914            <rom name="mpr-15069 w71.ic1" size="1048576" crc="bdba113e" sha1="0d482bae2922c81c8bc7500a62c396b038978114" offset="0x000000"/>
r241749r241750
62525917   </software>
62535918
62545919
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
62775920   <software name="prmang97">
62785921      <description>Premier Manager 97 (Euro)</description>
62795922      <year>1996</year>
r241749r241750
63425985   </software>
63435986
63445987
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
63595988   <software name="puggsy">
63605989      <description>Puggsy (Euro)</description>
63615990      <year>1993</year>
r241749r241750
67976426   </software>
67986427
67996428
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
68176429   <software name="slammastu" cloneof="slammast">
68186430      <description>Saturday Night Slammasters (USA)</description>
68196431      <year>1994</year>
r241749r241750
71206732   </software>
71216733
71226734
7123<!-- Both Euro and USA are confirmed -->
6735<!-- Only Euro is confirmed -->
71246736   <software name="bartnigh">
71256737      <description>The Simpsons - Bart's Nightmare (Euro, USA)</description>
71266738      <year>1993</year>
71276739      <publisher>Flying Edge</publisher>
71286740      <part name="cart" interface="megadriv_cart">
7129         <feature name="pcb" value="171-5978BA (EUR), 171-5978B (USA)"/>
6741         <feature name="pcb" value="171-5978BA"/>
71306742         <feature name="u1" value="MPR-15762 T53"/> <!-- location not really marked on PCB, using u1 for consistency -->
71316743         <dataarea name="rom" width="16" endianness="big" size="1048576">
71326744            <rom name="mpr-15762 t53.u1" size="1048576" crc="24d7507c" sha1="fb95b7fdf12dcf62883dabf65d2bf8ffa83786fc" offset="0x000000"/>
r241749r241750
72476859   </software>
72486860
72496861
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
72646862<!-- Both Euro and USA confirmed -->
72656863   <software name="sonic">
72666864      <description>Sonic the Hedgehog (Euro, USA)</description>
r241749r241750
72766874   </software>
72776875
72786876
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
72976877<!-- Euro and Jpn are confirmed -->
72986878   <software name="sonic2">
72996879      <description>Sonic the Hedgehog 2 (World, Rev. A)</description>
r241749r241750
73646944   </software>
73656945
73666946
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
73816947   <software name="speedbl2">
73826948      <description>Speedball 2 (Euro)</description>
73836949      <year>1992</year>
r241749r241750
83827948   </software>
83837949
83847950
8385<!-- Euro and USA confirmed -->
7951<!-- Only Euro is confirmed -->
83867952   <software name="toejama" cloneof="toejam">
83877953      <description>Toe Jam &amp; Earl (World)</description>
83887954      <year>1992</year>
r241749r241750
83927958      <info name="alt_title" value="トージャム&amp;アール"/>
83937959      <part name="cart" interface="megadriv_cart">
83947960         <feature name="pcb" value="171-5978BA"/>
8395         <feature name="u1" value="MPR-14236-F, MPR-14236-H"/>   <!-- location not really marked on PCB, using u1 for consistency -->
7961         <feature name="u1" value="MPR-14236-F"/>   <!-- location not really marked on PCB, using u1 for consistency -->
83967962         <dataarea name="rom" width="16" endianness="big" size="1048576">
83977963            <rom name="mpr-14236-f.ic1" size="1048576" crc="d1b36786" sha1="7f82d8b57fff88bdca5d8aff85b01e231dc1239a" offset="0x000000"/>
83987964         </dataarea>
r241749r241750
87868352   </software>
87878353
87888354
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
88118355<!-- Both Euro and USA confirmed -->
88128356   <software name="vrtroop">
88138357      <description>VR Troopers (Euro, USA)</description>
r241749r241750
89218465      <publisher>Ballistic</publisher>
89228466      <part name="cart" interface="megadriv_cart">
89238467         <feature name="pcb" value="ACSGEE1191 REV A"/>
8924         <feature name="u1" value="9341 (c) 1/92 ACWCSG-1"/> <!-- Also found with 9341 replaced by 9240, and 9405 -->
8468         <feature name="u1" value="9341 (c) 1/92 ACWCSG-1"/>
89258469         <feature name="u2" value="AT28C1616E, KM28C16-20"/>
89268470         <feature name="u3" value="KS74HCTLS00N"/>
89278471         <dataarea name="rom" width="16" endianness="big" size="1048576">
r241749r241750
92128756
92138757<!-- Only Euro is confirmed -->
92148758   <software name="wwfroyal">
9215      <description>WWF Royal Rumble (Euro)</description>
8759      <description>WWF Royal Rumble (World)</description>
92168760      <year>1994</year>
9217      <publisher>Flying Edge</publisher>
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ロイヤルランブル"/>
92188765      <part name="cart" interface="megadriv_cart">
92198766         <feature name="pcb" value="670116 REV 2"/>
92208767         <feature name="ic1" value="WWFRR-GEN LO VER 1.00"/>
r241749r241750
92378784   </software>
92388785
92398786
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
92588787<!-- Only Euro is confirmed -->
92598788   <software name="wwfsup">
92608789      <description>WWF Super WrestleMania (Euro, USA)</description>
r241749r241750
93888917   </software>
93898918
93908919
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
94068920<!-- 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 -->
94228921   <software name="zoom">
94238922      <description>Zoom! (World)</description>
94248923      <year>1990</year>
r241749r241750
94398938
94408939<!-- Partially documented: confirmed dumps, missing additional info (a PCB pic would be of help to fill missing details) -->
94418940
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
94428957   <software name="microm96">
94438958      <description>Micro Machines Turbo Tournament 96 (Euro, v1.1, J-Cart)</description>
94448959      <year>1995</year>
r241749r241750
95839098      </part>
95849099   </software>
95859100
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
95869113   <software name="micromac">
95879114      <description>Micro Machines (Euro, USA)</description>
95889115      <year>1993</year>
r241749r241750
96049131         <feature name="slot" value="rom_cm2in1"/>
96059132         <dataarea name="rom" width="16" endianness="big" size="2621440">
96069133            <rom name="mdppf821.bin" size="2097152" crc="32dd8351" sha1="928f46ca87886c6e72d10f7c9db29b09e483bc49" offset="0x000000"/>
9607            <rom name="mdmm acd3.bin" size="524288" crc="50081a0b" sha1="56a8844c376f2e79e92cf128681fa3fef81c36d6" offset="0x200000"/>
9134            <rom name="mdmm_acd3.bin" size="524288" crc="50081a0b" sha1="56a8844c376f2e79e92cf128681fa3fef81c36d6" offset="0x200000"/>
96089135         </dataarea>
96099136      </part>
96109137   </software>
r241749r241750
103749901      </part>
103759902   </software>
103769903
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>
9904   <software name="arrow1" cloneof="arrow">
9905      <description>Arrow Flash (World, Alt)</description>
103809906      <year>1990</year>
10381      <publisher>Renovation</publisher>
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="アローフラッシュ"/>
103829911      <part name="cart" interface="megadriv_cart">
103839912         <dataarea name="rom" width="16" endianness="big" size="524288">
10384            <rom name="arrowflash.a04c.bin" size="524288" crc="4d89e66b" sha1="916524d2b403a633108cf457eec13b4df7384d95" offset="0x000000"/>
9913            <rom name="arrow flash (world) (alt).bin" size="524288" crc="4d89e66b" sha1="916524d2b403a633108cf457eec13b4df7384d95" offset="0x000000"/>
103859914         </dataarea>
103869915      </part>
103879916   </software>
r241749r241750
1084510374      </part>
1084610375   </software>
1084710376
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
1084810388   <software name="barkley2">
1084910389      <description>Barkley Shut Up and Jam! 2 (USA)</description>
1085010390      <year>1995</year>
r241749r241750
1184011380      </part>
1184111381   </software>
1184211382
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
1184311411   <software name="budokanu" cloneof="budokan">
1184411412      <description>Budokan - The Martial Spirit (USA)</description>
1184511413      <year>1990</year>
r241749r241750
1187311441      </part>
1187411442   </software>
1187511443
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
1187611455   <software name="burnforcu" cloneof="burnforc">
1187711456      <description>Burning Force (USA)</description>
1187811457      <year>1990</year>
r241749r241750
1230411883      </part>
1230511884   </software>
1230611885
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
1230711897   <software name="coachk">
1230811898      <description>Coach K College Basketball (USA)</description>
1230911899      <year>1995</year>
r241749r241750
1292112511      </part>
1292212512   </software>
1292312513
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
1292412525   <software name="crkdownu" cloneof="crkdown">
1292512526      <description>Crack Down (USA)</description>
1292612527      <year>1991</year>
r241749r241750
1416013761      </part>
1416113762   </software>
1416213763
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
1416313775   <software name="ejim2u" cloneof="ejim2">
1416413776      <description>Earthworm Jim 2 (USA)</description>
1416513777      <year>1996</year>
r241749r241750
1480214414      </part>
1480314415   </software>
1480414416
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
1480514428   <software name="f1wcp" cloneof="f1wc">
1480614429      <description>F1 - World Championship Edition (Euro, Prototype)</description>
1480714430      <year>1993</year>
r241749r241750
1532914952      </part>
1533014953   </software>
1533114954
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
1533214966   <software name="funngameu" cloneof="funngame">
1533314967      <description>Fun 'N' Games (USA)</description>
1533414968      <year>1993</year>
r241749r241750
1538715021      </part>
1538815022   </software>
1538915023
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>
15024   <software name="gground1a" cloneof="gground">
15025      <description>Gain Ground (World, Alt)</description>
1539315026      <year>1991</year>
15394      <publisher>Renovation</publisher>
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="ゲイングランド"/>
1539515031      <part name="cart" interface="megadriv_cart">
1539615032         <dataarea name="rom" width="16" endianness="big" size="524288">
15397            <rom name="gainground.a760.bin" size="524288" crc="83e7b8ae" sha1="3cc501086f794ac663aad14d5c5a75b648041151" offset="0x000000"/>
15033            <rom name="gain ground (world) (alt).bin" size="524288" crc="83e7b8ae" sha1="3cc501086f794ac663aad14d5c5a75b648041151" offset="0x000000"/>
1539815034         </dataarea>
1539915035      </part>
1540015036   </software>
r241749r241750
1582215458      </part>
1582315459   </software>
1582415460
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
1582515472   <software name="greatcirj" cloneof="mickeycm">
1582615473      <description>Great Circus Mystery - Mickey to Minnie Magical Adventure 2 (Jpn)</description>
1582715474      <year>1994</year>
r241749r241750
1599015637      </part>
1599115638   </software>
1599215639
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
1599315651   <software name="havocu" cloneof="havoc">
1599415652      <description>High Seas Havoc (USA)</description>
1599515653      <year>1993</year>
r241749r241750
1625915917      </part>
1626015918   </software>
1626115919
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
1626215931   <software name="insectx">
1626315932      <description>Insector X (USA)</description>
1626415933      <year>1990</year>
r241749r241750
1649716166      </part>
1649816167   </software>
1649916168
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
1650016184   <software name="finalb" cloneof="jbdougko">
1650116185      <description>Final Blow (Jpn)</description>
1650216186      <year>1990</year>
r241749r241750
1947519159      </part>
1947619160   </software>
1947719161
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
1947819176   <software name="nbaliv98">
1947919177      <description>NBA Live 98 (USA)</description>
1948019178      <year>1997</year>
r241749r241750
2079620494      </part>
2079720495   </software>
2079820496
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
2081320497   <software name="paperboyj" cloneof="paperboy">
2081420498      <description>Paperboy (Jpn)</description>
2081520499      <year>1992</year>
r241749r241750
2093820622      </part>
2093920623   </software>
2094020624
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
2094120646   <software name="pga2">
2094220647      <description>PGA Tour Golf II (Euro, USA, v1.1)</description>
2094320648      <year>1992</year>
r241749r241750
2096920674      </part>
2097020675   </software>
2097120676
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
2097220691   <software name="pstar2a" cloneof="pstar2">
2097320692      <description>Phantasy Star II (Euro, USA)</description>
2097420693      <year>1989</year>
r241749r241750
2136721086      </part>
2136821087   </software>
2136921088
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
2137021100   <software name="pocahontu" cloneof="pocahont">
2137121101      <description>Pocahontas (USA)</description>
2137221102      <year>1996</year>
r241749r241750
2151721247      </part>
2151821248   </software>
2151921249
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
2152021272   <software name="primetim">
2152121273      <description>Prime Time NFL Starring Deion Sanders (USA)</description>
2152221274      <year>1995</year>
r241749r241750
2256922321      </part>
2257022322   </software>
2257122323
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
2258322324   <software name="mvpbb">
2258422325      <description>Roger Clements MVP Baseball (USA)</description>
2258522326      <year>1992</year>
r241749r241750
2271722458      </part>
2271822459   </software>
2271922460
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
2272022472   <software name="sagaia">
2272122473      <description>Sagaia (USA)</description>
2272222474      <year>1991</year>
r241749r241750
2286322615      </part>
2286422616   </software>
2286522617
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
2286622629   <software name="scooby">
2286722630      <description>Scooby-Doo Mystery (USA)</description>
2286822631      <year>1995</year>
r241749r241750
2398223745      </part>
2398323746   </software>
2398423747
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
2398523759   <software name="sspinua" cloneof="sspin">
2398623760      <description>Sonic Spinball (USA, Alt)</description>
2398723761      <year>1993</year>
r241749r241750
2399323767      </part>
2399423768   </software>
2399523769
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
2399623784   <software name="sonicpir" cloneof="sonic">
2399723785      <description>Sonic the Hedgehog (Pirate, Ripped from Golden 10 in 1)</description>
2399823786      <year>1991?</year>
r241749r241750
2427124059      </part>
2427224060   </software>
2427324061
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
2427424076   <software name="sparkstru" cloneof="sparkstr">
2427524077      <description>Sparkster (USA)</description>
2427624078      <year>1994</year>
r241749r241750
2529425096      </part>
2529525097   </software>
2529625098
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
2529725110   <software name="sfzone">
2529825111      <description>Super Fantasy Zone (Euro)</description>
2529925112      <year>1993</year>
r241749r241750
2726127074      </part>
2726227075   </software>
2726327076
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
2726427091   <software name="vixen357">
2726527092      <description>Vixen 357 (Jpn)</description>
2726627093      <year>1992</year>
r241749r241750
2933929166      </part>
2934029167   </software>
2934129168
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
2934229184   <software name="zoolu" cloneof="zool">
2934329185      <description>Zool (USA)</description>
2934429186      <year>1993</year>
trunk/hash/mikrosha.xml
r241749r241750
1616   </software>
1717
1818   <software name="alambush">
19      <description>Alien Ambush</description>
20      <year>1990</year>
21      <publisher>Sedov E. A.</publisher>
19      <description>ALAMBUSH</description>
20      <year>19??</year>
21      <publisher>&lt;unknown&gt;</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" />
r241749r241750
2727   </software>
2828
2929   <software name="ball">
30      <description>The Ball Game</description>
31      <year>1990</year>
32      <publisher>Sandy Pat Corp.</publisher>
30      <description>BALL</description>
31      <year>19??</year>
32      <publisher>&lt;unknown&gt;</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" />
r241749r241750
3838   </software>
3939
4040   <software name="barmen">
41      <description>Barmen (v1.5)</description>
42      <year>1988</year>
43      <publisher>ALG</publisher>
41      <description>BARMEN</description>
42      <year>19??</year>
43      <publisher>&lt;unknown&gt;</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" />
r241749r241750
4949   </software>
5050
5151   <software name="bomber">
52      <description>Bomber Aircraft</description>
53      <year>1990</year>
54      <publisher>Jup Corp</publisher>
52      <description>BOMBER</description>
53      <year>19??</year>
54      <publisher>&lt;unknown&gt;</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" />
r241749r241750
5959      </part>
6060   </software>
6161
62   <software name="bdash">
63      <description>Boulder Dash (v2)</description>
64      <year>1989</year>
65      <publisher>Clever Hands Software</publisher>
62   <software name="boulder">
63      <description>BOULDER</description>
64      <year>19??</year>
65      <publisher>&lt;unknown&gt;</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" />
r241749r241750
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">
r241749r241750
8181      </part>
8282   </software>
8383
84   <software name="cirk">
85      <description>Cirk (v1.2)</description>
86      <year>1986</year>
87      <publisher>Popov S.N.</publisher>
84   <software name="circus">
85      <description>CIRCUS</description>
86      <year>19??</year>
87      <publisher>&lt;unknown&gt;</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" />
r241749r241750
9393   </software>
9494
9595   <software name="crossfir">
96      <description>Cross Fire (v004)</description>
97      <year>1988</year>
98      <publisher>Zyryanov A.V.</publisher>
96      <description>CROSSFIR</description>
97      <year>19??</year>
98      <publisher>&lt;unknown&gt;</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" />
r241749r241750
566566   </software>
567567
568568   <software name="xonmicr">
569      <description>Xonix (Micron)</description>
569      <description>XONMICR</description>
570570      <year>19??</year>
571      <publisher>Micron</publisher>
571      <publisher>&lt;unknown&gt;</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" />
r241749r241750
576576      </part>
577577   </software>
578578
579   <software name="zstanciy">
580      <description>Z-Stanciya</description>
581      <year>1987</year>
582      <publisher>SNP</publisher>
579   <software name="zstation">
580      <description>ZSTATION</description>
581      <year>19??</year>
582      <publisher>&lt;unknown&gt;</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" />
r241749r241750
591591<!-- System -->
592592
593593   <software name="basic">
594      <description>Mikrosha BASIC</description>
594      <description>BASIC</description>
595595      <year>19??</year>
596596      <publisher>&lt;unknown&gt;</publisher>
597597      <part name="cass" interface="mikrosha_cass">
r241749r241750
602602   </software>
603603
604604   <software name="disasm">
605      <description>Disassembler Mikron</description>
605      <description>DISASM</description>
606606      <year>19??</year>
607607      <publisher>&lt;unknown&gt;</publisher>
608608      <part name="cass" interface="mikrosha_cass">
trunk/hash/msx1_cart.xml
r241749r241750
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
r241749r241750
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" />
1122211221         <dataarea name="prg" size="32768">
1122311222            <rom name="f-15 pgm rev 11 db78" size="32768" crc="e1b511cf" sha1="de66004bd0d88aee42c9efe6c65fb1937ab6b9bb" offset="00000" />
1122411223         </dataarea>
r241749r241750
2045520454      </part>
2045620455   </software>
2045720456
20458   <software name="krazykr">
20457   <software name="krazykr" supported="no">
2045920458      <description>Krazy Kreatures (USA, v1.1)</description>
2046020459      <year>1990</year>
2046120460      <publisher>American Video Entertainment</publisher>
r241749r241750
2047420473   </software>
2047520474
2047620475<!-- 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... -->
20477   <software name="krazykrp" cloneof="krazykr">
20476   <software name="krazykrp" cloneof="krazykr" supported="no">
2047820477      <description>Krazy Kreatures (USA, v1.0)</description>
2047920478      <year>1990</year>
2048020479      <publisher>American Video Entertainment</publisher>
r241749r241750
2381623815      </part>
2381723816   </software>
2381823817
23819   <software name="mermatl">
23818   <software name="mermatl" supported="no">
2382023819      <description>Mermaids of Atlantis - The Riddle of the Magic Bubble (USA)</description>
2382123820      <year>1991</year>
2382223821      <publisher>American Video Entertainment</publisher>
r241749r241750
4571845717      <part name="cart" interface="nes_cart">
4571945718         <feature name="slot" value="nina006" />
4572045719         <feature name="pcb" value="AVE-NINA-06" />
45721         <feature name="mirroring" value="horizontal" />
4572245720         <dataarea name="chr" size="65536">
4572345721            <rom name="futebol (brazil) (unl).chr" size="65536" crc="9fddfc61" sha1="feb234b9cb39996542ab4f9a0d76e0c6239fccc3" offset="00000" status="baddump" />
4572445722         </dataarea>
r241749r241750
4585745855      </part>
4585845856   </software>
4585945857
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
4587745858   <software name="goalj" cloneof="goal2">
4587845859      <description>Goal!! (Jpn)</description>
4587945860      <year>1992</year>
r241749r241750
4841748398      <part name="cart" interface="nes_cart">
4841848399         <feature name="slot" value="nina006" />
4841948400         <feature name="pcb" value="AVE-NINA-06" />
48420         <feature name="mirroring" value="vertical" />
4842148401         <dataarea name="chr" size="32768">
4842248402            <rom name="robert byrnes pool challenge (usa) (proto) (unl).chr" size="32768" crc="01005a00" sha1="e47a5a225990eca7aa6dc3853ca2c243f7d29136" offset="00000" status="baddump" />
4842348403         </dataarea>
r241749r241750
4993149911      <part name="cart" interface="nes_cart">
4993249912         <feature name="slot" value="nina006" />
4993349913         <feature name="pcb" value="AVE-NINA-03" />
49934         <feature name="mirroring" value="horizontal" />
4993549914         <dataarea name="chr" size="65536">
4993649915            <rom name="ultimate league soccer (italy) (unl).chr" size="65536" crc="201e9c71" sha1="3ede735b03708783b1ebb9c203d6e702e90cf0c6" offset="00000" status="baddump" />
4993749916         </dataarea>
r241749r241750
5276652745      <part name="cart" interface="nes_cart">
5276752746         <feature name="slot" value="nina006" />
5276852747         <feature name="pcb" value="AVE-NINA-06" />
52769         <feature name="mirroring" value="horizontal" />
5277052748         <dataarea name="chr" size="32768">
5277152749            <rom name="poke block (asia) (unl).chr" size="32768" crc="edce1b2f" sha1="2628650db3c27b2b3232b627db4ed2bcc69d6e17" offset="00000" status="baddump" />
5277252750         </dataarea>
r241749r241750
5715857136      <part name="cart" interface="nes_cart">
5715957137         <feature name="slot" value="nina006" />
5716057138         <feature name="pcb" value="AVE-NINA-03" />
57161         <feature name="mirroring" value="horizontal" />
5716257139         <dataarea name="chr" size="65536">
5716357140            <rom name="av dragon mahjang (japan) (unl).chr" size="65536" crc="a203df20" sha1="2a24122bfb37b9a62771e740c911a5cbb349178e" offset="00000" status="baddump" />
5716457141         </dataarea>
r241749r241750
5746657443      <part name="cart" interface="nes_cart">
5746757444         <feature name="slot" value="nina006" />
5746857445         <feature name="pcb" value="AVE-NINA-06" />
57469         <feature name="mirroring" value="vertical" />
57446         <feature name="mirroring" value="horizontal" />
5747057447         <dataarea name="chr" size="32768">
5747157448            <rom name="metal fighter (asia) (hacker) (unl).chr" size="32768" crc="fe69de4b" sha1="11bcf115fa146923a87763f8f5f224a8ddb027ce" offset="00000" status="baddump" />
5747257449         </dataarea>
trunk/hash/orao.xml
r241749r241750
44<softwarelist name="orao" description="PEL Varazdin Orao cassettes">
55
66   <software name="6502step">
7      <description>6502 Step (v1.0)</description>
7      <description>6502Step</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="0" />
12            <rom name="6502step.tap" size="4099" crc="18b959be" sha1="9ded3c41aa3d56bc057a8db4ce5d562695723e37" offset="0x0000" />
1313         </dataarea>
1414      </part>
1515   </software>
r241749r241750
1717   <software name="ajnc">
1818      <description>Ajnc</description>
1919      <year>19??</year>
20      <publisher>PEL Soft</publisher>
20      <publisher>&lt;unknown&gt;</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="0" />
23            <rom name="ajnc.tap" size="17806" crc="de341625" sha1="ea157993ea1c70e5f22cb4cf0e8cb1c7acd034da" offset="0x0000" />
2424         </dataarea>
2525      </part>
2626   </software>
2727
2828   <software name="avion">
2929      <description>Avion</description>
30      <year>1986</year>
31      <publisher>Emil Herceg - Igor Kos</publisher>
30      <year>19??</year>
31      <publisher>&lt;unknown&gt;</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="0" />
34            <rom name="avion.tap" size="6798" crc="eb4143a9" sha1="c350137a5c6084d8990b9b0856329f5b94aa338f" offset="0x0000" />
3535         </dataarea>
3636      </part>
3737   </software>
3838
3939   <software name="bdash">
40      <description>Boulder Dash</description>
40      <description>BoulderDash</description>
4141      <year>19??</year>
42      <publisher>Nenad Mihailovic - Mihajlo Dapjas</publisher>
42      <publisher>&lt;unknown&gt;</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="0" />
45            <rom name="boulderdash.tap" size="17998" crc="11ab14ed" sha1="4a7541bdcba4f03538c3659ad9c1bb36b6d34263" offset="0x0000" />
4646         </dataarea>
4747      </part>
4848   </software>
r241749r241750
5050   <software name="breakout">
5151      <description>Breakout</description>
5252      <year>19??</year>
53      <publisher>Stan Rimox Software</publisher>
53      <publisher>&lt;unknown&gt;</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="0" />
56            <rom name="breakout.tap" size="18992" crc="7737b9af" sha1="9d9a9e5b06ede99cb7326bab980d7f5a85ba0723" offset="0x0000" />
5757         </dataarea>
5858      </part>
5959   </software>
r241749r241750
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="0" />
67            <rom name="brojke.tap" size="4035" crc="f46a50c8" sha1="edf486d95df1935effa01f77a36d36c0a24829f8" offset="0x0000" />
6868         </dataarea>
6969      </part>
7070   </software>
7171
7272   <software name="crtanje">
7373      <description>Crtanje</description>
74      <year>1987</year>
75      <publisher>Suzy Soft</publisher>
74      <year>19??</year>
75      <publisher>&lt;unknown&gt;</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="0" />
78            <rom name="crtanje.tap" size="4698" crc="30ef56cb" sha1="7a77d75da0a0b34639b987e0d5cf14d7859d80c6" offset="0x0000" />
7979         </dataarea>
8080      </part>
8181   </software>
8282
8383   <software name="crvic">
8484      <description>Crvic</description>
85      <year>1986</year>
86      <publisher>PEL Soft</publisher>
85      <year>19??</year>
86      <publisher>&lt;unknown&gt;</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="0" />
89            <rom name="crvic.tap" size="14050" crc="6feb9576" sha1="f9f31884a3899731350a2931818b5945afba0bae" offset="0x0000" />
9090         </dataarea>
9191      </part>
9292   </software>
9393
94   <software name="microrac">
95      <description>Mikroracunalo Orao</description>
96      <year>1988</year>
97      <publisher>PEL Varazdin</publisher>
94   <software name="demo1">
95      <description>Demo 1</description>
96      <year>19??</year>
97      <publisher>&lt;unknown&gt;</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="0" />
100            <rom name="demo1.tap" size="31432" crc="9e7ba4ec" sha1="3a0c5c8412383a5cd676394308637a8a54238475" offset="0x0000" />
101101         </dataarea>
102102      </part>
103      <part name="cass2" interface="orao_cass">
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">
104110         <dataarea name="cass" size="18450">
105            <rom name="demo2.tap" size="18450" crc="8bad5b68" sha1="155a06ebfc964642d902b47b49ee7a3ccf2cef0a" offset="0" />
111            <rom name="demo2.tap" size="18450" crc="8bad5b68" sha1="155a06ebfc964642d902b47b49ee7a3ccf2cef0a" offset="0x0000" />
106112         </dataarea>
107113      </part>
108114   </software>
109115
110116   <software name="demograf">
111      <description>Demo Grafika</description>
112      <year>1985</year>
113      <publisher>KMI Borovo</publisher>
117      <description>DemoGrafika</description>
118      <year>19??</year>
119      <publisher>&lt;unknown&gt;</publisher>
114120      <part name="cass1" interface="orao_cass">
115121         <dataarea name="cass" size="22996">
116            <rom name="demografika.tap" size="22996" crc="1a3f6740" sha1="aeca6893a530b27a0428f33d40fb10c683f450fb" offset="0" />
122            <rom name="demografika.tap" size="22996" crc="1a3f6740" sha1="aeca6893a530b27a0428f33d40fb10c683f450fb" offset="0x0000" />
117123         </dataarea>
118124      </part>
119125   </software>
120126
121127   <software name="eagle">
122128      <description>Eagle</description>
123      <year>1986</year>
124      <publisher>KMI Borovo</publisher>
129      <year>19??</year>
130      <publisher>&lt;unknown&gt;</publisher>
125131      <part name="cass1" interface="orao_cass">
126132         <dataarea name="cass" size="9132">
127            <rom name="eagle.tap" size="9132" crc="b3a8886c" sha1="80409c7ca7fe3fa70e4133a96f4f04c9806d6c5d" offset="0" />
133            <rom name="eagle.tap" size="9132" crc="b3a8886c" sha1="80409c7ca7fe3fa70e4133a96f4f04c9806d6c5d" offset="0x0000" />
128134         </dataarea>
129135      </part>
130136   </software>
r241749r241750
132138   <software name="jugador">
133139      <description>Jugador</description>
134140      <year>19??</year>
135      <publisher>Mario Vuletic</publisher>
141      <publisher>&lt;unknown&gt;</publisher>
136142      <part name="cass1" interface="orao_cass">
137143         <dataarea name="cass" size="4932">
138            <rom name="jugador.tap" size="4932" crc="a42f9cdf" sha1="adbf785606b093925eae1c42d1bb6611372c8f89" offset="0" />
144            <rom name="jugador.tap" size="4932" crc="a42f9cdf" sha1="adbf785606b093925eae1c42d1bb6611372c8f89" offset="0x0000" />
139145         </dataarea>
140146      </part>
141147   </software>
142148
143149   <software name="jumpjack">
144      <description>Jumping Jack</description>
145      <year>1986</year>
146      <publisher>KMI Borovo</publisher>
150      <description>JumpingJack</description>
151      <year>19??</year>
152      <publisher>&lt;unknown&gt;</publisher>
147153      <part name="cass1" interface="orao_cass">
148154         <dataarea name="cass" size="9133">
149            <rom name="jumpingjack.tap" size="9133" crc="2bb70986" sha1="269820989ab16c73594abeb6935736c08e07b5f3" offset="0" />
155            <rom name="jumpingjack.tap" size="9133" crc="2bb70986" sha1="269820989ab16c73594abeb6935736c08e07b5f3" offset="0x0000" />
150156         </dataarea>
151157      </part>
152158   </software>
153159
154160   <software name="karate">
155      <description>Internacional Karate</description>
161      <description>Karate</description>
156162      <year>19??</year>
157      <publisher>KMI Borovo</publisher>
163      <publisher>&lt;unknown&gt;</publisher>
158164      <part name="cass1" interface="orao_cass">
159165         <dataarea name="cass" size="25106">
160            <rom name="karate.tap" size="25106" crc="021024a0" sha1="90620ceafe258c7bbec195670b629426bf32b82c" offset="0" />
166            <rom name="karate.tap" size="25106" crc="021024a0" sha1="90620ceafe258c7bbec195670b629426bf32b82c" offset="0x0000" />
161167         </dataarea>
162168      </part>
163169   </software>
164170
165171   <software name="kuki">
166172      <description>Kuki</description>
167      <year>1986</year>
168      <publisher>KMI Borovo</publisher>
173      <year>19??</year>
174      <publisher>&lt;unknown&gt;</publisher>
169175      <part name="cass1" interface="orao_cass">
170176         <dataarea name="cass" size="9998">
171            <rom name="kuki.tap" size="9998" crc="90cddb34" sha1="211de24d98205f1b8dde0057f5294a7fb569483c" offset="0" />
177            <rom name="kuki.tap" size="9998" crc="90cddb34" sha1="211de24d98205f1b8dde0057f5294a7fb569483c" offset="0x0000" />
172178         </dataarea>
173179      </part>
174180   </software>
175181
176182   <software name="kvadrat">
177      <description>Magicni Kvadrat</description>
178      <year>1985</year>
179      <publisher>Mario Ranogajec - Boris Korpar</publisher>
183      <description>Kvadrat</description>
184      <year>19??</year>
185      <publisher>&lt;unknown&gt;</publisher>
180186      <part name="cass1" interface="orao_cass">
181187         <dataarea name="cass" size="17078">
182            <rom name="kvadrat.tap" size="17078" crc="9ee09595" sha1="9ac6e8046765b6656f27046955eeea3672c4509c" offset="0" />
188            <rom name="kvadrat.tap" size="17078" crc="9ee09595" sha1="9ac6e8046765b6656f27046955eeea3672c4509c" offset="0x0000" />
183189         </dataarea>
184190      </part>
185191   </software>
186192
187193   <software name="labirint">
188194      <description>Labirint</description>
189      <year>1985</year>
190      <publisher>Bibi Soft</publisher>
195      <year>19??</year>
196      <publisher>&lt;unknown&gt;</publisher>
191197      <part name="cass1" interface="orao_cass">
192198         <dataarea name="cass" size="5698">
193            <rom name="labirint.tap" size="5698" crc="864f7643" sha1="6201f6dfa20178ca782ac1cde73364d0c5f5ce64" offset="0" />
199            <rom name="labirint.tap" size="5698" crc="864f7643" sha1="6201f6dfa20178ca782ac1cde73364d0c5f5ce64" offset="0x0000" />
194200         </dataarea>
195201      </part>
196202   </software>
197203
198204   <software name="labirinm">
199      <description>Labirint M</description>
205      <description>LabirintM</description>
200206      <year>19??</year>
201207      <publisher>&lt;unknown&gt;</publisher>
202208      <part name="cass1" interface="orao_cass">
203209         <dataarea name="cass" size="15237">
204            <rom name="labirintm.tap" size="15237" crc="9e0790cf" sha1="89706cf82798956410facce1613c54a4c898979f" offset="0" />
210            <rom name="labirintm.tap" size="15237" crc="9e0790cf" sha1="89706cf82798956410facce1613c54a4c898979f" offset="0x0000" />
205211         </dataarea>
206212      </part>
207213   </software>
208214
209215   <software name="mminer">
210      <description>Manic Miner</description>
216      <description>ManicMiner</description>
211217      <year>19??</year>
212      <publisher>Nenad Mihailovic</publisher>
218      <publisher>&lt;unknown&gt;</publisher>
213219      <part name="cass1" interface="orao_cass">
214220         <dataarea name="cass" size="18001">
215            <rom name="manicminer.tap" size="18001" crc="27380ee9" sha1="b37abeb1df684a1ae3b5bd19795ac90e69853176" offset="0" />
221            <rom name="manicminer.tap" size="18001" crc="27380ee9" sha1="b37abeb1df684a1ae3b5bd19795ac90e69853176" offset="0x0000" />
216222         </dataarea>
217223      </part>
218224   </software>
219225
220226   <software name="matchfis">
221      <description>Match Fishing</description>
222      <year>1986</year>
223      <publisher>KMI Borovo</publisher>
227      <description>MatchFishing</description>
228      <year>19??</year>
229      <publisher>&lt;unknown&gt;</publisher>
224230      <part name="cass1" interface="orao_cass">
225231         <dataarea name="cass" size="23228">
226            <rom name="matchfishing.tap" size="23228" crc="fa01ad6c" sha1="88a3af7de00440910212aeb6f5360b32fc9062a1" offset="0" />
232            <rom name="matchfishing.tap" size="23228" crc="fa01ad6c" sha1="88a3af7de00440910212aeb6f5360b32fc9062a1" offset="0x0000" />
227233         </dataarea>
228234      </part>
229235   </software>
230236
231   <software name="memo">
232      <description>Memo</description>
237   <software name="memonona">
238      <description>MemoNoName</description>
233239      <year>19??</year>
234      <publisher>PEL Soft</publisher>
240      <publisher>&lt;unknown&gt;</publisher>
235241      <part name="cass1" interface="orao_cass">
236         <dataarea name="cass" size="16500">
237            <rom name="memopel.tap" size="16500" crc="128ffc0b" sha1="60daee51376dd59b5623a0072cd842ecd5db7257" offset="0" />
242         <dataarea name="cass" size="10198">
243            <rom name="memononame.tap" size="10198" crc="1166e752" sha1="f17f7917ccf8399ef2231cc26be1e9056a3b0a86" offset="0x0000" />
238244         </dataarea>
239245      </part>
240246   </software>
241247
242   <software name="memoa" cloneof="memo">
243      <description>Memo (No Loading Screen)</description>
248   <software name="memopel">
249      <description>Memo PEL</description>
244250      <year>19??</year>
245      <publisher>PEL Soft</publisher>
251      <publisher>&lt;unknown&gt;</publisher>
246252      <part name="cass1" interface="orao_cass">
247         <dataarea name="cass" size="10198">
248            <rom name="memononame.tap" size="10198" crc="1166e752" sha1="f17f7917ccf8399ef2231cc26be1e9056a3b0a86" offset="0" />
253         <dataarea name="cass" size="16500">
254            <rom name="memopel.tap" size="16500" crc="128ffc0b" sha1="60daee51376dd59b5623a0072cd842ecd5db7257" offset="0x0000" />
249255         </dataarea>
250256      </part>
251257   </software>
252258
253259   <software name="nevid">
254260      <description>Nevidljivi</description>
255      <year>1987</year>
256      <publisher>Suzy Soft</publisher>
261      <year>19??</year>
262      <publisher>&lt;unknown&gt;</publisher>
257263      <part name="cass1" interface="orao_cass">
258264         <dataarea name="cass" size="4198">
259            <rom name="nevidljivi.tap" size="4198" crc="513373fb" sha1="56bd74d57bafe8eccaeba5ac7d5ac6bae3412403" offset="0" />
265            <rom name="nevidljivi.tap" size="4198" crc="513373fb" sha1="56bd74d57bafe8eccaeba5ac7d5ac6bae3412403" offset="0x0000" />
260266         </dataarea>
261267      </part>
262268   </software>
r241749r241750
264270   <software name="obelix">
265271      <description>Obelix</description>
266272      <year>19??</year>
267      <publisher>KMI Borovo</publisher>
273      <publisher>&lt;unknown&gt;</publisher>
268274      <part name="cass1" interface="orao_cass">
269275         <dataarea name="cass" size="8639">
270            <rom name="obelix.tap" size="8639" crc="f79019d1" sha1="0de7854d67905fcc476838fba064924c27bbef4b" offset="0" />
276            <rom name="obelix.tap" size="8639" crc="f79019d1" sha1="0de7854d67905fcc476838fba064924c27bbef4b" offset="0x0000" />
271277         </dataarea>
272278      </part>
273279   </software>
274280
275281   <software name="othello">
276282      <description>Othello</description>
277      <year>1985</year>
278      <publisher>Sasa Ivkovic</publisher>
283      <year>19??</year>
284      <publisher>&lt;unknown&gt;</publisher>
279285      <part name="cass1" interface="orao_cass">
280286         <dataarea name="cass" size="18828">
281            <rom name="othello.tap" size="18828" crc="d488a8e3" sha1="a35d5b56882b07c10f98b011d6aa0006a1578452" offset="0" />
287            <rom name="othello.tap" size="18828" crc="d488a8e3" sha1="a35d5b56882b07c10f98b011d6aa0006a1578452" offset="0x0000" />
282288         </dataarea>
283289      </part>
284290   </software>
285291
286292   <software name="pacman">
287      <description>Pac-Man</description>
293      <description>PacMan</description>
288294      <year>19??</year>
289      <publisher>Sasa Ivkovic</publisher>
295      <publisher>&lt;unknown&gt;</publisher>
290296      <part name="cass1" interface="orao_cass">
291297         <dataarea name="cass" size="30114">
292            <rom name="pacman.tap" size="30114" crc="3a6479ea" sha1="b1cbde718d491b4324d9ed13e70e7df0c108f398" offset="0" />
298            <rom name="pacman.tap" size="30114" crc="3a6479ea" sha1="b1cbde718d491b4324d9ed13e70e7df0c108f398" offset="0x0000" />
293299         </dataarea>
294300      </part>
295301   </software>
296302
297303   <software name="pcelicam">
298      <description>Pcelica Maja</description>
304      <description>PcelicaMaja</description>
299305      <year>19??</year>
300306      <publisher>&lt;unknown&gt;</publisher>
301307      <part name="cass1" interface="orao_cass">
302308         <dataarea name="cass" size="16998">
303            <rom name="pcelicamaja.tap" size="16998" crc="e1add5c2" sha1="fcaca49c82855c5fe493bb4741c7e855b1bd1402" offset="0" />
309            <rom name="pcelicamaja.tap" size="16998" crc="e1add5c2" sha1="fcaca49c82855c5fe493bb4741c7e855b1bd1402" offset="0x0000" />
304310         </dataarea>
305311      </part>
306312   </software>
307313
308314   <software name="podsjet">
309315      <description>Podsjetnik</description>
310      <year>1987</year>
311      <publisher>Suzy Soft</publisher>
316      <year>19??</year>
317      <publisher>&lt;unknown&gt;</publisher>
312318      <part name="cass1" interface="orao_cass">
313319         <dataarea name="cass" size="10515">
314            <rom name="podsjetnik.tap" size="10515" crc="ea6c2bb4" sha1="fef66d98d23b1b2f675e3d0ed45ccb53829250da" offset="0" />
320            <rom name="podsjetnik.tap" size="10515" crc="ea6c2bb4" sha1="fef66d98d23b1b2f675e3d0ed45ccb53829250da" offset="0x0000" />
315321         </dataarea>
316322      </part>
317323   </software>
318324
319325   <software name="pomorska">
320      <description>Pomorska Bitka</description>
326      <description>PomorskaBitka</description>
321327      <year>19??</year>
322328      <publisher>&lt;unknown&gt;</publisher>
323329      <part name="cass1" interface="orao_cass">
324330         <dataarea name="cass" size="9608">
325            <rom name="pomorskabitka.tap" size="9608" crc="8c5dda11" sha1="d25fbedf844ce43ee2eb0cb32546c3abcc9111c0" offset="0" />
331            <rom name="pomorskabitka.tap" size="9608" crc="8c5dda11" sha1="d25fbedf844ce43ee2eb0cb32546c3abcc9111c0" offset="0x0000" />
326332         </dataarea>
327333      </part>
328334   </software>
r241749r241750
333339      <publisher>&lt;unknown&gt;</publisher>
334340      <part name="cass1" interface="orao_cass">
335341         <dataarea name="cass" size="3179">
336            <rom name="porno.tap" size="3179" crc="212bb659" sha1="ab422b4548d279a6961e77499f33b602eaacdd0b" offset="0" />
342            <rom name="porno.tap" size="3179" crc="212bb659" sha1="ab422b4548d279a6961e77499f33b602eaacdd0b" offset="0x0000" />
337343         </dataarea>
338344      </part>
339345   </software>
r241749r241750
344350      <publisher>&lt;unknown&gt;</publisher>
345351      <part name="cass1" interface="orao_cass">
346352         <dataarea name="cass" size="5950">
347            <rom name="reversi.tap" size="5950" crc="3964ff16" sha1="2a735bc3ab917c8b2f16d012318aed9f8aa62a52" offset="0" />
353            <rom name="reversi.tap" size="5950" crc="3964ff16" sha1="2a735bc3ab917c8b2f16d012318aed9f8aa62a52" offset="0x0000" />
348354         </dataarea>
349355      </part>
350356   </software>
351357
352   <software name="figchess">
353      <description>Figure Chess</description>
354      <year>1986</year>
355      <publisher>KMI Borovo</publisher>
358   <software name="sah">
359      <description>Sah</description>
360      <year>19??</year>
361      <publisher>&lt;unknown&gt;</publisher>
356362      <part name="cass1" interface="orao_cass">
357363         <dataarea name="cass" size="19745">
358            <rom name="sah.tap" size="19745" crc="02513ff4" sha1="29586a75f9a6ef7b9bb0f370b5eb7f9a00dee37a" offset="0" />
364            <rom name="sah.tap" size="19745" crc="02513ff4" sha1="29586a75f9a6ef7b9bb0f370b5eb7f9a00dee37a" offset="0x0000" />
359365         </dataarea>
360366      </part>
361367   </software>
362368
363369   <software name="sintetiz">
364      <description>Sintetizator Zvuka</description>
365      <year>1987</year>
366      <publisher>Suzy Soft</publisher>
370      <description>SintetizatorZvuka</description>
371      <year>19??</year>
372      <publisher>&lt;unknown&gt;</publisher>
367373      <part name="cass1" interface="orao_cass">
368374         <dataarea name="cass" size="3422">
369            <rom name="sintetizatorzvuka.tap" size="3422" crc="26da3240" sha1="96b4ec2a5b521e27e4fcc91081126aa274ab9230" offset="0" />
375            <rom name="sintetizatorzvuka.tap" size="3422" crc="26da3240" sha1="96b4ec2a5b521e27e4fcc91081126aa274ab9230" offset="0x0000" />
370376         </dataarea>
371377      </part>
372378   </software>
r241749r241750
374380   <software name="sokoban">
375381      <description>Sokoban</description>
376382      <year>19??</year>
377      <publisher>J.P.</publisher>
383      <publisher>&lt;unknown&gt;</publisher>
378384      <part name="cass1" interface="orao_cass">
379385         <dataarea name="cass" size="13829">
380            <rom name="sokoban.tap" size="13829" crc="ffcf7e0c" sha1="12c435c68b2203b68f29c2450740b958e16e0405" offset="0" />
386            <rom name="sokoban.tap" size="13829" crc="ffcf7e0c" sha1="12c435c68b2203b68f29c2450740b958e16e0405" offset="0x0000" />
381387         </dataarea>
382388      </part>
383389   </software>
384390
385391   <software name="spaceinv">
386      <description>Space Invaders</description>
392      <description>SpaceInvaders</description>
387393      <year>19??</year>
388      <publisher>PEL Soft</publisher>
394      <publisher>&lt;unknown&gt;</publisher>
389395      <part name="cass1" interface="orao_cass">
390396         <dataarea name="cass" size="21150">
391            <rom name="spaceinvaders.tap" size="21150" crc="31230e8b" sha1="8021e562130d2b11eb916f3623e65794d93b2a93" offset="0" />
397            <rom name="spaceinvaders.tap" size="21150" crc="31230e8b" sha1="8021e562130d2b11eb916f3623e65794d93b2a93" offset="0x0000" />
392398         </dataarea>
393399      </part>
394400   </software>
395401
396402   <software name="stripajn">
397      <description>Strip Ajnc</description>
398      <year>1985</year>
399      <publisher>Z. Bistrovic</publisher>
403      <description>StripAjnc</description>
404      <year>19??</year>
405      <publisher>&lt;unknown&gt;</publisher>
400406      <part name="cass1" interface="orao_cass">
401407         <dataarea name="cass" size="8750">
402            <rom name="stripajnc.tap" size="8750" crc="68032c11" sha1="3a49a90b7915491eecdec149a5cfb2f90e1a03da" offset="0" />
408            <rom name="stripajnc.tap" size="8750" crc="68032c11" sha1="3a49a90b7915491eecdec149a5cfb2f90e1a03da" offset="0x0000" />
403409         </dataarea>
404410      </part>
405411   </software>
406412
407413   <software name="stripgam">
408      <description>Strip Game Ainc</description>
414      <description>StripGameAinc</description>
409415      <year>19??</year>
410      <publisher>KMI Borovo</publisher>
416      <publisher>&lt;unknown&gt;</publisher>
411417      <part name="cass1" interface="orao_cass">
412418         <dataarea name="cass" size="31615">
413            <rom name="stripgameainc.tap" size="31615" crc="03e38de8" sha1="c5df30d030f44f19182c86fcb6448116f7f92be1" offset="0" />
419            <rom name="stripgameainc.tap" size="31615" crc="03e38de8" sha1="c5df30d030f44f19182c86fcb6448116f7f92be1" offset="0x0000" />
414420         </dataarea>
415421      </part>
416422   </software>
r241749r241750
418424   <software name="tornjev">
419425      <description>Tornjevi</description>
420426      <year>19??</year>
421      <publisher>Tom</publisher>
427      <publisher>&lt;unknown&gt;</publisher>
422428      <part name="cass1" interface="orao_cass">
423429         <dataarea name="cass" size="3966">
424            <rom name="tornjevi.tap" size="3966" crc="38d905d7" sha1="2b21e99b9e847a5bde4acadc03b62ca2e628c93d" offset="0" />
430            <rom name="tornjevi.tap" size="3966" crc="38d905d7" sha1="2b21e99b9e847a5bde4acadc03b62ca2e628c93d" offset="0x0000" />
425431         </dataarea>
426432      </part>
427433   </software>
428434
429435   <software name="ukletidv">
430      <description>Ukleti Dvorac</description>
436      <description>UkletiDvorac</description>
431437      <year>19??</year>
432438      <publisher>&lt;unknown&gt;</publisher>
433439      <part name="cass1" interface="orao_cass">
434440         <dataarea name="cass" size="12398">
435            <rom name="ukletidvorac.tap" size="12398" crc="850123a7" sha1="d867f072832e8c6dd87fe4bbda14cbb720e9ca25" offset="0" />
441            <rom name="ukletidvorac.tap" size="12398" crc="850123a7" sha1="d867f072832e8c6dd87fe4bbda14cbb720e9ca25" offset="0x0000" />
436442         </dataarea>
437443      </part>
438444   </software>
439445
440446   <software name="zid">
441447      <description>Zid</description>
442      <year>1985</year>
443      <publisher>PEL Zabavni Programi</publisher>
448      <year>19??</year>
449      <publisher>&lt;unknown&gt;</publisher>
444450      <part name="cass1" interface="orao_cass">
445451         <dataarea name="cass" size="11345">
446            <rom name="zid.tap" size="11345" crc="c7524e54" sha1="4ee43911a7c49899d2ef7e89308ab3213d1cedac" offset="0" />
452            <rom name="zid.tap" size="11345" crc="c7524e54" sha1="4ee43911a7c49899d2ef7e89308ab3213d1cedac" offset="0x0000" />
447453         </dataarea>
448454      </part>
449455   </software>
450456
451457   <software name="znakovi">
452458      <description>Znakovi</description>
453      <year>1987</year>
454      <publisher>Suzy Soft</publisher>
459      <year>19??</year>
460      <publisher>&lt;unknown&gt;</publisher>
455461      <part name="cass1" interface="orao_cass">
456462         <dataarea name="cass" size="4618">
457            <rom name="znakovi.tap" size="4618" crc="a834c22e" sha1="49340c62aa1f1109f610e95878eb75de24916928" offset="0" />
463            <rom name="znakovi.tap" size="4618" crc="a834c22e" sha1="49340c62aa1f1109f610e95878eb75de24916928" offset="0x0000" />
458464         </dataarea>
459465      </part>
460466   </software>
trunk/hash/pecom_cass.xml
r241749r241750
66   <software name="adresar">
77      <description>Adresar</description>
88      <year>19??</year>
9      <publisher>Ei Racunari</publisher>
9      <publisher>&lt;unknown&gt;</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="0" />
12            <rom name="adresar.wav" size="6382680" crc="e0032321" sha1="f6c9d19941175561c942c803aedc87d5c2dd1903" offset="0x0000" />
1313         </dataarea>
1414      </part>
1515   </software>
1616
1717   <software name="bioritam">
1818      <description>Bioritam</description>
19      <year>1985</year>
20      <publisher>Ei Racunari</publisher>
19      <year>19??</year>
20      <publisher>&lt;unknown&gt;</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="0" />
23            <rom name="bioritam.wav" size="5094680" crc="9fead1c7" sha1="7ed80372fdd57cc68997acc3a7eb1e1628236dfe" offset="0x0000" />
2424         </dataarea>
2525      </part>
2626   </software>
2727
2828   <software name="lavirint">
2929      <description>Lavirint</description>
30      <year>1987</year>
31      <publisher>Ei Racunari</publisher>
30      <year>19??</year>
31      <publisher>&lt;unknown&gt;</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="0" />
34            <rom name="lavirint.wav" size="13222360" crc="9f0aa1b4" sha1="854e9bbe45e42e09c7e57b561b311a98ff078661" offset="0x0000" />
3535         </dataarea>
3636      </part>
3737   </software>
3838
3939   <software name="lopovbnk">
40      <description>Lopov i Bankar</description>
41      <year>1985</year>
42      <publisher>Ei Racunari</publisher>
40      <description>LopovIBankar</description>
41      <year>19??</year>
42      <publisher>&lt;unknown&gt;</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="0" />
45            <rom name="lopov i bankar.wav" size="7996248" crc="e02b73bc" sha1="6b817af8638a94aa7f7c395467237adf3e226d12" offset="0x0000" />
4646         </dataarea>
4747      </part>
4848   </software>
4949
5050   <software name="osvajaci">
51      <description>Osvajaci Svemira</description>
52      <year>1985</year>
53      <publisher>Ei Racunari</publisher>
51      <description>OsvajaciSvemira</description>
52      <year>19??</year>
53      <publisher>&lt;unknown&gt;</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="0" />
56            <rom name="osvajaci svemira.wav" size="19538520" crc="a9000525" sha1="6758cac948d3fd1400e4f90dd9c1d281dfd42d0e" offset="0x0000" />
5757         </dataarea>
5858      </part>
5959   </software>
6060
6161   <software name="pecomrat">
62      <description>Pecom Ratuje</description>
63      <year>1985</year>
64      <publisher>Ei Racunari</publisher>
62      <description>PecomRatuje</description>
63      <year>19??</year>
64      <publisher>&lt;unknown&gt;</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="0" />
67            <rom name="pecom ratuje.wav" size="7595800" crc="9837c657" sha1="d481df682df097de3e9b87f28d0be47939e87098" offset="0x0000" />
6868         </dataarea>
6969      </part>
7070   </software>
7171
7272   <software name="kompozit">
73      <description>Sam Svoj Kompozitor</description>
74      <year>1987</year>
75      <publisher>Ei Racunari</publisher>
73      <description>SamSvojKompozitor</description>
74      <year>19??</year>
75      <publisher>&lt;unknown&gt;</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="0" />
78            <rom name="sam svoj kompozitor.wav" size="3567832" crc="16a53a50" sha1="6ae2a28f0dfb8c6909240b28051c70149257847b" offset="0x0000" />
7979         </dataarea>
8080      </part>
8181   </software>
8282
8383   <software name="sljive">
8484      <description>Sljive</description>
85      <year>1986</year>
86      <publisher>Ei Racunari</publisher>
85      <year>19??</year>
86      <publisher>&lt;unknown&gt;</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="0" />
89            <rom name="shljive.wav" size="7898072" crc="1c5d5a07" sha1="d63a217571ee0e5216708380844f028875533c4b" offset="0x0000" />
9090         </dataarea>
9191      </part>
9292   </software>
9393
9494   <software name="suviajnc">
95      <description>Suvi Ajnc</description>
96      <year>1986</year>
97      <publisher>Ei Racunari</publisher>
95      <description>SuviAjnc</description>
96      <year>19??</year>
97      <publisher>&lt;unknown&gt;</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="0" />
100            <rom name="suvi ajnc.wav" size="11266136" crc="c922dc59" sha1="8679f34599d6929ce969d3ff16c007358924bd80" offset="0x0000" />
101101         </dataarea>
102102      </part>
103103   </software>
104104
105105   <software name="trkakonj">
106      <description>Trka Konja</description>
106      <description>TrkaKonja</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="0" />
111            <rom name="trka konja.wav" size="6658904" crc="f388087b" sha1="5dfc064b154a06409e2f57832318097756384ba3" offset="0x0000" />
112112         </dataarea>
113113      </part>
114114   </software>
trunk/hash/pegasus_cart.xml
r241749r241750
11<?xml version="1.0"?>
22<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3<softwarelist name="pegasus_cart" description="Technosys Aamber Pegasus ROM expansions">
3<softwarelist name="pegasus" description="Technosys Aamber Pegasus ROM expansions">
44
55
66   <software name="basic">
trunk/hash/pet_cass.xml
r241749r241750
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
r241749r241750
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">
115104      <description>Pok&#233;mon Zany Cards (Fra)</description>
116105      <year>2001</year>
117106      <publisher>Nintendo</publisher>
r241749r241750
144133      </part>
145134   </software>
146135
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
158136   <software name="ppartyu" cloneof="pparty" supported="partial">
159      <description>Pok&#233;mon Party Mini (Aus, USA)</description>
137      <description>Pok&#233;mon Party Mini (USA)</description>
160138      <year>2001</year>
161139      <publisher>Nintendo</publisher>
162140      <part name="cart" interface="pokemini_cart">
r241749r241750
167145   </software>
168146
169147   <software name="ppinb">
170      <description>Pok&#233;mon Pinball Mini (Aus, Euro, USA)</description>
148      <description>Pok&#233;mon Pinball Mini (USA)</description>
171149      <year>2001</year>
172150      <publisher>Nintendo</publisher>
173151      <part name="cart" interface="pokemini_cart">
r241749r241750
310288   </software>
311289
312290   <software name="ppuzzlc" supported="partial">
313      <description>Pok&#233;mon Puzzle Collection (Aus, Euro, USA)</description>
291      <description>Pok&#233;mon Puzzle Collection (USA)</description>
314292      <year>2001</year>
315293      <publisher>Nintendo</publisher>
316294      <part name="cart" interface="pokemini_cart">
r241749r241750
320298      </part>
321299   </software>
322300
323   <software name="ppuzzlcp" cloneof="ppuzzlc" supported="partial">
324      <description>Pok&#233;mon Puzzle Collection (USA, GameCube Preview)</description>
325      <year>2001</year>
301   <software name="ppuzzlc2" supported="partial">
302      <description>Pok&#233;mon Puzzle Collection Vol. 2 (Jpn)</description>
303      <year>2002</year>
326304      <publisher>Nintendo</publisher>
327305      <part name="cart" interface="pokemini_cart">
328306         <dataarea name="rom" size="524288">
329            <rom name="pokemon puzzle collection (usa) (gamecube preview).bin" size="524288" crc="6f8ae656" sha1="048bb1d30d6ff21be14dd123c52a375e12611238" offset="000000" />
307            <rom name="pokemon puzzle collection vol. 2 (japan).bin" size="524288" crc="76a1bbf8" sha1="11775bbac2e985ef90d4192ed6322dd3b8352ac9" offset="000000" />
330308         </dataarea>
331309      </part>
332310   </software>
333311
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
345312   <software name="ppuzzlcfp" cloneof="ppuzzlc" supported="partial">
346313      <description>Pok&#233;mon Puzzle Collection (Fra, GameCube Preview)</description>
347314      <year>2001</year>
r241749r241750
397364      </part>
398365   </software>
399366
400   <software name="ppuzzlc2" supported="partial">
401      <description>Pok&#233;mon Puzzle Collection Vol. 2 (Jpn)</description>
402      <year>2002</year>
367   <software name="ppuzzlcp" cloneof="ppuzzlc" supported="partial">
368      <description>Pok&#233;mon Puzzle Collection (USA, GameCube Preview)</description>
369      <year>2001</year>
403370      <publisher>Nintendo</publisher>
404371      <part name="cart" interface="pokemini_cart">
405372         <dataarea name="rom" size="524288">
406            <rom name="pokemon puzzle collection vol. 2 (japan).bin" size="524288" crc="76a1bbf8" sha1="11775bbac2e985ef90d4192ed6322dd3b8352ac9" offset="000000" />
373            <rom name="pokemon puzzle collection (usa) (gamecube preview).bin" size="524288" crc="6f8ae656" sha1="048bb1d30d6ff21be14dd123c52a375e12611238" offset="000000" />
407374         </dataarea>
408375      </part>
409376   </software>
trunk/hash/psion.xml
r0r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
11<?xml version="1.0"?>
22<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3<softwarelist name="radio86_cass" description="Radio-86RK cassettes">
3<softwarelist name="radio86" description="Radio-86RK cassettes">
44
55<!-- GAMES -->
66
trunk/hash/snes.xml
r241749r241750
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
431458    <software name="shinkoukra" cloneof="shinkouk">
432459        <description>Shinchou Kouki (Jpn, Rev. A)</description>
433460        <year>1993</year>
r241749r241750
1522215249      </part>
1522315250   </software>
1522415251
15225   <software name="powyak2b" cloneof="powyak2">
15252   <software name="powyak2a" cloneof="powyak2">
1522615253      <description>Jikkyou Powerful Pro Yakyuu 2 (Jpn)</description>
1522715254      <year>1995</year>
1522815255      <publisher>Konami</publisher>
r241749r241750
1732117348      </part>
1732217349   </software>
1732317350
17324   <software name="mjtaika2a" cloneof="mjtaika2">
17351   <software name="mjtaika2">
1732517352      <description>Mahjong Taikai II (Jpn)</description>
1732617353      <year>1994</year>
1732717354      <publisher>Koei</publisher>
r241749r241750
2638426411      </part>
2638526412   </software>
2638626413
26387   <software name="supermjtd" cloneof="supermjt">
26414   <software name="supermjtc" cloneof="supermjt">
2638826415      <description>Super Mahjong Taikai (Jpn)</description>
2638926416      <year>1992</year>
2639026417      <publisher>Koei</publisher>
r241749r241750
2641026437      </part>
2641126438   </software>
2641226439
26413   <software name="supermjtc" cloneof="supermjt">
26440   <software name="supermjtb" cloneof="supermjt">
2641426441      <description>Super Mahjong Taikai (Jpn, Rev. A)</description>
2641526442      <year>1992</year>
2641626443      <publisher>Koei</publisher>
r241749r241750
3246532492      </part>
3246632493   </software>
3246732494
32468   <software name="powyak2a" cloneof="powyak2">
32495   <software name="powyak2">
3246932496      <!-- single cartridge source: Yakushi~Kabuto -->
3247032497      <description>Jikkyou Powerful Pro Yakyuu 2 (Jpn, Rev. A)</description>
3247132498      <year>1995</year>
r241749r241750
3313133158      </part>
3313233159   </software>
3313333160
33134   <software name="supermjta" cloneof="supermjt">
33161   <software name="supermjt">
3313533162      <!-- single cartridge source: Yakushi~Kabuto -->
3313633163      <description>Super Mahjong Taikai (Jpn, Rev. D)</description>
3313733164      <year>1992</year>
r241749r241750
3567035697      </part>
3567135698   </software>
3567235699
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
3568735700   <software name="bullvsbl">
3568835701      <description>Bulls vs Blazers and the NBA Playoffs (Euro, Rev. A)</description>
3568935702      <year>1992</year>
r241749r241750
4003240045      </part>
4003340046   </software>
4003440047
40035   <software name="ggoemon3a" cloneof="ggoemon3">
40048   <software name="ggoemon3">
4003640049      <description>Ganbare Goemon 3 - Shishi Juurokubee no Karakuri Manjigatame (Jpn)</description>
4003740050      <year>1994</year>
4003840051      <publisher>Konami</publisher>
r241749r241750
4005040063      </part>
4005140064   </software>
4005240065
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
4008040066   <software name="ggoemkir">
4008140067      <description>Ganbare Goemon Kirakira Douchuu - Boku ga Dancer ni Natta Wake (Jpn, Rev. B, NP)</description>
4008240068      <year>1995</year>
r241749r241750
4307143057      </part>
4307243058   </software>
4307343059
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
4309243060   <software name="powyk397">
4309343061      <description>Jikkyou Powerful Pro Yakyuu 3 - '97 Haru (Jpn, Rev. A)</description>
4309443062      <year>1997</year>
r241749r241750
4613846106      </part>
4613946107   </software>
4614046108
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
4615646109   <software name="magpopn">
4615746110      <description>Magical Pop'n (Jpn)</description>
4615846111      <year>1995</year>
r241749r241750
4631446267      </part>
4631546268   </software>
4631646269
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
4633446270   <software name="mjtouhai">
4633546271      <description>The Mahjong Touhaiden (Jpn)</description>
4633646272      <year>1993</year>
r241749r241750
5069350629      </part>
5069450630   </software>
5069550631
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
5070850632   <software name="pinocj" cloneof="pinoc">
5070950633      <description>Pinocchio (Jpn)</description>
5071050634      <year>1996</year>
r241749r241750
5733257256      </part>
5733357257   </software>
5733457258
57335   <software name="supermjtb" cloneof="supermjt">
57259   <software name="supermjta" cloneof="supermjt">
5733657260      <description>Super Mahjong Taikai (Jpn, Rev. C)</description>
5733757261      <year>1992</year>
5733857262      <publisher>Koei</publisher>
r241749r241750
5734957273      </part>
5735057274   </software>
5735157275
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
5736957276   <software name="smw2ja" cloneof="smw2">
5737057277      <description>Super Mario - Yossy Island (Jpn, Rev. A)</description>
5737157278      <year>1995</year>
trunk/hash/sol20_cass.xml
r241749r241750
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
r241749r241750
1717   <software name="basicpac">
1818      <description>Exidy Standard Basic v1.0</description>
1919      <year>1978</year>
20      <publisher>Exidy</publisher>
20      <publisher>Exidy Inc.</publisher>
2121      <info name="serial" value="DP 2002" />
2222      <part name="cart" interface="sorcerer_cart">
2323         <dataarea name="rom" size="8192">
r241749r241750
2929   <software name="devpac">
3030      <description>Exidy Z80 Development Pac</description>
3131      <year>1979</year>
32      <publisher>Exidy</publisher>
32      <publisher>Exidy Inc.</publisher>
3333      <info name="serial" value="DP 2003" />
3434      <part name="cart" interface="sorcerer_cart">
3535         <dataarea name="rom" size="8192">
r241749r241750
4141   <software name="wordpac">
4242      <description>Exidy Word Processor Pac</description>
4343      <year>1978</year>
44      <publisher>Exidy</publisher>
44      <publisher>Exidy Inc.</publisher>
4545      <info name="serial" value="DP 2004" />
4646      <part name="cart" interface="sorcerer_cart">
4747         <dataarea name="rom" size="8192">
r241749r241750
5050      </part>
5151   </software>
5252
53   <software name="basicmod">
53   <software name="basicm">
5454      <description>Exidy Standard Modified Basic v1.01</description>
5555      <!-- Unofficial Hack Release -->
5656      <year>1980</year>
trunk/hash/sorcerer_cass.xml
r241749r241750
55
66<!-- These came from mp3s, so they're marked as bad dumps until they're redumped properly -->
77
8   <software name="chomp">
8   <software name="chomp" supported="no">
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;" />
1312      <part name="cass" interface="sorcerer_cass">
1413         <dataarea name="cass" size="23392316">
1514            <rom name="chomp (1981)(w.s.king).wav" size="23392316" crc="95971024" sha1="62672de80e5139af35424184c76f1c9c18493c3a" offset="0" status="baddump" />
r241749r241750
1716      </part>
1817   </software>
1918
20   <software name="eliza">
19   <software name="eliza" supported="no">
2120      <description>Eliza</description>
2221      <year>19??</year>
2322      <publisher>&lt;unknown&gt;</publisher>
24      <info name="usage" value="Load in BASIC with &quot;CLOAD&quot; command, then type &quot;RUN&quot;" />
2523      <part name="cass" interface="sorcerer_cass">
2624         <dataarea name="cass" size="12578876">
2725            <rom name="eliza (19xx)(-).wav" size="12578876" crc="9173759e" sha1="23d35784fd1ab492cb0371552bd1a981214c0192" offset="0" status="baddump" />
r241749r241750
2927      </part>
3028   </software>
3129
32   <software name="galaxian">
30   <software name="galaxian" supported="no">
3331      <description>Galaxians</description>
3432      <year>19??</year>
3533      <publisher>&lt;unknown&gt;</publisher>
36      <info name="usage" value="Load in Monitor with &quot;LO&quot; command, then type &quot;GO 0100&quot;" />
3734      <part name="cass" interface="sorcerer_cass">
3835         <dataarea name="cass" size="16506020">
3936            <rom name="galaxians (19xx)(-).wav" size="16506020" crc="c6f686b2" sha1="41928aa796e6609de37301b3594d3a9a9eb975ac" offset="0" status="baddump" />
r241749r241750
4138      </part>
4239   </software>
4340
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>
41</softwarelist>
No newline at end of file
trunk/hash/spc1000_cass.xml
r241749r241750
10051005      <description>Toiyar</description>
10061006      <year>198?</year>
10071007      <publisher>Sammi Computer</publisher>
1008      <info name="alt_title" value="토이야" />
10091008      <part name="cass" interface="spc1000_cass">
10101009         <dataarea name="cass" size="68050">
10111010            <rom name="toyar-4852-mayhouse.cas" size="68050" crc="ed454d5c" sha1="18b1ac12709136e4e03d3a7d4ead4a1d00c232ca" offset="0" />
trunk/hash/specpls3_flop.xml
r241749r241750
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
r0r241750
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
r241749r241750
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
r0r241750
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
r241749r241750
44
55
66   <software name="basic80">
7      <description>Mikro/80 BASIC</description>
7      <description>BASIC80</description>
88      <year>19??</year>
99      <publisher>&lt;unknown&gt;</publisher>
1010      <part name="cass" interface="ut88_cass">
r241749r241750
1515   </software>
1616
1717   <software name="chscom">
18      <description>Changer (v1.1) (CP/M)</description>
18      <description>CH$COM</description>
1919      <year>19??</year>
2020      <publisher>&lt;unknown&gt;</publisher>
2121      <part name="cass" interface="ut88_cass">
r241749r241750
2626   </software>
2727
2828   <software name="cpm35">
29      <description>CP/M (v2.2, 35K)</description>
29      <description>CPM35</description>
3030      <year>19??</year>
3131      <publisher>&lt;unknown&gt;</publisher>
3232      <part name="cass" interface="ut88_cass">
r241749r241750
3636      </part>
3737   </software>
3838
39   <software name="cpm256">
40      <description>CP/M (v2.2, 256K)</description>
39   <software name="cpm64">
40      <description>CPM64</description>
4141      <year>19??</year>
4242      <publisher>&lt;unknown&gt;</publisher>
4343      <part name="cass" interface="ut88_cass">
r241749r241750
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
r241749r241750
4747
4848
4949-->
50</softwarelist>
No newline at end of file
trunk/hash/vsmile_cd.xml
r241749r241750
1717********7 = Spain
1818
191980-093000(US)   | The Crystal Ball Adventures
2080-093004(GE)   | Das zauberhafte Märchenabenteuer
2180-093005(FR)   | L'aventure enchantée
2080-093004(GE)   | Das zauberhafte M\xE4rchenabenteuer
2180-093005(FR)   | L'aventure enchant\xE9e
222280-093007(SP)   | El Castillo de las Princesas
2323-
242480-093020(US)   | The Incredibles - Mission Incredible
r241749r241750
3131-
323280-093060(US)   | The Amazing Spider-Man - Countdown to Doom
333380-093064(GE)   | Spiderman - Angriff der Superschurken
3480-093065(FR)   | Spider-Man - Course-poursuite à Manhattan
3480-093065(FR)   | Spider-Man - Course-poursuite \xE0 Manhattan
353580-093067(SP)   | El Asombroso Spider-Man - Persecucion en la Cuidad
3636-
373780-093080(US)   | Scooby-Doo! - Ancient Adventure
r241749r241750
414180-093087(SP)   | Scooby-Doo - Viaje al Pasdao
4242-
434380-093100(US)   | Cars - In The Fast Lane
4480-093104(GE)   | Cars - Auf der Überholspur
4480-093104(GE)   | Cars - Auf der \xDCberholspur
454580-093105(FR)   | Cars - A Fond la Caisse!
464680-093107(SP)   | Cars - El Carril Rapido
4747-
484880-093120(US)   | Wacky Race on Jumpin' Bean Island
4980-093124(GE)   | Das verrückte Rennen auf der Hüpf-Bohnen-Insel
4980-093124(GE)   | Das verr\xFCckte Rennen auf der H\xFCpf-Bohnen-Insel
505080-093127(SP)   | Carrera Loca - En La Isla de las Vainas Fritas  (real# unknown)
5151-
525280-093140(US)   | Shrek The Third - The Search for Arthur
trunk/hash/x07_cass.xml
r241749r241750
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
r241749r241750
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
r241749r241750
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
2325# these were disabled because of bugs in older clang versions
24CCOMFLAGS += -Wformat-security -Wconstant-logical-operand
26CCOMFLAGS += -Wformat-security
2527# these show up when compiling as c++11
2628CCOMFLAGS += -Wno-deprecated-register -Wno-reserved-user-defined-literal -Wno-c++11-narrowing
2729# TODO: add proper detection of XCode 6.0.1
trunk/src/emu/bus/a2bus/a2pic.c
r241749r241750
2222#define PIC_CENTRONICS_TAG "pic_ctx"
2323
2424MACHINE_CONFIG_FRAGMENT( pic )
25   MCFG_CENTRONICS_ADD(PIC_CENTRONICS_TAG, centronics_devices, "printer")
25   MCFG_CENTRONICS_ADD(PIC_CENTRONICS_TAG, centronics_printers, "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
r241749r241750
4949    - verify cursor keys
5050    - language DIP
5151    - mouse
52    - investigate unknown ROMs
5253    - MCS-48 PC:01DC - Unimplemented opcode = 75
5354        - 75 = ENT0 CLK : enable CLK (unscaled_clock/3) output on T0
5455        - halt Z2 when Z5 is reset, resume Z2 when Z5 executes ENT0 CLK instruction
r241749r241750
8081//-------------------------------------------------
8182
8283ROM_START( abc99 )
83   ROM_DEFAULT_BIOS("107268")
84   ROM_SYSTEM_BIOS( 0, "107268", "107268-17" )
85   ROM_SYSTEM_BIOS( 1, "106819", "106819-09" )
84   ROM_REGION( 0x800, I8035_Z2_TAG, 0 )
85   ROM_LOAD( "107268-17.z3", 0x000, 0x800, CRC(2f60cc35) SHA1(ebc6af9cd0a49a0d01698589370e628eebb6221c) )
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
9187   ROM_REGION( 0x800, I8035_Z5_TAG, 0 )
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) )
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) )
9493ROM_END
9594
9695
r241749r241750
109108//-------------------------------------------------
110109
111110static ADDRESS_MAP_START( abc99_z2_mem, AS_PROGRAM, 8, abc99_device )
112   AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION(I8035_Z2_TAG, 0)
111   AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION(I8035_Z2_TAG, 0)
113112ADDRESS_MAP_END
114113
115114
r241749r241750
489488//  abc99_device - constructor
490489//-------------------------------------------------
491490
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)
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)
510509{
511510}
512511
trunk/src/emu/bus/adam/ide.c
r241749r241750
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_devices, "printer")
68   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
6969
7070   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
7171MACHINE_CONFIG_END
trunk/src/emu/bus/adamnet/spi.c
r241749r241750
8585
8686   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
8787
88   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
88   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
129129OBJDIRS += $(BUSOBJ)/astrocde
130130BUSOBJS += $(BUSOBJ)/astrocde/slot.o
131131BUSOBJS += $(BUSOBJ)/astrocde/rom.o
132BUSOBJS += $(BUSOBJ)/astrocde/exp.o
133BUSOBJS += $(BUSOBJ)/astrocde/ram.o
134132endif
135133
136134
r241749r241750
333331BUSOBJS += $(BUSOBJ)/dmv/k220.o
334332BUSOBJS += $(BUSOBJ)/dmv/k230.o
335333BUSOBJS += $(BUSOBJ)/dmv/k233.o
336BUSOBJS += $(BUSOBJ)/dmv/k803.o
337334BUSOBJS += $(BUSOBJ)/dmv/k806.o
338335BUSOBJS += $(BUSOBJ)/dmv/ram.o
339336endif
r241749r241750
511508BUSOBJS += $(BUSOBJ)/isa/sc499.o
512509BUSOBJS += $(BUSOBJ)/isa/aga.o
513510BUSOBJS += $(BUSOBJ)/isa/svga_trident.o
514BUSOBJS += $(BUSOBJ)/isa/num9rev.o
515511endif
516512
517513#-------------------------------------------------
r241749r241750
991987
992988#-------------------------------------------------
993989#
994#@src/emu/bus/lpci/pci.h,BUSES += LPCI
990#@src/emu/bus/pci/pci.h,BUSES += PCI
995991#-------------------------------------------------
996992
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
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
10071003endif
10081004
10091005#-------------------------------------------------
r241749r241750
12961292BUSOBJS += $(BUSOBJ)/cpc/mface2.o
12971293BUSOBJS += $(BUSOBJ)/cpc/symbfac2.o
12981294BUSOBJS += $(BUSOBJ)/cpc/amdrum.o
1299BUSOBJS += $(BUSOBJ)/cpc/playcity.o
13001295endif
13011296
13021297#-------------------------------------------------
trunk/src/emu/bus/c64/geocable.c
r241749r241750
3333//-------------------------------------------------
3434
3535static MACHINE_CONFIG_FRAGMENT( c64_geocable )
36   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
36   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
3737   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(c64_geocable_device, output_b))
3838MACHINE_CONFIG_END
3939
trunk/src/emu/bus/cbmiec/c1541.c
r241749r241750
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_devices, "printer")
890   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
120120#include "epson_ex800.h"
121121#include "epson_lx800.h"
122122#include "printer.h"
123#include "covox.h"
124123
125SLOT_INTERFACE_START(centronics_devices)
124SLOT_INTERFACE_START(centronics_printers)
126125   SLOT_INTERFACE("pl80", COMX_PL80)
127126   SLOT_INTERFACE("ex800", EPSON_EX800)
128127   SLOT_INTERFACE("lx800", EPSON_LX800)
129128   SLOT_INTERFACE("lx810l", EPSON_LX810L)
130129   SLOT_INTERFACE("ap2000", EPSON_AP2000)
131130   SLOT_INTERFACE("printer", CENTRONICS_PRINTER)
132   SLOT_INTERFACE("covox", CENTRONICS_COVOX)
133   SLOT_INTERFACE("covox_stereo", CENTRONICS_COVOX_STEREO)
134131SLOT_INTERFACE_END
trunk/src/emu/bus/centronics/ctronics.h
r241749r241750
218218};
219219
220220
221SLOT_INTERFACE_EXTERN( centronics_devices );
221SLOT_INTERFACE_EXTERN( centronics_printers );
222222
223223#endif
trunk/src/emu/bus/comx35/printer.c
r241749r241750
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//-------------------------------------------------
5767//  MACHINE_CONFIG_FRAGMENT( comx_prn )
5868//-------------------------------------------------
5969
6070static MACHINE_CONFIG_FRAGMENT( comx_prn )
61   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
71   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, comx_centronics_printer, "printer")
6272   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit0))
6373   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit1))
6474   MCFG_CENTRONICS_PERROR_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit2))
trunk/src/emu/bus/cpc/cpcexp.h
r241749r241750
7878
7979   // reset
8080   virtual void cpc_reset_w() { };
81   virtual WRITE_LINE_MEMBER( cursor_w ) { };
8281
8382   void set_rom_bank(UINT8 sel) { m_rom_sel = sel; }  // tell device the currently selected ROM
8483   UINT8 get_rom_bank() { return m_rom_sel; }
r241749r241750
109108   DECLARE_WRITE_LINE_MEMBER( romdis_w );
110109
111110   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
113111
114112protected:
115113   // device-level overrides
trunk/src/emu/bus/cpc/playcity.c
r241749r241750
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
r241749r241750
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
r241749r241750
199199      device_slot_interface(mconfig, *this),
200200      m_prog_read_cb(*this),
201201      m_prog_write_cb(*this),
202      m_out_int_cb(*this),
203202      m_out_irq_cb(*this),
204203      m_out_thold_cb(*this)
205204{
r241749r241750
225224   // resolve callbacks
226225   m_prog_read_cb.resolve_safe(0);
227226   m_prog_write_cb.resolve_safe();
228   m_out_int_cb.resolve_safe();
229227   m_out_irq_cb.resolve_safe();
230228   m_out_thold_cb.resolve_safe();
231229}
trunk/src/emu/bus/dmv/dmvbus.h
r241749r241750
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); }
6261   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); }
6362   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); }
6463
r241749r241750
8786   // internal state
8887   devcb_read8                     m_prog_read_cb;
8988   devcb_write8                    m_prog_write_cb;
90   devcb_write_line                m_out_int_cb;
9189   devcb_write_line                m_out_irq_cb;
9290   devcb_write_line                m_out_thold_cb;
9391   device_dmvslot_interface*       m_cart;
r241749r241750
106104   devcb = &dmvcart_slot_device::set_prog_read_callback(*device, DEVCB_##_read_devcb); \
107105   devcb = &dmvcart_slot_device::set_prog_write_callback(*device, DEVCB_##_write_devcb);
108106
109#define MCFG_DMVCART_SLOT_OUT_INT_CB(_devcb) \
110   devcb = &dmvcart_slot_device::set_out_int_callback(*device, DEVCB_##_devcb);
111
112107#define MCFG_DMVCART_SLOT_OUT_IRQ_CB(_devcb) \
113108   devcb = &dmvcart_slot_device::set_out_irq_callback(*device, DEVCB_##_devcb);
114109
trunk/src/emu/bus/dmv/k803.c
r241749r241750
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
r241749r241750
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
r241749r241750
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_READ(port1_r)
24   AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(port2_w)
23   AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(port1_r, port1_w)
2524   AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(portt1_r)
2625ADDRESS_MAP_END
2726
r241749r241750
7675
7776void dmv_k806_device::device_start()
7877{
79   m_bus = static_cast<dmvcart_slot_device*>(owner());
8078}
8179
8280//-------------------------------------------------
r241749r241750
131129
132130READ8_MEMBER( dmv_k806_device::port1_r )
133131{
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
143132   // TODO
144133   return 0xff;
145134}
r241749r241750
149138   return BIT(m_jumpers->read(), 7) ? 0 : 1;
150139}
151140
152WRITE8_MEMBER( dmv_k806_device::port2_w )
141WRITE8_MEMBER( dmv_k806_device::port1_w )
153142{
154   m_bus->m_out_int_cb((data & 1) ? CLEAR_LINE : ASSERT_LINE);
143   // TODO
155144};
trunk/src/emu/bus/dmv/k806.h
r241749r241750
3131
3232   DECLARE_READ8_MEMBER(portt1_r);
3333   DECLARE_READ8_MEMBER(port1_r);
34   DECLARE_WRITE8_MEMBER(port2_w);
34   DECLARE_WRITE8_MEMBER(port1_w);
3535
3636protected:
3737   // device-level overrides
r241749r241750
4444private:
4545   required_device<upi41_cpu_device> m_mcu;
4646   required_ioport m_jumpers;
47   dmvcart_slot_device * m_bus;
4847};
4948
5049
trunk/src/emu/bus/ecbbus/grip.c
r241749r241750
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_devices, "printer")
503   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
504504   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(grip_device, write_centronics_busy))
505505   MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(grip_device, write_centronics_fault))
506506
r241749r241750
681681{
682682   m_base = m_j7->read();
683683   m_page = 0;
684   m_lps = 0;
685684}
686685
687686
trunk/src/emu/bus/econet/e01.c
r241749r241750
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_devices, "printer")
262   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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/gameboy/gb_slot.c
r241749r241750
557557
558558   /* Check if we're dealing with the multigame variant of the MBC1 mapper */
559559   if (type == GB_MBC_MBC1)
560   {
561      if (ROM[0x13f] == 0x42 && ROM[0x140] == 0x32 && ROM[0x141] == 0x43 && ROM[0x142] == 0x4B)
560   {   // bomberman collection korean
561      if (ROM[0x134] == 0x42 && ROM[0x135] == 0x4f && ROM[0x136] == 0x4d && ROM[0x137] == 0x53)
562562         type = GB_MBC_MBC1_COL;
563//      if (ROM[0x13f] == 0x42 && ROM[0x140] == 0x32 && ROM[0x141] == 0x43 && ROM[0x142] == 0x4B)
564//         type = GB_MBC_MBC1_COL;
565      // genjin collection
566      if (ROM[0x134] == 0x47 && ROM[0x135] == 0x45 && ROM[0x136] == 0x4e && ROM[0x137] == 0x43)
567         type = GB_MBC_MBC1_COL;
568      // bomberman collection japan
569      if (ROM[0x134] == 0x42 && ROM[0x135] == 0x4f && ROM[0x136] == 0x4d && ROM[0x137] == 0x43)
570         type = GB_MBC_MBC1_COL;
571      // mortal kombat I & II US
572      if (ROM[0x140] == 0x49 && ROM[0x141] == 0x26 && ROM[0x142] == 0x49 && ROM[0x143] == 0x49)
573         type = GB_MBC_MBC1_COL;
574      // mortal kombat I & II japan
575      if (ROM[0x140] == 0x20 && ROM[0x141] == 0x44 && ROM[0x142] == 0x55 && ROM[0x143] == 0x4f)
576         type = GB_MBC_MBC1_COL;
577      // momotarou collection 1 japan
578      if (ROM[0x137] == 0x4f && ROM[0x138] == 0x43 && ROM[0x139] == 0x4f && ROM[0x13a] == 0x4c)
579         type = GB_MBC_MBC1_COL;
580      // super chinese 123 dash japan
581      if (ROM[0x142] == 0x32 && ROM[0x143] == 0x33 && ROM[0x144] == 0x42 && ROM[0x145] == 0x41)
582         type = GB_MBC_MBC1_COL;
563583   }
564584
565585   return type;
trunk/src/emu/bus/isa/isa_cards.c
r241749r241750
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)
2322   SLOT_INTERFACE("com", ISA8_COM)
2423   SLOT_INTERFACE("fdc", ISA8_FDC_SUPERIO)
2524   SLOT_INTERFACE("fdc_xt", ISA8_FDC_XT)
r241749r241750
5857   SLOT_INTERFACE("vga", ISA8_VGA)
5958   SLOT_INTERFACE("svga_et4k", ISA8_SVGA_ET4K)
6059   SLOT_INTERFACE("svga_dm",ISA8_SVGA_CIRRUS)
61   SLOT_INTERFACE("num9rev",ISA8_NUM_9_REV)
6260   SLOT_INTERFACE("com", ISA8_COM)
6361   SLOT_INTERFACE("comat", ISA8_COM_AT)
6462   SLOT_INTERFACE("fdc", ISA8_FDC_AT)
trunk/src/emu/bus/isa/isa_cards.h
r241749r241750
2525#include "svga_s3.h"
2626#include "svga_tseng.h"
2727#include "svga_trident.h"
28#include "num9rev.h"
2928
3029// storage
3130#include "fdc.h"
trunk/src/emu/bus/isa/lpt.c
r241749r241750
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"
1012
1113const device_type ISA8_LPT = &device_creator<isa8_lpt_device>;
1214
trunk/src/emu/bus/isa/num9rev.c
r241749r241750
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
r241749r241750
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
r241749r241750
4545
4646void s3virge_vga_device::device_start()
4747{
48   zero();
48   memset(&vga, 0, sizeof(vga));
49   memset(&svga, 0, sizeof(svga));
4950
5051   int x;
5152   int i;
trunk/src/emu/bus/isa/trident.c
r241749r241750
155155
156156void trident_vga_device::device_start()
157157{
158   zero();
158   memset(&vga, 0, sizeof(vga));
159   memset(&svga, 0, sizeof(svga));
159160
160161   int i;
161162   for (i = 0; i < 0x100; i++)
trunk/src/emu/bus/nes/ave.c
r241749r241750
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);
8283}
8384
8485
r241749r241750
163164   if (!(offset & 0x0100))
164165   {
165166      prg32(data >> 3);
166      chr8(data & 7, CHRROM);
167      chr8(data, CHRROM);
167168   }
168169}
169170
trunk/src/emu/bus/nes/nes_ines.inc
r241749r241750
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");
697696      if (battery_size)
698697         logerror("-- Battery found\n");
699698      if (m_cart->get_trainer())
trunk/src/emu/bus/pci/cirrus.c
r0r241750
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/pci/cirrus.h
r0r241750
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/pci/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/pci/i82371ab.c
r0r241750
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/pci/i82371ab.h
r0r241750
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/pci/i82371sb.c
r0r241750
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/pci/i82371sb.h
r0r241750
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/pci/i82439tx.c
r0r241750
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/pci/i82439tx.h
r0r241750
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/pci/mpc105.c
r0r241750
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/pci/mpc105.h
r0r241750
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/pci/northbridge.c
r0r241750
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/pci/northbridge.h
r0r241750
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/pci/pci.c
r0r241750
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/pci/pci.h
r0r241750
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/pci/southbridge.c
r0r241750
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 = 0;
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/pci/southbridge.h
r0r241750
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/ql/sandy_superdisk.c
r241749r241750
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_devices, "printer")
91   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
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_devices, "printer")
112   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
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;
10399}
104100
105101void sns_sa1_device::device_reset()
106102{
107   memset(m_internal_ram, 0, sizeof(m_internal_ram));
103   memset(m_internal_ram, 0, 0x800);
108104
109105   m_sa1_ctrl = 0x20;
110106   m_scpu_ctrl = 0;
r241749r241750
131127   m_iram_write_sa1 = 1;
132128   m_src_addr = 0;
133129   m_dst_addr = 0;
134   memset(m_brf_reg, 0, sizeof(m_brf_reg));
130   memset(m_brf_reg, 0, 0x10);
135131   m_math_ctlr = 0;
136132   m_math_overflow = 0;
137133   m_math_a = 0;
trunk/src/emu/bus/vtech/ioexp/printer.c
r241749r241750
2525//-------------------------------------------------
2626
2727static MACHINE_CONFIG_FRAGMENT( printer_interface )
28   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
28   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
160160{
161161   // initialize the description
162162   opcode_desc *desc = m_desc_allocator.alloc();
163   desc->m_next = NULL;
164   desc->branch = NULL;
163   // TODO: this kills the opcode_desc.delay vptr
164   memset(desc, 0, sizeof(*desc));
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));
177168
178169   // call the callback to describe an instruction
179170   if (!describe(*desc, prevdesc))
trunk/src/emu/cpu/drcuml.c
r241749r241750
274274      va_start(va, format);
275275      vfprintf(m_umllog, format, va);
276276      va_end(va);
277      fflush(m_umllog);
278277   }
279278}
280279
trunk/src/emu/cpu/i386/i386.c
r241749r241750
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
138128   if ( seg->selector & 0x4 )
139129   {
140130      base = m_ldtr.base;
r241749r241750
157147   if (seg->flags & 0x8000)
158148      seg->limit = (seg->limit << 12) | 0xfff;
159149   seg->d = (seg->flags & 0x4000) ? 1 : 0;
160   seg->valid = true;
150   seg->valid = (seg->selector & ~3)?(true):(false);
161151
162152   if(desc)
163153      *desc = ((UINT64)v2<<32)|v1;
r241749r241750
222212      if (!V8086_MODE)
223213      {
224214         i386_load_protected_mode_segment(&m_sreg[segment], NULL );
225         if(m_sreg[segment].selector)
226            i386_set_descriptor_accessed(m_sreg[segment].selector);
215         i386_set_descriptor_accessed(m_sreg[segment].selector);
227216      }
228217      else
229218      {
r241749r241750
763752            logerror("IRQ (%08x): Software IRQ - gate DPL is less than CPL.\n",m_pc);
764753            FAULT_EXP(FAULT_GP,entry+2)
765754         }
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         }
775755      }
776756
777757      if((flags & 0x0080) == 0)
r241749r241750
16861666      }
16871667      if (operand32 != 0)  // if 32-bit
16881668      {
1689         if(i386_limit_check(SS, REG32(ESP) - 8))
1669         if(REG32(ESP) < 8)
16901670         {
1691            logerror("CALL (%08x): Stack has no room for return address.\n",m_pc);
1671            logerror("CALL: Stack has no room for return address.\n");
16921672            FAULT(FAULT_SS,0)  // #SS(0)
16931673         }
16941674      }
16951675      else
16961676      {
1697         if(i386_limit_check(SS, (REG16(SP) - 4) & 0xffff))
1677         if(REG16(SP) < 4)
16981678         {
1699            logerror("CALL (%08x): Stack has no room for return address.\n",m_pc);
1679            logerror("CALL: Stack has no room for return address.\n");
17001680            FAULT(FAULT_SS,0)  // #SS(0)
17011681         }
17021682      }
r241749r241750
17361716               logerror("CALL: TSS: TSS is busy.\n");
17371717               FAULT(FAULT_TS,selector & ~0x03) // #TS(selector)
17381718            }
1739            if((desc.flags & 0x0080) == 0)
1719            if(desc.flags & 0x0080)
17401720            {
1741               logerror("CALL: TSS: Segment %02x is not present.\n",selector);
1721               logerror("CALL: TSS: Segment is not present.\n");
17421722               FAULT(FAULT_NP,selector & ~0x03) // #NP(selector)
17431723            }
17441724            if(desc.flags & 0x08)
r241749r241750
19441924               /* same privilege */
19451925               if (operand32 != 0)  // if 32-bit
19461926               {
1947                  if(i386_limit_check(SS, REG32(ESP) - 8))
1927                  if(REG32(ESP) < 8)
19481928                  {
19491929                     logerror("CALL: Stack has no room for return address.\n");
19501930                     FAULT(FAULT_SS,0) // #SS(0)
r241749r241750
19541934               }
19551935               else
19561936               {
1957                  if(i386_limit_check(SS, (REG16(SP) - 4) & 0xffff))
1937                  if(REG16(SP) < 4)
19581938                  {
19591939                     logerror("CALL: Stack has no room for return address.\n");
19601940                     FAULT(FAULT_SS,0) // #SS(0)
r241749r241750
19861966               logerror("CALL: Task Gate: Gate DPL is less than RPL.\n");
19871967               FAULT(FAULT_TS,selector & ~0x03) // #TS(selector)
19881968            }
1989            if((gate.ar & 0x0080) == 0)
1969            if(gate.ar & 0x0080)
19901970            {
19911971               logerror("CALL: Task Gate: Gate is not present.\n");
19921972               FAULT(FAULT_NP,selector & ~0x03) // #NP(selector)
r241749r241750
20121992               logerror("CALL: Task Gate: TSS is busy.\n");
20131993               FAULT(FAULT_TS,gate.selector & ~0x03) // #TS(selector)
20141994            }
2015            if((desc.flags & 0x0080) == 0)
1995            if(desc.flags & 0x0080)
20161996            {
20171997               logerror("CALL: Task Gate: TSS is not present.\n");
20181998               FAULT(FAULT_NP,gate.selector & ~0x03) // #TS(selector)
r241749r241750
31443124   m_vtlb = vtlb_alloc(this, AS_PROGRAM, 0, tlbsize);
31453125   m_smi = false;
31463126   m_debugger_temp = 0;
3147   m_lock = false;
31483127
31493128   zero_state();
31503129
r241749r241750
31533132   save_item(NAME(m_sreg[ES].base));
31543133   save_item(NAME(m_sreg[ES].limit));
31553134   save_item(NAME(m_sreg[ES].flags));
3156   save_item(NAME(m_sreg[ES].d));
31573135   save_item(NAME(m_sreg[CS].selector));
31583136   save_item(NAME(m_sreg[CS].base));
31593137   save_item(NAME(m_sreg[CS].limit));
31603138   save_item(NAME(m_sreg[CS].flags));
3161   save_item(NAME(m_sreg[CS].d));
31623139   save_item(NAME(m_sreg[SS].selector));
31633140   save_item(NAME(m_sreg[SS].base));
31643141   save_item(NAME(m_sreg[SS].limit));
31653142   save_item(NAME(m_sreg[SS].flags));
3166   save_item(NAME(m_sreg[SS].d));
31673143   save_item(NAME(m_sreg[DS].selector));
31683144   save_item(NAME(m_sreg[DS].base));
31693145   save_item(NAME(m_sreg[DS].limit));
31703146   save_item(NAME(m_sreg[DS].flags));
3171   save_item(NAME(m_sreg[DS].d));
31723147   save_item(NAME(m_sreg[FS].selector));
31733148   save_item(NAME(m_sreg[FS].base));
31743149   save_item(NAME(m_sreg[FS].limit));
31753150   save_item(NAME(m_sreg[FS].flags));
3176   save_item(NAME(m_sreg[FS].d));
31773151   save_item(NAME(m_sreg[GS].selector));
31783152   save_item(NAME(m_sreg[GS].base));
31793153   save_item(NAME(m_sreg[GS].limit));
31803154   save_item(NAME(m_sreg[GS].flags));
3181   save_item(NAME(m_sreg[GS].d));
31823155   save_item(NAME(m_eip));
31833156   save_item(NAME(m_prev_eip));
31843157   save_item(NAME(m_CF));
r241749r241750
35723545   m_smi_latched = false;
35733546   m_nmi_masked = false;
35743547   m_nmi_latched = false;
3548   m_lock = false;
35753549
35763550   m_a20_mask = ~0;
35773551
trunk/src/emu/cpu/i386/i386op16.inc
r241749r241750
17461746
17471747void i386_device::i386_push_ax()           // Opcode 0x50
17481748{
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)
1749   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1750   if(i386_limit_check(SS,offset-2) == 0)
17551751      PUSH16(REG16(AX) );
17561752   else
17571753      FAULT(FAULT_SS,0)
r241749r241750
17601756
17611757void i386_device::i386_push_cx()           // Opcode 0x51
17621758{
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)
1759   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1760   if(i386_limit_check(SS,offset-2) == 0)
17691761      PUSH16(REG16(CX) );
17701762   else
17711763      FAULT(FAULT_SS,0)
r241749r241750
17741766
17751767void i386_device::i386_push_dx()           // Opcode 0x52
17761768{
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)
1769   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1770   if(i386_limit_check(SS,offset-2) == 0)
17831771      PUSH16(REG16(DX) );
17841772   else
17851773      FAULT(FAULT_SS,0)
r241749r241750
17881776
17891777void i386_device::i386_push_bx()           // Opcode 0x53
17901778{
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)
1779   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1780   if(i386_limit_check(SS,offset-2) == 0)
17971781      PUSH16(REG16(BX) );
17981782   else
17991783      FAULT(FAULT_SS,0)
r241749r241750
18021786
18031787void i386_device::i386_push_sp()           // Opcode 0x54
18041788{
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)
1789   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1790   if(i386_limit_check(SS,offset-2) == 0)
18111791      PUSH16(REG16(SP) );
18121792   else
18131793      FAULT(FAULT_SS,0)
r241749r241750
18161796
18171797void i386_device::i386_push_bp()           // Opcode 0x55
18181798{
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)
1799   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1800   if(i386_limit_check(SS,offset-2) == 0)
18251801      PUSH16(REG16(BP) );
18261802   else
18271803      FAULT(FAULT_SS,0)
r241749r241750
18301806
18311807void i386_device::i386_push_si()           // Opcode 0x56
18321808{
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)
1809   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1810   if(i386_limit_check(SS,offset-2) == 0)
18391811      PUSH16(REG16(SI) );
18401812   else
18411813      FAULT(FAULT_SS,0)
r241749r241750
18441816
18451817void i386_device::i386_push_di()           // Opcode 0x57
18461818{
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)
1819   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1820   if(i386_limit_check(SS,offset-2) == 0)
18531821      PUSH16(REG16(DI) );
18541822   else
18551823      FAULT(FAULT_SS,0)
r241749r241750
18581826
18591827void i386_device::i386_push_cs16()         // Opcode 0x0e
18601828{
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)
1829   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1830   if(i386_limit_check(SS,offset-2) == 0)
18671831      PUSH16(m_sreg[CS].selector );
18681832   else
18691833      FAULT(FAULT_SS,0)
r241749r241750
18721836
18731837void i386_device::i386_push_ds16()         // Opcode 0x1e
18741838{
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)
1839   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1840   if(i386_limit_check(SS,offset-2) == 0)
18811841      PUSH16(m_sreg[DS].selector );
18821842   else
18831843      FAULT(FAULT_SS,0)
r241749r241750
18861846
18871847void i386_device::i386_push_es16()         // Opcode 0x06
18881848{
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)
1849   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1850   if(i386_limit_check(SS,offset-2) == 0)
18951851      PUSH16(m_sreg[ES].selector );
18961852   else
18971853      FAULT(FAULT_SS,0)
r241749r241750
19001856
19011857void i386_device::i386_push_fs16()         // Opcode 0x0f a0
19021858{
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)
1859   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1860   if(i386_limit_check(SS,offset-2) == 0)
19091861      PUSH16(m_sreg[FS].selector );
19101862   else
19111863      FAULT(FAULT_SS,0)
r241749r241750
19141866
19151867void i386_device::i386_push_gs16()         // Opcode 0x0f a8
19161868{
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)
1869   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1870   if(i386_limit_check(SS,offset-2) == 0)
19231871      PUSH16(m_sreg[GS].selector );
19241872   else
19251873      FAULT(FAULT_SS,0)
r241749r241750
19281876
19291877void i386_device::i386_push_ss16()         // Opcode 0x16
19301878{
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)
1879   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1880   if(i386_limit_check(SS,offset-2) == 0)
19371881      PUSH16(m_sreg[SS].selector );
19381882   else
19391883      FAULT(FAULT_SS,0)
r241749r241750
19431887void i386_device::i386_push_i16()          // Opcode 0x68
19441888{
19451889   UINT16 value = FETCH16();
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)
1890   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1891   if(i386_limit_check(SS,offset-2) == 0)
19521892      PUSH16(value);
19531893   else
19541894      FAULT(FAULT_SS,0)
r241749r241750
19581898void i386_device::i386_pusha()             // Opcode 0x60
19591899{
19601900   UINT16 temp = REG16(SP);
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)
1901   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1902   if(i386_limit_check(SS,offset-16) == 0)
19671903   {
19681904      PUSH16(REG16(AX) );
19691905      PUSH16(REG16(CX) );
r241749r241750
19811917
19821918void i386_device::i386_pushf()             // Opcode 0x9c
19831919{
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)
1920   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1921   if(i386_limit_check(SS,offset-2) == 0)
19901922      PUSH16(get_flags() & 0xffff );
19911923   else
19921924      FAULT(FAULT_SS,0)
r241749r241750
32013133            memset(&seg, 0, sizeof(seg));
32023134            seg.selector = m_task.segment;
32033135            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
32093136            m_task.limit = seg.limit;
32103137            m_task.base = seg.base;
3211            m_task.flags = seg.flags | 2;
3138            m_task.flags = seg.flags;
32123139         }
32133140         else
32143141         {
trunk/src/emu/cpu/i386/i386op32.inc
r241749r241750
15991599
16001600void i386_device::i386_push_eax()          // Opcode 0x50
16011601{
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)
1602   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1603   if(i386_limit_check(SS,offset-4) == 0)
16081604      PUSH32(REG32(EAX) );
16091605   else
16101606      FAULT(FAULT_SS,0)
r241749r241750
16131609
16141610void i386_device::i386_push_ecx()          // Opcode 0x51
16151611{
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)
1612   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1613   if(i386_limit_check(SS,offset-4) == 0)
16221614      PUSH32(REG32(ECX) );
16231615   else
16241616      FAULT(FAULT_SS,0)
r241749r241750
16271619
16281620void i386_device::i386_push_edx()          // Opcode 0x52
16291621{
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)
1622   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1623   if(i386_limit_check(SS,offset-4) == 0)
16361624      PUSH32(REG32(EDX) );
16371625   else
16381626      FAULT(FAULT_SS,0)
r241749r241750
16411629
16421630void i386_device::i386_push_ebx()          // Opcode 0x53
16431631{
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)
1632   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1633   if(i386_limit_check(SS,offset-4) == 0)
16501634      PUSH32(REG32(EBX) );
16511635   else
16521636      FAULT(FAULT_SS,0)
r241749r241750
16551639
16561640void i386_device::i386_push_esp()          // Opcode 0x54
16571641{
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)
1642   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1643   if(i386_limit_check(SS,offset-4) == 0)
16641644      PUSH32(REG32(ESP) );
16651645   else
16661646      FAULT(FAULT_SS,0)
r241749r241750
16691649
16701650void i386_device::i386_push_ebp()          // Opcode 0x55
16711651{
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)
1652   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1653   if(i386_limit_check(SS,offset-4) == 0)
16781654      PUSH32(REG32(EBP) );
16791655   else
16801656      FAULT(FAULT_SS,0)
r241749r241750
16831659
16841660void i386_device::i386_push_esi()          // Opcode 0x56
16851661{
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)
1662   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1663   if(i386_limit_check(SS,offset-4) == 0)
16921664      PUSH32(REG32(ESI) );
16931665   else
16941666      FAULT(FAULT_SS,0)
r241749r241750
16971669
16981670void i386_device::i386_push_edi()          // Opcode 0x57
16991671{
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)
1672   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1673   if(i386_limit_check(SS,offset-4) == 0)
17061674      PUSH32(REG32(EDI) );
17071675   else
17081676      FAULT(FAULT_SS,0)
r241749r241750
17111679
17121680void i386_device::i386_push_cs32()         // Opcode 0x0e
17131681{
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)
1682   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1683   if(i386_limit_check(SS,offset-4) == 0)
17201684      PUSH32(m_sreg[CS].selector );
17211685   else
17221686      FAULT(FAULT_SS,0)
r241749r241750
17251689
17261690void i386_device::i386_push_ds32()         // Opcode 0x1e
17271691{
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)
1692   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1693   if(i386_limit_check(SS,offset-4) == 0)
17341694      PUSH32(m_sreg[DS].selector );
17351695   else
17361696      FAULT(FAULT_SS,0)
r241749r241750
17391699
17401700void i386_device::i386_push_es32()         // Opcode 0x06
17411701{
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)
1702   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1703   if(i386_limit_check(SS,offset-4) == 0)
17481704      PUSH32(m_sreg[ES].selector );
17491705   else
17501706      FAULT(FAULT_SS,0)
r241749r241750
17531709
17541710void i386_device::i386_push_fs32()         // Opcode 0x0f a0
17551711{
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)
1712   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1713   if(i386_limit_check(SS,offset-4) == 0)
17621714      PUSH32(m_sreg[FS].selector );
17631715   else
17641716      FAULT(FAULT_SS,0)
r241749r241750
17671719
17681720void i386_device::i386_push_gs32()         // Opcode 0x0f a8
17691721{
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)
1722   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1723   if(i386_limit_check(SS,offset-4) == 0)
17761724      PUSH32(m_sreg[GS].selector );
17771725   else
17781726      FAULT(FAULT_SS,0)
r241749r241750
17811729
17821730void i386_device::i386_push_ss32()         // Opcode 0x16
17831731{
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)
1732   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1733   if(i386_limit_check(SS,offset-4) == 0)
17901734      PUSH32(m_sreg[SS].selector );
17911735   else
17921736      FAULT(FAULT_SS,0)
r241749r241750
17961740void i386_device::i386_push_i32()          // Opcode 0x68
17971741{
17981742   UINT32 value = FETCH32();
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)
1743   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1744   if(i386_limit_check(SS,offset-4) == 0)
18051745      PUSH32(value);
18061746   else
18071747      FAULT(FAULT_SS,0)
r241749r241750
18111751void i386_device::i386_pushad()            // Opcode 0x60
18121752{
18131753   UINT32 temp = REG32(ESP);
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)
1754   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1755   if(i386_limit_check(SS,offset-32) == 0)
18201756   {
18211757      PUSH32(REG32(EAX) );
18221758      PUSH32(REG32(ECX) );
r241749r241750
18361772{
18371773   if(!m_IOP1 && !m_IOP2 && V8086_MODE)
18381774      FAULT(FAULT_GP,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)
1775   UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
1776   if(i386_limit_check(SS,offset-4) == 0)
18451777      PUSH32(get_flags() & 0x00fcffff );
18461778   else
18471779      FAULT(FAULT_SS,0)
r241749r241750
30072939            memset(&seg, 0, sizeof(seg));
30082940            seg.selector = m_task.segment;
30092941            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
30152942            m_task.limit = seg.limit;
30162943            m_task.base = seg.base;
3017            m_task.flags = seg.flags | 2;
2944            m_task.flags = seg.flags;
30182945         }
30192946         else
30202947         {
trunk/src/emu/cpu/mips/mips3drc.c
r241749r241750
13871387
13881388      case 0x0f:  /* LUI - MIPS I */
13891389         if (RTREG != 0)
1390            UML_DMOV(block, R64(RTREG), UIMMVAL << 16);                 // dmov    <rtreg>,UIMMVAL << 16
1390            UML_DMOV(block, R64(RTREG), SIMMVAL << 16);                 // dmov    <rtreg>,SIMMVAL << 16
13911391         return TRUE;
13921392
13931393      case 0x08:  /* ADDI - MIPS I */
r241749r241750
27642764
27652765            case 0x07:
27662766               if (IS_SINGLE(op))  /* NEG.S - MIPS I */
2767               {
27682767                  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               }
27722768               else                /* NEG.D - MIPS I */
2773               {
27742769                  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               }
27782770               return TRUE;
27792771
27802772            case 0x08:
r241749r241750
27822774                  UML_FSTOINT(block, FPR64(FDREG), FPR32(FSREG), SIZE_QWORD, ROUND_ROUND);// fstoint <fdreg>,<fsreg>,qword,round
27832775               else                /* ROUND.L.D - MIPS III */
27842776                  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);
27862777               return TRUE;
27872778
27882779            case 0x09:
r241749r241750
27902781                  UML_FSTOINT(block, FPR64(FDREG), FPR32(FSREG), SIZE_QWORD, ROUND_TRUNC);// fstoint <fdreg>,<fsreg>,qword,trunc
27912782               else                /* TRUNC.L.D - MIPS III */
27922783                  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);
27942784               return TRUE;
27952785
27962786            case 0x0a:
r241749r241750
27982788                  UML_FSTOINT(block, FPR64(FDREG), FPR32(FSREG), SIZE_QWORD, ROUND_CEIL);// fstoint <fdreg>,<fsreg>,qword,ceil
27992789               else                /* CEIL.L.D - MIPS III */
28002790                  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);
28022791               return TRUE;
28032792
28042793            case 0x0b:
r241749r241750
28062795                  UML_FSTOINT(block, FPR64(FDREG), FPR32(FSREG), SIZE_QWORD, ROUND_FLOOR);// fstoint <fdreg>,<fsreg>,qword,floor
28072796               else                /* FLOOR.L.D - MIPS III */
28082797                  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);
28102798               return TRUE;
28112799
28122800            case 0x0c:
trunk/src/emu/cpu/mips/mips3fe.c
r241749r241750
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 * 4;
109         desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
110110         desc.delayslots = 1;
111111         desc.skipslots = (opswitch & 0x10) ? 1 : 0;
112112         return true;
r241749r241750
122122            desc.regin[0] |= REGFLAG_R(RSREG);
123123            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
124124         }
125         desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
125         desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
126126         desc.delayslots = 1;
127127         desc.skipslots = (opswitch & 0x10) ? 1 : 0;
128128         return true;
r241749r241750
396396            desc.regin[0] |= REGFLAG_R(RSREG);
397397            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
398398         }
399         desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
399         desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
400400         desc.delayslots = 1;
401401         desc.skipslots = (RTREG & 0x02) ? 1 : 0;
402402         return true;
r241749r241750
423423            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
424424         }
425425         desc.regout[0] |= REGFLAG_R(31);
426         desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
426         desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
427427         desc.delayslots = 1;
428428         desc.skipslots = (RTREG & 0x02) ? 1 : 0;
429429         return true;
r241749r241750
508508            case 0x00:  // BCzF
509509            case 0x01:  // BCzT
510510               desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
511               desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
511               desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
512512               desc.delayslots = 1;
513513               return true;
514514         }
r241749r241750
580580            case 0x03:  // BCzTL
581581               desc.regin[2] |= REGFLAG_FCC;
582582               desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
583               desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
583               desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
584584               desc.delayslots = 1;
585585               desc.skipslots = (RTREG & 0x02) ? 1 : 0;
586586               return true;
r241749r241750
730730            case 0x00:  // BCzF
731731            case 0x01:  // BCzT
732732               desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
733               desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
733               desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
734734               desc.delayslots = 1;
735735               return true;
736736         }
trunk/src/emu/cpu/rsp/rsp.h
r241749r241750
299299   void ccfunc_rsp_vabs_scalar();
300300   void ccfunc_rsp_vaddc_scalar();
301301   void ccfunc_rsp_vsubc_scalar();
302   void ccfunc_rsp_vaddb_scalar();
303302   void ccfunc_rsp_vsaw_scalar();
304303   void ccfunc_rsp_vlt_scalar();
305304   void ccfunc_rsp_veq_scalar();
r241749r241750
326325   void ccfunc_mtc2_scalar();
327326   void ccfunc_ctc2_scalar();
328327#endif
329   void ccfunc_rsp_vrsq_scalar();
330328#if USE_SIMD && SIMUL_SIMD
331329   void ccfunc_backup_regs();
332330   void ccfunc_restore_regs();
r241749r241750
543541   void generate_checksum_block(drcuml_block *block, compiler_state *compiler, const opcode_desc *seqhead, const opcode_desc *seqlast);
544542   void generate_sequence_instruction(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
545543   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);
547544   int generate_vector_opcode(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
548545   int generate_opcode(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
549546   int generate_special(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
trunk/src/emu/cpu/rsp/rspdrc.c
r241749r241750
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)
r241749r241750
47544754{
47554755   int op = m_rsp_state->arg0;
47564756
4757
47574758   CLEAR_ZERO_FLAGS();
47584759   CLEAR_CARRY_FLAGS();
47594760
r241749r241750
47884789}
47894790#endif
47904791
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
48524792#if USE_SIMD
48534793// VSAW
48544794//
r241749r241750
63786318
63796319   UINT16 urec;
63806320   SIMD_EXTRACT16(m_xv[VS2REG], urec, EL);
6381   INT32 rec = (INT16)urec;
6321   INT32 rec = (urec | m_reciprocal_high);
6322
63826323   INT32 datainput = rec;
63836324
6384   if (m_dp_allowed)
6325   if (rec < 0)
63856326   {
6386      rec = (rec & 0x0000ffff) | m_reciprocal_high;
6387      datainput = rec;
6388
6389      if (rec < 0)
6327      if (m_dp_allowed)
63906328      {
63916329         if (rec < -32768)
63926330         {
r241749r241750
63976335            datainput = -datainput;
63986336         }
63996337      }
6338      else
6339      {
6340         datainput = -datainput;
6341      }
64006342   }
6401   else if (datainput < 0)
6402   {
6403      datainput = -datainput;
64046343
6405      shifter = 0x10;
6406   }
64076344
64086345   if (datainput)
64096346   {
r241749r241750
64166353         }
64176354      }
64186355   }
6356   else
6357   {
6358      if (m_dp_allowed)
6359      {
6360         shifter = 0;
6361      }
6362      else
6363      {
6364         shifter = 0x10;
6365      }
6366   }
64196367
64206368   INT32 address = ((datainput << shifter) & 0x7fc00000) >> 22;
64216369   INT32 fetchval = rsp_divtable[address];
64226370   INT32 temp = (0x40000000 | (fetchval << 14)) >> ((~shifter) & 0x1f);
6423   temp ^= rec >> 31;
6424
6371   if (rec < 0)
6372   {
6373      temp = ~temp;
6374   }
64256375   if (!rec)
64266376   {
64276377      temp = 0x7fffffff;
r241749r241750
64586408   int op = m_rsp_state->arg0;
64596409
64606410   INT32 shifter = 0;
6461   INT32 rec = (INT16)VREG_S(VS2REG, EL & 7);
6411   INT32 rec = ((UINT16)(VREG_S(VS2REG, EL & 7)) | m_reciprocal_high);
64626412   INT32 datainput = rec;
64636413
6464   if (m_dp_allowed)
6414   if (rec < 0)
64656415   {
6466      rec = (rec & 0x0000ffff) | m_reciprocal_high;
6467      datainput = rec;
6468
6469      if (rec < 0)
6416      if (m_dp_allowed)
64706417      {
64716418         if (rec < -32768)
64726419         {
r241749r241750
64776424            datainput = -datainput;
64786425         }
64796426      }
6427      else
6428      {
6429         datainput = -datainput;
6430      }
64806431   }
6481   else if (datainput < 0)
6482   {
6483      datainput = -datainput;
64846432
6485      shifter = 0x10;
6486   }
64876433
64886434   if (datainput)
64896435   {
r241749r241750
64966442         }
64976443      }
64986444   }
6445   else
6446   {
6447      if (m_dp_allowed)
6448      {
6449         shifter = 0;
6450      }
6451      else
6452      {
6453         shifter = 0x10;
6454      }
6455   }
64996456
6500   UINT32 address = (datainput << shifter) >> 22;
6501   INT32 fetchval = rsp_divtable[address & 0x1ff];
6457   INT32 address = ((datainput << shifter) & 0x7fc00000) >> 22;
6458   INT32 fetchval = rsp_divtable[address];
65026459   INT32 temp = (0x40000000 | (fetchval << 14)) >> ((~shifter) & 0x1f);
6503   temp ^= rec >> 31;
6460   if (rec < 0)
6461   {
6462      temp = ~temp;
6463   }
65046464   if (!rec)
65056465   {
65066466      temp = 0x7fffffff;
r241749r241750
66326592}
66336593#endif
66346594
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
67656595#if USE_SIMD
67666596// VRSQL
67676597//
r241749r241750
67856615   INT32 shifter = 0;
67866616   UINT16 val;
67876617   SIMD_EXTRACT16(m_xv[VS2REG], val, EL);
6788   INT32 rec = (INT16)val;
6618   INT32 rec = m_reciprocal_high | val;
67896619   INT32 datainput = rec;
67906620
6791   if (m_dp_allowed)
6621   if (rec < 0)
67926622   {
6793      rec = (rec & 0x0000ffff) | m_reciprocal_high;
6794      datainput = rec;
6795
6796      if (rec < 0)
6623      if (m_dp_allowed)
67976624      {
67986625         if (rec < -32768)
67996626         {
r241749r241750
68046631            datainput = -datainput;
68056632         }
68066633      }
6634      else
6635      {
6636         datainput = -datainput;
6637      }
68076638   }
6808   else if (datainput < 0)
6809   {
6810      datainput = -datainput;
68116639
6812      shifter = 0x10;
6813   }
6814
68156640   if (datainput)
68166641   {
68176642      for (int i = 0; i < 32; i++)
r241749r241750
68236648         }
68246649      }
68256650   }
6651   else
6652   {
6653      if (m_dp_allowed)
6654      {
6655         shifter = 0;
6656      }
6657      else
6658      {
6659         shifter = 0x10;
6660      }
6661   }
68266662
68276663   INT32 address = ((datainput << shifter) & 0x7fc00000) >> 22;
68286664   address = ((address | 0x200) & 0x3fe) | (shifter & 1);
68296665
68306666   INT32 fetchval = rsp_divtable[address];
68316667   INT32 temp = (0x40000000 | (fetchval << 14)) >> (((~shifter) & 0x1f) >> 1);
6832   temp ^= rec >> 31;
6833
6668   if (rec < 0)
6669   {
6670      temp = ~temp;
6671   }
68346672   if (!rec)
68356673   {
68366674      temp = 0x7fffffff;
r241749r241750
68616699   int op = m_rsp_state->arg0;
68626700
68636701   INT32 shifter = 0;
6864   INT32 rec = (INT16)VREG_S(VS2REG, EL & 7);
6702   INT32 rec = m_reciprocal_high | (UINT16)VREG_S(VS2REG, EL & 7);
68656703   INT32 datainput = rec;
68666704
6867   if (m_dp_allowed)
6705   if (rec < 0)
68686706   {
6869      rec = (rec & 0x0000ffff) | m_reciprocal_high;
6870      datainput = rec;
6871
6872      if (rec < 0)
6707      if (m_dp_allowed)
68736708      {
68746709         if (rec < -32768)
68756710         {
r241749r241750
68806715            datainput = -datainput;
68816716         }
68826717      }
6718      else
6719      {
6720         datainput = -datainput;
6721      }
68836722   }
6884   else if (datainput < 0)
6885   {
6886      datainput = -datainput;
68876723
6888      shifter = 0x10;
6889   }
6890
68916724   if (datainput)
68926725   {
68936726      for (int i = 0; i < 32; i++)
r241749r241750
68996732         }
69006733      }
69016734   }
6735   else
6736   {
6737      if (m_dp_allowed)
6738      {
6739         shifter = 0;
6740      }
6741      else
6742      {
6743         shifter = 0x10;
6744      }
6745   }
69026746
69036747   INT32 address = ((datainput << shifter) & 0x7fc00000) >> 22;
69046748   address = ((address | 0x200) & 0x3fe) | (shifter & 1);
69056749
69066750   INT32 fetchval = rsp_divtable[address];
69076751   INT32 temp = (0x40000000 | (fetchval << 14)) >> (((~shifter) & 0x1f) >> 1);
6908   temp ^= rec >> 31;
6909
6752   if (rec < 0)
6753   {
6754      temp = ~temp;
6755   }
69106756   if (!rec)
69116757   {
69126758      temp = 0x7fffffff;
r241749r241750
75157361}
75167362
75177363/*------------------------------------------------------------------
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/*------------------------------------------------------------------
75427364    generate_delay_slot_and_branch
75437365------------------------------------------------------------------*/
75447366
r241749r241750
75647386   assert(desc->delay.first() != NULL);
75657387   generate_sequence_instruction(block, &compiler_temp, desc->delay.first());     // <next instruction>
75667388
7567   generate_branch(block, compiler, desc);
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   }
75687406
75697407   /* update the label */
75707408   compiler->labelnum = compiler_temp.labelnum;
r241749r241750
77807618#endif
77817619         return TRUE;
77827620
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
78037621      case 0x1d:      /* VSAW */
78047622         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
78057623         UML_CALLC(block, cfunc_rsp_vsaw_simd, this);
r241749r241750
80097827#endif
80107828         return TRUE;
80117829
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
80177830      case 0x35:      /* VRSQL */
80187831         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
80197832         UML_CALLC(block, cfunc_rsp_vrsql_simd, this);
r241749r241750
80367849#endif
80377850         return TRUE;
80387851
8039      case 0x37:      /* VNOP */
8040      case 0x3F:      /* VNULL */
8041         return TRUE;
8042
80437852      default:
80447853         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
80457854         UML_CALLC(block, cfunc_unimplemented_opcode, this);
r241749r241750
81457954         UML_CALLC(block, cfunc_rsp_vsubc_scalar, this);
81467955         return TRUE;
81477956
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
81687957      case 0x1d:      /* VSAW */
81697958         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
81707959         UML_CALLC(block, cfunc_rsp_vsaw_scalar, this);
r241749r241750
82608049         UML_CALLC(block, cfunc_rsp_vmov_scalar, this);
82618050         return TRUE;
82628051
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
82688052      case 0x35:      /* VRSQL */
82698053         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
82708054         UML_CALLC(block, cfunc_rsp_vrsql_scalar, this);
r241749r241750
82758059         UML_CALLC(block, cfunc_rsp_vrsqh_scalar, this);
82768060         return TRUE;
82778061
8278      case 0x37:      /* VNOP */
8279      case 0x3F:      /* VNULL */
8280         return TRUE;
8281
82828062      default:
82838063         UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]);        // mov     [arg0],desc->opptr.l
82848064         UML_CALLC(block, cfunc_unimplemented_opcode, this);
r241749r241750
86418421         UML_MOV(block, mem(&m_rsp_state->arg0), 3);                   // mov     [arg0],3
86428422         UML_CALLC(block, cfunc_sp_set_status_cb, this);                      // callc   cfunc_sp_set_status_cb
86438423         UML_MOV(block, mem(&m_rsp_state->icount), 0);                       // mov icount, #0
8644         UML_MOV(block, mem(&m_rsp_state->jmpdest), desc->targetpc);
86458424
8646         generate_branch(block, compiler, desc);
8647
86488425         UML_EXIT(block, EXECUTE_OUT_OF_CYCLES);
86498426         return TRUE;
86508427   }
trunk/src/emu/cpu/rsp/rspfe.c
r241749r241750
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 * 4) & 0x00000fff) | 0x1000;
86         desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000;
8787         desc.delayslots = 1;
8888         desc.skipslots = (opswitch & 0x10) ? 1 : 0;
8989         return true;
r241749r241750
9797            desc.regin[0] |= REGFLAG_R(RSREG);
9898            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
9999         }
100         desc.targetpc = ((desc.pc + 4 + SIMMVAL * 4) & 0x00000fff) | 0x1000;
100         desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000;
101101         desc.delayslots = 1;
102102         desc.skipslots = (opswitch & 0x10) ? 1 : 0;
103103         return true;
r241749r241750
207207         return true;
208208
209209      case 0x0d:  // BREAK
210         desc.flags |= OPFLAG_IS_UNCONDITIONAL_BRANCH | OPFLAG_END_SEQUENCE;
211         desc.targetpc = (op >> 5) & 0x000fffff;
210         desc.flags |= OPFLAG_END_SEQUENCE;
211         desc.targetpc = BRANCH_TARGET_DYNAMIC;
212212         return true;
213213   }
214214
r241749r241750
234234            desc.regin[0] |= REGFLAG_R(RSREG);
235235            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
236236         }
237         desc.targetpc = ((desc.pc + 4 + SIMMVAL * 4) & 0x00000fff) | 0x1000;
237         desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000;
238238         desc.delayslots = 1;
239239         desc.skipslots = (RTREG & 0x02) ? 1 : 0;
240240         return true;
r241749r241750
249249            desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
250250         }
251251         desc.regout[0] |= REGFLAG_R(31);
252         desc.targetpc = ((desc.pc + 4 + SIMMVAL * 4) & 0x00000fff) | 0x1000;
252         desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000;
253253         desc.delayslots = 1;
254254         desc.skipslots = (RTREG & 0x02) ? 1 : 0;
255255         return true;
trunk/src/emu/cpu/tms0980/tms0980.c
r241749r241750
123123#include "debugger.h"
124124#include "tms0980.h"
125125
126#define LOG                 0
126127
127128
128129const device_type TMS0980 = &device_creator<tms0980_cpu_device>;
r241749r241750
235236#define I_YNEC      ( MICRO_MASK | M_YTP | M_CKN | M_NE )
236237
237238
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 };
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};
241251static const UINT8 tms0980_bit_value[4] = { 1, 4, 2, 8 };
242static const UINT8 tms0980_nbit_value[4] = { 0xE, 0xB, 0xD, 0x7 };
252static const UINT8 tms0980_nbit_value[4] = { 0x0E, 0x0B, 0x0D, 0x07 };
243253
244254
245255static const UINT32 tms0980_decode[512] =
r241749r241750
319329};
320330
321331
322static const UINT32 tms1000_default_decode[256] =
323{
332static const UINT32 tms1000_default_decode[256] = {
324333   /* 0x00 */
325334   F_COMX, I_A8AAC, I_YNEA, I_TAM, I_TAMZA, I_A10AAC, I_A6AAC, I_DAN,
326335   I_TKA, I_KNEZ, F_TDO, F_CLO, F_RSTR, F_SETR, I_IA, F_RETN,
r241749r241750
362371};
363372
364373
365static const UINT32 tms1100_default_decode[256] =
366{
374static const UINT32 tms1100_default_decode[256] = {
367375   /* 0x00 */
368376   I_MNEA, I_ALEM, I_YNEA, I_XMA, I_DYN, I_IYC, I_AMAAC, I_DMAN,
369377   I_TKA, F_COMX, F_TDO, F_COMC, F_RSTR, F_SETR, I_KNEZ, F_RETN,
r241749r241750
496504
497505void tms1xxx_cpu_device::device_reset()
498506{
499   m_pa = 0xF;
500   m_pb = 0xF;
507   m_pa = 0x0F;
508   m_pb = 0x0F;
501509   m_pc = 0;
502510   m_dam = 0;
503511   m_ca = 0;
r241749r241750
612620                 ( pc{5:4} == 11 && pc{0} == 1 ) => 10
613621
614622*/
615static const UINT8 tms1000_next_pc[64] =
616{
623static const UINT8 tms1000_next_pc[64] = {
617624   0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F,
618625   0x20, 0x22, 0x24, 0x26, 0x28, 0x2A, 0x2C, 0x2E, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3A, 0x3C, 0x3F,
619626   0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E,
r241749r241750
704711{
705712   do
706713   {
714//      debugger_instruction_hook( this, ( ( m_pa << m_pc_size ) | m_pc ) << 1 );
707715      m_icount--;
708716      switch( m_subcycle )
709717      {
r241749r241750
803811            }
804812            if ( m_decode & M_STO )
805813            {
814//printf("write ram %02x data %01x\n", m_ram_address, m_a );
806815               m_data->write_byte( m_ram_address, m_a );
807816            }
808817            if ( m_decode & M_CKM )
809818            {
819//printf("write ram %02x data %01x\n", m_ram_address, m_cki_bus );
810820               m_data->write_byte( m_ram_address, m_cki_bus );
811821            }
812822         }
r241749r241750
814824         {
815825            if ( m_decode & F_SBIT )
816826            {
827//printf("write ram %02x data %01x\n", m_ram_address, m_ram_data | tms0980_bit_value[ m_opcode & 0x03 ] );
817828               m_data->write_byte( m_ram_address, m_ram_data | tms0980_bit_value[ m_opcode & 0x03 ] );
818829            }
819830            if ( m_decode & F_RBIT )
820831            {
832//printf("write ram %02x data %01x\n", m_ram_address, m_ram_data & tms0980_nbit_value[ m_opcode & 0x03 ] );
821833               m_data->write_byte( m_ram_address, m_ram_data & tms0980_nbit_value[ m_opcode & 0x03 ] );
822834            }
823835            if ( m_decode & F_SETR )
r241749r241750
838850               {
839851                  logerror("unknown output pla mapping for status latch = %d and a = %X\n", m_status_latch, m_a);
840852               }
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);
841857
842858               m_write_o( 0, m_o & m_o_mask, 0xffff );
843859            }
r241749r241750
935951            m_opcode = m_program->read_byte( m_rom_address );
936952         }
937953         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 );
938956
939957         /* ram address */
940958         m_ram_address = ( m_x << 4 ) | m_y;
trunk/src/emu/cpu/tms57002/tms57002.c
r241749r241750
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),
2726      program_config("program", ENDIANNESS_LITTLE, 32, 8, -2, ADDRESS_MAP_NAME(internal_pgm)),
2827      data_config("data", ENDIANNESS_LITTLE, 8, 20)
2928{
trunk/src/emu/cpu/upd7810/upd7810.c
r241749r241750
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/INT2 input */
571         data = (data & ~0x08) | (m_int2 & 1 ? 0x08 : 0x00);
570      if (m_mcc & 0x08)   /* PC3 = TI input */
571         data = (data & ~0x08) | (m_ti & 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 */
r241749r241750
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/INT2 input */
652         data = (data & ~0x08) | (m_int2 & 1 ? 0x08 : 0x00);
651      if (m_mcc & 0x08)   /* PC3 = TI input */
652         data = (data & ~0x08) | (m_ti & 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 */
r241749r241750
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
720712   if ((IRR & INTFT0)  && 0 == (MKL & 0x02))
721713   {
722714      vector = 0x0008;
r241749r241750
11821174   }
11831175}
11841176
1185void upd7810_device::upd7810_handle_timer0(int cycles, int clkdiv)
1177void upd7810_device::handle_timers(int cycles)
11861178{
1187   OVC0 += cycles;
1188   while (OVC0 >= clkdiv)
1179   /**** TIMER 0 ****/
1180   if (TMM & 0x10)         /* timer 0 upcounter reset ? */
1181      CNT0 = 0;
1182   else
11891183   {
1190      OVC0 -= clkdiv;
1191      CNT0++;
1192      if (CNT0 == TM0)
1184      switch (TMM & 0x0c) /* timer 0 clock source */
11931185      {
1194         CNT0 = 0;
1195         IRR |= INTFT0;
1196         /* timer F/F source is timer 0 ? */
1197         if (0x00 == (TMM & 0x03))
1186      case 0x00:  /* clock divided by 12 */
1187         OVC0 += cycles;
1188         while (OVC0 >= 12)
11981189         {
1199            TO ^= 1;
1200            m_to_func(TO);
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            }
12011219         }
1202         /* timer 1 chained with timer 0 ? */
1203         if ((TMM & 0xe0) == 0x60)
1220         break;
1221      case 0x04:  /* clock divided by 384 */
1222         OVC0 += cycles;
1223         while (OVC0 >= 384)
12041224         {
1205            CNT1++;
1206            if (CNT1 == TM1)
1225            OVC0 -= 384;
1226            CNT0++;
1227            if (CNT0 == TM0)
12071228            {
1208               CNT1 = 0;
1209               IRR |= INTFT1;
1210               /* timer F/F source is timer 1 ? */
1211               if (0x01 == (TMM & 0x03))
1229               CNT0 = 0;
1230               IRR |= INTFT0;
1231               /* timer F/F source is timer 0 ? */
1232               if (0x00 == (TMM & 0x03))
12121233               {
12131234                  TO ^= 1;
12141235                  m_to_func(TO);
12151236               }
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               }
12161253            }
12171254         }
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);
12541255         break;
1255      case 0x04:  /* clock divided by 384 */
1256         upd7810_handle_timer0(cycles, 384);
1257         break;
12581256      case 0x08:  /* external signal at TI */
12591257         break;
12601258      case 0x0c:  /* disabled */
r241749r241750
12701268      switch (TMM & 0x60) /* timer 1 clock source */
12711269      {
12721270      case 0x00:  /* clock divided by 12 */
1273         upd7810_handle_timer1(cycles, 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         }
12741288         break;
12751289      case 0x20:  /* clock divided by 384 */
1276         upd7810_handle_timer1(cycles, 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         }
12771307         break;
12781308      case 0x40:  /* external signal at TI */
12791309         break;
r241749r241750
13081338      {
13091339         OVCE -= 12;
13101340         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 */
13171341         switch (ETMM & 0x0c)
13181342         {
13191343         case 0x00:              /* clear ECNT */
r241749r241750
13291353               ECNT = 0;
13301354            break;
13311355         }
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 */
1356         switch (ETMM & 0x30)
13371357         {
1338            switch (EOM & 0x0e)
1358         case 0x00:  /* set CO0 if ECNT == ETM0 */
1359            if (ETM0 == ECNT)
13391360            {
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;
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               }
13491373            }
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;
13501411         }
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 */
1412         switch (ETMM & 0xc0)
13561413         {
1357            switch (EOM & 0xe0)
1414         case 0x00:  /* lacth CO1 if ECNT == ETM1 */
1415            if (ETM1 == ECNT)
13581416            {
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;
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               }
13681429            }
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;
13691467         }
13701468      }
13711469   }
r241749r241750
14101508      else
14111509         m_adtot = 192;
14121510      m_adout = 0;
1413      m_shdone = 0;
14141511      if (ANM & 0x01)
14151512      {
14161513         /* select mode */
r241749r241750
14271524   if (ANM & 0x01)
14281525   {
14291526      /* select mode */
1430      if (m_shdone == 0)
1527      while (m_adcnt > m_adtot)
14311528      {
1529         UINT8 cr = 0;
1530         m_adcnt -= m_adtot;
14321531         switch (m_adin)
14331532         {
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;
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;
14421541         }
1443         m_shdone = 1;
1444      }
1445      if (m_adcnt > m_adtot)
1446      {
1447         m_adcnt -= m_adtot;
14481542         switch (m_adout)
14491543         {
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;
1544            case 0: CR0 = cr; break;
1545            case 1: CR1 = cr; break;
1546            case 2: CR2 = cr; break;
1547            case 3: CR3 = cr; break;
14541548         }
1455         m_adout = (m_adout + 1) & 0x03;
1549         m_adout = (m_adout + 1) & 0x07;
14561550         if (m_adout == 0)
14571551            IRR |= INTFAD;
1458         m_shdone = 0;
14591552      }
14601553   }
14611554   else
14621555   {
14631556      /* scan mode */
1464      if (m_shdone == 0)
1557      while (m_adcnt > m_adtot)
14651558      {
1559         UINT8 cr = 0;
1560         m_adcnt -= m_adtot;
14661561         switch (m_adin | m_adrange)
14671562         {
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;
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;
14761571         }
1477         m_shdone = 1;
1478      }
1479      if (m_adcnt > m_adtot)
1480      {
1481         m_adcnt -= m_adtot;
14821572         switch (m_adout)
14831573         {
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;
1574            case 0: CR0 = cr; break;
1575            case 1: CR1 = cr; break;
1576            case 2: CR2 = cr; break;
1577            case 3: CR3 = cr; break;
14881578         }
14891579         m_adin  = (m_adin  + 1) & 0x07;
1490         m_adout = (m_adout + 1) & 0x03;
1580         m_adout = (m_adout + 1) & 0x07;
14911581         if (m_adout == 0)
14921582            IRR |= INTFAD;
1493         m_shdone = 0;
14941583      }
14951584   }
14961585
r241749r241750
16161705   save_item(NAME(m_ovcf));
16171706   save_item(NAME(m_ovcs));
16181707   save_item(NAME(m_edges));
1619   save_item(NAME(m_nmi));
16201708   save_item(NAME(m_int1));
16211709   save_item(NAME(m_int2));
16221710
r241749r241750
17981886   m_co1 = 0;
17991887   m_irr = 0;
18001888   m_itf = 0;
1801   m_nmi = 0;
18021889   m_int1 = 0;
18031890   m_int2 = 0;
18041891
r241749r241750
18151902   m_edges = 0;
18161903   m_adcnt = 0;
18171904   m_adtot = 0;
1818   m_tmpcr = 0;
1819   m_shdone = 0;
18201905   m_adout = 0;
18211906   m_adin = 0;
18221907   m_adrange = 0;
r241749r241750
19722057
19732058void upd7810_device::execute_set_input(int irqline, int state)
19742059{
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 )
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)
19862081         IRR |= INTF1;
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 )
2082      else
2083      if ( irqline == UPD7810_INTF2 && ( MKL & 0x20 ) )
19932084         IRR |= INTF2;
1994
1995      m_int2 = state;
1996      break;
1997   default:
1998      logerror("upd7810_set_irq_line invalid irq line #%d\n", irqline);
1999      break;
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);
20002091   }
20012092   /* resetting interrupt requests is done with the SKIT/SKNIT opcodes only! */
20022093}
trunk/src/emu/cpu/upd7810/upd7810.h
r241749r241750
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
175172   devcb_write_line  m_to_func;
176173   devcb_write_line  m_txd_func;
177174   devcb_read_line   m_rxd_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;
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;
186183
187184   typedef void (upd7810_device::*opcode_func)();
188185
r241749r241750
294291   UINT8   m_co1;
295292   UINT16  m_irr;    /* interrupt request register */
296293   UINT16  m_itf;    /* interrupt test flag register */
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. */
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. */
300296
301297   /* internal helper variables */
302298   UINT16  m_txs;    /* transmitter shift register */
r241749r241750
312308   UINT8   m_edges;  /* rising/falling edge flag for serial I/O */
313309   UINT16  m_adcnt;  /* A/D converter cycle count */
314310   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 */
317311   int     m_adout;  /* currently selected A/D converter output register */
318312   int     m_adin;   /* currently selected A/D converter input */
319313   int     m_adrange;/* in scan mode, A/D converter range (AN0-AN3 or AN4-AN7) */
trunk/src/emu/drivers/xtal.h
r241749r241750
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 */
137136   XTAL_15_468MHz      = 15468480,     /* Bank Panic h/w, Sega G80 */
138137   XTAL_15_8976MHz     = 15897600,     /* IAI Swyft */
139138   XTAL_16MHz          = 16000000,     /* Extremely common, used on 100's of PCBs */
trunk/src/emu/machine/ataflash.c
r241749r241750
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
r241749r241750
2626   virtual void device_start();
2727   virtual void device_reset();
2828
29   virtual attotime seek_time();
3029   virtual void process_command();
3130   virtual void process_buffer();
3231   virtual bool is_ready();
trunk/src/emu/machine/i6300esb.c
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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();
4847
4948   void ide_build_identify_device();
5049
r241749r241750
7372   void security_error();
7473   void read_first_sector();
7574   void soft_reset();
75   attotime seek_time();
7676
7777   UINT32          m_cur_lba;
7878   UINT16          m_block_count;
r241749r241750
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
9699protected:
97100   // device-level overrides
98101   virtual void device_start();
r241749r241750
101104   // optional information overrides
102105   virtual machine_config_constructor device_mconfig_additions() const;
103106
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); }
106107   virtual UINT8 calculate_status();
107108
108109   chd_file       *m_handle;
trunk/src/emu/machine/lpci.c
r241749r241750
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
r241749r241750
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
r241749r241750
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#
12331224#@src/emu/machine/pci.h,MACHINES += PCI
12341225#-------------------------------------------------
12351226
12361227ifneq ($(filter PCI,$(MACHINES)),)
12371228MACHINEOBJS += $(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
12451229endif
12461230
12471231#-------------------------------------------------
trunk/src/emu/machine/pc_lpt.c
r241749r241750
66
77#include "emu.h"
88#include "pc_lpt.h"
9#include "bus/centronics/covox.h"
10#include "bus/centronics/printer.h"
911
1012
1113const device_type PC_LPT = &device_creator<pc_lpt_device>;
r241749r241750
4446   m_cent_ctrl_out->write(m_control);
4547}
4648
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
4755static MACHINE_CONFIG_FRAGMENT( pc_lpt )
48   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
56   MCFG_CENTRONICS_ADD("centronics", pc_centronics, "printer")
4957   MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in")
5058   MCFG_CENTRONICS_FAULT_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit3))
5159   MCFG_CENTRONICS_SELECT_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit4))
trunk/src/emu/machine/pci-apic.c
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
1#include "pci.h"
1/***************************************************************************
22
3const device_type PCI_ROOT   = &device_creator<pci_root_device>;
4const device_type PCI_BRIDGE = &device_creator<pci_bridge_device>;
3    machine/pci.c
54
6DEVICE_ADDRESS_MAP_START(config_map, 32, pci_device)
7ADDRESS_MAP_END
5    PCI bus
86
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}
7    The PCI bus is a 32-bit bus introduced by Intel, so it is little endian
178
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}
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
2516
26void pci_device::device_start()
27{
28}
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
2926
30void pci_device::device_reset()
31{
32}
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
3367
34void pci_device::scan_sub_devices(pci_device **devices, dynamic_array<pci_device *> &all, dynamic_array<pci_device *> &bridges, device_t *root)
35{
36}
68    Information on PCI vendors can be found at http://www.pcidatabase.com/
3769
38void pci_device::reset_all_mappings()
39{
40}
70***************************************************************************/
4171
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}
72#include "emu.h"
73#include "machine/pci.h"
4874
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}
75#define LOG_PCI 0
5376
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}
77//**************************************************************************
78//  GLOBAL VARIABLES
79//**************************************************************************
5880
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}
81const device_type PCI_BUS_LEGACY = &device_creator<pci_bus_legacy_device>;
6382
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}
83//**************************************************************************
84//  LIVE DEVICE
85//**************************************************************************
6886
69void agp_device::device_start()
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)
7093{
71   pci_device::device_start();
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;
72100}
73101
74void agp_device::device_reset()
102/***************************************************************************
103    INLINE FUNCTIONS
104***************************************************************************/
105
106READ32_MEMBER( pci_bus_legacy_device::read )
75107{
76   pci_device::device_reset();
77}
108   UINT32 result = 0xffffffff;
109   int function, reg;
78110
111   offset %= 2;
79112
113   switch (offset)
114   {
115      case 0:
116         result = m_address;
117         break;
80118
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}
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   }
87132
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}
133   if (LOG_PCI)
134      logerror("read('%s'): offset=%d result=0x%08X\n", tag(), offset, result);
94135
95const address_space_config *pci_bridge_device::memory_space_config(address_spacenum spacenum) const
96{
97   return spacenum == AS_PROGRAM ? &configure_space_config : NULL;
136   return result;
98137}
99138
100device_t *pci_bridge_device::bus_root()
101{
102   return this;
103}
104139
105void pci_bridge_device::device_start()
140
141pci_bus_legacy_device *pci_bus_legacy_device::pci_search_bustree(int busnum, int devicenum, pci_bus_legacy_device *pcibus)
106142{
107   pci_device::device_start();
143   int a;
144   pci_bus_legacy_device *ret;
108145
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);
146   if (pcibus->m_busnum == busnum)
147   {
148      return pcibus;
122149   }
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      }
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;
130157}
131158
132void pci_bridge_device::device_reset()
133{
134   pci_device::device_reset();
135   regenerate_config_mapping();
136}
137159
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}
143160
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)
161WRITE32_MEMBER( pci_bus_legacy_device::write )
147162{
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);
163   offset %= 2;
151164
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}
165   if (LOG_PCI)
166      logerror("write('%s'): offset=%d data=0x%08X\n", tag(), offset, data);
155167
168   switch (offset)
169   {
170      case 0:
171         m_address = data;
156172
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}
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;
165190
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{
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   }
170206}
171207
172void agp_bridge_device::device_start()
173{
174   pci_bridge_device::device_start();
175}
176208
177void agp_bridge_device::device_reset()
178{
179   pci_bridge_device::device_reset();
180}
181209
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)
210READ64_MEMBER(pci_bus_legacy_device::read_64be)
192211{
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);
193219}
194220
195device_t *pci_host_device::bus_root()
221WRITE64_MEMBER(pci_bus_legacy_device::write_64be)
196222{
197   return owner();
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);
198229}
199230
200void pci_host_device::device_start()
201{
202   pci_bridge_device::device_start();
203231
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()
232void pci_bus_legacy_device::add_sibling(pci_bus_legacy_device *sibling, int busnum)
209233{
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;
234   m_siblings[m_siblings_count] = sibling;
235   m_siblings_busnum[m_siblings_count] = busnum;
236   m_siblings_count++;
216237}
217238
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);
222239
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}
240//-------------------------------------------------
241//  device_post_load - handle updating after a
242//  restore
243//-------------------------------------------------
226244
227void pci_host_device::regenerate_config_mapping()
245void pci_bus_legacy_device::device_post_load()
228246{
229   pci_bridge_device::regenerate_config_mapping();
230   map_config(0, &space(AS_PROGRAM));
247   if (m_devicenum != -1)
248   {
249      m_busnumaddr = pci_search_bustree(m_busnumber, m_devicenum, this);
250   }
231251}
232252
233READ32_MEMBER(pci_host_device::config_address_r)
234{
235   return config_address;
236}
253//-------------------------------------------------
254//  device_start - device-specific startup
255//-------------------------------------------------
237256
238WRITE32_MEMBER(pci_host_device::config_address_w)
257void pci_bus_legacy_device::device_start()
239258{
240   COMBINE_DATA(&config_address);
241}
259   /* store a pointer back to the device */
260   m_devicenum = -1;
242261
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}
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]);
247266
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}
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   }
253272
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;
273   /* register pci states */
274   save_item(NAME(m_address));
275   save_item(NAME(m_devicenum));
276   save_item(NAME(m_busnum));
266277}
267278
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}
278279
280//-------------------------------------------------
281//  device_reset - device-specific reset
282//-------------------------------------------------
279283
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__)
284void pci_bus_legacy_device::device_reset()
282285{
286   /* reset the drive state */
287   m_devicenum = -1;
288   m_address = 0;
283289}
284
285void pci_root_device::device_start()
286{
287}
288
289void pci_root_device::device_reset()
290{
291}
trunk/src/emu/machine/pci.h
r241749r241750
1#ifndef PCI_H
2#define PCI_H
1/***************************************************************************
32
4#include "emu.h"
3    machine/pci.h
54
6#define MCFG_PCI_ROOT_ADD(_tag) \
7   MCFG_DEVICE_ADD(_tag, PCI_ROOT, 0)
5    PCI bus
86
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);
7***************************************************************************/
128
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)
9#ifndef PCI_H
10#define PCI_H
1511
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)
12//**************************************************************************
13//  TYPE DEFINITIONS
14//**************************************************************************
1815
19#define MCFG_PCI_BRIDGE_ADD(_tag, _main_id, _revision) \
20   MCFG_PCI_DEVICE_ADD(_tag, PCI_BRIDGE, _main_id, _revision, 0x060400, 0x00000000)
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);
2118
22#define MCFG_AGP_BRIDGE_ADD(_tag, _type, _main_id, _revision) \
23   MCFG_PCI_DEVICE_ADD(_tag, _type, _main_id, _revision, 0x060400, 0x00000000)
19// ======================> pci_bus_legacy_device
2420
25class pci_device : public device_t {
21class pci_bus_legacy_device :  public device_t
22{
2623public:
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);
24   // construction/destruction
25   pci_bus_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
2826
29   void set_ids(UINT32 main_id, UINT8 revision, UINT32 pclass, UINT32 subdevice_id);
27   DECLARE_READ32_MEMBER( read );
28   DECLARE_WRITE32_MEMBER( write );
3029
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);
30   DECLARE_READ64_MEMBER( read_64be );
31   DECLARE_WRITE64_MEMBER( write_64be );
3632
37   void map_config(UINT8 device, address_space *config_space);
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; }
3837
39   virtual DECLARE_ADDRESS_MAP(config_map, 32);
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);
4040
4141protected:
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
42   // device-level overrides
5443   virtual void device_start();
5544   virtual void device_reset();
45   virtual void device_post_load();
5646
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
9647private:
97   address_space_config configure_space_config;
98};
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;
9957
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();
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
10762};
10863
109class pci_host_device : public pci_bridge_device {
110public:
111   DECLARE_ADDRESS_MAP(io_configuration_access_map, 32);
64// device type definition
65extern const device_type PCI_BUS_LEGACY;
11266
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);
11467
115protected:
116   address_space *memory_space, *io_space;
68/***************************************************************************
69    DEVICE CONFIGURATION MACROS
70***************************************************************************/
11771
118   UINT64 memory_window_start, memory_window_end, memory_offset;
119   UINT64 io_window_start, io_window_end, io_offset;
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);
12079
121   virtual void device_start();
122   virtual void device_reset();
12380
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
81#endif /* PCI_H */
trunk/src/emu/machine/pic8259.c
r241749r241750
1414#include "emu.h"
1515#include "machine/pic8259.h"
1616
17#define IRQ_COUNT   8
18
1719#define LOG_ICW     0
1820#define LOG_OCW     0
1921#define LOG_GENERAL  0
r241749r241750
2224
2325void pic8259_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
2426{
27   int irq;
28   UINT8 mask;
29
2530   /* check the various IRQs */
26   for (int n = 0, irq = m_prio; n < 8; n++, irq = (irq + 1) & 7)
31   for (irq = 0; irq < IRQ_COUNT; irq++)
2732   {
28      UINT8 mask = 1 << irq;
33      mask = 1 << irq;
2934
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)))
35      /* is this IRQ in service? */
36      if (m_isr & mask)
3237      {
3338         if (LOG_GENERAL)
3439         {
35            logerror("pic8259_timerproc() %s: PIC IRQ #%d still in service\n", tag(), irq);
40            logerror("pic8259_timerproc(): PIC IRQ #%d still in service\n", irq);
3641         }
3742         break;
3843      }
r241749r241750
4247      {
4348         if (LOG_GENERAL)
4449         {
45            logerror("pic8259_timerproc() %s: PIC triggering IRQ #%d\n", tag(), irq);
50            logerror("pic8259_timerproc(): PIC triggering IRQ #%d\n", irq);
4651         }
4752         if (!BIT(m_ocw3, 2))
4853         {
r241749r241750
5055         }
5156         return;
5257      }
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;
5658   }
5759   if (!BIT(m_ocw3, 2))
5860   {
r241749r241750
6971   {
7072      /* setting IRQ line */
7173      if (LOG_GENERAL)
72         logerror("pic8259_set_irq_line() %s: PIC set IRQ line #%d\n", tag(), irq);
74         logerror("pic8259_set_irq_line(): PIC set IRQ line #%d\n", irq);
7375
7476      if(m_level_trig_mode || (!m_level_trig_mode && !(m_irq_lines & mask)))
7577      {
r241749r241750
8284      /* clearing IRQ line */
8385      if (LOG_GENERAL)
8486      {
85         logerror("pic8259_device::set_irq_line() %s: PIC cleared IRQ line #%d\n", tag(), irq);
87         logerror("pic8259_device::set_irq_line(): PIC cleared IRQ line #%d\n", irq);
8688      }
8789
8890      m_irq_lines &= ~mask;
r241749r241750
9496
9597UINT32 pic8259_device::acknowledge()
9698{
97   for (int n = 0, irq = m_prio; n < 8; n++, irq = (irq + 1) & 7)
99   UINT8 mask;
100   int irq;
101
102   for (irq = 0; irq < IRQ_COUNT; irq++)
98103   {
99      UINT8 mask = 1 << irq;
104      mask = 1 << irq;
100105
101106      /* is this IRQ pending and enabled? */
102107      if ((m_irr & mask) && !(m_imr & mask))
103108      {
104109         if (LOG_GENERAL)
105110         {
106            logerror("pic8259_acknowledge() %s: PIC acknowledge IRQ #%d\n", tag(), irq);
111            logerror("pic8259_acknowledge(): PIC acknowledge IRQ #%d\n", irq);
107112         }
108113         if (!m_level_trig_mode)
109114         {
r241749r241750
165170
166171            if ( m_irr & ~m_imr )
167172            {
168               /* check the various IRQs */
169               for (int n = 0, irq = m_prio; n < 8; n++, irq = (irq + 1) & 7)
173               int irq;
174               for ( irq = 0; irq < IRQ_COUNT; irq++ )
170175               {
171176                  if ( ( 1 << irq ) & m_irr & ~m_imr )
172177                  {
r241749r241750
211216            /* write ICW1 - this pretty much resets the chip */
212217            if (LOG_ICW)
213218            {
214               logerror("pic8259_device::write() %s: ICW1; data=0x%02X\n", tag(), data);
219               logerror("pic8259_device::write(): ICW1; data=0x%02X\n", data);
215220            }
216221
217222            m_imr                = 0x00;
r241749r241750
232237               /* write OCW3 */
233238               if (LOG_OCW)
234239               {
235                  logerror("pic8259_device::write() %s: OCW3; data=0x%02X\n", tag(), data);
240                  logerror("pic8259_device::write(): OCW3; data=0x%02X\n", data);
236241               }
237242
238243               m_ocw3 = data;
r241749r241750
245250               /* write OCW2 */
246251               if (LOG_OCW)
247252               {
248                  logerror("pic8259_device::write() %s: OCW2; data=0x%02X\n", tag(), data);
253                  logerror("pic8259_device::write(): OCW2; data=0x%02X\n", data);
249254               }
250255
251256               switch (data & 0xe0)
r241749r241750
286291                     }
287292                     break;
288293                  case 0xc0:
289                     m_prio = (n + 1) & 7;
294                     m_prio = n & 7;
290295                     break;
291296                  case 0xe0:
292297                     if( m_isr & mask )
293298                     {
294299                        m_isr &= ~mask;
295                        m_prio = (n + 1) & 7;
300                        m_prio = (m_prio + 1) & 7;
296301                     }
297302                     break;
298303               }
r241749r241750
310315               /* write ICW2 */
311316               if (LOG_ICW)
312317               {
313                  logerror("pic8259_device::write() %s: ICW2; data=0x%02X\n", tag(), data);
318                  logerror("pic8259_device::write(): ICW2; data=0x%02X\n", data);
314319               }
315320
316321               m_base = data & 0xf8;
r241749r241750
329334               /* write ICW3 */
330335               if (LOG_ICW)
331336               {
332                  logerror("pic8259_device::write() %s: ICW3; data=0x%02X\n", tag(), data);
337                  logerror("pic8259_device::write(): ICW3; data=0x%02X\n", data);
333338               }
334339
335340               m_slave = data;
r241749r241750
340345               /* write ICW4 */
341346               if (LOG_ICW)
342347               {
343                  logerror("pic8259_device::write() %s: ICW4; data=0x%02X\n", tag(), data);
348                  logerror("pic8259_device::write(): ICW4; data=0x%02X\n", data);
344349               }
345350
346351               m_nested = (data & 0x10) ? 1 : 0;
trunk/src/emu/machine/z80ctc.h
r241749r241750
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
7977protected:
8078   // device-level overrides
8179   virtual void device_start();
trunk/src/emu/sound/pci-ac97.c
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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#-------------------------------------------------
8473# Apple custom sound chips
8574#@src/emu/sound/asc.h,SOUNDS += ASC
8675#@src/emu/sound/awacs.h,SOUNDS += AWACS
r241749r241750
134123
135124
136125#-------------------------------------------------
137#-------------------------------------------------
138# AC97
139#@src/emu/sound/pic-ac97.h,SOUNDS += AC97
140#-------------------------------------------------
141
142ifneq ($(filter AC97,$(SOUNDS)),)
143SOUNDOBJS += $(SOUNDOBJ)/pci-ac97.o
144endif
145126# CEM 3394 analog synthesizer chip
146127#@src/emu/sound/cem3394.h,SOUNDS += CEM3394
147128#-------------------------------------------------
r241749r241750
153134
154135
155136#-------------------------------------------------
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#-------------------------------------------------
167137# Data East custom sound chips
168138#@src/emu/sound/bsmt2000.h,SOUNDS += BSMT2000
169139#-------------------------------------------------
trunk/src/emu/video/gf6800gt.c
r241749r241750
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
r241749r241750
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
r241749r241750
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}
216201
217void svga_device::zero()
218{
219   vga_device::zero();
220   memset(&svga, 0, sizeof(svga));
221}
222
223202/* VBLANK callback, start address definitely updates AT vblank, not before. */
224203TIMER_CALLBACK_MEMBER(vga_device::vblank_timer_cb)
225204{
r241749r241750
229208
230209void vga_device::device_start()
231210{
232   zero();
211   memset(&vga, 0, sizeof(vga));
233212
234213   int i;
235214   for (i = 0; i < 0x100; i++)
r241749r241750
262241
263242void cirrus_vga_device::device_start()
264243{
265   zero();
244   memset(&vga, 0, sizeof(vga));
245   memset(&svga, 0, sizeof(svga));
266246
267247   int i;
268248   for (i = 0; i < 0x100; i++)
trunk/src/emu/video/pc_vga.h
r241749r241750
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   virtual void zero();
29
3030   virtual UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
3131
3232   virtual READ8_MEMBER(port_03b0_r);
r241749r241750
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();
209208   virtual UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
210209protected:
211210   void svga_vh_rgb8(bitmap_rgb32 &bitmap, const rectangle &cliprect);
trunk/src/emu/video/snes_ppu.c
r241749r241750
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
217221   m_vram = auto_alloc_array(machine(), UINT8, SNES_VRAM_SIZE);
218222   m_cgram = auto_alloc_array(machine(), UINT16, SNES_CGRAM_SIZE/2);
219223   m_oam_ram = auto_alloc_array(machine(), UINT16, SNES_OAM_SIZE/2);
220224
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
221262   for (int i = 0; i < 2; i++)
222263   {
223264      save_item(NAME(m_scanlines[i].enable), i);
r241749r241750
359400   save_pointer(NAME(m_oam_ram), SNES_OAM_SIZE/2);
360401}
361402
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;
383403
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;
406404
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
470405/*****************************************
471406 * get_bgcolor()
472407 *
trunk/src/emu/video/snes_ppu.h
r241749r241750
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
r241749r241750
371371
372372inline void upd7220_device::recompute_parameters()
373373{
374   int horiz_mult = 16, vert_mult = 1;
374   int horiz_mult;
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)
377   if(((m_mode & UPD7220_MODE_DISPLAY_MASK) == UPD7220_MODE_DISPLAY_MIXED) ||
378            ((m_mode & UPD7220_MODE_INTERLACE_MASK) == UPD7220_MODE_INTERLACE_ON))
378379      horiz_mult = 8;
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   }
380   else
381      horiz_mult = 16;
385382
386383   int horiz_pix_total = (m_hs + m_hbp + m_hfp + m_aw) * horiz_mult;
387   int vert_pix_total = (m_vs + m_vbp + m_al + m_vfp) * vert_mult;
384   int vert_pix_total = m_vs + m_vbp + m_al + m_vfp;
388385
389386   //printf("%d %d %d %d\n",m_hs,m_hbp,m_aw,m_hfp);
390387   //printf("%d %d\n",m_aw * 8,m_pitch * 8);
r241749r241750
397394   rectangle visarea;
398395
399396   visarea.min_x = 0; //(m_hs + m_hbp) * 8;
400   visarea.min_y = m_vbp; //m_vs + m_vbp;
397   visarea.min_y = 0; //m_vs + m_vbp;
401398   visarea.max_x = m_aw * horiz_mult - 1;//horiz_pix_total - (m_hfp * 8) - 1;
402   visarea.max_y = m_al * vert_mult + m_vbp - 1;//vert_pix_total - m_vfp - 1;
399   visarea.max_y = m_al - 1;//vert_pix_total - m_vfp - 1;
403400
404401   LOG(("uPD7220 '%s' Screen: %u x %u @ %f Hz\n", tag(), horiz_pix_total, vert_pix_total, 1 / ATTOSECONDS_TO_DOUBLE(refresh)));
405402   LOG(("Visible Area: (%u, %u) - (%u, %u)\n", visarea.min_x, visarea.min_y, visarea.max_x, visarea.max_y));
r241749r241750
801798
802799void upd7220_device::draw_line(int x, int y)
803800{
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;
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 };
807806   UINT16 pattern = (m_ra[8]) | (m_ra[9]<<8);
808   const int dot_dir[4] = {1, -1, -1, 1};
807   int line_step = 0;
809808
810809   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));
811810
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   }
811   line_size = m_figs.m_dc;
832812
833   switch(m_figs.m_dir & 3)
813   for(i = 0;i<line_size;i++)
834814   {
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;
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];
844821   }
845822
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
846827   m_ead = (x >> 4) + (y * (m_pitch >> m_figs.m_gd));
847828   m_dad = x & 0x0f;
848829}
r241749r241750
873854
874855   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));
875856
876   for(int i = 0; i <= m_figs.m_dc; i++)
857   for(int i = 0; i < m_figs.m_dc; i++)
877858   {
878859      if(i >= m_figs.m_dm)
879860      {
r241749r241750
901882   {
902883      case 1:
903884      case 2:
904         x += (m_figs.m_dc + 1) * dot_dir[((m_figs.m_dir >> 1) + 3) & 3];
885         x += m_figs.m_dc * dot_dir[((m_figs.m_dir >> 1) + 3) & 3];
905886         break;
906887      default:
907         y += (m_figs.m_dc + 1) * dot_dir[m_figs.m_dir >> 1];
888         y += m_figs.m_dc * dot_dir[m_figs.m_dir >> 1];
908889         break;
909890   }
910891
r241749r241750
15541535         addr = sad + (y * m_pitch);
15551536
15561537         if (!m_draw_text_cb.isnull())
1557            m_draw_text_cb(bitmap, addr, (y * m_lr) + m_vbp, wd, m_pitch, m_lr, m_dc, m_ead);
1538            m_draw_text_cb(bitmap, addr, (y * m_lr), wd, m_pitch, m_lr, m_dc, m_ead);
15581539      }
15591540
15601541      sy = y + 1;
r241749r241750
15661547//  draw_graphics_line -
15671548//-------------------------------------------------
15681549
1569void upd7220_device::draw_graphics_line(bitmap_rgb32 &bitmap, UINT32 addr, int y, int wd, int pitch)
1550void upd7220_device::draw_graphics_line(bitmap_rgb32 &bitmap, UINT32 addr, int y, int wd)
15701551{
1571   int sx, al = bitmap.cliprect().height();
1552   int sx;
15721553
1573   for (sx = 0; sx < pitch; sx++)
1554   for (sx = 0; sx < 80; sx++)
15741555   {
1575      if((sx << 3) < m_aw * 16 && y < al)
1556      if((sx << 3) < m_aw * 16 && y < m_al)
15761557         m_display_cb(bitmap, y, sx << 3, addr);
15771558
15781559      addr+= wd + 1;
r241749r241750
15901571   UINT16 len;
15911572   int im, wd, area;
15921573   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;
15951574
15961575   for (area = 0; area < 4; area++)
15971576   {
r241749r241750
16041583         if(area >= 3) // TODO: most likely to be correct, Quarth (PC-98xx) definitely draws with area 2. We might see an area 3 someday ...
16051584            break;
16061585
1607         if(!interlace)
1608            len <<= 1;
1609
16101586         for (y = 0; y < len; y++)
16111587         {
16121588            /* TODO: again correct?
r241749r241750
16161592            addr = ((sad << 1) & 0x3ffff) + (y * (m_pitch << (im ? 0 : 1)));
16171593
16181594            if (!m_display_cb.isnull())
1619               draw_graphics_line(bitmap, addr, y + ((bsy + m_vbp) / (mixed ? 1 : m_lr)), wd, (m_pitch << interlace));
1595               draw_graphics_line(bitmap, addr, y + (bsy / m_lr), wd);
16201596         }
16211597      }
16221598      else
r241749r241750
16301606               addr = (sad & 0x3ffff) + ((y / m_lr) * m_pitch);
16311607
16321608               if (!m_draw_text_cb.isnull())
1633                  m_draw_text_cb(bitmap, addr, y + tsy + m_vbp, wd, m_pitch, m_lr, m_dc, m_ead);
1609                  m_draw_text_cb(bitmap, addr, y + tsy, wd, m_pitch, m_lr, m_dc, m_ead);
16341610            }
16351611         }
16361612      }
trunk/src/emu/video/upd7220.h
r241749r241750
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, int pitch);
153   void draw_graphics_line(bitmap_rgb32 &bitmap, UINT32 addr, int y, int wd);
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
r241749r241750
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#
186177#@src/emu/video/h63484.h,VIDEOS += H63484
187178#-------------------------------------------------
188179
trunk/src/lib/formats/cbm_crt.c
r241749r241750
44
55    cbm_crt.c
66
7    Commodore C64 cartridge images in .CRT format
7    Commodore C64 cartridge images
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
409*********************************************************************/
4110
4211#include "cbm_crt.h"
4312
4413
14
4515//**************************************************************************
4616//  MACROS/CONSTANTS
4717//**************************************************************************
r241749r241750
5222// slot names for the C64 cartridge types
5323static const char * CRT_C64_SLOT_NAMES[_CRT_C64_COUNT] =
5424{
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
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"
11181};
11282
11383
trunk/src/lib/formats/d88_dsk.c
r241749r241750
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            }
501497
502498            sects[i].track       = hs[0];
503499            sects[i].head        = hs[1];
trunk/src/lib/formats/esq16_dsk.c
r241749r241750
5050
5151const char *esqimg_format::name() const
5252{
53   return "esq16";
53   return "img";
5454}
5555
5656const char *esqimg_format::description() const
trunk/src/lib/formats/esq8_dsk.c
r241749r241750
5252
5353const char *esq8img_format::name() const
5454{
55   return "esq8";
55   return "img";
5656}
5757
5858const char *esq8img_format::description() const
trunk/src/lib/formats/flopimg.c
r241749r241750
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 ||
10761074      type == CRC_END ||
10771075      type == SECTOR_LOOP_START ||
10781076      type == SECTOR_LOOP_END ||
r241749r241750
11141112      case CRC_FCS_START:
11151113         crcs[desc[i].p1].type = CRC_FCS;
11161114         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;
11231115      }
11241116
11251117   for(int i=0; desc[i].type != END; i++)
r241749r241750
11391131   case CRC_CBM: return 10;
11401132   case CRC_MACHEAD: return 8;
11411133   case CRC_FCS: return 20;
1142   case CRC_VICTOR_HDR: return 10;
1143   case CRC_VICTOR_DATA: return 20;
11441134   default: return 0;
11451135   }
11461136}
r241749r241750
12811271   // TODO
12821272}
12831273
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
13051274void floppy_image_format_t::fixup_crcs(UINT32 *buffer, gen_crc_info *crcs)
13061275{
13071276   for(int i=0; i != MAX_CRC_COUNT; i++)
13081277      if(crcs[i].write != -1) {
13091278         switch(crcs[i].type) {
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;
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;
13181285         }
13191286         if(crcs[i].fixup_mfm_clock) {
13201287            int offset = crcs[i].write + crc_cells_size(crcs[i].type);
r241749r241750
14361403         raw_w(buffer, offset, desc[index].p2, desc[index].p1);
14371404         break;
14381405
1439      case SYNC_GCR5:
1440         for(int i=0; i<desc[index].p1; i++)
1441            raw_w(buffer, offset, 10, 0xffff);
1442         break;
1443
14441406      case TRACK_ID:
14451407         mfm_w(buffer, offset, 8, track);
14461408         break;
r241749r241750
14651427         _8n1_w(buffer, offset, 8, track);
14661428         break;
14671429
1468      case TRACK_ID_VICTOR_GCR5:
1469         gcr5_w(buffer, offset, 10, 1 + track + (head * 0x80));
1470         break;
1471
14721430      case HEAD_ID:
14731431         mfm_w(buffer, offset, 8, head);
14741432         break;
r241749r241750
15781536      case CRC_CCITT_FM_START:
15791537      case CRC_MACHEAD_START:
15801538      case CRC_FCS_START:
1581      case CRC_VICTOR_HDR_START:
1582      case CRC_VICTOR_DATA_START:
15831539         crcs[desc[index].p1].start = offset;
15841540         break;
15851541
trunk/src/lib/formats/flopimg.h
r241749r241750
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
311310      TRACK_ID,               //!< Track id byte, mfm-encoded
312311      TRACK_ID_FM,            //!< Track id byte, fm-encoded
313312      TRACK_ID_DOS2_GCR5,     //!< Track id byte, gcr5-encoded
314313      TRACK_ID_DOS25_GCR5,    //!< Track id byte, gcr5-encoded
315314      TRACK_ID_GCR6,          //!< Track id low 6 bits, gcr6-encoded
316315      TRACK_ID_8N1,           //!< Track id byte, 8N1-encoded
317      TRACK_ID_VICTOR_GCR5,   //!< Track id byte, gcr5-encoded
318316      HEAD_ID,                //!< Head id byte, mfm-encoded
319317      HEAD_ID_FM,             //!< Head id byte, fm-encoded
320318      HEAD_ID_SWAP,           //!< Head id byte swapped (0->1, 1->0), mfm-encoded
r241749r241750
348346      CRC_CBM_START,          //!< Start a CBM checksum calculation (xor of original data values, gcr5-encoded), p1 = crc id
349347      CRC_MACHEAD_START,      //!< Start of the mac gcr6 sector header checksum calculation (xor of pre-encode 6-bits values, gcr6-encoded)
350348      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
353349      CRC_END,                //!< End the checksum, p1 = crc id
354350      CRC,                    //!< Write a checksum in the apporpriate format, p1 = crc id
355351
r241749r241750
569565   UINT8 sbyte_mfm_r(const UINT8 *bitstream, int &pos, int track_size);
570566
571567private:
572   enum { CRC_NONE, CRC_AMIGA, CRC_CBM, CRC_CCITT, CRC_CCITT_FM, CRC_MACHEAD, CRC_FCS, CRC_VICTOR_HDR, CRC_VICTOR_DATA };
568   enum { CRC_NONE, CRC_AMIGA, CRC_CBM, CRC_CCITT, CRC_CCITT_FM, CRC_MACHEAD, CRC_FCS };
573569   enum { MAX_CRC_COUNT = 64 };
574570
575571   //! Holds data used internally for generating CRCs.
r241749r241750
591587   void fixup_crc_ccitt_fm(UINT32 *buffer, const gen_crc_info *crc);
592588   void fixup_crc_machead(UINT32 *buffer, const gen_crc_info *crc);
593589   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);
596590   void fixup_crcs(UINT32 *buffer, gen_crc_info *crcs);
597591   void collect_crcs(const desc_e *desc, gen_crc_info *crcs);
598592
trunk/src/lib/formats/p6001_cas.c
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
215215   $(LIBOBJ)/formats/tzx_cas.o     \
216216   $(LIBOBJ)/formats/uef_cas.o     \
217217   $(LIBOBJ)/formats/upd765_dsk.o  \
218   $(LIBOBJ)/formats/victor9k_dsk.o\
219218   $(LIBOBJ)/formats/vg5k_cas.o    \
220219   $(LIBOBJ)/formats/vt_cas.o      \
221220   $(LIBOBJ)/formats/vt_dsk.o      \
trunk/src/lib/sqlite3/sqlite3.c
r241749r241750
84948494/*
84958495** Disable MMAP on platforms where it is known to not work
84968496*/
8497#if defined(__OpenBSD__) || defined(__QNXNTO__) || defined(__OS2__)
8497#if defined(__OpenBSD__) || defined(__QNXNTO__)
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
85048500#endif
85058501
85068502/*
trunk/src/lib/web/mongoose.c
r241749r241750
7272#include <stdlib.h>
7373#include <string.h>
7474#include <time.h>
75#ifdef __OS2__
76#include <sys/time.h>  // struct timeval
77#endif
7875#include <signal.h>
7976
8077#ifdef _WIN32
r241749r241750
123120#include <sys/socket.h>
124121#include <sys/select.h>
125122#define closesocket(x) close(x)
126#ifdef __OS2__
127typedef int socklen_t;
128#else
129123#define __cdecl
130#endif
131124#define INVALID_SOCKET (-1)
132125#define to64(x) strtoll(x, NULL, 10)
133126typedef int sock_t;
r241749r241750
11771170#include <dlfcn.h>
11781171#include <inttypes.h>
11791172#include <pwd.h>
1180#ifndef __OS2__
11811173#define O_BINARY 0
1182#endif
11831174#define INT64_FMT PRId64
11841175typedef struct stat file_stat_t;
11851176typedef pid_t process_id_t;
r241749r241750
51615152#define MAP_FAILED NULL
51625153#define MAP_PRIVATE 0
51635154#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
51865155#else
51875156#include <sys/mman.h>
51885157#endif
trunk/src/mame/audio/harddriv.c
r241749r241750
3939
4040void harddriv_state::update_68k_interrupts()
4141{
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);
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);
4444}
4545
4646
r241749r241750
8282
8383WRITE16_MEMBER(harddriv_state::hd68k_snd_reset_w)
8484{
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);
85   m_soundcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
86   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());
r241749r241750
235235
236236WRITE16_MEMBER(harddriv_state::hdsnd68k_320ports_w)
237237{
238   if (m_sounddsp) m_sounddsp->space(AS_IO).write_word((offset & 7) << 1, data);
238   m_sounddsp->space(AS_IO).write_word((offset & 7) << 1, data);
239239}
240240
241241
trunk/src/mame/drivers/8080bw.c
r241749r241750
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
33803364ROM_START( spacecom )
33813365   ROM_REGION( 0x10000, "maincpu", 0 )
33823366   ROM_LOAD( "1f.ic67",      0x0000, 0x0400, BAD_DUMP CRC(703f2cbe) SHA1(b183f9fbedd8658399555c0ba21ecab6370e86cb) )
r241749r241750
46964680GAMEL(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?
46974681GAMEL(1980, ultrainv,   invaders, invaders,  sicv,      driver_device, 0, ROT270, "Taito / Konami", "Ultra Invaders", GAME_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
46984682GAMEL(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 )
47004683GAMEL(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
47014684GAMEL(1979, spacecom,   invaders, spacecom,  spacecom,  _8080bw_state, spacecom, ROT270, "bootleg", "Space Combat (bootleg of Space Invaders)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_spacecom )
47024685GAME( 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
r241749r241750
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);
197196};
198197
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}
214198
215199
216
217200/***************************************************************************
218201
219202    68681 DUART <-> Microtouch touch screen controller communication
r241749r241750
294277   AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram")
295278ADDRESS_MAP_END
296279
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
308280static ADDRESS_MAP_START( quickjac_mem, AS_PROGRAM, 16, adp_state )
309281   AM_RANGE(0x000000, 0x01ffff) AM_ROM
310282   AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc",msm6242_device, read, write, 0x00ff)
r241749r241750
341313
342314static ADDRESS_MAP_START( fstation_mem, AS_PROGRAM, 16, adp_state )
343315   AM_RANGE(0x000000, 0x0fffff) AM_ROM
316   //400000-40001f?
344317   AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("h63484", h63484_device, status_r, address_w)
345318   AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("h63484", h63484_device, data_r, data_w)
346319   AM_RANGE(0x800100, 0x800101) AM_READWRITE(input_r, input_w)
r241749r241750
427400   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN1 )
428401INPUT_PORTS_END
429402
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
452403static INPUT_PORTS_START( fstation )
453404   PORT_START("PA")
454405   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
r241749r241750
576527   MCFG_CPU_PROGRAM_MAP(skattv_mem)
577528MACHINE_CONFIG_END
578529
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
586530static MACHINE_CONFIG_DERIVED( backgamn, skattv )
587531   MCFG_CPU_MODIFY("maincpu")
588532   MCFG_CPU_PROGRAM_MAP(backgamn_mem)
r241749r241750
720664GAME( 1990, backgamn,  0,        backgamn,    skattv, driver_device,    0, ROT0,  "ADP",     "Backgammon", GAME_NOT_WORKING )
721665GAME( 1993, quickjac,  0,        quickjac,    quickjac, driver_device,  0, ROT0,  "ADP",     "Quick Jack", GAME_NOT_WORKING )
722666GAME( 1994, skattv,    0,        skattv,      skattv, driver_device,    0, ROT0,  "ADP",     "Skat TV", GAME_NOT_WORKING )
723GAME( 1995, skattva,   skattv,   skattva,     skattva, driver_device,   0, ROT0,  "ADP",     "Skat TV (version TS3)", GAME_NOT_WORKING )
667GAME( 1995, skattva,   skattv,   skattv,      skattv, driver_device,    0, ROT0,  "ADP",     "Skat TV (version TS3)", GAME_NOT_WORKING )
724668GAME( 1997, fashiong,  0,        fashiong,    skattv, driver_device,    0, ROT0,  "ADP",     "Fashion Gambler (set 1)", GAME_NOT_WORKING )
725669GAME( 1997, fashiong2, fashiong, fashiong,    skattv, driver_device,    0, ROT0,  "ADP",     "Fashion Gambler (set 2)", GAME_NOT_WORKING )
726670GAME( 1999, funlddlx,  0,        funland,     skattv, driver_device,    0, ROT0,  "Stella",  "Funny Land de Luxe", GAME_NOT_WORKING )
trunk/src/mame/drivers/atarig1.c
r241749r241750
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
433431   MCFG_MACHINE_START_OVERRIDE(atarig1_state,atarig1)
434432   MCFG_MACHINE_RESET_OVERRIDE(atarig1_state,atarig1)
435433
trunk/src/mame/drivers/atarisy1.c
r241749r241750
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
718716   MCFG_CPU_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8)
719717   MCFG_CPU_PROGRAM_MAP(sound_map)
720718
trunk/src/mame/drivers/atarisy2.c
r241749r241750
126126
127127
128128#include "emu.h"
129#include "includes/slapstic.h"
129130#include "includes/atarisy2.h"
130131#include "sound/tms5220.h"
131132#include "sound/2151intf.h"
r241749r241750
221222MACHINE_RESET_MEMBER(atarisy2_state,atarisy2)
222223{
223224   atarigen_state::machine_reset();
224   m_slapstic->slapstic_reset();
225   slapstic_reset();
225226   scanline_timer_reset(*m_screen, 64);
226227
227228   m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(atarisy2_state::atarisy2_direct_handler), this));
r241749r241750
12071208   MCFG_CPU_PROGRAM_MAP(sound_map)
12081209   MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, (double)MASTER_CLOCK/2/16/16/16/10)
12091210
1210   MCFG_SLAPSTIC_ADD("slapstic")
1211
12121211   MCFG_MACHINE_START_OVERRIDE(atarisy2_state,atarisy2)
12131212   MCFG_MACHINE_RESET_OVERRIDE(atarisy2_state,atarisy2)
12141213
r241749r241750
31443143   int i;
31453144   UINT8 *cpu1 = memregion("maincpu")->base();
31463145
3147   m_slapstic->slapstic_init(machine(), 105);
3146   slapstic_init(machine(), 105);
31483147
31493148   /* expand the 16k program ROMs into full 64k chunks */
31503149   for (i = 0x10000; i < 0x90000; i += 0x20000)
r241749r241750
31653164   /* without the default EEPROM, 720 hangs at startup due to communication
31663165      issues with the sound CPU; temporarily increasing the sound CPU frequency
31673166      to ~2.2MHz "fixes" the problem */
3168   m_slapstic->slapstic_init(machine(), 107);
3167   slapstic_init(machine(), 107);
31693168
31703169   m_pedal_count = -1;
31713170   m_has_tms5220 = 1;
r241749r241750
31783177   int i;
31793178   UINT8 *cpu1 = memregion("maincpu")->base();
31803179
3181   m_slapstic->slapstic_init(machine(), 108);
3180   slapstic_init(machine(), 108);
31823181
31833182   /* expand the 32k program ROMs into full 64k chunks */
31843183   for (i = 0x10000; i < 0x90000; i += 0x20000)
r241749r241750
31943193   int i;
31953194   UINT8 *cpu1 = memregion("maincpu")->base();
31963195
3197   m_slapstic->slapstic_init(machine(), 109);
3196   slapstic_init(machine(), 109);
31983197
31993198   /* expand the 32k program ROMs into full 64k chunks */
32003199   for (i = 0x10000; i < 0x90000; i += 0x20000)
r241749r241750
32073206
32083207DRIVER_INIT_MEMBER(atarisy2_state,apb)
32093208{
3210   m_slapstic->slapstic_init(machine(), 110);
3209   slapstic_init(machine(), 110);
32113210
32123211   m_pedal_count = 2;
32133212   m_has_tms5220 = 1;
trunk/src/mame/drivers/atetris.c
r241749r241750
4949
5050#include "emu.h"
5151#include "cpu/m6502/m6502.h"
52#include "includes/slapstic.h"
5253#include "includes/atetris.h"
5354#include "sound/sn76496.h"
5455#include "sound/pokey.h"
r241749r241750
114115void atetris_state::machine_reset()
115116{
116117   /* reset the slapstic */
117   m_slapstic_device->slapstic_reset();
118   m_current_bank = m_slapstic_device->slapstic_bank() & 1;
118   slapstic_reset();
119   m_current_bank = slapstic_bank() & 1;
119120   reset_bank();
120121
121122   /* start interrupts going (32V clocked by 16V) */
r241749r241750
133134READ8_MEMBER(atetris_state::atetris_slapstic_r)
134135{
135136   int result = m_slapstic_base[0x2000 + offset];
136   int new_bank = m_slapstic_device->slapstic_tweak(space, offset) & 1;
137   int new_bank = slapstic_tweak(space, offset) & 1;
137138
138139   /* update for the new bank */
139140   if (new_bank != m_current_bank)
r241749r241750
307308   MCFG_CPU_ADD("maincpu", M6502,MASTER_CLOCK/8)
308309   MCFG_CPU_PROGRAM_MAP(main_map)
309310
310   MCFG_SLAPSTIC_ADD("slapstic")
311
312311   MCFG_NVRAM_ADD_1FILL("nvram")
313312
314313   /* video hardware */
r241749r241750
457456{
458457   UINT8 *rgn = memregion("maincpu")->base();
459458
460   m_slapstic_device->slapstic_init(machine(), 101);
459   slapstic_init(machine(), 101);
461460   m_slapstic_source = &rgn[0x10000];
462461   m_slapstic_base = &rgn[0x04000];
463462}
trunk/src/mame/drivers/bagman.c
r241749r241750
256256   PORT_DIPSETTING(    0x00, DEF_STR( French ) )
257257INPUT_PORTS_END
258258
259static INPUT_PORTS_START( botanicf )
259static INPUT_PORTS_START( botanic )
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" )
271263   PORT_DIPNAME( 0x08, 0x08, "Invulnerability Fruits" )    PORT_DIPLOCATION("SW1:4")
272264   PORT_DIPSETTING(    0x08, "3" )
273265   PORT_DIPSETTING(    0x00, DEF_STR( None ) )
r241749r241750
276268   PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW1:7" )
277269INPUT_PORTS_END
278270
279static INPUT_PORTS_START( botanici )
280   PORT_INCLUDE( botanicf )
281271
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
301272static INPUT_PORTS_START( squaitsa )
302273   PORT_START("P1")
303274   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
r241749r241750
863834   ROM_LOAD( "6331-1.3r",    0x0020, 0x0020, CRC(14ee1603) SHA1(f3c071399606b727ae7dd0bfc21e1c6ca2d43c7c) )
864835ROM_END
865836
866
867
868
869837ROM_START( botanic )
870838   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 )
893839   ROM_LOAD( "bota_05.9e",    0x0000, 0x1000, CRC(cc66e6f8) SHA1(251481b16f8925a11f02f49e5a79f6524460aa6c) )
894840   ROM_LOAD( "bota_06.9f",    0x1000, 0x1000, CRC(59892f41) SHA1(eb01601a9163679560b878366aaf7cc0fb54a3e9) )
895841   ROM_LOAD( "bota_07.9j",    0x2000, 0x1000, CRC(b7c544ef) SHA1(75b5224c313e97c2c02ca7e9bc3f682278cb7a5c) )
r241749r241750
988934
989935GAME( 1983, pickin,   0,       pickin,  pickin, driver_device,  0,       ROT270, "Valadon Automation", "Pickin'", 0 )
990936
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 )
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)
993938
994939GAME( 1984, squaitsa, 0,       squaitsa,squaitsa, driver_device,0,       ROT0,   "Itisa", "Squash (Itisa)", 0 )
trunk/src/mame/drivers/beaminv.c
r241749r241750
11/***************************************************************************
22
3    Tekunon Kougyou(Teknon Kogyo) Beam Invader hardware
3    Tekunon Kougyou Beam Invader hardware
44
55    driver by Zsolt Vasvari
66
r241749r241750
385385 *
386386 *************************************/
387387
388GAMEL( 1979, beaminv,  0,       beaminv, beaminv, driver_device, 0, ROT270, "Teknon Kogyo", "Beam Invader", GAME_NO_SOUND | GAME_SUPPORTS_SAVE, layout_beaminv )
388GAMEL( 1979, beaminv,  0,       beaminv, beaminv, driver_device, 0, ROT270, "Tekunon Kougyou",   "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
r241749r241750
121121
122122#include "emu.h"
123123#include "cpu/i386/i386.h"
124#include "machine/lpci.h"
124#include "machine/pci.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"
131130#include "bus/isa/trident.h"
132131
133132
r241749r241750
662661   /* video hardware */
663662   MCFG_FRAGMENT_ADD( pcvideo_trident_vga )
664663
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
670664   /* sound hardware */
671665   MCFG_SPEAKER_STANDARD_STEREO("lspeaker","rspeaker")
672666   MCFG_DAC_ADD("dac_l")
trunk/src/mame/drivers/cclimber.c
r241749r241750
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
18221791/* This set came from a 'Silver Land' board with Silver Land GFX roms, however, the program roms are nearly
18231792   the same as River Patrol but appear to have an original ORCA copyright
18241793
r241749r241750
23942363GAME( 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
23952364GAME( 1981, ckongalc,    ckong,    cclimber, ckong, driver_device,    0,        ROT270, "bootleg (Alca)", "Crazy Kong (Alca bootleg)", 0 )
23962365GAME( 1981, monkeyd,     ckong,    cclimber, ckong, driver_device,    0,        ROT270, "bootleg", "Monkey Donkey", 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 )
2366GAME( 1981, dking,       ckong   , cclimber, ckong, cclimber_state,    dking,    ROT270, "bootleg", "Donkey King", 0 )
23992367
24002368/* these sets have correct colours, and also contain the graphics used for the extra attract screen in the BG roms, but it is unused
24012369 - the Falcon logo in the text roms is still unused
trunk/src/mame/drivers/chihiro.c
r241749r241750
358358
359359#include "emu.h"
360360#include "cpu/i386/i386.h"
361#include "machine/lpci.h"
361#include "machine/pci.h"
362362#include "machine/pic8259.h"
363363#include "machine/pit8253.h"
364364#include "machine/idectrl.h"
trunk/src/mame/drivers/cobra.c
r241749r241750
313313
314314#include "emu.h"
315315#include "cpu/powerpc/ppc.h"
316#include "machine/lpci.h"
316#include "machine/pci.h"
317317#include "machine/ataintf.h"
318318#include "machine/idehd.h"
319319#include "machine/jvshost.h"
trunk/src/mame/drivers/coolridr.c
r241749r241750
1818    - i8237 purpose is unknown (missing ROM for comms?).
1919    - verify zooming etc. our current algorithm is a bit ugly for text
2020
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
21
2622=======================================================================================================
2723
2824Cool Riders
2925Sega 1994
3026
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.
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.
3532
3633
3734PCB Layouts
trunk/src/mame/drivers/cps1.c
r241749r241750
40024002   ROM_LOAD( "sou1",         0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
40034003
40044004   ROM_REGION( 0x0200, "bboardplds", 0 )
4005   ROM_LOAD( "sth63b.1a",    0x0000, 0x0117, BAD_DUMP CRC(c706b773) SHA1(ddfe2e747637eec081a5125cfefcb478a4ba9e76) ) /* Handcrafted but works on actual PCB.  Redump needed */
4005   ROM_LOAD( "sth63b.1a",    0x0000, 0x0117, NO_DUMP )
40064006   ROM_LOAD( "iob1.12d",     0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
40074007   ROM_LOAD( "bprg1.11d",    0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
40084008
r241749r241750
44834483   ROM_LOAD( "sou1",         0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
44844484
44854485   ROM_REGION( 0x0200, "bboardplds", 0 )
4486   ROM_LOAD( "ara63b.1a",    0x0000, 0x0117, BAD_DUMP CRC(f5569c93) SHA1(7db7cf23639036590eef1e5e309f08560859efaf) ) /* Handcrafted but works on actual PCB.  Redump needed */
4486   ROM_LOAD( "ara63b.1a",    0x0000, 0x0117, NO_DUMP )
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
r241749r241750
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
517518   ROM_LOAD("mushisam_u2", 0x000000, 0x8400000, CRC(4f0a842a) SHA1(33f3550ec676a7088b6348cd72c16cc6594afb84) ) /* (2004/10/12.MASTER VER.) */
518519
519520   ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF)
r241749r241750
527528   ROM_RELOAD(0x200000,0x200000)
528529
529530   ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF)
531//  ROM_LOAD("mushisamb_u2", 0x000000, 0x8400000, CRC(6cc9d1a9) SHA1(17907798dce1defadd10354cec6c8d364e045570) ) // bad rom, one corrupt asset vs. below
530532   ROM_LOAD("mushisam_u2", 0x000000, 0x8400000, CRC(4f0a842a) SHA1(33f3550ec676a7088b6348cd72c16cc6594afb84) ) /* (2004/10/12.MASTER VER.) */
531533
532534   ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF)
r241749r241750
614616   ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(c631a766) SHA1(8bb6934a2f5b8a9841c3dcf85192b1743773dd8b) )
615617ROM_END
616618
617ROM_START( futaribl ) /* Title screen shows (c) 2007 despite the 2009 "master" date - Also prints "Another Ver" to the title screen */
619ROM_START( futaribl )
618620   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)
632621   ROM_LOAD16_WORD_SWAP( "futariblk_u4", 0x000000, 0x200000, CRC(6db13c62) SHA1(6a53ce7f70b754936ccbb3a4674d4b2f03979644) ) /* (2007/12/11 BLACK LABEL VER) */
633622   ROM_RELOAD(0x200000,0x200000)
634623
r241749r241750
855844// The black label versions are intentionally not set as clones, they were re-releases with different game codes, not bugfixes.
856845
857846// CA011  Mushihime-Sama
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 )
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 )
861850
862851// CA012  Ibara
863GAME( 2005, ibara,      0,        cv1k,   cv1k, cv1k_state, mushisam,  ROT270, "Cave (AMI license)", "Ibara (2005/03/22 MASTER VER..)",                                0 )
852GAME( 2005, ibara,      0,        cv1k,   cv1k, cv1k_state, mushisam,  ROT270, "Cave (AMI license)", "Ibara (2005/03/22 MASTER VER..)",                                0 )
864853
865854// CA012B Ibara Kuro Black Label
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 )
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 )
868857
869858// CA013  Espgaluda II
870GAME( 2005, espgal2,    0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Espgaluda II (2005/11/14 MASTER VER)",                            0 )
859GAME( 2005, espgal2,    0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Espgaluda II (2005/11/14 MASTER VER)",                           0 )
871860
872861// CA???  Puzzle! Mushihime-Tama
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 )
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 )
875864
876865// CA014  Pink Sweets: Ibara Sorekara
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?
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?
881870
882871// CA015  Mushihime-Sama Futari
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 )
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 )
886875
887876// CA016  Muchi Muchi Pork!
888GAME( 2007, mmpork,     0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Muchi Muchi Pork! (2007/ 4/17 MASTER VER.)",                      0 )
877GAME( 2007, mmpork,     0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Muchi Muchi Pork! (2007/ 4/17 MASTER VER.)",                     0 )
889878
890879// CA015B Mushihime-Sama Futari Black Label
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 )
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 )
893881
894882// CA017  Deathsmiles
895GAME( 2007, deathsml,   0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT0,   "Cave (AMI license)", "Deathsmiles (2007/10/09 MASTER VER)",                            0 )
883GAME( 2007, deathsml,   0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT0,   "Cave (AMI license)", "Deathsmiles (2007/10/09 MASTER VER)",                            0 )
896884
897885// CA017B Deathsmiles Black Label
898GAME( 2008, dsmbl,      0,        cv1k_d, cv1k, cv1k_state, espgal2,   ROT0,   "Cave (AMI license)", "Deathsmiles MegaBlack Label (2008/10/06 MEGABLACK LABEL VER)",    0 )
886GAME( 2008, dsmbl,      0,        cv1k_d, cv1k, cv1k_state, espgal2,   ROT0,   "Cave (AMI license)", "Deathsmiles MegaBlack Label (2008/10/06 MEGABLACK LABEL VER)",   0 )
899887
900888// CA019  Do-Don-Pachi Dai-Fukkatsu
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 )
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 )
903891
904892// CMDL01 Medal Mahjong Moukari Bancho
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 )
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 )
trunk/src/mame/drivers/cyberbal.c
r241749r241750
389389   MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
390390   MCFG_CPU_PROGRAM_MAP(main_map)
391391
392   MCFG_SLAPSTIC_ADD("slapstic")
393
394392   MCFG_CPU_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8)
395393   MCFG_CPU_PROGRAM_MAP(sound_map)
396394   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
r241749r241750
1313
1414#include "emu.h"
1515#include "cpu/i386/i386.h"
16#include "machine/lpci.h"
16#include "machine/pci.h"
1717#include "machine/pckeybrd.h"
1818#include "machine/idectrl.h"
1919#include "video/pc_vga.h"
trunk/src/mame/drivers/funkball.c
r241749r241750
7171
7272#include "emu.h"
7373#include "cpu/i386/i386.h"
74#include "machine/lpci.h"
74#include "machine/pci.h"
7575#include "machine/pckeybrd.h"
7676#include "machine/idectrl.h"
7777#include "video/voodoo.h"
trunk/src/mame/drivers/funworld.c
r241749r241750
63526352   }
63536353
63546354   j = 1;
6355   i = 0x81;
63566355
6357   do
6356   for (i = 0x81; i < (0x81 + ARRAY_LENGTH(rcdino4_keys80));)
63586357   {
63596358      UINT8 key;
63606359
r241749r241750
64196418      while (j < 0x100);
64206419
64216420      j &= 0xff;
6421      do {
6422         assert((i+1 - 0x81) >= 0 && (i+1 - 0x81) < ARRAY_LENGTH(rcdino4_keys80));
6423      } while (!rcdino4_keys80[++i - 0x81]);
64226424
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
64316425      if ((i == 0xa4)
64326426         || (i == 0xb0)
64336427         || (i == 0xf8)
r241749r241750
64366430         j = 0; /* re-align offset after skipping some pages */
64376431      }
64386432   }
6439   while (1);
64406433}
64416434
64426435DRIVER_INIT_MEMBER(funworld_state, rcdinch)
trunk/src/mame/drivers/galaxian.c
r241749r241750
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_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_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
r241749r241750
6464
6565#include "emu.h"
6666#include "cpu/i386/i386.h"
67#include "machine/lpci.h"
67#include "machine/pci.h"
6868#include "machine/pcshare.h"
6969#include "machine/pckeybrd.h"
7070#include "machine/idectrl.h"
trunk/src/mame/drivers/gammagic.c
r241749r241750
3232#include "machine/cr589.h"
3333//#include "machine/i82371sb.h"
3434//#include "machine/i82439tx.h"
35#include "machine/lpci.h"
35#include "machine/pci.h"
3636#include "machine/pcshare.h"
3737#include "machine/pckeybrd.h"
3838#include "video/pc_vga.h"
trunk/src/mame/drivers/gauntlet.c
r241749r241750
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
504502   MCFG_CPU_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8)
505503   MCFG_CPU_PROGRAM_MAP(sound_map)
506504
trunk/src/mame/drivers/harddriv.c
r241749r241750
330330#include "includes/slapstic.h"
331331#include "includes/harddriv.h"
332332
333#include "racedrivpan.lh"
334333
335334/*************************************
336335 *
r241749r241750
338337 *
339338 *************************************/
340339
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
530340static ADDRESS_MAP_START( driver_68k_map, AS_PROGRAM, 16, harddriv_state )
531341   ADDRESS_MAP_UNMAP_HIGH
532342   AM_RANGE(0x000000, 0x0fffff) AM_ROM
r241749r241750
535345   AM_RANGE(0x608000, 0x60bfff) AM_WRITE(watchdog_reset16_w)
536346   AM_RANGE(0x60c000, 0x60ffff) AM_WRITE(hd68k_irq_ack_w)
537347   AM_RANGE(0xa00000, 0xa7ffff) AM_WRITE(hd68k_wr0_write)
538   AM_RANGE(0xa80000, 0xafffff) AM_READ(hd68k_a80000_r) AM_WRITE(hd68k_wr1_write)
348   AM_RANGE(0xa80000, 0xafffff) AM_READ_PORT("a80000") AM_WRITE(hd68k_wr1_write)
539349   AM_RANGE(0xb00000, 0xb7ffff) AM_READWRITE(hd68k_adc8_r, hd68k_wr2_write)
540350   AM_RANGE(0xb80000, 0xbfffff) AM_READWRITE(hd68k_adc12_r, hd68k_adc_control_w)
541351   AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(hd68k_gsp_io_r, hd68k_gsp_io_w)
r241749r241750
582392   AM_RANGE(0x608000, 0x60bfff) AM_WRITE(watchdog_reset16_w)
583393   AM_RANGE(0x60c000, 0x60ffff) AM_READWRITE(hd68k_port0_r, hd68k_irq_ack_w)
584394   AM_RANGE(0xa00000, 0xa7ffff) AM_WRITE(hd68k_wr0_write)
585   AM_RANGE(0xa80000, 0xafffff) AM_READ(hd68k_a80000_r) AM_WRITE(hd68k_wr1_write)
395   AM_RANGE(0xa80000, 0xafffff) AM_READ_PORT("a80000") AM_WRITE(hd68k_wr1_write)
586396   AM_RANGE(0xb00000, 0xb7ffff) AM_READWRITE(hd68k_adc8_r, hd68k_wr2_write)
587397   AM_RANGE(0xb80000, 0xbfffff) AM_READWRITE(hd68k_adc12_r, hd68k_adc_control_w)
588398   AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(hd68k_gsp_io_r, hd68k_gsp_io_w)
r241749r241750
620430   AM_RANGE(0x608000, 0x60bfff) AM_WRITE(watchdog_reset16_w)
621431   AM_RANGE(0x60c000, 0x60ffff) AM_READWRITE(hd68k_port0_r, hd68k_irq_ack_w)
622432   AM_RANGE(0xa00000, 0xa7ffff) AM_WRITE(hd68k_wr0_write)
623   AM_RANGE(0xa80000, 0xafffff) AM_READ(hd68k_a80000_r) AM_WRITE(hd68k_wr1_write)
433   AM_RANGE(0xa80000, 0xafffff) AM_READ_PORT("a80000") AM_WRITE(hd68k_wr1_write)
624434   AM_RANGE(0xb00000, 0xb7ffff) AM_READWRITE(hd68k_adc8_r, hd68k_wr2_write)
625435   AM_RANGE(0xb80000, 0xbfffff) AM_READWRITE(hd68k_adc12_r, hd68k_adc_control_w)
626436   AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(hd68k_gsp_io_r, hd68k_gsp_io_w)
r241749r241750
787597
788598
789599
790
791600/*************************************
792601 *
793602 *  Port definitions
r241749r241750
795604 *************************************/
796605
797606static INPUT_PORTS_START( harddriv )
798   PORT_START("mainpcb:IN0")       /* 600000 */
607   PORT_START("IN0")       /* 600000 */
799608   PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
800609   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
801610   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
802611   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* HBLANK */
803   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
612   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
804613   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 12-bit EOC */
805614   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 8-bit EOC */
806615   PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
807616   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
808617   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
809618
810   PORT_START("mainpcb:SW1")       /* 600002 */
619   PORT_START("SW1")       /* 600002 */
811620   PORT_DIPNAME( 0x01, 0x01, "SW1:8" )
812621   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
813622   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r241749r241750
833642   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
834643   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
835644
836   PORT_START("mainpcb:a80000")
645   PORT_START("a80000")
837646   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Abort")    /* abort */
838647   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Key")  /* key */
839648   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )    /* aux coin */
840649   PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED )
841650
842   PORT_START("mainpcb:8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
651   PORT_START("8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
843652   PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
844653
845   PORT_START("mainpcb:8BADC1")        /* b00000 - 8 bit ADC 1 - clutch pedal */
654   PORT_START("8BADC1")        /* b00000 - 8 bit ADC 1 - clutch pedal */
846655   PORT_BIT( 0xff, 0x00, IPT_PEDAL3 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) PORT_NAME("Clutch Pedal")
847656
848   PORT_START("mainpcb:8BADC2")        /* b00000 - 8 bit ADC 2 - seat */
657   PORT_START("8BADC2")        /* b00000 - 8 bit ADC 2 - seat */
849658   PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
850659
851   PORT_START("mainpcb:8BADC3")        /* b00000 - 8 bit ADC 3 - shifter lever Y */
660   PORT_START("8BADC3")        /* b00000 - 8 bit ADC 3 - shifter lever Y */
852661   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")
853662
854   PORT_START("mainpcb:8BADC4")        /* b00000 - 8 bit ADC 4 - shifter lever X*/
663   PORT_START("8BADC4")        /* b00000 - 8 bit ADC 4 - shifter lever X*/
855664   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")
856665
857   PORT_START("mainpcb:8BADC5")        /* b00000 - 8 bit ADC 5 - wheel */
666   PORT_START("8BADC5")        /* b00000 - 8 bit ADC 5 - wheel */
858667   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Wheel")
859668
860   PORT_START("mainpcb:8BADC6")        /* b00000 - 8 bit ADC 6 - line volts */
669   PORT_START("8BADC6")        /* b00000 - 8 bit ADC 6 - line volts */
861670   PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
862671
863   PORT_START("mainpcb:8BADC7")        /* b00000 - 8 bit ADC 7 - shift force */
672   PORT_START("8BADC7")        /* b00000 - 8 bit ADC 7 - shift force */
864673   PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
865674
866   PORT_START("mainpcb:12BADC0")       /* b80000 - 12 bit ADC 0 - steering wheel */
675   PORT_START("12BADC0")       /* b80000 - 12 bit ADC 0 - steering wheel */
867676   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel")
868677
869   PORT_START("mainpcb:12BADC1")       /* b80000 - 12 bit ADC 1 - force brake */
678   PORT_START("12BADC1")       /* b80000 - 12 bit ADC 1 - force brake */
870679   PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Force Brake")
871680
872   PORT_START("mainpcb:12BADC2")       /* b80000 - 12 bit ADC 2 */
681   PORT_START("12BADC2")       /* b80000 - 12 bit ADC 2 */
873682   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
874683
875   PORT_START("mainpcb:12BADC3")       /* b80000 - 12 bit ADC 3 */
684   PORT_START("12BADC3")       /* b80000 - 12 bit ADC 3 */
876685   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
877   
878686INPUT_PORTS_END
879687
880688
881689static INPUT_PORTS_START( racedriv )
882   PORT_START("mainpcb:IN0")       /* 600000 */
690   PORT_START("IN0")       /* 600000 */
883691   PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
884692   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
885693   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
886694   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* HBLANK */
887   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
695   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
888696   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 12-bit EOC */
889697   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 8-bit EOC */
890698   PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
891699   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
892700   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
893701
894   PORT_START("mainpcb:SW1")       /* 600002 */
702   PORT_START("SW1")       /* 600002 */
895703   PORT_DIPNAME( 0x01, 0x01, "SW1:8" )
896704   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
897705   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r241749r241750
917725   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
918726   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
919727
920   PORT_START("mainpcb:a80000")
728   PORT_START("a80000")
921729   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Abort")    /* abort */
922730   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Key")  /* key */
923731   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )    /* aux coin */
924732   PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED )
925733
926   PORT_START("mainpcb:8BADC0")        /* b00000 - 8 bit ADC 0 - gas pedal */
734   PORT_START("8BADC0")        /* b00000 - 8 bit ADC 0 - gas pedal */
927735   PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
928736
929   PORT_START("mainpcb:8BADC1")        /* b00000 - 8 bit ADC 1 - clutch pedal */
737   PORT_START("8BADC1")        /* b00000 - 8 bit ADC 1 - clutch pedal */
930738   PORT_BIT( 0xff, 0x00, IPT_PEDAL3 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) PORT_NAME("Clutch Pedal")
931739
932   PORT_START("mainpcb:8BADC2")        /* b00000 - 8 bit ADC 2 - seat */
740   PORT_START("8BADC2")        /* b00000 - 8 bit ADC 2 - seat */
933741   PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
934742
935   PORT_START("mainpcb:8BADC3")        /* b00000 - 8 bit ADC 3 - shifter lever Y */
743   PORT_START("8BADC3")        /* b00000 - 8 bit ADC 3 - shifter lever Y */
936744   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")
937745
938   PORT_START("mainpcb:8BADC4")        /* b00000 - 8 bit ADC 4 - shifter lever X*/
746   PORT_START("8BADC4")        /* b00000 - 8 bit ADC 4 - shifter lever X*/
939747   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")
940748
941   PORT_START("mainpcb:8BADC5")        /* b00000 - 8 bit ADC 5 - wheel */
749   PORT_START("8BADC5")        /* b00000 - 8 bit ADC 5 - wheel */
942750   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Wheel")
943751
944   PORT_START("mainpcb:8BADC6")        /* b00000 - 8 bit ADC 6 - line volts */
752   PORT_START("8BADC6")        /* b00000 - 8 bit ADC 6 - line volts */
945753   PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
946754
947   PORT_START("mainpcb:8BADC7")        /* b00000 - 8 bit ADC 7 */
755   PORT_START("8BADC7")        /* b00000 - 8 bit ADC 7 */
948756   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
949757
950   PORT_START("mainpcb:12BADC0")       /* b80000 - 12 bit ADC 0 - steering wheel */
758   PORT_START("12BADC0")       /* b80000 - 12 bit ADC 0 - steering wheel */
951759   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel")
952760
953   PORT_START("mainpcb:12BADC1")       /* b80000 - 12 bit ADC 1 - force brake */
761   PORT_START("12BADC1")       /* b80000 - 12 bit ADC 1 - force brake */
954762   PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Force Brake")
955763
956   PORT_START("mainpcb:12BADC2")       /* b80000 - 12 bit ADC 2 */
764   PORT_START("12BADC2")       /* b80000 - 12 bit ADC 2 */
957765   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
958766
959   PORT_START("mainpcb:12BADC3")       /* b80000 - 12 bit ADC 3 */
767   PORT_START("12BADC3")       /* b80000 - 12 bit ADC 3 */
960768   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
961769INPUT_PORTS_END
962770
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 )
977771
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
1004772static INPUT_PORTS_START( racedrivc )
1005   PORT_START("mainpcb:IN0")       /* 60c000 */
773   PORT_START("IN0")       /* 60c000 */
1006774   PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
1007775   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1008776   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1009777   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* HBLANK */
1010   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
778   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
1011779   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 12-bit EOC */
1012780   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 8-bit EOC */
1013781   PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
1014782   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
1015783   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
1016784
1017   PORT_START("mainpcb:SW1")       /* 60c002 */
785   PORT_START("SW1")       /* 60c002 */
1018786   PORT_DIPNAME( 0x01, 0x01, "SW1:8" )
1019787   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1020788   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r241749r241750
1040808   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1041809   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1042810
1043   PORT_START("mainpcb:a80000")
811   PORT_START("a80000")
1044812   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Abort")
1045813   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Key")
1046814   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )    /* aux coin */
r241749r241750
1053821   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL )  /* center edge on steering wheel */
1054822   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
1055823
1056   PORT_START("mainpcb:8BADC0")        /* b00000 - 8 bit ADC 0 - gas pedal */
824   PORT_START("8BADC0")        /* b00000 - 8 bit ADC 0 - gas pedal */
1057825   PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
1058826
1059   PORT_START("mainpcb:8BADC1")        /* b00000 - 8 bit ADC 1 - clutch pedal */
827   PORT_START("8BADC1")        /* b00000 - 8 bit ADC 1 - clutch pedal */
1060828   PORT_BIT( 0xff, 0x00, IPT_PEDAL3 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) PORT_NAME("Clutch Pedal")
1061829
1062   PORT_START("mainpcb:8BADC2")        /* b00000 - 8 bit ADC 2 */
830   PORT_START("8BADC2")        /* b00000 - 8 bit ADC 2 */
1063831   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1064832
1065   PORT_START("mainpcb:8BADC3")        /* b00000 - 8 bit ADC 3 */
833   PORT_START("8BADC3")        /* b00000 - 8 bit ADC 3 */
1066834   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1067835
1068   PORT_START("mainpcb:8BADC4")        /* b00000 - 8 bit ADC 4 */
836   PORT_START("8BADC4")        /* b00000 - 8 bit ADC 4 */
1069837   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1070838
1071   PORT_START("mainpcb:8BADC5")        /* b00000 - 8 bit ADC 5 */
839   PORT_START("8BADC5")        /* b00000 - 8 bit ADC 5 */
1072840   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1073841
1074   PORT_START("mainpcb:8BADC6")        /* b00000 - 8 bit ADC 6 - force brake */
842   PORT_START("8BADC6")        /* b00000 - 8 bit ADC 6 - force brake */
1075843   PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Force Brake")
1076844
1077   PORT_START("mainpcb:8BADC7")        /* b00000 - 8 bit ADC 7 */
845   PORT_START("8BADC7")        /* b00000 - 8 bit ADC 7 */
1078846   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1079847
1080   PORT_START("mainpcb:12BADC0")       /* 400000 - steering wheel */
848   PORT_START("12BADC0")       /* 400000 - steering wheel */
1081849   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel")
1082850
1083851   /* dummy ADC ports to end up with the same number as the full version */
1084   PORT_START("mainpcb:12BADC1")
852   PORT_START("12BADC1")
1085853   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1086   PORT_START("mainpcb:12BADC2")
854   PORT_START("12BADC2")
1087855   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1088   PORT_START("mainpcb:12BADC3")
856   PORT_START("12BADC3")
1089857   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1090858INPUT_PORTS_END
1091859
1092860
1093861static INPUT_PORTS_START( stunrun )
1094   PORT_START("mainpcb:IN0")       /* 60c000 */
862   PORT_START("IN0")       /* 60c000 */
1095863   PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
1096864   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1097865   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1098866   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* HBLANK */
1099   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
867   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
1100868   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 12-bit EOC */
1101869   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 8-bit EOC */
1102870   PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
1103871   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
1104872   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
1105873
1106   PORT_START("mainpcb:SW1")       /* 60c002 */
874   PORT_START("SW1")       /* 60c002 */
1107875   PORT_DIPNAME( 0x01, 0x00, "SW1:8" )
1108876   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1109877   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r241749r241750
1129897   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1130898   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1131899
1132   PORT_START("mainpcb:a80000")
900   PORT_START("a80000")
1133901   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 )
1134902   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 )
1135903   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 )
1136904   PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED )
1137905
1138   PORT_START("mainpcb:8BADC0")        /* b00000 - 8 bit ADC 0 */
906   PORT_START("8BADC0")        /* b00000 - 8 bit ADC 0 */
1139907   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)
1140908
1141   PORT_START("mainpcb:8BADC1")        /* b00000 - 8 bit ADC 1 */
909   PORT_START("8BADC1")        /* b00000 - 8 bit ADC 1 */
1142910   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1143911
1144   PORT_START("mainpcb:8BADC2")        /* b00000 - 8 bit ADC 2 */
912   PORT_START("8BADC2")        /* b00000 - 8 bit ADC 2 */
1145913   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)
1146914
1147   PORT_START("mainpcb:8BADC3")        /* b00000 - 8 bit ADC 3 */
915   PORT_START("8BADC3")        /* b00000 - 8 bit ADC 3 */
1148916   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1149917
1150   PORT_START("mainpcb:8BADC4")        /* b00000 - 8 bit ADC 4 */
918   PORT_START("8BADC4")        /* b00000 - 8 bit ADC 4 */
1151919   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1152920
1153   PORT_START("mainpcb:8BADC5")        /* b00000 - 8 bit ADC 5 */
921   PORT_START("8BADC5")        /* b00000 - 8 bit ADC 5 */
1154922   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1155923
1156   PORT_START("mainpcb:8BADC6")        /* b00000 - 8 bit ADC 6 */
924   PORT_START("8BADC6")        /* b00000 - 8 bit ADC 6 */
1157925   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1158926
1159   PORT_START("mainpcb:8BADC7")        /* b00000 - 8 bit ADC 7 */
927   PORT_START("8BADC7")        /* b00000 - 8 bit ADC 7 */
1160928   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1161929
1162   PORT_START("mainpcb:12BADC0")       /* b80000 - 12 bit ADC 0 */
930   PORT_START("12BADC0")       /* b80000 - 12 bit ADC 0 */
1163931   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1164932
1165   PORT_START("mainpcb:12BADC1")       /* b80000 - 12 bit ADC 1 */
933   PORT_START("12BADC1")       /* b80000 - 12 bit ADC 1 */
1166934   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1167935
1168   PORT_START("mainpcb:12BADC2")       /* b80000 - 12 bit ADC 2 */
936   PORT_START("12BADC2")       /* b80000 - 12 bit ADC 2 */
1169937   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1170938
1171   PORT_START("mainpcb:12BADC3")       /* b80000 - 12 bit ADC 3 */
939   PORT_START("12BADC3")       /* b80000 - 12 bit ADC 3 */
1172940   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1173941
1174942   /* stunrun has its own coins */
r241749r241750
1180948
1181949
1182950static INPUT_PORTS_START( steeltal )
1183   PORT_START("mainpcb:IN0")       /* 60c000 */
951   PORT_START("IN0")       /* 60c000 */
1184952   PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
1185953   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1186954   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1187955   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* HBLANK */
1188   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
956   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
1189957   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 12-bit EOC */
1190958   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 8-bit EOC */
1191959   PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
1192960   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
1193961   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
1194962
1195   PORT_START("mainpcb:SW1")       /* 60c002 */
963   PORT_START("SW1")       /* 60c002 */
1196964   PORT_DIPNAME( 0x01, 0x00, "SW1:8" )
1197965   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1198966   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r241749r241750
1218986   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1219987   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1220988
1221   PORT_START("mainpcb:a80000")
989   PORT_START("a80000")
1222990   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Trigger")
1223991   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Thumb")
1224992   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Zoom")
1225993   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Real Helicopter Flight")
1226994   PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNUSED )
1227995
1228   PORT_START("mainpcb:8BADC0")        /* b00000 - 8 bit ADC 0 */
996   PORT_START("8BADC0")        /* b00000 - 8 bit ADC 0 */
1229997   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1230998
1231   PORT_START("mainpcb:8BADC1")        /* b00000 - 8 bit ADC 1 */
999   PORT_START("8BADC1")        /* b00000 - 8 bit ADC 1 */
12321000   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )     /* volume control */
12331001
1234   PORT_START("mainpcb:8BADC2")        /* b00000 - 8 bit ADC 2 */
1002   PORT_START("8BADC2")        /* b00000 - 8 bit ADC 2 */
12351003   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
12361004
1237   PORT_START("mainpcb:8BADC3")        /* b00000 - 8 bit ADC 3 */
1005   PORT_START("8BADC3")        /* b00000 - 8 bit ADC 3 */
12381006   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
12391007
1240   PORT_START("mainpcb:8BADC4")        /* b00000 - 8 bit ADC 4 */
1008   PORT_START("8BADC4")        /* b00000 - 8 bit ADC 4 */
12411009   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
12421010
1243   PORT_START("mainpcb:8BADC5")        /* b00000 - 8 bit ADC 5 */
1011   PORT_START("8BADC5")        /* b00000 - 8 bit ADC 5 */
12441012   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
12451013
1246   PORT_START("mainpcb:8BADC6")        /* b00000 - 8 bit ADC 6 */
1014   PORT_START("8BADC6")        /* b00000 - 8 bit ADC 6 */
12471015   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
12481016
1249   PORT_START("mainpcb:8BADC7")        /* b00000 - 8 bit ADC 7 */
1017   PORT_START("8BADC7")        /* b00000 - 8 bit ADC 7 */
12501018   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
12511019
1252   PORT_START("mainpcb:12BADC0")       /* b80000 - 12 bit ADC 0 */
1020   PORT_START("12BADC0")       /* b80000 - 12 bit ADC 0 */
12531021   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)   /* left/right */
12541022
1255   PORT_START("mainpcb:12BADC1")       /* b80000 - 12 bit ADC 1 */
1023   PORT_START("12BADC1")       /* b80000 - 12 bit ADC 1 */
12561024   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)   /* up/down */
12571025
1258   PORT_START("mainpcb:12BADC2")       /* b80000 - 12 bit ADC 2 */
1026   PORT_START("12BADC2")       /* b80000 - 12 bit ADC 2 */
12591027   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Z ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)  PORT_NAME("Collective") PORT_REVERSE /* collective */
12601028
1261   PORT_START("mainpcb:12BADC3")       /* b80000 - 12 bit ADC 3 */
1029   PORT_START("12BADC3")       /* b80000 - 12 bit ADC 3 */
12621030   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)  PORT_NAME("Rudder") PORT_PLAYER(2)   /* rudder */
12631031
12641032   /* steeltal has its own coins */
r241749r241750
12701038
12711039
12721040static INPUT_PORTS_START( strtdriv )
1273   PORT_START("mainpcb:IN0")       /* 60c000 */
1041   PORT_START("IN0")       /* 60c000 */
12741042   PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
12751043   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
12761044   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
12771045   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* HBLANK */
1278   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
1046   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
12791047   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 12-bit EOC */
12801048   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 8-bit EOC */
12811049   PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
12821050   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
12831051   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
12841052
1285   PORT_START("mainpcb:SW1")       /* 60c002 */
1053   PORT_START("SW1")       /* 60c002 */
12861054   PORT_DIPNAME( 0x01, 0x01, "SW1:8" )
12871055   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
12881056   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r241749r241750
13081076   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
13091077   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
13101078
1311   PORT_START("mainpcb:a80000")
1079   PORT_START("a80000")
13121080   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 )   /* abort */
13131081   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 )   /* start */
13141082   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )    /* aux coin */
r241749r241750
13221090   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL )  /* center edge on steering wheel */
13231091   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
13241092
1325   PORT_START("mainpcb:8BADC0")        /* b00000 - 8 bit ADC 0 - gas pedal */
1093   PORT_START("8BADC0")        /* b00000 - 8 bit ADC 0 - gas pedal */
13261094   PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
13271095
1328   PORT_START("mainpcb:8BADC1")        /* b00000 - 8 bit ADC 1 */
1096   PORT_START("8BADC1")        /* b00000 - 8 bit ADC 1 */
13291097   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
13301098
1331   PORT_START("mainpcb:8BADC2")        /* b00000 - 8 bit ADC 2 - voice mic */
1099   PORT_START("8BADC2")        /* b00000 - 8 bit ADC 2 - voice mic */
13321100   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
13331101
1334   PORT_START("mainpcb:8BADC3")        /* b00000 - 8 bit ADC 3 - volume */
1102   PORT_START("8BADC3")        /* b00000 - 8 bit ADC 3 - volume */
13351103   PORT_BIT( 0xff, 0X80, IPT_UNUSED )
13361104
1337   PORT_START("mainpcb:8BADC4")        /* b00000 - 8 bit ADC 4 - elevator */
1105   PORT_START("8BADC4")        /* b00000 - 8 bit ADC 4 - elevator */
13381106   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_NAME("Elevator") PORT_REVERSE  /* up/down */
13391107
1340   PORT_START("mainpcb:8BADC5")        /* b00000 - 8 bit ADC 5 - canopy */
1108   PORT_START("8BADC5")        /* b00000 - 8 bit ADC 5 - canopy */
13411109   PORT_BIT( 0xff, 0X80, IPT_UNUSED )
13421110
1343   PORT_START("mainpcb:8BADC6")        /* b00000 - 8 bit ADC 6 - brake */
1111   PORT_START("8BADC6")        /* b00000 - 8 bit ADC 6 - brake */
13441112   PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_NAME("Brake") PORT_REVERSE
13451113
1346   PORT_START("mainpcb:8BADC7")        /* b00000 - 8 bit ADC 7 - seat adjust */
1114   PORT_START("8BADC7")        /* b00000 - 8 bit ADC 7 - seat adjust */
13471115   PORT_BIT( 0xff, 0X80, IPT_UNUSED )
13481116
1349   PORT_START("mainpcb:12BADC0")       /* 400000 - steering wheel */
1117   PORT_START("12BADC0")       /* 400000 - steering wheel */
13501118   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel")
13511119
13521120   /* dummy ADC ports to end up with the same number as the full version */
1353   PORT_START("mainpcb:12BADC1")       /* FAKE */
1121   PORT_START("12BADC1")       /* FAKE */
13541122   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1355   PORT_START("mainpcb:12BADC2")       /* FAKE */
1123   PORT_START("12BADC2")       /* FAKE */
13561124   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1357   PORT_START("mainpcb:12BADC3")       /* FAKE */
1125   PORT_START("12BADC3")       /* FAKE */
13581126   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
13591127INPUT_PORTS_END
13601128
13611129
13621130static INPUT_PORTS_START( hdrivair )
1363   PORT_START("mainpcb:IN0")       /* 60c000 */
1131   PORT_START("IN0")       /* 60c000 */
13641132   PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
13651133   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
13661134   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
13671135   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* HBLANK */
1368   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
1136   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
13691137   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 12-bit EOC */
13701138   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* 8-bit EOC */
13711139   PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
13721140   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
13731141   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
13741142
1375   PORT_START("mainpcb:SW1")       /* 60c002 */
1143   PORT_START("SW1")       /* 60c002 */
13761144   PORT_DIPNAME( 0x01, 0x01, "SW1:8" )
13771145   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
13781146   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r241749r241750
13981166   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
13991167   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
14001168
1401   PORT_START("mainpcb:a80000")
1169   PORT_START("a80000")
14021170   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 )   /* abort */
14031171   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 )   /* start */
14041172   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )    /* aux coin */
r241749r241750
14121180   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL )  /* center edge on steering wheel */
14131181   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
14141182
1415   PORT_START("mainpcb:8BADC0")        /* b00000 - 8 bit ADC 0 - gas pedal */
1183   PORT_START("8BADC0")        /* b00000 - 8 bit ADC 0 - gas pedal */
14161184   PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
14171185
1418   PORT_START("mainpcb:8BADC1")        /* b00000 - 8 bit ADC 1 */
1186   PORT_START("8BADC1")        /* b00000 - 8 bit ADC 1 */
14191187   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
14201188
1421   PORT_START("mainpcb:8BADC2")        /* b00000 - 8 bit ADC 2 - voice mic */
1189   PORT_START("8BADC2")        /* b00000 - 8 bit ADC 2 - voice mic */
14221190   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
14231191
1424   PORT_START("mainpcb:8BADC3")        /* b00000 - 8 bit ADC 3 - volume */
1192   PORT_START("8BADC3")        /* b00000 - 8 bit ADC 3 - volume */
14251193   PORT_BIT( 0xff, 0X80, IPT_UNUSED )
14261194
1427   PORT_START("mainpcb:8BADC4")        /* b00000 - 8 bit ADC 4 - elevator */
1195   PORT_START("8BADC4")        /* b00000 - 8 bit ADC 4 - elevator */
14281196   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_REVERSE PORT_NAME("Elevator") /* up/down */
14291197
1430   PORT_START("mainpcb:8BADC5")        /* b00000 - 8 bit ADC 5 - canopy */
1198   PORT_START("8BADC5")        /* b00000 - 8 bit ADC 5 - canopy */
14311199   PORT_BIT( 0xff, 0X80, IPT_UNUSED )
14321200
1433   PORT_START("mainpcb:8BADC6")        /* b00000 - 8 bit ADC 6 - brake */
1201   PORT_START("8BADC6")        /* b00000 - 8 bit ADC 6 - brake */
14341202   PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Brake")
14351203
1436   PORT_START("mainpcb:8BADC7")        /* b00000 - 8 bit ADC 7 - seat adjust */
1204   PORT_START("8BADC7")        /* b00000 - 8 bit ADC 7 - seat adjust */
14371205   PORT_BIT( 0xff, 0X80, IPT_UNUSED )
14381206
1439   PORT_START("mainpcb:12BADC0")       /* 400000 - steering wheel */
1207   PORT_START("12BADC0")       /* 400000 - steering wheel */
14401208   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_REVERSE PORT_NAME("Steering Wheel")
14411209
14421210   /* dummy ADC ports to end up with the same number as the full version */
1443   PORT_START("mainpcb:12BADC1")
1211   PORT_START("12BADC1")
14441212   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1445   PORT_START("mainpcb:12BADC2")
1213   PORT_START("12BADC2")
14461214   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
1447   PORT_START("mainpcb:12BADC3")
1215   PORT_START("12BADC3")
14481216   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
14491217INPUT_PORTS_END
14501218
r241749r241750
14551223 *
14561224 *************************************/
14571225
1458INTERRUPT_GEN_MEMBER(harddriv_state::video_int_gen)
1459{
1460   m_video_int_state = 1;
1461   update_interrupts();
1462}
1463
1464
14651226/* Driver board without MSP (used by Race Drivin' cockpit) */
1466static MACHINE_CONFIG_FRAGMENT( driver_nomsp )
1227static MACHINE_CONFIG_START( driver_nomsp, harddriv_state )
14671228
14681229   /* basic machine hardware */
14691230   MCFG_CPU_ADD("maincpu", M68010, HARDDRIV_MASTER_CLOCK/4)
14701231   MCFG_CPU_PROGRAM_MAP(driver_68k_map)
1471   MCFG_DEVICE_VBLANK_INT_DRIVER("screen", harddriv_state, video_int_gen)
1232   MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
14721233   MCFG_CPU_PERIODIC_INT_DRIVER(harddriv_state, hd68k_irq_gen,  (double)HARDDRIV_MASTER_CLOCK/16/16/16/16/2)
14731234
1474   MCFG_SLAPSTIC_ADD("slapstic")
1475   MCFG_SLAPSTIC_68K_ACCESS(1)
1476
14771235   MCFG_CPU_ADD("gsp", TMS34010, HARDDRIV_GSP_CLOCK)
14781236   MCFG_CPU_PROGRAM_MAP(driver_gsp_map)
14791237   MCFG_TMS340X0_HALT_ON_RESET(TRUE) /* halt on reset */
r241749r241750
14831241   MCFG_TMS340X0_OUTPUT_INT_CB(WRITELINE(harddriv_state, hdgsp_irq_gen))
14841242   MCFG_TMS340X0_TO_SHIFTREG_CB(harddriv_state, hdgsp_write_to_shiftreg)
14851243   MCFG_TMS340X0_FROM_SHIFTREG_CB(harddriv_state, hdgsp_read_from_shiftreg)
1486   MCFG_VIDEO_SET_SCREEN("screen")
14871244
14881245   MCFG_QUANTUM_TIME(attotime::from_hz(30000))
14891246
1247   MCFG_MACHINE_START_OVERRIDE(harddriv_state,harddriv)
1248   MCFG_MACHINE_RESET_OVERRIDE(harddriv_state,harddriv)
1249
14901250   MCFG_M48T02_ADD("200e") // MK48T02
14911251   MCFG_EEPROM_2816_ADD("210e") // MK48Z02
14921252
r241749r241750
15011261   MCFG_SCREEN_UPDATE_DEVICE("gsp", tms34010_device, tms340x0_ind16)
15021262   MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
15031263   MCFG_SCREEN_PALETTE("palette")
1264
1265   MCFG_VIDEO_START_OVERRIDE(harddriv_state,harddriv)
15041266MACHINE_CONFIG_END
15051267
15061268
15071269/* Driver board with MSP (used by Hard Drivin' cockpit) */
1508static MACHINE_CONFIG_FRAGMENT( driver_msp )
1270static MACHINE_CONFIG_DERIVED( driver_msp, driver_nomsp )
15091271
1510   MCFG_FRAGMENT_ADD( driver_nomsp )
1511
15121272   /* basic machine hardware */
15131273   MCFG_CPU_ADD("msp", TMS34010, XTAL_50MHz)
15141274   MCFG_CPU_PROGRAM_MAP(driver_msp_map)
r241749r241750
15161276   MCFG_TMS340X0_PIXEL_CLOCK(5000000) /* pixel clock */
15171277   MCFG_TMS340X0_PIXELS_PER_CLOCK(2) /* pixels per clock */
15181278   MCFG_TMS340X0_OUTPUT_INT_CB(WRITELINE(harddriv_state, hdmsp_irq_gen))
1519   MCFG_VIDEO_SET_SCREEN("screen")
1520
15211279MACHINE_CONFIG_END
15221280
15231281
15241282/* Multisync board without MSP (used by STUN Runner, Steel Talons, Race Drivin' compact) */
1525static MACHINE_CONFIG_FRAGMENT( multisync_nomsp )
1283static MACHINE_CONFIG_DERIVED( multisync_nomsp, driver_nomsp )
15261284
1527   MCFG_FRAGMENT_ADD( driver_nomsp )
1528
15291285   /* basic machine hardware */
15301286   MCFG_CPU_MODIFY("maincpu")
15311287   MCFG_CPU_PROGRAM_MAP(multisync_68k_map)
r241749r241750
15431299
15441300
15451301/* Multisync board with MSP (used by Hard Drivin' compact) */
1546static MACHINE_CONFIG_FRAGMENT( multisync_msp )
1302static MACHINE_CONFIG_DERIVED( multisync_msp, multisync_nomsp )
15471303
1548   MCFG_FRAGMENT_ADD( multisync_nomsp )
1549
15501304   /* basic machine hardware */
15511305   MCFG_CPU_ADD("msp", TMS34010, XTAL_50MHz)
15521306   MCFG_CPU_PROGRAM_MAP(driver_msp_map)
r241749r241750
15541308   MCFG_TMS340X0_PIXEL_CLOCK(5000000) /* pixel clock */
15551309   MCFG_TMS340X0_PIXELS_PER_CLOCK(2) /* pixels per clock */
15561310   MCFG_TMS340X0_OUTPUT_INT_CB(WRITELINE(harddriv_state, hdmsp_irq_gen))
1557   MCFG_VIDEO_SET_SCREEN("screen")
1558
15591311MACHINE_CONFIG_END
15601312
15611313
15621314/* Multisync II board (used by Hard Drivin's Airborne) */
1563static MACHINE_CONFIG_FRAGMENT( multisync2 )
1315static MACHINE_CONFIG_DERIVED( multisync2, multisync_nomsp )
15641316
1565   MCFG_FRAGMENT_ADD( multisync_nomsp )
1566
15671317   /* basic machine hardware */
15681318   MCFG_CPU_MODIFY("maincpu")
15691319   MCFG_CPU_PROGRAM_MAP(multisync2_68k_map)
r241749r241750
16941444 *
16951445 *************************************/
16961446
1697static MACHINE_CONFIG_FRAGMENT( harddriv )
1698   MCFG_FRAGMENT_ADD( driver_msp )
1447static MACHINE_CONFIG_DERIVED( harddriv, driver_msp )
1448
16991449   /* basic machine hardware */        /* original driver board with MSP */
17001450   MCFG_FRAGMENT_ADD( adsp )           /* ADSP board */
17011451   MCFG_FRAGMENT_ADD( driversnd )      /* driver sound board */
17021452MACHINE_CONFIG_END
17031453
1704static MACHINE_CONFIG_FRAGMENT( harddrivc )
1705   MCFG_FRAGMENT_ADD( multisync_msp )
17061454
1455static MACHINE_CONFIG_DERIVED( harddrivc, multisync_msp )
1456
17071457   /* basic machine hardware */        /* multisync board with MSP */
17081458   MCFG_FRAGMENT_ADD( adsp )           /* ADSP board */
17091459   MCFG_FRAGMENT_ADD( driversnd )      /* driver sound board */
17101460MACHINE_CONFIG_END
17111461
1712static MACHINE_CONFIG_FRAGMENT( racedriv )
1713   MCFG_FRAGMENT_ADD( driver_nomsp )
17141462
1463static MACHINE_CONFIG_DERIVED( racedriv, driver_nomsp )
1464
17151465   /* basic machine hardware */        /* original driver board without MSP */
17161466   MCFG_FRAGMENT_ADD( adsp )           /* ADSP board */
17171467   MCFG_FRAGMENT_ADD( dsk )            /* DSK board */
17181468   MCFG_FRAGMENT_ADD( driversnd )      /* driver sound board */
17191469MACHINE_CONFIG_END
17201470
1721static MACHINE_CONFIG_FRAGMENT( racedrivc )
17221471
1723   MCFG_FRAGMENT_ADD( multisync_nomsp )
1472static MACHINE_CONFIG_DERIVED( racedrivc, multisync_nomsp )
17241473
17251474   /* basic machine hardware */        /* multisync board without MSP */
17261475   MCFG_FRAGMENT_ADD( adsp )           /* ADSP board */
r241749r241750
17291478MACHINE_CONFIG_END
17301479
17311480
1732static MACHINE_CONFIG_FRAGMENT( racedrivc_panorama_side )
1481static MACHINE_CONFIG_DERIVED( stunrun, multisync_nomsp )
17331482
1734   MCFG_FRAGMENT_ADD( multisync_nomsp )
1735
17361483   /* 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 */
17541484   MCFG_CPU_MODIFY("gsp")
17551485   MCFG_TMS340X0_PIXEL_CLOCK(5000000)  /* pixel clock */
17561486   MCFG_FRAGMENT_ADD( adsp )           /* ADSP board */
r241749r241750
17621492   /* sund hardware */
17631493   MCFG_SPEAKER_STANDARD_MONO("mono")
17641494
1765   MCFG_ATARI_JSA_II_ADD("jsa", WRITELINE(harddriv_state, sound_int_write_line))
1495   MCFG_ATARI_JSA_II_ADD("jsa", WRITELINE(atarigen_state, sound_int_write_line))
17661496   MCFG_ATARI_JSA_TEST_PORT("IN0", 5)
17671497   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
17681498MACHINE_CONFIG_END
17691499
1770static MACHINE_CONFIG_FRAGMENT( steeltal )
1771   MCFG_FRAGMENT_ADD( multisync_msp )
17721500
1501static MACHINE_CONFIG_DERIVED( steeltal, multisync_msp )
1502
17731503   /* basic machine hardware */        /* multisync board with MSP */
17741504   MCFG_FRAGMENT_ADD( ds3 )            /* DS III board */
17751505   MCFG_DEVICE_REMOVE("ds3sdsp")       /* DS III sound components are not present */
r241749r241750
17841514   /* sund hardware */
17851515   MCFG_SPEAKER_STANDARD_MONO("mono")
17861516
1787   MCFG_ATARI_JSA_III_ADD("jsa", WRITELINE(harddriv_state, sound_int_write_line))
1517   MCFG_ATARI_JSA_III_ADD("jsa", WRITELINE(atarigen_state, sound_int_write_line))
17881518   MCFG_ATARI_JSA_TEST_PORT("IN0", 5)
17891519   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
17901520MACHINE_CONFIG_END
17911521
1792static MACHINE_CONFIG_FRAGMENT( strtdriv )
17931522
1794   MCFG_FRAGMENT_ADD( multisync_nomsp )
1523static MACHINE_CONFIG_DERIVED( strtdriv, multisync_nomsp )
17951524
17961525   /* basic machine hardware */        /* multisync board */
17971526   MCFG_FRAGMENT_ADD( ds3 )            /* DS III board */
r241749r241750
18011530   MCFG_FRAGMENT_ADD( dsk )            /* DSK board */
18021531MACHINE_CONFIG_END
18031532
1804static MACHINE_CONFIG_FRAGMENT( hdrivair )
18051533
1806   MCFG_FRAGMENT_ADD( multisync2 )
1534static MACHINE_CONFIG_DERIVED( hdrivair, multisync2 )
18071535
18081536   /* basic machine hardware */        /* multisync II board */
18091537   MCFG_FRAGMENT_ADD( ds3 )            /* DS IV board */
18101538   MCFG_FRAGMENT_ADD( dsk2 )           /* DSK II board */
18111539MACHINE_CONFIG_END
18121540
1813const device_type HARDDRIV_BOARD_DEVICE = &device_creator<harddriv_board_device_state>;
18141541
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}
18191542
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
20991543/*************************************
21001544 *
21011545 *  ROM definition(s)
r241749r241750
21101554*/
21111555
21121556ROM_START( harddriv )
2113   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
1557   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
21141558   ROM_LOAD16_BYTE( "136052-7105.200r", 0x000000, 0x010000, CRC(af5d5c3e) SHA1(09ccf4aa933413b71b6a42796d42299e1334902f) )
21151559   ROM_LOAD16_BYTE( "136052-7113.210r", 0x000001, 0x010000, CRC(3330a942) SHA1(b9210f6befd875be8bc1dbd31f44d0cb63166748) )
21161560   ROM_LOAD16_BYTE( "136052-2106.200s", 0x020000, 0x010000, CRC(a668db0e) SHA1(8ac405a0ba12bac9acabdb64970608d1b2b1a99b) )
r241749r241750
21201564   ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) )
21211565   ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) )
21221566
2123   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
1567   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
21241568   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
21251569   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
21261570
2127   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
1571   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
21281572   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
21291573   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
21301574   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
21311575   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
21321576
2133   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
1577   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
21341578   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
21351579   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
21361580   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
21371581   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
21381582
2139   ROM_REGION( 0x800, "mainpcb:200e", 0 )
1583   ROM_REGION( 0x800, "200e", 0 )
21401584   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
21411585
2142   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2143   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )   
1586   ROM_REGION( 0x800, "210e", 0 )
1587   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
21441588ROM_END
21451589
21461590
2147
21481591ROM_START( harddrivg )
2149   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
1592   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
21501593   ROM_LOAD16_BYTE( "136052-7205.200r", 0x000000, 0x010000, CRC(b50b1968) SHA1(b6fd9f0600cba995bf31fd0f30f15f091bbbfb09) )
21511594   ROM_LOAD16_BYTE( "136052-7213.210r", 0x000001, 0x010000, CRC(e6d57108) SHA1(a4eda6db4ec67b1cb8f9bfee17d8adc93675ef8a) )
21521595   ROM_LOAD16_BYTE( "136052-4206.200s", 0x020000, 0x010000, CRC(70f78c50) SHA1(6baed202937c455c7c6e4baa74ee7858673a37fc) )
r241749r241750
21561599   ROM_LOAD16_BYTE( "136052-4211.200x", 0x0c0000, 0x010000, CRC(20d1b3d5) SHA1(b7c4a2cf6ba729530c24980704989b3a3efb343b) )
21571600   ROM_LOAD16_BYTE( "136052-4219.210x", 0x0c0001, 0x010000, CRC(105e7052) SHA1(a8d13c35418e58410cfd74c243b74963f1553068) )
21581601
2159   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
1602   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
21601603   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
21611604   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
21621605
2163   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
1606   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
21641607   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
21651608   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
21661609   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
21671610   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
21681611
2169   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
1612   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
21701613   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
21711614   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
21721615   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
21731616   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
21741617
2175   ROM_REGION( 0x800, "mainpcb:200e", 0 )
1618   ROM_REGION( 0x800, "200e", 0 )
21761619   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
21771620
2178   ROM_REGION( 0x800, "mainpcb:210e", 0 )
1621   ROM_REGION( 0x800, "210e", 0 )
21791622   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
21801623ROM_END
21811624
21821625
21831626ROM_START( harddrivj )
2184   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
1627   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
21851628   ROM_LOAD16_BYTE( "136052-7805.200r", 0x000000, 0x010000, CRC(f170c842) SHA1(842cef66646a664300a7e2b827c0bbd53e5f27ad) )
21861629   ROM_LOAD16_BYTE( "136052-7813.210r", 0x000001, 0x010000, CRC(e5a3367d) SHA1(96b3a6fb5561fa59d7ac4b840fa1891d02f1bd8c) )
21871630   ROM_LOAD16_BYTE( "136052-6806.200s", 0x020000, 0x010000, CRC(bd68696e) SHA1(33b173f210183fef84c4c04b3bff515d79b4924d) )
r241749r241750
21931636   ROM_LOAD16_BYTE( "136052-6811.200x", 0x0c0000, 0x010000, CRC(7bc5c8da) SHA1(ac228d6391bc9ac4238f953f9ad6eb93b3ff9958) )
21941637   ROM_LOAD16_BYTE( "136052-6819.210x", 0x0c0001, 0x010000, CRC(368b7e17) SHA1(e8742edec6961173df4450073a427cf3b9f3ff57) )
21951638
2196   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
1639   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
21971640   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
21981641   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
21991642
2200   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
1643   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
22011644   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
22021645   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
22031646   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
22041647   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
22051648
2206   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
1649   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
22071650   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
22081651   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
22091652   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
22101653   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
22111654
2212   ROM_REGION( 0x800, "mainpcb:200e", 0 )
1655   ROM_REGION( 0x800, "200e", 0 )
22131656   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
22141657
2215   ROM_REGION( 0x800, "mainpcb:210e", 0 )
1658   ROM_REGION( 0x800, "210e", 0 )
22161659   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
22171660ROM_END
22181661
22191662
22201663ROM_START( harddrivb )
2221   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
1664   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
22221665   ROM_LOAD16_BYTE( "136052-7905.200r", 0x000000, 0x010000, CRC(c4379a2e) SHA1(41dc66c1576c591520543343a798e0d80def2188) )
22231666   ROM_LOAD16_BYTE( "136052-7913.210r", 0x000001, 0x010000, CRC(1e76fa17) SHA1(80ec1de4c8a4622fb5c65ec3e8c194a8eabacc38) )
22241667   ROM_LOAD16_BYTE( "136052-6906.200s", 0x020000, 0x010000, CRC(47c4498b) SHA1(aad3463f29ffc733ab42a7abf739ca698cdd8ec1) )
r241749r241750
22281671   ROM_LOAD16_BYTE( "136052-5911.200x", 0x0c0000, 0x010000, CRC(564ac427) SHA1(f71d5a8d06681fc96e753e7cd18e16b32ba6907f) )
22291672   ROM_LOAD16_BYTE( "136052-5919.210x", 0x0c0001, 0x010000, CRC(752d9a6d) SHA1(28edb54c7217f5ccdcb2b5614d4e8c2290d96b2a) )
22301673
2231   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
1674   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
22321675   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
22331676   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
22341677
2235   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
1678   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
22361679   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
22371680   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
22381681   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
22391682   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
22401683
2241   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
1684   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
22421685   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
22431686   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
22441687   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
22451688   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
22461689
2247   ROM_REGION( 0x800, "mainpcb:200e", 0 )
1690   ROM_REGION( 0x800, "200e", 0 )
22481691   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
22491692
2250   ROM_REGION( 0x800, "mainpcb:210e", 0 )
1693   ROM_REGION( 0x800, "210e", 0 )
22511694   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
22521695ROM_END
22531696
22541697
22551698ROM_START( harddrivb6 )
2256   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
1699   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
22571700   ROM_LOAD16_BYTE( "136052-6905.200r", 0x000000, 0x010000, CRC(b1f38593) SHA1(958622128c7c687071211343ef657c38f928e25a) )
22581701   ROM_LOAD16_BYTE( "136052-6913.210r", 0x000001, 0x010000, CRC(15eb0da5) SHA1(0200328582c77d4d64e9f7df1f8755f7f4975ac3) )
22591702   ROM_LOAD16_BYTE( "136052-6906.200s", 0x020000, 0x010000, CRC(47c4498b) SHA1(aad3463f29ffc733ab42a7abf739ca698cdd8ec1) )
r241749r241750
22631706   ROM_LOAD16_BYTE( "136052-5911.200x", 0x0c0000, 0x010000, CRC(564ac427) SHA1(f71d5a8d06681fc96e753e7cd18e16b32ba6907f) )
22641707   ROM_LOAD16_BYTE( "136052-5919.210x", 0x0c0001, 0x010000, CRC(752d9a6d) SHA1(28edb54c7217f5ccdcb2b5614d4e8c2290d96b2a) )
22651708
2266   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
1709   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
22671710   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
22681711   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
22691712
2270   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
1713   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
22711714   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
22721715   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
22731716   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
22741717   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
22751718
2276   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
1719   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
22771720   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
22781721   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
22791722   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
22801723   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
22811724
2282   ROM_REGION( 0x800, "mainpcb:200e", 0 )
1725   ROM_REGION( 0x800, "200e", 0 )
22831726   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
22841727
2285   ROM_REGION( 0x800, "mainpcb:210e", 0 )
1728   ROM_REGION( 0x800, "210e", 0 )
22861729   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
22871730ROM_END
22881731
22891732
22901733ROM_START( harddrivj6 )
2291   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
1734   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
22921735   ROM_LOAD16_BYTE( "136052-6805.200r", 0x000000, 0x010000, CRC(e61ce7af) SHA1(38115a5a44f330abf1f7d684e630a1a232769f7c) )
22931736   ROM_LOAD16_BYTE( "136052-6813.210r", 0x000001, 0x010000, CRC(adfef1e7) SHA1(dc1bdb5ce9143a94d734ce9ecdf9195589608b65) )
22941737   ROM_LOAD16_BYTE( "136052-6806.200s", 0x020000, 0x010000, CRC(bd68696e) SHA1(33b173f210183fef84c4c04b3bff515d79b4924d) )
r241749r241750
23001743   ROM_LOAD16_BYTE( "136052-6811.200x", 0x0c0000, 0x010000, CRC(7bc5c8da) SHA1(ac228d6391bc9ac4238f953f9ad6eb93b3ff9958) )
23011744   ROM_LOAD16_BYTE( "136052-6819.210x", 0x0c0001, 0x010000, CRC(368b7e17) SHA1(e8742edec6961173df4450073a427cf3b9f3ff57) )
23021745
2303   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
1746   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
23041747   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
23051748   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
23061749
2307   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
1750   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
23081751   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
23091752   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
23101753   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
23111754   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
23121755
2313   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
1756   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
23141757   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
23151758   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
23161759   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
23171760   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
23181761
2319   ROM_REGION( 0x800, "mainpcb:200e", 0 )
1762   ROM_REGION( 0x800, "200e", 0 )
23201763   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
23211764
2322   ROM_REGION( 0x800, "mainpcb:210e", 0 )
1765   ROM_REGION( 0x800, "210e", 0 )
23231766   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
23241767ROM_END
23251768
23261769
23271770ROM_START( harddrivb5 )
2328   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
1771   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
23291772   ROM_LOAD16_BYTE( "136052-5905.200r", 0x000000, 0x010000, CRC(6dd28313) SHA1(c1f860470070dad7d8865aca508ecf5eb92fa8c5) )
23301773   ROM_LOAD16_BYTE( "136052-5913.210r", 0x000001, 0x010000, CRC(2e5a006f) SHA1(8a2da1868bbad54b33e993f5bf9ba61186caef5b) )
23311774   ROM_LOAD16_BYTE( "136052-5906.200s", 0x020000, 0x010000, CRC(206b59db) SHA1(2bbae0ac4af9cdda44d6d8b5fcf6b3b1c3103796) )
r241749r241750
23351778   ROM_LOAD16_BYTE( "136052-5911.200x", 0x0c0000, 0x010000, CRC(564ac427) SHA1(f71d5a8d06681fc96e753e7cd18e16b32ba6907f) )
23361779   ROM_LOAD16_BYTE( "136052-5919.210x", 0x0c0001, 0x010000, CRC(752d9a6d) SHA1(28edb54c7217f5ccdcb2b5614d4e8c2290d96b2a) )
23371780
2338   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
1781   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
23391782   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
23401783   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
23411784
2342   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
1785   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
23431786   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
23441787   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
23451788   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
23461789   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
23471790
2348   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
1791   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
23491792   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
23501793   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
23511794   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
23521795   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
23531796
2354   ROM_REGION( 0x800, "mainpcb:200e", 0 )
1797   ROM_REGION( 0x800, "200e", 0 )
23551798   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
23561799
2357   ROM_REGION( 0x800, "mainpcb:210e", 0 )
1800   ROM_REGION( 0x800, "210e", 0 )
23581801   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
23591802ROM_END
23601803
23611804
23621805ROM_START( harddrivg4 )
2363   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
1806   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
23641807   ROM_LOAD16_BYTE( "136052-4205.200r", 0x000000, 0x010000, CRC(94db6d9e) SHA1(98a509daacb9f18c7171246d1782d09a6456e241) )
23651808   ROM_LOAD16_BYTE( "136052-4213.210r", 0x000001, 0x010000, CRC(cacaf671) SHA1(7bd0f531402b2f10cb00bb8f7ca0b62eed23bffa) )
23661809   ROM_LOAD16_BYTE( "136052-4206.200s", 0x020000, 0x010000, CRC(70f78c50) SHA1(6baed202937c455c7c6e4baa74ee7858673a37fc) )
r241749r241750
23701813   ROM_LOAD16_BYTE( "136052-4211.200x", 0x0c0000, 0x010000, CRC(20d1b3d5) SHA1(b7c4a2cf6ba729530c24980704989b3a3efb343b) )
23711814   ROM_LOAD16_BYTE( "136052-4219.210x", 0x0c0001, 0x010000, CRC(105e7052) SHA1(a8d13c35418e58410cfd74c243b74963f1553068) )
23721815
2373   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
1816   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
23741817   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
23751818   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
23761819
2377   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
1820   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
23781821   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
23791822   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
23801823   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
23811824   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
23821825
2383   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
1826   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
23841827   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
23851828   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
23861829   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
23871830   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
23881831
2389   ROM_REGION( 0x800, "mainpcb:200e", 0 )
1832   ROM_REGION( 0x800, "200e", 0 )
23901833   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
23911834
2392   ROM_REGION( 0x800, "mainpcb:210e", 0 )
1835   ROM_REGION( 0x800, "210e", 0 )
23931836   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
23941837ROM_END
23951838
23961839
23971840ROM_START( harddriv3 )
2398   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
1841   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
23991842   ROM_LOAD16_BYTE( "136052-3105.200r", 0x000000, 0x010000, CRC(a42a2c69) SHA1(66233f25533106aab69df21db69f96368f1399a9) )
24001843   ROM_LOAD16_BYTE( "136052-3113.210r", 0x000001, 0x010000, CRC(358995b5) SHA1(f18c0da58ec7befefc61d5f0d35787516b775c92) )
24011844   ROM_LOAD16_BYTE( "136052-2106.200s", 0x020000, 0x010000, CRC(a668db0e) SHA1(8ac405a0ba12bac9acabdb64970608d1b2b1a99b) )
r241749r241750
24051848   ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) )
24061849   ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) )
24071850
2408   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
1851   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
24091852   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
24101853   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
24111854
2412   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
1855   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
24131856   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
24141857   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
24151858   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
24161859   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
24171860
2418   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
1861   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
24191862   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
24201863   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
24211864   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
24221865   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
24231866
2424   ROM_REGION( 0x800, "mainpcb:200e", 0 )
1867   ROM_REGION( 0x800, "200e", 0 )
24251868   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
24261869
2427   ROM_REGION( 0x800, "mainpcb:210e", 0 )
1870   ROM_REGION( 0x800, "210e", 0 )
24281871   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
24291872ROM_END
24301873
24311874
24321875ROM_START( harddriv2 )
2433   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
1876   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
24341877   ROM_LOAD16_BYTE( "136052-2105.200r", 0x000000, 0x010000, CRC(967903b9) SHA1(4363f3b3f08d00819f47a3682462fd0e5dc4e0ac) )
24351878   ROM_LOAD16_BYTE( "136052-2113.210r", 0x000001, 0x010000, CRC(c87f7067) SHA1(3d85d2ba818739ed05086502cd8e57438251b20b) )
24361879   ROM_LOAD16_BYTE( "136052-2106.200s", 0x020000, 0x010000, CRC(a668db0e) SHA1(8ac405a0ba12bac9acabdb64970608d1b2b1a99b) )
r241749r241750
24401883   ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) )
24411884   ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) )
24421885
2443   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
1886   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
24441887   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
24451888   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
24461889
2447   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
1890   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
24481891   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
24491892   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
24501893   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
24511894   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
24521895
2453   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
1896   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
24541897   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
24551898   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
24561899   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
24571900   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
24581901
2459   ROM_REGION( 0x800, "mainpcb:200e", 0 )
1902   ROM_REGION( 0x800, "200e", 0 )
24601903   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
24611904
2462   ROM_REGION( 0x800, "mainpcb:210e", 0 )
1905   ROM_REGION( 0x800, "210e", 0 )
24631906   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
24641907ROM_END
24651908
24661909
24671910ROM_START( harddriv1 )
2468   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
1911   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
24691912   ROM_LOAD16_BYTE( "136052-1105.200r", 0x000000, 0x010000, CRC(1dfda789) SHA1(83be0d66fe21e974f8d4582b0ab60245f1db7e55) )
24701913   ROM_LOAD16_BYTE( "136052-1113.210r", 0x000001, 0x010000, CRC(db2f6593) SHA1(864ea5604cea2507b180a91b35e349d3924bf9bc) )
24711914   ROM_LOAD16_BYTE( "136052-1106.200s", 0x020000, 0x010000, CRC(e82210fd) SHA1(916e674017f5187531c2de7961791c060f8412c7) )
r241749r241750
24751918   ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) )
24761919   ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) )
24771920
2478   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
1921   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
24791922   ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
24801923   ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
24811924
2482   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
1925   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
24831926   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
24841927   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
24851928   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
24861929   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
24871930
2488   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
1931   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
24891932   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
24901933   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
24911934   ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
24921935   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
24931936
2494   ROM_REGION( 0x800, "mainpcb:200e", 0 )
1937   ROM_REGION( 0x800, "200e", 0 )
24951938   ROM_LOAD( "harddriv.200e",   0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
24961939
2497   ROM_REGION( 0x800, "mainpcb:210e", 0 )
1940   ROM_REGION( 0x800, "210e", 0 )
24981941   ROM_LOAD( "harddriv.210e",   0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
24991942ROM_END
25001943
25011944
25021945ROM_START( harddrivc )
2503   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )    /* 1MB for 68000 code */
1946   ROM_REGION( 0x100000, "maincpu", 0 )    /* 1MB for 68000 code */
25041947   ROM_LOAD16_BYTE( "136068-2102.200r", 0x000000, 0x010000, CRC(6252048b) SHA1(64caf3adfad6965768fc6d39a8bcde62fe6dfa9e) )
25051948   ROM_LOAD16_BYTE( "136068-2101.210r", 0x000001, 0x010000, CRC(4805ba06) SHA1(e0c2d935ced05b8162f2925520422184a81d5294) )
25061949   ROM_LOAD16_BYTE( "136068-2104.200s", 0x020000, 0x010000, CRC(8246f945) SHA1(633b6c9a5d3e33d3035ccdb7b6ad883c334a4db9) )
r241749r241750
25101953   ROM_LOAD16_BYTE( "136068-1114.200x", 0x0c0000, 0x010000, CRC(293c153b) SHA1(6300a50766b19ad203b5c7da28d51bf22054b39e) )
25111954   ROM_LOAD16_BYTE( "136068-1113.210x", 0x0c0001, 0x010000, CRC(5630390d) SHA1(cd1932cee70cddd1fb2110d1aeebb573a13f1339) )
25121955
2513   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
1956   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
25141957   ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) )
25151958   ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) )
25161959
2517   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
1960   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
25181961   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
25191962   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
25201963   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
25211964   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
25221965
2523   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
1966   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
25241967   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
25251968   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
25261969   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
25271970   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
25281971
2529   ROM_REGION( 0x800, "mainpcb:200e", 0 )
1972   ROM_REGION( 0x800, "200e", 0 )
25301973   ROM_LOAD( "harddrivc.200e",  0x000000, 0x000800, CRC(560a0106) SHA1(7295a4f1255869c43c3cf146ddebaea62c30b850) )
25311974
2532   ROM_REGION( 0x800, "mainpcb:210e", 0 )
1975   ROM_REGION( 0x800, "210e", 0 )
25331976   ROM_LOAD( "harddrivc.210e",  0x000000, 0x000800, CRC(208bba53) SHA1(c9a36015a66917df528b84d20d255b6b96a90e76) )
25341977ROM_END
25351978
25361979
25371980ROM_START( harddrivcg )
2538   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )    /* 1MB for 68000 code */
1981   ROM_REGION( 0x100000, "maincpu", 0 )    /* 1MB for 68000 code */
25391982   ROM_LOAD16_BYTE( "136068-2202.200r", 0x000000, 0x010000, CRC(ea09bdc2) SHA1(9e38ed0a47a2bfb6b80cbf1e0b3e891b94f30c10) )
25401983   ROM_LOAD16_BYTE( "136068-2201.210r", 0x000001, 0x010000, CRC(a5e9947f) SHA1(75973346c9399752d8ae82fbada3a24c6d5fec94) )
25411984   ROM_LOAD16_BYTE( "136068-2204.200s", 0x020000, 0x010000, CRC(65792c94) SHA1(89e93cf0d2afc4bd8a01155ba908c9aa7149dc78) )
r241749r241750
25451988   ROM_LOAD16_BYTE( "136068-1114.200x", 0x0c0000, 0x010000, CRC(293c153b) SHA1(6300a50766b19ad203b5c7da28d51bf22054b39e) )
25461989   ROM_LOAD16_BYTE( "136068-1113.210x", 0x0c0001, 0x010000, CRC(5630390d) SHA1(cd1932cee70cddd1fb2110d1aeebb573a13f1339) )
25471990
2548   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
1991   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
25491992   ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) )
25501993   ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) )
25511994
2552   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
1995   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
25531996   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
25541997   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
25551998   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
25561999   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
25572000
2558   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
2001   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
25592002   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
25602003   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
25612004   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
25622005   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
25632006
2564   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2007   ROM_REGION( 0x800, "200e", 0 )
25652008   ROM_LOAD( "harddrivc.200e",  0x000000, 0x000800, CRC(560a0106) SHA1(7295a4f1255869c43c3cf146ddebaea62c30b850) )
25662009
2567   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2010   ROM_REGION( 0x800, "210e", 0 )
25682011   ROM_LOAD( "harddrivc.210e",  0x000000, 0x000800, CRC(208bba53) SHA1(c9a36015a66917df528b84d20d255b6b96a90e76) )
25692012ROM_END
25702013
25712014
25722015ROM_START( harddrivcb )
2573   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )    /* 1MB for 68000 code */
2016   ROM_REGION( 0x100000, "maincpu", 0 )    /* 1MB for 68000 code */
25742017   ROM_LOAD16_BYTE( "136068-2102.200r", 0x000000, 0x010000, CRC(6252048b) SHA1(64caf3adfad6965768fc6d39a8bcde62fe6dfa9e) )
25752018   ROM_LOAD16_BYTE( "136068-2101.210r", 0x000001, 0x010000, CRC(4805ba06) SHA1(e0c2d935ced05b8162f2925520422184a81d5294) )
25762019   ROM_LOAD16_BYTE( "136068-2104.200s", 0x020000, 0x010000, CRC(8246f945) SHA1(633b6c9a5d3e33d3035ccdb7b6ad883c334a4db9) )
r241749r241750
25802023   ROM_LOAD16_BYTE( "136068-2914.200x", 0x0c0000, 0x010000, CRC(dd2998a5) SHA1(36c71549d114309b9072ced83ed149cad1d23646) )
25812024   ROM_LOAD16_BYTE( "136068-2913.210x", 0x0c0001, 0x010000, CRC(a211754d) SHA1(b93d4867f664caa76f2170ef0934194de29a5516) )
25822025
2583   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
2026   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
25842027   ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) )
25852028   ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) )
25862029
2587   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2030   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
25882031   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
25892032   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
25902033   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
25912034   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
25922035
2593   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
2036   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
25942037   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
25952038   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
25962039   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
25972040   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
25982041
2599   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2042   ROM_REGION( 0x800, "200e", 0 )
26002043   ROM_LOAD( "harddrivc.200e",  0x000000, 0x000800, CRC(560a0106) SHA1(7295a4f1255869c43c3cf146ddebaea62c30b850) )
26012044
2602   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2045   ROM_REGION( 0x800, "210e", 0 )
26032046   ROM_LOAD( "harddrivc.210e",  0x000000, 0x000800, CRC(208bba53) SHA1(c9a36015a66917df528b84d20d255b6b96a90e76) )
26042047ROM_END
26052048
26062049
26072050ROM_START( harddrivc1 )
2608   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )    /* 1MB for 68000 code */
2051   ROM_REGION( 0x100000, "maincpu", 0 )    /* 1MB for 68000 code */
26092052   ROM_LOAD16_BYTE( "136068-1102.200r", 0x000000, 0x010000, CRC(f1d3779f) SHA1(1ab84fc920f6810aa7c1af80b0472ea17d07e58b) )
26102053   ROM_LOAD16_BYTE( "136068-1101.210r", 0x000001, 0x010000, CRC(3ea4d3d9) SHA1(3901e8c07bed35bf6a55ab92f5c7eb9335675792) )
26112054   ROM_LOAD16_BYTE( "136068-1104.200s", 0x020000, 0x010000, CRC(34133511) SHA1(71c56607cecd379761f700d181f6e91e7bb6fdfc) )
r241749r241750
26152058   ROM_LOAD16_BYTE( "136068-1114.200x", 0x0c0000, 0x010000, CRC(293c153b) SHA1(6300a50766b19ad203b5c7da28d51bf22054b39e) )
26162059   ROM_LOAD16_BYTE( "136068-1113.210x", 0x0c0001, 0x010000, CRC(5630390d) SHA1(cd1932cee70cddd1fb2110d1aeebb573a13f1339) )
26172060
2618   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
2061   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
26192062   ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) )
26202063   ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) )
26212064
2622   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2065   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
26232066   ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
26242067   ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
26252068   ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
26262069   ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
26272070
2628   ROM_REGION( 0x40000, "mainpcb:serialroms", 0 )      /* 4*128k for audio serial ROMs */
2071   ROM_REGION( 0x40000, "serialroms", 0 )      /* 4*128k for audio serial ROMs */
26292072   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
26302073   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
26312074   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
26322075   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
26332076
2634   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2077   ROM_REGION( 0x800, "200e", 0 )
26352078   ROM_LOAD( "harddrivc.200e",  0x000000, 0x000800, CRC(560a0106) SHA1(7295a4f1255869c43c3cf146ddebaea62c30b850) )
26362079
2637   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2080   ROM_REGION( 0x800, "210e", 0 )
26382081   ROM_LOAD( "harddrivc.210e",  0x000000, 0x000800, CRC(208bba53) SHA1(c9a36015a66917df528b84d20d255b6b96a90e76) )
26392082ROM_END
26402083
26412084
26422085ROM_START( stunrun )
2643   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2086   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
26442087   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
26452088   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
26462089   ROM_LOAD16_BYTE( "136070-6104.200s", 0x020000, 0x010000, CRC(f469f91c) SHA1(488ea6251ff4028edaf00bb1ded74cefdc71a373) )
r241749r241750
26542097   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
26552098   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
26562099
2657   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
2100   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
26582101   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
26592102   ROM_CONTINUE(             0x004000, 0x00c000 )
26602103
2661   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2104   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
26622105   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
26632106   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
26642107   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241749r241750
26662109   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
26672110   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
26682111
2669   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
2112   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
26702113   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
26712114   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
26722115   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
26732116   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
26742117
2675   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2118   ROM_REGION( 0x800, "200e", 0 )
26762119   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
26772120
2678   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2121   ROM_REGION( 0x800, "210e", 0 )
26792122   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
26802123ROM_END
26812124
26822125
26832126ROM_START( stunrunj )
2684   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2127   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
26852128   ROM_LOAD16_BYTE( "136070-3402.200r", 0x000000, 0x010000, CRC(d8d56923) SHA1(248b22dab791c2d9ee6e6097dac9f3bf85d572be) )
26862129   ROM_LOAD16_BYTE( "136070-3401.210r", 0x000001, 0x010000, CRC(ce11126c) SHA1(cf27b56103048cc23dc6763763b7419583a27c76) )
26872130   ROM_LOAD16_BYTE( "136070-7404.200s", 0x020000, 0x010000, CRC(81da3e74) SHA1(38864aac479a8927d168ee977fd0981a7926d0fd) )
r241749r241750
26952138   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
26962139   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
26972140
2698   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
2141   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
26992142   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
27002143   ROM_CONTINUE(             0x004000, 0x00c000 )
27012144
2702   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2145   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
27032146   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
27042147   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
27052148   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241749r241750
27072150   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
27082151   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
27092152
2710   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
2153   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
27112154   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
27122155   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
27132156   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
27142157   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
27152158
2716   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2159   ROM_REGION( 0x800, "200e", 0 )
27172160   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
27182161
2719   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2162   ROM_REGION( 0x800, "210e", 0 )
27202163   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
27212164ROM_END
27222165
27232166
27242167ROM_START( stunrun5 )
2725   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2168   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
27262169   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
27272170   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
27282171   ROM_LOAD16_BYTE( "136070-5104.200s", 0x020000, 0x010000, CRC(d5c601fe) SHA1(ab61e11723ab9b92fb98b6f8e520a7b323caae64) )
r241749r241750
27362179   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
27372180   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
27382181
2739   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
2182   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
27402183   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
27412184   ROM_CONTINUE(             0x004000, 0x00c000 )
27422185
2743   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2186   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
27442187   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
27452188   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
27462189   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241749r241750
27482191   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
27492192   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
27502193
2751   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
2194   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
27522195   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
27532196   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
27542197   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
27552198   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
27562199
2757   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2200   ROM_REGION( 0x800, "200e", 0 )
27582201   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
27592202
2760   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2203   ROM_REGION( 0x800, "210e", 0 )
27612204   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
27622205ROM_END
27632206
27642207
27652208ROM_START( stunrune )
2766   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2209   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
27672210   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
27682211   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
27692212   ROM_LOAD16_BYTE( "136070-5004.200s", 0x020000, 0x010000, CRC(c2e4bde8) SHA1(766242455b0be6dc7b698cc6fe86d90991ca2e0a) )
r241749r241750
27772220   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
27782221   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
27792222
2780   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
2223   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
27812224   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
27822225   ROM_CONTINUE(             0x004000, 0x00c000 )
27832226
2784   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2227   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
27852228   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
27862229   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
27872230   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241749r241750
27892232   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
27902233   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
27912234
2792   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
2235   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
27932236   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
27942237   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
27952238   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
27962239   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
27972240
2798   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2241   ROM_REGION( 0x800, "200e", 0 )
27992242   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
28002243
2801   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2244   ROM_REGION( 0x800, "210e", 0 )
28022245   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
28032246ROM_END
28042247
28052248
28062249ROM_START( stunrun4 )
2807   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2250   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
28082251   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
28092252   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
28102253   ROM_LOAD16_BYTE( "136070-4104.200s", 0x020000, 0x010000, CRC(62c7700b) SHA1(31d7a39df7353e60b806c204bfdd75c06b17c984) )
r241749r241750
28182261   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
28192262   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
28202263
2821   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
2264   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
28222265   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
28232266   ROM_CONTINUE(             0x004000, 0x00c000 )
28242267
2825   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2268   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
28262269   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
28272270   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
28282271   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241749r241750
28302273   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
28312274   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
28322275
2833   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
2276   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
28342277   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
28352278   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
28362279   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
28372280   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
28382281
2839   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2282   ROM_REGION( 0x800, "200e", 0 )
28402283   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
28412284
2842   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2285   ROM_REGION( 0x800, "210e", 0 )
28432286   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
28442287ROM_END
28452288
28462289
28472290ROM_START( stunrun3 )
2848   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2291   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
28492292   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
28502293   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
28512294   ROM_LOAD16_BYTE( "136070-2104.200s", 0x020000, 0x010000, CRC(6acdeeaa) SHA1(a4cbe648ad2fee3bb945fbc8055b76be1f5c03d1) )
r241749r241750
28592302   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
28602303   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
28612304
2862   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
2305   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
28632306   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
28642307   ROM_CONTINUE(             0x004000, 0x00c000 )
28652308
2866   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2309   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
28672310   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
28682311   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
28692312   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241749r241750
28712314   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
28722315   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
28732316
2874   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
2317   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
28752318   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
28762319   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
28772320   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
28782321   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
28792322
2880   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2323   ROM_REGION( 0x800, "200e", 0 )
28812324   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
28822325
2883   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2326   ROM_REGION( 0x800, "210e", 0 )
28842327   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
28852328ROM_END
28862329
28872330
28882331ROM_START( stunrun3e )
2889   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2332   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
28902333   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
28912334   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
28922335   ROM_LOAD16_BYTE( "136070-3004.200s", 0x020000, 0x010000, CRC(d9474678) SHA1(090b78f9e9d2ecf4218821fc102861df1e27d95a) )
r241749r241750
29002343   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
29012344   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
29022345
2903   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
2346   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
29042347   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
29052348   ROM_CONTINUE(             0x004000, 0x00c000 )
29062349
2907   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2350   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
29082351   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
29092352   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
29102353   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241749r241750
29122355   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
29132356   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
29142357
2915   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
2358   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
29162359   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
29172360   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
29182361   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
29192362   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
29202363
2921   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2364   ROM_REGION( 0x800, "200e", 0 )
29222365   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
29232366
2924   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2367   ROM_REGION( 0x800, "210e", 0 )
29252368   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
29262369ROM_END
29272370
29282371
29292372ROM_START( stunrun2 )
2930   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2373   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
29312374   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
29322375   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
29332376   ROM_LOAD16_BYTE( "136070-2104.200s", 0x020000, 0x010000, CRC(6acdeeaa) SHA1(a4cbe648ad2fee3bb945fbc8055b76be1f5c03d1) )
r241749r241750
29412384   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
29422385   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
29432386
2944   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
2387   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
29452388   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
29462389   ROM_CONTINUE(             0x004000, 0x00c000 )
29472390
2948   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2391   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
29492392   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
29502393   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
29512394   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241749r241750
29532396   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
29542397   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
29552398
2956   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
2399   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
29572400   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
29582401   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
29592402   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
29602403   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
29612404
2962   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2405   ROM_REGION( 0x800, "200e", 0 )
29632406   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
29642407
2965   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2408   ROM_REGION( 0x800, "210e", 0 )
29662409   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
29672410ROM_END
29682411
29692412
29702413ROM_START( stunrun2e )
2971   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2414   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
29722415   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
29732416   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
29742417   ROM_LOAD16_BYTE( "136070-2004.200s", 0x020000, 0x010000, CRC(30303326) SHA1(49a279b5b02af97395dfb8c66410319a807aa4b9) )
r241749r241750
29822425   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
29832426   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
29842427
2985   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
2428   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
29862429   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
29872430   ROM_CONTINUE(             0x004000, 0x00c000 )
29882431
2989   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2432   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
29902433   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
29912434   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
29922435   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241749r241750
29942437   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
29952438   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
29962439
2997   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
2440   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
29982441   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
29992442   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
30002443   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
30012444   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
30022445
3003   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2446   ROM_REGION( 0x800, "200e", 0 )
30042447   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
30052448
3006   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2449   ROM_REGION( 0x800, "210e", 0 )
30072450   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
30082451ROM_END
30092452
30102453
30112454ROM_START( stunrun0 )
3012   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2455   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
30132456   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
30142457   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
30152458   ROM_LOAD16_BYTE( "136070-0304.200s", 0x020000, 0x010000, CRC(e7968b1b) SHA1(f2e5b4f64e553041abbe2610968f59cca425a4d4) )
r241749r241750
30232466   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
30242467   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
30252468
3026   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
2469   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
30272470   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
30282471   ROM_CONTINUE(             0x004000, 0x00c000 )
30292472
3030   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2473   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
30312474   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
30322475   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
30332476   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241749r241750
30352478   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
30362479   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
30372480
3038   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
2481   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
30392482   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
30402483   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
30412484   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
30422485   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
30432486
3044   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2487   ROM_REGION( 0x800, "200e", 0 )
30452488   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
30462489
3047   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2490   ROM_REGION( 0x800, "210e", 0 )
30482491   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
30492492ROM_END
30502493
30512494
30522495ROM_START( stunrunp )
3053   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2496   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
30542497   ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
30552498   ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
30562499   ROM_LOAD16_BYTE( "prog-hi0.s20", 0x020000, 0x010000, CRC(0be15a99) SHA1(52b152b23af305e95765c72052bb7aba846510d6) )
r241749r241750
30642507   ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
30652508   ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
30662509
3067   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
2510   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
30682511   ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
30692512   ROM_CONTINUE(             0x004000, 0x00c000 )
30702513
3071   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2514   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
30722515   ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
30732516   ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
30742517   ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
r241749r241750
30762519   ROM_LOAD16_BYTE( "136070-2120.9h",  0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
30772520   ROM_LOAD16_BYTE( "136070-2117.9k",  0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
30782521
3079   ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 )   /* 256k for ADPCM samples */
2522   ROM_REGION( 0x40000, "jsa:oki1", 0 )   /* 256k for ADPCM samples */
30802523   ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
30812524   ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
30822525   ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
30832526   ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
30842527
3085   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2528   ROM_REGION( 0x800, "200e", 0 )
30862529   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
30872530
3088   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2531   ROM_REGION( 0x800, "210e", 0 )
30892532   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
30902533ROM_END
30912534
30922535
30932536ROM_START( racedriv )
3094   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2537   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
30952538   ROM_LOAD16_BYTE( "136077-5002.200r", 0x000000, 0x010000, CRC(0a78adca) SHA1(a44722340ff7c99253107be092bec2e87cae340b) )
30962539   ROM_LOAD16_BYTE( "136077-5001.210r", 0x000001, 0x010000, CRC(74b4cd49) SHA1(48fc4344c092c9eb14249874ac305b87bba53e7e) )
30972540   ROM_LOAD16_BYTE( "136077-5004.200s", 0x020000, 0x010000, CRC(c0cbdf4e) SHA1(8c7f4f79e90dc7206d9d83d588822000a7a53c52) )
r241749r241750
31092552   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
31102553   ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
31112554
3112   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
2555   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
31132556   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
31142557
3115   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
2558   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
31162559   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
31172560   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
31182561
3119   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2562   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
31202563   ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
31212564   ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
31222565   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
31232566   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
31242567
3125   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
2568   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
31262569   ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) )
31272570   ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) )
31282571
3129   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
2572   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
31302573   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
31312574   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
31322575   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
31332576   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
31342577   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
31352578
3136   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2579   ROM_REGION( 0x800, "200e", 0 )
31372580   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
31382581
3139   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2582   ROM_REGION( 0x800, "210e", 0 )
31402583   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
31412584ROM_END
31422585
31432586
31442587ROM_START( racedrivb )
3145   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2588   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
31462589   ROM_LOAD16_BYTE( "136077-5002.200r", 0x000000, 0x010000, CRC(0a78adca) SHA1(a44722340ff7c99253107be092bec2e87cae340b) )
31472590   ROM_LOAD16_BYTE( "136077-5001.210r", 0x000001, 0x010000, CRC(74b4cd49) SHA1(48fc4344c092c9eb14249874ac305b87bba53e7e) )
31482591   ROM_LOAD16_BYTE( "136077-5004.200s", 0x020000, 0x010000, CRC(c0cbdf4e) SHA1(8c7f4f79e90dc7206d9d83d588822000a7a53c52) )
r241749r241750
31602603   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
31612604   ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
31622605
3163   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
2606   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
31642607   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
31652608
3166   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
2609   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
31672610   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
31682611   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
31692612
3170   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2613   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
31712614   ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
31722615   ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
31732616   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
31742617   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
31752618
3176   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
2619   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
31772620   ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) )
31782621   ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) )
31792622
3180   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
2623   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
31812624   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
31822625   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
31832626   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
31842627   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
31852628   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
31862629
3187   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2630   ROM_REGION( 0x800, "200e", 0 )
31882631   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
31892632
3190   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2633   ROM_REGION( 0x800, "210e", 0 )
31912634   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
31922635ROM_END
31932636
31942637
31952638ROM_START( racedrivg )
3196   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2639   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
31972640   ROM_LOAD16_BYTE( "136077-5202.200r", 0x000000, 0x010000, CRC(69016b69) SHA1(8da1314b4b6da6fc95479b9034190181bf778b25) )
31982641   ROM_LOAD16_BYTE( "136077-5201.210r", 0x000001, 0x010000, CRC(439a1ce7) SHA1(fc376c654c494d2895bcf85d5d8a9d6f17b6887e) )
31992642   ROM_LOAD16_BYTE( "136077-5204.200s", 0x020000, 0x010000, CRC(15df2b3d) SHA1(49235687b7be684dcd491b854f80c1d849894956) )
r241749r241750
32112654   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
32122655   ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
32132656
3214   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
2657   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
32152658   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
32162659
3217   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
2660   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
32182661   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
32192662   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
32202663
3221   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2664   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
32222665   ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
32232666   ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
32242667   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
32252668   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
32262669
3227   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
2670   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
32282671   ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) )
32292672   ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) )
32302673
3231   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
2674   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
32322675   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
32332676   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
32342677   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
32352678   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
32362679   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
32372680
3238   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2681   ROM_REGION( 0x800, "200e", 0 )
32392682   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
32402683
3241   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2684   ROM_REGION( 0x800, "210e", 0 )
32422685   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
32432686ROM_END
32442687
32452688
32462689ROM_START( racedriv4 )
3247   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2690   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
32482691   ROM_LOAD16_BYTE( "136077-4002.200r", 0x000000, 0x010000, CRC(afe1beb5) SHA1(66dba58f2a02eaa2d6306e53adffb662a8021031) )
32492692   ROM_LOAD16_BYTE( "136077-4001.210r", 0x000001, 0x010000, CRC(8a449e44) SHA1(03800b96a3992baa4bd37db20e559e08b12e55d1) )
32502693   ROM_LOAD16_BYTE( "136077-4004.200s", 0x020000, 0x010000, CRC(6d886150) SHA1(514de55de66a2b7fb14d6e2d896911e1b1af62f2) )
r241749r241750
32622705   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
32632706   ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
32642707
3265   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
2708   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
32662709   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
32672710
3268   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
2711   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
32692712   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
32702713   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
32712714
3272   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2715   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
32732716   ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
32742717   ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
32752718   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
32762719   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
32772720
3278   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
2721   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
32792722   ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) )
32802723   ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) )
32812724
3282   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
2725   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
32832726   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
32842727   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
32852728   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
32862729   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
32872730   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
32882731
3289   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2732   ROM_REGION( 0x800, "200e", 0 )
32902733   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
32912734
3292   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2735   ROM_REGION( 0x800, "210e", 0 )
32932736   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
32942737ROM_END
32952738
32962739
32972740ROM_START( racedrivb4 )
3298   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2741   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
32992742   ROM_LOAD16_BYTE( "136077-4002.200r", 0x000000, 0x010000, CRC(afe1beb5) SHA1(66dba58f2a02eaa2d6306e53adffb662a8021031) )
33002743   ROM_LOAD16_BYTE( "136077-4001.210r", 0x000001, 0x010000, CRC(8a449e44) SHA1(03800b96a3992baa4bd37db20e559e08b12e55d1) )
33012744   ROM_LOAD16_BYTE( "136077-4004.200s", 0x020000, 0x010000, CRC(6d886150) SHA1(514de55de66a2b7fb14d6e2d896911e1b1af62f2) )
r241749r241750
33132756   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
33142757   ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
33152758
3316   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
2759   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
33172760   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
33182761
3319   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
2762   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
33202763   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
33212764   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
33222765
3323   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2766   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
33242767   ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
33252768   ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
33262769   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
33272770   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
33282771
3329   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
2772   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
33302773   ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) )
33312774   ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) )
33322775
3333   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
2776   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
33342777   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
33352778   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
33362779   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
33372780   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
33382781   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
33392782
3340   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2783   ROM_REGION( 0x800, "200e", 0 )
33412784   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
33422785
3343   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2786   ROM_REGION( 0x800, "210e", 0 )
33442787   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
33452788ROM_END
33462789
33472790
33482791ROM_START( racedrivg4 )
3349   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2792   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
33502793   ROM_LOAD16_BYTE( "136077-4202.200r", 0x000000, 0x010000, CRC(a8c7e15e) SHA1(6aa4b819e5c8562c8eef92a411b2dc91ed35ae4c) )
33512794   ROM_LOAD16_BYTE( "136077-4201.210r", 0x000001, 0x010000, CRC(1dfa4df2) SHA1(1db0676f0ff1e7996c9791b041d9cd4ca9c70261) )
33522795   ROM_LOAD16_BYTE( "136077-4204.200s", 0x020000, 0x010000, CRC(29eea8c1) SHA1(1a8020efc0b963bbd05bd33dc3176db7c3234fcc) )
r241749r241750
33642807   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
33652808   ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
33662809
3367   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
2810   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
33682811   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
33692812
3370   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
2813   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
33712814   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
33722815   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
33732816
3374   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2817   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
33752818   ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
33762819   ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
33772820   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
33782821   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
33792822
3380   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
2823   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
33812824   ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) )
33822825   ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) )
33832826
3384   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
2827   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
33852828   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
33862829   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
33872830   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
33882831   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
33892832   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
33902833
3391   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2834   ROM_REGION( 0x800, "200e", 0 )
33922835   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
33932836
3394   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2837   ROM_REGION( 0x800, "210e", 0 )
33952838   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
33962839ROM_END
33972840
33982841
33992842ROM_START( racedriv3 )
3400   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2843   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
34012844   ROM_LOAD16_BYTE( "136077-3002.200r", 0x000000, 0x010000, CRC(78771253) SHA1(88fdae99eb4feb40db8ad171b3435315db3adedb) )
34022845   ROM_LOAD16_BYTE( "136077-3001.210r", 0x000001, 0x010000, CRC(c75373a4) SHA1(d2f14190218cfedf4478806a26c77edd4d7c73eb) )
34032846   ROM_LOAD16_BYTE( "136077-2004.200s", 0x020000, 0x010000, CRC(4eb19582) SHA1(52359d7839f3459aec4fdc16a659a29fa60feee4) )
r241749r241750
34152858   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
34162859   ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
34172860
3418   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
2861   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
34192862   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
34202863
3421   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
2864   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
34222865   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
34232866   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
34242867
3425   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2868   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
34262869   ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
34272870   ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
34282871   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
34292872   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
34302873
3431   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
2874   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
34322875   ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) )
34332876   ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) )
34342877
3435   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
2878   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
34362879   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
34372880   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
34382881   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
34392882   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
34402883   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
34412884
3442   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2885   ROM_REGION( 0x800, "200e", 0 )
34432886   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
34442887
3445   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2888   ROM_REGION( 0x800, "210e", 0 )
34462889   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
34472890ROM_END
34482891
34492892
34502893ROM_START( racedriv2 )
3451   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2894   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
34522895   ROM_LOAD16_BYTE( "136077-2002.200r", 0x000000, 0x010000, CRC(6b440e10) SHA1(8074a1de01e2cdc497a51339f9c05329d6f540b0) )
34532896   ROM_LOAD16_BYTE( "136077-2001.210r", 0x000001, 0x010000, CRC(eee12973) SHA1(0cd2e88c431d08fba5a73c903327f39f8692f3aa) )
34542897   ROM_LOAD16_BYTE( "136077-2004.200s", 0x020000, 0x010000, CRC(4eb19582) SHA1(52359d7839f3459aec4fdc16a659a29fa60feee4) )
r241749r241750
34662909   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
34672910   ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
34682911
3469   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
2912   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
34702913   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
34712914
3472   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
2915   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
34732916   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
34742917   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
34752918
3476   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2919   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
34772920   ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
34782921   ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
34792922   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
34802923   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
34812924
3482   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
2925   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
34832926   ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) )
34842927   ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) )
34852928
3486   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
2929   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
34872930   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
34882931   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
34892932   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
34902933   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
34912934   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
34922935
3493   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2936   ROM_REGION( 0x800, "200e", 0 )
34942937   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
34952938
3496   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2939   ROM_REGION( 0x800, "210e", 0 )
34972940   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
34982941ROM_END
34992942
35002943
35012944ROM_START( racedriv1 )
3502   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2945   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
35032946   ROM_LOAD16_BYTE( "136077-1002.200r", 0x000000, 0x010000, CRC(d39f6d53) SHA1(c278cd4109a65304a21dd1d8ba27375713a8b107) )
35042947   ROM_LOAD16_BYTE( "136077-1001.210r", 0x000001, 0x010000, CRC(e29e011c) SHA1(7044e7f9c8551309b5867a06672796411007a427) )
35052948   ROM_LOAD16_BYTE( "136077-1004.200s", 0x020000, 0x010000, CRC(809831e8) SHA1(681160deceff4df0f000c23f8514086dbbcc0c8d) )
r241749r241750
35172960   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
35182961   ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
35192962
3520   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
2963   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
35212964   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
35222965
3523   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
2966   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
35242967   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
35252968   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
35262969
3527   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
2970   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
35282971   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
35292972   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
35302973   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
35312974   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
35322975
3533   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
2976   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
35342977   ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) )
35352978   ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) )
35362979
3537   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
2980   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
35382981   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
35392982   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
35402983   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
35412984   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
35422985   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
35432986
3544   ROM_REGION( 0x800, "mainpcb:200e", 0 )
2987   ROM_REGION( 0x800, "200e", 0 )
35452988   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
35462989
3547   ROM_REGION( 0x800, "mainpcb:210e", 0 )
2990   ROM_REGION( 0x800, "210e", 0 )
35482991   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
35492992ROM_END
35502993
35512994
35522995ROM_START( racedrivg1 )
3553   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
2996   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
35542997   ROM_LOAD16_BYTE( "136077-1202.200r", 0x000000, 0x010000, CRC(bd363903) SHA1(8f0937725adabf5ee9e0ac015c83916e2575670a) )
35552998   ROM_LOAD16_BYTE( "136077-1201.210r", 0x000001, 0x010000, CRC(748c3be4) SHA1(ddf149f333d23e9c782ae447f6fb3f780680b3f5) )
35562999   ROM_LOAD16_BYTE( "136077-1204.200s", 0x020000, 0x010000, CRC(aef103bb) SHA1(52831858d3a45ad00e156c5b2a11e7fddf06bead) )
r241749r241750
35683011   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
35693012   ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
35703013
3571   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3014   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
35723015   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
35733016
3574   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
3017   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
35753018   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
35763019   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
35773020
3578   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
3021   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
35793022   ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
35803023   ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
35813024   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
35823025   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
35833026
3584   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3027   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
35853028   ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) )
35863029   ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) )
35873030
3588   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
3031   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
35893032   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
35903033   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
35913034   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
35923035   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
35933036   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
35943037
3595   ROM_REGION( 0x800, "mainpcb:200e", 0 )
3038   ROM_REGION( 0x800, "200e", 0 )
35963039   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
35973040
3598   ROM_REGION( 0x800, "mainpcb:210e", 0 )
3041   ROM_REGION( 0x800, "210e", 0 )
35993042   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
36003043ROM_END
36013044
36023045
36033046ROM_START( racedrivb1 )
3604   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
3047   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
36053048   ROM_LOAD16_BYTE( "136077-2002.200r", 0x000000, 0x010000, CRC(6b440e10) SHA1(8074a1de01e2cdc497a51339f9c05329d6f540b0) )
36063049   ROM_LOAD16_BYTE( "136077-2001.210r", 0x000001, 0x010000, CRC(eee12973) SHA1(0cd2e88c431d08fba5a73c903327f39f8692f3aa) )
36073050   ROM_LOAD16_BYTE( "136077-1104.200s", 0x020000, 0x010000, CRC(a9495f53) SHA1(68e7d983c0e1a84f5ad0743a230e6126169a6fd6) )
r241749r241750
36193062   ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
36203063   ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
36213064
3622   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3065   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
36233066   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
36243067
3625   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
3068   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
36263069   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
36273070   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
36283071
3629   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
3072   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
36303073   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
36313074   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
36323075   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
36333076   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
36343077
3635   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3078   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
36363079   ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) )
36373080   ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) )
36383081
3639   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
3082   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
36403083   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
36413084   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
36423085   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
36433086   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
36443087   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
36453088
3646   ROM_REGION( 0x800, "mainpcb:200e", 0 )
3089   ROM_REGION( 0x800, "200e", 0 )
36473090   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
36483091
3649   ROM_REGION( 0x800, "mainpcb:210e", 0 )
3092   ROM_REGION( 0x800, "210e", 0 )
36503093   ROM_LOAD( "racedriv.210e",   0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
36513094ROM_END
36523095
36533096
36543097ROM_START( racedrivc )
3655   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
3098   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
36563099   ROM_LOAD16_BYTE( "136078-5002.200r", 0x000000, 0x010000, CRC(ae8f79bd) SHA1(054f2d1948d6d03832c4557c3dd7667c0784716d) )
36573100   ROM_LOAD16_BYTE( "136078-5001.210r", 0x000001, 0x010000, CRC(ad896e7f) SHA1(7b047f0c972fac075db00faf19cdf9ccdcef5c63) )
36583101   ROM_LOAD16_BYTE( "136078-5004.200s", 0x020000, 0x010000, CRC(b8650bee) SHA1(a9905081e622e4a4fcec9aa08b87566ecdb9198b) )
r241749r241750
36703113   ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
36713114   ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
36723115
3673   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3116   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
36743117   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
36753118
3676   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
3119   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
36773120   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
36783121   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
36793122
3680   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
3123   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
36813124   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
36823125   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
36833126   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
36843127   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
36853128
3686   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3129   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
36873130   ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
36883131   ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
36893132
3690   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
3133   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
36913134   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
36923135   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
36933136   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
36943137   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
36953138   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
36963139
3697   ROM_REGION( 0x800, "mainpcb:200e", 0 )
3140   ROM_REGION( 0x800, "200e", 0 )
36983141   ROM_LOAD( "racedrivc.200e",  0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
36993142
3700   ROM_REGION( 0x800, "mainpcb:210e", 0 )
3143   ROM_REGION( 0x800, "210e", 0 )
37013144   ROM_LOAD( "racedrivc.210e",  0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
37023145ROM_END
37033146
37043147
37053148ROM_START( racedrivcb )
3706   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
3149   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
37073150   ROM_LOAD16_BYTE( "136078-5002.200r", 0x000000, 0x010000, CRC(ae8f79bd) SHA1(054f2d1948d6d03832c4557c3dd7667c0784716d) )
37083151   ROM_LOAD16_BYTE( "136078-5001.210r", 0x000001, 0x010000, CRC(ad896e7f) SHA1(7b047f0c972fac075db00faf19cdf9ccdcef5c63) )
37093152   ROM_LOAD16_BYTE( "136078-5004.200s", 0x020000, 0x010000, CRC(b8650bee) SHA1(a9905081e622e4a4fcec9aa08b87566ecdb9198b) )
r241749r241750
37213164   ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
37223165   ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
37233166
3724   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3167   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
37253168   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
37263169
3727   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
3170   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
37283171   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
37293172   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
37303173
3731   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
3174   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
37323175   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
37333176   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
37343177   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
37353178   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
37363179
3737   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3180   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
37383181   ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
37393182   ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
37403183
3741   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
3184   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
37423185   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
37433186   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
37443187   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
37453188   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
37463189   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
37473190
3748   ROM_REGION( 0x800, "mainpcb:200e", 0 )
3191   ROM_REGION( 0x800, "200e", 0 )
37493192   ROM_LOAD( "racedrivc.200e",  0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
37503193
3751   ROM_REGION( 0x800, "mainpcb:210e", 0 )
3194   ROM_REGION( 0x800, "210e", 0 )
37523195   ROM_LOAD( "racedrivc.210e",  0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
37533196ROM_END
37543197
37553198
37563199ROM_START( racedrivcg )
3757   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
3200   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
37583201   ROM_LOAD16_BYTE( "136078-5202.200r", 0x000000, 0x010000, CRC(c37b5281) SHA1(1ff7a879853dd1e10881fd56e8ae0962676ef319) )
37593202   ROM_LOAD16_BYTE( "136078-5201.210r", 0x000001, 0x010000, CRC(80072dad) SHA1(ba33465f639431cf6e9ce377ed31e538a0304dc5) )
37603203   ROM_LOAD16_BYTE( "136078-5204.200s", 0x020000, 0x010000, CRC(5d45fbd2) SHA1(5279c814c2876c642630fed5c114eccea6d703b0) )
r241749r241750
37723215   ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
37733216   ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
37743217
3775   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3218   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
37763219   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
37773220
3778   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
3221   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
37793222   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
37803223   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
37813224
3782   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
3225   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
37833226   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
37843227   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
37853228   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
37863229   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
37873230
3788   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3231   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
37893232   ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
37903233   ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
37913234
3792   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
3235   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
37933236   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
37943237   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
37953238   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
37963239   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
37973240   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
37983241
3799   ROM_REGION( 0x800, "mainpcb:200e", 0 )
3242   ROM_REGION( 0x800, "200e", 0 )
38003243   ROM_LOAD( "racedrivc.200e",  0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
38013244
3802   ROM_REGION( 0x800, "mainpcb:210e", 0 )
3245   ROM_REGION( 0x800, "210e", 0 )
38033246   ROM_LOAD( "racedrivc.210e",  0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
38043247ROM_END
38053248
38063249
38073250ROM_START( racedrivc4 )
3808   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
3251   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
38093252   ROM_LOAD16_BYTE( "136078-4002.200r", 0x000000, 0x010000, CRC(d6522b97) SHA1(0e4c4ce9f6147cc3878a3f1e60cf58f00bfe9e4c) )
38103253   ROM_LOAD16_BYTE( "136078-4001.210r", 0x000001, 0x010000, CRC(d658a8ed) SHA1(59d823d8150de62ba5c4fddf87584bd2044e87f7) )
38113254   ROM_LOAD16_BYTE( "136078-4004.200s", 0x020000, 0x010000, CRC(c8520b01) SHA1(f0bd0505cbf24f7e43dc2e775ecbbf0db5419b6e) )
r241749r241750
38233266   ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
38243267   ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
38253268
3826   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3269   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
38273270   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
38283271
3829   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
3272   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
38303273   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
38313274   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
38323275
3833   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
3276   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
38343277   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
38353278   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
38363279   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
38373280   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
38383281
3839   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3282   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
38403283   ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
38413284   ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
38423285
3843   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
3286   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
38443287   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
38453288   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
38463289   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
38473290   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
38483291   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
38493292
3850   ROM_REGION( 0x800, "mainpcb:200e", 0 )
3293   ROM_REGION( 0x800, "200e", 0 )
38513294   ROM_LOAD( "racedrivc.200e",  0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
38523295
3853   ROM_REGION( 0x800, "mainpcb:210e", 0 )
3296   ROM_REGION( 0x800, "210e", 0 )
38543297   ROM_LOAD( "racedrivc.210e",  0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
38553298ROM_END
38563299
38573300
38583301ROM_START( racedrivcb4 )
3859   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
3302   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
38603303   ROM_LOAD16_BYTE( "136078-4002.200r", 0x000000, 0x010000, CRC(d6522b97) SHA1(0e4c4ce9f6147cc3878a3f1e60cf58f00bfe9e4c) )
38613304   ROM_LOAD16_BYTE( "136078-4001.210r", 0x000001, 0x010000, CRC(d658a8ed) SHA1(59d823d8150de62ba5c4fddf87584bd2044e87f7) )
38623305   ROM_LOAD16_BYTE( "136078-4004.200s", 0x020000, 0x010000, CRC(c8520b01) SHA1(f0bd0505cbf24f7e43dc2e775ecbbf0db5419b6e) )
r241749r241750
38743317   ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
38753318   ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
38763319
3877   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3320   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
38783321   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
38793322
3880   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
3323   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
38813324   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
38823325   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
38833326
3884   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
3327   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
38853328   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
38863329   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
38873330   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
38883331   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
38893332
3890   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3333   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
38913334   ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
38923335   ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
38933336
3894   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
3337   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
38953338   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
38963339   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
38973340   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
38983341   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
38993342   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
39003343
3901   ROM_REGION( 0x800, "mainpcb:200e", 0 )
3344   ROM_REGION( 0x800, "200e", 0 )
39023345   ROM_LOAD( "racedrivc.200e",  0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
39033346
3904   ROM_REGION( 0x800, "mainpcb:210e", 0 )
3347   ROM_REGION( 0x800, "210e", 0 )
39053348   ROM_LOAD( "racedrivc.210e",  0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
39063349ROM_END
39073350
39083351
39093352ROM_START( racedrivcg4 )
3910   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
3353   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
39113354   ROM_LOAD16_BYTE( "136078-4202.200r", 0x000000, 0x010000, CRC(be58215d) SHA1(0497efbd696e8d2db4e42678dd6cfe6cd3f78688) )
39123355   ROM_LOAD16_BYTE( "136078-4201.210r", 0x000001, 0x010000, CRC(609c5f23) SHA1(a66e1f10f8ad9d25fca5b681ad543967287f2036) )
39133356   ROM_LOAD16_BYTE( "136078-4204.200s", 0x020000, 0x010000, CRC(2e590c4f) SHA1(dcb56bacdde17eade5b347d5549cec1de89774e6) )
r241749r241750
39253368   ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
39263369   ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
39273370
3928   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3371   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
39293372   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
39303373
3931   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
3374   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
39323375   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
39333376   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
39343377
3935   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
3378   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
39363379   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
39373380   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
39383381   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
39393382   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
39403383
3941   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3384   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
39423385   ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
39433386   ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
39443387
3945   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
3388   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
39463389   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
39473390   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
39483391   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
39493392   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
39503393   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
39513394
3952   ROM_REGION( 0x800, "mainpcb:200e", 0 )
3395   ROM_REGION( 0x800, "200e", 0 )
39533396   ROM_LOAD( "racedrivc.200e",  0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
39543397
3955   ROM_REGION( 0x800, "mainpcb:210e", 0 )
3398   ROM_REGION( 0x800, "210e", 0 )
39563399   ROM_LOAD( "racedrivc.210e",  0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
39573400ROM_END
39583401
39593402
39603403ROM_START( racedrivc2 )
3961   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
3404   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
39623405   ROM_LOAD16_BYTE( "136078-2002.200r", 0x000000, 0x010000, CRC(669fe6fe) SHA1(1775ee3ef4817f553113772cf0fb35cbbe2e73a5) )
39633406   ROM_LOAD16_BYTE( "136078-2001.210r", 0x000001, 0x010000, CRC(9312fd5f) SHA1(9dd1b30ebceedf50fb18d744540e2003a8110d09) )
39643407   ROM_LOAD16_BYTE( "136078-1004.200s", 0x020000, 0x010000, CRC(4a1beb65) SHA1(3a4e3dd07a1415aef27e8bbebe0503296dfc7586) )
r241749r241750
39763419   ROM_LOAD16_BYTE( "136078-1015.210y", 0x0e0001, 0x010000, CRC(64dd6040) SHA1(bcadf4f1d9a0685ca39af903d3342d590850513c) )
39773420   ROM_LOAD16_BYTE( "136078-1016.200y", 0x0e0000, 0x010000, CRC(a2a0ed28) SHA1(6f308a38594f7e54ebdd6983d28664ba595bc525) )
39783421
3979   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3422   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
39803423   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
39813424
3982   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
3425   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
39833426   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
39843427   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
39853428
3986   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
3429   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
39873430   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
39883431   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
39893432   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
39903433   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
39913434
3992   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3435   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
39933436   ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
39943437   ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
39953438
3996   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
3439   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
39973440   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
39983441   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
39993442   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
40003443   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
40013444   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
40023445
4003   ROM_REGION( 0x800, "mainpcb:200e", 0 )
3446   ROM_REGION( 0x800, "200e", 0 )
40043447   ROM_LOAD( "racedrivc.200e",  0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
40053448
4006   ROM_REGION( 0x800, "mainpcb:210e", 0 )
3449   ROM_REGION( 0x800, "210e", 0 )
40073450   ROM_LOAD( "racedrivc.210e",  0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
40083451ROM_END
40093452
40103453
40113454ROM_START( racedrivc1 )
4012   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
3455   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
40133456   ROM_LOAD16_BYTE( "136078-1002.200r", 0x000000, 0x010000, CRC(ed997f08) SHA1(9512f347120174345dbe8c756e5c239fdce438a5) )
40143457   ROM_LOAD16_BYTE( "136078-1001.210r", 0x000001, 0x010000, CRC(5540ee7d) SHA1(f1d16cfa20b61f1cf075e3275ea4af0b46aa5470) )
40153458   ROM_LOAD16_BYTE( "136078-1004.200s", 0x020000, 0x010000, CRC(4a1beb65) SHA1(3a4e3dd07a1415aef27e8bbebe0503296dfc7586) )
r241749r241750
40273470   ROM_LOAD16_BYTE( "136078-1015.210y", 0x0e0001, 0x010000, CRC(64dd6040) SHA1(bcadf4f1d9a0685ca39af903d3342d590850513c) )
40283471   ROM_LOAD16_BYTE( "136078-1016.200y", 0x0e0000, 0x010000, CRC(a2a0ed28) SHA1(6f308a38594f7e54ebdd6983d28664ba595bc525) )
40293472
4030   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3473   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
40313474   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
40323475
4033   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
3476   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
40343477   ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
40353478   ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
40363479
4037   ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 )  /* 384k for ADSP object ROM */
3480   ROM_REGION16_BE( 0x60000, "user1", 0 )  /* 384k for ADSP object ROM */
40383481   ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
40393482   ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
40403483   ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
40413484   ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
40423485
4043   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3486   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
40443487   ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
40453488   ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
40463489
4047   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 10*128k for audio serial ROMs */
3490   ROM_REGION( 0x50000, "serialroms", 0 )      /* 10*128k for audio serial ROMs */
40483491   ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
40493492   ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
40503493   ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
40513494   ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
40523495   ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
40533496
4054   ROM_REGION( 0x800, "mainpcb:200e", 0 )
3497   ROM_REGION( 0x800, "200e", 0 )
40553498   ROM_LOAD( "racedrivc.200e",  0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
40563499
4057   ROM_REGION( 0x800, "mainpcb:210e", 0 )
3500   ROM_REGION( 0x800, "210e", 0 )
40583501   ROM_LOAD( "racedrivc.210e",  0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
40593502ROM_END
40603503
r241749r241750
41303573
41313574*/
41323575
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
41353576ROM_START( racedrivpan )
4136   ROM_REGION( 0x200000, "mainpcb:maincpu", 0 )        /* 2MB for 68000 code */
3577   ROM_REGION( 0x200000, "maincpu", 0 )        /* 2MB for 68000 code */
41373578   // Multisync PBB A045988 - Central Monitor
41383579   // boots with 'PROGRAM OK' when using standard Hard Drivin' board type (needs 137412-115 slapstic)
41393580   ROM_LOAD16_BYTE( "088-1002.bin", 0x000000, 0x010000, CRC(49a97391) SHA1(dbe4086cd87669a02d2a2133d0d9e2895946b383) )
r241749r241750
41563597   // Multisync PCB (A046901) - Side Monitor
41573598   // these will boot with 'PROGRAM OK' and display an empty side view, if you use the 'compact' type board driver
41583599   //  there should be one board for each side.  (needs 137412-117 slapstic)
4159   ROM_REGION( 0x200000, "mainpcb:sidecpu", 0 )        /* 2MB for 68000 code */
3600   ROM_REGION( 0x200000, "sidecpu", 0 )        /* 2MB for 68000 code */
41603601   ROM_LOAD16_BYTE( "088-2002.bin", 0x000000, 0x010000, CRC(77724070) SHA1(5862f30f7e2ab9c0beb06cf5599bcb1ff97f3a47) )
41613602   ROM_LOAD16_BYTE( "088-2001.bin", 0x000001, 0x010000, CRC(16ab2fff) SHA1(bf6dcefc98e1fe27bef0ddacc265d8782c486c83) )
41623603   ROM_LOAD16_BYTE( "088-2004.bin", 0x020000, 0x010000, CRC(dccdb16b) SHA1(330cf39bcbdb9c73da48b4e947086a7988e37496) )
r241749r241750
41743615   ROM_LOAD16_BYTE( "088-2016.bin", 0x0e0000, 0x010000, CRC(6a42b7e2) SHA1(2e0ff4b7e391106a976cb872f6311f6d35dca5b0) )
41753616   ROM_LOAD16_BYTE( "088-2015.bin", 0x0e0001, 0x010000, CRC(334e2a3b) SHA1(a19bfa7652845b9453c722091c773819ba248569) )
41763617
4177   ROM_REGION( 0x60000, "mainpcb:user1", 0 )       /* 384k for object ROM */
3618   ROM_REGION( 0x60000, "user1", 0 )       /* 384k for object ROM */
41783619   ROM_LOAD16_BYTE( "088-1017.bin",  0x00000, 0x10000, CRC(d92251e8) SHA1(deeeec54c4a61c3adf62f6b1b910135559090ee5) )
41793620   ROM_LOAD16_BYTE( "088-1018.bin",  0x00001, 0x10000, CRC(11a0a8f5) SHA1(d4ccc83fc99331d741bc9b8027ef20d72e3ad71a) )
41803621   ROM_LOAD16_BYTE( "088-1019.bin",  0x20000, 0x10000, CRC(5bb00676) SHA1(cad1cea8e43f9590fc71c00fab4eff0d447f9296) ) // == 136091-0019.2k (strtdriv)
r241749r241750
41843625
41853626   /* ----------------------- */
41863627
4187   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
3628   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )   /* ASIC65 TMS32015 code */
41883629   ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
41893630
41903631   /* ADSP board */
4191   ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 )        /* 2*64k for audio 68000 code */
3632   ROM_REGION( 0x20000, "soundcpu", 0 )        /* 2*64k for audio 68000 code */
41923633   ROM_LOAD16_BYTE( "rdps1032.bin", 0x000000, 0x010000, CRC(33005f2a) SHA1(e4037a76f122b271a9675d9187ab847a11738640) )
41933634   ROM_LOAD16_BYTE( "rdps1033.bin", 0x000001, 0x010000, CRC(4fc800ac) SHA1(dd8cfdb727d6a65274f4f871a589a36796ae1e57) )
41943635
41953636   /* DSK board */
4196   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3637   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
41973638   ROM_LOAD16_BYTE( "rdpd1026.bin", 0x000000, 0x020000, CRC(16572618) SHA1(08d9f7f76e6e75d5233240d4deab96808825994b) )
41983639   ROM_LOAD16_BYTE( "rdpd1025.bin", 0x000001, 0x020000, CRC(57b8a266) SHA1(257246d42841aa30220caeb91945e29978ee8fc0) )
41993640
42003641   /* Audio ROMs - show up as bad in self-test but so do racedriv's */
4201   ROM_REGION( 0x50000, "mainpcb:serialroms", 0 )      /* 5*64k for audio serial ROMs */
3642   ROM_REGION( 0x50000, "serialroms", 0 )      /* 5*64k for audio serial ROMs */
42023643   ROM_LOAD( "rdps1123.bin", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
42033644   ROM_LOAD( "rdps1124.bin", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
42043645   ROM_LOAD( "rdps3125.bin", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
42053646   ROM_LOAD( "rdps1126.bin", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
42063647   ROM_LOAD( "rdps1017.bin", 0x040000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
42073648
4208   ROM_REGION( 0x800, "mainpcb:200e", 0 )
3649   ROM_REGION( 0x800, "200e", 0 )
42093650   ROM_LOAD( "racedriv.200e",   0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
42103651
4211   ROM_REGION( 0x800, "mainpcb:210e", 0 )
3652   ROM_REGION( 0x800, "210e", 0 )
42123653   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) )
42783654ROM_END
42793655
42803656
42813657ROM_START( steeltal )
4282   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
3658   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
42833659   ROM_LOAD16_BYTE( "136087-1002.200r", 0x000000, 0x010000, CRC(31bf01a9) SHA1(cd08a839dbb5283a6e2bb35bc9e1578a14e3c2e6) )
42843660   ROM_LOAD16_BYTE( "136087-1001.210r", 0x000001, 0x010000, CRC(b4fa2900) SHA1(5e92ab4af31321b891c072305f8b8ef30a3e1fb0) )
42853661   ROM_LOAD16_BYTE( "136087-1004.200s", 0x020000, 0x010000, CRC(c31ca924) SHA1(8d7d2a3d204e69d759cf767b57570c18db5a3fd8) )
r241749r241750
42973673   ROM_LOAD16_BYTE( "136087-1016.200y", 0x0e0000, 0x010000, CRC(db62362e) SHA1(e1d392aa00ac36296728257fa26c6aa68a4ebe5f) )
42983674   ROM_LOAD16_BYTE( "136087-1015.210y", 0x0e0001, 0x010000, CRC(ef517db7) SHA1(16e7e351326391480bf36c58d6b34ef4128b6627) )
42993675
4300   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
3676   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
43013677   ROM_LOAD( "136087-5001.1f",  0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
43023678   ROM_CONTINUE(                0x004000, 0x00c000 )
43033679
4304   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )       /* 64k for ASIC65 */
3680   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )       /* 64k for ASIC65 */
43053681   ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
43063682
4307   ROM_REGION( 0x10000, "mainpcb:cpu6", 0 )        /* 64k for DSP communications */
3683   ROM_REGION( 0x10000, "cpu6", 0 )        /* 64k for DSP communications */
43083684   ROM_LOAD( "136087-1025.5f",  0x000000, 0x010000, CRC(4c645933) SHA1(7a1cf049e368059a79b03598de73c30d8dae5e90) )
43093685
4310   ROM_REGION16_BE( 0xc0000, "mainpcb:user1", 0 )  /* 768k for object ROM */
3686   ROM_REGION16_BE( 0xc0000, "user1", 0 )  /* 768k for object ROM */
43113687   ROM_LOAD16_BYTE( "136087-1018.2t",  0x000000, 0x020000, CRC(a5882384) SHA1(157707b5b114fa584893dec07dc456d4a5520f44) )
43123688   ROM_LOAD16_BYTE( "136087-1017.2lm", 0x000001, 0x020000, CRC(0a29db30) SHA1(f11ad7fe27989ffd66e9bef2c14ec040a4125d8a) )
43133689
4314   ROM_REGION( 0x80000, "mainpcb:jsa:oki1", 0 )
3690   ROM_REGION( 0x80000, "jsa:oki1", 0 )
43153691   ROM_LOAD( "136087-5002.1m",  0x000000, 0x020000, CRC(c904db9c) SHA1(d25fff3da87d2b716cd65fb7dd157c3f1f5e5909) )
43163692   ROM_LOAD( "136087-5003.1n",  0x020000, 0x020000, CRC(164580b3) SHA1(03118c8323d8a49a65addc61c1402d152d42d7f9) )
43173693   ROM_LOAD( "136087-5004.1p",  0x040000, 0x020000, CRC(296290a0) SHA1(8a3441a5618233f561531fe456e1f5ed22183421) )
43183694   ROM_LOAD( "136087-5005.1r",  0x060000, 0x020000, CRC(c029d037) SHA1(0ae736c0ca3a1974911464328dd5a6b41a939130) )
43193695
4320   ROM_REGION( 0x015D, "mainpcb:plds", 0 )
3696   ROM_REGION( 0x015D, "plds", 0 )
43213697   /* GAL's located on Sound board */
43223698   ROM_LOAD( "136085-1038.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2F */
43233699   ROM_LOAD( "136085-1039.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2L */
r241749r241750
43343710   /* GAL's located on "Multisync" board */
43353711   ROM_LOAD( "136087-9001.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL6001 at location 200K (SLOOP) */
43363712
4337   ROM_REGION( 0x800, "mainpcb:200e", 0 )
3713   ROM_REGION( 0x800, "200e", 0 )
43383714   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
43393715
4340   ROM_REGION( 0x800, "mainpcb:210e", 0 )
3716   ROM_REGION( 0x800, "210e", 0 )
43413717   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
43423718ROM_END
43433719
43443720
43453721ROM_START( steeltalg )
4346   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
3722   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
43473723   ROM_LOAD16_BYTE( "136087-1002.200r", 0x000000, 0x010000, CRC(31bf01a9) SHA1(cd08a839dbb5283a6e2bb35bc9e1578a14e3c2e6) )
43483724   ROM_LOAD16_BYTE( "136087-1001.210r", 0x000001, 0x010000, CRC(b4fa2900) SHA1(5e92ab4af31321b891c072305f8b8ef30a3e1fb0) )
43493725   ROM_LOAD16_BYTE( "136087-2004.200s", 0x020000, 0x010000, CRC(11fcba15) SHA1(031fc4c46a25ba8b5e15257f7443899bb484c09e) )
r241749r241750
43613737   ROM_LOAD16_BYTE( "136087-1016.200y", 0x0e0000, 0x010000, CRC(db62362e) SHA1(e1d392aa00ac36296728257fa26c6aa68a4ebe5f) )
43623738   ROM_LOAD16_BYTE( "136087-1015.210y", 0x0e0001, 0x010000, CRC(ef517db7) SHA1(16e7e351326391480bf36c58d6b34ef4128b6627) )
43633739
4364   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
3740   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
43653741   ROM_LOAD( "136087-5001.1f",  0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
43663742   ROM_CONTINUE(             0x004000, 0x00c000 )
43673743
4368   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )       /* 64k for ASIC65 */
3744   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )       /* 64k for ASIC65 */
43693745   ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
43703746
4371   ROM_REGION( 0x10000, "mainpcb:cpu6", 0 )        /* 64k for DSP communications */
3747   ROM_REGION( 0x10000, "cpu6", 0 )        /* 64k for DSP communications */
43723748   ROM_LOAD( "136087-1025.5f",  0x000000, 0x010000, CRC(4c645933) SHA1(7a1cf049e368059a79b03598de73c30d8dae5e90) )
43733749
4374   ROM_REGION16_BE( 0xc0000, "mainpcb:user1", 0 )  /* 768k for object ROM */
3750   ROM_REGION16_BE( 0xc0000, "user1", 0 )  /* 768k for object ROM */
43753751   ROM_LOAD16_BYTE( "136087-1018.2t",  0x000000, 0x020000, CRC(a5882384) SHA1(157707b5b114fa584893dec07dc456d4a5520f44) )
43763752   ROM_LOAD16_BYTE( "136087-1017.2lm", 0x000001, 0x020000, CRC(0a29db30) SHA1(f11ad7fe27989ffd66e9bef2c14ec040a4125d8a) )
43773753
4378   ROM_REGION( 0x80000, "mainpcb:jsa:oki1", 0 )
3754   ROM_REGION( 0x80000, "jsa:oki1", 0 )
43793755   ROM_LOAD( "136087-5002.1m",  0x000000, 0x020000, CRC(c904db9c) SHA1(d25fff3da87d2b716cd65fb7dd157c3f1f5e5909) )
43803756   ROM_LOAD( "136087-5003.1n",  0x020000, 0x020000, CRC(164580b3) SHA1(03118c8323d8a49a65addc61c1402d152d42d7f9) )
43813757   ROM_LOAD( "136087-5004.1p",  0x040000, 0x020000, CRC(296290a0) SHA1(8a3441a5618233f561531fe456e1f5ed22183421) )
43823758   ROM_LOAD( "136087-5005.1r",  0x060000, 0x020000, CRC(c029d037) SHA1(0ae736c0ca3a1974911464328dd5a6b41a939130) )
43833759
4384   ROM_REGION( 0x015D, "mainpcb:plds", 0 )
3760   ROM_REGION( 0x015D, "plds", 0 )
43853761   /* GAL's located on Sound board */
43863762   ROM_LOAD( "136085-1038.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2F */
43873763   ROM_LOAD( "136085-1039.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2L */
r241749r241750
43983774   /* GAL's located on "Multisync" board */
43993775   ROM_LOAD( "136087-9001.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL6001 at location 200K (SLOOP) */
44003776
4401   ROM_REGION( 0x800, "mainpcb:200e", 0 )
3777   ROM_REGION( 0x800, "200e", 0 )
44023778   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
44033779
4404   ROM_REGION( 0x800, "mainpcb:210e", 0 )
3780   ROM_REGION( 0x800, "210e", 0 )
44053781   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
44063782ROM_END
44073783
44083784
44093785ROM_START( steeltal1 )
4410   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
3786   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
44113787   ROM_LOAD16_BYTE( "136087-1002.200r", 0x000000, 0x010000, CRC(31bf01a9) SHA1(cd08a839dbb5283a6e2bb35bc9e1578a14e3c2e6) )
44123788   ROM_LOAD16_BYTE( "136087-1001.210r", 0x000001, 0x010000, CRC(b4fa2900) SHA1(5e92ab4af31321b891c072305f8b8ef30a3e1fb0) )
44133789   ROM_LOAD16_BYTE( "136087-a004.200s", 0x020000, 0x010000, CRC(392c992d) SHA1(10d1606214df675e6e59185e6b97034c4a47055a) )
r241749r241750
44253801   ROM_LOAD16_BYTE( "136087-1016.200y", 0x0e0000, 0x010000, CRC(db62362e) SHA1(e1d392aa00ac36296728257fa26c6aa68a4ebe5f) )
44263802   ROM_LOAD16_BYTE( "136087-1015.210y", 0x0e0001, 0x010000, CRC(ef517db7) SHA1(16e7e351326391480bf36c58d6b34ef4128b6627) )
44273803
4428   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
3804   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
44293805   ROM_LOAD( "136087-5001.1f",  0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
44303806   ROM_CONTINUE(             0x004000, 0x00c000 )
44313807
4432   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )       /* 64k for ASIC65 */
3808   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )       /* 64k for ASIC65 */
44333809   ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
44343810
4435   ROM_REGION( 0x10000, "mainpcb:cpu6", 0 )        /* 64k for DSP communications */
3811   ROM_REGION( 0x10000, "cpu6", 0 )        /* 64k for DSP communications */
44363812   ROM_LOAD( "136087-1025.5f",  0x000000, 0x010000, CRC(4c645933) SHA1(7a1cf049e368059a79b03598de73c30d8dae5e90) )
44373813
4438   ROM_REGION16_BE( 0xc0000, "mainpcb:user1", 0 )  /* 768k for object ROM */
3814   ROM_REGION16_BE( 0xc0000, "user1", 0 )  /* 768k for object ROM */
44393815   ROM_LOAD16_BYTE( "136087-1018.2t",  0x000000, 0x020000, CRC(a5882384) SHA1(157707b5b114fa584893dec07dc456d4a5520f44) )
44403816   ROM_LOAD16_BYTE( "136087-1017.2lm", 0x000001, 0x020000, CRC(0a29db30) SHA1(f11ad7fe27989ffd66e9bef2c14ec040a4125d8a) )
44413817
4442   ROM_REGION( 0x80000, "mainpcb:jsa:oki1", 0 )
3818   ROM_REGION( 0x80000, "jsa:oki1", 0 )
44433819   ROM_LOAD( "136087-5002.1m",  0x000000, 0x020000, CRC(c904db9c) SHA1(d25fff3da87d2b716cd65fb7dd157c3f1f5e5909) )
44443820   ROM_LOAD( "136087-5003.1n",  0x020000, 0x020000, CRC(164580b3) SHA1(03118c8323d8a49a65addc61c1402d152d42d7f9) )
44453821   ROM_LOAD( "136087-5004.1p",  0x040000, 0x020000, CRC(296290a0) SHA1(8a3441a5618233f561531fe456e1f5ed22183421) )
44463822   ROM_LOAD( "136087-5005.1r",  0x060000, 0x020000, CRC(c029d037) SHA1(0ae736c0ca3a1974911464328dd5a6b41a939130) )
44473823
4448   ROM_REGION( 0x015D, "mainpcb:plds", 0 )
3824   ROM_REGION( 0x015D, "plds", 0 )
44493825   /* GAL's located on Sound board */
44503826   ROM_LOAD( "136085-1038.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2F */
44513827   ROM_LOAD( "136085-1039.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2L */
r241749r241750
44623838   /* GAL's located on "Multisync" board */
44633839   ROM_LOAD( "136087-9001.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL6001 at location 200K (SLOOP) */
44643840
4465   ROM_REGION( 0x800, "mainpcb:200e", 0 )
3841   ROM_REGION( 0x800, "200e", 0 )
44663842   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
44673843
4468   ROM_REGION( 0x800, "mainpcb:210e", 0 )
3844   ROM_REGION( 0x800, "210e", 0 )
44693845   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
44703846ROM_END
44713847
44723848
44733849ROM_START( steeltalp )
4474   ROM_REGION( 0x100000, "mainpcb:maincpu", 0 )        /* 1MB for 68000 code */
3850   ROM_REGION( 0x100000, "maincpu", 0 )        /* 1MB for 68000 code */
44753851   ROM_LOAD16_BYTE( "rom-200r.bin", 0x00000, 0x10000, CRC(72a9ce3b) SHA1(6706ff32173735d16d9da1321b64a4a9bb317b2e) )
44763852   ROM_LOAD16_BYTE( "rom-210r.bin", 0x00001, 0x10000, CRC(46d83b42) SHA1(85b178781f0595b5af0375fee32d0dd8cdba8fca) )
44773853   ROM_LOAD16_BYTE( "rom-200s.bin", 0x20000, 0x10000, CRC(bf1b31ae) SHA1(f2d7f13854b8a3dd4de9ae98cc3034dfcf3846b8) )
r241749r241750
44893865   ROM_LOAD16_BYTE( "rom-200y.bin", 0xe0000, 0x10000, CRC(b568e1be) SHA1(5d62037892e040515e4262db43057f33436fa12d) )
44903866   ROM_LOAD16_BYTE( "rom-210y.bin", 0xe0001, 0x10000, CRC(3f5cdd3e) SHA1(c33c155158a5c69a7f2e61cd88b297dc14ecd479) )
44913867
4492   ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 )     /* 64k for 6502 code */
3868   ROM_REGION( 0x14000, "jsa:cpu", 0 )     /* 64k for 6502 code */
44933869   ROM_LOAD( "136087-5001.1f",  0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
44943870   ROM_CONTINUE(             0x004000, 0x00c000 )
44953871
4496   ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 )       /* 64k for ASIC65 */
3872   ROM_REGION( 0x2000, "asic65:asic65cpu", 0 )       /* 64k for ASIC65 */
44973873   ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
44983874
4499   ROM_REGION( 0x10000, "mainpcb:cpu6", 0 )        /* 64k for DSP communications */
3875   ROM_REGION( 0x10000, "cpu6", 0 )        /* 64k for DSP communications */
45003876   ROM_LOAD( "136087-1025.5f",  0x000000, 0x010000, CRC(4c645933) SHA1(7a1cf049e368059a79b03598de73c30d8dae5e90) )
45013877
4502   ROM_REGION16_BE( 0xc0000, "mainpcb:user1", 0 )  /* 768k for object ROM */
3878   ROM_REGION16_BE( 0xc0000, "user1", 0 )  /* 768k for object ROM */
45033879   ROM_LOAD16_BYTE( "rom.2t",  0x00000, 0x20000, CRC(05284504) SHA1(03b81c077f8ff073713f4bcc10b82087743b0d84) )
45043880   ROM_LOAD16_BYTE( "rom.2lm", 0x00001, 0x20000, CRC(d6e65b87) SHA1(ac4b2f292f6e28a15e3a12f09f6c2f9523e8b178) )
45053881
4506   ROM_REGION( 0x80000, "mainpcb:jsa:oki1", 0 )
3882   ROM_REGION( 0x80000, "jsa:oki1", 0 )
45073883   ROM_LOAD( "136087-5002.1m",  0x000000, 0x020000, CRC(c904db9c) SHA1(d25fff3da87d2b716cd65fb7dd157c3f1f5e5909) )
45083884   ROM_LOAD( "136087-5003.1n",  0x020000, 0x020000, CRC(164580b3) SHA1(03118c8323d8a49a65addc61c1402d152d42d7f9) )
45093885   ROM_LOAD( "136087-5004.1p",  0x040000, 0x020000, CRC(296290a0) SHA1(8a3441a5618233f561531fe456e1f5ed22183421) )
45103886   ROM_LOAD( "136087-5005.1r",  0x060000, 0x020000, CRC(c029d037) SHA1(0ae736c0ca3a1974911464328dd5a6b41a939130) )
45113887
4512   ROM_REGION( 0x015D, "mainpcb:plds", 0 )
3888   ROM_REGION( 0x015D, "plds", 0 )
45133889   /* GAL's located on Sound board */
45143890   ROM_LOAD( "136085-1038.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2F */
45153891   ROM_LOAD( "136085-1039.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2L */
r241749r241750
45263902   /* GAL's located on "Multisync" board */
45273903   ROM_LOAD( "136087-9001.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL6001 at location 200K (SLOOP) */
45283904
4529   ROM_REGION( 0x800, "mainpcb:200e", 0 )
3905   ROM_REGION( 0x800, "200e", 0 )
45303906   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
45313907
4532   ROM_REGION( 0x800, "mainpcb:210e", 0 )
3908   ROM_REGION( 0x800, "210e", 0 )
45333909   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
45343910ROM_END
45353911
45363912
45373913ROM_START( strtdriv )
4538   ROM_REGION( 0x200000, "mainpcb:maincpu", 0 )        /* 2MB for 68000 code */
3914   ROM_REGION( 0x200000, "maincpu", 0 )        /* 2MB for 68000 code */
45393915   ROM_LOAD16_BYTE( "136091-0002.200r", 0x000000, 0x010000, CRC(d28f2629) SHA1(266b4a80fd366fec2329ed2cec7fb570cef34291) )
45403916   ROM_LOAD16_BYTE( "136091-0001.210r", 0x000001, 0x010000, CRC(443428d1) SHA1(d93fd21a2c9d1e24c599867a110c1031d72e81b7) )
45413917   ROM_LOAD16_BYTE( "136091-0004.200s", 0x020000, 0x010000, CRC(379b9d18) SHA1(8cd903cc4e970cc45d7ef431233730b53dabeb1d) )
r241749r241750
45533929   ROM_LOAD16_BYTE( "136091-0016.200y", 0x0e0000, 0x010000, CRC(f85ad532) SHA1(f9d2480104a7487c23d33b05aa044b7f4ca08c67) )
45543930   ROM_LOAD16_BYTE( "136091-0015.210y", 0x0e0001, 0x010000, CRC(a2e406f3) SHA1(a7266508011c892cb1032fa4d77ccbafedc844e8) )
45553931
4556   ROM_REGION( 0x10000 + 0x10000, "mainpcb:asic65:asic65cpu", 0 )    /* dummy region for ADSP 2105 */
3932   ROM_REGION( 0x10000 + 0x10000, "asic65:asic65cpu", 0 )    /* dummy region for ADSP 2105 */
45573933   ROM_LOAD( "136091-0033.10j", 0x000000, 0x010000, CRC(57504ab6) SHA1(ec8361b7da964c07ca0da48a87537badc3986fe0) )
45583934
4559   ROM_REGION( 0x60000, "mainpcb:user1", 0 )       /* 384k for object ROM */
3935   ROM_REGION( 0x60000, "user1", 0 )       /* 384k for object ROM */
45603936   ROM_LOAD16_BYTE( "136091-0017.2lm", 0x00000, 0x10000, CRC(b0454074) SHA1(9530ea1ef215116da1f0843776fa7a6b4637049d) )
45613937   ROM_LOAD16_BYTE( "136091-0018.2t",  0x00001, 0x10000, CRC(ef432aa8) SHA1(56bce13c111db7874c9b669d479f6ef47976ee14) )
45623938   ROM_LOAD16_BYTE( "136091-0019.2k",  0x20000, 0x10000, CRC(5bb00676) SHA1(cad1cea8e43f9590fc71c00fab4eff0d447f9296) )
r241749r241750
45643940   ROM_LOAD16_BYTE( "136091-0021.2j",  0x40000, 0x10000, CRC(14f2caae) SHA1(ff40dbced58dc910a2b5825b846a5e52933cb8fc) )
45653941   ROM_LOAD16_BYTE( "136091-0022.2p",  0x40001, 0x10000, CRC(bc4dd071) SHA1(ca182451a0a18d343dce1be56090d51950d43906) )
45663942
4567   ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
3943   ROM_REGION16_BE( 0x50000, "user3", 0 )  /* 256k for DSK ROMs + 64k for RAM */
45683944   ROM_LOAD16_BYTE( "136091-0026.30e", 0x000000, 0x020000, CRC(47705109) SHA1(fa40275b71b74be8591282d2fba4215b98fc29c9) )
45693945   ROM_LOAD16_BYTE( "136091-0025.10e", 0x000001, 0x020000, CRC(ead9254e) SHA1(92152d3ca77b542b3bb3398ccf414df28c95abfd) )
45703946
4571   ROM_REGION16_BE( 0x100000, "mainpcb:ds3sdsp", 0 )  /* DS III sound ADSP-2105 */
3947   ROM_REGION16_BE( 0x100000, "ds3sdsp", 0 )  /* DS III sound ADSP-2105 */
45723948   ROM_LOAD( "136091-0033.10j", 0x000000, 0x010000, CRC(57504ab6) SHA1(ec8361b7da964c07ca0da48a87537badc3986fe0) )
45733949
4574   ROM_REGION16_BE( 0x100000, "mainpcb:ds3xdsp", 0 )  /* DS III auxillary ADSP-2105 (unused) */
3950   ROM_REGION16_BE( 0x100000, "ds3xdsp", 0 )  /* DS III auxillary ADSP-2105 (unused) */
45753951   ROM_FILL(                    0x000000, 0x010000, 0x00)
45763952
4577   ROM_REGION( 0x80000, "mainpcb:ds3sdsp_data", 0 )
3953   ROM_REGION( 0x80000, "ds3sdsp_data", 0 )
45783954   ROM_LOAD16_BYTE( "136052-1123.12lm",0x00000, 0x10000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
45793955   ROM_LOAD16_BYTE( "136077-1017.12t", 0x00001, 0x10000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
45803956
r241749r241750
45873963   ROM_FILL(                           0x60000, 0x20000, 0xff) /* 12N */
45883964   ROM_LOAD16_BYTE( "136052-1126.12h", 0x60000, 0x10000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
45893965
4590   ROM_REGION( 0x800, "mainpcb:200e", 0 )
3966   ROM_REGION( 0x800, "200e", 0 )
45913967   ROM_LOAD( "stunrun.200e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
45923968
4593   ROM_REGION( 0x800, "mainpcb:210e", 0 )
3969   ROM_REGION( 0x800, "210e", 0 )
45943970   ROM_LOAD( "stunrun.210e",    0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
45953971ROM_END
45963972
45973973ROM_START( hdrivair )
4598   ROM_REGION( 0x200000, "mainpcb:maincpu", 0 )        /* 2MB for 68000 code */
3974   ROM_REGION( 0x200000, "maincpu", 0 )        /* 2MB for 68000 code */
45993975   ROM_LOAD16_BYTE( "stesthi.bin", 0x000000, 0x20000, CRC(b4bfa451) SHA1(002a5d213ba8ec76ad83a87d76aefbd98b1e4c94) )
46003976   ROM_LOAD16_BYTE( "stestlo.bin", 0x000001, 0x20000, CRC(58758419) SHA1(7951d4c8cf0b28b4fac3fe172ea3bc56f61bd9ff) )
46013977   ROM_LOAD16_BYTE( "drivehi.bin", 0x040000, 0x20000, CRC(d15f5119) SHA1(c2c7e9675c14ba41effa6f721602f6471b348758) )
r241749r241750
46093985   ROM_LOAD16_BYTE( "coprochi.bin",0x1c0000, 0x20000, CRC(5d2ca109) SHA1(e1a94d3fbfd5d542732555bf60268e73d66b3a06) )
46103986   ROM_LOAD16_BYTE( "coproclo.bin",0x1c0001, 0x20000, CRC(5f98b04d) SHA1(9c4fa4092fd85f1d67be44f2ff91a907a87db51a) )
46113987
4612   ROM_REGION( 0x10000 + 0x10000, "mainpcb:asic65:asic65cpu", 0 )    /* dummy region for ADSP 2105 */
3988   ROM_REGION( 0x10000 + 0x10000, "asic65:asic65cpu", 0 )    /* dummy region for ADSP 2105 */
46133989   ROM_LOAD( "sboot.bin", 0x000000, 0x010000, CRC(cde4d010) SHA1(853f4b813ff70fe74cd87e92131c46fca045610d) )
46143990
4615   ROM_REGION( 0xc0000, "mainpcb:user1", 0 )       /* 768k for object ROM */
3991   ROM_REGION( 0xc0000, "user1", 0 )       /* 768k for object ROM */
46163992   ROM_LOAD16_BYTE( "obj0l.bin",   0x00000, 0x20000, CRC(1f835f2e) SHA1(9d3419f2c1aa65ddfe9ace4e70ca1212d634afbf) )
46173993   ROM_LOAD16_BYTE( "obj0h.bin",   0x00001, 0x20000, CRC(c321ab55) SHA1(e095e40bb1ebda7c9ff04a5086c10ab41dec2f16) )
46183994   ROM_LOAD16_BYTE( "obj1l.bin",   0x40000, 0x20000, CRC(3d65f264) SHA1(e9232f5bf439bf4e1cf99cc7e81b7f9550563f15) )
r241749r241750
46203996   ROM_LOAD16_BYTE( "obj2l.bin",   0x80000, 0x20000, CRC(b206cc7e) SHA1(17f05e906c41b804fe99dd6cd8acbade919a6a10) )
46213997   ROM_LOAD16_BYTE( "obj2h.bin",   0x80001, 0x20000, CRC(a666e98c) SHA1(90e380ff87538c7d557cf005a4a5bcedc250eb72) )
46223998
4623   ROM_REGION16_BE( 0x140000, "mainpcb:user3", 0 )/* 1MB for DSK ROMs + 256k for RAM */
3999   ROM_REGION16_BE( 0x140000, "user3", 0 )/* 1MB for DSK ROMs + 256k for RAM */
46244000   ROM_LOAD16_BYTE( "dsk2phi.bin", 0x00000, 0x80000, CRC(71c268e0) SHA1(c089248a7dfadf2eba3134fe40ebb777c115a886) )
46254001   ROM_LOAD16_BYTE( "dsk2plo.bin", 0x00001, 0x80000, CRC(edf96363) SHA1(47f0608c2b0ab983681de021a16b1d10d4feb800) )
46264002
4627   ROM_REGION32_LE( 0x200000, "mainpcb:user4", 0 )/* 2MB for ASIC61 ROMs */
4003   ROM_REGION32_LE( 0x200000, "user4", 0 )/* 2MB for ASIC61 ROMs */
46284004   ROM_LOAD32_BYTE( "roads0.bin",  0x000000, 0x80000, CRC(5028eb41) SHA1(abe9d73e74d4f0308f07cbe9c18c8a77456fdbc7) )
46294005   ROM_LOAD32_BYTE( "roads1.bin",  0x000001, 0x80000, CRC(c3f2c201) SHA1(c73933d7e46f3c63c4ca86af40eb4f0abb09aedf) )
46304006   ROM_LOAD32_BYTE( "roads2.bin",  0x000002, 0x80000, CRC(527923fe) SHA1(839de8486bb7489f059b5a629ab229ad96de7eac) )
46314007   ROM_LOAD32_BYTE( "roads3.bin",  0x000003, 0x80000, CRC(2f2023b2) SHA1(d474892443db2f0710c2be0d6b90735a2fbee12a) )
46324008
4633   ROM_REGION16_BE( 0x10000, "mainpcb:ds3sdsp", 0 ) /* DS IV sound ADSP-2105 */
4009   ROM_REGION16_BE( 0x10000, "ds3sdsp", 0 ) /* DS IV sound ADSP-2105 */
46344010   ROM_LOAD( "sboot.bin", 0x00000, 0x10000, CRC(cde4d010) SHA1(853f4b813ff70fe74cd87e92131c46fca045610d) )
46354011
4636   ROM_REGION16_BE( 0x10000, "mainpcb:ds3xdsp", 0 ) /* DS IV auxillary ADSP-2105 */
4012   ROM_REGION16_BE( 0x10000, "ds3xdsp", 0 ) /* DS IV auxillary ADSP-2105 */
46374013   ROM_LOAD( "xboot.bin", 0x00000, 0x10000, CRC(054b46a0) SHA1(038eec17e678f2755239d6795acfda621796802e) )
46384014
4639   ROM_REGION16_BE( 0x400000, "mainpcb:ds3sdsp_data", 0 ) /* DS IV sound data */
4015   ROM_REGION16_BE( 0x400000, "ds3sdsp_data", 0 ) /* DS IV sound data */
46404016   ROM_LOAD16_BYTE( "ds3rom4.bin", 0x000000, 0x80000, CRC(15ffb19a) SHA1(030dc90b7cabcd7fc5f231b09d2aa2eaf6e60b98) )
46414017   ROM_LOAD16_BYTE( "ds3rom0.bin", 0x000001, 0x80000, CRC(90b8dbb6) SHA1(fff693cb81e88bc00e048bb71406295fe7be5122) )
46424018   ROM_LOAD16_BYTE( "ds3rom5.bin", 0x100000, 0x80000, CRC(8d0e9b27) SHA1(76556f48bdf14475260c268ebdb16ecb494b2f36) )
r241749r241750
46464022   ROM_LOAD16_BYTE( "ds3rom7.bin", 0x300000, 0x80000, CRC(323eff0b) SHA1(5d4945d77191ee44b4fbf125bc0816217321829e) )
46474023   ROM_LOAD16_BYTE( "ds3rom3.bin", 0x300001, 0x80000, CRC(63965868) SHA1(d61d9d6709a3a3c37c2652602e97fdee52e0e7cb) )
46484024
4649   ROM_REGION( 0x800, "mainpcb:200e", 0 )
4025   ROM_REGION( 0x800, "200e", 0 )
46504026   ROM_LOAD( "hdrivair.200e",      0x000000, 0x000800, CRC(6270b696) SHA1(e302880dbca53ee725108ca4f7e45a176e85e96d) )
46514027
4652   ROM_REGION( 0x800, "mainpcb:210e", 0 )
4028   ROM_REGION( 0x800, "210e", 0 )
46534029   ROM_LOAD( "hdrivair.210e",      0x000000, 0x000800, CRC(a1c39919) SHA1(92799a7a73f545dad6684eacf7009a6c4d52d8f7) )
46544030ROM_END
46554031
46564032
46574033ROM_START( hdrivairp )
4658   ROM_REGION( 0x200000, "mainpcb:maincpu", 0 )        /* 2MB for 68000 code */
4034   ROM_REGION( 0x200000, "maincpu", 0 )        /* 2MB for 68000 code */
46594035   ROM_LOAD16_BYTE( "stest.0h",    0x000000, 0x20000, CRC(bf4bb6a0) SHA1(e38ec5ce245f98bfe8084ba684bffc85dc19d3be) )
46604036   ROM_LOAD16_BYTE( "stest.0l",    0x000001, 0x20000, CRC(f462b511) SHA1(d88efb8cc30322a8332a1f50de775a204758e176) )
46614037   ROM_LOAD16_BYTE( "drive.hi",    0x040000, 0x20000, CRC(56571590) SHA1(d0362b8bd438cd7dfa9ff7cf71307f44c2cfe843) )
r241749r241750
46694045   ROM_LOAD16_BYTE( "ms2cproc.0h", 0x1c0000, 0x20000, CRC(19024f2d) SHA1(a94e8836cdc147cea5816b99b8a1ad5ff669d984) )
46704046   ROM_LOAD16_BYTE( "ms2cproc.0l", 0x1c0001, 0x20000, CRC(1e48bd46) SHA1(1a903d889f48604bd8d2d9a0bda4ee20e7ad968b) )
46714047
4672   ROM_REGION( 0x10000 + 0x10000, "mainpcb:dsp32", 0 ) /* dummy region for ADSP 2105 */
4048   ROM_REGION( 0x10000 + 0x10000, "dsp32", 0 ) /* dummy region for ADSP 2105 */
46734049   ROM_LOAD( "sboota.bin", 0x10000 + 0x00000, 0x10000, CRC(3ef819cd) SHA1(c547b869a3a37a82fb46584fe0ef0cfe21a4f882) )
46744050
4675   ROM_REGION( 0x10000 + 0x10000, "mainpcb:asic65:asic65cpu", 0 )    /* dummy region for ADSP 2105 */
4051   ROM_REGION( 0x10000 + 0x10000, "asic65:asic65cpu", 0 )    /* dummy region for ADSP 2105 */
46764052   ROM_LOAD( "xboota.bin", 0x10000 + 0x00000, 0x10000, CRC(d9c49901) SHA1(9f90ae3a47eb1ef00c3ec3661f60402c2eae2108) )
46774053
4678   ROM_REGION( 0xc0000, "mainpcb:user1", 0 )       /* 768k for object ROM */
4054   ROM_REGION( 0xc0000, "user1", 0 )       /* 768k for object ROM */
46794055   ROM_LOAD16_BYTE( "objects.0l",  0x00000, 0x20000, CRC(3c9e9078) SHA1(f1daf32117236401f3cb97f332708632003e55f8) )
46804056   ROM_LOAD16_BYTE( "objects.0h",  0x00001, 0x20000, CRC(4480dbae) SHA1(6a455173c38e80093f58bdc322cffcf25e70b6ae) )
46814057   ROM_LOAD16_BYTE( "objects.1l",  0x40000, 0x20000, CRC(700bd978) SHA1(5cd63d4eee00d90fe29fb9697b6a0ea6b86704ae) )
r241749r241750
46834059   ROM_LOAD16_BYTE( "objects.2l",  0x80000, 0x20000, CRC(e3b512f0) SHA1(080c5a21cb76edcb55d1c2488e9d91cf29cb0665) )
46844060   ROM_LOAD16_BYTE( "objects.2h",  0x80001, 0x20000, CRC(3f83742b) SHA1(4b6e0134a806bcc9bd56432737047f86d0a16424) )
46854061
4686   ROM_REGION16_BE( 0x140000, "mainpcb:user3", 0 )/* 1MB for DSK ROMs + 256k for RAM */
4062   ROM_REGION16_BE( 0x140000, "user3", 0 )/* 1MB for DSK ROMs + 256k for RAM */
46874063   ROM_LOAD16_BYTE( "dskpics.hi",  0x00000, 0x80000, CRC(eaa88101) SHA1(ed0ebf8a9a9514d810242b9b552126f6717f9e25) )
46884064   ROM_LOAD16_BYTE( "dskpics.lo",  0x00001, 0x80000, CRC(8c6f0750) SHA1(4cb23cedc500c1509dc875c3291a5771c8473f73) )
46894065
4690   ROM_REGION32_LE( 0x200000, "mainpcb:user4", 0 )/* 2MB for ASIC61 ROMs */
4066   ROM_REGION32_LE( 0x200000, "user4", 0 )/* 2MB for ASIC61 ROMs */
46914067   ROM_LOAD16_BYTE( "roads.0",     0x000000, 0x80000, CRC(cab2e335) SHA1(914996c5b7905f1c20fcda6972af88debbee59cd) )
46924068   ROM_LOAD16_BYTE( "roads.1",     0x000001, 0x80000, CRC(62c244ba) SHA1(f041a269f35a9d187c90241c5b64173663ad5268) )
46934069   ROM_LOAD16_BYTE( "roads.2",     0x000002, 0x80000, CRC(ba57f415) SHA1(1daf5a014e9bef15466b282bcca2395fec2b0628) )
46944070   ROM_LOAD16_BYTE( "roads.3",     0x000003, 0x80000, CRC(1e6a4ca0) SHA1(2cf06d6c73be11cf10515246fca2baa05ce5091b) )
46954071
4696   ROM_REGION( 0x10000, "mainpcb:ds3sdsp", 0 ) /* DS IV sound ADSP-2105 */
4072   ROM_REGION( 0x10000, "ds3sdsp", 0 ) /* DS IV sound ADSP-2105 */
46974073   ROM_LOAD( "sboota.bin", 0x00000, 0x10000, CRC(3ef819cd) SHA1(c547b869a3a37a82fb46584fe0ef0cfe21a4f882) )
46984074
4699   ROM_REGION( 0x10000, "mainpcb:ds3xdsp", 0 ) /* DS IV auxillary ADSP-2105 */
4075   ROM_REGION( 0x10000, "ds3xdsp", 0 ) /* DS IV auxillary ADSP-2105 */
47004076   ROM_LOAD( "xboota.bin", 0x00000, 0x10000, CRC(d9c49901) SHA1(9f90ae3a47eb1ef00c3ec3661f60402c2eae2108) )
47014077
4702   ROM_REGION16_BE( 0x400000, "mainpcb:ds3sdsp_data", 0 )
4078   ROM_REGION16_BE( 0x400000, "ds3sdsp_data", 0 )
47034079   ROM_LOAD16_BYTE( "ds3rom.5",    0x000000, 0x80000, CRC(6ef9ed90) SHA1(8bd927a56fe99f7db96d203c1daeb8c8c83f2c17) )
47044080   ROM_LOAD16_BYTE( "ds3rom.1",    0x000001, 0x80000, CRC(03673d8d) SHA1(13596f7acb58fba78d6e4f2ac7bb21d9d2589668) )
47054081   ROM_LOAD16_BYTE( "ds3rom.6",    0x100000, 0x80000, CRC(cd4cd6bc) SHA1(95689ab7cb18af54ff09aebf223f6346f13dfd7b) )
r241749r241750
47094085   ROM_LOAD16_BYTE( "ds3rom.0",    0x300000, 0x80000, CRC(90b8dbb6) SHA1(fff693cb81e88bc00e048bb71406295fe7be5122) )
47104086   ROM_LOAD16_BYTE( "ds3rom.4",    0x300001, 0x80000, CRC(6281efee) SHA1(47d0f3ff973166d818877996c45dccf1d3a85fe1) )
47114087
4712   ROM_REGION( 0x800, "mainpcb:200e", 0 )
4088   ROM_REGION( 0x800, "200e", 0 )
47134089   ROM_LOAD( "hdrivair.200e",      0x000000, 0x000800, CRC(6270b696) SHA1(e302880dbca53ee725108ca4f7e45a176e85e96d) )
47144090
4715   ROM_REGION( 0x800, "mainpcb:210e", 0 )
4091   ROM_REGION( 0x800, "210e", 0 )
47164092   ROM_LOAD( "hdrivair.210e",      0x000000, 0x000800, CRC(a1c39919) SHA1(92799a7a73f545dad6684eacf7009a6c4d52d8f7) )
47174093ROM_END
47184094
r241749r241750
49554331 *
49564332 *************************************/
49574333
4958void harddriv_state::init_harddriv(void)
4334DRIVER_INIT_MEMBER(harddriv_state,harddriv)
49594335{
49604336   /* initialize the boards */
49614337   init_driver();
r241749r241750
49784354}
49794355
49804356
4981void harddriv_state::init_harddrivc(void)
4357DRIVER_INIT_MEMBER(harddriv_state,harddrivc)
49824358{
49834359   /* initialize the boards */
49844360   init_multisync(1);
r241749r241750
50014377}
50024378
50034379
5004void harddriv_state::init_stunrun(void)
4380DRIVER_INIT_MEMBER(harddriv_state,stunrun)
50054381{
50064382   /* initialize the boards */
50074383   init_multisync(0);
r241749r241750
50184394}
50194395
50204396
5021void harddriv_state::init_racedriv(void)
4397DRIVER_INIT_MEMBER(harddriv_state,racedriv)
50224398{
50234399   /* initialize the boards */
50244400   init_driver();
r241749r241750
50274403   init_driver_sound();
50284404
50294405   /* set up the slapstic */
5030   m_slapstic_device->slapstic_init(machine(), 117);
4406   slapstic_init(machine(), 117);
50314407   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));
50324408
50334409   /* synchronization */
r241749r241750
50484424   init_driver_sound();
50494425
50504426   /* set up the slapstic */
5051   m_slapstic_device->slapstic_init(machine(), 117);
4427   slapstic_init(machine(), 117);
50524428   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));
50534429
50544430   /* synchronization */
r241749r241750
50674443   m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(FUNC(harddriv_state::hdadsp_speedup_r), this));
50684444}
50694445
5070void harddriv_state::init_racedrivc(void) { racedrivc_init_common(0xfff95cd0); }
5071void harddriv_state::init_racedrivc1(void) { racedrivc_init_common(0xfff7ecd0); }
4446DRIVER_INIT_MEMBER(harddriv_state,racedrivc) { racedrivc_init_common(0xfff95cd0); }
4447DRIVER_INIT_MEMBER(harddriv_state,racedrivc1) { racedrivc_init_common(0xfff7ecd0); }
50724448
5073void harddriv_state::init_racedrivc_panorama_side()
4449DRIVER_INIT_MEMBER(harddriv_state,racedrivb1)
50744450{
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{
51044451   /* this unpleasantness prevents racedriv1/racedrivb1/racedrivg1 from crashing MAME during boot */
51054452   /* they clear the DSP32C's RAM and then release it from reset, causing it to run through */
51064453   /* its address space recursively executing instructions */
r241749r241750
51524499}
51534500
51544501
5155void harddriv_state::init_steeltal(void)
4502DRIVER_INIT_MEMBER(harddriv_state,steeltal)
51564503{
51574504   steeltal_init_common(0x4fc18, 0);
51584505}
51594506
5160void harddriv_state::init_steeltal1(void)
4507DRIVER_INIT_MEMBER(harddriv_state,steeltal1)
51614508{
51624509   steeltal_init_common(0x4f9c6, 0);
51634510}
51644511
5165void harddriv_state::init_steeltalp(void)
4512DRIVER_INIT_MEMBER(harddriv_state,steeltalp)
51664513{
51674514   steeltal_init_common(0x52290, 1);
51684515}
51694516
51704517
5171void harddriv_state::init_strtdriv(void)
4518DRIVER_INIT_MEMBER(harddriv_state,strtdriv)
51724519{
51734520   /* initialize the boards */
51744521   init_multisync(1);
r241749r241750
51764523   init_dsk();
51774524
51784525   /* set up the slapstic */
5179   m_slapstic_device->slapstic_init(machine(), 117);
4526   slapstic_init(machine(), 117);
51804527   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));
51814528
51824529   m_maincpu->space(AS_PROGRAM).install_read_handler(0xa80000, 0xafffff, read16_delegate(FUNC(harddriv_state::hda68k_port1_r), this));
r241749r241750
51974544}
51984545
51994546
5200void harddriv_state::init_hdrivair(void)
4547DRIVER_INIT_MEMBER(harddriv_state,hdrivair)
52014548{
52024549   /* initialize the boards */
52034550   init_multisync(1);
r241749r241750
52224569}
52234570
52244571
5225void harddriv_state::init_hdrivairp(void)
4572DRIVER_INIT_MEMBER(harddriv_state,hdrivairp)
52264573{
52274574   /* initialize the boards */
52284575   init_multisync(1);
r241749r241750
52474594}
52484595
52494596
4597
52504598/*************************************
52514599 *
52524600 *  Game driver(s)
52534601 *
52544602 *************************************/
52554603
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 )
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 )
52674615
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 )
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 )
52724620
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 )
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 )
52844632
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 )
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 )
52964644
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 )
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 )
53054653
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 )
4654GAME( 1990, racedrivpan, racedriv, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' Panorama (prototype, rev 2.1)", GAME_NOT_WORKING )
53074655
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 )
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 )
53124660
5313GAME( 1993, strtdriv, 0,        strtdriv_machine, strtdriv, driver_device, 0, ROT0, "Atari Games", "Street Drivin' (prototype)", 0 )
4661GAME( 1993, strtdriv, 0,        strtdriv, strtdriv, harddriv_state, strtdriv, ROT0, "Atari Games", "Street Drivin' (prototype)", 0 )
53144662
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
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 )
trunk/src/mame/drivers/kyugo.c
r241749r241750
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 (United Amusements license)", "Airwolf (US)", GAME_SUPPORTS_SAVE )
1382GAME( 1987, airwolfa,  airwolf,  srdmissn,  airwolf,  kyugo_state,   srdmissn, ROT0,  "Kyugo (UA Theatre 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
r241749r241750
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"
224227#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"
236228
237class lindbergh_state : public driver_device
229class lindbergh_state : public pcat_base_state
238230{
239231public:
240232   lindbergh_state(const machine_config &mconfig, device_type type, const char *tag);
r241749r241750
243235   virtual void machine_reset();
244236};
245237
246#if 0
247238static ADDRESS_MAP_START(lindbergh_map, AS_PROGRAM, 32, lindbergh_state)
248239   AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
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)
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)
251242//  0xd0000 - 0xdffff tested, wants 0x414d ("AM") in there
252243   AM_RANGE(0x000f0000, 0x000fffff) AM_ROM AM_REGION("mb_bios", 0xf0000)
253//   AM_RANGE(0xfd000000, 0xfd3fffff) AM_ROM AM_REGION("jvs_bios", 0)    /* Hack to see the data */
244   AM_RANGE(0xfd000000, 0xfd3fffff) AM_ROM AM_REGION("jvs_bios", 0)    /* Hack to see the data */
254245   AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("mb_bios", 0)     /* System BIOS */
255246ADDRESS_MAP_END
256247
257248static ADDRESS_MAP_START(lindbergh_io, AS_IO, 32, lindbergh_state)
258//   AM_IMPORT_FROM(pcat32_io_common)
249   AM_IMPORT_FROM(pcat32_io_common)
259250
260//   AM_RANGE(0x00e8, 0x00ef) AM_NOP
261//   AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
251   AM_RANGE(0x00e8, 0x00ef) AM_NOP
252   AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
262253ADDRESS_MAP_END
263#endif
264254
265lindbergh_state::lindbergh_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag)
255lindbergh_state::lindbergh_state(const machine_config &mconfig, device_type type, const char *tag) : pcat_base_state(mconfig, type, tag)
266256{
267257}
268258
r241749r241750
277267static MACHINE_CONFIG_START(lindbergh, lindbergh_state)
278268//  MCFG_CPU_ADD("maincpu", PENTIUM, 2800000000U) /* Actually Celeron D at 2,8 GHz */
279269   MCFG_CPU_ADD("maincpu", PENTIUM4, 28000000U*5) /* Actually Celeron D at 2,8 GHz */
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)
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)
283273
284//   MCFG_FRAGMENT_ADD( pcat_common )
285//   MCFG_FRAGMENT_ADD( pcvideo_vga )
274   MCFG_FRAGMENT_ADD( pcat_common )
275   MCFG_FRAGMENT_ADD( pcvideo_vga )
286276
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)
277   MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
307278MACHINE_CONFIG_END
308279
309280ROM_START(lindbios)
310   ROM_REGION32_LE(0x100000, ":pci:1f.0", 0) // PC bios, location 3j7
281   ROM_REGION32_LE(0x100000, "mb_bios", 0) // location 3j7
311282   ROM_SYSTEM_BIOS(0, "bios0", "6.0.0010 alternate version")
312283   ROMX_LOAD("6.0.0010a.bin", 0x00000, 0x100000, CRC(10dd9b76) SHA1(1fdf1f921bc395846a7c3180fbdbc4ca287a9670), ROM_BIOS(1) )
313284   ROM_SYSTEM_BIOS(1, "bios1", "6.0.0009")
r241749r241750
316287   ROMX_LOAD("6.0.0010.bin", 0x00000, 0x100000, CRC(ea2bf888) SHA1(c9c5b6f0d4f4f36620939b15dd2f128a74347e37), ROM_BIOS(3) )
317288
318289
319   ROM_REGION(0x400000, ":pci:1e.0:03.0", 0) // Baseboard MPC firmware
290   ROM_REGION(0x400000, "jvs_bios", 0)
320291   ROM_LOAD("fpr-24370b.ic6", 0x000000, 0x400000, CRC(c3b021a4) SHA1(1b6938a50fe0e4ae813864649eb103838c399ac0))
321292
322   ROM_REGION32_LE(0x10000, ":pci:01.0:00.0", 0) // Geforce bios extension (custom or standard?)
293   ROM_REGION(0x10000, "vid_bios", 0)
323294   ROM_LOAD("vid_bios.u504", 0x00000, 0x10000, CRC(f78d14d7) SHA1(f129787e487984edd23bf344f2e9500c85052275))
324295ROM_END
325296
326GAME(1999, lindbios, 0, lindbergh, 0, driver_device, 0, ROT0, "Sega Lindbergh", "Sega Lindbergh Bios", GAME_IS_SKELETON)
297GAME(1999, lindbios, 0, lindbergh, at_keyboard, driver_device, 0, ROT0, "Sega Lindbergh", "Sega Lindbergh Bios", GAME_IS_SKELETON)
trunk/src/mame/drivers/magictg.c
r241749r241750
118118#include "cpu/adsp2100/adsp2100.h"
119119#include "sound/dmadac.h"
120120#include "video/voodoo.h"
121#include "machine/lpci.h"
121#include "machine/pci.h"
122122
123123
124124/* TODO: Two 3Dfx Voodoo chipsets are used in SLI configuration */
trunk/src/mame/drivers/maygay1b.c
r241749r241750
9696{
9797   m_vfd->reset(); // reset display1
9898   m1_stepper_reset();
99   m_Vmm=false;
10099}
101100
102101///////////////////////////////////////////////////////////////////////////
r241749r241750
112111WRITE_LINE_MEMBER(maygay1b_state::duart_irq_handler)
113112{
114113   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?
r241749r241750
122122   {
123123      cpu0_firq(1);
124124   }
125   return 0xff;
125   return nar;
126126}
127127
128128READ8_MEMBER( maygay1b_state::m1_firq_clr_r )
129129{
130130   cpu0_firq(0);
131   return 0xff;
131   return 0;
132132}
133133
134134// NMI is periodic? or triggered by a write?
135135TIMER_DEVICE_CALLBACK_MEMBER( maygay1b_state::maygay1b_nmitimer_callback )
136136{
137   m_Vmm = !m_Vmm;
138   cpu0_nmi();
139}
140
141void maygay1b_state::cpu0_nmi()
142{
143   if (m_Vmm && m_NMIENABLE)
137//disabling for now
138   if (m_NMIENABLE)
144139   {
145      m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
140      LOG(("6809 nmi\n"));
141      m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
142      m_NMIENABLE=0;
146143   }
147   else
148   {
149      m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
150   }
144
151145}
152146
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***************************************************************************/
r241749r241750
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("RESET")
289   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("72")
290290   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("73")
291291
292292INPUT_PORTS_END
r241749r241750
376376      m_ALARMEN = (data & 1);
377377      break;
378378      case 2: // Enable
379        if ( m_NMIENABLE == 0 && ( data & 1 ) )
379380      {
380            if ( m_NMIENABLE == 0 && ( data & 1 ))
381         {
382            m_NMIENABLE = (data & 1);
383            cpu0_nmi();
384         }
385         m_NMIENABLE = (data & 1);     
381         m_NMIENABLE = (data & 1);
382         //cpu0_nmi(1);
386383      }
387384      break;
388385      case 3: // RTS
r241749r241750
398395      case 6: // Srsel
399396      // this is the ROM banking?
400397      printf("rom bank %02x\n",data);
401      m_bank1->set_entry(data & 1);
398      m_SRSEL = (data & 1);
402399      break;
403400   }
404401}
r241749r241750
413410READ8_MEMBER(maygay1b_state::latch_st_hi)
414411{
415412   m_msm6376->st_w(1);
416   return 0xff;
413   return 0;
417414}
418415
419416READ8_MEMBER(maygay1b_state::latch_st_lo)
420417{
421418   m_msm6376->st_w(0);
422   return 0xff;
419   return 0;
423420}
424421
425422READ8_MEMBER(maygay1b_state::m1_meter_r)
r241749r241750
472469
473470   AM_RANGE(0x2420, 0x2421) AM_WRITE(latch_ch2_w ) // oki
474471
475   AM_RANGE(0x2800, 0xdfff) AM_ROM
476   AM_RANGE(0xe000, 0xffff) AM_ROMBANK("bank1")    /* 64k  paged ROM (4 pages)  */
477
472   AM_RANGE(0x2800, 0xffff) AM_ROM
478473ADDRESS_MAP_END
479474
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}
494475
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
564476/*************************************
565477 *
566478 *  8279 display/keyboard driver
r241749r241750
618530
619531// machine driver for maygay m1 board /////////////////////////////////
620532
533
534
621535MACHINE_CONFIG_START( maygay_m1, maygay1b_state )
622536
623537   MCFG_CPU_ADD("maincpu", M6809, M1_MASTER_CLOCK/2)
r241749r241750
632546   MCFG_PIA_WRITEPB_HANDLER(WRITE8(maygay1b_state, m1_pia_portb_w))
633547
634548   MCFG_S16LF01_ADD("vfd",0)
635   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
549   MCFG_SPEAKER_STANDARD_MONO("mono")
636550   MCFG_SOUND_ADD("aysnd", YM2149, M1_MASTER_CLOCK)
637551   MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(maygay1b_state, m1_meter_w))
638552   MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(maygay1b_state, m1_lockout_w))
639   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
640   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
553   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
641554
642555   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)
645556
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)
557   MCFG_SOUND_ADD("msm6376", OKIM6376, M1_MASTER_CLOCK/4) //?
558   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
649559
650560   MCFG_TIMER_DRIVER_ADD_PERIODIC("nmitimer", maygay1b_state, maygay1b_nmitimer_callback, attotime::from_hz(75)) // freq?
651561   MCFG_DEVICE_ADD("i8279", I8279, M1_MASTER_CLOCK/4)    // unknown clock
r241749r241750
661571MACHINE_CONFIG_END
662572
663573
664MACHINE_CONFIG_DERIVED( maygay_m1_nec, maygay_m1 )
665   MCFG_CPU_MODIFY("maincpu")
666   MCFG_CPU_PROGRAM_MAP(m1_nec_memmap)
667574
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
674575
576
577
578
579
675580WRITE8_MEMBER(maygay1b_state::m1ab_no_oki_w)
676581{
677582   popmessage("write to OKI, but no OKI rom");
678583}
679584
680DRIVER_INIT_MEMBER(maygay1b_state,m1common)
585DRIVER_INIT_MEMBER(maygay1b_state,m1)
681586{
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);
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
686589
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   }
687595   // print out the rom id / header info to give us some hints
688596   // note this isn't always correct, alley cat has 'Calpsyo' still in the ident string?
689597   {
r241749r241750
710618      }
711619   }
712620}
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
r241749r241750
4949
5050// uPD7759 rom?
5151#define m1_bargn_sound \
52   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
52   ROM_REGION( 0x100000, "msm6376", 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_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 )
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 )
6363
6464/*******************************************************************************************************************************************************************************************************
6565  Bounty Hunter Club
r241749r241750
6767
6868// uPD7759 rom?
6969#define m1_bounty_sound \
70   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
70   ROM_REGION( 0x100000, "msm6376", 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_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 )
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 )
7777
7878/*******************************************************************************************************************************************************************************************************
7979  Criss Cross Club (Dutch)
r241749r241750
8181
8282// uPD7759 rom?
8383#define m1_criss_sound \
84   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
84   ROM_REGION( 0x100000, "msm6376", 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Criss Cross Club (Maygay) (Dutch) (M1A/B)",GAME_FLAGS )
88GAME( 199?, m1criss     ,0          ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Criss Cross Club (Maygay) (Dutch) (M1A/B)",GAME_FLAGS )
8989
9090/*******************************************************************************************************************************************************************************************************
9191  Diamond Hearts
r241749r241750
343343
344344// uPD7759 rom?
345345#define m1_dxmono_sound\
346   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  )\
346   ROM_REGION( 0x100000, "msm6376", 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)
r241749r241750
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_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 )
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 )
389389
390390/*******************************************************************************************************************************************************************************************************
391391  Cluedo
r241749r241750
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
418419ROM_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
419420ROM_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
420422ROM_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
421423ROM_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
422424
r241749r241750
431433GAME( 1995, m1cluedob2  ,m1cluedo   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v2.1 (M1A/B)",GAME_FLAGS )
432434GAME( 1995, m1cluedob2p ,m1cluedo   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v2.1 (Protocol) (M1A/B)",GAME_FLAGS )
433435GAME( 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 )
r241749r241750
11461146
11471147// uPD7759 rom?
11481148#define m1_mono_sound \
1149   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
1149   ROM_REGION( 0x100000, "msm6376", 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
1152GAME( 199?, m1mono   ,0        ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
1154GAME( 199?, m1monoa  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
1156GAME( 199?, m1monoc  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
1158GAME( 199?, m1monod  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 6)",GAME_FLAGS )
1160GAME( 199?, m1monoe  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 7)",GAME_FLAGS )
1162GAME( 199?, m1monof  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 8)",GAME_FLAGS )
1164GAME( 199?, m1monog  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 9)",GAME_FLAGS )
1166GAME( 199?, m1monoh  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 10)",GAME_FLAGS )
1168GAME( 199?, m1monoi  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 12)",GAME_FLAGS )
1170GAME( 199?, m1monok  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 13)",GAME_FLAGS )
1172GAME( 199?, m1monol  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 14)",GAME_FLAGS )
1174GAME( 199?, m1monom  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 15)",GAME_FLAGS )
1176GAME( 199?, m1monon  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 16)",GAME_FLAGS )
1178GAME( 199?, m1monoo  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 17)",GAME_FLAGS )
1180GAME( 199?, m1monop  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 18)",GAME_FLAGS )
1182GAME( 199?, m1monoq  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 19)",GAME_FLAGS )
1184GAME( 199?, m1monor  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 20)",GAME_FLAGS )
1186GAME( 199?, m1monos  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 21)",GAME_FLAGS )
1188GAME( 199?, m1monot  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 22)",GAME_FLAGS )
1190GAME( 199?, m1monou  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 23)",GAME_FLAGS )
1192GAME( 199?, m1monov  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 24)",GAME_FLAGS )
1194GAME( 199?, m1monow  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 25)",GAME_FLAGS )
1196GAME( 199?, m1monox  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 26)",GAME_FLAGS )
1198GAME( 199?, m1monoy  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 27)",GAME_FLAGS )
1200GAME( 199?, m1monoz  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 28)",GAME_FLAGS )
1202GAME( 199?, m1mono0  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 29)",GAME_FLAGS )
1204GAME( 199?, m1mono1  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 30)",GAME_FLAGS )
1206GAME( 199?, m1mono2  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 31)",GAME_FLAGS )
1208GAME( 199?, m1mono3  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 32)",GAME_FLAGS )
1210GAME( 199?, m1mono4  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 33)",GAME_FLAGS )
1212GAME( 199?, m1mono5  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 34)",GAME_FLAGS )
1214GAME( 199?, m1mono6  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 35)",GAME_FLAGS )
1216GAME( 199?, m1mono7  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 36)",GAME_FLAGS )
1218GAME( 199?, m1mono8  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 37)",GAME_FLAGS )
1220GAME( 199?, m1mono9  ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 38)",GAME_FLAGS )
1222GAME( 199?, m1monoaa ,m1mono   ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 38)",GAME_FLAGS )
12231223
12241224/*******************************************************************************************************************************************************************************************************
12251225  Gladiators
r241749r241750
15181518
15191519// uPD7759 rom?
15201520#define m1_pinkp_sound \
1521   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
1521   ROM_REGION( 0x100000, "msm6376", 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
1524GAME( 199?, m1pinkp   ,0       ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
1526GAME( 199?, m1pinkpa  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
1528GAME( 199?, m1pinkpb  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
1530GAME( 199?, m1pinkpc  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
1532GAME( 199?, m1pinkpd  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 6)",GAME_FLAGS )
1534GAME( 199?, m1pinkpe  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 7)",GAME_FLAGS )
1536GAME( 199?, m1pinkpf  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 8)",GAME_FLAGS )
1538GAME( 199?, m1pinkpg  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 9)",GAME_FLAGS )
1540GAME( 199?, m1pinkph  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 10)",GAME_FLAGS )
1542GAME( 199?, m1pinkpi  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 11)",GAME_FLAGS )
1544GAME( 199?, m1pinkpj  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 12)",GAME_FLAGS )
1546GAME( 199?, m1pinkpk  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 13)",GAME_FLAGS )
1548GAME( 199?, m1pinkpl  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 14)",GAME_FLAGS )
1550GAME( 199?, m1pinkpm  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 15)",GAME_FLAGS )
1552GAME( 199?, m1pinkpn  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 16)",GAME_FLAGS )
1554GAME( 199?, m1pinkpo  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 17)",GAME_FLAGS )
1556GAME( 199?, m1pinkpp  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 18)",GAME_FLAGS )
1558GAME( 199?, m1pinkpq  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 19)",GAME_FLAGS )
1560GAME( 199?, m1pinkpr  ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 19)",GAME_FLAGS )
15611561
15621562/*******************************************************************************************************************************************************************************************************
15631563  Nudge Banker
r241749r241750
23532353
23542354// uPD7759 rom?
23552355#define m1_monodt_sound \
2356   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
2356   ROM_REGION( 0x100000, "msm6376", 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Dutch) (Maygay) (M1A/B)",GAME_FLAGS )
2359GAME( 199?, m1monodt ,0          ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Dutch) (Maygay) (M1A/B)",GAME_FLAGS )
23602360
23612361/*******************************************************************************************************************************************************************************************************
23622362  Pink Panther (Dutch)
r241749r241750
23642364
23652365// uPD7759 rom?
23662366#define m1_ppdt_sound \
2367   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
2367   ROM_REGION( 0x100000, "msm6376", 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (German) (Maygay) (M1A/B)",GAME_FLAGS )
2370GAME( 199?, m1ppdt     ,0          ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (German) (Maygay) (M1A/B)",GAME_FLAGS )
23712371
23722372/*******************************************************************************************************************************************************************************************************
23732373  Supernova
r241749r241750
23752375
23762376// uPD7759 rom?
23772377#define m1_sprnov_sound \
2378   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
2378   ROM_REGION( 0x100000, "msm6376", 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Super Nova (Dutch) (Maygay) (M1A/B)",GAME_FLAGS )
2381GAME( 199?, m1sprnov ,0          ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Super Nova (Dutch) (Maygay) (M1A/B)",GAME_FLAGS )
23822382
23832383/*******************************************************************************************************************************************************************************************************
23842384  Take Note
r241749r241750
25602560
25612561// uPD7759 rom?
25622562#define m1_mongam_sound \
2563   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
2563   ROM_REGION( 0x100000, "msm6376", 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
2566GAME( 199?, m1mongam  ,0        ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
2568GAME( 199?, m1mongama ,m1mongam ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
2570GAME( 199?, m1mongamb ,m1mongam ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
25712571
25722572/*******************************************************************************************************************************************************************************************************
25732573  Monopoly Classic
r241749r241750
25752575
25762576// uPD7759 rom?
25772577#define m1_moncls_sound \
2578   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
2578   ROM_REGION( 0x100000, "msm6376", 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
2581GAME( 199?, m1moncls  ,0        ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
2583GAME( 199?, m1monclsa ,m1moncls ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
2585GAME( 199?, m1monclsb ,m1moncls ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
2587GAME( 199?, m1monclsc ,m1moncls ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
2589GAME( 199?, m1monclsd ,m1moncls ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
25902590
25912591/*******************************************************************************************************************************************************************************************************
25922592  Return Of The Pink Panther
r241749r241750
25942594
25952595// uPD7759 rom?
25962596#define m1_retpp_sound \
2597   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
2597   ROM_REGION( 0x100000, "msm6376", 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
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 )
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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
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 )
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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
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 )
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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
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 )
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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
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 )
26102610
26112611/*******************************************************************************************************************************************************************************************************
26122612  That's Life
r241749r241750
26142614
26152615// uPD7759 rom?
26162616#define m1_thatlf_sound \
2617   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
2617   ROM_REGION( 0x100000, "msm6376", 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
2620GAME( 199?, m1thatlf  ,0        ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
2622GAME( 199?, m1thatlfa ,m1thatlf ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
2624GAME( 199?, m1thatlfb ,m1thatlf ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
2626GAME( 199?, m1thatlfc ,m1thatlf ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
2628GAME( 199?, m1thatlfd ,m1thatlf ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
26292629
26302630/*******************************************************************************************************************************************************************************************************
26312631  Big Ghoulies
r241749r241750
28112811
28122812// uPD7759 rom?
28132813#define m1_startr_sound \
2814   ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00  ) \
2814   ROM_REGION( 0x100000, "msm6376", 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 1)",GAME_FLAGS )
2817GAME( 199?, m1startr  ,0        ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 2)",GAME_FLAGS )
2819GAME( 199?, m1startra ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 3)",GAME_FLAGS )
2821GAME( 199?, m1startrb ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 4)",GAME_FLAGS )
2823GAME( 199?, m1startrc ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 5)",GAME_FLAGS )
2825GAME( 199?, m1startrd ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 6)",GAME_FLAGS )
2827GAME( 199?, m1startre ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 7)",GAME_FLAGS )
2829GAME( 199?, m1startrf ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 8)",GAME_FLAGS )
2831GAME( 199?, m1startrg ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 9)",GAME_FLAGS )
2833GAME( 199?, m1startrh ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 10)",GAME_FLAGS )
2835GAME( 199?, m1startri ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 11)",GAME_FLAGS )
2837GAME( 199?, m1startrj ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 12)",GAME_FLAGS )
2839GAME( 199?, m1startrk ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 14)",GAME_FLAGS )
2841GAME( 199?, m1startrm ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 15)",GAME_FLAGS )
2843GAME( 199?, m1startrn ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 16)",GAME_FLAGS )
2845GAME( 199?, m1startro ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 17)",GAME_FLAGS )
2847GAME( 199?, m1startrp ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 18)",GAME_FLAGS )
2849GAME( 199?, m1startrq ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, 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_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 19)",GAME_FLAGS )
2851GAME( 199?, m1startrr ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 19)",GAME_FLAGS )
28522852
28532853/*******************************************************************************************************************************************************************************************************
28542854  Tick Tock Cash
trunk/src/mame/drivers/mediagx.c
r241749r241750
6666
6767#include "emu.h"
6868#include "cpu/i386/i386.h"
69#include "machine/lpci.h"
69#include "machine/pci.h"
7070#include "machine/pcshare.h"
7171#include "machine/pckeybrd.h"
7272#include "machine/idectrl.h"
trunk/src/mame/drivers/midqslvr.c
r241749r241750
2424
2525#include "emu.h"
2626#include "cpu/i386/i386.h"
27#include "machine/lpci.h"
27#include "machine/pci.h"
2828#include "machine/pcshare.h"
2929#include "machine/pckeybrd.h"
3030#include "machine/idectrl.h"
trunk/src/mame/drivers/mpu4.c
r241749r241750
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
r241749r241750
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-13591  171-7885A (C) Sega 1998
210837-14124  171-7885A (C) Sega 1998
211211|------------------------------------------------------------|
212212|                                          ----CN2----       -|
213213|                                                      JJ     |
r241749r241750
254254                                     Sticker    EPROM   MASKROMs    X76F100  EPM7064S  FPGA
255255Game                                 on cart    IC22#   # of SOP56  IC37#    IC41#     IC42#         Notes
256256-------------------------------------------------------------------------------------------------------------------------
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
257Crackin' DJ part 2                   840-0068C  23674   20 (64Mb)   present  present   317-0311-COM
260258Inu 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
262259Soul Surfer (Rev A)                  840-0095C  23838C  21 (64Mb)   present  present   not present   todo: verify if it's Rev A or Rev C
263260Star Horse (server)                  840-0055C  23626   17 (64Mb)   present  present   not present
264261The 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
266262
267263
268264
r241749r241750
295291   CN1/2/3  - connectors joining to main board
296292
297293Games known to use this PCB include....
298                                                Sticker      EPROM   MASKROMs    X76F100  XC9536    315-5881
299Game                                            on cart      IC22#   # of SOP44  IC37#    IC41#     IC42#          Notes
294                                                Sticker    EPROM   MASKROMs    X76F100  XC9536    315-5881
295Game                                            on cart    IC22#   # of SOP44  IC37#    IC41#     IC42#          Notes
300296-------------------------------------------------------------------------------------------------------------------------
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
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
347343
348344
349345
r241749r241750
498494Capcom Vs. SNK Millennium Fight 2000 (Rev A)    841-0011C  23511A   7 (128Mb)  315-6219   present   317-5059-COM  (000804)
499495Capcom Vs. SNK Millennium Fight 2000 (Rev C)    841-0011C  23511C   7 (128Mb)  315-6319   present   317-5059-COM  (000904)
500496Club Kart: European Session                     840-0062C  23704   11 (128Mb)  315-6319A  present   317-0313-COM
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
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   ?
504499Derby Owners Club II (Rev B)                    840-0083C  22306B  11 (128Mb)  315-6319A  present   not present
505500Derby Owners Club World Edition (Rev C)         840-0088C  22336C   7 (128Mb)  315-6319A  present   not present
506501Derby Owners Club World Edition (Rev D)         840-0088C  22336D   7 (128Mb)  315-6319A  present   not present   2 MaskROM are different from Rev C
r241749r241750
509504Moero Justice Gakuen / Project Justice (Rev A)  841-0015C  23548A  11 (128Mb)  315-6319A  present   317-5065-COM
510505Mushiking 2K5 1ST (Ver 1.000)                   840-0158C  24286    7 (128Mb)  315-6319A  present   not present
511506Oinori-daimyoujin Matsuri                       840-0126B  24053    5 (128Mb)  315-6319A  present   not present
512Samba de Amigo Ver. 2000                        840-0047C  23600   11 (128Mb)  315-6319A  present   317-0295-COM
507Samba de Amigo Ver. 2000                        840-0047C  23600   21 (64Mb)  315-6319A  present   317-0295-COM
513508Star Horse (big screens)                        840-0054C  23625    4 (128Mb)  315-6319   present   not present
514509Star Horse (client)                             840-0056C  23627    6 (128Mb)* 315-6319   present   not present   * +1 (64Mb)
515510Star 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
517511Virtua Striker 3 (Rev B)                        840-0061C  23663B  11 (128Mb)  315-6319A  present   317-0310-COM
518512Virtua Striker 3 (Rev C)                        840-0061C  23663C  11 (128Mb)  315-6319A  present   317-0310-COM
519513Wave Runner GP                                  840-0064C  24059    6 (128Mb)  315-6319A  present   not present
r241749r241750
41874181   NAOMI_BIOS
41884182   NAOMI_DEFAULT_EEPROM
41894183
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) )
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
42034208
42044209   ROM_REGION( 4, "rom_key", 0 )
42054210   ROM_LOAD( "samba2k-key.bin", 0, 4, CRC(01c0d74a) SHA1(4461cfd761919ba4bc6f1d1839a880f11eaf8d0f) )
r241749r241750
63436348
63446349   ROM_REGION( 0x5800000, "rom_board", ROMREGION_ERASEFF)
63456350   ROM_LOAD( "epr-21779a.ic22",0x0000000, 0x400000, CRC(1d419767) SHA1(33065006ef437845abcf32a59e78f4bc202c4460) )
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) )
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
63566362
63576363   ROM_REGION( 4, "rom_key", 0 )
63586364   ROM_LOAD( "ringout-key.bin", 0, 4, CRC(8f8c4eb2) SHA1(9bc59c69d04d9ce876415af048f39095ed680a5e) )
r241749r241750
63646370
63656371   ROM_REGION( 0x7000000, "rom_board", ROMREGION_ERASEFF)
63666372   ROM_LOAD( "epr-23198.ic22",  0x0000000, 0x400000, CRC(9852eda2) SHA1(71ded8cbdf567afeff30bd593071ce3b7d84a260) )
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) )
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
63806387
63816388   ROM_REGION( 4, "rom_key", 0 )
63826389   ROM_LOAD( "vonot-key.bin", 0, 4, CRC(021ac707) SHA1(af57844331226d3b1722aedca1a7aef024468b39) )
r241749r241750
77787785   NAOMI_DEFAULT_EEPROM
77797786
77807787   ROM_REGION( 0xa800000, "rom_board", ROMREGION_ERASEFF)
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) )
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) )
77927809
77937810   ROM_REGION( 4, "rom_key", ROMREGION_ERASE00 )
77947811ROM_END
r241749r241750
79007917   NAOMI_DEFAULT_EEPROM
79017918
79027919   ROM_REGION( 0xb800000, "rom_board", ROMREGION_ERASEFF)
7903   ROM_LOAD( "epr-23704d.ic22",0x0000000, 0x0400000, CRC(60ac770c) SHA1(2f1688f2046e794d1c1e06912b46c1573d934608) )
7920   ROM_LOAD( "epr-21473d.ic22",0x0000000, 0x0400000, CRC(60ac770c) SHA1(2f1688f2046e794d1c1e06912b46c1573d934608) )
79047921   ROM_LOAD( "mpr-23693.ic1",  0x0800000, 0x1000000, CRC(28995764) SHA1(a1457f9935dde2e5aaa5ef245c736c0f2f8c74b7) )
79057922   ROM_LOAD( "mpr-23694.ic2",  0x1800000, 0x1000000, CRC(37d30111) SHA1(4c07df8cd548cac79d48709e61f692d762471f8f) )
79067923   ROM_LOAD( "mpr-23695.ic3",  0x2800000, 0x1000000, CRC(41ac1510) SHA1(01b889b627fdfc1f12a0c84fcc36debdfb1cf377) )
r241749r241750
79177934   ROM_LOAD( "clubkrte-key.bin", 0, 4, CRC(db426a5d) SHA1(6a6a0b80ec0416605541159efea379dc19fe796d) )
79187935ROM_END
79197936
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
79427937ROM_START( clubkprz )
79437938   NAOMI2_BIOS
79447939   NAOMI_DEFAULT_EEPROM
r241749r241750
80378032   ROM_LOAD( "clubk2k3-key.bin", 0x000000, 0x000004, CRC(96c3b4f6) SHA1(9b85a418153c70f56aaeeb1ed0bbbbd31a1bbad7) )
80388033ROM_END
80398034
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 )
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 )
80428038   NAOMI2_BIOS
80438039   NAOMI_DEFAULT_EEPROM
80448040
r241749r241750
89358931/* 0061 */ GAME( 2001, vstrik3cb,vstrik3c,naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart, Rev B)", GAME_FLAGS )
89368932/* 0062 */ GAME( 2001, clubkrte, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart: European Session", GAME_FLAGS )
89378933/* 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 )
89398934/* 0080 */ GAME( 2002, vf4cart,  naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Virtua Fighter 4 (Cartridge)", GAME_FLAGS )
89408935/* 0087 */ GAME( 2002, kingrt66, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "King of Route 66 (Rev A)", GAME_FLAGS )
89418936/* 0095 */ GAME( 2002, soulsurf, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Soul Surfer (Rev A)", GAME_FLAGS )
r241749r241750
89458940/* 0137 */ GAME( 2004, clubkpzb, naomi2,  naomi2m1, naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart Prize Ver. B", GAME_FLAGS )
89468941// needs verification is this dump really from 840-0139C cart
89478942/* 0139 */ GAME( 2003, clubk2k3, naomi2,  naomi2m1, naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart: European Session (2003)", GAME_FLAGS )
8948/* ???  */ GAME( 2003, clubk2kp, clubk2k3,naomi2,   naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart: European Session (2003, prototype)", 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 )
89498945
89508946/* 841-xxxxx ("Licensed by Sega" Naomi cart games)*/
89518947/* 0001 */ GAME( 1999, pstone,   naomi, naomim2, naomi,   naomi_state, naomi,  ROT0,  "Capcom",          "Power Stone (JPN, USA, EUR, ASI, AUS)", GAME_FLAGS )
r241749r241750
90729068// 00??  Dragon Treasure
90739069// 00??  Dragon Treasure 2
90749070// 00??  Get Bass 2
9071// 00??  Kodai Ouja Kyouryuu King
90759072
90769073/* GDL-xxxx ("licensed by Sega" GD-ROM games) */
90779074/* 0001  */ GAME( 2001, gundmgd, naomigd, naomigd, naomi, naomi_state,  naomigd,  ROT0,"Capcom / Banpresto","Mobile Suit Gundam: Federation Vs. Zeon (GDL-0001)", GAME_FLAGS )
r241749r241750
91379134// 10015  CD  - World Club Champion Football European Clubs 2004-2005 Ver.1.1 (Sega, 2005)
91389135// 10015P CD  - World Club Champion Football European Clubs 2004-2005 Ver.3.22 (Sega, 2005)
91399136// 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)
91409144// ?????  ??? - World Club Champion Football Serie A 2001-2002 (Sega, 2002)
91419145// ?????  ??? - World Club Champion Football Serie A 2001-2002 Ver.1.2 (Sega, 2002)
91429146// ?????  ??? - World Club Champion Football Serie A 2001-2002 Ver.2 (Sega, 2003)
r241749r241750
91459149// ?????  ??? - World Club Champion Football European Clubs 2004-2005 Ver.1.2 (Sega, 2005)
91469150// ?????  ??? - World Club Champion Football European Clubs 2005-2006 bugfix (Sega, 2006)
91479151
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)
91539152
91549153
91559154/* Atomiswave */
trunk/src/mame/drivers/ninjakd2.c
r241749r241750
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
11771136ROM_START( mnight )
11781137   ROM_REGION( 0x30000, "maincpu", 0 )
11791138   ROM_LOAD( "mn6-j19.bin",  0x00000, 0x8000, CRC(56678d14) SHA1(acf3a97ca29db8ab9cad69599c5567464af3ae44) )
r241749r241750
15311490GAME( 1987, ninjakd2,  0,        ninjakd2, ninjakd2, ninjakd2_state, ninjakd2, ROT0,   "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 1)", GAME_SUPPORTS_SAVE )
15321491GAME( 1987, ninjakd2a, ninjakd2, ninjakd2, ninjakd2, ninjakd2_state, bootleg,  ROT0,   "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 2, bootleg?)", GAME_SUPPORTS_SAVE )
15331492GAME( 1987, ninjakd2b, ninjakd2, ninjakd2, rdaction, ninjakd2_state, bootleg,  ROT0,   "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 3, bootleg?)", 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 )
1493GAME( 1987, rdaction,  ninjakd2, ninjakd2, rdaction, ninjakd2_state, ninjakd2, ROT0,   "UPL (World Games license)", "Rad Action / NinjaKun Ashura no Shou", GAME_SUPPORTS_SAVE )
15361494GAME( 1987, mnight,    0,        mnight,   mnight,   ninjakd2_state, mnight,   ROT0,   "UPL (Kawakus license)", "Mutant Night", GAME_SUPPORTS_SAVE )
15371495GAME( 1988, arkarea,   0,        arkarea,  arkarea,  ninjakd2_state, mnight,   ROT0,   "UPL", "Ark Area", GAME_SUPPORTS_SAVE )
15381496GAME( 1988, robokid,   0,        robokid,  robokid,  ninjakd2_state, robokid,  ROT0,   "UPL", "Atomic Robo-kid", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/pcxt.c
r241749r241750
685685   m_lastvalue = -1;
686686
687687   m_pc_spkrdata = 0;
688   m_pit_out2 = 1;
688   m_pit_out2 = 0;
689689   m_wss2_data = 0;
690690   m_speaker->level_w(0);
691691}
trunk/src/mame/drivers/peplus.c
r241749r241750
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
1317    Hardware:
1418
1519    CPU =  INTEL 80C32       ; I8052 compatible
r241749r241750
4145
42461) What are "set chips" ?
4347
44    They are meant to be used after you have already successfully put a new game in your machine.
48    They are meant to be used after you have already sucessfully put a new game in your machine.
4549    Lets say you have 'pepp0516' installed and you go through the setup. In a real machine,
4650    you may want to add a bill validator. The only way to do that is to un-socket the 'pepp0516'
4751    chip and put in the 'peset038' chip and then reboot the machine. Then this chip's program
r241749r241750
98102
991033a) About the "autohold" feature
100104
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.
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.
104111
105112
106113Stephh's log (2007.11.28) :
r241749r241750
142149   XnnnnnnP Poker Data. Contains poker game + paytable percentages
143150             Data roms will not work with every Program rom. Incompatible combos report: Incompatible Data EPROM
144151             X000055P is a good example, it works with 19 XP000xxx Program roms. Others may be as few as 2.
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
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
147154             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.
150155   XMnnnnnP Multi-Poker Data. Contains poker games + paytable percentages: Requires specific CG graphics + CAP color prom
151156  XKnnnnnn  Spot Keno Programs. Different options for each set, but all use the same XnnnnnnK data roms
152157   XnnnnnnK Spot Keno Data. Uses CG2120 with CAP1267
r241749r241750
303308static const UINT8  id_022[8] = { 0x00, 0x01, 0x04, 0x09, 0x13, 0x16, 0x18, 0x00 };
304309static const UINT16 id_023[8] = { 0x4a6c, 0x4a7b, 0x4a4b, 0x4a5a, 0x4a2b, 0x4a0a, 0x4a19, 0x4a3a };
305310
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)
306315
316
307317/**************
308318* Memory Copy *
309319***************/
r241749r241750
12871297
12881298static MACHINE_CONFIG_START( peplus, peplus_state )
12891299   // basic machine hardware
1290   MCFG_CPU_ADD("maincpu", I80C32, XTAL_20MHz/2) /* 10MHz */
1300   MCFG_CPU_ADD("maincpu", I80C32, CPU_CLOCK)
12911301   MCFG_CPU_PROGRAM_MAP(peplus_map)
12921302   MCFG_CPU_IO_MAP(peplus_iomap)
12931303
r241749r241750
13051315   MCFG_PALETTE_ADD("palette", 16*16*2)
13061316   MCFG_PALETTE_INIT_OWNER(peplus_state, peplus)
13071317
1308   MCFG_MC6845_ADD("crtc", R6545_1, "screen", XTAL_20MHz/8/3)
1318   MCFG_MC6845_ADD("crtc", R6545_1, "screen", MC6845_CLOCK)
13091319   MCFG_MC6845_SHOW_BORDER_AREA(false)
13101320   MCFG_MC6845_CHAR_WIDTH(8)
13111321   MCFG_MC6845_ADDR_CHANGED_CB(peplus_state, crtc_addr)
r241749r241750
13161326   // sound hardware
13171327   MCFG_SPEAKER_STANDARD_MONO("mono")
13181328
1319   MCFG_SOUND_ADD("aysnd", AY8912, XTAL_20MHz/12)
1329   MCFG_SOUND_ADD("aysnd", AY8912, SOUND_CLOCK)
13201330   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
13211331MACHINE_CONFIG_END
13221332
r241749r241750
13691379*        Rom Load        *
13701380*************************/
13711381
1372ROM_START( peset001 ) /* Normal board : Set Chip (Set001) - PE+ Set Denomination */
1382ROM_START( peset001 ) /* Normal board : Set Chip (Set001) - Use for PP0542 */
13731383   ROM_REGION( 0x10000, "maincpu", 0 )
13741384   ROM_LOAD( "set001.u68",   0x00000, 0x10000, CRC(03397ced) SHA1(89d8ba7e6706e6d34ae9aae09a8a631fff06a36f) )
13751385
r241749r241750
13831393   ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
13841394ROM_END
13851395
1386ROM_START( peset004 ) /* Normal board : Set Chip (Set004) - PE+ Set Denomination / Enable Validator */
1396ROM_START( peset038 ) /* Normal board : Set Chip (Set038) */
13871397   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 )
14041398   ROM_LOAD( "set038.u68",   0x00000, 0x10000, CRC(9c4b1d1a) SHA1(8a65cd1d8e2d74c7b66f4dfc73e7afca8458e979) )
14051399
14061400   ROM_REGION( 0x020000, "gfx1", 0 )
r241749r241750
14131407   ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
14141408ROM_END
14151409
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
14311410ROM_START( pepk1024 ) /* Normal (non-plus) board : Aces and Faces 4 of a Kind Bonus Poker (PK1024) */
14321411/*
14331412                                      2-10 J-A
r241749r241750
46184597   ROM_LOAD( "cap656.u50", 0x0000, 0x0100, CRC(038cabc6) SHA1(c6514b4f9dbed6ab2631f563f7e00648661ebdbb) )
46194598ROM_END
46204599
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
46354600ROM_START( pebe0014 ) /* Normal board : Blackjack (BE0014) */
46364601/*
46374602Paytable ID: BJ7
r241749r241750
46784643   ROM_LOAD( "cap707.u50", 0x0000, 0x0100, CRC(9851ba36) SHA1(5a0a43c1e212ae8c173102ede9c57a3d95752f99) )
46794644ROM_END
46804645
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
46964646ROM_START( peke1012 ) /* Normal board : Keno 1-10 Spot (KE1012) - Payout 90.27%, Paytable 90-P */
46974647   ROM_REGION( 0x10000, "maincpu", 0 )
46984648   ROM_LOAD( "ke1012_576-a3u.u68",   0x00000, 0x10000, CRC(470e8c10) SHA1(f8a65a3a73477e9e9d2f582eeefa93b470497dfa) ) /* Game Version: 576, Library Version: A3U */
r241749r241750
87668716/*    YEAR  NAME      PARENT  MACHINE   INPUT         INIT      ROT    COMPANY                                  FULLNAME                                                  FLAGS   LAYOUT */
87678717
87688718/* Set chips */
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 )
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 )
87738721
87748722/* Normal (non-plus) board : Poker */
87758723GAMEL(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 )
r241749r241750
87868734GAMEL(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 )
87878735GAMEL(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 )
87888736GAMEL(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 )
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 )
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 )
87908738GAMEL(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 )
87918739GAMEL(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 )
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 )
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 )
87938741GAMEL(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 )
87948742GAMEL(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 )
87958743GAMEL(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 )
r241749r241750
88148762GAMEL(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 )
88158763GAMEL(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 )
88168764GAMEL(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 )
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 )
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 )
88218769GAMEL(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 )
88228770GAMEL(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 )
88238771GAMEL(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 )
r241749r241750
88428790GAMEL(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 )
88438791GAMEL(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 )
88448792GAMEL(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 )
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 )
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 )
88478795GAMEL(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 )
88488796GAMEL(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 )
88498797GAMEL(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 )
r241749r241750
88708818GAMEL(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 )
88718819GAMEL(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 )
88728820GAMEL(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 )
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 )
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 )
88748822GAMEL(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 )
88758823GAMEL(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 )
88768824GAMEL(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 )
r241749r241750
89028850GAMEL(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 )
89038851GAMEL(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 )
89048852GAMEL(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 )
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 )
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 )
89068854GAMEL(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 )
89078855GAMEL(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 )
89088856GAMEL(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 )
r241749r241750
89208868GAMEL(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 )
89218869GAMEL(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 )
89228870
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
89268871/* Normal board : Blackjack */
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 )
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 )
89288873
89298874/* Normal board : 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 )
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 )
89338877
89348878/* Normal board : Slots machine */
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 )
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 )
89548898
89558899/* Superboard : Poker */
89568900GAMEL(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 )
89578901GAMEL(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 )
89588902GAMEL(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 )
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 )
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 )
89618905GAMEL(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 )
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 )
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 )
89648908GAMEL(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 )
89658909GAMEL(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 )
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 )
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 )
89828926GAMEL(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 )
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 )
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 )
89848928GAMEL(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 )
89858929GAMEL(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 )
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 )
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 )
89878931GAMEL(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 )
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 )
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 )
89898933GAMEL(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 )
89908934GAMEL(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 )
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 )
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 )
89928936GAMEL(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 )
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 )
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 )
89948938GAMEL(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 )
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 )
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 )
89978941GAMEL(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 )
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 )
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 )
89998943GAMEL(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 )
90008944GAMEL(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 )
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 )
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 )
90028946GAMEL(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 )
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 )
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 )
90048948GAMEL(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 )
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 )
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 )
90078951GAMEL(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 )
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 )
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 )
90128956GAMEL(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 )
90138957GAMEL(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 )
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 )
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 )
90158959GAMEL(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 )
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 )
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 )
90208964GAMEL(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 )
90218965GAMEL(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 )
90228966GAMEL(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 )
90238967GAMEL(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 )
90248968GAMEL(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 )
90258969GAMEL(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 )
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 )
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 )
90278971GAMEL(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 )
90288972GAMEL(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 )
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 )
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 )
90358979GAMEL(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 )
90368980GAMEL(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 )
90378981GAMEL(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 )
r241749r241750
90408984GAMEL(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 )
90418985GAMEL(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 )
90428986GAMEL(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 )
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 )
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 )
90468990GAMEL(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 )
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 )
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 )
90488992GAMEL(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 )
90498993GAMEL(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 )
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 )
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 )
90528996GAMEL(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 )
90538997GAMEL(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 )
90548998GAMEL(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 )
90558999GAMEL(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 */
90569000GAMEL(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 */
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 )
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 )
90589002GAMEL(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 )
90599003GAMEL(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 )
90609004GAMEL(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 )
r241749r241750
90669010GAMEL(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 )
90679011GAMEL(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 )
90689012GAMEL(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 )
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 )
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 )
90709014GAMEL(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 )
90719015
90729016/* Superboard : Poker (Key On Credit) */
r241749r241750
91029046GAMEL(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 )
91039047
91049048/* Superboard : Slots machine */
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 )
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 )
91079051GAMEL(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 )
91089052GAMEL(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
r241749r241750
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) )
987983
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
1002984/*
1003985
1004986Dragon World 3 (KOREA 106 Ver.)
r241749r241750
41634145GAME( 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 )
41644146GAME( 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 )
41654147GAME( 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)
41674148
41684149GAME( 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 */
41694150GAME( 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
r241749r241750
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
307281ROM_START( kov2nl )
308282   ROM_REGION( 0x04000, "maincpu", 0 )
309283   ROM_LOAD( "gsyx_igs036.rom",         0x00000000, 0x0004000, NO_DUMP )
r241749r241750
356330   ROM_LOAD16_WORD_SWAP( "ig-a3_sp.u37",            0x00000000, 0x2000000, CRC(45cdf422) SHA1(8005d284bcee73cff37a147fcd1c3e9f039a7203) )
357331ROM_END
358332
359ROM_START( kov2nloa )
360   ROM_REGION( 0x04000, "maincpu", 0 )
361   ROM_LOAD( "gsyx_igs036.rom",         0x00000000, 0x0004000, NO_DUMP )
362333
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
385334ROM_START( ddpdojh )
386335   ROM_REGION( 0x04000, "maincpu", 0 )
387336   ROM_LOAD( "ddpdoj_igs036.rom",       0x00000000, 0x0004000, NO_DUMP )
r241749r241750
547496/* PGM2 */
548497GAME( 2007, orleg2,       0,         pgm2,    pgm2, pgm2_state,     orleg2,       ROT0, "IGS", "Oriental Legend 2 (V104, China)", GAME_IS_SKELETON )
549498GAME( 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 )
551499// should be earlier verisons too.
552500
553501GAME( 2008, kov2nl,       0,         pgm2,    pgm2, pgm2_state,     kov2nl,       ROT0, "IGS", "Knights of Valour 2 New Legend (V302, China)", GAME_IS_SKELETON )
554502GAME( 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 )
556503// should be earlier verisons too.
557504
558505GAME( 2010, ddpdojh,      0,    pgm2,    pgm2, pgm2_state,     ddpdojh,    ROT270, "IGS", "Dodonpachi Daioujou Tamashii (V201, China)", GAME_IS_SKELETON )
trunk/src/mame/drivers/photoply.c
r241749r241750
1313
1414#include "emu.h"
1515#include "cpu/i386/i386.h"
16#include "machine/lpci.h"
16#include "machine/pci.h"
1717#include "machine/pcshare.h"
1818#include "machine/pckeybrd.h"
1919#include "machine/idectrl.h"
trunk/src/mame/drivers/pinball2k.c
r241749r241750
1919
2020#include "emu.h"
2121#include "cpu/i386/i386.h"
22#include "machine/lpci.h"
22#include "machine/pci.h"
2323#include "machine/pcshare.h"
2424#include "machine/pckeybrd.h"
2525#include "machine/idectrl.h"
trunk/src/mame/drivers/psychic5.c
r241749r241750
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_ROMBANK("bank1")
411   AM_RANGE(0xc000, 0xdfff) AM_DEVICE("vrambank", address_map_bank_device, amap8)
410   AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank1")
411   AM_RANGE(0xc000, 0xdfff) AM_READWRITE(psychic5_paged_ram_r, psychic5_paged_ram_w)
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)
r241749r241750
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
446424static ADDRESS_MAP_START( psychic5_sound_map, AS_PROGRAM, 8, psychic5_state )
447425   AM_RANGE(0x0000, 0x7fff) AM_ROM
448426   AM_RANGE(0xc000, 0xc7ff) AM_RAM
r241749r241750
458436
459437static ADDRESS_MAP_START( bombsa_main_map, AS_PROGRAM, 8, psychic5_state )
460438   AM_RANGE(0x0000, 0x7fff) AM_ROM
461   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
439   AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank1")
462440   AM_RANGE(0xc000, 0xcfff) AM_RAM
463441
464442   /* ports look like the other games */
r241749r241750
472450   AM_RANGE(0xd200, 0xd7ff) AM_RAM AM_SHARE("spriteram")
473451   AM_RANGE(0xd800, 0xdfff) AM_RAM
474452
475   AM_RANGE(0xe000, 0xffff) AM_DEVICE("vrambank", address_map_bank_device, amap8)
453   AM_RANGE(0xe000, 0xffff) AM_READWRITE(psychic5_paged_ram_r, bombsa_paged_ram_w)
476454ADDRESS_MAP_END
477455
478456static ADDRESS_MAP_START( bombsa_sound_map, AS_PROGRAM, 8, psychic5_state )
r241749r241750
488466   AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
489467ADDRESS_MAP_END
490468
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")
493469
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
510470static INPUT_PORTS_START( psychic5 )
511471   PORT_START("SYSTEM")    /* system control */
512472   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
r241749r241750
695655   MCFG_CPU_PROGRAM_MAP(psychic5_main_map)
696656   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", psychic5_state, psychic5_scanline, "screen", 0, 1)
697657
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
705658   MCFG_CPU_ADD("audiocpu", Z80, XTAL_5MHz)
706659   MCFG_CPU_PROGRAM_MAP(psychic5_sound_map)
707660   MCFG_CPU_IO_MAP(psychic5_soundport_map)
r241749r241750
747700   MCFG_CPU_PROGRAM_MAP(bombsa_main_map)
748701   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", psychic5_state, psychic5_scanline, "screen", 0, 1)
749702
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
757703   MCFG_CPU_ADD("audiocpu", Z80, XTAL_5MHz )
758704   MCFG_CPU_PROGRAM_MAP(bombsa_sound_map)
759705   MCFG_CPU_IO_MAP(bombsa_soundport_map)
r241749r241750
772718   MCFG_PALETTE_ADD("palette", 768)
773719
774720   MCFG_VIDEO_START_OVERRIDE(psychic5_state,bombsa)
775   MCFG_VIDEO_RESET_OVERRIDE(psychic5_state,psychic5)
721   MCFG_VIDEO_RESET_OVERRIDE(psychic5_state,bombsa)
776722
777723   /* sound hardware */
778724   MCFG_SPEAKER_STANDARD_MONO("mono")
trunk/src/mame/drivers/queen.c
r241749r241750
2626
2727#include "emu.h"
2828#include "cpu/i386/i386.h"
29#include "machine/lpci.h"
29#include "machine/pci.h"
3030#include "machine/pcshare.h"
3131#include "machine/pckeybrd.h"
3232#include "machine/idectrl.h"
trunk/src/mame/drivers/rampart.c
r241749r241750
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
344342   MCFG_MACHINE_RESET_OVERRIDE(rampart_state,rampart)
345343
346344   MCFG_ATARI_EEPROM_2816_ADD("eeprom")
trunk/src/mame/drivers/rockrage.c
r241749r241750
210210};
211211
212212static GFXDECODE_START( rockrage )
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 */
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 */
215215GFXDECODE_END
216216
217217/***************************************************************************
r241749r241750
227227   m_rombank->configure_entries(0, 8, &ROM[0x10000], 0x2000);
228228
229229   save_item(NAME(m_vreg));
230   save_item(NAME(m_layer_colorbase));
230231}
231232
232233void rockrage_state::machine_reset()
r241749r241750
267268   MCFG_K007420_PALETTE("palette")
268269
269270   MCFG_GFXDECODE_ADD("gfxdecode", "palette", rockrage)
270   MCFG_PALETTE_ADD("palette", 16*16*3)
271   MCFG_PALETTE_ADD("palette", 64 + 2*16*16)
271272   MCFG_PALETTE_INDIRECT_ENTRIES(64)
272273   MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
273274   MCFG_PALETTE_ENDIANNESS(ENDIANNESS_LITTLE)
r241749r241750
309310   ROM_LOAD( "620l10.8g",  0x020000, 0x20000, CRC(06d108e0) SHA1(cae8c5f2fc4e84bc7adbf27f71a18a74968c4296) ) /* One "K" & one "L" code version??? */
310311
311312   ROM_REGION( 0x0300, "proms", 0 )
312   ROM_LOAD( "620k07.13g", 0x00000, 0x00100, CRC(b6135ee0) SHA1(248a978987cff86c2bbad10ef332f63a6abd5bee) )    /* layer 0 lookup table */
313   ROM_LOAD( "620k09.11g", 0x00000, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) )    /* layer 0 lookup table */
313314   ROM_LOAD( "620k08.12g", 0x00100, 0x00100, CRC(b499800c) SHA1(46fa4e071ebceed12027de109be1e16dde5e846e) )    /* layer 1 lookup table */
314   ROM_LOAD( "620k09.11g", 0x00200, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) )    /* sprite lookup table */
315
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 */
316317   ROM_REGION( 0x08000, "vlm", 0 ) /* VLM3050 data */
317318   ROM_LOAD( "620k04.6e", 0x00000, 0x08000, CRC(8be969f3) SHA1(9856b4c13fac77b645aed67a08cb4965b4966492) )
318319ROM_END
r241749r241750
338339   ROM_LOAD( "620g10b.8f", 0x030000, 0x10000, CRC(1618854a) SHA1(0afb34a9ed97f13c1910acd7767cb8546ea7e6cd) )
339340
340341   ROM_REGION( 0x0300, "proms", 0 )
341   ROM_LOAD( "620k07.13g", 0x00000, 0x00100, CRC(b6135ee0) SHA1(248a978987cff86c2bbad10ef332f63a6abd5bee) )    /* layer 0 lookup table */
342   ROM_LOAD( "620k09.11g", 0x00000, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) )    /* layer 0 lookup table */
342343   ROM_LOAD( "620k08.12g", 0x00100, 0x00100, CRC(b499800c) SHA1(46fa4e071ebceed12027de109be1e16dde5e846e) )    /* layer 1 lookup table */
343   ROM_LOAD( "620k09.11g", 0x00200, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) )    /* sprite lookup table */
344
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 */
345346   ROM_REGION( 0x08000, "vlm", 0 ) /* VLM3050 data */
346347   ROM_LOAD( "620k04.6e", 0x00000, 0x08000, CRC(8be969f3) SHA1(9856b4c13fac77b645aed67a08cb4965b4966492) ) /* Same rom but labeled as ver "G" */
347348ROM_END
r241749r241750
363364   ROM_LOAD( "620k10.8g",  0x020000, 0x20000, CRC(0d1a95ab) SHA1(be565424f17af31dcd07004c6be03bbb00aef514) )
364365
365366   ROM_REGION( 0x0300, "proms", 0 )
366   ROM_LOAD( "620k07.13g", 0x00000, 0x00100, CRC(b6135ee0) SHA1(248a978987cff86c2bbad10ef332f63a6abd5bee) )    /* layer 0 lookup table */
367   ROM_LOAD( "620k09.11g", 0x00000, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) )    /* layer 0 lookup table */
367368   ROM_LOAD( "620k08.12g", 0x00100, 0x00100, CRC(b499800c) SHA1(46fa4e071ebceed12027de109be1e16dde5e846e) )    /* layer 1 lookup table */
368   ROM_LOAD( "620k09.11g", 0x00200, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) )    /* sprite lookup table */
369
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 */
370371   ROM_REGION( 0x08000, "vlm", 0 ) /* VLM3050 data */
371372   ROM_LOAD( "620k04.6e", 0x00000, 0x08000, CRC(8be969f3) SHA1(9856b4c13fac77b645aed67a08cb4965b4966492) )
372373ROM_END
trunk/src/mame/drivers/savquest.c
r241749r241750
4646
4747#include "emu.h"
4848#include "cpu/i386/i386.h"
49#include "machine/lpci.h"
49#include "machine/pci.h"
5050#include "machine/pcshare.h"
5151#include "machine/pckeybrd.h"
5252#include "machine/idectrl.h"
trunk/src/mame/drivers/segacoin.c
r241749r241750
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
r241749r241750
7373         switch (m_romboard)
7474         {
7575            case ROM_BOARD_171_SHADOW:  break;  // ???
76            case ROM_BOARD_837_7525:
7776            case ROM_BOARD_171_5874:
7877            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;
7978            default:                    assert(false);
r241749r241750
9089                                 else
9190                                    mapper.map_as_rom(0x00000,0x100000, 0xf00000, "rom1base",0x100000, write16_delegate(FUNC(segas18_state::rom_5987_bank_w), this));
9291                                 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
9692            default:                    assert(false);
9793         }
9894         break;
r241749r241750
10298         {
10399            case ROM_BOARD_171_SHADOW:
104100            case ROM_BOARD_171_5874:    mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom0base", 0x00000, write16_delegate()); break;
105            case ROM_BOARD_837_7525:
106101            case ROM_BOARD_171_5987:    if (romsize <= 0x100000)
107102                                    mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom0base", 0x00000, write16_delegate());
108103                                 else
r241749r241750
395390   }
396391}
397392
398WRITE16_MEMBER( segas18_state::rom_837_7525_bank_w )
399{
400   if (!ACCESSING_BITS_0_7)
401      return;
402393
403   offset &= 0xf;
404   data &= 0xff;
405394
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
427395/*************************************
428396 *
429397 *  D.D.Crew Custom I/O
r241749r241750
761729   PORT_DIPSETTING(    0x00, "1" )
762730   //"SW2:7" unused
763731   //"SW2:8" unused
732
764733INPUT_PORTS_END
765734
735
766736static INPUT_PORTS_START( astorm2p )
767737   PORT_INCLUDE( system18_generic )
768738
r241749r241750
787757   PORT_DIPSETTING(    0x00, "1" )
788758   //"SW2:7" unused
789759   //"SW2:8" unused
760
790761INPUT_PORTS_END
791762
792763
r241749r241750
905876   PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
906877INPUT_PORTS_END
907878
879
908880static INPUT_PORTS_START( ddcrew2p )
909881   PORT_INCLUDE( system18_generic )
910882
r241749r241750
931903   PORT_DIPSETTING(    0xc0, DEF_STR( Normal ) )
932904   PORT_DIPSETTING(    0x40, DEF_STR( Hard ) )
933905   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
906
934907INPUT_PORTS_END
935908
936909static INPUT_PORTS_START( ddcrew3p )
r241749r241750
949922   PORT_MODIFY("SERVICE")
950923   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
951924   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
925
952926INPUT_PORTS_END
953927
954
955928static INPUT_PORTS_START( desertbr )
956929   PORT_INCLUDE( system18_generic )
957930
r241749r241750
1000973INPUT_PORTS_END
1001974
1002975
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
1028976static INPUT_PORTS_START( lghost )
1029977   PORT_INCLUDE( system18_generic )
1030978
r241749r241750
12361184INPUT_PORTS_END
12371185
12381186
1187
12391188/*************************************
12401189 *
12411190 *  Graphics definitions
r241749r241750
12791228 *
12801229 *************************************/
12811230
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
12911231static MACHINE_CONFIG_START( system18, segas18_state )
12921232
12931233   // basic machine hardware
r241749r241750
13361276
13371277   MCFG_SOUND_ADD("ym1", YM3438, 8000000)
13381278   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
1339   MCFG_YM2612_IRQ_HANDLER(WRITELINE(segas18_state, ym3438_irq_handler))
13401279
13411280   MCFG_SOUND_ADD("ym2", YM3438, 8000000)
13421281   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
r241749r241750
19321871/**************************************************************************************************************************
19331872 **************************************************************************************************************************
19341873 **************************************************************************************************************************
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 **************************************************************************************************************************
19741874    Laser Ghost, Sega System 18
19751875    CPU: FD1094 (317-0166)
19761876    ROM Board: 171-5873B
r241749r241750
23622262ROM_END
23632263
23642264
2265
23652266/*************************************
23662267 *
23672268 *  Generic driver initialization
r241749r241750
23832284   init_generic(ROM_BOARD_171_5987);
23842285}
23852286
2386DRIVER_INIT_MEMBER(segas18_state,hamaway)
2387{
2388   init_generic(ROM_BOARD_837_7525);
2389}
23902287
23912288
23922289/*************************************
r241749r241750
24172314}
24182315
24192316
2317
24202318/*************************************
24212319 *
24222320 *  Game driver(s)
24232321 *
24242322 *************************************/
24252323
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 )
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 )
trunk/src/mame/drivers/segaufo.c
r241749r241750
2323  - # School Kids (1993)
2424 
2525  4th gen - EX brd
26    * Z80, 2 Sega 315-5296(I/O), 315-5338A, YM3438, NEC uPD71054C, optional NEC uPD7759C
26    * Z80, 2 Sega 315-5296(I/O), YM3438, NEC uPD71054C, optional NEC uPD7759C
2727  - # Dream Palace (1992)
2828  - # Dream Kitchen (1994)
2929  - # UFO Catcher Excellent (1994)
r241749r241750
3535 
3636  More games were released after 2000, assumed to be on more modern hardware.
3737
38
3839  TODO:
39  - add dipswitches
40  - prize sensor for ufo21/ufo800
40  - make the other games work (for now only newufo+clones work)
41  - add layout
4142
4243***************************************************************************/
4344
r241749r241750
4647#include "machine/pit8253.h"
4748#include "machine/315_5296.h"
4849#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"
5651
57
5852/* simulation parameters */
5953// x/y/z cabinet dimensions per player (motor range)
6054#define CABINET_WIDTH   400
6155#define CABINET_DEPTH   400
62#define CABINET_HEIGHT  300
56#define CABINET_HEIGHT  250
6357
6458// x/y/z motor speed in hertz
6559#define MOTOR_SPEED     100
6660
6761// crane size (stepper motor range)
68// note: UFO board/EX board expects this to be around 350 steps per quarter rotation
62// note: the game expects this to be around 350 steps per quarter rotation
6963#define CRANE_SIZE      350
7064
7165
r241749r241750
7569public:
7670   ufo_state(const machine_config &mconfig, device_type type, const char *tag)
7771      : driver_device(mconfig, type, tag),
78      m_maincpu(*this, "maincpu"),
79      m_io1(*this, "io1"),
80      m_io2(*this, "io2"),
81      m_upd(*this, "upd")
72      m_maincpu(*this, "maincpu")
8273   { }
8374
8475   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;
8876   
8977   struct Player
9078   {
r241749r241750
11199   DECLARE_WRITE8_MEMBER(cp_digits_w);
112100   DECLARE_WRITE8_MEMBER(crane_xyz_w);
113101   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);
124102   
125103   virtual void machine_reset();
126104   virtual void machine_start();
127105   TIMER_DEVICE_CALLBACK_MEMBER(simulate_xyz);
128   TIMER_DEVICE_CALLBACK_MEMBER(update_info);
129106};
130107
131108
132109
110
133111void ufo_state::motor_tick(int p, int m)
134112{
135113   float delta = m_player[p].motor[m].speed;
r241749r241750
145123      m_player[p].motor[m].position = 1;
146124}
147125
126
148127TIMER_DEVICE_CALLBACK_MEMBER(ufo_state::simulate_xyz)
149128{
150129   for (int p = 0; p < 2; p++)
r241749r241750
152131         motor_tick(p, m);
153132}
154133
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
181134/***************************************************************************
182135
183136  I/O
r241749r241750
191144
192145WRITE_LINE_MEMBER(ufo_state::pit_out1)
193146{
194   // NMI?
195   if (state)
196      m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
147   // ?
197148}
198149
199150WRITE_LINE_MEMBER(ufo_state::pit_out2)
200151{
201   // ?
152   // NMI?
153   if (state)
154      m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
202155}
203156
204157
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
238158WRITE8_MEMBER(ufo_state::stepper_w)
239159{
240160   for (int p = 0; p < 2; p++)
r241749r241750
307227
308228WRITE8_MEMBER(ufo_state::ufo_lamps_w)
309229{
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
230   ;
323231}
324232
325233
326/* EX board specific handlers */
327
328/* io1 */
329
330READ8_MEMBER(ufo_state::ex_crane_limits_r)
234READ8_MEMBER(ufo_state::crane_limits_r)
331235{
332236   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
356237   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}
370238
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++)
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++)
403246   {
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;
247      ret ^= (m_player[p].motor[i].position >= 1) << (i*2 + 0);
248      ret ^= (m_player[p].motor[i].position <= 0) << (i*2 + 1);
407249   }
408}
409250
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
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   
424255   // d7: ?
425   for (int i = 1; i < 7; i++)
426      output_set_lamp_value(10 + offset * 10 + i, data >> i & 1);
427}
428256
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);
257   return ret;
434258}
435259
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}
443260
444261
445/* Memory maps */
446262
447263static ADDRESS_MAP_START( ufo_map, AS_PROGRAM, 8, ufo_state )
448264   AM_RANGE(0x0000, 0xbfff) AM_ROM
r241749r241750
454270   ADDRESS_MAP_GLOBAL_MASK(0xff)
455271   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pit", pit8254_device, read, write)
456272   AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ym", ym3438_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)
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)
459275ADDRESS_MAP_END
460276
461277
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
470278
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
479279/***************************************************************************
480280
481281  Inputs
482282
483283***************************************************************************/
484284
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
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")
489289   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("P1 Test")
490290   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P1 Service Coin")
491291   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("P1 Credit Clear")
492292   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
493293   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
494   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Prize Sensor")
294   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Prize Fell")
495295
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
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")
499299   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Test") PORT_CODE(KEYCODE_F1)
500300   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("P2 Service Coin")
501301   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE4 ) PORT_NAME("P2 Credit Clear")
502302   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
503303   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
504   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Prize Sensor")
304   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Prize Fell")
505305
506306   PORT_START("DSW1") // coinage
507307   PORT_DIPNAME( 0x01, 0x01, "UNK1-01" )
r241749r241750
542342   PORT_DIPNAME( 0x08, 0x08, "UNK2-08" )
543343   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
544344   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
545   PORT_DIPNAME( 0x10, 0x10, "UNK2-10 Disable Prize Sensor" )
345   PORT_DIPNAME( 0x10, 0x10, "UNK2-10 Enable Prize Sensor" )
546346   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
547347   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
548348   PORT_DIPNAME( 0x20, 0x20, "UNK2-20" )
r241749r241750
556356   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
557357INPUT_PORTS_END
558358
559static INPUT_PORTS_START( ufomini )
560   PORT_INCLUDE( newufo )
561359
562   PORT_MODIFY("IN2")
563   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
564INPUT_PORTS_END
565360
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
711361/***************************************************************************
712362
713363  Machine Config
r241749r241750
720370
721371void ufo_state::machine_start()
722372{
723   // init/zerofill/register for savestates
373   // init/zerofill
724374   static const float motor_speeds[4] =
725375      { 1.0f/CABINET_WIDTH, 1.0f/CABINET_DEPTH, 1.0f/CABINET_HEIGHT, 1.0f/CRANE_SIZE };
726376   
727   for (int m = 0; m < 4; m++)
377   for (int p = 0; p < 2; p++)
728378   {
729      for (int p = 0; p < 2; p++)
379      for (int m = 0; m < 4; m++)
730380      {
731381         m_player[p].motor[m].running = 0;
732382         m_player[p].motor[m].direction = 0;
733383         m_player[p].motor[m].position = 0.5;
734384         m_player[p].motor[m].speed = motor_speeds[m];
735385      }
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);
744386   }
745   
746   m_stepper = 0;
747   save_item(NAME(m_stepper));
748387}
749388
750389WRITE_LINE_MEMBER(ufo_state::ym3438_irq)
r241749r241750
752391   m_maincpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE);
753392}
754393
755static MACHINE_CONFIG_START( newufo, ufo_state )
394static MACHINE_CONFIG_START( ufo, ufo_state )
756395
757396   /* basic machine hardware */
758   MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2)
397   MCFG_CPU_ADD("maincpu", Z80, 8000000)
759398   MCFG_CPU_PROGRAM_MAP(ufo_map)
760399   MCFG_CPU_IO_MAP(ufo_portmap)
761400
762401   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))
764402   
765   MCFG_DEVICE_ADD("io1", SEGA_315_5296, XTAL_16MHz)
403   MCFG_DEVICE_ADD("io1", SEGA_315_5296, 16000000)
766404   // all ports set to input
767405   MCFG_315_5296_IN_PORTA_CB(READ8(ufo_state, crane_limits_r))
768406   MCFG_315_5296_IN_PORTB_CB(READ8(ufo_state, crane_limits_r))
769   MCFG_315_5296_IN_PORTE_CB(IOPORT("IN1"))
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"))
770410   MCFG_315_5296_IN_PORTF_CB(IOPORT("DSW1"))
771411   MCFG_315_5296_IN_PORTG_CB(IOPORT("DSW2"))
772   MCFG_315_5296_IN_PORTH_CB(IOPORT("IN2"))
412   MCFG_315_5296_IN_PORTH_CB(IOPORT("P2"))
773413
774   MCFG_DEVICE_ADD("io2", SEGA_315_5296, XTAL_16MHz)
414   MCFG_DEVICE_ADD("io2", SEGA_315_5296, 16000000)
775415   // all ports set to output
776416   MCFG_315_5296_OUT_PORTA_CB(WRITE8(ufo_state, stepper_w))
777417   MCFG_315_5296_OUT_PORTB_CB(WRITE8(ufo_state, cp_lamps_w))
r241749r241750
780420   MCFG_315_5296_OUT_PORTE_CB(WRITE8(ufo_state, crane_xyz_w))
781421   MCFG_315_5296_OUT_PORTF_CB(WRITE8(ufo_state, crane_xyz_w))
782422   MCFG_315_5296_OUT_PORTG_CB(WRITE8(ufo_state, ufo_lamps_w))
423//   MCFG_315_5296_OUT_PORTH_CB(NOOP)
783424
784   MCFG_DEVICE_ADD("pit", PIT8254, XTAL_16MHz/2) // uPD71054C, configuration is unknown
785   MCFG_PIT8253_CLK0(XTAL_16MHz/2/256)
425   MCFG_DEVICE_ADD("pit", PIT8254, 0) // uPD71054C, configuration is unknown
426   MCFG_PIT8253_CLK0(8000000/256)
786427   MCFG_PIT8253_OUT0_HANDLER(WRITELINE(ufo_state, pit_out0))
787   MCFG_PIT8253_CLK1(XTAL_16MHz/2/256)
428   MCFG_PIT8253_CLK1(8000000/256)
788429   MCFG_PIT8253_OUT1_HANDLER(WRITELINE(ufo_state, pit_out1))
789   MCFG_PIT8253_CLK2(XTAL_16MHz/2/256)
430   MCFG_PIT8253_CLK2(8000000/256)
790431   MCFG_PIT8253_OUT2_HANDLER(WRITELINE(ufo_state, pit_out2))
791432
792433   /* no video! */
r241749r241750
794435   /* sound hardware */
795436   MCFG_SPEAKER_STANDARD_MONO("mono")
796437
797   MCFG_SOUND_ADD("ym", YM3438, XTAL_16MHz/2)
438   MCFG_SOUND_ADD("ym", YM3438, 8000000)
798439   MCFG_YM2612_IRQ_HANDLER(WRITELINE(ufo_state, ym3438_irq))
799440   MCFG_SOUND_ROUTE(0, "mono", 0.40)
800441   MCFG_SOUND_ROUTE(1, "mono", 0.40)
801442MACHINE_CONFIG_END
802443
803static MACHINE_CONFIG_DERIVED( ufomini, newufo )
804444
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
811445
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
860446/***************************************************************************
861447
862448  Game drivers
r241749r241750
904490ROM_END
905491
906492
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 )
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 )
trunk/src/mame/drivers/starwars.c
r241749r241750
6262      address_space &space = m_maincpu->space(AS_PROGRAM);
6363
6464      /* reset the slapstic */
65      m_slapstic_device->slapstic_reset();
66      m_slapstic_current_bank = m_slapstic_device->slapstic_bank();
65      slapstic_reset();
66      m_slapstic_current_bank = slapstic_bank();
6767      memcpy(m_slapstic_base, &m_slapstic_source[m_slapstic_current_bank * 0x2000], 0x2000);
6868
6969      /* reset all the banks */
r241749r241750
9797
9898void starwars_state::esb_slapstic_tweak(address_space &space, offs_t offset)
9999{
100   int new_bank = m_slapstic_device->slapstic_tweak(space, offset);
100   int new_bank = slapstic_tweak(space, offset);
101101
102102   /* update for the new bank */
103103   if (new_bank != m_slapstic_current_bank)
r241749r241750
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
336334   MCFG_CPU_ADD("audiocpu", M6809, MASTER_CLOCK / 8)
337335   MCFG_CPU_PROGRAM_MAP(sound_map)
338336
r241749r241750
526524   UINT8 *rom = memregion("maincpu")->base();
527525
528526   /* init the slapstic */
529   m_slapstic_device->slapstic_init(machine(), 101);
527   slapstic_init(machine(), 101);
530528   m_slapstic_source = &rom[0x14000];
531529   m_slapstic_base = &rom[0x08000];
532530
trunk/src/mame/drivers/stv.c
r241749r241750
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)
10271024MACHINE_CONFIG_END
10281025
10291026/*
trunk/src/mame/drivers/taito_f3.c
r241749r241750
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
32153181ROM_START( arkretrnj )
32163182   ROM_REGION(0x200000, "maincpu", 0) /* 68020 code */
32173183   ROM_LOAD32_BYTE("e36-11.20", 0x000000, 0x040000, CRC(b50cfb92) SHA1(dac69fc9ef03315b11bb94d19e3dfdc8867b08ed) )
r241749r241750
41544120GAME( 1996, pbobble3u,pbobble3, f3,      f3, taito_f3_state, pbobble3, ROT0,   "Taito Corporation",         "Puzzle Bobble 3 (Ver 2.1A 1996/09/27)", 0 )
41554121GAME( 1996, pbobble3j,pbobble3, f3,      f3, taito_f3_state, pbobble3, ROT0,   "Taito Corporation",         "Puzzle Bobble 3 (Ver 2.1J 1996/09/27)", 0 )
41564122GAME( 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 )
41584123GAME( 1997, arkretrnj,arkretrn, f3,      f3, taito_f3_state, arkretrn, ROT0,   "Taito Corporation",         "Arkanoid Returns (Ver 2.02J 1997/02/10)", 0 )
41594124GAME( 1997, kirameki, 0,        f3_224a, f3, taito_f3_state, kirameki, ROT0,   "Taito Corporation",         "Kirameki Star Road (Ver 2.10J 1997/08/29)", 0 )
41604125GAME( 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
r241749r241750
2727
2828#include "emu.h"
2929#include "cpu/i386/i386.h"
30#include "machine/lpci.h"
30#include "machine/pci.h"
3131#include "machine/pcshare.h"
3232#include "machine/pckeybrd.h"
3333#if ENABLE_VGA
trunk/src/mame/drivers/tmnt.c
r241749r241750
28942894   ROM_LOAD( "963a25.d5",      0x00000, 0x80000, CRC(fca078c7) SHA1(3e1124d72c9db4cb11d8de6c44b7aeca967f44e1) )
28952895ROM_END
28962896
2897
28972898ROM_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
28982899   ROM_REGION( 0x60000, "maincpu", 0 ) /* 2*128k and 2*64k for 68000 code */
2899   ROM_LOAD16_BYTE( "unk3.i17",   0x00000, 0x20000, CRC(537eb047) SHA1(97e6dbc486c7d057355db7fcbdc0a2c2cad2c653) ) /* unknown 963 xxx Konami code for this set */
2900   ROM_LOAD16_BYTE( "unk3.i17",   0x00000, 0x20000, CRC(537eb047) SHA1(97e6dbc486c7d057355db7fcbdc0a2c2cad2c653) )
29002901   ROM_LOAD16_BYTE( "unk4.k17",   0x00001, 0x20000, CRC(5afae564) SHA1(8d5fbf9530ad8d095c12b7e0f8c499c1436c4d47) )
2901   ROM_LOAD16_BYTE( "unk2.j15",   0x40000, 0x10000, CRC(ee34de05) SHA1(507d7fb178dbbe87dd373a81ad3f350ee2f7d923) )
2902   ROM_LOAD16_BYTE( "unk5.k15",   0x40001, 0x10000, CRC(5ef58d4e) SHA1(5df71c61a90c3e9d28ec3b8055d7ee97bc283e01) )
2902   ROM_LOAD16_BYTE( "unk2.j15",   0x40000, 0x10000, CRC(ee34de05) SHA1(507d7fb178dbbe87dd373a81ad3f350ee2f7d923))
2903   ROM_LOAD16_BYTE( "unk1.k15",   0x40001, 0x10000, NO_DUMP )
29032904
29042905   ROM_REGION( 0x10000, "audiocpu", 0 )
29052906   ROM_LOAD( "963e20.g13",      0x00000, 0x08000, CRC(1692a6d6) SHA1(68c3419012b2863e91a7d7e479fce5ceabb10b88) )
r241749r241750
29282929   ROM_LOAD( "963a25.d5",      0x00000, 0x80000, CRC(fca078c7) SHA1(3e1124d72c9db4cb11d8de6c44b7aeca967f44e1) )
29292930ROM_END
29302931
2932
29312933ROM_START( tmntj )
29322934   ROM_REGION( 0x60000, "maincpu", 0 ) /* 2*128k and 2*64k for 68000 code */
29332935   ROM_LOAD16_BYTE( "963_223.j17",  0x00000, 0x20000, CRC(0d34a5ff) SHA1(a387f3e7c727dc66ebb0e1f40e4ab8dc83f647e5) )
r241749r241750
41004102GAME( 1989, tmntua,      tmnt,     tmnt,     tmnt,      tmnt_state,    tmnt,     ROT0,   "Konami", "Teenage Mutant Ninja Turtles (US 4 Players, set 2)", GAME_SUPPORTS_SAVE )
41014103GAME( 1989, tmht,        tmnt,     tmnt,     tmnt,      tmnt_state,    tmnt,     ROT0,   "Konami", "Teenage Mutant Hero Turtles (UK 4 Players, set 1)", GAME_SUPPORTS_SAVE )
41024104GAME( 1989, tmhta,       tmnt,     tmnt,     tmnt,      tmnt_state,    tmnt,     ROT0,   "Konami", "Teenage Mutant Hero Turtles (UK 4 Players, set 2)", GAME_SUPPORTS_SAVE )
4103GAME( 1989, tmhtb,       tmnt,     tmnt,     tmnt,      tmnt_state,    tmnt,     ROT0,   "Konami", "Teenage Mutant Hero Turtles (UK 4 Players, set 3)", 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
41044106GAME( 1990, tmntj,       tmnt,     tmnt,     tmnt,      tmnt_state,    tmnt,     ROT0,   "Konami", "Teenage Mutant Ninja Turtles (Japan 4 Players)", GAME_SUPPORTS_SAVE )
41054107GAME( 1989, tmht2p,      tmnt,     tmnt,     tmnt2p,    tmnt_state,    tmnt,     ROT0,   "Konami", "Teenage Mutant Hero Turtles (UK 2 Players, set 1)", GAME_SUPPORTS_SAVE )
41064108GAME( 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
r241749r241750
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
52355209ROM_START( bbakraidj )
52365210   ROM_REGION( 0x200000, "maincpu", 0 )            /* Main 68k code */
52375211   ROM_LOAD16_BYTE( "prg0u022.new", 0x000000, 0x080000, CRC(fa8d38d3) SHA1(aba91d87a8a62d3fe1139b4437b16e2f844264ad) )
r241749r241750
53705344// Battle Bakraid
53715345// the 'unlimited' version is a newer revision of the code
53725346GAME( 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 )
53745347GAME( 1999, bbakraidj,  bbakraid, bbakraid, bbakraid, toaplan2_state,  bbakraid, ROT270, "Eighting", "Battle Bakraid - Unlimited Version (Japan) (Tue Jun 8 1999)", GAME_SUPPORTS_SAVE )
53755348// older revision of the code
53765349GAME( 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
r241749r241750
11/*
22
3    United Amusements PC-Engine based hardware
3    United Amusement PC-Engine based hardware
44    Driver by Mariusz Wojcieszek
55    Thanks for Charles MacDonald for hardware docs
66
r241749r241750
1212
1313 History
1414
15 In 1989 United Amusements (a large operator of arcades in the US at that
15 In 1989 United Amusement (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
r241749r241750
606606
607607***************************************************************************/
608608
609
610609ROM_START( vigilant )
611610   ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
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) )
611   ROM_LOAD( "g07_c03.bin",  0x00000, 0x08000, CRC(9dcca081) SHA1(6d086b70e6bf1fbafa746ef5c82334645f199be9) )
612   ROM_LOAD( "j07_c04.bin",  0x10000, 0x10000, CRC(e0159105) SHA1(da6d74ec075863c67c0ce21b07a54029d138f688) )
614613   /* 0x20000-0x2ffff empty */
615614
616615   ROM_REGION( 0x10000, "soundcpu", 0 ) /* 64k for sound */
617   ROM_LOAD( "vg_a-5j-.ic37",  0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) )
616   ROM_LOAD( "g05_c02.bin",  0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) )
618617
619618   ROM_REGION( 0x20000, "gfx1", 0 )
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) )
619   ROM_LOAD( "f05_c08.bin",  0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
620   ROM_LOAD( "h05_c09.bin",  0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
622621
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)
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) )
632631
633632   ROM_REGION( 0x40000, "gfx3", 0 )
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) )
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) )
637636
638637   ROM_REGION( 0x10000, "samples", 0 ) /* samples */
639   ROM_LOAD( "vg_a-4d-.ic26",  0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) )
638   ROM_LOAD( "d04_c01.bin",  0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) )
640639
641640   ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected */
642641   ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) )
643642   ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) )
644   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
643   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
645644ROM_END
646645
646
647
647648ROM_START( vigilant1 )
648649   ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
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) )
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) )
651652   /* 0x20000-0x2ffff empty */
652653
653654   ROM_REGION( 0x10000, "soundcpu", 0 ) /* 64k for sound */
654   ROM_LOAD( "vg_a-5j-.ic37",  0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) )
655   ROM_LOAD( "g05_c02.bin",  0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) )
655656
656657   ROM_REGION( 0x20000, "gfx1", 0 )
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) )
658   ROM_LOAD( "f05_c08.bin",  0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
659   ROM_LOAD( "h05_c09.bin",  0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
659660
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)
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) )
669670
670671   ROM_REGION( 0x40000, "gfx3", 0 )
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) )
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) )
674675
675676   ROM_REGION( 0x10000, "samples", 0 ) /* samples */
676   ROM_LOAD( "vg_a-4d-.ic26",  0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) )
677   ROM_LOAD( "d04_c01.bin",  0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) )
677678
678679   ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected */
679680   ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) )
680681   ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) )
681   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
682   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
682683ROM_END
683684
684ROM_START( vigilantu ) /* Need to determine the correct original roms & IC locations for this set */
685
686ROM_START( vigilantu )
685687   ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
686688   ROM_LOAD( "a-8h",  0x00000, 0x08000, CRC(8d15109e) SHA1(9ef57047a0b53cd0143a260193b33e3d5680ca71) )
687689   ROM_LOAD( "a-8l",  0x10000, 0x10000, CRC(7f95799b) SHA1(a371671c3c26976314aaac4e410bff0f13a8a085) )
r241749r241750
694696   ROM_LOAD( "f05_c08.bin",  0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
695697   ROM_LOAD( "h05_c09.bin",  0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
696698
697   ROM_REGION( 0x80000, "gfx2", 0 ) // 8 roms is a bootleg configuration?
699   ROM_REGION( 0x80000, "gfx2", 0 )
698700   ROM_LOAD( "n07_c12.bin",  0x00000, 0x10000, CRC(10af8eb2) SHA1(664b178b248babc43a9af0fe140fe57bc7367762) )
699701   ROM_LOAD( "k07_c10.bin",  0x10000, 0x10000, CRC(9576f304) SHA1(0ec2a7d3d82208e2a9a4ef9ab2824e6fe26ebbe5) )
700702   ROM_LOAD( "o07_c13.bin",  0x20000, 0x10000, CRC(b1d9d4dc) SHA1(1aacf6b0ff8d102880d3dce3b55cd1488edb90cf) )
r241749r241750
715717   ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected */
716718   ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) )
717719   ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) )
718   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
720   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
719721ROM_END
720722
721ROM_START( vigilantu2 ) /* Need to determine the correct original roms & IC locations for this set */
723ROM_START( vigilantu2 )
722724   ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
723725   ROM_LOAD( "vg-a-8h-g.bin",  0x00000, 0x08000, CRC(9444c04e) SHA1(463d2dae48df2d237bd19d5e16cab032df0d9052) ) /* labeled Rev. G */
724726   ROM_LOAD( "a-8l",  0x10000, 0x10000, CRC(7f95799b) SHA1(a371671c3c26976314aaac4e410bff0f13a8a085) )
r241749r241750
731733   ROM_LOAD( "f05_c08.bin",  0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
732734   ROM_LOAD( "h05_c09.bin",  0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
733735
734   ROM_REGION( 0x80000, "gfx2", 0 ) // 8 roms is a bootleg configuration?
736   ROM_REGION( 0x80000, "gfx2", 0 )
735737   ROM_LOAD( "n07_c12.bin",  0x00000, 0x10000, CRC(10af8eb2) SHA1(664b178b248babc43a9af0fe140fe57bc7367762) )
736738   ROM_LOAD( "k07_c10.bin",  0x10000, 0x10000, CRC(9576f304) SHA1(0ec2a7d3d82208e2a9a4ef9ab2824e6fe26ebbe5) )
737739   ROM_LOAD( "o07_c13.bin",  0x20000, 0x10000, CRC(b1d9d4dc) SHA1(1aacf6b0ff8d102880d3dce3b55cd1488edb90cf) )
r241749r241750
752754   ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected - sourced from this board */
753755   ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) )
754756   ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) )
755   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
757   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
756758ROM_END
757759
758760ROM_START( vigilantj )
759761   ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
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) )
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) )
762764   /* 0x20000-0x2ffff empty */
763765
764766   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 */
802767   ROM_LOAD( "g05_c02.bin",  0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) )
803768
804769   ROM_REGION( 0x20000, "gfx1", 0 )
805770   ROM_LOAD( "f05_c08.bin",  0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
806771   ROM_LOAD( "h05_c09.bin",  0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
807772
808   ROM_REGION( 0x80000, "gfx2", 0 ) // 8 roms is a bootleg configuration?
773   ROM_REGION( 0x80000, "gfx2", 0 )
809774   ROM_LOAD( "n07_c12.bin",  0x00000, 0x10000, CRC(10af8eb2) SHA1(664b178b248babc43a9af0fe140fe57bc7367762) )
810775   ROM_LOAD( "k07_c10.bin",  0x10000, 0x10000, CRC(9576f304) SHA1(0ec2a7d3d82208e2a9a4ef9ab2824e6fe26ebbe5) )
811776   ROM_LOAD( "o07_c13.bin",  0x20000, 0x10000, CRC(b1d9d4dc) SHA1(1aacf6b0ff8d102880d3dce3b55cd1488edb90cf) )
r241749r241750
823788   ROM_REGION( 0x10000, "samples", 0 ) /* samples */
824789   ROM_LOAD( "d04_c01.bin",  0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) )
825790
826   ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected */
791   ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 */
827792   ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) )
828793   ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) )
829   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
794   ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
830795ROM_END
831796
832
833797ROM_START( kikcubic )
834798   ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
835799   ROM_LOAD( "mqj-p0",       0x00000, 0x08000, CRC(9cef394a) SHA1(be9cc78420b4c35f8f9523b529bd56315749762c) )
r241749r241750
889853   ROM_LOAD( "7s",           0x0120, 0x0020, CRC(face0cbb) SHA1(c56aea3b7aaabbd4ff1b4546fcad94f51b473cde) )    /* unknown (bad read?) */
890854ROM_END
891855
892
893856ROM_START( buccanrs )
894857   ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
895858   ROM_LOAD( "11.u58",  0x00000, 0x10000, CRC(bf1d7e6f) SHA1(55dcf993515b57c3eb1fab98097a2171df3e38ed) ) // both halves are identical (correct for rom type on this board tho)
r241749r241750
963926   ROM_LOAD( "prom2.u99",  0x0300, 0x0100, CRC(e0aa8869) SHA1(ac8bdfeba69420ba56ec561bf3d0f1229d02cea2) )
964927ROM_END
965928
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 )
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 )
trunk/src/mame/drivers/vindictr.c
r241749r241750
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
189187   MCFG_MACHINE_RESET_OVERRIDE(vindictr_state,vindictr)
190188
191189   MCFG_ATARI_EEPROM_2804_ADD("eeprom")
trunk/src/mame/drivers/viper.c
r241749r241750
283283
284284#include "emu.h"
285285#include "cpu/powerpc/ppc.h"
286#include "machine/lpci.h"
286#include "machine/pci.h"
287287#include "machine/ataintf.h"
288288#include "machine/idehd.h"
289289#include "machine/timekpr.h"
trunk/src/mame/drivers/voyager.c
r241749r241750
1414
1515#include "emu.h"
1616#include "cpu/i386/i386.h"
17#include "machine/lpci.h"
17#include "machine/pci.h"
1818#include "machine/pcshare.h"
1919#include "machine/pckeybrd.h"
2020#include "machine/idectrl.h"
trunk/src/mame/drivers/xtom3d.c
r241749r241750
4040
4141#include "emu.h"
4242#include "cpu/i386/i386.h"
43#include "machine/lpci.h"
43#include "machine/pci.h"
4444#include "machine/pcshare.h"
4545#include "machine/pckeybrd.h"
4646#include "machine/idectrl.h"
trunk/src/mame/drivers/xybots.c
r241749r241750
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
189187   MCFG_MACHINE_RESET_OVERRIDE(xybots_state,xybots)
190188
191189   MCFG_ATARI_EEPROM_2804_ADD("eeprom")
trunk/src/mame/drivers/yunsun16.c
r241749r241750
578578static MACHINE_CONFIG_START( magicbub, yunsun16_state )
579579
580580   /* basic machine hardware */
581   MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz)
581   MCFG_CPU_ADD("maincpu", M68000, 16000000)
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, XTAL_16MHz/4)
585   MCFG_CPU_ADD("audiocpu", Z80, 3000000)  /* ? */
586586   MCFG_CPU_PROGRAM_MAP(sound_map)
587587   MCFG_CPU_IO_MAP(sound_port_map)
588588
r241749r241750
601601   /* sound hardware */
602602   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
603603
604   MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_16MHz/4)
604   MCFG_SOUND_ADD("ymsnd", YM3812, 4000000)
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", XTAL_16MHz/16, OKIM6295_PIN7_HIGH)
609   MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH)
610610   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
611611   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
612612MACHINE_CONFIG_END
r241749r241750
619619static MACHINE_CONFIG_START( shocking, yunsun16_state )
620620
621621   /* basic machine hardware */
622   MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz)
622   MCFG_CPU_ADD("maincpu", M68000, 16000000)
623623   MCFG_CPU_PROGRAM_MAP(main_map)
624624   MCFG_CPU_VBLANK_INT_DRIVER("screen", yunsun16_state,  irq2_line_hold)
625625
r241749r241750
637637   /* sound hardware */
638638   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
639639
640   MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH)
640   MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH)
641641   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
642642   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
643643MACHINE_CONFIG_END
r241749r241750
715715   ROM_LOAD16_BYTE( "magbuble.u32", 0x000001, 0x040000, CRC(f6ea7004) SHA1(069541e37b60370810451616ee66bbd05dc10137) )
716716
717717   ROM_REGION( 0x10000, "audiocpu", 0 )        /* Z80 Code */
718   ROM_LOAD( "u143.bin", 0x00000, 0x10000, CRC(04192753) SHA1(9c56ba70e1d074906ea1dc593c2a8516c6ba2074) )
718   ROM_LOAD( "magbuble.143", 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))
r241749r241750
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( "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) )
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) )
731731
732732   ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
733   ROM_LOAD( "u131.bin", 0x000000, 0x020000, CRC(03e04e89) SHA1(7d80e6a7be2322e32e40acae72bedd8d7e90ad33) )
733   ROM_LOAD( "magbuble.131", 0x000000, 0x020000, CRC(03e04e89) SHA1(7d80e6a7be2322e32e40acae72bedd8d7e90ad33) )
734734
735735ROM_END
736736
r241749r241750
741741   ROM_LOAD16_BYTE( "u32.bin", 0x000001, 0x040000, CRC(58f885ad) SHA1(e66f5bb1ac0acd9abc2def439af7f932c3a09cbd) )
742742
743743   ROM_REGION( 0x10000, "audiocpu", 0 )        /* Z80 Code */
744   ROM_LOAD( "u143.bin", 0x00000, 0x10000, CRC(04192753) SHA1(9c56ba70e1d074906ea1dc593c2a8516c6ba2074) )
744   ROM_LOAD( "magbuble.143", 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))
r241749r241750
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( "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) )
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) )
761761
762762   ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
763   ROM_LOAD( "u131.bin", 0x000000, 0x020000, CRC(03e04e89) SHA1(7d80e6a7be2322e32e40acae72bedd8d7e90ad33) )
763   ROM_LOAD( "magbuble.131", 0x000000, 0x020000, CRC(03e04e89) SHA1(7d80e6a7be2322e32e40acae72bedd8d7e90ad33) )
764764
765765ROM_END
766766
767ROM_START( magicbubb ) /* Found on a YS-0211 PCB like below */
768767
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
798768/***************************************************************************
799769
800770YunSung YS-0211 based games:
r241749r241750
802772Paparazzi (c) 1996 (no PCB label but looks identical)
803773Shocking  (c) 1997
804774Bomb Kick (c) 1998
805Magic Bubble (c) 199?
806775
807776PCB Layout
808777----------
r241749r241750
987956
988957***************************************************************************/
989958
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 )
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 )
trunk/src/mame/includes/atarigx2.h
r241749r241750
88
99#include "machine/atarigen.h"
1010#include "audio/atarijsa.h"
11#include "includes/slapstic.h"
1211
13
1412class atarigx2_state : public atarigen_state
1513{
1614public:
r241749r241750
2119         m_protection_base(*this, "protection_base"),
2220         m_playfield_tilemap(*this, "playfield"),
2321         m_alpha_tilemap(*this, "alpha"),
24         m_rle(*this, "rle")
25         { }
22         m_rle(*this, "rle") { }
2623
2724   UINT16          m_playfield_base;
2825
trunk/src/mame/includes/atarisy2.h
r241749r241750
1010#include "video/atarimo.h"
1111#include "cpu/m6502/m6502.h"
1212#include "cpu/t11/t11.h"
13#include "slapstic.h"
1413
1514class atarisy2_state : public atarigen_state
1615{
r241749r241750
2625         m_alpha_tilemap(*this, "alpha"),
2726         m_rombank1(*this, "rombank1"),
2827         m_rombank2(*this, "rombank2"),
29         m_generic_paletteram_16(*this, "paletteram"),
30         m_slapstic(*this, "slapstic")
31         { }
28         m_generic_paletteram_16(*this, "paletteram") { }
3229
3330   required_device<t11_device> m_maincpu;
3431   required_device<m6502_device> m_audiocpu;
r241749r241750
5350   required_shared_ptr<UINT16> m_rombank1;
5451   required_shared_ptr<UINT16> m_rombank2;
5552   required_shared_ptr<UINT16> m_generic_paletteram_16;
56   required_device<atari_slapstic_device> m_slapstic;
5753
5854   UINT8           m_sound_reset_state;
5955
trunk/src/mame/includes/atetris.h
r241749r241750
44
55*************************************************************************/
66
7#include "includes/slapstic.h"
8
97class atetris_state : public driver_device
108{
119public:
r241749r241750
1513      m_videoram(*this, "videoram"),
1614      m_maincpu(*this, "maincpu"),
1715      m_gfxdecode(*this, "gfxdecode"),
18      m_screen(*this, "screen"),
19      m_slapstic_device(*this, "slapstic")
20      { }
16      m_screen(*this, "screen") { }
2117
2218   required_shared_ptr<UINT8>  m_nvram;
2319   required_shared_ptr<UINT8> m_videoram;
r241749r241750
4440   required_device<cpu_device> m_maincpu;
4541   required_device<gfxdecode_device> m_gfxdecode;
4642   required_device<screen_device> m_screen;
47   optional_device<atari_slapstic_device> m_slapstic_device;
4843};
trunk/src/mame/includes/harddriv.h
r241749r241750
1313#include "cpu/dsp32/dsp32.h"
1414#include "audio/atarijsa.h"
1515#include "sound/dac.h"
16#include "machine/atarigen.h"
1617#include "machine/mc68681.h"
1718#include "machine/asic65.h"
1819#include "machine/timekpr.h"
r241749r241750
2021#define HARDDRIV_MASTER_CLOCK   XTAL_32MHz
2122#define HARDDRIV_GSP_CLOCK      XTAL_48MHz
2223
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 */
24class harddriv_state : public atarigen_state
4225{
4326public:
44   harddriv_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
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") {}
4563
46
4764   required_device<cpu_device> m_maincpu;
4865   required_device<tms34010_device> m_gsp;
4966   optional_device<tms34010_device> m_msp;
r241749r241750
251268   void init_driver_sound();
252269   void racedrivc_init_common(offs_t gsp_protection);
253270   void steeltal_init_common(offs_t ds3_transfer_pc, int proto_sloop);
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();
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);
278287   INTERRUPT_GEN_MEMBER(hd68k_irq_gen);
279288   TIMER_CALLBACK_MEMBER(deferred_adsp_bank_switch);
280289   TIMER_CALLBACK_MEMBER(rddsp32_sync_cb);
r241749r241750
301310   DECLARE_READ16_MEMBER( hd68k_msp_io_r );
302311   DECLARE_WRITE16_MEMBER( hd68k_msp_io_w );
303312
304   DECLARE_READ16_MEMBER( hd68k_a80000_r );
305313   DECLARE_READ16_MEMBER( hd68k_port0_r );
306314   DECLARE_READ16_MEMBER( hd68k_adc8_r );
307315   DECLARE_READ16_MEMBER( hd68k_adc12_r );
r241749r241750
461469
462470   TMS340X0_SCANLINE_IND16_CB_MEMBER(scanline_driver);
463471   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();
478472};
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
r241749r241750
199199   
200200   UINT16 m_prot_data[0x20];
201201   
202   UINT16 *m_gx_spriteram;
203   
204   // mirrored K054338 settings
205   int *m_K054338_shdRGB;
206   
207202   // 1st-Tier GX/MW Variables
208203   // frequently used registers
209204   int m_k053247_vrcbk[4];
r241749r241750
241236       unsupported flipping modes (probably due to the way it's hooked up to the
242237       rest of the chips) which is causing entirely the wrong output.
243238
244    -- furthermore video\k053936.c contains an implementation of
245       the K053936_zoom_draw named K053936GP_zoom_draw that's only used in konamigx ...
239    -- furthermore video/konamigx.c contains it's own implementation of
240       the K053936_zoom_draw named K053936GP_zoom_draw ...
246241
247242
248243    */
249244   bitmap_ind16 *m_gxtype1_roz_dstbitmap;
250245   bitmap_ind16 *m_gxtype1_roz_dstbitmap2;
251246   rectangle m_gxtype1_roz_dstbitmapclip;
252   
253   int m_konamigx_type3_psac2_actual_bank;
254   //int m_konamigx_type3_psac2_actual_last_bank = 0;
255247};
256248
257249// Sprite Callbacks
trunk/src/mame/includes/maygay1b.h
r241749r241750
11
22
33
4#define VERBOSE 0
4#define VERBOSE 1
55#define LOG(x)  do { if (VERBOSE) logerror x; } while (0)
66
77#define M1_MASTER_CLOCK (XTAL_8MHz)
r241749r241750
2020#include "sound/2413intf.h"
2121#include "sound/okim6376.h"
2222#include "machine/nvram.h"
23#include "sound/upd7759.h"
2423
25#include "sound/okim6295.h"
26
2724class maygay1b_state : public driver_device
2825{
2926public:
r241749r241750
3330      m_vfd(*this, "vfd"),
3431      m_ay(*this, "aysnd"),
3532      m_msm6376(*this, "msm6376"),
36      m_upd7759(*this, "upd"),
37      m_okim6295(*this, "oki"),
3833      m_duart68681(*this, "duart68681"),
3934      m_sw1_port(*this, "SW1"),
4035      m_sw2_port(*this, "SW2"),
r241749r241750
4338      m_s4_port(*this, "STROBE4"),
4439      m_s5_port(*this, "STROBE5"),
4540      m_s6_port(*this, "STROBE6"),
46      m_s7_port(*this, "STROBE7"),
47      m_bank1(*this, "bank1")
41      m_s7_port(*this, "STROBE7")
4842   {}
4943
5044   required_device<cpu_device> m_maincpu;
5145   optional_device<s16lf01_t> m_vfd;
5246   required_device<ay8910_device> m_ay;
5347   optional_device<okim6376_device> m_msm6376;
54   optional_device<upd7759_device> m_upd7759;
55   optional_device<okim6295_device> m_okim6295;
5648   required_device<mc68681_device> m_duart68681;
5749   required_ioport m_sw1_port;
5850   required_ioport m_sw2_port;
r241749r241750
6254   required_ioport m_s5_port;
6355   required_ioport m_s6_port;
6456   required_ioport m_s7_port;
65   required_memory_bank m_bank1;
6657
6758   UINT8 m_lamppos;
6859   int m_lamp_strobe;
r241749r241750
7263   int m_RAMEN;
7364   int m_ALARMEN;
7465   int m_PSUrelay;
75   bool m_Vmm;
7666   int m_WDOG;
67   int m_SRSEL;
7768   int m_NMIENABLE;
7869   int m_meter;
7970   TIMER_DEVICE_CALLBACK_MEMBER( maygay1b_nmitimer_callback );
r241749r241750
9889   DECLARE_READ8_MEMBER(m1_meter_r);
9990   DECLARE_READ8_MEMBER(m1_firq_clr_r);
10091   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);
10592   DECLARE_WRITE_LINE_MEMBER(duart_irq_handler);
10693   DECLARE_READ8_MEMBER(m1_duart_r);
10794   DECLARE_DRIVER_INIT(m1);
108   DECLARE_DRIVER_INIT(m1common);
109   DECLARE_DRIVER_INIT(m1nec);
11095   virtual void machine_start();
11196   virtual void machine_reset();
11297   void cpu0_firq(int data);
113   void cpu0_nmi();
98   void cpu0_nmi(int data);
11499   void m1_stepper_reset();
115100};
116
117MACHINE_CONFIG_EXTERN( maygay_m1 );
118MACHINE_CONFIG_EXTERN( maygay_m1_nec );
119MACHINE_CONFIG_EXTERN( maygay_m1_empire );
trunk/src/mame/includes/pgm.h
r241749r241750
411411   DECLARE_DRIVER_INIT(dw2v100x);
412412   DECLARE_DRIVER_INIT(drgw2c);
413413   DECLARE_DRIVER_INIT(drgw2j);
414   DECLARE_DRIVER_INIT(drgw2hk);
415414
416415   DECLARE_MACHINE_RESET(drgw2);
417416
trunk/src/mame/includes/psychic5.h
r241749r241750
1#include "machine/bankdev.h"
2
31class psychic5_state : public driver_device
42{
53public:
r241749r241750
97      m_maincpu(*this, "maincpu"),
108      m_audiocpu(*this, "audiocpu"),
119      m_gfxdecode(*this, "gfxdecode"),
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"),
10      m_palette(*this, "palette")  { }
1711
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
2412   UINT8 m_bank_latch;
2513   UINT8 m_ps5_vram_page;
2614   UINT8 m_bg_clip_mode;
2715   UINT8 m_title_screen;
28
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;
2923   tilemap_t *m_bg_tilemap;
3024   tilemap_t *m_fg_tilemap;
25   int m_bg_palette_ram_base;
26   int m_bg_palette_base;
3127   UINT16 m_palette_intensity;
3228   UINT8 m_bombsa_unknown;
3329   int m_sx1;
r241749r241750
4238   DECLARE_READ8_MEMBER(psychic5_vram_page_select_r);
4339   DECLARE_WRITE8_MEMBER(psychic5_vram_page_select_w);
4440   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);
4544   DECLARE_WRITE8_MEMBER(bombsa_unknown_w);
4645   TILE_GET_INFO_MEMBER(get_bg_tile_info);
4746   TILE_GET_INFO_MEMBER(get_fg_tile_info);
r241749r241750
4948   DECLARE_VIDEO_START(psychic5);
5049   DECLARE_VIDEO_RESET(psychic5);
5150   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 offset, UINT8* palram, int palbase);
55   void psychic5_change_palette(int color, int offset);
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);
r241749r241750
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
8265};
trunk/src/mame/includes/segas18.h
r241749r241750
5555   DECLARE_DRIVER_INIT(generic_5874);
5656   DECLARE_DRIVER_INIT(wwally);
5757   DECLARE_DRIVER_INIT(generic_5987);
58   DECLARE_DRIVER_INIT(hamaway);
5958
6059   // memory mapping
6160   void memory_mapper(sega_315_5195_mapper_device &mapper, UINT8 index);
r241749r241750
6463
6564   // read/write handlers
6665   DECLARE_WRITE16_MEMBER( rom_5987_bank_w );
67   DECLARE_WRITE16_MEMBER( rom_837_7525_bank_w );
6866   DECLARE_READ16_MEMBER( io_chip_r );
6967   DECLARE_WRITE16_MEMBER( io_chip_w );
7068   DECLARE_READ16_MEMBER( misc_io_r );
r241749r241750
9290
9391   DECLARE_WRITE16_MEMBER( sega_tileram_0_w ) { m_segaic16vid->segaic16_tileram_0_w(space,offset,data,mem_mask); };
9492   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);
9793
9894protected:
9995   // timer IDs
r241749r241750
108104      ROM_BOARD_INVALID,
109105      ROM_BOARD_171_SHADOW,   // 171-???? -- used by shadow dancer
110106      ROM_BOARD_171_5874,     // 171-5874
111      ROM_BOARD_171_5987,     // 171-5987
112      ROM_BOARD_837_7525      // Hammer Away proto
113
107      ROM_BOARD_171_5987      // 171-5987
114108   };
115109
116110   // device overrides
trunk/src/mame/includes/slapstic.h
r241749r241750
99
1010*************************************************************************/
1111
12#pragma once
12/*----------- defined in machine/slapstic.c -----------*/
1313
14#ifndef __SLAPSTIC__
15#define __SLAPSTIC__
14void slapstic_init(running_machine &machine, int chip);
15void slapstic_reset(void);
1616
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
17int slapstic_bank(void);
18int slapstic_tweak(address_space &space, offs_t offset);
trunk/src/mame/includes/starwars.h
r241749r241750
55***************************************************************************/
66
77#include "machine/6532riot.h"
8#include "includes/slapstic.h"
98
109
1110class starwars_state : public driver_device
r241749r241750
1615      m_riot(*this, "riot"),
1716      m_mathram(*this, "mathram"),
1817      m_maincpu(*this, "maincpu"),
19      m_audiocpu(*this, "audiocpu"),
20      m_slapstic_device(*this, "slapstic")
21      { }
18      m_audiocpu(*this, "audiocpu")  { }
2219
2320   UINT8 m_sound_data;
2421   UINT8 m_main_data;
r241749r241750
8178   void esb_slapstic_tweak(address_space &space, offs_t offset);
8279   required_device<cpu_device> m_maincpu;
8380   required_device<cpu_device> m_audiocpu;
84   optional_device<atari_slapstic_device> m_slapstic_device;
8581};
trunk/src/mame/includes/stv.h
r241749r241750
99#include "bus/generic/slot.h"
1010#include "bus/generic/carts.h"
1111
12#include "machine/315-5881_crypt.h"
13
1412#define MAX_FILTERS (24)
1513#define MAX_BLOCKS  (200)
1614#define MAX_DIR_SIZE    (256*1024)
r241749r241750
169167   required_device<gfxdecode_device> m_gfxdecode;
170168   required_device<palette_device> m_palette;
171169
172
173
174170   bitmap_rgb32 m_tmpbitmap;
175171   DECLARE_VIDEO_START(stv_vdp2);
176172   UINT32 screen_update_saturn(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
r241749r241750
698694   stv_state(const machine_config &mconfig, device_type type, const char *tag)
699695      : saturn_state(mconfig, type, tag),
700696      m_adsp(*this, "adsp"),
701      m_adsp_pram(*this, "adsp_pram"),
702      m_cryptdevice(*this, "315_5881")
697      m_adsp_pram(*this, "adsp_pram")
703698   {
704699   }
705700
r241749r241750
834829   DECLARE_WRITE32_MEMBER( decathlt_prot2_w );
835830   void write_prot_data(UINT32 data, UINT32 mem_mask, int offset, int which);
836831   void install_decathlt_protection();
837
838   optional_device<sega_315_5881_crypt_device> m_cryptdevice;
839   UINT16 crypt_read_callback(UINT32 addr);
840832};
841833
842834
trunk/src/mame/includes/tx1.h
r241749r241750
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);
196                        UINT8 *rc0, UINT8 *rc1, UINT8 *rc2, UINT8 *rc3,
197                        const UINT8 *rom, const UINT8 *prom0, const UINT8 *prom1, const UINT8 *prom2);
197198   void buggyboy_draw_road(UINT8 *bitmap);
198199   void buggybjr_draw_road(UINT8 *bitmap);
199200   void buggyboy_draw_objs(UINT8 *bitmap, bool wide);
trunk/src/mame/layout/newufo.lay
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
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]; }
105103
106104protected:
107105   // device-level overrides
trunk/src/mame/machine/asic65.c
r241749r241750
150150
151151void asic65_device::reset_line(int state)
152152{
153   address_space &space = subdevice("^maincpu")->memory().space(AS_PROGRAM);
153   address_space &space = machine().device("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
r241749r241750
1616#include "sound/okim6295.h"
1717#include "sound/pokey.h"
1818#include "video/atarimo.h"
19#include "includes/slapstic.h"
1920#include "atarigen.h"
2021
2122
r241749r241750
974975      m_gfxdecode(*this, "gfxdecode"),
975976      m_screen(*this, "screen"),
976977      m_palette(*this, "palette"),
977      m_generic_paletteram_16(*this, "paletteram"),
978      m_slapstic_device(*this, ":slapstic")
978      m_generic_paletteram_16(*this, "paletteram")
979979{
980980}
981981
r241749r241750
10221022   // reset the slapstic
10231023   if (m_slapstic_num != 0)
10241024   {
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());
1025      slapstic_reset();
1026      slapstic_update_bank(slapstic_bank());
10301027   }
10311028}
10321029
r241749r241750
11951192
11961193void atarigen_state::device_post_load()
11971194{
1198   if (!m_slapstic_device)
1199      fatalerror("Slapstic device is missing?\n");
1200
1201   slapstic_update_bank(m_slapstic_device->slapstic_bank());
1195   slapstic_update_bank(slapstic_bank());
12021196}
12031197
12041198
r241749r241750
12381232   // if we have a chip, install it
12391233   if (chipnum != 0)
12401234   {
1241      if (!m_slapstic_device)
1242         fatalerror("Slapstic device is missing\n");
1243
12441235      // initialize the slapstic
1245      m_slapstic_device->slapstic_init(machine(), chipnum);
1236      slapstic_init(machine(), chipnum);
12461237
12471238      // install the memory handlers
12481239      address_space &program = device.space(AS_PROGRAM);
r241749r241750
12711262
12721263WRITE16_MEMBER(atarigen_state::slapstic_w)
12731264{
1274   if (!m_slapstic_device)
1275      fatalerror("Slapstic device is missing?\n");
1276
1277   slapstic_update_bank(m_slapstic_device->slapstic_tweak(space, offset));
1265   slapstic_update_bank(slapstic_tweak(space, offset));
12781266}
12791267
12801268
r241749r241750
12851273
12861274READ16_MEMBER(atarigen_state::slapstic_r)
12871275{
1288   if (!m_slapstic_device)
1289      fatalerror("Slapstic device is missing?\n");
1290
12911276   // fetch the result from the current bank first
12921277   int result = m_slapstic[offset & 0xfff];
12931278
12941279   // then determine the new one
1295   slapstic_update_bank(m_slapstic_device->slapstic_tweak(space, offset));
1280   slapstic_update_bank(slapstic_tweak(space, offset));
12961281   return result;
12971282}
12981283
trunk/src/mame/machine/atarigen.h
r241749r241750
1717#include "video/atarimo.h"
1818#include "cpu/m6502/m6502.h"
1919#include "sound/okim6295.h"
20#include "includes/slapstic.h"
2120
2221
2322/***************************************************************************
r241749r241750
432431   optional_device<screen_device> m_screen;
433432   optional_device<palette_device> m_palette;
434433   optional_shared_ptr<UINT16> m_generic_paletteram_16;
435   optional_device<atari_slapstic_device> m_slapstic_device;
436434};
437435
438436
trunk/src/mame/machine/harddriv.c
r241749r241750
3636 *
3737 *************************************/
3838
39void harddriv_state::device_start()
39MACHINE_START_MEMBER(harddriv_state,harddriv)
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
5047}
5148
5249
53void  harddriv_state::device_reset()
50MACHINE_RESET_MEMBER(harddriv_state,harddriv)
5451{
5552   /* generic reset */
56   //atarigen_state::machine_reset();
57   m_slapstic_device->slapstic_reset();
53   atarigen_state::machine_reset();
54   slapstic_reset();
5855
5956   /* halt several of the DSPs to start */
6057   if (m_adsp != NULL) m_adsp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
r241749r241750
199196 *
200197 *************************************/
201198
202READ16_MEMBER( harddriv_state::hd68k_a80000_r )
203{
204   return ioport("a80000")->read_safe(0xffff);
205}
206
207199READ16_MEMBER( harddriv_state::hd68k_port0_r )
208200{
209201   /* port is as follows:
r241749r241750
221213           .....
222214       0x8000 = SW1 #1
223215   */
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;
216   int temp = (ioport("SW1")->read() << 8) | ioport("IN0")->read();
217   if (get_hblank(*m_screen)) temp ^= 0x0002;
228218   temp ^= 0x0018;     /* both EOCs always high for now */
229219   return temp;
230220}
r241749r241750
232222
233223READ16_MEMBER( harddriv_state::hdc68k_port1_r )
234224{
235   UINT16 result = ioport("a80000")->read_safe(0xffff);
225   UINT16 result = ioport("a80000")->read();
236226   UINT16 diff = result ^ m_hdc68k_last_port1;
237227
238228   /* if a new shifter position is selected, use it */
r241749r241750
260250
261251READ16_MEMBER( harddriv_state::hda68k_port1_r )
262252{
263   UINT16 result = ioport("a80000")->read_safe(0xffff);
253   UINT16 result = ioport("a80000")->read();
264254
265255   /* merge in the wheel edge latch bit */
266256   if (m_hdc68k_wheel_edge)
r241749r241750
273263READ16_MEMBER( harddriv_state::hdc68k_wheel_r )
274264{
275265   /* grab the new wheel value and upconvert to 12 bits */
276   UINT16 new_wheel = ioport("12BADC0")->read_safe(0xffff) << 4;
266   UINT16 new_wheel = ioport("12BADC0")->read() << 4;
277267
278268   /* hack to display the wheel position */
279269   if (space.machine().input().code_pressed(KEYCODE_LSHIFT))
r241749r241750
327317   if (m_adc_control & 0x08)
328318   {
329319      m_adc8_select = m_adc_control & 0x07;
330      m_adc8_data = ioport(adc8names[m_adc8_select])->read_safe(0xffff);
320      m_adc8_data = ioport(adc8names[m_adc8_select])->read();
331321   }
332322
333323   /* handle a write to the 12-bit ADC address select */
334324   if (m_adc_control & 0x40)
335325   {
336326      m_adc12_select = (m_adc_control >> 4) & 0x03;
337      m_adc12_data = ioport(adc12names[m_adc12_select])->read_safe(0xffff) << 4;
327      m_adc12_data = space.machine().root_device().ioport(adc12names[m_adc12_select])->read() << 4;
338328   }
339329
340330   /* bit 7 selects which byte of the 12 bit data to read */
r241749r241750
495485      }
496486   }
497487
498   screen_device &scr = m_gsp->screen();
499
500488   /* detect changes to HEBLNK and HSBLNK and force an update before they change */
501489   if ((offset == REG_HEBLNK || offset == REG_HSBLNK) && data != m_gsp->io_register_r(space, offset, 0xffff))
502      scr.update_partial(scr.vpos() - 1);
490      m_screen->update_partial(m_screen->vpos() - 1);
503491
504492   m_gsp->io_register_w(space, offset, data, mem_mask);
505493}
r241749r241750
15141502   switch (offset & 7)
15151503   {
15161504      case 0: /* DSPRESTN */
1517         if (m_dsp32) m_dsp32->set_input_line(INPUT_LINE_RESET, val ? CLEAR_LINE : ASSERT_LINE);
1505         m_dsp32->set_input_line(INPUT_LINE_RESET, val ? CLEAR_LINE : ASSERT_LINE);
15181506         break;
15191507
15201508      case 1: /* DSPZN */
1521         if (m_dsp32) m_dsp32->set_input_line(INPUT_LINE_HALT, val ? CLEAR_LINE : ASSERT_LINE);
1509         m_dsp32->set_input_line(INPUT_LINE_HALT, val ? CLEAR_LINE : ASSERT_LINE);
15221510         break;
15231511
15241512      case 2: /* ZW1 */
r241749r241750
15821570WRITE16_MEMBER( harddriv_state::hd68k_dsk_dsp32_w )
15831571{
15841572   m_dsk_pio_access = TRUE;
1585   if (m_dsp32) m_dsp32->pio_w(offset, data);
1573   m_dsp32->pio_w(offset, data);
15861574   m_dsk_pio_access = FALSE;
15871575}
15881576
r241749r241750
15911579{
15921580   UINT16 result;
15931581   m_dsk_pio_access = TRUE;
1594   if (m_dsp32) result = m_dsp32->pio_r(offset);
1595   else result = 0x00;
1596
1582   result = m_dsp32->pio_r(offset);
15971583   m_dsk_pio_access = FALSE;
15981584   return result;
15991585}
r241749r241750
16851671
16861672WRITE16_MEMBER( harddriv_state::rd68k_slapstic_w )
16871673{
1688   m_slapstic_device->slapstic_tweak(space, offset & 0x3fff);
1674   slapstic_tweak(space, offset & 0x3fff);
16891675}
16901676
16911677
16921678READ16_MEMBER( harddriv_state::rd68k_slapstic_r )
16931679{
1694   int bank = m_slapstic_device->slapstic_tweak(space, offset & 0x3fff) * 0x4000;
1680   int bank = slapstic_tweak(space, offset & 0x3fff) * 0x4000;
16951681   return m_m68k_slapstic_base[bank + (offset & 0x3fff)];
16961682}
16971683
trunk/src/mame/machine/n64.c
r241749r241750
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   }
270274}
271275
272276// Memory Interface (MI)
r241749r241750
308312         break;
309313   }
310314
315   //printf("mi_reg_r %08x = %08x\n", offset * 4, ret); fflush(stdout);
311316   return ret;
312317}
313318
314319WRITE32_MEMBER( n64_periphs::mi_reg_w )
315320{
321   //printf("mi_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); fflush(stdout);
316322   switch (offset)
317323   {
318324      case 0x00/4:        // MI_INIT_MODE_REG
r241749r241750
403409{
404410   if (mi_intr_mask & mi_interrupt)
405411   {
412      //printf("Asserting IRQ, %02x : %02x\n", mi_intr_mask, mi_interrupt); fflush(stdout);
406413      machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
407414   }
408415   else
409416   {
417      //printf("Deasserting IRQ, %02x : %02x\n", mi_intr_mask, mi_interrupt); fflush(stdout);
410418      machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
411419   }
412420}
r241749r241750
458466      case 0x0014/4:
459467         for(i = 0x20; i < (0x20 + data); i++)
460468         {
469            //printf( "%c", is64_buffer[i] );
461470            if(is64_buffer[i] == 0x0a)
462471            {
463               printf( "%c", 0x0d );
472               //printf( "%c", 0x0d );
464473            }
465474            is64_buffer[i] = 0;
466475         }
r241749r241750
502511
503512READ32_MEMBER( n64_periphs::rdram_reg_r )
504513{
514   //printf("rdram_reg_r %08x = %08x\n", offset * 4, rdram_regs[offset]); fflush(stdout);
505515   if(offset > 0x24/4)
506516   {
507517      logerror("rdram_reg_r: %08X, %08X at %08X\n", offset, mem_mask, maincpu->safe_pc());
r241749r241750
512522
513523WRITE32_MEMBER( n64_periphs::rdram_reg_w )
514524{
525   //printf("rdram_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); fflush(stdout);
515526   if(offset > 0x24/4)
516527   {
517528      logerror("rdram_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, maincpu->safe_pc());
r241749r241750
531542      length = (length + 7) & ~7;
532543   }
533544
545   //printf("Length %08x Skip %08x Count %08x\n", length, sp_dma_skip, sp_dma_count); fflush(stdout);
534546   if (sp_mem_addr & 0x3)
535547   {
536548      sp_mem_addr = sp_mem_addr & ~3;
r241749r241750
542554
543555   if ((sp_mem_addr & 0xfff) + (length) > 0x1000)
544556   {
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);
545559      length = 0x1000 - (sp_mem_addr & 0xfff);
546560   }
547561
r241749r241750
588602
589603WRITE32_MEMBER(n64_periphs::sp_set_status)
590604{
605   //printf("sp_set_status: %08x\n", data);
591606   if (data & 0x1)
592607   {
593608      rspcpu->execute().set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
r241749r241750
623638         break;
624639
625640      case 0x10/4:        // SP_STATUS_REG
641         //machine().scheduler().synchronize();
642         //machine().scheduler().boost_interleave(attotime::from_msec(1), attotime::from_msec(m));
626643         ret = rspcpu->state().state_int(RSP_SR);
627644         break;
628645
r241749r241750
635652         break;
636653
637654      case 0x1c/4:        // SP_SEMAPHORE_REG
655         //machine().scheduler().boost_interleave(attotime::from_usec(1), attotime::from_usec(1));
638656         machine().device("maincpu")->execute().yield();
639657         if( sp_semaphore )
640658         {
r241749r241750
642660         }
643661         else
644662         {
663            //printf("Semaphore is now acquired, returning 0\n");
645664            sp_semaphore = 1;
646665            ret = 0;
647666         }
r241749r241750
699718         break;
700719   }
701720
721   //printf("%08x sp_reg_r %08x = %08x\n", (UINT32)maincpu->state().state_int(MIPS3_PC), offset * 4, ret); fflush(stdout);
702722   return ret;
703723}
704724
705725
706726WRITE32_MEMBER(n64_periphs::sp_reg_w )
707727{
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
708730   if ((offset & 0x10000) == 0)
709731   {
710732      switch (offset & 0xffff)
r241749r241750
736758            UINT32 oldstatus = rspcpu->state().state_int(RSP_SR);
737759            UINT32 newstatus = oldstatus;
738760
761            // printf( "RSP_STATUS_REG Write; %08x\n", data );
739762            if (data & 0x00000001)      // clear halt
740763            {
741764               rspcpu->execute().set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
742765               newstatus &= ~RSP_STATUS_HALT;
743               machine().scheduler().abort_timeslice();
744               machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100));
766               //printf("***SP HALT CLR***\n"); fflush(stdout);
745767            }
746768            if (data & 0x00000002)      // set halt
747769            {
748770               rspcpu->execute().set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
749771               newstatus |= RSP_STATUS_HALT;
772               //printf("***SP HALT SET***\n"); fflush(stdout);
750773            }
751774            if (data & 0x00000004)
752775            {
753776               newstatus &= ~RSP_STATUS_BROKE;
777               //printf("***SP BROKE CLR***\n"); fflush(stdout);
754778            }
755779            if (data & 0x00000008)      // clear interrupt
756780            {
781               //printf("***SP INT CLR***\n"); fflush(stdout);
757782               clear_rcp_interrupt(SP_INTERRUPT);
758783            }
759784            if (data & 0x00000010)      // set interrupt
760785            {
786               //printf("***SP INT SET***\n"); fflush(stdout);
761787               signal_rcp_interrupt(SP_INTERRUPT);
762788            }
763789            if (data & 0x00000020)
764790            {
765791               newstatus &= ~RSP_STATUS_SSTEP;
792               //printf("***SP SSTEP CLR***\n"); fflush(stdout);
766793            }
767794            if (data & 0x00000040)
768795            {
769796               newstatus |= RSP_STATUS_SSTEP;  // set single step
797               //printf("***SP SSTEP SET***\n"); fflush(stdout);
770798               if(!(oldstatus & (RSP_STATUS_BROKE | RSP_STATUS_HALT)))
771799               {
772800                  rspcpu->state().set_state_int(RSP_STEPCNT, 1 );
r241749r241750
776804            if (data & 0x00000080)
777805            {
778806               newstatus &= ~RSP_STATUS_INTR_BREAK;    // clear interrupt on break
807               //printf("***SP INTRBRK CLR***\n"); fflush(stdout);
779808            }
780809            if (data & 0x00000100)
781810            {
782811               newstatus |= RSP_STATUS_INTR_BREAK;     // set interrupt on break
812               //printf("***SP INTRBRK SET***\n"); fflush(stdout);
783813            }
784814            if (data & 0x00000200)
785815            {
786816               newstatus &= ~RSP_STATUS_SIGNAL0;       // clear signal 0
817               //printf("***SP YIELD CLR***\n"); fflush(stdout);
787818            }
788819            if (data & 0x00000400)
789820            {
790821               newstatus |= RSP_STATUS_SIGNAL0;        // set signal 0
822               //printf("***SP YIELD SET***\n"); fflush(stdout);
791823            }
792824            if (data & 0x00000800)
793825            {
794826               newstatus &= ~RSP_STATUS_SIGNAL1;       // clear signal 1
827               //printf("***SP YIELDED CLR***\n"); fflush(stdout);
795828            }
796829            if (data & 0x00001000)
797830            {
798831               newstatus |= RSP_STATUS_SIGNAL1;        // set signal 1
832               //printf("***SP YIELDED SET***\n"); fflush(stdout);
799833            }
800834            if (data & 0x00002000)
801835            {
802836               newstatus &= ~RSP_STATUS_SIGNAL2 ;      // clear signal 2
837               //printf("***SP TASKDONE CLR***\n"); fflush(stdout);
803838            }
804839            if (data & 0x00004000)
805840            {
806841               newstatus |= RSP_STATUS_SIGNAL2;        // set signal 2
842               //printf("***SP TASKDONE SET***\n"); fflush(stdout);
807843            }
808844            if (data & 0x00008000)
809845            {
810846               newstatus &= ~RSP_STATUS_SIGNAL3;       // clear signal 3
847               //printf("***SP SIG3 CLR***\n"); fflush(stdout);
811848            }
812849            if (data & 0x00010000)
813850            {
814851               newstatus |= RSP_STATUS_SIGNAL3;        // set signal 3
852               //printf("***SP SIG3 SET***\n"); fflush(stdout);
815853            }
816854            if (data & 0x00020000)
817855            {
818856               newstatus &= ~RSP_STATUS_SIGNAL4;       // clear signal 4
857               //printf("***SP SIG4 CLR***\n"); fflush(stdout);
819858            }
820859            if (data & 0x00040000)
821860            {
822861               newstatus |= RSP_STATUS_SIGNAL4;        // set signal 4
862               //printf("***SP SIG4 SET***\n"); fflush(stdout);
823863            }
824864            if (data & 0x00080000)
825865            {
826866               newstatus &= ~RSP_STATUS_SIGNAL5;       // clear signal 5
867               //printf("***SP SIG5 CLR***\n"); fflush(stdout);
827868            }
828869            if (data & 0x00100000)
829870            {
830871               newstatus |= RSP_STATUS_SIGNAL5;        // set signal 5
872               //printf("***SP SIG5 SET***\n"); fflush(stdout);
831873            }
832874            if (data & 0x00200000)
833875            {
834876               newstatus &= ~RSP_STATUS_SIGNAL6;       // clear signal 6
877               //printf("***SP SIG6 CLR***\n"); fflush(stdout);
835878            }
836879            if (data & 0x00400000)
837880            {
838881               newstatus |= RSP_STATUS_SIGNAL6;        // set signal 6
882               //printf("***SP SIG6 SET***\n"); fflush(stdout);
839883            }
840884            if (data & 0x00800000)
841885            {
842886               newstatus &= ~RSP_STATUS_SIGNAL7;       // clear signal 7
887               //printf("***SP SIG7 CLR***\n"); fflush(stdout);
843888            }
844889            if (data & 0x01000000)
845890            {
846891               newstatus |= RSP_STATUS_SIGNAL7;        // set signal 7
892               //printf("***SP SIG7 SET***\n"); fflush(stdout);
847893            }
848894            rspcpu->state().set_state_int(RSP_SR, newstatus);
849895            break;
850896         }
851897
852898         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");
853901            if(data == 0)
854902            {
855903               sp_semaphore = 0;
r241749r241750
928976         break;
929977   }
930978
979   //printf("%08x dp_reg_r %08x = %08x\n", (UINT32)space.machine().device("rsp")->state().state_int(RSP_PC), offset, ret); fflush(stdout);
931980   return ret;
932981}
933982
r241749r241750
935984{
936985   n64_state *state = space.machine().driver_data<n64_state>();
937986
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);
938988   switch (offset)
939989   {
940990      case 0x00/4:        // DP_START_REG
r241749r241750
943993         break;
944994
945995      case 0x04/4:        // DP_END_REG
996         //printf("dp_end_reg %08x\n", data);
946997         state->m_rdp->SetEndReg(data);
947998         g_profiler.start(PROFILER_USER1);
948999         state->m_rdp->ProcessList();
r241749r241750
9911042   int y_end = (vi_vstart & 0x000003ff) / 2;
9921043   int width = ((vi_xscale & 0x00000fff) * (x_end - x_start)) / 0x400;
9931044   int height = ((vi_yscale & 0x00000fff) * (y_end - y_start)) / 0x400;
994
1045   //printf("%04x | %02x | ", vi_xscale >> 16, vi_burst & 0x000000ff);
9951046   rectangle visarea = m_screen->visible_area();
9961047   attoseconds_t period = m_screen->frame_period().attoseconds;
9971048
r241749r241750
10191070
10201071   visarea.max_x = width - 1;
10211072   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);
10221074   m_screen->configure(width, 525, visarea, period);
10231075}
10241076
r241749r241750
10881140         break;
10891141   }
10901142
1143   //printf("vi_reg_r %08x = %08x\n", offset * 4, ret);
10911144   return ret;
10921145}
10931146
10941147WRITE32_MEMBER( n64_periphs::vi_reg_w )
10951148{
1149   //printf("vi_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask);
10961150   n64_state *state = machine().driver_data<n64_state>();
10971151
10981152   switch (offset)
r241749r241750
13251379         break;
13261380   }
13271381
1382   //printf("ai_reg_r %08x = %08x\n", offset * 4, ret);
13281383   return ret;
13291384}
13301385
13311386WRITE32_MEMBER( n64_periphs::ai_reg_w )
13321387{
1388   //printf("ai_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask);
13331389   switch (offset)
13341390   {
13351391      case 0x00/4:        // AI_DRAM_ADDR_REG
r241749r241750
13521408      case 0x10/4:        // AI_DACRATE_REG
13531409         ai_dacrate = data & 0x3fff;
13541410         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) );
13551412         dmadac_enable(&ai_dac[0], 2, 1);
13561413         break;
13571414
r241749r241750
13981455      cart_addr &= ((machine().root_device().memregion("user2")->bytes() >> 1) - 1);
13991456   }
14001457
1458   //printf("%08x Cart, %08x Dram\n", cart_addr << 1, dram_addr << 1); fflush(stdout);
1459
14011460   if(pi_dma_dir == 1)
14021461   {
14031462      UINT32 dma_length = pi_wr_len + 1;
r241749r241750
14991558         break;
15001559   }
15011560
1561   //printf("pi_reg_r %08x = %08x\n", offset * 4, ret);
15021562   return ret;
15031563}
15041564
15051565WRITE32_MEMBER( n64_periphs::pi_reg_w )
15061566{
1567   //printf("pi_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); fflush(stdout);
15071568   switch (offset)
15081569   {
15091570      case 0x00/4:        // PI_DRAM_ADDR_REG
r241749r241750
15251586         pi_status |= 1;
15261587
15271588         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));
15281590         pi_dma_timer->adjust(dma_period);
15291591         //pi_dma_tick();
15301592         break;
r241749r241750
15371599         pi_status |= 1;
15381600
15391601         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));
15401603         pi_dma_timer->adjust(dma_period);
15411604
15421605         //pi_dma_tick();
r241749r241750
15951658
15961659READ32_MEMBER( n64_periphs::ri_reg_r )
15971660{
1661   //printf("ri_reg_r %08x = %08x\n", offset * 4, ri_regs[offset]);
15981662   if(offset > 0x1c/4)
15991663   {
16001664      logerror("ri_reg_r: %08X, %08X at %08X\n", offset, mem_mask, maincpu->safe_pc());
r241749r241750
16051669
16061670WRITE32_MEMBER( n64_periphs::ri_reg_w )
16071671{
1672   //printf("ri_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask);
16081673   if(offset > 0x1c/4)
16091674   {
16101675      logerror("ri_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, maincpu->safe_pc());
r241749r241750
16671732      case 0x00:      // Read status
16681733      case 0xff:      // Reset
16691734      {
1735         if(command == 0)
1736         {
1737            //printf("Read status\n");
1738         }
1739         else
1740         {
1741            //printf("Reset\n");
1742         }
16701743         switch (channel)
16711744         {
16721745            case 0:
16731746            case 1:
16741747            {
1675               // Read status
1748               //printf("Read controller %d status\n", channel + 1);
16761749               rdata[0] = 0x05;
16771750               rdata[1] = 0x00;
16781751               rdata[2] = 0x01;
r241749r241750
16811754            case 2:
16821755            case 3:
16831756            {
1684               // Read status (unconnected)
1757               //printf("Read controller %d status (NC)\n", channel + 1);
1758               // not connected
16851759               return 1;
16861760            }
16871761            case 4:
16881762            {
1689               // Read EEPROM status
1763               //printf("Read EEPROM status\n");
16901764               rdata[0] = 0x00;
16911765               rdata[1] = 0x80;
16921766               rdata[2] = 0x00;
r241749r241750
17171791
17181792         switch (channel)
17191793         {
1720            case 0: // P1 Inputs
1721            case 1: // P2 Inputs
1794            case 0: //p1 inputs
1795            case 1: //p2 inputs
17221796            {
1797               //printf("Read p%d inputs\n", channel + 1);
17231798               buttons = machine().root_device().ioport(portnames[(channel*3) + 0])->read();
17241799               x = machine().root_device().ioport(portnames[(channel*3) + 1])->read() - 128;
17251800               y = machine().root_device().ioport(portnames[(channel*3) + 2])->read() - 128;
r241749r241750
17331808            case 2:
17341809            case 3:
17351810            {
1736               // P3/P4 Inputs (not connected)
1811               //printf("Controller %d not connected\n", channel + 1);
1812               // not connected
17371813               return 1;
17381814            }
17391815         }
r241749r241750
17481824         address = (sdata[1] << 8) | (sdata[2]);
17491825         address &= ~0x1f;
17501826
1827         ////printf("Read mempak at %04x\n", address);
1828
17511829         if(address == 0x8000)
17521830         {
17531831            for(int i = 0; i < rlength-1; i++)
r241749r241750
17761854         UINT32 address = (sdata[1] << 8) | (sdata[2]);
17771855         address &= ~0x1f;
17781856
1779         if (address < 0x8000)
1857         ////printf("Write mempak at %04x\n", address);
1858         if (address >= 0x8000)
17801859         {
1860         }
1861         else
1862         {
17811863            for(int i = 3; i < slength; i++)
17821864            {
17831865               m_save_data.mempak[channel & 1][address++] = sdata[i];
r241749r241750
18031885
18041886         UINT16 block_offset = sdata[1] * 8;
18051887
1888         //printf("Read EEPROM at %04x\n", block_offset);
1889
18061890         for(int i=0; i < 8; i++)
18071891         {
18081892            rdata[i] = m_save_data.eeprom[block_offset+i];
r241749r241750
18251909
18261910         UINT16 block_offset = sdata[1] * 8;
18271911
1912         //printf("Write EEPROM at %04x\n", block_offset);
1913
18281914         for(int i = 0; i < 8; i++)
18291915         {
18301916            m_save_data.eeprom[block_offset+i] = sdata[2+i];
r241749r241750
18351921
18361922      case 0x06:      // Read RTC Status
18371923      {
1924         //printf("Read RTC Status\n");
18381925         rdata[0] = 0x00;
18391926         rdata[1] = 0x10;
18401927         rdata[2] = 0x00;
r241749r241750
18461933         switch(sdata[1])
18471934         {
18481935            case 0:
1936               //printf("Read RTC Block Header\n");
18491937               rdata[0] = 0x00;
18501938               rdata[1] = 0x02;
18511939               rdata[8] = 0x00;
r241749r241750
18661954               rdata[6] = convert_to_bcd(systime.local_time.year % 100); // Year
18671955               rdata[7] = convert_to_bcd(systime.local_time.year / 100); // Century
18681956               rdata[8] = 0x00;
1957               //printf("Read RTC Time\n");
18691958               return 0;
18701959         }
18711960         return 1;
r241749r241750
18931982      while(cmd_ptr < 0x3f && !end)
18941983      {
18951984         INT8 bytes_to_send = (INT8)pif_cmd[cmd_ptr++];
1985         //printf("bytes to send: 0x%02x\n", bytes_to_send);
18961986
18971987         if (bytes_to_send == -2)
18981988         {
18991989            end = 1;
1990            //printf("end\n");
19001991         }
19011992         else if (bytes_to_send < 0)
19021993         {
1994            //printf("do nothing\n");
19031995            // do nothing
19041996         }
19051997         else
r241749r241750
19102002               UINT8 send_buffer[0x40];
19112003
19122004               INT8 bytes_to_recv = pif_cmd[cmd_ptr++];
2005               //printf("bytes to receive: 0x%02x\n", bytes_to_recv);
19132006
19142007               if (bytes_to_recv == -2)
19152008               {
r241749r241750
19222015               }
19232016
19242017               int res = pif_channel_handle_command(channel, bytes_to_send, send_buffer, bytes_to_recv, recv_buffer);
2018               //printf("result: %d\n", res);
19252019
19262020               if (res == 0)
19272021               {
2022                  //printf("cmd_ptr (%d) + bytes_to_recv (%d) = %d\n", cmd_ptr, bytes_to_recv, cmd_ptr + bytes_to_recv);
19282023                  if (cmd_ptr + bytes_to_recv > 0x3f)
19292024                  {
19302025                     fatalerror("cmd_ptr overflow\n");
r241749r241750
20152110         ret = si_status;
20162111   }
20172112
2113   //printf("si_reg_r %08x = %08x\n", offset * 4, ret); fflush(stdout);
20182114   return ret;
20192115}
20202116
20212117WRITE32_MEMBER( n64_periphs::si_reg_w )
20222118{
2119   //printf("si_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); fflush(stdout);
20232120   switch (offset)
20242121   {
20252122      case 0x00/4:        // SI_DRAM_ADDR_REG
r241749r241750
22992396      return;
23002397
23012398   device_image_interface *image = dynamic_cast<device_image_interface *>(periphs->m_nvram_image);
2302
2399   //printf("Saving stuff\n");
23032400   UINT8 data[0x30800];
23042401   memcpy(data, n64_sram, 0x20000);
23052402   memcpy(data + 0x20000, periphs->m_save_data.eeprom, 0x800);
trunk/src/mame/machine/naomim2.c
r241749r241750
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__),
109   m_cryptdevice(*this, "segam2crypt")
108   : naomi_board(mconfig, NAOMI_M2_BOARD, "Sega NAOMI M2 BOARD", tag, owner, clock, "naomi_m2_board", __FILE__)
110109{
111110   key_tag = 0;
112111}
r241749r241750
121120{
122121   naomi_board::device_start();
123122
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
124129   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);
125133
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);
126138   save_item(NAME(rom_cur_address));
127   save_pointer(NAME(ram), RAM_SIZE);
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));
128147}
129148
130149void naomi_m2_board::device_reset()
r241749r241750
132151   naomi_board::device_reset();
133152
134153   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);
135157
136158   rom_cur_address = 0;
159   prot_cur_address = 0;
160   subkey = 0;
161   dec_hist = 0;
162   dec_header = 0;
163   enc_ready = false;
137164
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
165   buffer_pos = 0;
166   line_buffer_pos = 0;
167   line_buffer_size = 0;
168   buffer_bit = 0;
144169}
145170
146171void naomi_m2_board::board_setup_address(UINT32 address, bool is_dma)
r241749r241750
150175
151176void naomi_m2_board::board_get_buffer(UINT8 *&base, UINT32 &limit)
152177{
153
154178   if(rom_cur_address & 0x40000000) {
155179      if(rom_cur_address == 0x4001fffe) {
156         m_cryptdevice->do_decrypt(base);
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         }
157193         limit = 2;
158194
159195      } else
r241749r241750
178214
179215void naomi_m2_board::board_write(offs_t offset, UINT16 data)
180216{
181
182
183217   if(offset & 0x40000000) {
184218      if((offset & 0x0f000000) == 0x02000000) {
185219         offset &= RAM_SIZE-1;
r241749r241750
188222         return;
189223      }
190224      switch(offset & 0x1fffffff) {
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;
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;
195228      }
196229   }
197230   throw emu_fatalerror("NAOMIM2: unhandled board write %08x, %04x\n", offset, data);
198231}
199232
200UINT16 naomi_m2_board::read_callback(UINT32 addr)
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)
201626{
202   if ((addr & 0xffff0000) == 0x01000000) {
203      int base = 2*(addr & 0x7fff);
204      return ram[base+1] | (ram[base] << 8);
627   int k,m;
628   int aux;
629   int result=0;
205630
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;
206642   }
207   else {
208      const UINT8 *base = m_region->base() + 2*addr;
209      return base[1] | (base[0] << 8);
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      }
210674   }
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;
211759}
212760
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
761UINT16 naomi_m2_board::get_decrypted_16()
762{
763   UINT16 enc;
217764
218machine_config_constructor naomi_m2_board::device_mconfig_additions() const
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()
219782{
220   return MACHINE_CONFIG_NAME( naomim2 );
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;
221793}
222794
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
r241749r241750
22#define _NAOMIM2_H_
33
44#include "naomibd.h"
5#include "315-5881_crypt.h"
65
76#define MCFG_NAOMI_M2_BOARD_ADD(_tag, _key_tag, _eeprom_tag, _actel_tag, _irq_cb) \
87   MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_M2_BOARD, _eeprom_tag, _actel_tag, _irq_cb) \
r241749r241750
1211{
1312public:
1413   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;
1814
1915   static void static_set_tags(device_t &device, const char *_key_tag);
20   UINT16 read_callback(UINT32 addr);
2116
2217protected:
2318   virtual void device_start();
2419   virtual void device_reset();
25   virtual machine_config_constructor device_mconfig_additions() const;
2620
2721   virtual void board_setup_address(UINT32 address, bool is_dma);
2822   virtual void board_get_buffer(UINT8 *&base, UINT32 &limit);
r241749r241750
3024   virtual void board_write(offs_t offset, UINT16 data);
3125
3226private:
27   enum {
28      RAM_SIZE = 65536, BUFFER_SIZE = 32768, LINE_SIZE = 512,
29      FLAG_COMPRESSED = 0x10000, FLAG_LINE_SIZE_512 = 0x20000
30   };
3331
34
3532   const char *key_tag;
33   UINT32 key;
3634
37   
38   required_device<sega_315_5881_crypt_device> m_cryptdevice;
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();
3969};
4070
4171extern const device_type NAOMI_M2_BOARD;
trunk/src/mame/machine/pgmprot_igs025_igs012.c
r241749r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
180180
181181*************************************************************************/
182182
183
183#include "emu.h"
184#include "cpu/m6800/m6800.h"
184185#include "includes/slapstic.h"
186#include "cpu/m68000/m68000.h"
185187
186188
187extern const device_type SLAPSTIC = &device_creator<atari_slapstic_device>;
189/*************************************
190 *
191 *  Debugging
192 *
193 *************************************/
188194
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}
195#define LOG_SLAPSTIC    (0)
233196
234197
235198
236void atari_slapstic_device::device_start()
199/*************************************
200 *
201 *  Structure of slapstic params
202 *
203 *************************************/
204
205struct mask_value
237206{
207   int mask, value;
208};
238209
239}
240210
241void atari_slapstic_device::device_reset()
211struct slapstic_data
242212{
213   int bankstart;
214   int bank[4];
243215
244}
216   struct mask_value alt1;
217   struct mask_value alt2;
218   struct mask_value alt3;
219   struct mask_value alt4;
220   int altshift;
245221
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
246238/*************************************
247239 *
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 *
248288 *  Slapstic definitions
249289 *
250290 *************************************/
r241749r241750
739779
740780
741781
782/*************************************
783 *
784 *  Statics
785 *
786 *************************************/
742787
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
743804/*************************************
744805 *
745806 *  Initialization
746807 *
747808 *************************************/
748809
749void atari_slapstic_device::slapstic_init(running_machine &machine, int chip)
810void slapstic_init(running_machine &machine, int chip)
750811{
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   }
812   device_type cputype = machine.device("maincpu")->type();
758813
759814   /* only a small number of chips are known to exist */
760815   if (chip < 101 || chip > 118)
r241749r241750
768823   /* reset the chip */
769824   slapstic_reset();
770825
826   /* see if we're 68k or 6502/6809 based */
827   access_68k = (cputype == M68000 || cputype == M68010);
771828
772829   /* save state */
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));
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);
779836}
780837
781838
782void atari_slapstic_device::slapstic_reset(void)
839void slapstic_reset(void)
783840{
784841   /* reset the chip */
785842   state = DISABLED;
r241749r241750
796853 *
797854 *************************************/
798855
799int atari_slapstic_device::slapstic_bank(void)
856int slapstic_bank(void)
800857{
801858   return current_bank;
802859}
r241749r241750
809866 *
810867 *************************************/
811868
812int atari_slapstic_device::alt2_kludge(address_space &space, offs_t offset)
869static int alt2_kludge(address_space &space, offs_t offset)
813870{
814871   /* Of the 3 alternate addresses, only the middle one needs to actually hit
815872      in the slapstic region; the first and third ones can be anywhere in the
r241749r241750
856913 *
857914 *************************************/
858915
859int atari_slapstic_device::slapstic_tweak(address_space &space, offs_t offset)
916int slapstic_tweak(address_space &space, offs_t offset)
860917{
861918   /* reset is universal */
862919   if (offset == 0x0000)
r241749r241750
10801137 *
10811138 *************************************/
10821139
1083void atari_slapstic_device::slapstic_log(running_machine &machine, offs_t offset)
1140static void slapstic_log(running_machine &machine, offs_t offset)
10841141{
10851142   static attotime last_time;
10861143
trunk/src/mame/machine/stvprot.c
r241749r241750
572572*
573573*************************************/
574574
575// the naomi hookup of 315-5881 reads 16-bits at a time, here we seem to read 32?
576
577575READ32_MEMBER( stv_state::common_prot_r )
578576{
579577   UINT32 *ROM = (UINT32 *)space.machine().root_device().memregion("abus")->base();
r241749r241750
590588
591589         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);
592590
593         //UINT16 res = m_cryptdevice->do_decrypt(base);
594
595591         m_ctrl_index += 4;
596592         return retdata;
597593
r241749r241750
606602}
607603
608604
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}
614605
606
615607WRITE32_MEMBER ( stv_state::common_prot_w )
616608{
617609   COMBINE_DATA(&m_a_bus[offset]);
r241749r241750
624616   else if(offset == 2)
625617   {
626618      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
631619   }
632620   else if(offset == 3)
633621   {
634622      COMBINE_DATA(&m_abus_protkey);
635
636      m_cryptdevice->set_subkey(m_abus_protkey>>16);
637
638
639623      int a_bus_vector;
640624      a_bus_vector = m_abus_prot_addr >> 16;
641625      a_bus_vector|= (m_abus_prot_addr & 0xffff) << 16;
r241749r241750
671655{
672656   install_common_protection();
673657   m_prot_readback = astrass_prot_read_callback;
674//   m_cryptdevice->set_key(0x00000000);
675658}
676659
677660void stv_state::install_ffreveng_protection()
trunk/src/mame/machine/zndip.h
r241749r241750
4242
4343   int m_select;
4444   int m_clock;
45   int m_datain;
4546
4647   UINT8 m_bit;
4748   emu_timer *m_dip_timer;
trunk/src/mame/mame.lst
r241749r241750
441441bigkong         // bootleg
442442monkeyd         // bootleg
443443dking           // Crazy Kong Bootleg
444ckongdks      // Spanish Crazy Kong bootleg
445444ckongpt2        // (c) 1981 Falcon
446445ckongpt2a       // (c) 1981 Falcon
447446ckongpt2j       // (c) 1981 Falcon
r241749r241750
14761475gunchamp        // (c) 1980 Model Racing
14771476gunchamps       // (c) 1980 Model Racing (sshot.c)
14781477spaceatt        // (c) 1978 Video Games GMBH
1479galmonst      // (c) Laguna S.A.
14801478spaceat2        // (c) 1980 Zenitone-Microsec Ltd
14811479spacecom        // bootleg
14821480sinvzen         // Zenitone-Microsec Ltd
r241749r241750
17981796youjyudn        // (c) 1986 (Japan)
17991797
18001798vigilant        // (c) 1988 (World)
1801vigilantb      // (c) 1988 (World)
18021799vigilant1       // (c) 1988 (World)
18031800vigilantu       // (c) 1988 (US)
18041801vigilantu2      // (c) 1988 (US)
r241749r241750
25232520pbobble3u       // 1996.11 E29 (c) 1996 Taito Corporation (US)
25242521pbobble3j       // 1996.11 E29 (c) 1996 Taito Corporation (Japan)
25252522arkretrn        // 1997.03 E36 (c) 1997 Taito Corporation (World)
2526arkretrnu       // 1997.03 E36 (c) 1997 Taito Corporation (US)
25272523arkretrnj       // 1997.03 E36 (c) 1997 Taito Corporation (Japan)
25282524kirameki        // 1997.09 E44 (c) 1997 Taito Corporation (Japan)
25292525puchicar        // 1997.?? E46 (c) 1997 Taito Corporation (World)
r241749r241750
27472743batriderja      // (c) 1998 Raizing/8ing
27482744batridert       // (c) 1998 Raizing/8ing
27492745bbakraid        // (c) 1999 8ing
2750bbakraidc       // (c) 1999 8ing
27512746bbakraidj       // (c) 1999 8ing
27522747bbakraidja      // (c) 1999 8ing
27532748
r241749r241750
28472842crusherm        // (c) 1999 Takumi
28482843tjumpman        // (c) 1999 Namco
28492844
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
2845mushisam
2846mushisama
2847mushisamb
2848espgal2
2849ibara
2850ibarablk
2851ibarablka
2852mushitam
2853mushitama
2854futari15
2855futari15a
2856futari10
2857futaribl
2858pinkswts
2859pinkswtsa
2860pinkswtsb
2861pinkswtsx
2862deathsml
2863mmpork
2864mmmbanc
2865ddpdfk
2866ddpdfk10
2867dsmbl
28742868
28752869deathsm2
28762870
r241749r241750
46904684desertbr        // 1993.?? Desert Breaker (World, FD1094, decrypted)
46914685desertbrj       // 1992.10 Desert Breaker (Japan)
46924686pontoon
4693hamaway
46944687
46954688// System18 Bootlegs
46964689astormbl        // BOOTLEG
r241749r241750
54835476wldrider        // 2001.05 Wild Riders
54845477clubkrte        // 2001.06 Club Kart: European Session
54855478clubkrtd        // 2001.06 Club Kart: European Session (Rev D)
5486clubkrtc        // 2001.?? Club Kart: European Session (Rev C)
54875479beachspi        // 2001.07 Beach Spikers
54885480vf4cart         // 2001.08.02 Virtua Fighter 4 (cartridge)
54895481vf4             // 2001.08.02 Virtua Fighter 4 (GD-ROM)
r241749r241750
55035495initdv2e        // 2002.12 Initial D Arcade Stage Ver. 2 (export)
55045496vf4evo          // 2002.12 Virtua Fighter 4 Evolution Ver.B
55055497clubk2k3        // 2003.?? Club Kart: European Session (2003)
5506clubk2kp        // 2003.?? Club Kart: European Session (2003, prototype)
5498clubk2kf        // 2003.?? Club Kart: European Session (2003, not protected)
55075499initdexpo       // 2002.?? Initial D Arcade Stage (Export)
55085500            // 2002.?? Sega Driving Simulator
55095501            // 2003.03 World Club Champion Football Serie A 2001-2002 Ver.2
r241749r241750
79167908ninjakd2a       // UPL-????? (c) 1987
79177909ninjakd2b       // UPL-????? (c) 1987
79187910rdaction        // UPL-87003?(c) 1987 + World Games license
7919jt104         // hack?
79207911mnight          // UPL-????? (c) 1987 distributed by Kawakus
79217912arkarea         // UPL-87007 (c) 1988 (Arcade TV Game List - P.67, Right, 2 from top)
79227913robokid         // UPL-88013 (c) 1988
r241749r241750
83088299supdrapob       // bootleg
83098300sbagman         // (c) 1984
83108301sbagmans        // (c) 1984 + Stern license
8311botanic         // (c) 1983
8312botanicf      // (c) 1984
8302botanic         // (c) 1985
83138303squaitsa        // (c) 1985
83148304tankbust        // (c) 1985
83158305
r241749r241750
93759365rocktris        // (c) 1994? Yun Sung
93769366magicbub        // (c) Yun Sung
93779367magicbuba       // (c) Yun Sung
9378magicbubb       // (c) Yun Sung
93799368shocking        // (c) 1997 Yun Sung
93809369shockingk       // (c) 1997 Yun Sung
93819370bombkick        // (c) 1998 Yun Sung
r241749r241750
97329721dw2v100x        //
97339722drgw2c          //
97349723drgw2j          //
9735drgw2hk         //
97369724drgw3           // (c) 1998 Dragon World 3
97379725drgw3105        //
97389726drgw3100        //
r241749r241750
98339821// IGS PGM2 Platform
98349822orleg2          // (c) 2007
98359823orleg2o         //
9836orleg2oa      //
98379824kov2nl          // (c) 2008
98389825kov2nlo         //
9839kov2nloa      //
98409826ddpdojh         //
98419827kov3            //
98429828
r241749r241750
1098210968
1098310969// IGT Player's Edge Plus
1098410970peset001        // (c) 1987 IGT - International Game Technology
10985peset004        // (c) 1987 IGT - International Game Technology
1098610971peset038        // (c) 1987 IGT - International Game Technology
10987peivc006        // (c) 1987 IGT - International Game Technology
1098810972pepk1024        // (c) 1987 IGT - International Game Technology
1098910973pepp0002        // (c) 1987 IGT - International Game Technology
1099010974pepp0002a       // (c) 1987 IGT - International Game Technology
r241749r241750
1112811112peip0116        // (c) 1987 IGT - International Game Technology
1112911113peip0118        // (c) 1987 IGT - International Game Technology
1113011114peip0120        // (c) 1987 IGT - International Game Technology
11131pemg0252        // (c) 1994 IGT - International Game Technology
1113211115pebe0014        // (c) 1994 IGT - International Game Technology
11133peke0017        // (c) 1994 IGT - International Game Technology
1113411116peke1012        // (c) 1994 IGT - International Game Technology
1113511117peke1013        // (c) 1994 IGT - International Game Technology
1113611118peps0014        // (c) 1996 IGT - International Game Technology
r241749r241750
2025220234m1cluedob1  //
2025320235m1cluedob1p //
2025420236m1cluedob1h //
20255m1cluedobi2 //
20256m1cluedobi2p //
2025720237m1cluedo4
2025820238m1cluedo4p
2025920239m1cluedo3
r241749r241750
3181031790ufomini
3181131791ufo21
3181231792ufo800
31813westdrm
3181431793
3181531794// VLC Nevada
3181631795nevada
trunk/src/mame/mame.mak
r241749r241750
271271SOUNDS += MOS7360
272272#SOUNDS += ESQPUMP
273273#SOUNDS += VRC6
274SOUNDS += SB0400
275SOUNDS += AC97
276274
277275#-------------------------------------------------
278276# specify available video cores
r241749r241750
292290#VIDEOS += EF9340_1
293291#VIDEOS += EF9345
294292#VIDEOS += GF4500
295VIDEOS += GF6800GT
296293VIDEOS += EPIC12
297294VIDEOS += FIXFREQ
298295VIDEOS += H63484
r241749r241750
439436MACHINES += LDVP931
440437#MACHINES += LH5810
441438MACHINES += LINFLASH
442MACHINES += LPCI
443439#MACHINES += LSI53C810
444440#MACHINES += M68307
445441#MACHINES += M68340
r241749r241750
582578#BUSES += ADAMNET
583579#BUSES += APF
584580#BUSES += ARCADIA
585#BUSES += ASTROCADE
586581#BUSES += BML3
587582#BUSES += BW2
588583#BUSES += C64
r241749r241750
611606BUSES += ISA
612607#BUSES += ISBX
613608#BUSES += KC
614#BUSES += LPCI
615609#BUSES += MACPDS
616610#BUSES += MIDI
617611#BUSES += MEGADRIVE
r241749r241750
622616#BUSES += O2
623617#BUSES += ORICEXT
624618#BUSES += PCE
619#BUSES += PCI
625620#BUSES += PC_JOY
626621#BUSES += PC_KBD
627622#BUSES += PET
628623#BUSES += PLUS4
629#BUSES += PSX_CONTROLLER
630624#BUSES += QL
631625BUSES += RS232
632626#BUSES += S100
r241749r241750
637631#BUSES += SMS_CTRL
638632#BUSES += SMS_EXP
639633#BUSES += SNES
640#BUSES += SPC1000
641634#BUSES += TI99PEB
642635#BUSES += TVC
643636#BUSES += VBOY
r241749r241750
17011694   $(DRIVERS)/hikaru.o \
17021695   $(DRIVERS)/hshavoc.o \
17031696   $(DRIVERS)/kopunch.o $(VIDEO)/kopunch.o \
1704   $(DRIVERS)/lindbergh.o $(MACHINE)/segabb.o \
1697   $(DRIVERS)/lindbergh.o \
17051698   $(MACHINE)/megadriv.o \
17061699   $(DRIVERS)/megadrvb.o \
17071700   $(DRIVERS)/megaplay.o \
r241749r241750
17141707   $(DRIVERS)/naomi.o $(MACHINE)/dc.o $(VIDEO)/powervr2.o $(MACHINE)/naomi.o \
17151708   $(MACHINE)/naomig1.o $(MACHINE)/naomibd.o $(MACHINE)/naomirom.o $(MACHINE)/naomigd.o \
17161709   $(MACHINE)/naomicrypt.o $(MACHINE)/naomim1.o $(MACHINE)/naomim2.o $(MACHINE)/naomim4.o \
1717   $(MACHINE)/315-5881_crypt.o \
17181710   $(MACHINE)/awboard.o \
17191711   $(MACHINE)/mie.o $(MACHINE)/maple-dc.o $(MACHINE)/mapledev.o $(MACHINE)/dc-ctrl.o $(MACHINE)/jvs13551.o \
17201712   $(DRIVERS)/triforce.o \
r241749r241750
17221714   $(DRIVERS)/segac2.o \
17231715   $(DRIVERS)/segae.o \
17241716   $(DRIVERS)/shtzone.o \
1725   $(DRIVERS)/segacoin.o \
17261717   $(DRIVERS)/segag80r.o $(MACHINE)/segag80.o $(AUDIO)/segag80r.o $(VIDEO)/segag80r.o \
17271718   $(DRIVERS)/segag80v.o $(AUDIO)/segag80v.o $(VIDEO)/segag80v.o \
17281719   $(DRIVERS)/segahang.o $(VIDEO)/segahang.o \
r241749r241750
26582649
26592650$(DRIVERS)/grchamp.o:   $(LAYOUT)/grchamp.lh
26602651
2661$(DRIVERS)/harddriv.o:  $(LAYOUT)/racedrivpan.lh
2662
26632652$(DRIVERS)/highvdeo.o:  $(LAYOUT)/fashion.lh
26642653
26652654$(DRIVERS)/hankin.o:    $(LAYOUT)/hankin.lh
r241749r241750
28442833
28452834$(DRIVERS)/segas32.o:   $(LAYOUT)/radr.lh
28462835
2847$(DRIVERS)/segaufo.o:   $(LAYOUT)/newufo.lh \
2848         $(LAYOUT)/ufomini.lh \
2849         $(LAYOUT)/ufo21.lh \
2850         $(LAYOUT)/ufo800.lh
2851
28522836$(DRIVERS)/segaybd.o:   $(LAYOUT)/pdrift.lh
28532837
28542838$(DRIVERS)/sigmab52.o:  $(LAYOUT)/sigmab52.lh
trunk/src/mame/video/atarisy2.c
r241749r241750
208208READ16_MEMBER( atarisy2_state::slapstic_r )
209209{
210210   int result = m_slapstic_base[offset];
211   m_slapstic->slapstic_tweak(space, offset);
211   slapstic_tweak(space, offset);
212212
213213   /* an extra tweak for the next opcode fetch */
214   m_videobank = m_slapstic->slapstic_tweak(space, 0x1234) * 0x1000;
214   m_videobank = slapstic_tweak(space, 0x1234) * 0x1000;
215215   return result;
216216}
217217
218218
219219WRITE16_MEMBER( atarisy2_state::slapstic_w )
220220{
221   m_slapstic->slapstic_tweak(space, offset);
221   slapstic_tweak(space, offset);
222222
223223   /* an extra tweak for the next opcode fetch */
224   m_videobank = m_slapstic->slapstic_tweak(space, 0x1234) * 0x1000;
224   m_videobank = slapstic_tweak(space, 0x1234) * 0x1000;
225225}
226226
227227
trunk/src/mame/video/harddriv.c
r241749r241750
3030 *
3131 *************************************/
3232
33void harddriv_state::init_video()
33VIDEO_START_MEMBER(harddriv_state,harddriv)
3434{
3535   UINT32 *destmask, mask;
3636   int i;
r241749r241750
161161
162162void harddriv_state::update_palette_bank(int newbank)
163163{
164   screen_device &scr = m_gsp->screen();
165
166   scr.update_partial(scr.vpos());
164   m_screen->update_partial(m_screen->vpos());
167165   m_gfx_palettebank = newbank;
168166}
169167
r241749r241750
216214
217215   COMBINE_DATA(&m_gsp_control_hi[offset]);
218216   newword = m_gsp_control_hi[offset];
219   screen_device &scr = m_gsp->screen();
220217
221218   switch (offset & 7)
222219   {
r241749r241750
226223
227224      case 0x01:
228225         data = data & (15 >> m_gsp_multisync);
229         scr.update_partial(scr.vpos() - 1);
226         m_screen->update_partial(m_screen->vpos() - 1);
230227         m_gfx_finescroll = data;
231228         break;
232229
r241749r241750
410407TMS340X0_SCANLINE_IND16_CB_MEMBER(harddriv_state::scanline_driver)
411408{
412409   UINT8 *vram_base = &m_gsp_vram[(params->rowaddr << 12) & m_vram_mask];
413   
414   if (!vram_base) return;
415   
416410   UINT16 *dest = &bitmap.pix16(scanline);
417411   int coladdr = (params->yoffset << 9) + ((params->coladdr & 0xff) << 4) - 15 + (m_gfx_finescroll & 0x0f);
418412   int x;
r241749r241750
428422TMS340X0_SCANLINE_IND16_CB_MEMBER(harddriv_state::scanline_multisync)
429423{
430424   UINT8 *vram_base = &m_gsp_vram[(params->rowaddr << 11) & m_vram_mask];
431
432   if (!vram_base) return;   
433   
434425   UINT16 *dest = &bitmap.pix16(scanline);
435426   int coladdr = (params->yoffset << 9) + ((params->coladdr & 0xff) << 3) - 7 + (m_gfx_finescroll & 0x07);
436427   int x;
trunk/src/mame/video/k007121.c
r241749r241750
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 static RAM for the tilemaps and sprite lists, and two
1164kx4bit DRAMs, presumably as a double frame buffer. The maximum addressable
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
1212ROM is 0x80000 bytes (addressed 16 bits at a time). Tile and sprite data both
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
13come from the same ROM space.
1614Two 256x4 lookup PROMs are also used to increase the color combinations.
1715All tilemap / sprite priority handling is done internally and the chip exports
18167 bits of color code, composed of 2 bits of palette bank, 1 bit indicating tile
r241749r241750
2927outputs:
3028- address lines for tilemap RAM (AX0-AX12)
3129- data lines for tilemap RAM (VO0-VO7)
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)
30- address lines for the small RAM (FA0-FA7)
31- data lines for the small RAM (FD0-FD7)
3532- address lines for the gfx ROMs (R0-R17)
3633- address lines for the tile lookup PROMs (VCF0-VCF3, VCB0-VCB3)
3734- address lines for the sprite lookup PROMs (OCB0-OCB3, OCF0-OCF3)
trunk/src/mame/video/konamigx.c
r241749r241750
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;
279280
281// mirrored K054338 settings
282static int *K054338_shdRGB;
283
284
280285void konamigx_state::konamigx_mixer_init(screen_device &screen, int objdma)
281286{
282287   m_gx_objdma = 0;
r241749r241750
286291   m_gx_shdzbuf = auto_alloc_array(machine(), UINT8, GX_ZBUFSIZE);
287292   gx_objpool = auto_alloc_array(machine(), struct GX_OBJ, GX_MAX_OBJECTS);
288293
289   m_k054338->export_config(&m_K054338_shdRGB);
294   m_k054338->export_config(&K054338_shdRGB);
290295
291296   if (objdma)
292297   {
293      m_gx_spriteram = auto_alloc_array(machine(), UINT16, 0x1000/2);
298      gx_spriteram = auto_alloc_array(machine(), UINT16, 0x1000/2);
294299      m_gx_objdma = 1;
295300   }
296301   else
297      m_k055673->k053247_get_ram(&m_gx_spriteram);
302      m_k055673->k053247_get_ram(&gx_spriteram);
298303
299304   m_palette->set_shadow_dRGB32(3,-80,-80,-80, 0);
300305   m_k054338->invert_alpha(1);
r241749r241750
310315   UINT16* k053247_ram;
311316   m_k055673->k053247_get_ram(&k053247_ram);
312317
313   if (m_gx_objdma && m_gx_spriteram && k053247_ram) memcpy(m_gx_spriteram, k053247_ram, 0x1000);
318   if (m_gx_objdma && gx_spriteram && k053247_ram) memcpy(gx_spriteram, k053247_ram, 0x1000);
314319}
315320
316321void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect,
r241749r241750
411416      // only enable shadows beyond a +/-7 RGB threshold
412417      for (j=0,i=0; i<3; j+=3,i++)
413418      {
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; }
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; }
417422      }
418423
419424      // SHDON specifies layers on which shadows can be projected (see detail on p.65 7.2.8)
r241749r241750
491496   {
492497      int pri = 0;
493498
494      if (!(m_gx_spriteram[offs] & 0x8000)) continue;
499      if (!(gx_spriteram[offs] & 0x8000)) continue;
495500
496      int zcode = m_gx_spriteram[offs] & 0xff;
501      int zcode = gx_spriteram[offs] & 0xff;
497502
498503      // invert z-order when opset_pri is set (see p.51 OPSET PRI)
499504      if (m_k053247_opset & 0x10) zcode = 0xff - zcode;
500505
501      int code  = m_gx_spriteram[offs+1];
502      int color = k = m_gx_spriteram[offs+6];
503      l     = m_gx_spriteram[offs+7];
506      int code  = gx_spriteram[offs+1];
507      int color = k = gx_spriteram[offs+6];
508      l     = gx_spriteram[offs+7];
504509
505510      m_k055673->m_k053247_cb(&code, &color, &pri);
506511
r241749r241750
864869
865870
866871         m_k055673->k053247_draw_single_sprite_gxcore(bitmap, cliprect,
867            m_gx_objzbuf, m_gx_shdzbuf, code, m_gx_spriteram, offs,
872            m_gx_objzbuf, m_gx_shdzbuf, code, gx_spriteram, offs,
868873            color, alpha, drawmode, zcode, pri,
869874            /* non-gx only */
870875            0,0,NULL,NULL,0
r241749r241750
922927   SET_TILE_INFO_MEMBER(0, tileno, colour, TILE_FLIPYX(flip));
923928}
924929
930static int konamigx_type3_psac2_actual_bank;
931//int konamigx_type3_psac2_actual_last_bank = 0;
925932
926933WRITE32_MEMBER(konamigx_state::konamigx_type3_psac2_bank_w)
927934{
928935   // other bits are used for something...
929936
930937   COMBINE_DATA(&m_konamigx_type3_psac2_bank[offset]);
931   m_konamigx_type3_psac2_actual_bank = (m_konamigx_type3_psac2_bank[0] & 0x10000000) >> 28;
938   konamigx_type3_psac2_actual_bank = (m_konamigx_type3_psac2_bank[0] & 0x10000000) >> 28;
932939
933940   /* handle this by creating 2 roz tilemaps instead, otherwise performance dies completely on dual screen mode
934   if (m_konamigx_type3_psac2_actual_bank!=m_konamigx_type3_psac2_actual_last_bank)
941   if (konamigx_type3_psac2_actual_bank!=konamigx_type3_psac2_actual_last_bank)
935942   {
936943       m_gx_psac_tilemap->mark_all_dirty();
937       m_konamigx_type3_psac2_actual_last_bank = m_konamigx_type3_psac2_actual_bank;
944       konamigx_type3_psac2_actual_last_bank = konamigx_type3_psac2_actual_bank;
938945   }
939946   */
940947}
r241749r241750
949956
950957   int base_index = tile_index;
951958
952//  if (m_konamigx_type3_psac2_actual_bank)
959//  if (konamigx_type3_psac2_actual_bank)
953960//      base_index+=0x20000/2;
954961
955962
r241749r241750
970977
971978   int base_index = tile_index;
972979
973//  if (m_konamigx_type3_psac2_actual_bank)
980//  if (konamigx_type3_psac2_actual_bank)
974981//      base_index+=0x20000/2;
975982
976983
r241749r241750
14251432      temprect = cliprect;
14261433      temprect.max_x = cliprect.min_x+320;
14271434
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
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
14291436      else K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap, 0,0,0); // soccerss playfield
14301437
14311438
trunk/src/mame/video/konamiic.txt
r241749r241750
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 static RAM for the tilemaps and sprite lists, and two
21564kx4bit DRAMs, presumably as a double frame buffer. The maximum addressable
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
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.
r241749r241750
234234outputs:
235235- address lines for tilemap RAM (AX0-AX12)
236236- data lines for tilemap RAM (VO0-VO7)
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)
237- address lines for the small RAM (FA0-FA7)
238- data lines for the small RAM (FD0-FD7)
240239- address lines for the gfx ROMs (R0-R15)
241240- address lines for the tile lookup PROMs (VCF0-VCF3, VCB0-VCB3)
242241- address lines for the sprite lookup PROMs (OCB0-OCB3, OCF0-OCF3)
trunk/src/mame/video/psychic5.c
r241749r241750
1010#include "video/jalblend.h"
1111#include "includes/psychic5.h"
1212
13
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
1418#define BG_PAL_INTENSITY_RG 0x1fe
1519#define BG_PAL_INTENSITY_BU 0x1ff
1620
r241749r241750
1923  Palette color
2024***************************************************************************/
2125
22void psychic5_state::psychic5_change_palette(int offset, UINT8* palram, int palbase)
26void psychic5_state::psychic5_change_palette(int color, int offset)
2327{
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));
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));
3132}
3233
3334void psychic5_state::psychic5_change_bg_palette(int color, int lo_offs, int hi_offs)
r241749r241750
4344
4445   irgb = rgb_t(ir,ig,ib);
4546
46   lo = m_ps5_palette_ram_bg[lo_offs];
47   hi = m_ps5_palette_ram_bg[hi_offs];
47   lo = m_ps5_palette_ram[lo_offs];
48   hi = m_ps5_palette_ram[hi_offs];
4849
4950   /* red,green,blue component */
5051   r = pal4bit(lo >> 4);
r241749r241750
5253   b = pal4bit(hi >> 4);
5354
5455   /* Grey background enable */
55   if (m_bg_control[4] & 2)
56   if (m_bg_status & 2)
5657   {
5758      UINT8 val = (r + g + b) / 3;        /* Grey */
5859      /* Just leave plain grey */
r241749r241750
7273void psychic5_state::set_background_palette_intensity()
7374{
7475   int i;
75   m_palette_intensity = m_ps5_palette_ram_sp[BG_PAL_INTENSITY_BU] |
76                  (m_ps5_palette_ram_sp[BG_PAL_INTENSITY_RG]<<8);
76   m_palette_intensity = m_ps5_palette_ram[BG_PAL_INTENSITY_BU] |
77                  (m_ps5_palette_ram[BG_PAL_INTENSITY_RG]<<8);
7778
7879   /* for all of the background palette */
7980   for (i = 0; i < 0x100; i++)
80      psychic5_change_bg_palette(i+0x100,i*2,i*2+1);
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);
8182}
8283
8384
r241749r241750
9394WRITE8_MEMBER(psychic5_state::psychic5_vram_page_select_w)
9495{
9596   m_ps5_vram_page = data & 1;
96   m_vrambank->set_bank(data);
9797}
9898
9999WRITE8_MEMBER(psychic5_state::psychic5_title_screen_w)
r241749r241750
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   }
104117
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);
118   return m_ps5_pagedram[m_ps5_vram_page][offset];
110119}
111120
112WRITE8_MEMBER(psychic5_state::bg_col_w)
121WRITE8_MEMBER(psychic5_state::psychic5_paged_ram_w)
113122{
114   m_ps5_palette_ram_bg[offset] = data;
115   psychic5_change_palette(offset,m_ps5_palette_ram_bg, 0x100);
116}
123   m_ps5_pagedram[m_ps5_vram_page][offset] = data;
117124
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);
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   }
122155}
123156
124
125WRITE8_MEMBER(psychic5_state::fg_videoram_w)
157WRITE8_MEMBER(psychic5_state::bombsa_paged_ram_w)
126158{
127   m_fg_videoram[offset] = data;
128   m_fg_tilemap->mark_tile_dirty(offset >> 1);
129}
159   m_ps5_pagedram[m_ps5_vram_page][offset] = data;
130160
131WRITE8_MEMBER( psychic5_state::bg_videoram_w )
132{   
133   m_bg_videoram[offset] = data;
134   m_bg_tilemap->mark_tile_dirty(offset >> 1);
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   }
135186}
136187
137
138
139188WRITE8_MEMBER(psychic5_state::bombsa_unknown_w)
140189{
141190   m_bombsa_unknown = data;
r241749r241750
175224
176225VIDEO_START_MEMBER(psychic5_state,psychic5)
177226{
227   /*                          info              offset             w   h  col  row */
178228   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);
179229   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
180231   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
181242   jal_blend_init(machine(), 1);
182243
244   m_bg_palette_ram_base = 0x400;
245   m_bg_palette_base = 0x100;
183246}
184247
185248VIDEO_START_MEMBER(psychic5_state,bombsa)
186249{
250   /*                          info              offset             w   h   col  row */
187251   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);
188252   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
189254   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
190265   jal_blend_init(machine(), 0);
266
267   m_bg_palette_ram_base = 0x000;
268   m_bg_palette_base = 0x000;
191269}
192270
193271VIDEO_RESET_MEMBER(psychic5_state,psychic5)
194272{
195273   m_bg_clip_mode = 0;
196274   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;
197285   m_title_screen = 0;
286   memset(m_ps5_pagedram[0],0,0x2000);
287   memset(m_ps5_pagedram[1],0,0x2000);
198288   m_palette_intensity = 0;
199289}
200290
201291
202
203292/***************************************************************************
204293  Screen refresh
205294***************************************************************************/
r241749r241750
317406
318407UINT32 psychic5_state::screen_update_psychic5(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
319408{
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
325409   bitmap.fill(m_palette->black_pen(), cliprect);
326   if (m_bg_control[4] & 1)    /* Backgound enable */
410   if (m_bg_status & 1)    /* Backgound enable */
327411      draw_background(screen, bitmap, cliprect);
328412   if (!(m_title_screen & 1))
329413      draw_sprites(bitmap, cliprect);
r241749r241750
333417
334418UINT32 psychic5_state::screen_update_bombsa(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
335419{
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 */
420   if (m_bg_status & 1)    /* Backgound enable */
343421      m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
344422   else
345423      bitmap.fill(m_palette->pen(0x0ff), cliprect);
trunk/src/mame/video/rdpspn16.c
r241749r241750
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);
577575         ((this)->*(_Fill[object.MiscState.FBSize - 2]))(fb_index + x, object);
578576      }
579577
trunk/src/mame/video/rdptpipe.c
r241749r241750
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
613598   int tempanded;
614599   if (*sss & 0x40000)
615600   {
r241749r241750
660645         *sst &= 0xffff;
661646      }
662647   }
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   }
695648}
696649
697650void 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)
r241749r241750
808761
809762   if(object.OtherModes.sharpen_tex_en && magnify)
810763   {
811      userdata->LODFraction |= 0x100;
764      userdata->LODFraction = userdata->LODFraction | 0x100;
812765   }
813766
814767   if (object.OtherModes.tex_lod_en)
trunk/src/mame/video/rockrage.c
r241749r241750
44PALETTE_INIT_MEMBER(rockrage_state, rockrage)
55{
66   const UINT8 *color_prom = memregion("proms")->base();
7   int i;
78
8   for (int i = 0; i < 256*3; i++)
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++)
915   {
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);
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);
1423   }
1524}
1625
r241749r241750
4150{
4251   *code |= ((*color & 0x40) << 2) | ((*color & 0x80) << 1) * ((m_vreg & 0x03) << 1);
4352   *code = (*code << 2) | ((*color & 0x30) >> 4);
44   *color = 0 + (*color & 0x0f);
53   *color = 0;
4554}
4655
4756
trunk/src/mame/video/tia.c
r241749r241750
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
272276         if (R < 0) R = 0;
273277         if (G < 0) G = 0;
274278         if (B < 0) B = 0;
275279
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;
r241749r241750
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
331335         if (R < 0) R = 0;
332336         if (G < 0) G = 0;
333337         if (B < 0) B = 0;
334338
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
r241749r241750
1919
2020enum
2121{
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
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
2828};
2929
3030enum
3131{
3232   // user-defined priorities
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
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
3639};
3740
3841
r241749r241750
104107            flip |= (m_video_register&TWIN16_SCREEN_FLIPY) ? TILEMAP_FLIPY : 0;
105108            machine().tilemap().set_flip_all(flip);
106109         }
107         if (changed & TWIN16_TILE_FLIPY)
110         if (changed & (TWIN16_TILE_FLIPX | TWIN16_TILE_FLIPY))
108111         {
109112            m_scroll_tmap[0]->mark_all_dirty();
110113            m_scroll_tmap[1]->mark_all_dirty();
r241749r241750
174177 *   2  | -------xxxxxxxxx | xpos
175178 * -----+------------------+
176179 *   3  | x--------------- | enable
177 *   3  | -xxxxx---------- | ?
180 *   3  | -x-------------- | priority   ?
181 *   3  | -----x---------- | no shadow  ?
178182 *   3  | ------x--------- | yflip  ?
179183 *   3  | -------x-------- | xflip
180184 *   3  | --------xx------ | height
r241749r241750
226230         UINT32 xpos = (0x10000*source[4])|source[5];
227231         UINT32 ypos = (0x10000*source[6])|source[7];
228232
229         /* notes on sprite attributes:
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)
230237
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.
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
236242
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.
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
241247
242         fround, hpuncher, miaj, cuebrickj, don't use the preprocessor.
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
243256         */
244         UINT16 attributes = 0x8000 | (source[2]&0x03ff); // scale,size,color
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?
245261
246262         dest[0] = source[3]; /* gfx data */
247263         dest[1] = ((xpos>>8) - dx)&0xffff;
r241749r241750
275291         const UINT16 *pen_data = 0;
276292         int flipy = attributes&0x0200;
277293         int flipx = attributes&0x0100;
294         int priority = (attributes&0x4000)?TWIN16_SPRITE_PRI_L1:TWIN16_SPRITE_PRI_L2;
278295
279296         if( m_is_fround ) {
280297            /* fround board */
r241749r241750
343360                  {
344361                     UINT16 pen = pen_data[x>>2]>>((~x&3)<<2)&0xf;
345362
346                     if( pen && !(pdest[sx] & TWIN16_SPRITE_OCCUPIED))
363                     if( pen )
347364                     {
348                        pdest[sx] |= TWIN16_SPRITE_OCCUPIED;
365                        int shadow = (pen==0xf) & ((attributes&0x400)==0);
349366
350                        if (pen==0xf) // shadow
351                        {
352                           if (!(pdest[sx] & TWIN16_BG_NO_SHADOW))
367                        if (pdest[sx]<priority) {
368                           if (shadow) {
353369                              dest[sx] = m_palette->shadow_table()[dest[sx]];
354                        }
355                        else // opaque pixel
356                        {
357                           if (!(pdest[sx] & TWIN16_BG_OVER_SPRITES))
370                              pdest[sx]|=TWIN16_SPRITE_CAST_SHADOW;
371                           }
372                           else {
358373                              dest[sx] = pal_base + pen;
374                           }
359375                        }
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;
360383                     }
361384                  }
362385               }
r241749r241750
389412void twin16_state::tile_get_info(tile_data &tileinfo, UINT16 data, int color_base)
390413{
391414   /* fedcba9876543210
392      xxx------------- color; high bit is also priority over sprites
415      xxx------------- color
393416      ---xxxxxxxxxxxxx tile number
394417   */
395418   int code = (data & 0x1fff);
396419   int color = color_base + (data >> 13);
397420   int flags = 0;
421   if (m_video_register & TWIN16_TILE_FLIPX) flags |= TILE_FLIPX;
398422   if (m_video_register & TWIN16_TILE_FLIPY) flags |= TILE_FLIPY;
399423   SET_TILE_INFO_MEMBER(1, code, color, flags);
400   tileinfo.category = BIT(data, 15);
401424}
402425
403426void fround_state::tile_get_info(tile_data &tileinfo, UINT16 data, int color_base)
404427{
405428   /* fedcba9876543210
406      xxx------------- color; high bit is also priority over sprites
429      xxx------------- color
407430      ---xx----------- tile bank
408431      -----xxxxxxxxxxx tile number
409432   */
r241749r241750
411434   int code = (m_gfx_bank[bank] << 11) | (data & 0x7ff);
412435   int color = color_base | (data >> 13);
413436   int flags = 0;
437   if (m_video_register & TWIN16_TILE_FLIPX) flags |= TILE_FLIPX;
414438   if (m_video_register & TWIN16_TILE_FLIPY) flags |= TILE_FLIPY;
415439   SET_TILE_INFO_MEMBER(1, code, color, flags);
416   tileinfo.category = BIT(data, 15);
417440}
418441
419442TILE_GET_INFO_MEMBER(twin16_state::layer0_tile_info)
r241749r241750
462485
463486UINT32 twin16_state::screen_update_twin16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
464487{
465/*
466    PAL equations (007789 @ 11J):
488   int layer = m_video_register & TWIN16_PLANE_ORDER ? 0 : 1;
467489
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
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);
472492
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
531493   draw_sprites( screen, bitmap );
532494
533495   m_fixed_tmap->draw(screen, bitmap, cliprect, 0);
trunk/src/mame/video/tx1.c
r241749r241750
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)
1441                           UINT8 *rc0, UINT8 *rc1, UINT8 *rc2, UINT8 *rc3,
1442                           const UINT8 *rom, const UINT8 *prom0, const UINT8 *prom1, const UINT8 *prom2)
14421443{
14431444   /* Counter Q10-7 are added to 384 */
14441445   UINT16 ls283_159 = (ls161 & 0x780) + 128 + (256 * screen);
r241749r241750
14481449   UINT8 d0 = 0;
14491450   UINT8 d1 = 0;
14501451
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
14571452   /* Latch road reverse bit */
14581453   *_rorev = !( (rom_en && rom_flip) || (!rom_en && (ls161 & 0x4000)) );
14591454
r241749r241750
15441539
15451540   /* ROM/PROM lookup tables */
15461541   const UINT8 *rcols = (UINT8*)(memregion("proms")->base() + 0x1500);
1547   const UINT8 *vprom   = memregion("road")->base() + 0x4600;
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;
15481547
15491548   /* Extract constant values */
15501549   tcmd     = ((vregs.scol & 0xc000) >> 12) | ((vregs.scol & 0x00c0) >> 6);
r241749r241750
16681667      /* Have we crossed a road gfx strip boundary? */
16691668      if (ls161 & 7)
16701669      {
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]);
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);
16741673      }
16751674
16761675      /* We can evaluate some of the pixel logic outside of the x-loop */
r241749r241750
17501749         /* Load in a new road gfx strip? */
17511750         if (!(ls161 & 7))
17521751         {
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]);
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);
17561755         }
17571756
17581757         /* Road camber/banking */
r241749r241750
21712170
21722171   /* ROM/PROM lookup tables */
21732172   const UINT8 *rcols = (UINT8*)(memregion("proms")->base() + 0x1500);
2174   const UINT8 *vprom = memregion("road")->base() + 0x4600;
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;
21752178
21762179   /* Extract constant values */
21772180   tcmd     = ((vregs.scol & 0xc000) >> 12) | ((vregs.scol & 0x00c0) >> 6);
r241749r241750
22932296
22942297      /* Have we crossed a road gfx strip boundary? */
22952298      if (ls161 & 7)
2296         buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0, &rc1, &rc2, &rc3);
2299         buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0, &rc1, &rc2, &rc3, rom, prom0, prom1, prom2);
22972300
22982301      for (x = 0; x < 256; ++x)
22992302      {
r241749r241750
23282331
23292332         /* Load in a new road gfx strip? */
23302333         if (!(ls161 & 7))
2331            buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0, &rc1, &rc2, &rc3);
2334            buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0, &rc1, &rc2, &rc3, rom, prom0, prom1, prom2);
23322335
23332336         /* Road camber */
23342337         if (vregs.bank_mode == 0)
trunk/src/mess/drivers/ace.c
r241749r241750
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_devices, "printer")
714   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
715715   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
716716
717717   // internal ram
trunk/src/mess/drivers/amiga.c
r241749r241750
13431343   MCFG_RS232_CTS_HANDLER(WRITELINE(amiga_state, rs232_cts_w))
13441344
13451345   // centronics
1346   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
1346   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
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)
808807SLOT_INTERFACE_END
809808
810809SLOT_INTERFACE_START(cpcplus_exp_cards)
r241749r241750
816815   SLOT_INTERFACE("amsrs232", CPC_RS232_AMS)
817816   SLOT_INTERFACE("sf2", CPC_SYMBIFACE2)
818817   SLOT_INTERFACE("amdrum", CPC_AMDRUM)
819   SLOT_INTERFACE("playcity", CPC_PLAYCITY)
820818SLOT_INTERFACE_END
821819
822SLOT_INTERFACE_START(amstrad_centronics_devices)
820SLOT_INTERFACE_START(amstrad_printers)
823821   SLOT_INTERFACE("pl80", COMX_PL80)
824822   SLOT_INTERFACE("ex800", EPSON_EX800)
825823   SLOT_INTERFACE("lx800", EPSON_LX800)
r241749r241750
864862   MCFG_MC6845_OUT_DE_CB(WRITELINE(amstrad_state, amstrad_de_changed))
865863   MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(amstrad_state, amstrad_hsync_changed))
866864   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))
868865
869866   MCFG_VIDEO_START_OVERRIDE(amstrad_state,amstrad)
870867
r241749r241750
877874   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
878875
879876   /* printer */
880   MCFG_CENTRONICS_ADD("centronics", amstrad_centronics_devices, "printer")
877   MCFG_CENTRONICS_ADD("centronics", amstrad_printers, "printer")
881878   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(amstrad_state, write_centronics_busy))
882879
883880   /* snapshot */
r241749r241750
972969   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
973970
974971   /* printer */
975   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
972   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
976973   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(amstrad_state, write_centronics_busy))
977974
978975   /* snapshot */
trunk/src/mess/drivers/apf.c
r241749r241750
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
262266   if (m_ram)
263267   {
264268      /* if we specified 8K of RAM, delete the extended RAM */
r241749r241750
550554   MCFG_APF_CARTRIDGE_ADD("cartslot", apf_cart, NULL)
551555
552556   /* software lists */
553   MCFG_SOFTWARE_LIST_ADD("cart_list", "apfm1000")
557   MCFG_SOFTWARE_LIST_ADD("cart_list","apfm1000")
554558MACHINE_CONFIG_END
555559
556560static MACHINE_CONFIG_DERIVED( apfimag, apfm1000 )
r241749r241750
570574   MCFG_PIA_READPB_HANDLER(READ8(apf_state, pia1_portb_r))
571575   MCFG_PIA_WRITEPB_HANDLER(WRITE8(apf_state, pia1_portb_w))
572576
573   MCFG_CASSETTE_ADD("cassette")
577   MCFG_CASSETTE_ADD( "cassette" )
574578   MCFG_CASSETTE_FORMATS(apf_cassette_formats)
575   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED)
579   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY)
576580
577581   MCFG_FD1771x_ADD("fdc", 1000000) // guess
578582   MCFG_FLOPPY_DRIVE_ADD("fdc:0", apf_floppies, "525dd", floppy_image_device::default_floppy_formats)
579583   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")
582584MACHINE_CONFIG_END
583585
584586
trunk/src/mess/drivers/applix.c
r241749r241750
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_devices, "printer")
880   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
384384   MCFG_RS232_CTS_HANDLER(DEVWRITELINE("ic15", z80dart_device, ctsa_w))
385385
386386   // centronics printer
387   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
387   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
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_devices, "printer")
297   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
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_devices, "printer")
537   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
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"
1917
2018class astrocde_mess_state : public astrocde_state
2119{
2220public:
2321   astrocde_mess_state(const machine_config &mconfig, device_type type, const char *tag)
2422      : astrocde_state(mconfig, type, tag),
25      m_cart(*this, "cartslot"),
26      m_exp(*this, "exp")
23      m_cart(*this, "cartslot")
2724      { }
2825
2926   required_device<astrocade_cart_slot_device> m_cart;
30   required_device<astrocade_exp_device> m_exp;
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);
3128   DECLARE_MACHINE_START(astrocde);
29   DECLARE_MACHINE_RESET(astrocde);
30   DECLARE_INPUT_CHANGED_MEMBER(set_write_protect);
3231};
3332
34/*********************************************************************************
33/*************************************
3534 *
3635 *  Memory maps
3736 *
r241749r241750
4342 * by an extended BASIC program.  Bally and Astrocade BASIC can access from
4443 * $5000 to $7FFF if available.
4544 *
46 *********************************************************************************/
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 *************************************/
4792
4893static ADDRESS_MAP_START( astrocade_mem, AS_PROGRAM, 8, astrocde_mess_state )
4994   AM_RANGE(0x0000, 0x0fff) AM_ROM AM_WRITE(astrocade_funcgen_w)
5095   AM_RANGE(0x1000, 0x3fff) AM_ROM /* Star Fortress writes in here?? */
5196   AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("videoram") /* ASG */
52   //AM_RANGE(0x5000, 0xffff) AM_DEVREADWRITE("exp", astrocade_exp_device, read, write)
5397ADDRESS_MAP_END
5498
5599
r241749r241750
57101   AM_RANGE(0x00, 0x1f) AM_MIRROR(0xff00) AM_MASK(0xffff) AM_READWRITE(astrocade_data_chip_register_r, astrocade_data_chip_register_w)
58102ADDRESS_MAP_END
59103
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
60127/*************************************
61128 *
62129 *  Input ports
r241749r241750
160227
161228   PORT_START("P4_KNOB")
162229   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")
163245INPUT_PORTS_END
164246
165247
r241749r241750
175257   SLOT_INTERFACE_INTERNAL("rom_512k",  ASTROCADE_ROM_512K)
176258SLOT_INTERFACE_END
177259
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
186260
187
188261static MACHINE_CONFIG_START( astrocde, astrocde_mess_state )
189262   /* basic machine hardware */
190263   MCFG_CPU_ADD("maincpu", Z80, ASTROCADE_CLOCK/4)        /* 1.789 MHz */
r241749r241750
192265   MCFG_CPU_IO_MAP(astrocade_io)
193266
194267   MCFG_MACHINE_START_OVERRIDE(astrocde_mess_state, astrocde)
268   MCFG_MACHINE_RESET_OVERRIDE(astrocde_mess_state, astrocde)
195269
196270   /* video hardware */
197271   MCFG_SCREEN_ADD("screen", RASTER)
r241749r241750
207281   MCFG_SOUND_ADD("astrocade1", ASTROCADE, ASTROCADE_CLOCK/4)
208282   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
209283
210   /* expansion port */
211   MCFG_ASTROCADE_EXPANSION_SLOT_ADD("exp", astrocade_exp, NULL)
284   /* optional expansion ram (installed in machine_reset)*/
285   MCFG_RAM_ADD("ram_tag")
286   MCFG_RAM_DEFAULT_SIZE("32k")
212287
213288   /* cartridge */
214289   MCFG_ASTROCADE_CARTRIDGE_ADD("cartslot", astrocade_cart, NULL)
r241749r241750
254329{
255330   if (m_cart->exists())
256331      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}
257333
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));
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   }
262356}
263357
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
264408/*************************************
265409 *
266410 *  Driver definitions
trunk/src/mess/drivers/atarist.c
r241749r241750
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_devices, "printer")
2109   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
21102110   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i0_w))
21112111
21122112   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241749r241750
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_devices, "printer")
2200   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
22012201   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i0_w))
22022202
22032203   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241749r241750
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_devices, "printer")
2298   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
22992299   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i0_w))
23002300
23012301   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241749r241750
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_devices, "printer")
2411   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
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_devices, "printer")
728   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
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_devices, "printer")
825   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
748748   MCFG_UPD7002_EOC_CB(bbc_state, BBC_uPD7002_EOC)
749749
750750   /* printer */
751   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
751   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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")
r241749r241750
810810   MCFG_UPD7002_EOC_CB(bbc_state, BBC_uPD7002_EOC)
811811
812812   /* printer */
813   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
813   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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")
r241749r241750
919919   MCFG_MC146818_ADD( "rtc", XTAL_32_768kHz )
920920
921921   /* printer */
922   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
922   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
1212
1313/* Components */
1414#include "video/pc_vga.h"
15#include "bus/lpci/cirrus.h"
15#include "bus/pci/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/lpci/pci.h"
21#include "bus/pci/pci.h"
2222#include "machine/am9517a.h"
2323#include "machine/pckeybrd.h"
2424#include "machine/idectrl.h"
25#include "bus/lpci/mpc105.h"
25#include "bus/pci/mpc105.h"
2626#include "machine/intelfsh.h"
2727#include "bus/scsi/scsi.h"
2828#include "machine/53c810.h"
trunk/src/mess/drivers/bullet.c
r241749r241750
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_devices, "printer")
1152   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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))
r241749r241750
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_devices, "printer")
1236   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
613613   MCFG_RS232_CTS_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, ctsb_w))
614614
615615   /* printer */
616   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
616   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
618618   MCFG_DEVICE_ADDRESS_MAP(AS_0, lcdc_map)
619619   MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
620620
621   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
621   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
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_devices, "printer")
1247   MCFG_CENTRONICS_ADD("ctx", centronics_printers, "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
r241749r241750
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_devices, NULL)
770   MCFG_CENTRONICS_ADD("centronics", centronics_printers, 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
r241749r241750
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_devices, "printer")
709   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
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_devices, "printer")
774   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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)
r241749r241750
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_devices, "printer")
853   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
2525#include "bus/dmv/k220.h"
2626#include "bus/dmv/k230.h"
2727#include "bus/dmv/k233.h"
28#include "bus/dmv/k803.h"
2928#include "bus/dmv/k806.h"
3029#include "bus/dmv/ram.h"
3130
r241749r241750
115114   DECLARE_READ8_MEMBER(exp_program_r);
116115   DECLARE_WRITE8_MEMBER(exp_program_w);
117116   DECLARE_WRITE_LINE_MEMBER(thold7_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
117   DECLARE_WRITE_LINE_MEMBER(busint_w);
129118   DECLARE_FLOPPY_FORMATS( floppy_formats );
130119
131120   UINT8 program_read(address_space &space, int cas, offs_t offset);
r241749r241750
157146   int         m_dack3_line;
158147   int         m_sd_poll_state;
159148   int         m_floppy_motor;
160   int         m_busint[8];
161149};
162150
163151WRITE8_MEMBER(dmv_state::tc_set_w)
r241749r241750
341329
342330static SLOT_INTERFACE_START( dmv_floppies )
343331      SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
344      SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
345332SLOT_INTERFACE_END
346333
347334
r241749r241750
388375   }
389376}
390377
391void dmv_state::update_busint(int slot, int state)
378WRITE_LINE_MEMBER( dmv_state::busint_w )
392379{
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);
380   m_slot7a->irq2_w(state);
381   m_slot7->irq2_w(state);
406382}
407383
408384void dmv_state::program_write(address_space &space, int cas, offs_t offset, UINT8 data)
r241749r241750
529505   m_switch16 = 0;
530506   m_thold7 = 0;
531507   m_dma_hrq = 0;
532   memset(m_busint, 0, sizeof(m_busint));
533508
534509   update_halt_line();
535510}
r241749r241750
631606
632607static SLOT_INTERFACE_START(dmv_slot2_6)
633608   SLOT_INTERFACE("k233", DMV_K233)            // K233 16K Shared RAM
634   SLOT_INTERFACE("k803", DMV_K803)            // K803 RTC module
635609   SLOT_INTERFACE("k806", DMV_K806)            // K806 Mouse module
636610SLOT_INTERFACE_END
637611
r241749r241750
718692   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot1, NULL, false)
719693   MCFG_DEVICE_ADD("slot2", DMVCART_SLOT, 0)
720694   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false)
721   MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint2_w))
722695   MCFG_DEVICE_ADD("slot2a", DMVCART_SLOT, 0)
723696   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2a, NULL, false)
724   MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint2a_w))
725697   MCFG_DEVICE_ADD("slot3", DMVCART_SLOT, 0)
726698   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false)
727   MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint3_w))
728699   MCFG_DEVICE_ADD("slot4", DMVCART_SLOT, 0)
729700   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false)
730   MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint4_w))
731701   MCFG_DEVICE_ADD("slot5", DMVCART_SLOT, 0)
732702   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false)
733   MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint5_w))
734703   MCFG_DEVICE_ADD("slot6", DMVCART_SLOT, 0)
735704   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false)
736   MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint6_w))
737705
738706   MCFG_DEVICE_ADD("slot7", DMVCART_SLOT, 0)
739707   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot7, NULL, false)
740708   MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(READ8(dmv_state, exp_program_r), WRITE8(dmv_state, exp_program_w))
741709   MCFG_DMVCART_SLOT_OUT_THOLD_CB(WRITELINE(dmv_state, thold7_w))
742   MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint7_w))
710   MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(dmv_state, busint_w))
743711   MCFG_DEVICE_ADD("slot7a", DMVCART_SLOT, 0)
744712   MCFG_DEVICE_SLOT_INTERFACE(dmv_slot7a, "k230", false)
745713   MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(READ8(dmv_state, exp_program_r), WRITE8(dmv_state, exp_program_w))
746714   MCFG_DMVCART_SLOT_OUT_THOLD_CB(WRITELINE(dmv_state, thold7_w))
747   MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint7a_w))
715   MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(dmv_state, busint_w))
748716
749717   MCFG_SOFTWARE_LIST_ADD("flop_list", "dmv")
750718
trunk/src/mess/drivers/dvk_ksm.c
r241749r241750
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
r241749r241750
730730   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
731731
732732   /* printer */
733   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
733   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
573573   MCFG_I8255_OUT_PORTC_CB(WRITE8(elwro800_state, i8255_port_c_w))
574574
575575   /* printer */
576   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
576   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
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_devices, "printer")
524   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
552552
553553   MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "fc100_cart")
554554
555   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
555   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
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_devices, "printer")
2091   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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))
r241749r241750
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_devices, "printer")
2148   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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))
r241749r241750
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_devices, "printer")
2224   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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))
r241749r241750
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_devices, "printer")
2302   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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))
r241749r241750
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_devices, "printer")
2356   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
674674   MCFG_MC6845_UPDATE_ROW_CB(fp1100_state, fp1100_update_row)
675675
676676   /* Printer */
677   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
677   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
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
r241749r241750
485485   m_floppy0_ready = false;
486486   m_floppy1_ready = false;
487487   membank("lower_ram")->set_base(m_ram->pointer());
488   if(m_ram->size() > 65536)
489      membank("upper_ram")->set_base(m_ram->pointer()+0x10000);
488   membank("upper_ram")->set_base(m_ram->pointer()+0x10000);
490489
491490   // initialise FDC clock based on DIP Switch S2-9 (5.25"/8" drive select)
492491   if(m_dma_dip->read() & 0x00000100)
trunk/src/mess/drivers/gmaster.c
r241749r241750
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);
3132
3233private:
3334   virtual void machine_start();
r241749r241750
277278}
278279
279280
281INTERRUPT_GEN_MEMBER(gmaster_state::gmaster_interrupt)
282{
283   m_maincpu->set_input_line(UPD7810_INTFE1, ASSERT_LINE);
284}
285
280286static MACHINE_CONFIG_START( gmaster, gmaster_state )
281287   MCFG_CPU_ADD("maincpu", UPD7810, XTAL_12MHz/2/*?*/)  // upd78c11 in the unit
282288   MCFG_CPU_PROGRAM_MAP(gmaster_mem)
283289   MCFG_CPU_IO_MAP( gmaster_io)
290   MCFG_CPU_VBLANK_INT_DRIVER("screen", gmaster_state,  gmaster_interrupt)
284291
285292   MCFG_SCREEN_ADD("screen", LCD)
286293   MCFG_SCREEN_REFRESH_RATE(60)
trunk/src/mess/drivers/hx20.c
r241749r241750
864864   MCFG_RAM_EXTRA_OPTIONS("32K")
865865
866866   // software lists
867   MCFG_SOFTWARE_LIST_ADD("epson_cpm_list", "epson_cpm")
867   MCFG_SOFTWARE_LIST_ADD("flop_list", "hx20_flop")
868868MACHINE_CONFIG_END
869869
870870
trunk/src/mess/drivers/isbc.c
r241749r241750
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_devices, "printer")
286   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
735735   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
736736
737737   /* printer */
738   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
738   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
739739   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(jtc_state, write_centronics_busy))
740740MACHINE_CONFIG_END
741741
trunk/src/mess/drivers/kaypro.c
r241749r241750
207207   /* devices */
208208   MCFG_QUICKLOAD_ADD("quickload", kaypro_state, kaypro, "com,cpm", 3)
209209
210   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
210   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
211211   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(kaypro_state, write_centronics_busy))
212212
213213   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241749r241750
281281
282282   MCFG_QUICKLOAD_ADD("quickload", kaypro_state, kaypro, "com,cpm", 3)
283283
284   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
284   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
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_devices, "printer")
1379   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
13801380   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(kc85_state, write_centronics_busy))
13811381   MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(kc85_state, write_centronics_select))
13821382
r241749r241750
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_devices, "printer")
1429   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
14301430   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(kc85_state, write_centronics_busy))
14311431   MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(kc85_state, write_centronics_select))
14321432
r241749r241750
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_devices, "printer")
1489   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
14901490   MCFG_CASSETTE_ADD("cassette")
14911491   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
14921492
r241749r241750
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_devices, "printer")
1553   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
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",  "PK-01 Lviv" ,    0 )
489COMP( 1989, lviv,   0,      0,      lviv,   lviv, driver_device,   0,      "V. I. Lenin",  "Lviv" ,    0 )
trunk/src/mess/drivers/m5.c
r241749r241750
595595   // CK0 = EXINT, CK1 = GND, CK2 = TCK, CK3 = VDP INT
596596   // ZC2 = EXCLK
597597
598   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
598   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
599599   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(m5_state, write_centronics_busy))
600600
601601   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
r241749r241750
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")
607606
608607   MCFG_DEVICE_ADD(I8255A_TAG, I8255, 0)
609608   MCFG_I8255_IN_PORTA_CB(READ8(m5_state, ppi_pa_r))
r241749r241750
622621   //MCFG_GENERIC_MANDATORY
623622
624623   // software lists
625   MCFG_SOFTWARE_LIST_ADD("cart_list", "m5_cart")
626   MCFG_SOFTWARE_LIST_ADD("cass_list", "m5_cass")
624   MCFG_SOFTWARE_LIST_ADD("cart_list", "m5")
627625
628626   // internal ram
629627   MCFG_RAM_ADD(RAM_TAG)
trunk/src/mess/drivers/mbee.c
r241749r241750
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_devices, "printer")
702   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
703703
704704   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
705705
r241749r241750
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_devices, "printer")
760   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
761761
762762   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
763763
trunk/src/mess/drivers/mc1000.c
r241749r241750
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_devices, "printer")
456   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
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));
r241749r241750
163163WRITE_LINE_MEMBER(mc1502_state::mc1502_pit8253_out2_changed)
164164{
165165   m_pit_out2 = state;
166   m_speaker->level_w(m_spkrdata & m_pit_out2);
166//  mc1502_speaker_set_input( state );
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
176170DRIVER_INIT_MEMBER( mc1502_state, mc1502 )
177171{
178172   address_space &program = m_maincpu->space(AS_PROGRAM);
r241749r241750
203197MACHINE_RESET_MEMBER( mc1502_state, mc1502 )
204198{
205199   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);
212200}
213201
214202/*
r241749r241750
307295   MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
308296   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
309297
310   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
298   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
311299   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit6))
312300   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit7))
313301   MCFG_CENTRONICS_FAULT_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit4))
r241749r241750
336324MACHINE_CONFIG_END
337325
338326
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*/
348327ROM_START( mc1502 )
349328   ROM_REGION16_LE(0x100000,"maincpu", 0)
350329
351330   ROM_DEFAULT_BIOS("v52")
352   ROM_SYSTEM_BIOS(0, "v50", "v5.0 10/05/89")
331   ROM_SYSTEM_BIOS(0, "v50", "v5.0")
353332   ROMX_LOAD( "monitor_5_0.rom",  0xfc000, 0x4000, CRC(9e97c6a0) SHA1(16a304e8de69ec4d8b92acda6bf28454c361a24f),ROM_BIOS(1))
354   ROM_SYSTEM_BIOS(1, "v52", "v5.2 22/03/91")
333   ROM_SYSTEM_BIOS(1, "v52", "v5.2")
355334   ROMX_LOAD( "monitor_5_2.rom",  0xfc000, 0x4000, CRC(0e65491e) SHA1(8a4d556473b5e0e59b05fab77c79c29f4d562412),ROM_BIOS(2))
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))
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))
388340ROM_END
389341
390/*
391        Predecessor of MC1502, same keyboard attachment but
392        different video subsystem (not emulated).
393*/
394342ROM_START( pk88 )
395343   ROM_REGION16_LE(0x100000,"maincpu", 0)
396344
r241749r241750
410358
411359/*     YEAR     NAME        PARENT      COMPAT  MACHINE     INPUT       INIT                COMPANY       FULLNAME */
412360COMP ( 1989,    mc1502,     ibm5150,    0,      mc1502,     mc1502,     mc1502_state, mc1502,   "NPO Microprocessor", "Elektronika MC-1502", 0)
413COMP ( 1988,    pk88,       ibm5150,    0,      pk88,       mc1502,     mc1502_state, mc1502,   "NPO Microprocessor", "Elektronika PK-88", GAME_NOT_WORKING | GAME_NO_SOUND)
361COMP ( 1990,    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
r241749r241750
1/***************************************************************************
1/*
22
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.
3    Parker Bros Merlin handheld computer game
124
5*/
136
14  TODO:
15  - accurate speaker levels (tone pitch sounds good though)
16  - is the rom dump good?
17
18***************************************************************************/
19
207#include "emu.h"
218#include "cpu/tms0980/tms0980.h"
229#include "sound/speaker.h"
2310
11/* Layout */
2412#include "merlin.lh"
2513
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)
2914
30
3115class merlin_state : public driver_device
3216{
3317public:
3418   merlin_state(const machine_config &mconfig, device_type type, const char *tag)
3519      : driver_device(mconfig, type, tag),
36      m_maincpu(*this, "maincpu"),
37      m_button_matrix(*this, "O"),
38      m_speaker(*this, "speaker")
39   { }
20         m_speaker(*this, "speaker") ,
21      m_maincpu(*this, "maincpu") { }
4022
23   virtual void machine_start();
24
25   required_device<speaker_sound_device> m_speaker;
26
4127   DECLARE_READ8_MEMBER(read_k);
4228   DECLARE_WRITE16_MEMBER(write_o);
4329   DECLARE_WRITE16_MEMBER(write_r);
4430
45   virtual void machine_start();
46
4731protected:
32   UINT16  m_o;
33   UINT16  m_r;
4834   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;
5335};
5436
5537
56/***************************************************************************
38#define LOG 0
5739
58  I/O
5940
60***************************************************************************/
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
6147
62/* The keypad is a 4*4 matrix, connected like so:
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
6353
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
6472       +----+  +----+  +----+  +----+
6573O0 o---| R0 |--| R1 |--| R2 |--| R3 |
6674       +----+  +----+  +----+  +----+
r241749r241750
8088          o       o       o       o
8189         K1      K2      K8      K4
8290
83SG = same game, CT = comp turn, NG = new game, HM = hit me */
91SG = same game, CT = comp turn, NG = new game, HM = hit me
92*/
8493
8594READ8_MEMBER(merlin_state::read_k)
8695{
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();
96   UINT8 data = 0;
9397
94   return k;
95}
98   if (LOG)
99      logerror( "read_k\n" );
96100
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]);
101   if ( m_o & 0x01 )
102   {
103      data |= ioport("O0")->read();
104   }
106105
107   // O0-O3: input mux
108   // O7: N/C
109   m_o = data;
110}
106   if ( m_o & 0x02 )
107   {
108      data |= ioport("O1")->read();
109   }
111110
112WRITE16_MEMBER(merlin_state::write_r)
113{
114   /* LEDs:
111   if ( m_o & 0x04 )
112   {
113      data |= ioport("O2")->read();
114   }
115115
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);
116   if ( m_o & 0x08 )
117   {
118      data |= ioport("O3")->read();
119   }
120
121   return data;
124122}
125123
126124
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*/
127132
128/***************************************************************************
133WRITE16_MEMBER(merlin_state::write_o)
134{
135   if (LOG)
136      logerror( "write_o: write %02x\n", data );
129137
130  Inputs
138   m_o = data;
131139
132***************************************************************************/
140   m_speaker->level_w(m_o & 0x70);
141}
133142
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")
140143
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")
144/*
146145
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")
146  LEDs:
152147
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
148      R0
149 R1   R2   R3
150 R4   R5   R6
151 R7   R8   R9
152      R10
159153
154When that particular R output is high, that LED is on.
155*/
160156
157WRITE16_MEMBER(merlin_state::write_r)
158{
159   if (LOG)
160      logerror( "write_r: write %04x\n", data );
161161
162/***************************************************************************
162   m_r = data;
163163
164  Machine Config
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}
165176
166***************************************************************************/
167177
168178void merlin_state::machine_start()
169179{
170   m_o = 0;
171180   save_item(NAME(m_o));
181   save_item(NAME(m_r));
172182}
173183
174184
r241749r241750
181191   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
182192};
183193
184static const INT16 speaker_levels[] = { 0, 32767, 0, 32767 }; // unknown too, due to output_pla being unknown
185194
186
187195static 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 ) )
188201
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
196202   MCFG_DEFAULT_LAYOUT(layout_merlin)
197203
198   /* no video! */
199
200   /* sound hardware */
201204   MCFG_SPEAKER_STANDARD_MONO("mono")
202205   MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
203   MCFG_SPEAKER_LEVELS(4, speaker_levels)
204206   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
205207MACHINE_CONFIG_END
206208
207209
208
209/***************************************************************************
210
211  Game driver(s)
212
213***************************************************************************/
214
215210ROM_START( merlin )
216211   ROM_REGION( 0x800, "maincpu", 0 )
217212   // This rom needs verification, that's why it is marked as a bad dump
r241749r241750
221216   ROM_LOAD( "mp3404", 0x0000, 0x800, BAD_DUMP CRC(7515a75d) SHA1(76ca3605d3fde1df62f79b9bb1f534c2a2ae0229) )
222217ROM_END
223218
219/***************************************************************************
224220
225CONS( 1978, merlin, 0, 0, merlin, merlin, driver_device, 0, "Parker Brothers", "Merlin", GAME_SUPPORTS_SAVE )
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 )
trunk/src/mess/drivers/msx.c
r241749r241750
517517
518518
519519#include "includes/msx.h"
520#include "bus/centronics/covox.h"
520521#include "formats/dsk_dsk.h"
521522#include "formats/dmk_dsk.h"
522523#include "machine/msx_matsushita.h"
r241749r241750
13501351   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
13511352
13521353   /* printer */
1353   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
1354   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
1355   MCFG_SLOT_OPTION_ADD( "covox", CENTRONICS_COVOX )
13541356   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit1))
13551357
13561358   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241749r241750
14381440   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
14391441
14401442   /* printer */
1441   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
1443   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
1444   MCFG_SLOT_OPTION_ADD( "covox", CENTRONICS_COVOX )
14421445   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit1))
14431446
14441447   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241749r241750
15021505   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
15031506
15041507   /* printer */
1505   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
1508   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
1509   MCFG_SLOT_OPTION_ADD( "covox", CENTRONICS_COVOX )
15061510   MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit1))
15071511
15081512   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
trunk/src/mess/drivers/mtx.c
r241749r241750
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_devices, "printer")
315   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
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_devices, "printer")
409   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
410410
411411   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
412412MACHINE_CONFIG_END
trunk/src/mess/drivers/nc.c
r241749r241750
14231423   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
14241424
14251425   /* printer */
1426   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
1426   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
793793   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
794794
795795   /* printer */
796   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
796   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
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 = 1;
691   m_pit_out2 = 0;
692692   m_dma_channel = -1;
693693   m_cur_eop = false;
694694}
trunk/src/mess/drivers/pc1512.c
r241749r241750
11311131   m_nmi_enable = 0;
11321132   m_toggle = 0;
11331133   m_kb_bits = 0;
1134   m_pit2 = 1;
11351134
11361135   m_lpen = 0;
11371136   m_blink = 0;
r241749r241750
12601259   MCFG_INS8250_OUT_RTS_CB(DEVWRITELINE(RS232_TAG, rs232_port_device, write_rts))
12611260   MCFG_INS8250_OUT_INT_CB(DEVWRITELINE(I8259A2_TAG, pic8259_device, ir4_w))
12621261
1263   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
1262   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
12641263   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(pc1512_state, write_centronics_ack))
12651264   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(pc1512_state, write_centronics_busy))
12661265   MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(pc1512_state, write_centronics_perror))
r241749r241750
13811380   MCFG_INS8250_OUT_INT_CB(DEVWRITELINE(I8259A2_TAG, pic8259_device, ir4_w))
13821381
13831382
1384   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
1383   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
13851384   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(pc1512_state, write_centronics_ack))
13861385   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(pc1512_state, write_centronics_busy))
13871386   MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(pc1512_state, write_centronics_perror))
trunk/src/mess/drivers/pc8001.c
r241749r241750
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_devices, "printer")
511   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
512512   MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(pc8001_state, write_centronics_ack))
513513   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(pc8001_state, write_centronics_busy))
514514
r241749r241750
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_devices, "printer")
560   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
561561
562562   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
563563
trunk/src/mess/drivers/pc8801.c
r241749r241750
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_devices, "printer")
2608   //MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
33493349   {
33503350      address_space& space = m_maincpu->space(AS_PROGRAM);
33513351      membank("wram")->set_base(m_ram->pointer());
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      }
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);
33583355   }
33593356
33603357   m_ide_rom = memregion("ide")->base();
trunk/src/mess/drivers/pencil2.c
r241749r241750
304304   MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "pencil2_cart")
305305
306306   /* printer */
307   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
307   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
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_devices, "printer")
325   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
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_devices, "printer")
841   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
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_devices, "printer")
257   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
258258
259259   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
260260
trunk/src/mess/drivers/psion.c
r241749r241750
595595   MCFG_PSION_DATAPACK_ADD("pack2")
596596
597597   /* Software lists */
598   MCFG_SOFTWARE_LIST_ADD("pack_list", "psion2")
598   MCFG_SOFTWARE_LIST_ADD("pack_list", "psion")
599599MACHINE_CONFIG_END
600600
601601/* basic configuration for 4 lines display */
r241749r241750
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")
631627MACHINE_CONFIG_END
632628
633629static MACHINE_CONFIG_DERIVED( psioncm, psion_2lines )
r241749r241750
700696   ROMX_LOAD( "34-lag.rom",   0x8000, 0x8000,  CRC(13a92c4b) SHA1(dab8bd6a41a5fd509c5ad4b0b0ab80d14f2c421a), ROM_BIOS(2))
701697   ROM_SYSTEM_BIOS(2, "v36", "LA v3.6")
702698   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))
705699ROM_END
706700
707701ROM_START( psionp200 )
trunk/src/mess/drivers/ptcsol.c
r241749r241750
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")
754753
755   MCFG_CASSETTE_ADD("cassette2")
754   MCFG_CASSETTE_ADD( "cassette2" )
756755   MCFG_CASSETTE_FORMATS(sol20_cassette_formats)
757756   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
758   MCFG_CASSETTE_INTERFACE("sol20_cass")
759757
760   MCFG_DEVICE_ADD("uart", AY31015, 0)
758   MCFG_DEVICE_ADD( "uart", AY31015, 0 )
761759   MCFG_AY31015_TX_CLOCK(4800.0)
762760   MCFG_AY31015_RX_CLOCK(4800.0)
763   MCFG_DEVICE_ADD("uart_s", AY31015, 0)
761   MCFG_DEVICE_ADD( "uart_s", AY31015, 0 )
764762   MCFG_AY31015_TX_CLOCK(4800.0)
765763   MCFG_AY31015_RX_CLOCK(4800.0)
766764   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
767765   MCFG_GENERIC_KEYBOARD_CB(WRITE8(sol20_state, kbd_put))
768
769   MCFG_SOFTWARE_LIST_ADD("cass_list", "sol20_cass")
770766MACHINE_CONFIG_END
771767
772768/* ROM definition */
trunk/src/mess/drivers/px4.c
r241749r241750
1919#include "machine/ram.h"
2020#include "machine/nvram.h"
2121#include "sound/speaker.h"
22
2223#include "bus/generic/slot.h"
2324#include "bus/generic/carts.h"
24#include "coreutil.h"
2525#include "px4.lh"
2626
2727
r241749r241750
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
3440
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
3557//**************************************************************************
3658//  MACROS
3759//**************************************************************************
r241749r241750
4567//  TYPE DEFINITIONS
4668//**************************************************************************
4769
48class px4_state : public driver_device,   public device_serial_interface
70class px4_state : public driver_device,
71               public device_serial_interface
4972{
5073public:
5174   px4_state(const machine_config &mconfig, device_type type, const char *tag) :
r241749r241750
5376   device_serial_interface(mconfig, *this),
5477   m_z80(*this, "maincpu"),
5578   m_ram(*this, RAM_TAG),
56   m_nvram(*this, "nvram"),
5779   m_centronics(*this, "centronics"),
5880   m_ext_cas(*this, "extcas"),
5981   m_ext_cas_timer(*this, "extcas_timer"),
6082   m_speaker(*this, "speaker"),
6183   m_sio(*this, "sio"),
6284   m_rs232(*this, "rs232"),
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),
85   m_caps1(*this, "capsule1"),
86   m_caps2(*this, "capsule2"),
87   m_rdsocket(*this, "ramdisk_socket"),
6688   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),
7089   m_artdir(0xff), m_artdor(0xff), m_artsr(0), m_artcr(0),
7190   m_swr(0),
7291   m_one_sec_int_enabled(true), m_alarm_int_enabled(true), m_key_int_enabled(true),
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)
92   m_ramdisk_address(0),
93   m_ear_last_state(0)
7894   { }
7995
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
18596   // internal devices
18697   required_device<cpu_device> m_z80;
18798   required_device<ram_device> m_ram;
188   required_device<nvram_device> m_nvram;
18999   required_device<centronics_device> m_centronics;
190100   required_device<cassette_image_device> m_ext_cas;
191101   required_device<timer_device> m_ext_cas_timer;
r241749r241750
194104   required_device<rs232_port_device> m_rs232;
195105   required_device<generic_slot_device> m_caps1;
196106   required_device<generic_slot_device> m_caps2;
107   optional_device<generic_slot_device> m_rdsocket;
197108
198109   memory_region *m_caps1_rom;
199110   memory_region *m_caps2_rom;
r241749r241750
215126   UINT8 m_vadr;
216127   UINT8 m_yoff;
217128
129   void gapnit_interrupt();
130
218131   // gapnio
219132   emu_timer *m_receive_timer;
220133   emu_timer *m_transmit_timer;
r241749r241750
224137   UINT8 m_artcr;
225138   UINT8 m_swr;
226139
140   void txd_w(int data);
141
227142   // 7508 internal
228143   bool m_one_sec_int_enabled;
229144   bool m_alarm_int_enabled;
r241749r241750
232147   UINT8 m_key_status;
233148   UINT8 m_interrupt_status;
234149
235   system_time m_time;
236   int m_clock_state;
150   // external ramdisk
151   offs_t m_ramdisk_address;
152   UINT8 *m_ramdisk;
237153
238154   // external cassette/barcode reader
239155   int m_ear_last_state;
240156
241   // serial
242   int m_sio_pin;
243   int m_serial_rx;
244   int m_rs232_dcd;
245   int m_rs232_cts;
157   void install_rom_capsule(address_space &space, int size, memory_region *mem);
246158
247   // centronics
248   int m_centronics_busy;
249   int m_centronics_perror;
250};
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();
251164
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   { }
165   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
262166
263   DECLARE_DRIVER_INIT( px4p );
167   DECLARE_WRITE_LINE_MEMBER( sio_rx_w );
168   DECLARE_WRITE_LINE_MEMBER( sio_pin_w );
264169
265   DECLARE_PALETTE_INIT( px4p );
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 );
266174
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 );
175   int m_sio_pin;
271176
272protected:
273   // driver_device overrides
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);
274214   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);
275226
276private:
277   required_device<nvram_device> m_rdnvram;
278   required_device<generic_slot_device> m_rdsocket;
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);
279231
280   offs_t m_ramdisk_address;
281   UINT8 *m_ramdisk;
232private:
233   DECLARE_WRITE_LINE_MEMBER( serial_rx_w );
282234};
283235
284236
r241749r241750
358310}
359311
360312// input capture register low command trigger
361READ8_MEMBER( px4_state::icrlc_r )
313READ8_MEMBER( px4_state::px4_icrlc_r )
362314{
363315   if (VERBOSE)
364      logerror("%s: icrlc_r\n", machine().describe_context());
316      logerror("%s: px4_icrlc_r\n", machine().describe_context());
365317
366318   // latch value
367319   m_frc_latch = m_frc_value;
r241749r241750
370322}
371323
372324// control register 1
373WRITE8_MEMBER( px4_state::ctrl1_w )
325WRITE8_MEMBER( px4_state::px4_ctrl1_w )
374326{
375327   const int rcv_rates[] = { 110, 150, 300, 600, 1200, 2400, 4800, 9600, 75, 1200, 19200, 38400, 200 };
376328   const int tra_rates[] = { 110, 150, 300, 600, 1200, 2400, 4800, 9600, 1200, 75, 19200, 38400, 200 };
377329
378330   if (VERBOSE)
379      logerror("%s: ctrl1_w (0x%02x)\n", machine().describe_context(), data);
331      logerror("%s: px4_ctrl1_w (0x%02x)\n", machine().describe_context(), data);
380332
381333   // baudrate generator
382334   int baud = data >> 4;
r241749r241750
394346}
395347
396348// input capture register high command trigger
397READ8_MEMBER( px4_state::icrhc_r )
349READ8_MEMBER( px4_state::px4_icrhc_r )
398350{
399351   if (VERBOSE)
400      logerror("%s: icrhc_r\n", machine().describe_context());
352      logerror("%s: px4_icrhc_r\n", machine().describe_context());
401353
402354   return (m_frc_latch >> 8) & 0xff;
403355}
404356
405357// command register
406WRITE8_MEMBER( px4_state::cmdr_w )
358WRITE8_MEMBER( px4_state::px4_cmdr_w )
407359{
408360   if (0)
409      logerror("%s: cmdr_w (0x%02x)\n", machine().describe_context(), data);
361      logerror("%s: px4_cmdr_w (0x%02x)\n", machine().describe_context(), data);
410362
411363   // clear overflow interrupt?
412364   if (BIT(data, 2))
r241749r241750
417369}
418370
419371// input capture register low barcode trigger
420READ8_MEMBER( px4_state::icrlb_r )
372READ8_MEMBER( px4_state::px4_icrlb_r )
421373{
422374   if (VERBOSE)
423      logerror("%s: icrlb_r\n", machine().describe_context());
375      logerror("%s: px4_icrlb_r\n", machine().describe_context());
424376
425377   return m_icrb & 0xff;
426378}
427379
428380// control register 2
429WRITE8_MEMBER( px4_state::ctrl2_w )
381WRITE8_MEMBER( px4_state::px4_ctrl2_w )
430382{
431383   if (VERBOSE)
432      logerror("%s: ctrl2_w (0x%02x)\n", machine().describe_context(), data);
384      logerror("%s: px4_ctrl2_w (0x%02x)\n", machine().describe_context(), data);
433385
434386   // bit 0, MIC, cassette output
435387   m_ext_cas->output( BIT(data, 0) ? -1.0 : +1.0);
r241749r241750
448400}
449401
450402// input capture register high barcode trigger
451READ8_MEMBER( px4_state::icrhb_r )
403READ8_MEMBER( px4_state::px4_icrhb_r )
452404{
453405   if (VERBOSE)
454      logerror("%s: icrhb_r\n", machine().describe_context());
406      logerror("%s: px4_icrhb_r\n", machine().describe_context());
455407
456408   // clear icf interrupt
457409   m_isr &= ~INT2_ICF;
r241749r241750
461413}
462414
463415// interrupt status register
464READ8_MEMBER( px4_state::isr_r )
416READ8_MEMBER( px4_state::px4_isr_r )
465417{
466418   if (VERBOSE)
467      logerror("%s: isr_r\n", machine().describe_context());
419      logerror("%s: px4_isr_r\n", machine().describe_context());
468420
469421   return m_isr;
470422}
471423
472424// interrupt enable register
473WRITE8_MEMBER( px4_state::ier_w )
425WRITE8_MEMBER( px4_state::px4_ier_w )
474426{
475427   if (0)
476      logerror("%s: ier_w (0x%02x)\n", machine().describe_context(), data);
428      logerror("%s: px4_ier_w (0x%02x)\n", machine().describe_context(), data);
477429
478430   m_ier = data;
479431   gapnit_interrupt();
480432}
481433
482434// status register
483READ8_MEMBER( px4_state::str_r )
435READ8_MEMBER( px4_state::px4_str_r )
484436{
485437   UINT8 data = 0;
486438
487439   if (0)
488      logerror("%s: str_r\n", machine().describe_context());
440      logerror("%s: px4_str_r\n", machine().describe_context());
489441
490442   data |= (m_ext_cas)->input() > 0 ? 1 : 0;
491443   data |= 1 << 1;   // BCRD, barcode reader input
r241749r241750
515467}
516468
517469// bank register
518WRITE8_MEMBER( px4_state::bankr_w )
470WRITE8_MEMBER( px4_state::px4_bankr_w )
519471{
520472   address_space &space_program = m_z80->space(AS_PROGRAM);
521473
522474   if (0)
523      logerror("%s: bankr_w (0x%02x)\n", machine().describe_context(), data);
475      logerror("%s: px4_bankr_w (0x%02x)\n", machine().describe_context(), data);
524476
525477   m_bankr = data;
526478
r241749r241750
553505}
554506
555507// serial io register
556READ8_MEMBER( px4_state::sior_r )
508READ8_MEMBER( px4_state::px4_sior_r )
557509{
558510   if (0)
559      logerror("%s: sior_r 0x%02x\n", machine().describe_context(), m_sior);
511      logerror("%s: px4_sior_r 0x%02x\n", machine().describe_context(), m_sior);
560512
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
581513   return m_sior;
582514}
583515
584516// serial io register
585WRITE8_MEMBER( px4_state::sior_w )
517WRITE8_MEMBER( px4_state::px4_sior_w )
586518{
587519   if (0)
588      logerror("%s: sior_w (0x%02x)\n", machine().describe_context(), data);
520      logerror("%s: px4_sior_w (0x%02x)\n", machine().describe_context(), data);
589521
590   // writing clock?
591   if (m_clock_state > 0)
522   m_sior = data;
523
524   switch (data)
592525   {
593      time_t time = m_time.time;
594      struct tm *t = localtime(&time);
526   case 0x01:
595527
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      }
528      if (VERBOSE)
529         logerror("7508 cmd: Power OFF\n");
619530
620      // update
621      m_time.set(mktime(t));
531      break;
622532
623      // done?
624      if (m_clock_state == 9)
625         m_clock_state = 0;
626   }
627   else
628   {
629      m_sior = data;
533   case 0x02:
630534
631      switch (data)
535      if (VERBOSE)
536         logerror("7508 cmd: Read Status\n");
537
538      if (m_interrupt_status != 0)
632539      {
633      case 0x01:
634540         if (VERBOSE)
635            logerror("7508 cmd: Power OFF\n");
541            logerror("> 7508 has interrupts pending: 0x%02x\n", m_interrupt_status);
636542
637         break;
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      }
638557
639      case 0x02:
640         if (VERBOSE)
641            logerror("7508 cmd: Read Status\n");
558      break;
642559
643         if (m_interrupt_status != 0)
644         {
645            if (VERBOSE)
646               logerror("> 7508 has interrupts pending: 0x%02x\n", m_interrupt_status);
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;
647567
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         }
568   case 0x06:
662569
663         break;
570      if (VERBOSE)
571         logerror("7508 cmd: KB Interrupt OFF\n");
664572
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;
573      m_key_int_enabled = false;
574      break;
672575
673      case 0x06:
674         if (VERBOSE)
675            logerror("7508 cmd: KB Interrupt OFF\n");
576   case 0x16:
676577
677         m_key_int_enabled = false;
678         break;
578      if (VERBOSE)
579         logerror("7508 cmd: KB Interrupt ON\n");
679580
680      case 0x16:
681         if (VERBOSE)
682            logerror("7508 cmd: KB Interrupt ON\n");
581      m_key_int_enabled = true;
582      break;
683583
684         m_key_int_enabled = true;
685         break;
584   case 0x07: if (VERBOSE) logerror("7508 cmd: Clock Read\n"); break;
585   case 0x17: if (VERBOSE) logerror("7508 cmd: Clock Write\n"); break;
686586
687      case 0x07:
688         if (VERBOSE)
689            logerror("7508 cmd: Clock Read\n");
587   case 0x08:
690588
691         m_clock_state = 1;
692         break;
589      if (VERBOSE)
590         logerror("7508 cmd: Power Switch Read\n");
693591
694      case 0x17:
695         if (VERBOSE)
696            logerror("7508 cmd: Clock Write\n");
592      // indicate that the power switch is in the "ON" position
593      m_sior = 0x01;
594      break;
697595
698         m_clock_state = 1;
699         break;
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;
700600
701      case 0x08:
702         if (VERBOSE)
703            logerror("7508 cmd: Power Switch Read\n");
601   case 0x0a:
704602
705         // indicate that the power switch is in the "ON" position
706         m_sior = 0x01;
707         break;
603      if (VERBOSE)
604         logerror("7508 cmd: DIP Switch Read\n");
605      m_sior = ioport("dips")->read();
606      break;
708607
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;
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;
713612
714      case 0x0a:
715         if (VERBOSE)
716            logerror("7508 cmd: DIP Switch Read\n");
717         m_sior = ioport("dips")->read();
718         break;
613   case 0x0d:
719614
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;
615      if (VERBOSE)
616         logerror("7508 cmd: 1 sec. Interrupt OFF\n");
724617
725      case 0x0d:
726         if (VERBOSE)
727            logerror("7508 cmd: 1 sec. Interrupt OFF\n");
618      m_one_sec_int_enabled = false;
619      break;
728620
729         m_one_sec_int_enabled = false;
730         break;
621   case 0x1d:
731622
732      case 0x1d:
733         if (VERBOSE)
734            logerror("7508 cmd: 1 sec. Interrupt ON\n");
623      if (VERBOSE)
624         logerror("7508 cmd: 1 sec. Interrupt ON\n");
735625
736         m_one_sec_int_enabled = true;
737         break;
626      m_one_sec_int_enabled = true;
627      break;
738628
739      case 0x0e:
740         if (VERBOSE)
741            logerror("7508 cmd: KB Clear\n");
629   case 0x0e:
742630
743         m_sior = 0xbf;
744         break;
631      if (VERBOSE)
632         logerror("7508 cmd: KB Clear\n");
745633
746      case 0x0f: if (VERBOSE) logerror("7508 cmd: System Reset\n"); break;
747      }
634      m_sior = 0xbf;
635      break;
636
637   case 0x0f: if (VERBOSE) logerror("7508 cmd: System Reset\n"); break;
748638   }
749639}
750640
r241749r241750
754644//**************************************************************************
755645
756646// vram start address register
757WRITE8_MEMBER( px4_state::vadr_w )
647WRITE8_MEMBER( px4_state::px4_vadr_w )
758648{
759649   if (VERBOSE)
760      logerror("%s: vadr_w (0x%02x)\n", machine().describe_context(), data);
650      logerror("%s: px4_vadr_w (0x%02x)\n", machine().describe_context(), data);
761651
762652   m_vadr = data;
763653}
764654
765655// y offset register
766WRITE8_MEMBER( px4_state::yoff_w )
656WRITE8_MEMBER( px4_state::px4_yoff_w )
767657{
768658   if (VERBOSE)
769      logerror("%s: yoff_w (0x%02x)\n", machine().describe_context(), data);
659      logerror("%s: px4_yoff_w (0x%02x)\n", machine().describe_context(), data);
770660
771661   m_yoff = data;
772662}
773663
774664// frame register
775WRITE8_MEMBER( px4_state::fr_w )
665WRITE8_MEMBER( px4_state::px4_fr_w )
776666{
777667   if (VERBOSE)
778      logerror("%s: fr_w (0x%02x)\n", machine().describe_context(), data);
668      logerror("%s: px4_fr_w (0x%02x)\n", machine().describe_context(), data);
779669}
780670
781671// speed-up register
782WRITE8_MEMBER( px4_state::spur_w )
672WRITE8_MEMBER( px4_state::px4_spur_w )
783673{
784674   if (VERBOSE)
785      logerror("%s: spur_w (0x%02x)\n", machine().describe_context(), data);
675      logerror("%s: px4_spur_w (0x%02x)\n", machine().describe_context(), data);
786676}
787677
788678
r241749r241750
838728   if (ART_TX_ENABLED)
839729   {
840730      if (ART_BREAK)
841         txd_w(0); // transmit break
731      {
732         // transmit break
733         txd_w(0);
734      }
842735      else
843         txd_w(transmit_register_get_data_bit()); // transmit data
736      {
737         // transmit data
738         txd_w(transmit_register_get_data_bit());
739      }
844740   }
845741   else
846      txd_w(1); // transmit mark
742   {
743      // transmit mark
744      txd_w(1);
745   }
847746}
848747
849748void px4_state::tra_complete()
r241749r241750
864763void px4_state::rcv_callback()
865764{
866765   if (ART_RX_ENABLED)
867      receive_register_update_bit(m_serial_rx); // receive data
766   {
767      // receive data
768      receive_register_update_bit(m_serial_rx);
769   }
868770}
869771
870772void px4_state::rcv_complete()
r241749r241750
898800}
899801
900802// cartridge interface
901READ8_MEMBER( px4_state::ctgif_r )
803READ8_MEMBER( px4_state::px4_ctgif_r )
902804{
903805   if (VERBOSE)
904      logerror("%s: ctgif_r @ 0x%02x\n", machine().describe_context(), offset);
806      logerror("%s: px4_ctgif_r @ 0x%02x\n", machine().describe_context(), offset);
905807
906808   return 0x00;
907809}
908810
909811// cartridge interface
910WRITE8_MEMBER( px4_state::ctgif_w )
812WRITE8_MEMBER( px4_state::px4_ctgif_w )
911813{
912814   if (VERBOSE)
913      logerror("%s: ctgif_w (0x%02x @ 0x%02x)\n", machine().describe_context(), data, offset);
815      logerror("%s: px4_ctgif_w (0x%02x @ 0x%02x)\n", machine().describe_context(), data, offset);
914816}
915817
916818// art data input register
917READ8_MEMBER( px4_state::artdir_r )
819READ8_MEMBER( px4_state::px4_artdir_r )
918820{
919821   if (VERBOSE)
920      logerror("%s: artdir_r (%02x)\n", machine().describe_context(), m_artdir);
822      logerror("%s: px4_artdir_r (%02x)\n", machine().describe_context(), m_artdir);
921823
922824   // clear ready
923825   m_artsr &= ~ART_RXRDY;
r241749r241750
930832}
931833
932834// art data output register
933WRITE8_MEMBER( px4_state::artdor_w )
835WRITE8_MEMBER( px4_state::px4_artdor_w )
934836{
935837   if (VERBOSE)
936      logerror("%s: artdor_w (0x%02x)\n", machine().describe_context(), data);
838      logerror("%s: px4_artdor_w (0x%02x)\n", machine().describe_context(), data);
937839
938840   m_artdor = data;
939841
r241749r241750
951853}
952854
953855// art status register
954READ8_MEMBER( px4_state::artsr_r )
856READ8_MEMBER( px4_state::px4_artsr_r )
955857{
956858   if (0)
957      logerror("%s: artsr_r (%02x)\n", machine().describe_context(), m_artsr);
859      logerror("%s: px4_artsr_r (%02x)\n", machine().describe_context(), m_artsr);
958860
959861   return m_artsr;
960862}
961863
962864// art mode register
963WRITE8_MEMBER( px4_state::artmr_w )
865WRITE8_MEMBER( px4_state::px4_artmr_w )
964866{
965867   int data_bit_count = BIT(data, 2) ? 8 : 7;
966868   parity_t parity = BIT(data, 4) ? (BIT(data, 5) ? PARITY_EVEN : PARITY_ODD) : PARITY_NONE;
r241749r241750
972874   set_data_frame(1, data_bit_count, parity, stop_bits);
973875}
974876
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
975887// io status register
976READ8_MEMBER( px4_state::iostr_r )
888READ8_MEMBER( px4_state::px4_iostr_r )
977889{
978890   UINT8 data = 0;
979891
r241749r241750
995907   data |= 0 << 7;   // bit 7, caud - audio input from cartridge
996908
997909   if (0)
998      logerror("%s: iostr_r: rx = %d, dcd = %d, cts = %d\n", machine().describe_context(), BIT(data, 3), BIT(data, 4), BIT(data, 5));
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));
999911
1000912   return data;
1001913}
1002914
1003915// art command register
1004WRITE8_MEMBER( px4_state::artcr_w )
916WRITE8_MEMBER( px4_state::px4_artcr_w )
1005917{
1006918   if (VERBOSE)
1007      logerror("%s: artcr_w (0x%02x)\n", machine().describe_context(), data);
919      logerror("%s: px4_artcr_w (0x%02x)\n", machine().describe_context(), data);
1008920
1009921   m_artcr = data;
1010922
r241749r241750
1018930}
1019931
1020932// switch register
1021WRITE8_MEMBER( px4_state::swr_w )
933WRITE8_MEMBER( px4_state::px4_swr_w )
1022934{
1023935   if (VERBOSE)
1024936   {
r241749r241750
1032944}
1033945
1034946// io control register
1035WRITE8_MEMBER( px4_state::ioctlr_w )
947WRITE8_MEMBER( px4_state::px4_ioctlr_w )
1036948{
1037949   if (VERBOSE)
1038      logerror("%s: ioctlr_w (0x%02x)\n", machine().describe_context(), data);
950      logerror("%s: px4_ioctlr_w (0x%02x)\n", machine().describe_context(), data);
1039951
1040952   m_centronics->write_strobe(!BIT(data, 0));
1041953   m_centronics->write_init(BIT(data, 1));
r241749r241750
1067979      m_isr |= INT0_7508;
1068980      gapnit_interrupt();
1069981   }
1070
1071   // update clock
1072   m_time.set(m_time.time + 1);
1073982}
1074983
1075984INPUT_CHANGED_MEMBER( px4_state::key_callback )
r241749r241750
11161025//  EXTERNAL RAM-DISK
11171026//**************************************************************************
11181027
1119WRITE8_MEMBER( px4p_state::ramdisk_address_w )
1028WRITE8_MEMBER( px4_state::px4_ramdisk_address_w )
11201029{
11211030   switch (offset)
11221031   {
r241749r241750
11261035   }
11271036}
11281037
1129READ8_MEMBER( px4p_state::ramdisk_data_r )
1038READ8_MEMBER( px4_state::px4_ramdisk_data_r )
11301039{
11311040   UINT8 ret = 0xff;
11321041
r241749r241750
11461055   return ret;
11471056}
11481057
1149WRITE8_MEMBER( px4p_state::ramdisk_data_w )
1058WRITE8_MEMBER( px4_state::px4_ramdisk_data_w )
11501059{
11511060   if (m_ramdisk_address < 0x20000)
11521061      m_ramdisk[m_ramdisk_address] = data;
r241749r241750
11541063   m_ramdisk_address = (m_ramdisk_address & 0xffff00) | ((m_ramdisk_address & 0xff) + 1);
11551064}
11561065
1157READ8_MEMBER( px4p_state::ramdisk_control_r )
1066READ8_MEMBER( px4_state::px4_ramdisk_control_r )
11581067{
11591068   // bit 7 determines the presence of a ram-disk
11601069   return 0x7f;
r241749r241750
12181127   membank("bank2")->set_base(m_ram->pointer() + 0x8000);
12191128}
12201129
1221DRIVER_INIT_MEMBER( px4p_state, px4p )
1130DRIVER_INIT_MEMBER( px4_state, px4p )
12221131{
12231132   DRIVER_INIT_CALL(px4);
12241133
r241749r241750
12311140   astring region_tag;
12321141   m_caps1_rom = memregion(region_tag.cpy(m_caps1->tag()).cat(GENERIC_ROM_REGION_TAG));
12331142   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);
12391143}
12401144
12411145void px4_state::machine_reset()
12421146{
1243   m_artsr = ART_TXRDY | ART_TXEMPTY | (!m_rs232->dsr_r() << 7);
1147   m_artsr = ART_TXRDY | ART_TXEMPTY;
12441148   receive_register_reset();
12451149   transmit_register_reset();
12461150}
12471151
1248void px4p_state::machine_start()
1152MACHINE_START_MEMBER( px4_state, px4_ramdisk )
12491153{
12501154   px4_state::machine_start();
1251   m_rdnvram->set_base(m_ramdisk, 0x20000);
1155   machine().device<nvram_device>("nvram")->set_base(m_ramdisk, 0x20000);
12521156}
12531157
12541158
r241749r241750
12651169   ADDRESS_MAP_UNMAP_HIGH
12661170   ADDRESS_MAP_GLOBAL_MASK(0xff)
12671171   // gapnit, 0x00-0x07
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 )
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)
12751179   AM_RANGE(0x07, 0x07) AM_NOP
12761180   // gapndl, 0x08-0x0f
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 )
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)
12811185   AM_RANGE(0x0c, 0x0f) AM_NOP
12821186   // gapnio, 0x10-0x1f
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 )
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)
12871191   AM_RANGE(0x17, 0x17) AM_DEVWRITE("cent_data_out", output_latch_device, write)
1288   AM_RANGE(0x18, 0x18) AM_WRITE( swr_w )
1289   AM_RANGE(0x19, 0x19) AM_WRITE( ioctlr_w )
1192   AM_RANGE(0x18, 0x18) AM_WRITE(px4_swr_w)
1193   AM_RANGE(0x19, 0x19) AM_WRITE(px4_ioctlr_w)
12901194   AM_RANGE(0x1a, 0x1f) AM_NOP
12911195ADDRESS_MAP_END
12921196
1293static ADDRESS_MAP_START( px4p_io, AS_IO, 8, px4p_state )
1197static ADDRESS_MAP_START( px4p_io, AS_IO, 8, px4_state )
12941198   AM_IMPORT_FROM(px4_io)
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)
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)
12981202ADDRESS_MAP_END
12991203
13001204
r241749r241750
14571361//  PALETTE
14581362//**************************************************************************
14591363
1460PALETTE_INIT_MEMBER( px4_state, px4 )
1364PALETTE_INIT_MEMBER(px4_state, px4)
14611365{
14621366   palette.set_pen_color(0, rgb_t(138, 146, 148));
14631367   palette.set_pen_color(1, rgb_t(92, 83, 88));
14641368}
14651369
1466PALETTE_INIT_MEMBER( px4p_state, px4p )
1370PALETTE_INIT_MEMBER(px4_state, px4p)
14671371{
14681372   palette.set_pen_color(0, rgb_t(149, 157, 130));
14691373   palette.set_pen_color(1, rgb_t(92, 83, 88));
r241749r241750
15041408   // internal ram
15051409   MCFG_RAM_ADD(RAM_TAG)
15061410   MCFG_RAM_DEFAULT_SIZE("64k")
1507   MCFG_NVRAM_ADD_NO_FILL("nvram")
15081411
15091412   // centronics printer
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))
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))
15131416
15141417   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
15151418
r241749r241750
15371440
15381441   // software list
15391442   MCFG_SOFTWARE_LIST_ADD("cart_list", "px4_cart")
1540   MCFG_SOFTWARE_LIST_ADD("epson_cpm_list", "epson_cpm")
15411443MACHINE_CONFIG_END
15421444
1543static MACHINE_CONFIG_DERIVED_CLASS( px4p, px4, px4p_state )
1445static MACHINE_CONFIG_DERIVED( px4p, px4 )
15441446   MCFG_CPU_MODIFY("maincpu")
15451447   MCFG_CPU_IO_MAP(px4p_io)
15461448
1547   MCFG_NVRAM_ADD_0FILL("rdnvram")
1449   MCFG_MACHINE_START_OVERRIDE(px4_state, px4_ramdisk)
1450   MCFG_NVRAM_ADD_0FILL("nvram")
15481451
15491452   MCFG_PALETTE_MODIFY("palette")
1550   MCFG_PALETTE_INIT_OWNER(px4p_state, px4p)
1453   MCFG_PALETTE_INIT_OWNER(px4_state, px4p)
15511454
15521455   MCFG_GENERIC_CARTSLOT_ADD("ramdisk_socket", generic_plain_slot, "px4_cart")
15531456MACHINE_CONFIG_END
r241749r241750
15611464
15621465ROM_START( px4 )
15631466   ROM_REGION(0x8000, "os", 0)
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))
1467   ROM_LOAD("m25122aa_po_px4.10c", 0x0000, 0x8000, CRC(62d60dc6) SHA1(3d32ec79a317de7c84c378302e95f48d56505502))
15681468
15691469   ROM_REGION(0x1000, "slave", 0)
15701470   ROM_LOAD("upd7508.bin", 0x0000, 0x1000, NO_DUMP)
r241749r241750
15721472
15731473ROM_START( px4p )
15741474   ROM_REGION(0x8000, "os", 0)
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))
1475   ROM_LOAD("b0_pxa.10c", 0x0000, 0x8000, CRC(d74b9ef5) SHA1(baceee076c12f5a16f7a26000e9bc395d021c455))
15791476
15801477   ROM_REGION(0x1000, "slave", 0)
15811478   ROM_LOAD("upd7508.bin", 0x0000, 0x1000, NO_DUMP)
r241749r241750
15861483//  GAME DRIVERS
15871484//**************************************************************************
15881485
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 )
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 )
trunk/src/mess/drivers/px8.c
r241749r241750
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")
807804MACHINE_CONFIG_END
808805
809806/***************************************************************************
trunk/src/mess/drivers/rmnimbus.c
r241749r241750
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_devices, "printer")
181   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
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_devices, "printer")
499   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
543543   MCFG_PALETTE_INIT_OWNER(samcoupe_state, samcoupe)
544544
545545   /* devices */
546   MCFG_CENTRONICS_ADD("lpt1", centronics_devices, "printer")
546   MCFG_CENTRONICS_ADD("lpt1", centronics_printers, "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_devices, "printer")
551   MCFG_CENTRONICS_ADD("lpt2", centronics_printers, "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
r241749r241750
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_devices, "printer")
858   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
859859
860860   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
861861
trunk/src/mess/drivers/sh4robot.c
r241749r241750
8888/* Driver */
8989
9090/*    YEAR  NAME    PARENT  COMPAT   MACHINE    INPUT    INIT    CONFIG COMPANY   FULLNAME       FLAGS */
91COMP( 20??, sh4robot,  0,       0,  sh4robot,   sh4robot, driver_device,   0,   "<unknown>", "Robot", GAME_NOT_WORKING | GAME_NO_SOUND)
91COMP( ????, sh4robot,  0,       0,  sh4robot,   sh4robot, driver_device,   0,   "", "Robot", GAME_NOT_WORKING | GAME_NO_SOUND)
trunk/src/mess/drivers/simon.c
r241749r241750
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
r241749r241750
426426   MCFG_AY31015_RX_CLOCK(4800.0)
427427
428428   /* printer */
429   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "covox")
429   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "covox")
430   MCFG_SLOT_OPTION_ADD( "covox", CENTRONICS_COVOX )
430431
431432   /* The use of the parallel port as a general purpose port is not emulated.
432433   Currently the only use is to read the printer status in the Centronics CENDRV bios routine. */
trunk/src/mess/drivers/spc1000.c
r241749r241750
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 */
12628
29
12730#include "emu.h"
12831#include "cpu/z80/z80.h"
12932#include "machine/ram.h"
trunk/src/mess/drivers/specpls3.c
r241749r241750
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", "specpls3_flop")
385   MCFG_SOFTWARE_LIST_ADD("flop_list","spectrum_flop")
386386MACHINE_CONFIG_END
387387
388388/***************************************************************************
trunk/src/mess/drivers/spectrum.c
r241749r241750
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_cart")
718   MCFG_SOFTWARE_LIST_ADD("cart_list","spectrum")
719719MACHINE_CONFIG_END
720720
721721MACHINE_CONFIG_DERIVED( spectrum, spectrum_common )
trunk/src/mess/drivers/super80.c
r241749r241750
719719   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
720720
721721   /* printer */
722   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
722   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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")
r241749r241750
806806   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
807807
808808   /* printer */
809   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
809   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
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("Right Grph") PORT_CODE(KEYCODE_RALT)       PORT_CHAR(UCHAR_MAMEKEY(PGDN))
168   PORT_BIT (0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Rright 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)
r241749r241750
295295   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
296296
297297   /* printer */
298   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
298   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
299299   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(svi318_state, write_centronics_busy))
300300
301301   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241749r241750
424424   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
425425
426426   /* printer */
427   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
427   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
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_devices, "printer")
847   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
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_devices, "printer")
1454   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
14551455   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(thomson_state, write_centronics_busy))
14561456
14571457   /* internal ram */
r241749r241750
16701670   MCFG_PIA_CB2_HANDLER(NULL)
16711671   MCFG_PIA_IRQA_HANDLER(NULL)
16721672
1673   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
1673   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
16741674   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(thomson_state, write_centronics_busy))
16751675
16761676   MCFG_DEVICE_MODIFY("mc6846")
r241749r241750
18261826   MCFG_PIA_IRQA_HANDLER(NULL)
18271827   MCFG_PIA_IRQB_HANDLER(WRITELINE(thomson_state, thom_firq_1))
18281828
1829   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
1829   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
18301830   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(thomson_state, write_centronics_busy))
18311831
18321832   MCFG_DEVICE_MODIFY("mc6846")
r241749r241750
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_devices, "printer")
2179   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
21802180   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(thomson_state, write_centronics_busy))
21812181
21822182   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
r241749r241750
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_devices, "printer")
2419   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
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_devices, "printer")
689   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
267267   MCFG_FRAGMENT_ADD(tmc600_video)
268268
269269   /* devices */
270   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
270   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
271271
272272   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
273273
trunk/src/mess/drivers/trs80.c
r241749r241750
601601
602602   MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(trs80_floppy_interface)
603603
604   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
604   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
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_devices, "printer")
759   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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))
r241749r241750
848848
849849   MCFG_PIC8259_ADD(AM9519A_TAG, INPUTLINE(M68000_TAG, M68K_IRQ_5), VCC, NULL )
850850
851   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
851   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
720720   MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
721721   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
722722
723   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
723   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
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_devices, "printer")
791   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
11291129   MCFG_SOFTWARE_LIST_ADD("hdd_list", "v1050_hdd")
11301130
11311131   // printer
1132   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
1132   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
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
1444    TODO:
1545
1646    - floppy 8048
r241749r241750
2959
3060
3161//**************************************************************************
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//**************************************************************************
32200//  ADDRESS MAPS
33201//**************************************************************************
34202
r241749r241750
38206
39207static ADDRESS_MAP_START( victor9k_mem, AS_PROGRAM, 8, victor9k_state )
40208//  AM_RANGE(0x00000, 0xdffff) AM_RAM
41   AM_RANGE(0x20000, 0xdffff) AM_NOP
42209   AM_RANGE(0xe0000, 0xe0001) AM_DEVREADWRITE(I8259A_TAG, pic8259_device, read, write)
43210   AM_RANGE(0xe0020, 0xe0023) AM_DEVREADWRITE(I8253_TAG, pit8253_device, read, write)
44211   AM_RANGE(0xe0040, 0xe0043) AM_DEVREADWRITE(UPD7201_TAG, upd7201_device, cd_ba_r, cd_ba_w)
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)
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)
54221   AM_RANGE(0xf0000, 0xf0fff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("video_ram")
55222   AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION(I8088_TAG, 0)
56223ADDRESS_MAP_END
57224
58225
226//-------------------------------------------------
227//  ADDRESS_MAP( floppy_io )
228//-------------------------------------------------
59229
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
60240//**************************************************************************
61241//  INPUT PORTS
62242//**************************************************************************
r241749r241750
161341{
162342   m_ssda_irq = state;
163343
164   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_fdc_irq);
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);
165345}
166346
167347
r241749r241750
233413{
234414   m_via1_irq = state;
235415
236   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_fdc_irq);
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);
237417}
238418
239419WRITE8_MEMBER( victor9k_state::via2_pa_w )
r241749r241750
300480{
301481   m_via2_irq = state;
302482
303   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_fdc_irq);
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);
304484}
305485
306486
r241749r241750
340520{
341521   m_via3_irq = state;
342522
343   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_fdc_irq);
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);
344524}
345525
346526
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
347767//-------------------------------------------------
348768//  VICTOR9K_KEYBOARD_INTERFACE( kb_intf )
349769//-------------------------------------------------
350770
351771WRITE_LINE_MEMBER( victor9k_state::kbrdy_w )
352772{
353   //logerror("KBRDY %u\n", state);
354773   m_via2->write_cb1(state);
355774
356775   m_pic->ir6_w(state ? CLEAR_LINE : ASSERT_LINE);
r241749r241750
358777
359778WRITE_LINE_MEMBER( victor9k_state::kbdata_w )
360779{
361   //logerror("KBDATA %u\n", state);
362780   m_via2->write_cb2(state);
363781   m_via2->write_pa6(state);
364782}
365783
784//-------------------------------------------------
785//  SLOT_INTERFACE( victor9k_floppies )
786//-------------------------------------------------
366787
367WRITE_LINE_MEMBER( victor9k_state::fdc_irq_w )
788void victor9k_state::ready0_cb(floppy_image_device *device, int state)
368789{
369   m_fdc_irq = state;
790   m_rdy0 = state;
370791
371   m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_fdc_irq);
792   m_via5->write_ca2(m_rdy0);
372793}
373794
795int victor9k_state::load0_cb(floppy_image_device *device)
796{
797   m_ds0 = 0;
374798
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
375839//**************************************************************************
376840//  MACHINE INITIALIZATION
377841//**************************************************************************
378842
843//-------------------------------------------------
844//  MACHINE_START( victor9k )
845//-------------------------------------------------
846
379847void victor9k_state::machine_start()
380848{
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));
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));
389856
390857   // memory banking
391858   address_space &program = m_maincpu->space(AS_PROGRAM);
392859   program.install_ram(0x00000, m_ram->size() - 1, m_ram->pointer());
393}
394860
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();
861   m_via5->write_ca1(m_brdy);
862   m_via6->write_ca1(m_gcrerr);
405863}
406864
407865
866
408867//**************************************************************************
409868//  MACHINE CONFIGURATION
410869//**************************************************************************
r241749r241750
419878   MCFG_CPU_PROGRAM_MAP(victor9k_mem)
420879   MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE(I8259A_TAG, pic8259_device, inta_cb)
421880
881   MCFG_CPU_ADD(I8048_TAG, I8048, XTAL_30MHz/6)
882   MCFG_CPU_IO_MAP(floppy_io)
883
422884   // video hardware
423885   MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
424886   MCFG_SCREEN_REFRESH_RATE(50)
r241749r241750
490952   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via3_pb_w))
491953   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via3_irq_w))
492954
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
493976   MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL)
494977   MCFG_RS232_RXD_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, rxa_w))
495978   MCFG_RS232_DCD_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, dcda_w))
r241749r241750
508991   MCFG_VICTOR9K_KBRDY_HANDLER(WRITELINE(victor9k_state, kbrdy_w))
509992   MCFG_VICTOR9K_KBDATA_HANDLER(WRITELINE(victor9k_state, kbdata_w))
510993
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
516994   // internal ram
517995   MCFG_RAM_ADD(RAM_TAG)
518996   MCFG_RAM_DEFAULT_SIZE("128K")
r241749r241750
5411019   ROM_SYSTEM_BIOS( 1, "univ", "Universal" )
5421020   ROMX_LOAD( "v9000 univ. fe f3f7 13db.7j", 0x0000, 0x1000, CRC(25c7a59f) SHA1(8784e9aa7eb9439f81e18b8e223c94714e033911), ROM_BIOS(2) )
5431021   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) )
5441028ROM_END
5451029
5461030
trunk/src/mess/drivers/wangpc.c
r241749r241750
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_devices, "printer")
1130   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
3535#include "wswan.lh"
3636
3737static ADDRESS_MAP_START (wswan_mem, AS_PROGRAM, 8, wswan_state)
38   AM_RANGE(0x00000, 0x03fff) AM_DEVREADWRITE("vdp", wswan_video_device, vram_r, vram_w)       // 16kb RAM / 4 colour tiles
38   AM_RANGE(0x00000, 0x03fff) AM_RAM       // 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_DEVREADWRITE("vdp", wswan_video_device, vram_r, vram_w)       // 16kb RAM / 4 colour tiles, 16 colour tiles + palettes
45   AM_RANGE(0x00000, 0x0ffff) AM_RAM       // 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
r241749r241750
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   {
r241749r241750
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 )
r241749r241750
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
114109   MCFG_SCREEN_ADD("screen", LCD)
115110   MCFG_SCREEN_REFRESH_RATE(75)
116111   MCFG_SCREEN_VBLANK_TIME(0)
117   MCFG_SCREEN_UPDATE_DEVICE("vdp", wswan_video_device, screen_update)
118   MCFG_SCREEN_SIZE(WSWAN_X_PIXELS, WSWAN_Y_PIXELS)
112   MCFG_SCREEN_UPDATE_DRIVER(wswan_state, screen_update)
113   MCFG_SCREEN_SIZE( WSWAN_X_PIXELS, WSWAN_Y_PIXELS )
119114   MCFG_SCREEN_VISIBLE_AREA(0*8, WSWAN_X_PIXELS - 1, 0, WSWAN_Y_PIXELS - 1)
120115   MCFG_SCREEN_PALETTE("palette")
121116
r241749r241750
146141static MACHINE_CONFIG_DERIVED( wscolor, wswan )
147142   MCFG_CPU_MODIFY("maincpu")
148143   MCFG_CPU_PROGRAM_MAP(wscolor_mem)
149   MCFG_MACHINE_START_OVERRIDE(wswan_state, wscolor)
144   MCFG_MACHINE_START_OVERRIDE(wswan_state, wscolor )
150145
151   MCFG_DEVICE_MODIFY("vdp")
152   MCFG_WSWAN_VIDEO_TYPE(VDP_TYPE_WSC)
153
154146   MCFG_PALETTE_MODIFY("palette")
155147   MCFG_PALETTE_ENTRIES(4096)
156   MCFG_PALETTE_INIT_OWNER(wswan_state, wscolor)
148   MCFG_PALETTE_INIT_OWNER(wswan_state, wscolor )
157149
158150   /* software lists */
159151   MCFG_DEVICE_REMOVE("cart_list")
trunk/src/mess/drivers/x07.c
r241749r241750
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")
15241523MACHINE_CONFIG_END
15251524
15261525/* ROM definition */
trunk/src/mess/drivers/xerox820.c
r241749r241750
2525    - Xerox 16/8
2626    - Emerald Microware X120 board
2727    - type in Monitor v1.0 from manual
28    - ASCII keyboard
29    - low-profile keyboard
28    - proper keyboard emulation (MCU?)
3029
3130    http://users.telenet.be/lust/Xerox820/index.htm
3231    http://www.classiccmp.org/dunfield/img41867/system.htm
r241749r241750
3938
4039
4140#include "includes/xerox820.h"
41#include "bus/rs232/rs232.h"
4242
43#define KEYBOARD_TAG "keyboard"
44
4345/* Read/Write Handlers */
4446
4547void xerox820_state::bankswitch(int bank)
r241749r241750
6971   if (bank)
7072   {
7173      /* ROM */
72      program.install_rom(0x0000, 0x1fff, m_rom->base());
73      program.unmap_readwrite(0x2000, 0x2fff);
74      program.install_rom(0x0000, 0x17ff, m_rom->base());
75      program.unmap_readwrite(0x1800, 0x2fff);
7476      program.install_ram(0x3000, 0x3fff, m_video_ram);
7577      program.unmap_readwrite(0x4000, 0xbfff);
7678   }
r241749r241750
317319
318320   */
319321
320   return m_kb->read() ^ 0xff;
322   return m_keydata;
321323};
322324
323325WRITE8_MEMBER( xerox820ii_state::rdpio_pb_w )
r241749r241750
404406   m_sio->txca_w(state);
405407}
406408
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
407418/* Video */
408419
409420UINT32 xerox820_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
r241749r241750
458469void xerox820_state::machine_start()
459470{
460471   // state saving
472   save_item(NAME(m_keydata));
461473   save_item(NAME(m_scroll));
462474   save_item(NAME(m_ncset2));
463475   save_item(NAME(m_vatt));
r241749r241750
614626   MCFG_COM8116_FR_HANDLER(WRITELINE(xerox820_state, fr_w))
615627   MCFG_COM8116_FT_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxtxcb_w))
616628
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))
629   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
630   MCFG_GENERIC_KEYBOARD_CB(WRITE8(xerox820_state, kbd_w))
619631
620632   /* internal ram */
621633   MCFG_RAM_ADD(RAM_TAG)
r241749r241750
701713   MCFG_COM8116_FR_HANDLER(WRITELINE(xerox820_state, fr_w))
702714   MCFG_COM8116_FT_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxtxcb_w))
703715
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))
716   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
717   MCFG_GENERIC_KEYBOARD_CB(WRITE8(xerox820_state, kbd_w))
706718
707719   // SASI bus
708720   MCFG_DEVICE_ADD(SASIBUS_TAG, SCSI_PORT, 0)
r241749r241750
746758
747759ROM_START( bigboard )
748760   ROM_REGION( 0x1000, Z80_TAG, 0 )
749   ROM_LOAD( "bigboard.u67", 0x0000, 0x0800, CRC(5a85a228) SHA1(d51a2cbd0aae80315bda9530275aabfe8305364e) )
761   ROM_LOAD( "bigboard.u67", 0x0000, 0x0800, CRC(5a85a228) SHA1(d51a2cbd0aae80315bda9530275aabfe8305364e))
750762
751763   ROM_REGION( 0x800, "chargen", 0 )
752764   ROM_LOAD( "bigboard.u73", 0x0000, 0x0800, CRC(10bf0d81) SHA1(7ec73670a4d9d6421a5d6a4c4edc8b7c87923f6c) )
r241749r241750
772784
773785   ROM_REGION( 0x800, "chargen", 0 )
774786   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 )
775790ROM_END
776791
777792ROM_START( x820ii )
778   ROM_REGION( 0x2000, Z80_TAG, 0 )
793   ROM_REGION( 0x1800, Z80_TAG, 0 )
779794   ROM_DEFAULT_BIOS( "v404" )
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
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) )
807799
808800   ROM_REGION( 0x1000, "chargen", 0 )
809801   ROM_LOAD( "x820ii.u57", 0x0000, 0x0800, CRC(1a50f600) SHA1(df4470c80611c14fa7ea8591f741fbbecdfe4fd9) )
810802   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) )
811806ROM_END
812807
813808ROM_START( x168 )
814   ROM_REGION( 0x2000, Z80_TAG, 0 )
809   ROM_REGION( 0x1800, Z80_TAG, 0 )
815810   ROM_DEFAULT_BIOS( "v404" )
816   ROM_SYSTEM_BIOS( 0, "v404", "Balcones Operating System v4.04" ) // Changes sign-on message from Xerox 820-II to Xerox
811   ROM_SYSTEM_BIOS( 0, "v404", "Balcones Operating System v4.04" )
817812   ROMX_LOAD( "537p3652.u33", 0x0000, 0x0800, CRC(7807cfbb) SHA1(bd3cc5cc5c59c84a50747aae5c17eb4617b0dbc3), ROM_BIOS(1) )
818813   ROMX_LOAD( "537p3653.u34", 0x0800, 0x0800, CRC(a9c6c0c3) SHA1(c2da9d1bf0da96e6b8bfa722783e411d2fe6deb9), ROM_BIOS(1) )
819814   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
826815
827816   ROM_REGION( 0x1000, I8086_TAG, 0 )
828817   ROM_LOAD( "8086.u33", 0x0000, 0x1000, CRC(ee49e3dc) SHA1(a5f20c74fc53f9d695d8894534ab69a39e2c38d8) )
r241749r241750
830819   ROM_REGION( 0x1000, "chargen", 0 )
831820   ROM_LOAD( "x820ii.u57", 0x0000, 0x0800, CRC(1a50f600) SHA1(df4470c80611c14fa7ea8591f741fbbecdfe4fd9) )
832821   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) )
833825ROM_END
834826
835827ROM_START( mk83 )
836828   ROM_REGION( 0x1000, Z80_TAG, 0 )
837   ROM_LOAD( "2732mk83.bin", 0x0000, 0x1000, CRC(a845c7e1) SHA1(3ccf629c5cd384953794ac4a1d2b45678bd40e92) )
838
829   ROM_LOAD( "2732mk83.bin", 0x0000, 0x1000, CRC(a845c7e1) SHA1(3ccf629c5cd384953794ac4a1d2b45678bd40e92))
839830   ROM_REGION( 0x800, "chargen", 0 )
840   ROM_LOAD( "2716mk83.bin", 0x0000, 0x0800, CRC(10bf0d81) SHA1(7ec73670a4d9d6421a5d6a4c4edc8b7c87923f6c) )
831   ROM_LOAD( "2716mk83.bin", 0x0000, 0x0800, CRC(10bf0d81) SHA1(7ec73670a4d9d6421a5d6a4c4edc8b7c87923f6c))
841832ROM_END
842833
843834/* System Drivers */
844835
845836/*    YEAR  NAME        PARENT      COMPAT  MACHINE     INPUT       INIT    COMPANY                         FULLNAME        FLAGS */
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 )
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 )
trunk/src/mess/drivers/xor100.c
r241749r241750
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_devices, "printer")
561   MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "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
r241749r241750
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"
2625#include "machine/ram.h"
2726#include "imagedev/cassette.h"
2827#include "bus/centronics/ctronics.h"
trunk/src/mess/includes/at.h
r241749r241750
1717#include "machine/ins8250.h"
1818#include "machine/mc146818.h"
1919#include "machine/pic8259.h"
20#include "bus/lpci/i82371ab.h"
21#include "bus/lpci/i82371sb.h"
22#include "bus/lpci/i82439tx.h"
20#include "bus/pci/i82371ab.h"
21#include "bus/pci/i82371sb.h"
22#include "bus/pci/i82439tx.h"
2323#include "machine/cs8221.h"
2424#include "machine/pit8253.h"
2525#include "machine/wd7600.h"
r241749r241750
2929
3030#include "imagedev/harddriv.h"
3131#include "machine/am9517a.h"
32#include "bus/lpci/pci.h"
32#include "bus/pci/pci.h"
3333
3434#include "sound/dac.h"
3535#include "sound/speaker.h"
trunk/src/mess/includes/mc1502.h
r241749r241750
5959      emu_timer   *keyb_signal_timer;
6060   } m_kbd;
6161
62   UINT8 m_ppi_portb;
63   UINT8 m_ppi_portc;
64   UINT8 m_spkrdata;
62   UINT8                   m_ppi_portb;
63   UINT8                   m_ppi_portc;
64   UINT8 m_mc1502_spkrdata;
65   UINT8 m_mc1502_input;
6566
6667   DECLARE_WRITE_LINE_MEMBER(mc1502_pit8253_out1_changed);
6768   DECLARE_WRITE_LINE_MEMBER(mc1502_pit8253_out2_changed);
trunk/src/mess/includes/sorcerer.h
r241749r241750
1313#include "sound/wave.h"
1414#include "machine/ay31015.h"
1515#include "bus/centronics/ctronics.h"
16#include "bus/centronics/covox.h"
1617#include "machine/ram.h"
1718#include "imagedev/cassette.h"
1819#include "imagedev/snapquik.h"
trunk/src/mess/includes/ti85.h
r241749r241750
8686   UINT8 m_ON_interrupt_status;
8787   UINT8 m_ON_pressed;
8888   UINT8 m_flash_unlocked;
89   UINT8 m_ti8x_memory_page_0;
8990   UINT8 m_ti8x_memory_page_1;
9091   UINT8 m_ti8x_memory_page_2;
9192   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;
r241749r241750
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 );
221220   
222221   ti83pse_timer m_ctimer[3];
223222   
trunk/src/mess/includes/victor9k.h
r241749r241750
1616
1717#include "bus/rs232/rs232.h"
1818#include "cpu/i86/i86.h"
19#include "formats/victor9k_dsk.h"
19#include "cpu/mcs48/mcs48.h"
2020#include "imagedev/floppy.h"
2121#include "machine/ram.h"
2222#include "bus/centronics/ctronics.h"
r241749r241750
2727#include "machine/pic8259.h"
2828#include "machine/z80dart.h"
2929#include "machine/victor9kb.h"
30#include "machine/victor9k_fdc.h"
3130#include "sound/hc55516.h"
3231#include "video/mc6845.h"
3332
3433#define I8088_TAG       "8l"
34#define I8048_TAG       "5d"
3535#define I8253_TAG       "13h"
3636#define I8259A_TAG      "7l"
3737#define UPD7201_TAG     "16e"
r241749r241750
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"
4447#define DAC0808_0_TAG   "5b"
4548#define DAC0808_1_TAG   "5c"
4649#define CENTRONICS_TAG  "centronics"
r241749r241750
4851#define RS232_B_TAG     "rs232b"
4952#define SCREEN_TAG      "screen"
5053#define VICTOR9K_KEYBOARD_TAG   "victor9kb"
51#define FDC_TAG         "fdc"
5254
5355class victor9k_state : public driver_device
5456{
5557public:
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)
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")
8297   { }
8398
8499   required_device<cpu_device> m_maincpu;
100   required_device<cpu_device> m_fdc_cpu;
85101   required_device<ieee488_device> m_ieee488;
86102   required_device<pic8259_device> m_pic;
87103   required_device<upd7201_device> m_upd7201;
r241749r241750
89105   required_device<via6522_device> m_via1;
90106   required_device<via6522_device> m_via2;
91107   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;
92111   required_device<hc55516_device> m_cvsd;
93112   required_device<mc6845_device> m_crtc;
94113   required_device<ram_device> m_ram;
114   required_device<floppy_image_device> m_floppy0;
115   required_device<floppy_image_device> m_floppy1;
95116   required_device<victor9k_keyboard_device> m_kb;
96   required_device<victor_9000_fdc_t> m_fdc;
97117   required_device<rs232_port_device> m_rs232a;
98118   required_device<rs232_port_device> m_rs232b;
99   required_device<palette_device> m_palette;
100   required_shared_ptr<UINT8> m_video_ram;
101119
102120   virtual void machine_start();
103   virtual void machine_reset();
104121
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
105129   DECLARE_WRITE8_MEMBER( via1_pa_w );
106130   DECLARE_WRITE_LINE_MEMBER( write_nfrd );
107131   DECLARE_WRITE_LINE_MEMBER( write_ndac );
r241749r241750
118142   DECLARE_WRITE8_MEMBER( via3_pb_w );
119143   DECLARE_WRITE_LINE_MEMBER( via3_irq_w );
120144
121   DECLARE_WRITE_LINE_MEMBER( fdc_irq_w );
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 );
122149
123   DECLARE_WRITE_LINE_MEMBER( ssda_irq_w );
150   DECLARE_WRITE8_MEMBER( via5_pb_w );
151   DECLARE_WRITE_LINE_MEMBER( via5_irq_w );
124152
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 );
125159   DECLARE_WRITE_LINE_MEMBER( kbrdy_w );
126160   DECLARE_WRITE_LINE_MEMBER( kbdata_w );
127161   DECLARE_WRITE_LINE_MEMBER( vert_w );
162   DECLARE_WRITE_LINE_MEMBER( via6_irq_w );
128163
164   DECLARE_WRITE_LINE_MEMBER( ssda_irq_w );
129165   MC6845_UPDATE_ROW( crtc_update_row );
130166
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
131180   /* video state */
181   required_shared_ptr<UINT8> m_video_ram;
132182   int m_brt;
133183   int m_cont;
134184
r241749r241750
136186   int m_via1_irq;
137187   int m_via2_irq;
138188   int m_via3_irq;
139   int m_fdc_irq;
189   int m_via4_irq;
190   int m_via5_irq;
191   int m_via6_irq;
140192   int m_ssda_irq;
141193
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
142215   DECLARE_WRITE_LINE_MEMBER(mux_serial_b_w);
143216   DECLARE_WRITE_LINE_MEMBER(mux_serial_a_w);
217   required_device<palette_device> m_palette;
144218};
145219
146220#endif
trunk/src/mess/includes/wswan.h
r241749r241750
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
1316#define INTERNAL_EEPROM_SIZE    1024
1417
1518#include "emu.h"
1619#include "cpu/v30mz/v30mz.h"
20#include "audio/wswan_snd.h"
1721#include "machine/nvram.h"
18#include "audio/wswan_snd.h"
19#include "video/wswan_video.h"
2022#include "bus/wswan/slot.h"
2123#include "bus/wswan/rom.h"
2224
r241749r241750
2830   UINT8   enable;     /* Enabled */
2931};
3032
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};
3178
79
3280class wswan_state : public driver_device
3381{
3482public:
3583   wswan_state(const machine_config &mconfig, device_type type, const char *tag)
3684      : driver_device(mconfig, type, tag),
3785      m_maincpu(*this, "maincpu"),
38      m_vdp(*this, "vdp"),
3986      m_sound(*this, "custom"),
4087      m_cart(*this, "cartslot"),
4188      m_cursx(*this, "CURSX"),
4289      m_cursy(*this, "CURSY"),
43      m_buttons(*this, "BUTTONS")
44   { }
45   
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
4696   required_device<cpu_device> m_maincpu;
47   required_device<wswan_video_device> m_vdp;
4897   required_device<wswan_sound_device> m_sound;
4998   required_device<ws_cart_slot_device> m_cart;
5099   DECLARE_READ8_MEMBER(bios_r);
51100   DECLARE_READ8_MEMBER(port_r);
52101   DECLARE_WRITE8_MEMBER(port_w);
53   
102
103   VDP m_vdp;
54104   UINT8 m_ws_portram[256];
55105   UINT8 m_internal_eeprom[INTERNAL_EEPROM_SIZE];
56106   UINT8 m_system_type;
57107   SoundDMA m_sound_dma;
108   UINT8 *m_ws_ram;
58109   UINT8 *m_ws_bios_bank;
59110   UINT8 m_bios_disabled;
111   int m_pal[16][16];
112   bitmap_ind16 m_bitmap;
60113   UINT8 m_rotate;
61   
62   void set_irq_line(int irq);
63   void dma_sound_cb();
114
115   void wswan_clear_irq_line(int irq);
64116   void common_start();
65117   virtual void machine_start();
66118   virtual void machine_reset();
67119   DECLARE_PALETTE_INIT(wswan);
68120   DECLARE_MACHINE_START(wscolor);
69121   DECLARE_PALETTE_INIT(wscolor);
70   
122   TIMER_CALLBACK_MEMBER(wswan_scanline_interrupt);
123
71124protected:
72125   /* Interrupt flags */
73126   static const UINT8 WSWAN_IFLAG_STX    = 0x01;
r241749r241750
78131   static const UINT8 WSWAN_IFLAG_VBLTMR = 0x20;
79132   static const UINT8 WSWAN_IFLAG_VBL    = 0x40;
80133   static const UINT8 WSWAN_IFLAG_HBLTMR = 0x80;
81   
134
82135   /* Interrupts */
83136   static const UINT8 WSWAN_INT_STX    = 0;
84137   static const UINT8 WSWAN_INT_KEY    = 1;
r241749r241750
88141   static const UINT8 WSWAN_INT_VBLTMR = 5;
89142   static const UINT8 WSWAN_INT_VBL    = 6;
90143   static const UINT8 WSWAN_INT_HBLTMR = 7;
91   
144
92145   required_ioport m_cursx;
93146   required_ioport m_cursy;
94147   required_ioport m_buttons;
95   
96   void register_save();
97   void handle_irqs();
98   void clear_irq_line(int irq);
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( );
99160};
100161
101162
trunk/src/mess/includes/xerox820.h
r241749r241750
55
66#include "emu.h"
77#include "bus/scsi/sa1403d.h"
8#include "bus/rs232/rs232.h"
98#include "cpu/z80/z80.h"
109#include "cpu/z80/z80daisy.h"
1110#include "cpu/i86/i86.h"
1211#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"
1817#include "machine/z80pio.h"
1918#include "machine/z80ctc.h"
2019#include "machine/z80dart.h"
r241749r241750
3635#define SASIBUS_TAG     "sasi"
3736#define RS232_A_TAG     "rs232a"
3837#define RS232_B_TAG     "rs232b"
39#define KEYBOARD_TAG   "kb"
4038
4139#define XEROX820_VIDEORAM_SIZE  0x1000
4240#define XEROX820_VIDEORAM_MASK  0x0fff
r241749r241750
4442class xerox820_state : public driver_device
4543{
4644public:
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)
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)
6663   { }
6764
6865   virtual void machine_start();
r241749r241750
7976   required_device<palette_device> m_palette;
8077   required_device<floppy_connector> m_floppy0;
8178   required_device<floppy_connector> m_floppy1;
82   required_device<xerox_820_keyboard_t> m_kb;
8379   required_memory_region m_rom;
8480   required_memory_region m_char_rom;
8581   required_shared_ptr<UINT8> m_video_ram;
r241749r241750
9389   DECLARE_READ8_MEMBER( kbpio_pb_r );
9490   DECLARE_WRITE_LINE_MEMBER( intrq_w );
9591   DECLARE_WRITE_LINE_MEMBER( drq_w );
92   DECLARE_WRITE8_MEMBER( kbd_w );
9693   DECLARE_WRITE_LINE_MEMBER( fr_w );
9794   DECLARE_WRITE_LINE_MEMBER( fdc_intrq_w );
9895   DECLARE_WRITE_LINE_MEMBER( fdc_drq_w );
9996
100   virtual void bankswitch(int bank);
97   void bankswitch(int bank);
10198   void update_nmi();
10299
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
r241749r241750
11<?xml version="1.0"?>
22<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_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>
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>
208   </element>
219
2210   <element name="led" defstate="0">
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>
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>
3617   </element>
3718
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" />
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" />
5031      </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>
5140   </element>
5241
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" />
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" />
6254      </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="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" />
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" />
7477      </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>
7586   </element>
7687
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" />
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" />
86100      </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>
87109   </element>
88110
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" />
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" />
98123      </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>
99132   </element>
100133
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" />
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" />
110146      </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>
111155   </element>
112156
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" />
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" />
122169      </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>
123178   </element>
124179
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" />
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" />
134192      </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>
135201   </element>
136202
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" />
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" />
146215      </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>
147224   </element>
148225
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" />
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" />
158238      </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>
159247   </element>
160248
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" />
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" />
170261      </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>
171270   </element>
172271
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" />
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" />
181284      </text>
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" />
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" />
185292      </text>
186293   </element>
187294
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" />
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" />
193307      </text>
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" />
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" />
197315      </text>
198316   </element>
199317
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" />
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" />
205330      </text>
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" />
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" />
209338      </text>
210339   </element>
211340
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" />
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" />
217353      </text>
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" />
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" />
221361      </text>
222362   </element>
223363
364   <view name="Default Layout">
224365
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" />
366      <!-- Black background -->
367      <bezel element="background">
368         <bounds left="0" top="0" right="200" bottom="250" />
232369      </bezel>
233370
234   <!-- (don't care about the upper loudspeaker+logo part) -->
371      <!-- LEDs and number buttons -->
235372
236      <bezel element="static_darkred">
237         <bounds x="10" y="4" width="68" height="160" />
373      <bezel name="led_0" element="led">
374         <bounds x="100" y="20" width="20" height="10" />
238375      </bezel>
376      <bezel element="0" inputtag="O0" inputmask="0x01">
377         <bounds x="100" y="32" width="20" height="10" />
378      </bezel>
239379
240      <bezel element="static_red">
241         <bounds x="7" y="0" width="74" height="8" />
380      <bezel name="led_1" element="led">
381         <bounds x="50" y="50" width="20" height="10" />
242382      </bezel>
243      <bezel element="static_red">
244         <bounds x="4" y="14" width="80" height="128" />
383      <bezel element="1" inputtag="O0" inputmask="0x02">
384         <bounds x="50" y="62" width="20" height="10" />
245385      </bezel>
246      <bezel element="static_red">
247         <bounds x="7" y="148" width="74" height="62" />
248      </bezel>
249386
250
251   <!-- number panels -->
252
253      <bezel element="panel_0">
254         <bounds x="34" y="20" width="20" height="20" />
387      <bezel name="led_2" element="led">
388         <bounds x="100" y="50" width="20" height="10" />
255389      </bezel>
256      <bezel name="lamp0" element="led">
257         <bounds x="34" y="20" width="20" height="20" />
390      <bezel element="2" inputtag="O0" inputmask="0x08">
391         <bounds x="100" y="62" width="20" height="10" />
258392      </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>
263393
264      <bezel element="panel_1">
265         <bounds x="10" y="44" width="20" height="20" />
394      <bezel name="led_3" element="led">
395         <bounds x="150" y="50" width="20" height="10" />
266396      </bezel>
267      <bezel name="lamp1" element="led">
268         <bounds x="10" y="44" width="20" height="20" />
397      <bezel element="3" inputtag="O0" inputmask="0x04">
398         <bounds x="150" y="62" width="20" height="10" />
269399      </bezel>
270      <bezel element="button" inputtag="O.0" inputmask="0x02">
271         <bounds x="10" y="44" width="20" height="20" />
272         <color alpha="0.2" />
400
401
402      <bezel name="led_4" element="led">
403         <bounds x="50" y="80" width="20" height="10" />
273404      </bezel>
274      <bezel element="panel_2">
275         <bounds x="34" y="44" width="20" height="20" />
405      <bezel element="4" inputtag="O1" inputmask="0x01">
406         <bounds x="50" y="92" width="20" height="10" />
276407      </bezel>
277      <bezel name="lamp2" element="led">
278         <bounds x="34" y="44" width="20" height="20" />
408
409      <bezel name="led_5" element="led">
410         <bounds x="100" y="80" width="20" height="10" />
279411      </bezel>
280      <bezel element="button" inputtag="O.0" inputmask="0x08">
281         <bounds x="34" y="44" width="20" height="20" />
282         <color alpha="0.2" />
412      <bezel element="5" inputtag="O1" inputmask="0x02">
413         <bounds x="100" y="92" width="20" height="10" />
283414      </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>
294415
295      <bezel element="panel_4">
296         <bounds x="10" y="68" width="20" height="20" />
416      <bezel name="led_6" element="led">
417         <bounds x="150" y="80" width="20" height="10" />
297418      </bezel>
298      <bezel name="lamp4" element="led">
299         <bounds x="10" y="68" width="20" height="20" />
419      <bezel element="6" inputtag="O1" inputmask="0x08">
420         <bounds x="150" y="92" width="20" height="10" />
300421      </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>
325422
326      <bezel element="panel_7">
327         <bounds x="10" y="92" width="20" height="20" />
423
424      <bezel name="led_7" element="led">
425         <bounds x="50" y="110" width="20" height="10" />
328426      </bezel>
329      <bezel name="lamp7" element="led">
330         <bounds x="10" y="92" width="20" height="20" />
427      <bezel element="7" inputtag="O1" inputmask="0x04">
428         <bounds x="50" y="122" width="20" height="10" />
331429      </bezel>
332      <bezel element="button" inputtag="O.1" inputmask="0x04">
333         <bounds x="10" y="92" width="20" height="20" />
334         <color alpha="0.2" />
430      <bezel name="led_8" element="led">
431         <bounds x="100" y="110" width="20" height="10" />
335432      </bezel>
336      <bezel element="panel_8">
337         <bounds x="34" y="92" width="20" height="20" />
433      <bezel element="8" inputtag="O2" inputmask="0x01">
434         <bounds x="100" y="122" width="20" height="10" />
338435      </bezel>
339      <bezel name="lamp8" element="led">
340         <bounds x="34" y="92" width="20" height="20" />
436      <bezel name="led_9" element="led">
437         <bounds x="150" y="110" width="20" height="10" />
341438      </bezel>
342      <bezel element="button" inputtag="O.2" inputmask="0x01">
343         <bounds x="34" y="92" width="20" height="20" />
344         <color alpha="0.2" />
439      <bezel element="9" inputtag="O2" inputmask="0x02">
440         <bounds x="150" y="122" width="20" height="10" />
345441      </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>
356442
357      <bezel element="panel_10">
358         <bounds x="34" y="116" width="20" height="20" />
443
444      <bezel name="led_10" element="led">
445         <bounds x="100" y="140" width="20" height="10" />
359446      </bezel>
360      <bezel name="lamp10" element="led">
361         <bounds x="34" y="116" width="20" height="20" />
447      <bezel element="10" inputtag="O2" inputmask="0x08">
448         <bounds x="100" y="152" width="20" height="10" />
362449      </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>
367450
368451
369   <!-- bottom panels -->
452      <!-- Other buttons -->
370453
371      <bezel element="panel_newgame">
372         <bounds x="21" y="156" width="20" height="20" />
454      <bezel element="new_game" inputtag="O3" inputmask="0x08">
455         <bounds x="75" y="170" width="30" height="30" />
373456      </bezel>
374      <bezel element="button" inputtag="O.3" inputmask="0x08">
375         <bounds x="21" y="156" width="20" height="20" />
376         <color alpha="0.2" />
457      <bezel element="same_game" inputtag="O2" inputmask="0x04">
458         <bounds x="125" y="170" width="30" height="30" />
377459      </bezel>
378460
379      <bezel element="panel_samegame">
380         <bounds x="47" y="156" width="20" height="20" />
461      <bezel element="hit_me" inputtag="O3" inputmask="0x04">
462         <bounds x="75" y="210" width="30" height="30" />
381463      </bezel>
382      <bezel element="button" inputtag="O.2" inputmask="0x04">
383         <bounds x="47" y="156" width="20" height="20" />
384         <color alpha="0.2" />
464      <bezel element="comp_turn" inputtag="O3" inputmask="0x02">
465         <bounds x="125" y="210" width="30" height="30" />
385466      </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
403467   </view>
404468</mamelayout>
trunk/src/mess/layout/simon.lay
r241749r241750
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
r241749r241750
300300MACHINE_RESET_MEMBER(at_state,at)
301301{
302302   m_at_spkrdata = 0;
303   m_pit_out2 = 1;
303   m_pit_out2 = 0;
304304   m_dma_channel = -1;
305305   m_cur_eop = false;
306306}
trunk/src/mess/machine/bebox.c
r241749r241750
9393
9494/* Components */
9595#include "video/pc_vga.h"
96#include "bus/lpci/cirrus.h"
96#include "bus/pci/cirrus.h"
9797#include "cpu/powerpc/ppc.h"
9898#include "machine/ins8250.h"
9999#include "machine/upd765.h"
r241749r241750
101101#include "machine/pic8259.h"
102102#include "machine/am9517a.h"
103103#include "machine/ataintf.h"
104#include "bus/lpci/pci.h"
104#include "bus/pci/pci.h"
105105#include "machine/intelfsh.h"
106106#include "machine/53c810.h"
107107#include "machine/ram.h"
trunk/src/mess/machine/coco.c
r241749r241750
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
690684   /* determine the value to send to the DAC */
691685   m_dac_output = (m_pia_1->a_output() & 0xFC) >> 2;
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);
686   UINT8 sound_output = single_bit_sound + (status == SOUNDMUX_ENABLE ? m_dac_output << 1 : 0);
687   m_dac->write_unsigned8(sound_output);
694688
695689   /* determine the cassette sound status */
696   cassette_state cas_sound = bCassSoundEnable ? CASSETTE_SPEAKER_ENABLED : CASSETTE_SPEAKER_MUTED;
690   cassette_state cas_sound = (status == (SOUNDMUX_ENABLE | SOUNDMUX_SEL1))
691      ? CASSETTE_SPEAKER_ENABLED
692      : CASSETTE_SPEAKER_MUTED;
697693   m_cassette->change_state(cas_sound, CASSETTE_MASK_SPEAKER);
698694
699695   /* determine the cartridge sound status */
700   m_cococart->cart_set_line(COCOCART_LINE_SOUND_ENABLE, bCartSoundEnable ? COCOCART_LINE_VALUE_ASSERT : COCOCART_LINE_VALUE_CLEAR);
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);
701699}
702700
703701
trunk/src/mess/machine/genpc.c
r241749r241750
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 = 1;
575   m_pit_out2 = 0;
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
r241749r241750
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
r241749r241750
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
r241749r241750
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_devices, "printer")
641   MCFG_CENTRONICS_ADD("centronics", centronics_printers, "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
r241749r241750
154154{
155155   //address_space &space = m_maincpu->space(AS_PROGRAM);
156156
157   m_membank1->set_bank(m_booting ? 0x1f : 0); //Always flash page 0, well allmost
157   m_membank1->set_bank(0); //Always flash page 0, well allmost
158158   
159159   if (m_ti83p_port4 & 1)
160160   {
r241749r241750
182182{
183183   //address_space &space = m_maincpu->space(AS_PROGRAM);
184184   
185   m_membank1->set_bank(m_booting ? (m_model==TI84P ? 0x3f : 0x7f) : 0);
185   m_membank1->set_bank(m_ti8x_memory_page_0);
186186   
187187   if (m_ti83p_port4 & 1)
188188    {
r241749r241750
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
290276MACHINE_RESET_MEMBER(ti85_state,ti83p)
291277{
292278   m_red_out = 0x00;
293279   m_white_out = 0x00;
294280   m_PCR = 0xc0;
295281
282   m_ti8x_memory_page_0 = 0;//0x1f;
296283
297    m_ti8x_memory_page_1 = 0;
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
298297   m_ti8x_memory_page_2 = 0;
299298   m_ti8x_memory_page_3 = 0;
300299   m_ti83p_port4 = 1;
301   m_booting = true;
302300   if (m_model == TI83P)
303301    {
304302        update_ti83p_memory();
r241749r241750
307305    {
308306        update_ti83pse_memory();
309307    }
308
309   m_maincpu->set_pc(0x8000);
310310}
311311
312312MACHINE_START_MEMBER(ti85_state,ti83p)
r241749r241750
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));
318317
319318   m_timer_interrupt_mask = 0;
320319   m_timer_interrupt_status = 0;
321320   m_ON_interrupt_mask = 0;
322321   m_ON_interrupt_status = 0;
323322   m_ON_pressed = 0;
324   m_ti8x_memory_page_1 = 0;
323   m_ti8x_memory_page_0 = 0;//0x1f;
324   m_ti8x_memory_page_1 = 0x1f;
325325   m_ti8x_memory_page_2 = 0;
326326   m_ti8x_memory_page_3 = 0;
327327   m_LCD_memory_base = 0;
r241749r241750
334334   m_ti83p_port4 = 1;
335335   m_flash_unlocked = 0;
336336
337   m_booting = true;
338
339337    ti85_state::update_ti83p_memory();
338   m_maincpu->set_pc(0x8000); //this is a hack due to incomplete memory mapping emulation
340339
341340
342341   machine().scheduler().timer_pulse(attotime::from_hz(256), timer_expired_delegate(FUNC(ti85_state::ti83_timer1_callback),this));
r241749r241750
346345   /* save states and debugging */
347346   save_item(NAME(m_timer_interrupt_status));
348347    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));
354353}
355354
356355void ti85_state::ti8xpse_init_common()
r241749r241750
364363   m_ON_interrupt_mask = 0;
365364   m_ON_interrupt_status = 0;
366365   m_ON_pressed = 0;
367   m_ti8x_memory_page_1 = 0;
366   m_ti8x_memory_page_0 = 00;//0x7f;
367   m_ti8x_memory_page_1 = (m_model != TI84P ) ? 0x7f : 0x3f ;
368368   m_ti8x_memory_page_2 = 0;
369369   m_ti8x_memory_page_3 = 0;
370370   m_LCD_memory_base = 0;
r241749r241750
378378   m_flash_unlocked = 0;
379379
380380   ti85_state::update_ti83pse_memory();
381   m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(ti85_state::ti83p_direct_update_handler), this));
381   m_maincpu->set_pc(0x8000);//same as above, hack to work around incomplete memory mapping emulation
382382
383383
384384   machine().scheduler().timer_pulse(attotime::from_hz(256), timer_expired_delegate(FUNC(ti85_state::ti83_timer1_callback),this));
r241749r241750
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));
394395   save_item(NAME(m_ti8x_memory_page_1));
395396   save_item(NAME(m_ti8x_memory_page_2));
396397   save_item(NAME(m_ti8x_memory_page_3));
trunk/src/mess/machine/victor9k_fdc.c
r241749r241750
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
r241749r241750
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
r241749r241750
2828const device_type VICTOR9K_KEYBOARD = &device_creator<victor9k_keyboard_device>;
2929
3030
31
3132//-------------------------------------------------
3233//  ROM( victor9k_keyboard )
3334//-------------------------------------------------
r241749r241750
236237//  victor9k_keyboard_device - constructor
237238//-------------------------------------------------
238239
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)
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)
261262{
262263}
263264
r241749r241750
290291
291292
292293//-------------------------------------------------
294//  kbrdy_r -
295//-------------------------------------------------
296
297READ_LINE_MEMBER( victor9k_keyboard_device::kbrdy_r )
298{
299   return m_kbrdy;
300}
301
302
303//-------------------------------------------------
293304//  kback_w -
294305//-------------------------------------------------
295306
296307WRITE_LINE_MEMBER( victor9k_keyboard_device::kback_w )
297308{
298   //logerror("KBACK %u\n", state);
299309   m_kback = state;
300310}
301311
302312
303313//-------------------------------------------------
314//  kbdata_r -
315//-------------------------------------------------
316
317READ_LINE_MEMBER( victor9k_keyboard_device::kbdata_r )
318{
319   return m_kbdata;
320}
321
322
323//-------------------------------------------------
304324//  kb_p1_r -
305325//-------------------------------------------------
306326
r241749r241750
340360      m_y = data & 0x0f;
341361   }
342362
343   //logerror("P1 %02x\n", data);
363   logerror("P1 %02x\n", data);
344364}
345365
346366
r241749r241750
354374
355375       bit     description
356376
357       P20     ?
358       P21    KBRDY
359       P22     ?
360       P23     KBDATA
377       P20     keylatch enable ?
378       P21
379       P22     key available ?
380       P23     data ?
361381
362382   */
363383
364   int kbrdy = BIT(data, 1);
384   int kbrdy = BIT(data, 2);
365385
366386   if (m_kbrdy != kbrdy)
367387   {
r241749r241750
377397      m_kbdata_handler(m_kbdata);
378398   }
379399
380   //logerror("P2 %02x\n", data);
400   logerror("P2 %01x\n", data & 0x0f);
381401}
382402
383403
r241749r241750
387407
388408READ8_MEMBER( victor9k_keyboard_device::kb_t1_r )
389409{
410   logerror("read T1 %u\n", m_kback);
411
390412   return m_kback;
391413}
trunk/src/mess/machine/victor9kb.h
r241749r241750
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 );
5455   DECLARE_WRITE_LINE_MEMBER( kback_w );
56   DECLARE_READ_LINE_MEMBER( kbdata_r );
5557
5658   // not really public
5759   DECLARE_READ8_MEMBER( kb_p1_r );
trunk/src/mess/machine/wswan.c
r241749r241750
7878   0xea, 0xc0, 0xff, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
7979};
8080
81void wswan_state::handle_irqs()
81void wswan_state::wswan_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::set_irq_line(int irq)
121void wswan_state::wswan_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      handle_irqs();
126      wswan_handle_irqs();
127127   }
128128}
129129
130void wswan_state::dma_sound_cb()
130void wswan_state::wswan_clear_irq_line(int irq)
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{
148132   m_ws_portram[0xb6] &= ~irq;
149   handle_irqs();
133   wswan_handle_irqs();
150134}
151135
152void wswan_state::register_save()
136void wswan_state::wswan_register_save()
153137{
154138   save_item(NAME(m_ws_portram));
155139   save_item(NAME(m_internal_eeprom));
156140   save_item(NAME(m_bios_disabled));
157141   save_item(NAME(m_rotate));
158   
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
159182   save_item(NAME(m_sound_dma.source));
160183   save_item(NAME(m_sound_dma.size));
161184   save_item(NAME(m_sound_dma.enable));
162   
185
163186   if (m_cart->exists())
164187      m_cart->save_nvram();
188
189   machine().save().register_postload(save_prepost_delegate(FUNC(wswan_state::wswan_postload), this));
165190}
166191
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
167200void wswan_state::common_start()
168201{
169202   m_ws_bios_bank = auto_alloc_array(machine(), UINT8, 0x10000);
170203   memcpy(m_ws_bios_bank + 0xffc0, ws_fake_bios_code, 0x40);
171   
172   register_save();
173   
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
174210   machine().device<nvram_device>("nvram")->set_base(m_internal_eeprom, INTERNAL_EEPROM_SIZE);
175   
211
176212   if (m_cart->exists())
177213   {
178214      // ROM
179215      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));
180216      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));
181217      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));
182     
218
183219      // SRAM
184220      if (m_cart->get_type() == WS_SRAM)
185221      {
r241749r241750
195231   m_system_type = TYPE_WSWAN;
196232}
197233
198MACHINE_START_MEMBER(wswan_state, wscolor)
234MACHINE_START_MEMBER(wswan_state,wscolor)
199235{
200236   common_start();
201237   m_system_type = TYPE_WSC;
r241749r241750
203239
204240void wswan_state::machine_reset()
205241{
242   address_space &space = m_maincpu->space(AS_PROGRAM);
243
206244   m_bios_disabled = 0;
207   
245
246   m_ws_ram = (UINT8*) m_maincpu->space(AS_PROGRAM).get_read_ptr(0);
247   memset(m_ws_ram, 0, 0xffff);
248
208249   if (m_cart->exists())
209250      m_rotate = m_cart->get_is_rotated();
210251   else
211252      m_rotate = 0;
212   
253
213254   /* Intialize ports */
214255   memcpy(m_ws_portram, ws_portram_init, 256);
215   
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
216267   render_target *target = machine().render().first_target();
217268   target->set_view(m_rotate);
218   
269
219270   /* Initialize sound DMA */
220271   memset(&m_sound_dma, 0, sizeof(m_sound_dma));
221272}
r241749r241750
231282READ8_MEMBER( wswan_state::port_r )
232283{
233284   UINT8 value = m_ws_portram[offset];
234   
285
235286   if (offset != 2)
236287      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   
241288   switch (offset)
242289   {
290      case 0x02:      // Current line
291         value = m_vdp.current_line;
292         break;
243293      case 0x4a:      // Sound DMA source address (low)
244294         value = m_sound_dma.source & 0xff;
245295         break;
r241749r241750
258308      case 0x52:      // Sound DMA start/stop
259309         value = m_sound_dma.enable;
260310         break;
261      case 0x60:
262         value = m_vdp->reg_r(space, offset);
263         break;
264311      case 0xa0:      // Hardware type
265         // Bit 0 - Disable/enable Bios
266         // Bit 1 - Determine mono/color
267         // Bit 2 - Determine color/crystal
312               // Bit 0 - Disable/enable Bios
313               // Bit 1 - Determine mono/color
314               // Bit 2 - Determine color/crystal
268315         value = value & ~ 0x02;
269316         if (m_system_type == TYPE_WSC)
270317            value |= 2;
271318         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;
272331      case 0xc0:
273332      case 0xc1:
274333      case 0xc2:
r241749r241750
288347         value = m_cart->read_io(space, offset & 0x0f);
289348         break;
290349   }
291   
350
292351   return value;
293352}
294353
r241749r241750
297356   address_space &mem = m_maincpu->space(AS_PROGRAM);
298357   UINT8 input;
299358   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   
307359   switch (offset)
308360   {
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;
309638      case 0x40:  /* DMA source address (low)
310                Bit 0-7 - DMA source address bit 0-7
311                */
639                   Bit 0-7 - DMA source address bit 0-7
640                */
312641      case 0x41:  /* DMA source address (high)
313                Bit 0-7 - DMA source address bit 8-15
314                */
642                   Bit 0-7 - DMA source address bit 8-15
643                */
315644      case 0x42:  /* DMA source bank
316                Bit 0-7 - DMA source bank number
317                */
645                   Bit 0-7 - DMA source bank number
646                */
318647      case 0x43:  /* DMA destination bank
319                Bit 0-7 - DMA destination bank number
320                */
648                   Bit 0-7 - DMA destination bank number
649                */
321650      case 0x44:  /* DMA destination address (low)
322                Bit 0-7 - DMA destination address bit 0-7
323                */
651                   Bit 0-7 - DMA destination address bit 0-7
652                */
324653      case 0x45:  /* DMA destination address (high)
325                Bit 0-7 - DMA destination address bit 8-15
326                */
654                   Bit 0-7 - DMA destination address bit 8-15
655                */
327656      case 0x46:  /* Size of copied data (low)
328                Bit 0-7 - DMA size bit 0-7
329                */
657                   Bit 0-7 - DMA size bit 0-7
658                */
330659      case 0x47:  /* Size of copied data (high)
331                Bit 0-7 - DMA size bit 8-15
332                */
660                   Bit 0-7 - DMA size bit 8-15
661                */
333662         break;
334663      case 0x48:  /* DMA control
335                Bit 0-6 - Unknown
336                Bit 7   - DMA stop/start
337                */
664                   Bit 0-6 - Unknown
665                   Bit 7   - DMA stop/start
666                */
338667         if (data & 0x80)
339668         {
340669            UINT32 src, dst;
341670            UINT16 length;
342           
671
343672            src = m_ws_portram[0x40] + (m_ws_portram[0x41] << 8) + (m_ws_portram[0x42] << 16);
344673            dst = m_ws_portram[0x44] + (m_ws_portram[0x45] << 8) + (m_ws_portram[0x43] << 16);
345674            length = m_ws_portram[0x46] + (m_ws_portram[0x47] << 8);
r241749r241750
350679               dst++;
351680            }
352681#ifdef MAME_DEBUG
353            logerror("DMA  src:%X dst:%X length:%d\n", src, dst, length);
682               logerror("DMA  src:%X dst:%X length:%d\n", src, dst, length);
354683#endif
355684            m_ws_portram[0x40] = src & 0xff;
356685            m_ws_portram[0x41] = (src >> 8) & 0xff;
r241749r241750
362691         }
363692         break;
364693      case 0x4a:  /* Sound DMA source address (low)
365                Bit 0-7 - Sound DMA source address bit 0-7
366                */
694                   Bit 0-7 - Sound DMA source address bit 0-7
695                */
367696         m_sound_dma.source = (m_sound_dma.source & 0x0fff00) | data;
368697         break;
369698      case 0x4b:  /* Sound DMA source address (high)
370                Bit 0-7 - Sound DMA source address bit 8-15
371                */
699                   Bit 0-7 - Sound DMA source address bit 8-15
700                */
372701         m_sound_dma.source = (m_sound_dma.source & 0x0f00ff) | (data << 8);
373702         break;
374703      case 0x4c:  /* Sound DMA source memory segment
375                Bit 0-3 - Sound DMA source address segment
376                Bit 4-7 - Unknown
377                */
704                   Bit 0-3 - Sound DMA source address segment
705                   Bit 4-7 - Unknown
706                */
378707         m_sound_dma.source = (m_sound_dma.source & 0xffff) | ((data & 0x0f) << 16);
379708         break;
380709      case 0x4d:  /* Unknown */
381710         break;
382711      case 0x4e:  /* Sound DMA transfer size (low)
383                Bit 0-7 - Sound DMA transfer size bit 0-7
384                */
712                   Bit 0-7 - Sound DMA transfer size bit 0-7
713                */
385714         m_sound_dma.size = (m_sound_dma.size & 0xff00) | data;
386715         break;
387716      case 0x4f:  /* Sound DMA transfer size (high)
388                Bit 0-7 - Sound DMA transfer size bit 8-15
389                */
717                   Bit 0-7 - Sound DMA transfer size bit 8-15
718                */
390719         m_sound_dma.size = (m_sound_dma.size & 0xff) | (data << 8);
391720         break;
392721      case 0x50:  /* Unknown */
393722      case 0x51:  /* Unknown */
394723         break;
395724      case 0x52:  /* Sound DMA start/stop
396                Bit 0-6 - Unknown
397                Bit 7   - Sound DMA stop/start
398                */
725                   Bit 0-6 - Unknown
726                   Bit 7   - Sound DMA stop/start
727                */
399728         m_sound_dma.enable = data;
400729         break;
401      case 0x60:
402         m_vdp->reg_w(space, offset, data);
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         }
403752         break;
404753      case 0x80:  /* Audio 1 freq (lo)
405                Bit 0-7 - Audio channel 1 frequency bit 0-7
406                */
754                   Bit 0-7 - Audio channel 1 frequency bit 0-7
755                */
407756      case 0x81:  /* Audio 1 freq (hi)
408                Bit 0-7 - Audio channel 1 frequency bit 8-15
409                */
757                   Bit 0-7 - Audio channel 1 frequency bit 8-15
758                */
410759      case 0x82:  /* Audio 2 freq (lo)
411                Bit 0-7 - Audio channel 2 frequency bit 0-7
412                */
760                   Bit 0-7 - Audio channel 2 frequency bit 0-7
761                */
413762      case 0x83:  /* Audio 2 freq (hi)
414                Bit 0-7 - Audio channel 2 frequency bit 8-15
415                */
763                   Bit 0-7 - Audio channel 2 frequency bit 8-15
764                */
416765      case 0x84:  /* Audio 3 freq (lo)
417                Bit 0-7 - Audio channel 3 frequency bit 0-7
418                */
766                   Bit 0-7 - Audio channel 3 frequency bit 0-7
767                */
419768      case 0x85:  /* Audio 3 freq (hi)
420                Bit 0-7 - Audio channel 3 frequency bit 8-15
421                */
769                   Bit 0-7 - Audio channel 3 frequency bit 8-15
770                */
422771      case 0x86:  /* Audio 4 freq (lo)
423                Bit 0-7 - Audio channel 4 frequency bit 0-7
424                */
772                   Bit 0-7 - Audio channel 4 frequency bit 0-7
773                */
425774      case 0x87:  /* Audio 4 freq (hi)
426                Bit 0-7 - Audio channel 4 frequency bit 8-15
427                */
775                   Bit 0-7 - Audio channel 4 frequency bit 8-15
776                */
428777      case 0x88:  /* Audio 1 volume
429                Bit 0-3 - Right volume audio channel 1
430                Bit 4-7 - Left volume audio channel 1
431                */
778                   Bit 0-3 - Right volume audio channel 1
779                   Bit 4-7 - Left volume audio channel 1
780                */
432781      case 0x89:  /* Audio 2 volume
433                Bit 0-3 - Right volume audio channel 2
434                Bit 4-7 - Left volume audio channel 2
435                */
782                   Bit 0-3 - Right volume audio channel 2
783                   Bit 4-7 - Left volume audio channel 2
784                */
436785      case 0x8a:  /* Audio 3 volume
437                Bit 0-3 - Right volume audio channel 3
438                Bit 4-7 - Left volume audio channel 3
439                */
786                   Bit 0-3 - Right volume audio channel 3
787                   Bit 4-7 - Left volume audio channel 3
788                */
440789      case 0x8b:  /* Audio 4 volume
441                Bit 0-3 - Right volume audio channel 4
442                Bit 4-7 - Left volume audio channel 4
443                */
790                   Bit 0-3 - Right volume audio channel 4
791                   Bit 4-7 - Left volume audio channel 4
792                */
444793      case 0x8c:  /* Sweep step
445                Bit 0-7 - Sweep step
446                */
794                   Bit 0-7 - Sweep step
795                */
447796      case 0x8d:  /* Sweep time
448                Bit 0-7 - Sweep time
449                */
797                   Bit 0-7 - Sweep time
798                */
450799      case 0x8e:  /* Noise control
451                Bit 0-2 - Noise generator type
452                Bit 3   - Reset
453                Bit 4   - Enable
454                Bit 5-7 - Unknown
455                */
800                   Bit 0-2 - Noise generator type
801                   Bit 3   - Reset
802                   Bit 4   - Enable
803                   Bit 5-7 - Unknown
804                */
456805      case 0x8f:  /* Sample location
457                Bit 0-7 - Sample address location 0 00xxxxxx xx000000
458                */
806                   Bit 0-7 - Sample address location 0 00xxxxxx xx000000
807                */
459808      case 0x90:  /* Audio control
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                */
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                */
469818      case 0x91:  /* Audio output
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                */
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                */
476825      case 0x92:  /* Noise counter shift register (lo)
477                Bit 0-7 - Noise counter shift register bit 0-7
478                */
826                   Bit 0-7 - Noise counter shift register bit 0-7
827                */
479828      case 0x93:  /* Noise counter shift register (hi)
480                Bit 0-6 - Noise counter shift register bit 8-14
481                bit 7   - Unknown
482                */
829                   Bit 0-6 - Noise counter shift register bit 8-14
830                   bit 7   - Unknown
831                */
483832      case 0x94:  /* Master volume
484                Bit 0-3 - Master volume
485                Bit 4-7 - Unknown
486                */
833                   Bit 0-3 - Master volume
834                   Bit 4-7 - Unknown
835                */
487836         m_sound->port_w(space, offset, data);
488837         break;
489838      case 0xa0:  /* Hardware type - this is probably read only
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                */
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                */
494843         if ((data & 0x01) && !m_bios_disabled)
495844            m_bios_disabled = 1;
496845         break;
497         
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
498900      case 0xb0:  /* Interrupt base vector
499                Bit 0-7 - Interrupt base vector
500                */
901                   Bit 0-7 - Interrupt base vector
902                */
501903         break;
502904      case 0xb1:  /* Communication byte
503                Bit 0-7 - Communication byte
504                */
905                   Bit 0-7 - Communication byte
906                */
505907         break;
506908      case 0xb2:  /* Interrupt enable
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                */
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                */
516918         break;
517919      case 0xb3:  /* serial communication control
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;
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;
527929         m_ws_portram[0xb1] = 0xff;
528930         if (data & 0x80)
529931         {
530            //              m_ws_portram[0xb1] = 0x00;
932//              m_ws_portram[0xb1] = 0x00;
531933            data |= 0x04;
532934         }
533935         if (data & 0x20)
534936         {
535            //              data |= 0x01;
937//              data |= 0x01;
536938         }
537939         break;
538940      case 0xb5:  /* Read controls
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                */
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                */
546948         data = data & 0xf0;
547949         switch (data)
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;
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;
560962            break;
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;
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;
572974            break;
573         case 0x40:  /* Read buttons: START - A - B */
574            data = data | m_buttons->read();
975            case 0x40:  /* Read buttons: START - A - B */
976               data = data | m_buttons->read();
575977            break;
576      }
978         }
577979         break;
578980      case 0xb6:  /* Interrupt acknowledge
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);
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);
589991         data = m_ws_portram[0xb6];
590992         break;
591993      case 0xba:  /* Internal EEPROM data (low)
592                Bit 0-7 - Internal EEPROM data transfer bit 0-7
593                */
994                   Bit 0-7 - Internal EEPROM data transfer bit 0-7
995                */
594996      case 0xbb:  /* Internal EEPROM data (high)
595                Bit 0-7 - Internal EEPROM data transfer bit 8-15
596                */
997                   Bit 0-7 - Internal EEPROM data transfer bit 8-15
998                */
597999         break;
5981000      case 0xbc:  /* Internal EEPROM address (low)
599                Bit 0-7 - Internal EEPROM address bit 1-8
600                */
1001                   Bit 0-7 - Internal EEPROM address bit 1-8
1002                */
6011003      case 0xbd:  /* Internal EEPROM address (high)
602                Bit 0   - Internal EEPROM address bit 9(?)
603                Bit 1-7 - Unknown
604                Only 1KByte internal EEPROM??
605                */
1004                   Bit 0   - Internal EEPROM address bit 9(?)
1005                   Bit 1-7 - Unknown
1006                   Only 1KByte internal EEPROM??
1007                */
6061008         break;
6071009      case 0xbe:  /* Internal EEPROM command
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                */
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                */
6161018         if (data & 0x20)
6171019         {
6181020            UINT16 addr = ( ( ( m_ws_portram[0xbd] << 8 ) | m_ws_portram[0xbc] ) << 1 ) & 0x1FF;
r241749r241750
6541056         logerror( "Write to unsupported port: %X - %X\n", offset, data );
6551057         break;
6561058   }
657   
1059
6581060   /* Update the port value */
6591061   m_ws_portram[offset] = data;
6601062}
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
r241749r241750
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
r241749r241750
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
r241749r241750
297297
298298// Milton Bradley
299299microvsn  // MicroVision - 1979
300simon
301300
302301// Entex
303302advision  // Adventurevision
r241749r241750
333332// EPOCH
334333gamepock  // Epoch Game Pocket Computer
335334
336// Bit Corp
337gamate   // Bit Corp Gamate
338
339335// KOEI
340336pasogo  // KOEI PasoGo
341337
r241749r241750
24782474vax785
24792475ms0515
24802476ie15
2481dvk_ksm
24822477asmapro
24832478asma2k
24842479altos5
trunk/src/mess/mess.mak
r241749r241750
425425MACHINES += LDVP931
426426MACHINES += LH5810
427427MACHINES += LINFLASH
428#MACHINES += LPCI
429428MACHINES += LSI53C810
430429MACHINES += M68307
431430MACHINES += M68340
r241749r241750
479478MACHINES += PC_LPT
480479MACHINES += PCCARD
481480MACHINES += PCF8593
481#MACHINES += PCI
482482MACHINES += PCKEYBRD
483483MACHINES += PIC8259
484484MACHINES += PIT8253
r241749r241750
599599BUSES += ISA
600600BUSES += ISBX
601601BUSES += KC
602BUSES += LPCI
603602BUSES += MACPDS
604603BUSES += MIDI
605604BUSES += MEGADRIVE
r241749r241750
610609BUSES += O2
611610BUSES += ORICEXT
612611BUSES += PCE
612BUSES += PCI
613613BUSES += PC_JOY
614614BUSES += PC_KBD
615615BUSES += PET
r241749r241750
901901   $(MAME_MACHINE)/naomim2.o   \
902902   $(MAME_MACHINE)/naomim4.o   \
903903   $(MAME_MACHINE)/naomirom.o  \
904   $(MAME_MACHINE)/315-5881_crypt.o  \
905904   $(MAME_VIDEO)/powervr2.o    \
906905   $(MAME_DRIVERS)/neogeo.o    \
907906   $(MAME_MACHINE)/neoboot.o   \
r241749r241750
960959   $(MESS_DRIVERS)/apricotf.o  \
961960   $(MESS_DRIVERS)/apricotp.o  \
962961   $(MESS_MACHINE)/apricotkb.o \
963   $(MESS_DRIVERS)/victor9k.o $(MESS_MACHINE)/victor9kb.o $(MESS_MACHINE)/victor9k_fdc.o \
962   $(MESS_DRIVERS)/victor9k.o $(MESS_MACHINE)/victor9kb.o \
964963
965964$(MESSOBJ)/adc.a:               \
966965   $(MESS_DRIVERS)/super6.o    \
r241749r241750
10301029$(MESSOBJ)/bandai.a:            \
10311030   $(MESS_DRIVERS)/sv8000.o    \
10321031   $(MESS_DRIVERS)/rx78.o      \
1033   $(MESS_DRIVERS)/wswan.o $(MESS_AUDIO)/wswan_snd.o $(MESS_MACHINE)/wswan.o $(MESS_VIDEO)/wswan_video.o \
1032   $(MESS_DRIVERS)/wswan.o $(MESS_AUDIO)/wswan_snd.o $(MESS_MACHINE)/wswan.o $(MESS_VIDEO)/wswan.o \
10341033
10351034$(MESSOBJ)/be.a:                \
10361035   $(MESS_DRIVERS)/bebox.o $(MESS_MACHINE)/bebox.o \
r241749r241750
11801179
11811180$(MESSOBJ)/elektrka.a:          \
11821181   $(MESS_DRIVERS)/bk.o $(MESS_MACHINE)/bk.o $(MESS_VIDEO)/bk.o \
1183   $(MESS_DRIVERS)/dvk_ksm.o $(MESS_MACHINE)/ms7004.o \
11841182   $(MESS_DRIVERS)/mk85.o      \
11851183   $(MESS_DRIVERS)/mk90.o      \
11861184
r241749r241750
13531351
13541352$(MESSOBJ)/mb.a:                \
13551353   $(MESS_DRIVERS)/microvsn.o  \
1356   $(MESS_DRIVERS)/simon.o     \
13571354
13581355$(MESSOBJ)/mchester.a:          \
13591356   $(MESS_DRIVERS)/ssem.o      \
r241749r241750
18321829   $(MESS_DRIVERS)/jupiter.o   \
18331830
18341831$(MESSOBJ)/xerox.a:             \
1835   $(MESS_DRIVERS)/xerox820.o $(MESS_MACHINE)/x820kb.o \
1832   $(MESS_DRIVERS)/xerox820.o  \
18361833   $(MESS_DRIVERS)/bigbord2.o  \
18371834   $(MESS_DRIVERS)/alto2.o     \
18381835
r241749r241750
18991896   $(MESS_DRIVERS)/fc100.o     \
19001897   $(MESS_DRIVERS)/fk1.o       \
19011898   $(MESS_DRIVERS)/ft68m.o     \
1902   $(MESS_DRIVERS)/gamate.o    \
19031899   $(MESS_DRIVERS)/gameking.o  \
19041900   $(MESS_DRIVERS)/gimix.o     \
19051901   $(MESS_DRIVERS)/grfd2301.o  \
r241749r241750
21252121$(MESS_DRIVERS)/sdk85.o:    $(MESS_LAYOUT)/sdk85.lh
21262122$(MESS_DRIVERS)/sdk86.o:    $(MESS_LAYOUT)/sdk86.lh
21272123$(MESS_DRIVERS)/selz80.o:   $(MESS_LAYOUT)/selz80.lh
2128$(MESS_DRIVERS)/simon.o:    $(MESS_LAYOUT)/simon.lh
21292124$(MESS_DRIVERS)/sitcom.o:   $(MESS_LAYOUT)/sitcom.lh
21302125$(MESS_DRIVERS)/slc1.o:     $(MESS_LAYOUT)/slc1.lh
21312126$(MESS_DRIVERS)/sms.o:      $(MESS_LAYOUT)/sms1.lh
trunk/src/mess/tools/castool/main.c
r241749r241750
2020#include "corestr.h"
2121
2222#include "formats/a26_cas.h"
23#include "formats/ace_tap.h"
24#include "formats/adam_cas.h"
2523#include "formats/apf_apt.h"
2624#include "formats/cbm_tap.h"
2725#include "formats/cgen_cas.h"
2826#include "formats/coco_cas.h"
2927#include "formats/csw_cas.h"
30#include "formats/fm7_cas.h"
3128#include "formats/fmsx_cas.h"
3229#include "formats/gtp_cas.h"
3330#include "formats/hect_tap.h"
31#include "formats/ace_tap.h"
32#include "formats/adam_cas.h"
3433#include "formats/kc_cas.h"
3534#include "formats/kim1_cas.h"
3635#include "formats/lviv_lvt.h"
3736#include "formats/mz_cas.h"
3837#include "formats/orao_cas.h"
3938#include "formats/oric_tap.h"
40#include "formats/p6001_cas.h"
41#include "formats/phc25_cas.h"
4239#include "formats/pmd_cas.h"
4340#include "formats/primoptp.h"
4441#include "formats/rk_cas.h"
4542#include "formats/sc3000_bit.h"
46#include "formats/sol_cas.h"
47#include "formats/sorc_cas.h"
4843#include "formats/sord_cas.h"
49#include "formats/spc1000_cas.h"
5044#include "formats/svi_cas.h"
5145#include "formats/thom_cas.h"
5246#include "formats/trs_cas.h"
r241749r241750
5650#include "formats/vg5k_cas.h"
5751#include "formats/vt_cas.h"
5852#include "formats/x07_cas.h"
59#include "formats/x1_tap.h"
6053#include "formats/zx81_p.h"
6154
6255struct SupportedCassetteFormats
r241749r241750
6760};
6861
6962const struct SupportedCassetteFormats formats[] = {
70   {"a26", a26_cassette_formats               ,"Atari 2600 SuperCharger"},
63   {"a26", a26_cassette_formats               ,"Atari 2600"},
64   {"ddp", coleco_adam_cassette_formats       ,"Coleco Adam"},
7165   {"apf", apf_cassette_formats               ,"APF Imagination Machine"},
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"},
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"},
7769   {"csw", csw_cassette_formats               ,"Compressed Square Wave"},
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"},
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"},
8475   {"kc85", kc_cassette_formats               ,"VEB Mikroelektronik KC 85"},
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"},
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"},
9583   {"rku", rku_cassette_formats               ,"UT-88"},
9684   {"rk8", rk8_cassette_formats               ,"Mikro-80"},
9785   {"rks", rks_cassette_formats               ,"Specialist"},
9886   {"rko", rko_cassette_formats               ,"Orion"},
9987   {"rkr", rkr_cassette_formats               ,"Radio-86RK"},
100   {"rka", rka_cassette_formats               ,"Zavod BRA Apogee BK-01"},
88   {"rka", rka_cassette_formats               ,"Apogee"},
10189   {"rkm", rkm_cassette_formats               ,"Mikrosha"},
102   {"rkp", rkp_cassette_formats               ,"SAM SKB VM Partner-01.01"},
90   {"rkp", rkp_cassette_formats               ,"Partner"},
10391   {"sc3000", sc3000_cassette_formats         ,"Sega SC-3000"},
104   {"sol20", sol20_cassette_formats           ,"PTC SOL-20"},
105   {"sorcerer", sorcerer_cassette_formats     ,"Exidy Sorcerer"},
10692   {"sordm5", sordm5_cassette_formats         ,"Sord M5"},
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"},
93   {"svi", svi_cassette_formats               ,"SVI"},
94   {"to7", to7_cassette_formats               ,"Thomson TO"},
95   {"mo5", mo5_cassette_formats               ,"Thomson MO"},
11096   {"trs80l2", trs80l2_cassette_formats       ,"TRS-80 Level 2"},
11197   {"tvc64", tvc64_cassette_formats           ,"Videoton TVC 64"},
112   {"tzx", tzx_cassette_formats               ,"Sinclair ZX Spectrum"},
98   {"tzx", tzx_cassette_formats               ,"ZX Spectrum"},
99   {"cdt", cdt_cassette_formats               ,"Amstrad CPC"},
113100   {"uef", uef_cassette_formats               ,"Acorn Electron"},
114   {"vg5k", vg5k_cassette_formats             ,"Philips VG 5000"},
101   {"vg5k", vg5k_cassette_formats             ,"VG 5000 k7"},
115102   {"vtech1", vtech1_cassette_formats         ,"Video Technology Laser 110-310"},
116103   {"vtech2", vtech2_cassette_formats         ,"Video Technology Laser 350-700"},
117104   {"x07", x07_cassette_formats               ,"Canon X-07"},
118   {"x1", x1_cassette_formats                 ,"Sharp X1"},
119   {"zx80_o", zx80_o_format                   ,"Sinclair ZX80"},
120105   {"zx81_p", zx81_p_format                   ,"Sinclair ZX81"},
121
122
123   
106   {"zx80_o", zx80_o_format                   ,"Sinclair ZX80"},
124107   {NULL,NULL,NULL}
125108};
126109
trunk/src/mess/video/wswan.c
r0r241750
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
r241749r241750
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
r241749r241750
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
r241749r241750
66.\" Cesare Falco <c.falco@ubuntu.com>, February 2011
77.\"
88.\"
9.TH CASTOOL 1 2014-10-15 0.155 "MESS Generic cassette manipulation tool"
9.TH CASTOOL 1 2014-07-31 0.154 "MESS Generic cassette manipulation tool"
1010.\"
1111.\"
1212.\" NAME chapter
trunk/src/osd/sdl/man/chdman.1
r241749r241750
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-10-15 0.155 "MAME Compressed Hunks of Data (CHD) manager"
9.TH CHDMAN 1 2014-07-31 0.154 "MAME Compressed Hunks of Data (CHD) manager"
1010.\"
1111.\" NAME chapter
1212.SH NAME
trunk/src/osd/sdl/man/floptool.1
r241749r241750
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
r241749r241750
66.\" Cesare Falco <c.falco@ubuntu.com>, February 2011
77.\"
88.\"
9.TH IMGTOOL 1 2014-10-15 0.155 "MESS media image manipulation tool"
9.TH IMGTOOL 1 2014-07-31 0.154 "MESS media image manipulation tool"
1010.\"
1111.\"
1212.\" NAME chapter
trunk/src/osd/sdl/man/jedutil.1
r241749r241750
88.\" References
99.\" http://aarongiles.com/?p=159
1010.\"
11.TH JEDUTIL 1 2014-10-15 0.155 "MAME JEDEC file utilities"
11.TH JEDUTIL 1 2014-07-31 0.154 "MAME JEDEC file utilities"
1212.\"
1313.\" NAME chapter
1414.SH NAME
trunk/src/osd/sdl/man/ldresample.1
r241749r241750
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-10-15 0.155 "MAME laserdisc audio manipulation tool"
6.TH LDRESAMPLE 1 2014-07-31 0.154 "MAME laserdisc audio manipulation tool"
77.\"
88.\" Please adjust this date whenever revising the manpage.
99.\"
trunk/src/osd/sdl/man/ldverify.1
r241749r241750
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-10-15 0.155 "MAME laserdisc data checker"
8.TH LDVERIFY 1 2014-07-31 0.154 "MAME laserdisc data checker"
99.\"
1010.\" NAME chapter
1111.SH NAME
trunk/src/osd/sdl/man/mame.6
r241749r241750
1313.\" and updated by Andrew Burton <burtona@gol.com>, July 2003
1414.\"
1515.\"
16.TH MAME 6 2014-10-15 0.155 "MAME \- The Multiple Arcade Machine Emulator"
16.TH MAME 6 2014-07-31 0.154 "MAME \- The Multiple Arcade Machine Emulator"
1717.\"
1818.\"
1919.\" NAME chapter
r241749r241750
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 compatibility for non\-"QWERTY" style keyboards.
937The default is OFF (\-nonatural).
936on your region, allowing compatability 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
r241749r241750
1616.\" http://www.mess.org/
1717.\"
1818.\"
19.TH MESS 6 2014-10-15 0.155 "The Multiple Emulator Super System (MESS)"
19.TH MESS 6 2014-07-31 0.154 "The Multiple Emulator Super System (MESS)"
2020.\"
2121.\"
2222.\" NAME chapter
r241749r241750
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 compatibility for non\-"QWERTY" style keyboards.
939The default is OFF (\-nonatural).
938on your region, allowing compatability 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
r241749r241750
99.\" References
1010.\" http://www.mame.net/mamefaq.html
1111.\"
12.TH ROMCMP 1 2014-10-15 0.155 "MAME romset checking tool"
12.TH ROMCMP 1 2014-07-31 0.154 "MAME romset checking tool"
1313.\"
1414.\" NAME chapter
1515.SH NAME
trunk/src/osd/sdl/man/testkeys.1
r241749r241750
55.\" Man page created from source and usage information
66.\" Cesare Falco <c.falco@ubuntu.com>, February 2007
77.\"
8.TH TESTKEYS 1 2014-10-15 0.155 "MAME SDL keycode scanner"
8.TH TESTKEYS 1 2014-07-31 0.154 "MAME SDL keycode scanner"
99.\"
1010.\" NAME chapter
1111.SH NAME
trunk/src/osd/sdl/sdl.mak
r241749r241750
8383OSDSRC = $(SRC)/osd
8484OSDOBJ = $(OBJ)/osd
8585
86# default to SDL2 for non-OS/2, non-Emscripten builds now
86# default to SDL2 for non-OS/2 builds now
8787ifndef SDL_LIBVER
8888ifneq ($(TARGETOS),os2)
89ifneq ($(TARGETOS),emscripten)
9089SDL_LIBVER = sdl2
9190else
9291SDL_LIBVER = sdl
9392endif
94else
95SDL_LIBVER = sdl
9693endif
97endif
9894
9995ifndef NO_USE_QTDEBUG
10096OBJDIRS += $(OSDOBJ)/modules/debugger/qt
r241749r241750
262258NO_USE_XINPUT = 1
263259NO_USE_MIDI = 1
264260NO_USE_QTDEBUG = 1
265DONT_USE_NETWORK = 1
266261endif
267262
268263ifeq ($(TARGETOS),macosx)
r241749r241750
784779LIBS += -lpcap
785780endif
786781endif
787else
788OSDOBJS += $(SDLOBJ)/netdev.o
789782endif
790783
791784#-------------------------------------------------


Previous 199869 Revisions Next


© 1997-2024 The MAME Team