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 |
[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] | |
[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 |
[src/emu/bus/dmv] | dmvbus.c dmvbus.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 |
[src/emu/bus/lpci] | |
[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 |
[src/emu/sound] | |
[src/emu/video] | |
[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 |
[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 |
[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] | |
[src/mame/machine] | |
[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 |
[src/mess/includes] | amstrad.h at.h mc1502.h sorcerer.h ti85.h victor9k.h wswan.h xerox820.h |
[src/mess/layout] | merlin.lay |
[src/mess/machine] | at.c bebox.c coco.c genpc.c |
[src/mess/tools/castool] | main.c |
[src/mess/video] | wswan.c* |
[src/osd/sdl] | sdl.mak |
[src/osd/sdl/man] | castool.1 chdman.1 |
r241749 | r241750 | |
---|---|---|
8 | 8 | /cfg |
9 | 9 | /diff |
10 | 10 | /ini |
11 | /inp | |
12 | 11 | /nvram |
13 | 12 | /obj |
14 | 13 | /snap |
r241749 | r241750 | |
---|---|---|
212 | 212 | </part> |
213 | 213 | </software> |
214 | 214 | |
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> | |
220 | 217 | <year>1990</year> |
221 | 218 | <publisher>Commodore</publisher> |
219 | ||
222 | 220 | <part name="flop1" interface="floppy_3_5"> |
223 | <feature name="part_id" value="Workbench 1.3.3 ( | |
221 | <feature name="part_id" value="Amiga Workbench Version 1.3.3 (Rev. 34.34)" /> | |
224 | 222 | <dataarea name="flop" size="901120"> |
225 | <rom name="317746-04_workbench.adf" size="901120" crc="bf299bca" sha1="8bac53a89cd1fe5a7762de9bd61a1592f10af2df" | |
223 | <rom name="317746-04_workbench.adf" size="901120" crc="bf299bca" sha1="8bac53a89cd1fe5a7762de9bd61a1592f10af2df" offset="0"/> | |
226 | 224 | </dataarea> |
227 | 225 | </part> |
226 | ||
228 | 227 | <part name="flop2" interface="floppy_3_5"> |
229 | <feature name="part_id" value="Extras 1.3 | |
228 | <feature name="part_id" value="Amiga Extras Amiga Basic Printer Drivers Version 1.3" /> | |
230 | 229 | <dataarea name="flop" size="901120"> |
231 | 230 | <rom name="317748-02_extras.adf" size="901120" crc="256a4b82" sha1="465a65aa89fe4b016fee968ef75ab08de9bdfbc6" offset="0"/> |
232 | 231 | </dataarea> |
r241749 | r241750 | |
497 | 496 | </part> |
498 | 497 | </software> |
499 | 498 | |
500 | <!-- Version 3.5 --> | |
501 | ||
502 | <software name="amigos35"> | |
503 | <description>AmigaOS 3.5</description> | |
504 | <year>1999</year> | |
505 | <publisher>Haage & 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 | ||
513 | 499 | </softwarelist> |
r241749 | r241750 | |
---|---|---|
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 | ||
9 | If 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 | ||
11 | Once 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 | |
135 | checks 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><unknown></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><unknown></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> |
r241749 | r241750 | |
---|---|---|
939 | 939 | </part> |
940 | 940 | </software> |
941 | 941 | |
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><unknown></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><unknown></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 | ||
1010 | 942 | <software name="dbase238"> <!-- CP/M-80 --> |
1011 | 943 | <description>dBASE II v2.38</description> |
1012 | 944 | <year>198?</year> |
r241749 | r241750 | |
1111 | 1043 | </part> |
1112 | 1044 | </software> |
1113 | 1045 | |
1114 | <software name="acad"> <!-- MS-DOS --> | |
1046 | <software name="acad" supported="no"> <!-- MS-DOS --> <!-- graphic mode doesn't works --> | |
1115 | 1047 | <description>AutoCAD</description> |
1116 | 1048 | <year>1987</year> |
1117 | 1049 | <publisher><unknown></publisher> |
r241749 | r241750 | |
1128 | 1060 | </part> |
1129 | 1061 | </software> |
1130 | 1062 | |
1131 | <software name="acada" cloneof="acad"> <!-- MS-DOS --> | |
1063 | <software name="acada" cloneof="acad" supported="no"> <!-- MS-DOS --> <!-- graphic mode doesn't works --> | |
1132 | 1064 | <description>AutoCAD (Alt 1)</description> |
1133 | 1065 | <year>1987</year> |
1134 | 1066 | <publisher><unknown></publisher> |
r241749 | r241750 | |
1155 | 1087 | </part> |
1156 | 1088 | </software> |
1157 | 1089 | |
1158 | <software name="acadb" cloneof="acad"> <!-- MS-DOS --> | |
1090 | <software name="acadb" cloneof="acad" supported="no"> <!-- MS-DOS --> <!-- graphic mode doesn't works --> | |
1159 | 1091 | <description>AutoCAD (Alt 2)</description> |
1160 | 1092 | <year>1987</year> |
1161 | 1093 | <publisher><unknown></publisher> |
r241749 | r241750 | |
---|---|---|
131 | 131 | <publisher>??</publisher> |
132 | 132 | <part name="flop1" interface="floppy_5_25"> |
133 | 133 | <dataarea name="flop" size="205475"> |
134 | <rom name="ec1841-voice41.td0" size="205475" sha1="5561649fde90bccc743ce61a5d4a50e07cd5a674" crc="f8 | |
134 | <rom name="ec1841-voice41.td0" size="205475" sha1="5561649fde90bccc743ce61a5d4a50e07cd5a674" crc="1f85afad" offset="0" /> | |
135 | 135 | </dataarea> |
136 | 136 | </part> |
137 | 137 | </software> |
r241749 | r241750 | |
---|---|---|
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><unofficial></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><unofficial></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><unofficial></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 & M80 & L80</description> | |
62 | <year>?????</year> | |
63 | <publisher><unofficial></publisher> | |
64 | <part name="flop1" interface="floppy_5_25"> | |
65 | <feature name="part_id" value="Modem Sample & M80 & 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><unofficial></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><unofficial></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><unofficial></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><unofficial></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><unofficial></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><unofficial></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><unofficial></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><unofficial></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> |
r241749 | r241750 | |
---|---|---|
1 | 1 | <?xml version="1.0"?> |
2 | 2 | <!DOCTYPE softwarelist SYSTEM "softwarelist.dtd"> |
3 | <softwarelist name="fmtowns | |
3 | <softwarelist name="fmtowns" description="FM Towns CD-ROMs"> | |
4 | 4 | <!-- skeleton test list --> |
5 | 5 | |
6 | 6 | <!-- works well on fmtmarty, keyboard seems to interfere with movements on fmtowns --> |
r241749 | r241750 | |
---|---|---|
33 | 33 | |
34 | 34 | --> |
35 | 35 | |
36 | <softwarelist name="g7400" description="Philips Videopac Plus G7400 cartridges"> | |
36 | <softwarelist name="vg7400" description="Philips Videopac Plus G7400 cartridges"> | |
37 | 37 | |
38 | 38 | <!-- Phillips Videopac+ G7400 carts --> |
39 | 39 |
r241749 | r241750 | |
---|---|---|
5 | 5 | |
6 | 6 | <software name="asteroid"> |
7 | 7 | <description>Asteroidi</description> |
8 | <year>1984</year> | |
9 | <publisher>GAC Software</publisher> | |
8 | <year>19??</year> | |
9 | <publisher><unknown></publisher> | |
10 | 10 | <part name="cass1" interface="galaxy_cass"> |
11 | 11 | <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" /> | |
13 | 13 | </dataarea> |
14 | 14 | </part> |
15 | 15 | </software> |
r241749 | r241750 | |
20 | 20 | <publisher><unknown></publisher> |
21 | 21 | <part name="cass1" interface="galaxy_cass"> |
22 | 22 | <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" /> | |
24 | 24 | </dataarea> |
25 | 25 | </part> |
26 | 26 | </software> |
27 | 27 | |
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><unknown></publisher> | |
32 | 32 | <part name="cass1" interface="galaxy_cass"> |
33 | 33 | <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" /> | |
35 | 35 | </dataarea> |
36 | 36 | </part> |
37 | 37 | </software> |
38 | 38 | |
39 | 39 | <software name="biorita2"> |
40 | <description>Bioritam | |
40 | <description>Bioritam2</description> | |
41 | 41 | <year>19??</year> |
42 | 42 | <publisher><unknown></publisher> |
43 | 43 | <part name="cass1" interface="galaxy_cass"> |
44 | 44 | <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" /> | |
46 | 46 | </dataarea> |
47 | 47 | </part> |
48 | 48 | </software> |
49 | 49 | |
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><unknown></publisher> | |
54 | 54 | <part name="cass1" interface="galaxy_cass"> |
55 | 55 | <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" /> | |
57 | 57 | </dataarea> |
58 | 58 | </part> |
59 | 59 | </software> |
r241749 | r241750 | |
61 | 61 | <software name="bombard"> |
62 | 62 | <description>Bombarder</description> |
63 | 63 | <year>19??</year> |
64 | <publisher> | |
64 | <publisher><unknown></publisher> | |
65 | 65 | <part name="cass1" interface="galaxy_cass"> |
66 | 66 | <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" /> | |
68 | 68 | </dataarea> |
69 | 69 | </part> |
70 | 70 | </software> |
71 | 71 | |
72 | 72 | <software name="charfire"> |
73 | <description>Chariots | |
73 | <description>ChariotsOfFire</description> | |
74 | 74 | <year>19??</year> |
75 | <publisher> | |
75 | <publisher><unknown></publisher> | |
76 | 76 | <part name="cass1" interface="galaxy_cass"> |
77 | 77 | <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" /> | |
79 | 79 | </dataarea> |
80 | 80 | </part> |
81 | 81 | </software> |
r241749 | r241750 | |
86 | 86 | <publisher><unknown></publisher> |
87 | 87 | <part name="cass1" interface="galaxy_cass"> |
88 | 88 | <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" /> | |
90 | 90 | </dataarea> |
91 | 91 | </part> |
92 | 92 | </software> |
93 | 93 | |
94 | 94 | <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><unknown></publisher> | |
98 | 98 | <part name="cass1" interface="galaxy_cass"> |
99 | 99 | <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" /> | |
101 | 101 | </dataarea> |
102 | 102 | </part> |
103 | 103 | </software> |
104 | 104 | |
105 | 105 | <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><unknown></publisher> | |
109 | 109 | <part name="cass1" interface="galaxy_cass"> |
110 | 110 | <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" /> | |
112 | 112 | </dataarea> |
113 | 113 | </part> |
114 | 114 | </software> |
r241749 | r241750 | |
119 | 119 | <publisher><unknown></publisher> |
120 | 120 | <part name="cass1" interface="galaxy_cass"> |
121 | 121 | <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" /> | |
123 | 123 | </dataarea> |
124 | 124 | </part> |
125 | 125 | </software> |
126 | 126 | |
127 | 127 | <software name="evolucia"> |
128 | 128 | <description>Evolucija</description> |
129 | <year>1984</year> | |
130 | <publisher>Dejan Ristanovic</publisher> | |
129 | <year>19??</year> | |
130 | <publisher><unknown></publisher> | |
131 | 131 | <part name="cass1" interface="galaxy_cass"> |
132 | 132 | <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" /> | |
134 | 134 | </dataarea> |
135 | 135 | </part> |
136 | 136 | </software> |
137 | 137 | |
138 | 138 | <software name="f1"> |
139 | <description>Formula | |
139 | <description>Formula1</description> | |
140 | 140 | <year>19??</year> |
141 | 141 | <publisher><unknown></publisher> |
142 | 142 | <part name="cass1" interface="galaxy_cass"> |
143 | 143 | <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" /> | |
145 | 145 | </dataarea> |
146 | 146 | </part> |
147 | 147 | </software> |
148 | 148 | |
149 | 149 | <software name="four"> |
150 | 150 | <description>Four</description> |
151 | <year>1986</year> | |
152 | <publisher>Dragan Yujkov</publisher> | |
151 | <year>19??</year> | |
152 | <publisher><unknown></publisher> | |
153 | 153 | <part name="cass1" interface="galaxy_cass"> |
154 | 154 | <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" /> | |
156 | 156 | </dataarea> |
157 | 157 | </part> |
158 | 158 | </software> |
159 | 159 | |
160 | 160 | <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><unknown></publisher> | |
164 | 164 | <part name="cass1" interface="galaxy_cass"> |
165 | 165 | <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" /> | |
167 | 167 | </dataarea> |
168 | 168 | </part> |
169 | 169 | </software> |
170 | 170 | |
171 | 171 | <software name="hhorace"> |
172 | <description>Hungry | |
172 | <description>HungryHorace</description> | |
173 | 173 | <year>19??</year> |
174 | 174 | <publisher><unknown></publisher> |
175 | 175 | <part name="cass1" interface="galaxy_cass"> |
176 | 176 | <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" /> | |
178 | 178 | </dataarea> |
179 | 179 | </part> |
180 | 180 | </software> |
181 | 181 | |
182 | 182 | <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><unknown></publisher> | |
186 | 186 | <part name="cass1" interface="galaxy_cass"> |
187 | 187 | <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" /> | |
189 | 189 | </dataarea> |
190 | 190 | </part> |
191 | 191 | </software> |
192 | 192 | |
193 | 193 | <software name="spiridon"> |
194 | <description>Inspektor | |
194 | <description>InspektorSpiridon</description> | |
195 | 195 | <year>19??</year> |
196 | 196 | <publisher><unknown></publisher> |
197 | 197 | <part name="cass1" interface="galaxy_cass"> |
198 | 198 | <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" /> | |
200 | 200 | </dataarea> |
201 | 201 | </part> |
202 | 202 | <part name="cass2" interface="galaxy_cass"> |
203 | 203 | <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" /> | |
205 | 205 | </dataarea> |
206 | 206 | </part> |
207 | 207 | <part name="cass3" interface="galaxy_cass"> |
208 | 208 | <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" /> | |
210 | 210 | </dataarea> |
211 | 211 | </part> |
212 | 212 | </software> |
213 | 213 | |
214 | 214 | <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><unknown></publisher> | |
218 | 218 | <part name="cass1" interface="galaxy_cass"> |
219 | 219 | <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" /> | |
221 | 221 | </dataarea> |
222 | 222 | </part> |
223 | 223 | </software> |
224 | 224 | |
225 | 225 | <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><unknown></publisher> | |
229 | 229 | <part name="cass1" interface="galaxy_cass"> |
230 | 230 | <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" /> | |
232 | 232 | </dataarea> |
233 | 233 | </part> |
234 | 234 | </software> |
235 | 235 | |
236 | 236 | <software name="lightcy2"> |
237 | <description>Light | |
237 | <description>LightCycles2</description> | |
238 | 238 | <year>19??</year> |
239 | 239 | <publisher><unknown></publisher> |
240 | 240 | <part name="cass1" interface="galaxy_cass"> |
241 | 241 | <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" /> | |
243 | 243 | </dataarea> |
244 | 244 | </part> |
245 | 245 | </software> |
246 | 246 | |
247 | 247 | <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><unknown></publisher> | |
251 | 251 | <part name="cass1" interface="galaxy_cass"> |
252 | 252 | <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" /> | |
254 | 254 | </dataarea> |
255 | 255 | </part> |
256 | 256 | </software> |
257 | 257 | |
258 | 258 | <software name="mminer"> |
259 | <description>Manic | |
259 | <description>ManicMiner</description> | |
260 | 260 | <year>19??</year> |
261 | 261 | <publisher><unknown></publisher> |
262 | 262 | <part name="cass1" interface="galaxy_cass"> |
263 | 263 | <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" /> | |
265 | 265 | </dataarea> |
266 | 266 | </part> |
267 | 267 | </software> |
268 | 268 | |
269 | 269 | <software name="mastrmnd"> |
270 | 270 | <description>Mastermajnd</description> |
271 | <year>1984</year> | |
272 | <publisher>Dejan Ristanovic</publisher> | |
271 | <year>19??</year> | |
272 | <publisher><unknown></publisher> | |
273 | 273 | <part name="cass1" interface="galaxy_cass"> |
274 | 274 | <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" /> | |
276 | 276 | </dataarea> |
277 | 277 | </part> |
278 | 278 | </software> |
279 | 279 | |
280 | 280 | <software name="mastrmn2"> |
281 | <description>Mastermind</description> | |
281 | <description>Mastermind2</description> | |
282 | 282 | <year>19??</year> |
283 | 283 | <publisher><unknown></publisher> |
284 | 284 | <part name="cass1" interface="galaxy_cass"> |
285 | 285 | <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" /> | |
287 | 287 | </dataarea> |
288 | 288 | </part> |
289 | 289 | </software> |
r241749 | r241750 | |
294 | 294 | <publisher><unknown></publisher> |
295 | 295 | <part name="cass1" interface="galaxy_cass"> |
296 | 296 | <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" /> | |
298 | 298 | </dataarea> |
299 | 299 | </part> |
300 | 300 | </software> |
r241749 | r241750 | |
305 | 305 | <publisher><unknown></publisher> |
306 | 306 | <part name="cass1" interface="galaxy_cass"> |
307 | 307 | <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" /> | |
309 | 309 | </dataarea> |
310 | 310 | </part> |
311 | 311 | </software> |
r241749 | r241750 | |
313 | 313 | <software name="monitor"> |
314 | 314 | <description>Monitor</description> |
315 | 315 | <year>19??</year> |
316 | <publisher> | |
316 | <publisher><unknown></publisher> | |
317 | 317 | <part name="cass1" interface="galaxy_cass"> |
318 | 318 | <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" /> | |
320 | 320 | </dataarea> |
321 | 321 | </part> |
322 | 322 | </software> |
323 | 323 | |
324 | 324 | <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><unknown></publisher> | |
328 | 328 | <part name="cass1" interface="galaxy_cass"> |
329 | 329 | <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" /> | |
331 | 331 | </dataarea> |
332 | 332 | </part> |
333 | 333 | </software> |
r241749 | r241750 | |
335 | 335 | <software name="oscil"> |
336 | 336 | <description>Oscilacije</description> |
337 | 337 | <year>19??</year> |
338 | <publisher> | |
338 | <publisher><unknown></publisher> | |
339 | 339 | <part name="cass1" interface="galaxy_cass"> |
340 | 340 | <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" /> | |
342 | 342 | </dataarea> |
343 | 343 | </part> |
344 | 344 | </software> |
345 | 345 | |
346 | 346 | <software name="pacmanp"> |
347 | <description>Pac | |
347 | <description>PacManPlus</description> | |
348 | 348 | <year>19??</year> |
349 | <publisher> | |
349 | <publisher><unknown></publisher> | |
350 | 350 | <part name="cass1" interface="galaxy_cass"> |
351 | 351 | <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" /> | |
353 | 353 | </dataarea> |
354 | 354 | </part> |
355 | 355 | </software> |
356 | 356 | |
357 | 357 | <software name="pamtilic"> |
358 | 358 | <description>Pamtilice</description> |
359 | <year>1985</year> | |
360 | <publisher>Peca Milosavljevic</publisher> | |
359 | <year>19??</year> | |
360 | <publisher><unknown></publisher> | |
361 | 361 | <part name="cass1" interface="galaxy_cass"> |
362 | 362 | <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" /> | |
364 | 364 | </dataarea> |
365 | 365 | </part> |
366 | 366 | </software> |
367 | 367 | |
368 | 368 | <software name="poker"> |
369 | 369 | <description>Poker</description> |
370 | <year>1985</year> | |
371 | <publisher>Nenad Balint</publisher> | |
370 | <year>19??</year> | |
371 | <publisher><unknown></publisher> | |
372 | 372 | <part name="cass1" interface="galaxy_cass"> |
373 | 373 | <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" /> | |
375 | 375 | </dataarea> |
376 | 376 | </part> |
377 | 377 | </software> |
378 | 378 | |
379 | 379 | <software name="pozivniz"> |
380 | <description>Pozivni | |
380 | <description>PozivniZnak</description> | |
381 | 381 | <year>19??</year> |
382 | <publisher> | |
382 | <publisher><unknown></publisher> | |
383 | 383 | <part name="cass1" interface="galaxy_cass"> |
384 | 384 | <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" /> | |
386 | 386 | </dataarea> |
387 | 387 | </part> |
388 | 388 | </software> |
389 | 389 | |
390 | 390 | <software name="raindrop"> |
391 | <description>Rain | |
391 | <description>RainDrops</description> | |
392 | 392 | <year>19??</year> |
393 | 393 | <publisher><unknown></publisher> |
394 | 394 | <part name="cass1" interface="galaxy_cass"> |
395 | 395 | <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" /> | |
397 | 397 | </dataarea> |
398 | 398 | </part> |
399 | 399 | </software> |
r241749 | r241750 | |
404 | 404 | <publisher><unknown></publisher> |
405 | 405 | <part name="cass1" interface="galaxy_cass"> |
406 | 406 | <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" /> | |
408 | 408 | </dataarea> |
409 | 409 | </part> |
410 | 410 | </software> |
r241749 | r241750 | |
412 | 412 | <software name="sintesaj"> |
413 | 413 | <description>Sintesajzer</description> |
414 | 414 | <year>19??</year> |
415 | <publisher> | |
415 | <publisher><unknown></publisher> | |
416 | 416 | <part name="cass1" interface="galaxy_cass"> |
417 | 417 | <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" /> | |
419 | 419 | </dataarea> |
420 | 420 | </part> |
421 | 421 | </software> |
422 | 422 | |
423 | 423 | <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><unknown></publisher> | |
427 | 427 | <part name="cass1" interface="galaxy_cass"> |
428 | 428 | <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" /> | |
430 | 430 | </dataarea> |
431 | 431 | </part> |
432 | 432 | </software> |
433 | 433 | |
434 | 434 | <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><unknown></publisher> | |
438 | 438 | <part name="cass1" interface="galaxy_cass"> |
439 | 439 | <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" /> | |
441 | 441 | </dataarea> |
442 | 442 | </part> |
443 | 443 | </software> |
444 | 444 | |
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><unknown></publisher> | |
449 | 449 | <part name="cass1" interface="galaxy_cass"> |
450 | 450 | <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" /> | |
452 | 452 | </dataarea> |
453 | 453 | </part> |
454 | 454 | </software> |
455 | 455 | |
456 | 456 | <software name="squash"> |
457 | 457 | <description>Squash</description> |
458 | <year>19 | |
458 | <year>19??</year> | |
459 | 459 | <publisher><unknown></publisher> |
460 | 460 | <part name="cass1" interface="galaxy_cass"> |
461 | 461 | <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" /> | |
463 | 463 | </dataarea> |
464 | 464 | </part> |
465 | 465 | </software> |
466 | 466 | |
467 | 467 | <software name="squasha" cloneof="squash"> |
468 | <description>Squash | |
468 | <description>Squash_ALT</description> | |
469 | 469 | <year>19??</year> |
470 | 470 | <publisher><unknown></publisher> |
471 | 471 | <part name="cass1" interface="galaxy_cass"> |
472 | 472 | <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" /> | |
474 | 474 | </dataarea> |
475 | 475 | </part> |
476 | 476 | </software> |
477 | 477 | |
478 | 478 | <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><unknown></publisher> | |
482 | 482 | <part name="cass1" interface="galaxy_cass"> |
483 | 483 | <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" /> | |
485 | 485 | </dataarea> |
486 | 486 | </part> |
487 | 487 | </software> |
488 | 488 | |
489 | 489 | <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><unknown></publisher> | |
493 | 493 | <part name="cass1" interface="galaxy_cass"> |
494 | 494 | <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" /> | |
496 | 496 | </dataarea> |
497 | 497 | </part> |
498 | 498 | </software> |
499 | 499 | |
500 | 500 | <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><unknown></publisher> | |
504 | 504 | <part name="cass1" interface="galaxy_cass"> |
505 | 505 | <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" /> | |
507 | 507 | </dataarea> |
508 | 508 | </part> |
509 | 509 | </software> |
510 | 510 | |
511 | 511 | <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><unknown></publisher> | |
515 | 515 | <part name="cass1" interface="galaxy_cass"> |
516 | 516 | <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" /> | |
518 | 518 | </dataarea> |
519 | 519 | </part> |
520 | 520 | </software> |
521 | 521 | |
522 | 522 | <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><unknown></publisher> | |
526 | 526 | <part name="cass1" interface="galaxy_cass"> |
527 | 527 | <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" /> | |
529 | 529 | </dataarea> |
530 | 530 | </part> |
531 | 531 | </software> |
532 | 532 | |
533 | 533 | <software name="tenis"> |
534 | 534 | <description>Tenis</description> |
535 | <year>1985</year> | |
536 | <publisher>Nenad Balint</publisher> | |
535 | <year>19??</year> | |
536 | <publisher><unknown></publisher> | |
537 | 537 | <part name="cass1" interface="galaxy_cass"> |
538 | 538 | <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" /> | |
540 | 540 | </dataarea> |
541 | 541 | </part> |
542 | 542 | </software> |
543 | 543 | |
544 | 544 | <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><unknown></publisher> | |
548 | 548 | <part name="cass1" interface="galaxy_cass"> |
549 | 549 | <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" /> | |
551 | 551 | </dataarea> |
552 | 552 | </part> |
553 | 553 | </software> |
554 | 554 | |
555 | 555 | <software name="tetris"> |
556 | 556 | <description>Tetris</description> |
557 | <year>1988</year> | |
558 | <publisher>Dragoljub Obradovic</publisher> | |
557 | <year>19??</year> | |
558 | <publisher><unknown></publisher> | |
559 | 559 | <part name="cass1" interface="galaxy_cass"> |
560 | 560 | <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" /> | |
562 | 562 | </dataarea> |
563 | 563 | </part> |
564 | 564 | </software> |
565 | 565 | |
566 | 566 | <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><unknown></publisher> | |
570 | 570 | <part name="cass1" interface="galaxy_cass"> |
571 | 571 | <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" /> | |
573 | 573 | </dataarea> |
574 | 574 | </part> |
575 | 575 | </software> |
576 | 576 | |
577 | 577 | <software name="tetrisa" cloneof="tetris"> |
578 | <description>Tetris | |
578 | <description>Tetris_ALT</description> | |
579 | 579 | <year>19??</year> |
580 | 580 | <publisher><unknown></publisher> |
581 | 581 | <part name="cass1" interface="galaxy_cass"> |
582 | 582 | <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" /> | |
584 | 584 | </dataarea> |
585 | 585 | </part> |
586 | 586 | </software> |
587 | 587 | |
588 | 588 | <software name="wall"> |
589 | 589 | <description>Wall</description> |
590 | <year>1986</year> | |
591 | <publisher>Dragan Vujkov</publisher> | |
590 | <year>19??</year> | |
591 | <publisher><unknown></publisher> | |
592 | 592 | <part name="cass1" interface="galaxy_cass"> |
593 | 593 | <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" /> | |
595 | 595 | </dataarea> |
596 | 596 | </part> |
597 | 597 | </software> |
r241749 | r241750 | |
602 | 602 | <publisher><unknown></publisher> |
603 | 603 | <part name="cass1" interface="galaxy_cass"> |
604 | 604 | <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" /> | |
606 | 606 | </dataarea> |
607 | 607 | </part> |
608 | 608 | </software> |
609 | 609 | |
610 | 610 | <software name="wonder2"> |
611 | <description>Wonderer | |
611 | <description>Wonderer2</description> | |
612 | 612 | <year>19??</year> |
613 | 613 | <publisher><unknown></publisher> |
614 | 614 | <part name="cass1" interface="galaxy_cass"> |
615 | 615 | <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" /> | |
617 | 617 | </dataarea> |
618 | 618 | </part> |
619 | 619 | </software> |
620 | 620 | |
621 | 621 | <software name="zamak"> |
622 | 622 | <description>Zamak</description> |
623 | <year>1984</year> | |
624 | <publisher>Antonic Voja</publisher> | |
623 | <year>19??</year> | |
624 | <publisher><unknown></publisher> | |
625 | 625 | <part name="cass1" interface="galaxy_cass"> |
626 | 626 | <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" /> | |
628 | 628 | </dataarea> |
629 | 629 | </part> |
630 | 630 | </software> |
631 | 631 | |
632 | 632 | <software name="zid"> |
633 | 633 | <description>Zid</description> |
634 | <year>1984</year> | |
635 | <publisher>GAC Software</publisher> | |
634 | <year>19??</year> | |
635 | <publisher><unknown></publisher> | |
636 | 636 | <part name="cass1" interface="galaxy_cass"> |
637 | 637 | <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" /> | |
639 | 639 | </dataarea> |
640 | 640 | </part> |
641 | 641 | </software> |
642 | 642 | |
643 | 643 | <software name="ziul"> |
644 | 644 | <description>Ziul</description> |
645 | <year>1984</year> | |
646 | <publisher>Dejan Ristanovic</publisher> | |
645 | <year>19??</year> | |
646 | <publisher><unknown></publisher> | |
647 | 647 | <part name="cass1" interface="galaxy_cass"> |
648 | 648 | <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" /> | |
650 | 650 | </dataarea> |
651 | 651 | </part> |
652 | 652 | </software> |
r241749 | r241750 | |
657 | 657 | <publisher><unknown></publisher> |
658 | 658 | <part name="cass1" interface="galaxy_cass"> |
659 | 659 | <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" /> | |
661 | 661 | </dataarea> |
662 | 662 | </part> |
663 | 663 | </software> |
664 | 664 | |
665 | 665 | <software name="zvjezdan"> |
666 | <description>Zvjezdane Staze</description> | |
667 | <year>1985</year> | |
666 | <description>ZvjezdaneStaze</description> | |
667 | <year>19??</year> | |
668 | 668 | <publisher><unknown></publisher> |
669 | 669 | <part name="cass1" interface="galaxy_cass"> |
670 | 670 | <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" /> | |
672 | 672 | </dataarea> |
673 | 673 | </part> |
674 | 674 | </software> |
675 | 675 | |
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 | ||
731 | 676 | </softwarelist> |
r241749 | r241750 | |
---|---|---|
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> |
r241749 | r241750 | |
---|---|---|
7 | 7 | - NFL Quarterback Club 95 (Jpn) by Acclaim |
8 | 8 | - Robocop 3 (Jpn) by Acclaim |
9 | 9 | - Sonic Drift (Euro) by Sega |
10 | - Super Golf (USA) by Sage's Creations | |
10 | 11 | - Terminator 2 - Judgement Day (Jpn) by Acclaim |
11 | 12 | |
12 | 13 | Other undumped games: |
r241749 | r241750 | |
8414 | 8415 | </software> |
8415 | 8416 | |
8416 | 8417 | <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"> | |
8428 | 8418 | <description>Super Golf (Jpn)</description> |
8429 | 8419 | <year>1991</year> |
8430 | 8420 | <publisher>Sigma Enterprises</publisher> |
r241749 | r241750 | |
---|---|---|
5 | 5 | |
6 | 6 | <softwarelist name="gameking" description="TimeTop GameKing cartridges"> |
7 | 7 | |
8 | <software name="2004" | |
8 | <software name="2004"> | |
9 | 9 | <description>2004</description> |
10 | 10 | <year>200?</year> |
11 | 11 | <publisher>TimeTop</publisher> |
r241749 | r241750 | |
16 | 16 | </part> |
17 | 17 | </software> |
18 | 18 | |
19 | <software name="alcarlo" | |
19 | <software name="alcarlo"> | |
20 | 20 | <description>Adventure Legend Carlo</description> |
21 | 21 | <year>200?</year> |
22 | 22 | <publisher>TimeTop</publisher> |
r241749 | r241750 | |
27 | 27 | </part> |
28 | 28 | </software> |
29 | 29 | |
30 | <software name="aries" | |
30 | <software name="aries"> | |
31 | 31 | <description>Aries</description> |
32 | 32 | <year>200?</year> |
33 | 33 | <publisher>TimeTop</publisher> |
r241749 | r241750 | |
38 | 38 | </part> |
39 | 39 | </software> |
40 | 40 | |
41 | <software name="dinoadv" | |
41 | <software name="dinoadv"> | |
42 | 42 | <description>Dino Adventure Legend</description> |
43 | 43 | <year>200?</year> |
44 | 44 | <publisher>TimeTop</publisher> |
r241749 | r241750 | |
49 | 49 | </part> |
50 | 50 | </software> |
51 | 51 | |
52 | <software name="duckman" | |
52 | <software name="duckman"> | |
53 | 53 | <description>Duck Man</description> |
54 | 54 | <year>200?</year> |
55 | 55 | <publisher>TimeTop</publisher> |
r241749 | r241750 | |
60 | 60 | </part> |
61 | 61 | </software> |
62 | 62 | |
63 | <software name="happybal" | |
63 | <software name="happybal"> | |
64 | 64 | <description>Happy Ball</description> |
65 | 65 | <year>200?</year> |
66 | 66 | <publisher>TimeTop</publisher> |
r241749 | r241750 | |
71 | 71 | </part> |
72 | 72 | </software> |
73 | 73 | |
74 | <software name="happykil" | |
74 | <software name="happykil"> | |
75 | 75 | <description>Happy Killer</description> |
76 | 76 | <year>200?</year> |
77 | 77 | <publisher>TimeTop</publisher> |
r241749 | r241750 | |
82 | 82 | </part> |
83 | 83 | </software> |
84 | 84 | |
85 | <software name="lanner" | |
85 | <software name="lanner"> | |
86 | 86 | <description>Lanneret</description> |
87 | 87 | <year>200?</year> |
88 | 88 | <publisher>TimeTop</publisher> |
r241749 | r241750 | |
93 | 93 | </part> |
94 | 94 | </software> |
95 | 95 | |
96 | <software name="penguin" | |
96 | <software name="penguin"> | |
97 | 97 | <description>Penguin</description> |
98 | 98 | <year>200?</year> |
99 | 99 | <publisher>TimeTop</publisher> |
r241749 | r241750 | |
104 | 104 | </part> |
105 | 105 | </software> |
106 | 106 | |
107 | <software name="popper" | |
107 | <software name="popper"> | |
108 | 108 | <description>Popper</description> |
109 | 109 | <year>200?</year> |
110 | 110 | <publisher>TimeTop</publisher> |
r241749 | r241750 | |
115 | 115 | </part> |
116 | 116 | </software> |
117 | 117 | |
118 | <software name="sthero" | |
118 | <software name="sthero"> | |
119 | 119 | <description>Street Hero</description> |
120 | 120 | <year>200?</year> |
121 | 121 | <publisher>TimeTop</publisher> |
r241749 | r241750 | |
126 | 126 | </part> |
127 | 127 | </software> |
128 | 128 | |
129 | <software name="smotor" | |
129 | <software name="smotor"> | |
130 | 130 | <description>Supermotor</description> |
131 | 131 | <year>200?</year> |
132 | 132 | <publisher>TimeTop</publisher> |
r241749 | r241750 | |
137 | 137 | </part> |
138 | 138 | </software> |
139 | 139 | |
140 | <software name="trojanl" | |
140 | <software name="trojanl"> | |
141 | 141 | <description>Trojan Legend</description> |
142 | 142 | <year>200?</year> |
143 | 143 | <publisher>TimeTop</publisher> |
r241749 | r241750 | |
---|---|---|
10286 | 10286 | <feature name="slot" value="rom_mbc5" /> |
10287 | 10287 | <!-- cartridge ram --> |
10288 | 10288 | <dataarea name="rom" size="1048576"> |
10289 | <rom name="hello kitty no magical museum (japan).bin" size="1048576" crc=" | |
10289 | <rom name="hello kitty no magical museum (japan).bin" size="1048576" crc="5174584f" sha1="f274c780fc3bf4f95b5c17afd0ec73824bedee5c" offset="000000" /> | |
10290 | 10290 | </dataarea> |
10291 | 10291 | <dataarea name="nvram" size="8192"> |
10292 | 10292 | </dataarea> |
r0 | r241750 | |
---|---|---|
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> |
r241749 | r241750 | |
---|---|---|
2822 | 2822 | </dataarea> |
2823 | 2823 | </part> |
2824 | 2824 | </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> | |
2893 | 2825 | </softwarelist> |
r241749 | r241750 | |
---|---|---|
3966 | 3966 | </part> |
3967 | 3967 | </software> |
3968 | 3968 | |
3969 | <software name="samnmax"> | |
3970 | <!-- Dumped via Kryoflux, track 0 shows as modified on all disks --> | |
3971 | <description>Sam & 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 | ||
4011 | 3969 | <software name="sserv2"> |
4012 | 3970 | <!-- Dumped via Kryoflux, shows as good and unmodified --> |
4013 | 3971 | <description>Silent Service II (Version 457.01)</description> |
r241749 | r241750 | |
---|---|---|
31 | 31 | <year>1982</year> |
32 | 32 | <publisher>Mattel Electronics</publisher> |
33 | 33 | <info name="serial" value="3410"/> |
34 | <info name="alt_title" value="Advanced Dungeons & Dragons - Cloudy Mountain"/> | |
35 | 34 | <part name="cart" interface="intv_cart"> |
36 | 35 | <feature name="slot" value="intv_rom" /> |
37 | 36 | <dataarea name="5000" size="0x3000"> |
r241749 | r241750 | |
91 | 90 | </part> |
92 | 91 | </software> |
93 | 92 | |
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 | ||
108 | 93 | <software name="atlantis"> |
109 | 94 | <description>Atlantis</description> |
110 | 95 | <year>1982</year> |
r241749 | r241750 | |
517 | 502 | </part> |
518 | 503 | </software> |
519 | 504 | |
520 | <!-- At title screen, press 4+7 in both keypads to start Deadly Dogs, a TRON Deadly Disks hack with BurgerTime gfx --> | |
521 | 505 | <software name="digdug"> |
522 | 506 | <description>Dig Dug</description> |
523 | 507 | <year>1987</year> |
r241749 | r241750 | |
1839 | 1823 | </part> |
1840 | 1824 | </software> |
1841 | 1825 | |
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&d - cloudy mountain) (1982) (mattel).50" size="16384" crc="11c3bcfa" sha1="009683f3a40adbdd97b7256d64614feff12469ae" offset="0x0000" /> | |
1850 | </dataarea> | |
1851 | </part> | |
1852 | </software> | |
1853 | ||
1854 | 1826 | <software name="advtron"> |
1855 | 1827 | <description>Adventures of TRON (Unreleased)</description> |
1856 | 1828 | <year>1982</year> |
r241749 | r241750 | |
1902 | 1874 | </part> |
1903 | 1875 | </software> |
1904 | 1876 | |
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 | ||
1917 | 1877 | <software name="choplift"> |
1918 | 1878 | <description>Choplifter! (Prototype)</description> |
1919 | 1879 | <year>1983</year> |
r241749 | r241750 | |
1944 | 1904 | </part> |
1945 | 1905 | </software> |
1946 | 1906 | |
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 | ||
1959 | 1907 | <software name="gftgold"> |
1960 | 1908 | <description>Go for the Gold! (Prototype)</description> |
1961 | 1909 | <year>1983</year> |
r241749 | r241750 | |
2087 | 2035 | </part> |
2088 | 2036 | </software> |
2089 | 2037 | |
2090 | <software name="l | |
2038 | <software name="league"> | |
2091 | 2039 | <description>League of Light (Prototype)</description> |
2092 | 2040 | <year>1983</year> |
2093 | 2041 | <publisher>Activision</publisher> |
r241749 | r241750 | |
2099 | 2047 | </part> |
2100 | 2048 | </software> |
2101 | 2049 | |
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 | ||
2126 | 2050 | <software name="magic"> |
2127 | 2051 | <description>Magic Carousel (Prototype)</description> |
2128 | 2052 | <year>1983</year> |
r241749 | r241750 | |
2151 | 2075 | </part> |
2152 | 2076 | </software> |
2153 | 2077 | |
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 | ||
2190 | 2078 | <software name="mycastle" cloneof="thcastle"> |
2191 | 2079 | <description>Mystic Castle (Prototype)</description> |
2192 | 2080 | <year>1982</year> |
r241749 | r241750 | |
2256 | 2144 | </part> |
2257 | 2145 | </software> |
2258 | 2146 | |
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 | ||
2271 | 2147 | <software name="rrubble"> |
2272 | 2148 | <description>Robot Rubble (Prototype)</description> |
2273 | 2149 | <year>1983</year> |
r241749 | r241750 | |
2280 | 2156 | </part> |
2281 | 2157 | </software> |
2282 | 2158 | |
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 | ||
2307 | 2159 | <software name="rockybw"> |
2308 | 2160 | <description>Rocky & Bullwinckle (Unreleased)</description> |
2309 | 2161 | <year>1983</year> |
r241749 | r241750 | |
2391 | 2243 | </part> |
2392 | 2244 | </software> |
2393 | 2245 | |
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 | ||
2406 | 2246 | <software name="yogi"> |
2407 | 2247 | <description>Yogi's Frustration (Unreleased)</description> |
2408 | 2248 | <year>1983</year> |
r241749 | r241750 | |
2553 | 2393 | </part> |
2554 | 2394 | </software> |
2555 | 2395 | |
2556 | <software name="spacecnt" | |
2396 | <software name="spacecnt"> | |
2557 | 2397 | <description>Space Cunt</description> |
2558 | <year>1983</year> | |
2559 | <publisher>Mattel Electronics</publisher> | |
2398 | <year>200?</year> | |
2399 | <publisher>IntelligentVision</publisher> | |
2560 | 2400 | <info name="usage" value="Uses Intellivoice"/> |
2561 | 2401 | <part name="cart" interface="intv_cart"> |
2562 | 2402 | <feature name="slot" value="intv_rom" /> |
r0 | r241750 | |
---|---|---|
1 | <?xml version="1.0"?> | |
2 | <!DOCTYPE softwarelist SYSTEM "softwarelist.dtd"> | |
3 | ||
4 | <!-- | |
5 | ||
6 | Carts released in Japan | |
7 | ||
8 | 1. Dig Dug (ディグダグ) | |
9 | 2. Tank Battalion (タンクバタリアン) | |
10 | 3. Bosconian (ボスコニアン) | |
11 | 4. Galax (ギャラックス) | |
12 | 5. Power Pac (パワーパック) | |
13 | 6. Warp Warp (ワープ&ワープ) | |
14 | 7. Super Cobra (スーパーコブラ) | |
15 | 8. Guttang Guttong (ガッタンゴットン) | |
16 | 9. Moon Patrol (ムーンパトロール) | |
17 | 10. Step Up (ステップアップ) | |
18 | 11. Pooyan (プーヤン) | |
19 | 12. Heavy Boxing (ヘビーボクシング) | |
20 | 13. コミカルスキー [Fun Ski?] | |
21 | 14. Real Tennis (リアルテニス) | |
22 | 15. Word Maze (ワードメイズ) | |
23 | 16. Wonder Hole (ワンダーホール) | |
24 | 17. Apploon (アップルーン) | |
25 | 18. Up Up Balloon (アップアップバルーン) | |
26 | 19. Mappy (マッピー) | |
27 | 20. ?? | |
28 | 21. Dream Shopper (ドリームショッパー) | |
29 | 22. Eskimon (エスキモン) | |
30 | 23. Funny Mouse (ファニーマウス) | |
31 | 24. Jankyo (ジャン狂) | |
32 | ||
33 | Simulation Games (probably separate series, box has red stripes!) | |
34 | ||
35 | - Fruit Search | |
36 | - Dragon Attack | |
37 | - Pit Chaser | |
38 | ||
39 | ||
40 | Super Adventure Series (cart + tape games) | |
41 | ||
42 | - Super Adventure (スーパーアドベンチャー ) [cart] | |
43 | - Ooi Tasukete Kure (おーいたすけてくれ ) [tape] | |
44 | - Nigero Nigero Nigero (にげろにげろにげろ ) [tape] | |
45 | ||
46 | ||
47 | Programs: | |
48 | ||
49 | - P-Editor (also available as tape) | |
50 | - M-Editor | |
51 | ||
52 | ||
53 | Learning Soft: | |
54 | ||
55 | - Mogura-Tataki Keyboard Renshu (by Stratford Soft) | |
56 | ||
57 | ||
58 | Programming Languages: | |
59 | ||
60 | - FLAC | |
61 | - FLAC-II | |
62 | - BASIC-I | |
63 | - BASIC-G | |
64 | - BASIC-F | |
65 | - DISK BASIC | |
66 | ||
67 | ||
68 | what about European carts? | |
69 | and 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 & Warp</description> | |
146 | <year>1981</year> | |
147 | <publisher>Namco</publisher> | |
148 | <info name="serial" value="6" /> | |
149 | <info name="alt_title" value="ワープ&ワープ" /> | |
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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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 | |
571 | come from... they might be eventually removed --> | |
572 | ||
573 | <!-- the first contains Czech text strings so it might be a real Czech cart, | |
574 | but we need more info --> | |
575 | <software name="unk_maze" supported="no"> | |
576 | <description>Unknown CSMAZE</description> | |
577 | <year>19??</year> | |
578 | <publisher><unknown></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><unknown></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> |
r241749 | r241750 | |
---|---|---|
1 | <?xml version="1.0"?> | |
2 | <!DOCTYPE softwarelist SYSTEM "softwarelist.dtd"> | |
3 | ||
4 | <!-- | |
5 | ||
6 | Carts released in Japan | |
7 | ||
8 | 1. Dig Dug (ディグダグ) | |
9 | 2. Tank Battalion (タンクバタリアン) | |
10 | 3. Bosconian (ボスコニアン) | |
11 | 4. Galax (ギャラックス) | |
12 | 5. Power Pac (パワーパック) | |
13 | 6. Warp Warp (ワープ&ワープ) | |
14 | 7. Super Cobra (スーパーコブラ) | |
15 | 8. Guttang Guttong (ガッタンゴットン) | |
16 | 9. Moon Patrol (ムーンパトロール) | |
17 | 10. Step Up (ステップアップ) | |
18 | 11. Pooyan (プーヤン) | |
19 | 12. Heavy Boxing (ヘビーボクシング) | |
20 | 13. コミカルスキー [Fun Ski?] | |
21 | 14. Real Tennis (リアルテニス) | |
22 | 15. Word Maze (ワードメイズ) | |
23 | 16. Wonder Hole (ワンダーホール) | |
24 | 17. Apploon (アップルーン) | |
25 | 18. Up Up Balloon (アップアップバルーン) | |
26 | 19. Mappy (マッピー) | |
27 | 20. ?? | |
28 | 21. Dream Shopper (ドリームショッパー) | |
29 | 22. Eskimon (エスキモン) | |
30 | 23. Funny Mouse (ファニーマウス) | |
31 | 24. Jankyo (ジャン狂) | |
32 | ||
33 | Simulation Games (probably separate series, box has red stripes!) | |
34 | ||
35 | - Fruit Search | |
36 | - Dragon Attack | |
37 | - Pit Chaser | |
38 | ||
39 | ||
40 | Super Adventure Series (cart + tape games) | |
41 | ||
42 | - Super Adventure (スーパーアドベンチャー ) [cart] | |
43 | - Ooi Tasukete Kure (おーいたすけてくれ ) [tape] | |
44 | - Nigero Nigero Nigero (にげろにげろにげろ ) [tape] | |
45 | ||
46 | ||
47 | Programs: | |
48 | ||
49 | - P-Editor (also available as tape) | |
50 | - M-Editor | |
51 | ||
52 | ||
53 | Learning Soft: | |
54 | ||
55 | - Mogura-Tataki Keyboard Renshu (by Stratford Soft) | |
56 | ||
57 | ||
58 | Programming Languages: | |
59 | ||
60 | - FLAC | |
61 | - FLAC-II | |
62 | - BASIC-I | |
63 | - BASIC-G | |
64 | - BASIC-F | |
65 | - DISK BASIC | |
66 | ||
67 | ||
68 | what about European carts? | |
69 | and 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 & Warp</description> | |
146 | <year>1981</year> | |
147 | <publisher>Namco</publisher> | |
148 | <info name="serial" value="6" /> | |
149 | <info name="alt_title" value="ワープ&ワープ" /> | |
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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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 | |
571 | come from... they might be eventually removed --> | |
572 | ||
573 | <!-- the first contains Czech text strings so it might be a real Czech cart, | |
574 | but we need more info --> | |
575 | <software name="unk_maze" supported="no"> | |
576 | <description>Unknown CSMAZE</description> | |
577 | <year>19??</year> | |
578 | <publisher><unknown></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><unknown></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> |
r241749 | r241750 | |
---|---|---|
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><unknown></publisher> | |
16 | <info name="usage" value="Mount together with "BASIC-I" 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><unknown></publisher> | |
30 | <info name="usage" value="Mount together with "BASIC-I" 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><unknown></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><unknown></publisher> | |
56 | <info name="usage" value="Mount together with "BASIC-I" 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><unknown></publisher> | |
70 | <info name="usage" value="Mount together with "BASIC-I" 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><unknown></publisher> | |
84 | <info name="usage" value="Mount together with "BASIC-I" 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><unknown></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><unknown></publisher> | |
110 | <info name="usage" value="Mount together with "BASIC-I" 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><unknown></publisher> | |
124 | <info name="usage" value="Mount together with "BASIC-I" 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><unknown></publisher> | |
138 | <info name="usage" value="Mount together with "BASIC-I" 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><unknown></publisher> | |
152 | <info name="usage" value="Mount together with "BASIC-I" 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><unknown></publisher> | |
166 | <info name="usage" value="Mount together with "BASIC-I" 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><unknown></publisher> | |
180 | <info name="usage" value="Mount together with "BASIC-I" 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><unknown></publisher> | |
194 | <info name="usage" value="Mount together with "BASIC-I" 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><unknown></publisher> | |
208 | <info name="usage" value="Mount together with "BASIC-I" 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><unknown></publisher> | |
222 | <info name="usage" value="Mount together with "BASIC-I" 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><unknown></publisher> | |
236 | <info name="usage" value="Mount together with "BASIC-I" 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><unknown></publisher> | |
250 | <info name="usage" value="Mount together with "BASIC-I" 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><unknown></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><unknown></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> |
r241749 | r241750 | |
---|---|---|
3 | 3 | <!-- |
4 | 4 | UNDUMPED / TO BE REDUMPED LIST |
5 | 5 | |
6 | 2IN1 (COSMIC SPACEHEAD FANTASTIC DIZZY) PAL | |
6 | 7 | ADVANCED DAISENRYAKU JAPAN we have Rev A, Rev 0 needed (does it exist?) |
7 | 8 | CAPTAIN PLANET ASIA |
8 | 9 | DAVIS CUP TENNIS JAPAN |
r241749 | r241750 | |
13 | 14 | FERRARI GRAND PRIX CHALLENGE PAL we have Rev A, Rev 0 needed (does it exist?) |
14 | 15 | FIFA SOCCER JAPAN |
15 | 16 | FIRE SHARK PAL dump check |
17 | GAIN GROUND PAL revision order check | |
16 | 18 | GALAXY FORCE II ALL we have Rev B, Rev 0 and Rev A needed (does it exist?) |
17 | 19 | INTERNATIONAL SUPERSTAR SOCCER BRAZIL |
18 | 20 | JEWEL MASTER USA/PAL we have Rev A, Rev 0 needed (does it match Japanese release?) |
r241749 | r241750 | |
40 | 42 | * Ghoul Patrol |
41 | 43 | * Beethoven's 2nd |
42 | 44 | * Iron Hammer (from http://www.youtube.com/watch?v=uQG0tZQaKUg ) |
45 | * Bill's Tomato Game (from http://www.youtube.com/watch?v=GeCuBe2xd8A ) | |
43 | 46 | * Total Carnage |
44 | 47 | * Monster Hunter |
45 | 48 | * Brown 60 |
r241749 | r241750 | |
107 | 110 | <!-- Fully documented: confirmed dumps + PCB pics --> |
108 | 111 | |
109 | 112 | |
110 | <!-- Game is switched on reset --> | |
111 | <software name="2fdizcsp"> | |
112 | <description>2 in 1 - Fantastic Dizzy & 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 | ||
129 | 113 | <!-- Both Euro and USA confirmed --> |
130 | 114 | <software name="688atsub"> |
131 | 115 | <description>688 Attack Sub (Euro, USA)</description> |
r241749 | r241750 | |
841 | 825 | </software> |
842 | 826 | |
843 | 827 | |
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 | ||
866 | 828 | <software name="batman"> |
867 | 829 | <description>Batman (Euro)</description> |
868 | 830 | <year>1992</year> |
r241749 | r241750 | |
1144 | 1106 | |
1145 | 1107 | |
1146 | 1108 | <!-- 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 --> | |
1177 | 1109 | <software name="buckrog"> |
1178 | 1110 | <description>Buck Rogers - Countdown to Doomsday (Euro, USA)</description> |
1179 | 1111 | <year>1991</year> |
r241749 | r241750 | |
1221 | 1153 | </software> |
1222 | 1154 | |
1223 | 1155 | |
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 | ||
1239 | 1156 | <software name="burnforc"> |
1240 | 1157 | <!-- Namcot PCB (blob epoxy chip) --> |
1241 | 1158 | <description>Burning Force (Euro)</description> |
r241749 | r241750 | |
1564 | 1481 | </software> |
1565 | 1482 | |
1566 | 1483 | |
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 | ||
1581 | 1484 | <software name="collslam"> |
1582 | 1485 | <description>College Slam (USA)</description> |
1583 | 1486 | <year>1996</year> |
r241749 | r241750 | |
2294 | 2197 | </software> |
2295 | 2198 | |
2296 | 2199 | |
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 | ||
2314 | 2200 | <!-- Only Euro is confirmed --> |
2315 | 2201 | <software name="ecco"> |
2316 | 2202 | <description>Ecco the Dolphin (Euro, USA, Kor)</description> |
r241749 | r241750 | |
3023 | 2909 | </software> |
3024 | 2910 | |
3025 | 2911 | |
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 | ||
3054 | 2912 | <!-- Only Euro is confirmed --> |
3055 | 2913 | <software name="gground"> |
3056 | 2914 | <description>Gain Ground (World, Rev. A)</description> |
r241749 | r241750 | |
3149 | 3007 | </software> |
3150 | 3008 | |
3151 | 3009 | |
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 | ||
3166 | 3010 | <!-- Only Euro is confirmed --> |
3167 | 3011 | <software name="genchaos"> |
3168 | 3012 | <description>General Chaos (Euro, USA)</description> |
r241749 | r241750 | |
3482 | 3326 | |
3483 | 3327 | |
3484 | 3328 | <!-- 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 --> | |
3500 | 3329 | <software name="hardbl94"> |
3501 | 3330 | <description>HardBall '94 (Euro, USA)</description> |
3502 | 3331 | <year>1994</year> |
r241749 | r241750 | |
3725 | 3554 | </software> |
3726 | 3555 | |
3727 | 3556 | |
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 | ||
3742 | 3557 | <software name="intrugby"> |
3743 | 3558 | <description>International Rugby (Euro)</description> |
3744 | 3559 | <year>1993</year> |
r241749 | r241750 | |
3827 | 3642 | </software> |
3828 | 3643 | |
3829 | 3644 | |
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 | ||
3850 | 3645 | <!-- Only Euro is confirmed, USA with label C55-01? needs to be verified --> |
3851 | 3646 | <software name="jbdougko"> |
3852 | 3647 | <description>James 'Buster' Douglas Knockout Boxing (Euro, USA)</description> |
r241749 | r241750 | |
3941 | 3736 | </software> |
3942 | 3737 | |
3943 | 3738 | |
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 | ||
3958 | 3739 | <!-- Only Euro is confirmed --> |
3959 | 3740 | <software name="jewelms"> |
3960 | 3741 | <description>Jewel Master (Euro, USA, Rev. A)</description> |
r241749 | r241750 | |
4999 | 4780 | </software> |
5000 | 4781 | |
5001 | 4782 | |
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 | ||
5034 | 4783 | <software name="mmprtm"> |
5035 | 4784 | <description>Mighty Morphin Power Rangers - The Movie (Euro)</description> |
5036 | 4785 | <year>1995</year> |
r241749 | r241750 | |
5381 | 5130 | </software> |
5382 | 5131 | |
5383 | 5132 | |
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 | ||
5406 | 5133 | <software name="bullvslaj" cloneof="bullvsla"> |
5407 | 5134 | <description>NBA Pro Basketball - Bulls Vs Lakers (Jpn)</description> |
5408 | 5135 | <year>1993</year> |
r241749 | r241750 | |
5906 | 5633 | |
5907 | 5634 | |
5908 | 5635 | <!-- 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 --> | |
5931 | 5636 | <software name="pga96"> |
5932 | 5637 | <description>PGA Tour 96 (Euro, USA)</description> |
5933 | 5638 | <year>1995</year> |
r241749 | r241750 | |
6018 | 5723 | </software> |
6019 | 5724 | |
6020 | 5725 | |
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 | ||
6043 | 5726 | <software name="phantom"> |
6044 | 5727 | <description>Phantom 2040 (Euro)</description> |
6045 | 5728 | <year>1995</year> |
r241749 | r241750 | |
6190 | 5873 | </software> |
6191 | 5874 | |
6192 | 5875 | |
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 | ||
6211 | 5876 | <software name="pdrive"> |
6212 | 5877 | <description>Power Drive (Euro)</description> |
6213 | 5878 | <year>1994</year> |
r241749 | r241750 | |
6237 | 5902 | </software> |
6238 | 5903 | |
6239 | 5904 | |
6240 | <!-- | |
5905 | <!-- Only Euro is confirmed --> | |
6241 | 5906 | <software name="predatr2"> |
6242 | 5907 | <description>Predator 2 (Euro, USA)</description> |
6243 | 5908 | <year>1992</year> |
6244 | 5909 | <publisher>Arena</publisher> |
6245 | 5910 | <part name="cart" interface="megadriv_cart"> |
6246 | <feature name="pcb" value="670100 REV 1 | |
5911 | <feature name="pcb" value="670100 REV 1"/> | |
6247 | 5912 | <feature name="ic1" value="MPR-15069 W71"/> |
6248 | 5913 | <dataarea name="rom" width="16" endianness="big" size="1048576"> |
6249 | 5914 | <rom name="mpr-15069 w71.ic1" size="1048576" crc="bdba113e" sha1="0d482bae2922c81c8bc7500a62c396b038978114" offset="0x000000"/> |
r241749 | r241750 | |
6252 | 5917 | </software> |
6253 | 5918 | |
6254 | 5919 | |
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 | ||
6277 | 5920 | <software name="prmang97"> |
6278 | 5921 | <description>Premier Manager 97 (Euro)</description> |
6279 | 5922 | <year>1996</year> |
r241749 | r241750 | |
6342 | 5985 | </software> |
6343 | 5986 | |
6344 | 5987 | |
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 | ||
6359 | 5988 | <software name="puggsy"> |
6360 | 5989 | <description>Puggsy (Euro)</description> |
6361 | 5990 | <year>1993</year> |
r241749 | r241750 | |
6797 | 6426 | </software> |
6798 | 6427 | |
6799 | 6428 | |
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 | ||
6817 | 6429 | <software name="slammastu" cloneof="slammast"> |
6818 | 6430 | <description>Saturday Night Slammasters (USA)</description> |
6819 | 6431 | <year>1994</year> |
r241749 | r241750 | |
7120 | 6732 | </software> |
7121 | 6733 | |
7122 | 6734 | |
7123 | <!-- | |
6735 | <!-- Only Euro is confirmed --> | |
7124 | 6736 | <software name="bartnigh"> |
7125 | 6737 | <description>The Simpsons - Bart's Nightmare (Euro, USA)</description> |
7126 | 6738 | <year>1993</year> |
7127 | 6739 | <publisher>Flying Edge</publisher> |
7128 | 6740 | <part name="cart" interface="megadriv_cart"> |
7129 | <feature name="pcb" value="171-5978BA | |
6741 | <feature name="pcb" value="171-5978BA"/> | |
7130 | 6742 | <feature name="u1" value="MPR-15762 T53"/> <!-- location not really marked on PCB, using u1 for consistency --> |
7131 | 6743 | <dataarea name="rom" width="16" endianness="big" size="1048576"> |
7132 | 6744 | <rom name="mpr-15762 t53.u1" size="1048576" crc="24d7507c" sha1="fb95b7fdf12dcf62883dabf65d2bf8ffa83786fc" offset="0x000000"/> |
r241749 | r241750 | |
7247 | 6859 | </software> |
7248 | 6860 | |
7249 | 6861 | |
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 | ||
7264 | 6862 | <!-- Both Euro and USA confirmed --> |
7265 | 6863 | <software name="sonic"> |
7266 | 6864 | <description>Sonic the Hedgehog (Euro, USA)</description> |
r241749 | r241750 | |
7276 | 6874 | </software> |
7277 | 6875 | |
7278 | 6876 | |
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 | ||
7297 | 6877 | <!-- Euro and Jpn are confirmed --> |
7298 | 6878 | <software name="sonic2"> |
7299 | 6879 | <description>Sonic the Hedgehog 2 (World, Rev. A)</description> |
r241749 | r241750 | |
7364 | 6944 | </software> |
7365 | 6945 | |
7366 | 6946 | |
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 | ||
7381 | 6947 | <software name="speedbl2"> |
7382 | 6948 | <description>Speedball 2 (Euro)</description> |
7383 | 6949 | <year>1992</year> |
r241749 | r241750 | |
8382 | 7948 | </software> |
8383 | 7949 | |
8384 | 7950 | |
8385 | <!-- Euro | |
7951 | <!-- Only Euro is confirmed --> | |
8386 | 7952 | <software name="toejama" cloneof="toejam"> |
8387 | 7953 | <description>Toe Jam & Earl (World)</description> |
8388 | 7954 | <year>1992</year> |
r241749 | r241750 | |
8392 | 7958 | <info name="alt_title" value="トージャム&アール"/> |
8393 | 7959 | <part name="cart" interface="megadriv_cart"> |
8394 | 7960 | <feature name="pcb" value="171-5978BA"/> |
8395 | <feature name="u1" value="MPR-14236-F | |
7961 | <feature name="u1" value="MPR-14236-F"/> <!-- location not really marked on PCB, using u1 for consistency --> | |
8396 | 7962 | <dataarea name="rom" width="16" endianness="big" size="1048576"> |
8397 | 7963 | <rom name="mpr-14236-f.ic1" size="1048576" crc="d1b36786" sha1="7f82d8b57fff88bdca5d8aff85b01e231dc1239a" offset="0x000000"/> |
8398 | 7964 | </dataarea> |
r241749 | r241750 | |
8786 | 8352 | </software> |
8787 | 8353 | |
8788 | 8354 | |
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 | ||
8811 | 8355 | <!-- Both Euro and USA confirmed --> |
8812 | 8356 | <software name="vrtroop"> |
8813 | 8357 | <description>VR Troopers (Euro, USA)</description> |
r241749 | r241750 | |
8921 | 8465 | <publisher>Ballistic</publisher> |
8922 | 8466 | <part name="cart" interface="megadriv_cart"> |
8923 | 8467 | <feature name="pcb" value="ACSGEE1191 REV A"/> |
8924 | <feature name="u1" value="9341 (c) 1/92 ACWCSG-1"/> | |
8468 | <feature name="u1" value="9341 (c) 1/92 ACWCSG-1"/> | |
8925 | 8469 | <feature name="u2" value="AT28C1616E, KM28C16-20"/> |
8926 | 8470 | <feature name="u3" value="KS74HCTLS00N"/> |
8927 | 8471 | <dataarea name="rom" width="16" endianness="big" size="1048576"> |
r241749 | r241750 | |
9212 | 8756 | |
9213 | 8757 | <!-- Only Euro is confirmed --> |
9214 | 8758 | <software name="wwfroyal"> |
9215 | <description>WWF Royal Rumble ( | |
8759 | <description>WWF Royal Rumble (World)</description> | |
9216 | 8760 | <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ロイヤルランブル"/> | |
9218 | 8765 | <part name="cart" interface="megadriv_cart"> |
9219 | 8766 | <feature name="pcb" value="670116 REV 2"/> |
9220 | 8767 | <feature name="ic1" value="WWFRR-GEN LO VER 1.00"/> |
r241749 | r241750 | |
9237 | 8784 | </software> |
9238 | 8785 | |
9239 | 8786 | |
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 | ||
9258 | 8787 | <!-- Only Euro is confirmed --> |
9259 | 8788 | <software name="wwfsup"> |
9260 | 8789 | <description>WWF Super WrestleMania (Euro, USA)</description> |
r241749 | r241750 | |
9388 | 8917 | </software> |
9389 | 8918 | |
9390 | 8919 | |
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 "Nth" 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 | ||
9406 | 8920 | <!-- 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 --> | |
9422 | 8921 | <software name="zoom"> |
9423 | 8922 | <description>Zoom! (World)</description> |
9424 | 8923 | <year>1990</year> |
r241749 | r241750 | |
9439 | 8938 | |
9440 | 8939 | <!-- Partially documented: confirmed dumps, missing additional info (a PCB pic would be of help to fill missing details) --> |
9441 | 8940 | |
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 | ||
9442 | 8957 | <software name="microm96"> |
9443 | 8958 | <description>Micro Machines Turbo Tournament 96 (Euro, v1.1, J-Cart)</description> |
9444 | 8959 | <year>1995</year> |
r241749 | r241750 | |
9583 | 9098 | </part> |
9584 | 9099 | </software> |
9585 | 9100 | |
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 | ||
9586 | 9113 | <software name="micromac"> |
9587 | 9114 | <description>Micro Machines (Euro, USA)</description> |
9588 | 9115 | <year>1993</year> |
r241749 | r241750 | |
9604 | 9131 | <feature name="slot" value="rom_cm2in1"/> |
9605 | 9132 | <dataarea name="rom" width="16" endianness="big" size="2621440"> |
9606 | 9133 | <rom name="mdppf821.bin" size="2097152" crc="32dd8351" sha1="928f46ca87886c6e72d10f7c9db29b09e483bc49" offset="0x000000"/> |
9607 | <rom name="mdmm | |
9134 | <rom name="mdmm_acd3.bin" size="524288" crc="50081a0b" sha1="56a8844c376f2e79e92cf128681fa3fef81c36d6" offset="0x200000"/> | |
9608 | 9135 | </dataarea> |
9609 | 9136 | </part> |
9610 | 9137 | </software> |
r241749 | r241750 | |
10374 | 9901 | </part> |
10375 | 9902 | </software> |
10376 | 9903 | |
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> | |
10380 | 9906 | <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="アローフラッシュ"/> | |
10382 | 9911 | <part name="cart" interface="megadriv_cart"> |
10383 | 9912 | <dataarea name="rom" width="16" endianness="big" size="524288"> |
10384 | <rom name="arrowflash | |
9913 | <rom name="arrow flash (world) (alt).bin" size="524288" crc="4d89e66b" sha1="916524d2b403a633108cf457eec13b4df7384d95" offset="0x000000"/> | |
10385 | 9914 | </dataarea> |
10386 | 9915 | </part> |
10387 | 9916 | </software> |
r241749 | r241750 | |
10845 | 10374 | </part> |
10846 | 10375 | </software> |
10847 | 10376 | |
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 | ||
10848 | 10388 | <software name="barkley2"> |
10849 | 10389 | <description>Barkley Shut Up and Jam! 2 (USA)</description> |
10850 | 10390 | <year>1995</year> |
r241749 | r241750 | |
11840 | 11380 | </part> |
11841 | 11381 | </software> |
11842 | 11382 | |
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 | ||
11843 | 11411 | <software name="budokanu" cloneof="budokan"> |
11844 | 11412 | <description>Budokan - The Martial Spirit (USA)</description> |
11845 | 11413 | <year>1990</year> |
r241749 | r241750 | |
11873 | 11441 | </part> |
11874 | 11442 | </software> |
11875 | 11443 | |
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 | ||
11876 | 11455 | <software name="burnforcu" cloneof="burnforc"> |
11877 | 11456 | <description>Burning Force (USA)</description> |
11878 | 11457 | <year>1990</year> |
r241749 | r241750 | |
12304 | 11883 | </part> |
12305 | 11884 | </software> |
12306 | 11885 | |
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 | ||
12307 | 11897 | <software name="coachk"> |
12308 | 11898 | <description>Coach K College Basketball (USA)</description> |
12309 | 11899 | <year>1995</year> |
r241749 | r241750 | |
12921 | 12511 | </part> |
12922 | 12512 | </software> |
12923 | 12513 | |
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 | ||
12924 | 12525 | <software name="crkdownu" cloneof="crkdown"> |
12925 | 12526 | <description>Crack Down (USA)</description> |
12926 | 12527 | <year>1991</year> |
r241749 | r241750 | |
14160 | 13761 | </part> |
14161 | 13762 | </software> |
14162 | 13763 | |
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 | ||
14163 | 13775 | <software name="ejim2u" cloneof="ejim2"> |
14164 | 13776 | <description>Earthworm Jim 2 (USA)</description> |
14165 | 13777 | <year>1996</year> |
r241749 | r241750 | |
14802 | 14414 | </part> |
14803 | 14415 | </software> |
14804 | 14416 | |
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 | ||
14805 | 14428 | <software name="f1wcp" cloneof="f1wc"> |
14806 | 14429 | <description>F1 - World Championship Edition (Euro, Prototype)</description> |
14807 | 14430 | <year>1993</year> |
r241749 | r241750 | |
15329 | 14952 | </part> |
15330 | 14953 | </software> |
15331 | 14954 | |
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 | ||
15332 | 14966 | <software name="funngameu" cloneof="funngame"> |
15333 | 14967 | <description>Fun 'N' Games (USA)</description> |
15334 | 14968 | <year>1993</year> |
r241749 | r241750 | |
15387 | 15021 | </part> |
15388 | 15022 | </software> |
15389 | 15023 | |
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> | |
15393 | 15026 | <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="ゲイングランド"/> | |
15395 | 15031 | <part name="cart" interface="megadriv_cart"> |
15396 | 15032 | <dataarea name="rom" width="16" endianness="big" size="524288"> |
15397 | <rom name="gainground | |
15033 | <rom name="gain ground (world) (alt).bin" size="524288" crc="83e7b8ae" sha1="3cc501086f794ac663aad14d5c5a75b648041151" offset="0x000000"/> | |
15398 | 15034 | </dataarea> |
15399 | 15035 | </part> |
15400 | 15036 | </software> |
r241749 | r241750 | |
15822 | 15458 | </part> |
15823 | 15459 | </software> |
15824 | 15460 | |
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 | ||
15825 | 15472 | <software name="greatcirj" cloneof="mickeycm"> |
15826 | 15473 | <description>Great Circus Mystery - Mickey to Minnie Magical Adventure 2 (Jpn)</description> |
15827 | 15474 | <year>1994</year> |
r241749 | r241750 | |
15990 | 15637 | </part> |
15991 | 15638 | </software> |
15992 | 15639 | |
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 | ||
15993 | 15651 | <software name="havocu" cloneof="havoc"> |
15994 | 15652 | <description>High Seas Havoc (USA)</description> |
15995 | 15653 | <year>1993</year> |
r241749 | r241750 | |
16259 | 15917 | </part> |
16260 | 15918 | </software> |
16261 | 15919 | |
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 | ||
16262 | 15931 | <software name="insectx"> |
16263 | 15932 | <description>Insector X (USA)</description> |
16264 | 15933 | <year>1990</year> |
r241749 | r241750 | |
16497 | 16166 | </part> |
16498 | 16167 | </software> |
16499 | 16168 | |
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 | ||
16500 | 16184 | <software name="finalb" cloneof="jbdougko"> |
16501 | 16185 | <description>Final Blow (Jpn)</description> |
16502 | 16186 | <year>1990</year> |
r241749 | r241750 | |
19475 | 19159 | </part> |
19476 | 19160 | </software> |
19477 | 19161 | |
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 | ||
19478 | 19176 | <software name="nbaliv98"> |
19479 | 19177 | <description>NBA Live 98 (USA)</description> |
19480 | 19178 | <year>1997</year> |
r241749 | r241750 | |
20796 | 20494 | </part> |
20797 | 20495 | </software> |
20798 | 20496 | |
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 | ||
20813 | 20497 | <software name="paperboyj" cloneof="paperboy"> |
20814 | 20498 | <description>Paperboy (Jpn)</description> |
20815 | 20499 | <year>1992</year> |
r241749 | r241750 | |
20938 | 20622 | </part> |
20939 | 20623 | </software> |
20940 | 20624 | |
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 | ||
20941 | 20646 | <software name="pga2"> |
20942 | 20647 | <description>PGA Tour Golf II (Euro, USA, v1.1)</description> |
20943 | 20648 | <year>1992</year> |
r241749 | r241750 | |
20969 | 20674 | </part> |
20970 | 20675 | </software> |
20971 | 20676 | |
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 | ||
20972 | 20691 | <software name="pstar2a" cloneof="pstar2"> |
20973 | 20692 | <description>Phantasy Star II (Euro, USA)</description> |
20974 | 20693 | <year>1989</year> |
r241749 | r241750 | |
21367 | 21086 | </part> |
21368 | 21087 | </software> |
21369 | 21088 | |
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 | ||
21370 | 21100 | <software name="pocahontu" cloneof="pocahont"> |
21371 | 21101 | <description>Pocahontas (USA)</description> |
21372 | 21102 | <year>1996</year> |
r241749 | r241750 | |
21517 | 21247 | </part> |
21518 | 21248 | </software> |
21519 | 21249 | |
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 | ||
21520 | 21272 | <software name="primetim"> |
21521 | 21273 | <description>Prime Time NFL Starring Deion Sanders (USA)</description> |
21522 | 21274 | <year>1995</year> |
r241749 | r241750 | |
22569 | 22321 | </part> |
22570 | 22322 | </software> |
22571 | 22323 | |
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 | ||
22583 | 22324 | <software name="mvpbb"> |
22584 | 22325 | <description>Roger Clements MVP Baseball (USA)</description> |
22585 | 22326 | <year>1992</year> |
r241749 | r241750 | |
22717 | 22458 | </part> |
22718 | 22459 | </software> |
22719 | 22460 | |
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 | ||
22720 | 22472 | <software name="sagaia"> |
22721 | 22473 | <description>Sagaia (USA)</description> |
22722 | 22474 | <year>1991</year> |
r241749 | r241750 | |
22863 | 22615 | </part> |
22864 | 22616 | </software> |
22865 | 22617 | |
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 | ||
22866 | 22629 | <software name="scooby"> |
22867 | 22630 | <description>Scooby-Doo Mystery (USA)</description> |
22868 | 22631 | <year>1995</year> |
r241749 | r241750 | |
23982 | 23745 | </part> |
23983 | 23746 | </software> |
23984 | 23747 | |
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 | ||
23985 | 23759 | <software name="sspinua" cloneof="sspin"> |
23986 | 23760 | <description>Sonic Spinball (USA, Alt)</description> |
23987 | 23761 | <year>1993</year> |
r241749 | r241750 | |
23993 | 23767 | </part> |
23994 | 23768 | </software> |
23995 | 23769 | |
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 | ||
23996 | 23784 | <software name="sonicpir" cloneof="sonic"> |
23997 | 23785 | <description>Sonic the Hedgehog (Pirate, Ripped from Golden 10 in 1)</description> |
23998 | 23786 | <year>1991?</year> |
r241749 | r241750 | |
24271 | 24059 | </part> |
24272 | 24060 | </software> |
24273 | 24061 | |
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 | ||
24274 | 24076 | <software name="sparkstru" cloneof="sparkstr"> |
24275 | 24077 | <description>Sparkster (USA)</description> |
24276 | 24078 | <year>1994</year> |
r241749 | r241750 | |
25294 | 25096 | </part> |
25295 | 25097 | </software> |
25296 | 25098 | |
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 | ||
25297 | 25110 | <software name="sfzone"> |
25298 | 25111 | <description>Super Fantasy Zone (Euro)</description> |
25299 | 25112 | <year>1993</year> |
r241749 | r241750 | |
27261 | 27074 | </part> |
27262 | 27075 | </software> |
27263 | 27076 | |
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 | ||
27264 | 27091 | <software name="vixen357"> |
27265 | 27092 | <description>Vixen 357 (Jpn)</description> |
27266 | 27093 | <year>1992</year> |
r241749 | r241750 | |
29339 | 29166 | </part> |
29340 | 29167 | </software> |
29341 | 29168 | |
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 "Nth" 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 | ||
29342 | 29184 | <software name="zoolu" cloneof="zool"> |
29343 | 29185 | <description>Zool (USA)</description> |
29344 | 29186 | <year>1993</year> |
r241749 | r241750 | |
---|---|---|
16 | 16 | </software> |
17 | 17 | |
18 | 18 | <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><unknown></publisher> | |
22 | 22 | <part name="cass" interface="mikrosha_cass"> |
23 | 23 | <dataarea name="cass" size="5604"> |
24 | 24 | <rom name="alambush.rkm" size="5604" crc="4b247561" sha1="5f6130c571bb4877b27c1e4c37a17db680e8b2ab" offset="0" /> |
r241749 | r241750 | |
27 | 27 | </software> |
28 | 28 | |
29 | 29 | <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><unknown></publisher> | |
33 | 33 | <part name="cass" interface="mikrosha_cass"> |
34 | 34 | <dataarea name="cass" size="2620"> |
35 | 35 | <rom name="ball.rkm" size="2620" crc="ff43291b" sha1="f7fbdae6169c08a4140d685d0d504cc84be82375" offset="0" /> |
r241749 | r241750 | |
38 | 38 | </software> |
39 | 39 | |
40 | 40 | <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><unknown></publisher> | |
44 | 44 | <part name="cass" interface="mikrosha_cass"> |
45 | 45 | <dataarea name="cass" size="4102"> |
46 | 46 | <rom name="barmen.rkm" size="4102" crc="01a1e046" sha1="f129df0395d261edf50c4c79a8d3375249a935ef" offset="0" /> |
r241749 | r241750 | |
49 | 49 | </software> |
50 | 50 | |
51 | 51 | <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><unknown></publisher> | |
55 | 55 | <part name="cass" interface="mikrosha_cass"> |
56 | 56 | <dataarea name="cass" size="4627"> |
57 | 57 | <rom name="bomber.rkm" size="4627" crc="8ba227ef" sha1="a15ad12ec2981b53607f4ae755acecbb69939b3c" offset="0" /> |
r241749 | r241750 | |
59 | 59 | </part> |
60 | 60 | </software> |
61 | 61 | |
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><unknown></publisher> | |
66 | 66 | <part name="cass" interface="mikrosha_cass"> |
67 | 67 | <dataarea name="cass" size="15367"> |
68 | 68 | <rom name="boulder.rkm" size="15367" crc="2da99b60" sha1="2620046d21618cf22607827c19334ba000902c27" offset="0" /> |
r241749 | r241750 | |
71 | 71 | </software> |
72 | 72 | |
73 | 73 | <software name="chess"> |
74 | <description>C | |
74 | <description>CHESS</description> | |
75 | 75 | <year>19??</year> |
76 | 76 | <publisher><unknown></publisher> |
77 | 77 | <part name="cass" interface="mikrosha_cass"> |
r241749 | r241750 | |
81 | 81 | </part> |
82 | 82 | </software> |
83 | 83 | |
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><unknown></publisher> | |
88 | 88 | <part name="cass" interface="mikrosha_cass"> |
89 | 89 | <dataarea name="cass" size="7655"> |
90 | 90 | <rom name="circus.rkm" size="7655" crc="bd44cf25" sha1="2cc3472632e962b0e32637a4eea9090b5307eba9" offset="0" /> |
r241749 | r241750 | |
93 | 93 | </software> |
94 | 94 | |
95 | 95 | <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><unknown></publisher> | |
99 | 99 | <part name="cass" interface="mikrosha_cass"> |
100 | 100 | <dataarea name="cass" size="11127"> |
101 | 101 | <rom name="crossfir.rkm" size="11127" crc="0e204a60" sha1="f41be5612ea4648ce51a2495fa2c2b20c4e910fb" offset="0" /> |
r241749 | r241750 | |
566 | 566 | </software> |
567 | 567 | |
568 | 568 | <software name="xonmicr"> |
569 | <description>X | |
569 | <description>XONMICR</description> | |
570 | 570 | <year>19??</year> |
571 | <publisher> | |
571 | <publisher><unknown></publisher> | |
572 | 572 | <part name="cass" interface="mikrosha_cass"> |
573 | 573 | <dataarea name="cass" size="2822"> |
574 | 574 | <rom name="xonmicr.rkm" size="2822" crc="a2658748" sha1="561ac9989c2b8605719d0b340a513fb5a691d7dd" offset="0" /> |
r241749 | r241750 | |
576 | 576 | </part> |
577 | 577 | </software> |
578 | 578 | |
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><unknown></publisher> | |
583 | 583 | <part name="cass" interface="mikrosha_cass"> |
584 | 584 | <dataarea name="cass" size="1895"> |
585 | 585 | <rom name="zstation.rkm" size="1895" crc="d496dea7" sha1="4aabce2dc4349a82c1ba59be8705f2f8cac77401" offset="0" /> |
r241749 | r241750 | |
591 | 591 | <!-- System --> |
592 | 592 | |
593 | 593 | <software name="basic"> |
594 | <description> | |
594 | <description>BASIC</description> | |
595 | 595 | <year>19??</year> |
596 | 596 | <publisher><unknown></publisher> |
597 | 597 | <part name="cass" interface="mikrosha_cass"> |
r241749 | r241750 | |
602 | 602 | </software> |
603 | 603 | |
604 | 604 | <software name="disasm"> |
605 | <description>D | |
605 | <description>DISASM</description> | |
606 | 606 | <year>19??</year> |
607 | 607 | <publisher><unknown></publisher> |
608 | 608 | <part name="cass" interface="mikrosha_cass"> |
r241749 | r241750 | |
---|---|---|
13654 | 13654 | <software name="cheese" supported="partial"> |
13655 | 13655 | <description>Cheese (Jpn)</description> |
13656 | 13656 | <year>1984</year> |
13657 | <publisher>Nihon E | |
13657 | <publisher>Nihon ELectronics</publisher> | |
13658 | 13658 | <part name="cart" interface="msx_cart"> |
13659 | 13659 | <feature name="mapper" value="NOMAPPER" /> |
13660 | 13660 | <dataarea name="rom" size="16384"> |
r241749 | r241750 | |
---|---|---|
11218 | 11218 | <part name="cart" interface="nes_cart"> |
11219 | 11219 | <feature name="slot" value="nina006" /> |
11220 | 11220 | <feature name="pcb" value="AVE-NINA-06" /> |
11221 | <feature name="mirroring" value="horizontal" /> | |
11222 | 11221 | <dataarea name="prg" size="32768"> |
11223 | 11222 | <rom name="f-15 pgm rev 11 db78" size="32768" crc="e1b511cf" sha1="de66004bd0d88aee42c9efe6c65fb1937ab6b9bb" offset="00000" /> |
11224 | 11223 | </dataarea> |
r241749 | r241750 | |
20455 | 20454 | </part> |
20456 | 20455 | </software> |
20457 | 20456 | |
20458 | <software name="krazykr"> | |
20457 | <software name="krazykr" supported="no"> | |
20459 | 20458 | <description>Krazy Kreatures (USA, v1.1)</description> |
20460 | 20459 | <year>1990</year> |
20461 | 20460 | <publisher>American Video Entertainment</publisher> |
r241749 | r241750 | |
20474 | 20473 | </software> |
20475 | 20474 | |
20476 | 20475 | <!-- 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"> | |
20478 | 20477 | <description>Krazy Kreatures (USA, v1.0)</description> |
20479 | 20478 | <year>1990</year> |
20480 | 20479 | <publisher>American Video Entertainment</publisher> |
r241749 | r241750 | |
23816 | 23815 | </part> |
23817 | 23816 | </software> |
23818 | 23817 | |
23819 | <software name="mermatl"> | |
23818 | <software name="mermatl" supported="no"> | |
23820 | 23819 | <description>Mermaids of Atlantis - The Riddle of the Magic Bubble (USA)</description> |
23821 | 23820 | <year>1991</year> |
23822 | 23821 | <publisher>American Video Entertainment</publisher> |
r241749 | r241750 | |
45718 | 45717 | <part name="cart" interface="nes_cart"> |
45719 | 45718 | <feature name="slot" value="nina006" /> |
45720 | 45719 | <feature name="pcb" value="AVE-NINA-06" /> |
45721 | <feature name="mirroring" value="horizontal" /> | |
45722 | 45720 | <dataarea name="chr" size="65536"> |
45723 | 45721 | <rom name="futebol (brazil) (unl).chr" size="65536" crc="9fddfc61" sha1="feb234b9cb39996542ab4f9a0d76e0c6239fccc3" offset="00000" status="baddump" /> |
45724 | 45722 | </dataarea> |
r241749 | r241750 | |
45857 | 45855 | </part> |
45858 | 45856 | </software> |
45859 | 45857 | |
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 | ||
45877 | 45858 | <software name="goalj" cloneof="goal2"> |
45878 | 45859 | <description>Goal!! (Jpn)</description> |
45879 | 45860 | <year>1992</year> |
r241749 | r241750 | |
48417 | 48398 | <part name="cart" interface="nes_cart"> |
48418 | 48399 | <feature name="slot" value="nina006" /> |
48419 | 48400 | <feature name="pcb" value="AVE-NINA-06" /> |
48420 | <feature name="mirroring" value="vertical" /> | |
48421 | 48401 | <dataarea name="chr" size="32768"> |
48422 | 48402 | <rom name="robert byrnes pool challenge (usa) (proto) (unl).chr" size="32768" crc="01005a00" sha1="e47a5a225990eca7aa6dc3853ca2c243f7d29136" offset="00000" status="baddump" /> |
48423 | 48403 | </dataarea> |
r241749 | r241750 | |
49931 | 49911 | <part name="cart" interface="nes_cart"> |
49932 | 49912 | <feature name="slot" value="nina006" /> |
49933 | 49913 | <feature name="pcb" value="AVE-NINA-03" /> |
49934 | <feature name="mirroring" value="horizontal" /> | |
49935 | 49914 | <dataarea name="chr" size="65536"> |
49936 | 49915 | <rom name="ultimate league soccer (italy) (unl).chr" size="65536" crc="201e9c71" sha1="3ede735b03708783b1ebb9c203d6e702e90cf0c6" offset="00000" status="baddump" /> |
49937 | 49916 | </dataarea> |
r241749 | r241750 | |
52766 | 52745 | <part name="cart" interface="nes_cart"> |
52767 | 52746 | <feature name="slot" value="nina006" /> |
52768 | 52747 | <feature name="pcb" value="AVE-NINA-06" /> |
52769 | <feature name="mirroring" value="horizontal" /> | |
52770 | 52748 | <dataarea name="chr" size="32768"> |
52771 | 52749 | <rom name="poke block (asia) (unl).chr" size="32768" crc="edce1b2f" sha1="2628650db3c27b2b3232b627db4ed2bcc69d6e17" offset="00000" status="baddump" /> |
52772 | 52750 | </dataarea> |
r241749 | r241750 | |
57158 | 57136 | <part name="cart" interface="nes_cart"> |
57159 | 57137 | <feature name="slot" value="nina006" /> |
57160 | 57138 | <feature name="pcb" value="AVE-NINA-03" /> |
57161 | <feature name="mirroring" value="horizontal" /> | |
57162 | 57139 | <dataarea name="chr" size="65536"> |
57163 | 57140 | <rom name="av dragon mahjang (japan) (unl).chr" size="65536" crc="a203df20" sha1="2a24122bfb37b9a62771e740c911a5cbb349178e" offset="00000" status="baddump" /> |
57164 | 57141 | </dataarea> |
r241749 | r241750 | |
57466 | 57443 | <part name="cart" interface="nes_cart"> |
57467 | 57444 | <feature name="slot" value="nina006" /> |
57468 | 57445 | <feature name="pcb" value="AVE-NINA-06" /> |
57469 | <feature name="mirroring" value=" | |
57446 | <feature name="mirroring" value="horizontal" /> | |
57470 | 57447 | <dataarea name="chr" size="32768"> |
57471 | 57448 | <rom name="metal fighter (asia) (hacker) (unl).chr" size="32768" crc="fe69de4b" sha1="11bcf115fa146923a87763f8f5f224a8ddb027ce" offset="00000" status="baddump" /> |
57472 | 57449 | </dataarea> |
r241749 | r241750 | |
---|---|---|
4 | 4 | <softwarelist name="orao" description="PEL Varazdin Orao cassettes"> |
5 | 5 | |
6 | 6 | <software name="6502step"> |
7 | <description>6502 | |
7 | <description>6502Step</description> | |
8 | 8 | <year>19??</year> |
9 | 9 | <publisher><unknown></publisher> |
10 | 10 | <part name="cass1" interface="orao_cass"> |
11 | 11 | <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" /> | |
13 | 13 | </dataarea> |
14 | 14 | </part> |
15 | 15 | </software> |
r241749 | r241750 | |
17 | 17 | <software name="ajnc"> |
18 | 18 | <description>Ajnc</description> |
19 | 19 | <year>19??</year> |
20 | <publisher> | |
20 | <publisher><unknown></publisher> | |
21 | 21 | <part name="cass1" interface="orao_cass"> |
22 | 22 | <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" /> | |
24 | 24 | </dataarea> |
25 | 25 | </part> |
26 | 26 | </software> |
27 | 27 | |
28 | 28 | <software name="avion"> |
29 | 29 | <description>Avion</description> |
30 | <year>1986</year> | |
31 | <publisher>Emil Herceg - Igor Kos</publisher> | |
30 | <year>19??</year> | |
31 | <publisher><unknown></publisher> | |
32 | 32 | <part name="cass1" interface="orao_cass"> |
33 | 33 | <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" /> | |
35 | 35 | </dataarea> |
36 | 36 | </part> |
37 | 37 | </software> |
38 | 38 | |
39 | 39 | <software name="bdash"> |
40 | <description>Boulder | |
40 | <description>BoulderDash</description> | |
41 | 41 | <year>19??</year> |
42 | <publisher> | |
42 | <publisher><unknown></publisher> | |
43 | 43 | <part name="cass1" interface="orao_cass"> |
44 | 44 | <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" /> | |
46 | 46 | </dataarea> |
47 | 47 | </part> |
48 | 48 | </software> |
r241749 | r241750 | |
50 | 50 | <software name="breakout"> |
51 | 51 | <description>Breakout</description> |
52 | 52 | <year>19??</year> |
53 | <publisher> | |
53 | <publisher><unknown></publisher> | |
54 | 54 | <part name="cass1" interface="orao_cass"> |
55 | 55 | <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" /> | |
57 | 57 | </dataarea> |
58 | 58 | </part> |
59 | 59 | </software> |
r241749 | r241750 | |
64 | 64 | <publisher><unknown></publisher> |
65 | 65 | <part name="cass1" interface="orao_cass"> |
66 | 66 | <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" /> | |
68 | 68 | </dataarea> |
69 | 69 | </part> |
70 | 70 | </software> |
71 | 71 | |
72 | 72 | <software name="crtanje"> |
73 | 73 | <description>Crtanje</description> |
74 | <year>1987</year> | |
75 | <publisher>Suzy Soft</publisher> | |
74 | <year>19??</year> | |
75 | <publisher><unknown></publisher> | |
76 | 76 | <part name="cass1" interface="orao_cass"> |
77 | 77 | <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" /> | |
79 | 79 | </dataarea> |
80 | 80 | </part> |
81 | 81 | </software> |
82 | 82 | |
83 | 83 | <software name="crvic"> |
84 | 84 | <description>Crvic</description> |
85 | <year>1986</year> | |
86 | <publisher>PEL Soft</publisher> | |
85 | <year>19??</year> | |
86 | <publisher><unknown></publisher> | |
87 | 87 | <part name="cass1" interface="orao_cass"> |
88 | 88 | <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" /> | |
90 | 90 | </dataarea> |
91 | 91 | </part> |
92 | 92 | </software> |
93 | 93 | |
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><unknown></publisher> | |
98 | 98 | <part name="cass1" interface="orao_cass"> |
99 | 99 | <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" /> | |
101 | 101 | </dataarea> |
102 | 102 | </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><unknown></publisher> | |
109 | <part name="cass1" interface="orao_cass"> | |
104 | 110 | <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" /> | |
106 | 112 | </dataarea> |
107 | 113 | </part> |
108 | 114 | </software> |
109 | 115 | |
110 | 116 | <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><unknown></publisher> | |
114 | 120 | <part name="cass1" interface="orao_cass"> |
115 | 121 | <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" /> | |
117 | 123 | </dataarea> |
118 | 124 | </part> |
119 | 125 | </software> |
120 | 126 | |
121 | 127 | <software name="eagle"> |
122 | 128 | <description>Eagle</description> |
123 | <year>1986</year> | |
124 | <publisher>KMI Borovo</publisher> | |
129 | <year>19??</year> | |
130 | <publisher><unknown></publisher> | |
125 | 131 | <part name="cass1" interface="orao_cass"> |
126 | 132 | <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" /> | |
128 | 134 | </dataarea> |
129 | 135 | </part> |
130 | 136 | </software> |
r241749 | r241750 | |
132 | 138 | <software name="jugador"> |
133 | 139 | <description>Jugador</description> |
134 | 140 | <year>19??</year> |
135 | <publisher> | |
141 | <publisher><unknown></publisher> | |
136 | 142 | <part name="cass1" interface="orao_cass"> |
137 | 143 | <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" /> | |
139 | 145 | </dataarea> |
140 | 146 | </part> |
141 | 147 | </software> |
142 | 148 | |
143 | 149 | <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><unknown></publisher> | |
147 | 153 | <part name="cass1" interface="orao_cass"> |
148 | 154 | <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" /> | |
150 | 156 | </dataarea> |
151 | 157 | </part> |
152 | 158 | </software> |
153 | 159 | |
154 | 160 | <software name="karate"> |
155 | <description> | |
161 | <description>Karate</description> | |
156 | 162 | <year>19??</year> |
157 | <publisher> | |
163 | <publisher><unknown></publisher> | |
158 | 164 | <part name="cass1" interface="orao_cass"> |
159 | 165 | <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" /> | |
161 | 167 | </dataarea> |
162 | 168 | </part> |
163 | 169 | </software> |
164 | 170 | |
165 | 171 | <software name="kuki"> |
166 | 172 | <description>Kuki</description> |
167 | <year>1986</year> | |
168 | <publisher>KMI Borovo</publisher> | |
173 | <year>19??</year> | |
174 | <publisher><unknown></publisher> | |
169 | 175 | <part name="cass1" interface="orao_cass"> |
170 | 176 | <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" /> | |
172 | 178 | </dataarea> |
173 | 179 | </part> |
174 | 180 | </software> |
175 | 181 | |
176 | 182 | <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><unknown></publisher> | |
180 | 186 | <part name="cass1" interface="orao_cass"> |
181 | 187 | <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" /> | |
183 | 189 | </dataarea> |
184 | 190 | </part> |
185 | 191 | </software> |
186 | 192 | |
187 | 193 | <software name="labirint"> |
188 | 194 | <description>Labirint</description> |
189 | <year>1985</year> | |
190 | <publisher>Bibi Soft</publisher> | |
195 | <year>19??</year> | |
196 | <publisher><unknown></publisher> | |
191 | 197 | <part name="cass1" interface="orao_cass"> |
192 | 198 | <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" /> | |
194 | 200 | </dataarea> |
195 | 201 | </part> |
196 | 202 | </software> |
197 | 203 | |
198 | 204 | <software name="labirinm"> |
199 | <description>Labirint | |
205 | <description>LabirintM</description> | |
200 | 206 | <year>19??</year> |
201 | 207 | <publisher><unknown></publisher> |
202 | 208 | <part name="cass1" interface="orao_cass"> |
203 | 209 | <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" /> | |
205 | 211 | </dataarea> |
206 | 212 | </part> |
207 | 213 | </software> |
208 | 214 | |
209 | 215 | <software name="mminer"> |
210 | <description>Manic | |
216 | <description>ManicMiner</description> | |
211 | 217 | <year>19??</year> |
212 | <publisher> | |
218 | <publisher><unknown></publisher> | |
213 | 219 | <part name="cass1" interface="orao_cass"> |
214 | 220 | <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" /> | |
216 | 222 | </dataarea> |
217 | 223 | </part> |
218 | 224 | </software> |
219 | 225 | |
220 | 226 | <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><unknown></publisher> | |
224 | 230 | <part name="cass1" interface="orao_cass"> |
225 | 231 | <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" /> | |
227 | 233 | </dataarea> |
228 | 234 | </part> |
229 | 235 | </software> |
230 | 236 | |
231 | <software name="memo"> | |
232 | <description>Memo</description> | |
237 | <software name="memonona"> | |
238 | <description>MemoNoName</description> | |
233 | 239 | <year>19??</year> |
234 | <publisher> | |
240 | <publisher><unknown></publisher> | |
235 | 241 | <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" /> | |
238 | 244 | </dataarea> |
239 | 245 | </part> |
240 | 246 | </software> |
241 | 247 | |
242 | <software name="memoa" cloneof="memo"> | |
243 | <description>Memo (No Loading Screen)</description> | |
248 | <software name="memopel"> | |
249 | <description>Memo PEL</description> | |
244 | 250 | <year>19??</year> |
245 | <publisher> | |
251 | <publisher><unknown></publisher> | |
246 | 252 | <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" /> | |
249 | 255 | </dataarea> |
250 | 256 | </part> |
251 | 257 | </software> |
252 | 258 | |
253 | 259 | <software name="nevid"> |
254 | 260 | <description>Nevidljivi</description> |
255 | <year>1987</year> | |
256 | <publisher>Suzy Soft</publisher> | |
261 | <year>19??</year> | |
262 | <publisher><unknown></publisher> | |
257 | 263 | <part name="cass1" interface="orao_cass"> |
258 | 264 | <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" /> | |
260 | 266 | </dataarea> |
261 | 267 | </part> |
262 | 268 | </software> |
r241749 | r241750 | |
264 | 270 | <software name="obelix"> |
265 | 271 | <description>Obelix</description> |
266 | 272 | <year>19??</year> |
267 | <publisher> | |
273 | <publisher><unknown></publisher> | |
268 | 274 | <part name="cass1" interface="orao_cass"> |
269 | 275 | <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" /> | |
271 | 277 | </dataarea> |
272 | 278 | </part> |
273 | 279 | </software> |
274 | 280 | |
275 | 281 | <software name="othello"> |
276 | 282 | <description>Othello</description> |
277 | <year>1985</year> | |
278 | <publisher>Sasa Ivkovic</publisher> | |
283 | <year>19??</year> | |
284 | <publisher><unknown></publisher> | |
279 | 285 | <part name="cass1" interface="orao_cass"> |
280 | 286 | <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" /> | |
282 | 288 | </dataarea> |
283 | 289 | </part> |
284 | 290 | </software> |
285 | 291 | |
286 | 292 | <software name="pacman"> |
287 | <description>Pac | |
293 | <description>PacMan</description> | |
288 | 294 | <year>19??</year> |
289 | <publisher> | |
295 | <publisher><unknown></publisher> | |
290 | 296 | <part name="cass1" interface="orao_cass"> |
291 | 297 | <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" /> | |
293 | 299 | </dataarea> |
294 | 300 | </part> |
295 | 301 | </software> |
296 | 302 | |
297 | 303 | <software name="pcelicam"> |
298 | <description>Pcelica | |
304 | <description>PcelicaMaja</description> | |
299 | 305 | <year>19??</year> |
300 | 306 | <publisher><unknown></publisher> |
301 | 307 | <part name="cass1" interface="orao_cass"> |
302 | 308 | <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" /> | |
304 | 310 | </dataarea> |
305 | 311 | </part> |
306 | 312 | </software> |
307 | 313 | |
308 | 314 | <software name="podsjet"> |
309 | 315 | <description>Podsjetnik</description> |
310 | <year>1987</year> | |
311 | <publisher>Suzy Soft</publisher> | |
316 | <year>19??</year> | |
317 | <publisher><unknown></publisher> | |
312 | 318 | <part name="cass1" interface="orao_cass"> |
313 | 319 | <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" /> | |
315 | 321 | </dataarea> |
316 | 322 | </part> |
317 | 323 | </software> |
318 | 324 | |
319 | 325 | <software name="pomorska"> |
320 | <description>Pomorska | |
326 | <description>PomorskaBitka</description> | |
321 | 327 | <year>19??</year> |
322 | 328 | <publisher><unknown></publisher> |
323 | 329 | <part name="cass1" interface="orao_cass"> |
324 | 330 | <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" /> | |
326 | 332 | </dataarea> |
327 | 333 | </part> |
328 | 334 | </software> |
r241749 | r241750 | |
333 | 339 | <publisher><unknown></publisher> |
334 | 340 | <part name="cass1" interface="orao_cass"> |
335 | 341 | <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" /> | |
337 | 343 | </dataarea> |
338 | 344 | </part> |
339 | 345 | </software> |
r241749 | r241750 | |
344 | 350 | <publisher><unknown></publisher> |
345 | 351 | <part name="cass1" interface="orao_cass"> |
346 | 352 | <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" /> | |
348 | 354 | </dataarea> |
349 | 355 | </part> |
350 | 356 | </software> |
351 | 357 | |
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><unknown></publisher> | |
356 | 362 | <part name="cass1" interface="orao_cass"> |
357 | 363 | <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" /> | |
359 | 365 | </dataarea> |
360 | 366 | </part> |
361 | 367 | </software> |
362 | 368 | |
363 | 369 | <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><unknown></publisher> | |
367 | 373 | <part name="cass1" interface="orao_cass"> |
368 | 374 | <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" /> | |
370 | 376 | </dataarea> |
371 | 377 | </part> |
372 | 378 | </software> |
r241749 | r241750 | |
374 | 380 | <software name="sokoban"> |
375 | 381 | <description>Sokoban</description> |
376 | 382 | <year>19??</year> |
377 | <publisher> | |
383 | <publisher><unknown></publisher> | |
378 | 384 | <part name="cass1" interface="orao_cass"> |
379 | 385 | <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" /> | |
381 | 387 | </dataarea> |
382 | 388 | </part> |
383 | 389 | </software> |
384 | 390 | |
385 | 391 | <software name="spaceinv"> |
386 | <description>Space | |
392 | <description>SpaceInvaders</description> | |
387 | 393 | <year>19??</year> |
388 | <publisher> | |
394 | <publisher><unknown></publisher> | |
389 | 395 | <part name="cass1" interface="orao_cass"> |
390 | 396 | <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" /> | |
392 | 398 | </dataarea> |
393 | 399 | </part> |
394 | 400 | </software> |
395 | 401 | |
396 | 402 | <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><unknown></publisher> | |
400 | 406 | <part name="cass1" interface="orao_cass"> |
401 | 407 | <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" /> | |
403 | 409 | </dataarea> |
404 | 410 | </part> |
405 | 411 | </software> |
406 | 412 | |
407 | 413 | <software name="stripgam"> |
408 | <description>Strip | |
414 | <description>StripGameAinc</description> | |
409 | 415 | <year>19??</year> |
410 | <publisher> | |
416 | <publisher><unknown></publisher> | |
411 | 417 | <part name="cass1" interface="orao_cass"> |
412 | 418 | <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" /> | |
414 | 420 | </dataarea> |
415 | 421 | </part> |
416 | 422 | </software> |
r241749 | r241750 | |
418 | 424 | <software name="tornjev"> |
419 | 425 | <description>Tornjevi</description> |
420 | 426 | <year>19??</year> |
421 | <publisher> | |
427 | <publisher><unknown></publisher> | |
422 | 428 | <part name="cass1" interface="orao_cass"> |
423 | 429 | <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" /> | |
425 | 431 | </dataarea> |
426 | 432 | </part> |
427 | 433 | </software> |
428 | 434 | |
429 | 435 | <software name="ukletidv"> |
430 | <description>Ukleti | |
436 | <description>UkletiDvorac</description> | |
431 | 437 | <year>19??</year> |
432 | 438 | <publisher><unknown></publisher> |
433 | 439 | <part name="cass1" interface="orao_cass"> |
434 | 440 | <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" /> | |
436 | 442 | </dataarea> |
437 | 443 | </part> |
438 | 444 | </software> |
439 | 445 | |
440 | 446 | <software name="zid"> |
441 | 447 | <description>Zid</description> |
442 | <year>1985</year> | |
443 | <publisher>PEL Zabavni Programi</publisher> | |
448 | <year>19??</year> | |
449 | <publisher><unknown></publisher> | |
444 | 450 | <part name="cass1" interface="orao_cass"> |
445 | 451 | <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" /> | |
447 | 453 | </dataarea> |
448 | 454 | </part> |
449 | 455 | </software> |
450 | 456 | |
451 | 457 | <software name="znakovi"> |
452 | 458 | <description>Znakovi</description> |
453 | <year>1987</year> | |
454 | <publisher>Suzy Soft</publisher> | |
459 | <year>19??</year> | |
460 | <publisher><unknown></publisher> | |
455 | 461 | <part name="cass1" interface="orao_cass"> |
456 | 462 | <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" /> | |
458 | 464 | </dataarea> |
459 | 465 | </part> |
460 | 466 | </software> |
r241749 | r241750 | |
---|---|---|
6 | 6 | <software name="adresar"> |
7 | 7 | <description>Adresar</description> |
8 | 8 | <year>19??</year> |
9 | <publisher> | |
9 | <publisher><unknown></publisher> | |
10 | 10 | <part name="cass1" interface="pecom_cass"> |
11 | 11 | <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" /> | |
13 | 13 | </dataarea> |
14 | 14 | </part> |
15 | 15 | </software> |
16 | 16 | |
17 | 17 | <software name="bioritam"> |
18 | 18 | <description>Bioritam</description> |
19 | <year>1985</year> | |
20 | <publisher>Ei Racunari</publisher> | |
19 | <year>19??</year> | |
20 | <publisher><unknown></publisher> | |
21 | 21 | <part name="cass1" interface="pecom_cass"> |
22 | 22 | <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" /> | |
24 | 24 | </dataarea> |
25 | 25 | </part> |
26 | 26 | </software> |
27 | 27 | |
28 | 28 | <software name="lavirint"> |
29 | 29 | <description>Lavirint</description> |
30 | <year>1987</year> | |
31 | <publisher>Ei Racunari</publisher> | |
30 | <year>19??</year> | |
31 | <publisher><unknown></publisher> | |
32 | 32 | <part name="cass1" interface="pecom_cass"> |
33 | 33 | <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" /> | |
35 | 35 | </dataarea> |
36 | 36 | </part> |
37 | 37 | </software> |
38 | 38 | |
39 | 39 | <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><unknown></publisher> | |
43 | 43 | <part name="cass1" interface="pecom_cass"> |
44 | 44 | <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" /> | |
46 | 46 | </dataarea> |
47 | 47 | </part> |
48 | 48 | </software> |
49 | 49 | |
50 | 50 | <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><unknown></publisher> | |
54 | 54 | <part name="cass1" interface="pecom_cass"> |
55 | 55 | <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" /> | |
57 | 57 | </dataarea> |
58 | 58 | </part> |
59 | 59 | </software> |
60 | 60 | |
61 | 61 | <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><unknown></publisher> | |
65 | 65 | <part name="cass1" interface="pecom_cass"> |
66 | 66 | <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" /> | |
68 | 68 | </dataarea> |
69 | 69 | </part> |
70 | 70 | </software> |
71 | 71 | |
72 | 72 | <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><unknown></publisher> | |
76 | 76 | <part name="cass1" interface="pecom_cass"> |
77 | 77 | <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" /> | |
79 | 79 | </dataarea> |
80 | 80 | </part> |
81 | 81 | </software> |
82 | 82 | |
83 | 83 | <software name="sljive"> |
84 | 84 | <description>Sljive</description> |
85 | <year>1986</year> | |
86 | <publisher>Ei Racunari</publisher> | |
85 | <year>19??</year> | |
86 | <publisher><unknown></publisher> | |
87 | 87 | <part name="cass1" interface="pecom_cass"> |
88 | 88 | <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" /> | |
90 | 90 | </dataarea> |
91 | 91 | </part> |
92 | 92 | </software> |
93 | 93 | |
94 | 94 | <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><unknown></publisher> | |
98 | 98 | <part name="cass1" interface="pecom_cass"> |
99 | 99 | <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" /> | |
101 | 101 | </dataarea> |
102 | 102 | </part> |
103 | 103 | </software> |
104 | 104 | |
105 | 105 | <software name="trkakonj"> |
106 | <description>Trka | |
106 | <description>TrkaKonja</description> | |
107 | 107 | <year>19??</year> |
108 | 108 | <publisher><unknown></publisher> |
109 | 109 | <part name="cass1" interface="pecom_cass"> |
110 | 110 | <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" /> | |
112 | 112 | </dataarea> |
113 | 113 | </part> |
114 | 114 | </software> |
r241749 | r241750 | |
---|---|---|
1 | 1 | <?xml version="1.0"?> |
2 | 2 | <!DOCTYPE softwarelist SYSTEM "softwarelist.dtd"> |
3 | <softwarelist name="pegasus | |
3 | <softwarelist name="pegasus" description="Technosys Aamber Pegasus ROM expansions"> | |
4 | 4 | |
5 | 5 | |
6 | 6 | <software name="basic"> |
r241749 | r241750 | |
---|---|---|
77 | 77 | <publisher>Avalon Hill</publisher> |
78 | 78 | <part name="cass" interface="cbm_cass"> |
79 | 79 | <dataarea name="cass" size="10001002"> |
80 | <rom name=" | |
80 | <rom name="Bomber Attack (1982)(avalon hill).wav" size="10001002" crc="4ff57e9c" sha1="b795a4d8c2f7891088ee6cf7147d785948d7b887" offset="0" /> | |
81 | 81 | </dataarea> |
82 | 82 | </part> |
83 | 83 | </software> |
r241749 | r241750 | |
---|---|---|
101 | 101 | </software> |
102 | 102 | |
103 | 103 | <software name="pokezcrd"> |
104 | <description>Poké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"> | |
115 | 104 | <description>Pokémon Zany Cards (Fra)</description> |
116 | 105 | <year>2001</year> |
117 | 106 | <publisher>Nintendo</publisher> |
r241749 | r241750 | |
144 | 133 | </part> |
145 | 134 | </software> |
146 | 135 | |
147 | <software name="ppartyj" cloneof="pparty" supported="partial"> | |
148 | <description>Poké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 | ||
158 | 136 | <software name="ppartyu" cloneof="pparty" supported="partial"> |
159 | <description>Pokémon Party Mini ( | |
137 | <description>Pokémon Party Mini (USA)</description> | |
160 | 138 | <year>2001</year> |
161 | 139 | <publisher>Nintendo</publisher> |
162 | 140 | <part name="cart" interface="pokemini_cart"> |
r241749 | r241750 | |
167 | 145 | </software> |
168 | 146 | |
169 | 147 | <software name="ppinb"> |
170 | <description>Pokémon Pinball Mini ( | |
148 | <description>Pokémon Pinball Mini (USA)</description> | |
171 | 149 | <year>2001</year> |
172 | 150 | <publisher>Nintendo</publisher> |
173 | 151 | <part name="cart" interface="pokemini_cart"> |
r241749 | r241750 | |
310 | 288 | </software> |
311 | 289 | |
312 | 290 | <software name="ppuzzlc" supported="partial"> |
313 | <description>Pokémon Puzzle Collection ( | |
291 | <description>Pokémon Puzzle Collection (USA)</description> | |
314 | 292 | <year>2001</year> |
315 | 293 | <publisher>Nintendo</publisher> |
316 | 294 | <part name="cart" interface="pokemini_cart"> |
r241749 | r241750 | |
320 | 298 | </part> |
321 | 299 | </software> |
322 | 300 | |
323 | <software name="ppuzzlcp" cloneof="ppuzzlc" supported="partial"> | |
324 | <description>Pokémon Puzzle Collection (USA, GameCube Preview)</description> | |
325 | <year>2001</year> | |
301 | <software name="ppuzzlc2" supported="partial"> | |
302 | <description>Pokémon Puzzle Collection Vol. 2 (Jpn)</description> | |
303 | <year>2002</year> | |
326 | 304 | <publisher>Nintendo</publisher> |
327 | 305 | <part name="cart" interface="pokemini_cart"> |
328 | 306 | <dataarea name="rom" size="524288"> |
329 | <rom name="pokemon puzzle collection | |
307 | <rom name="pokemon puzzle collection vol. 2 (japan).bin" size="524288" crc="76a1bbf8" sha1="11775bbac2e985ef90d4192ed6322dd3b8352ac9" offset="000000" /> | |
330 | 308 | </dataarea> |
331 | 309 | </part> |
332 | 310 | </software> |
333 | 311 | |
334 | <software name="ppuzzlcf" cloneof="ppuzzlc" supported="partial"> | |
335 | <description>Poké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 | ||
345 | 312 | <software name="ppuzzlcfp" cloneof="ppuzzlc" supported="partial"> |
346 | 313 | <description>Pokémon Puzzle Collection (Fra, GameCube Preview)</description> |
347 | 314 | <year>2001</year> |
r241749 | r241750 | |
397 | 364 | </part> |
398 | 365 | </software> |
399 | 366 | |
400 | <software name="ppuzzlc2" supported="partial"> | |
401 | <description>Pokémon Puzzle Collection Vol. 2 (Jpn)</description> | |
402 | <year>2002</year> | |
367 | <software name="ppuzzlcp" cloneof="ppuzzlc" supported="partial"> | |
368 | <description>Pokémon Puzzle Collection (USA, GameCube Preview)</description> | |
369 | <year>2001</year> | |
403 | 370 | <publisher>Nintendo</publisher> |
404 | 371 | <part name="cart" interface="pokemini_cart"> |
405 | 372 | <dataarea name="rom" size="524288"> |
406 | <rom name="pokemon puzzle collection | |
373 | <rom name="pokemon puzzle collection (usa) (gamecube preview).bin" size="524288" crc="6f8ae656" sha1="048bb1d30d6ff21be14dd123c52a375e12611238" offset="000000" /> | |
407 | 374 | </dataarea> |
408 | 375 | </part> |
409 | 376 | </software> |
r0 | r241750 | |
---|---|---|
1 | <?xml version="1.0"?> | |
2 | <!DOCTYPE softwarelist SYSTEM "softwarelist.dtd"> | |
3 | ||
4 | <!-- | |
5 | Info taken from: http://www.retroisle.com/others/psion/organiser2/software.php | |
6 | ||
7 | Undumped 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><unknown></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><unknown></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><unknown></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><unknown></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> |
r241749 | r241750 | |
---|---|---|
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> |
r241749 | r241750 | |
---|---|---|
1 | <?xml version="1.0"?> | |
2 | <!DOCTYPE softwarelist SYSTEM "softwarelist.dtd"> | |
3 | ||
4 | <!-- | |
5 | Info taken from: http://www.retroisle.com/others/psion/organiser2/software.php | |
6 | ||
7 | Undumped 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><unknown></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><unknown></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> |
r241749 | r241750 | |
---|---|---|
1 | 1 | <?xml version="1.0"?> |
2 | 2 | <!DOCTYPE softwarelist SYSTEM "softwarelist.dtd"> |
3 | <softwarelist name="radio86 | |
3 | <softwarelist name="radio86" description="Radio-86RK cassettes"> | |
4 | 4 | |
5 | 5 | <!-- GAMES --> |
6 | 6 |
r241749 | r241750 | |
---|---|---|
428 | 428 | </part> |
429 | 429 | </software> |
430 | 430 | |
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 | ||
431 | 458 | <software name="shinkoukra" cloneof="shinkouk"> |
432 | 459 | <description>Shinchou Kouki (Jpn, Rev. A)</description> |
433 | 460 | <year>1993</year> |
r241749 | r241750 | |
15222 | 15249 | </part> |
15223 | 15250 | </software> |
15224 | 15251 | |
15225 | <software name="powyak2 | |
15252 | <software name="powyak2a" cloneof="powyak2"> | |
15226 | 15253 | <description>Jikkyou Powerful Pro Yakyuu 2 (Jpn)</description> |
15227 | 15254 | <year>1995</year> |
15228 | 15255 | <publisher>Konami</publisher> |
r241749 | r241750 | |
17321 | 17348 | </part> |
17322 | 17349 | </software> |
17323 | 17350 | |
17324 | <software name="mjtaika2 | |
17351 | <software name="mjtaika2"> | |
17325 | 17352 | <description>Mahjong Taikai II (Jpn)</description> |
17326 | 17353 | <year>1994</year> |
17327 | 17354 | <publisher>Koei</publisher> |
r241749 | r241750 | |
26384 | 26411 | </part> |
26385 | 26412 | </software> |
26386 | 26413 | |
26387 | <software name="supermjt | |
26414 | <software name="supermjtc" cloneof="supermjt"> | |
26388 | 26415 | <description>Super Mahjong Taikai (Jpn)</description> |
26389 | 26416 | <year>1992</year> |
26390 | 26417 | <publisher>Koei</publisher> |
r241749 | r241750 | |
26410 | 26437 | </part> |
26411 | 26438 | </software> |
26412 | 26439 | |
26413 | <software name="supermjt | |
26440 | <software name="supermjtb" cloneof="supermjt"> | |
26414 | 26441 | <description>Super Mahjong Taikai (Jpn, Rev. A)</description> |
26415 | 26442 | <year>1992</year> |
26416 | 26443 | <publisher>Koei</publisher> |
r241749 | r241750 | |
32465 | 32492 | </part> |
32466 | 32493 | </software> |
32467 | 32494 | |
32468 | <software name="powyak2 | |
32495 | <software name="powyak2"> | |
32469 | 32496 | <!-- single cartridge source: Yakushi~Kabuto --> |
32470 | 32497 | <description>Jikkyou Powerful Pro Yakyuu 2 (Jpn, Rev. A)</description> |
32471 | 32498 | <year>1995</year> |
r241749 | r241750 | |
33131 | 33158 | </part> |
33132 | 33159 | </software> |
33133 | 33160 | |
33134 | <software name="supermjt | |
33161 | <software name="supermjt"> | |
33135 | 33162 | <!-- single cartridge source: Yakushi~Kabuto --> |
33136 | 33163 | <description>Super Mahjong Taikai (Jpn, Rev. D)</description> |
33137 | 33164 | <year>1992</year> |
r241749 | r241750 | |
35670 | 35697 | </part> |
35671 | 35698 | </software> |
35672 | 35699 | |
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 | ||
35687 | 35700 | <software name="bullvsbl"> |
35688 | 35701 | <description>Bulls vs Blazers and the NBA Playoffs (Euro, Rev. A)</description> |
35689 | 35702 | <year>1992</year> |
r241749 | r241750 | |
40032 | 40045 | </part> |
40033 | 40046 | </software> |
40034 | 40047 | |
40035 | <software name="ggoemon3 | |
40048 | <software name="ggoemon3"> | |
40036 | 40049 | <description>Ganbare Goemon 3 - Shishi Juurokubee no Karakuri Manjigatame (Jpn)</description> |
40037 | 40050 | <year>1994</year> |
40038 | 40051 | <publisher>Konami</publisher> |
r241749 | r241750 | |
40050 | 40063 | </part> |
40051 | 40064 | </software> |
40052 | 40065 | |
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 | ||
40080 | 40066 | <software name="ggoemkir"> |
40081 | 40067 | <description>Ganbare Goemon Kirakira Douchuu - Boku ga Dancer ni Natta Wake (Jpn, Rev. B, NP)</description> |
40082 | 40068 | <year>1995</year> |
r241749 | r241750 | |
43071 | 43057 | </part> |
43072 | 43058 | </software> |
43073 | 43059 | |
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 | ||
43092 | 43060 | <software name="powyk397"> |
43093 | 43061 | <description>Jikkyou Powerful Pro Yakyuu 3 - '97 Haru (Jpn, Rev. A)</description> |
43094 | 43062 | <year>1997</year> |
r241749 | r241750 | |
46138 | 46106 | </part> |
46139 | 46107 | </software> |
46140 | 46108 | |
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 | ||
46156 | 46109 | <software name="magpopn"> |
46157 | 46110 | <description>Magical Pop'n (Jpn)</description> |
46158 | 46111 | <year>1995</year> |
r241749 | r241750 | |
46314 | 46267 | </part> |
46315 | 46268 | </software> |
46316 | 46269 | |
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 | ||
46334 | 46270 | <software name="mjtouhai"> |
46335 | 46271 | <description>The Mahjong Touhaiden (Jpn)</description> |
46336 | 46272 | <year>1993</year> |
r241749 | r241750 | |
50693 | 50629 | </part> |
50694 | 50630 | </software> |
50695 | 50631 | |
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 | ||
50708 | 50632 | <software name="pinocj" cloneof="pinoc"> |
50709 | 50633 | <description>Pinocchio (Jpn)</description> |
50710 | 50634 | <year>1996</year> |
r241749 | r241750 | |
57332 | 57256 | </part> |
57333 | 57257 | </software> |
57334 | 57258 | |
57335 | <software name="supermjt | |
57259 | <software name="supermjta" cloneof="supermjt"> | |
57336 | 57260 | <description>Super Mahjong Taikai (Jpn, Rev. C)</description> |
57337 | 57261 | <year>1992</year> |
57338 | 57262 | <publisher>Koei</publisher> |
r241749 | r241750 | |
57349 | 57273 | </part> |
57350 | 57274 | </software> |
57351 | 57275 | |
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 | ||
57369 | 57276 | <software name="smw2ja" cloneof="smw2"> |
57370 | 57277 | <description>Super Mario - Yossy Island (Jpn, Rev. A)</description> |
57371 | 57278 | <year>1995</year> |
r241749 | r241750 | |
---|---|---|
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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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><unknown></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> |
r241749 | r241750 | |
---|---|---|
17 | 17 | <software name="basicpac"> |
18 | 18 | <description>Exidy Standard Basic v1.0</description> |
19 | 19 | <year>1978</year> |
20 | <publisher>Exidy</publisher> | |
20 | <publisher>Exidy Inc.</publisher> | |
21 | 21 | <info name="serial" value="DP 2002" /> |
22 | 22 | <part name="cart" interface="sorcerer_cart"> |
23 | 23 | <dataarea name="rom" size="8192"> |
r241749 | r241750 | |
29 | 29 | <software name="devpac"> |
30 | 30 | <description>Exidy Z80 Development Pac</description> |
31 | 31 | <year>1979</year> |
32 | <publisher>Exidy</publisher> | |
32 | <publisher>Exidy Inc.</publisher> | |
33 | 33 | <info name="serial" value="DP 2003" /> |
34 | 34 | <part name="cart" interface="sorcerer_cart"> |
35 | 35 | <dataarea name="rom" size="8192"> |
r241749 | r241750 | |
41 | 41 | <software name="wordpac"> |
42 | 42 | <description>Exidy Word Processor Pac</description> |
43 | 43 | <year>1978</year> |
44 | <publisher>Exidy</publisher> | |
44 | <publisher>Exidy Inc.</publisher> | |
45 | 45 | <info name="serial" value="DP 2004" /> |
46 | 46 | <part name="cart" interface="sorcerer_cart"> |
47 | 47 | <dataarea name="rom" size="8192"> |
r241749 | r241750 | |
50 | 50 | </part> |
51 | 51 | </software> |
52 | 52 | |
53 | <software name="basicm | |
53 | <software name="basicm"> | |
54 | 54 | <description>Exidy Standard Modified Basic v1.01</description> |
55 | 55 | <!-- Unofficial Hack Release --> |
56 | 56 | <year>1980</year> |
r241749 | r241750 | |
---|---|---|
5 | 5 | |
6 | 6 | <!-- These came from mp3s, so they're marked as bad dumps until they're redumped properly --> |
7 | 7 | |
8 | <software name="chomp"> | |
8 | <software name="chomp" supported="no"> | |
9 | 9 | <description>Chomp</description> |
10 | 10 | <year>1981</year> |
11 | 11 | <publisher>W. S. King</publisher> |
12 | <info name="usage" value="Load in Monitor with "LO" command, then type "GO 0100"" /> | |
13 | 12 | <part name="cass" interface="sorcerer_cass"> |
14 | 13 | <dataarea name="cass" size="23392316"> |
15 | 14 | <rom name="chomp (1981)(w.s.king).wav" size="23392316" crc="95971024" sha1="62672de80e5139af35424184c76f1c9c18493c3a" offset="0" status="baddump" /> |
r241749 | r241750 | |
17 | 16 | </part> |
18 | 17 | </software> |
19 | 18 | |
20 | <software name="eliza"> | |
19 | <software name="eliza" supported="no"> | |
21 | 20 | <description>Eliza</description> |
22 | 21 | <year>19??</year> |
23 | 22 | <publisher><unknown></publisher> |
24 | <info name="usage" value="Load in BASIC with "CLOAD" command, then type "RUN"" /> | |
25 | 23 | <part name="cass" interface="sorcerer_cass"> |
26 | 24 | <dataarea name="cass" size="12578876"> |
27 | 25 | <rom name="eliza (19xx)(-).wav" size="12578876" crc="9173759e" sha1="23d35784fd1ab492cb0371552bd1a981214c0192" offset="0" status="baddump" /> |
r241749 | r241750 | |
29 | 27 | </part> |
30 | 28 | </software> |
31 | 29 | |
32 | <software name="galaxian"> | |
30 | <software name="galaxian" supported="no"> | |
33 | 31 | <description>Galaxians</description> |
34 | 32 | <year>19??</year> |
35 | 33 | <publisher><unknown></publisher> |
36 | <info name="usage" value="Load in Monitor with "LO" command, then type "GO 0100"" /> | |
37 | 34 | <part name="cass" interface="sorcerer_cass"> |
38 | 35 | <dataarea name="cass" size="16506020"> |
39 | 36 | <rom name="galaxians (19xx)(-).wav" size="16506020" crc="c6f686b2" sha1="41928aa796e6609de37301b3594d3a9a9eb975ac" offset="0" status="baddump" /> |
r241749 | r241750 | |
41 | 38 | </part> |
42 | 39 | </software> |
43 | 40 | |
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><unknown></publisher> | |
52 | <info name="usage" value="Load in BASIC with "CLOAD" command, then type "RUN"" /> | |
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><unknown></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><unknown></publisher> | |
76 | <info name="usage" value="Load in BASIC with "CLOAD" command, then type "RUN"" /> | |
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><unknown></publisher> | |
88 | <info name="usage" value="Load in BASIC with "CLOAD" command, then type "RUN"" /> | |
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><unknown></publisher> | |
100 | <info name="usage" value="Load in BASIC with "CLOAD" command, then type "RUN"" /> | |
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><unknown></publisher> | |
112 | <info name="usage" value="Load in BASIC with "CLOAD" command, then type "RUN"" /> | |
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><unknown></publisher> | |
124 | <info name="usage" value="Load in BASIC with "CLOAD" command, then type "RUN"" /> | |
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><unknown></publisher> | |
136 | <info name="usage" value="Load in BASIC with "CLOAD" command, then type "RUN"" /> | |
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><unknown></publisher> | |
148 | <info name="usage" value="Load in BASIC with "CLOAD" command, then type "RUN"" /> | |
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><unknown></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 |
r241749 | r241750 | |
---|---|---|
1005 | 1005 | <description>Toiyar</description> |
1006 | 1006 | <year>198?</year> |
1007 | 1007 | <publisher>Sammi Computer</publisher> |
1008 | <info name="alt_title" value="토이야" /> | |
1009 | 1008 | <part name="cass" interface="spc1000_cass"> |
1010 | 1009 | <dataarea name="cass" size="68050"> |
1011 | 1010 | <rom name="toyar-4852-mayhouse.cas" size="68050" crc="ed454d5c" sha1="18b1ac12709136e4e03d3a7d4ead4a1d00c232ca" offset="0" /> |
r241749 | r241750 | |
---|---|---|
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&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 & 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 & 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 & 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")</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> |
r0 | r241750 | |
---|---|---|
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 & 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> |
r241749 | r241750 | |
---|---|---|
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 & 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> |
r0 | r241750 | |
---|---|---|
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&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 & 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 & 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 & 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")</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> |
r241749 | r241750 | |
---|---|---|
4 | 4 | |
5 | 5 | |
6 | 6 | <software name="basic80"> |
7 | <description> | |
7 | <description>BASIC80</description> | |
8 | 8 | <year>19??</year> |
9 | 9 | <publisher><unknown></publisher> |
10 | 10 | <part name="cass" interface="ut88_cass"> |
r241749 | r241750 | |
15 | 15 | </software> |
16 | 16 | |
17 | 17 | <software name="chscom"> |
18 | <description>C | |
18 | <description>CH$COM</description> | |
19 | 19 | <year>19??</year> |
20 | 20 | <publisher><unknown></publisher> |
21 | 21 | <part name="cass" interface="ut88_cass"> |
r241749 | r241750 | |
26 | 26 | </software> |
27 | 27 | |
28 | 28 | <software name="cpm35"> |
29 | <description>CP | |
29 | <description>CPM35</description> | |
30 | 30 | <year>19??</year> |
31 | 31 | <publisher><unknown></publisher> |
32 | 32 | <part name="cass" interface="ut88_cass"> |
r241749 | r241750 | |
36 | 36 | </part> |
37 | 37 | </software> |
38 | 38 | |
39 | <software name="cpm256"> | |
40 | <description>CP/M (v2.2, 256K)</description> | |
39 | <software name="cpm64"> | |
40 | <description>CPM64</description> | |
41 | 41 | <year>19??</year> |
42 | 42 | <publisher><unknown></publisher> |
43 | 43 | <part name="cass" interface="ut88_cass"> |
r241749 | r241750 | |
48 | 48 | </software> |
49 | 49 | |
50 | 50 | <software name="tetris"> |
51 | <description>T | |
51 | <description>TETRIS</description> | |
52 | 52 | <year>19??</year> |
53 | 53 | <publisher><unknown></publisher> |
54 | 54 | <part name="cass" interface="ut88_cass"> |
r241749 | r241750 | |
---|---|---|
47 | 47 | |
48 | 48 | |
49 | 49 | --> |
50 | </softwarelist> | |
No newline at end of file |
r241749 | r241750 | |
---|---|---|
17 | 17 | ********7 = Spain |
18 | 18 | |
19 | 19 | 80-093000(US) | The Crystal Ball Adventures |
20 | 80-093004(GE) | Das zauberhafte Märchenabenteuer | |
21 | 80-093005(FR) | L'aventure enchantée | |
20 | 80-093004(GE) | Das zauberhafte M\xE4rchenabenteuer | |
21 | 80-093005(FR) | L'aventure enchant\xE9e | |
22 | 22 | 80-093007(SP) | El Castillo de las Princesas |
23 | 23 | - |
24 | 24 | 80-093020(US) | The Incredibles - Mission Incredible |
r241749 | r241750 | |
31 | 31 | - |
32 | 32 | 80-093060(US) | The Amazing Spider-Man - Countdown to Doom |
33 | 33 | 80-093064(GE) | Spiderman - Angriff der Superschurken |
34 | 80-093065(FR) | Spider-Man - Course-poursuite | |
34 | 80-093065(FR) | Spider-Man - Course-poursuite \xE0 Manhattan | |
35 | 35 | 80-093067(SP) | El Asombroso Spider-Man - Persecucion en la Cuidad |
36 | 36 | - |
37 | 37 | 80-093080(US) | Scooby-Doo! - Ancient Adventure |
r241749 | r241750 | |
41 | 41 | 80-093087(SP) | Scooby-Doo - Viaje al Pasdao |
42 | 42 | - |
43 | 43 | 80-093100(US) | Cars - In The Fast Lane |
44 | 80-093104(GE) | Cars - Auf der | |
44 | 80-093104(GE) | Cars - Auf der \xDCberholspur | |
45 | 45 | 80-093105(FR) | Cars - A Fond la Caisse! |
46 | 46 | 80-093107(SP) | Cars - El Carril Rapido |
47 | 47 | - |
48 | 48 | 80-093120(US) | Wacky Race on Jumpin' Bean Island |
49 | 80-093124(GE) | Das verr | |
49 | 80-093124(GE) | Das verr\xFCckte Rennen auf der H\xFCpf-Bohnen-Insel | |
50 | 50 | 80-093127(SP) | Carrera Loca - En La Isla de las Vainas Fritas (real# unknown) |
51 | 51 | - |
52 | 52 | 80-093140(US) | Shrek The Third - The Search for Arthur |
r241749 | r241750 | |
---|---|---|
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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></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><type-in></publisher> | |
1328 | <info name="magazine" value="Hebdogiciel 66" /> | |
1329 | <info name="release" value="19850118" /> | |
1330 | <info name="author" value="Cyril Giroux & 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><type-in></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><type-in></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> |
r241749 | r241750 | |
---|---|---|
910 | 910 | $(CC) $(CDEFS) $(CFLAGS) -c $(SRC)/version.c -o $(VERSIONOBJ) |
911 | 911 | @echo Linking $@... |
912 | 912 | ifeq ($(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 | |
914 | 914 | $(LD) $(LDFLAGS) $(LDFLAGSEMULATOR) $(VERSIONOBJ) -Wl,--start-group $^ -Wl,--end-group $(LIBS) -o $@ |
915 | 915 | else |
916 | 916 | $(LD) $(LDFLAGS) $(LDFLAGSEMULATOR) $(VERSIONOBJ) $^ $(LIBS) -o $@ |
r241749 | r241750 | |
---|---|---|
20 | 20 | CCOMFLAGS += -Wno-inline-new-delete |
21 | 21 | # caused by src/mess/drivers/x07.c, src/osd/sdl/window.c, src/emu/sound/disc_mth.inc |
22 | 22 | CCOMFLAGS += -Wno-absolute-value |
23 | # caused by src/emu/bus/isa/s3virge.c, src/emu/cpu/drcfe.c, src/emu/video/pc_vga.c | |
24 | CCOMFLAGS +=-Wno-dynamic-class-memaccess | |
23 | 25 | # these were disabled because of bugs in older clang versions |
24 | CCOMFLAGS += -Wformat-security | |
26 | CCOMFLAGS += -Wformat-security | |
25 | 27 | # these show up when compiling as c++11 |
26 | 28 | CCOMFLAGS += -Wno-deprecated-register -Wno-reserved-user-defined-literal -Wno-c++11-narrowing |
27 | 29 | # TODO: add proper detection of XCode 6.0.1 |
r241749 | r241750 | |
---|---|---|
22 | 22 | #define PIC_CENTRONICS_TAG "pic_ctx" |
23 | 23 | |
24 | 24 | MACHINE_CONFIG_FRAGMENT( pic ) |
25 | MCFG_CENTRONICS_ADD(PIC_CENTRONICS_TAG, centronics_ | |
25 | MCFG_CENTRONICS_ADD(PIC_CENTRONICS_TAG, centronics_printers, "printer") | |
26 | 26 | MCFG_CENTRONICS_DATA_INPUT_BUFFER("ctx_data_in") |
27 | 27 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(a2bus_pic_device, ack_w)) |
28 | 28 |
r241749 | r241750 | |
---|---|---|
49 | 49 | - verify cursor keys |
50 | 50 | - language DIP |
51 | 51 | - mouse |
52 | - investigate unknown ROMs | |
52 | 53 | - MCS-48 PC:01DC - Unimplemented opcode = 75 |
53 | 54 | - 75 = ENT0 CLK : enable CLK (unscaled_clock/3) output on T0 |
54 | 55 | - halt Z2 when Z5 is reset, resume Z2 when Z5 executes ENT0 CLK instruction |
r241749 | r241750 | |
80 | 81 | //------------------------------------------------- |
81 | 82 | |
82 | 83 | ROM_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) ) | |
86 | 86 | |
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 | ||
91 | 87 | 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) ) | |
94 | 93 | ROM_END |
95 | 94 | |
96 | 95 | |
r241749 | r241750 | |
109 | 108 | //------------------------------------------------- |
110 | 109 | |
111 | 110 | static ADDRESS_MAP_START( abc99_z2_mem, AS_PROGRAM, 8, abc99_device ) |
112 | AM_RANGE(0x0000, 0x0 | |
111 | AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION(I8035_Z2_TAG, 0) | |
113 | 112 | ADDRESS_MAP_END |
114 | 113 | |
115 | 114 | |
r241749 | r241750 | |
489 | 488 | // abc99_device - constructor |
490 | 489 | //------------------------------------------------- |
491 | 490 | |
492 | abc99_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) | |
491 | abc99_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) | |
510 | 509 | { |
511 | 510 | } |
512 | 511 |
r241749 | r241750 | |
---|---|---|
65 | 65 | //------------------------------------------------- |
66 | 66 | static MACHINE_CONFIG_FRAGMENT( adam_ata ) |
67 | 67 | MCFG_ATA_INTERFACE_ADD(ATA_TAG, ata_devices, "hdd", NULL, false) |
68 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
68 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
69 | 69 | |
70 | 70 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) |
71 | 71 | MACHINE_CONFIG_END |
r241749 | r241750 | |
---|---|---|
85 | 85 | |
86 | 86 | MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) |
87 | 87 | |
88 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
88 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
89 | 89 | MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in") |
90 | 90 | MCFG_DEVICE_ADD("cent_data_in", INPUT_BUFFER, 0) |
91 | 91 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) |
r241749 | r241750 | |
---|---|---|
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 | ||
17 | const device_type ASTROCADE_EXP_SLOT = &device_creator<astrocade_exp_device>; | |
18 | ||
19 | ||
20 | device_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 | ||
26 | device_astrocade_card_interface::~device_astrocade_card_interface() | |
27 | { | |
28 | } | |
29 | ||
30 | ||
31 | //************************************************************************** | |
32 | // LIVE DEVICE | |
33 | //************************************************************************** | |
34 | ||
35 | //------------------------------------------------- | |
36 | // astrocade_exp_device - constructor | |
37 | //------------------------------------------------- | |
38 | astrocade_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 | ||
50 | astrocade_exp_device::~astrocade_exp_device() | |
51 | { | |
52 | } | |
53 | ||
54 | //------------------------------------------------- | |
55 | // device_start - device-specific startup | |
56 | //------------------------------------------------- | |
57 | ||
58 | void 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 | ||
69 | READ8_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 | ||
81 | WRITE8_MEMBER(astrocade_exp_device::write) | |
82 | { | |
83 | if (m_card) | |
84 | m_card->write(space, offset, data); | |
85 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
8 | class device_astrocade_card_interface : public device_slot_card_interface | |
9 | { | |
10 | public: | |
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 | ||
19 | protected: | |
20 | }; | |
21 | ||
22 | ||
23 | // ======================> astrocade_exp_device | |
24 | ||
25 | class astrocade_exp_device : public device_t, | |
26 | public device_slot_interface | |
27 | { | |
28 | public: | |
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 | ||
42 | protected: | |
43 | bool m_card_mounted; | |
44 | device_astrocade_card_interface* m_card; | |
45 | }; | |
46 | ||
47 | ||
48 | ||
49 | // device type definition | |
50 | extern 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 |
r241749 | r241750 | |
---|---|---|
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 | ||
63 | const device_type ASTROCADE_BLUERAM_4K = &device_creator<astrocade_blueram_4k_device>; | |
64 | const device_type ASTROCADE_BLUERAM_16K = &device_creator<astrocade_blueram_16k_device>; | |
65 | const device_type ASTROCADE_BLUERAM_32K = &device_creator<astrocade_blueram_32k_device>; | |
66 | const device_type ASTROCADE_VIPER_SYS1 = &device_creator<astrocade_viper_sys1_device>; | |
67 | const device_type ASTROCADE_WHITERAM = &device_creator<astrocade_whiteram_device>; | |
68 | const device_type ASTROCADE_RL64RAM = &device_creator<astrocade_rl64ram_device>; | |
69 | ||
70 | ||
71 | astrocade_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 | ||
78 | astrocade_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 | ||
85 | astrocade_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 | ||
90 | astrocade_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 | ||
95 | astrocade_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 | ||
102 | astrocade_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 | ||
109 | astrocade_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 | ||
121 | static 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)) | |
126 | INPUT_PORTS_END | |
127 | ||
128 | ||
129 | ioport_constructor astrocade_blueram_4k_device::device_input_ports() const | |
130 | { | |
131 | return INPUT_PORTS_NAME( exp_switches ); | |
132 | } | |
133 | ||
134 | ioport_constructor astrocade_viper_sys1_device::device_input_ports() const | |
135 | { | |
136 | return INPUT_PORTS_NAME( exp_switches ); | |
137 | } | |
138 | ||
139 | ioport_constructor astrocade_whiteram_device::device_input_ports() const | |
140 | { | |
141 | return INPUT_PORTS_NAME( exp_switches ); | |
142 | } | |
143 | ||
144 | ioport_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 | |
154 | READ8_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 | ||
162 | WRITE8_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 | |
171 | READ8_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 | ||
179 | WRITE8_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 | |
188 | READ8_MEMBER(astrocade_whiteram_device::read) | |
189 | { | |
190 | return m_ram[offset % 0x8000]; | |
191 | } | |
192 | ||
193 | WRITE8_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 | |
202 | READ8_MEMBER(astrocade_rl64ram_device::read) | |
203 | { | |
204 | return m_ram[offset]; | |
205 | } | |
206 | ||
207 | WRITE8_MEMBER(astrocade_rl64ram_device::write) | |
208 | { | |
209 | if (!m_write_prot->read()) | |
210 | m_ram[offset] = data; | |
211 | } | |
212 | ||
213 |
r241749 | r241750 | |
---|---|---|
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 | ||
11 | class astrocade_blueram_4k_device : public device_t, | |
12 | public device_astrocade_card_interface | |
13 | { | |
14 | public: | |
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 | ||
28 | protected: | |
29 | dynamic_buffer m_ram; | |
30 | required_ioport m_write_prot; | |
31 | }; | |
32 | ||
33 | // ======================> astrocade_blueram_16k_device | |
34 | ||
35 | class astrocade_blueram_16k_device : public astrocade_blueram_4k_device | |
36 | { | |
37 | public: | |
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 | ||
46 | class astrocade_blueram_32k_device : public astrocade_blueram_4k_device | |
47 | { | |
48 | public: | |
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 | ||
57 | class astrocade_viper_sys1_device : public device_t, | |
58 | public device_astrocade_card_interface | |
59 | { | |
60 | public: | |
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 | ||
73 | private: | |
74 | dynamic_buffer m_ram; | |
75 | required_ioport m_write_prot; | |
76 | }; | |
77 | ||
78 | // ======================> astrocade_whiteram_device | |
79 | ||
80 | class astrocade_whiteram_device : public device_t, | |
81 | public device_astrocade_card_interface | |
82 | { | |
83 | public: | |
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 | ||
96 | private: | |
97 | dynamic_buffer m_ram; | |
98 | required_ioport m_write_prot; | |
99 | }; | |
100 | ||
101 | // ======================> astrocade_rl64ram_device | |
102 | ||
103 | class astrocade_rl64ram_device : public device_t, | |
104 | public device_astrocade_card_interface | |
105 | { | |
106 | public: | |
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 | ||
119 | private: | |
120 | dynamic_buffer m_ram; | |
121 | required_ioport m_write_prot; | |
122 | }; | |
123 | ||
124 | ||
125 | ||
126 | // device type definition | |
127 | extern const device_type ASTROCADE_BLUERAM_4K; | |
128 | extern const device_type ASTROCADE_BLUERAM_16K; | |
129 | extern const device_type ASTROCADE_BLUERAM_32K; | |
130 | extern const device_type ASTROCADE_VIPER_SYS1; | |
131 | extern const device_type ASTROCADE_WHITERAM; | |
132 | extern const device_type ASTROCADE_RL64RAM; | |
133 | ||
134 | ||
135 | #endif |
r241749 | r241750 | |
---|---|---|
129 | 129 | OBJDIRS += $(BUSOBJ)/astrocde |
130 | 130 | BUSOBJS += $(BUSOBJ)/astrocde/slot.o |
131 | 131 | BUSOBJS += $(BUSOBJ)/astrocde/rom.o |
132 | BUSOBJS += $(BUSOBJ)/astrocde/exp.o | |
133 | BUSOBJS += $(BUSOBJ)/astrocde/ram.o | |
134 | 132 | endif |
135 | 133 | |
136 | 134 | |
r241749 | r241750 | |
333 | 331 | BUSOBJS += $(BUSOBJ)/dmv/k220.o |
334 | 332 | BUSOBJS += $(BUSOBJ)/dmv/k230.o |
335 | 333 | BUSOBJS += $(BUSOBJ)/dmv/k233.o |
336 | BUSOBJS += $(BUSOBJ)/dmv/k803.o | |
337 | 334 | BUSOBJS += $(BUSOBJ)/dmv/k806.o |
338 | 335 | BUSOBJS += $(BUSOBJ)/dmv/ram.o |
339 | 336 | endif |
r241749 | r241750 | |
511 | 508 | BUSOBJS += $(BUSOBJ)/isa/sc499.o |
512 | 509 | BUSOBJS += $(BUSOBJ)/isa/aga.o |
513 | 510 | BUSOBJS += $(BUSOBJ)/isa/svga_trident.o |
514 | BUSOBJS += $(BUSOBJ)/isa/num9rev.o | |
515 | 511 | endif |
516 | 512 | |
517 | 513 | #------------------------------------------------- |
r241749 | r241750 | |
991 | 987 | |
992 | 988 | #------------------------------------------------- |
993 | 989 | # |
994 | #@src/emu/bus/ | |
990 | #@src/emu/bus/pci/pci.h,BUSES += PCI | |
995 | 991 | #------------------------------------------------- |
996 | 992 | |
997 | ifneq ($(filter LPCI,$(BUSES)),) | |
998 | OBJDIRS += $(BUSOBJ)/lpci | |
999 | BUSOBJS += $(BUSOBJ)/lpci/pci.o | |
1000 | BUSOBJS += $(BUSOBJ)/lpci/cirrus.o | |
1001 | BUSOBJS += $(BUSOBJ)/lpci/i82371ab.o | |
1002 | BUSOBJS += $(BUSOBJ)/lpci/i82371sb.o | |
1003 | BUSOBJS += $(BUSOBJ)/lpci/i82439tx.o | |
1004 | BUSOBJS += $(BUSOBJ)/lpci/northbridge.o | |
1005 | BUSOBJS += $(BUSOBJ)/lpci/southbridge.o | |
1006 | BUSOBJS += $(BUSOBJ)/lpci/mpc105.o | |
993 | ifneq ($(filter PCI,$(BUSES)),) | |
994 | OBJDIRS += $(BUSOBJ)/pci | |
995 | BUSOBJS += $(BUSOBJ)/pci/pci.o | |
996 | BUSOBJS += $(BUSOBJ)/pci/cirrus.o | |
997 | BUSOBJS += $(BUSOBJ)/pci/i82371ab.o | |
998 | BUSOBJS += $(BUSOBJ)/pci/i82371sb.o | |
999 | BUSOBJS += $(BUSOBJ)/pci/i82439tx.o | |
1000 | BUSOBJS += $(BUSOBJ)/pci/northbridge.o | |
1001 | BUSOBJS += $(BUSOBJ)/pci/southbridge.o | |
1002 | BUSOBJS += $(BUSOBJ)/pci/mpc105.o | |
1007 | 1003 | endif |
1008 | 1004 | |
1009 | 1005 | #------------------------------------------------- |
r241749 | r241750 | |
1296 | 1292 | BUSOBJS += $(BUSOBJ)/cpc/mface2.o |
1297 | 1293 | BUSOBJS += $(BUSOBJ)/cpc/symbfac2.o |
1298 | 1294 | BUSOBJS += $(BUSOBJ)/cpc/amdrum.o |
1299 | BUSOBJS += $(BUSOBJ)/cpc/playcity.o | |
1300 | 1295 | endif |
1301 | 1296 | |
1302 | 1297 | #------------------------------------------------- |
r241749 | r241750 | |
---|---|---|
33 | 33 | //------------------------------------------------- |
34 | 34 | |
35 | 35 | static MACHINE_CONFIG_FRAGMENT( c64_geocable ) |
36 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
36 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
37 | 37 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(c64_geocable_device, output_b)) |
38 | 38 | MACHINE_CONFIG_END |
39 | 39 |
r241749 | r241750 | |
---|---|---|
887 | 887 | MCFG_PIA_WRITEPB_HANDLER(WRITE8(c1541_prologic_dos_classic_device, pia_pb_w)) |
888 | 888 | MCFG_PIA_CA2_HANDLER(DEVWRITELINE(CENTRONICS_TAG, centronics_device, write_strobe)) |
889 | 889 | |
890 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
890 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
891 | 891 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(MC6821_TAG, pia6821_device, ca1_w)) |
892 | 892 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
893 | 893 | MACHINE_CONFIG_END |
r241749 | r241750 | |
---|---|---|
120 | 120 | #include "epson_ex800.h" |
121 | 121 | #include "epson_lx800.h" |
122 | 122 | #include "printer.h" |
123 | #include "covox.h" | |
124 | 123 | |
125 | SLOT_INTERFACE_START(centronics_ | |
124 | SLOT_INTERFACE_START(centronics_printers) | |
126 | 125 | SLOT_INTERFACE("pl80", COMX_PL80) |
127 | 126 | SLOT_INTERFACE("ex800", EPSON_EX800) |
128 | 127 | SLOT_INTERFACE("lx800", EPSON_LX800) |
129 | 128 | SLOT_INTERFACE("lx810l", EPSON_LX810L) |
130 | 129 | SLOT_INTERFACE("ap2000", EPSON_AP2000) |
131 | 130 | SLOT_INTERFACE("printer", CENTRONICS_PRINTER) |
132 | SLOT_INTERFACE("covox", CENTRONICS_COVOX) | |
133 | SLOT_INTERFACE("covox_stereo", CENTRONICS_COVOX_STEREO) | |
134 | 131 | SLOT_INTERFACE_END |
r241749 | r241750 | |
---|---|---|
218 | 218 | }; |
219 | 219 | |
220 | 220 | |
221 | SLOT_INTERFACE_EXTERN( centronics_ | |
221 | SLOT_INTERFACE_EXTERN( centronics_printers ); | |
222 | 222 | |
223 | 223 | #endif |
r241749 | r241750 | |
---|---|---|
54 | 54 | |
55 | 55 | |
56 | 56 | //------------------------------------------------- |
57 | // SLOT_INTERFACE( comx_centronics_printer ) | |
58 | //------------------------------------------------- | |
59 | ||
60 | SLOT_INTERFACE_START(comx_centronics_printer) | |
61 | SLOT_INTERFACE("printer", CENTRONICS_PRINTER) | |
62 | //SLOT_INTERFACE("pl80", COMX_PL80) | |
63 | SLOT_INTERFACE_END | |
64 | ||
65 | ||
66 | //------------------------------------------------- | |
57 | 67 | // MACHINE_CONFIG_FRAGMENT( comx_prn ) |
58 | 68 | //------------------------------------------------- |
59 | 69 | |
60 | 70 | static MACHINE_CONFIG_FRAGMENT( comx_prn ) |
61 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
71 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, comx_centronics_printer, "printer") | |
62 | 72 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit0)) |
63 | 73 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit1)) |
64 | 74 | MCFG_CENTRONICS_PERROR_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit2)) |
r241749 | r241750 | |
---|---|---|
78 | 78 | |
79 | 79 | // reset |
80 | 80 | virtual void cpc_reset_w() { }; |
81 | virtual WRITE_LINE_MEMBER( cursor_w ) { }; | |
82 | 81 | |
83 | 82 | void set_rom_bank(UINT8 sel) { m_rom_sel = sel; } // tell device the currently selected ROM |
84 | 83 | UINT8 get_rom_bank() { return m_rom_sel; } |
r241749 | r241750 | |
109 | 108 | DECLARE_WRITE_LINE_MEMBER( romdis_w ); |
110 | 109 | |
111 | 110 | 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 | |
113 | 111 | |
114 | 112 | protected: |
115 | 113 | // device-level overrides |
r241749 | r241750 | |
---|---|---|
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 | ||
18 | const device_type CPC_PLAYCITY = &device_creator<cpc_playcity_device>; | |
19 | ||
20 | // device machine config | |
21 | static 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 | ||
40 | MACHINE_CONFIG_END | |
41 | ||
42 | ||
43 | machine_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 | ||
53 | cpc_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 | ||
66 | void 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 | ||
83 | void cpc_playcity_device::device_reset() | |
84 | { | |
85 | } | |
86 | ||
87 | ||
88 | READ8_MEMBER(cpc_playcity_device::ctc_r) | |
89 | { | |
90 | return m_ctc->read(space,offset); | |
91 | } | |
92 | ||
93 | WRITE8_MEMBER(cpc_playcity_device::ctc_w) | |
94 | { | |
95 | m_ctc->write(space,offset,data); | |
96 | if(offset == 0) | |
97 | update_ymz_clock(); | |
98 | } | |
99 | ||
100 | WRITE8_MEMBER(cpc_playcity_device::ymz1_address_w) | |
101 | { | |
102 | m_ymz1->address_w(space,offset,data); | |
103 | } | |
104 | ||
105 | WRITE8_MEMBER(cpc_playcity_device::ymz2_address_w) | |
106 | { | |
107 | m_ymz2->address_w(space,offset,data); | |
108 | } | |
109 | ||
110 | WRITE8_MEMBER(cpc_playcity_device::ymz1_data_w) | |
111 | { | |
112 | m_ymz1->data_w(space,offset,data); | |
113 | } | |
114 | ||
115 | WRITE8_MEMBER(cpc_playcity_device::ymz2_data_w) | |
116 | { | |
117 | m_ymz2->data_w(space,offset,data); | |
118 | } | |
119 | ||
120 | READ8_MEMBER(cpc_playcity_device::ymz1_data_r) | |
121 | { | |
122 | return m_ymz1->data_r(space,offset); | |
123 | } | |
124 | ||
125 | READ8_MEMBER(cpc_playcity_device::ymz2_data_r) | |
126 | { | |
127 | return m_ymz2->data_r(space,offset); | |
128 | } | |
129 | ||
130 | void 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 |
r241749 | r241750 | |
---|---|---|
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 | ||
24 | class cpc_playcity_device : public device_t, | |
25 | public device_cpc_expansion_card_interface | |
26 | { | |
27 | public: | |
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 | ||
47 | protected: | |
48 | // device-level overrides | |
49 | virtual void device_start(); | |
50 | virtual void device_reset(); | |
51 | ||
52 | private: | |
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 | |
63 | extern const device_type CPC_PLAYCITY; | |
64 | ||
65 | ||
66 | #endif /* CPC_PLAYCITY_H_ */ | |
67 |
r241749 | r241750 | |
---|---|---|
199 | 199 | device_slot_interface(mconfig, *this), |
200 | 200 | m_prog_read_cb(*this), |
201 | 201 | m_prog_write_cb(*this), |
202 | m_out_int_cb(*this), | |
203 | 202 | m_out_irq_cb(*this), |
204 | 203 | m_out_thold_cb(*this) |
205 | 204 | { |
r241749 | r241750 | |
225 | 224 | // resolve callbacks |
226 | 225 | m_prog_read_cb.resolve_safe(0); |
227 | 226 | m_prog_write_cb.resolve_safe(); |
228 | m_out_int_cb.resolve_safe(); | |
229 | 227 | m_out_irq_cb.resolve_safe(); |
230 | 228 | m_out_thold_cb.resolve_safe(); |
231 | 229 | } |
r241749 | r241750 | |
---|---|---|
58 | 58 | |
59 | 59 | 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); } |
60 | 60 | 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); } | |
62 | 61 | 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); } |
63 | 62 | 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); } |
64 | 63 | |
r241749 | r241750 | |
87 | 86 | // internal state |
88 | 87 | devcb_read8 m_prog_read_cb; |
89 | 88 | devcb_write8 m_prog_write_cb; |
90 | devcb_write_line m_out_int_cb; | |
91 | 89 | devcb_write_line m_out_irq_cb; |
92 | 90 | devcb_write_line m_out_thold_cb; |
93 | 91 | device_dmvslot_interface* m_cart; |
r241749 | r241750 | |
106 | 104 | devcb = &dmvcart_slot_device::set_prog_read_callback(*device, DEVCB_##_read_devcb); \ |
107 | 105 | devcb = &dmvcart_slot_device::set_prog_write_callback(*device, DEVCB_##_write_devcb); |
108 | 106 | |
109 | #define MCFG_DMVCART_SLOT_OUT_INT_CB(_devcb) \ | |
110 | devcb = &dmvcart_slot_device::set_out_int_callback(*device, DEVCB_##_devcb); | |
111 | ||
112 | 107 | #define MCFG_DMVCART_SLOT_OUT_IRQ_CB(_devcb) \ |
113 | 108 | devcb = &dmvcart_slot_device::set_out_irq_callback(*device, DEVCB_##_devcb); |
114 | 109 |
r241749 | r241750 | |
---|---|---|
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 | ||
17 | static 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)) | |
20 | MACHINE_CONFIG_END | |
21 | ||
22 | static 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 | |
35 | INPUT_PORTS_END | |
36 | ||
37 | //************************************************************************** | |
38 | // GLOBAL VARIABLES | |
39 | //************************************************************************** | |
40 | ||
41 | const 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 | ||
52 | dmv_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 | ||
64 | void 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 | ||
73 | void 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 | ||
84 | machine_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 | ||
93 | ioport_constructor dmv_k803_device::device_input_ports() const | |
94 | { | |
95 | return INPUT_PORTS_NAME( dmv_k803 ); | |
96 | } | |
97 | ||
98 | void 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 | ||
108 | void 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 | ||
123 | WRITE_LINE_MEMBER(dmv_k803_device::rtc_irq_w) | |
124 | { | |
125 | m_rtc_int = state; | |
126 | update_int(); | |
127 | } | |
128 | ||
129 | void 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 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
18 | class dmv_k803_device : | |
19 | public device_t, | |
20 | public device_dmvslot_interface | |
21 | { | |
22 | public: | |
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 | ||
32 | protected: | |
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 | ||
42 | private: | |
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 | |
52 | extern const device_type DMV_K803; | |
53 | ||
54 | #endif /* __DMV_K803_H__ */ |
r241749 | r241750 | |
---|---|---|
20 | 20 | ROM_END |
21 | 21 | |
22 | 22 | static 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) | |
25 | 24 | AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(portt1_r) |
26 | 25 | ADDRESS_MAP_END |
27 | 26 | |
r241749 | r241750 | |
76 | 75 | |
77 | 76 | void dmv_k806_device::device_start() |
78 | 77 | { |
79 | m_bus = static_cast<dmvcart_slot_device*>(owner()); | |
80 | 78 | } |
81 | 79 | |
82 | 80 | //------------------------------------------------- |
r241749 | r241750 | |
131 | 129 | |
132 | 130 | READ8_MEMBER( dmv_k806_device::port1_r ) |
133 | 131 | { |
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 | ||
143 | 132 | // TODO |
144 | 133 | return 0xff; |
145 | 134 | } |
r241749 | r241750 | |
149 | 138 | return BIT(m_jumpers->read(), 7) ? 0 : 1; |
150 | 139 | } |
151 | 140 | |
152 | WRITE8_MEMBER( dmv_k806_device::port | |
141 | WRITE8_MEMBER( dmv_k806_device::port1_w ) | |
153 | 142 | { |
154 | | |
143 | // TODO | |
155 | 144 | }; |
r241749 | r241750 | |
---|---|---|
31 | 31 | |
32 | 32 | DECLARE_READ8_MEMBER(portt1_r); |
33 | 33 | DECLARE_READ8_MEMBER(port1_r); |
34 | DECLARE_WRITE8_MEMBER(port | |
34 | DECLARE_WRITE8_MEMBER(port1_w); | |
35 | 35 | |
36 | 36 | protected: |
37 | 37 | // device-level overrides |
r241749 | r241750 | |
44 | 44 | private: |
45 | 45 | required_device<upi41_cpu_device> m_mcu; |
46 | 46 | required_ioport m_jumpers; |
47 | dmvcart_slot_device * m_bus; | |
48 | 47 | }; |
49 | 48 | |
50 | 49 |
r241749 | r241750 | |
---|---|---|
500 | 500 | MCFG_Z80STI_OUT_TCO_CB(DEVWRITELINE(Z80STI_TAG, z80sti_device, tc_w)) |
501 | 501 | MCFG_Z80STI_OUT_TDO_CB(DEVWRITELINE(Z80STI_TAG, z80sti_device, tc_w)) |
502 | 502 | |
503 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
503 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
504 | 504 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(grip_device, write_centronics_busy)) |
505 | 505 | MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(grip_device, write_centronics_fault)) |
506 | 506 | |
r241749 | r241750 | |
681 | 681 | { |
682 | 682 | m_base = m_j7->read(); |
683 | 683 | m_page = 0; |
684 | m_lps = 0; | |
685 | 684 | } |
686 | 685 | |
687 | 686 |
r241749 | r241750 | |
---|---|---|
259 | 259 | MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":0", e01_floppies, "35dd", floppy_image_device::default_floppy_formats) |
260 | 260 | MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":1", e01_floppies, "35dd", floppy_image_device::default_floppy_formats) |
261 | 261 | |
262 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
262 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
263 | 263 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(R6522_TAG, via6522_device, write_ca1)) |
264 | 264 | |
265 | 265 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) |
r241749 | r241750 | |
---|---|---|
557 | 557 | |
558 | 558 | /* Check if we're dealing with the multigame variant of the MBC1 mapper */ |
559 | 559 | 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) | |
562 | 562 | 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; | |
563 | 583 | } |
564 | 584 | |
565 | 585 | return type; |
r241749 | r241750 | |
---|---|---|
19 | 19 | SLOT_INTERFACE("aga_pc200", ISA8_AGA_PC200) |
20 | 20 | SLOT_INTERFACE("ega", ISA8_EGA) |
21 | 21 | SLOT_INTERFACE("svga_et4k", ISA8_SVGA_ET4K) |
22 | SLOT_INTERFACE("num9rev",ISA8_NUM_9_REV) | |
23 | 22 | SLOT_INTERFACE("com", ISA8_COM) |
24 | 23 | SLOT_INTERFACE("fdc", ISA8_FDC_SUPERIO) |
25 | 24 | SLOT_INTERFACE("fdc_xt", ISA8_FDC_XT) |
r241749 | r241750 | |
58 | 57 | SLOT_INTERFACE("vga", ISA8_VGA) |
59 | 58 | SLOT_INTERFACE("svga_et4k", ISA8_SVGA_ET4K) |
60 | 59 | SLOT_INTERFACE("svga_dm",ISA8_SVGA_CIRRUS) |
61 | SLOT_INTERFACE("num9rev",ISA8_NUM_9_REV) | |
62 | 60 | SLOT_INTERFACE("com", ISA8_COM) |
63 | 61 | SLOT_INTERFACE("comat", ISA8_COM_AT) |
64 | 62 | SLOT_INTERFACE("fdc", ISA8_FDC_AT) |
r241749 | r241750 | |
---|---|---|
25 | 25 | #include "svga_s3.h" |
26 | 26 | #include "svga_tseng.h" |
27 | 27 | #include "svga_trident.h" |
28 | #include "num9rev.h" | |
29 | 28 | |
30 | 29 | // storage |
31 | 30 | #include "fdc.h" |
r241749 | r241750 | |
---|---|---|
7 | 7 | #include "emu.h" |
8 | 8 | #include "lpt.h" |
9 | 9 | #include "machine/pc_lpt.h" |
10 | #include "bus/centronics/covox.h" | |
11 | #include "bus/centronics/printer.h" | |
10 | 12 | |
11 | 13 | const device_type ISA8_LPT = &device_creator<isa8_lpt_device>; |
12 | 14 |
r241749 | r241750 | |
---|---|---|
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 | ||
12 | const device_type ISA8_NUM_9_REV = &device_creator<isa8_number_9_rev_device>; | |
13 | ||
14 | static ADDRESS_MAP_START( upd7220_map, AS_0, 8, isa8_number_9_rev_device ) | |
15 | AM_RANGE(0x00000, 0x3ffff) AM_NOP | |
16 | ADDRESS_MAP_END | |
17 | ||
18 | UPD7220_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 | ||
47 | static 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") | |
59 | MACHINE_CONFIG_END | |
60 | ||
61 | //------------------------------------------------- | |
62 | // machine_config_additions - device-specific | |
63 | // machine configurations | |
64 | //------------------------------------------------- | |
65 | ||
66 | machine_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 | ||
79 | isa8_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 | ||
93 | void 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 | ||
110 | void isa8_number_9_rev_device::device_reset() | |
111 | { | |
112 | m_bank = 0; | |
113 | m_mode = 0; | |
114 | m_1024 = false; | |
115 | } | |
116 | ||
117 | READ8_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 | ||
130 | WRITE8_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 | ||
162 | READ8_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 | ||
178 | WRITE8_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 | ||
198 | READ8_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 | ||
214 | WRITE8_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 | ||
234 | READ8_MEMBER(isa8_number_9_rev_device::overlay_r) | |
235 | { | |
236 | return m_overlay[offset + ((m_mode & 8) ? 512 : 0)]; | |
237 | } | |
238 | WRITE8_MEMBER(isa8_number_9_rev_device::overlay_w) | |
239 | { | |
240 | m_overlay[offset + ((m_mode & 8) ? 512 : 0)] = data; | |
241 | } | |
242 | ||
243 | READ8_MEMBER(isa8_number_9_rev_device::bank_r) | |
244 | { | |
245 | return m_bank; | |
246 | } | |
247 | ||
248 | WRITE8_MEMBER(isa8_number_9_rev_device::bank_w) | |
249 | { | |
250 | m_bank = data & 0xf; | |
251 | } | |
252 | ||
253 | READ8_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 | ||
275 | WRITE8_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 | ||
312 | UINT32 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 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
17 | class isa8_number_9_rev_device : | |
18 | public device_t, | |
19 | public device_isa8_card_interface | |
20 | { | |
21 | public: | |
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); | |
43 | protected: | |
44 | // device-level overrides | |
45 | virtual void device_start(); | |
46 | virtual void device_reset(); | |
47 | private: | |
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 | |
59 | extern const device_type ISA8_NUM_9_REV; | |
60 | ||
61 | #endif /* __NUM9REV_H__ */ |
r241749 | r241750 | |
---|---|---|
45 | 45 | |
46 | 46 | void s3virge_vga_device::device_start() |
47 | 47 | { |
48 | zero(); | |
48 | memset(&vga, 0, sizeof(vga)); | |
49 | memset(&svga, 0, sizeof(svga)); | |
49 | 50 | |
50 | 51 | int x; |
51 | 52 | int i; |
r241749 | r241750 | |
---|---|---|
155 | 155 | |
156 | 156 | void trident_vga_device::device_start() |
157 | 157 | { |
158 | zero(); | |
158 | memset(&vga, 0, sizeof(vga)); | |
159 | memset(&svga, 0, sizeof(svga)); | |
159 | 160 | |
160 | 161 | int i; |
161 | 162 | for (i = 0; i < 0x100; i++) |
r241749 | r241750 | |
---|---|---|
79 | 79 | m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM; |
80 | 80 | prg32(0); |
81 | 81 | chr8(0, m_chr_source); |
82 | set_nt_mirroring(PPU_MIRROR_HORZ); | |
82 | 83 | } |
83 | 84 | |
84 | 85 | |
r241749 | r241750 | |
163 | 164 | if (!(offset & 0x0100)) |
164 | 165 | { |
165 | 166 | prg32(data >> 3); |
166 | chr8(data | |
167 | chr8(data, CHRROM); | |
167 | 168 | } |
168 | 169 | } |
169 | 170 |
r241749 | r241750 | |
---|---|---|
693 | 693 | logerror("-- PRG 0x%x (%d x 16k chunks)\n", prg_size, prg_size / 0x4000); |
694 | 694 | logerror("-- VROM 0x%x (%d x 8k chunks)\n", vrom_size, vrom_size / 0x2000); |
695 | 695 | 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"); | |
697 | 696 | if (battery_size) |
698 | 697 | logerror("-- Battery found\n"); |
699 | 698 | if (m_cart->get_trainer()) |
r0 | r241750 | |
---|---|---|
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 | ||
74 | const device_type CIRRUS = &device_creator<cirrus_device>; | |
75 | ||
76 | //************************************************************************** | |
77 | // LIVE DEVICE | |
78 | //************************************************************************** | |
79 | ||
80 | //------------------------------------------------- | |
81 | // cirrus_device - constructor | |
82 | //------------------------------------------------- | |
83 | ||
84 | cirrus_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 | ||
94 | void cirrus_device::device_start() | |
95 | { | |
96 | } | |
97 | ||
98 | //------------------------------------------------- | |
99 | // device_reset - device-specific reset | |
100 | //------------------------------------------------- | |
101 | ||
102 | void cirrus_device::device_reset() | |
103 | { | |
104 | } | |
105 | ||
106 | //------------------------------------------------- | |
107 | // pci_read - implementation of PCI read | |
108 | //------------------------------------------------- | |
109 | ||
110 | UINT32 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 | ||
146 | void 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 | ||
158 | WRITE8_MEMBER( cirrus_device::cirrus_42E8_w ) | |
159 | { | |
160 | if (data & 0x80) | |
161 | machine().device("vga")->reset(); | |
162 | } |
r0 | r241750 | |
---|---|---|
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 | ||
16 | class cirrus_device : public device_t, | |
17 | public pci_device_interface | |
18 | { | |
19 | public: | |
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 | ||
28 | protected: | |
29 | // device-level overrides | |
30 | virtual void device_start(); | |
31 | virtual void device_reset(); | |
32 | private: | |
33 | }; | |
34 | ||
35 | ||
36 | // device type definition | |
37 | extern const device_type CIRRUS; | |
38 | ||
39 | #endif /* CIRRUS_H */ |
r0 | r241750 | |
---|---|---|
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 | ||
20 | const device_type I82371AB = &device_creator<i82371ab_device>; | |
21 | ||
22 | ||
23 | i82371ab_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 | ||
29 | UINT32 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 | ||
41 | void 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 | ||
68 | UINT32 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 | ||
80 | void 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 | ||
107 | UINT32 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 | ||
119 | void 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 | ||
146 | UINT32 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 | ||
158 | void 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 | ||
185 | UINT32 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 | ||
200 | void 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 | ||
215 | void 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 | ||
226 | void 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 | } |
r0 | r241750 | |
---|---|---|
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 | ||
17 | class i82371ab_device : public southbridge_device, | |
18 | public pci_device_interface | |
19 | { | |
20 | public: | |
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 | ||
27 | protected: | |
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 | ||
44 | private: | |
45 | UINT8 m_regs[4][0x100]; | |
46 | }; | |
47 | ||
48 | // device type definition | |
49 | extern const device_type I82371AB; | |
50 | ||
51 | #endif /* __I82371AB_H__ */ |
r0 | r241750 | |
---|---|---|
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 | ||
25 | const device_type I82371SB = &device_creator<i82371sb_device>; | |
26 | ||
27 | ||
28 | i82371sb_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 | ||
34 | UINT32 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 | ||
43 | void 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 | ||
62 | UINT32 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 | ||
69 | void 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 | ||
88 | UINT32 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 | ||
97 | void 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 | ||
116 | UINT32 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 | ||
130 | void 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 | ||
145 | void 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 | ||
156 | void 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 | } |
r0 | r241750 | |
---|---|---|
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 | ||
17 | class i82371sb_device : public southbridge_device, | |
18 | public pci_device_interface | |
19 | { | |
20 | public: | |
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 | ||
27 | protected: | |
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 | private: | |
41 | UINT32 m_regs[3][0x400/4]; | |
42 | }; | |
43 | ||
44 | // device type definition | |
45 | extern const device_type I82371SB; | |
46 | ||
47 | ||
48 | #endif /* __I82371SB_H__ */ |
r0 | r241750 | |
---|---|---|
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 | ||
14 | const device_type I82439TX = &device_creator<i82439tx_device>; | |
15 | ||
16 | ||
17 | i82439tx_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 | ||
25 | void 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 | ||
52 | UINT32 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 | ||
141 | void 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 | ||
260 | void 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 | ||
281 | void 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 | } |
r0 | r241750 | |
---|---|---|
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 | ||
23 | class i82439tx_device : public northbridge_device, | |
24 | public pci_device_interface | |
25 | { | |
26 | public: | |
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 | ||
36 | protected: | |
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 | ||
43 | private: | |
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 | |
55 | extern const device_type I82439TX; | |
56 | ||
57 | #endif /* __I82439TX_H__ */ |
r0 | r241750 | |
---|---|---|
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 | ||
19 | const device_type MPC105 = &device_creator<mpc105_device>; | |
20 | ||
21 | ||
22 | //************************************************************************** | |
23 | // LIVE DEVICE | |
24 | //************************************************************************** | |
25 | ||
26 | //------------------------------------------------- | |
27 | // mpc105_device - constructor | |
28 | //------------------------------------------------- | |
29 | ||
30 | mpc105_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 | ||
42 | void 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 | ||
51 | void 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 | ||
62 | void 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 | ||
112 | UINT32 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 | ||
189 | void 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 | } |
r0 | r241750 | |
---|---|---|
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 | ||
24 | class mpc105_device : public device_t, | |
25 | public pci_device_interface | |
26 | { | |
27 | public: | |
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 | ||
37 | protected: | |
38 | // device-level overrides | |
39 | virtual void device_start(); | |
40 | virtual void device_reset(); | |
41 | ||
42 | void update_memory(); | |
43 | ||
44 | private: | |
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 | |
56 | extern const device_type MPC105; | |
57 | ||
58 | #endif /* MPC105_H */ |
r0 | r241750 | |
---|---|---|
1 | /*************************************************************************** | |
2 | ||
3 | Northbridge implementation | |
4 | ||
5 | ***************************************************************************/ | |
6 | ||
7 | #include "emu.h" | |
8 | #include "northbridge.h" | |
9 | ||
10 | //************************************************************************** | |
11 | // GLOBAL VARIABLES | |
12 | //************************************************************************** | |
13 | ||
14 | northbridge_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 | ||
25 | void 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 | ||
44 | void northbridge_device::device_reset() | |
45 | { | |
46 | } |
r0 | r241750 | |
---|---|---|
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 | ||
16 | class northbridge_device : | |
17 | public device_t | |
18 | { | |
19 | public: | |
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); | |
22 | protected: | |
23 | // device-level overrides | |
24 | virtual void device_start(); | |
25 | virtual void device_reset(); | |
26 | public: | |
27 | required_device<cpu_device> m_maincpu; | |
28 | required_device<ram_device> m_ram; | |
29 | ||
30 | }; | |
31 | ||
32 | #endif /* __NORTHBRIDGE_H__ */ |
r0 | r241750 | |
---|---|---|
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 | ||
81 | const device_type PCI_BUS = &device_creator<pci_bus_device>; | |
82 | ||
83 | //************************************************************************** | |
84 | // LIVE DEVICE | |
85 | //************************************************************************** | |
86 | ||
87 | //------------------------------------------------- | |
88 | // pci_bus_device - constructor | |
89 | //------------------------------------------------- | |
90 | pci_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 | ||
104 | READ32_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 | ||
138 | pci_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 | ||
158 | WRITE32_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 | ||
206 | READ64_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 | ||
217 | WRITE64_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 | ||
228 | void 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 | ||
241 | void 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 | ||
253 | void 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 | ||
287 | void 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 | ||
298 | pci_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 | ||
307 | pci_device_interface::~pci_device_interface() | |
308 | { | |
309 | } | |
310 | ||
311 | ||
312 | const device_type PCI_CONNECTOR = &device_creator<pci_connector>; | |
313 | ||
314 | ||
315 | pci_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 | ||
321 | pci_connector::~pci_connector() | |
322 | { | |
323 | } | |
324 | ||
325 | void pci_connector::device_start() | |
326 | { | |
327 | } | |
328 | ||
329 | pci_device_interface *pci_connector::get_device() | |
330 | { | |
331 | return dynamic_cast<pci_device_interface *>(get_card_device()); | |
332 | } |
r0 | r241750 | |
---|---|---|
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 | //************************************************************************** | |
15 | class pci_bus_device; | |
16 | ||
17 | // ======================> pci_device_interface | |
18 | ||
19 | class pci_device_interface : public device_slot_card_interface | |
20 | { | |
21 | public: | |
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; | |
28 | private: | |
29 | }; | |
30 | ||
31 | class pci_connector: public device_t, | |
32 | public device_slot_interface | |
33 | { | |
34 | public: | |
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 | ||
40 | protected: | |
41 | virtual void device_start(); | |
42 | }; | |
43 | ||
44 | extern const device_type PCI_CONNECTOR; | |
45 | ||
46 | // ======================> pci_bus_device | |
47 | ||
48 | class pci_bus_device : public device_t | |
49 | { | |
50 | public: | |
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 | ||
68 | protected: | |
69 | // device-level overrides | |
70 | virtual void device_start(); | |
71 | virtual void device_reset(); | |
72 | virtual void device_post_load(); | |
73 | ||
74 | private: | |
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 | |
92 | extern 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 */ |
r0 | r241750 | |
---|---|---|
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 | ||
13 | static 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) | |
17 | SLOT_INTERFACE_END | |
18 | ||
19 | static 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) | |
116 | MACHINE_CONFIG_END | |
117 | ||
118 | //------------------------------------------------- | |
119 | // machine_config_additions - device-specific | |
120 | // machine configurations | |
121 | //------------------------------------------------- | |
122 | ||
123 | machine_config_constructor southbridge_device::device_mconfig_additions() const | |
124 | { | |
125 | return MACHINE_CONFIG_NAME( southbridge ); | |
126 | } | |
127 | ||
128 | southbridge_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 | |
152 | READ8_MEMBER(southbridge_device::ide_read_cs1_r) | |
153 | { | |
154 | return m_ide->read_cs1(space, 1, (UINT32) 0xff0000) >> 16; | |
155 | } | |
156 | ||
157 | WRITE8_MEMBER(southbridge_device::ide_write_cs1_w) | |
158 | { | |
159 | m_ide->write_cs1(space, 1, (UINT32) data << 16, (UINT32) 0xff0000); | |
160 | } | |
161 | ||
162 | READ8_MEMBER(southbridge_device::ide2_read_cs1_r) | |
163 | { | |
164 | return m_ide2->read_cs1(space, 1, (UINT32) 0xff0000) >> 16; | |
165 | } | |
166 | ||
167 | WRITE8_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 | ||
176 | void 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 | ||
203 | void 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 | *************************************************************/ | |
219 | READ8_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 | ||
233 | void 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 | ||
247 | WRITE_LINE_MEMBER( southbridge_device::at_pit8254_out0_changed ) | |
248 | { | |
249 | if (m_pic8259_master) | |
250 | m_pic8259_master->ir0_w(state); | |
251 | } | |
252 | ||
253 | WRITE_LINE_MEMBER( southbridge_device::at_pit8254_out1_changed ) | |
254 | { | |
255 | if(state) | |
256 | m_refresh = !m_refresh; | |
257 | } | |
258 | ||
259 | WRITE_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 | ||
271 | READ8_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 | ||
294 | WRITE8_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 | ||
316 | WRITE_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 | ||
324 | READ8_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 | ||
337 | WRITE8_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 | ||
348 | READ8_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 | ||
363 | WRITE8_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 | ||
374 | READ8_MEMBER( southbridge_device::pc_dma8237_0_dack_r ) { return m_isabus->dack_r(0); } | |
375 | READ8_MEMBER( southbridge_device::pc_dma8237_1_dack_r ) { return m_isabus->dack_r(1); } | |
376 | READ8_MEMBER( southbridge_device::pc_dma8237_2_dack_r ) { return m_isabus->dack_r(2); } | |
377 | READ8_MEMBER( southbridge_device::pc_dma8237_3_dack_r ) { return m_isabus->dack_r(3); } | |
378 | READ8_MEMBER( southbridge_device::pc_dma8237_5_dack_r ) { return m_isabus->dack_r(5); } | |
379 | READ8_MEMBER( southbridge_device::pc_dma8237_6_dack_r ) { return m_isabus->dack_r(6); } | |
380 | READ8_MEMBER( southbridge_device::pc_dma8237_7_dack_r ) { return m_isabus->dack_r(7); } | |
381 | ||
382 | ||
383 | WRITE8_MEMBER( southbridge_device::pc_dma8237_0_dack_w ){ m_isabus->dack_w(0, data); } | |
384 | WRITE8_MEMBER( southbridge_device::pc_dma8237_1_dack_w ){ m_isabus->dack_w(1, data); } | |
385 | WRITE8_MEMBER( southbridge_device::pc_dma8237_2_dack_w ){ m_isabus->dack_w(2, data); } | |
386 | WRITE8_MEMBER( southbridge_device::pc_dma8237_3_dack_w ){ m_isabus->dack_w(3, data); } | |
387 | WRITE8_MEMBER( southbridge_device::pc_dma8237_5_dack_w ){ m_isabus->dack_w(5, data); } | |
388 | WRITE8_MEMBER( southbridge_device::pc_dma8237_6_dack_w ){ m_isabus->dack_w(6, data); } | |
389 | WRITE8_MEMBER( southbridge_device::pc_dma8237_7_dack_w ){ m_isabus->dack_w(7, data); } | |
390 | ||
391 | WRITE_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 | ||
398 | void 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 | ||
413 | WRITE_LINE_MEMBER( southbridge_device::pc_dack0_w ) { pc_select_dma_channel(0, state); } | |
414 | WRITE_LINE_MEMBER( southbridge_device::pc_dack1_w ) { pc_select_dma_channel(1, state); } | |
415 | WRITE_LINE_MEMBER( southbridge_device::pc_dack2_w ) { pc_select_dma_channel(2, state); } | |
416 | WRITE_LINE_MEMBER( southbridge_device::pc_dack3_w ) { pc_select_dma_channel(3, state); } | |
417 | WRITE_LINE_MEMBER( southbridge_device::pc_dack4_w ) { m_dma8237_1->hack_w( state ? 0 : 1); } // it's inverted | |
418 | WRITE_LINE_MEMBER( southbridge_device::pc_dack5_w ) { pc_select_dma_channel(5, state); } | |
419 | WRITE_LINE_MEMBER( southbridge_device::pc_dack6_w ) { pc_select_dma_channel(6, state); } | |
420 | WRITE_LINE_MEMBER( southbridge_device::pc_dack7_w ) { pc_select_dma_channel(7, state); } | |
421 | ||
422 | READ8_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 | ||
438 | WRITE8_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 | ||
447 | READ8_MEMBER( southbridge_device::at_dma8237_2_r ) | |
448 | { | |
449 | return m_dma8237_2->read( space, offset / 2); | |
450 | } | |
451 | ||
452 | WRITE8_MEMBER( southbridge_device::at_dma8237_2_w ) | |
453 | { | |
454 | m_dma8237_2->write( space, offset / 2, data); | |
455 | } | |
456 | ||
457 | READ8_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 | ||
468 | WRITE8_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 | ||
478 | WRITE8_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 | } |
r0 | r241750 | |
---|---|---|
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 | ||
37 | class southbridge_device : | |
38 | public device_t | |
39 | { | |
40 | public: | |
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 | ||
47 | protected: | |
48 | // device-level overrides | |
49 | virtual void device_start(); | |
50 | virtual void device_reset(); | |
51 | public: | |
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); | |
111 | protected: | |
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__ */ |
r241749 | r241750 | |
---|---|---|
88 | 88 | MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", sandy_super_disk_floppies, "35dd", sandy_super_disk_t::floppy_formats) |
89 | 89 | MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":1", sandy_super_disk_floppies, NULL, sandy_super_disk_t::floppy_formats) |
90 | 90 | |
91 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
91 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
92 | 92 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(sandy_super_disk_t, busy_w)) |
93 | 93 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD(TTL74273_TAG, CENTRONICS_TAG) |
94 | 94 | MACHINE_CONFIG_END |
r241749 | r241750 | |
---|---|---|
109 | 109 | MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", sandy_superqboard_floppies, "35hd", sandy_superqboard_t::floppy_formats) |
110 | 110 | MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":1", sandy_superqboard_floppies, NULL, sandy_superqboard_t::floppy_formats) |
111 | 111 | |
112 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
112 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
113 | 113 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(sandy_superqboard_t, busy_w)) |
114 | 114 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD(TTL74273_TAG, CENTRONICS_TAG) |
115 | 115 | MACHINE_CONFIG_END |
r241749 | r241750 | |
---|---|---|
96 | 96 | |
97 | 97 | void sns_sa1_device::device_start() |
98 | 98 | { |
99 | m_scpu_ctrl = 0; | |
100 | m_nmi_vector = 0; | |
101 | m_bank_c_hi = 0; | |
102 | m_bank_c_rom = 0; | |
103 | 99 | } |
104 | 100 | |
105 | 101 | void sns_sa1_device::device_reset() |
106 | 102 | { |
107 | memset(m_internal_ram, 0, | |
103 | memset(m_internal_ram, 0, 0x800); | |
108 | 104 | |
109 | 105 | m_sa1_ctrl = 0x20; |
110 | 106 | m_scpu_ctrl = 0; |
r241749 | r241750 | |
131 | 127 | m_iram_write_sa1 = 1; |
132 | 128 | m_src_addr = 0; |
133 | 129 | m_dst_addr = 0; |
134 | memset(m_brf_reg, 0, | |
130 | memset(m_brf_reg, 0, 0x10); | |
135 | 131 | m_math_ctlr = 0; |
136 | 132 | m_math_overflow = 0; |
137 | 133 | m_math_a = 0; |
r241749 | r241750 | |
---|---|---|
25 | 25 | //------------------------------------------------- |
26 | 26 | |
27 | 27 | static MACHINE_CONFIG_FRAGMENT( printer_interface ) |
28 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
28 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
29 | 29 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(printer_interface_device, busy_w)) |
30 | 30 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("latch", "centronics") |
31 | 31 | MACHINE_CONFIG_END |
r241749 | r241750 | |
---|---|---|
160 | 160 | { |
161 | 161 | // initialize the description |
162 | 162 | 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)); | |
165 | 165 | desc->pc = curpc; |
166 | 166 | desc->physpc = curpc; |
167 | 167 | 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)); | |
177 | 168 | |
178 | 169 | // call the callback to describe an instruction |
179 | 170 | if (!describe(*desc, prevdesc)) |
r241749 | r241750 | |
---|---|---|
274 | 274 | va_start(va, format); |
275 | 275 | vfprintf(m_umllog, format, va); |
276 | 276 | va_end(va); |
277 | fflush(m_umllog); | |
278 | 277 | } |
279 | 278 | } |
280 | 279 |
r241749 | r241750 | |
---|---|---|
125 | 125 | UINT32 base, limit; |
126 | 126 | int entry; |
127 | 127 | |
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 | ||
138 | 128 | if ( seg->selector & 0x4 ) |
139 | 129 | { |
140 | 130 | base = m_ldtr.base; |
r241749 | r241750 | |
157 | 147 | if (seg->flags & 0x8000) |
158 | 148 | seg->limit = (seg->limit << 12) | 0xfff; |
159 | 149 | seg->d = (seg->flags & 0x4000) ? 1 : 0; |
160 | seg->valid = true; | |
150 | seg->valid = (seg->selector & ~3)?(true):(false); | |
161 | 151 | |
162 | 152 | if(desc) |
163 | 153 | *desc = ((UINT64)v2<<32)|v1; |
r241749 | r241750 | |
222 | 212 | if (!V8086_MODE) |
223 | 213 | { |
224 | 214 | 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); | |
227 | 216 | } |
228 | 217 | else |
229 | 218 | { |
r241749 | r241750 | |
763 | 752 | logerror("IRQ (%08x): Software IRQ - gate DPL is less than CPL.\n",m_pc); |
764 | 753 | FAULT_EXP(FAULT_GP,entry+2) |
765 | 754 | } |
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 | } | |
775 | 755 | } |
776 | 756 | |
777 | 757 | if((flags & 0x0080) == 0) |
r241749 | r241750 | |
1686 | 1666 | } |
1687 | 1667 | if (operand32 != 0) // if 32-bit |
1688 | 1668 | { |
1689 | if( | |
1669 | if(REG32(ESP) < 8) | |
1690 | 1670 | { |
1691 | logerror("CALL | |
1671 | logerror("CALL: Stack has no room for return address.\n"); | |
1692 | 1672 | FAULT(FAULT_SS,0) // #SS(0) |
1693 | 1673 | } |
1694 | 1674 | } |
1695 | 1675 | else |
1696 | 1676 | { |
1697 | if( | |
1677 | if(REG16(SP) < 4) | |
1698 | 1678 | { |
1699 | logerror("CALL | |
1679 | logerror("CALL: Stack has no room for return address.\n"); | |
1700 | 1680 | FAULT(FAULT_SS,0) // #SS(0) |
1701 | 1681 | } |
1702 | 1682 | } |
r241749 | r241750 | |
1736 | 1716 | logerror("CALL: TSS: TSS is busy.\n"); |
1737 | 1717 | FAULT(FAULT_TS,selector & ~0x03) // #TS(selector) |
1738 | 1718 | } |
1739 | if( | |
1719 | if(desc.flags & 0x0080) | |
1740 | 1720 | { |
1741 | logerror("CALL: TSS: Segment | |
1721 | logerror("CALL: TSS: Segment is not present.\n"); | |
1742 | 1722 | FAULT(FAULT_NP,selector & ~0x03) // #NP(selector) |
1743 | 1723 | } |
1744 | 1724 | if(desc.flags & 0x08) |
r241749 | r241750 | |
1944 | 1924 | /* same privilege */ |
1945 | 1925 | if (operand32 != 0) // if 32-bit |
1946 | 1926 | { |
1947 | if( | |
1927 | if(REG32(ESP) < 8) | |
1948 | 1928 | { |
1949 | 1929 | logerror("CALL: Stack has no room for return address.\n"); |
1950 | 1930 | FAULT(FAULT_SS,0) // #SS(0) |
r241749 | r241750 | |
1954 | 1934 | } |
1955 | 1935 | else |
1956 | 1936 | { |
1957 | if( | |
1937 | if(REG16(SP) < 4) | |
1958 | 1938 | { |
1959 | 1939 | logerror("CALL: Stack has no room for return address.\n"); |
1960 | 1940 | FAULT(FAULT_SS,0) // #SS(0) |
r241749 | r241750 | |
1986 | 1966 | logerror("CALL: Task Gate: Gate DPL is less than RPL.\n"); |
1987 | 1967 | FAULT(FAULT_TS,selector & ~0x03) // #TS(selector) |
1988 | 1968 | } |
1989 | if( | |
1969 | if(gate.ar & 0x0080) | |
1990 | 1970 | { |
1991 | 1971 | logerror("CALL: Task Gate: Gate is not present.\n"); |
1992 | 1972 | FAULT(FAULT_NP,selector & ~0x03) // #NP(selector) |
r241749 | r241750 | |
2012 | 1992 | logerror("CALL: Task Gate: TSS is busy.\n"); |
2013 | 1993 | FAULT(FAULT_TS,gate.selector & ~0x03) // #TS(selector) |
2014 | 1994 | } |
2015 | if( | |
1995 | if(desc.flags & 0x0080) | |
2016 | 1996 | { |
2017 | 1997 | logerror("CALL: Task Gate: TSS is not present.\n"); |
2018 | 1998 | FAULT(FAULT_NP,gate.selector & ~0x03) // #TS(selector) |
r241749 | r241750 | |
3144 | 3124 | m_vtlb = vtlb_alloc(this, AS_PROGRAM, 0, tlbsize); |
3145 | 3125 | m_smi = false; |
3146 | 3126 | m_debugger_temp = 0; |
3147 | m_lock = false; | |
3148 | 3127 | |
3149 | 3128 | zero_state(); |
3150 | 3129 | |
r241749 | r241750 | |
3153 | 3132 | save_item(NAME(m_sreg[ES].base)); |
3154 | 3133 | save_item(NAME(m_sreg[ES].limit)); |
3155 | 3134 | save_item(NAME(m_sreg[ES].flags)); |
3156 | save_item(NAME(m_sreg[ES].d)); | |
3157 | 3135 | save_item(NAME(m_sreg[CS].selector)); |
3158 | 3136 | save_item(NAME(m_sreg[CS].base)); |
3159 | 3137 | save_item(NAME(m_sreg[CS].limit)); |
3160 | 3138 | save_item(NAME(m_sreg[CS].flags)); |
3161 | save_item(NAME(m_sreg[CS].d)); | |
3162 | 3139 | save_item(NAME(m_sreg[SS].selector)); |
3163 | 3140 | save_item(NAME(m_sreg[SS].base)); |
3164 | 3141 | save_item(NAME(m_sreg[SS].limit)); |
3165 | 3142 | save_item(NAME(m_sreg[SS].flags)); |
3166 | save_item(NAME(m_sreg[SS].d)); | |
3167 | 3143 | save_item(NAME(m_sreg[DS].selector)); |
3168 | 3144 | save_item(NAME(m_sreg[DS].base)); |
3169 | 3145 | save_item(NAME(m_sreg[DS].limit)); |
3170 | 3146 | save_item(NAME(m_sreg[DS].flags)); |
3171 | save_item(NAME(m_sreg[DS].d)); | |
3172 | 3147 | save_item(NAME(m_sreg[FS].selector)); |
3173 | 3148 | save_item(NAME(m_sreg[FS].base)); |
3174 | 3149 | save_item(NAME(m_sreg[FS].limit)); |
3175 | 3150 | save_item(NAME(m_sreg[FS].flags)); |
3176 | save_item(NAME(m_sreg[FS].d)); | |
3177 | 3151 | save_item(NAME(m_sreg[GS].selector)); |
3178 | 3152 | save_item(NAME(m_sreg[GS].base)); |
3179 | 3153 | save_item(NAME(m_sreg[GS].limit)); |
3180 | 3154 | save_item(NAME(m_sreg[GS].flags)); |
3181 | save_item(NAME(m_sreg[GS].d)); | |
3182 | 3155 | save_item(NAME(m_eip)); |
3183 | 3156 | save_item(NAME(m_prev_eip)); |
3184 | 3157 | save_item(NAME(m_CF)); |
r241749 | r241750 | |
3572 | 3545 | m_smi_latched = false; |
3573 | 3546 | m_nmi_masked = false; |
3574 | 3547 | m_nmi_latched = false; |
3548 | m_lock = false; | |
3575 | 3549 | |
3576 | 3550 | m_a20_mask = ~0; |
3577 | 3551 |
r241749 | r241750 | |
---|---|---|
1746 | 1746 | |
1747 | 1747 | void i386_device::i386_push_ax() // Opcode 0x50 |
1748 | 1748 | { |
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) | |
1755 | 1751 | PUSH16(REG16(AX) ); |
1756 | 1752 | else |
1757 | 1753 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1760 | 1756 | |
1761 | 1757 | void i386_device::i386_push_cx() // Opcode 0x51 |
1762 | 1758 | { |
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) | |
1769 | 1761 | PUSH16(REG16(CX) ); |
1770 | 1762 | else |
1771 | 1763 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1774 | 1766 | |
1775 | 1767 | void i386_device::i386_push_dx() // Opcode 0x52 |
1776 | 1768 | { |
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) | |
1783 | 1771 | PUSH16(REG16(DX) ); |
1784 | 1772 | else |
1785 | 1773 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1788 | 1776 | |
1789 | 1777 | void i386_device::i386_push_bx() // Opcode 0x53 |
1790 | 1778 | { |
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) | |
1797 | 1781 | PUSH16(REG16(BX) ); |
1798 | 1782 | else |
1799 | 1783 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1802 | 1786 | |
1803 | 1787 | void i386_device::i386_push_sp() // Opcode 0x54 |
1804 | 1788 | { |
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) | |
1811 | 1791 | PUSH16(REG16(SP) ); |
1812 | 1792 | else |
1813 | 1793 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1816 | 1796 | |
1817 | 1797 | void i386_device::i386_push_bp() // Opcode 0x55 |
1818 | 1798 | { |
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) | |
1825 | 1801 | PUSH16(REG16(BP) ); |
1826 | 1802 | else |
1827 | 1803 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1830 | 1806 | |
1831 | 1807 | void i386_device::i386_push_si() // Opcode 0x56 |
1832 | 1808 | { |
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) | |
1839 | 1811 | PUSH16(REG16(SI) ); |
1840 | 1812 | else |
1841 | 1813 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1844 | 1816 | |
1845 | 1817 | void i386_device::i386_push_di() // Opcode 0x57 |
1846 | 1818 | { |
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) | |
1853 | 1821 | PUSH16(REG16(DI) ); |
1854 | 1822 | else |
1855 | 1823 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1858 | 1826 | |
1859 | 1827 | void i386_device::i386_push_cs16() // Opcode 0x0e |
1860 | 1828 | { |
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) | |
1867 | 1831 | PUSH16(m_sreg[CS].selector ); |
1868 | 1832 | else |
1869 | 1833 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1872 | 1836 | |
1873 | 1837 | void i386_device::i386_push_ds16() // Opcode 0x1e |
1874 | 1838 | { |
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) | |
1881 | 1841 | PUSH16(m_sreg[DS].selector ); |
1882 | 1842 | else |
1883 | 1843 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1886 | 1846 | |
1887 | 1847 | void i386_device::i386_push_es16() // Opcode 0x06 |
1888 | 1848 | { |
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) | |
1895 | 1851 | PUSH16(m_sreg[ES].selector ); |
1896 | 1852 | else |
1897 | 1853 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1900 | 1856 | |
1901 | 1857 | void i386_device::i386_push_fs16() // Opcode 0x0f a0 |
1902 | 1858 | { |
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) | |
1909 | 1861 | PUSH16(m_sreg[FS].selector ); |
1910 | 1862 | else |
1911 | 1863 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1914 | 1866 | |
1915 | 1867 | void i386_device::i386_push_gs16() // Opcode 0x0f a8 |
1916 | 1868 | { |
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) | |
1923 | 1871 | PUSH16(m_sreg[GS].selector ); |
1924 | 1872 | else |
1925 | 1873 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1928 | 1876 | |
1929 | 1877 | void i386_device::i386_push_ss16() // Opcode 0x16 |
1930 | 1878 | { |
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) | |
1937 | 1881 | PUSH16(m_sreg[SS].selector ); |
1938 | 1882 | else |
1939 | 1883 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1943 | 1887 | void i386_device::i386_push_i16() // Opcode 0x68 |
1944 | 1888 | { |
1945 | 1889 | 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) | |
1952 | 1892 | PUSH16(value); |
1953 | 1893 | else |
1954 | 1894 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1958 | 1898 | void i386_device::i386_pusha() // Opcode 0x60 |
1959 | 1899 | { |
1960 | 1900 | 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) | |
1967 | 1903 | { |
1968 | 1904 | PUSH16(REG16(AX) ); |
1969 | 1905 | PUSH16(REG16(CX) ); |
r241749 | r241750 | |
1981 | 1917 | |
1982 | 1918 | void i386_device::i386_pushf() // Opcode 0x9c |
1983 | 1919 | { |
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) | |
1990 | 1922 | PUSH16(get_flags() & 0xffff ); |
1991 | 1923 | else |
1992 | 1924 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
3201 | 3133 | memset(&seg, 0, sizeof(seg)); |
3202 | 3134 | seg.selector = m_task.segment; |
3203 | 3135 | 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 | ||
3209 | 3136 | m_task.limit = seg.limit; |
3210 | 3137 | m_task.base = seg.base; |
3211 | m_task.flags = seg.flags | |
3138 | m_task.flags = seg.flags; | |
3212 | 3139 | } |
3213 | 3140 | else |
3214 | 3141 | { |
r241749 | r241750 | |
---|---|---|
1599 | 1599 | |
1600 | 1600 | void i386_device::i386_push_eax() // Opcode 0x50 |
1601 | 1601 | { |
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) | |
1608 | 1604 | PUSH32(REG32(EAX) ); |
1609 | 1605 | else |
1610 | 1606 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1613 | 1609 | |
1614 | 1610 | void i386_device::i386_push_ecx() // Opcode 0x51 |
1615 | 1611 | { |
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) | |
1622 | 1614 | PUSH32(REG32(ECX) ); |
1623 | 1615 | else |
1624 | 1616 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1627 | 1619 | |
1628 | 1620 | void i386_device::i386_push_edx() // Opcode 0x52 |
1629 | 1621 | { |
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) | |
1636 | 1624 | PUSH32(REG32(EDX) ); |
1637 | 1625 | else |
1638 | 1626 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1641 | 1629 | |
1642 | 1630 | void i386_device::i386_push_ebx() // Opcode 0x53 |
1643 | 1631 | { |
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) | |
1650 | 1634 | PUSH32(REG32(EBX) ); |
1651 | 1635 | else |
1652 | 1636 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1655 | 1639 | |
1656 | 1640 | void i386_device::i386_push_esp() // Opcode 0x54 |
1657 | 1641 | { |
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) | |
1664 | 1644 | PUSH32(REG32(ESP) ); |
1665 | 1645 | else |
1666 | 1646 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1669 | 1649 | |
1670 | 1650 | void i386_device::i386_push_ebp() // Opcode 0x55 |
1671 | 1651 | { |
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) | |
1678 | 1654 | PUSH32(REG32(EBP) ); |
1679 | 1655 | else |
1680 | 1656 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1683 | 1659 | |
1684 | 1660 | void i386_device::i386_push_esi() // Opcode 0x56 |
1685 | 1661 | { |
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) | |
1692 | 1664 | PUSH32(REG32(ESI) ); |
1693 | 1665 | else |
1694 | 1666 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1697 | 1669 | |
1698 | 1670 | void i386_device::i386_push_edi() // Opcode 0x57 |
1699 | 1671 | { |
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) | |
1706 | 1674 | PUSH32(REG32(EDI) ); |
1707 | 1675 | else |
1708 | 1676 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1711 | 1679 | |
1712 | 1680 | void i386_device::i386_push_cs32() // Opcode 0x0e |
1713 | 1681 | { |
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) | |
1720 | 1684 | PUSH32(m_sreg[CS].selector ); |
1721 | 1685 | else |
1722 | 1686 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1725 | 1689 | |
1726 | 1690 | void i386_device::i386_push_ds32() // Opcode 0x1e |
1727 | 1691 | { |
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) | |
1734 | 1694 | PUSH32(m_sreg[DS].selector ); |
1735 | 1695 | else |
1736 | 1696 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1739 | 1699 | |
1740 | 1700 | void i386_device::i386_push_es32() // Opcode 0x06 |
1741 | 1701 | { |
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) | |
1748 | 1704 | PUSH32(m_sreg[ES].selector ); |
1749 | 1705 | else |
1750 | 1706 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1753 | 1709 | |
1754 | 1710 | void i386_device::i386_push_fs32() // Opcode 0x0f a0 |
1755 | 1711 | { |
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) | |
1762 | 1714 | PUSH32(m_sreg[FS].selector ); |
1763 | 1715 | else |
1764 | 1716 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1767 | 1719 | |
1768 | 1720 | void i386_device::i386_push_gs32() // Opcode 0x0f a8 |
1769 | 1721 | { |
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) | |
1776 | 1724 | PUSH32(m_sreg[GS].selector ); |
1777 | 1725 | else |
1778 | 1726 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1781 | 1729 | |
1782 | 1730 | void i386_device::i386_push_ss32() // Opcode 0x16 |
1783 | 1731 | { |
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) | |
1790 | 1734 | PUSH32(m_sreg[SS].selector ); |
1791 | 1735 | else |
1792 | 1736 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1796 | 1740 | void i386_device::i386_push_i32() // Opcode 0x68 |
1797 | 1741 | { |
1798 | 1742 | 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) | |
1805 | 1745 | PUSH32(value); |
1806 | 1746 | else |
1807 | 1747 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
1811 | 1751 | void i386_device::i386_pushad() // Opcode 0x60 |
1812 | 1752 | { |
1813 | 1753 | 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) | |
1820 | 1756 | { |
1821 | 1757 | PUSH32(REG32(EAX) ); |
1822 | 1758 | PUSH32(REG32(ECX) ); |
r241749 | r241750 | |
1836 | 1772 | { |
1837 | 1773 | if(!m_IOP1 && !m_IOP2 && V8086_MODE) |
1838 | 1774 | 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) | |
1845 | 1777 | PUSH32(get_flags() & 0x00fcffff ); |
1846 | 1778 | else |
1847 | 1779 | FAULT(FAULT_SS,0) |
r241749 | r241750 | |
3007 | 2939 | memset(&seg, 0, sizeof(seg)); |
3008 | 2940 | seg.selector = m_task.segment; |
3009 | 2941 | 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 | ||
3015 | 2942 | m_task.limit = seg.limit; |
3016 | 2943 | m_task.base = seg.base; |
3017 | m_task.flags = seg.flags | |
2944 | m_task.flags = seg.flags; | |
3018 | 2945 | } |
3019 | 2946 | else |
3020 | 2947 | { |
r241749 | r241750 | |
---|---|---|
1387 | 1387 | |
1388 | 1388 | case 0x0f: /* LUI - MIPS I */ |
1389 | 1389 | if (RTREG != 0) |
1390 | UML_DMOV(block, R64(RTREG), | |
1390 | UML_DMOV(block, R64(RTREG), SIMMVAL << 16); // dmov <rtreg>,SIMMVAL << 16 | |
1391 | 1391 | return TRUE; |
1392 | 1392 | |
1393 | 1393 | case 0x08: /* ADDI - MIPS I */ |
r241749 | r241750 | |
2764 | 2764 | |
2765 | 2765 | case 0x07: |
2766 | 2766 | if (IS_SINGLE(op)) /* NEG.S - MIPS I */ |
2767 | { | |
2768 | 2767 | 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 | } | |
2772 | 2768 | else /* NEG.D - MIPS I */ |
2773 | { | |
2774 | 2769 | 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 | } | |
2778 | 2770 | return TRUE; |
2779 | 2771 | |
2780 | 2772 | case 0x08: |
r241749 | r241750 | |
2782 | 2774 | UML_FSTOINT(block, FPR64(FDREG), FPR32(FSREG), SIZE_QWORD, ROUND_ROUND);// fstoint <fdreg>,<fsreg>,qword,round |
2783 | 2775 | else /* ROUND.L.D - MIPS III */ |
2784 | 2776 | 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); | |
2786 | 2777 | return TRUE; |
2787 | 2778 | |
2788 | 2779 | case 0x09: |
r241749 | r241750 | |
2790 | 2781 | UML_FSTOINT(block, FPR64(FDREG), FPR32(FSREG), SIZE_QWORD, ROUND_TRUNC);// fstoint <fdreg>,<fsreg>,qword,trunc |
2791 | 2782 | else /* TRUNC.L.D - MIPS III */ |
2792 | 2783 | 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); | |
2794 | 2784 | return TRUE; |
2795 | 2785 | |
2796 | 2786 | case 0x0a: |
r241749 | r241750 | |
2798 | 2788 | UML_FSTOINT(block, FPR64(FDREG), FPR32(FSREG), SIZE_QWORD, ROUND_CEIL);// fstoint <fdreg>,<fsreg>,qword,ceil |
2799 | 2789 | else /* CEIL.L.D - MIPS III */ |
2800 | 2790 | 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); | |
2802 | 2791 | return TRUE; |
2803 | 2792 | |
2804 | 2793 | case 0x0b: |
r241749 | r241750 | |
2806 | 2795 | UML_FSTOINT(block, FPR64(FDREG), FPR32(FSREG), SIZE_QWORD, ROUND_FLOOR);// fstoint <fdreg>,<fsreg>,qword,floor |
2807 | 2796 | else /* FLOOR.L.D - MIPS III */ |
2808 | 2797 | 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); | |
2810 | 2798 | return TRUE; |
2811 | 2799 | |
2812 | 2800 | case 0x0c: |
r241749 | r241750 | |
---|---|---|
106 | 106 | desc.regin[0] |= REGFLAG_R(RSREG) | REGFLAG_R(RTREG); |
107 | 107 | desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH; |
108 | 108 | } |
109 | desc.targetpc = desc.pc + 4 + SIMMVAL | |
109 | desc.targetpc = desc.pc + 4 + (SIMMVAL << 2); | |
110 | 110 | desc.delayslots = 1; |
111 | 111 | desc.skipslots = (opswitch & 0x10) ? 1 : 0; |
112 | 112 | return true; |
r241749 | r241750 | |
122 | 122 | desc.regin[0] |= REGFLAG_R(RSREG); |
123 | 123 | desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH; |
124 | 124 | } |
125 | desc.targetpc = desc.pc + 4 + SIMMVAL | |
125 | desc.targetpc = desc.pc + 4 + (SIMMVAL << 2); | |
126 | 126 | desc.delayslots = 1; |
127 | 127 | desc.skipslots = (opswitch & 0x10) ? 1 : 0; |
128 | 128 | return true; |
r241749 | r241750 | |
396 | 396 | desc.regin[0] |= REGFLAG_R(RSREG); |
397 | 397 | desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH; |
398 | 398 | } |
399 | desc.targetpc = desc.pc + 4 + SIMMVAL | |
399 | desc.targetpc = desc.pc + 4 + (SIMMVAL << 2); | |
400 | 400 | desc.delayslots = 1; |
401 | 401 | desc.skipslots = (RTREG & 0x02) ? 1 : 0; |
402 | 402 | return true; |
r241749 | r241750 | |
423 | 423 | desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH; |
424 | 424 | } |
425 | 425 | desc.regout[0] |= REGFLAG_R(31); |
426 | desc.targetpc = desc.pc + 4 + SIMMVAL | |
426 | desc.targetpc = desc.pc + 4 + (SIMMVAL << 2); | |
427 | 427 | desc.delayslots = 1; |
428 | 428 | desc.skipslots = (RTREG & 0x02) ? 1 : 0; |
429 | 429 | return true; |
r241749 | r241750 | |
508 | 508 | case 0x00: // BCzF |
509 | 509 | case 0x01: // BCzT |
510 | 510 | desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH; |
511 | desc.targetpc = desc.pc + 4 + SIMMVAL | |
511 | desc.targetpc = desc.pc + 4 + (SIMMVAL << 2); | |
512 | 512 | desc.delayslots = 1; |
513 | 513 | return true; |
514 | 514 | } |
r241749 | r241750 | |
580 | 580 | case 0x03: // BCzTL |
581 | 581 | desc.regin[2] |= REGFLAG_FCC; |
582 | 582 | desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH; |
583 | desc.targetpc = desc.pc + 4 + SIMMVAL | |
583 | desc.targetpc = desc.pc + 4 + (SIMMVAL << 2); | |
584 | 584 | desc.delayslots = 1; |
585 | 585 | desc.skipslots = (RTREG & 0x02) ? 1 : 0; |
586 | 586 | return true; |
r241749 | r241750 | |
730 | 730 | case 0x00: // BCzF |
731 | 731 | case 0x01: // BCzT |
732 | 732 | desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH; |
733 | desc.targetpc = desc.pc + 4 + SIMMVAL | |
733 | desc.targetpc = desc.pc + 4 + (SIMMVAL << 2); | |
734 | 734 | desc.delayslots = 1; |
735 | 735 | return true; |
736 | 736 | } |
r241749 | r241750 | |
---|---|---|
299 | 299 | void ccfunc_rsp_vabs_scalar(); |
300 | 300 | void ccfunc_rsp_vaddc_scalar(); |
301 | 301 | void ccfunc_rsp_vsubc_scalar(); |
302 | void ccfunc_rsp_vaddb_scalar(); | |
303 | 302 | void ccfunc_rsp_vsaw_scalar(); |
304 | 303 | void ccfunc_rsp_vlt_scalar(); |
305 | 304 | void ccfunc_rsp_veq_scalar(); |
r241749 | r241750 | |
326 | 325 | void ccfunc_mtc2_scalar(); |
327 | 326 | void ccfunc_ctc2_scalar(); |
328 | 327 | #endif |
329 | void ccfunc_rsp_vrsq_scalar(); | |
330 | 328 | #if USE_SIMD && SIMUL_SIMD |
331 | 329 | void ccfunc_backup_regs(); |
332 | 330 | void ccfunc_restore_regs(); |
r241749 | r241750 | |
543 | 541 | void generate_checksum_block(drcuml_block *block, compiler_state *compiler, const opcode_desc *seqhead, const opcode_desc *seqlast); |
544 | 542 | void generate_sequence_instruction(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc); |
545 | 543 | 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); | |
547 | 544 | int generate_vector_opcode(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc); |
548 | 545 | int generate_opcode(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc); |
549 | 546 | int generate_special(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc); |
r241749 | r241750 | |
---|---|---|
4686 | 4686 | INT32 s2 = (UINT32)(UINT16)w2; |
4687 | 4687 | INT32 r = s1 + s2; |
4688 | 4688 | |
4689 | vres[i] = (INT16) | |
4689 | vres[i] = (INT16)r; | |
4690 | 4690 | SET_ACCUM_L((INT16)r, i); |
4691 | 4691 | |
4692 | 4692 | if (r & 0xffff0000) |
r241749 | r241750 | |
4754 | 4754 | { |
4755 | 4755 | int op = m_rsp_state->arg0; |
4756 | 4756 | |
4757 | ||
4757 | 4758 | CLEAR_ZERO_FLAGS(); |
4758 | 4759 | CLEAR_CARRY_FLAGS(); |
4759 | 4760 | |
r241749 | r241750 | |
4788 | 4789 | } |
4789 | 4790 | #endif |
4790 | 4791 | |
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 | |
4799 | inline 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 | ||
4847 | static void cfunc_rsp_vaddb_scalar(void *param) | |
4848 | { | |
4849 | ((rsp_device *)param)->ccfunc_rsp_vaddb_scalar(); | |
4850 | } | |
4851 | ||
4852 | 4792 | #if USE_SIMD |
4853 | 4793 | // VSAW |
4854 | 4794 | // |
r241749 | r241750 | |
6378 | 6318 | |
6379 | 6319 | UINT16 urec; |
6380 | 6320 | SIMD_EXTRACT16(m_xv[VS2REG], urec, EL); |
6381 | INT32 rec = (INT16)urec; | |
6321 | INT32 rec = (urec | m_reciprocal_high); | |
6322 | ||
6382 | 6323 | INT32 datainput = rec; |
6383 | 6324 | |
6384 | if ( | |
6325 | if (rec < 0) | |
6385 | 6326 | { |
6386 | rec = (rec & 0x0000ffff) | m_reciprocal_high; | |
6387 | datainput = rec; | |
6388 | ||
6389 | if (rec < 0) | |
6327 | if (m_dp_allowed) | |
6390 | 6328 | { |
6391 | 6329 | if (rec < -32768) |
6392 | 6330 | { |
r241749 | r241750 | |
6397 | 6335 | datainput = -datainput; |
6398 | 6336 | } |
6399 | 6337 | } |
6338 | else | |
6339 | { | |
6340 | datainput = -datainput; | |
6341 | } | |
6400 | 6342 | } |
6401 | else if (datainput < 0) | |
6402 | { | |
6403 | datainput = -datainput; | |
6404 | 6343 | |
6405 | shifter = 0x10; | |
6406 | } | |
6407 | 6344 | |
6408 | 6345 | if (datainput) |
6409 | 6346 | { |
r241749 | r241750 | |
6416 | 6353 | } |
6417 | 6354 | } |
6418 | 6355 | } |
6356 | else | |
6357 | { | |
6358 | if (m_dp_allowed) | |
6359 | { | |
6360 | shifter = 0; | |
6361 | } | |
6362 | else | |
6363 | { | |
6364 | shifter = 0x10; | |
6365 | } | |
6366 | } | |
6419 | 6367 | |
6420 | 6368 | INT32 address = ((datainput << shifter) & 0x7fc00000) >> 22; |
6421 | 6369 | INT32 fetchval = rsp_divtable[address]; |
6422 | 6370 | INT32 temp = (0x40000000 | (fetchval << 14)) >> ((~shifter) & 0x1f); |
6423 | temp ^= rec >> 31; | |
6424 | ||
6371 | if (rec < 0) | |
6372 | { | |
6373 | temp = ~temp; | |
6374 | } | |
6425 | 6375 | if (!rec) |
6426 | 6376 | { |
6427 | 6377 | temp = 0x7fffffff; |
r241749 | r241750 | |
6458 | 6408 | int op = m_rsp_state->arg0; |
6459 | 6409 | |
6460 | 6410 | INT32 shifter = 0; |
6461 | INT32 rec = (INT16)VREG_S(VS2REG, EL & 7); | |
6411 | INT32 rec = ((UINT16)(VREG_S(VS2REG, EL & 7)) | m_reciprocal_high); | |
6462 | 6412 | INT32 datainput = rec; |
6463 | 6413 | |
6464 | if ( | |
6414 | if (rec < 0) | |
6465 | 6415 | { |
6466 | rec = (rec & 0x0000ffff) | m_reciprocal_high; | |
6467 | datainput = rec; | |
6468 | ||
6469 | if (rec < 0) | |
6416 | if (m_dp_allowed) | |
6470 | 6417 | { |
6471 | 6418 | if (rec < -32768) |
6472 | 6419 | { |
r241749 | r241750 | |
6477 | 6424 | datainput = -datainput; |
6478 | 6425 | } |
6479 | 6426 | } |
6427 | else | |
6428 | { | |
6429 | datainput = -datainput; | |
6430 | } | |
6480 | 6431 | } |
6481 | else if (datainput < 0) | |
6482 | { | |
6483 | datainput = -datainput; | |
6484 | 6432 | |
6485 | shifter = 0x10; | |
6486 | } | |
6487 | 6433 | |
6488 | 6434 | if (datainput) |
6489 | 6435 | { |
r241749 | r241750 | |
6496 | 6442 | } |
6497 | 6443 | } |
6498 | 6444 | } |
6445 | else | |
6446 | { | |
6447 | if (m_dp_allowed) | |
6448 | { | |
6449 | shifter = 0; | |
6450 | } | |
6451 | else | |
6452 | { | |
6453 | shifter = 0x10; | |
6454 | } | |
6455 | } | |
6499 | 6456 | |
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]; | |
6502 | 6459 | INT32 temp = (0x40000000 | (fetchval << 14)) >> ((~shifter) & 0x1f); |
6503 | temp ^= rec >> 31; | |
6460 | if (rec < 0) | |
6461 | { | |
6462 | temp = ~temp; | |
6463 | } | |
6504 | 6464 | if (!rec) |
6505 | 6465 | { |
6506 | 6466 | temp = 0x7fffffff; |
r241749 | r241750 | |
6632 | 6592 | } |
6633 | 6593 | #endif |
6634 | 6594 | |
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 | ||
6644 | inline 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 | ||
6760 | static void cfunc_rsp_vrsq_scalar(void *param) | |
6761 | { | |
6762 | ((rsp_device *)param)->ccfunc_rsp_vrsq_scalar(); | |
6763 | } | |
6764 | ||
6765 | 6595 | #if USE_SIMD |
6766 | 6596 | // VRSQL |
6767 | 6597 | // |
r241749 | r241750 | |
6785 | 6615 | INT32 shifter = 0; |
6786 | 6616 | UINT16 val; |
6787 | 6617 | SIMD_EXTRACT16(m_xv[VS2REG], val, EL); |
6788 | INT32 rec = | |
6618 | INT32 rec = m_reciprocal_high | val; | |
6789 | 6619 | INT32 datainput = rec; |
6790 | 6620 | |
6791 | if ( | |
6621 | if (rec < 0) | |
6792 | 6622 | { |
6793 | rec = (rec & 0x0000ffff) | m_reciprocal_high; | |
6794 | datainput = rec; | |
6795 | ||
6796 | if (rec < 0) | |
6623 | if (m_dp_allowed) | |
6797 | 6624 | { |
6798 | 6625 | if (rec < -32768) |
6799 | 6626 | { |
r241749 | r241750 | |
6804 | 6631 | datainput = -datainput; |
6805 | 6632 | } |
6806 | 6633 | } |
6634 | else | |
6635 | { | |
6636 | datainput = -datainput; | |
6637 | } | |
6807 | 6638 | } |
6808 | else if (datainput < 0) | |
6809 | { | |
6810 | datainput = -datainput; | |
6811 | 6639 | |
6812 | shifter = 0x10; | |
6813 | } | |
6814 | ||
6815 | 6640 | if (datainput) |
6816 | 6641 | { |
6817 | 6642 | for (int i = 0; i < 32; i++) |
r241749 | r241750 | |
6823 | 6648 | } |
6824 | 6649 | } |
6825 | 6650 | } |
6651 | else | |
6652 | { | |
6653 | if (m_dp_allowed) | |
6654 | { | |
6655 | shifter = 0; | |
6656 | } | |
6657 | else | |
6658 | { | |
6659 | shifter = 0x10; | |
6660 | } | |
6661 | } | |
6826 | 6662 | |
6827 | 6663 | INT32 address = ((datainput << shifter) & 0x7fc00000) >> 22; |
6828 | 6664 | address = ((address | 0x200) & 0x3fe) | (shifter & 1); |
6829 | 6665 | |
6830 | 6666 | INT32 fetchval = rsp_divtable[address]; |
6831 | 6667 | INT32 temp = (0x40000000 | (fetchval << 14)) >> (((~shifter) & 0x1f) >> 1); |
6832 | temp ^= rec >> 31; | |
6833 | ||
6668 | if (rec < 0) | |
6669 | { | |
6670 | temp = ~temp; | |
6671 | } | |
6834 | 6672 | if (!rec) |
6835 | 6673 | { |
6836 | 6674 | temp = 0x7fffffff; |
r241749 | r241750 | |
6861 | 6699 | int op = m_rsp_state->arg0; |
6862 | 6700 | |
6863 | 6701 | INT32 shifter = 0; |
6864 | INT32 rec = (INT16)VREG_S(VS2REG, EL & 7); | |
6702 | INT32 rec = m_reciprocal_high | (UINT16)VREG_S(VS2REG, EL & 7); | |
6865 | 6703 | INT32 datainput = rec; |
6866 | 6704 | |
6867 | if ( | |
6705 | if (rec < 0) | |
6868 | 6706 | { |
6869 | rec = (rec & 0x0000ffff) | m_reciprocal_high; | |
6870 | datainput = rec; | |
6871 | ||
6872 | if (rec < 0) | |
6707 | if (m_dp_allowed) | |
6873 | 6708 | { |
6874 | 6709 | if (rec < -32768) |
6875 | 6710 | { |
r241749 | r241750 | |
6880 | 6715 | datainput = -datainput; |
6881 | 6716 | } |
6882 | 6717 | } |
6718 | else | |
6719 | { | |
6720 | datainput = -datainput; | |
6721 | } | |
6883 | 6722 | } |
6884 | else if (datainput < 0) | |
6885 | { | |
6886 | datainput = -datainput; | |
6887 | 6723 | |
6888 | shifter = 0x10; | |
6889 | } | |
6890 | ||
6891 | 6724 | if (datainput) |
6892 | 6725 | { |
6893 | 6726 | for (int i = 0; i < 32; i++) |
r241749 | r241750 | |
6899 | 6732 | } |
6900 | 6733 | } |
6901 | 6734 | } |
6735 | else | |
6736 | { | |
6737 | if (m_dp_allowed) | |
6738 | { | |
6739 | shifter = 0; | |
6740 | } | |
6741 | else | |
6742 | { | |
6743 | shifter = 0x10; | |
6744 | } | |
6745 | } | |
6902 | 6746 | |
6903 | 6747 | INT32 address = ((datainput << shifter) & 0x7fc00000) >> 22; |
6904 | 6748 | address = ((address | 0x200) & 0x3fe) | (shifter & 1); |
6905 | 6749 | |
6906 | 6750 | INT32 fetchval = rsp_divtable[address]; |
6907 | 6751 | INT32 temp = (0x40000000 | (fetchval << 14)) >> (((~shifter) & 0x1f) >> 1); |
6908 | temp ^= rec >> 31; | |
6909 | ||
6752 | if (rec < 0) | |
6753 | { | |
6754 | temp = ~temp; | |
6755 | } | |
6910 | 6756 | if (!rec) |
6911 | 6757 | { |
6912 | 6758 | temp = 0x7fffffff; |
r241749 | r241750 | |
7515 | 7361 | } |
7516 | 7362 | |
7517 | 7363 | /*------------------------------------------------------------------ |
7518 | generate_branch | |
7519 | ------------------------------------------------------------------*/ | |
7520 | ||
7521 | void 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 | /*------------------------------------------------------------------ | |
7542 | 7364 | generate_delay_slot_and_branch |
7543 | 7365 | ------------------------------------------------------------------*/ |
7544 | 7366 | |
r241749 | r241750 | |
7564 | 7386 | assert(desc->delay.first() != NULL); |
7565 | 7387 | generate_sequence_instruction(block, &compiler_temp, desc->delay.first()); // <next instruction> |
7566 | 7388 | |
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 | } | |
7568 | 7406 | |
7569 | 7407 | /* update the label */ |
7570 | 7408 | compiler->labelnum = compiler_temp.labelnum; |
r241749 | r241750 | |
7780 | 7618 | #endif |
7781 | 7619 | return TRUE; |
7782 | 7620 | |
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 | ||
7803 | 7621 | case 0x1d: /* VSAW */ |
7804 | 7622 | UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l |
7805 | 7623 | UML_CALLC(block, cfunc_rsp_vsaw_simd, this); |
r241749 | r241750 | |
8009 | 7827 | #endif |
8010 | 7828 | return TRUE; |
8011 | 7829 | |
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 | ||
8017 | 7830 | case 0x35: /* VRSQL */ |
8018 | 7831 | UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l |
8019 | 7832 | UML_CALLC(block, cfunc_rsp_vrsql_simd, this); |
r241749 | r241750 | |
8036 | 7849 | #endif |
8037 | 7850 | return TRUE; |
8038 | 7851 | |
8039 | case 0x37: /* VNOP */ | |
8040 | case 0x3F: /* VNULL */ | |
8041 | return TRUE; | |
8042 | ||
8043 | 7852 | default: |
8044 | 7853 | UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l |
8045 | 7854 | UML_CALLC(block, cfunc_unimplemented_opcode, this); |
r241749 | r241750 | |
8145 | 7954 | UML_CALLC(block, cfunc_rsp_vsubc_scalar, this); |
8146 | 7955 | return TRUE; |
8147 | 7956 | |
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 | ||
8168 | 7957 | case 0x1d: /* VSAW */ |
8169 | 7958 | UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l |
8170 | 7959 | UML_CALLC(block, cfunc_rsp_vsaw_scalar, this); |
r241749 | r241750 | |
8260 | 8049 | UML_CALLC(block, cfunc_rsp_vmov_scalar, this); |
8261 | 8050 | return TRUE; |
8262 | 8051 | |
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 | ||
8268 | 8052 | case 0x35: /* VRSQL */ |
8269 | 8053 | UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l |
8270 | 8054 | UML_CALLC(block, cfunc_rsp_vrsql_scalar, this); |
r241749 | r241750 | |
8275 | 8059 | UML_CALLC(block, cfunc_rsp_vrsqh_scalar, this); |
8276 | 8060 | return TRUE; |
8277 | 8061 | |
8278 | case 0x37: /* VNOP */ | |
8279 | case 0x3F: /* VNULL */ | |
8280 | return TRUE; | |
8281 | ||
8282 | 8062 | default: |
8283 | 8063 | UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l |
8284 | 8064 | UML_CALLC(block, cfunc_unimplemented_opcode, this); |
r241749 | r241750 | |
8641 | 8421 | UML_MOV(block, mem(&m_rsp_state->arg0), 3); // mov [arg0],3 |
8642 | 8422 | UML_CALLC(block, cfunc_sp_set_status_cb, this); // callc cfunc_sp_set_status_cb |
8643 | 8423 | UML_MOV(block, mem(&m_rsp_state->icount), 0); // mov icount, #0 |
8644 | UML_MOV(block, mem(&m_rsp_state->jmpdest), desc->targetpc); | |
8645 | 8424 | |
8646 | generate_branch(block, compiler, desc); | |
8647 | ||
8648 | 8425 | UML_EXIT(block, EXECUTE_OUT_OF_CYCLES); |
8649 | 8426 | return TRUE; |
8650 | 8427 | } |
r241749 | r241750 | |
---|---|---|
83 | 83 | desc.regin[0] |= REGFLAG_R(RSREG) | REGFLAG_R(RTREG); |
84 | 84 | desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH; |
85 | 85 | } |
86 | desc.targetpc = ((desc.pc + 4 + SIMMVAL | |
86 | desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000; | |
87 | 87 | desc.delayslots = 1; |
88 | 88 | desc.skipslots = (opswitch & 0x10) ? 1 : 0; |
89 | 89 | return true; |
r241749 | r241750 | |
97 | 97 | desc.regin[0] |= REGFLAG_R(RSREG); |
98 | 98 | desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH; |
99 | 99 | } |
100 | desc.targetpc = ((desc.pc + 4 + SIMMVAL | |
100 | desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000; | |
101 | 101 | desc.delayslots = 1; |
102 | 102 | desc.skipslots = (opswitch & 0x10) ? 1 : 0; |
103 | 103 | return true; |
r241749 | r241750 | |
207 | 207 | return true; |
208 | 208 | |
209 | 209 | 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; | |
212 | 212 | return true; |
213 | 213 | } |
214 | 214 | |
r241749 | r241750 | |
234 | 234 | desc.regin[0] |= REGFLAG_R(RSREG); |
235 | 235 | desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH; |
236 | 236 | } |
237 | desc.targetpc = ((desc.pc + 4 + SIMMVAL | |
237 | desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000; | |
238 | 238 | desc.delayslots = 1; |
239 | 239 | desc.skipslots = (RTREG & 0x02) ? 1 : 0; |
240 | 240 | return true; |
r241749 | r241750 | |
249 | 249 | desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH; |
250 | 250 | } |
251 | 251 | desc.regout[0] |= REGFLAG_R(31); |
252 | desc.targetpc = ((desc.pc + 4 + SIMMVAL | |
252 | desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000; | |
253 | 253 | desc.delayslots = 1; |
254 | 254 | desc.skipslots = (RTREG & 0x02) ? 1 : 0; |
255 | 255 | return true; |
r241749 | r241750 | |
---|---|---|
123 | 123 | #include "debugger.h" |
124 | 124 | #include "tms0980.h" |
125 | 125 | |
126 | #define LOG 0 | |
126 | 127 | |
127 | 128 | |
128 | 129 | const device_type TMS0980 = &device_creator<tms0980_cpu_device>; |
r241749 | r241750 | |
235 | 236 | #define I_YNEC ( MICRO_MASK | M_YTP | M_CKN | M_NE ) |
236 | 237 | |
237 | 238 | |
238 | static const UINT8 tms0980_c2_value[4] = { 0, 2, 1, 3 }; | |
239 | static const UINT8 tms0980_c3_value[8] = { 0, 4, 2, 6, 1, 5, 3, 7 }; | |
240 | static const UINT8 tms0980_c4_value[16] = { 0x0, 0x8, 0x4, 0xC, 0x2, 0xA, 0x6, 0xE, 0x1, 0x9, 0x5, 0xD, 0x3, 0xB, 0x7, 0xF }; | |
239 | static const UINT8 tms0980_c2_value[4] = | |
240 | { | |
241 | 0x00, 0x02, 0x01, 0x03 | |
242 | }; | |
243 | static const UINT8 tms0980_c3_value[8] = | |
244 | { | |
245 | 0x00, 0x04, 0x02, 0x06, 0x01, 0x05, 0x03, 0x07 | |
246 | }; | |
247 | static 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 | }; | |
241 | 251 | static const UINT8 tms0980_bit_value[4] = { 1, 4, 2, 8 }; |
242 | static const UINT8 tms0980_nbit_value[4] = { 0xE, 0xB, 0xD, 0x7 }; | |
252 | static const UINT8 tms0980_nbit_value[4] = { 0x0E, 0x0B, 0x0D, 0x07 }; | |
243 | 253 | |
244 | 254 | |
245 | 255 | static const UINT32 tms0980_decode[512] = |
r241749 | r241750 | |
319 | 329 | }; |
320 | 330 | |
321 | 331 | |
322 | static const UINT32 tms1000_default_decode[256] = | |
323 | { | |
332 | static const UINT32 tms1000_default_decode[256] = { | |
324 | 333 | /* 0x00 */ |
325 | 334 | F_COMX, I_A8AAC, I_YNEA, I_TAM, I_TAMZA, I_A10AAC, I_A6AAC, I_DAN, |
326 | 335 | I_TKA, I_KNEZ, F_TDO, F_CLO, F_RSTR, F_SETR, I_IA, F_RETN, |
r241749 | r241750 | |
362 | 371 | }; |
363 | 372 | |
364 | 373 | |
365 | static const UINT32 tms1100_default_decode[256] = | |
366 | { | |
374 | static const UINT32 tms1100_default_decode[256] = { | |
367 | 375 | /* 0x00 */ |
368 | 376 | I_MNEA, I_ALEM, I_YNEA, I_XMA, I_DYN, I_IYC, I_AMAAC, I_DMAN, |
369 | 377 | I_TKA, F_COMX, F_TDO, F_COMC, F_RSTR, F_SETR, I_KNEZ, F_RETN, |
r241749 | r241750 | |
496 | 504 | |
497 | 505 | void tms1xxx_cpu_device::device_reset() |
498 | 506 | { |
499 | m_pa = 0xF; | |
500 | m_pb = 0xF; | |
507 | m_pa = 0x0F; | |
508 | m_pb = 0x0F; | |
501 | 509 | m_pc = 0; |
502 | 510 | m_dam = 0; |
503 | 511 | m_ca = 0; |
r241749 | r241750 | |
612 | 620 | ( pc{5:4} == 11 && pc{0} == 1 ) => 10 |
613 | 621 | |
614 | 622 | */ |
615 | static const UINT8 tms1000_next_pc[64] = | |
616 | { | |
623 | static const UINT8 tms1000_next_pc[64] = { | |
617 | 624 | 0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F, |
618 | 625 | 0x20, 0x22, 0x24, 0x26, 0x28, 0x2A, 0x2C, 0x2E, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3A, 0x3C, 0x3F, |
619 | 626 | 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E, |
r241749 | r241750 | |
704 | 711 | { |
705 | 712 | do |
706 | 713 | { |
714 | // debugger_instruction_hook( this, ( ( m_pa << m_pc_size ) | m_pc ) << 1 ); | |
707 | 715 | m_icount--; |
708 | 716 | switch( m_subcycle ) |
709 | 717 | { |
r241749 | r241750 | |
803 | 811 | } |
804 | 812 | if ( m_decode & M_STO ) |
805 | 813 | { |
814 | //printf("write ram %02x data %01x\n", m_ram_address, m_a ); | |
806 | 815 | m_data->write_byte( m_ram_address, m_a ); |
807 | 816 | } |
808 | 817 | if ( m_decode & M_CKM ) |
809 | 818 | { |
819 | //printf("write ram %02x data %01x\n", m_ram_address, m_cki_bus ); | |
810 | 820 | m_data->write_byte( m_ram_address, m_cki_bus ); |
811 | 821 | } |
812 | 822 | } |
r241749 | r241750 | |
814 | 824 | { |
815 | 825 | if ( m_decode & F_SBIT ) |
816 | 826 | { |
827 | //printf("write ram %02x data %01x\n", m_ram_address, m_ram_data | tms0980_bit_value[ m_opcode & 0x03 ] ); | |
817 | 828 | m_data->write_byte( m_ram_address, m_ram_data | tms0980_bit_value[ m_opcode & 0x03 ] ); |
818 | 829 | } |
819 | 830 | if ( m_decode & F_RBIT ) |
820 | 831 | { |
832 | //printf("write ram %02x data %01x\n", m_ram_address, m_ram_data & tms0980_nbit_value[ m_opcode & 0x03 ] ); | |
821 | 833 | m_data->write_byte( m_ram_address, m_ram_data & tms0980_nbit_value[ m_opcode & 0x03 ] ); |
822 | 834 | } |
823 | 835 | if ( m_decode & F_SETR ) |
r241749 | r241750 | |
838 | 850 | { |
839 | 851 | logerror("unknown output pla mapping for status latch = %d and a = %X\n", m_status_latch, m_a); |
840 | 852 | } |
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); | |
841 | 857 | |
842 | 858 | m_write_o( 0, m_o & m_o_mask, 0xffff ); |
843 | 859 | } |
r241749 | r241750 | |
935 | 951 | m_opcode = m_program->read_byte( m_rom_address ); |
936 | 952 | } |
937 | 953 | 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 ); | |
938 | 956 | |
939 | 957 | /* ram address */ |
940 | 958 | m_ram_address = ( m_x << 4 ) | m_y; |
r241749 | r241750 | |
---|---|---|
23 | 23 | tms57002_device::tms57002_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
24 | 24 | : cpu_device(mconfig, TMS57002, "TMS57002", tag, owner, clock, "tms57002", __FILE__), |
25 | 25 | device_sound_interface(mconfig, *this), |
26 | txrd(0), | |
27 | 26 | program_config("program", ENDIANNESS_LITTLE, 32, 8, -2, ADDRESS_MAP_NAME(internal_pgm)), |
28 | 27 | data_config("data", ENDIANNESS_LITTLE, 8, 20) |
29 | 28 | { |
r241749 | r241750 | |
---|---|---|
567 | 567 | data = (data & ~0x02) | (m_rxd & 1 ? 0x02 : 0x00); |
568 | 568 | if (m_mcc & 0x04) /* PC2 = SCK input/output */ |
569 | 569 | 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); | |
572 | 572 | if (m_mcc & 0x10) /* PC4 = TO output */ |
573 | 573 | data = (data & ~0x10) | (m_to & 1 ? 0x10 : 0x00); |
574 | 574 | if (m_mcc & 0x20) /* PC5 = CI input */ |
r241749 | r241750 | |
648 | 648 | data = (data & ~0x02) | (m_rxd & 1 ? 0x02 : 0x00); |
649 | 649 | if (m_mcc & 0x04) /* PC2 = SCK input/output */ |
650 | 650 | 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); | |
653 | 653 | if (m_mcc & 0x10) /* PC4 = TO output */ |
654 | 654 | data = (data & ~0x10) | (m_to & 1 ? 0x10 : 0x00); |
655 | 655 | if (m_mcc & 0x20) /* PC5 = CI input */ |
r241749 | r241750 | |
709 | 709 | return; |
710 | 710 | |
711 | 711 | /* 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 | |
720 | 712 | if ((IRR & INTFT0) && 0 == (MKL & 0x02)) |
721 | 713 | { |
722 | 714 | vector = 0x0008; |
r241749 | r241750 | |
1182 | 1174 | } |
1183 | 1175 | } |
1184 | 1176 | |
1185 | void upd7810_device:: | |
1177 | void upd7810_device::handle_timers(int cycles) | |
1186 | 1178 | { |
1187 | OVC0 += cycles; | |
1188 | while (OVC0 >= clkdiv) | |
1179 | /**** TIMER 0 ****/ | |
1180 | if (TMM & 0x10) /* timer 0 upcounter reset ? */ | |
1181 | CNT0 = 0; | |
1182 | else | |
1189 | 1183 | { |
1190 | OVC0 -= clkdiv; | |
1191 | CNT0++; | |
1192 | if (CNT0 == TM0) | |
1184 | switch (TMM & 0x0c) /* timer 0 clock source */ | |
1193 | 1185 | { |
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) | |
1198 | 1189 | { |
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 | } | |
1201 | 1219 | } |
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) | |
1204 | 1224 | { |
1205 | CNT1++; | |
1206 | if (CNT1 == TM1) | |
1225 | OVC0 -= 384; | |
1226 | CNT0++; | |
1227 | if (CNT0 == TM0) | |
1207 | 1228 | { |
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)) | |
1212 | 1233 | { |
1213 | 1234 | TO ^= 1; |
1214 | 1235 | m_to_func(TO); |
1215 | 1236 | } |
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 | } | |
1216 | 1253 | } |
1217 | 1254 | } |
1218 | } | |
1219 | } | |
1220 | } | |
1221 | ||
1222 | void 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 | ||
1243 | void 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); | |
1254 | 1255 | break; |
1255 | case 0x04: /* clock divided by 384 */ | |
1256 | upd7810_handle_timer0(cycles, 384); | |
1257 | break; | |
1258 | 1256 | case 0x08: /* external signal at TI */ |
1259 | 1257 | break; |
1260 | 1258 | case 0x0c: /* disabled */ |
r241749 | r241750 | |
1270 | 1268 | switch (TMM & 0x60) /* timer 1 clock source */ |
1271 | 1269 | { |
1272 | 1270 | 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 | } | |
1274 | 1288 | break; |
1275 | 1289 | 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 | } | |
1277 | 1307 | break; |
1278 | 1308 | case 0x40: /* external signal at TI */ |
1279 | 1309 | break; |
r241749 | r241750 | |
1308 | 1338 | { |
1309 | 1339 | OVCE -= 12; |
1310 | 1340 | 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 */ | |
1317 | 1341 | switch (ETMM & 0x0c) |
1318 | 1342 | { |
1319 | 1343 | case 0x00: /* clear ECNT */ |
r241749 | r241750 | |
1329 | 1353 | ECNT = 0; |
1330 | 1354 | break; |
1331 | 1355 | } |
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) | |
1337 | 1357 | { |
1338 | switch (EOM & 0x0e) | |
1358 | case 0x00: /* set CO0 if ECNT == ETM0 */ | |
1359 | if (ETM0 == ECNT) | |
1339 | 1360 | { |
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 | } | |
1349 | 1373 | } |
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; | |
1350 | 1411 | } |
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) | |
1356 | 1413 | { |
1357 | switch (EOM & 0xe0) | |
1414 | case 0x00: /* lacth CO1 if ECNT == ETM1 */ | |
1415 | if (ETM1 == ECNT) | |
1358 | 1416 | { |
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 | } | |
1368 | 1429 | } |
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; | |
1369 | 1467 | } |
1370 | 1468 | } |
1371 | 1469 | } |
r241749 | r241750 | |
1410 | 1508 | else |
1411 | 1509 | m_adtot = 192; |
1412 | 1510 | m_adout = 0; |
1413 | m_shdone = 0; | |
1414 | 1511 | if (ANM & 0x01) |
1415 | 1512 | { |
1416 | 1513 | /* select mode */ |
r241749 | r241750 | |
1427 | 1524 | if (ANM & 0x01) |
1428 | 1525 | { |
1429 | 1526 | /* select mode */ |
1430 | i | |
1527 | while (m_adcnt > m_adtot) | |
1431 | 1528 | { |
1529 | UINT8 cr = 0; | |
1530 | m_adcnt -= m_adtot; | |
1432 | 1531 | switch (m_adin) |
1433 | 1532 | { |
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; | |
1442 | 1541 | } |
1443 | m_shdone = 1; | |
1444 | } | |
1445 | if (m_adcnt > m_adtot) | |
1446 | { | |
1447 | m_adcnt -= m_adtot; | |
1448 | 1542 | switch (m_adout) |
1449 | 1543 | { |
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; | |
1454 | 1548 | } |
1455 | m_adout = (m_adout + 1) & 0x0 | |
1549 | m_adout = (m_adout + 1) & 0x07; | |
1456 | 1550 | if (m_adout == 0) |
1457 | 1551 | IRR |= INTFAD; |
1458 | m_shdone = 0; | |
1459 | 1552 | } |
1460 | 1553 | } |
1461 | 1554 | else |
1462 | 1555 | { |
1463 | 1556 | /* scan mode */ |
1464 | i | |
1557 | while (m_adcnt > m_adtot) | |
1465 | 1558 | { |
1559 | UINT8 cr = 0; | |
1560 | m_adcnt -= m_adtot; | |
1466 | 1561 | switch (m_adin | m_adrange) |
1467 | 1562 | { |
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; | |
1476 | 1571 | } |
1477 | m_shdone = 1; | |
1478 | } | |
1479 | if (m_adcnt > m_adtot) | |
1480 | { | |
1481 | m_adcnt -= m_adtot; | |
1482 | 1572 | switch (m_adout) |
1483 | 1573 | { |
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; | |
1488 | 1578 | } |
1489 | 1579 | m_adin = (m_adin + 1) & 0x07; |
1490 | m_adout = (m_adout + 1) & 0x0 | |
1580 | m_adout = (m_adout + 1) & 0x07; | |
1491 | 1581 | if (m_adout == 0) |
1492 | 1582 | IRR |= INTFAD; |
1493 | m_shdone = 0; | |
1494 | 1583 | } |
1495 | 1584 | } |
1496 | 1585 | |
r241749 | r241750 | |
1616 | 1705 | save_item(NAME(m_ovcf)); |
1617 | 1706 | save_item(NAME(m_ovcs)); |
1618 | 1707 | save_item(NAME(m_edges)); |
1619 | save_item(NAME(m_nmi)); | |
1620 | 1708 | save_item(NAME(m_int1)); |
1621 | 1709 | save_item(NAME(m_int2)); |
1622 | 1710 | |
r241749 | r241750 | |
1798 | 1886 | m_co1 = 0; |
1799 | 1887 | m_irr = 0; |
1800 | 1888 | m_itf = 0; |
1801 | m_nmi = 0; | |
1802 | 1889 | m_int1 = 0; |
1803 | 1890 | m_int2 = 0; |
1804 | 1891 | |
r241749 | r241750 | |
1815 | 1902 | m_edges = 0; |
1816 | 1903 | m_adcnt = 0; |
1817 | 1904 | m_adtot = 0; |
1818 | m_tmpcr = 0; | |
1819 | m_shdone = 0; | |
1820 | 1905 | m_adout = 0; |
1821 | 1906 | m_adin = 0; |
1822 | 1907 | m_adrange = 0; |
r241749 | r241750 | |
1972 | 2057 | |
1973 | 2058 | void upd7810_device::execute_set_input(int irqline, int state) |
1974 | 2059 | { |
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) | |
1986 | 2081 | 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 ) ) | |
1993 | 2084 | 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); | |
2000 | 2091 | } |
2001 | 2092 | /* resetting interrupt requests is done with the SKIT/SKNIT opcodes only! */ |
2002 | 2093 | } |
r241749 | r241750 | |
---|---|---|
169 | 169 | virtual void handle_timers(int cycles); |
170 | 170 | virtual void upd7810_take_irq(); |
171 | 171 | |
172 | void upd7810_handle_timer0(int cycles, int clkdiv); | |
173 | void upd7810_handle_timer1(int cycles, int clkdiv); | |
174 | ||
175 | 172 | devcb_write_line m_to_func; |
176 | 173 | devcb_write_line m_txd_func; |
177 | 174 | 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; | |
186 | 183 | |
187 | 184 | typedef void (upd7810_device::*opcode_func)(); |
188 | 185 | |
r241749 | r241750 | |
294 | 291 | UINT8 m_co1; |
295 | 292 | UINT16 m_irr; /* interrupt request register */ |
296 | 293 | 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. */ | |
300 | 296 | |
301 | 297 | /* internal helper variables */ |
302 | 298 | UINT16 m_txs; /* transmitter shift register */ |
r241749 | r241750 | |
312 | 308 | UINT8 m_edges; /* rising/falling edge flag for serial I/O */ |
313 | 309 | UINT16 m_adcnt; /* A/D converter cycle count */ |
314 | 310 | 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 */ | |
317 | 311 | int m_adout; /* currently selected A/D converter output register */ |
318 | 312 | int m_adin; /* currently selected A/D converter input */ |
319 | 313 | int m_adrange;/* in scan mode, A/D converter range (AN0-AN3 or AN4-AN7) */ |
r241749 | r241750 | |
---|---|---|
133 | 133 | XTAL_14_7456MHz = 14745600, /* Namco System 12 & System Super 22/23 for JVS */ |
134 | 134 | XTAL_15MHz = 15000000, /* Sinclair QL, Amusco Poker */ |
135 | 135 | XTAL_15_36MHz = 15360000, /* Visual 1050 */ |
136 | XTAL_15_4MHz = 15400000, /* DVK KSM */ | |
137 | 136 | XTAL_15_468MHz = 15468480, /* Bank Panic h/w, Sega G80 */ |
138 | 137 | XTAL_15_8976MHz = 15897600, /* IAI Swyft */ |
139 | 138 | XTAL_16MHz = 16000000, /* Extremely common, used on 100's of PCBs */ |
r241749 | r241750 | |
---|---|---|
202 | 202 | ide_hdd_device::process_buffer(); |
203 | 203 | } |
204 | 204 | } |
205 | ||
206 | attotime ata_flash_pccard_device::seek_time() | |
207 | { | |
208 | return attotime::zero; | |
209 | } |
r241749 | r241750 | |
---|---|---|
26 | 26 | virtual void device_start(); |
27 | 27 | virtual void device_reset(); |
28 | 28 | |
29 | virtual attotime seek_time(); | |
30 | 29 | virtual void process_command(); |
31 | 30 | virtual void process_buffer(); |
32 | 31 | virtual bool is_ready(); |
r241749 | r241750 | |
---|---|---|
1 | #include "i6300esb.h" | |
2 | ||
3 | const device_type I6300ESB_WATCHDOG = &device_creator<i6300esb_watchdog_device>; | |
4 | const device_type I6300ESB_LPC = &device_creator<i6300esb_lpc_device>; | |
5 | ||
6 | DEVICE_ADDRESS_MAP_START(map, 32, i6300esb_watchdog_device) | |
7 | ADDRESS_MAP_END | |
8 | ||
9 | i6300esb_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 | ||
14 | void i6300esb_watchdog_device::device_start() | |
15 | { | |
16 | pci_device::device_start(); | |
17 | add_map(16, M_MEM, FUNC(i6300esb_watchdog_device::map)); | |
18 | } | |
19 | ||
20 | void i6300esb_watchdog_device::device_reset() | |
21 | { | |
22 | pci_device::device_reset(); | |
23 | } | |
24 | ||
25 | ||
26 | DEVICE_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) | |
34 | ADDRESS_MAP_END | |
35 | ||
36 | ||
37 | i6300esb_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 | ||
42 | void i6300esb_lpc_device::device_start() | |
43 | { | |
44 | pci_device::device_start(); | |
45 | } | |
46 | ||
47 | void 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 | ||
57 | READ32_MEMBER (i6300esb_lpc_device::gpio_base_r) | |
58 | { | |
59 | return gpio_base | 1; | |
60 | } | |
61 | ||
62 | WRITE32_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 | ||
69 | READ8_MEMBER (i6300esb_lpc_device::gpio_cntl_r) | |
70 | { | |
71 | return gpio_cntl; | |
72 | } | |
73 | ||
74 | WRITE8_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 | ||
80 | READ16_MEMBER (i6300esb_lpc_device::gen1_dec_r) | |
81 | { | |
82 | return gen1_dec; | |
83 | } | |
84 | ||
85 | WRITE16_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 | ||
91 | READ16_MEMBER (i6300esb_lpc_device::lpc_en_r) | |
92 | { | |
93 | return lpc_en; | |
94 | } | |
95 | ||
96 | WRITE16_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 | ||
102 | READ32_MEMBER (i6300esb_lpc_device::fwh_sel1_r) | |
103 | { | |
104 | return fwh_sel1; | |
105 | } | |
106 | ||
107 | WRITE32_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 | ||
113 | void 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 |
r241749 | r241750 | |
---|---|---|
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 | ||
14 | class i6300esb_lpc_device : public pci_device { | |
15 | public: | |
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 | ||
23 | protected: | |
24 | virtual void device_start(); | |
25 | virtual void device_reset(); | |
26 | ||
27 | private: | |
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 | ||
45 | class i6300esb_watchdog_device : public pci_device { | |
46 | public: | |
47 | i6300esb_watchdog_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
48 | ||
49 | protected: | |
50 | virtual void device_start(); | |
51 | virtual void device_reset(); | |
52 | ||
53 | private: | |
54 | DECLARE_ADDRESS_MAP(map, 32); | |
55 | }; | |
56 | ||
57 | extern const device_type I6300ESB_LPC; | |
58 | extern const device_type I6300ESB_WATCHDOG; | |
59 | ||
60 | #endif |
r241749 | r241750 | |
---|---|---|
1 | #include "i82541.h" | |
2 | ||
3 | const device_type I82541 = &device_creator<i82541_device>; | |
4 | ||
5 | DEVICE_ADDRESS_MAP_START(registers_map, 32, i82541_device) | |
6 | ADDRESS_MAP_END | |
7 | ||
8 | DEVICE_ADDRESS_MAP_START(flash_map, 32, i82541_device) | |
9 | ADDRESS_MAP_END | |
10 | ||
11 | DEVICE_ADDRESS_MAP_START(registers_io_map, 32, i82541_device) | |
12 | ADDRESS_MAP_END | |
13 | ||
14 | i82541_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 | ||
19 | void 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 | ||
27 | void i82541_device::device_reset() | |
28 | { | |
29 | pci_device::device_reset(); | |
30 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
11 | class i82541_device : public pci_device { | |
12 | public: | |
13 | i82541_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
14 | ||
15 | protected: | |
16 | virtual void device_start(); | |
17 | virtual void device_reset(); | |
18 | ||
19 | private: | |
20 | DECLARE_ADDRESS_MAP(registers_map, 32); | |
21 | DECLARE_ADDRESS_MAP(flash_map, 32); | |
22 | DECLARE_ADDRESS_MAP(registers_io_map, 32); | |
23 | }; | |
24 | ||
25 | extern const device_type I82541; | |
26 | ||
27 | #endif |
r241749 | r241750 | |
---|---|---|
1 | #include "i82875p.h" | |
2 | ||
3 | const device_type I82875P_HOST = &device_creator<i82875p_host_device>; | |
4 | const device_type I82875P_AGP = &device_creator<i82875p_agp_device>; | |
5 | ||
6 | DEVICE_ADDRESS_MAP_START(agp_translation_map, 32, i82875p_host_device) | |
7 | ADDRESS_MAP_END | |
8 | ||
9 | i82875p_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 | ||
14 | void i82875p_host_device::set_cpu_tag(const char *_cpu_tag) | |
15 | { | |
16 | cpu_tag = _cpu_tag; | |
17 | } | |
18 | ||
19 | void i82875p_host_device::set_ram_size(int _ram_size) | |
20 | { | |
21 | ram_size = _ram_size; | |
22 | } | |
23 | ||
24 | void 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 | ||
44 | void i82875p_host_device::device_reset() | |
45 | { | |
46 | pci_host_device::device_reset(); | |
47 | } | |
48 | ||
49 | void 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 | ||
58 | i82875p_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 | ||
63 | void i82875p_agp_device::device_start() | |
64 | { | |
65 | agp_bridge_device::device_start(); | |
66 | } | |
67 | ||
68 | void i82875p_agp_device::device_reset() | |
69 | { | |
70 | agp_bridge_device::device_reset(); | |
71 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
16 | class i82875p_host_device : public pci_host_device { | |
17 | public: | |
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 | ||
26 | protected: | |
27 | virtual void device_start(); | |
28 | virtual void device_reset(); | |
29 | ||
30 | private: | |
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 | ||
39 | class i82875p_agp_device : public agp_bridge_device { | |
40 | public: | |
41 | i82875p_agp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
42 | ||
43 | protected: | |
44 | virtual void device_start(); | |
45 | virtual void device_reset(); | |
46 | }; | |
47 | ||
48 | extern const device_type I82875P_HOST; | |
49 | extern const device_type I82875P_AGP; | |
50 | ||
51 | ||
52 | #endif |
r241749 | r241750 | |
---|---|---|
44 | 44 | |
45 | 45 | virtual int read_sector(UINT32 lba, void *buffer) = 0; |
46 | 46 | virtual int write_sector(UINT32 lba, const void *buffer) = 0; |
47 | virtual attotime seek_time(); | |
48 | 47 | |
49 | 48 | void ide_build_identify_device(); |
50 | 49 | |
r241749 | r241750 | |
73 | 72 | void security_error(); |
74 | 73 | void read_first_sector(); |
75 | 74 | void soft_reset(); |
75 | attotime seek_time(); | |
76 | 76 | |
77 | 77 | UINT32 m_cur_lba; |
78 | 78 | UINT16 m_block_count; |
r241749 | r241750 | |
93 | 93 | ide_hdd_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
94 | 94 | 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); |
95 | 95 | |
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 | ||
96 | 99 | protected: |
97 | 100 | // device-level overrides |
98 | 101 | virtual void device_start(); |
r241749 | r241750 | |
101 | 104 | // optional information overrides |
102 | 105 | virtual machine_config_constructor device_mconfig_additions() const; |
103 | 106 | |
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); } | |
106 | 107 | virtual UINT8 calculate_status(); |
107 | 108 | |
108 | 109 | chd_file *m_handle; |
r241749 | r241750 | |
---|---|---|
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 | ||
81 | const 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 | //------------------------------------------------- | |
90 | pci_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 | ||
106 | READ32_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 | ||
141 | pci_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 | ||
161 | WRITE32_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 | ||
210 | READ64_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 | ||
221 | WRITE64_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 | ||
232 | void 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 | ||
245 | void 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 | ||
257 | void 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 | ||
284 | void pci_bus_legacy_device::device_reset() | |
285 | { | |
286 | /* reset the drive state */ | |
287 | m_devicenum = -1; | |
288 | m_address = 0; | |
289 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
16 | typedef UINT32 (*pci_read_func)(device_t *pcibus, device_t *device, int function, int reg, UINT32 mem_mask); | |
17 | typedef 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 | ||
21 | class pci_bus_legacy_device : public device_t | |
22 | { | |
23 | public: | |
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 | ||
41 | protected: | |
42 | // device-level overrides | |
43 | virtual void device_start(); | |
44 | virtual void device_reset(); | |
45 | virtual void device_post_load(); | |
46 | ||
47 | private: | |
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 | |
65 | extern 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 */ |
r241749 | r241750 | |
---|---|---|
1221 | 1221 | |
1222 | 1222 | #------------------------------------------------- |
1223 | 1223 | # |
1224 | #@src/emu/machine/lpci.h,MACHINES += LPCI | |
1225 | #------------------------------------------------- | |
1226 | ||
1227 | ifneq ($(filter LPCI,$(MACHINES)),) | |
1228 | MACHINEOBJS += $(MACHINEOBJ)/lpci.o | |
1229 | endif | |
1230 | ||
1231 | #------------------------------------------------- | |
1232 | # | |
1233 | 1224 | #@src/emu/machine/pci.h,MACHINES += PCI |
1234 | 1225 | #------------------------------------------------- |
1235 | 1226 | |
1236 | 1227 | ifneq ($(filter PCI,$(MACHINES)),) |
1237 | 1228 | MACHINEOBJS += $(MACHINEOBJ)/pci.o |
1238 | MACHINEOBJS += $(MACHINEOBJ)/pci-usb.o | |
1239 | MACHINEOBJS += $(MACHINEOBJ)/pci-sata.o | |
1240 | MACHINEOBJS += $(MACHINEOBJ)/pci-apic.o | |
1241 | MACHINEOBJS += $(MACHINEOBJ)/pci-smbus.o | |
1242 | MACHINEOBJS += $(MACHINEOBJ)/i82541.o | |
1243 | MACHINEOBJS += $(MACHINEOBJ)/i82875p.o | |
1244 | MACHINEOBJS += $(MACHINEOBJ)/i6300esb.o | |
1245 | 1229 | endif |
1246 | 1230 | |
1247 | 1231 | #------------------------------------------------- |
r241749 | r241750 | |
---|---|---|
6 | 6 | |
7 | 7 | #include "emu.h" |
8 | 8 | #include "pc_lpt.h" |
9 | #include "bus/centronics/covox.h" | |
10 | #include "bus/centronics/printer.h" | |
9 | 11 | |
10 | 12 | |
11 | 13 | const device_type PC_LPT = &device_creator<pc_lpt_device>; |
r241749 | r241750 | |
44 | 46 | m_cent_ctrl_out->write(m_control); |
45 | 47 | } |
46 | 48 | |
49 | static 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) | |
53 | SLOT_INTERFACE_END | |
54 | ||
47 | 55 | static MACHINE_CONFIG_FRAGMENT( pc_lpt ) |
48 | MCFG_CENTRONICS_ADD("centronics", centronic | |
56 | MCFG_CENTRONICS_ADD("centronics", pc_centronics, "printer") | |
49 | 57 | MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in") |
50 | 58 | MCFG_CENTRONICS_FAULT_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit3)) |
51 | 59 | MCFG_CENTRONICS_SELECT_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit4)) |
r241749 | r241750 | |
---|---|---|
1 | #include "pci-apic.h" | |
2 | ||
3 | const device_type APIC = &device_creator<apic_device>; | |
4 | ||
5 | apic_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 | ||
10 | void apic_device::device_start() | |
11 | { | |
12 | pci_device::device_start(); | |
13 | } | |
14 | ||
15 | void apic_device::device_reset() | |
16 | { | |
17 | pci_device::device_reset(); | |
18 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
9 | class apic_device : public pci_device { | |
10 | public: | |
11 | apic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
12 | ||
13 | protected: | |
14 | virtual void device_start(); | |
15 | virtual void device_reset(); | |
16 | }; | |
17 | ||
18 | extern const device_type APIC; | |
19 | ||
20 | #endif |
r241749 | r241750 | |
---|---|---|
1 | #include "pci-sata.h" | |
2 | ||
3 | const device_type SATA = &device_creator<sata_device>; | |
4 | ||
5 | sata_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 | ||
10 | DEVICE_ADDRESS_MAP_START(primary_command_map, 32, sata_device) | |
11 | ADDRESS_MAP_END | |
12 | ||
13 | DEVICE_ADDRESS_MAP_START(primary_control_map, 32, sata_device) | |
14 | ADDRESS_MAP_END | |
15 | ||
16 | DEVICE_ADDRESS_MAP_START(secondary_command_map, 32, sata_device) | |
17 | ADDRESS_MAP_END | |
18 | ||
19 | DEVICE_ADDRESS_MAP_START(secondary_control_map, 32, sata_device) | |
20 | ADDRESS_MAP_END | |
21 | ||
22 | DEVICE_ADDRESS_MAP_START(bus_master_map, 32, sata_device) | |
23 | ADDRESS_MAP_END | |
24 | ||
25 | DEVICE_ADDRESS_MAP_START(ide_command_posting_map, 32, sata_device) | |
26 | ADDRESS_MAP_END | |
27 | ||
28 | ||
29 | void 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 | ||
41 | void sata_device::device_reset() | |
42 | { | |
43 | pci_device::device_reset(); | |
44 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
9 | class sata_device : public pci_device { | |
10 | public: | |
11 | sata_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
12 | ||
13 | protected: | |
14 | virtual void device_start(); | |
15 | virtual void device_reset(); | |
16 | ||
17 | private: | |
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 | ||
26 | extern const device_type SATA; | |
27 | ||
28 | #endif |
r241749 | r241750 | |
---|---|---|
1 | #include "pci-smbus.h" | |
2 | ||
3 | const device_type SMBUS = &device_creator<smbus_device>; | |
4 | ||
5 | DEVICE_ADDRESS_MAP_START(map, 32, smbus_device) | |
6 | ADDRESS_MAP_END | |
7 | ||
8 | smbus_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 | ||
13 | void smbus_device::device_start() | |
14 | { | |
15 | pci_device::device_start(); | |
16 | add_map(32, M_IO, FUNC(smbus_device::map)); | |
17 | } | |
18 | ||
19 | void smbus_device::device_reset() | |
20 | { | |
21 | pci_device::device_reset(); | |
22 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
9 | class smbus_device : public pci_device { | |
10 | public: | |
11 | smbus_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
12 | ||
13 | protected: | |
14 | virtual void device_start(); | |
15 | virtual void device_reset(); | |
16 | ||
17 | private: | |
18 | DECLARE_ADDRESS_MAP(map, 32); | |
19 | }; | |
20 | ||
21 | extern const device_type SMBUS; | |
22 | ||
23 | #endif |
r241749 | r241750 | |
---|---|---|
1 | #include "pci-usb.h" | |
2 | ||
3 | const device_type USB_UHCI = &device_creator<usb_uhci_device>; | |
4 | const device_type USB_EHCI = &device_creator<usb_ehci_device>; | |
5 | ||
6 | DEVICE_ADDRESS_MAP_START(map, 32, usb_uhci_device) | |
7 | ADDRESS_MAP_END | |
8 | ||
9 | usb_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 | ||
14 | void usb_uhci_device::device_start() | |
15 | { | |
16 | pci_device::device_start(); | |
17 | add_map(32, M_IO, FUNC(usb_uhci_device::map)); | |
18 | } | |
19 | ||
20 | void usb_uhci_device::device_reset() | |
21 | { | |
22 | pci_device::device_reset(); | |
23 | } | |
24 | ||
25 | DEVICE_ADDRESS_MAP_START(map, 32, usb_ehci_device) | |
26 | ADDRESS_MAP_END | |
27 | ||
28 | usb_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 | ||
33 | void usb_ehci_device::device_start() | |
34 | { | |
35 | pci_device::device_start(); | |
36 | add_map(1024, M_MEM, FUNC(usb_ehci_device::map)); | |
37 | } | |
38 | ||
39 | void usb_ehci_device::device_reset() | |
40 | { | |
41 | pci_device::device_reset(); | |
42 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
12 | class usb_uhci_device : public pci_device { | |
13 | public: | |
14 | usb_uhci_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
15 | ||
16 | protected: | |
17 | virtual void device_start(); | |
18 | virtual void device_reset(); | |
19 | ||
20 | private: | |
21 | DECLARE_ADDRESS_MAP(map, 32); | |
22 | }; | |
23 | ||
24 | class usb_ehci_device : public pci_device { | |
25 | public: | |
26 | usb_ehci_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
27 | ||
28 | protected: | |
29 | virtual void device_start(); | |
30 | virtual void device_reset(); | |
31 | ||
32 | private: | |
33 | DECLARE_ADDRESS_MAP(map, 32); | |
34 | }; | |
35 | ||
36 | extern const device_type USB_UHCI; | |
37 | extern const device_type USB_EHCI; | |
38 | ||
39 | #endif |
r241749 | r241750 | |
---|---|---|
1 | ||
1 | /*************************************************************************** | |
2 | 2 | |
3 | const device_type PCI_ROOT = &device_creator<pci_root_device>; | |
4 | const device_type PCI_BRIDGE = &device_creator<pci_bridge_device>; | |
3 | machine/pci.c | |
5 | 4 | |
6 | DEVICE_ADDRESS_MAP_START(config_map, 32, pci_device) | |
7 | ADDRESS_MAP_END | |
5 | PCI bus | |
8 | 6 | |
9 | pci_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 | |
17 | 8 | |
18 | void 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 | |
25 | 16 | |
26 | void 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 | |
29 | 26 | |
30 | void 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 | |
33 | 67 | |
34 | void 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/ | |
37 | 69 | |
38 | void pci_device::reset_all_mappings() | |
39 | { | |
40 | } | |
70 | ***************************************************************************/ | |
41 | 71 | |
42 | void 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" | |
48 | 74 | |
49 | void 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 | |
53 | 76 | |
54 | void 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 | //************************************************************************** | |
58 | 80 | |
59 | void 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 | } | |
81 | const device_type PCI_BUS_LEGACY = &device_creator<pci_bus_legacy_device>; | |
63 | 82 | |
64 | agp_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 | //************************************************************************** | |
68 | 86 | |
69 | void agp_device::device_start() | |
87 | //------------------------------------------------- | |
88 | // pci_bus_legacy_device - constructor | |
89 | //------------------------------------------------- | |
90 | pci_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) | |
70 | 93 | { |
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; | |
72 | 100 | } |
73 | 101 | |
74 | void agp_device::device_reset() | |
102 | /*************************************************************************** | |
103 | INLINE FUNCTIONS | |
104 | ***************************************************************************/ | |
105 | ||
106 | READ32_MEMBER( pci_bus_legacy_device::read ) | |
75 | 107 | { |
76 | pci_device::device_reset(); | |
77 | } | |
108 | UINT32 result = 0xffffffff; | |
109 | int function, reg; | |
78 | 110 | |
111 | offset %= 2; | |
79 | 112 | |
113 | switch (offset) | |
114 | { | |
115 | case 0: | |
116 | result = m_address; | |
117 | break; | |
80 | 118 | |
81 | pci_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 | } | |
87 | 132 | |
88 | pci_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); | |
94 | 135 | |
95 | const 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; | |
98 | 137 | } |
99 | 138 | |
100 | device_t *pci_bridge_device::bus_root() | |
101 | { | |
102 | return this; | |
103 | } | |
104 | 139 | |
105 | void pci_bridge_device::device_start() | |
140 | ||
141 | pci_bus_legacy_device *pci_bus_legacy_device::pci_search_bustree(int busnum, int devicenum, pci_bus_legacy_device *pcibus) | |
106 | 142 | { |
107 | pci_device::device_start(); | |
143 | int a; | |
144 | pci_bus_legacy_device *ret; | |
108 | 145 | |
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; | |
122 | 149 | } |
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; | |
130 | 157 | } |
131 | 158 | |
132 | void pci_bridge_device::device_reset() | |
133 | { | |
134 | pci_device::device_reset(); | |
135 | regenerate_config_mapping(); | |
136 | } | |
137 | 159 | |
138 | void 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 | } | |
143 | 160 | |
144 | ||
145 | void 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) | |
161 | WRITE32_MEMBER( pci_bus_legacy_device::write ) | |
147 | 162 | { |
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; | |
151 | 164 | |
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); | |
155 | 167 | |
168 | switch (offset) | |
169 | { | |
170 | case 0: | |
171 | m_address = data; | |
156 | 172 | |
157 | void 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; | |
165 | 190 | |
166 | ||
167 | agp_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 | } | |
170 | 206 | } |
171 | 207 | |
172 | void agp_bridge_device::device_start() | |
173 | { | |
174 | pci_bridge_device::device_start(); | |
175 | } | |
176 | 208 | |
177 | void agp_bridge_device::device_reset() | |
178 | { | |
179 | pci_bridge_device::device_reset(); | |
180 | } | |
181 | 209 | |
182 | ||
183 | ||
184 | DEVICE_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) | |
187 | ADDRESS_MAP_END | |
188 | ||
189 | ||
190 | pci_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) | |
210 | READ64_MEMBER(pci_bus_legacy_device::read_64be) | |
192 | 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); | |
193 | 219 | } |
194 | 220 | |
195 | ||
221 | WRITE64_MEMBER(pci_bus_legacy_device::write_64be) | |
196 | 222 | { |
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); | |
198 | 229 | } |
199 | 230 | |
200 | void pci_host_device::device_start() | |
201 | { | |
202 | pci_bridge_device::device_start(); | |
203 | 231 | |
204 | memory_window_start = memory_window_end = memory_offset = 0; | |
205 | io_window_start = io_window_end = io_offset = 0; | |
206 | } | |
207 | ||
208 | void pci_host_device::device_reset() | |
232 | void pci_bus_legacy_device::add_sibling(pci_bus_legacy_device *sibling, int busnum) | |
209 | 233 | { |
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++; | |
216 | 237 | } |
217 | 238 | |
218 | void 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); | |
222 | 239 | |
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 | //------------------------------------------------- | |
226 | 244 | |
227 | void pci_ | |
245 | void pci_bus_legacy_device::device_post_load() | |
228 | 246 | { |
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 | } | |
231 | 251 | } |
232 | 252 | |
233 | READ32_MEMBER(pci_host_device::config_address_r) | |
234 | { | |
235 | return config_address; | |
236 | } | |
253 | //------------------------------------------------- | |
254 | // device_start - device-specific startup | |
255 | //------------------------------------------------- | |
237 | 256 | |
238 | ||
257 | void pci_bus_legacy_device::device_start() | |
239 | 258 | { |
240 | COMBINE_DATA(&config_address); | |
241 | } | |
259 | /* store a pointer back to the device */ | |
260 | m_devicenum = -1; | |
242 | 261 | |
243 | READ32_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]); | |
247 | 266 | |
248 | WRITE32_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 | } | |
253 | 272 | |
254 | UINT32 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)); | |
266 | 277 | } |
267 | 278 | |
268 | void 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 | } | |
278 | 279 | |
280 | //------------------------------------------------- | |
281 | // device_reset - device-specific reset | |
282 | //------------------------------------------------- | |
279 | 283 | |
280 | pci_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__) | |
284 | void pci_bus_legacy_device::device_reset() | |
282 | 285 | { |
286 | /* reset the drive state */ | |
287 | m_devicenum = -1; | |
288 | m_address = 0; | |
283 | 289 | } |
284 | ||
285 | void pci_root_device::device_start() | |
286 | { | |
287 | } | |
288 | ||
289 | void pci_root_device::device_reset() | |
290 | { | |
291 | } |
r241749 | r241750 | |
---|---|---|
1 | #ifndef PCI_H | |
2 | #define PCI_H | |
1 | /*************************************************************************** | |
3 | 2 | |
4 | ||
3 | machine/pci.h | |
5 | 4 | |
6 | #define MCFG_PCI_ROOT_ADD(_tag) \ | |
7 | MCFG_DEVICE_ADD(_tag, PCI_ROOT, 0) | |
5 | PCI bus | |
8 | 6 | |
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 | ***************************************************************************/ | |
12 | 8 | |
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 | |
15 | 11 | |
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 | //************************************************************************** | |
18 | 15 | |
19 | #define MCFG_PCI_BRIDGE_ADD(_tag, _main_id, _revision) \ | |
20 | MCFG_PCI_DEVICE_ADD(_tag, PCI_BRIDGE, _main_id, _revision, 0x060400, 0x00000000) | |
16 | typedef UINT32 (*pci_read_func)(device_t *pcibus, device_t *device, int function, int reg, UINT32 mem_mask); | |
17 | typedef void (*pci_write_func)(device_t *pcibus, device_t *device, int function, int reg, UINT32 data, UINT32 mem_mask); | |
21 | 18 | |
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 | |
24 | 20 | |
25 | class pci_device : public device_t { | |
21 | class pci_bus_legacy_device : public device_t | |
22 | { | |
26 | 23 | public: |
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); | |
28 | 26 | |
29 | void set_ids(UINT32 main_id, UINT8 revision, UINT32 pclass, UINT32 subdevice_id); | |
27 | DECLARE_READ32_MEMBER( read ); | |
28 | DECLARE_WRITE32_MEMBER( write ); | |
30 | 29 | |
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 ); | |
36 | 32 | |
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; } | |
38 | 37 | |
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); | |
40 | 40 | |
41 | 41 | protected: |
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 | |
54 | 43 | virtual void device_start(); |
55 | 44 | virtual void device_reset(); |
45 | virtual void device_post_load(); | |
56 | 46 | |
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 | ||
66 | class agp_device : public pci_device { | |
67 | public: | |
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 | ||
70 | protected: | |
71 | virtual void device_start(); | |
72 | virtual void device_reset(); | |
73 | }; | |
74 | ||
75 | class pci_bridge_device : public pci_device, public device_memory_interface { | |
76 | public: | |
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 | ||
84 | protected: | |
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 | ||
96 | 47 | private: |
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; | |
99 | 57 | |
100 | class agp_bridge_device : public pci_bridge_device { | |
101 | public: | |
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 | ||
104 | protected: | |
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 | |
107 | 62 | }; |
108 | 63 | |
109 | class pci_host_device : public pci_bridge_device { | |
110 | public: | |
111 | DECLARE_ADDRESS_MAP(io_configuration_access_map, 32); | |
64 | // device type definition | |
65 | extern const device_type PCI_BUS_LEGACY; | |
112 | 66 | |
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); | |
114 | 67 | |
115 | protected: | |
116 | address_space *memory_space, *io_space; | |
68 | /*************************************************************************** | |
69 | DEVICE CONFIGURATION MACROS | |
70 | ***************************************************************************/ | |
117 | 71 | |
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); | |
120 | 79 | |
121 | virtual void device_start(); | |
122 | virtual void device_reset(); | |
123 | 80 | |
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 | ||
140 | class pci_root_device : public device_t { | |
141 | public: | |
142 | pci_root_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
143 | ||
144 | protected: | |
145 | virtual void device_start(); | |
146 | virtual void device_reset(); | |
147 | }; | |
148 | ||
149 | extern const device_type PCI_ROOT; | |
150 | extern const device_type PCI_BRIDGE; | |
151 | ||
152 | #endif | |
81 | #endif /* PCI_H */ |
r241749 | r241750 | |
---|---|---|
14 | 14 | #include "emu.h" |
15 | 15 | #include "machine/pic8259.h" |
16 | 16 | |
17 | #define IRQ_COUNT 8 | |
18 | ||
17 | 19 | #define LOG_ICW 0 |
18 | 20 | #define LOG_OCW 0 |
19 | 21 | #define LOG_GENERAL 0 |
r241749 | r241750 | |
22 | 24 | |
23 | 25 | void pic8259_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) |
24 | 26 | { |
27 | int irq; | |
28 | UINT8 mask; | |
29 | ||
25 | 30 | /* check the various IRQs */ |
26 | for (i | |
31 | for (irq = 0; irq < IRQ_COUNT; irq++) | |
27 | 32 | { |
28 | | |
33 | mask = 1 << irq; | |
29 | 34 | |
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) | |
32 | 37 | { |
33 | 38 | if (LOG_GENERAL) |
34 | 39 | { |
35 | logerror("pic8259_timerproc() | |
40 | logerror("pic8259_timerproc(): PIC IRQ #%d still in service\n", irq); | |
36 | 41 | } |
37 | 42 | break; |
38 | 43 | } |
r241749 | r241750 | |
42 | 47 | { |
43 | 48 | if (LOG_GENERAL) |
44 | 49 | { |
45 | logerror("pic8259_timerproc() | |
50 | logerror("pic8259_timerproc(): PIC triggering IRQ #%d\n", irq); | |
46 | 51 | } |
47 | 52 | if (!BIT(m_ocw3, 2)) |
48 | 53 | { |
r241749 | r241750 | |
50 | 55 | } |
51 | 56 | return; |
52 | 57 | } |
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; | |
56 | 58 | } |
57 | 59 | if (!BIT(m_ocw3, 2)) |
58 | 60 | { |
r241749 | r241750 | |
69 | 71 | { |
70 | 72 | /* setting IRQ line */ |
71 | 73 | if (LOG_GENERAL) |
72 | logerror("pic8259_set_irq_line() | |
74 | logerror("pic8259_set_irq_line(): PIC set IRQ line #%d\n", irq); | |
73 | 75 | |
74 | 76 | if(m_level_trig_mode || (!m_level_trig_mode && !(m_irq_lines & mask))) |
75 | 77 | { |
r241749 | r241750 | |
82 | 84 | /* clearing IRQ line */ |
83 | 85 | if (LOG_GENERAL) |
84 | 86 | { |
85 | logerror("pic8259_device::set_irq_line() | |
87 | logerror("pic8259_device::set_irq_line(): PIC cleared IRQ line #%d\n", irq); | |
86 | 88 | } |
87 | 89 | |
88 | 90 | m_irq_lines &= ~mask; |
r241749 | r241750 | |
94 | 96 | |
95 | 97 | UINT32 pic8259_device::acknowledge() |
96 | 98 | { |
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++) | |
98 | 103 | { |
99 | | |
104 | mask = 1 << irq; | |
100 | 105 | |
101 | 106 | /* is this IRQ pending and enabled? */ |
102 | 107 | if ((m_irr & mask) && !(m_imr & mask)) |
103 | 108 | { |
104 | 109 | if (LOG_GENERAL) |
105 | 110 | { |
106 | logerror("pic8259_acknowledge() | |
111 | logerror("pic8259_acknowledge(): PIC acknowledge IRQ #%d\n", irq); | |
107 | 112 | } |
108 | 113 | if (!m_level_trig_mode) |
109 | 114 | { |
r241749 | r241750 | |
165 | 170 | |
166 | 171 | if ( m_irr & ~m_imr ) |
167 | 172 | { |
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++ ) | |
170 | 175 | { |
171 | 176 | if ( ( 1 << irq ) & m_irr & ~m_imr ) |
172 | 177 | { |
r241749 | r241750 | |
211 | 216 | /* write ICW1 - this pretty much resets the chip */ |
212 | 217 | if (LOG_ICW) |
213 | 218 | { |
214 | logerror("pic8259_device::write() | |
219 | logerror("pic8259_device::write(): ICW1; data=0x%02X\n", data); | |
215 | 220 | } |
216 | 221 | |
217 | 222 | m_imr = 0x00; |
r241749 | r241750 | |
232 | 237 | /* write OCW3 */ |
233 | 238 | if (LOG_OCW) |
234 | 239 | { |
235 | logerror("pic8259_device::write() | |
240 | logerror("pic8259_device::write(): OCW3; data=0x%02X\n", data); | |
236 | 241 | } |
237 | 242 | |
238 | 243 | m_ocw3 = data; |
r241749 | r241750 | |
245 | 250 | /* write OCW2 */ |
246 | 251 | if (LOG_OCW) |
247 | 252 | { |
248 | logerror("pic8259_device::write() | |
253 | logerror("pic8259_device::write(): OCW2; data=0x%02X\n", data); | |
249 | 254 | } |
250 | 255 | |
251 | 256 | switch (data & 0xe0) |
r241749 | r241750 | |
286 | 291 | } |
287 | 292 | break; |
288 | 293 | case 0xc0: |
289 | m_prio = | |
294 | m_prio = n & 7; | |
290 | 295 | break; |
291 | 296 | case 0xe0: |
292 | 297 | if( m_isr & mask ) |
293 | 298 | { |
294 | 299 | m_isr &= ~mask; |
295 | m_prio = ( | |
300 | m_prio = (m_prio + 1) & 7; | |
296 | 301 | } |
297 | 302 | break; |
298 | 303 | } |
r241749 | r241750 | |
310 | 315 | /* write ICW2 */ |
311 | 316 | if (LOG_ICW) |
312 | 317 | { |
313 | logerror("pic8259_device::write() | |
318 | logerror("pic8259_device::write(): ICW2; data=0x%02X\n", data); | |
314 | 319 | } |
315 | 320 | |
316 | 321 | m_base = data & 0xf8; |
r241749 | r241750 | |
329 | 334 | /* write ICW3 */ |
330 | 335 | if (LOG_ICW) |
331 | 336 | { |
332 | logerror("pic8259_device::write() | |
337 | logerror("pic8259_device::write(): ICW3; data=0x%02X\n", data); | |
333 | 338 | } |
334 | 339 | |
335 | 340 | m_slave = data; |
r241749 | r241750 | |
340 | 345 | /* write ICW4 */ |
341 | 346 | if (LOG_ICW) |
342 | 347 | { |
343 | logerror("pic8259_device::write() | |
348 | logerror("pic8259_device::write(): ICW4; data=0x%02X\n", data); | |
344 | 349 | } |
345 | 350 | |
346 | 351 | m_nested = (data & 0x10) ? 1 : 0; |
r241749 | r241750 | |
---|---|---|
74 | 74 | DECLARE_WRITE_LINE_MEMBER( trg2 ); |
75 | 75 | DECLARE_WRITE_LINE_MEMBER( trg3 ); |
76 | 76 | |
77 | UINT16 get_channel_constant(UINT8 channel) { return m_channel[channel].m_tconst; } | |
78 | ||
79 | 77 | protected: |
80 | 78 | // device-level overrides |
81 | 79 | virtual void device_start(); |
r241749 | r241750 | |
---|---|---|
1 | #include "pci-ac97.h" | |
2 | ||
3 | const device_type AC97 = &device_creator<ac97_device>; | |
4 | ||
5 | DEVICE_ADDRESS_MAP_START(native_audio_mixer_map, 32, ac97_device) | |
6 | ADDRESS_MAP_END | |
7 | ||
8 | DEVICE_ADDRESS_MAP_START(native_audio_bus_mastering_map, 32, ac97_device) | |
9 | ADDRESS_MAP_END | |
10 | ||
11 | DEVICE_ADDRESS_MAP_START(mixer_map, 32, ac97_device) | |
12 | ADDRESS_MAP_END | |
13 | ||
14 | DEVICE_ADDRESS_MAP_START(bus_mastering_map, 32, ac97_device) | |
15 | ADDRESS_MAP_END | |
16 | ||
17 | ac97_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 | ||
22 | void 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 | ||
31 | void ac97_device::device_reset() | |
32 | { | |
33 | pci_device::device_reset(); | |
34 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
9 | class ac97_device : public pci_device { | |
10 | public: | |
11 | ac97_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
12 | ||
13 | protected: | |
14 | virtual void device_start(); | |
15 | virtual void device_reset(); | |
16 | ||
17 | private: | |
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 | ||
24 | extern const device_type AC97; | |
25 | ||
26 | #endif |
r241749 | r241750 | |
---|---|---|
1 | #include "sb0400.h" | |
2 | ||
3 | const device_type SB0400 = &device_creator<sb0400_device>; | |
4 | ||
5 | DEVICE_ADDRESS_MAP_START(map, 32, sb0400_device) | |
6 | ADDRESS_MAP_END | |
7 | ||
8 | sb0400_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 | ||
13 | void sb0400_device::device_start() | |
14 | { | |
15 | pci_device::device_start(); | |
16 | add_map(64, M_IO, FUNC(sb0400_device::map)); | |
17 | } | |
18 | ||
19 | void sb0400_device::device_reset() | |
20 | { | |
21 | pci_device::device_reset(); | |
22 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
11 | class sb0400_device : public pci_device { | |
12 | public: | |
13 | sb0400_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
14 | ||
15 | protected: | |
16 | virtual void device_start(); | |
17 | virtual void device_reset(); | |
18 | ||
19 | private: | |
20 | DECLARE_ADDRESS_MAP(map, 32); | |
21 | }; | |
22 | ||
23 | extern const device_type SB0400; | |
24 | ||
25 | #endif |
r241749 | r241750 | |
---|---|---|
70 | 70 | |
71 | 71 | |
72 | 72 | #------------------------------------------------- |
73 | # AC97 | |
74 | #@src/emu/sound/pic-ac97.h,SOUNDS += AC97 | |
75 | #------------------------------------------------- | |
76 | ||
77 | ifneq ($(filter AC97,$(SOUNDS)),) | |
78 | SOUNDOBJS += $(SOUNDOBJ)/pci-ac97.o | |
79 | endif | |
80 | ||
81 | ||
82 | ||
83 | #------------------------------------------------- | |
84 | 73 | # Apple custom sound chips |
85 | 74 | #@src/emu/sound/asc.h,SOUNDS += ASC |
86 | 75 | #@src/emu/sound/awacs.h,SOUNDS += AWACS |
r241749 | r241750 | |
134 | 123 | |
135 | 124 | |
136 | 125 | #------------------------------------------------- |
137 | #------------------------------------------------- | |
138 | # AC97 | |
139 | #@src/emu/sound/pic-ac97.h,SOUNDS += AC97 | |
140 | #------------------------------------------------- | |
141 | ||
142 | ifneq ($(filter AC97,$(SOUNDS)),) | |
143 | SOUNDOBJS += $(SOUNDOBJ)/pci-ac97.o | |
144 | endif | |
145 | 126 | # CEM 3394 analog synthesizer chip |
146 | 127 | #@src/emu/sound/cem3394.h,SOUNDS += CEM3394 |
147 | 128 | #------------------------------------------------- |
r241749 | r241750 | |
153 | 134 | |
154 | 135 | |
155 | 136 | #------------------------------------------------- |
156 | # Creative Labs SB0400 Audigy2 Value | |
157 | #@src/emu/sound/sb0400.h,SOUNDS += AC97 | |
158 | #------------------------------------------------- | |
159 | ||
160 | ifneq ($(filter SB0400,$(SOUNDS)),) | |
161 | SOUNDOBJS += $(SOUNDOBJ)/sb0400.o | |
162 | endif | |
163 | ||
164 | ||
165 | ||
166 | #------------------------------------------------- | |
167 | 137 | # Data East custom sound chips |
168 | 138 | #@src/emu/sound/bsmt2000.h,SOUNDS += BSMT2000 |
169 | 139 | #------------------------------------------------- |
r241749 | r241750 | |
---|---|---|
1 | #include "gf6800gt.h" | |
2 | ||
3 | const device_type GEFORCE_6800GT = &device_creator<geforce_6800gt_device>; | |
4 | ||
5 | DEVICE_ADDRESS_MAP_START(map1, 32, geforce_6800gt_device) | |
6 | ADDRESS_MAP_END | |
7 | ||
8 | DEVICE_ADDRESS_MAP_START(map2, 32, geforce_6800gt_device) | |
9 | ADDRESS_MAP_END | |
10 | ||
11 | DEVICE_ADDRESS_MAP_START(map3, 32, geforce_6800gt_device) | |
12 | ADDRESS_MAP_END | |
13 | ||
14 | geforce_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 | ||
19 | void 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 | ||
27 | void geforce_6800gt_device::device_reset() | |
28 | { | |
29 | pci_device::device_reset(); | |
30 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
9 | class geforce_6800gt_device : public pci_device { | |
10 | public: | |
11 | geforce_6800gt_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
12 | ||
13 | protected: | |
14 | virtual void device_start(); | |
15 | virtual void device_reset(); | |
16 | ||
17 | private: | |
18 | DECLARE_ADDRESS_MAP(map1, 32); | |
19 | DECLARE_ADDRESS_MAP(map2, 32); | |
20 | DECLARE_ADDRESS_MAP(map3, 32); | |
21 | }; | |
22 | ||
23 | extern const device_type GEFORCE_6800GT; | |
24 | ||
25 | #endif |
r241749 | r241750 | |
---|---|---|
198 | 198 | { |
199 | 199 | } |
200 | 200 | |
201 | // zero everything, keep vtbls | |
202 | void 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 | } | |
216 | 201 | |
217 | void svga_device::zero() | |
218 | { | |
219 | vga_device::zero(); | |
220 | memset(&svga, 0, sizeof(svga)); | |
221 | } | |
222 | ||
223 | 202 | /* VBLANK callback, start address definitely updates AT vblank, not before. */ |
224 | 203 | TIMER_CALLBACK_MEMBER(vga_device::vblank_timer_cb) |
225 | 204 | { |
r241749 | r241750 | |
229 | 208 | |
230 | 209 | void vga_device::device_start() |
231 | 210 | { |
232 | ze | |
211 | memset(&vga, 0, sizeof(vga)); | |
233 | 212 | |
234 | 213 | int i; |
235 | 214 | for (i = 0; i < 0x100; i++) |
r241749 | r241750 | |
262 | 241 | |
263 | 242 | void cirrus_vga_device::device_start() |
264 | 243 | { |
265 | zero(); | |
244 | memset(&vga, 0, sizeof(vga)); | |
245 | memset(&svga, 0, sizeof(svga)); | |
266 | 246 | |
267 | 247 | int i; |
268 | 248 | for (i = 0; i < 0x100; i++) |
r241749 | r241750 | |
---|---|---|
26 | 26 | vga_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
27 | 27 | 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); |
28 | 28 | |
29 | ||
29 | ||
30 | 30 | virtual UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
31 | 31 | |
32 | 32 | virtual READ8_MEMBER(port_03b0_r); |
r241749 | r241750 | |
205 | 205 | // construction/destruction |
206 | 206 | 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); |
207 | 207 | |
208 | virtual void zero(); | |
209 | 208 | virtual UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
210 | 209 | protected: |
211 | 210 | void svga_vh_rgb8(bitmap_rgb32 &bitmap, const rectangle &cliprect); |
r241749 | r241750 | |
---|---|---|
214 | 214 | { |
215 | 215 | m_openbus_cb.resolve_safe(0); |
216 | 216 | |
217 | #if SNES_LAYER_DEBUG | |
218 | memset(&m_debug_options, 0, sizeof(m_debug_options)); | |
219 | #endif | |
220 | ||
217 | 221 | m_vram = auto_alloc_array(machine(), UINT8, SNES_VRAM_SIZE); |
218 | 222 | m_cgram = auto_alloc_array(machine(), UINT16, SNES_CGRAM_SIZE/2); |
219 | 223 | m_oam_ram = auto_alloc_array(machine(), UINT16, SNES_OAM_SIZE/2); |
220 | 224 | |
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 | ||
221 | 262 | for (int i = 0; i < 2; i++) |
222 | 263 | { |
223 | 264 | save_item(NAME(m_scanlines[i].enable), i); |
r241749 | r241750 | |
359 | 400 | save_pointer(NAME(m_oam_ram), SNES_OAM_SIZE/2); |
360 | 401 | } |
361 | 402 | |
362 | void 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; | |
383 | 403 | |
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; | |
406 | 404 | |
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 | ||
470 | 405 | /***************************************** |
471 | 406 | * get_bgcolor() |
472 | 407 | * |
r241749 | r241750 | |
---|---|---|
271 | 271 | protected: |
272 | 272 | // device-level overrides |
273 | 273 | virtual void device_start(); |
274 | virtual void device_reset(); | |
274 | virtual void device_reset() {}; | |
275 | 275 | |
276 | 276 | private: |
277 | 277 | devcb_read16 m_openbus_cb; |
r241749 | r241750 | |
---|---|---|
371 | 371 | |
372 | 372 | inline void upd7220_device::recompute_parameters() |
373 | 373 | { |
374 | int horiz_mult | |
374 | int horiz_mult; | |
375 | 375 | /* TODO: assume that the pitch also controls number of horizontal pixels in a single cell */ |
376 | 376 | // 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)) | |
378 | 379 | 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; | |
385 | 382 | |
386 | 383 | int horiz_pix_total = (m_hs + m_hbp + m_hfp + m_aw) * horiz_mult; |
387 | int vert_pix_total = | |
384 | int vert_pix_total = m_vs + m_vbp + m_al + m_vfp; | |
388 | 385 | |
389 | 386 | //printf("%d %d %d %d\n",m_hs,m_hbp,m_aw,m_hfp); |
390 | 387 | //printf("%d %d\n",m_aw * 8,m_pitch * 8); |
r241749 | r241750 | |
397 | 394 | rectangle visarea; |
398 | 395 | |
399 | 396 | visarea.min_x = 0; //(m_hs + m_hbp) * 8; |
400 | visarea.min_y = | |
397 | visarea.min_y = 0; //m_vs + m_vbp; | |
401 | 398 | visarea.max_x = m_aw * horiz_mult - 1;//horiz_pix_total - (m_hfp * 8) - 1; |
402 | visarea.max_y = m_al | |
399 | visarea.max_y = m_al - 1;//vert_pix_total - m_vfp - 1; | |
403 | 400 | |
404 | 401 | LOG(("uPD7220 '%s' Screen: %u x %u @ %f Hz\n", tag(), horiz_pix_total, vert_pix_total, 1 / ATTOSECONDS_TO_DOUBLE(refresh))); |
405 | 402 | LOG(("Visible Area: (%u, %u) - (%u, %u)\n", visarea.min_x, visarea.min_y, visarea.max_x, visarea.max_y)); |
r241749 | r241750 | |
801 | 798 | |
802 | 799 | void upd7220_device::draw_line(int x, int y) |
803 | 800 | { |
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 }; | |
807 | 806 | UINT16 pattern = (m_ra[8]) | (m_ra[9]<<8); |
808 | | |
807 | int line_step = 0; | |
809 | 808 | |
810 | 809 | 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)); |
811 | 810 | |
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; | |
832 | 812 | |
833 | | |
813 | for(i = 0;i<line_size;i++) | |
834 | 814 | { |
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]; | |
844 | 821 | } |
845 | 822 | |
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 | ||
846 | 827 | m_ead = (x >> 4) + (y * (m_pitch >> m_figs.m_gd)); |
847 | 828 | m_dad = x & 0x0f; |
848 | 829 | } |
r241749 | r241750 | |
873 | 854 | |
874 | 855 | 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)); |
875 | 856 | |
876 | for(int i = 0; i < | |
857 | for(int i = 0; i < m_figs.m_dc; i++) | |
877 | 858 | { |
878 | 859 | if(i >= m_figs.m_dm) |
879 | 860 | { |
r241749 | r241750 | |
901 | 882 | { |
902 | 883 | case 1: |
903 | 884 | case 2: |
904 | x += | |
885 | x += m_figs.m_dc * dot_dir[((m_figs.m_dir >> 1) + 3) & 3]; | |
905 | 886 | break; |
906 | 887 | default: |
907 | y += | |
888 | y += m_figs.m_dc * dot_dir[m_figs.m_dir >> 1]; | |
908 | 889 | break; |
909 | 890 | } |
910 | 891 | |
r241749 | r241750 | |
1554 | 1535 | addr = sad + (y * m_pitch); |
1555 | 1536 | |
1556 | 1537 | if (!m_draw_text_cb.isnull()) |
1557 | m_draw_text_cb(bitmap, addr, (y * m_lr) | |
1538 | m_draw_text_cb(bitmap, addr, (y * m_lr), wd, m_pitch, m_lr, m_dc, m_ead); | |
1558 | 1539 | } |
1559 | 1540 | |
1560 | 1541 | sy = y + 1; |
r241749 | r241750 | |
1566 | 1547 | // draw_graphics_line - |
1567 | 1548 | //------------------------------------------------- |
1568 | 1549 | |
1569 | void upd7220_device::draw_graphics_line(bitmap_rgb32 &bitmap, UINT32 addr, int y, int wd | |
1550 | void upd7220_device::draw_graphics_line(bitmap_rgb32 &bitmap, UINT32 addr, int y, int wd) | |
1570 | 1551 | { |
1571 | int sx | |
1552 | int sx; | |
1572 | 1553 | |
1573 | for (sx = 0; sx < | |
1554 | for (sx = 0; sx < 80; sx++) | |
1574 | 1555 | { |
1575 | if((sx << 3) < m_aw * 16 && y < al) | |
1556 | if((sx << 3) < m_aw * 16 && y < m_al) | |
1576 | 1557 | m_display_cb(bitmap, y, sx << 3, addr); |
1577 | 1558 | |
1578 | 1559 | addr+= wd + 1; |
r241749 | r241750 | |
1590 | 1571 | UINT16 len; |
1591 | 1572 | int im, wd, area; |
1592 | 1573 | 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; | |
1595 | 1574 | |
1596 | 1575 | for (area = 0; area < 4; area++) |
1597 | 1576 | { |
r241749 | r241750 | |
1604 | 1583 | if(area >= 3) // TODO: most likely to be correct, Quarth (PC-98xx) definitely draws with area 2. We might see an area 3 someday ... |
1605 | 1584 | break; |
1606 | 1585 | |
1607 | if(!interlace) | |
1608 | len <<= 1; | |
1609 | ||
1610 | 1586 | for (y = 0; y < len; y++) |
1611 | 1587 | { |
1612 | 1588 | /* TODO: again correct? |
r241749 | r241750 | |
1616 | 1592 | addr = ((sad << 1) & 0x3ffff) + (y * (m_pitch << (im ? 0 : 1))); |
1617 | 1593 | |
1618 | 1594 | if (!m_display_cb.isnull()) |
1619 | draw_graphics_line(bitmap, addr, y + ( | |
1595 | draw_graphics_line(bitmap, addr, y + (bsy / m_lr), wd); | |
1620 | 1596 | } |
1621 | 1597 | } |
1622 | 1598 | else |
r241749 | r241750 | |
1630 | 1606 | addr = (sad & 0x3ffff) + ((y / m_lr) * m_pitch); |
1631 | 1607 | |
1632 | 1608 | if (!m_draw_text_cb.isnull()) |
1633 | m_draw_text_cb(bitmap, addr, y + tsy | |
1609 | m_draw_text_cb(bitmap, addr, y + tsy, wd, m_pitch, m_lr, m_dc, m_ead); | |
1634 | 1610 | } |
1635 | 1611 | } |
1636 | 1612 | } |
r241749 | r241750 | |
---|---|---|
150 | 150 | void process_fifo(); |
151 | 151 | void continue_command(); |
152 | 152 | void update_text(bitmap_rgb32 &bitmap, const rectangle &cliprect); |
153 | void draw_graphics_line(bitmap_rgb32 &bitmap, UINT32 addr, int y, int wd | |
153 | void draw_graphics_line(bitmap_rgb32 &bitmap, UINT32 addr, int y, int wd); | |
154 | 154 | void update_graphics(bitmap_rgb32 &bitmap, const rectangle &cliprect, int force_bitmap); |
155 | 155 | |
156 | 156 | upd7220_display_pixels_delegate m_display_cb; |
r241749 | r241750 | |
---|---|---|
174 | 174 | |
175 | 175 | #------------------------------------------------- |
176 | 176 | # |
177 | #@src/emu/video/gf6800gt.h,VIDEOS += GF6800GT | |
178 | #------------------------------------------------- | |
179 | ||
180 | ifneq ($(filter GF6800GT,$(VIDEOS)),) | |
181 | VIDEOOBJS+= $(VIDEOOBJ)/gf6800gt.o | |
182 | endif | |
183 | ||
184 | #------------------------------------------------- | |
185 | # | |
186 | 177 | #@src/emu/video/h63484.h,VIDEOS += H63484 |
187 | 178 | #------------------------------------------------- |
188 | 179 |
r241749 | r241750 | |
---|---|---|
4 | 4 | |
5 | 5 | cbm_crt.c |
6 | 6 | |
7 | Commodore C64 cartridge images | |
7 | Commodore C64 cartridge images | |
8 | 8 | |
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 | ||
40 | 9 | *********************************************************************/ |
41 | 10 | |
42 | 11 | #include "cbm_crt.h" |
43 | 12 | |
44 | 13 | |
14 | ||
45 | 15 | //************************************************************************** |
46 | 16 | // MACROS/CONSTANTS |
47 | 17 | //************************************************************************** |
r241749 | r241750 | |
52 | 22 | // slot names for the C64 cartridge types |
53 | 23 | static const char * CRT_C64_SLOT_NAMES[_CRT_C64_COUNT] = |
54 | 24 | { |
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" | |
111 | 81 | }; |
112 | 82 | |
113 | 83 |
r241749 | r241750 | |
---|---|---|
492 | 492 | pos += 16; |
493 | 493 | |
494 | 494 | UINT16 size = LITTLE_ENDIANIZE_INT16(*(UINT16 *)(hs+14)); |
495 | if(i == 0) | |
495 | if(i == 0) | |
496 | 496 | sector_count = LITTLE_ENDIANIZE_INT16(*(UINT16 *)(hs+4)); |
497 | // Support broken vfman converter | |
498 | if(sector_count == 0x1000) | |
499 | sector_count = 0x10; | |
500 | } | |
501 | 497 | |
502 | 498 | sects[i].track = hs[0]; |
503 | 499 | sects[i].head = hs[1]; |
r241749 | r241750 | |
---|---|---|
50 | 50 | |
51 | 51 | const char *esqimg_format::name() const |
52 | 52 | { |
53 | return " | |
53 | return "img"; | |
54 | 54 | } |
55 | 55 | |
56 | 56 | const char *esqimg_format::description() const |
r241749 | r241750 | |
---|---|---|
52 | 52 | |
53 | 53 | const char *esq8img_format::name() const |
54 | 54 | { |
55 | return " | |
55 | return "img"; | |
56 | 56 | } |
57 | 57 | |
58 | 58 | const char *esq8img_format::description() const |
r241749 | r241750 | |
---|---|---|
1071 | 1071 | type == CRC_CBM_START || |
1072 | 1072 | type == CRC_MACHEAD_START || |
1073 | 1073 | type == CRC_FCS_START || |
1074 | type == CRC_VICTOR_HDR_START || | |
1075 | type == CRC_VICTOR_DATA_START || | |
1076 | 1074 | type == CRC_END || |
1077 | 1075 | type == SECTOR_LOOP_START || |
1078 | 1076 | type == SECTOR_LOOP_END || |
r241749 | r241750 | |
1114 | 1112 | case CRC_FCS_START: |
1115 | 1113 | crcs[desc[i].p1].type = CRC_FCS; |
1116 | 1114 | 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; | |
1123 | 1115 | } |
1124 | 1116 | |
1125 | 1117 | for(int i=0; desc[i].type != END; i++) |
r241749 | r241750 | |
1139 | 1131 | case CRC_CBM: return 10; |
1140 | 1132 | case CRC_MACHEAD: return 8; |
1141 | 1133 | case CRC_FCS: return 20; |
1142 | case CRC_VICTOR_HDR: return 10; | |
1143 | case CRC_VICTOR_DATA: return 20; | |
1144 | 1134 | default: return 0; |
1145 | 1135 | } |
1146 | 1136 | } |
r241749 | r241750 | |
1281 | 1271 | // TODO |
1282 | 1272 | } |
1283 | 1273 | |
1284 | void 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 | ||
1294 | void 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 | ||
1305 | 1274 | void floppy_image_format_t::fixup_crcs(UINT32 *buffer, gen_crc_info *crcs) |
1306 | 1275 | { |
1307 | 1276 | for(int i=0; i != MAX_CRC_COUNT; i++) |
1308 | 1277 | if(crcs[i].write != -1) { |
1309 | 1278 | 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; | |
1318 | 1285 | } |
1319 | 1286 | if(crcs[i].fixup_mfm_clock) { |
1320 | 1287 | int offset = crcs[i].write + crc_cells_size(crcs[i].type); |
r241749 | r241750 | |
1436 | 1403 | raw_w(buffer, offset, desc[index].p2, desc[index].p1); |
1437 | 1404 | break; |
1438 | 1405 | |
1439 | case SYNC_GCR5: | |
1440 | for(int i=0; i<desc[index].p1; i++) | |
1441 | raw_w(buffer, offset, 10, 0xffff); | |
1442 | break; | |
1443 | ||
1444 | 1406 | case TRACK_ID: |
1445 | 1407 | mfm_w(buffer, offset, 8, track); |
1446 | 1408 | break; |
r241749 | r241750 | |
1465 | 1427 | _8n1_w(buffer, offset, 8, track); |
1466 | 1428 | break; |
1467 | 1429 | |
1468 | case TRACK_ID_VICTOR_GCR5: | |
1469 | gcr5_w(buffer, offset, 10, 1 + track + (head * 0x80)); | |
1470 | break; | |
1471 | ||
1472 | 1430 | case HEAD_ID: |
1473 | 1431 | mfm_w(buffer, offset, 8, head); |
1474 | 1432 | break; |
r241749 | r241750 | |
1578 | 1536 | case CRC_CCITT_FM_START: |
1579 | 1537 | case CRC_MACHEAD_START: |
1580 | 1538 | case CRC_FCS_START: |
1581 | case CRC_VICTOR_HDR_START: | |
1582 | case CRC_VICTOR_DATA_START: | |
1583 | 1539 | crcs[desc[index].p1].start = offset; |
1584 | 1540 | break; |
1585 | 1541 |
r241749 | r241750 | |
---|---|---|
307 | 307 | RAW, //!< One 16 bits word in p1 to be written raw, msb first, repeated p2 times |
308 | 308 | RAWBYTE, //!< One 8 bit byte in p1 to be written raw, msb first, repeated p2 times |
309 | 309 | RAWBITS, //!< A value of p2 bits in p1 to be copied as-is, msb first |
310 | SYNC_GCR5, //!< gcr5 sync byte | |
311 | 310 | TRACK_ID, //!< Track id byte, mfm-encoded |
312 | 311 | TRACK_ID_FM, //!< Track id byte, fm-encoded |
313 | 312 | TRACK_ID_DOS2_GCR5, //!< Track id byte, gcr5-encoded |
314 | 313 | TRACK_ID_DOS25_GCR5, //!< Track id byte, gcr5-encoded |
315 | 314 | TRACK_ID_GCR6, //!< Track id low 6 bits, gcr6-encoded |
316 | 315 | TRACK_ID_8N1, //!< Track id byte, 8N1-encoded |
317 | TRACK_ID_VICTOR_GCR5, //!< Track id byte, gcr5-encoded | |
318 | 316 | HEAD_ID, //!< Head id byte, mfm-encoded |
319 | 317 | HEAD_ID_FM, //!< Head id byte, fm-encoded |
320 | 318 | HEAD_ID_SWAP, //!< Head id byte swapped (0->1, 1->0), mfm-encoded |
r241749 | r241750 | |
348 | 346 | CRC_CBM_START, //!< Start a CBM checksum calculation (xor of original data values, gcr5-encoded), p1 = crc id |
349 | 347 | CRC_MACHEAD_START, //!< Start of the mac gcr6 sector header checksum calculation (xor of pre-encode 6-bits values, gcr6-encoded) |
350 | 348 | 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 | |
353 | 349 | CRC_END, //!< End the checksum, p1 = crc id |
354 | 350 | CRC, //!< Write a checksum in the apporpriate format, p1 = crc id |
355 | 351 | |
r241749 | r241750 | |
569 | 565 | UINT8 sbyte_mfm_r(const UINT8 *bitstream, int &pos, int track_size); |
570 | 566 | |
571 | 567 | private: |
572 | enum { CRC_NONE, CRC_AMIGA, CRC_CBM, CRC_CCITT, CRC_CCITT_FM, CRC_MACHEAD, CRC_FCS | |
568 | enum { CRC_NONE, CRC_AMIGA, CRC_CBM, CRC_CCITT, CRC_CCITT_FM, CRC_MACHEAD, CRC_FCS }; | |
573 | 569 | enum { MAX_CRC_COUNT = 64 }; |
574 | 570 | |
575 | 571 | //! Holds data used internally for generating CRCs. |
r241749 | r241750 | |
591 | 587 | void fixup_crc_ccitt_fm(UINT32 *buffer, const gen_crc_info *crc); |
592 | 588 | void fixup_crc_machead(UINT32 *buffer, const gen_crc_info *crc); |
593 | 589 | 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); | |
596 | 590 | void fixup_crcs(UINT32 *buffer, gen_crc_info *crcs); |
597 | 591 | void collect_crcs(const desc_e *desc, gen_crc_info *crcs); |
598 | 592 |
r241749 | r241750 | |
---|---|---|
1 | 1 | /* |
2 | * N | |
2 | * Nec PC-6001 cassette format handling | |
3 | 3 | */ |
4 | 4 | |
5 | 5 | #include "p6001_cas.h" |
r241749 | r241750 | |
---|---|---|
1 | 1 | /* |
2 | * N | |
2 | * Nec PC-6001 cassette format handling | |
3 | 3 | */ |
4 | 4 | |
5 | 5 | #ifndef PC6001_CAS_H_ |
r241749 | r241750 | |
---|---|---|
17 | 17 | |
18 | 18 | const char *pc98fdi_format::name() const |
19 | 19 | { |
20 | return "pc98 | |
20 | return "pc98-fdi"; | |
21 | 21 | } |
22 | 22 | |
23 | 23 | const char *pc98fdi_format::description() const |
r241749 | r241750 | |
---|---|---|
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 | ||
47 | victor9k_format::victor9k_format() | |
48 | { | |
49 | } | |
50 | ||
51 | const char *victor9k_format::name() const | |
52 | { | |
53 | return "victor9k"; | |
54 | } | |
55 | ||
56 | const char *victor9k_format::description() const | |
57 | { | |
58 | return "Victor 9000 disk image"; | |
59 | } | |
60 | ||
61 | const char *victor9k_format::extensions() const | |
62 | { | |
63 | return "img"; | |
64 | } | |
65 | ||
66 | int 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 | ||
77 | int 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 | ||
87 | floppy_image_format_t::desc_e* victor9k_format::get_sector_desc(const format &f, int ¤t_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 | ||
119 | void 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 | ||
130 | bool 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 | ||
178 | bool victor9k_format::supports_save() const | |
179 | { | |
180 | return false; | |
181 | } | |
182 | ||
183 | int victor9k_format::get_rpm(int head, int track) | |
184 | { | |
185 | return rpm[speed_zone[head][track]]; | |
186 | } | |
187 | ||
188 | const 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 | ||
198 | const UINT32 victor9k_format::cell_size[9] = | |
199 | { | |
200 | 1789, 1896, 2009, 2130, 2272, 2428, 2613, 2847, 2961 | |
201 | }; | |
202 | ||
203 | const 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 | ||
227 | const 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 | ||
251 | const int victor9k_format::rpm[9] = | |
252 | { | |
253 | 252, 267, 283, 300, 320, 342, 368, 401, 417 | |
254 | }; | |
255 | ||
256 | const floppy_format_type FLOPPY_VICTOR_9000_FORMAT = &floppy_image_format_creator<victor9k_format>; |
r241749 | r241750 | |
---|---|---|
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 | ||
16 | class victor9k_format : public floppy_image_format_t { | |
17 | public: | |
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 ¤t_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 | ||
43 | protected: | |
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 | ||
52 | extern const floppy_format_type FLOPPY_VICTOR_9000_FORMAT; | |
53 | ||
54 | ||
55 | FLOPPY_IDENTIFY( victor9k_dsk_identify ); | |
56 | ||
57 | FLOPPY_CONSTRUCT( victor9k_dsk_construct ); | |
58 | ||
59 | #endif |
r241749 | r241750 | |
---|---|---|
215 | 215 | $(LIBOBJ)/formats/tzx_cas.o \ |
216 | 216 | $(LIBOBJ)/formats/uef_cas.o \ |
217 | 217 | $(LIBOBJ)/formats/upd765_dsk.o \ |
218 | $(LIBOBJ)/formats/victor9k_dsk.o\ | |
219 | 218 | $(LIBOBJ)/formats/vg5k_cas.o \ |
220 | 219 | $(LIBOBJ)/formats/vt_cas.o \ |
221 | 220 | $(LIBOBJ)/formats/vt_dsk.o \ |
r241749 | r241750 | |
---|---|---|
8494 | 8494 | /* |
8495 | 8495 | ** Disable MMAP on platforms where it is known to not work |
8496 | 8496 | */ |
8497 | #if defined(__OpenBSD__) || defined(__QNXNTO__) | |
8497 | #if defined(__OpenBSD__) || defined(__QNXNTO__) | |
8498 | 8498 | # undef SQLITE_MAX_MMAP_SIZE |
8499 | 8499 | # define SQLITE_MAX_MMAP_SIZE 0 |
8500 | # ifdef __OS2__ | |
8501 | # undef SQLITE_OMIT_WAL | |
8502 | # define SQLITE_OMIT_WAL 0 | |
8503 | # endif | |
8504 | 8500 | #endif |
8505 | 8501 | |
8506 | 8502 | /* |
r241749 | r241750 | |
---|---|---|
72 | 72 | #include <stdlib.h> |
73 | 73 | #include <string.h> |
74 | 74 | #include <time.h> |
75 | #ifdef __OS2__ | |
76 | #include <sys/time.h> // struct timeval | |
77 | #endif | |
78 | 75 | #include <signal.h> |
79 | 76 | |
80 | 77 | #ifdef _WIN32 |
r241749 | r241750 | |
123 | 120 | #include <sys/socket.h> |
124 | 121 | #include <sys/select.h> |
125 | 122 | #define closesocket(x) close(x) |
126 | #ifdef __OS2__ | |
127 | typedef int socklen_t; | |
128 | #else | |
129 | 123 | #define __cdecl |
130 | #endif | |
131 | 124 | #define INVALID_SOCKET (-1) |
132 | 125 | #define to64(x) strtoll(x, NULL, 10) |
133 | 126 | typedef int sock_t; |
r241749 | r241750 | |
1177 | 1170 | #include <dlfcn.h> |
1178 | 1171 | #include <inttypes.h> |
1179 | 1172 | #include <pwd.h> |
1180 | #ifndef __OS2__ | |
1181 | 1173 | #define O_BINARY 0 |
1182 | #endif | |
1183 | 1174 | #define INT64_FMT PRId64 |
1184 | 1175 | typedef struct stat file_stat_t; |
1185 | 1176 | typedef pid_t process_id_t; |
r241749 | r241750 | |
5161 | 5152 | #define MAP_FAILED NULL |
5162 | 5153 | #define MAP_PRIVATE 0 |
5163 | 5154 | #define PROT_READ 0 |
5164 | #elif defined(__OS2__) | |
5165 | static 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 | |
5186 | 5155 | #else |
5187 | 5156 | #include <sys/mman.h> |
5188 | 5157 | #endif |
r241749 | r241750 | |
---|---|---|
39 | 39 | |
40 | 40 | void harddriv_state::update_68k_interrupts() |
41 | 41 | { |
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); | |
44 | 44 | } |
45 | 45 | |
46 | 46 | |
r241749 | r241750 | |
82 | 82 | |
83 | 83 | WRITE16_MEMBER(harddriv_state::hd68k_snd_reset_w) |
84 | 84 | { |
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); | |
87 | 87 | m_mainflag = m_soundflag = 0; |
88 | 88 | update_68k_interrupts(); |
89 | 89 | logerror("%06X:Reset sound\n", space.device().safe_pcbase()); |
r241749 | r241750 | |
235 | 235 | |
236 | 236 | WRITE16_MEMBER(harddriv_state::hdsnd68k_320ports_w) |
237 | 237 | { |
238 | | |
238 | m_sounddsp->space(AS_IO).write_word((offset & 7) << 1, data); | |
239 | 239 | } |
240 | 240 | |
241 | 241 |
r241749 | r241750 | |
---|---|---|
3361 | 3361 | ROM_LOAD( "spaceatt.e", 0x1800, 0x0800, CRC(7cf6f604) SHA1(469557de15178c4b2d686e5724e1006f7c20d7a4) ) |
3362 | 3362 | ROM_END |
3363 | 3363 | |
3364 | ROM_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) ) | |
3372 | ROM_END | |
3373 | ||
3374 | ||
3375 | ||
3376 | ||
3377 | ||
3378 | ||
3379 | ||
3380 | 3364 | ROM_START( spacecom ) |
3381 | 3365 | ROM_REGION( 0x10000, "maincpu", 0 ) |
3382 | 3366 | ROM_LOAD( "1f.ic67", 0x0000, 0x0400, BAD_DUMP CRC(703f2cbe) SHA1(b183f9fbedd8658399555c0ba21ecab6370e86cb) ) |
r241749 | r241750 | |
4696 | 4680 | GAMEL(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? |
4697 | 4681 | GAMEL(1980, ultrainv, invaders, invaders, sicv, driver_device, 0, ROT270, "Taito / Konami", "Ultra Invaders", GAME_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg? |
4698 | 4682 | GAMEL(1978, spaceatt, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg (Video Games GmbH)", "Space Attack (bootleg of Space Invaders)", GAME_SUPPORTS_SAVE, layout_invaders ) |
4699 | GAMEL(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 ) | |
4700 | 4683 | GAMEL(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 |
4701 | 4684 | GAMEL(1979, spacecom, invaders, spacecom, spacecom, _8080bw_state, spacecom, ROT270, "bootleg", "Space Combat (bootleg of Space Invaders)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_spacecom ) |
4702 | 4685 | GAME( 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 |
r241749 | r241750 | |
---|---|---|
193 | 193 | DECLARE_PALETTE_INIT(fstation); |
194 | 194 | DECLARE_WRITE_LINE_MEMBER(duart_irq_handler); |
195 | 195 | //INTERRUPT_GEN_MEMBER(adp_int); |
196 | void skattva_nvram_init(nvram_device &nvram, void *base, size_t size); | |
197 | 196 | }; |
198 | 197 | |
199 | void 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 | } | |
214 | 198 | |
215 | 199 | |
216 | ||
217 | 200 | /*************************************************************************** |
218 | 201 | |
219 | 202 | 68681 DUART <-> Microtouch touch screen controller communication |
r241749 | r241750 | |
294 | 277 | AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram") |
295 | 278 | ADDRESS_MAP_END |
296 | 279 | |
297 | static 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") | |
306 | ADDRESS_MAP_END | |
307 | ||
308 | 280 | static ADDRESS_MAP_START( quickjac_mem, AS_PROGRAM, 16, adp_state ) |
309 | 281 | AM_RANGE(0x000000, 0x01ffff) AM_ROM |
310 | 282 | AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc",msm6242_device, read, write, 0x00ff) |
r241749 | r241750 | |
341 | 313 | |
342 | 314 | static ADDRESS_MAP_START( fstation_mem, AS_PROGRAM, 16, adp_state ) |
343 | 315 | AM_RANGE(0x000000, 0x0fffff) AM_ROM |
316 | //400000-40001f? | |
344 | 317 | AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("h63484", h63484_device, status_r, address_w) |
345 | 318 | AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("h63484", h63484_device, data_r, data_w) |
346 | 319 | AM_RANGE(0x800100, 0x800101) AM_READWRITE(input_r, input_w) |
r241749 | r241750 | |
427 | 400 | PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN1 ) |
428 | 401 | INPUT_PORTS_END |
429 | 402 | |
430 | static 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 ) | |
450 | INPUT_PORTS_END | |
451 | ||
452 | 403 | static INPUT_PORTS_START( fstation ) |
453 | 404 | PORT_START("PA") |
454 | 405 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
r241749 | r241750 | |
576 | 527 | MCFG_CPU_PROGRAM_MAP(skattv_mem) |
577 | 528 | MACHINE_CONFIG_END |
578 | 529 | |
579 | static 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) | |
584 | MACHINE_CONFIG_END | |
585 | ||
586 | 530 | static MACHINE_CONFIG_DERIVED( backgamn, skattv ) |
587 | 531 | MCFG_CPU_MODIFY("maincpu") |
588 | 532 | MCFG_CPU_PROGRAM_MAP(backgamn_mem) |
r241749 | r241750 | |
720 | 664 | GAME( 1990, backgamn, 0, backgamn, skattv, driver_device, 0, ROT0, "ADP", "Backgammon", GAME_NOT_WORKING ) |
721 | 665 | GAME( 1993, quickjac, 0, quickjac, quickjac, driver_device, 0, ROT0, "ADP", "Quick Jack", GAME_NOT_WORKING ) |
722 | 666 | GAME( 1994, skattv, 0, skattv, skattv, driver_device, 0, ROT0, "ADP", "Skat TV", GAME_NOT_WORKING ) |
723 | GAME( 1995, skattva, skattv, skattv | |
667 | GAME( 1995, skattva, skattv, skattv, skattv, driver_device, 0, ROT0, "ADP", "Skat TV (version TS3)", GAME_NOT_WORKING ) | |
724 | 668 | GAME( 1997, fashiong, 0, fashiong, skattv, driver_device, 0, ROT0, "ADP", "Fashion Gambler (set 1)", GAME_NOT_WORKING ) |
725 | 669 | GAME( 1997, fashiong2, fashiong, fashiong, skattv, driver_device, 0, ROT0, "ADP", "Fashion Gambler (set 2)", GAME_NOT_WORKING ) |
726 | 670 | GAME( 1999, funlddlx, 0, funland, skattv, driver_device, 0, ROT0, "Stella", "Funny Land de Luxe", GAME_NOT_WORKING ) |
r241749 | r241750 | |
---|---|---|
428 | 428 | MCFG_CPU_PROGRAM_MAP(main_map) |
429 | 429 | MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen) |
430 | 430 | |
431 | MCFG_SLAPSTIC_ADD("slapstic") | |
432 | ||
433 | 431 | MCFG_MACHINE_START_OVERRIDE(atarig1_state,atarig1) |
434 | 432 | MCFG_MACHINE_RESET_OVERRIDE(atarig1_state,atarig1) |
435 | 433 |
r241749 | r241750 | |
---|---|---|
713 | 713 | MCFG_CPU_PROGRAM_MAP(main_map) |
714 | 714 | MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen) |
715 | 715 | |
716 | MCFG_SLAPSTIC_ADD("slapstic") | |
717 | ||
718 | 716 | MCFG_CPU_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8) |
719 | 717 | MCFG_CPU_PROGRAM_MAP(sound_map) |
720 | 718 |
r241749 | r241750 | |
---|---|---|
126 | 126 | |
127 | 127 | |
128 | 128 | #include "emu.h" |
129 | #include "includes/slapstic.h" | |
129 | 130 | #include "includes/atarisy2.h" |
130 | 131 | #include "sound/tms5220.h" |
131 | 132 | #include "sound/2151intf.h" |
r241749 | r241750 | |
221 | 222 | MACHINE_RESET_MEMBER(atarisy2_state,atarisy2) |
222 | 223 | { |
223 | 224 | atarigen_state::machine_reset(); |
224 | | |
225 | slapstic_reset(); | |
225 | 226 | scanline_timer_reset(*m_screen, 64); |
226 | 227 | |
227 | 228 | m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(atarisy2_state::atarisy2_direct_handler), this)); |
r241749 | r241750 | |
1207 | 1208 | MCFG_CPU_PROGRAM_MAP(sound_map) |
1208 | 1209 | MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, (double)MASTER_CLOCK/2/16/16/16/10) |
1209 | 1210 | |
1210 | MCFG_SLAPSTIC_ADD("slapstic") | |
1211 | ||
1212 | 1211 | MCFG_MACHINE_START_OVERRIDE(atarisy2_state,atarisy2) |
1213 | 1212 | MCFG_MACHINE_RESET_OVERRIDE(atarisy2_state,atarisy2) |
1214 | 1213 | |
r241749 | r241750 | |
3144 | 3143 | int i; |
3145 | 3144 | UINT8 *cpu1 = memregion("maincpu")->base(); |
3146 | 3145 | |
3147 | | |
3146 | slapstic_init(machine(), 105); | |
3148 | 3147 | |
3149 | 3148 | /* expand the 16k program ROMs into full 64k chunks */ |
3150 | 3149 | for (i = 0x10000; i < 0x90000; i += 0x20000) |
r241749 | r241750 | |
3165 | 3164 | /* without the default EEPROM, 720 hangs at startup due to communication |
3166 | 3165 | issues with the sound CPU; temporarily increasing the sound CPU frequency |
3167 | 3166 | to ~2.2MHz "fixes" the problem */ |
3168 | | |
3167 | slapstic_init(machine(), 107); | |
3169 | 3168 | |
3170 | 3169 | m_pedal_count = -1; |
3171 | 3170 | m_has_tms5220 = 1; |
r241749 | r241750 | |
3178 | 3177 | int i; |
3179 | 3178 | UINT8 *cpu1 = memregion("maincpu")->base(); |
3180 | 3179 | |
3181 | | |
3180 | slapstic_init(machine(), 108); | |
3182 | 3181 | |
3183 | 3182 | /* expand the 32k program ROMs into full 64k chunks */ |
3184 | 3183 | for (i = 0x10000; i < 0x90000; i += 0x20000) |
r241749 | r241750 | |
3194 | 3193 | int i; |
3195 | 3194 | UINT8 *cpu1 = memregion("maincpu")->base(); |
3196 | 3195 | |
3197 | | |
3196 | slapstic_init(machine(), 109); | |
3198 | 3197 | |
3199 | 3198 | /* expand the 32k program ROMs into full 64k chunks */ |
3200 | 3199 | for (i = 0x10000; i < 0x90000; i += 0x20000) |
r241749 | r241750 | |
3207 | 3206 | |
3208 | 3207 | DRIVER_INIT_MEMBER(atarisy2_state,apb) |
3209 | 3208 | { |
3210 | | |
3209 | slapstic_init(machine(), 110); | |
3211 | 3210 | |
3212 | 3211 | m_pedal_count = 2; |
3213 | 3212 | m_has_tms5220 = 1; |
r241749 | r241750 | |
---|---|---|
49 | 49 | |
50 | 50 | #include "emu.h" |
51 | 51 | #include "cpu/m6502/m6502.h" |
52 | #include "includes/slapstic.h" | |
52 | 53 | #include "includes/atetris.h" |
53 | 54 | #include "sound/sn76496.h" |
54 | 55 | #include "sound/pokey.h" |
r241749 | r241750 | |
114 | 115 | void atetris_state::machine_reset() |
115 | 116 | { |
116 | 117 | /* 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; | |
119 | 120 | reset_bank(); |
120 | 121 | |
121 | 122 | /* start interrupts going (32V clocked by 16V) */ |
r241749 | r241750 | |
133 | 134 | READ8_MEMBER(atetris_state::atetris_slapstic_r) |
134 | 135 | { |
135 | 136 | int result = m_slapstic_base[0x2000 + offset]; |
136 | int new_bank = | |
137 | int new_bank = slapstic_tweak(space, offset) & 1; | |
137 | 138 | |
138 | 139 | /* update for the new bank */ |
139 | 140 | if (new_bank != m_current_bank) |
r241749 | r241750 | |
307 | 308 | MCFG_CPU_ADD("maincpu", M6502,MASTER_CLOCK/8) |
308 | 309 | MCFG_CPU_PROGRAM_MAP(main_map) |
309 | 310 | |
310 | MCFG_SLAPSTIC_ADD("slapstic") | |
311 | ||
312 | 311 | MCFG_NVRAM_ADD_1FILL("nvram") |
313 | 312 | |
314 | 313 | /* video hardware */ |
r241749 | r241750 | |
457 | 456 | { |
458 | 457 | UINT8 *rgn = memregion("maincpu")->base(); |
459 | 458 | |
460 | | |
459 | slapstic_init(machine(), 101); | |
461 | 460 | m_slapstic_source = &rgn[0x10000]; |
462 | 461 | m_slapstic_base = &rgn[0x04000]; |
463 | 462 | } |
r241749 | r241750 | |
---|---|---|
256 | 256 | PORT_DIPSETTING( 0x00, DEF_STR( French ) ) |
257 | 257 | INPUT_PORTS_END |
258 | 258 | |
259 | static INPUT_PORTS_START( botanic | |
259 | static INPUT_PORTS_START( botanic ) | |
260 | 260 | PORT_INCLUDE( bagman ) |
261 | 261 | |
262 | 262 | 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" ) | |
271 | 263 | PORT_DIPNAME( 0x08, 0x08, "Invulnerability Fruits" ) PORT_DIPLOCATION("SW1:4") |
272 | 264 | PORT_DIPSETTING( 0x08, "3" ) |
273 | 265 | PORT_DIPSETTING( 0x00, DEF_STR( None ) ) |
r241749 | r241750 | |
276 | 268 | PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW1:7" ) |
277 | 269 | INPUT_PORTS_END |
278 | 270 | |
279 | static INPUT_PORTS_START( botanici ) | |
280 | PORT_INCLUDE( botanicf ) | |
281 | 271 | |
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" ) | |
298 | INPUT_PORTS_END | |
299 | ||
300 | ||
301 | 272 | static INPUT_PORTS_START( squaitsa ) |
302 | 273 | PORT_START("P1") |
303 | 274 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) |
r241749 | r241750 | |
863 | 834 | ROM_LOAD( "6331-1.3r", 0x0020, 0x0020, CRC(14ee1603) SHA1(f3c071399606b727ae7dd0bfc21e1c6ca2d43c7c) ) |
864 | 835 | ROM_END |
865 | 836 | |
866 | ||
867 | ||
868 | ||
869 | 837 | ROM_START( botanic ) |
870 | 838 | 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) ) | |
889 | ROM_END | |
890 | ||
891 | ROM_START( botanicf ) | |
892 | ROM_REGION( 0x10000, "maincpu", 0 ) | |
893 | 839 | ROM_LOAD( "bota_05.9e", 0x0000, 0x1000, CRC(cc66e6f8) SHA1(251481b16f8925a11f02f49e5a79f6524460aa6c) ) |
894 | 840 | ROM_LOAD( "bota_06.9f", 0x1000, 0x1000, CRC(59892f41) SHA1(eb01601a9163679560b878366aaf7cc0fb54a3e9) ) |
895 | 841 | ROM_LOAD( "bota_07.9j", 0x2000, 0x1000, CRC(b7c544ef) SHA1(75b5224c313e97c2c02ca7e9bc3f682278cb7a5c) ) |
r241749 | r241750 | |
988 | 934 | |
989 | 935 | GAME( 1983, pickin, 0, pickin, pickin, driver_device, 0, ROT270, "Valadon Automation", "Pickin'", 0 ) |
990 | 936 | |
991 | GAME( 1983, botanic, 0, botanic, botanici,driver_device, 0, ROT90, "Itisa", "Botanic (English / Spanish)", 0 ) | |
992 | GAME( 1984, botanicf, botanic, botanic, botanicf,driver_device, 0, ROT270, "Itisa (Valadon Automation license)", "Botanic (French)", 0 ) | |
937 | GAME( 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) | |
993 | 938 | |
994 | 939 | GAME( 1984, squaitsa, 0, squaitsa,squaitsa, driver_device,0, ROT0, "Itisa", "Squash (Itisa)", 0 ) |
r241749 | r241750 | |
---|---|---|
1 | 1 | /*************************************************************************** |
2 | 2 | |
3 | Tekunon Kougyou | |
3 | Tekunon Kougyou Beam Invader hardware | |
4 | 4 | |
5 | 5 | driver by Zsolt Vasvari |
6 | 6 | |
r241749 | r241750 | |
385 | 385 | * |
386 | 386 | *************************************/ |
387 | 387 | |
388 | GAMEL( 1979, beaminv, 0, beaminv, beaminv, | |
388 | GAMEL( 1979, beaminv, 0, beaminv, beaminv, driver_device, 0, ROT270, "Tekunon Kougyou", "Beam Invader", GAME_NO_SOUND | GAME_SUPPORTS_SAVE, layout_beaminv ) | |
389 | 389 | GAMEL( 1979, pacominv, beaminv, beaminv, pacominv, driver_device, 0, ROT270, "Pacom Corporation", "Pacom Invader", GAME_NO_SOUND | GAME_SUPPORTS_SAVE, layout_beaminv ) |
r241749 | r241750 | |
---|---|---|
121 | 121 | |
122 | 122 | #include "emu.h" |
123 | 123 | #include "cpu/i386/i386.h" |
124 | #include "machine/ | |
124 | #include "machine/pci.h" | |
125 | 125 | #include "machine/pckeybrd.h" |
126 | 126 | #include "machine/idectrl.h" |
127 | 127 | #include "video/pc_vga.h" |
128 | 128 | #include "sound/dac.h" |
129 | 129 | #include "machine/pcshare.h" |
130 | #include "machine/ds128x.h" | |
131 | 130 | #include "bus/isa/trident.h" |
132 | 131 | |
133 | 132 | |
r241749 | r241750 | |
662 | 661 | /* video hardware */ |
663 | 662 | MCFG_FRAGMENT_ADD( pcvideo_trident_vga ) |
664 | 663 | |
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 | ||
670 | 664 | /* sound hardware */ |
671 | 665 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker","rspeaker") |
672 | 666 | MCFG_DAC_ADD("dac_l") |
r241749 | r241750 | |
---|---|---|
1788 | 1788 | ROM_END |
1789 | 1789 | |
1790 | 1790 | |
1791 | ROM_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) ) | |
1820 | ROM_END | |
1821 | ||
1822 | 1791 | /* This set came from a 'Silver Land' board with Silver Land GFX roms, however, the program roms are nearly |
1823 | 1792 | the same as River Patrol but appear to have an original ORCA copyright |
1824 | 1793 | |
r241749 | r241750 | |
2394 | 2363 | GAME( 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 |
2395 | 2364 | GAME( 1981, ckongalc, ckong, cclimber, ckong, driver_device, 0, ROT270, "bootleg (Alca)", "Crazy Kong (Alca bootleg)", 0 ) |
2396 | 2365 | GAME( 1981, monkeyd, ckong, cclimber, ckong, driver_device, 0, ROT270, "bootleg", "Monkey Donkey", 0 ) |
2397 | GAME( 1981, dking, ckong, cclimber, ckong, cclimber_state, dking, ROT270, "bootleg", "Donkey King", 0 ) | |
2398 | GAME( 1981, ckongdks, ckong, cclimber, ckong, cclimber_state, dking, ROT270, "bootleg", "Donkey Kong (Spanish Crazy Kong bootleg)", 0 ) | |
2366 | GAME( 1981, dking, ckong , cclimber, ckong, cclimber_state, dking, ROT270, "bootleg", "Donkey King", 0 ) | |
2399 | 2367 | |
2400 | 2368 | /* these sets have correct colours, and also contain the graphics used for the extra attract screen in the BG roms, but it is unused |
2401 | 2369 | - the Falcon logo in the text roms is still unused |
r241749 | r241750 | |
---|---|---|
358 | 358 | |
359 | 359 | #include "emu.h" |
360 | 360 | #include "cpu/i386/i386.h" |
361 | #include "machine/ | |
361 | #include "machine/pci.h" | |
362 | 362 | #include "machine/pic8259.h" |
363 | 363 | #include "machine/pit8253.h" |
364 | 364 | #include "machine/idectrl.h" |
r241749 | r241750 | |
---|---|---|
313 | 313 | |
314 | 314 | #include "emu.h" |
315 | 315 | #include "cpu/powerpc/ppc.h" |
316 | #include "machine/ | |
316 | #include "machine/pci.h" | |
317 | 317 | #include "machine/ataintf.h" |
318 | 318 | #include "machine/idehd.h" |
319 | 319 | #include "machine/jvshost.h" |
r241749 | r241750 | |
---|---|---|
18 | 18 | - i8237 purpose is unknown (missing ROM for comms?). |
19 | 19 | - verify zooming etc. our current algorithm is a bit ugly for text |
20 | 20 | |
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 | ||
26 | 22 | ======================================================================================================= |
27 | 23 | |
28 | 24 | Cool Riders |
29 | 25 | Sega 1994 |
30 | 26 | |
31 | This game runs on SYSTEM-H1 hardware. The hardware seems overly complex for a | |
32 | 2D 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 | |
34 | custom chips are off-the-shelf Hitachi/Toshiba gate-arrays. | |
27 | This game runs on SYSTEM-H1 hardware. Only one known game exists on this | |
28 | PCB and this is it. The hardware seems overly complex for a 2D bike | |
29 | racing 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, | |
31 | many of the custom chips are off-the-shelf Hitachi/Toshiba gate-arrays. | |
35 | 32 | |
36 | 33 | |
37 | 34 | PCB Layouts |
r241749 | r241750 | |
---|---|---|
4002 | 4002 | ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) ) |
4003 | 4003 | |
4004 | 4004 | ROM_REGION( 0x0200, "bboardplds", 0 ) |
4005 | ROM_LOAD( "sth63b.1a", 0x0000, 0x0117, | |
4005 | ROM_LOAD( "sth63b.1a", 0x0000, 0x0117, NO_DUMP ) | |
4006 | 4006 | ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) |
4007 | 4007 | ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) ) |
4008 | 4008 | |
r241749 | r241750 | |
4483 | 4483 | ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) ) |
4484 | 4484 | |
4485 | 4485 | ROM_REGION( 0x0200, "bboardplds", 0 ) |
4486 | ROM_LOAD( "ara63b.1a", 0x0000, 0x0117, | |
4486 | ROM_LOAD( "ara63b.1a", 0x0000, 0x0117, NO_DUMP ) | |
4487 | 4487 | ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) |
4488 | 4488 | ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) ) |
4489 | 4489 |
r241749 | r241750 | |
---|---|---|
514 | 514 | ROM_RELOAD(0x200000,0x200000) |
515 | 515 | |
516 | 516 | ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) |
517 | // ROM_LOAD("mushisama_u2", 0x000000, 0x8400000, CRC(f1e0cf65) SHA1(d00d950422309fdf08efe1e2d5f040beb45ee6fb) ) // bad rom, one corrupt asset vs. below | |
517 | 518 | ROM_LOAD("mushisam_u2", 0x000000, 0x8400000, CRC(4f0a842a) SHA1(33f3550ec676a7088b6348cd72c16cc6594afb84) ) /* (2004/10/12.MASTER VER.) */ |
518 | 519 | |
519 | 520 | ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) |
r241749 | r241750 | |
527 | 528 | ROM_RELOAD(0x200000,0x200000) |
528 | 529 | |
529 | 530 | ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) |
531 | // ROM_LOAD("mushisamb_u2", 0x000000, 0x8400000, CRC(6cc9d1a9) SHA1(17907798dce1defadd10354cec6c8d364e045570) ) // bad rom, one corrupt asset vs. below | |
530 | 532 | ROM_LOAD("mushisam_u2", 0x000000, 0x8400000, CRC(4f0a842a) SHA1(33f3550ec676a7088b6348cd72c16cc6594afb84) ) /* (2004/10/12.MASTER VER.) */ |
531 | 533 | |
532 | 534 | ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) |
r241749 | r241750 | |
614 | 616 | ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(c631a766) SHA1(8bb6934a2f5b8a9841c3dcf85192b1743773dd8b) ) |
615 | 617 | ROM_END |
616 | 618 | |
617 | ROM_START( futaribl ) | |
619 | ROM_START( futaribl ) | |
618 | 620 | 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) ) | |
628 | ROM_END | |
629 | ||
630 | ROM_START( futariblj ) | |
631 | ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) | |
632 | 621 | ROM_LOAD16_WORD_SWAP( "futariblk_u4", 0x000000, 0x200000, CRC(6db13c62) SHA1(6a53ce7f70b754936ccbb3a4674d4b2f03979644) ) /* (2007/12/11 BLACK LABEL VER) */ |
633 | 622 | ROM_RELOAD(0x200000,0x200000) |
634 | 623 | |
r241749 | r241750 | |
855 | 844 | // The black label versions are intentionally not set as clones, they were re-releases with different game codes, not bugfixes. |
856 | 845 | |
857 | 846 | // CA011 Mushihime-Sama |
858 | GAME( 2004, mushisam, 0, cv1k, cv1k, cv1k_state, mushisama, ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12.MASTER VER.)", 0 ) | |
859 | GAME( 2004, mushisama, mushisam, cv1k, cv1k, cv1k_state, mushisam, ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12 MASTER VER.)", 0 ) | |
860 | GAME( 2004, mushisamb, mushisam, cv1k, cv1k, cv1k_state, mushisama, ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12 MASTER VER)", 0 ) | |
847 | GAME( 2004, mushisam, 0, cv1k, cv1k, cv1k_state, mushisama, ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12.MASTER VER.)", 0 ) | |
848 | GAME( 2004, mushisama, mushisam, cv1k, cv1k, cv1k_state, mushisam, ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12 MASTER VER.)", 0 ) | |
849 | GAME( 2004, mushisamb, mushisam, cv1k, cv1k, cv1k_state, mushisama, ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12 MASTER VER)", 0 ) | |
861 | 850 | |
862 | 851 | // CA012 Ibara |
863 | GAME( 2005, ibara, 0, cv1k, cv1k, cv1k_state, mushisam, ROT270, "Cave (AMI license)", "Ibara (2005/03/22 MASTER VER..)", | |
852 | GAME( 2005, ibara, 0, cv1k, cv1k, cv1k_state, mushisam, ROT270, "Cave (AMI license)", "Ibara (2005/03/22 MASTER VER..)", 0 ) | |
864 | 853 | |
865 | 854 | // CA012B Ibara Kuro Black Label |
866 | GAME( 2006, ibarablk, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Ibara Kuro Black Label (2006/02/06. MASTER VER.)", 0 ) | |
867 | GAME( 2006, ibarablka, ibarablk, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Ibara Kuro Black Label (2006/02/06 MASTER VER.)", 0 ) | |
855 | GAME( 2006, ibarablk, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Ibara Kuro Black Label (2006/02/06. MASTER VER.)", 0 ) | |
856 | GAME( 2006, ibarablka, ibarablk, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Ibara Kuro Black Label (2006/02/06 MASTER VER.)", 0 ) | |
868 | 857 | |
869 | 858 | // CA013 Espgaluda II |
870 | GAME( 2005, espgal2, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Espgaluda II (2005/11/14 MASTER VER)", | |
859 | GAME( 2005, espgal2, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Espgaluda II (2005/11/14 MASTER VER)", 0 ) | |
871 | 860 | |
872 | 861 | // CA??? Puzzle! Mushihime-Tama |
873 | GAME( 2005, mushitam, 0, cv1k, cv1k, cv1k_state, mushisam, ROT0, "Cave (AMI license)", "Puzzle! Mushihime-Tama (2005/09/09.MASTER VER)", 0 ) | |
874 | GAME( 2005, mushitama, mushitam, cv1k, cv1k, cv1k_state, mushisam, ROT0, "Cave (AMI license)", "Puzzle! Mushihime-Tama (2005/09/09 MASTER VER)", 0 ) | |
862 | GAME( 2005, mushitam, 0, cv1k, cv1k, cv1k_state, mushisam, ROT0, "Cave (AMI license)", "Puzzle! Mushihime-Tama (2005/09/09.MASTER VER)", 0 ) | |
863 | GAME( 2005, mushitama, mushitam, cv1k, cv1k, cv1k_state, mushisam, ROT0, "Cave (AMI license)", "Puzzle! Mushihime-Tama (2005/09/09 MASTER VER)", 0 ) | |
875 | 864 | |
876 | 865 | // CA014 Pink Sweets: Ibara Sorekara |
877 | GAME( 2006, pinkswts, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER....)", 0 ) | |
878 | GAME( 2006, pinkswtsa, pinkswts, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER...)", 0 ) | |
879 | GAME( 2006, pinkswtsb, pinkswts, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER.)", 0 ) | |
880 | GAME( 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? | |
866 | GAME( 2006, pinkswts, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER....)", 0 ) | |
867 | GAME( 2006, pinkswtsa, pinkswts, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER...)", 0 ) | |
868 | GAME( 2006, pinkswtsb, pinkswts, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER.)", 0 ) | |
869 | GAME( 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? | |
881 | 870 | |
882 | 871 | // CA015 Mushihime-Sama Futari |
883 | GAME( 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 ) | |
884 | GAME( 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 ) | |
885 | GAME( 2006, futari10, futari15, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.0 (2006/10/23 MASTER VER.)", 0 ) | |
872 | GAME( 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 ) | |
873 | GAME( 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 ) | |
874 | GAME( 2006, futari10, futari15, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.0 (2006/10/23 MASTER VER.)", 0 ) | |
886 | 875 | |
887 | 876 | // CA016 Muchi Muchi Pork! |
888 | GAME( 2007, mmpork, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Muchi Muchi Pork! (2007/ 4/17 MASTER VER.)", | |
877 | GAME( 2007, mmpork, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Muchi Muchi Pork! (2007/ 4/17 MASTER VER.)", 0 ) | |
889 | 878 | |
890 | 879 | // CA015B Mushihime-Sama Futari Black Label |
891 | GAME( 2007, futaribl, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Black Label (2009/11/27 INTERNATIONAL BL)", 0 ) | |
892 | GAME( 2007, futariblj, futaribl, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Black Label (2007/12/11 BLACK LABEL VER)", 0 ) | |
880 | GAME( 2007, futaribl, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Black Label (2007/12/11 BLACK LABEL VER)", 0 ) | |
893 | 881 | |
894 | 882 | // CA017 Deathsmiles |
895 | GAME( 2007, deathsml, 0, cv1k, cv1k, cv1k_state, espgal2, ROT0, "Cave (AMI license)", "Deathsmiles (2007/10/09 MASTER VER)", | |
883 | GAME( 2007, deathsml, 0, cv1k, cv1k, cv1k_state, espgal2, ROT0, "Cave (AMI license)", "Deathsmiles (2007/10/09 MASTER VER)", 0 ) | |
896 | 884 | |
897 | 885 | // CA017B Deathsmiles Black Label |
898 | GAME( 2008, dsmbl, 0, cv1k_d, cv1k, cv1k_state, espgal2, ROT0, "Cave (AMI license)", "Deathsmiles MegaBlack Label (2008/10/06 MEGABLACK LABEL VER)", | |
886 | GAME( 2008, dsmbl, 0, cv1k_d, cv1k, cv1k_state, espgal2, ROT0, "Cave (AMI license)", "Deathsmiles MegaBlack Label (2008/10/06 MEGABLACK LABEL VER)", 0 ) | |
899 | 887 | |
900 | 888 | // CA019 Do-Don-Pachi Dai-Fukkatsu |
901 | GAME( 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 ) | |
902 | GAME( 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 ) | |
889 | GAME( 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 ) | |
890 | GAME( 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 ) | |
903 | 891 | |
904 | 892 | // CMDL01 Medal Mahjong Moukari Bancho |
905 | GAME( 2007, mmmbanc, 0, cv1k, cv1k, cv1k_state, espgal2, ROT0, "Cave (AMI license)", "Medal Mahjong Moukari Bancho (2007/06/05 MASTER VER.)", | |
893 | GAME( 2007, mmmbanc, 0, cv1k, cv1k, cv1k_state, espgal2, ROT0, "Cave (AMI license)", "Medal Mahjong Moukari Bancho (2007/06/05 MASTER VER.)", GAME_NOT_WORKING ) |
r241749 | r241750 | |
---|---|---|
389 | 389 | MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2) |
390 | 390 | MCFG_CPU_PROGRAM_MAP(main_map) |
391 | 391 | |
392 | MCFG_SLAPSTIC_ADD("slapstic") | |
393 | ||
394 | 392 | MCFG_CPU_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8) |
395 | 393 | MCFG_CPU_PROGRAM_MAP(sound_map) |
396 | 394 | MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, (double)ATARI_CLOCK_14MHz/4/4/16/16/14) |
r241749 | r241750 | |
---|---|---|
13 | 13 | |
14 | 14 | #include "emu.h" |
15 | 15 | #include "cpu/i386/i386.h" |
16 | #include "machine/ | |
16 | #include "machine/pci.h" | |
17 | 17 | #include "machine/pckeybrd.h" |
18 | 18 | #include "machine/idectrl.h" |
19 | 19 | #include "video/pc_vga.h" |
r241749 | r241750 | |
---|---|---|
71 | 71 | |
72 | 72 | #include "emu.h" |
73 | 73 | #include "cpu/i386/i386.h" |
74 | #include "machine/ | |
74 | #include "machine/pci.h" | |
75 | 75 | #include "machine/pckeybrd.h" |
76 | 76 | #include "machine/idectrl.h" |
77 | 77 | #include "video/voodoo.h" |
r241749 | r241750 | |
---|---|---|
6352 | 6352 | } |
6353 | 6353 | |
6354 | 6354 | j = 1; |
6355 | i = 0x81; | |
6356 | 6355 | |
6357 | do | |
6356 | for (i = 0x81; i < (0x81 + ARRAY_LENGTH(rcdino4_keys80));) | |
6358 | 6357 | { |
6359 | 6358 | UINT8 key; |
6360 | 6359 | |
r241749 | r241750 | |
6419 | 6418 | while (j < 0x100); |
6420 | 6419 | |
6421 | 6420 | j &= 0xff; |
6421 | do { | |
6422 | assert((i+1 - 0x81) >= 0 && (i+1 - 0x81) < ARRAY_LENGTH(rcdino4_keys80)); | |
6423 | } while (!rcdino4_keys80[++i - 0x81]); | |
6422 | 6424 | |
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 | ||
6431 | 6425 | if ((i == 0xa4) |
6432 | 6426 | || (i == 0xb0) |
6433 | 6427 | || (i == 0xf8) |
r241749 | r241750 | |
6436 | 6430 | j = 0; /* re-align offset after skipping some pages */ |
6437 | 6431 | } |
6438 | 6432 | } |
6439 | while (1); | |
6440 | 6433 | } |
6441 | 6434 | |
6442 | 6435 | DRIVER_INIT_MEMBER(funworld_state, rcdinch) |
r241749 | r241750 | |
---|---|---|
10798 | 10798 | GAME( 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 |
10799 | 10799 | |
10800 | 10800 | /* like fantastc, plus larger spriteram, and maybe different bullet hw(?) */ |
10801 | GAME( 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 | |
10801 | GAME( 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 | |
10802 | 10802 | |
10803 | 10803 | /* extra ROMs, protection, and sound hardware replaced with AY8910 */ |
10804 | 10804 | GAME( 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? |
r241749 | r241750 | |
---|---|---|
64 | 64 | |
65 | 65 | #include "emu.h" |
66 | 66 | #include "cpu/i386/i386.h" |
67 | #include "machine/ | |
67 | #include "machine/pci.h" | |
68 | 68 | #include "machine/pcshare.h" |
69 | 69 | #include "machine/pckeybrd.h" |
70 | 70 | #include "machine/idectrl.h" |
r241749 | r241750 | |
---|---|---|
32 | 32 | #include "machine/cr589.h" |
33 | 33 | //#include "machine/i82371sb.h" |
34 | 34 | //#include "machine/i82439tx.h" |
35 | #include "machine/ | |
35 | #include "machine/pci.h" | |
36 | 36 | #include "machine/pcshare.h" |
37 | 37 | #include "machine/pckeybrd.h" |
38 | 38 | #include "video/pc_vga.h" |
r241749 | r241750 | |
---|---|---|
499 | 499 | MCFG_CPU_PROGRAM_MAP(main_map) |
500 | 500 | MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen) |
501 | 501 | |
502 | MCFG_SLAPSTIC_ADD("slapstic") | |
503 | ||
504 | 502 | MCFG_CPU_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8) |
505 | 503 | MCFG_CPU_PROGRAM_MAP(sound_map) |
506 | 504 |
r241749 | r241750 | |
---|---|---|
330 | 330 | #include "includes/slapstic.h" |
331 | 331 | #include "includes/harddriv.h" |
332 | 332 | |
333 | #include "racedrivpan.lh" | |
334 | 333 | |
335 | 334 | /************************************* |
336 | 335 | * |
r241749 | r241750 | |
338 | 337 | * |
339 | 338 | *************************************/ |
340 | 339 | |
341 | const device_type HARDDRIV_DEVICE = &device_creator<harddriv_state>; | |
342 | ||
343 | harddriv_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 | ||
514 | class harddriv_new_state : public driver_device | |
515 | { | |
516 | public: | |
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 | ||
525 | WRITE16_MEMBER( harddriv_state::watchdog_reset16_w ) | |
526 | { | |
527 | ||
528 | } | |
529 | ||
530 | 340 | static ADDRESS_MAP_START( driver_68k_map, AS_PROGRAM, 16, harddriv_state ) |
531 | 341 | ADDRESS_MAP_UNMAP_HIGH |
532 | 342 | AM_RANGE(0x000000, 0x0fffff) AM_ROM |
r241749 | r241750 | |
535 | 345 | AM_RANGE(0x608000, 0x60bfff) AM_WRITE(watchdog_reset16_w) |
536 | 346 | AM_RANGE(0x60c000, 0x60ffff) AM_WRITE(hd68k_irq_ack_w) |
537 | 347 | AM_RANGE(0xa00000, 0xa7ffff) AM_WRITE(hd68k_wr0_write) |
538 | AM_RANGE(0xa80000, 0xafffff) AM_READ | |
348 | AM_RANGE(0xa80000, 0xafffff) AM_READ_PORT("a80000") AM_WRITE(hd68k_wr1_write) | |
539 | 349 | AM_RANGE(0xb00000, 0xb7ffff) AM_READWRITE(hd68k_adc8_r, hd68k_wr2_write) |
540 | 350 | AM_RANGE(0xb80000, 0xbfffff) AM_READWRITE(hd68k_adc12_r, hd68k_adc_control_w) |
541 | 351 | AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(hd68k_gsp_io_r, hd68k_gsp_io_w) |
r241749 | r241750 | |
582 | 392 | AM_RANGE(0x608000, 0x60bfff) AM_WRITE(watchdog_reset16_w) |
583 | 393 | AM_RANGE(0x60c000, 0x60ffff) AM_READWRITE(hd68k_port0_r, hd68k_irq_ack_w) |
584 | 394 | AM_RANGE(0xa00000, 0xa7ffff) AM_WRITE(hd68k_wr0_write) |
585 | AM_RANGE(0xa80000, 0xafffff) AM_READ | |
395 | AM_RANGE(0xa80000, 0xafffff) AM_READ_PORT("a80000") AM_WRITE(hd68k_wr1_write) | |
586 | 396 | AM_RANGE(0xb00000, 0xb7ffff) AM_READWRITE(hd68k_adc8_r, hd68k_wr2_write) |
587 | 397 | AM_RANGE(0xb80000, 0xbfffff) AM_READWRITE(hd68k_adc12_r, hd68k_adc_control_w) |
588 | 398 | AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(hd68k_gsp_io_r, hd68k_gsp_io_w) |
r241749 | r241750 | |
620 | 430 | AM_RANGE(0x608000, 0x60bfff) AM_WRITE(watchdog_reset16_w) |
621 | 431 | AM_RANGE(0x60c000, 0x60ffff) AM_READWRITE(hd68k_port0_r, hd68k_irq_ack_w) |
622 | 432 | AM_RANGE(0xa00000, 0xa7ffff) AM_WRITE(hd68k_wr0_write) |
623 | AM_RANGE(0xa80000, 0xafffff) AM_READ | |
433 | AM_RANGE(0xa80000, 0xafffff) AM_READ_PORT("a80000") AM_WRITE(hd68k_wr1_write) | |
624 | 434 | AM_RANGE(0xb00000, 0xb7ffff) AM_READWRITE(hd68k_adc8_r, hd68k_wr2_write) |
625 | 435 | AM_RANGE(0xb80000, 0xbfffff) AM_READWRITE(hd68k_adc12_r, hd68k_adc_control_w) |
626 | 436 | AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(hd68k_gsp_io_r, hd68k_gsp_io_w) |
r241749 | r241750 | |
787 | 597 | |
788 | 598 | |
789 | 599 | |
790 | ||
791 | 600 | /************************************* |
792 | 601 | * |
793 | 602 | * Port definitions |
r241749 | r241750 | |
795 | 604 | *************************************/ |
796 | 605 | |
797 | 606 | static INPUT_PORTS_START( harddriv ) |
798 | PORT_START(" | |
607 | PORT_START("IN0") /* 600000 */ | |
799 | 608 | PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" ) |
800 | 609 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
801 | 610 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
802 | 611 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* HBLANK */ |
803 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK(" | |
612 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") | |
804 | 613 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 12-bit EOC */ |
805 | 614 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 8-bit EOC */ |
806 | 615 | PORT_SERVICE( 0x20, IP_ACTIVE_LOW ) |
807 | 616 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) |
808 | 617 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 ) |
809 | 618 | |
810 | PORT_START(" | |
619 | PORT_START("SW1") /* 600002 */ | |
811 | 620 | PORT_DIPNAME( 0x01, 0x01, "SW1:8" ) |
812 | 621 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
813 | 622 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
r241749 | r241750 | |
833 | 642 | PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) |
834 | 643 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
835 | 644 | |
836 | PORT_START(" | |
645 | PORT_START("a80000") | |
837 | 646 | PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Abort") /* abort */ |
838 | 647 | PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Key") /* key */ |
839 | 648 | PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 ) /* aux coin */ |
840 | 649 | PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED ) |
841 | 650 | |
842 | PORT_START(" | |
651 | PORT_START("8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */ | |
843 | 652 | PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal") |
844 | 653 | |
845 | PORT_START(" | |
654 | PORT_START("8BADC1") /* b00000 - 8 bit ADC 1 - clutch pedal */ | |
846 | 655 | PORT_BIT( 0xff, 0x00, IPT_PEDAL3 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) PORT_NAME("Clutch Pedal") |
847 | 656 | |
848 | PORT_START(" | |
657 | PORT_START("8BADC2") /* b00000 - 8 bit ADC 2 - seat */ | |
849 | 658 | PORT_BIT( 0xff, 0x80, IPT_SPECIAL ) |
850 | 659 | |
851 | PORT_START(" | |
660 | PORT_START("8BADC3") /* b00000 - 8 bit ADC 3 - shifter lever Y */ | |
852 | 661 | 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") |
853 | 662 | |
854 | PORT_START(" | |
663 | PORT_START("8BADC4") /* b00000 - 8 bit ADC 4 - shifter lever X*/ | |
855 | 664 | 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") |
856 | 665 | |
857 | PORT_START(" | |
666 | PORT_START("8BADC5") /* b00000 - 8 bit ADC 5 - wheel */ | |
858 | 667 | PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Wheel") |
859 | 668 | |
860 | PORT_START(" | |
669 | PORT_START("8BADC6") /* b00000 - 8 bit ADC 6 - line volts */ | |
861 | 670 | PORT_BIT( 0xff, 0x80, IPT_SPECIAL ) |
862 | 671 | |
863 | PORT_START(" | |
672 | PORT_START("8BADC7") /* b00000 - 8 bit ADC 7 - shift force */ | |
864 | 673 | PORT_BIT( 0xff, 0x80, IPT_SPECIAL ) |
865 | 674 | |
866 | PORT_START(" | |
675 | PORT_START("12BADC0") /* b80000 - 12 bit ADC 0 - steering wheel */ | |
867 | 676 | PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel") |
868 | 677 | |
869 | PORT_START(" | |
678 | PORT_START("12BADC1") /* b80000 - 12 bit ADC 1 - force brake */ | |
870 | 679 | PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Force Brake") |
871 | 680 | |
872 | PORT_START(" | |
681 | PORT_START("12BADC2") /* b80000 - 12 bit ADC 2 */ | |
873 | 682 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
874 | 683 | |
875 | PORT_START(" | |
684 | PORT_START("12BADC3") /* b80000 - 12 bit ADC 3 */ | |
876 | 685 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
877 | ||
878 | 686 | INPUT_PORTS_END |
879 | 687 | |
880 | 688 | |
881 | 689 | static INPUT_PORTS_START( racedriv ) |
882 | PORT_START(" | |
690 | PORT_START("IN0") /* 600000 */ | |
883 | 691 | PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" ) |
884 | 692 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
885 | 693 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
886 | 694 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* HBLANK */ |
887 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK(" | |
695 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") | |
888 | 696 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 12-bit EOC */ |
889 | 697 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 8-bit EOC */ |
890 | 698 | PORT_SERVICE( 0x20, IP_ACTIVE_LOW ) |
891 | 699 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) |
892 | 700 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) |
893 | 701 | |
894 | PORT_START(" | |
702 | PORT_START("SW1") /* 600002 */ | |
895 | 703 | PORT_DIPNAME( 0x01, 0x01, "SW1:8" ) |
896 | 704 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
897 | 705 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
r241749 | r241750 | |
917 | 725 | PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) |
918 | 726 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
919 | 727 | |
920 | PORT_START(" | |
728 | PORT_START("a80000") | |
921 | 729 | PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Abort") /* abort */ |
922 | 730 | PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Key") /* key */ |
923 | 731 | PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 ) /* aux coin */ |
924 | 732 | PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED ) |
925 | 733 | |
926 | PORT_START(" | |
734 | PORT_START("8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */ | |
927 | 735 | PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal") |
928 | 736 | |
929 | PORT_START(" | |
737 | PORT_START("8BADC1") /* b00000 - 8 bit ADC 1 - clutch pedal */ | |
930 | 738 | PORT_BIT( 0xff, 0x00, IPT_PEDAL3 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) PORT_NAME("Clutch Pedal") |
931 | 739 | |
932 | PORT_START(" | |
740 | PORT_START("8BADC2") /* b00000 - 8 bit ADC 2 - seat */ | |
933 | 741 | PORT_BIT( 0xff, 0x80, IPT_SPECIAL ) |
934 | 742 | |
935 | PORT_START(" | |
743 | PORT_START("8BADC3") /* b00000 - 8 bit ADC 3 - shifter lever Y */ | |
936 | 744 | 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") |
937 | 745 | |
938 | PORT_START(" | |
746 | PORT_START("8BADC4") /* b00000 - 8 bit ADC 4 - shifter lever X*/ | |
939 | 747 | 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") |
940 | 748 | |
941 | PORT_START(" | |
749 | PORT_START("8BADC5") /* b00000 - 8 bit ADC 5 - wheel */ | |
942 | 750 | PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Wheel") |
943 | 751 | |
944 | PORT_START(" | |
752 | PORT_START("8BADC6") /* b00000 - 8 bit ADC 6 - line volts */ | |
945 | 753 | PORT_BIT( 0xff, 0x80, IPT_SPECIAL ) |
946 | 754 | |
947 | PORT_START(" | |
755 | PORT_START("8BADC7") /* b00000 - 8 bit ADC 7 */ | |
948 | 756 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
949 | 757 | |
950 | PORT_START(" | |
758 | PORT_START("12BADC0") /* b80000 - 12 bit ADC 0 - steering wheel */ | |
951 | 759 | PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel") |
952 | 760 | |
953 | PORT_START(" | |
761 | PORT_START("12BADC1") /* b80000 - 12 bit ADC 1 - force brake */ | |
954 | 762 | PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Force Brake") |
955 | 763 | |
956 | PORT_START(" | |
764 | PORT_START("12BADC2") /* b80000 - 12 bit ADC 2 */ | |
957 | 765 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
958 | 766 | |
959 | PORT_START(" | |
767 | PORT_START("12BADC3") /* b80000 - 12 bit ADC 3 */ | |
960 | 768 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
961 | 769 | INPUT_PORTS_END |
962 | 770 | |
963 | static 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 ) | |
977 | 771 | |
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 | |
1002 | INPUT_PORTS_END | |
1003 | ||
1004 | 772 | static INPUT_PORTS_START( racedrivc ) |
1005 | PORT_START(" | |
773 | PORT_START("IN0") /* 60c000 */ | |
1006 | 774 | PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" ) |
1007 | 775 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
1008 | 776 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
1009 | 777 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* HBLANK */ |
1010 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK(" | |
778 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") | |
1011 | 779 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 12-bit EOC */ |
1012 | 780 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 8-bit EOC */ |
1013 | 781 | PORT_SERVICE( 0x20, IP_ACTIVE_LOW ) |
1014 | 782 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) |
1015 | 783 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 ) |
1016 | 784 | |
1017 | PORT_START(" | |
785 | PORT_START("SW1") /* 60c002 */ | |
1018 | 786 | PORT_DIPNAME( 0x01, 0x01, "SW1:8" ) |
1019 | 787 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
1020 | 788 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
r241749 | r241750 | |
1040 | 808 | PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) |
1041 | 809 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
1042 | 810 | |
1043 | PORT_START(" | |
811 | PORT_START("a80000") | |
1044 | 812 | PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Abort") |
1045 | 813 | PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Key") |
1046 | 814 | PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 ) /* aux coin */ |
r241749 | r241750 | |
1053 | 821 | PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL ) /* center edge on steering wheel */ |
1054 | 822 | PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED ) |
1055 | 823 | |
1056 | PORT_START(" | |
824 | PORT_START("8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */ | |
1057 | 825 | PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal") |
1058 | 826 | |
1059 | PORT_START(" | |
827 | PORT_START("8BADC1") /* b00000 - 8 bit ADC 1 - clutch pedal */ | |
1060 | 828 | PORT_BIT( 0xff, 0x00, IPT_PEDAL3 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) PORT_NAME("Clutch Pedal") |
1061 | 829 | |
1062 | PORT_START(" | |
830 | PORT_START("8BADC2") /* b00000 - 8 bit ADC 2 */ | |
1063 | 831 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1064 | 832 | |
1065 | PORT_START(" | |
833 | PORT_START("8BADC3") /* b00000 - 8 bit ADC 3 */ | |
1066 | 834 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1067 | 835 | |
1068 | PORT_START(" | |
836 | PORT_START("8BADC4") /* b00000 - 8 bit ADC 4 */ | |
1069 | 837 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1070 | 838 | |
1071 | PORT_START(" | |
839 | PORT_START("8BADC5") /* b00000 - 8 bit ADC 5 */ | |
1072 | 840 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1073 | 841 | |
1074 | PORT_START(" | |
842 | PORT_START("8BADC6") /* b00000 - 8 bit ADC 6 - force brake */ | |
1075 | 843 | PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Force Brake") |
1076 | 844 | |
1077 | PORT_START(" | |
845 | PORT_START("8BADC7") /* b00000 - 8 bit ADC 7 */ | |
1078 | 846 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1079 | 847 | |
1080 | PORT_START(" | |
848 | PORT_START("12BADC0") /* 400000 - steering wheel */ | |
1081 | 849 | PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel") |
1082 | 850 | |
1083 | 851 | /* dummy ADC ports to end up with the same number as the full version */ |
1084 | PORT_START(" | |
852 | PORT_START("12BADC1") | |
1085 | 853 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1086 | PORT_START(" | |
854 | PORT_START("12BADC2") | |
1087 | 855 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1088 | PORT_START(" | |
856 | PORT_START("12BADC3") | |
1089 | 857 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1090 | 858 | INPUT_PORTS_END |
1091 | 859 | |
1092 | 860 | |
1093 | 861 | static INPUT_PORTS_START( stunrun ) |
1094 | PORT_START(" | |
862 | PORT_START("IN0") /* 60c000 */ | |
1095 | 863 | PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" ) |
1096 | 864 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
1097 | 865 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
1098 | 866 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* HBLANK */ |
1099 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK(" | |
867 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") | |
1100 | 868 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 12-bit EOC */ |
1101 | 869 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 8-bit EOC */ |
1102 | 870 | PORT_SERVICE( 0x20, IP_ACTIVE_LOW ) |
1103 | 871 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) |
1104 | 872 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) |
1105 | 873 | |
1106 | PORT_START(" | |
874 | PORT_START("SW1") /* 60c002 */ | |
1107 | 875 | PORT_DIPNAME( 0x01, 0x00, "SW1:8" ) |
1108 | 876 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
1109 | 877 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
r241749 | r241750 | |
1129 | 897 | PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) |
1130 | 898 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
1131 | 899 | |
1132 | PORT_START(" | |
900 | PORT_START("a80000") | |
1133 | 901 | PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) |
1134 | 902 | PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 ) |
1135 | 903 | PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 ) |
1136 | 904 | PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED ) |
1137 | 905 | |
1138 | PORT_START(" | |
906 | PORT_START("8BADC0") /* b00000 - 8 bit ADC 0 */ | |
1139 | 907 | PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) |
1140 | 908 | |
1141 | PORT_START(" | |
909 | PORT_START("8BADC1") /* b00000 - 8 bit ADC 1 */ | |
1142 | 910 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1143 | 911 | |
1144 | PORT_START(" | |
912 | PORT_START("8BADC2") /* b00000 - 8 bit ADC 2 */ | |
1145 | 913 | PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) |
1146 | 914 | |
1147 | PORT_START(" | |
915 | PORT_START("8BADC3") /* b00000 - 8 bit ADC 3 */ | |
1148 | 916 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1149 | 917 | |
1150 | PORT_START(" | |
918 | PORT_START("8BADC4") /* b00000 - 8 bit ADC 4 */ | |
1151 | 919 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1152 | 920 | |
1153 | PORT_START(" | |
921 | PORT_START("8BADC5") /* b00000 - 8 bit ADC 5 */ | |
1154 | 922 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1155 | 923 | |
1156 | PORT_START(" | |
924 | PORT_START("8BADC6") /* b00000 - 8 bit ADC 6 */ | |
1157 | 925 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1158 | 926 | |
1159 | PORT_START(" | |
927 | PORT_START("8BADC7") /* b00000 - 8 bit ADC 7 */ | |
1160 | 928 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1161 | 929 | |
1162 | PORT_START(" | |
930 | PORT_START("12BADC0") /* b80000 - 12 bit ADC 0 */ | |
1163 | 931 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1164 | 932 | |
1165 | PORT_START(" | |
933 | PORT_START("12BADC1") /* b80000 - 12 bit ADC 1 */ | |
1166 | 934 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1167 | 935 | |
1168 | PORT_START(" | |
936 | PORT_START("12BADC2") /* b80000 - 12 bit ADC 2 */ | |
1169 | 937 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1170 | 938 | |
1171 | PORT_START(" | |
939 | PORT_START("12BADC3") /* b80000 - 12 bit ADC 3 */ | |
1172 | 940 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1173 | 941 | |
1174 | 942 | /* stunrun has its own coins */ |
r241749 | r241750 | |
1180 | 948 | |
1181 | 949 | |
1182 | 950 | static INPUT_PORTS_START( steeltal ) |
1183 | PORT_START(" | |
951 | PORT_START("IN0") /* 60c000 */ | |
1184 | 952 | PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" ) |
1185 | 953 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
1186 | 954 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
1187 | 955 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* HBLANK */ |
1188 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK(" | |
956 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") | |
1189 | 957 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 12-bit EOC */ |
1190 | 958 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 8-bit EOC */ |
1191 | 959 | PORT_SERVICE( 0x20, IP_ACTIVE_LOW ) |
1192 | 960 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) |
1193 | 961 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) |
1194 | 962 | |
1195 | PORT_START(" | |
963 | PORT_START("SW1") /* 60c002 */ | |
1196 | 964 | PORT_DIPNAME( 0x01, 0x00, "SW1:8" ) |
1197 | 965 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
1198 | 966 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
r241749 | r241750 | |
1218 | 986 | PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) |
1219 | 987 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
1220 | 988 | |
1221 | PORT_START(" | |
989 | PORT_START("a80000") | |
1222 | 990 | PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Trigger") |
1223 | 991 | PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Thumb") |
1224 | 992 | PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Zoom") |
1225 | 993 | PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Real Helicopter Flight") |
1226 | 994 | PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNUSED ) |
1227 | 995 | |
1228 | PORT_START(" | |
996 | PORT_START("8BADC0") /* b00000 - 8 bit ADC 0 */ | |
1229 | 997 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1230 | 998 | |
1231 | PORT_START(" | |
999 | PORT_START("8BADC1") /* b00000 - 8 bit ADC 1 */ | |
1232 | 1000 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) /* volume control */ |
1233 | 1001 | |
1234 | PORT_START(" | |
1002 | PORT_START("8BADC2") /* b00000 - 8 bit ADC 2 */ | |
1235 | 1003 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1236 | 1004 | |
1237 | PORT_START(" | |
1005 | PORT_START("8BADC3") /* b00000 - 8 bit ADC 3 */ | |
1238 | 1006 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1239 | 1007 | |
1240 | PORT_START(" | |
1008 | PORT_START("8BADC4") /* b00000 - 8 bit ADC 4 */ | |
1241 | 1009 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1242 | 1010 | |
1243 | PORT_START(" | |
1011 | PORT_START("8BADC5") /* b00000 - 8 bit ADC 5 */ | |
1244 | 1012 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1245 | 1013 | |
1246 | PORT_START(" | |
1014 | PORT_START("8BADC6") /* b00000 - 8 bit ADC 6 */ | |
1247 | 1015 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1248 | 1016 | |
1249 | PORT_START(" | |
1017 | PORT_START("8BADC7") /* b00000 - 8 bit ADC 7 */ | |
1250 | 1018 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1251 | 1019 | |
1252 | PORT_START(" | |
1020 | PORT_START("12BADC0") /* b80000 - 12 bit ADC 0 */ | |
1253 | 1021 | PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) /* left/right */ |
1254 | 1022 | |
1255 | PORT_START(" | |
1023 | PORT_START("12BADC1") /* b80000 - 12 bit ADC 1 */ | |
1256 | 1024 | PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) /* up/down */ |
1257 | 1025 | |
1258 | PORT_START(" | |
1026 | PORT_START("12BADC2") /* b80000 - 12 bit ADC 2 */ | |
1259 | 1027 | PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Z ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_NAME("Collective") PORT_REVERSE /* collective */ |
1260 | 1028 | |
1261 | PORT_START(" | |
1029 | PORT_START("12BADC3") /* b80000 - 12 bit ADC 3 */ | |
1262 | 1030 | PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_NAME("Rudder") PORT_PLAYER(2) /* rudder */ |
1263 | 1031 | |
1264 | 1032 | /* steeltal has its own coins */ |
r241749 | r241750 | |
1270 | 1038 | |
1271 | 1039 | |
1272 | 1040 | static INPUT_PORTS_START( strtdriv ) |
1273 | PORT_START(" | |
1041 | PORT_START("IN0") /* 60c000 */ | |
1274 | 1042 | PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" ) |
1275 | 1043 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
1276 | 1044 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
1277 | 1045 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* HBLANK */ |
1278 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK(" | |
1046 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") | |
1279 | 1047 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 12-bit EOC */ |
1280 | 1048 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 8-bit EOC */ |
1281 | 1049 | PORT_SERVICE( 0x20, IP_ACTIVE_LOW ) |
1282 | 1050 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) |
1283 | 1051 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) |
1284 | 1052 | |
1285 | PORT_START(" | |
1053 | PORT_START("SW1") /* 60c002 */ | |
1286 | 1054 | PORT_DIPNAME( 0x01, 0x01, "SW1:8" ) |
1287 | 1055 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
1288 | 1056 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
r241749 | r241750 | |
1308 | 1076 | PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) |
1309 | 1077 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
1310 | 1078 | |
1311 | PORT_START(" | |
1079 | PORT_START("a80000") | |
1312 | 1080 | PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) /* abort */ |
1313 | 1081 | PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) /* start */ |
1314 | 1082 | PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 ) /* aux coin */ |
r241749 | r241750 | |
1322 | 1090 | PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL ) /* center edge on steering wheel */ |
1323 | 1091 | PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED ) |
1324 | 1092 | |
1325 | PORT_START(" | |
1093 | PORT_START("8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */ | |
1326 | 1094 | PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal") |
1327 | 1095 | |
1328 | PORT_START(" | |
1096 | PORT_START("8BADC1") /* b00000 - 8 bit ADC 1 */ | |
1329 | 1097 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1330 | 1098 | |
1331 | PORT_START(" | |
1099 | PORT_START("8BADC2") /* b00000 - 8 bit ADC 2 - voice mic */ | |
1332 | 1100 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1333 | 1101 | |
1334 | PORT_START(" | |
1102 | PORT_START("8BADC3") /* b00000 - 8 bit ADC 3 - volume */ | |
1335 | 1103 | PORT_BIT( 0xff, 0X80, IPT_UNUSED ) |
1336 | 1104 | |
1337 | PORT_START(" | |
1105 | PORT_START("8BADC4") /* b00000 - 8 bit ADC 4 - elevator */ | |
1338 | 1106 | PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_NAME("Elevator") PORT_REVERSE /* up/down */ |
1339 | 1107 | |
1340 | PORT_START(" | |
1108 | PORT_START("8BADC5") /* b00000 - 8 bit ADC 5 - canopy */ | |
1341 | 1109 | PORT_BIT( 0xff, 0X80, IPT_UNUSED ) |
1342 | 1110 | |
1343 | PORT_START(" | |
1111 | PORT_START("8BADC6") /* b00000 - 8 bit ADC 6 - brake */ | |
1344 | 1112 | PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_NAME("Brake") PORT_REVERSE |
1345 | 1113 | |
1346 | PORT_START(" | |
1114 | PORT_START("8BADC7") /* b00000 - 8 bit ADC 7 - seat adjust */ | |
1347 | 1115 | PORT_BIT( 0xff, 0X80, IPT_UNUSED ) |
1348 | 1116 | |
1349 | PORT_START(" | |
1117 | PORT_START("12BADC0") /* 400000 - steering wheel */ | |
1350 | 1118 | PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel") |
1351 | 1119 | |
1352 | 1120 | /* dummy ADC ports to end up with the same number as the full version */ |
1353 | PORT_START(" | |
1121 | PORT_START("12BADC1") /* FAKE */ | |
1354 | 1122 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1355 | PORT_START(" | |
1123 | PORT_START("12BADC2") /* FAKE */ | |
1356 | 1124 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1357 | PORT_START(" | |
1125 | PORT_START("12BADC3") /* FAKE */ | |
1358 | 1126 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1359 | 1127 | INPUT_PORTS_END |
1360 | 1128 | |
1361 | 1129 | |
1362 | 1130 | static INPUT_PORTS_START( hdrivair ) |
1363 | PORT_START(" | |
1131 | PORT_START("IN0") /* 60c000 */ | |
1364 | 1132 | PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" ) |
1365 | 1133 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
1366 | 1134 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
1367 | 1135 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* HBLANK */ |
1368 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK(" | |
1136 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") | |
1369 | 1137 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 12-bit EOC */ |
1370 | 1138 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 8-bit EOC */ |
1371 | 1139 | PORT_SERVICE( 0x20, IP_ACTIVE_LOW ) |
1372 | 1140 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) |
1373 | 1141 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) |
1374 | 1142 | |
1375 | PORT_START(" | |
1143 | PORT_START("SW1") /* 60c002 */ | |
1376 | 1144 | PORT_DIPNAME( 0x01, 0x01, "SW1:8" ) |
1377 | 1145 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
1378 | 1146 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
r241749 | r241750 | |
1398 | 1166 | PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) |
1399 | 1167 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
1400 | 1168 | |
1401 | PORT_START(" | |
1169 | PORT_START("a80000") | |
1402 | 1170 | PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) /* abort */ |
1403 | 1171 | PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) /* start */ |
1404 | 1172 | PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 ) /* aux coin */ |
r241749 | r241750 | |
1412 | 1180 | PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL ) /* center edge on steering wheel */ |
1413 | 1181 | PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED ) |
1414 | 1182 | |
1415 | PORT_START(" | |
1183 | PORT_START("8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */ | |
1416 | 1184 | PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal") |
1417 | 1185 | |
1418 | PORT_START(" | |
1186 | PORT_START("8BADC1") /* b00000 - 8 bit ADC 1 */ | |
1419 | 1187 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1420 | 1188 | |
1421 | PORT_START(" | |
1189 | PORT_START("8BADC2") /* b00000 - 8 bit ADC 2 - voice mic */ | |
1422 | 1190 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1423 | 1191 | |
1424 | PORT_START(" | |
1192 | PORT_START("8BADC3") /* b00000 - 8 bit ADC 3 - volume */ | |
1425 | 1193 | PORT_BIT( 0xff, 0X80, IPT_UNUSED ) |
1426 | 1194 | |
1427 | PORT_START(" | |
1195 | PORT_START("8BADC4") /* b00000 - 8 bit ADC 4 - elevator */ | |
1428 | 1196 | PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_REVERSE PORT_NAME("Elevator") /* up/down */ |
1429 | 1197 | |
1430 | PORT_START(" | |
1198 | PORT_START("8BADC5") /* b00000 - 8 bit ADC 5 - canopy */ | |
1431 | 1199 | PORT_BIT( 0xff, 0X80, IPT_UNUSED ) |
1432 | 1200 | |
1433 | PORT_START(" | |
1201 | PORT_START("8BADC6") /* b00000 - 8 bit ADC 6 - brake */ | |
1434 | 1202 | PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Brake") |
1435 | 1203 | |
1436 | PORT_START(" | |
1204 | PORT_START("8BADC7") /* b00000 - 8 bit ADC 7 - seat adjust */ | |
1437 | 1205 | PORT_BIT( 0xff, 0X80, IPT_UNUSED ) |
1438 | 1206 | |
1439 | PORT_START(" | |
1207 | PORT_START("12BADC0") /* 400000 - steering wheel */ | |
1440 | 1208 | PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_REVERSE PORT_NAME("Steering Wheel") |
1441 | 1209 | |
1442 | 1210 | /* dummy ADC ports to end up with the same number as the full version */ |
1443 | PORT_START(" | |
1211 | PORT_START("12BADC1") | |
1444 | 1212 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1445 | PORT_START(" | |
1213 | PORT_START("12BADC2") | |
1446 | 1214 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1447 | PORT_START(" | |
1215 | PORT_START("12BADC3") | |
1448 | 1216 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
1449 | 1217 | INPUT_PORTS_END |
1450 | 1218 | |
r241749 | r241750 | |
1455 | 1223 | * |
1456 | 1224 | *************************************/ |
1457 | 1225 | |
1458 | INTERRUPT_GEN_MEMBER(harddriv_state::video_int_gen) | |
1459 | { | |
1460 | m_video_int_state = 1; | |
1461 | update_interrupts(); | |
1462 | } | |
1463 | ||
1464 | ||
1465 | 1226 | /* Driver board without MSP (used by Race Drivin' cockpit) */ |
1466 | static MACHINE_CONFIG_ | |
1227 | static MACHINE_CONFIG_START( driver_nomsp, harddriv_state ) | |
1467 | 1228 | |
1468 | 1229 | /* basic machine hardware */ |
1469 | 1230 | MCFG_CPU_ADD("maincpu", M68010, HARDDRIV_MASTER_CLOCK/4) |
1470 | 1231 | MCFG_CPU_PROGRAM_MAP(driver_68k_map) |
1471 | MCFG_DEVICE_VBLANK_INT_DRIVER("screen", | |
1232 | MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen) | |
1472 | 1233 | MCFG_CPU_PERIODIC_INT_DRIVER(harddriv_state, hd68k_irq_gen, (double)HARDDRIV_MASTER_CLOCK/16/16/16/16/2) |
1473 | 1234 | |
1474 | MCFG_SLAPSTIC_ADD("slapstic") | |
1475 | MCFG_SLAPSTIC_68K_ACCESS(1) | |
1476 | ||
1477 | 1235 | MCFG_CPU_ADD("gsp", TMS34010, HARDDRIV_GSP_CLOCK) |
1478 | 1236 | MCFG_CPU_PROGRAM_MAP(driver_gsp_map) |
1479 | 1237 | MCFG_TMS340X0_HALT_ON_RESET(TRUE) /* halt on reset */ |
r241749 | r241750 | |
1483 | 1241 | MCFG_TMS340X0_OUTPUT_INT_CB(WRITELINE(harddriv_state, hdgsp_irq_gen)) |
1484 | 1242 | MCFG_TMS340X0_TO_SHIFTREG_CB(harddriv_state, hdgsp_write_to_shiftreg) |
1485 | 1243 | MCFG_TMS340X0_FROM_SHIFTREG_CB(harddriv_state, hdgsp_read_from_shiftreg) |
1486 | MCFG_VIDEO_SET_SCREEN("screen") | |
1487 | 1244 | |
1488 | 1245 | MCFG_QUANTUM_TIME(attotime::from_hz(30000)) |
1489 | 1246 | |
1247 | MCFG_MACHINE_START_OVERRIDE(harddriv_state,harddriv) | |
1248 | MCFG_MACHINE_RESET_OVERRIDE(harddriv_state,harddriv) | |
1249 | ||
1490 | 1250 | MCFG_M48T02_ADD("200e") // MK48T02 |
1491 | 1251 | MCFG_EEPROM_2816_ADD("210e") // MK48Z02 |
1492 | 1252 | |
r241749 | r241750 | |
1501 | 1261 | MCFG_SCREEN_UPDATE_DEVICE("gsp", tms34010_device, tms340x0_ind16) |
1502 | 1262 | MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) |
1503 | 1263 | MCFG_SCREEN_PALETTE("palette") |
1264 | ||
1265 | MCFG_VIDEO_START_OVERRIDE(harddriv_state,harddriv) | |
1504 | 1266 | MACHINE_CONFIG_END |
1505 | 1267 | |
1506 | 1268 | |
1507 | 1269 | /* Driver board with MSP (used by Hard Drivin' cockpit) */ |
1508 | static MACHINE_CONFIG_ | |
1270 | static MACHINE_CONFIG_DERIVED( driver_msp, driver_nomsp ) | |
1509 | 1271 | |
1510 | MCFG_FRAGMENT_ADD( driver_nomsp ) | |
1511 | ||
1512 | 1272 | /* basic machine hardware */ |
1513 | 1273 | MCFG_CPU_ADD("msp", TMS34010, XTAL_50MHz) |
1514 | 1274 | MCFG_CPU_PROGRAM_MAP(driver_msp_map) |
r241749 | r241750 | |
1516 | 1276 | MCFG_TMS340X0_PIXEL_CLOCK(5000000) /* pixel clock */ |
1517 | 1277 | MCFG_TMS340X0_PIXELS_PER_CLOCK(2) /* pixels per clock */ |
1518 | 1278 | MCFG_TMS340X0_OUTPUT_INT_CB(WRITELINE(harddriv_state, hdmsp_irq_gen)) |
1519 | MCFG_VIDEO_SET_SCREEN("screen") | |
1520 | ||
1521 | 1279 | MACHINE_CONFIG_END |
1522 | 1280 | |
1523 | 1281 | |
1524 | 1282 | /* Multisync board without MSP (used by STUN Runner, Steel Talons, Race Drivin' compact) */ |
1525 | static MACHINE_CONFIG_ | |
1283 | static MACHINE_CONFIG_DERIVED( multisync_nomsp, driver_nomsp ) | |
1526 | 1284 | |
1527 | MCFG_FRAGMENT_ADD( driver_nomsp ) | |
1528 | ||
1529 | 1285 | /* basic machine hardware */ |
1530 | 1286 | MCFG_CPU_MODIFY("maincpu") |
1531 | 1287 | MCFG_CPU_PROGRAM_MAP(multisync_68k_map) |
r241749 | r241750 | |
1543 | 1299 | |
1544 | 1300 | |
1545 | 1301 | /* Multisync board with MSP (used by Hard Drivin' compact) */ |
1546 | static MACHINE_CONFIG_ | |
1302 | static MACHINE_CONFIG_DERIVED( multisync_msp, multisync_nomsp ) | |
1547 | 1303 | |
1548 | MCFG_FRAGMENT_ADD( multisync_nomsp ) | |
1549 | ||
1550 | 1304 | /* basic machine hardware */ |
1551 | 1305 | MCFG_CPU_ADD("msp", TMS34010, XTAL_50MHz) |
1552 | 1306 | MCFG_CPU_PROGRAM_MAP(driver_msp_map) |
r241749 | r241750 | |
1554 | 1308 | MCFG_TMS340X0_PIXEL_CLOCK(5000000) /* pixel clock */ |
1555 | 1309 | MCFG_TMS340X0_PIXELS_PER_CLOCK(2) /* pixels per clock */ |
1556 | 1310 | MCFG_TMS340X0_OUTPUT_INT_CB(WRITELINE(harddriv_state, hdmsp_irq_gen)) |
1557 | MCFG_VIDEO_SET_SCREEN("screen") | |
1558 | ||
1559 | 1311 | MACHINE_CONFIG_END |
1560 | 1312 | |
1561 | 1313 | |
1562 | 1314 | /* Multisync II board (used by Hard Drivin's Airborne) */ |
1563 | static MACHINE_CONFIG_ | |
1315 | static MACHINE_CONFIG_DERIVED( multisync2, multisync_nomsp ) | |
1564 | 1316 | |
1565 | MCFG_FRAGMENT_ADD( multisync_nomsp ) | |
1566 | ||
1567 | 1317 | /* basic machine hardware */ |
1568 | 1318 | MCFG_CPU_MODIFY("maincpu") |
1569 | 1319 | MCFG_CPU_PROGRAM_MAP(multisync2_68k_map) |
r241749 | r241750 | |
1694 | 1444 | * |
1695 | 1445 | *************************************/ |
1696 | 1446 | |
1697 | static MACHINE_CONFIG_FRAGMENT( harddriv ) | |
1698 | MCFG_FRAGMENT_ADD( driver_msp ) | |
1447 | static MACHINE_CONFIG_DERIVED( harddriv, driver_msp ) | |
1448 | ||
1699 | 1449 | /* basic machine hardware */ /* original driver board with MSP */ |
1700 | 1450 | MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */ |
1701 | 1451 | MCFG_FRAGMENT_ADD( driversnd ) /* driver sound board */ |
1702 | 1452 | MACHINE_CONFIG_END |
1703 | 1453 | |
1704 | static MACHINE_CONFIG_FRAGMENT( harddrivc ) | |
1705 | MCFG_FRAGMENT_ADD( multisync_msp ) | |
1706 | 1454 | |
1455 | static MACHINE_CONFIG_DERIVED( harddrivc, multisync_msp ) | |
1456 | ||
1707 | 1457 | /* basic machine hardware */ /* multisync board with MSP */ |
1708 | 1458 | MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */ |
1709 | 1459 | MCFG_FRAGMENT_ADD( driversnd ) /* driver sound board */ |
1710 | 1460 | MACHINE_CONFIG_END |
1711 | 1461 | |
1712 | static MACHINE_CONFIG_FRAGMENT( racedriv ) | |
1713 | MCFG_FRAGMENT_ADD( driver_nomsp ) | |
1714 | 1462 | |
1463 | static MACHINE_CONFIG_DERIVED( racedriv, driver_nomsp ) | |
1464 | ||
1715 | 1465 | /* basic machine hardware */ /* original driver board without MSP */ |
1716 | 1466 | MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */ |
1717 | 1467 | MCFG_FRAGMENT_ADD( dsk ) /* DSK board */ |
1718 | 1468 | MCFG_FRAGMENT_ADD( driversnd ) /* driver sound board */ |
1719 | 1469 | MACHINE_CONFIG_END |
1720 | 1470 | |
1721 | static MACHINE_CONFIG_FRAGMENT( racedrivc ) | |
1722 | 1471 | |
1723 | ||
1472 | static MACHINE_CONFIG_DERIVED( racedrivc, multisync_nomsp ) | |
1724 | 1473 | |
1725 | 1474 | /* basic machine hardware */ /* multisync board without MSP */ |
1726 | 1475 | MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */ |
r241749 | r241750 | |
1729 | 1478 | MACHINE_CONFIG_END |
1730 | 1479 | |
1731 | 1480 | |
1732 | static MACHINE_CONFIG_ | |
1481 | static MACHINE_CONFIG_DERIVED( stunrun, multisync_nomsp ) | |
1733 | 1482 | |
1734 | MCFG_FRAGMENT_ADD( multisync_nomsp ) | |
1735 | ||
1736 | 1483 | /* 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 */ | |
1740 | MACHINE_CONFIG_END | |
1741 | ||
1742 | WRITE_LINE_MEMBER(harddriv_state::sound_int_write_line) | |
1743 | { | |
1744 | m_sound_int_state = state; | |
1745 | update_interrupts(); | |
1746 | } | |
1747 | ||
1748 | ||
1749 | static MACHINE_CONFIG_FRAGMENT( stunrun ) | |
1750 | ||
1751 | MCFG_FRAGMENT_ADD( multisync_nomsp ) | |
1752 | ||
1753 | /* basic machine hardware */ /* multisync board without MSP */ | |
1754 | 1484 | MCFG_CPU_MODIFY("gsp") |
1755 | 1485 | MCFG_TMS340X0_PIXEL_CLOCK(5000000) /* pixel clock */ |
1756 | 1486 | MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */ |
r241749 | r241750 | |
1762 | 1492 | /* sund hardware */ |
1763 | 1493 | MCFG_SPEAKER_STANDARD_MONO("mono") |
1764 | 1494 | |
1765 | MCFG_ATARI_JSA_II_ADD("jsa", WRITELINE( | |
1495 | MCFG_ATARI_JSA_II_ADD("jsa", WRITELINE(atarigen_state, sound_int_write_line)) | |
1766 | 1496 | MCFG_ATARI_JSA_TEST_PORT("IN0", 5) |
1767 | 1497 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
1768 | 1498 | MACHINE_CONFIG_END |
1769 | 1499 | |
1770 | static MACHINE_CONFIG_FRAGMENT( steeltal ) | |
1771 | MCFG_FRAGMENT_ADD( multisync_msp ) | |
1772 | 1500 | |
1501 | static MACHINE_CONFIG_DERIVED( steeltal, multisync_msp ) | |
1502 | ||
1773 | 1503 | /* basic machine hardware */ /* multisync board with MSP */ |
1774 | 1504 | MCFG_FRAGMENT_ADD( ds3 ) /* DS III board */ |
1775 | 1505 | MCFG_DEVICE_REMOVE("ds3sdsp") /* DS III sound components are not present */ |
r241749 | r241750 | |
1784 | 1514 | /* sund hardware */ |
1785 | 1515 | MCFG_SPEAKER_STANDARD_MONO("mono") |
1786 | 1516 | |
1787 | MCFG_ATARI_JSA_III_ADD("jsa", WRITELINE( | |
1517 | MCFG_ATARI_JSA_III_ADD("jsa", WRITELINE(atarigen_state, sound_int_write_line)) | |
1788 | 1518 | MCFG_ATARI_JSA_TEST_PORT("IN0", 5) |
1789 | 1519 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
1790 | 1520 | MACHINE_CONFIG_END |
1791 | 1521 | |
1792 | static MACHINE_CONFIG_FRAGMENT( strtdriv ) | |
1793 | 1522 | |
1794 | ||
1523 | static MACHINE_CONFIG_DERIVED( strtdriv, multisync_nomsp ) | |
1795 | 1524 | |
1796 | 1525 | /* basic machine hardware */ /* multisync board */ |
1797 | 1526 | MCFG_FRAGMENT_ADD( ds3 ) /* DS III board */ |
r241749 | r241750 | |
1801 | 1530 | MCFG_FRAGMENT_ADD( dsk ) /* DSK board */ |
1802 | 1531 | MACHINE_CONFIG_END |
1803 | 1532 | |
1804 | static MACHINE_CONFIG_FRAGMENT( hdrivair ) | |
1805 | 1533 | |
1806 | ||
1534 | static MACHINE_CONFIG_DERIVED( hdrivair, multisync2 ) | |
1807 | 1535 | |
1808 | 1536 | /* basic machine hardware */ /* multisync II board */ |
1809 | 1537 | MCFG_FRAGMENT_ADD( ds3 ) /* DS IV board */ |
1810 | 1538 | MCFG_FRAGMENT_ADD( dsk2 ) /* DSK II board */ |
1811 | 1539 | MACHINE_CONFIG_END |
1812 | 1540 | |
1813 | const device_type HARDDRIV_BOARD_DEVICE = &device_creator<harddriv_board_device_state>; | |
1814 | 1541 | |
1815 | harddriv_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 | } | |
1819 | 1542 | |
1820 | machine_config_constructor harddriv_board_device_state::device_mconfig_additions() const | |
1821 | { | |
1822 | return MACHINE_CONFIG_NAME( harddriv ); | |
1823 | } | |
1824 | ||
1825 | void harddriv_board_device_state::device_start() | |
1826 | { | |
1827 | init_harddriv(); | |
1828 | harddriv_state::device_start(); | |
1829 | } | |
1830 | ||
1831 | /* Compact */ | |
1832 | ||
1833 | void harddrivc_board_device_state::device_start() | |
1834 | { | |
1835 | init_harddrivc(); | |
1836 | harddriv_state::device_start(); | |
1837 | } | |
1838 | ||
1839 | const device_type HARDDRIVC_BOARD_DEVICE = &device_creator<harddrivc_board_device_state>; | |
1840 | ||
1841 | harddrivc_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 | ||
1846 | machine_config_constructor harddrivc_board_device_state::device_mconfig_additions() const | |
1847 | { | |
1848 | return MACHINE_CONFIG_NAME( harddrivc ); | |
1849 | } | |
1850 | ||
1851 | ||
1852 | /* Race Drivin */ | |
1853 | ||
1854 | void racedriv_board_device_state::device_start() | |
1855 | { | |
1856 | init_racedriv(); | |
1857 | harddriv_state::device_start(); | |
1858 | } | |
1859 | ||
1860 | void racedrivb1_board_device_state::device_start() | |
1861 | { | |
1862 | init_racedrivb1(); | |
1863 | harddriv_state::device_start(); | |
1864 | } | |
1865 | ||
1866 | const device_type RACEDRIV_BOARD_DEVICE = &device_creator<racedriv_board_device_state>; | |
1867 | const device_type RACEDRIVB1_BOARD_DEVICE = &device_creator<racedrivb1_board_device_state>; | |
1868 | ||
1869 | racedriv_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 | ||
1874 | machine_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 | ||
1882 | void racedrivc_board_device_state::device_start() | |
1883 | { | |
1884 | init_racedrivc(); | |
1885 | harddriv_state::device_start(); | |
1886 | } | |
1887 | ||
1888 | void racedrivc1_board_device_state::device_start() | |
1889 | { | |
1890 | init_racedrivc1(); | |
1891 | harddriv_state::device_start(); | |
1892 | } | |
1893 | ||
1894 | void racedrivc_panorama_side_board_device_state::device_start() | |
1895 | { | |
1896 | init_racedrivc_panorama_side(); | |
1897 | harddriv_state::device_start(); | |
1898 | } | |
1899 | ||
1900 | ||
1901 | ||
1902 | const device_type RACEDRIVC_BOARD_DEVICE = &device_creator<racedrivc_board_device_state>; | |
1903 | const device_type RACEDRIVC1_BOARD_DEVICE = &device_creator<racedrivc1_board_device_state>; | |
1904 | const device_type RACEDRIVC_PANORAMA_SIDE_BOARD_DEVICE = &device_creator<racedrivc_panorama_side_board_device_state>; | |
1905 | ||
1906 | racedrivc_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 | ||
1911 | machine_config_constructor racedrivc_board_device_state::device_mconfig_additions() const | |
1912 | { | |
1913 | return MACHINE_CONFIG_NAME( racedrivc ); | |
1914 | } | |
1915 | ||
1916 | machine_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 | ||
1924 | void stunrun_board_device_state::device_start() | |
1925 | { | |
1926 | init_stunrun(); | |
1927 | harddriv_state::device_start(); | |
1928 | } | |
1929 | ||
1930 | const device_type STUNRUN_BOARD_DEVICE = &device_creator<stunrun_board_device_state>; | |
1931 | ||
1932 | stunrun_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 | ||
1937 | machine_config_constructor stunrun_board_device_state::device_mconfig_additions() const | |
1938 | { | |
1939 | return MACHINE_CONFIG_NAME( stunrun ); | |
1940 | } | |
1941 | ||
1942 | /* Steel Talons */ | |
1943 | ||
1944 | void steeltal_board_device_state::device_start() | |
1945 | { | |
1946 | init_steeltal(); | |
1947 | harddriv_state::device_start(); | |
1948 | } | |
1949 | ||
1950 | void steeltal1_board_device_state::device_start() | |
1951 | { | |
1952 | init_steeltal1(); | |
1953 | harddriv_state::device_start(); | |
1954 | } | |
1955 | ||
1956 | void steeltalp_board_device_state::device_start() | |
1957 | { | |
1958 | init_steeltalp(); | |
1959 | harddriv_state::device_start(); | |
1960 | } | |
1961 | ||
1962 | const device_type STEELTAL_BOARD_DEVICE = &device_creator<steeltal_board_device_state>; | |
1963 | const device_type STEELTAL1_BOARD_DEVICE = &device_creator<steeltal1_board_device_state>; | |
1964 | const device_type STEELTALP_BOARD_DEVICE = &device_creator<steeltalp_board_device_state>; | |
1965 | ||
1966 | steeltal_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 | ||
1971 | machine_config_constructor steeltal_board_device_state::device_mconfig_additions() const | |
1972 | { | |
1973 | return MACHINE_CONFIG_NAME( steeltal ); | |
1974 | } | |
1975 | ||
1976 | /* Street Drivin' */ | |
1977 | ||
1978 | void strtdriv_board_device_state::device_start() | |
1979 | { | |
1980 | init_strtdriv(); | |
1981 | harddriv_state::device_start(); | |
1982 | } | |
1983 | ||
1984 | const device_type STRTDRIV_BOARD_DEVICE = &device_creator<strtdriv_board_device_state>; | |
1985 | ||
1986 | strtdriv_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 | ||
1991 | machine_config_constructor strtdriv_board_device_state::device_mconfig_additions() const | |
1992 | { | |
1993 | return MACHINE_CONFIG_NAME( strtdriv ); | |
1994 | } | |
1995 | ||
1996 | /* Hard Drivin' Airbourne */ | |
1997 | ||
1998 | void hdrivair_board_device_state::device_start() | |
1999 | { | |
2000 | init_hdrivair(); | |
2001 | harddriv_state::device_start(); | |
2002 | } | |
2003 | ||
2004 | void hdrivairp_board_device_state::device_start() | |
2005 | { | |
2006 | init_hdrivairp(); | |
2007 | harddriv_state::device_start(); | |
2008 | } | |
2009 | ||
2010 | const device_type HDRIVAIR_BOARD_DEVICE = &device_creator<hdrivair_board_device_state>; | |
2011 | const device_type HDRIVAIRP_BOARD_DEVICE = &device_creator<hdrivairp_board_device_state>; | |
2012 | ||
2013 | hdrivair_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 | ||
2018 | machine_config_constructor hdrivair_board_device_state::device_mconfig_additions() const | |
2019 | { | |
2020 | return MACHINE_CONFIG_NAME( hdrivair ); | |
2021 | } | |
2022 | ||
2023 | ||
2024 | ||
2025 | static MACHINE_CONFIG_START( harddriv_machine, harddriv_new_state ) | |
2026 | MCFG_DEVICE_ADD("mainpcb", HARDDRIV_BOARD_DEVICE, 0) | |
2027 | MACHINE_CONFIG_END | |
2028 | ||
2029 | static MACHINE_CONFIG_START( harddrivc_machine, harddriv_new_state ) | |
2030 | MCFG_DEVICE_ADD("mainpcb", HARDDRIVC_BOARD_DEVICE, 0) | |
2031 | MACHINE_CONFIG_END | |
2032 | ||
2033 | static MACHINE_CONFIG_START( racedriv_machine, harddriv_new_state ) | |
2034 | MCFG_DEVICE_ADD("mainpcb", RACEDRIV_BOARD_DEVICE, 0) | |
2035 | MACHINE_CONFIG_END | |
2036 | ||
2037 | static MACHINE_CONFIG_START( racedrivb1_machine, harddriv_new_state ) | |
2038 | MCFG_DEVICE_ADD("mainpcb", RACEDRIVB1_BOARD_DEVICE, 0) | |
2039 | MACHINE_CONFIG_END | |
2040 | ||
2041 | static MACHINE_CONFIG_START( racedrivc_machine, harddriv_new_state ) | |
2042 | MCFG_DEVICE_ADD("mainpcb", RACEDRIVC_BOARD_DEVICE, 0) | |
2043 | MACHINE_CONFIG_END | |
2044 | ||
2045 | static MACHINE_CONFIG_START( racedrivc1_machine, harddriv_new_state ) | |
2046 | MCFG_DEVICE_ADD("mainpcb", RACEDRIVC1_BOARD_DEVICE, 0) | |
2047 | MACHINE_CONFIG_END | |
2048 | ||
2049 | static MACHINE_CONFIG_START( stunrun_machine, harddriv_new_state ) | |
2050 | MCFG_DEVICE_ADD("mainpcb", STUNRUN_BOARD_DEVICE, 0) | |
2051 | MACHINE_CONFIG_END | |
2052 | ||
2053 | static MACHINE_CONFIG_START( strtdriv_machine, harddriv_new_state ) | |
2054 | MCFG_DEVICE_ADD("mainpcb", STRTDRIV_BOARD_DEVICE, 0) | |
2055 | MACHINE_CONFIG_END | |
2056 | ||
2057 | static MACHINE_CONFIG_START( hdrivair_machine, harddriv_new_state ) | |
2058 | MCFG_DEVICE_ADD("mainpcb", HDRIVAIR_BOARD_DEVICE, 0) | |
2059 | MACHINE_CONFIG_END | |
2060 | ||
2061 | static MACHINE_CONFIG_START( hdrivairp_machine, harddriv_new_state ) | |
2062 | MCFG_DEVICE_ADD("mainpcb", HDRIVAIRP_BOARD_DEVICE, 0) | |
2063 | MACHINE_CONFIG_END | |
2064 | ||
2065 | static MACHINE_CONFIG_START( steeltal_machine, harddriv_new_state ) | |
2066 | MCFG_DEVICE_ADD("mainpcb", STEELTAL_BOARD_DEVICE, 0) | |
2067 | MACHINE_CONFIG_END | |
2068 | ||
2069 | static MACHINE_CONFIG_START( steeltal1_machine, harddriv_new_state ) | |
2070 | MCFG_DEVICE_ADD("mainpcb", STEELTAL1_BOARD_DEVICE, 0) | |
2071 | MACHINE_CONFIG_END | |
2072 | ||
2073 | static MACHINE_CONFIG_START( steeltalp_machine, harddriv_new_state ) | |
2074 | MCFG_DEVICE_ADD("mainpcb", STEELTALP_BOARD_DEVICE, 0) | |
2075 | MACHINE_CONFIG_END | |
2076 | ||
2077 | WRITE_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 | ||
2086 | static 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 | ||
2097 | MACHINE_CONFIG_END | |
2098 | ||
2099 | 1543 | /************************************* |
2100 | 1544 | * |
2101 | 1545 | * ROM definition(s) |
r241749 | r241750 | |
2110 | 1554 | */ |
2111 | 1555 | |
2112 | 1556 | ROM_START( harddriv ) |
2113 | ROM_REGION( 0x100000, "main | |
1557 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2114 | 1558 | ROM_LOAD16_BYTE( "136052-7105.200r", 0x000000, 0x010000, CRC(af5d5c3e) SHA1(09ccf4aa933413b71b6a42796d42299e1334902f) ) |
2115 | 1559 | ROM_LOAD16_BYTE( "136052-7113.210r", 0x000001, 0x010000, CRC(3330a942) SHA1(b9210f6befd875be8bc1dbd31f44d0cb63166748) ) |
2116 | 1560 | ROM_LOAD16_BYTE( "136052-2106.200s", 0x020000, 0x010000, CRC(a668db0e) SHA1(8ac405a0ba12bac9acabdb64970608d1b2b1a99b) ) |
r241749 | r241750 | |
2120 | 1564 | ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) ) |
2121 | 1565 | ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) ) |
2122 | 1566 | |
2123 | ROM_REGION( 0x20000, " | |
1567 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
2124 | 1568 | ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) |
2125 | 1569 | ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) |
2126 | 1570 | |
2127 | ROM_REGION16_BE( 0x60000, " | |
1571 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2128 | 1572 | ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) ) |
2129 | 1573 | ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) ) |
2130 | 1574 | ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) ) |
2131 | 1575 | ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) ) |
2132 | 1576 | |
2133 | ROM_REGION( 0x40000, " | |
1577 | ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */ | |
2134 | 1578 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
2135 | 1579 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
2136 | 1580 | ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) ) |
2137 | 1581 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
2138 | 1582 | |
2139 | ROM_REGION( 0x800, " | |
1583 | ROM_REGION( 0x800, "200e", 0 ) | |
2140 | 1584 | ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) ) |
2141 | 1585 | |
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) ) | |
2144 | 1588 | ROM_END |
2145 | 1589 | |
2146 | 1590 | |
2147 | ||
2148 | 1591 | ROM_START( harddrivg ) |
2149 | ROM_REGION( 0x100000, "main | |
1592 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2150 | 1593 | ROM_LOAD16_BYTE( "136052-7205.200r", 0x000000, 0x010000, CRC(b50b1968) SHA1(b6fd9f0600cba995bf31fd0f30f15f091bbbfb09) ) |
2151 | 1594 | ROM_LOAD16_BYTE( "136052-7213.210r", 0x000001, 0x010000, CRC(e6d57108) SHA1(a4eda6db4ec67b1cb8f9bfee17d8adc93675ef8a) ) |
2152 | 1595 | ROM_LOAD16_BYTE( "136052-4206.200s", 0x020000, 0x010000, CRC(70f78c50) SHA1(6baed202937c455c7c6e4baa74ee7858673a37fc) ) |
r241749 | r241750 | |
2156 | 1599 | ROM_LOAD16_BYTE( "136052-4211.200x", 0x0c0000, 0x010000, CRC(20d1b3d5) SHA1(b7c4a2cf6ba729530c24980704989b3a3efb343b) ) |
2157 | 1600 | ROM_LOAD16_BYTE( "136052-4219.210x", 0x0c0001, 0x010000, CRC(105e7052) SHA1(a8d13c35418e58410cfd74c243b74963f1553068) ) |
2158 | 1601 | |
2159 | ROM_REGION( 0x20000, " | |
1602 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
2160 | 1603 | ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) |
2161 | 1604 | ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) |
2162 | 1605 | |
2163 | ROM_REGION16_BE( 0x60000, " | |
1606 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2164 | 1607 | ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) ) |
2165 | 1608 | ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) ) |
2166 | 1609 | ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) ) |
2167 | 1610 | ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) ) |
2168 | 1611 | |
2169 | ROM_REGION( 0x40000, " | |
1612 | ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */ | |
2170 | 1613 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
2171 | 1614 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
2172 | 1615 | ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) ) |
2173 | 1616 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
2174 | 1617 | |
2175 | ROM_REGION( 0x800, " | |
1618 | ROM_REGION( 0x800, "200e", 0 ) | |
2176 | 1619 | ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) ) |
2177 | 1620 | |
2178 | ROM_REGION( 0x800, " | |
1621 | ROM_REGION( 0x800, "210e", 0 ) | |
2179 | 1622 | ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) ) |
2180 | 1623 | ROM_END |
2181 | 1624 | |
2182 | 1625 | |
2183 | 1626 | ROM_START( harddrivj ) |
2184 | ROM_REGION( 0x100000, "main | |
1627 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2185 | 1628 | ROM_LOAD16_BYTE( "136052-7805.200r", 0x000000, 0x010000, CRC(f170c842) SHA1(842cef66646a664300a7e2b827c0bbd53e5f27ad) ) |
2186 | 1629 | ROM_LOAD16_BYTE( "136052-7813.210r", 0x000001, 0x010000, CRC(e5a3367d) SHA1(96b3a6fb5561fa59d7ac4b840fa1891d02f1bd8c) ) |
2187 | 1630 | ROM_LOAD16_BYTE( "136052-6806.200s", 0x020000, 0x010000, CRC(bd68696e) SHA1(33b173f210183fef84c4c04b3bff515d79b4924d) ) |
r241749 | r241750 | |
2193 | 1636 | ROM_LOAD16_BYTE( "136052-6811.200x", 0x0c0000, 0x010000, CRC(7bc5c8da) SHA1(ac228d6391bc9ac4238f953f9ad6eb93b3ff9958) ) |
2194 | 1637 | ROM_LOAD16_BYTE( "136052-6819.210x", 0x0c0001, 0x010000, CRC(368b7e17) SHA1(e8742edec6961173df4450073a427cf3b9f3ff57) ) |
2195 | 1638 | |
2196 | ROM_REGION( 0x20000, " | |
1639 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
2197 | 1640 | ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) |
2198 | 1641 | ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) |
2199 | 1642 | |
2200 | ROM_REGION16_BE( 0x60000, " | |
1643 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2201 | 1644 | ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) ) |
2202 | 1645 | ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) ) |
2203 | 1646 | ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) ) |
2204 | 1647 | ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) ) |
2205 | 1648 | |
2206 | ROM_REGION( 0x40000, " | |
1649 | ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */ | |
2207 | 1650 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
2208 | 1651 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
2209 | 1652 | ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) ) |
2210 | 1653 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
2211 | 1654 | |
2212 | ROM_REGION( 0x800, " | |
1655 | ROM_REGION( 0x800, "200e", 0 ) | |
2213 | 1656 | ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) ) |
2214 | 1657 | |
2215 | ROM_REGION( 0x800, " | |
1658 | ROM_REGION( 0x800, "210e", 0 ) | |
2216 | 1659 | ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) ) |
2217 | 1660 | ROM_END |
2218 | 1661 | |
2219 | 1662 | |
2220 | 1663 | ROM_START( harddrivb ) |
2221 | ROM_REGION( 0x100000, "main | |
1664 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2222 | 1665 | ROM_LOAD16_BYTE( "136052-7905.200r", 0x000000, 0x010000, CRC(c4379a2e) SHA1(41dc66c1576c591520543343a798e0d80def2188) ) |
2223 | 1666 | ROM_LOAD16_BYTE( "136052-7913.210r", 0x000001, 0x010000, CRC(1e76fa17) SHA1(80ec1de4c8a4622fb5c65ec3e8c194a8eabacc38) ) |
2224 | 1667 | ROM_LOAD16_BYTE( "136052-6906.200s", 0x020000, 0x010000, CRC(47c4498b) SHA1(aad3463f29ffc733ab42a7abf739ca698cdd8ec1) ) |
r241749 | r241750 | |
2228 | 1671 | ROM_LOAD16_BYTE( "136052-5911.200x", 0x0c0000, 0x010000, CRC(564ac427) SHA1(f71d5a8d06681fc96e753e7cd18e16b32ba6907f) ) |
2229 | 1672 | ROM_LOAD16_BYTE( "136052-5919.210x", 0x0c0001, 0x010000, CRC(752d9a6d) SHA1(28edb54c7217f5ccdcb2b5614d4e8c2290d96b2a) ) |
2230 | 1673 | |
2231 | ROM_REGION( 0x20000, " | |
1674 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
2232 | 1675 | ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) |
2233 | 1676 | ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) |
2234 | 1677 | |
2235 | ROM_REGION16_BE( 0x60000, " | |
1678 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2236 | 1679 | ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) ) |
2237 | 1680 | ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) ) |
2238 | 1681 | ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) ) |
2239 | 1682 | ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) ) |
2240 | 1683 | |
2241 | ROM_REGION( 0x40000, " | |
1684 | ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */ | |
2242 | 1685 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
2243 | 1686 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
2244 | 1687 | ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) ) |
2245 | 1688 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
2246 | 1689 | |
2247 | ROM_REGION( 0x800, " | |
1690 | ROM_REGION( 0x800, "200e", 0 ) | |
2248 | 1691 | ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) ) |
2249 | 1692 | |
2250 | ROM_REGION( 0x800, " | |
1693 | ROM_REGION( 0x800, "210e", 0 ) | |
2251 | 1694 | ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) ) |
2252 | 1695 | ROM_END |
2253 | 1696 | |
2254 | 1697 | |
2255 | 1698 | ROM_START( harddrivb6 ) |
2256 | ROM_REGION( 0x100000, "main | |
1699 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2257 | 1700 | ROM_LOAD16_BYTE( "136052-6905.200r", 0x000000, 0x010000, CRC(b1f38593) SHA1(958622128c7c687071211343ef657c38f928e25a) ) |
2258 | 1701 | ROM_LOAD16_BYTE( "136052-6913.210r", 0x000001, 0x010000, CRC(15eb0da5) SHA1(0200328582c77d4d64e9f7df1f8755f7f4975ac3) ) |
2259 | 1702 | ROM_LOAD16_BYTE( "136052-6906.200s", 0x020000, 0x010000, CRC(47c4498b) SHA1(aad3463f29ffc733ab42a7abf739ca698cdd8ec1) ) |
r241749 | r241750 | |
2263 | 1706 | ROM_LOAD16_BYTE( "136052-5911.200x", 0x0c0000, 0x010000, CRC(564ac427) SHA1(f71d5a8d06681fc96e753e7cd18e16b32ba6907f) ) |
2264 | 1707 | ROM_LOAD16_BYTE( "136052-5919.210x", 0x0c0001, 0x010000, CRC(752d9a6d) SHA1(28edb54c7217f5ccdcb2b5614d4e8c2290d96b2a) ) |
2265 | 1708 | |
2266 | ROM_REGION( 0x20000, " | |
1709 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
2267 | 1710 | ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) |
2268 | 1711 | ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) |
2269 | 1712 | |
2270 | ROM_REGION16_BE( 0x60000, " | |
1713 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2271 | 1714 | ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) ) |
2272 | 1715 | ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) ) |
2273 | 1716 | ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) ) |
2274 | 1717 | ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) ) |
2275 | 1718 | |
2276 | ROM_REGION( 0x40000, " | |
1719 | ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */ | |
2277 | 1720 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
2278 | 1721 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
2279 | 1722 | ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) ) |
2280 | 1723 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
2281 | 1724 | |
2282 | ROM_REGION( 0x800, " | |
1725 | ROM_REGION( 0x800, "200e", 0 ) | |
2283 | 1726 | ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) ) |
2284 | 1727 | |
2285 | ROM_REGION( 0x800, " | |
1728 | ROM_REGION( 0x800, "210e", 0 ) | |
2286 | 1729 | ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) ) |
2287 | 1730 | ROM_END |
2288 | 1731 | |
2289 | 1732 | |
2290 | 1733 | ROM_START( harddrivj6 ) |
2291 | ROM_REGION( 0x100000, "main | |
1734 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2292 | 1735 | ROM_LOAD16_BYTE( "136052-6805.200r", 0x000000, 0x010000, CRC(e61ce7af) SHA1(38115a5a44f330abf1f7d684e630a1a232769f7c) ) |
2293 | 1736 | ROM_LOAD16_BYTE( "136052-6813.210r", 0x000001, 0x010000, CRC(adfef1e7) SHA1(dc1bdb5ce9143a94d734ce9ecdf9195589608b65) ) |
2294 | 1737 | ROM_LOAD16_BYTE( "136052-6806.200s", 0x020000, 0x010000, CRC(bd68696e) SHA1(33b173f210183fef84c4c04b3bff515d79b4924d) ) |
r241749 | r241750 | |
2300 | 1743 | ROM_LOAD16_BYTE( "136052-6811.200x", 0x0c0000, 0x010000, CRC(7bc5c8da) SHA1(ac228d6391bc9ac4238f953f9ad6eb93b3ff9958) ) |
2301 | 1744 | ROM_LOAD16_BYTE( "136052-6819.210x", 0x0c0001, 0x010000, CRC(368b7e17) SHA1(e8742edec6961173df4450073a427cf3b9f3ff57) ) |
2302 | 1745 | |
2303 | ROM_REGION( 0x20000, " | |
1746 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
2304 | 1747 | ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) |
2305 | 1748 | ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) |
2306 | 1749 | |
2307 | ROM_REGION16_BE( 0x60000, " | |
1750 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2308 | 1751 | ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) ) |
2309 | 1752 | ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) ) |
2310 | 1753 | ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) ) |
2311 | 1754 | ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) ) |
2312 | 1755 | |
2313 | ROM_REGION( 0x40000, " | |
1756 | ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */ | |
2314 | 1757 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
2315 | 1758 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
2316 | 1759 | ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) ) |
2317 | 1760 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
2318 | 1761 | |
2319 | ROM_REGION( 0x800, " | |
1762 | ROM_REGION( 0x800, "200e", 0 ) | |
2320 | 1763 | ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) ) |
2321 | 1764 | |
2322 | ROM_REGION( 0x800, " | |
1765 | ROM_REGION( 0x800, "210e", 0 ) | |
2323 | 1766 | ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) ) |
2324 | 1767 | ROM_END |
2325 | 1768 | |
2326 | 1769 | |
2327 | 1770 | ROM_START( harddrivb5 ) |
2328 | ROM_REGION( 0x100000, "main | |
1771 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2329 | 1772 | ROM_LOAD16_BYTE( "136052-5905.200r", 0x000000, 0x010000, CRC(6dd28313) SHA1(c1f860470070dad7d8865aca508ecf5eb92fa8c5) ) |
2330 | 1773 | ROM_LOAD16_BYTE( "136052-5913.210r", 0x000001, 0x010000, CRC(2e5a006f) SHA1(8a2da1868bbad54b33e993f5bf9ba61186caef5b) ) |
2331 | 1774 | ROM_LOAD16_BYTE( "136052-5906.200s", 0x020000, 0x010000, CRC(206b59db) SHA1(2bbae0ac4af9cdda44d6d8b5fcf6b3b1c3103796) ) |
r241749 | r241750 | |
2335 | 1778 | ROM_LOAD16_BYTE( "136052-5911.200x", 0x0c0000, 0x010000, CRC(564ac427) SHA1(f71d5a8d06681fc96e753e7cd18e16b32ba6907f) ) |
2336 | 1779 | ROM_LOAD16_BYTE( "136052-5919.210x", 0x0c0001, 0x010000, CRC(752d9a6d) SHA1(28edb54c7217f5ccdcb2b5614d4e8c2290d96b2a) ) |
2337 | 1780 | |
2338 | ROM_REGION( 0x20000, " | |
1781 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
2339 | 1782 | ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) |
2340 | 1783 | ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) |
2341 | 1784 | |
2342 | ROM_REGION16_BE( 0x60000, " | |
1785 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2343 | 1786 | ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) ) |
2344 | 1787 | ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) ) |
2345 | 1788 | ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) ) |
2346 | 1789 | ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) ) |
2347 | 1790 | |
2348 | ROM_REGION( 0x40000, " | |
1791 | ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */ | |
2349 | 1792 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
2350 | 1793 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
2351 | 1794 | ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) ) |
2352 | 1795 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
2353 | 1796 | |
2354 | ROM_REGION( 0x800, " | |
1797 | ROM_REGION( 0x800, "200e", 0 ) | |
2355 | 1798 | ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) ) |
2356 | 1799 | |
2357 | ROM_REGION( 0x800, " | |
1800 | ROM_REGION( 0x800, "210e", 0 ) | |
2358 | 1801 | ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) ) |
2359 | 1802 | ROM_END |
2360 | 1803 | |
2361 | 1804 | |
2362 | 1805 | ROM_START( harddrivg4 ) |
2363 | ROM_REGION( 0x100000, "main | |
1806 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2364 | 1807 | ROM_LOAD16_BYTE( "136052-4205.200r", 0x000000, 0x010000, CRC(94db6d9e) SHA1(98a509daacb9f18c7171246d1782d09a6456e241) ) |
2365 | 1808 | ROM_LOAD16_BYTE( "136052-4213.210r", 0x000001, 0x010000, CRC(cacaf671) SHA1(7bd0f531402b2f10cb00bb8f7ca0b62eed23bffa) ) |
2366 | 1809 | ROM_LOAD16_BYTE( "136052-4206.200s", 0x020000, 0x010000, CRC(70f78c50) SHA1(6baed202937c455c7c6e4baa74ee7858673a37fc) ) |
r241749 | r241750 | |
2370 | 1813 | ROM_LOAD16_BYTE( "136052-4211.200x", 0x0c0000, 0x010000, CRC(20d1b3d5) SHA1(b7c4a2cf6ba729530c24980704989b3a3efb343b) ) |
2371 | 1814 | ROM_LOAD16_BYTE( "136052-4219.210x", 0x0c0001, 0x010000, CRC(105e7052) SHA1(a8d13c35418e58410cfd74c243b74963f1553068) ) |
2372 | 1815 | |
2373 | ROM_REGION( 0x20000, " | |
1816 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
2374 | 1817 | ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) |
2375 | 1818 | ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) |
2376 | 1819 | |
2377 | ROM_REGION16_BE( 0x60000, " | |
1820 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2378 | 1821 | ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) ) |
2379 | 1822 | ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) ) |
2380 | 1823 | ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) ) |
2381 | 1824 | ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) ) |
2382 | 1825 | |
2383 | ROM_REGION( 0x40000, " | |
1826 | ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */ | |
2384 | 1827 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
2385 | 1828 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
2386 | 1829 | ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) ) |
2387 | 1830 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
2388 | 1831 | |
2389 | ROM_REGION( 0x800, " | |
1832 | ROM_REGION( 0x800, "200e", 0 ) | |
2390 | 1833 | ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) ) |
2391 | 1834 | |
2392 | ROM_REGION( 0x800, " | |
1835 | ROM_REGION( 0x800, "210e", 0 ) | |
2393 | 1836 | ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) ) |
2394 | 1837 | ROM_END |
2395 | 1838 | |
2396 | 1839 | |
2397 | 1840 | ROM_START( harddriv3 ) |
2398 | ROM_REGION( 0x100000, "main | |
1841 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2399 | 1842 | ROM_LOAD16_BYTE( "136052-3105.200r", 0x000000, 0x010000, CRC(a42a2c69) SHA1(66233f25533106aab69df21db69f96368f1399a9) ) |
2400 | 1843 | ROM_LOAD16_BYTE( "136052-3113.210r", 0x000001, 0x010000, CRC(358995b5) SHA1(f18c0da58ec7befefc61d5f0d35787516b775c92) ) |
2401 | 1844 | ROM_LOAD16_BYTE( "136052-2106.200s", 0x020000, 0x010000, CRC(a668db0e) SHA1(8ac405a0ba12bac9acabdb64970608d1b2b1a99b) ) |
r241749 | r241750 | |
2405 | 1848 | ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) ) |
2406 | 1849 | ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) ) |
2407 | 1850 | |
2408 | ROM_REGION( 0x20000, " | |
1851 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
2409 | 1852 | ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) |
2410 | 1853 | ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) |
2411 | 1854 | |
2412 | ROM_REGION16_BE( 0x60000, " | |
1855 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2413 | 1856 | ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) ) |
2414 | 1857 | ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) ) |
2415 | 1858 | ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) ) |
2416 | 1859 | ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) ) |
2417 | 1860 | |
2418 | ROM_REGION( 0x40000, " | |
1861 | ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */ | |
2419 | 1862 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
2420 | 1863 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
2421 | 1864 | ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) ) |
2422 | 1865 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
2423 | 1866 | |
2424 | ROM_REGION( 0x800, " | |
1867 | ROM_REGION( 0x800, "200e", 0 ) | |
2425 | 1868 | ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) ) |
2426 | 1869 | |
2427 | ROM_REGION( 0x800, " | |
1870 | ROM_REGION( 0x800, "210e", 0 ) | |
2428 | 1871 | ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) ) |
2429 | 1872 | ROM_END |
2430 | 1873 | |
2431 | 1874 | |
2432 | 1875 | ROM_START( harddriv2 ) |
2433 | ROM_REGION( 0x100000, "main | |
1876 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2434 | 1877 | ROM_LOAD16_BYTE( "136052-2105.200r", 0x000000, 0x010000, CRC(967903b9) SHA1(4363f3b3f08d00819f47a3682462fd0e5dc4e0ac) ) |
2435 | 1878 | ROM_LOAD16_BYTE( "136052-2113.210r", 0x000001, 0x010000, CRC(c87f7067) SHA1(3d85d2ba818739ed05086502cd8e57438251b20b) ) |
2436 | 1879 | ROM_LOAD16_BYTE( "136052-2106.200s", 0x020000, 0x010000, CRC(a668db0e) SHA1(8ac405a0ba12bac9acabdb64970608d1b2b1a99b) ) |
r241749 | r241750 | |
2440 | 1883 | ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) ) |
2441 | 1884 | ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) ) |
2442 | 1885 | |
2443 | ROM_REGION( 0x20000, " | |
1886 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
2444 | 1887 | ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) |
2445 | 1888 | ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) |
2446 | 1889 | |
2447 | ROM_REGION16_BE( 0x60000, " | |
1890 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2448 | 1891 | ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) ) |
2449 | 1892 | ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) ) |
2450 | 1893 | ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) ) |
2451 | 1894 | ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) ) |
2452 | 1895 | |
2453 | ROM_REGION( 0x40000, " | |
1896 | ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */ | |
2454 | 1897 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
2455 | 1898 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
2456 | 1899 | ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) ) |
2457 | 1900 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
2458 | 1901 | |
2459 | ROM_REGION( 0x800, " | |
1902 | ROM_REGION( 0x800, "200e", 0 ) | |
2460 | 1903 | ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) ) |
2461 | 1904 | |
2462 | ROM_REGION( 0x800, " | |
1905 | ROM_REGION( 0x800, "210e", 0 ) | |
2463 | 1906 | ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) ) |
2464 | 1907 | ROM_END |
2465 | 1908 | |
2466 | 1909 | |
2467 | 1910 | ROM_START( harddriv1 ) |
2468 | ROM_REGION( 0x100000, "main | |
1911 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2469 | 1912 | ROM_LOAD16_BYTE( "136052-1105.200r", 0x000000, 0x010000, CRC(1dfda789) SHA1(83be0d66fe21e974f8d4582b0ab60245f1db7e55) ) |
2470 | 1913 | ROM_LOAD16_BYTE( "136052-1113.210r", 0x000001, 0x010000, CRC(db2f6593) SHA1(864ea5604cea2507b180a91b35e349d3924bf9bc) ) |
2471 | 1914 | ROM_LOAD16_BYTE( "136052-1106.200s", 0x020000, 0x010000, CRC(e82210fd) SHA1(916e674017f5187531c2de7961791c060f8412c7) ) |
r241749 | r241750 | |
2475 | 1918 | ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) ) |
2476 | 1919 | ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) ) |
2477 | 1920 | |
2478 | ROM_REGION( 0x20000, " | |
1921 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
2479 | 1922 | ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) |
2480 | 1923 | ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) |
2481 | 1924 | |
2482 | ROM_REGION16_BE( 0x60000, " | |
1925 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2483 | 1926 | ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) ) |
2484 | 1927 | ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) ) |
2485 | 1928 | ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) ) |
2486 | 1929 | ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) ) |
2487 | 1930 | |
2488 | ROM_REGION( 0x40000, " | |
1931 | ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */ | |
2489 | 1932 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
2490 | 1933 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
2491 | 1934 | ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) ) |
2492 | 1935 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
2493 | 1936 | |
2494 | ROM_REGION( 0x800, " | |
1937 | ROM_REGION( 0x800, "200e", 0 ) | |
2495 | 1938 | ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) ) |
2496 | 1939 | |
2497 | ROM_REGION( 0x800, " | |
1940 | ROM_REGION( 0x800, "210e", 0 ) | |
2498 | 1941 | ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) ) |
2499 | 1942 | ROM_END |
2500 | 1943 | |
2501 | 1944 | |
2502 | 1945 | ROM_START( harddrivc ) |
2503 | ROM_REGION( 0x100000, "main | |
1946 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2504 | 1947 | ROM_LOAD16_BYTE( "136068-2102.200r", 0x000000, 0x010000, CRC(6252048b) SHA1(64caf3adfad6965768fc6d39a8bcde62fe6dfa9e) ) |
2505 | 1948 | ROM_LOAD16_BYTE( "136068-2101.210r", 0x000001, 0x010000, CRC(4805ba06) SHA1(e0c2d935ced05b8162f2925520422184a81d5294) ) |
2506 | 1949 | ROM_LOAD16_BYTE( "136068-2104.200s", 0x020000, 0x010000, CRC(8246f945) SHA1(633b6c9a5d3e33d3035ccdb7b6ad883c334a4db9) ) |
r241749 | r241750 | |
2510 | 1953 | ROM_LOAD16_BYTE( "136068-1114.200x", 0x0c0000, 0x010000, CRC(293c153b) SHA1(6300a50766b19ad203b5c7da28d51bf22054b39e) ) |
2511 | 1954 | ROM_LOAD16_BYTE( "136068-1113.210x", 0x0c0001, 0x010000, CRC(5630390d) SHA1(cd1932cee70cddd1fb2110d1aeebb573a13f1339) ) |
2512 | 1955 | |
2513 | ROM_REGION( 0x20000, " | |
1956 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
2514 | 1957 | ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) ) |
2515 | 1958 | ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) ) |
2516 | 1959 | |
2517 | ROM_REGION16_BE( 0x60000, " | |
1960 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2518 | 1961 | ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) ) |
2519 | 1962 | ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) ) |
2520 | 1963 | ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) ) |
2521 | 1964 | ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) ) |
2522 | 1965 | |
2523 | ROM_REGION( 0x40000, " | |
1966 | ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */ | |
2524 | 1967 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
2525 | 1968 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
2526 | 1969 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
2527 | 1970 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
2528 | 1971 | |
2529 | ROM_REGION( 0x800, " | |
1972 | ROM_REGION( 0x800, "200e", 0 ) | |
2530 | 1973 | ROM_LOAD( "harddrivc.200e", 0x000000, 0x000800, CRC(560a0106) SHA1(7295a4f1255869c43c3cf146ddebaea62c30b850) ) |
2531 | 1974 | |
2532 | ROM_REGION( 0x800, " | |
1975 | ROM_REGION( 0x800, "210e", 0 ) | |
2533 | 1976 | ROM_LOAD( "harddrivc.210e", 0x000000, 0x000800, CRC(208bba53) SHA1(c9a36015a66917df528b84d20d255b6b96a90e76) ) |
2534 | 1977 | ROM_END |
2535 | 1978 | |
2536 | 1979 | |
2537 | 1980 | ROM_START( harddrivcg ) |
2538 | ROM_REGION( 0x100000, "main | |
1981 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2539 | 1982 | ROM_LOAD16_BYTE( "136068-2202.200r", 0x000000, 0x010000, CRC(ea09bdc2) SHA1(9e38ed0a47a2bfb6b80cbf1e0b3e891b94f30c10) ) |
2540 | 1983 | ROM_LOAD16_BYTE( "136068-2201.210r", 0x000001, 0x010000, CRC(a5e9947f) SHA1(75973346c9399752d8ae82fbada3a24c6d5fec94) ) |
2541 | 1984 | ROM_LOAD16_BYTE( "136068-2204.200s", 0x020000, 0x010000, CRC(65792c94) SHA1(89e93cf0d2afc4bd8a01155ba908c9aa7149dc78) ) |
r241749 | r241750 | |
2545 | 1988 | ROM_LOAD16_BYTE( "136068-1114.200x", 0x0c0000, 0x010000, CRC(293c153b) SHA1(6300a50766b19ad203b5c7da28d51bf22054b39e) ) |
2546 | 1989 | ROM_LOAD16_BYTE( "136068-1113.210x", 0x0c0001, 0x010000, CRC(5630390d) SHA1(cd1932cee70cddd1fb2110d1aeebb573a13f1339) ) |
2547 | 1990 | |
2548 | ROM_REGION( 0x20000, " | |
1991 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
2549 | 1992 | ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) ) |
2550 | 1993 | ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) ) |
2551 | 1994 | |
2552 | ROM_REGION16_BE( 0x60000, " | |
1995 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2553 | 1996 | ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) ) |
2554 | 1997 | ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) ) |
2555 | 1998 | ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) ) |
2556 | 1999 | ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) ) |
2557 | 2000 | |
2558 | ROM_REGION( 0x40000, " | |
2001 | ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */ | |
2559 | 2002 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
2560 | 2003 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
2561 | 2004 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
2562 | 2005 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
2563 | 2006 | |
2564 | ROM_REGION( 0x800, " | |
2007 | ROM_REGION( 0x800, "200e", 0 ) | |
2565 | 2008 | ROM_LOAD( "harddrivc.200e", 0x000000, 0x000800, CRC(560a0106) SHA1(7295a4f1255869c43c3cf146ddebaea62c30b850) ) |
2566 | 2009 | |
2567 | ROM_REGION( 0x800, " | |
2010 | ROM_REGION( 0x800, "210e", 0 ) | |
2568 | 2011 | ROM_LOAD( "harddrivc.210e", 0x000000, 0x000800, CRC(208bba53) SHA1(c9a36015a66917df528b84d20d255b6b96a90e76) ) |
2569 | 2012 | ROM_END |
2570 | 2013 | |
2571 | 2014 | |
2572 | 2015 | ROM_START( harddrivcb ) |
2573 | ROM_REGION( 0x100000, "main | |
2016 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2574 | 2017 | ROM_LOAD16_BYTE( "136068-2102.200r", 0x000000, 0x010000, CRC(6252048b) SHA1(64caf3adfad6965768fc6d39a8bcde62fe6dfa9e) ) |
2575 | 2018 | ROM_LOAD16_BYTE( "136068-2101.210r", 0x000001, 0x010000, CRC(4805ba06) SHA1(e0c2d935ced05b8162f2925520422184a81d5294) ) |
2576 | 2019 | ROM_LOAD16_BYTE( "136068-2104.200s", 0x020000, 0x010000, CRC(8246f945) SHA1(633b6c9a5d3e33d3035ccdb7b6ad883c334a4db9) ) |
r241749 | r241750 | |
2580 | 2023 | ROM_LOAD16_BYTE( "136068-2914.200x", 0x0c0000, 0x010000, CRC(dd2998a5) SHA1(36c71549d114309b9072ced83ed149cad1d23646) ) |
2581 | 2024 | ROM_LOAD16_BYTE( "136068-2913.210x", 0x0c0001, 0x010000, CRC(a211754d) SHA1(b93d4867f664caa76f2170ef0934194de29a5516) ) |
2582 | 2025 | |
2583 | ROM_REGION( 0x20000, " | |
2026 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
2584 | 2027 | ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) ) |
2585 | 2028 | ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) ) |
2586 | 2029 | |
2587 | ROM_REGION16_BE( 0x60000, " | |
2030 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2588 | 2031 | ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) ) |
2589 | 2032 | ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) ) |
2590 | 2033 | ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) ) |
2591 | 2034 | ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) ) |
2592 | 2035 | |
2593 | ROM_REGION( 0x40000, " | |
2036 | ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */ | |
2594 | 2037 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
2595 | 2038 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
2596 | 2039 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
2597 | 2040 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
2598 | 2041 | |
2599 | ROM_REGION( 0x800, " | |
2042 | ROM_REGION( 0x800, "200e", 0 ) | |
2600 | 2043 | ROM_LOAD( "harddrivc.200e", 0x000000, 0x000800, CRC(560a0106) SHA1(7295a4f1255869c43c3cf146ddebaea62c30b850) ) |
2601 | 2044 | |
2602 | ROM_REGION( 0x800, " | |
2045 | ROM_REGION( 0x800, "210e", 0 ) | |
2603 | 2046 | ROM_LOAD( "harddrivc.210e", 0x000000, 0x000800, CRC(208bba53) SHA1(c9a36015a66917df528b84d20d255b6b96a90e76) ) |
2604 | 2047 | ROM_END |
2605 | 2048 | |
2606 | 2049 | |
2607 | 2050 | ROM_START( harddrivc1 ) |
2608 | ROM_REGION( 0x100000, "main | |
2051 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2609 | 2052 | ROM_LOAD16_BYTE( "136068-1102.200r", 0x000000, 0x010000, CRC(f1d3779f) SHA1(1ab84fc920f6810aa7c1af80b0472ea17d07e58b) ) |
2610 | 2053 | ROM_LOAD16_BYTE( "136068-1101.210r", 0x000001, 0x010000, CRC(3ea4d3d9) SHA1(3901e8c07bed35bf6a55ab92f5c7eb9335675792) ) |
2611 | 2054 | ROM_LOAD16_BYTE( "136068-1104.200s", 0x020000, 0x010000, CRC(34133511) SHA1(71c56607cecd379761f700d181f6e91e7bb6fdfc) ) |
r241749 | r241750 | |
2615 | 2058 | ROM_LOAD16_BYTE( "136068-1114.200x", 0x0c0000, 0x010000, CRC(293c153b) SHA1(6300a50766b19ad203b5c7da28d51bf22054b39e) ) |
2616 | 2059 | ROM_LOAD16_BYTE( "136068-1113.210x", 0x0c0001, 0x010000, CRC(5630390d) SHA1(cd1932cee70cddd1fb2110d1aeebb573a13f1339) ) |
2617 | 2060 | |
2618 | ROM_REGION( 0x20000, " | |
2061 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
2619 | 2062 | ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) ) |
2620 | 2063 | ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) ) |
2621 | 2064 | |
2622 | ROM_REGION16_BE( 0x60000, " | |
2065 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2623 | 2066 | ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) ) |
2624 | 2067 | ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) ) |
2625 | 2068 | ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) ) |
2626 | 2069 | ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) ) |
2627 | 2070 | |
2628 | ROM_REGION( 0x40000, " | |
2071 | ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */ | |
2629 | 2072 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
2630 | 2073 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
2631 | 2074 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
2632 | 2075 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
2633 | 2076 | |
2634 | ROM_REGION( 0x800, " | |
2077 | ROM_REGION( 0x800, "200e", 0 ) | |
2635 | 2078 | ROM_LOAD( "harddrivc.200e", 0x000000, 0x000800, CRC(560a0106) SHA1(7295a4f1255869c43c3cf146ddebaea62c30b850) ) |
2636 | 2079 | |
2637 | ROM_REGION( 0x800, " | |
2080 | ROM_REGION( 0x800, "210e", 0 ) | |
2638 | 2081 | ROM_LOAD( "harddrivc.210e", 0x000000, 0x000800, CRC(208bba53) SHA1(c9a36015a66917df528b84d20d255b6b96a90e76) ) |
2639 | 2082 | ROM_END |
2640 | 2083 | |
2641 | 2084 | |
2642 | 2085 | ROM_START( stunrun ) |
2643 | ROM_REGION( 0x100000, "main | |
2086 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2644 | 2087 | ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) ) |
2645 | 2088 | ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) ) |
2646 | 2089 | ROM_LOAD16_BYTE( "136070-6104.200s", 0x020000, 0x010000, CRC(f469f91c) SHA1(488ea6251ff4028edaf00bb1ded74cefdc71a373) ) |
r241749 | r241750 | |
2654 | 2097 | ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) ) |
2655 | 2098 | ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) ) |
2656 | 2099 | |
2657 | ROM_REGION( 0x14000, " | |
2100 | ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */ | |
2658 | 2101 | ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) ) |
2659 | 2102 | ROM_CONTINUE( 0x004000, 0x00c000 ) |
2660 | 2103 | |
2661 | ROM_REGION16_BE( 0x60000, " | |
2104 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2662 | 2105 | ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) ) |
2663 | 2106 | ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) ) |
2664 | 2107 | ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) ) |
r241749 | r241750 | |
2666 | 2109 | ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) ) |
2667 | 2110 | ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) ) |
2668 | 2111 | |
2669 | ROM_REGION( 0x40000, " | |
2112 | ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */ | |
2670 | 2113 | ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) ) |
2671 | 2114 | ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) ) |
2672 | 2115 | ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) ) |
2673 | 2116 | ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) ) |
2674 | 2117 | |
2675 | ROM_REGION( 0x800, " | |
2118 | ROM_REGION( 0x800, "200e", 0 ) | |
2676 | 2119 | ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
2677 | 2120 | |
2678 | ROM_REGION( 0x800, " | |
2121 | ROM_REGION( 0x800, "210e", 0 ) | |
2679 | 2122 | ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
2680 | 2123 | ROM_END |
2681 | 2124 | |
2682 | 2125 | |
2683 | 2126 | ROM_START( stunrunj ) |
2684 | ROM_REGION( 0x100000, "main | |
2127 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2685 | 2128 | ROM_LOAD16_BYTE( "136070-3402.200r", 0x000000, 0x010000, CRC(d8d56923) SHA1(248b22dab791c2d9ee6e6097dac9f3bf85d572be) ) |
2686 | 2129 | ROM_LOAD16_BYTE( "136070-3401.210r", 0x000001, 0x010000, CRC(ce11126c) SHA1(cf27b56103048cc23dc6763763b7419583a27c76) ) |
2687 | 2130 | ROM_LOAD16_BYTE( "136070-7404.200s", 0x020000, 0x010000, CRC(81da3e74) SHA1(38864aac479a8927d168ee977fd0981a7926d0fd) ) |
r241749 | r241750 | |
2695 | 2138 | ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) ) |
2696 | 2139 | ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) ) |
2697 | 2140 | |
2698 | ROM_REGION( 0x14000, " | |
2141 | ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */ | |
2699 | 2142 | ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) ) |
2700 | 2143 | ROM_CONTINUE( 0x004000, 0x00c000 ) |
2701 | 2144 | |
2702 | ROM_REGION16_BE( 0x60000, " | |
2145 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2703 | 2146 | ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) ) |
2704 | 2147 | ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) ) |
2705 | 2148 | ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) ) |
r241749 | r241750 | |
2707 | 2150 | ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) ) |
2708 | 2151 | ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) ) |
2709 | 2152 | |
2710 | ROM_REGION( 0x40000, " | |
2153 | ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */ | |
2711 | 2154 | ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) ) |
2712 | 2155 | ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) ) |
2713 | 2156 | ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) ) |
2714 | 2157 | ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) ) |
2715 | 2158 | |
2716 | ROM_REGION( 0x800, " | |
2159 | ROM_REGION( 0x800, "200e", 0 ) | |
2717 | 2160 | ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
2718 | 2161 | |
2719 | ROM_REGION( 0x800, " | |
2162 | ROM_REGION( 0x800, "210e", 0 ) | |
2720 | 2163 | ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
2721 | 2164 | ROM_END |
2722 | 2165 | |
2723 | 2166 | |
2724 | 2167 | ROM_START( stunrun5 ) |
2725 | ROM_REGION( 0x100000, "main | |
2168 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2726 | 2169 | ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) ) |
2727 | 2170 | ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) ) |
2728 | 2171 | ROM_LOAD16_BYTE( "136070-5104.200s", 0x020000, 0x010000, CRC(d5c601fe) SHA1(ab61e11723ab9b92fb98b6f8e520a7b323caae64) ) |
r241749 | r241750 | |
2736 | 2179 | ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) ) |
2737 | 2180 | ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) ) |
2738 | 2181 | |
2739 | ROM_REGION( 0x14000, " | |
2182 | ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */ | |
2740 | 2183 | ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) ) |
2741 | 2184 | ROM_CONTINUE( 0x004000, 0x00c000 ) |
2742 | 2185 | |
2743 | ROM_REGION16_BE( 0x60000, " | |
2186 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2744 | 2187 | ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) ) |
2745 | 2188 | ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) ) |
2746 | 2189 | ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) ) |
r241749 | r241750 | |
2748 | 2191 | ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) ) |
2749 | 2192 | ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) ) |
2750 | 2193 | |
2751 | ROM_REGION( 0x40000, " | |
2194 | ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */ | |
2752 | 2195 | ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) ) |
2753 | 2196 | ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) ) |
2754 | 2197 | ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) ) |
2755 | 2198 | ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) ) |
2756 | 2199 | |
2757 | ROM_REGION( 0x800, " | |
2200 | ROM_REGION( 0x800, "200e", 0 ) | |
2758 | 2201 | ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
2759 | 2202 | |
2760 | ROM_REGION( 0x800, " | |
2203 | ROM_REGION( 0x800, "210e", 0 ) | |
2761 | 2204 | ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
2762 | 2205 | ROM_END |
2763 | 2206 | |
2764 | 2207 | |
2765 | 2208 | ROM_START( stunrune ) |
2766 | ROM_REGION( 0x100000, "main | |
2209 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2767 | 2210 | ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) ) |
2768 | 2211 | ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) ) |
2769 | 2212 | ROM_LOAD16_BYTE( "136070-5004.200s", 0x020000, 0x010000, CRC(c2e4bde8) SHA1(766242455b0be6dc7b698cc6fe86d90991ca2e0a) ) |
r241749 | r241750 | |
2777 | 2220 | ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) ) |
2778 | 2221 | ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) ) |
2779 | 2222 | |
2780 | ROM_REGION( 0x14000, " | |
2223 | ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */ | |
2781 | 2224 | ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) ) |
2782 | 2225 | ROM_CONTINUE( 0x004000, 0x00c000 ) |
2783 | 2226 | |
2784 | ROM_REGION16_BE( 0x60000, " | |
2227 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2785 | 2228 | ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) ) |
2786 | 2229 | ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) ) |
2787 | 2230 | ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) ) |
r241749 | r241750 | |
2789 | 2232 | ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) ) |
2790 | 2233 | ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) ) |
2791 | 2234 | |
2792 | ROM_REGION( 0x40000, " | |
2235 | ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */ | |
2793 | 2236 | ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) ) |
2794 | 2237 | ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) ) |
2795 | 2238 | ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) ) |
2796 | 2239 | ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) ) |
2797 | 2240 | |
2798 | ROM_REGION( 0x800, " | |
2241 | ROM_REGION( 0x800, "200e", 0 ) | |
2799 | 2242 | ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
2800 | 2243 | |
2801 | ROM_REGION( 0x800, " | |
2244 | ROM_REGION( 0x800, "210e", 0 ) | |
2802 | 2245 | ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
2803 | 2246 | ROM_END |
2804 | 2247 | |
2805 | 2248 | |
2806 | 2249 | ROM_START( stunrun4 ) |
2807 | ROM_REGION( 0x100000, "main | |
2250 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2808 | 2251 | ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) ) |
2809 | 2252 | ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) ) |
2810 | 2253 | ROM_LOAD16_BYTE( "136070-4104.200s", 0x020000, 0x010000, CRC(62c7700b) SHA1(31d7a39df7353e60b806c204bfdd75c06b17c984) ) |
r241749 | r241750 | |
2818 | 2261 | ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) ) |
2819 | 2262 | ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) ) |
2820 | 2263 | |
2821 | ROM_REGION( 0x14000, " | |
2264 | ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */ | |
2822 | 2265 | ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) ) |
2823 | 2266 | ROM_CONTINUE( 0x004000, 0x00c000 ) |
2824 | 2267 | |
2825 | ROM_REGION16_BE( 0x60000, " | |
2268 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2826 | 2269 | ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) ) |
2827 | 2270 | ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) ) |
2828 | 2271 | ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) ) |
r241749 | r241750 | |
2830 | 2273 | ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) ) |
2831 | 2274 | ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) ) |
2832 | 2275 | |
2833 | ROM_REGION( 0x40000, " | |
2276 | ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */ | |
2834 | 2277 | ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) ) |
2835 | 2278 | ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) ) |
2836 | 2279 | ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) ) |
2837 | 2280 | ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) ) |
2838 | 2281 | |
2839 | ROM_REGION( 0x800, " | |
2282 | ROM_REGION( 0x800, "200e", 0 ) | |
2840 | 2283 | ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
2841 | 2284 | |
2842 | ROM_REGION( 0x800, " | |
2285 | ROM_REGION( 0x800, "210e", 0 ) | |
2843 | 2286 | ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
2844 | 2287 | ROM_END |
2845 | 2288 | |
2846 | 2289 | |
2847 | 2290 | ROM_START( stunrun3 ) |
2848 | ROM_REGION( 0x100000, "main | |
2291 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2849 | 2292 | ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) ) |
2850 | 2293 | ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) ) |
2851 | 2294 | ROM_LOAD16_BYTE( "136070-2104.200s", 0x020000, 0x010000, CRC(6acdeeaa) SHA1(a4cbe648ad2fee3bb945fbc8055b76be1f5c03d1) ) |
r241749 | r241750 | |
2859 | 2302 | ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) ) |
2860 | 2303 | ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) ) |
2861 | 2304 | |
2862 | ROM_REGION( 0x14000, " | |
2305 | ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */ | |
2863 | 2306 | ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) ) |
2864 | 2307 | ROM_CONTINUE( 0x004000, 0x00c000 ) |
2865 | 2308 | |
2866 | ROM_REGION16_BE( 0x60000, " | |
2309 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2867 | 2310 | ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) ) |
2868 | 2311 | ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) ) |
2869 | 2312 | ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) ) |
r241749 | r241750 | |
2871 | 2314 | ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) ) |
2872 | 2315 | ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) ) |
2873 | 2316 | |
2874 | ROM_REGION( 0x40000, " | |
2317 | ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */ | |
2875 | 2318 | ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) ) |
2876 | 2319 | ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) ) |
2877 | 2320 | ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) ) |
2878 | 2321 | ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) ) |
2879 | 2322 | |
2880 | ROM_REGION( 0x800, " | |
2323 | ROM_REGION( 0x800, "200e", 0 ) | |
2881 | 2324 | ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
2882 | 2325 | |
2883 | ROM_REGION( 0x800, " | |
2326 | ROM_REGION( 0x800, "210e", 0 ) | |
2884 | 2327 | ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
2885 | 2328 | ROM_END |
2886 | 2329 | |
2887 | 2330 | |
2888 | 2331 | ROM_START( stunrun3e ) |
2889 | ROM_REGION( 0x100000, "main | |
2332 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2890 | 2333 | ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) ) |
2891 | 2334 | ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) ) |
2892 | 2335 | ROM_LOAD16_BYTE( "136070-3004.200s", 0x020000, 0x010000, CRC(d9474678) SHA1(090b78f9e9d2ecf4218821fc102861df1e27d95a) ) |
r241749 | r241750 | |
2900 | 2343 | ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) ) |
2901 | 2344 | ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) ) |
2902 | 2345 | |
2903 | ROM_REGION( 0x14000, " | |
2346 | ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */ | |
2904 | 2347 | ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) ) |
2905 | 2348 | ROM_CONTINUE( 0x004000, 0x00c000 ) |
2906 | 2349 | |
2907 | ROM_REGION16_BE( 0x60000, " | |
2350 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2908 | 2351 | ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) ) |
2909 | 2352 | ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) ) |
2910 | 2353 | ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) ) |
r241749 | r241750 | |
2912 | 2355 | ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) ) |
2913 | 2356 | ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) ) |
2914 | 2357 | |
2915 | ROM_REGION( 0x40000, " | |
2358 | ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */ | |
2916 | 2359 | ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) ) |
2917 | 2360 | ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) ) |
2918 | 2361 | ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) ) |
2919 | 2362 | ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) ) |
2920 | 2363 | |
2921 | ROM_REGION( 0x800, " | |
2364 | ROM_REGION( 0x800, "200e", 0 ) | |
2922 | 2365 | ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
2923 | 2366 | |
2924 | ROM_REGION( 0x800, " | |
2367 | ROM_REGION( 0x800, "210e", 0 ) | |
2925 | 2368 | ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
2926 | 2369 | ROM_END |
2927 | 2370 | |
2928 | 2371 | |
2929 | 2372 | ROM_START( stunrun2 ) |
2930 | ROM_REGION( 0x100000, "main | |
2373 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2931 | 2374 | ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) ) |
2932 | 2375 | ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) ) |
2933 | 2376 | ROM_LOAD16_BYTE( "136070-2104.200s", 0x020000, 0x010000, CRC(6acdeeaa) SHA1(a4cbe648ad2fee3bb945fbc8055b76be1f5c03d1) ) |
r241749 | r241750 | |
2941 | 2384 | ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) ) |
2942 | 2385 | ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) ) |
2943 | 2386 | |
2944 | ROM_REGION( 0x14000, " | |
2387 | ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */ | |
2945 | 2388 | ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) ) |
2946 | 2389 | ROM_CONTINUE( 0x004000, 0x00c000 ) |
2947 | 2390 | |
2948 | ROM_REGION16_BE( 0x60000, " | |
2391 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2949 | 2392 | ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) ) |
2950 | 2393 | ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) ) |
2951 | 2394 | ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) ) |
r241749 | r241750 | |
2953 | 2396 | ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) ) |
2954 | 2397 | ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) ) |
2955 | 2398 | |
2956 | ROM_REGION( 0x40000, " | |
2399 | ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */ | |
2957 | 2400 | ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) ) |
2958 | 2401 | ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) ) |
2959 | 2402 | ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) ) |
2960 | 2403 | ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) ) |
2961 | 2404 | |
2962 | ROM_REGION( 0x800, " | |
2405 | ROM_REGION( 0x800, "200e", 0 ) | |
2963 | 2406 | ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
2964 | 2407 | |
2965 | ROM_REGION( 0x800, " | |
2408 | ROM_REGION( 0x800, "210e", 0 ) | |
2966 | 2409 | ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
2967 | 2410 | ROM_END |
2968 | 2411 | |
2969 | 2412 | |
2970 | 2413 | ROM_START( stunrun2e ) |
2971 | ROM_REGION( 0x100000, "main | |
2414 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
2972 | 2415 | ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) ) |
2973 | 2416 | ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) ) |
2974 | 2417 | ROM_LOAD16_BYTE( "136070-2004.200s", 0x020000, 0x010000, CRC(30303326) SHA1(49a279b5b02af97395dfb8c66410319a807aa4b9) ) |
r241749 | r241750 | |
2982 | 2425 | ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) ) |
2983 | 2426 | ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) ) |
2984 | 2427 | |
2985 | ROM_REGION( 0x14000, " | |
2428 | ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */ | |
2986 | 2429 | ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) ) |
2987 | 2430 | ROM_CONTINUE( 0x004000, 0x00c000 ) |
2988 | 2431 | |
2989 | ROM_REGION16_BE( 0x60000, " | |
2432 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
2990 | 2433 | ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) ) |
2991 | 2434 | ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) ) |
2992 | 2435 | ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) ) |
r241749 | r241750 | |
2994 | 2437 | ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) ) |
2995 | 2438 | ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) ) |
2996 | 2439 | |
2997 | ROM_REGION( 0x40000, " | |
2440 | ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */ | |
2998 | 2441 | ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) ) |
2999 | 2442 | ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) ) |
3000 | 2443 | ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) ) |
3001 | 2444 | ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) ) |
3002 | 2445 | |
3003 | ROM_REGION( 0x800, " | |
2446 | ROM_REGION( 0x800, "200e", 0 ) | |
3004 | 2447 | ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
3005 | 2448 | |
3006 | ROM_REGION( 0x800, " | |
2449 | ROM_REGION( 0x800, "210e", 0 ) | |
3007 | 2450 | ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
3008 | 2451 | ROM_END |
3009 | 2452 | |
3010 | 2453 | |
3011 | 2454 | ROM_START( stunrun0 ) |
3012 | ROM_REGION( 0x100000, "main | |
2455 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3013 | 2456 | ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) ) |
3014 | 2457 | ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) ) |
3015 | 2458 | ROM_LOAD16_BYTE( "136070-0304.200s", 0x020000, 0x010000, CRC(e7968b1b) SHA1(f2e5b4f64e553041abbe2610968f59cca425a4d4) ) |
r241749 | r241750 | |
3023 | 2466 | ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) ) |
3024 | 2467 | ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) ) |
3025 | 2468 | |
3026 | ROM_REGION( 0x14000, " | |
2469 | ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */ | |
3027 | 2470 | ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) ) |
3028 | 2471 | ROM_CONTINUE( 0x004000, 0x00c000 ) |
3029 | 2472 | |
3030 | ROM_REGION16_BE( 0x60000, " | |
2473 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3031 | 2474 | ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) ) |
3032 | 2475 | ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) ) |
3033 | 2476 | ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) ) |
r241749 | r241750 | |
3035 | 2478 | ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) ) |
3036 | 2479 | ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) ) |
3037 | 2480 | |
3038 | ROM_REGION( 0x40000, " | |
2481 | ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */ | |
3039 | 2482 | ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) ) |
3040 | 2483 | ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) ) |
3041 | 2484 | ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) ) |
3042 | 2485 | ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) ) |
3043 | 2486 | |
3044 | ROM_REGION( 0x800, " | |
2487 | ROM_REGION( 0x800, "200e", 0 ) | |
3045 | 2488 | ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
3046 | 2489 | |
3047 | ROM_REGION( 0x800, " | |
2490 | ROM_REGION( 0x800, "210e", 0 ) | |
3048 | 2491 | ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
3049 | 2492 | ROM_END |
3050 | 2493 | |
3051 | 2494 | |
3052 | 2495 | ROM_START( stunrunp ) |
3053 | ROM_REGION( 0x100000, "main | |
2496 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3054 | 2497 | ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) ) |
3055 | 2498 | ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) ) |
3056 | 2499 | ROM_LOAD16_BYTE( "prog-hi0.s20", 0x020000, 0x010000, CRC(0be15a99) SHA1(52b152b23af305e95765c72052bb7aba846510d6) ) |
r241749 | r241750 | |
3064 | 2507 | ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) ) |
3065 | 2508 | ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) ) |
3066 | 2509 | |
3067 | ROM_REGION( 0x14000, " | |
2510 | ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */ | |
3068 | 2511 | ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) ) |
3069 | 2512 | ROM_CONTINUE( 0x004000, 0x00c000 ) |
3070 | 2513 | |
3071 | ROM_REGION16_BE( 0x60000, " | |
2514 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3072 | 2515 | ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) ) |
3073 | 2516 | ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) ) |
3074 | 2517 | ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) ) |
r241749 | r241750 | |
3076 | 2519 | ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) ) |
3077 | 2520 | ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) ) |
3078 | 2521 | |
3079 | ROM_REGION( 0x40000, " | |
2522 | ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */ | |
3080 | 2523 | ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) ) |
3081 | 2524 | ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) ) |
3082 | 2525 | ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) ) |
3083 | 2526 | ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) ) |
3084 | 2527 | |
3085 | ROM_REGION( 0x800, " | |
2528 | ROM_REGION( 0x800, "200e", 0 ) | |
3086 | 2529 | ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
3087 | 2530 | |
3088 | ROM_REGION( 0x800, " | |
2531 | ROM_REGION( 0x800, "210e", 0 ) | |
3089 | 2532 | ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
3090 | 2533 | ROM_END |
3091 | 2534 | |
3092 | 2535 | |
3093 | 2536 | ROM_START( racedriv ) |
3094 | ROM_REGION( 0x100000, "main | |
2537 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3095 | 2538 | ROM_LOAD16_BYTE( "136077-5002.200r", 0x000000, 0x010000, CRC(0a78adca) SHA1(a44722340ff7c99253107be092bec2e87cae340b) ) |
3096 | 2539 | ROM_LOAD16_BYTE( "136077-5001.210r", 0x000001, 0x010000, CRC(74b4cd49) SHA1(48fc4344c092c9eb14249874ac305b87bba53e7e) ) |
3097 | 2540 | ROM_LOAD16_BYTE( "136077-5004.200s", 0x020000, 0x010000, CRC(c0cbdf4e) SHA1(8c7f4f79e90dc7206d9d83d588822000a7a53c52) ) |
r241749 | r241750 | |
3109 | 2552 | ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) ) |
3110 | 2553 | ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) ) |
3111 | 2554 | |
3112 | ROM_REGION( 0x2000, " | |
2555 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
3113 | 2556 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
3114 | 2557 | |
3115 | ROM_REGION( 0x20000, " | |
2558 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
3116 | 2559 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
3117 | 2560 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
3118 | 2561 | |
3119 | ROM_REGION16_BE( 0x60000, " | |
2562 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3120 | 2563 | ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) ) |
3121 | 2564 | ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) ) |
3122 | 2565 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
3123 | 2566 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
3124 | 2567 | |
3125 | ROM_REGION16_BE( 0x50000, " | |
2568 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
3126 | 2569 | ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) ) |
3127 | 2570 | ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) ) |
3128 | 2571 | |
3129 | ROM_REGION( 0x50000, " | |
2572 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
3130 | 2573 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
3131 | 2574 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
3132 | 2575 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
3133 | 2576 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
3134 | 2577 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
3135 | 2578 | |
3136 | ROM_REGION( 0x800, " | |
2579 | ROM_REGION( 0x800, "200e", 0 ) | |
3137 | 2580 | ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) ) |
3138 | 2581 | |
3139 | ROM_REGION( 0x800, " | |
2582 | ROM_REGION( 0x800, "210e", 0 ) | |
3140 | 2583 | ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) ) |
3141 | 2584 | ROM_END |
3142 | 2585 | |
3143 | 2586 | |
3144 | 2587 | ROM_START( racedrivb ) |
3145 | ROM_REGION( 0x100000, "main | |
2588 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3146 | 2589 | ROM_LOAD16_BYTE( "136077-5002.200r", 0x000000, 0x010000, CRC(0a78adca) SHA1(a44722340ff7c99253107be092bec2e87cae340b) ) |
3147 | 2590 | ROM_LOAD16_BYTE( "136077-5001.210r", 0x000001, 0x010000, CRC(74b4cd49) SHA1(48fc4344c092c9eb14249874ac305b87bba53e7e) ) |
3148 | 2591 | ROM_LOAD16_BYTE( "136077-5004.200s", 0x020000, 0x010000, CRC(c0cbdf4e) SHA1(8c7f4f79e90dc7206d9d83d588822000a7a53c52) ) |
r241749 | r241750 | |
3160 | 2603 | ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) ) |
3161 | 2604 | ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) ) |
3162 | 2605 | |
3163 | ROM_REGION( 0x2000, " | |
2606 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
3164 | 2607 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
3165 | 2608 | |
3166 | ROM_REGION( 0x20000, " | |
2609 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
3167 | 2610 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
3168 | 2611 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
3169 | 2612 | |
3170 | ROM_REGION16_BE( 0x60000, " | |
2613 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3171 | 2614 | ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) ) |
3172 | 2615 | ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) ) |
3173 | 2616 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
3174 | 2617 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
3175 | 2618 | |
3176 | ROM_REGION16_BE( 0x50000, " | |
2619 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
3177 | 2620 | ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) ) |
3178 | 2621 | ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) ) |
3179 | 2622 | |
3180 | ROM_REGION( 0x50000, " | |
2623 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
3181 | 2624 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
3182 | 2625 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
3183 | 2626 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
3184 | 2627 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
3185 | 2628 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
3186 | 2629 | |
3187 | ROM_REGION( 0x800, " | |
2630 | ROM_REGION( 0x800, "200e", 0 ) | |
3188 | 2631 | ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) ) |
3189 | 2632 | |
3190 | ROM_REGION( 0x800, " | |
2633 | ROM_REGION( 0x800, "210e", 0 ) | |
3191 | 2634 | ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) ) |
3192 | 2635 | ROM_END |
3193 | 2636 | |
3194 | 2637 | |
3195 | 2638 | ROM_START( racedrivg ) |
3196 | ROM_REGION( 0x100000, "main | |
2639 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3197 | 2640 | ROM_LOAD16_BYTE( "136077-5202.200r", 0x000000, 0x010000, CRC(69016b69) SHA1(8da1314b4b6da6fc95479b9034190181bf778b25) ) |
3198 | 2641 | ROM_LOAD16_BYTE( "136077-5201.210r", 0x000001, 0x010000, CRC(439a1ce7) SHA1(fc376c654c494d2895bcf85d5d8a9d6f17b6887e) ) |
3199 | 2642 | ROM_LOAD16_BYTE( "136077-5204.200s", 0x020000, 0x010000, CRC(15df2b3d) SHA1(49235687b7be684dcd491b854f80c1d849894956) ) |
r241749 | r241750 | |
3211 | 2654 | ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) ) |
3212 | 2655 | ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) ) |
3213 | 2656 | |
3214 | ROM_REGION( 0x2000, " | |
2657 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
3215 | 2658 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
3216 | 2659 | |
3217 | ROM_REGION( 0x20000, " | |
2660 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
3218 | 2661 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
3219 | 2662 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
3220 | 2663 | |
3221 | ROM_REGION16_BE( 0x60000, " | |
2664 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3222 | 2665 | ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) ) |
3223 | 2666 | ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) ) |
3224 | 2667 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
3225 | 2668 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
3226 | 2669 | |
3227 | ROM_REGION16_BE( 0x50000, " | |
2670 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
3228 | 2671 | ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) ) |
3229 | 2672 | ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) ) |
3230 | 2673 | |
3231 | ROM_REGION( 0x50000, " | |
2674 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
3232 | 2675 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
3233 | 2676 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
3234 | 2677 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
3235 | 2678 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
3236 | 2679 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
3237 | 2680 | |
3238 | ROM_REGION( 0x800, " | |
2681 | ROM_REGION( 0x800, "200e", 0 ) | |
3239 | 2682 | ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) ) |
3240 | 2683 | |
3241 | ROM_REGION( 0x800, " | |
2684 | ROM_REGION( 0x800, "210e", 0 ) | |
3242 | 2685 | ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) ) |
3243 | 2686 | ROM_END |
3244 | 2687 | |
3245 | 2688 | |
3246 | 2689 | ROM_START( racedriv4 ) |
3247 | ROM_REGION( 0x100000, "main | |
2690 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3248 | 2691 | ROM_LOAD16_BYTE( "136077-4002.200r", 0x000000, 0x010000, CRC(afe1beb5) SHA1(66dba58f2a02eaa2d6306e53adffb662a8021031) ) |
3249 | 2692 | ROM_LOAD16_BYTE( "136077-4001.210r", 0x000001, 0x010000, CRC(8a449e44) SHA1(03800b96a3992baa4bd37db20e559e08b12e55d1) ) |
3250 | 2693 | ROM_LOAD16_BYTE( "136077-4004.200s", 0x020000, 0x010000, CRC(6d886150) SHA1(514de55de66a2b7fb14d6e2d896911e1b1af62f2) ) |
r241749 | r241750 | |
3262 | 2705 | ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) ) |
3263 | 2706 | ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) ) |
3264 | 2707 | |
3265 | ROM_REGION( 0x2000, " | |
2708 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
3266 | 2709 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
3267 | 2710 | |
3268 | ROM_REGION( 0x20000, " | |
2711 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
3269 | 2712 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
3270 | 2713 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
3271 | 2714 | |
3272 | ROM_REGION16_BE( 0x60000, " | |
2715 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3273 | 2716 | ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) ) |
3274 | 2717 | ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) ) |
3275 | 2718 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
3276 | 2719 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
3277 | 2720 | |
3278 | ROM_REGION16_BE( 0x50000, " | |
2721 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
3279 | 2722 | ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) ) |
3280 | 2723 | ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) ) |
3281 | 2724 | |
3282 | ROM_REGION( 0x50000, " | |
2725 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
3283 | 2726 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
3284 | 2727 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
3285 | 2728 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
3286 | 2729 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
3287 | 2730 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
3288 | 2731 | |
3289 | ROM_REGION( 0x800, " | |
2732 | ROM_REGION( 0x800, "200e", 0 ) | |
3290 | 2733 | ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) ) |
3291 | 2734 | |
3292 | ROM_REGION( 0x800, " | |
2735 | ROM_REGION( 0x800, "210e", 0 ) | |
3293 | 2736 | ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) ) |
3294 | 2737 | ROM_END |
3295 | 2738 | |
3296 | 2739 | |
3297 | 2740 | ROM_START( racedrivb4 ) |
3298 | ROM_REGION( 0x100000, "main | |
2741 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3299 | 2742 | ROM_LOAD16_BYTE( "136077-4002.200r", 0x000000, 0x010000, CRC(afe1beb5) SHA1(66dba58f2a02eaa2d6306e53adffb662a8021031) ) |
3300 | 2743 | ROM_LOAD16_BYTE( "136077-4001.210r", 0x000001, 0x010000, CRC(8a449e44) SHA1(03800b96a3992baa4bd37db20e559e08b12e55d1) ) |
3301 | 2744 | ROM_LOAD16_BYTE( "136077-4004.200s", 0x020000, 0x010000, CRC(6d886150) SHA1(514de55de66a2b7fb14d6e2d896911e1b1af62f2) ) |
r241749 | r241750 | |
3313 | 2756 | ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) ) |
3314 | 2757 | ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) ) |
3315 | 2758 | |
3316 | ROM_REGION( 0x2000, " | |
2759 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
3317 | 2760 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
3318 | 2761 | |
3319 | ROM_REGION( 0x20000, " | |
2762 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
3320 | 2763 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
3321 | 2764 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
3322 | 2765 | |
3323 | ROM_REGION16_BE( 0x60000, " | |
2766 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3324 | 2767 | ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) ) |
3325 | 2768 | ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) ) |
3326 | 2769 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
3327 | 2770 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
3328 | 2771 | |
3329 | ROM_REGION16_BE( 0x50000, " | |
2772 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
3330 | 2773 | ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) ) |
3331 | 2774 | ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) ) |
3332 | 2775 | |
3333 | ROM_REGION( 0x50000, " | |
2776 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
3334 | 2777 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
3335 | 2778 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
3336 | 2779 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
3337 | 2780 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
3338 | 2781 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
3339 | 2782 | |
3340 | ROM_REGION( 0x800, " | |
2783 | ROM_REGION( 0x800, "200e", 0 ) | |
3341 | 2784 | ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) ) |
3342 | 2785 | |
3343 | ROM_REGION( 0x800, " | |
2786 | ROM_REGION( 0x800, "210e", 0 ) | |
3344 | 2787 | ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) ) |
3345 | 2788 | ROM_END |
3346 | 2789 | |
3347 | 2790 | |
3348 | 2791 | ROM_START( racedrivg4 ) |
3349 | ROM_REGION( 0x100000, "main | |
2792 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3350 | 2793 | ROM_LOAD16_BYTE( "136077-4202.200r", 0x000000, 0x010000, CRC(a8c7e15e) SHA1(6aa4b819e5c8562c8eef92a411b2dc91ed35ae4c) ) |
3351 | 2794 | ROM_LOAD16_BYTE( "136077-4201.210r", 0x000001, 0x010000, CRC(1dfa4df2) SHA1(1db0676f0ff1e7996c9791b041d9cd4ca9c70261) ) |
3352 | 2795 | ROM_LOAD16_BYTE( "136077-4204.200s", 0x020000, 0x010000, CRC(29eea8c1) SHA1(1a8020efc0b963bbd05bd33dc3176db7c3234fcc) ) |
r241749 | r241750 | |
3364 | 2807 | ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) ) |
3365 | 2808 | ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) ) |
3366 | 2809 | |
3367 | ROM_REGION( 0x2000, " | |
2810 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
3368 | 2811 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
3369 | 2812 | |
3370 | ROM_REGION( 0x20000, " | |
2813 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
3371 | 2814 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
3372 | 2815 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
3373 | 2816 | |
3374 | ROM_REGION16_BE( 0x60000, " | |
2817 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3375 | 2818 | ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) ) |
3376 | 2819 | ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) ) |
3377 | 2820 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
3378 | 2821 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
3379 | 2822 | |
3380 | ROM_REGION16_BE( 0x50000, " | |
2823 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
3381 | 2824 | ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) ) |
3382 | 2825 | ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) ) |
3383 | 2826 | |
3384 | ROM_REGION( 0x50000, " | |
2827 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
3385 | 2828 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
3386 | 2829 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
3387 | 2830 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
3388 | 2831 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
3389 | 2832 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
3390 | 2833 | |
3391 | ROM_REGION( 0x800, " | |
2834 | ROM_REGION( 0x800, "200e", 0 ) | |
3392 | 2835 | ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) ) |
3393 | 2836 | |
3394 | ROM_REGION( 0x800, " | |
2837 | ROM_REGION( 0x800, "210e", 0 ) | |
3395 | 2838 | ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) ) |
3396 | 2839 | ROM_END |
3397 | 2840 | |
3398 | 2841 | |
3399 | 2842 | ROM_START( racedriv3 ) |
3400 | ROM_REGION( 0x100000, "main | |
2843 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3401 | 2844 | ROM_LOAD16_BYTE( "136077-3002.200r", 0x000000, 0x010000, CRC(78771253) SHA1(88fdae99eb4feb40db8ad171b3435315db3adedb) ) |
3402 | 2845 | ROM_LOAD16_BYTE( "136077-3001.210r", 0x000001, 0x010000, CRC(c75373a4) SHA1(d2f14190218cfedf4478806a26c77edd4d7c73eb) ) |
3403 | 2846 | ROM_LOAD16_BYTE( "136077-2004.200s", 0x020000, 0x010000, CRC(4eb19582) SHA1(52359d7839f3459aec4fdc16a659a29fa60feee4) ) |
r241749 | r241750 | |
3415 | 2858 | ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) ) |
3416 | 2859 | ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) ) |
3417 | 2860 | |
3418 | ROM_REGION( 0x2000, " | |
2861 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
3419 | 2862 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
3420 | 2863 | |
3421 | ROM_REGION( 0x20000, " | |
2864 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
3422 | 2865 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
3423 | 2866 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
3424 | 2867 | |
3425 | ROM_REGION16_BE( 0x60000, " | |
2868 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3426 | 2869 | ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) ) |
3427 | 2870 | ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) ) |
3428 | 2871 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
3429 | 2872 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
3430 | 2873 | |
3431 | ROM_REGION16_BE( 0x50000, " | |
2874 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
3432 | 2875 | ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) ) |
3433 | 2876 | ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) ) |
3434 | 2877 | |
3435 | ROM_REGION( 0x50000, " | |
2878 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
3436 | 2879 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
3437 | 2880 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
3438 | 2881 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
3439 | 2882 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
3440 | 2883 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
3441 | 2884 | |
3442 | ROM_REGION( 0x800, " | |
2885 | ROM_REGION( 0x800, "200e", 0 ) | |
3443 | 2886 | ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) ) |
3444 | 2887 | |
3445 | ROM_REGION( 0x800, " | |
2888 | ROM_REGION( 0x800, "210e", 0 ) | |
3446 | 2889 | ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) ) |
3447 | 2890 | ROM_END |
3448 | 2891 | |
3449 | 2892 | |
3450 | 2893 | ROM_START( racedriv2 ) |
3451 | ROM_REGION( 0x100000, "main | |
2894 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3452 | 2895 | ROM_LOAD16_BYTE( "136077-2002.200r", 0x000000, 0x010000, CRC(6b440e10) SHA1(8074a1de01e2cdc497a51339f9c05329d6f540b0) ) |
3453 | 2896 | ROM_LOAD16_BYTE( "136077-2001.210r", 0x000001, 0x010000, CRC(eee12973) SHA1(0cd2e88c431d08fba5a73c903327f39f8692f3aa) ) |
3454 | 2897 | ROM_LOAD16_BYTE( "136077-2004.200s", 0x020000, 0x010000, CRC(4eb19582) SHA1(52359d7839f3459aec4fdc16a659a29fa60feee4) ) |
r241749 | r241750 | |
3466 | 2909 | ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) ) |
3467 | 2910 | ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) ) |
3468 | 2911 | |
3469 | ROM_REGION( 0x2000, " | |
2912 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
3470 | 2913 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
3471 | 2914 | |
3472 | ROM_REGION( 0x20000, " | |
2915 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
3473 | 2916 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
3474 | 2917 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
3475 | 2918 | |
3476 | ROM_REGION16_BE( 0x60000, " | |
2919 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3477 | 2920 | ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) ) |
3478 | 2921 | ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) ) |
3479 | 2922 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
3480 | 2923 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
3481 | 2924 | |
3482 | ROM_REGION16_BE( 0x50000, " | |
2925 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
3483 | 2926 | ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) ) |
3484 | 2927 | ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) ) |
3485 | 2928 | |
3486 | ROM_REGION( 0x50000, " | |
2929 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
3487 | 2930 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
3488 | 2931 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
3489 | 2932 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
3490 | 2933 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
3491 | 2934 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
3492 | 2935 | |
3493 | ROM_REGION( 0x800, " | |
2936 | ROM_REGION( 0x800, "200e", 0 ) | |
3494 | 2937 | ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) ) |
3495 | 2938 | |
3496 | ROM_REGION( 0x800, " | |
2939 | ROM_REGION( 0x800, "210e", 0 ) | |
3497 | 2940 | ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) ) |
3498 | 2941 | ROM_END |
3499 | 2942 | |
3500 | 2943 | |
3501 | 2944 | ROM_START( racedriv1 ) |
3502 | ROM_REGION( 0x100000, "main | |
2945 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3503 | 2946 | ROM_LOAD16_BYTE( "136077-1002.200r", 0x000000, 0x010000, CRC(d39f6d53) SHA1(c278cd4109a65304a21dd1d8ba27375713a8b107) ) |
3504 | 2947 | ROM_LOAD16_BYTE( "136077-1001.210r", 0x000001, 0x010000, CRC(e29e011c) SHA1(7044e7f9c8551309b5867a06672796411007a427) ) |
3505 | 2948 | ROM_LOAD16_BYTE( "136077-1004.200s", 0x020000, 0x010000, CRC(809831e8) SHA1(681160deceff4df0f000c23f8514086dbbcc0c8d) ) |
r241749 | r241750 | |
3517 | 2960 | ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) ) |
3518 | 2961 | ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) ) |
3519 | 2962 | |
3520 | ROM_REGION( 0x2000, " | |
2963 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
3521 | 2964 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
3522 | 2965 | |
3523 | ROM_REGION( 0x20000, " | |
2966 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
3524 | 2967 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
3525 | 2968 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
3526 | 2969 | |
3527 | ROM_REGION16_BE( 0x60000, " | |
2970 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3528 | 2971 | ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) ) |
3529 | 2972 | ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) ) |
3530 | 2973 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
3531 | 2974 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
3532 | 2975 | |
3533 | ROM_REGION16_BE( 0x50000, " | |
2976 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
3534 | 2977 | ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) ) |
3535 | 2978 | ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) ) |
3536 | 2979 | |
3537 | ROM_REGION( 0x50000, " | |
2980 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
3538 | 2981 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
3539 | 2982 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
3540 | 2983 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
3541 | 2984 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
3542 | 2985 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
3543 | 2986 | |
3544 | ROM_REGION( 0x800, " | |
2987 | ROM_REGION( 0x800, "200e", 0 ) | |
3545 | 2988 | ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) ) |
3546 | 2989 | |
3547 | ROM_REGION( 0x800, " | |
2990 | ROM_REGION( 0x800, "210e", 0 ) | |
3548 | 2991 | ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) ) |
3549 | 2992 | ROM_END |
3550 | 2993 | |
3551 | 2994 | |
3552 | 2995 | ROM_START( racedrivg1 ) |
3553 | ROM_REGION( 0x100000, "main | |
2996 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3554 | 2997 | ROM_LOAD16_BYTE( "136077-1202.200r", 0x000000, 0x010000, CRC(bd363903) SHA1(8f0937725adabf5ee9e0ac015c83916e2575670a) ) |
3555 | 2998 | ROM_LOAD16_BYTE( "136077-1201.210r", 0x000001, 0x010000, CRC(748c3be4) SHA1(ddf149f333d23e9c782ae447f6fb3f780680b3f5) ) |
3556 | 2999 | ROM_LOAD16_BYTE( "136077-1204.200s", 0x020000, 0x010000, CRC(aef103bb) SHA1(52831858d3a45ad00e156c5b2a11e7fddf06bead) ) |
r241749 | r241750 | |
3568 | 3011 | ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) ) |
3569 | 3012 | ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) ) |
3570 | 3013 | |
3571 | ROM_REGION( 0x2000, " | |
3014 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
3572 | 3015 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
3573 | 3016 | |
3574 | ROM_REGION( 0x20000, " | |
3017 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
3575 | 3018 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
3576 | 3019 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
3577 | 3020 | |
3578 | ROM_REGION16_BE( 0x60000, " | |
3021 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3579 | 3022 | ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) ) |
3580 | 3023 | ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) ) |
3581 | 3024 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
3582 | 3025 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
3583 | 3026 | |
3584 | ROM_REGION16_BE( 0x50000, " | |
3027 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
3585 | 3028 | ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) ) |
3586 | 3029 | ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) ) |
3587 | 3030 | |
3588 | ROM_REGION( 0x50000, " | |
3031 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
3589 | 3032 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
3590 | 3033 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
3591 | 3034 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
3592 | 3035 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
3593 | 3036 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
3594 | 3037 | |
3595 | ROM_REGION( 0x800, " | |
3038 | ROM_REGION( 0x800, "200e", 0 ) | |
3596 | 3039 | ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) ) |
3597 | 3040 | |
3598 | ROM_REGION( 0x800, " | |
3041 | ROM_REGION( 0x800, "210e", 0 ) | |
3599 | 3042 | ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) ) |
3600 | 3043 | ROM_END |
3601 | 3044 | |
3602 | 3045 | |
3603 | 3046 | ROM_START( racedrivb1 ) |
3604 | ROM_REGION( 0x100000, "main | |
3047 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3605 | 3048 | ROM_LOAD16_BYTE( "136077-2002.200r", 0x000000, 0x010000, CRC(6b440e10) SHA1(8074a1de01e2cdc497a51339f9c05329d6f540b0) ) |
3606 | 3049 | ROM_LOAD16_BYTE( "136077-2001.210r", 0x000001, 0x010000, CRC(eee12973) SHA1(0cd2e88c431d08fba5a73c903327f39f8692f3aa) ) |
3607 | 3050 | ROM_LOAD16_BYTE( "136077-1104.200s", 0x020000, 0x010000, CRC(a9495f53) SHA1(68e7d983c0e1a84f5ad0743a230e6126169a6fd6) ) |
r241749 | r241750 | |
3619 | 3062 | ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) ) |
3620 | 3063 | ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) ) |
3621 | 3064 | |
3622 | ROM_REGION( 0x2000, " | |
3065 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
3623 | 3066 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
3624 | 3067 | |
3625 | ROM_REGION( 0x20000, " | |
3068 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
3626 | 3069 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
3627 | 3070 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
3628 | 3071 | |
3629 | ROM_REGION16_BE( 0x60000, " | |
3072 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3630 | 3073 | ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) ) |
3631 | 3074 | ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) ) |
3632 | 3075 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
3633 | 3076 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
3634 | 3077 | |
3635 | ROM_REGION16_BE( 0x50000, " | |
3078 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
3636 | 3079 | ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) ) |
3637 | 3080 | ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) ) |
3638 | 3081 | |
3639 | ROM_REGION( 0x50000, " | |
3082 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
3640 | 3083 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
3641 | 3084 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
3642 | 3085 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
3643 | 3086 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
3644 | 3087 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
3645 | 3088 | |
3646 | ROM_REGION( 0x800, " | |
3089 | ROM_REGION( 0x800, "200e", 0 ) | |
3647 | 3090 | ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) ) |
3648 | 3091 | |
3649 | ROM_REGION( 0x800, " | |
3092 | ROM_REGION( 0x800, "210e", 0 ) | |
3650 | 3093 | ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) ) |
3651 | 3094 | ROM_END |
3652 | 3095 | |
3653 | 3096 | |
3654 | 3097 | ROM_START( racedrivc ) |
3655 | ROM_REGION( 0x100000, "main | |
3098 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3656 | 3099 | ROM_LOAD16_BYTE( "136078-5002.200r", 0x000000, 0x010000, CRC(ae8f79bd) SHA1(054f2d1948d6d03832c4557c3dd7667c0784716d) ) |
3657 | 3100 | ROM_LOAD16_BYTE( "136078-5001.210r", 0x000001, 0x010000, CRC(ad896e7f) SHA1(7b047f0c972fac075db00faf19cdf9ccdcef5c63) ) |
3658 | 3101 | ROM_LOAD16_BYTE( "136078-5004.200s", 0x020000, 0x010000, CRC(b8650bee) SHA1(a9905081e622e4a4fcec9aa08b87566ecdb9198b) ) |
r241749 | r241750 | |
3670 | 3113 | ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) ) |
3671 | 3114 | ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) ) |
3672 | 3115 | |
3673 | ROM_REGION( 0x2000, " | |
3116 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
3674 | 3117 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
3675 | 3118 | |
3676 | ROM_REGION( 0x20000, " | |
3119 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
3677 | 3120 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
3678 | 3121 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
3679 | 3122 | |
3680 | ROM_REGION16_BE( 0x60000, " | |
3123 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3681 | 3124 | ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) ) |
3682 | 3125 | ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) ) |
3683 | 3126 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
3684 | 3127 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
3685 | 3128 | |
3686 | ROM_REGION16_BE( 0x50000, " | |
3129 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
3687 | 3130 | ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) ) |
3688 | 3131 | ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) ) |
3689 | 3132 | |
3690 | ROM_REGION( 0x50000, " | |
3133 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
3691 | 3134 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
3692 | 3135 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
3693 | 3136 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
3694 | 3137 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
3695 | 3138 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
3696 | 3139 | |
3697 | ROM_REGION( 0x800, " | |
3140 | ROM_REGION( 0x800, "200e", 0 ) | |
3698 | 3141 | ROM_LOAD( "racedrivc.200e", 0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) ) |
3699 | 3142 | |
3700 | ROM_REGION( 0x800, " | |
3143 | ROM_REGION( 0x800, "210e", 0 ) | |
3701 | 3144 | ROM_LOAD( "racedrivc.210e", 0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) ) |
3702 | 3145 | ROM_END |
3703 | 3146 | |
3704 | 3147 | |
3705 | 3148 | ROM_START( racedrivcb ) |
3706 | ROM_REGION( 0x100000, "main | |
3149 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3707 | 3150 | ROM_LOAD16_BYTE( "136078-5002.200r", 0x000000, 0x010000, CRC(ae8f79bd) SHA1(054f2d1948d6d03832c4557c3dd7667c0784716d) ) |
3708 | 3151 | ROM_LOAD16_BYTE( "136078-5001.210r", 0x000001, 0x010000, CRC(ad896e7f) SHA1(7b047f0c972fac075db00faf19cdf9ccdcef5c63) ) |
3709 | 3152 | ROM_LOAD16_BYTE( "136078-5004.200s", 0x020000, 0x010000, CRC(b8650bee) SHA1(a9905081e622e4a4fcec9aa08b87566ecdb9198b) ) |
r241749 | r241750 | |
3721 | 3164 | ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) ) |
3722 | 3165 | ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) ) |
3723 | 3166 | |
3724 | ROM_REGION( 0x2000, " | |
3167 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
3725 | 3168 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
3726 | 3169 | |
3727 | ROM_REGION( 0x20000, " | |
3170 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
3728 | 3171 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
3729 | 3172 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
3730 | 3173 | |
3731 | ROM_REGION16_BE( 0x60000, " | |
3174 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3732 | 3175 | ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) ) |
3733 | 3176 | ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) ) |
3734 | 3177 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
3735 | 3178 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
3736 | 3179 | |
3737 | ROM_REGION16_BE( 0x50000, " | |
3180 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
3738 | 3181 | ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) ) |
3739 | 3182 | ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) ) |
3740 | 3183 | |
3741 | ROM_REGION( 0x50000, " | |
3184 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
3742 | 3185 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
3743 | 3186 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
3744 | 3187 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
3745 | 3188 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
3746 | 3189 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
3747 | 3190 | |
3748 | ROM_REGION( 0x800, " | |
3191 | ROM_REGION( 0x800, "200e", 0 ) | |
3749 | 3192 | ROM_LOAD( "racedrivc.200e", 0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) ) |
3750 | 3193 | |
3751 | ROM_REGION( 0x800, " | |
3194 | ROM_REGION( 0x800, "210e", 0 ) | |
3752 | 3195 | ROM_LOAD( "racedrivc.210e", 0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) ) |
3753 | 3196 | ROM_END |
3754 | 3197 | |
3755 | 3198 | |
3756 | 3199 | ROM_START( racedrivcg ) |
3757 | ROM_REGION( 0x100000, "main | |
3200 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3758 | 3201 | ROM_LOAD16_BYTE( "136078-5202.200r", 0x000000, 0x010000, CRC(c37b5281) SHA1(1ff7a879853dd1e10881fd56e8ae0962676ef319) ) |
3759 | 3202 | ROM_LOAD16_BYTE( "136078-5201.210r", 0x000001, 0x010000, CRC(80072dad) SHA1(ba33465f639431cf6e9ce377ed31e538a0304dc5) ) |
3760 | 3203 | ROM_LOAD16_BYTE( "136078-5204.200s", 0x020000, 0x010000, CRC(5d45fbd2) SHA1(5279c814c2876c642630fed5c114eccea6d703b0) ) |
r241749 | r241750 | |
3772 | 3215 | ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) ) |
3773 | 3216 | ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) ) |
3774 | 3217 | |
3775 | ROM_REGION( 0x2000, " | |
3218 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
3776 | 3219 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
3777 | 3220 | |
3778 | ROM_REGION( 0x20000, " | |
3221 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
3779 | 3222 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
3780 | 3223 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
3781 | 3224 | |
3782 | ROM_REGION16_BE( 0x60000, " | |
3225 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3783 | 3226 | ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) ) |
3784 | 3227 | ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) ) |
3785 | 3228 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
3786 | 3229 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
3787 | 3230 | |
3788 | ROM_REGION16_BE( 0x50000, " | |
3231 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
3789 | 3232 | ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) ) |
3790 | 3233 | ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) ) |
3791 | 3234 | |
3792 | ROM_REGION( 0x50000, " | |
3235 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
3793 | 3236 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
3794 | 3237 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
3795 | 3238 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
3796 | 3239 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
3797 | 3240 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
3798 | 3241 | |
3799 | ROM_REGION( 0x800, " | |
3242 | ROM_REGION( 0x800, "200e", 0 ) | |
3800 | 3243 | ROM_LOAD( "racedrivc.200e", 0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) ) |
3801 | 3244 | |
3802 | ROM_REGION( 0x800, " | |
3245 | ROM_REGION( 0x800, "210e", 0 ) | |
3803 | 3246 | ROM_LOAD( "racedrivc.210e", 0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) ) |
3804 | 3247 | ROM_END |
3805 | 3248 | |
3806 | 3249 | |
3807 | 3250 | ROM_START( racedrivc4 ) |
3808 | ROM_REGION( 0x100000, "main | |
3251 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3809 | 3252 | ROM_LOAD16_BYTE( "136078-4002.200r", 0x000000, 0x010000, CRC(d6522b97) SHA1(0e4c4ce9f6147cc3878a3f1e60cf58f00bfe9e4c) ) |
3810 | 3253 | ROM_LOAD16_BYTE( "136078-4001.210r", 0x000001, 0x010000, CRC(d658a8ed) SHA1(59d823d8150de62ba5c4fddf87584bd2044e87f7) ) |
3811 | 3254 | ROM_LOAD16_BYTE( "136078-4004.200s", 0x020000, 0x010000, CRC(c8520b01) SHA1(f0bd0505cbf24f7e43dc2e775ecbbf0db5419b6e) ) |
r241749 | r241750 | |
3823 | 3266 | ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) ) |
3824 | 3267 | ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) ) |
3825 | 3268 | |
3826 | ROM_REGION( 0x2000, " | |
3269 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
3827 | 3270 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
3828 | 3271 | |
3829 | ROM_REGION( 0x20000, " | |
3272 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
3830 | 3273 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
3831 | 3274 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
3832 | 3275 | |
3833 | ROM_REGION16_BE( 0x60000, " | |
3276 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3834 | 3277 | ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) ) |
3835 | 3278 | ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) ) |
3836 | 3279 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
3837 | 3280 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
3838 | 3281 | |
3839 | ROM_REGION16_BE( 0x50000, " | |
3282 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
3840 | 3283 | ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) ) |
3841 | 3284 | ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) ) |
3842 | 3285 | |
3843 | ROM_REGION( 0x50000, " | |
3286 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
3844 | 3287 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
3845 | 3288 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
3846 | 3289 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
3847 | 3290 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
3848 | 3291 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
3849 | 3292 | |
3850 | ROM_REGION( 0x800, " | |
3293 | ROM_REGION( 0x800, "200e", 0 ) | |
3851 | 3294 | ROM_LOAD( "racedrivc.200e", 0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) ) |
3852 | 3295 | |
3853 | ROM_REGION( 0x800, " | |
3296 | ROM_REGION( 0x800, "210e", 0 ) | |
3854 | 3297 | ROM_LOAD( "racedrivc.210e", 0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) ) |
3855 | 3298 | ROM_END |
3856 | 3299 | |
3857 | 3300 | |
3858 | 3301 | ROM_START( racedrivcb4 ) |
3859 | ROM_REGION( 0x100000, "main | |
3302 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3860 | 3303 | ROM_LOAD16_BYTE( "136078-4002.200r", 0x000000, 0x010000, CRC(d6522b97) SHA1(0e4c4ce9f6147cc3878a3f1e60cf58f00bfe9e4c) ) |
3861 | 3304 | ROM_LOAD16_BYTE( "136078-4001.210r", 0x000001, 0x010000, CRC(d658a8ed) SHA1(59d823d8150de62ba5c4fddf87584bd2044e87f7) ) |
3862 | 3305 | ROM_LOAD16_BYTE( "136078-4004.200s", 0x020000, 0x010000, CRC(c8520b01) SHA1(f0bd0505cbf24f7e43dc2e775ecbbf0db5419b6e) ) |
r241749 | r241750 | |
3874 | 3317 | ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) ) |
3875 | 3318 | ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) ) |
3876 | 3319 | |
3877 | ROM_REGION( 0x2000, " | |
3320 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
3878 | 3321 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
3879 | 3322 | |
3880 | ROM_REGION( 0x20000, " | |
3323 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
3881 | 3324 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
3882 | 3325 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
3883 | 3326 | |
3884 | ROM_REGION16_BE( 0x60000, " | |
3327 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3885 | 3328 | ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) ) |
3886 | 3329 | ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) ) |
3887 | 3330 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
3888 | 3331 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
3889 | 3332 | |
3890 | ROM_REGION16_BE( 0x50000, " | |
3333 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
3891 | 3334 | ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) ) |
3892 | 3335 | ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) ) |
3893 | 3336 | |
3894 | ROM_REGION( 0x50000, " | |
3337 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
3895 | 3338 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
3896 | 3339 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
3897 | 3340 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
3898 | 3341 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
3899 | 3342 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
3900 | 3343 | |
3901 | ROM_REGION( 0x800, " | |
3344 | ROM_REGION( 0x800, "200e", 0 ) | |
3902 | 3345 | ROM_LOAD( "racedrivc.200e", 0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) ) |
3903 | 3346 | |
3904 | ROM_REGION( 0x800, " | |
3347 | ROM_REGION( 0x800, "210e", 0 ) | |
3905 | 3348 | ROM_LOAD( "racedrivc.210e", 0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) ) |
3906 | 3349 | ROM_END |
3907 | 3350 | |
3908 | 3351 | |
3909 | 3352 | ROM_START( racedrivcg4 ) |
3910 | ROM_REGION( 0x100000, "main | |
3353 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3911 | 3354 | ROM_LOAD16_BYTE( "136078-4202.200r", 0x000000, 0x010000, CRC(be58215d) SHA1(0497efbd696e8d2db4e42678dd6cfe6cd3f78688) ) |
3912 | 3355 | ROM_LOAD16_BYTE( "136078-4201.210r", 0x000001, 0x010000, CRC(609c5f23) SHA1(a66e1f10f8ad9d25fca5b681ad543967287f2036) ) |
3913 | 3356 | ROM_LOAD16_BYTE( "136078-4204.200s", 0x020000, 0x010000, CRC(2e590c4f) SHA1(dcb56bacdde17eade5b347d5549cec1de89774e6) ) |
r241749 | r241750 | |
3925 | 3368 | ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) ) |
3926 | 3369 | ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) ) |
3927 | 3370 | |
3928 | ROM_REGION( 0x2000, " | |
3371 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
3929 | 3372 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
3930 | 3373 | |
3931 | ROM_REGION( 0x20000, " | |
3374 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
3932 | 3375 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
3933 | 3376 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
3934 | 3377 | |
3935 | ROM_REGION16_BE( 0x60000, " | |
3378 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3936 | 3379 | ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) ) |
3937 | 3380 | ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) ) |
3938 | 3381 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
3939 | 3382 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
3940 | 3383 | |
3941 | ROM_REGION16_BE( 0x50000, " | |
3384 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
3942 | 3385 | ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) ) |
3943 | 3386 | ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) ) |
3944 | 3387 | |
3945 | ROM_REGION( 0x50000, " | |
3388 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
3946 | 3389 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
3947 | 3390 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
3948 | 3391 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
3949 | 3392 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
3950 | 3393 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
3951 | 3394 | |
3952 | ROM_REGION( 0x800, " | |
3395 | ROM_REGION( 0x800, "200e", 0 ) | |
3953 | 3396 | ROM_LOAD( "racedrivc.200e", 0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) ) |
3954 | 3397 | |
3955 | ROM_REGION( 0x800, " | |
3398 | ROM_REGION( 0x800, "210e", 0 ) | |
3956 | 3399 | ROM_LOAD( "racedrivc.210e", 0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) ) |
3957 | 3400 | ROM_END |
3958 | 3401 | |
3959 | 3402 | |
3960 | 3403 | ROM_START( racedrivc2 ) |
3961 | ROM_REGION( 0x100000, "main | |
3404 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
3962 | 3405 | ROM_LOAD16_BYTE( "136078-2002.200r", 0x000000, 0x010000, CRC(669fe6fe) SHA1(1775ee3ef4817f553113772cf0fb35cbbe2e73a5) ) |
3963 | 3406 | ROM_LOAD16_BYTE( "136078-2001.210r", 0x000001, 0x010000, CRC(9312fd5f) SHA1(9dd1b30ebceedf50fb18d744540e2003a8110d09) ) |
3964 | 3407 | ROM_LOAD16_BYTE( "136078-1004.200s", 0x020000, 0x010000, CRC(4a1beb65) SHA1(3a4e3dd07a1415aef27e8bbebe0503296dfc7586) ) |
r241749 | r241750 | |
3976 | 3419 | ROM_LOAD16_BYTE( "136078-1015.210y", 0x0e0001, 0x010000, CRC(64dd6040) SHA1(bcadf4f1d9a0685ca39af903d3342d590850513c) ) |
3977 | 3420 | ROM_LOAD16_BYTE( "136078-1016.200y", 0x0e0000, 0x010000, CRC(a2a0ed28) SHA1(6f308a38594f7e54ebdd6983d28664ba595bc525) ) |
3978 | 3421 | |
3979 | ROM_REGION( 0x2000, " | |
3422 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
3980 | 3423 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
3981 | 3424 | |
3982 | ROM_REGION( 0x20000, " | |
3425 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
3983 | 3426 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
3984 | 3427 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
3985 | 3428 | |
3986 | ROM_REGION16_BE( 0x60000, " | |
3429 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
3987 | 3430 | ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) ) |
3988 | 3431 | ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) ) |
3989 | 3432 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
3990 | 3433 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
3991 | 3434 | |
3992 | ROM_REGION16_BE( 0x50000, " | |
3435 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
3993 | 3436 | ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) ) |
3994 | 3437 | ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) ) |
3995 | 3438 | |
3996 | ROM_REGION( 0x50000, " | |
3439 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
3997 | 3440 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
3998 | 3441 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
3999 | 3442 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
4000 | 3443 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
4001 | 3444 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
4002 | 3445 | |
4003 | ROM_REGION( 0x800, " | |
3446 | ROM_REGION( 0x800, "200e", 0 ) | |
4004 | 3447 | ROM_LOAD( "racedrivc.200e", 0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) ) |
4005 | 3448 | |
4006 | ROM_REGION( 0x800, " | |
3449 | ROM_REGION( 0x800, "210e", 0 ) | |
4007 | 3450 | ROM_LOAD( "racedrivc.210e", 0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) ) |
4008 | 3451 | ROM_END |
4009 | 3452 | |
4010 | 3453 | |
4011 | 3454 | ROM_START( racedrivc1 ) |
4012 | ROM_REGION( 0x100000, "main | |
3455 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
4013 | 3456 | ROM_LOAD16_BYTE( "136078-1002.200r", 0x000000, 0x010000, CRC(ed997f08) SHA1(9512f347120174345dbe8c756e5c239fdce438a5) ) |
4014 | 3457 | ROM_LOAD16_BYTE( "136078-1001.210r", 0x000001, 0x010000, CRC(5540ee7d) SHA1(f1d16cfa20b61f1cf075e3275ea4af0b46aa5470) ) |
4015 | 3458 | ROM_LOAD16_BYTE( "136078-1004.200s", 0x020000, 0x010000, CRC(4a1beb65) SHA1(3a4e3dd07a1415aef27e8bbebe0503296dfc7586) ) |
r241749 | r241750 | |
4027 | 3470 | ROM_LOAD16_BYTE( "136078-1015.210y", 0x0e0001, 0x010000, CRC(64dd6040) SHA1(bcadf4f1d9a0685ca39af903d3342d590850513c) ) |
4028 | 3471 | ROM_LOAD16_BYTE( "136078-1016.200y", 0x0e0000, 0x010000, CRC(a2a0ed28) SHA1(6f308a38594f7e54ebdd6983d28664ba595bc525) ) |
4029 | 3472 | |
4030 | ROM_REGION( 0x2000, " | |
3473 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
4031 | 3474 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
4032 | 3475 | |
4033 | ROM_REGION( 0x20000, " | |
3476 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
4034 | 3477 | ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) |
4035 | 3478 | ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) |
4036 | 3479 | |
4037 | ROM_REGION16_BE( 0x60000, " | |
3480 | ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */ | |
4038 | 3481 | ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) ) |
4039 | 3482 | ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) ) |
4040 | 3483 | ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) ) |
4041 | 3484 | ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) ) |
4042 | 3485 | |
4043 | ROM_REGION16_BE( 0x50000, " | |
3486 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
4044 | 3487 | ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) ) |
4045 | 3488 | ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) ) |
4046 | 3489 | |
4047 | ROM_REGION( 0x50000, " | |
3490 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */ | |
4048 | 3491 | ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
4049 | 3492 | ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
4050 | 3493 | ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
4051 | 3494 | ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
4052 | 3495 | ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
4053 | 3496 | |
4054 | ROM_REGION( 0x800, " | |
3497 | ROM_REGION( 0x800, "200e", 0 ) | |
4055 | 3498 | ROM_LOAD( "racedrivc.200e", 0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) ) |
4056 | 3499 | |
4057 | ROM_REGION( 0x800, " | |
3500 | ROM_REGION( 0x800, "210e", 0 ) | |
4058 | 3501 | ROM_LOAD( "racedrivc.210e", 0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) ) |
4059 | 3502 | ROM_END |
4060 | 3503 | |
r241749 | r241750 | |
4130 | 3573 | |
4131 | 3574 | */ |
4132 | 3575 | |
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 | ||
4135 | 3576 | ROM_START( racedrivpan ) |
4136 | ROM_REGION( 0x200000, "main | |
3577 | ROM_REGION( 0x200000, "maincpu", 0 ) /* 2MB for 68000 code */ | |
4137 | 3578 | // Multisync PBB A045988 - Central Monitor |
4138 | 3579 | // boots with 'PROGRAM OK' when using standard Hard Drivin' board type (needs 137412-115 slapstic) |
4139 | 3580 | ROM_LOAD16_BYTE( "088-1002.bin", 0x000000, 0x010000, CRC(49a97391) SHA1(dbe4086cd87669a02d2a2133d0d9e2895946b383) ) |
r241749 | r241750 | |
4156 | 3597 | // Multisync PCB (A046901) - Side Monitor |
4157 | 3598 | // these will boot with 'PROGRAM OK' and display an empty side view, if you use the 'compact' type board driver |
4158 | 3599 | // there should be one board for each side. (needs 137412-117 slapstic) |
4159 | ROM_REGION( 0x200000, " | |
3600 | ROM_REGION( 0x200000, "sidecpu", 0 ) /* 2MB for 68000 code */ | |
4160 | 3601 | ROM_LOAD16_BYTE( "088-2002.bin", 0x000000, 0x010000, CRC(77724070) SHA1(5862f30f7e2ab9c0beb06cf5599bcb1ff97f3a47) ) |
4161 | 3602 | ROM_LOAD16_BYTE( "088-2001.bin", 0x000001, 0x010000, CRC(16ab2fff) SHA1(bf6dcefc98e1fe27bef0ddacc265d8782c486c83) ) |
4162 | 3603 | ROM_LOAD16_BYTE( "088-2004.bin", 0x020000, 0x010000, CRC(dccdb16b) SHA1(330cf39bcbdb9c73da48b4e947086a7988e37496) ) |
r241749 | r241750 | |
4174 | 3615 | ROM_LOAD16_BYTE( "088-2016.bin", 0x0e0000, 0x010000, CRC(6a42b7e2) SHA1(2e0ff4b7e391106a976cb872f6311f6d35dca5b0) ) |
4175 | 3616 | ROM_LOAD16_BYTE( "088-2015.bin", 0x0e0001, 0x010000, CRC(334e2a3b) SHA1(a19bfa7652845b9453c722091c773819ba248569) ) |
4176 | 3617 | |
4177 | ROM_REGION( 0x60000, " | |
3618 | ROM_REGION( 0x60000, "user1", 0 ) /* 384k for object ROM */ | |
4178 | 3619 | ROM_LOAD16_BYTE( "088-1017.bin", 0x00000, 0x10000, CRC(d92251e8) SHA1(deeeec54c4a61c3adf62f6b1b910135559090ee5) ) |
4179 | 3620 | ROM_LOAD16_BYTE( "088-1018.bin", 0x00001, 0x10000, CRC(11a0a8f5) SHA1(d4ccc83fc99331d741bc9b8027ef20d72e3ad71a) ) |
4180 | 3621 | ROM_LOAD16_BYTE( "088-1019.bin", 0x20000, 0x10000, CRC(5bb00676) SHA1(cad1cea8e43f9590fc71c00fab4eff0d447f9296) ) // == 136091-0019.2k (strtdriv) |
r241749 | r241750 | |
4184 | 3625 | |
4185 | 3626 | /* ----------------------- */ |
4186 | 3627 | |
4187 | ROM_REGION( 0x2000, " | |
3628 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ | |
4188 | 3629 | ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) |
4189 | 3630 | |
4190 | 3631 | /* ADSP board */ |
4191 | ROM_REGION( 0x20000, " | |
3632 | ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */ | |
4192 | 3633 | ROM_LOAD16_BYTE( "rdps1032.bin", 0x000000, 0x010000, CRC(33005f2a) SHA1(e4037a76f122b271a9675d9187ab847a11738640) ) |
4193 | 3634 | ROM_LOAD16_BYTE( "rdps1033.bin", 0x000001, 0x010000, CRC(4fc800ac) SHA1(dd8cfdb727d6a65274f4f871a589a36796ae1e57) ) |
4194 | 3635 | |
4195 | 3636 | /* DSK board */ |
4196 | ROM_REGION16_BE( 0x50000, " | |
3637 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
4197 | 3638 | ROM_LOAD16_BYTE( "rdpd1026.bin", 0x000000, 0x020000, CRC(16572618) SHA1(08d9f7f76e6e75d5233240d4deab96808825994b) ) |
4198 | 3639 | ROM_LOAD16_BYTE( "rdpd1025.bin", 0x000001, 0x020000, CRC(57b8a266) SHA1(257246d42841aa30220caeb91945e29978ee8fc0) ) |
4199 | 3640 | |
4200 | 3641 | /* Audio ROMs - show up as bad in self-test but so do racedriv's */ |
4201 | ROM_REGION( 0x50000, " | |
3642 | ROM_REGION( 0x50000, "serialroms", 0 ) /* 5*64k for audio serial ROMs */ | |
4202 | 3643 | ROM_LOAD( "rdps1123.bin", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
4203 | 3644 | ROM_LOAD( "rdps1124.bin", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) ) |
4204 | 3645 | ROM_LOAD( "rdps3125.bin", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) ) |
4205 | 3646 | ROM_LOAD( "rdps1126.bin", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
4206 | 3647 | ROM_LOAD( "rdps1017.bin", 0x040000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
4207 | 3648 | |
4208 | ROM_REGION( 0x800, " | |
3649 | ROM_REGION( 0x800, "200e", 0 ) | |
4209 | 3650 | ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) ) |
4210 | 3651 | |
4211 | ROM_REGION( 0x800, " | |
3652 | ROM_REGION( 0x800, "210e", 0 ) | |
4212 | 3653 | 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) ) | |
4278 | 3654 | ROM_END |
4279 | 3655 | |
4280 | 3656 | |
4281 | 3657 | ROM_START( steeltal ) |
4282 | ROM_REGION( 0x100000, "main | |
3658 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
4283 | 3659 | ROM_LOAD16_BYTE( "136087-1002.200r", 0x000000, 0x010000, CRC(31bf01a9) SHA1(cd08a839dbb5283a6e2bb35bc9e1578a14e3c2e6) ) |
4284 | 3660 | ROM_LOAD16_BYTE( "136087-1001.210r", 0x000001, 0x010000, CRC(b4fa2900) SHA1(5e92ab4af31321b891c072305f8b8ef30a3e1fb0) ) |
4285 | 3661 | ROM_LOAD16_BYTE( "136087-1004.200s", 0x020000, 0x010000, CRC(c31ca924) SHA1(8d7d2a3d204e69d759cf767b57570c18db5a3fd8) ) |
r241749 | r241750 | |
4297 | 3673 | ROM_LOAD16_BYTE( "136087-1016.200y", 0x0e0000, 0x010000, CRC(db62362e) SHA1(e1d392aa00ac36296728257fa26c6aa68a4ebe5f) ) |
4298 | 3674 | ROM_LOAD16_BYTE( "136087-1015.210y", 0x0e0001, 0x010000, CRC(ef517db7) SHA1(16e7e351326391480bf36c58d6b34ef4128b6627) ) |
4299 | 3675 | |
4300 | ROM_REGION( 0x14000, " | |
3676 | ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */ | |
4301 | 3677 | ROM_LOAD( "136087-5001.1f", 0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) ) |
4302 | 3678 | ROM_CONTINUE( 0x004000, 0x00c000 ) |
4303 | 3679 | |
4304 | ROM_REGION( 0x2000, " | |
3680 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* 64k for ASIC65 */ | |
4305 | 3681 | ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) ) |
4306 | 3682 | |
4307 | ROM_REGION( 0x10000, " | |
3683 | ROM_REGION( 0x10000, "cpu6", 0 ) /* 64k for DSP communications */ | |
4308 | 3684 | ROM_LOAD( "136087-1025.5f", 0x000000, 0x010000, CRC(4c645933) SHA1(7a1cf049e368059a79b03598de73c30d8dae5e90) ) |
4309 | 3685 | |
4310 | ROM_REGION16_BE( 0xc0000, " | |
3686 | ROM_REGION16_BE( 0xc0000, "user1", 0 ) /* 768k for object ROM */ | |
4311 | 3687 | ROM_LOAD16_BYTE( "136087-1018.2t", 0x000000, 0x020000, CRC(a5882384) SHA1(157707b5b114fa584893dec07dc456d4a5520f44) ) |
4312 | 3688 | ROM_LOAD16_BYTE( "136087-1017.2lm", 0x000001, 0x020000, CRC(0a29db30) SHA1(f11ad7fe27989ffd66e9bef2c14ec040a4125d8a) ) |
4313 | 3689 | |
4314 | ROM_REGION( 0x80000, " | |
3690 | ROM_REGION( 0x80000, "jsa:oki1", 0 ) | |
4315 | 3691 | ROM_LOAD( "136087-5002.1m", 0x000000, 0x020000, CRC(c904db9c) SHA1(d25fff3da87d2b716cd65fb7dd157c3f1f5e5909) ) |
4316 | 3692 | ROM_LOAD( "136087-5003.1n", 0x020000, 0x020000, CRC(164580b3) SHA1(03118c8323d8a49a65addc61c1402d152d42d7f9) ) |
4317 | 3693 | ROM_LOAD( "136087-5004.1p", 0x040000, 0x020000, CRC(296290a0) SHA1(8a3441a5618233f561531fe456e1f5ed22183421) ) |
4318 | 3694 | ROM_LOAD( "136087-5005.1r", 0x060000, 0x020000, CRC(c029d037) SHA1(0ae736c0ca3a1974911464328dd5a6b41a939130) ) |
4319 | 3695 | |
4320 | ROM_REGION( 0x015D, " | |
3696 | ROM_REGION( 0x015D, "plds", 0 ) | |
4321 | 3697 | /* GAL's located on Sound board */ |
4322 | 3698 | ROM_LOAD( "136085-1038.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2F */ |
4323 | 3699 | ROM_LOAD( "136085-1039.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2L */ |
r241749 | r241750 | |
4334 | 3710 | /* GAL's located on "Multisync" board */ |
4335 | 3711 | ROM_LOAD( "136087-9001.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL6001 at location 200K (SLOOP) */ |
4336 | 3712 | |
4337 | ROM_REGION( 0x800, " | |
3713 | ROM_REGION( 0x800, "200e", 0 ) | |
4338 | 3714 | ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
4339 | 3715 | |
4340 | ROM_REGION( 0x800, " | |
3716 | ROM_REGION( 0x800, "210e", 0 ) | |
4341 | 3717 | ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
4342 | 3718 | ROM_END |
4343 | 3719 | |
4344 | 3720 | |
4345 | 3721 | ROM_START( steeltalg ) |
4346 | ROM_REGION( 0x100000, "main | |
3722 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
4347 | 3723 | ROM_LOAD16_BYTE( "136087-1002.200r", 0x000000, 0x010000, CRC(31bf01a9) SHA1(cd08a839dbb5283a6e2bb35bc9e1578a14e3c2e6) ) |
4348 | 3724 | ROM_LOAD16_BYTE( "136087-1001.210r", 0x000001, 0x010000, CRC(b4fa2900) SHA1(5e92ab4af31321b891c072305f8b8ef30a3e1fb0) ) |
4349 | 3725 | ROM_LOAD16_BYTE( "136087-2004.200s", 0x020000, 0x010000, CRC(11fcba15) SHA1(031fc4c46a25ba8b5e15257f7443899bb484c09e) ) |
r241749 | r241750 | |
4361 | 3737 | ROM_LOAD16_BYTE( "136087-1016.200y", 0x0e0000, 0x010000, CRC(db62362e) SHA1(e1d392aa00ac36296728257fa26c6aa68a4ebe5f) ) |
4362 | 3738 | ROM_LOAD16_BYTE( "136087-1015.210y", 0x0e0001, 0x010000, CRC(ef517db7) SHA1(16e7e351326391480bf36c58d6b34ef4128b6627) ) |
4363 | 3739 | |
4364 | ROM_REGION( 0x14000, " | |
3740 | ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */ | |
4365 | 3741 | ROM_LOAD( "136087-5001.1f", 0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) ) |
4366 | 3742 | ROM_CONTINUE( 0x004000, 0x00c000 ) |
4367 | 3743 | |
4368 | ROM_REGION( 0x2000, " | |
3744 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* 64k for ASIC65 */ | |
4369 | 3745 | ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) ) |
4370 | 3746 | |
4371 | ROM_REGION( 0x10000, " | |
3747 | ROM_REGION( 0x10000, "cpu6", 0 ) /* 64k for DSP communications */ | |
4372 | 3748 | ROM_LOAD( "136087-1025.5f", 0x000000, 0x010000, CRC(4c645933) SHA1(7a1cf049e368059a79b03598de73c30d8dae5e90) ) |
4373 | 3749 | |
4374 | ROM_REGION16_BE( 0xc0000, " | |
3750 | ROM_REGION16_BE( 0xc0000, "user1", 0 ) /* 768k for object ROM */ | |
4375 | 3751 | ROM_LOAD16_BYTE( "136087-1018.2t", 0x000000, 0x020000, CRC(a5882384) SHA1(157707b5b114fa584893dec07dc456d4a5520f44) ) |
4376 | 3752 | ROM_LOAD16_BYTE( "136087-1017.2lm", 0x000001, 0x020000, CRC(0a29db30) SHA1(f11ad7fe27989ffd66e9bef2c14ec040a4125d8a) ) |
4377 | 3753 | |
4378 | ROM_REGION( 0x80000, " | |
3754 | ROM_REGION( 0x80000, "jsa:oki1", 0 ) | |
4379 | 3755 | ROM_LOAD( "136087-5002.1m", 0x000000, 0x020000, CRC(c904db9c) SHA1(d25fff3da87d2b716cd65fb7dd157c3f1f5e5909) ) |
4380 | 3756 | ROM_LOAD( "136087-5003.1n", 0x020000, 0x020000, CRC(164580b3) SHA1(03118c8323d8a49a65addc61c1402d152d42d7f9) ) |
4381 | 3757 | ROM_LOAD( "136087-5004.1p", 0x040000, 0x020000, CRC(296290a0) SHA1(8a3441a5618233f561531fe456e1f5ed22183421) ) |
4382 | 3758 | ROM_LOAD( "136087-5005.1r", 0x060000, 0x020000, CRC(c029d037) SHA1(0ae736c0ca3a1974911464328dd5a6b41a939130) ) |
4383 | 3759 | |
4384 | ROM_REGION( 0x015D, " | |
3760 | ROM_REGION( 0x015D, "plds", 0 ) | |
4385 | 3761 | /* GAL's located on Sound board */ |
4386 | 3762 | ROM_LOAD( "136085-1038.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2F */ |
4387 | 3763 | ROM_LOAD( "136085-1039.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2L */ |
r241749 | r241750 | |
4398 | 3774 | /* GAL's located on "Multisync" board */ |
4399 | 3775 | ROM_LOAD( "136087-9001.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL6001 at location 200K (SLOOP) */ |
4400 | 3776 | |
4401 | ROM_REGION( 0x800, " | |
3777 | ROM_REGION( 0x800, "200e", 0 ) | |
4402 | 3778 | ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
4403 | 3779 | |
4404 | ROM_REGION( 0x800, " | |
3780 | ROM_REGION( 0x800, "210e", 0 ) | |
4405 | 3781 | ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
4406 | 3782 | ROM_END |
4407 | 3783 | |
4408 | 3784 | |
4409 | 3785 | ROM_START( steeltal1 ) |
4410 | ROM_REGION( 0x100000, "main | |
3786 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
4411 | 3787 | ROM_LOAD16_BYTE( "136087-1002.200r", 0x000000, 0x010000, CRC(31bf01a9) SHA1(cd08a839dbb5283a6e2bb35bc9e1578a14e3c2e6) ) |
4412 | 3788 | ROM_LOAD16_BYTE( "136087-1001.210r", 0x000001, 0x010000, CRC(b4fa2900) SHA1(5e92ab4af31321b891c072305f8b8ef30a3e1fb0) ) |
4413 | 3789 | ROM_LOAD16_BYTE( "136087-a004.200s", 0x020000, 0x010000, CRC(392c992d) SHA1(10d1606214df675e6e59185e6b97034c4a47055a) ) |
r241749 | r241750 | |
4425 | 3801 | ROM_LOAD16_BYTE( "136087-1016.200y", 0x0e0000, 0x010000, CRC(db62362e) SHA1(e1d392aa00ac36296728257fa26c6aa68a4ebe5f) ) |
4426 | 3802 | ROM_LOAD16_BYTE( "136087-1015.210y", 0x0e0001, 0x010000, CRC(ef517db7) SHA1(16e7e351326391480bf36c58d6b34ef4128b6627) ) |
4427 | 3803 | |
4428 | ROM_REGION( 0x14000, " | |
3804 | ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */ | |
4429 | 3805 | ROM_LOAD( "136087-5001.1f", 0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) ) |
4430 | 3806 | ROM_CONTINUE( 0x004000, 0x00c000 ) |
4431 | 3807 | |
4432 | ROM_REGION( 0x2000, " | |
3808 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* 64k for ASIC65 */ | |
4433 | 3809 | ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) ) |
4434 | 3810 | |
4435 | ROM_REGION( 0x10000, " | |
3811 | ROM_REGION( 0x10000, "cpu6", 0 ) /* 64k for DSP communications */ | |
4436 | 3812 | ROM_LOAD( "136087-1025.5f", 0x000000, 0x010000, CRC(4c645933) SHA1(7a1cf049e368059a79b03598de73c30d8dae5e90) ) |
4437 | 3813 | |
4438 | ROM_REGION16_BE( 0xc0000, " | |
3814 | ROM_REGION16_BE( 0xc0000, "user1", 0 ) /* 768k for object ROM */ | |
4439 | 3815 | ROM_LOAD16_BYTE( "136087-1018.2t", 0x000000, 0x020000, CRC(a5882384) SHA1(157707b5b114fa584893dec07dc456d4a5520f44) ) |
4440 | 3816 | ROM_LOAD16_BYTE( "136087-1017.2lm", 0x000001, 0x020000, CRC(0a29db30) SHA1(f11ad7fe27989ffd66e9bef2c14ec040a4125d8a) ) |
4441 | 3817 | |
4442 | ROM_REGION( 0x80000, " | |
3818 | ROM_REGION( 0x80000, "jsa:oki1", 0 ) | |
4443 | 3819 | ROM_LOAD( "136087-5002.1m", 0x000000, 0x020000, CRC(c904db9c) SHA1(d25fff3da87d2b716cd65fb7dd157c3f1f5e5909) ) |
4444 | 3820 | ROM_LOAD( "136087-5003.1n", 0x020000, 0x020000, CRC(164580b3) SHA1(03118c8323d8a49a65addc61c1402d152d42d7f9) ) |
4445 | 3821 | ROM_LOAD( "136087-5004.1p", 0x040000, 0x020000, CRC(296290a0) SHA1(8a3441a5618233f561531fe456e1f5ed22183421) ) |
4446 | 3822 | ROM_LOAD( "136087-5005.1r", 0x060000, 0x020000, CRC(c029d037) SHA1(0ae736c0ca3a1974911464328dd5a6b41a939130) ) |
4447 | 3823 | |
4448 | ROM_REGION( 0x015D, " | |
3824 | ROM_REGION( 0x015D, "plds", 0 ) | |
4449 | 3825 | /* GAL's located on Sound board */ |
4450 | 3826 | ROM_LOAD( "136085-1038.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2F */ |
4451 | 3827 | ROM_LOAD( "136085-1039.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2L */ |
r241749 | r241750 | |
4462 | 3838 | /* GAL's located on "Multisync" board */ |
4463 | 3839 | ROM_LOAD( "136087-9001.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL6001 at location 200K (SLOOP) */ |
4464 | 3840 | |
4465 | ROM_REGION( 0x800, " | |
3841 | ROM_REGION( 0x800, "200e", 0 ) | |
4466 | 3842 | ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
4467 | 3843 | |
4468 | ROM_REGION( 0x800, " | |
3844 | ROM_REGION( 0x800, "210e", 0 ) | |
4469 | 3845 | ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
4470 | 3846 | ROM_END |
4471 | 3847 | |
4472 | 3848 | |
4473 | 3849 | ROM_START( steeltalp ) |
4474 | ROM_REGION( 0x100000, "main | |
3850 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */ | |
4475 | 3851 | ROM_LOAD16_BYTE( "rom-200r.bin", 0x00000, 0x10000, CRC(72a9ce3b) SHA1(6706ff32173735d16d9da1321b64a4a9bb317b2e) ) |
4476 | 3852 | ROM_LOAD16_BYTE( "rom-210r.bin", 0x00001, 0x10000, CRC(46d83b42) SHA1(85b178781f0595b5af0375fee32d0dd8cdba8fca) ) |
4477 | 3853 | ROM_LOAD16_BYTE( "rom-200s.bin", 0x20000, 0x10000, CRC(bf1b31ae) SHA1(f2d7f13854b8a3dd4de9ae98cc3034dfcf3846b8) ) |
r241749 | r241750 | |
4489 | 3865 | ROM_LOAD16_BYTE( "rom-200y.bin", 0xe0000, 0x10000, CRC(b568e1be) SHA1(5d62037892e040515e4262db43057f33436fa12d) ) |
4490 | 3866 | ROM_LOAD16_BYTE( "rom-210y.bin", 0xe0001, 0x10000, CRC(3f5cdd3e) SHA1(c33c155158a5c69a7f2e61cd88b297dc14ecd479) ) |
4491 | 3867 | |
4492 | ROM_REGION( 0x14000, " | |
3868 | ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */ | |
4493 | 3869 | ROM_LOAD( "136087-5001.1f", 0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) ) |
4494 | 3870 | ROM_CONTINUE( 0x004000, 0x00c000 ) |
4495 | 3871 | |
4496 | ROM_REGION( 0x2000, " | |
3872 | ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* 64k for ASIC65 */ | |
4497 | 3873 | ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) ) |
4498 | 3874 | |
4499 | ROM_REGION( 0x10000, " | |
3875 | ROM_REGION( 0x10000, "cpu6", 0 ) /* 64k for DSP communications */ | |
4500 | 3876 | ROM_LOAD( "136087-1025.5f", 0x000000, 0x010000, CRC(4c645933) SHA1(7a1cf049e368059a79b03598de73c30d8dae5e90) ) |
4501 | 3877 | |
4502 | ROM_REGION16_BE( 0xc0000, " | |
3878 | ROM_REGION16_BE( 0xc0000, "user1", 0 ) /* 768k for object ROM */ | |
4503 | 3879 | ROM_LOAD16_BYTE( "rom.2t", 0x00000, 0x20000, CRC(05284504) SHA1(03b81c077f8ff073713f4bcc10b82087743b0d84) ) |
4504 | 3880 | ROM_LOAD16_BYTE( "rom.2lm", 0x00001, 0x20000, CRC(d6e65b87) SHA1(ac4b2f292f6e28a15e3a12f09f6c2f9523e8b178) ) |
4505 | 3881 | |
4506 | ROM_REGION( 0x80000, " | |
3882 | ROM_REGION( 0x80000, "jsa:oki1", 0 ) | |
4507 | 3883 | ROM_LOAD( "136087-5002.1m", 0x000000, 0x020000, CRC(c904db9c) SHA1(d25fff3da87d2b716cd65fb7dd157c3f1f5e5909) ) |
4508 | 3884 | ROM_LOAD( "136087-5003.1n", 0x020000, 0x020000, CRC(164580b3) SHA1(03118c8323d8a49a65addc61c1402d152d42d7f9) ) |
4509 | 3885 | ROM_LOAD( "136087-5004.1p", 0x040000, 0x020000, CRC(296290a0) SHA1(8a3441a5618233f561531fe456e1f5ed22183421) ) |
4510 | 3886 | ROM_LOAD( "136087-5005.1r", 0x060000, 0x020000, CRC(c029d037) SHA1(0ae736c0ca3a1974911464328dd5a6b41a939130) ) |
4511 | 3887 | |
4512 | ROM_REGION( 0x015D, " | |
3888 | ROM_REGION( 0x015D, "plds", 0 ) | |
4513 | 3889 | /* GAL's located on Sound board */ |
4514 | 3890 | ROM_LOAD( "136085-1038.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2F */ |
4515 | 3891 | ROM_LOAD( "136085-1039.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2L */ |
r241749 | r241750 | |
4526 | 3902 | /* GAL's located on "Multisync" board */ |
4527 | 3903 | ROM_LOAD( "136087-9001.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL6001 at location 200K (SLOOP) */ |
4528 | 3904 | |
4529 | ROM_REGION( 0x800, " | |
3905 | ROM_REGION( 0x800, "200e", 0 ) | |
4530 | 3906 | ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
4531 | 3907 | |
4532 | ROM_REGION( 0x800, " | |
3908 | ROM_REGION( 0x800, "210e", 0 ) | |
4533 | 3909 | ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
4534 | 3910 | ROM_END |
4535 | 3911 | |
4536 | 3912 | |
4537 | 3913 | ROM_START( strtdriv ) |
4538 | ROM_REGION( 0x200000, "main | |
3914 | ROM_REGION( 0x200000, "maincpu", 0 ) /* 2MB for 68000 code */ | |
4539 | 3915 | ROM_LOAD16_BYTE( "136091-0002.200r", 0x000000, 0x010000, CRC(d28f2629) SHA1(266b4a80fd366fec2329ed2cec7fb570cef34291) ) |
4540 | 3916 | ROM_LOAD16_BYTE( "136091-0001.210r", 0x000001, 0x010000, CRC(443428d1) SHA1(d93fd21a2c9d1e24c599867a110c1031d72e81b7) ) |
4541 | 3917 | ROM_LOAD16_BYTE( "136091-0004.200s", 0x020000, 0x010000, CRC(379b9d18) SHA1(8cd903cc4e970cc45d7ef431233730b53dabeb1d) ) |
r241749 | r241750 | |
4553 | 3929 | ROM_LOAD16_BYTE( "136091-0016.200y", 0x0e0000, 0x010000, CRC(f85ad532) SHA1(f9d2480104a7487c23d33b05aa044b7f4ca08c67) ) |
4554 | 3930 | ROM_LOAD16_BYTE( "136091-0015.210y", 0x0e0001, 0x010000, CRC(a2e406f3) SHA1(a7266508011c892cb1032fa4d77ccbafedc844e8) ) |
4555 | 3931 | |
4556 | ROM_REGION( 0x10000 + 0x10000, " | |
3932 | ROM_REGION( 0x10000 + 0x10000, "asic65:asic65cpu", 0 ) /* dummy region for ADSP 2105 */ | |
4557 | 3933 | ROM_LOAD( "136091-0033.10j", 0x000000, 0x010000, CRC(57504ab6) SHA1(ec8361b7da964c07ca0da48a87537badc3986fe0) ) |
4558 | 3934 | |
4559 | ROM_REGION( 0x60000, " | |
3935 | ROM_REGION( 0x60000, "user1", 0 ) /* 384k for object ROM */ | |
4560 | 3936 | ROM_LOAD16_BYTE( "136091-0017.2lm", 0x00000, 0x10000, CRC(b0454074) SHA1(9530ea1ef215116da1f0843776fa7a6b4637049d) ) |
4561 | 3937 | ROM_LOAD16_BYTE( "136091-0018.2t", 0x00001, 0x10000, CRC(ef432aa8) SHA1(56bce13c111db7874c9b669d479f6ef47976ee14) ) |
4562 | 3938 | ROM_LOAD16_BYTE( "136091-0019.2k", 0x20000, 0x10000, CRC(5bb00676) SHA1(cad1cea8e43f9590fc71c00fab4eff0d447f9296) ) |
r241749 | r241750 | |
4564 | 3940 | ROM_LOAD16_BYTE( "136091-0021.2j", 0x40000, 0x10000, CRC(14f2caae) SHA1(ff40dbced58dc910a2b5825b846a5e52933cb8fc) ) |
4565 | 3941 | ROM_LOAD16_BYTE( "136091-0022.2p", 0x40001, 0x10000, CRC(bc4dd071) SHA1(ca182451a0a18d343dce1be56090d51950d43906) ) |
4566 | 3942 | |
4567 | ROM_REGION16_BE( 0x50000, " | |
3943 | ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */ | |
4568 | 3944 | ROM_LOAD16_BYTE( "136091-0026.30e", 0x000000, 0x020000, CRC(47705109) SHA1(fa40275b71b74be8591282d2fba4215b98fc29c9) ) |
4569 | 3945 | ROM_LOAD16_BYTE( "136091-0025.10e", 0x000001, 0x020000, CRC(ead9254e) SHA1(92152d3ca77b542b3bb3398ccf414df28c95abfd) ) |
4570 | 3946 | |
4571 | ROM_REGION16_BE( 0x100000, " | |
3947 | ROM_REGION16_BE( 0x100000, "ds3sdsp", 0 ) /* DS III sound ADSP-2105 */ | |
4572 | 3948 | ROM_LOAD( "136091-0033.10j", 0x000000, 0x010000, CRC(57504ab6) SHA1(ec8361b7da964c07ca0da48a87537badc3986fe0) ) |
4573 | 3949 | |
4574 | ROM_REGION16_BE( 0x100000, " | |
3950 | ROM_REGION16_BE( 0x100000, "ds3xdsp", 0 ) /* DS III auxillary ADSP-2105 (unused) */ | |
4575 | 3951 | ROM_FILL( 0x000000, 0x010000, 0x00) |
4576 | 3952 | |
4577 | ROM_REGION( 0x80000, " | |
3953 | ROM_REGION( 0x80000, "ds3sdsp_data", 0 ) | |
4578 | 3954 | ROM_LOAD16_BYTE( "136052-1123.12lm",0x00000, 0x10000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) ) |
4579 | 3955 | ROM_LOAD16_BYTE( "136077-1017.12t", 0x00001, 0x10000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) ) |
4580 | 3956 | |
r241749 | r241750 | |
4587 | 3963 | ROM_FILL( 0x60000, 0x20000, 0xff) /* 12N */ |
4588 | 3964 | ROM_LOAD16_BYTE( "136052-1126.12h", 0x60000, 0x10000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) ) |
4589 | 3965 | |
4590 | ROM_REGION( 0x800, " | |
3966 | ROM_REGION( 0x800, "200e", 0 ) | |
4591 | 3967 | ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
4592 | 3968 | |
4593 | ROM_REGION( 0x800, " | |
3969 | ROM_REGION( 0x800, "210e", 0 ) | |
4594 | 3970 | ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) ) |
4595 | 3971 | ROM_END |
4596 | 3972 | |
4597 | 3973 | ROM_START( hdrivair ) |
4598 | ROM_REGION( 0x200000, "main | |
3974 | ROM_REGION( 0x200000, "maincpu", 0 ) /* 2MB for 68000 code */ | |
4599 | 3975 | ROM_LOAD16_BYTE( "stesthi.bin", 0x000000, 0x20000, CRC(b4bfa451) SHA1(002a5d213ba8ec76ad83a87d76aefbd98b1e4c94) ) |
4600 | 3976 | ROM_LOAD16_BYTE( "stestlo.bin", 0x000001, 0x20000, CRC(58758419) SHA1(7951d4c8cf0b28b4fac3fe172ea3bc56f61bd9ff) ) |
4601 | 3977 | ROM_LOAD16_BYTE( "drivehi.bin", 0x040000, 0x20000, CRC(d15f5119) SHA1(c2c7e9675c14ba41effa6f721602f6471b348758) ) |
r241749 | r241750 | |
4609 | 3985 | ROM_LOAD16_BYTE( "coprochi.bin",0x1c0000, 0x20000, CRC(5d2ca109) SHA1(e1a94d3fbfd5d542732555bf60268e73d66b3a06) ) |
4610 | 3986 | ROM_LOAD16_BYTE( "coproclo.bin",0x1c0001, 0x20000, CRC(5f98b04d) SHA1(9c4fa4092fd85f1d67be44f2ff91a907a87db51a) ) |
4611 | 3987 | |
4612 | ROM_REGION( 0x10000 + 0x10000, " | |
3988 | ROM_REGION( 0x10000 + 0x10000, "asic65:asic65cpu", 0 ) /* dummy region for ADSP 2105 */ | |
4613 | 3989 | ROM_LOAD( "sboot.bin", 0x000000, 0x010000, CRC(cde4d010) SHA1(853f4b813ff70fe74cd87e92131c46fca045610d) ) |
4614 | 3990 | |
4615 | ROM_REGION( 0xc0000, " | |
3991 | ROM_REGION( 0xc0000, "user1", 0 ) /* 768k for object ROM */ | |
4616 | 3992 | ROM_LOAD16_BYTE( "obj0l.bin", 0x00000, 0x20000, CRC(1f835f2e) SHA1(9d3419f2c1aa65ddfe9ace4e70ca1212d634afbf) ) |
4617 | 3993 | ROM_LOAD16_BYTE( "obj0h.bin", 0x00001, 0x20000, CRC(c321ab55) SHA1(e095e40bb1ebda7c9ff04a5086c10ab41dec2f16) ) |
4618 | 3994 | ROM_LOAD16_BYTE( "obj1l.bin", 0x40000, 0x20000, CRC(3d65f264) SHA1(e9232f5bf439bf4e1cf99cc7e81b7f9550563f15) ) |
r241749 | r241750 | |
4620 | 3996 | ROM_LOAD16_BYTE( "obj2l.bin", 0x80000, 0x20000, CRC(b206cc7e) SHA1(17f05e906c41b804fe99dd6cd8acbade919a6a10) ) |
4621 | 3997 | ROM_LOAD16_BYTE( "obj2h.bin", 0x80001, 0x20000, CRC(a666e98c) SHA1(90e380ff87538c7d557cf005a4a5bcedc250eb72) ) |
4622 | 3998 | |
4623 | ROM_REGION16_BE( 0x140000, " | |
3999 | ROM_REGION16_BE( 0x140000, "user3", 0 )/* 1MB for DSK ROMs + 256k for RAM */ | |
4624 | 4000 | ROM_LOAD16_BYTE( "dsk2phi.bin", 0x00000, 0x80000, CRC(71c268e0) SHA1(c089248a7dfadf2eba3134fe40ebb777c115a886) ) |
4625 | 4001 | ROM_LOAD16_BYTE( "dsk2plo.bin", 0x00001, 0x80000, CRC(edf96363) SHA1(47f0608c2b0ab983681de021a16b1d10d4feb800) ) |
4626 | 4002 | |
4627 | ROM_REGION32_LE( 0x200000, " | |
4003 | ROM_REGION32_LE( 0x200000, "user4", 0 )/* 2MB for ASIC61 ROMs */ | |
4628 | 4004 | ROM_LOAD32_BYTE( "roads0.bin", 0x000000, 0x80000, CRC(5028eb41) SHA1(abe9d73e74d4f0308f07cbe9c18c8a77456fdbc7) ) |
4629 | 4005 | ROM_LOAD32_BYTE( "roads1.bin", 0x000001, 0x80000, CRC(c3f2c201) SHA1(c73933d7e46f3c63c4ca86af40eb4f0abb09aedf) ) |
4630 | 4006 | ROM_LOAD32_BYTE( "roads2.bin", 0x000002, 0x80000, CRC(527923fe) SHA1(839de8486bb7489f059b5a629ab229ad96de7eac) ) |
4631 | 4007 | ROM_LOAD32_BYTE( "roads3.bin", 0x000003, 0x80000, CRC(2f2023b2) SHA1(d474892443db2f0710c2be0d6b90735a2fbee12a) ) |
4632 | 4008 | |
4633 | ROM_REGION16_BE( 0x10000, " | |
4009 | ROM_REGION16_BE( 0x10000, "ds3sdsp", 0 ) /* DS IV sound ADSP-2105 */ | |
4634 | 4010 | ROM_LOAD( "sboot.bin", 0x00000, 0x10000, CRC(cde4d010) SHA1(853f4b813ff70fe74cd87e92131c46fca045610d) ) |
4635 | 4011 | |
4636 | ROM_REGION16_BE( 0x10000, " | |
4012 | ROM_REGION16_BE( 0x10000, "ds3xdsp", 0 ) /* DS IV auxillary ADSP-2105 */ | |
4637 | 4013 | ROM_LOAD( "xboot.bin", 0x00000, 0x10000, CRC(054b46a0) SHA1(038eec17e678f2755239d6795acfda621796802e) ) |
4638 | 4014 | |
4639 | ROM_REGION16_BE( 0x400000, " | |
4015 | ROM_REGION16_BE( 0x400000, "ds3sdsp_data", 0 ) /* DS IV sound data */ | |
4640 | 4016 | ROM_LOAD16_BYTE( "ds3rom4.bin", 0x000000, 0x80000, CRC(15ffb19a) SHA1(030dc90b7cabcd7fc5f231b09d2aa2eaf6e60b98) ) |
4641 | 4017 | ROM_LOAD16_BYTE( "ds3rom0.bin", 0x000001, 0x80000, CRC(90b8dbb6) SHA1(fff693cb81e88bc00e048bb71406295fe7be5122) ) |
4642 | 4018 | ROM_LOAD16_BYTE( "ds3rom5.bin", 0x100000, 0x80000, CRC(8d0e9b27) SHA1(76556f48bdf14475260c268ebdb16ecb494b2f36) ) |
r241749 | r241750 | |
4646 | 4022 | ROM_LOAD16_BYTE( "ds3rom7.bin", 0x300000, 0x80000, CRC(323eff0b) SHA1(5d4945d77191ee44b4fbf125bc0816217321829e) ) |
4647 | 4023 | ROM_LOAD16_BYTE( "ds3rom3.bin", 0x300001, 0x80000, CRC(63965868) SHA1(d61d9d6709a3a3c37c2652602e97fdee52e0e7cb) ) |
4648 | 4024 | |
4649 | ROM_REGION( 0x800, " | |
4025 | ROM_REGION( 0x800, "200e", 0 ) | |
4650 | 4026 | ROM_LOAD( "hdrivair.200e", 0x000000, 0x000800, CRC(6270b696) SHA1(e302880dbca53ee725108ca4f7e45a176e85e96d) ) |
4651 | 4027 | |
4652 | ROM_REGION( 0x800, " | |
4028 | ROM_REGION( 0x800, "210e", 0 ) | |
4653 | 4029 | ROM_LOAD( "hdrivair.210e", 0x000000, 0x000800, CRC(a1c39919) SHA1(92799a7a73f545dad6684eacf7009a6c4d52d8f7) ) |
4654 | 4030 | ROM_END |
4655 | 4031 | |
4656 | 4032 | |
4657 | 4033 | ROM_START( hdrivairp ) |
4658 | ROM_REGION( 0x200000, "main | |
4034 | ROM_REGION( 0x200000, "maincpu", 0 ) /* 2MB for 68000 code */ | |
4659 | 4035 | ROM_LOAD16_BYTE( "stest.0h", 0x000000, 0x20000, CRC(bf4bb6a0) SHA1(e38ec5ce245f98bfe8084ba684bffc85dc19d3be) ) |
4660 | 4036 | ROM_LOAD16_BYTE( "stest.0l", 0x000001, 0x20000, CRC(f462b511) SHA1(d88efb8cc30322a8332a1f50de775a204758e176) ) |
4661 | 4037 | ROM_LOAD16_BYTE( "drive.hi", 0x040000, 0x20000, CRC(56571590) SHA1(d0362b8bd438cd7dfa9ff7cf71307f44c2cfe843) ) |
r241749 | r241750 | |
4669 | 4045 | ROM_LOAD16_BYTE( "ms2cproc.0h", 0x1c0000, 0x20000, CRC(19024f2d) SHA1(a94e8836cdc147cea5816b99b8a1ad5ff669d984) ) |
4670 | 4046 | ROM_LOAD16_BYTE( "ms2cproc.0l", 0x1c0001, 0x20000, CRC(1e48bd46) SHA1(1a903d889f48604bd8d2d9a0bda4ee20e7ad968b) ) |
4671 | 4047 | |
4672 | ROM_REGION( 0x10000 + 0x10000, " | |
4048 | ROM_REGION( 0x10000 + 0x10000, "dsp32", 0 ) /* dummy region for ADSP 2105 */ | |
4673 | 4049 | ROM_LOAD( "sboota.bin", 0x10000 + 0x00000, 0x10000, CRC(3ef819cd) SHA1(c547b869a3a37a82fb46584fe0ef0cfe21a4f882) ) |
4674 | 4050 | |
4675 | ROM_REGION( 0x10000 + 0x10000, " | |
4051 | ROM_REGION( 0x10000 + 0x10000, "asic65:asic65cpu", 0 ) /* dummy region for ADSP 2105 */ | |
4676 | 4052 | ROM_LOAD( "xboota.bin", 0x10000 + 0x00000, 0x10000, CRC(d9c49901) SHA1(9f90ae3a47eb1ef00c3ec3661f60402c2eae2108) ) |
4677 | 4053 | |
4678 | ROM_REGION( 0xc0000, " | |
4054 | ROM_REGION( 0xc0000, "user1", 0 ) /* 768k for object ROM */ | |
4679 | 4055 | ROM_LOAD16_BYTE( "objects.0l", 0x00000, 0x20000, CRC(3c9e9078) SHA1(f1daf32117236401f3cb97f332708632003e55f8) ) |
4680 | 4056 | ROM_LOAD16_BYTE( "objects.0h", 0x00001, 0x20000, CRC(4480dbae) SHA1(6a455173c38e80093f58bdc322cffcf25e70b6ae) ) |
4681 | 4057 | ROM_LOAD16_BYTE( "objects.1l", 0x40000, 0x20000, CRC(700bd978) SHA1(5cd63d4eee00d90fe29fb9697b6a0ea6b86704ae) ) |
r241749 | r241750 | |
4683 | 4059 | ROM_LOAD16_BYTE( "objects.2l", 0x80000, 0x20000, CRC(e3b512f0) SHA1(080c5a21cb76edcb55d1c2488e9d91cf29cb0665) ) |
4684 | 4060 | ROM_LOAD16_BYTE( "objects.2h", 0x80001, 0x20000, CRC(3f83742b) SHA1(4b6e0134a806bcc9bd56432737047f86d0a16424) ) |
4685 | 4061 | |
4686 | ROM_REGION16_BE( 0x140000, " | |
4062 | ROM_REGION16_BE( 0x140000, "user3", 0 )/* 1MB for DSK ROMs + 256k for RAM */ | |
4687 | 4063 | ROM_LOAD16_BYTE( "dskpics.hi", 0x00000, 0x80000, CRC(eaa88101) SHA1(ed0ebf8a9a9514d810242b9b552126f6717f9e25) ) |
4688 | 4064 | ROM_LOAD16_BYTE( "dskpics.lo", 0x00001, 0x80000, CRC(8c6f0750) SHA1(4cb23cedc500c1509dc875c3291a5771c8473f73) ) |
4689 | 4065 | |
4690 | ROM_REGION32_LE( 0x200000, " | |
4066 | ROM_REGION32_LE( 0x200000, "user4", 0 )/* 2MB for ASIC61 ROMs */ | |
4691 | 4067 | ROM_LOAD16_BYTE( "roads.0", 0x000000, 0x80000, CRC(cab2e335) SHA1(914996c5b7905f1c20fcda6972af88debbee59cd) ) |
4692 | 4068 | ROM_LOAD16_BYTE( "roads.1", 0x000001, 0x80000, CRC(62c244ba) SHA1(f041a269f35a9d187c90241c5b64173663ad5268) ) |
4693 | 4069 | ROM_LOAD16_BYTE( "roads.2", 0x000002, 0x80000, CRC(ba57f415) SHA1(1daf5a014e9bef15466b282bcca2395fec2b0628) ) |
4694 | 4070 | ROM_LOAD16_BYTE( "roads.3", 0x000003, 0x80000, CRC(1e6a4ca0) SHA1(2cf06d6c73be11cf10515246fca2baa05ce5091b) ) |
4695 | 4071 | |
4696 | ROM_REGION( 0x10000, " | |
4072 | ROM_REGION( 0x10000, "ds3sdsp", 0 ) /* DS IV sound ADSP-2105 */ | |
4697 | 4073 | ROM_LOAD( "sboota.bin", 0x00000, 0x10000, CRC(3ef819cd) SHA1(c547b869a3a37a82fb46584fe0ef0cfe21a4f882) ) |
4698 | 4074 | |
4699 | ROM_REGION( 0x10000, " | |
4075 | ROM_REGION( 0x10000, "ds3xdsp", 0 ) /* DS IV auxillary ADSP-2105 */ | |
4700 | 4076 | ROM_LOAD( "xboota.bin", 0x00000, 0x10000, CRC(d9c49901) SHA1(9f90ae3a47eb1ef00c3ec3661f60402c2eae2108) ) |
4701 | 4077 | |
4702 | ROM_REGION16_BE( 0x400000, " | |
4078 | ROM_REGION16_BE( 0x400000, "ds3sdsp_data", 0 ) | |
4703 | 4079 | ROM_LOAD16_BYTE( "ds3rom.5", 0x000000, 0x80000, CRC(6ef9ed90) SHA1(8bd927a56fe99f7db96d203c1daeb8c8c83f2c17) ) |
4704 | 4080 | ROM_LOAD16_BYTE( "ds3rom.1", 0x000001, 0x80000, CRC(03673d8d) SHA1(13596f7acb58fba78d6e4f2ac7bb21d9d2589668) ) |
4705 | 4081 | ROM_LOAD16_BYTE( "ds3rom.6", 0x100000, 0x80000, CRC(cd4cd6bc) SHA1(95689ab7cb18af54ff09aebf223f6346f13dfd7b) ) |
r241749 | r241750 | |
4709 | 4085 | ROM_LOAD16_BYTE( "ds3rom.0", 0x300000, 0x80000, CRC(90b8dbb6) SHA1(fff693cb81e88bc00e048bb71406295fe7be5122) ) |
4710 | 4086 | ROM_LOAD16_BYTE( "ds3rom.4", 0x300001, 0x80000, CRC(6281efee) SHA1(47d0f3ff973166d818877996c45dccf1d3a85fe1) ) |
4711 | 4087 | |
4712 | ROM_REGION( 0x800, " | |
4088 | ROM_REGION( 0x800, "200e", 0 ) | |
4713 | 4089 | ROM_LOAD( "hdrivair.200e", 0x000000, 0x000800, CRC(6270b696) SHA1(e302880dbca53ee725108ca4f7e45a176e85e96d) ) |
4714 | 4090 | |
4715 | ROM_REGION( 0x800, " | |
4091 | ROM_REGION( 0x800, "210e", 0 ) | |
4716 | 4092 | ROM_LOAD( "hdrivair.210e", 0x000000, 0x000800, CRC(a1c39919) SHA1(92799a7a73f545dad6684eacf7009a6c4d52d8f7) ) |
4717 | 4093 | ROM_END |
4718 | 4094 | |
r241749 | r241750 | |
4955 | 4331 | * |
4956 | 4332 | *************************************/ |
4957 | 4333 | |
4958 | ||
4334 | DRIVER_INIT_MEMBER(harddriv_state,harddriv) | |
4959 | 4335 | { |
4960 | 4336 | /* initialize the boards */ |
4961 | 4337 | init_driver(); |
r241749 | r241750 | |
4978 | 4354 | } |
4979 | 4355 | |
4980 | 4356 | |
4981 | ||
4357 | DRIVER_INIT_MEMBER(harddriv_state,harddrivc) | |
4982 | 4358 | { |
4983 | 4359 | /* initialize the boards */ |
4984 | 4360 | init_multisync(1); |
r241749 | r241750 | |
5001 | 4377 | } |
5002 | 4378 | |
5003 | 4379 | |
5004 | ||
4380 | DRIVER_INIT_MEMBER(harddriv_state,stunrun) | |
5005 | 4381 | { |
5006 | 4382 | /* initialize the boards */ |
5007 | 4383 | init_multisync(0); |
r241749 | r241750 | |
5018 | 4394 | } |
5019 | 4395 | |
5020 | 4396 | |
5021 | ||
4397 | DRIVER_INIT_MEMBER(harddriv_state,racedriv) | |
5022 | 4398 | { |
5023 | 4399 | /* initialize the boards */ |
5024 | 4400 | init_driver(); |
r241749 | r241750 | |
5027 | 4403 | init_driver_sound(); |
5028 | 4404 | |
5029 | 4405 | /* set up the slapstic */ |
5030 | | |
4406 | slapstic_init(machine(), 117); | |
5031 | 4407 | 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)); |
5032 | 4408 | |
5033 | 4409 | /* synchronization */ |
r241749 | r241750 | |
5048 | 4424 | init_driver_sound(); |
5049 | 4425 | |
5050 | 4426 | /* set up the slapstic */ |
5051 | | |
4427 | slapstic_init(machine(), 117); | |
5052 | 4428 | 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)); |
5053 | 4429 | |
5054 | 4430 | /* synchronization */ |
r241749 | r241750 | |
5067 | 4443 | m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(FUNC(harddriv_state::hdadsp_speedup_r), this)); |
5068 | 4444 | } |
5069 | 4445 | |
5070 | void harddriv_state::init_racedrivc(void) { racedrivc_init_common(0xfff95cd0); } | |
5071 | void harddriv_state::init_racedrivc1(void) { racedrivc_init_common(0xfff7ecd0); } | |
4446 | DRIVER_INIT_MEMBER(harddriv_state,racedrivc) { racedrivc_init_common(0xfff95cd0); } | |
4447 | DRIVER_INIT_MEMBER(harddriv_state,racedrivc1) { racedrivc_init_common(0xfff7ecd0); } | |
5072 | 4448 | |
5073 | ||
4449 | DRIVER_INIT_MEMBER(harddriv_state,racedrivb1) | |
5074 | 4450 | { |
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 | ||
5102 | void harddriv_state::init_racedrivb1(void) | |
5103 | { | |
5104 | 4451 | /* this unpleasantness prevents racedriv1/racedrivb1/racedrivg1 from crashing MAME during boot */ |
5105 | 4452 | /* they clear the DSP32C's RAM and then release it from reset, causing it to run through */ |
5106 | 4453 | /* its address space recursively executing instructions */ |
r241749 | r241750 | |
5152 | 4499 | } |
5153 | 4500 | |
5154 | 4501 | |
5155 | ||
4502 | DRIVER_INIT_MEMBER(harddriv_state,steeltal) | |
5156 | 4503 | { |
5157 | 4504 | steeltal_init_common(0x4fc18, 0); |
5158 | 4505 | } |
5159 | 4506 | |
5160 | ||
4507 | DRIVER_INIT_MEMBER(harddriv_state,steeltal1) | |
5161 | 4508 | { |
5162 | 4509 | steeltal_init_common(0x4f9c6, 0); |
5163 | 4510 | } |
5164 | 4511 | |
5165 | ||
4512 | DRIVER_INIT_MEMBER(harddriv_state,steeltalp) | |
5166 | 4513 | { |
5167 | 4514 | steeltal_init_common(0x52290, 1); |
5168 | 4515 | } |
5169 | 4516 | |
5170 | 4517 | |
5171 | ||
4518 | DRIVER_INIT_MEMBER(harddriv_state,strtdriv) | |
5172 | 4519 | { |
5173 | 4520 | /* initialize the boards */ |
5174 | 4521 | init_multisync(1); |
r241749 | r241750 | |
5176 | 4523 | init_dsk(); |
5177 | 4524 | |
5178 | 4525 | /* set up the slapstic */ |
5179 | | |
4526 | slapstic_init(machine(), 117); | |
5180 | 4527 | 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)); |
5181 | 4528 | |
5182 | 4529 | m_maincpu->space(AS_PROGRAM).install_read_handler(0xa80000, 0xafffff, read16_delegate(FUNC(harddriv_state::hda68k_port1_r), this)); |
r241749 | r241750 | |
5197 | 4544 | } |
5198 | 4545 | |
5199 | 4546 | |
5200 | ||
4547 | DRIVER_INIT_MEMBER(harddriv_state,hdrivair) | |
5201 | 4548 | { |
5202 | 4549 | /* initialize the boards */ |
5203 | 4550 | init_multisync(1); |
r241749 | r241750 | |
5222 | 4569 | } |
5223 | 4570 | |
5224 | 4571 | |
5225 | ||
4572 | DRIVER_INIT_MEMBER(harddriv_state,hdrivairp) | |
5226 | 4573 | { |
5227 | 4574 | /* initialize the boards */ |
5228 | 4575 | init_multisync(1); |
r241749 | r241750 | |
5247 | 4594 | } |
5248 | 4595 | |
5249 | 4596 | |
4597 | ||
5250 | 4598 | /************************************* |
5251 | 4599 | * |
5252 | 4600 | * Game driver(s) |
5253 | 4601 | * |
5254 | 4602 | *************************************/ |
5255 | 4603 | |
5256 | GAME( 1999, harddriv, 0, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 7)", 0 ) | |
5257 | GAME( 1988, harddrivb, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 7)", 0 ) | |
5258 | GAME( 1988, harddrivg, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, German, rev 7)", 0 ) | |
5259 | GAME( 1988, harddrivj, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, Japan, rev 7)", 0 ) | |
5260 | GAME( 1988, harddrivb6, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 6)", 0 ) | |
5261 | GAME( 1988, harddrivj6, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, Japan, rev 6)", 0 ) | |
5262 | GAME( 1988, harddrivb5, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 5)", 0 ) | |
5263 | GAME( 1988, harddrivg4, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, German, rev 4)", 0 ) | |
5264 | GAME( 1988, harddriv3, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 3)", 0 ) | |
5265 | GAME( 1988, harddriv2, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 2)", 0 ) | |
5266 | GAME( 1988, harddriv1, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 1)", 0 ) | |
4604 | GAME( 1988, harddriv, 0, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 7)", 0 ) | |
4605 | GAME( 1988, harddrivb, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 7)", 0 ) | |
4606 | GAME( 1988, harddrivg, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, German, rev 7)", 0 ) | |
4607 | GAME( 1988, harddrivj, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, Japan, rev 7)", 0 ) | |
4608 | GAME( 1988, harddrivb6, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 6)", 0 ) | |
4609 | GAME( 1988, harddrivj6, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, Japan, rev 6)", 0 ) | |
4610 | GAME( 1988, harddrivb5, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 5)", 0 ) | |
4611 | GAME( 1988, harddrivg4, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, German, rev 4)", 0 ) | |
4612 | GAME( 1988, harddriv3, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 3)", 0 ) | |
4613 | GAME( 1988, harddriv2, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 2)", 0 ) | |
4614 | GAME( 1988, harddriv1, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 1)", 0 ) | |
5267 | 4615 | |
5268 | GAME( 1990, harddrivc, harddriv, harddrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (compact, rev 2)", 0 ) | |
5269 | GAME( 1990, harddrivcg, harddriv, harddrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (compact, German, rev 2)", 0 ) | |
5270 | GAME( 1990, harddrivcb, harddriv, harddrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (compact, British, rev 2)", 0 ) | |
5271 | GAME( 1990, harddrivc1, harddriv, harddrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (compact, rev 1)", 0 ) | |
4616 | GAME( 1990, harddrivc, harddriv, harddrivc, racedrivc, harddriv_state, harddrivc, ROT0, "Atari Games", "Hard Drivin' (compact, rev 2)", 0 ) | |
4617 | GAME( 1990, harddrivcg, harddriv, harddrivc, racedrivc, harddriv_state, harddrivc, ROT0, "Atari Games", "Hard Drivin' (compact, German, rev 2)", 0 ) | |
4618 | GAME( 1990, harddrivcb, harddriv, harddrivc, racedrivc, harddriv_state, harddrivc, ROT0, "Atari Games", "Hard Drivin' (compact, British, rev 2)", 0 ) | |
4619 | GAME( 1990, harddrivc1, harddriv, harddrivc, racedrivc, harddriv_state, harddrivc, ROT0, "Atari Games", "Hard Drivin' (compact, rev 1)", 0 ) | |
5272 | 4620 | |
5273 | GAME( 1989, stunrun, 0, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 6)", 0 ) | |
5274 | GAME( 1989, stunrunj, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 7, Japan)", 0 ) | |
5275 | GAME( 1989, stunrun5, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 5)", 0 ) | |
5276 | GAME( 1989, stunrune, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 5, Europe)", 0 ) | |
5277 | GAME( 1989, stunrun4, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 4)", 0 ) | |
5278 | GAME( 1989, stunrun3, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 3)", 0 ) | |
5279 | GAME( 1989, stunrun3e, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 3, Europe)", 0 ) | |
5280 | GAME( 1989, stunrun2, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 2)", 0 ) | |
5281 | GAME( 1989, stunrun2e, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 2, Europe)", 0 ) | |
5282 | GAME( 1989, stunrun0, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 0)", 0 ) | |
5283 | GAME( 1989, stunrunp, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (upright prototype)", 0 ) | |
4621 | GAME( 1989, stunrun, 0, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 6)", 0 ) | |
4622 | GAME( 1989, stunrunj, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 7, Japan)", 0 ) | |
4623 | GAME( 1989, stunrun5, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 5)", 0 ) | |
4624 | GAME( 1989, stunrune, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 5, Europe)", 0 ) | |
4625 | GAME( 1989, stunrun4, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 4)", 0 ) | |
4626 | GAME( 1989, stunrun3, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 3)", 0 ) | |
4627 | GAME( 1989, stunrun3e, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 3, Europe)", 0 ) | |
4628 | GAME( 1989, stunrun2, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 2)", 0 ) | |
4629 | GAME( 1989, stunrun2e, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 2, Europe)", 0 ) | |
4630 | GAME( 1989, stunrun0, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 0)", 0 ) | |
4631 | GAME( 1989, stunrunp, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (upright prototype)", 0 ) | |
5284 | 4632 | |
5285 | GAME( 1990, racedriv, 0, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 5)", 0 ) | |
5286 | GAME( 1990, racedrivb, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 5)", 0 ) | |
5287 | GAME( 1990, racedrivg, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 5)", 0 ) | |
5288 | GAME( 1990, racedriv4, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 4)", 0 ) | |
5289 | GAME( 1990, racedrivb4, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 4)", 0 ) | |
5290 | GAME( 1990, racedrivg4, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 4)", 0 ) | |
5291 | GAME( 1990, racedriv3, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 3)", 0 ) | |
5292 | GAME( 1990, racedriv2, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 2)", 0 ) | |
5293 | GAME( 1990, racedriv1, racedriv, racedrivb1_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 1)", 0 ) | |
5294 | GAME( 1990, racedrivb1, racedriv, racedrivb1_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 1)", 0 ) | |
5295 | GAME( 1990, racedrivg1, racedriv, racedrivb1_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 2)", 0 ) | |
4633 | GAME( 1990, racedriv, 0, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 5)", 0 ) | |
4634 | GAME( 1990, racedrivb, racedriv, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 5)", 0 ) | |
4635 | GAME( 1990, racedrivg, racedriv, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 5)", 0 ) | |
4636 | GAME( 1990, racedriv4, racedriv, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 4)", 0 ) | |
4637 | GAME( 1990, racedrivb4, racedriv, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 4)", 0 ) | |
4638 | GAME( 1990, racedrivg4, racedriv, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 4)", 0 ) | |
4639 | GAME( 1990, racedriv3, racedriv, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 3)", 0 ) | |
4640 | GAME( 1990, racedriv2, racedriv, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 2)", 0 ) | |
4641 | GAME( 1990, racedriv1, racedriv, racedriv, racedriv, harddriv_state, racedrivb1, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 1)", 0 ) | |
4642 | GAME( 1990, racedrivb1, racedriv, racedriv, racedriv, harddriv_state, racedrivb1, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 1)", 0 ) | |
4643 | GAME( 1990, racedrivg1, racedriv, racedriv, racedriv, harddriv_state, racedrivb1, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 2)", 0 ) | |
5296 | 4644 | |
5297 | GAME( 1990, racedrivc, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, rev 5)", 0 ) | |
5298 | GAME( 1990, racedrivcb, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, British, rev 5)", 0 ) | |
5299 | GAME( 1990, racedrivcg, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, German, rev 5)", 0 ) | |
5300 | GAME( 1990, racedrivc4, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, rev 4)", 0 ) | |
5301 | GAME( 1990, racedrivcb4, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, British, rev 4)", 0 ) | |
5302 | GAME( 1990, racedrivcg4, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, German, rev 4)", 0 ) | |
5303 | GAME( 1990, racedrivc2, racedriv, racedrivc1_machine, racedrivc, driver_device, 0,ROT0, "Atari Games", "Race Drivin' (compact, rev 2)", 0 ) | |
5304 | GAME( 1990, racedrivc1, racedriv, racedrivc1_machine, racedrivc, driver_device, 0,ROT0, "Atari Games", "Race Drivin' (compact, rev 1)", 0 ) | |
4645 | GAME( 1990, racedrivc, racedriv, racedrivc, racedrivc, harddriv_state, racedrivc, ROT0, "Atari Games", "Race Drivin' (compact, rev 5)", 0 ) | |
4646 | GAME( 1990, racedrivcb, racedriv, racedrivc, racedrivc, harddriv_state, racedrivc, ROT0, "Atari Games", "Race Drivin' (compact, British, rev 5)", 0 ) | |
4647 | GAME( 1990, racedrivcg, racedriv, racedrivc, racedrivc, harddriv_state, racedrivc, ROT0, "Atari Games", "Race Drivin' (compact, German, rev 5)", 0 ) | |
4648 | GAME( 1990, racedrivc4, racedriv, racedrivc, racedrivc, harddriv_state, racedrivc, ROT0, "Atari Games", "Race Drivin' (compact, rev 4)", 0 ) | |
4649 | GAME( 1990, racedrivcb4, racedriv, racedrivc, racedrivc, harddriv_state, racedrivc, ROT0, "Atari Games", "Race Drivin' (compact, British, rev 4)", 0 ) | |
4650 | GAME( 1990, racedrivcg4, racedriv, racedrivc, racedrivc, harddriv_state, racedrivc, ROT0, "Atari Games", "Race Drivin' (compact, German, rev 4)", 0 ) | |
4651 | GAME( 1990, racedrivc2, racedriv, racedrivc, racedrivc, harddriv_state, racedrivc1,ROT0, "Atari Games", "Race Drivin' (compact, rev 2)", 0 ) | |
4652 | GAME( 1990, racedrivc1, racedriv, racedrivc, racedrivc, harddriv_state, racedrivc1,ROT0, "Atari Games", "Race Drivin' (compact, rev 1)", 0 ) | |
5305 | 4653 | |
5306 | GAME | |
4654 | GAME( 1990, racedrivpan, racedriv, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' Panorama (prototype, rev 2.1)", GAME_NOT_WORKING ) | |
5307 | 4655 | |
5308 | GAME( 1991, steeltal, 0, steeltal_machine, steeltal, driver_device, 0, ROT0, "Atari Games", "Steel Talons (rev 2)", 0 ) | |
5309 | GAME( 1991, steeltalg, steeltal, steeltal_machine, steeltal, driver_device, 0, ROT0, "Atari Games", "Steel Talons (German, rev 2)", 0 ) | |
5310 | GAME( 1991, steeltal1, steeltal, steeltal1_machine, steeltal, driver_device, 0,ROT0, "Atari Games", "Steel Talons (rev 1)", 0 ) | |
5311 | GAME( 1991, steeltalp, steeltal, steeltalp_machine, steeltal, driver_device, 0,ROT0, "Atari Games", "Steel Talons (prototype)", GAME_NOT_WORKING ) | |
4656 | GAME( 1991, steeltal, 0, steeltal, steeltal, harddriv_state, steeltal, ROT0, "Atari Games", "Steel Talons (rev 2)", 0 ) | |
4657 | GAME( 1991, steeltalg, steeltal, steeltal, steeltal, harddriv_state, steeltal, ROT0, "Atari Games", "Steel Talons (German, rev 2)", 0 ) | |
4658 | GAME( 1991, steeltal1, steeltal, steeltal, steeltal, harddriv_state, steeltal1,ROT0, "Atari Games", "Steel Talons (rev 1)", 0 ) | |
4659 | GAME( 1991, steeltalp, steeltal, steeltal, steeltal, harddriv_state, steeltalp,ROT0, "Atari Games", "Steel Talons (prototype)", GAME_NOT_WORKING ) | |
5312 | 4660 | |
5313 | GAME( 1993, strtdriv, 0, strtdriv | |
4661 | GAME( 1993, strtdriv, 0, strtdriv, strtdriv, harddriv_state, strtdriv, ROT0, "Atari Games", "Street Drivin' (prototype)", 0 ) | |
5314 | 4662 | |
5315 | GAME( 1993, hdrivair, 0, hdrivair_machine, hdrivair, driver_device, 0, ROT0, "Atari Games", "Hard Drivin's Airborne (prototype)", GAME_IMPERFECT_SOUND ) | |
5316 | GAME( 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 | ||
4663 | GAME( 1993, hdrivair, 0, hdrivair, hdrivair, harddriv_state, hdrivair, ROT0, "Atari Games", "Hard Drivin's Airborne (prototype)", GAME_IMPERFECT_SOUND ) | |
4664 | GAME( 1993, hdrivairp, hdrivair, hdrivair, hdrivair, harddriv_state, hdrivairp,ROT0, "Atari Games", "Hard Drivin's Airborne (prototype, early rev)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) |
r241749 | r241750 | |
---|---|---|
1379 | 1379 | GAME( 1986, legend, 0, legend, legend, kyugo_state, srdmissn, ROT0, "Kyugo / Sega", "Legend", GAME_SUPPORTS_SAVE ) // no copyright (maybe also a bootleg?) |
1380 | 1380 | GAME( 1986, legendb, legend, legend, legend, kyugo_state, srdmissn, ROT0, "bootleg", "Legion (bootleg of Legend)", GAME_SUPPORTS_SAVE ) // no copyright |
1381 | 1381 | GAME( 1987, airwolf, 0, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "Kyugo", "Airwolf", GAME_SUPPORTS_SAVE ) |
1382 | GAME( 1987, airwolfa, airwolf, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "Kyugo (U | |
1382 | GAME( 1987, airwolfa, airwolf, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "Kyugo (UA Theatre license)", "Airwolf (US)", GAME_SUPPORTS_SAVE ) | |
1383 | 1383 | GAME( 1987, skywolf, airwolf, srdmissn, skywolf, kyugo_state, srdmissn, ROT0, "bootleg", "Sky Wolf (set 1)", GAME_SUPPORTS_SAVE ) |
1384 | 1384 | GAME( 1987, skywolf2, airwolf, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "bootleg", "Sky Wolf (set 2)", GAME_SUPPORTS_SAVE ) |
1385 | 1385 | GAME( 1987, skywolf3, airwolf, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "bootleg", "Sky Wolf (set 3)", GAME_SUPPORTS_SAVE ) |
r241749 | r241750 | |
---|---|---|
221 | 221 | |
222 | 222 | #include "emu.h" |
223 | 223 | #include "cpu/i386/i386.h" |
224 | #include "machine/pcshare.h" | |
225 | #include "machine/pckeybrd.h" | |
226 | #include "video/pc_vga.h" | |
224 | 227 | #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" | |
236 | 228 | |
237 | class lindbergh_state : public | |
229 | class lindbergh_state : public pcat_base_state | |
238 | 230 | { |
239 | 231 | public: |
240 | 232 | lindbergh_state(const machine_config &mconfig, device_type type, const char *tag); |
r241749 | r241750 | |
243 | 235 | virtual void machine_reset(); |
244 | 236 | }; |
245 | 237 | |
246 | #if 0 | |
247 | 238 | static ADDRESS_MAP_START(lindbergh_map, AS_PROGRAM, 32, lindbergh_state) |
248 | 239 | 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) | |
251 | 242 | // 0xd0000 - 0xdffff tested, wants 0x414d ("AM") in there |
252 | 243 | AM_RANGE(0x000f0000, 0x000fffff) AM_ROM AM_REGION("mb_bios", 0xf0000) |
253 | ||
244 | AM_RANGE(0xfd000000, 0xfd3fffff) AM_ROM AM_REGION("jvs_bios", 0) /* Hack to see the data */ | |
254 | 245 | AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("mb_bios", 0) /* System BIOS */ |
255 | 246 | ADDRESS_MAP_END |
256 | 247 | |
257 | 248 | static ADDRESS_MAP_START(lindbergh_io, AS_IO, 32, lindbergh_state) |
258 | ||
249 | AM_IMPORT_FROM(pcat32_io_common) | |
259 | 250 | |
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) | |
262 | 253 | ADDRESS_MAP_END |
263 | #endif | |
264 | 254 | |
265 | lindbergh_state::lindbergh_state(const machine_config &mconfig, device_type type, const char *tag) : | |
255 | lindbergh_state::lindbergh_state(const machine_config &mconfig, device_type type, const char *tag) : pcat_base_state(mconfig, type, tag) | |
266 | 256 | { |
267 | 257 | } |
268 | 258 | |
r241749 | r241750 | |
277 | 267 | static MACHINE_CONFIG_START(lindbergh, lindbergh_state) |
278 | 268 | // MCFG_CPU_ADD("maincpu", PENTIUM, 2800000000U) /* Actually Celeron D at 2,8 GHz */ |
279 | 269 | 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) | |
283 | 273 | |
284 | // MCFG_FRAGMENT_ADD( pcat_common ) | |
285 | // MCFG_FRAGMENT_ADD( pcvideo_vga ) | |
274 | MCFG_FRAGMENT_ADD( pcat_common ) | |
275 | MCFG_FRAGMENT_ADD( pcvideo_vga ) | |
286 | 276 | |
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) | |
307 | 278 | MACHINE_CONFIG_END |
308 | 279 | |
309 | 280 | ROM_START(lindbios) |
310 | ROM_REGION32_LE(0x100000, " | |
281 | ROM_REGION32_LE(0x100000, "mb_bios", 0) // location 3j7 | |
311 | 282 | ROM_SYSTEM_BIOS(0, "bios0", "6.0.0010 alternate version") |
312 | 283 | ROMX_LOAD("6.0.0010a.bin", 0x00000, 0x100000, CRC(10dd9b76) SHA1(1fdf1f921bc395846a7c3180fbdbc4ca287a9670), ROM_BIOS(1) ) |
313 | 284 | ROM_SYSTEM_BIOS(1, "bios1", "6.0.0009") |
r241749 | r241750 | |
316 | 287 | ROMX_LOAD("6.0.0010.bin", 0x00000, 0x100000, CRC(ea2bf888) SHA1(c9c5b6f0d4f4f36620939b15dd2f128a74347e37), ROM_BIOS(3) ) |
317 | 288 | |
318 | 289 | |
319 | ROM_REGION(0x400000, " | |
290 | ROM_REGION(0x400000, "jvs_bios", 0) | |
320 | 291 | ROM_LOAD("fpr-24370b.ic6", 0x000000, 0x400000, CRC(c3b021a4) SHA1(1b6938a50fe0e4ae813864649eb103838c399ac0)) |
321 | 292 | |
322 | ROM_REGION | |
293 | ROM_REGION(0x10000, "vid_bios", 0) | |
323 | 294 | ROM_LOAD("vid_bios.u504", 0x00000, 0x10000, CRC(f78d14d7) SHA1(f129787e487984edd23bf344f2e9500c85052275)) |
324 | 295 | ROM_END |
325 | 296 | |
326 | GAME(1999, lindbios, 0, lindbergh, | |
297 | GAME(1999, lindbios, 0, lindbergh, at_keyboard, driver_device, 0, ROT0, "Sega Lindbergh", "Sega Lindbergh Bios", GAME_IS_SKELETON) |
r241749 | r241750 | |
---|---|---|
118 | 118 | #include "cpu/adsp2100/adsp2100.h" |
119 | 119 | #include "sound/dmadac.h" |
120 | 120 | #include "video/voodoo.h" |
121 | #include "machine/ | |
121 | #include "machine/pci.h" | |
122 | 122 | |
123 | 123 | |
124 | 124 | /* TODO: Two 3Dfx Voodoo chipsets are used in SLI configuration */ |
r241749 | r241750 | |
---|---|---|
96 | 96 | { |
97 | 97 | m_vfd->reset(); // reset display1 |
98 | 98 | m1_stepper_reset(); |
99 | m_Vmm=false; | |
100 | 99 | } |
101 | 100 | |
102 | 101 | /////////////////////////////////////////////////////////////////////////// |
r241749 | r241750 | |
112 | 111 | WRITE_LINE_MEMBER(maygay1b_state::duart_irq_handler) |
113 | 112 | { |
114 | 113 | m_maincpu->set_input_line(M6809_IRQ_LINE, state?ASSERT_LINE:CLEAR_LINE); |
114 | LOG(("6809 irq%d \n",state)); | |
115 | 115 | } |
116 | 116 | |
117 | 117 | // FIRQ, related to the sample playback? |
r241749 | r241750 | |
122 | 122 | { |
123 | 123 | cpu0_firq(1); |
124 | 124 | } |
125 | return | |
125 | return nar; | |
126 | 126 | } |
127 | 127 | |
128 | 128 | READ8_MEMBER( maygay1b_state::m1_firq_clr_r ) |
129 | 129 | { |
130 | 130 | cpu0_firq(0); |
131 | return 0 | |
131 | return 0; | |
132 | 132 | } |
133 | 133 | |
134 | 134 | // NMI is periodic? or triggered by a write? |
135 | 135 | TIMER_DEVICE_CALLBACK_MEMBER( maygay1b_state::maygay1b_nmitimer_callback ) |
136 | 136 | { |
137 | m_Vmm = !m_Vmm; | |
138 | cpu0_nmi(); | |
139 | } | |
140 | ||
141 | void maygay1b_state::cpu0_nmi() | |
142 | { | |
143 | if (m_Vmm && m_NMIENABLE) | |
137 | //disabling for now | |
138 | if (m_NMIENABLE) | |
144 | 139 | { |
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; | |
146 | 143 | } |
147 | else | |
148 | { | |
149 | m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); | |
150 | } | |
144 | ||
151 | 145 | } |
152 | 146 | |
147 | /* | |
148 | void maygay1b_state::cpu0_nmi(int data) | |
149 | { | |
150 | m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); | |
151 | } | |
152 | */ | |
153 | 153 | /*************************************************************************** |
154 | 154 | 6821 PIA |
155 | 155 | ***************************************************************************/ |
r241749 | r241750 | |
286 | 286 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("68") |
287 | 287 | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("69") |
288 | 288 | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("70") |
289 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME(" | |
289 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("72") | |
290 | 290 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("73") |
291 | 291 | |
292 | 292 | INPUT_PORTS_END |
r241749 | r241750 | |
376 | 376 | m_ALARMEN = (data & 1); |
377 | 377 | break; |
378 | 378 | case 2: // Enable |
379 | if ( m_NMIENABLE == 0 && ( data & 1 ) ) | |
379 | 380 | { |
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); | |
386 | 383 | } |
387 | 384 | break; |
388 | 385 | case 3: // RTS |
r241749 | r241750 | |
398 | 395 | case 6: // Srsel |
399 | 396 | // this is the ROM banking? |
400 | 397 | printf("rom bank %02x\n",data); |
401 | m_ | |
398 | m_SRSEL = (data & 1); | |
402 | 399 | break; |
403 | 400 | } |
404 | 401 | } |
r241749 | r241750 | |
413 | 410 | READ8_MEMBER(maygay1b_state::latch_st_hi) |
414 | 411 | { |
415 | 412 | m_msm6376->st_w(1); |
416 | return 0 | |
413 | return 0; | |
417 | 414 | } |
418 | 415 | |
419 | 416 | READ8_MEMBER(maygay1b_state::latch_st_lo) |
420 | 417 | { |
421 | 418 | m_msm6376->st_w(0); |
422 | return 0 | |
419 | return 0; | |
423 | 420 | } |
424 | 421 | |
425 | 422 | READ8_MEMBER(maygay1b_state::m1_meter_r) |
r241749 | r241750 | |
472 | 469 | |
473 | 470 | AM_RANGE(0x2420, 0x2421) AM_WRITE(latch_ch2_w ) // oki |
474 | 471 | |
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 | |
478 | 473 | ADDRESS_MAP_END |
479 | 474 | |
480 | /************************************************* | |
481 | * | |
482 | * NEC uPD7759 handling (used as OKI replacement) | |
483 | * | |
484 | *************************************************/ | |
485 | READ8_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 | } | |
494 | 475 | |
495 | READ8_MEMBER(maygay1b_state::nec_reset_r) | |
496 | { | |
497 | m_upd7759->reset_w(0); | |
498 | m_upd7759->reset_w(1); | |
499 | return 0xff; | |
500 | } | |
501 | ||
502 | WRITE8_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 | ||
510 | WRITE8_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 | ||
518 | static 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 | ||
561 | ADDRESS_MAP_END | |
562 | ||
563 | ||
564 | 476 | /************************************* |
565 | 477 | * |
566 | 478 | * 8279 display/keyboard driver |
r241749 | r241750 | |
618 | 530 | |
619 | 531 | // machine driver for maygay m1 board ///////////////////////////////// |
620 | 532 | |
533 | ||
534 | ||
621 | 535 | MACHINE_CONFIG_START( maygay_m1, maygay1b_state ) |
622 | 536 | |
623 | 537 | MCFG_CPU_ADD("maincpu", M6809, M1_MASTER_CLOCK/2) |
r241749 | r241750 | |
632 | 546 | MCFG_PIA_WRITEPB_HANDLER(WRITE8(maygay1b_state, m1_pia_portb_w)) |
633 | 547 | |
634 | 548 | MCFG_S16LF01_ADD("vfd",0) |
635 | MCFG_SPEAKER_STANDARD_ | |
549 | MCFG_SPEAKER_STANDARD_MONO("mono") | |
636 | 550 | MCFG_SOUND_ADD("aysnd", YM2149, M1_MASTER_CLOCK) |
637 | 551 | MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(maygay1b_state, m1_meter_w)) |
638 | 552 | 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) | |
641 | 554 | |
642 | 555 | 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) | |
645 | 556 | |
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) | |
649 | 559 | |
650 | 560 | MCFG_TIMER_DRIVER_ADD_PERIODIC("nmitimer", maygay1b_state, maygay1b_nmitimer_callback, attotime::from_hz(75)) // freq? |
651 | 561 | MCFG_DEVICE_ADD("i8279", I8279, M1_MASTER_CLOCK/4) // unknown clock |
r241749 | r241750 | |
661 | 571 | MACHINE_CONFIG_END |
662 | 572 | |
663 | 573 | |
664 | MACHINE_CONFIG_DERIVED( maygay_m1_nec, maygay_m1 ) | |
665 | MCFG_CPU_MODIFY("maincpu") | |
666 | MCFG_CPU_PROGRAM_MAP(m1_nec_memmap) | |
667 | 574 | |
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) | |
673 | MACHINE_CONFIG_END | |
674 | 575 | |
576 | ||
577 | ||
578 | ||
579 | ||
675 | 580 | WRITE8_MEMBER(maygay1b_state::m1ab_no_oki_w) |
676 | 581 | { |
677 | 582 | popmessage("write to OKI, but no OKI rom"); |
678 | 583 | } |
679 | 584 | |
680 | DRIVER_INIT_MEMBER(maygay1b_state,m1 | |
585 | DRIVER_INIT_MEMBER(maygay1b_state,m1) | |
681 | 586 | { |
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 | |
686 | 589 | |
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 | } | |
687 | 595 | // print out the rom id / header info to give us some hints |
688 | 596 | // note this isn't always correct, alley cat has 'Calpsyo' still in the ident string? |
689 | 597 | { |
r241749 | r241750 | |
710 | 618 | } |
711 | 619 | } |
712 | 620 | } |
713 | ||
714 | ||
715 | DRIVER_INIT_MEMBER(maygay1b_state,m1nec) | |
716 | { | |
717 | DRIVER_INIT_CALL(m1common); | |
718 | } | |
719 | ||
720 | DRIVER_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 | } |
r241749 | r241750 | |
---|---|---|
49 | 49 | |
50 | 50 | // uPD7759 rom? |
51 | 51 | #define m1_bargn_sound \ |
52 | ROM_REGION( 0x100000, " | |
52 | ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \ | |
53 | 53 | ROM_LOAD( "bgsnd", 0x0000, 0x020000, CRC(abe7c01d) SHA1(21caadcd149772dfd79a9d30ebc1d8da91ff36f4) ) |
54 | 54 | ROM_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 |
55 | 55 | ROM_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 |
56 | 56 | ROM_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 |
57 | 57 | ROM_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 |
58 | 58 | |
59 | GAME( 1990, m1bargn ,0 ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Bar-gain (Maygay) v7.1 (M1A/B)",GAME_FLAGS ) | |
60 | GAME( 1990, m1bargnp ,m1bargn ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Bar-gain (Maygay) v7.1 (Protocol) (M1A/B)",GAME_FLAGS ) | |
61 | GAME( 1990, m1bargnc ,m1bargn ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Casino Bar-gain (Maygay) v5.1 (M1A/B)",GAME_FLAGS ) | |
62 | GAME( 1990, m1bargncp ,m1bargn ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Casino Bar-gain (Maygay) v5.1 (Protocol)(M1A/B)",GAME_FLAGS ) | |
59 | GAME( 1990, m1bargn ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Bar-gain (Maygay) v7.1 (M1A/B)",GAME_FLAGS ) | |
60 | GAME( 1990, m1bargnp ,m1bargn ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Bar-gain (Maygay) v7.1 (Protocol) (M1A/B)",GAME_FLAGS ) | |
61 | GAME( 1990, m1bargnc ,m1bargn ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Casino Bar-gain (Maygay) v5.1 (M1A/B)",GAME_FLAGS ) | |
62 | GAME( 1990, m1bargncp ,m1bargn ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Casino Bar-gain (Maygay) v5.1 (Protocol)(M1A/B)",GAME_FLAGS ) | |
63 | 63 | |
64 | 64 | /******************************************************************************************************************************************************************************************************* |
65 | 65 | Bounty Hunter Club |
r241749 | r241750 | |
67 | 67 | |
68 | 68 | // uPD7759 rom? |
69 | 69 | #define m1_bounty_sound \ |
70 | ROM_REGION( 0x100000, " | |
70 | ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \ | |
71 | 71 | ROM_LOAD( "bgsnd", 0x0000, 0x020000, CRC(abe7c01d) SHA1(21caadcd149772dfd79a9d30ebc1d8da91ff36f4) ) |
72 | 72 | ROM_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 |
73 | 73 | ROM_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 |
74 | 74 | |
75 | GAME( 199?, m1bountc ,0 ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Bounty Hunter Club (Maygay) v1.3 (M1A/B)",GAME_FLAGS ) | |
76 | GAME( 199?, m1bountcp ,m1bountc ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Bounty Hunter Club (Maygay) v1.3 (Protocol) (M1A/B)",GAME_FLAGS ) | |
75 | GAME( 199?, m1bountc ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Bounty Hunter Club (Maygay) v1.3 (M1A/B)",GAME_FLAGS ) | |
76 | GAME( 199?, m1bountcp ,m1bountc ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Bounty Hunter Club (Maygay) v1.3 (Protocol) (M1A/B)",GAME_FLAGS ) | |
77 | 77 | |
78 | 78 | /******************************************************************************************************************************************************************************************************* |
79 | 79 | Criss Cross Club (Dutch) |
r241749 | r241750 | |
81 | 81 | |
82 | 82 | // uPD7759 rom? |
83 | 83 | #define m1_criss_sound \ |
84 | ROM_REGION( 0x100000, " | |
84 | ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \ | |
85 | 85 | ROM_LOAD( "ccsound.bin", 0x0000, 0x040000, CRC(8742981e) SHA1(1ba33c59ec5f878ebab111a77551213aad4b0993) ) |
86 | 86 | ROM_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 |
87 | 87 | |
88 | GAME( 199?, m1criss ,0 ,maygay_m1 | |
88 | GAME( 199?, m1criss ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Criss Cross Club (Maygay) (Dutch) (M1A/B)",GAME_FLAGS ) | |
89 | 89 | |
90 | 90 | /******************************************************************************************************************************************************************************************************* |
91 | 91 | Diamond Hearts |
r241749 | r241750 | |
343 | 343 | |
344 | 344 | // uPD7759 rom? |
345 | 345 | #define m1_dxmono_sound\ |
346 | ROM_REGION( 0x100000, " | |
346 | ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 )\ | |
347 | 347 | ROM_LOAD( "delmonopolysound.bin", 0x0000, 0x040000, CRC(8742981e) SHA1(1ba33c59ec5f878ebab111a77551213aad4b0993) ) |
348 | 348 | ROM_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) |
349 | 349 | ROM_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) |
r241749 | r241750 | |
366 | 366 | ROM_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 |
367 | 367 | ROM_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 |
368 | 368 | |
369 | GAME( 1992, m1dxmono ,0 ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (M1A/B)",GAME_FLAGS ) | |
370 | GAME( 1992, m1dxmonop ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Protocol) (M1A/B)",GAME_FLAGS ) | |
371 | GAME( 1992, m1dxmono12n ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (Newer) (M1A/B)",GAME_FLAGS ) | |
372 | GAME( 1992, m1dxmono31b ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (BwB set) (M1A/B)",GAME_FLAGS ) | |
373 | GAME( 1992, m1dxmono31p ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (Protocol) (M1A/B)",GAME_FLAGS ) | |
374 | GAME( 1992, m1dxmono31h ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (Hack) (M1A/B)",GAME_FLAGS ) | |
375 | GAME( 1992, m1dxmono31h2,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (Alternate Hack) (M1A/B)",GAME_FLAGS ) | |
376 | GAME( 1992, m1dxmono51 ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Older) (M1A/B)",GAME_FLAGS ) | |
377 | GAME( 1992, m1dxmono12 ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (M1A/B)",GAME_FLAGS ) | |
378 | GAME( 1992, m1dxmono12p ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (Protocol) (M1A/B)",GAME_FLAGS ) | |
379 | GAME( 1992, m1dxmono12a ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (Alternate) (M1A/B)",GAME_FLAGS ) | |
380 | GAME( 1992, m1dxmono21p ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v2.1 (Protocol) (M1A/B)",GAME_FLAGS ) | |
381 | GAME( 1992, m1dxmono11p ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Protocol) (M1A/B)",GAME_FLAGS ) | |
382 | GAME( 1992, m1dxmono11 ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (M1A/B)",GAME_FLAGS ) | |
383 | GAME( 1992, m1dxmono51o ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Older) (M1A/B) (alt?)",GAME_FLAGS ) | |
384 | GAME( 1992, m1dxmono51p ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Older) (Protocol) (M1A/B)",GAME_FLAGS ) | |
385 | GAME( 1992, m1dxmono30h ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.0 (Hack) (M1A/B)",GAME_FLAGS ) | |
386 | GAME( 1992, m1dxmono11o ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Older) (M1A/B)",GAME_FLAGS ) | |
387 | GAME( 1992, m1dxmono11m ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Code M) (M1A/B)",GAME_FLAGS ) | |
388 | GAME( 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 ) | |
369 | GAME( 1992, m1dxmono ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (M1A/B)",GAME_FLAGS ) | |
370 | GAME( 1992, m1dxmonop ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Protocol) (M1A/B)",GAME_FLAGS ) | |
371 | GAME( 1992, m1dxmono12n ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (Newer) (M1A/B)",GAME_FLAGS ) | |
372 | GAME( 1992, m1dxmono31b ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (BwB set) (M1A/B)",GAME_FLAGS ) | |
373 | GAME( 1992, m1dxmono31p ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (Protocol) (M1A/B)",GAME_FLAGS ) | |
374 | GAME( 1992, m1dxmono31h ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (Hack) (M1A/B)",GAME_FLAGS ) | |
375 | GAME( 1992, m1dxmono31h2,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (Alternate Hack) (M1A/B)",GAME_FLAGS ) | |
376 | GAME( 1992, m1dxmono51 ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Older) (M1A/B)",GAME_FLAGS ) | |
377 | GAME( 1992, m1dxmono12 ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (M1A/B)",GAME_FLAGS ) | |
378 | GAME( 1992, m1dxmono12p ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (Protocol) (M1A/B)",GAME_FLAGS ) | |
379 | GAME( 1992, m1dxmono12a ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (Alternate) (M1A/B)",GAME_FLAGS ) | |
380 | GAME( 1992, m1dxmono21p ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v2.1 (Protocol) (M1A/B)",GAME_FLAGS ) | |
381 | GAME( 1992, m1dxmono11p ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Protocol) (M1A/B)",GAME_FLAGS ) | |
382 | GAME( 1992, m1dxmono11 ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (M1A/B)",GAME_FLAGS ) | |
383 | GAME( 1992, m1dxmono51o ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Older) (M1A/B) (alt?)",GAME_FLAGS ) | |
384 | GAME( 1992, m1dxmono51p ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Older) (Protocol) (M1A/B)",GAME_FLAGS ) | |
385 | GAME( 1992, m1dxmono30h ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.0 (Hack) (M1A/B)",GAME_FLAGS ) | |
386 | GAME( 1992, m1dxmono11o ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Older) (M1A/B)",GAME_FLAGS ) | |
387 | GAME( 1992, m1dxmono11m ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Code M) (M1A/B)",GAME_FLAGS ) | |
388 | GAME( 1992, m1dxmono11mb,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Code M, Alternate) (M1A/B)",GAME_FLAGS ) | |
389 | 389 | |
390 | 390 | /******************************************************************************************************************************************************************************************************* |
391 | 391 | Cluedo |
r241749 | r241750 | |
415 | 415 | ROM_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 |
416 | 416 | ROM_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 |
417 | 417 | ROM_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 | |
418 | 419 | ROM_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 |
419 | 420 | ROM_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 | |
420 | 422 | ROM_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 |
421 | 423 | ROM_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 |
422 | 424 | |
r241749 | r241750 | |
431 | 433 | GAME( 1995, m1cluedob2 ,m1cluedo ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v2.1 (M1A/B)",GAME_FLAGS ) |
432 | 434 | GAME( 1995, m1cluedob2p ,m1cluedo ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v2.1 (Protocol) (M1A/B)",GAME_FLAGS ) |
433 | 435 | GAME( 1995, m1cluedob2h ,m1cluedo ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v2.1 (Hack?) (M1A/B)",GAME_FLAGS ) |
434 | GAME( 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 ) | |
435 | GAME( 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 ) | |
436 | 436 | GAME( 1995, m1cluedob1 ,m1cluedo ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v1.1 (M1A/B)",GAME_FLAGS ) |
437 | 437 | GAME( 1995, m1cluedob1p ,m1cluedo ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v1.1 (Protocol) (M1A/B)",GAME_FLAGS ) |
438 | 438 | GAME( 1995, m1cluedob1h ,m1cluedo ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v1.1 (Hack?) (M1A/B)",GAME_FLAGS ) |
r241749 | r241750 | |
1146 | 1146 | |
1147 | 1147 | // uPD7759 rom? |
1148 | 1148 | #define m1_mono_sound \ |
1149 | ROM_REGION( 0x100000, " | |
1149 | ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \ | |
1150 | 1150 | ROM_LOAD( "monopolysnd.bin", 0x0000, 0x020000, CRC(f93ef281) SHA1(b2c2bf361c44499a13731d494af66d2aa45ccebd) ) |
1151 | 1151 | ROM_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 |
1152 | GAME( 199?, m1mono ,0 ,maygay_m1 | |
1152 | GAME( 199?, m1mono ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 1)",GAME_FLAGS ) | |
1153 | 1153 | ROM_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 |
1154 | GAME( 199?, m1monoa ,m1mono ,maygay_m1 | |
1154 | GAME( 199?, m1monoa ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 2)",GAME_FLAGS ) | |
1155 | 1155 | ROM_START( m1monoc ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mon5p5cbin", 0x0000, 0x010000, CRC(5589d97d) SHA1(d8776200d5c85fc1946ab4a4d0f7b7fb721a08f0) ) m1_mono_sound ROM_END_M1A_MCU |
1156 | GAME( 199?, m1monoc ,m1mono ,maygay_m1 | |
1156 | GAME( 199?, m1monoc ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 4)",GAME_FLAGS ) | |
1157 | 1157 | ROM_START( m1monod ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mono10", 0x0000, 0x010000, CRC(25b617b9) SHA1(adffbae086c83c1d9342e0fdded0ec8651f4efdd) ) m1_mono_sound ROM_END_M1A_MCU |
1158 | GAME( 199?, m1monod ,m1mono ,maygay_m1 | |
1158 | GAME( 199?, m1monod ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 5)",GAME_FLAGS ) | |
1159 | 1159 | ROM_START( m1monoe ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mono10p", 0x0000, 0x010000, CRC(e7eead08) SHA1(94a512ff43487c4294afa3f280759ae86489ccbf) ) m1_mono_sound ROM_END_M1A_MCU |
1160 | GAME( 199?, m1monoe ,m1mono ,maygay_m1 | |
1160 | GAME( 199?, m1monoe ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 6)",GAME_FLAGS ) | |
1161 | 1161 | ROM_START( m1monof ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mono8", 0x0000, 0x010000, CRC(e19cf85b) SHA1(24bfa0086bda37f9ca9b5cf4cdc7d7873c305e76) ) m1_mono_sound ROM_END_M1A_MCU |
1162 | GAME( 199?, m1monof ,m1mono ,maygay_m1 | |
1162 | GAME( 199?, m1monof ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 7)",GAME_FLAGS ) | |
1163 | 1163 | ROM_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 |
1164 | GAME( 199?, m1monog ,m1mono ,maygay_m1 | |
1164 | GAME( 199?, m1monog ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 8)",GAME_FLAGS ) | |
1165 | 1165 | ROM_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 |
1166 | GAME( 199?, m1monoh ,m1mono ,maygay_m1 | |
1166 | GAME( 199?, m1monoh ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 9)",GAME_FLAGS ) | |
1167 | 1167 | ROM_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 |
1168 | GAME( 199?, m1monoi ,m1mono ,maygay_m1 | |
1168 | GAME( 199?, m1monoi ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 10)",GAME_FLAGS ) | |
1169 | 1169 | ROM_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 |
1170 | GAME( 199?, m1monok ,m1mono ,maygay_m1 | |
1170 | GAME( 199?, m1monok ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 12)",GAME_FLAGS ) | |
1171 | 1171 | ROM_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 |
1172 | GAME( 199?, m1monol ,m1mono ,maygay_m1 | |
1172 | GAME( 199?, m1monol ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 13)",GAME_FLAGS ) | |
1173 | 1173 | ROM_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 |
1174 | GAME( 199?, m1monom ,m1mono ,maygay_m1 | |
1174 | GAME( 199?, m1monom ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 14)",GAME_FLAGS ) | |
1175 | 1175 | ROM_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 |
1176 | GAME( 199?, m1monon ,m1mono ,maygay_m1 | |
1176 | GAME( 199?, m1monon ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 15)",GAME_FLAGS ) | |
1177 | 1177 | ROM_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 |
1178 | GAME( 199?, m1monoo ,m1mono ,maygay_m1 | |
1178 | GAME( 199?, m1monoo ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 16)",GAME_FLAGS ) | |
1179 | 1179 | ROM_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 |
1180 | GAME( 199?, m1monop ,m1mono ,maygay_m1 | |
1180 | GAME( 199?, m1monop ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 17)",GAME_FLAGS ) | |
1181 | 1181 | ROM_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 |
1182 | GAME( 199?, m1monoq ,m1mono ,maygay_m1 | |
1182 | GAME( 199?, m1monoq ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 18)",GAME_FLAGS ) | |
1183 | 1183 | ROM_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 |
1184 | GAME( 199?, m1monor ,m1mono ,maygay_m1 | |
1184 | GAME( 199?, m1monor ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 19)",GAME_FLAGS ) | |
1185 | 1185 | ROM_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 |
1186 | GAME( 199?, m1monos ,m1mono ,maygay_m1 | |
1186 | GAME( 199?, m1monos ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 20)",GAME_FLAGS ) | |
1187 | 1187 | ROM_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 |
1188 | GAME( 199?, m1monot ,m1mono ,maygay_m1 | |
1188 | GAME( 199?, m1monot ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 21)",GAME_FLAGS ) | |
1189 | 1189 | ROM_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 |
1190 | GAME( 199?, m1monou ,m1mono ,maygay_m1 | |
1190 | GAME( 199?, m1monou ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 22)",GAME_FLAGS ) | |
1191 | 1191 | ROM_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 |
1192 | GAME( 199?, m1monov ,m1mono ,maygay_m1 | |
1192 | GAME( 199?, m1monov ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 23)",GAME_FLAGS ) | |
1193 | 1193 | ROM_START( m1monow ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mono5p", 0x0000, 0x010000, CRC(805d33e8) SHA1(4d946ee37f8d25f0f7bb3497a538974e1bae14b1) ) m1_mono_sound ROM_END_M1A_MCU |
1194 | GAME( 199?, m1monow ,m1mono ,maygay_m1 | |
1194 | GAME( 199?, m1monow ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 24)",GAME_FLAGS ) | |
1195 | 1195 | ROM_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 |
1196 | GAME( 199?, m1monox ,m1mono ,maygay_m1 | |
1196 | GAME( 199?, m1monox ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 25)",GAME_FLAGS ) | |
1197 | 1197 | ROM_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 |
1198 | GAME( 199?, m1monoy ,m1mono ,maygay_m1 | |
1198 | GAME( 199?, m1monoy ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 26)",GAME_FLAGS ) | |
1199 | 1199 | ROM_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 |
1200 | GAME( 199?, m1monoz ,m1mono ,maygay_m1 | |
1200 | GAME( 199?, m1monoz ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 27)",GAME_FLAGS ) | |
1201 | 1201 | ROM_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 |
1202 | GAME( 199?, m1mono0 ,m1mono ,maygay_m1 | |
1202 | GAME( 199?, m1mono0 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 28)",GAME_FLAGS ) | |
1203 | 1203 | ROM_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 |
1204 | GAME( 199?, m1mono1 ,m1mono ,maygay_m1 | |
1204 | GAME( 199?, m1mono1 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 29)",GAME_FLAGS ) | |
1205 | 1205 | ROM_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 |
1206 | GAME( 199?, m1mono2 ,m1mono ,maygay_m1 | |
1206 | GAME( 199?, m1mono2 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 30)",GAME_FLAGS ) | |
1207 | 1207 | ROM_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 |
1208 | GAME( 199?, m1mono3 ,m1mono ,maygay_m1 | |
1208 | GAME( 199?, m1mono3 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 31)",GAME_FLAGS ) | |
1209 | 1209 | ROM_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 |
1210 | GAME( 199?, m1mono4 ,m1mono ,maygay_m1 | |
1210 | GAME( 199?, m1mono4 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 32)",GAME_FLAGS ) | |
1211 | 1211 | ROM_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 |
1212 | GAME( 199?, m1mono5 ,m1mono ,maygay_m1 | |
1212 | GAME( 199?, m1mono5 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 33)",GAME_FLAGS ) | |
1213 | 1213 | ROM_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 |
1214 | GAME( 199?, m1mono6 ,m1mono ,maygay_m1 | |
1214 | GAME( 199?, m1mono6 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 34)",GAME_FLAGS ) | |
1215 | 1215 | ROM_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 |
1216 | GAME( 199?, m1mono7 ,m1mono ,maygay_m1 | |
1216 | GAME( 199?, m1mono7 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 35)",GAME_FLAGS ) | |
1217 | 1217 | ROM_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 |
1218 | GAME( 199?, m1mono8 ,m1mono ,maygay_m1 | |
1218 | GAME( 199?, m1mono8 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 36)",GAME_FLAGS ) | |
1219 | 1219 | ROM_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 |
1220 | GAME( 199?, m1mono9 ,m1mono ,maygay_m1 | |
1220 | GAME( 199?, m1mono9 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 37)",GAME_FLAGS ) | |
1221 | 1221 | ROM_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 |
1222 | GAME( 199?, m1monoaa ,m1mono ,maygay_m1 | |
1222 | GAME( 199?, m1monoaa ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 38)",GAME_FLAGS ) | |
1223 | 1223 | |
1224 | 1224 | /******************************************************************************************************************************************************************************************************* |
1225 | 1225 | Gladiators |
r241749 | r241750 | |
1518 | 1518 | |
1519 | 1519 | // uPD7759 rom? |
1520 | 1520 | #define m1_pinkp_sound \ |
1521 | ROM_REGION( 0x100000, " | |
1521 | ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \ | |
1522 | 1522 | ROM_LOAD("digi16.bin", 0x0000, 0x040000, CRC(ee8bc3ea) SHA1(b58fad236055db30a75bb12946e8ad76638865a0) ) |
1523 | 1523 | ROM_START( m1pinkp ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pink2010", 0x0000, 0x010000, CRC(a098952f) SHA1(d62351d16aa6f34b20774dd6f38ffdada09b49be) ) m1_pinkp_sound ROM_END_M1A_MCU |
1524 | GAME( 199?, m1pinkp ,0 ,maygay_m1 | |
1524 | GAME( 199?, m1pinkp ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 1)",GAME_FLAGS ) | |
1525 | 1525 | ROM_START( m1pinkpa ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pink58c", 0x0000, 0x010000, CRC(fb0ee333) SHA1(3af5362486de70971f606dd914f8e658015dcf82) ) m1_pinkp_sound ROM_END_M1A_MCU |
1526 | GAME( 199?, m1pinkpa ,m1pinkp ,maygay_m1 | |
1526 | GAME( 199?, m1pinkpa ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 2)",GAME_FLAGS ) | |
1527 | 1527 | ROM_START( m1pinkpb ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pink5p5bin", 0x0000, 0x010000, CRC(97f6cda4) SHA1(338362a2dc0538feea08c98c27af2aec1ec46c08) ) m1_pinkp_sound ROM_END_M1A_MCU |
1528 | GAME( 199?, m1pinkpb ,m1pinkp ,maygay_m1 | |
1528 | GAME( 199?, m1pinkpb ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 3)",GAME_FLAGS ) | |
1529 | 1529 | ROM_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 |
1530 | GAME( 199?, m1pinkpc ,m1pinkp ,maygay_m1 | |
1530 | GAME( 199?, m1pinkpc ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 4)",GAME_FLAGS ) | |
1531 | 1531 | ROM_START( m1pinkpd ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pinkp206", 0x0000, 0x010000, CRC(baf9dbe2) SHA1(5293294abd0713aff969012d818dd6e8b637b74a) ) m1_pinkp_sound ROM_END_M1A_MCU |
1532 | GAME( 199?, m1pinkpd ,m1pinkp ,maygay_m1 | |
1532 | GAME( 199?, m1pinkpd ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 5)",GAME_FLAGS ) | |
1533 | 1533 | ROM_START( m1pinkpe ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pinkp8s", 0x0000, 0x010000, CRC(aaf4c565) SHA1(e2d04852e3700b3d19e5245aec2ce57725c728cb) ) m1_pinkp_sound ROM_END_M1A_MCU |
1534 | GAME( 199?, m1pinkpe ,m1pinkp ,maygay_m1 | |
1534 | GAME( 199?, m1pinkpe ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 6)",GAME_FLAGS ) | |
1535 | 1535 | ROM_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 |
1536 | GAME( 199?, m1pinkpf ,m1pinkp ,maygay_m1 | |
1536 | GAME( 199?, m1pinkpf ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 7)",GAME_FLAGS ) | |
1537 | 1537 | ROM_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 |
1538 | GAME( 199?, m1pinkpg ,m1pinkp ,maygay_m1 | |
1538 | GAME( 199?, m1pinkpg ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 8)",GAME_FLAGS ) | |
1539 | 1539 | ROM_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 |
1540 | GAME( 199?, m1pinkph ,m1pinkp ,maygay_m1 | |
1540 | GAME( 199?, m1pinkph ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 9)",GAME_FLAGS ) | |
1541 | 1541 | ROM_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 |
1542 | GAME( 199?, m1pinkpi ,m1pinkp ,maygay_m1 | |
1542 | GAME( 199?, m1pinkpi ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 10)",GAME_FLAGS ) | |
1543 | 1543 | ROM_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 |
1544 | GAME( 199?, m1pinkpj ,m1pinkp ,maygay_m1 | |
1544 | GAME( 199?, m1pinkpj ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 11)",GAME_FLAGS ) | |
1545 | 1545 | ROM_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 |
1546 | GAME( 199?, m1pinkpk ,m1pinkp ,maygay_m1 | |
1546 | GAME( 199?, m1pinkpk ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 12)",GAME_FLAGS ) | |
1547 | 1547 | ROM_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 |
1548 | GAME( 199?, m1pinkpl ,m1pinkp ,maygay_m1 | |
1548 | GAME( 199?, m1pinkpl ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 13)",GAME_FLAGS ) | |
1549 | 1549 | ROM_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 |
1550 | GAME( 199?, m1pinkpm ,m1pinkp ,maygay_m1 | |
1550 | GAME( 199?, m1pinkpm ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 14)",GAME_FLAGS ) | |
1551 | 1551 | ROM_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 |
1552 | GAME( 199?, m1pinkpn ,m1pinkp ,maygay_m1 | |
1552 | GAME( 199?, m1pinkpn ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 15)",GAME_FLAGS ) | |
1553 | 1553 | ROM_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 |
1554 | GAME( 199?, m1pinkpo ,m1pinkp ,maygay_m1 | |
1554 | GAME( 199?, m1pinkpo ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 16)",GAME_FLAGS ) | |
1555 | 1555 | ROM_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 |
1556 | GAME( 199?, m1pinkpp ,m1pinkp ,maygay_m1 | |
1556 | GAME( 199?, m1pinkpp ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 17)",GAME_FLAGS ) | |
1557 | 1557 | ROM_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 |
1558 | GAME( 199?, m1pinkpq ,m1pinkp ,maygay_m1 | |
1558 | GAME( 199?, m1pinkpq ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 18)",GAME_FLAGS ) | |
1559 | 1559 | ROM_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 |
1560 | GAME( 199?, m1pinkpr ,m1pinkp ,maygay_m1 | |
1560 | GAME( 199?, m1pinkpr ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 19)",GAME_FLAGS ) | |
1561 | 1561 | |
1562 | 1562 | /******************************************************************************************************************************************************************************************************* |
1563 | 1563 | Nudge Banker |
r241749 | r241750 | |
2353 | 2353 | |
2354 | 2354 | // uPD7759 rom? |
2355 | 2355 | #define m1_monodt_sound \ |
2356 | ROM_REGION( 0x100000, " | |
2356 | ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \ | |
2357 | 2357 | ROM_LOAD( "monopolysnddutch.bin", 0x0000, 0x040000, CRC(8742981e) SHA1(1ba33c59ec5f878ebab111a77551213aad4b0993) ) |
2358 | 2358 | ROM_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 |
2359 | GAME( 199?, m1monodt ,0 ,maygay_m1 | |
2359 | GAME( 199?, m1monodt ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Dutch) (Maygay) (M1A/B)",GAME_FLAGS ) | |
2360 | 2360 | |
2361 | 2361 | /******************************************************************************************************************************************************************************************************* |
2362 | 2362 | Pink Panther (Dutch) |
r241749 | r241750 | |
2364 | 2364 | |
2365 | 2365 | // uPD7759 rom? |
2366 | 2366 | #define m1_ppdt_sound \ |
2367 | ROM_REGION( 0x100000, " | |
2367 | ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \ | |
2368 | 2368 | ROM_LOAD( "ppsound.bin", 0x0000, 0x040000, CRC(8742981e) SHA1(1ba33c59ec5f878ebab111a77551213aad4b0993) ) |
2369 | 2369 | ROM_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 |
2370 | GAME( 199?, m1ppdt ,0 ,maygay_m1 | |
2370 | GAME( 199?, m1ppdt ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (German) (Maygay) (M1A/B)",GAME_FLAGS ) | |
2371 | 2371 | |
2372 | 2372 | /******************************************************************************************************************************************************************************************************* |
2373 | 2373 | Supernova |
r241749 | r241750 | |
2375 | 2375 | |
2376 | 2376 | // uPD7759 rom? |
2377 | 2377 | #define m1_sprnov_sound \ |
2378 | ROM_REGION( 0x100000, " | |
2378 | ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \ | |
2379 | 2379 | ROM_LOAD( "supernovasnd.bin", 0x0000, 0x020000, CRC(f91e2c05) SHA1(e189c14214f4637d6a803893d79a41ad0fc8ebba) ) |
2380 | 2380 | ROM_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 |
2381 | GAME( 199?, m1sprnov ,0 ,maygay_m1 | |
2381 | GAME( 199?, m1sprnov ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Super Nova (Dutch) (Maygay) (M1A/B)",GAME_FLAGS ) | |
2382 | 2382 | |
2383 | 2383 | /******************************************************************************************************************************************************************************************************* |
2384 | 2384 | Take Note |
r241749 | r241750 | |
2560 | 2560 | |
2561 | 2561 | // uPD7759 rom? |
2562 | 2562 | #define m1_mongam_sound \ |
2563 | ROM_REGION( 0x100000, " | |
2563 | ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \ | |
2564 | 2564 | ROM_LOAD( "mgamesnd", 0x0000, 0x040000, CRC(80ea7b3d) SHA1(a26dbc55ba205fc94c9b224c549516ba149627d7) ) |
2565 | 2565 | ROM_START( m1mongam ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mgame200", 0x0000, 0x010000, CRC(4cfe0ef2) SHA1(8dae7d1fdb6481902bcc38f3f993b55c7acc919b) ) m1_mongam_sound ROM_END_M1A_MCU |
2566 | GAME( 199?, m1mongam ,0 ,maygay_m1 | |
2566 | GAME( 199?, m1mongam ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 1)",GAME_FLAGS ) | |
2567 | 2567 | ROM_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 |
2568 | GAME( 199?, m1mongama ,m1mongam ,maygay_m1 | |
2568 | GAME( 199?, m1mongama ,m1mongam ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 2)",GAME_FLAGS ) | |
2569 | 2569 | ROM_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 |
2570 | GAME( 199?, m1mongamb ,m1mongam ,maygay_m1 | |
2570 | GAME( 199?, m1mongamb ,m1mongam ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 3)",GAME_FLAGS ) | |
2571 | 2571 | |
2572 | 2572 | /******************************************************************************************************************************************************************************************************* |
2573 | 2573 | Monopoly Classic |
r241749 | r241750 | |
2575 | 2575 | |
2576 | 2576 | // uPD7759 rom? |
2577 | 2577 | #define m1_moncls_sound \ |
2578 | ROM_REGION( 0x100000, " | |
2578 | ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \ | |
2579 | 2579 | ROM_LOAD( "classicmonopoly(maygay)soundromdig1-027.bin", 0x0000, 0x040000, CRC(d5243b51) SHA1(c7e3a61071c566e8ea9c8842839b70242ca67308) ) |
2580 | 2580 | ROM_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 |
2581 | GAME( 199?, m1moncls ,0 ,maygay_m1 | |
2581 | GAME( 199?, m1moncls ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 1)",GAME_FLAGS ) | |
2582 | 2582 | ROM_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 |
2583 | GAME( 199?, m1monclsa ,m1moncls ,maygay_m1 | |
2583 | GAME( 199?, m1monclsa ,m1moncls ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 2)",GAME_FLAGS ) | |
2584 | 2584 | ROM_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 |
2585 | GAME( 199?, m1monclsb ,m1moncls ,maygay_m1 | |
2585 | GAME( 199?, m1monclsb ,m1moncls ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 3)",GAME_FLAGS ) | |
2586 | 2586 | ROM_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 |
2587 | GAME( 199?, m1monclsc ,m1moncls ,maygay_m1 | |
2587 | GAME( 199?, m1monclsc ,m1moncls ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 4)",GAME_FLAGS ) | |
2588 | 2588 | ROM_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 |
2589 | GAME( 199?, m1monclsd ,m1moncls ,maygay_m1 | |
2589 | GAME( 199?, m1monclsd ,m1moncls ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 5)",GAME_FLAGS ) | |
2590 | 2590 | |
2591 | 2591 | /******************************************************************************************************************************************************************************************************* |
2592 | 2592 | Return Of The Pink Panther |
r241749 | r241750 | |
2594 | 2594 | |
2595 | 2595 | // uPD7759 rom? |
2596 | 2596 | #define m1_retpp_sound \ |
2597 | ROM_REGION( 0x100000, " | |
2597 | ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \ | |
2598 | 2598 | /* ROM_LOAD( "rotppsnd.bin", 0x0000, 0x002000, CRC(a8c8ff9a) SHA1(8069cf08f3a8481ebc589ad0c25887ea316facd5) ) */ /* bad dump of rom below */ \ |
2599 | 2599 | ROM_LOAD( "roppsnd.bin", 0x0000, 0x040000, CRC(9f3484b3) SHA1(9d454644c967b22cf6583335807a0ed8495492cb) ) |
2600 | 2600 | ROM_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 |
2601 | GAME( 199?, m1retpp ,0 ,maygay_m1 | |
2601 | GAME( 199?, m1retpp ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 1)",GAME_FLAGS ) | |
2602 | 2602 | ROM_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 |
2603 | GAME( 199?, m1retppa ,m1retpp ,maygay_m1 | |
2603 | GAME( 199?, m1retppa ,m1retpp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 2)",GAME_FLAGS ) | |
2604 | 2604 | ROM_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 |
2605 | GAME( 199?, m1retppb ,m1retpp ,maygay_m1 | |
2605 | GAME( 199?, m1retppb ,m1retpp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 3)",GAME_FLAGS ) | |
2606 | 2606 | ROM_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 |
2607 | GAME( 199?, m1retppc ,m1retpp ,maygay_m1 | |
2607 | GAME( 199?, m1retppc ,m1retpp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 4)",GAME_FLAGS ) | |
2608 | 2608 | ROM_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 |
2609 | GAME( 199?, m1retppd ,m1retpp ,maygay_m1 | |
2609 | GAME( 199?, m1retppd ,m1retpp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 5)",GAME_FLAGS ) | |
2610 | 2610 | |
2611 | 2611 | /******************************************************************************************************************************************************************************************************* |
2612 | 2612 | That's Life |
r241749 | r241750 | |
2614 | 2614 | |
2615 | 2615 | // uPD7759 rom? |
2616 | 2616 | #define m1_thatlf_sound \ |
2617 | ROM_REGION( 0x100000, " | |
2617 | ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \ | |
2618 | 2618 | ROM_LOAD( "thatslifesound", 0x0000, 0x040000, CRC(5ac3a1f6) SHA1(5be73deb23d58fdc27dd41d210702b627e7ed324) ) |
2619 | 2619 | ROM_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 |
2620 | GAME( 199?, m1thatlf ,0 ,maygay_m1 | |
2620 | GAME( 199?, m1thatlf ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 1)",GAME_FLAGS ) | |
2621 | 2621 | ROM_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 |
2622 | GAME( 199?, m1thatlfa ,m1thatlf ,maygay_m1 | |
2622 | GAME( 199?, m1thatlfa ,m1thatlf ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 2)",GAME_FLAGS ) | |
2623 | 2623 | ROM_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 |
2624 | GAME( 199?, m1thatlfb ,m1thatlf ,maygay_m1 | |
2624 | GAME( 199?, m1thatlfb ,m1thatlf ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 3)",GAME_FLAGS ) | |
2625 | 2625 | ROM_START( m1thatlfc ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("thatslifegame", 0x0000, 0x010000, CRC(8dafbe30) SHA1(9a7e8a66b73ddf6564a34363342a8b7290e0dc4f) ) m1_thatlf_sound ROM_END_M1A_MCU |
2626 | GAME( 199?, m1thatlfc ,m1thatlf ,maygay_m1 | |
2626 | GAME( 199?, m1thatlfc ,m1thatlf ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 4)",GAME_FLAGS ) | |
2627 | 2627 | ROM_START( m1thatlfd ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("thtslf5p", 0x0000, 0x010000, CRC(31507a65) SHA1(607b16cf3fde90f97e22247158f09d859a43c1ae) ) m1_thatlf_sound ROM_END_M1A_MCU |
2628 | GAME( 199?, m1thatlfd ,m1thatlf ,maygay_m1 | |
2628 | GAME( 199?, m1thatlfd ,m1thatlf ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 5)",GAME_FLAGS ) | |
2629 | 2629 | |
2630 | 2630 | /******************************************************************************************************************************************************************************************************* |
2631 | 2631 | Big Ghoulies |
r241749 | r241750 | |
2811 | 2811 | |
2812 | 2812 | // uPD7759 rom? |
2813 | 2813 | #define m1_startr_sound \ |
2814 | ROM_REGION( 0x100000, " | |
2814 | ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \ | |
2815 | 2815 | ROM_LOAD( "mdmstartrekkingsound.rom", 0x0000, 0x040000, CRC(4b673184) SHA1(dd90719ebc8644b4aa50091dc9ddd79f5d0f3395) ) |
2816 | 2816 | ROM_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 |
2817 | GAME( 199?, m1startr ,0 ,maygay_m1 | |
2817 | GAME( 199?, m1startr ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 1)",GAME_FLAGS ) | |
2818 | 2818 | ROM_START( m1startra ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("st58dt", 0x0000, 0x010000, CRC(29b73d2d) SHA1(f4bfcce7b8f158e8ec964936c365a2c6f27f7945) ) m1_startr_sound ROM_END_M1A_MCU |
2819 | GAME( 199?, m1startra ,m1startr ,maygay_m1 | |
2819 | GAME( 199?, m1startra ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 2)",GAME_FLAGS ) | |
2820 | 2820 | ROM_START( m1startrb ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("st58st", 0x0000, 0x010000, CRC(b4b4c3f3) SHA1(7179d970c0e903ae3b4ba925fba29b9777bf969d) ) m1_startr_sound ROM_END_M1A_MCU |
2821 | GAME( 199?, m1startrb ,m1startr ,maygay_m1 | |
2821 | GAME( 199?, m1startrb ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 3)",GAME_FLAGS ) | |
2822 | 2822 | ROM_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 |
2823 | GAME( 199?, m1startrc ,m1startr ,maygay_m1 | |
2823 | GAME( 199?, m1startrc ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 4)",GAME_FLAGS ) | |
2824 | 2824 | ROM_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 |
2825 | GAME( 199?, m1startrd ,m1startr ,maygay_m1 | |
2825 | GAME( 199?, m1startrd ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 5)",GAME_FLAGS ) | |
2826 | 2826 | ROM_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 |
2827 | GAME( 199?, m1startre ,m1startr ,maygay_m1 | |
2827 | GAME( 199?, m1startre ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 6)",GAME_FLAGS ) | |
2828 | 2828 | ROM_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 |
2829 | GAME( 199?, m1startrf ,m1startr ,maygay_m1 | |
2829 | GAME( 199?, m1startrf ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 7)",GAME_FLAGS ) | |
2830 | 2830 | ROM_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 |
2831 | GAME( 199?, m1startrg ,m1startr ,maygay_m1 | |
2831 | GAME( 199?, m1startrg ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 8)",GAME_FLAGS ) | |
2832 | 2832 | ROM_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 |
2833 | GAME( 199?, m1startrh ,m1startr ,maygay_m1 | |
2833 | GAME( 199?, m1startrh ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 9)",GAME_FLAGS ) | |
2834 | 2834 | ROM_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 |
2835 | GAME( 199?, m1startri ,m1startr ,maygay_m1 | |
2835 | GAME( 199?, m1startri ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 10)",GAME_FLAGS ) | |
2836 | 2836 | ROM_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 |
2837 | GAME( 199?, m1startrj ,m1startr ,maygay_m1 | |
2837 | GAME( 199?, m1startrj ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 11)",GAME_FLAGS ) | |
2838 | 2838 | ROM_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 |
2839 | GAME( 199?, m1startrk ,m1startr ,maygay_m1 | |
2839 | GAME( 199?, m1startrk ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 12)",GAME_FLAGS ) | |
2840 | 2840 | ROM_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 |
2841 | GAME( 199?, m1startrm ,m1startr ,maygay_m1 | |
2841 | GAME( 199?, m1startrm ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 14)",GAME_FLAGS ) | |
2842 | 2842 | ROM_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 |
2843 | GAME( 199?, m1startrn ,m1startr ,maygay_m1 | |
2843 | GAME( 199?, m1startrn ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 15)",GAME_FLAGS ) | |
2844 | 2844 | ROM_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 |
2845 | GAME( 199?, m1startro ,m1startr ,maygay_m1 | |
2845 | GAME( 199?, m1startro ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 16)",GAME_FLAGS ) | |
2846 | 2846 | ROM_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 |
2847 | GAME( 199?, m1startrp ,m1startr ,maygay_m1 | |
2847 | GAME( 199?, m1startrp ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 17)",GAME_FLAGS ) | |
2848 | 2848 | ROM_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 |
2849 | GAME( 199?, m1startrq ,m1startr ,maygay_m1 | |
2849 | GAME( 199?, m1startrq ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 18)",GAME_FLAGS ) | |
2850 | 2850 | ROM_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 |
2851 | GAME( 199?, m1startrr ,m1startr ,maygay_m1 | |
2851 | GAME( 199?, m1startrr ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 19)",GAME_FLAGS ) | |
2852 | 2852 | |
2853 | 2853 | /******************************************************************************************************************************************************************************************************* |
2854 | 2854 | Tick Tock Cash |
r241749 | r241750 | |
---|---|---|
66 | 66 | |
67 | 67 | #include "emu.h" |
68 | 68 | #include "cpu/i386/i386.h" |
69 | #include "machine/ | |
69 | #include "machine/pci.h" | |
70 | 70 | #include "machine/pcshare.h" |
71 | 71 | #include "machine/pckeybrd.h" |
72 | 72 | #include "machine/idectrl.h" |
r241749 | r241750 | |
---|---|---|
24 | 24 | |
25 | 25 | #include "emu.h" |
26 | 26 | #include "cpu/i386/i386.h" |
27 | #include "machine/ | |
27 | #include "machine/pci.h" | |
28 | 28 | #include "machine/pcshare.h" |
29 | 29 | #include "machine/pckeybrd.h" |
30 | 30 | #include "machine/idectrl.h" |
r241749 | r241750 | |
---|---|---|
2501 | 2501 | |
2502 | 2502 | GAME(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..) |
2503 | 2503 | GAME(199?, m4reeltm ,0 ,mod4oki ,mpu4 , mpu4_state,m4altreels ,ROT0, "Barcrest","Reel Timer (Barcrest) (MPU4) (DWT)",GAME_FLAGS ) // SAMPLE EEPROM ALARM |
2504 | GAME(199?, m4fortcb ,0 ,mod4oki ,mpu4 , mpu4_state,m4altreels ,ROT0, "Barcrest","Fortune Club (Barcrest) (MPU4) (set 1)",GAME_FLAGS ) // INVALID ALARM | |
2505 | GAME(199?, m4fortcba,m4fortcb ,mod4oki ,mpu4 , mpu4_state,m4altreels ,ROT0, "Barcrest","Fortune Club (Barcrest) (MPU4) (set 2)",GAME_FLAGS ) // INVALID ALARM | |
2506 | GAME(199?, m4fortcbb,m4fortcb ,mod4oki ,mpu4 , mpu4_state,m4altreels ,ROT0, "Barcrest","Fortune Club (Barcrest) (MPU4) (set 3)",GAME_FLAGS ) // INVALID ALARM | |
2504 | GAME(199?, m4fortcb ,0 ,mod4oki ,mpu4 , mpu4_state,m4altreels ,ROT0, "Barcrest","Fortune Club (Barcrest) (MPU4) (set 1)",GAME_FLAGS ) // INVALID ALARM | |
2505 | GAME(199?, m4fortcba ,m4fortcb ,mod4oki ,mpu4 , mpu4_state,m4altreels ,ROT0, "Barcrest","Fortune Club (Barcrest) (MPU4) (set 2)",GAME_FLAGS ) // INVALID ALARM | |
2506 | GAME(199?, m4fortcbb ,m4fortcb ,mod4oki ,mpu4 , mpu4_state,m4altreels ,ROT0, "Barcrest","Fortune Club (Barcrest) (MPU4) (set 3)",GAME_FLAGS ) // INVALID ALARM | |
2507 | 2507 | |
2508 | 2508 | |
2509 | 2509 |
r241749 | r241750 | |
---|---|---|
207 | 207 | There are 6 known types of carts manufactured by Sega: 171-7885A, 171-7919A, 171-7930B, 171-7978B, 171-8132B, 171-8346C |
208 | 208 | There are also 2 types of carts manufactured by Namco: MASK-B, MASK-C |
209 | 209 | |
210 | 837-1 | |
210 | 837-14124 171-7885A (C) Sega 1998 | |
211 | 211 | |------------------------------------------------------------| |
212 | 212 | | ----CN2---- -| |
213 | 213 | | JJ | |
r241749 | r241750 | |
254 | 254 | Sticker EPROM MASKROMs X76F100 EPM7064S FPGA |
255 | 255 | Game on cart IC22# # of SOP56 IC37# IC41# IC42# Notes |
256 | 256 | ------------------------------------------------------------------------------------------------------------------------- |
257 | Club Kart European Session (2003, prototype) * 21 (64Mb) present present not present *instead of EPROM have tiny PCB with 2 flashroms on it | |
258 | Crackin' DJ part 2 840-0068C 23674 20 (64Mb) present present 317-0311-COM PCB have label 840-0068B-01 837-14124 | |
259 | House of the Dead 2 (prototype) A1E2 21 (64Mb) present present present, no label | |
257 | Crackin' DJ part 2 840-0068C 23674 20 (64Mb) present present 317-0311-COM | |
260 | 258 | Inu No Osanpo / Dog Walking (Rev A) 840-0073C 22294A 16 (64Mb) present present 317-0316-JPN |
261 | Samba de Amigo (prototype) * 21 (64Mb) present present 317-0270-COM *instead of EPROM have tiny PCB with 2 flashroms on it | |
262 | 259 | Soul Surfer (Rev A) 840-0095C 23838C 21 (64Mb) present present not present todo: verify if it's Rev A or Rev C |
263 | 260 | Star Horse (server) 840-0055C 23626 17 (64Mb) present present not present |
264 | 261 | The King of Route 66 (Rev A) 840-0087C 23819A 20 (64Mb) present present not present |
265 | Virtua NBA (prototype) * 21 (64Mb) present present 317-0271-COM *instead of EPROM have tiny PCB with 2 flashroms on it | |
266 | 262 | |
267 | 263 | |
268 | 264 | |
r241749 | r241750 | |
295 | 291 | CN1/2/3 - connectors joining to main board |
296 | 292 | |
297 | 293 | Games known to use this PCB include.... |
298 | Sticker EPROM MASKROMs X76F100 XC9536 315-5881 | |
299 | Game on cart IC22# # of SOP44 IC37# IC41# IC42# Notes | |
294 | Sticker EPROM MASKROMs X76F100 XC9536 315-5881 | |
295 | Game on cart IC22# # of SOP44 IC37# IC41# IC42# Notes | |
300 | 296 | ------------------------------------------------------------------------------------------------------------------------- |
301 | 18 Wheeler (Deluxe) (Rev A) 840-0023C 22185A 20 (64Mb) present 315-6213 317-0273-COM | |
302 | 18 Wheeler (Standard) 840-0036C 23298 20 (64Mb) present 315-6213 317-0273-COM | |
303 | 18 Wheeler (Upright) 840-0037C 23299 20 (64Mb) present 315-6213 317-0273-COM | |
304 | Airline Pilots (Rev A) 840-0005C 21739A 11 (64Mb) present 315-6213 317-0251-COM | |
305 | Airline Pilots Deluxe (Rev B) ? 21787B 11 (64Mb) present 315-6213 317-0251-COM 2 know BIOS 21801 (USA), 21802 (EXP) | |
306 | Cosmic Smash 840-0044C 23428 8 (64Mb) ? 315-6213 317-0289-COM joystick + 2 buttons | |
307 | Cosmic Smash (Rev A) 840-0044C 23428A 8 (64Mb) ? 315-6213 317-0289-COM joystick + 2 buttons | |
308 | Crazy Taxi 840-0002C 21684 13 (64Mb)* none 315-6213 317-0248-COM * ic8 and ic9 are not present | |
309 | Dead Or Alive 2 841-0003C 22121 21 (64Mb) present 315-6213 317-5048-COM joystick + 3 buttons | |
310 | Dead Or Alive 2 Millennium 841-0003C DOA2 M 21 (64Mb) present 315-6213 317-5048-COM joystick + 3 buttons | |
311 | Death Crimson OX 841-0016C 23524 10 (64Mb) present 315-6213 317-5066-COM | |
312 | Dengen Tenshi Taisen Janshi Shangri-La 841-0004C 22060 12 (64Mb) ? 315-6213 317-5050-JPN | |
313 | Derby Owners Club (Rev B) 840-0016C 22099B 14 (64Mb) ? 315-6213 317-0262-JPN touch panel + 2 buttons + card reader | |
314 | Derby Owners Club 2000 Ver.2 (Rev A) 840-0052C 22284A 16 (64Mb) present 315-6213 not present | |
315 | Dynamite 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) | |
316 | Dynamite Baseball Naomi 840-0001C 21575 21 (64Mb) ? 315-6213 317-0246-JPN requires special panel (joystick + 2 buttons + bat controller for each player) | |
317 | Ferrari F355 Challenge 834-13842 21902 21 (64Mb) present 315-6213 317-0254-COM | |
318 | Ferrari F355 Challenge 2 Twin 840-0042C 23399 21 (64Mb) present 315-6213 317-0287-COM 2 know BIOS 22850 (USA), 22851 (EXP) | |
319 | Ferrari F355 Challenge Twin 834-13950 22848 21 (64Mb) present 315-6213 317-0267-COM 2 know BIOS 22850 (USA), 22851 (EXP) | |
320 | Giant Gram: All Japan Pro Wrestling 2 840-0007C 21820 9 (64Mb) ? 315-6213 317-0253-JPN joystick + 3 buttons | |
321 | Guilty Gear X 841-0013C 23356 14 (64Mb) ? 315-6213 317-5063-COM | |
322 | Gun Spike / Cannon Spike 841-0012C 23210 12 (64Mb) present 315-6213 317-5060-COM | |
323 | Heavy Metal Geomatrix (Rev A) HMG016007 23716A 11 (64Mb) present 315-6213 317-5071-COM joystick + 2 buttons | |
324 | House of the Dead 2 834-13636 21385 20 (64Mb) none 315-6213 not present | |
325 | Idol Janshi Suchie-Pai 3 841-0002C 21979 14 (64Mb) ? 315-6213 317-5047-JPN requires special I/O board and mahjong panel | |
326 | Jambo! Safari (Rev A) 840-0013C 22826A 8 (64Mb) ? 315-6213 317-0264-COM | |
327 | Mars TV 840-0025C 22993 15 (64Mb) present 315-6213 317-0074-JPN | |
328 | OutTrigger 840-0017C 22163 19 (64Mb) ? 315-6213 317-0266-COM requires analog controllers/special panel | |
329 | Power Stone 841-0001C 21597 8 (64Mb) present 315-6213 317-5046-COM joystick + 3 buttons | |
330 | Power Stone 2 841-0008C 23127 9 (64Mb) present 315-6213 317-5054-COM joystick + 3 buttons | |
331 | Puyo Puyo Da! 841-0006C 22206 20 (64Mb) ? ? ? | |
332 | Ring Out 4x4 840-0004C 21779 10 (64Mb) present 315-6213 317-0250-COM | |
333 | Samba de Amigo (Rev B) 840-0020C 22966B 16 (64Mb) present 315-6213 317-0270-COM will boot but requires special controller to play it | |
334 | Sega Marine Fishing 840-0027C 22221 10 (64Mb) ? 315-6213 not present ROM 3&4 not present. Requires special I/O board and fishing controller | |
335 | Sega Strike Fighter (Rev A) 840-0035C 23323A 20 (64Mb) present 315-6213 317-0281-COM | |
336 | Sega Tetris 840-0018C 22909 6 (64Mb) present 315-6213 317-0268-COM | |
337 | Slashout 840-0041C 23341 17 (64Mb) ? 315-6213 317-0286-COM joystick + 4 buttons | |
338 | Spawn In the Demon's Hand (Rev B) 841-0005C 22977B 10 (64Mb) ? 315-6213 317-5051-COM joystick + 4 buttons | |
339 | The Typing of the Dead (Rev A) 840-0026C 23021A 20 (64Mb) present 315-6213 not present | |
340 | Touch de UNO! / Unou Nouryoku Check Machine 840-0008C 22073 4 (64Mb) present 315-6213 317-0255-JPN | |
341 | Toy Fighter / Waffupu 840-0011C 22035 10 (64Mb) present 315-6212 317-0257-COM joystick + 3 buttons | |
342 | Virtua NBA 840-0021C-01 23073 21 (64Mb) present 315-6213 not present | |
343 | Virtua NBA (original) 840-0021C 22949 21 (64Mb) present 315-6213 317-0271-COM | |
344 | Virtua Striker 2 Ver. 2000 (Rev C) 840-0010C 21929C 14 (64Mb)* present 315-6213 317-0258-COM joystick + 3 buttons *(+1x 32Mb) | |
345 | Virtua Tennis / Power Smash 840-0015C 22927 11 (64Mb) present 315-6213 317-0263-COM | |
346 | Zombie Revenge 840-0003C 21707 19 (64Mb) ? 315-6213 317-0249-COM joystick + 3 buttons | |
297 | 18 Wheeler (Deluxe) (Rev A) 840-0023C 22185A 20 (64Mb) present 315-6213 317-0273-COM | |
298 | 18 Wheeler (Standard) 840-0036C 23298 20 (64Mb) present 315-6213 317-0273-COM | |
299 | 18 Wheeler (Upright) 840-0037C 23299 20 (64Mb) present 315-6213 317-0273-COM | |
300 | Airline Pilots (Rev A) 840-0005C 21739A 11 (64Mb) present 315-6213 317-0251-COM | |
301 | Airline Pilots Deluxe (Rev B) ? 21787B 11 (64Mb) present 315-6213 317-0251-COM 2 know BIOS 21801 (USA), 21802 (EXP) | |
302 | Cosmic Smash 840-0044C 23428 8 (64Mb) ? 315-6213 317-0289-COM joystick + 2 buttons | |
303 | Cosmic Smash (Rev A) 840-0044C 23428A 8 (64Mb) ? 315-6213 317-0289-COM joystick + 2 buttons | |
304 | Crazy Taxi 840-0002C 21684 13 (64Mb)* ? 315-6213 317-0248-COM * ic8 and ic9 are not present | |
305 | Dead Or Alive 2 841-0003C 22121 21 (64Mb) present 315-6213 317-5048-COM joystick + 3 buttons | |
306 | Dead Or Alive 2 Millennium 841-0003C DOA2 M 21 (64Mb) present 315-6213 317-5048-COM joystick + 3 buttons | |
307 | Death Crimson OX 841-0016C 23524 10 (64Mb) present 315-6213 317-5066-COM | |
308 | Dengen Tenshi Taisen Janshi Shangri-La 841-0004C 22060 12 (64Mb) ? 315-6213 317-5050-JPN | |
309 | Derby Owners Club (Rev B) 840-0016C 22099B 14 (64Mb) ? 315-6213 317-0262-JPN touch panel + 2 buttons + card reader | |
310 | Derby Owners Club 2000 Ver.2 (Rev A) 840-0052C 22284A 16 (64Mb) present 315-6213 not present | |
311 | Dynamite 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) | |
312 | Dynamite Baseball Naomi 840-0001C 21575 21 (64Mb) ? 315-6213 317-0246-JPN requires special panel (joystick + 2 buttons + bat controller for each player) | |
313 | Ferrari F355 Challenge 834-13842 21902 21 (64Mb) present 315-6213 317-0254-COM | |
314 | Ferrari F355 Challenge 2 Twin 840-0042C 23399 21 (64Mb) ? 315-6213 317-0287-COM 2 know BIOS 22850 (USA), 22851 (EXP) | |
315 | Ferrari F355 Challenge Twin 834-13950 22848 21 (64Mb) present 315-6213 317-0267-COM 2 know BIOS 22850 (USA), 22851 (EXP) | |
316 | Giant Gram: All Japan Pro Wrestling 2 840-0007C 21820 9 (64Mb) ? 315-6213 317-0253-JPN joystick + 3 buttons | |
317 | Guilty Gear X 841-0013C 23356 14 (64Mb) ? 315-6213 317-5063-COM | |
318 | Gun Spike / Cannon Spike 841-0012C 23210 12 (64Mb) present 315-6213 317-5060-COM | |
319 | Heavy Metal Geomatrix (Rev A) HMG016007 23716A 11 (64Mb) present 315-6213 317-5071-COM joystick + 2 buttons | |
320 | Idol Janshi Suchie-Pai 3 841-0002C 21979 14 (64Mb) ? 315-6213 317-5047-JPN requires special I/O board and mahjong panel | |
321 | Jambo! Safari (Rev A) 840-0013C 22826A 8 (64Mb) ? 315-6213 317-0264-COM | |
322 | Mars TV 840-0025C 22993 15 (64Mb) present 315-6213 317-0074-JPN | |
323 | OutTrigger 840-0017C 22163 19 (64Mb) ? 315-6213 317-0266-COM requires analog controllers/special panel | |
324 | Power Stone 841-0001C 21597 8 (64Mb) present 315-6213 317-5046-COM joystick + 3 buttons | |
325 | Power Stone 2 841-0008C 23127 9 (64Mb) present 315-6213 317-5054-COM joystick + 3 buttons | |
326 | Puyo Puyo Da! 841-0006C 22206 20 (64Mb) ? ? ? | |
327 | Ring Out 4x4 840-0004C 21779 10 (64Mb) ? ? ? | |
328 | Samba de Amigo (prototype) 840-0020C proto 16 (64Mb) ? 315-6213 317-0270-COM will boot but requires special controller to play it | |
329 | Samba de Amigo (Rev B) 840-0020C 22966B 16 (64Mb) ? 315-6213 317-0270-COM will boot but requires special controller to play it | |
330 | Sega Marine Fishing 840-0027C 22221 10 (64Mb) ? 315-6213 not present ROM 3&4 not present. Requires special I/O board and fishing controller | |
331 | Sega Strike Fighter (Rev A) 840-0035C 23323A 20 (64Mb) present 315-6213 317-0281-COM | |
332 | Sega Tetris 840-0018C 22909 6 (64Mb) present 315-6213 317-0268-COM | |
333 | Slashout 840-0041C 23341 17 (64Mb) ? 315-6213 317-0286-COM joystick + 4 buttons | |
334 | Spawn In the Demon's Hand (Rev B) 841-0005C 22977B 10 (64Mb) ? 315-6213 317-5051-COM joystick + 4 buttons | |
335 | The Typing of the Dead (Rev A) 840-0026C 23021A 20 (64Mb) present 315-6213 not present | |
336 | Touch de UNO! / Unou Nouryoku Check Machine 840-0008C 22073 4 (64Mb) present 315-6213 317-0255-JPN | |
337 | Toy Fighter / Waffupu 840-0011C 22035 10 (64Mb) present 315-6212 317-0257-COM joystick + 3 buttons | |
338 | Virtua NBA 840-0021C 23073 21 (64Mb) present 315-6213 not present | |
339 | Virtua NBA (original) 840-0021C 23073 21 (64Mb) ? 315-6213 not present | |
340 | Virtua Striker 2 Ver. 2000 (Rev C) 840-0010C 21929C 14 (64Mb)* present 315-6213 317-0258-COM joystick + 3 buttons *(+1x 32Mb) | |
341 | Virtua Tennis / Power Smash 840-0015C 22927 11 (64Mb) present 315-6213 317-0263-COM | |
342 | Zombie Revenge 840-0003C 21707 19 (64Mb) ? 315-6213 317-0249-COM joystick + 3 buttons | |
347 | 343 | |
348 | 344 | |
349 | 345 | |
r241749 | r241750 | |
498 | 494 | Capcom Vs. SNK Millennium Fight 2000 (Rev A) 841-0011C 23511A 7 (128Mb) 315-6219 present 317-5059-COM (000804) |
499 | 495 | Capcom Vs. SNK Millennium Fight 2000 (Rev C) 841-0011C 23511C 7 (128Mb) 315-6319 present 317-5059-COM (000904) |
500 | 496 | Club Kart: European Session 840-0062C 23704 11 (128Mb) 315-6319A present 317-0313-COM |
501 | Club Kart: European Session (Rev D) 840-0062C 23704D 11 (128Mb) 315-6319A present 317-0313-COM | |
502 | Club 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' | |
503 | Crackin' DJ 840-0043C 23450 10 (128Mb) 315-6319 present 317-0288-COM | |
497 | Club Kart: European Session (Rev D) 840-0062C 21473D 11 (128Mb) 315-6319A present 317-0313-COM | |
498 | Crackin' DJ 840-0043C 23450D 10 (128Mb) 315-6319 present ? | |
504 | 499 | Derby Owners Club II (Rev B) 840-0083C 22306B 11 (128Mb) 315-6319A present not present |
505 | 500 | Derby Owners Club World Edition (Rev C) 840-0088C 22336C 7 (128Mb) 315-6319A present not present |
506 | 501 | Derby Owners Club World Edition (Rev D) 840-0088C 22336D 7 (128Mb) 315-6319A present not present 2 MaskROM are different from Rev C |
r241749 | r241750 | |
509 | 504 | Moero Justice Gakuen / Project Justice (Rev A) 841-0015C 23548A 11 (128Mb) 315-6319A present 317-5065-COM |
510 | 505 | Mushiking 2K5 1ST (Ver 1.000) 840-0158C 24286 7 (128Mb) 315-6319A present not present |
511 | 506 | Oinori-daimyoujin Matsuri 840-0126B 24053 5 (128Mb) 315-6319A present not present |
512 | Samba de Amigo Ver. 2000 840-0047C 23600 1 | |
507 | Samba de Amigo Ver. 2000 840-0047C 23600 21 (64Mb) 315-6319A present 317-0295-COM | |
513 | 508 | Star Horse (big screens) 840-0054C 23625 4 (128Mb) 315-6319 present not present |
514 | 509 | Star Horse (client) 840-0056C 23627 6 (128Mb)* 315-6319 present not present * +1 (64Mb) |
515 | 510 | Star Horse Progress (Rev A) 840-0123C 24122A 7 (128Mb) 315-6319A present not present requires an additional middle board n? 837-13785 |
516 | The King of Route 66 (Rev A) 840-0087C 23819A 10 (128Mb) 315-6319A present not present | |
517 | 511 | Virtua Striker 3 (Rev B) 840-0061C 23663B 11 (128Mb) 315-6319A present 317-0310-COM |
518 | 512 | Virtua Striker 3 (Rev C) 840-0061C 23663C 11 (128Mb) 315-6319A present 317-0310-COM |
519 | 513 | Wave Runner GP 840-0064C 24059 6 (128Mb) 315-6319A present not present |
r241749 | r241750 | |
4187 | 4181 | NAOMI_BIOS |
4188 | 4182 | NAOMI_DEFAULT_EEPROM |
4189 | 4183 | |
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 | |
4203 | 4208 | |
4204 | 4209 | ROM_REGION( 4, "rom_key", 0 ) |
4205 | 4210 | ROM_LOAD( "samba2k-key.bin", 0, 4, CRC(01c0d74a) SHA1(4461cfd761919ba4bc6f1d1839a880f11eaf8d0f) ) |
r241749 | r241750 | |
6343 | 6348 | |
6344 | 6349 | ROM_REGION( 0x5800000, "rom_board", ROMREGION_ERASEFF) |
6345 | 6350 | 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 | |
6356 | 6362 | |
6357 | 6363 | ROM_REGION( 4, "rom_key", 0 ) |
6358 | 6364 | ROM_LOAD( "ringout-key.bin", 0, 4, CRC(8f8c4eb2) SHA1(9bc59c69d04d9ce876415af048f39095ed680a5e) ) |
r241749 | r241750 | |
6364 | 6370 | |
6365 | 6371 | ROM_REGION( 0x7000000, "rom_board", ROMREGION_ERASEFF) |
6366 | 6372 | 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 | |
6380 | 6387 | |
6381 | 6388 | ROM_REGION( 4, "rom_key", 0 ) |
6382 | 6389 | ROM_LOAD( "vonot-key.bin", 0, 4, CRC(021ac707) SHA1(af57844331226d3b1722aedca1a7aef024468b39) ) |
r241749 | r241750 | |
7778 | 7785 | NAOMI_DEFAULT_EEPROM |
7779 | 7786 | |
7780 | 7787 | 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) ) | |
7792 | 7809 | |
7793 | 7810 | ROM_REGION( 4, "rom_key", ROMREGION_ERASE00 ) |
7794 | 7811 | ROM_END |
r241749 | r241750 | |
7900 | 7917 | NAOMI_DEFAULT_EEPROM |
7901 | 7918 | |
7902 | 7919 | ROM_REGION( 0xb800000, "rom_board", ROMREGION_ERASEFF) |
7903 | ROM_LOAD( "epr-2 | |
7920 | ROM_LOAD( "epr-21473d.ic22",0x0000000, 0x0400000, CRC(60ac770c) SHA1(2f1688f2046e794d1c1e06912b46c1573d934608) ) | |
7904 | 7921 | ROM_LOAD( "mpr-23693.ic1", 0x0800000, 0x1000000, CRC(28995764) SHA1(a1457f9935dde2e5aaa5ef245c736c0f2f8c74b7) ) |
7905 | 7922 | ROM_LOAD( "mpr-23694.ic2", 0x1800000, 0x1000000, CRC(37d30111) SHA1(4c07df8cd548cac79d48709e61f692d762471f8f) ) |
7906 | 7923 | ROM_LOAD( "mpr-23695.ic3", 0x2800000, 0x1000000, CRC(41ac1510) SHA1(01b889b627fdfc1f12a0c84fcc36debdfb1cf377) ) |
r241749 | r241750 | |
7917 | 7934 | ROM_LOAD( "clubkrte-key.bin", 0, 4, CRC(db426a5d) SHA1(6a6a0b80ec0416605541159efea379dc19fe796d) ) |
7918 | 7935 | ROM_END |
7919 | 7936 | |
7920 | ROM_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) ) | |
7940 | ROM_END | |
7941 | ||
7942 | 7937 | ROM_START( clubkprz ) |
7943 | 7938 | NAOMI2_BIOS |
7944 | 7939 | NAOMI_DEFAULT_EEPROM |
r241749 | r241750 | |
8037 | 8032 | ROM_LOAD( "clubk2k3-key.bin", 0x000000, 0x000004, CRC(96c3b4f6) SHA1(9b85a418153c70f56aaeeb1ed0bbbbd31a1bbad7) ) |
8038 | 8033 | ROM_END |
8039 | 8034 | |
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 | |
8041 | ROM_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 | |
8037 | ROM_START( clubk2kf ) | |
8042 | 8038 | NAOMI2_BIOS |
8043 | 8039 | NAOMI_DEFAULT_EEPROM |
8044 | 8040 | |
r241749 | r241750 | |
8935 | 8931 | /* 0061 */ GAME( 2001, vstrik3cb,vstrik3c,naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart, Rev B)", GAME_FLAGS ) |
8936 | 8932 | /* 0062 */ GAME( 2001, clubkrte, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session", GAME_FLAGS ) |
8937 | 8933 | /* 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 ) | |
8939 | 8934 | /* 0080 */ GAME( 2002, vf4cart, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 (Cartridge)", GAME_FLAGS ) |
8940 | 8935 | /* 0087 */ GAME( 2002, kingrt66, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "King of Route 66 (Rev A)", GAME_FLAGS ) |
8941 | 8936 | /* 0095 */ GAME( 2002, soulsurf, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Soul Surfer (Rev A)", GAME_FLAGS ) |
r241749 | r241750 | |
8945 | 8940 | /* 0137 */ GAME( 2004, clubkpzb, naomi2, naomi2m1, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart Prize Ver. B", GAME_FLAGS ) |
8946 | 8941 | // needs verification is this dump really from 840-0139C cart |
8947 | 8942 | /* 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 ) | |
8949 | 8945 | |
8950 | 8946 | /* 841-xxxxx ("Licensed by Sega" Naomi cart games)*/ |
8951 | 8947 | /* 0001 */ GAME( 1999, pstone, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Capcom", "Power Stone (JPN, USA, EUR, ASI, AUS)", GAME_FLAGS ) |
r241749 | r241750 | |
9072 | 9068 | // 00?? Dragon Treasure |
9073 | 9069 | // 00?? Dragon Treasure 2 |
9074 | 9070 | // 00?? Get Bass 2 |
9071 | // 00?? Kodai Ouja Kyouryuu King | |
9075 | 9072 | |
9076 | 9073 | /* GDL-xxxx ("licensed by Sega" GD-ROM games) */ |
9077 | 9074 | /* 0001 */ GAME( 2001, gundmgd, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0,"Capcom / Banpresto","Mobile Suit Gundam: Federation Vs. Zeon (GDL-0001)", GAME_FLAGS ) |
r241749 | r241750 | |
9137 | 9134 | // 10015 CD - World Club Champion Football European Clubs 2004-2005 Ver.1.1 (Sega, 2005) |
9138 | 9135 | // 10015P CD - World Club Champion Football European Clubs 2004-2005 Ver.3.22 (Sega, 2005) |
9139 | 9136 | // 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) | |
9140 | 9144 | // ????? ??? - World Club Champion Football Serie A 2001-2002 (Sega, 2002) |
9141 | 9145 | // ????? ??? - World Club Champion Football Serie A 2001-2002 Ver.1.2 (Sega, 2002) |
9142 | 9146 | // ????? ??? - World Club Champion Football Serie A 2001-2002 Ver.2 (Sega, 2003) |
r241749 | r241750 | |
9145 | 9149 | // ????? ??? - World Club Champion Football European Clubs 2004-2005 Ver.1.2 (Sega, 2005) |
9146 | 9150 | // ????? ??? - World Club Champion Football European Clubs 2005-2006 bugfix (Sega, 2006) |
9147 | 9151 | |
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) | |
9153 | 9152 | |
9154 | 9153 | |
9155 | 9154 | /* Atomiswave */ |
r241749 | r241750 | |
---|---|---|
1133 | 1133 | ROM_LOAD( "nk2_09.rom", 0x0000, 0x10000, CRC(c1d2d170) SHA1(0f325815086fde90fd85360d3660042b0b68ba96) ) // 9.6c unsigned 8-bit pcm samples |
1134 | 1134 | ROM_END |
1135 | 1135 | |
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 | ||
1146 | ROM_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 | |
1174 | ROM_END | |
1175 | ||
1176 | ||
1177 | 1136 | ROM_START( mnight ) |
1178 | 1137 | ROM_REGION( 0x30000, "maincpu", 0 ) |
1179 | 1138 | ROM_LOAD( "mn6-j19.bin", 0x00000, 0x8000, CRC(56678d14) SHA1(acf3a97ca29db8ab9cad69599c5567464af3ae44) ) |
r241749 | r241750 | |
1531 | 1490 | GAME( 1987, ninjakd2, 0, ninjakd2, ninjakd2, ninjakd2_state, ninjakd2, ROT0, "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 1)", GAME_SUPPORTS_SAVE ) |
1532 | 1491 | GAME( 1987, ninjakd2a, ninjakd2, ninjakd2, ninjakd2, ninjakd2_state, bootleg, ROT0, "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 2, bootleg?)", GAME_SUPPORTS_SAVE ) |
1533 | 1492 | GAME( 1987, ninjakd2b, ninjakd2, ninjakd2, rdaction, ninjakd2_state, bootleg, ROT0, "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 3, bootleg?)", GAME_SUPPORTS_SAVE ) |
1534 | GAME( 1987, rdaction, ninjakd2, ninjakd2, rdaction, ninjakd2_state, ninjakd2, ROT0, "UPL (World Games license)", "Rad Action / NinjaKun Ashura no Shou", GAME_SUPPORTS_SAVE ) | |
1535 | GAME( 1987, jt104, ninjakd2, ninjakd2, rdaction, ninjakd2_state, bootleg, ROT0, "UPL (United Amusements license)", "JT-104 (title screen modification of Rad Action)", GAME_SUPPORTS_SAVE ) | |
1493 | GAME( 1987, rdaction, ninjakd2, ninjakd2, rdaction, ninjakd2_state, ninjakd2, ROT0, "UPL (World Games license)", "Rad Action / NinjaKun Ashura no Shou", GAME_SUPPORTS_SAVE ) | |
1536 | 1494 | GAME( 1987, mnight, 0, mnight, mnight, ninjakd2_state, mnight, ROT0, "UPL (Kawakus license)", "Mutant Night", GAME_SUPPORTS_SAVE ) |
1537 | 1495 | GAME( 1988, arkarea, 0, arkarea, arkarea, ninjakd2_state, mnight, ROT0, "UPL", "Ark Area", GAME_SUPPORTS_SAVE ) |
1538 | 1496 | GAME( 1988, robokid, 0, robokid, robokid, ninjakd2_state, robokid, ROT0, "UPL", "Atomic Robo-kid", GAME_SUPPORTS_SAVE ) |
r241749 | r241750 | |
---|---|---|
685 | 685 | m_lastvalue = -1; |
686 | 686 | |
687 | 687 | m_pc_spkrdata = 0; |
688 | m_pit_out2 = | |
688 | m_pit_out2 = 0; | |
689 | 689 | m_wss2_data = 0; |
690 | 690 | m_speaker->level_w(0); |
691 | 691 | } |
r241749 | r241750 | |
---|---|---|
10 | 10 | |
11 | 11 | --- Technical Notes --- |
12 | 12 | |
13 | Name: Player's Edge Plus (PP0516) Double Bonus Draw Poker. | |
14 | Company: IGT - International Game Technology | |
15 | Year: 1987 | |
16 | ||
13 | 17 | Hardware: |
14 | 18 | |
15 | 19 | CPU = INTEL 80C32 ; I8052 compatible |
r241749 | r241750 | |
41 | 45 | |
42 | 46 | 1) What are "set chips" ? |
43 | 47 | |
44 | They are meant to be used after you have already suc | |
48 | They are meant to be used after you have already sucessfully put a new game in your machine. | |
45 | 49 | Lets say you have 'pepp0516' installed and you go through the setup. In a real machine, |
46 | 50 | you may want to add a bill validator. The only way to do that is to un-socket the 'pepp0516' |
47 | 51 | chip and put in the 'peset038' chip and then reboot the machine. Then this chip's program |
r241749 | r241750 | |
98 | 102 | |
99 | 103 | 3a) About the "autohold" feature |
100 | 104 | |
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. | |
104 | 111 | |
105 | 112 | |
106 | 113 | Stephh's log (2007.11.28) : |
r241749 | r241750 | |
142 | 149 | XnnnnnnP Poker Data. Contains poker game + paytable percentages |
143 | 150 | Data roms will not work with every Program rom. Incompatible combos report: Incompatible Data EPROM |
144 | 151 | 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 | |
147 | 154 | 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. | |
150 | 155 | XMnnnnnP Multi-Poker Data. Contains poker games + paytable percentages: Requires specific CG graphics + CAP color prom |
151 | 156 | XKnnnnnn Spot Keno Programs. Different options for each set, but all use the same XnnnnnnK data roms |
152 | 157 | XnnnnnnK Spot Keno Data. Uses CG2120 with CAP1267 |
r241749 | r241750 | |
303 | 308 | static const UINT8 id_022[8] = { 0x00, 0x01, 0x04, 0x09, 0x13, 0x16, 0x18, 0x00 }; |
304 | 309 | static const UINT16 id_023[8] = { 0x4a6c, 0x4a7b, 0x4a4b, 0x4a5a, 0x4a2b, 0x4a0a, 0x4a19, 0x4a3a }; |
305 | 310 | |
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) | |
306 | 315 | |
316 | ||
307 | 317 | /************** |
308 | 318 | * Memory Copy * |
309 | 319 | ***************/ |
r241749 | r241750 | |
1287 | 1297 | |
1288 | 1298 | static MACHINE_CONFIG_START( peplus, peplus_state ) |
1289 | 1299 | // basic machine hardware |
1290 | MCFG_CPU_ADD("maincpu", I80C32, | |
1300 | MCFG_CPU_ADD("maincpu", I80C32, CPU_CLOCK) | |
1291 | 1301 | MCFG_CPU_PROGRAM_MAP(peplus_map) |
1292 | 1302 | MCFG_CPU_IO_MAP(peplus_iomap) |
1293 | 1303 | |
r241749 | r241750 | |
1305 | 1315 | MCFG_PALETTE_ADD("palette", 16*16*2) |
1306 | 1316 | MCFG_PALETTE_INIT_OWNER(peplus_state, peplus) |
1307 | 1317 | |
1308 | MCFG_MC6845_ADD("crtc", R6545_1, "screen", | |
1318 | MCFG_MC6845_ADD("crtc", R6545_1, "screen", MC6845_CLOCK) | |
1309 | 1319 | MCFG_MC6845_SHOW_BORDER_AREA(false) |
1310 | 1320 | MCFG_MC6845_CHAR_WIDTH(8) |
1311 | 1321 | MCFG_MC6845_ADDR_CHANGED_CB(peplus_state, crtc_addr) |
r241749 | r241750 | |
1316 | 1326 | // sound hardware |
1317 | 1327 | MCFG_SPEAKER_STANDARD_MONO("mono") |
1318 | 1328 | |
1319 | MCFG_SOUND_ADD("aysnd", AY8912, | |
1329 | MCFG_SOUND_ADD("aysnd", AY8912, SOUND_CLOCK) | |
1320 | 1330 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) |
1321 | 1331 | MACHINE_CONFIG_END |
1322 | 1332 | |
r241749 | r241750 | |
1369 | 1379 | * Rom Load * |
1370 | 1380 | *************************/ |
1371 | 1381 | |
1372 | ROM_START( peset001 ) /* Normal board : Set Chip (Set001) - | |
1382 | ROM_START( peset001 ) /* Normal board : Set Chip (Set001) - Use for PP0542 */ | |
1373 | 1383 | ROM_REGION( 0x10000, "maincpu", 0 ) |
1374 | 1384 | ROM_LOAD( "set001.u68", 0x00000, 0x10000, CRC(03397ced) SHA1(89d8ba7e6706e6d34ae9aae09a8a631fff06a36f) ) |
1375 | 1385 | |
r241749 | r241750 | |
1383 | 1393 | ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */ |
1384 | 1394 | ROM_END |
1385 | 1395 | |
1386 | ROM_START( peset0 | |
1396 | ROM_START( peset038 ) /* Normal board : Set Chip (Set038) */ | |
1387 | 1397 | 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 */ | |
1398 | ROM_END | |
1399 | ||
1400 | /* Known to exsist SET033 - PE+ Set Denomination / Enable Validator / SAS 4.0 */ | |
1401 | ||
1402 | ROM_START( peset038 ) /* Normal board : Set Chip (Set038) - PE+ Set Denomination / Enable Validator */ | |
1403 | ROM_REGION( 0x10000, "maincpu", 0 ) | |
1404 | 1398 | ROM_LOAD( "set038.u68", 0x00000, 0x10000, CRC(9c4b1d1a) SHA1(8a65cd1d8e2d74c7b66f4dfc73e7afca8458e979) ) |
1405 | 1399 | |
1406 | 1400 | ROM_REGION( 0x020000, "gfx1", 0 ) |
r241749 | r241750 | |
1413 | 1407 | ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */ |
1414 | 1408 | ROM_END |
1415 | 1409 | |
1416 | ROM_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 */ | |
1429 | ROM_END | |
1430 | ||
1431 | 1410 | ROM_START( pepk1024 ) /* Normal (non-plus) board : Aces and Faces 4 of a Kind Bonus Poker (PK1024) */ |
1432 | 1411 | /* |
1433 | 1412 | 2-10 J-A |
r241749 | r241750 | |
4618 | 4597 | ROM_LOAD( "cap656.u50", 0x0000, 0x0100, CRC(038cabc6) SHA1(c6514b4f9dbed6ab2631f563f7e00648661ebdbb) ) |
4619 | 4598 | ROM_END |
4620 | 4599 | |
4621 | ROM_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) ) | |
4633 | ROM_END | |
4634 | ||
4635 | 4600 | ROM_START( pebe0014 ) /* Normal board : Blackjack (BE0014) */ |
4636 | 4601 | /* |
4637 | 4602 | Paytable ID: BJ7 |
r241749 | r241750 | |
4678 | 4643 | ROM_LOAD( "cap707.u50", 0x0000, 0x0100, CRC(9851ba36) SHA1(5a0a43c1e212ae8c173102ede9c57a3d95752f99) ) |
4679 | 4644 | ROM_END |
4680 | 4645 | |
4681 | ROM_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) ) | |
4694 | ROM_END | |
4695 | ||
4696 | 4646 | ROM_START( peke1012 ) /* Normal board : Keno 1-10 Spot (KE1012) - Payout 90.27%, Paytable 90-P */ |
4697 | 4647 | ROM_REGION( 0x10000, "maincpu", 0 ) |
4698 | 4648 | ROM_LOAD( "ke1012_576-a3u.u68", 0x00000, 0x10000, CRC(470e8c10) SHA1(f8a65a3a73477e9e9d2f582eeefa93b470497dfa) ) /* Game Version: 576, Library Version: A3U */ |
r241749 | r241750 | |
8766 | 8716 | /* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ |
8767 | 8717 | |
8768 | 8718 | /* Set chips */ |
8769 | GAMEL(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 ) | |
8770 | GAMEL(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 ) | |
8771 | GAMEL(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 ) | |
8772 | GAMEL(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 ) | |
8719 | GAMEL(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 ) | |
8720 | GAMEL(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 ) | |
8773 | 8721 | |
8774 | 8722 | /* Normal (non-plus) board : Poker */ |
8775 | 8723 | GAMEL(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 ) |
r241749 | r241750 | |
8786 | 8734 | GAMEL(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 ) |
8787 | 8735 | GAMEL(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 ) |
8788 | 8736 | GAMEL(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 ) |
8789 | GAMEL(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 ) | |
8737 | GAMEL(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 ) | |
8790 | 8738 | GAMEL(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 ) |
8791 | 8739 | GAMEL(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 ) |
8792 | GAMEL(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 ) | |
8740 | GAMEL(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 ) | |
8793 | 8741 | GAMEL(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 ) |
8794 | 8742 | GAMEL(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 ) |
8795 | 8743 | GAMEL(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 ) |
r241749 | r241750 | |
8814 | 8762 | GAMEL(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 ) |
8815 | 8763 | GAMEL(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 ) |
8816 | 8764 | GAMEL(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 ) |
8817 | GAMEL(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 ) | |
8818 | GAMEL(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 ) | |
8819 | GAMEL(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 ) | |
8820 | GAMEL(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 ) | |
8765 | GAMEL(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 ) | |
8766 | GAMEL(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 ) | |
8767 | GAMEL(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 ) | |
8768 | GAMEL(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 ) | |
8821 | 8769 | GAMEL(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 ) |
8822 | 8770 | GAMEL(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 ) |
8823 | 8771 | GAMEL(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 ) |
r241749 | r241750 | |
8842 | 8790 | GAMEL(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 ) |
8843 | 8791 | GAMEL(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 ) |
8844 | 8792 | GAMEL(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 ) |
8845 | GAMEL(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 ) | |
8846 | GAMEL(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 ) | |
8793 | GAMEL(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 ) | |
8794 | GAMEL(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 ) | |
8847 | 8795 | GAMEL(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 ) |
8848 | 8796 | GAMEL(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 ) |
8849 | 8797 | GAMEL(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 ) |
r241749 | r241750 | |
8870 | 8818 | GAMEL(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 ) |
8871 | 8819 | GAMEL(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 ) |
8872 | 8820 | GAMEL(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 ) |
8873 | GAMEL(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 ) | |
8821 | GAMEL(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 ) | |
8874 | 8822 | GAMEL(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 ) |
8875 | 8823 | GAMEL(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 ) |
8876 | 8824 | GAMEL(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 ) |
r241749 | r241750 | |
8902 | 8850 | GAMEL(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 ) |
8903 | 8851 | GAMEL(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 ) |
8904 | 8852 | GAMEL(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 ) |
8905 | GAMEL(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 ) | |
8853 | GAMEL(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 ) | |
8906 | 8854 | GAMEL(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 ) |
8907 | 8855 | GAMEL(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 ) |
8908 | 8856 | GAMEL(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 ) |
r241749 | r241750 | |
8920 | 8868 | GAMEL(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 ) |
8921 | 8869 | GAMEL(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 ) |
8922 | 8870 | |
8923 | /* Normal board : Multi-Game - Player's Choice - Some sets require a printer (not yet supported) */ | |
8924 | GAMEL(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 | ||
8926 | 8871 | /* Normal board : Blackjack */ |
8927 | GAMEL(1994, pebe0014, | |
8872 | GAMEL(1994, pebe0014, 0, peplus, peplus_bjack, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (BE0014) Blackjack", 0, layout_pe_bjack ) | |
8928 | 8873 | |
8929 | 8874 | /* Normal board : Keno */ |
8930 | GAMEL(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 ) | |
8931 | GAMEL(1994, peke1012, 0, peplus, peplus_keno, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE1012) Keno", 0, layout_pe_keno ) | |
8932 | GAMEL(1994, peke1013, peke1012, peplus, peplus_keno, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE1013) Keno", 0, layout_pe_keno ) | |
8875 | GAMEL(1994, peke1012, 0, peplus, peplus_keno, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE1012) Keno", 0, layout_pe_keno ) | |
8876 | GAMEL(1994, peke1013, peke1012, peplus, peplus_keno, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE1013) Keno", 0, layout_pe_keno ) | |
8933 | 8877 | |
8934 | 8878 | /* Normal board : Slots machine */ |
8935 | GAMEL(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 ) | |
8936 | GAMEL(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 ) | |
8937 | GAMEL(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 ) | |
8938 | GAMEL(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 ) | |
8939 | GAMEL(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 ) | |
8940 | GAMEL(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 ) | |
8941 | GAMEL(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 */ | |
8942 | GAMEL(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 */ | |
8943 | GAMEL(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 ) | |
8944 | GAMEL(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 ) | |
8945 | GAMEL(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 ) | |
8946 | GAMEL(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 ) | |
8947 | GAMEL(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 ) | |
8948 | GAMEL(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 ) | |
8949 | GAMEL(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 ) | |
8950 | GAMEL(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 ) | |
8951 | GAMEL(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 ) | |
8952 | GAMEL(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 ) | |
8953 | GAMEL(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 ) | |
8879 | GAMEL(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 ) | |
8880 | GAMEL(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 ) | |
8881 | GAMEL(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 ) | |
8882 | GAMEL(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 ) | |
8883 | GAMEL(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 ) | |
8884 | GAMEL(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 ) | |
8885 | GAMEL(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 */ | |
8886 | GAMEL(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 */ | |
8887 | GAMEL(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 ) | |
8888 | GAMEL(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 ) | |
8889 | GAMEL(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 ) | |
8890 | GAMEL(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 ) | |
8891 | GAMEL(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 ) | |
8892 | GAMEL(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 ) | |
8893 | GAMEL(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 ) | |
8894 | GAMEL(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 ) | |
8895 | GAMEL(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 ) | |
8896 | GAMEL(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 ) | |
8897 | GAMEL(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 ) | |
8954 | 8898 | |
8955 | 8899 | /* Superboard : Poker */ |
8956 | 8900 | GAMEL(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 ) |
8957 | 8901 | GAMEL(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 ) |
8958 | 8902 | GAMEL(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 ) |
8959 | GAMEL(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 ) | |
8960 | GAMEL(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 ) | |
8903 | GAMEL(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 ) | |
8904 | GAMEL(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 ) | |
8961 | 8905 | GAMEL(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 ) |
8962 | GAMEL(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 ) | |
8963 | GAMEL(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 ) | |
8906 | GAMEL(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 ) | |
8907 | GAMEL(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 ) | |
8964 | 8908 | GAMEL(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 ) |
8965 | 8909 | GAMEL(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 ) |
8966 | GAMEL(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 ) | |
8967 | GAMEL(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 ) | |
8968 | GAMEL(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 ) | |
8969 | GAMEL(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 ) | |
8970 | GAMEL(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 ) | |
8971 | GAMEL(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 ) | |
8972 | GAMEL(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 ) | |
8973 | GAMEL(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 ) | |
8974 | GAMEL(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 ) | |
8975 | GAMEL(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 ) | |
8976 | GAMEL(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 ) | |
8977 | GAMEL(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 ) | |
8978 | GAMEL(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 ) | |
8979 | GAMEL(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 ) | |
8980 | GAMEL(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 ) | |
8981 | GAMEL(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 ) | |
8910 | GAMEL(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 ) | |
8911 | GAMEL(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 ) | |
8912 | GAMEL(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 ) | |
8913 | GAMEL(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 ) | |
8914 | GAMEL(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 ) | |
8915 | GAMEL(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 ) | |
8916 | GAMEL(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 ) | |
8917 | GAMEL(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 ) | |
8918 | GAMEL(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 ) | |
8919 | GAMEL(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 ) | |
8920 | GAMEL(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 ) | |
8921 | GAMEL(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 ) | |
8922 | GAMEL(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 ) | |
8923 | GAMEL(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 ) | |
8924 | GAMEL(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 ) | |
8925 | GAMEL(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 ) | |
8982 | 8926 | GAMEL(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 ) |
8983 | GAMEL(1995, pex0124p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000124P+XP000053) Deuces Wild Poker", | |
8927 | GAMEL(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 ) | |
8984 | 8928 | GAMEL(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 ) |
8985 | 8929 | GAMEL(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 ) |
8986 | GAMEL(1995, pex0171p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000171P+XP000038) Joker Poker", | |
8930 | GAMEL(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 ) | |
8987 | 8931 | GAMEL(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 ) |
8988 | GAMEL(1995, pex0190p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000190P+XP000053) Deuces Wild Poker", | |
8932 | GAMEL(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 ) | |
8989 | 8933 | GAMEL(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 ) |
8990 | 8934 | GAMEL(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 ) |
8991 | GAMEL(1995, pex0224p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000224P+XP000053) Deuces Wild Poker", | |
8935 | GAMEL(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 ) | |
8992 | 8936 | GAMEL(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 ) |
8993 | GAMEL(1995, pex0242p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000242P+XP000053) Deuces Wild Poker", | |
8937 | GAMEL(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 ) | |
8994 | 8938 | GAMEL(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 ) |
8995 | GAMEL(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 ) | |
8996 | GAMEL(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 ) | |
8939 | GAMEL(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 ) | |
8940 | GAMEL(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 ) | |
8997 | 8941 | GAMEL(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 ) |
8998 | GAMEL(1995, pex0434p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000434P+XP000038) Bonus Poker Deluxe", | |
8942 | GAMEL(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 ) | |
8999 | 8943 | GAMEL(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 ) |
9000 | 8944 | GAMEL(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 ) |
9001 | GAMEL(1995, pex0451p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000451P+XP000038) Bonus Poker Deluxe", | |
8945 | GAMEL(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 ) | |
9002 | 8946 | GAMEL(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 ) |
9003 | GAMEL(1995, pex0454p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000454P+XP000038) Bonus Poker Deluxe", | |
8947 | GAMEL(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 ) | |
9004 | 8948 | GAMEL(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 ) |
9005 | GAMEL(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 ) | |
9006 | GAMEL(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 ) | |
8949 | GAMEL(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 ) | |
8950 | GAMEL(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 ) | |
9007 | 8951 | GAMEL(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 ) |
9008 | GAMEL(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 ) | |
9009 | GAMEL(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 ) | |
9010 | GAMEL(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 ) | |
9011 | GAMEL(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 ) | |
8952 | GAMEL(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 ) | |
8953 | GAMEL(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 ) | |
8954 | GAMEL(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 ) | |
8955 | GAMEL(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 ) | |
9012 | 8956 | GAMEL(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 ) |
9013 | 8957 | GAMEL(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 ) |
9014 | GAMEL(1995, pex0568p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000568P+XP000038) Joker Poker", | |
8958 | GAMEL(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 ) | |
9015 | 8959 | GAMEL(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 ) |
9016 | GAMEL(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 ) | |
9017 | GAMEL(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 ) | |
9018 | GAMEL(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 ) | |
9019 | GAMEL(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 ) | |
8960 | GAMEL(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 ) | |
8961 | GAMEL(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 ) | |
8962 | GAMEL(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 ) | |
8963 | GAMEL(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 ) | |
9020 | 8964 | GAMEL(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 ) |
9021 | 8965 | GAMEL(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 ) |
9022 | 8966 | GAMEL(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 ) |
9023 | 8967 | GAMEL(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 ) |
9024 | 8968 | GAMEL(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 ) |
9025 | 8969 | GAMEL(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 ) |
9026 | GAMEL(1995, pex2031p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002031P+XP000112) Lucky Deal Poker", | |
8970 | GAMEL(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 ) | |
9027 | 8971 | GAMEL(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 ) |
9028 | 8972 | GAMEL(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 ) |
9029 | GAMEL(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 ) | |
9030 | GAMEL(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 ) | |
9031 | GAMEL(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 ) | |
9032 | GAMEL(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 ) | |
9033 | GAMEL(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 ) | |
9034 | GAMEL(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 ) | |
8973 | GAMEL(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 ) | |
8974 | GAMEL(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 ) | |
8975 | GAMEL(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 ) | |
8976 | GAMEL(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 ) | |
8977 | GAMEL(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 ) | |
8978 | GAMEL(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 ) | |
9035 | 8979 | GAMEL(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 ) |
9036 | 8980 | GAMEL(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 ) |
9037 | 8981 | GAMEL(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 ) |
r241749 | r241750 | |
9040 | 8984 | GAMEL(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 ) |
9041 | 8985 | GAMEL(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 ) |
9042 | 8986 | GAMEL(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 ) |
9043 | GAMEL(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 ) | |
9044 | GAMEL(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 ) | |
9045 | GAMEL(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 ) | |
8987 | GAMEL(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 ) | |
8988 | GAMEL(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 ) | |
8989 | GAMEL(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 ) | |
9046 | 8990 | GAMEL(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 ) |
9047 | GAMEL(1995, pex2244p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002244P+XP000079) Double Bonus Poker", | |
8991 | GAMEL(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 ) | |
9048 | 8992 | GAMEL(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 ) |
9049 | 8993 | GAMEL(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 ) |
9050 | GAMEL(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 ) | |
9051 | GAMEL(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 ) | |
8994 | GAMEL(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 ) | |
8995 | GAMEL(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 ) | |
9052 | 8996 | GAMEL(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 ) |
9053 | 8997 | GAMEL(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 ) |
9054 | 8998 | GAMEL(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 ) |
9055 | 8999 | GAMEL(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 */ |
9056 | 9000 | GAMEL(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 */ |
9057 | GAMEL(1995, pex2302p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002302P+XP000038) Bonus Poker Deluxe", | |
9001 | GAMEL(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 ) | |
9058 | 9002 | GAMEL(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 ) |
9059 | 9003 | GAMEL(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 ) |
9060 | 9004 | GAMEL(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 ) |
r241749 | r241750 | |
9066 | 9010 | GAMEL(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 ) |
9067 | 9011 | GAMEL(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 ) |
9068 | 9012 | GAMEL(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 ) |
9069 | GAMEL(1995, pex2440p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002440P+XP000053) Deuces Wild Poker", | |
9013 | GAMEL(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 ) | |
9070 | 9014 | GAMEL(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 ) |
9071 | 9015 | |
9072 | 9016 | /* Superboard : Poker (Key On Credit) */ |
r241749 | r241750 | |
9102 | 9046 | GAMEL(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 ) |
9103 | 9047 | |
9104 | 9048 | /* Superboard : Slots machine */ |
9105 | GAMEL(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 ) | |
9106 | GAMEL(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 ) | |
9049 | GAMEL(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 ) | |
9050 | GAMEL(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 ) | |
9107 | 9051 | GAMEL(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 ) |
9108 | 9052 | GAMEL(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 */ |
r241749 | r241750 | |
---|---|---|
980 | 980 | PGM_AUDIO_BIOS |
981 | 981 | ROM_END |
982 | 982 | |
983 | ROM_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) ) | |
987 | 983 | |
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 | |
1000 | ROM_END | |
1001 | ||
1002 | 984 | /* |
1003 | 985 | |
1004 | 986 | Dragon World 3 (KOREA 106 Ver.) |
r241749 | r241750 | |
4163 | 4145 | GAME( 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 ) |
4164 | 4146 | GAME( 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 ) |
4165 | 4147 | GAME( 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 ) |
4166 | GAME( 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) | |
4167 | 4148 | |
4168 | 4149 | GAME( 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 */ |
4169 | 4150 | GAME( 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 */ |
r241749 | r241750 | |
---|---|---|
278 | 278 | ROM_LOAD16_WORD_SWAP( "ig-a_sp.u2", 0x00000000, 0x1000000, CRC(8250688c) SHA1(d2488477afc528aeee96826065deba2bce4f0a7d) ) |
279 | 279 | ROM_END |
280 | 280 | |
281 | ROM_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) ) | |
305 | ROM_END | |
306 | ||
307 | 281 | ROM_START( kov2nl ) |
308 | 282 | ROM_REGION( 0x04000, "maincpu", 0 ) |
309 | 283 | ROM_LOAD( "gsyx_igs036.rom", 0x00000000, 0x0004000, NO_DUMP ) |
r241749 | r241750 | |
356 | 330 | ROM_LOAD16_WORD_SWAP( "ig-a3_sp.u37", 0x00000000, 0x2000000, CRC(45cdf422) SHA1(8005d284bcee73cff37a147fcd1c3e9f039a7203) ) |
357 | 331 | ROM_END |
358 | 332 | |
359 | ROM_START( kov2nloa ) | |
360 | ROM_REGION( 0x04000, "maincpu", 0 ) | |
361 | ROM_LOAD( "gsyx_igs036.rom", 0x00000000, 0x0004000, NO_DUMP ) | |
362 | 333 | |
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) ) | |
383 | ROM_END | |
384 | ||
385 | 334 | ROM_START( ddpdojh ) |
386 | 335 | ROM_REGION( 0x04000, "maincpu", 0 ) |
387 | 336 | ROM_LOAD( "ddpdoj_igs036.rom", 0x00000000, 0x0004000, NO_DUMP ) |
r241749 | r241750 | |
547 | 496 | /* PGM2 */ |
548 | 497 | GAME( 2007, orleg2, 0, pgm2, pgm2, pgm2_state, orleg2, ROT0, "IGS", "Oriental Legend 2 (V104, China)", GAME_IS_SKELETON ) |
549 | 498 | GAME( 2007, orleg2o, orleg2, pgm2, pgm2, pgm2_state, orleg2, ROT0, "IGS", "Oriental Legend 2 (V103, China)", GAME_IS_SKELETON ) |
550 | GAME( 2007, orleg2oa, orleg2, pgm2, pgm2, pgm2_state, orleg2, ROT0, "IGS", "Oriental Legend 2 (V101, China)", GAME_IS_SKELETON ) | |
551 | 499 | // should be earlier verisons too. |
552 | 500 | |
553 | 501 | GAME( 2008, kov2nl, 0, pgm2, pgm2, pgm2_state, kov2nl, ROT0, "IGS", "Knights of Valour 2 New Legend (V302, China)", GAME_IS_SKELETON ) |
554 | 502 | GAME( 2008, kov2nlo, kov2nl, pgm2, pgm2, pgm2_state, kov2nl, ROT0, "IGS", "Knights of Valour 2 New Legend (V301, China)", GAME_IS_SKELETON ) |
555 | GAME( 2008, kov2nloa, kov2nl, pgm2, pgm2, pgm2_state, kov2nl, ROT0, "IGS", "Knights of Valour 2 New Legend (V300, Taiwan)", GAME_IS_SKELETON ) | |
556 | 503 | // should be earlier verisons too. |
557 | 504 | |
558 | 505 | GAME( 2010, ddpdojh, 0, pgm2, pgm2, pgm2_state, ddpdojh, ROT270, "IGS", "Dodonpachi Daioujou Tamashii (V201, China)", GAME_IS_SKELETON ) |
r241749 | r241750 | |
---|---|---|
13 | 13 | |
14 | 14 | #include "emu.h" |
15 | 15 | #include "cpu/i386/i386.h" |
16 | #include "machine/ | |
16 | #include "machine/pci.h" | |
17 | 17 | #include "machine/pcshare.h" |
18 | 18 | #include "machine/pckeybrd.h" |
19 | 19 | #include "machine/idectrl.h" |
r241749 | r241750 | |
---|---|---|
19 | 19 | |
20 | 20 | #include "emu.h" |
21 | 21 | #include "cpu/i386/i386.h" |
22 | #include "machine/ | |
22 | #include "machine/pci.h" | |
23 | 23 | #include "machine/pcshare.h" |
24 | 24 | #include "machine/pckeybrd.h" |
25 | 25 | #include "machine/idectrl.h" |
r241749 | r241750 | |
---|---|---|
407 | 407 | |
408 | 408 | static ADDRESS_MAP_START( psychic5_main_map, AS_PROGRAM, 8, psychic5_state ) |
409 | 409 | 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) | |
412 | 412 | AM_RANGE(0xe000, 0xefff) AM_RAM |
413 | 413 | AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch_byte_w) |
414 | 414 | AM_RANGE(0xf001, 0xf001) AM_READNOP AM_WRITE(psychic5_coin_counter_w) |
r241749 | r241750 | |
421 | 421 | AM_RANGE(0xf800, 0xffff) AM_RAM |
422 | 422 | ADDRESS_MAP_END |
423 | 423 | |
424 | ||
425 | static 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 | ||
443 | ADDRESS_MAP_END | |
444 | ||
445 | ||
446 | 424 | static ADDRESS_MAP_START( psychic5_sound_map, AS_PROGRAM, 8, psychic5_state ) |
447 | 425 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
448 | 426 | AM_RANGE(0xc000, 0xc7ff) AM_RAM |
r241749 | r241750 | |
458 | 436 | |
459 | 437 | static ADDRESS_MAP_START( bombsa_main_map, AS_PROGRAM, 8, psychic5_state ) |
460 | 438 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
461 | AM_RANGE(0x8000, 0xbfff) AM_R | |
439 | AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank1") | |
462 | 440 | AM_RANGE(0xc000, 0xcfff) AM_RAM |
463 | 441 | |
464 | 442 | /* ports look like the other games */ |
r241749 | r241750 | |
472 | 450 | AM_RANGE(0xd200, 0xd7ff) AM_RAM AM_SHARE("spriteram") |
473 | 451 | AM_RANGE(0xd800, 0xdfff) AM_RAM |
474 | 452 | |
475 | AM_RANGE(0xe000, 0xffff) AM_ | |
453 | AM_RANGE(0xe000, 0xffff) AM_READWRITE(psychic5_paged_ram_r, bombsa_paged_ram_w) | |
476 | 454 | ADDRESS_MAP_END |
477 | 455 | |
478 | 456 | static ADDRESS_MAP_START( bombsa_sound_map, AS_PROGRAM, 8, psychic5_state ) |
r241749 | r241750 | |
488 | 466 | AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ym2", ym2203_device, read, write) |
489 | 467 | ADDRESS_MAP_END |
490 | 468 | |
491 | static 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") | |
493 | 469 | |
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") | |
507 | ADDRESS_MAP_END | |
508 | ||
509 | ||
510 | 470 | static INPUT_PORTS_START( psychic5 ) |
511 | 471 | PORT_START("SYSTEM") /* system control */ |
512 | 472 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) |
r241749 | r241750 | |
695 | 655 | MCFG_CPU_PROGRAM_MAP(psychic5_main_map) |
696 | 656 | MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", psychic5_state, psychic5_scanline, "screen", 0, 1) |
697 | 657 | |
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 | ||
705 | 658 | MCFG_CPU_ADD("audiocpu", Z80, XTAL_5MHz) |
706 | 659 | MCFG_CPU_PROGRAM_MAP(psychic5_sound_map) |
707 | 660 | MCFG_CPU_IO_MAP(psychic5_soundport_map) |
r241749 | r241750 | |
747 | 700 | MCFG_CPU_PROGRAM_MAP(bombsa_main_map) |
748 | 701 | MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", psychic5_state, psychic5_scanline, "screen", 0, 1) |
749 | 702 | |
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 | ||
757 | 703 | MCFG_CPU_ADD("audiocpu", Z80, XTAL_5MHz ) |
758 | 704 | MCFG_CPU_PROGRAM_MAP(bombsa_sound_map) |
759 | 705 | MCFG_CPU_IO_MAP(bombsa_soundport_map) |
r241749 | r241750 | |
772 | 718 | MCFG_PALETTE_ADD("palette", 768) |
773 | 719 | |
774 | 720 | MCFG_VIDEO_START_OVERRIDE(psychic5_state,bombsa) |
775 | MCFG_VIDEO_RESET_OVERRIDE(psychic5_state, | |
721 | MCFG_VIDEO_RESET_OVERRIDE(psychic5_state,bombsa) | |
776 | 722 | |
777 | 723 | /* sound hardware */ |
778 | 724 | MCFG_SPEAKER_STANDARD_MONO("mono") |
r241749 | r241750 | |
---|---|---|
26 | 26 | |
27 | 27 | #include "emu.h" |
28 | 28 | #include "cpu/i386/i386.h" |
29 | #include "machine/ | |
29 | #include "machine/pci.h" | |
30 | 30 | #include "machine/pcshare.h" |
31 | 31 | #include "machine/pckeybrd.h" |
32 | 32 | #include "machine/idectrl.h" |
r241749 | r241750 | |
---|---|---|
339 | 339 | MCFG_CPU_PROGRAM_MAP(main_map) |
340 | 340 | MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen) |
341 | 341 | |
342 | MCFG_SLAPSTIC_ADD("slapstic") | |
343 | ||
344 | 342 | MCFG_MACHINE_RESET_OVERRIDE(rampart_state,rampart) |
345 | 343 | |
346 | 344 | MCFG_ATARI_EEPROM_2816_ADD("eeprom") |
r241749 | r241750 | |
---|---|---|
210 | 210 | }; |
211 | 211 | |
212 | 212 | static 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 */ | |
215 | 215 | GFXDECODE_END |
216 | 216 | |
217 | 217 | /*************************************************************************** |
r241749 | r241750 | |
227 | 227 | m_rombank->configure_entries(0, 8, &ROM[0x10000], 0x2000); |
228 | 228 | |
229 | 229 | save_item(NAME(m_vreg)); |
230 | save_item(NAME(m_layer_colorbase)); | |
230 | 231 | } |
231 | 232 | |
232 | 233 | void rockrage_state::machine_reset() |
r241749 | r241750 | |
267 | 268 | MCFG_K007420_PALETTE("palette") |
268 | 269 | |
269 | 270 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", rockrage) |
270 | MCFG_PALETTE_ADD("palette", | |
271 | MCFG_PALETTE_ADD("palette", 64 + 2*16*16) | |
271 | 272 | MCFG_PALETTE_INDIRECT_ENTRIES(64) |
272 | 273 | MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) |
273 | 274 | MCFG_PALETTE_ENDIANNESS(ENDIANNESS_LITTLE) |
r241749 | r241750 | |
309 | 310 | ROM_LOAD( "620l10.8g", 0x020000, 0x20000, CRC(06d108e0) SHA1(cae8c5f2fc4e84bc7adbf27f71a18a74968c4296) ) /* One "K" & one "L" code version??? */ |
310 | 311 | |
311 | 312 | ROM_REGION( 0x0300, "proms", 0 ) |
312 | ROM_LOAD( "620k0 | |
313 | ROM_LOAD( "620k09.11g", 0x00000, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) ) /* layer 0 lookup table */ | |
313 | 314 | 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 */ | |
316 | 317 | ROM_REGION( 0x08000, "vlm", 0 ) /* VLM3050 data */ |
317 | 318 | ROM_LOAD( "620k04.6e", 0x00000, 0x08000, CRC(8be969f3) SHA1(9856b4c13fac77b645aed67a08cb4965b4966492) ) |
318 | 319 | ROM_END |
r241749 | r241750 | |
338 | 339 | ROM_LOAD( "620g10b.8f", 0x030000, 0x10000, CRC(1618854a) SHA1(0afb34a9ed97f13c1910acd7767cb8546ea7e6cd) ) |
339 | 340 | |
340 | 341 | ROM_REGION( 0x0300, "proms", 0 ) |
341 | ROM_LOAD( "620k0 | |
342 | ROM_LOAD( "620k09.11g", 0x00000, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) ) /* layer 0 lookup table */ | |
342 | 343 | 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 */ | |
345 | 346 | ROM_REGION( 0x08000, "vlm", 0 ) /* VLM3050 data */ |
346 | 347 | ROM_LOAD( "620k04.6e", 0x00000, 0x08000, CRC(8be969f3) SHA1(9856b4c13fac77b645aed67a08cb4965b4966492) ) /* Same rom but labeled as ver "G" */ |
347 | 348 | ROM_END |
r241749 | r241750 | |
363 | 364 | ROM_LOAD( "620k10.8g", 0x020000, 0x20000, CRC(0d1a95ab) SHA1(be565424f17af31dcd07004c6be03bbb00aef514) ) |
364 | 365 | |
365 | 366 | ROM_REGION( 0x0300, "proms", 0 ) |
366 | ROM_LOAD( "620k0 | |
367 | ROM_LOAD( "620k09.11g", 0x00000, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) ) /* layer 0 lookup table */ | |
367 | 368 | 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 */ | |
370 | 371 | ROM_REGION( 0x08000, "vlm", 0 ) /* VLM3050 data */ |
371 | 372 | ROM_LOAD( "620k04.6e", 0x00000, 0x08000, CRC(8be969f3) SHA1(9856b4c13fac77b645aed67a08cb4965b4966492) ) |
372 | 373 | ROM_END |
r241749 | r241750 | |
---|---|---|
46 | 46 | |
47 | 47 | #include "emu.h" |
48 | 48 | #include "cpu/i386/i386.h" |
49 | #include "machine/ | |
49 | #include "machine/pci.h" | |
50 | 50 | #include "machine/pcshare.h" |
51 | 51 | #include "machine/pckeybrd.h" |
52 | 52 | #include "machine/idectrl.h" |
r241749 | r241750 | |
---|---|---|
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 | ||
15 | TODO: | |
16 | - everything | |
17 | ||
18 | ***************************************************************************/ | |
19 | ||
20 | #include "emu.h" | |
21 | #include "cpu/z80/z80.h" | |
22 | //#include "sound/2612intf.h" | |
23 | ||
24 | ||
25 | class segacoin_state : public driver_device | |
26 | { | |
27 | public: | |
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 | ||
47 | static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, segacoin_state ) | |
48 | AM_RANGE(0x0000, 0x7fff) AM_ROM | |
49 | AM_RANGE(0xe000, 0xffff) AM_RAM | |
50 | ADDRESS_MAP_END | |
51 | ||
52 | static ADDRESS_MAP_START( main_portmap, AS_IO, 8, segacoin_state ) | |
53 | ADDRESS_MAP_UNMAP_HIGH | |
54 | ADDRESS_MAP_GLOBAL_MASK(0xff) | |
55 | ADDRESS_MAP_END | |
56 | ||
57 | ||
58 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, segacoin_state ) | |
59 | AM_RANGE(0x0000, 0x7fff) AM_ROM | |
60 | AM_RANGE(0xe000, 0xffff) AM_RAM | |
61 | ADDRESS_MAP_END | |
62 | ||
63 | static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, segacoin_state ) | |
64 | ADDRESS_MAP_UNMAP_HIGH | |
65 | ADDRESS_MAP_GLOBAL_MASK(0xff) | |
66 | ADDRESS_MAP_END | |
67 | ||
68 | ||
69 | ||
70 | /*************************************************************************** | |
71 | ||
72 | Inputs | |
73 | ||
74 | ***************************************************************************/ | |
75 | ||
76 | static 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" ) | |
97 | INPUT_PORTS_END | |
98 | ||
99 | ||
100 | ||
101 | /*************************************************************************** | |
102 | ||
103 | Machine Config | |
104 | ||
105 | ***************************************************************************/ | |
106 | ||
107 | static 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 | //.. | |
122 | MACHINE_CONFIG_END | |
123 | ||
124 | ||
125 | ||
126 | /*************************************************************************** | |
127 | ||
128 | Game drivers | |
129 | ||
130 | ***************************************************************************/ | |
131 | ||
132 | ROM_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 ) | |
139 | ROM_END | |
140 | ||
141 | ||
142 | GAME (1992, westdrm, 0, westdrm, westdrm, driver_device, 0, ROT0, "Sega", "Western Dream", GAME_IS_SKELETON_MECHANICAL ) |
r241749 | r241750 | |
---|---|---|
73 | 73 | switch (m_romboard) |
74 | 74 | { |
75 | 75 | case ROM_BOARD_171_SHADOW: break; // ??? |
76 | case ROM_BOARD_837_7525: | |
77 | 76 | case ROM_BOARD_171_5874: |
78 | 77 | 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; |
79 | 78 | default: assert(false); |
r241749 | r241750 | |
90 | 89 | else |
91 | 90 | mapper.map_as_rom(0x00000,0x100000, 0xf00000, "rom1base",0x100000, write16_delegate(FUNC(segas18_state::rom_5987_bank_w), this)); |
92 | 91 | 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 | ||
96 | 92 | default: assert(false); |
97 | 93 | } |
98 | 94 | break; |
r241749 | r241750 | |
102 | 98 | { |
103 | 99 | case ROM_BOARD_171_SHADOW: |
104 | 100 | case ROM_BOARD_171_5874: mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom0base", 0x00000, write16_delegate()); break; |
105 | case ROM_BOARD_837_7525: | |
106 | 101 | case ROM_BOARD_171_5987: if (romsize <= 0x100000) |
107 | 102 | mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom0base", 0x00000, write16_delegate()); |
108 | 103 | else |
r241749 | r241750 | |
395 | 390 | } |
396 | 391 | } |
397 | 392 | |
398 | WRITE16_MEMBER( segas18_state::rom_837_7525_bank_w ) | |
399 | { | |
400 | if (!ACCESSING_BITS_0_7) | |
401 | return; | |
402 | 393 | |
403 | offset &= 0xf; | |
404 | data &= 0xff; | |
405 | 394 | |
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 | ||
427 | 395 | /************************************* |
428 | 396 | * |
429 | 397 | * D.D.Crew Custom I/O |
r241749 | r241750 | |
761 | 729 | PORT_DIPSETTING( 0x00, "1" ) |
762 | 730 | //"SW2:7" unused |
763 | 731 | //"SW2:8" unused |
732 | ||
764 | 733 | INPUT_PORTS_END |
765 | 734 | |
735 | ||
766 | 736 | static INPUT_PORTS_START( astorm2p ) |
767 | 737 | PORT_INCLUDE( system18_generic ) |
768 | 738 | |
r241749 | r241750 | |
787 | 757 | PORT_DIPSETTING( 0x00, "1" ) |
788 | 758 | //"SW2:7" unused |
789 | 759 | //"SW2:8" unused |
760 | ||
790 | 761 | INPUT_PORTS_END |
791 | 762 | |
792 | 763 | |
r241749 | r241750 | |
905 | 876 | PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) |
906 | 877 | INPUT_PORTS_END |
907 | 878 | |
879 | ||
908 | 880 | static INPUT_PORTS_START( ddcrew2p ) |
909 | 881 | PORT_INCLUDE( system18_generic ) |
910 | 882 | |
r241749 | r241750 | |
931 | 903 | PORT_DIPSETTING( 0xc0, DEF_STR( Normal ) ) |
932 | 904 | PORT_DIPSETTING( 0x40, DEF_STR( Hard ) ) |
933 | 905 | PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) |
906 | ||
934 | 907 | INPUT_PORTS_END |
935 | 908 | |
936 | 909 | static INPUT_PORTS_START( ddcrew3p ) |
r241749 | r241750 | |
949 | 922 | PORT_MODIFY("SERVICE") |
950 | 923 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 ) |
951 | 924 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) |
925 | ||
952 | 926 | INPUT_PORTS_END |
953 | 927 | |
954 | ||
955 | 928 | static INPUT_PORTS_START( desertbr ) |
956 | 929 | PORT_INCLUDE( system18_generic ) |
957 | 930 | |
r241749 | r241750 | |
1000 | 973 | INPUT_PORTS_END |
1001 | 974 | |
1002 | 975 | |
1003 | static 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 ) ) | |
1025 | INPUT_PORTS_END | |
1026 | ||
1027 | ||
1028 | 976 | static INPUT_PORTS_START( lghost ) |
1029 | 977 | PORT_INCLUDE( system18_generic ) |
1030 | 978 | |
r241749 | r241750 | |
1236 | 1184 | INPUT_PORTS_END |
1237 | 1185 | |
1238 | 1186 | |
1187 | ||
1239 | 1188 | /************************************* |
1240 | 1189 | * |
1241 | 1190 | * Graphics definitions |
r241749 | r241750 | |
1279 | 1228 | * |
1280 | 1229 | *************************************/ |
1281 | 1230 | |
1282 | WRITE_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 | ||
1291 | 1231 | static MACHINE_CONFIG_START( system18, segas18_state ) |
1292 | 1232 | |
1293 | 1233 | // basic machine hardware |
r241749 | r241750 | |
1336 | 1276 | |
1337 | 1277 | MCFG_SOUND_ADD("ym1", YM3438, 8000000) |
1338 | 1278 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
1339 | MCFG_YM2612_IRQ_HANDLER(WRITELINE(segas18_state, ym3438_irq_handler)) | |
1340 | 1279 | |
1341 | 1280 | MCFG_SOUND_ADD("ym2", YM3438, 8000000) |
1342 | 1281 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) |
r241749 | r241750 | |
1932 | 1871 | /************************************************************************************************************************** |
1933 | 1872 | ************************************************************************************************************************** |
1934 | 1873 | ************************************************************************************************************************** |
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 | */ | |
1942 | ROM_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) ) | |
1968 | ROM_END | |
1969 | ||
1970 | ||
1971 | /************************************************************************************************************************** | |
1972 | ************************************************************************************************************************** | |
1973 | ************************************************************************************************************************** | |
1974 | 1874 | Laser Ghost, Sega System 18 |
1975 | 1875 | CPU: FD1094 (317-0166) |
1976 | 1876 | ROM Board: 171-5873B |
r241749 | r241750 | |
2362 | 2262 | ROM_END |
2363 | 2263 | |
2364 | 2264 | |
2265 | ||
2365 | 2266 | /************************************* |
2366 | 2267 | * |
2367 | 2268 | * Generic driver initialization |
r241749 | r241750 | |
2383 | 2284 | init_generic(ROM_BOARD_171_5987); |
2384 | 2285 | } |
2385 | 2286 | |
2386 | DRIVER_INIT_MEMBER(segas18_state,hamaway) | |
2387 | { | |
2388 | init_generic(ROM_BOARD_837_7525); | |
2389 | } | |
2390 | 2287 | |
2391 | 2288 | |
2392 | 2289 | /************************************* |
r241749 | r241750 | |
2417 | 2314 | } |
2418 | 2315 | |
2419 | 2316 | |
2317 | ||
2420 | 2318 | /************************************* |
2421 | 2319 | * |
2422 | 2320 | * Game driver(s) |
2423 | 2321 | * |
2424 | 2322 | *************************************/ |
2425 | 2323 | |
2426 | // YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR, COMPANY, FULLNAME, FLAGS | |
2427 | GAME( 1990, astorm, 0, system18_fd1094, astorm2p, segas18_state, generic_5874, ROT0, "Sega", "Alien Storm (World, 2 Players, FD1094 317-0154)", 0 ) | |
2428 | GAME( 1990, astorm3, astorm, system18_fd1094, astorm, segas18_state, generic_5874, ROT0, "Sega", "Alien Storm (World, 3 Players, FD1094 317-0148)", 0 ) | |
2429 | GAME( 1990, astormu, astorm, system18_fd1094, astorm, segas18_state, generic_5874, ROT0, "Sega", "Alien Storm (US, 3 Players, FD1094 317-0147)", 0 ) | |
2430 | GAME( 1990, astormj, astorm, system18_fd1094, astorm2p, segas18_state, generic_5874, ROT0, "Sega", "Alien Storm (Japan, 2 Players, FD1094 317-0146)", 0 ) | |
2431 | GAME( 1989, bloxeed, 0, system18_fd1094, bloxeed, segas18_state, generic_5874, ROT0, "Sega", "Bloxeed (Japan, FD1094 317-0139)", 0 ) | |
2432 | GAME( 1991, cltchitr, 0, system18_fd1094, cltchitr, segas18_state, generic_5987, ROT0, "Sega", "Clutch Hitter (US, FD1094 317-0176)", 0 ) | |
2433 | GAME( 1991, cltchitrj, cltchitr, system18_fd1094, cltchitr, segas18_state, generic_5987, ROT0, "Sega", "Clutch Hitter (Japan, FD1094 317-0175)", 0 ) | |
2434 | GAME( 1992, desertbr, 0, system18_fd1094, desertbr, segas18_state, generic_5987, ROT270, "Sega", "Desert Breaker (World, FD1094 317-0196)", 0 ) | |
2435 | GAME( 1992, desertbrj, desertbr, system18_fd1094, desertbr, segas18_state, generic_5987, ROT270, "Sega", "Desert Breaker (Japan, FD1094 317-0194)", 0 ) | |
2436 | GAME( 1991, ddcrew, 0, system18_fd1094, ddcrew3p, segas18_state, ddcrew, ROT0, "Sega", "D. D. Crew (World, 3 Players, FD1094 317-0190)", 0 ) | |
2437 | GAME( 1991, ddcrewu, ddcrew, system18_fd1094, ddcrew, segas18_state, ddcrew, ROT0, "Sega", "D. D. Crew (US, 4 Players, FD1094 317-0186)", 0 ) | |
2438 | GAME( 1991, ddcrew2, ddcrew, system18_fd1094, ddcrew2p, segas18_state, ddcrew, ROT0, "Sega", "D. D. Crew (World, 2 Players, FD1094 317-0184)", 0 ) | |
2439 | GAME( 1991, ddcrew1, ddcrew, system18_fd1094, ddcrew, segas18_state, ddcrew, ROT0, "Sega", "D. D. Crew (World, 4 Players, FD1094 317-0187)", 0 ) | |
2440 | GAME( 1991, ddcrewj, ddcrew, system18_fd1094, ddcrew, segas18_state, ddcrew, ROT0, "Sega", "D. D. Crew (Japan, 4 Players, FD1094 317-0185)", 0 ) | |
2441 | GAME( 1991, ddcrewj2, ddcrew, system18_fd1094, ddcrew2p, segas18_state, ddcrew, ROT0, "Sega", "D. D. Crew (Japan, 2 Players, FD1094 317-0182)", 0 ) | |
2442 | GAME( 1991, hamaway, 0, system18, hamaway, segas18_state, hamaway, ROT90, "Sega / Santos", "Hammer Away (Japan, prototype)", 0 ) | |
2443 | GAME( 1990, lghost, 0, system18_fd1094, lghost, segas18_state, lghost, ROT0, "Sega", "Laser Ghost (World, FD1094 317-0166)", 0 ) | |
2444 | GAME( 1990, lghostu, lghost, system18_fd1094, lghost, segas18_state, lghost, ROT0, "Sega", "Laser Ghost (US, FD1094 317-0165)", 0 ) | |
2445 | GAME( 1990, mwalk, 0, system18_fd1094_i8751,mwalk, segas18_state, generic_5874, ROT0, "Sega", "Michael Jackson's Moonwalker (World, FD1094/8751 317-0159)", 0 ) | |
2446 | GAME( 1990, mwalku, mwalk, system18_fd1094_i8751,mwalka, segas18_state, generic_5874, ROT0, "Sega", "Michael Jackson's Moonwalker (US, FD1094/8751 317-0158)", 0 ) | |
2447 | GAME( 1990, mwalkj, mwalk, system18_fd1094_i8751,mwalk, segas18_state, generic_5874, ROT0, "Sega", "Michael Jackson's Moonwalker (Japan, FD1094/8751 317-0157)", 0 ) | |
2448 | GAME( 1989, pontoon, 0, system18_fd1094, shdancer, segas18_state, generic_5874, ROT0, "Sega", "Pontoon (FD1094 317-0153)", GAME_NOT_WORKING ) // satellite/networked gambling game? | |
2449 | GAME( 1989, shdancer, 0, system18, shdancer, segas18_state, generic_shad, ROT0, "Sega", "Shadow Dancer (World)", 0 ) | |
2450 | GAME( 1989, shdancerj, shdancer, system18, shdancer, segas18_state, generic_shad, ROT0, "Sega", "Shadow Dancer (Japan)", 0 ) | |
2451 | GAME( 1989, shdancer1, shdancer, system18, shdancer, segas18_state, generic_shad, ROT0, "Sega", "Shadow Dancer (US)", 0 ) | |
2452 | GAME( 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 | |
2453 | GAME( 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 | |
2325 | GAME( 1990, astorm, 0, system18_fd1094, astorm2p, segas18_state,generic_5874, ROT0, "Sega", "Alien Storm (World, 2 Players, FD1094 317-0154)", 0 ) | |
2326 | GAME( 1990, astorm3, astorm, system18_fd1094, astorm, segas18_state,generic_5874, ROT0, "Sega", "Alien Storm (World, 3 Players, FD1094 317-0148)", 0 ) | |
2327 | GAME( 1990, astormu, astorm, system18_fd1094, astorm, segas18_state,generic_5874, ROT0, "Sega", "Alien Storm (US, 3 Players, FD1094 317-0147)", 0 ) | |
2328 | GAME( 1990, astormj, astorm, system18_fd1094, astorm2p, segas18_state,generic_5874, ROT0, "Sega", "Alien Storm (Japan, 2 Players, FD1094 317-0146)", 0 ) | |
2329 | GAME( 1989, bloxeed, 0, system18_fd1094, bloxeed, segas18_state,generic_5874, ROT0, "Sega", "Bloxeed (Japan, FD1094 317-0139)", 0 ) | |
2330 | GAME( 1991, cltchitr, 0, system18_fd1094, cltchitr, segas18_state,generic_5987, ROT0, "Sega", "Clutch Hitter (US, FD1094 317-0176)", 0 ) | |
2331 | GAME( 1991, cltchitrj, cltchitr, system18_fd1094, cltchitr, segas18_state,generic_5987, ROT0, "Sega", "Clutch Hitter (Japan, FD1094 317-0175)", 0 ) | |
2332 | GAME( 1992, desertbr, 0, system18_fd1094, desertbr, segas18_state,generic_5987, ROT270, "Sega", "Desert Breaker (World, FD1094 317-0196)", 0 ) | |
2333 | GAME( 1992, desertbrj, desertbr, system18_fd1094, desertbr, segas18_state,generic_5987, ROT270, "Sega", "Desert Breaker (Japan, FD1094 317-0194)", 0 ) | |
2334 | GAME( 1991, ddcrew, 0, system18_fd1094, ddcrew3p, segas18_state,ddcrew, ROT0, "Sega", "D. D. Crew (World, 3 Players, FD1094 317-0190)", 0 ) | |
2335 | GAME( 1991, ddcrewu, ddcrew, system18_fd1094, ddcrew, segas18_state,ddcrew, ROT0, "Sega", "D. D. Crew (US, 4 Players, FD1094 317-0186)", 0 ) | |
2336 | GAME( 1991, ddcrew2, ddcrew, system18_fd1094, ddcrew2p, segas18_state,ddcrew, ROT0, "Sega", "D. D. Crew (World, 2 Players, FD1094 317-0184)", 0 ) | |
2337 | GAME( 1991, ddcrew1, ddcrew, system18_fd1094, ddcrew, segas18_state,ddcrew, ROT0, "Sega", "D. D. Crew (World, 4 Players, FD1094 317-0187)", 0 ) | |
2338 | GAME( 1991, ddcrewj, ddcrew, system18_fd1094, ddcrew, segas18_state,ddcrew, ROT0, "Sega", "D. D. Crew (Japan, 4 Players, FD1094 317-0185)", 0 ) | |
2339 | GAME( 1991, ddcrewj2, ddcrew, system18_fd1094, ddcrew2p, segas18_state,ddcrew, ROT0, "Sega", "D. D. Crew (Japan, 2 Players, FD1094 317-0182)", 0 ) | |
2340 | GAME( 1990, lghost, 0, system18_fd1094, lghost, segas18_state,lghost, ROT0, "Sega", "Laser Ghost (World, FD1094 317-0166)", 0 ) | |
2341 | GAME( 1990, lghostu, lghost, system18_fd1094, lghost, segas18_state,lghost, ROT0, "Sega", "Laser Ghost (US, FD1094 317-0165)", 0 ) | |
2342 | GAME( 1990, mwalk, 0, system18_fd1094_i8751,mwalk, segas18_state,generic_5874, ROT0, "Sega", "Michael Jackson's Moonwalker (World, FD1094/8751 317-0159)", 0 ) | |
2343 | GAME( 1990, mwalku, mwalk, system18_fd1094_i8751,mwalka, segas18_state,generic_5874, ROT0, "Sega", "Michael Jackson's Moonwalker (US, FD1094/8751 317-0158)", 0 ) | |
2344 | GAME( 1990, mwalkj, mwalk, system18_fd1094_i8751,mwalk, segas18_state,generic_5874, ROT0, "Sega", "Michael Jackson's Moonwalker (Japan, FD1094/8751 317-0157)", 0 ) | |
2345 | GAME( 1989, pontoon, 0, system18_fd1094, shdancer, segas18_state,generic_5874, ROT0, "Sega", "Pontoon (FD1094 317-0153)", GAME_NOT_WORKING ) // satellite/networked gambling game? | |
2346 | GAME( 1989, shdancer, 0, system18, shdancer, segas18_state,generic_shad, ROT0, "Sega", "Shadow Dancer (World)", 0 ) | |
2347 | GAME( 1989, shdancerj, shdancer, system18, shdancer, segas18_state,generic_shad, ROT0, "Sega", "Shadow Dancer (Japan)", 0 ) | |
2348 | GAME( 1989, shdancer1, shdancer, system18, shdancer, segas18_state,generic_shad, ROT0, "Sega", "Shadow Dancer (US)", 0 ) | |
2349 | GAME( 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 | |
2350 | GAME( 1992, wwallyja, wwallyj, system18_fd1094, wwally, segas18_state,wwally, ROT0, "Sega", "Wally wo Sagase! (rev A, Japan, FD1094 317-0197A)", 0 ) |
r241749 | r241750 | |
---|---|---|
23 | 23 | - # School Kids (1993) |
24 | 24 | |
25 | 25 | 4th gen - EX brd |
26 | * Z80, 2 Sega 315-5296(I/O), | |
26 | * Z80, 2 Sega 315-5296(I/O), YM3438, NEC uPD71054C, optional NEC uPD7759C | |
27 | 27 | - # Dream Palace (1992) |
28 | 28 | - # Dream Kitchen (1994) |
29 | 29 | - # UFO Catcher Excellent (1994) |
r241749 | r241750 | |
35 | 35 | |
36 | 36 | More games were released after 2000, assumed to be on more modern hardware. |
37 | 37 | |
38 | ||
38 | 39 | 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 | |
41 | 42 | |
42 | 43 | ***************************************************************************/ |
43 | 44 | |
r241749 | r241750 | |
46 | 47 | #include "machine/pit8253.h" |
47 | 48 | #include "machine/315_5296.h" |
48 | 49 | #include "sound/2612intf.h" |
49 | #include "sound/upd7759.h" | |
50 | 50 | |
51 | // the layouts are very similar to eachother | |
52 | #include "newufo.lh" | |
53 | #include "ufomini.lh" | |
54 | #include "ufo21.lh" | |
55 | #include "ufo800.lh" | |
56 | 51 | |
57 | ||
58 | 52 | /* simulation parameters */ |
59 | 53 | // x/y/z cabinet dimensions per player (motor range) |
60 | 54 | #define CABINET_WIDTH 400 |
61 | 55 | #define CABINET_DEPTH 400 |
62 | #define CABINET_HEIGHT | |
56 | #define CABINET_HEIGHT 250 | |
63 | 57 | |
64 | 58 | // x/y/z motor speed in hertz |
65 | 59 | #define MOTOR_SPEED 100 |
66 | 60 | |
67 | 61 | // crane size (stepper motor range) |
68 | // note: | |
62 | // note: the game expects this to be around 350 steps per quarter rotation | |
69 | 63 | #define CRANE_SIZE 350 |
70 | 64 | |
71 | 65 | |
r241749 | r241750 | |
75 | 69 | public: |
76 | 70 | ufo_state(const machine_config &mconfig, device_type type, const char *tag) |
77 | 71 | : 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") | |
82 | 73 | { } |
83 | 74 | |
84 | 75 | 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; | |
88 | 76 | |
89 | 77 | struct Player |
90 | 78 | { |
r241749 | r241750 | |
111 | 99 | DECLARE_WRITE8_MEMBER(cp_digits_w); |
112 | 100 | DECLARE_WRITE8_MEMBER(crane_xyz_w); |
113 | 101 | 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); | |
124 | 102 | |
125 | 103 | virtual void machine_reset(); |
126 | 104 | virtual void machine_start(); |
127 | 105 | TIMER_DEVICE_CALLBACK_MEMBER(simulate_xyz); |
128 | TIMER_DEVICE_CALLBACK_MEMBER(update_info); | |
129 | 106 | }; |
130 | 107 | |
131 | 108 | |
132 | 109 | |
110 | ||
133 | 111 | void ufo_state::motor_tick(int p, int m) |
134 | 112 | { |
135 | 113 | float delta = m_player[p].motor[m].speed; |
r241749 | r241750 | |
145 | 123 | m_player[p].motor[m].position = 1; |
146 | 124 | } |
147 | 125 | |
126 | ||
148 | 127 | TIMER_DEVICE_CALLBACK_MEMBER(ufo_state::simulate_xyz) |
149 | 128 | { |
150 | 129 | for (int p = 0; p < 2; p++) |
r241749 | r241750 | |
152 | 131 | motor_tick(p, m); |
153 | 132 | } |
154 | 133 | |
155 | ||
156 | TIMER_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 | ||
181 | 134 | /*************************************************************************** |
182 | 135 | |
183 | 136 | I/O |
r241749 | r241750 | |
191 | 144 | |
192 | 145 | WRITE_LINE_MEMBER(ufo_state::pit_out1) |
193 | 146 | { |
194 | // NMI? | |
195 | if (state) | |
196 | m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); | |
147 | // ? | |
197 | 148 | } |
198 | 149 | |
199 | 150 | WRITE_LINE_MEMBER(ufo_state::pit_out2) |
200 | 151 | { |
201 | // ? | |
152 | // NMI? | |
153 | if (state) | |
154 | m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); | |
202 | 155 | } |
203 | 156 | |
204 | 157 | |
205 | /* generic / UFO board handlers */ | |
206 | ||
207 | /* io1 */ | |
208 | ||
209 | READ8_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 | ||
238 | 158 | WRITE8_MEMBER(ufo_state::stepper_w) |
239 | 159 | { |
240 | 160 | for (int p = 0; p < 2; p++) |
r241749 | r241750 | |
307 | 227 | |
308 | 228 | WRITE8_MEMBER(ufo_state::ufo_lamps_w) |
309 | 229 | { |
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 | ; | |
323 | 231 | } |
324 | 232 | |
325 | 233 | |
326 | /* EX board specific handlers */ | |
327 | ||
328 | /* io1 */ | |
329 | ||
330 | READ8_MEMBER(ufo_state::ex_crane_limits_r) | |
234 | READ8_MEMBER(ufo_state::crane_limits_r) | |
331 | 235 | { |
332 | 236 | 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 | ||
353 | READ8_MEMBER(ufo_state::ex_crane_open_r) | |
354 | { | |
355 | // d0-d3: p1, d4-d7: p2 | |
356 | 237 | 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 | } | |
370 | 238 | |
371 | /* io2 */ | |
372 | ||
373 | WRITE8_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 | ||
380 | WRITE8_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 | ||
391 | WRITE8_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++) | |
403 | 246 | { |
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); | |
407 | 249 | } |
408 | } | |
409 | 250 | |
410 | WRITE8_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 | ||
420 | WRITE8_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 | ||
424 | 255 | // d7: ? |
425 | for (int i = 1; i < 7; i++) | |
426 | output_set_lamp_value(10 + offset * 10 + i, data >> i & 1); | |
427 | } | |
428 | 256 | |
429 | WRITE8_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; | |
434 | 258 | } |
435 | 259 | |
436 | READ8_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 | } | |
443 | 260 | |
444 | 261 | |
445 | /* Memory maps */ | |
446 | 262 | |
447 | 263 | static ADDRESS_MAP_START( ufo_map, AS_PROGRAM, 8, ufo_state ) |
448 | 264 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
r241749 | r241750 | |
454 | 270 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
455 | 271 | AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pit", pit8254_device, read, write) |
456 | 272 | 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) | |
459 | 275 | ADDRESS_MAP_END |
460 | 276 | |
461 | 277 | |
462 | static 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 ) | |
469 | ADDRESS_MAP_END | |
470 | 278 | |
471 | static 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 ) | |
475 | ADDRESS_MAP_END | |
476 | ||
477 | ||
478 | ||
479 | 279 | /*************************************************************************** |
480 | 280 | |
481 | 281 | Inputs |
482 | 282 | |
483 | 283 | ***************************************************************************/ |
484 | 284 | |
485 | static 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 | |
285 | static 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") | |
489 | 289 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("P1 Test") |
490 | 290 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P1 Service Coin") |
491 | 291 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("P1 Credit Clear") |
492 | 292 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) |
493 | 293 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) |
494 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Prize | |
294 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Prize Fell") | |
495 | 295 | |
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") | |
499 | 299 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Test") PORT_CODE(KEYCODE_F1) |
500 | 300 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("P2 Service Coin") |
501 | 301 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE4 ) PORT_NAME("P2 Credit Clear") |
502 | 302 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) |
503 | 303 | 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 | |
304 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Prize Fell") | |
505 | 305 | |
506 | 306 | PORT_START("DSW1") // coinage |
507 | 307 | PORT_DIPNAME( 0x01, 0x01, "UNK1-01" ) |
r241749 | r241750 | |
542 | 342 | PORT_DIPNAME( 0x08, 0x08, "UNK2-08" ) |
543 | 343 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
544 | 344 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
545 | PORT_DIPNAME( 0x10, 0x10, "UNK2-10 | |
345 | PORT_DIPNAME( 0x10, 0x10, "UNK2-10 Enable Prize Sensor" ) | |
546 | 346 | PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) |
547 | 347 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
548 | 348 | PORT_DIPNAME( 0x20, 0x20, "UNK2-20" ) |
r241749 | r241750 | |
556 | 356 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
557 | 357 | INPUT_PORTS_END |
558 | 358 | |
559 | static INPUT_PORTS_START( ufomini ) | |
560 | PORT_INCLUDE( newufo ) | |
561 | 359 | |
562 | PORT_MODIFY("IN2") | |
563 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) | |
564 | INPUT_PORTS_END | |
565 | 360 | |
566 | ||
567 | static 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 ) ) | |
639 | INPUT_PORTS_END | |
640 | ||
641 | static 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 ) ) | |
707 | INPUT_PORTS_END | |
708 | ||
709 | ||
710 | ||
711 | 361 | /*************************************************************************** |
712 | 362 | |
713 | 363 | Machine Config |
r241749 | r241750 | |
720 | 370 | |
721 | 371 | void ufo_state::machine_start() |
722 | 372 | { |
723 | // init/zerofill | |
373 | // init/zerofill | |
724 | 374 | static const float motor_speeds[4] = |
725 | 375 | { 1.0f/CABINET_WIDTH, 1.0f/CABINET_DEPTH, 1.0f/CABINET_HEIGHT, 1.0f/CRANE_SIZE }; |
726 | 376 | |
727 | for (int | |
377 | for (int p = 0; p < 2; p++) | |
728 | 378 | { |
729 | for (int | |
379 | for (int m = 0; m < 4; m++) | |
730 | 380 | { |
731 | 381 | m_player[p].motor[m].running = 0; |
732 | 382 | m_player[p].motor[m].direction = 0; |
733 | 383 | m_player[p].motor[m].position = 0.5; |
734 | 384 | m_player[p].motor[m].speed = motor_speeds[m]; |
735 | 385 | } |
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); | |
744 | 386 | } |
745 | ||
746 | m_stepper = 0; | |
747 | save_item(NAME(m_stepper)); | |
748 | 387 | } |
749 | 388 | |
750 | 389 | WRITE_LINE_MEMBER(ufo_state::ym3438_irq) |
r241749 | r241750 | |
752 | 391 | m_maincpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE); |
753 | 392 | } |
754 | 393 | |
755 | static MACHINE_CONFIG_START( | |
394 | static MACHINE_CONFIG_START( ufo, ufo_state ) | |
756 | 395 | |
757 | 396 | /* basic machine hardware */ |
758 | MCFG_CPU_ADD("maincpu", Z80, | |
397 | MCFG_CPU_ADD("maincpu", Z80, 8000000) | |
759 | 398 | MCFG_CPU_PROGRAM_MAP(ufo_map) |
760 | 399 | MCFG_CPU_IO_MAP(ufo_portmap) |
761 | 400 | |
762 | 401 | 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)) | |
764 | 402 | |
765 | MCFG_DEVICE_ADD("io1", SEGA_315_5296, | |
403 | MCFG_DEVICE_ADD("io1", SEGA_315_5296, 16000000) | |
766 | 404 | // all ports set to input |
767 | 405 | MCFG_315_5296_IN_PORTA_CB(READ8(ufo_state, crane_limits_r)) |
768 | 406 | 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")) | |
770 | 410 | MCFG_315_5296_IN_PORTF_CB(IOPORT("DSW1")) |
771 | 411 | MCFG_315_5296_IN_PORTG_CB(IOPORT("DSW2")) |
772 | MCFG_315_5296_IN_PORTH_CB(IOPORT(" | |
412 | MCFG_315_5296_IN_PORTH_CB(IOPORT("P2")) | |
773 | 413 | |
774 | MCFG_DEVICE_ADD("io2", SEGA_315_5296, | |
414 | MCFG_DEVICE_ADD("io2", SEGA_315_5296, 16000000) | |
775 | 415 | // all ports set to output |
776 | 416 | MCFG_315_5296_OUT_PORTA_CB(WRITE8(ufo_state, stepper_w)) |
777 | 417 | MCFG_315_5296_OUT_PORTB_CB(WRITE8(ufo_state, cp_lamps_w)) |
r241749 | r241750 | |
780 | 420 | MCFG_315_5296_OUT_PORTE_CB(WRITE8(ufo_state, crane_xyz_w)) |
781 | 421 | MCFG_315_5296_OUT_PORTF_CB(WRITE8(ufo_state, crane_xyz_w)) |
782 | 422 | MCFG_315_5296_OUT_PORTG_CB(WRITE8(ufo_state, ufo_lamps_w)) |
423 | // MCFG_315_5296_OUT_PORTH_CB(NOOP) | |
783 | 424 | |
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) | |
786 | 427 | MCFG_PIT8253_OUT0_HANDLER(WRITELINE(ufo_state, pit_out0)) |
787 | MCFG_PIT8253_CLK1( | |
428 | MCFG_PIT8253_CLK1(8000000/256) | |
788 | 429 | MCFG_PIT8253_OUT1_HANDLER(WRITELINE(ufo_state, pit_out1)) |
789 | MCFG_PIT8253_CLK2( | |
430 | MCFG_PIT8253_CLK2(8000000/256) | |
790 | 431 | MCFG_PIT8253_OUT2_HANDLER(WRITELINE(ufo_state, pit_out2)) |
791 | 432 | |
792 | 433 | /* no video! */ |
r241749 | r241750 | |
794 | 435 | /* sound hardware */ |
795 | 436 | MCFG_SPEAKER_STANDARD_MONO("mono") |
796 | 437 | |
797 | MCFG_SOUND_ADD("ym", YM3438, | |
438 | MCFG_SOUND_ADD("ym", YM3438, 8000000) | |
798 | 439 | MCFG_YM2612_IRQ_HANDLER(WRITELINE(ufo_state, ym3438_irq)) |
799 | 440 | MCFG_SOUND_ROUTE(0, "mono", 0.40) |
800 | 441 | MCFG_SOUND_ROUTE(1, "mono", 0.40) |
801 | 442 | MACHINE_CONFIG_END |
802 | 443 | |
803 | static MACHINE_CONFIG_DERIVED( ufomini, newufo ) | |
804 | 444 | |
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) | |
810 | MACHINE_CONFIG_END | |
811 | 445 | |
812 | ||
813 | static 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) | |
834 | MACHINE_CONFIG_END | |
835 | ||
836 | static 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) | |
856 | MACHINE_CONFIG_END | |
857 | ||
858 | ||
859 | ||
860 | 446 | /*************************************************************************** |
861 | 447 | |
862 | 448 | Game drivers |
r241749 | r241750 | |
904 | 490 | ROM_END |
905 | 491 | |
906 | 492 | |
907 | GAMEL( 1991, newufo, 0, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (standard)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_newufo ) | |
908 | GAMEL( 1991, newufo_sonic, newufo, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Sonic The Hedgehog)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_newufo ) | |
909 | GAMEL( 1991, newufo_nfl, newufo, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Team NFL)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_newufo ) | |
910 | GAMEL( 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 ) | |
911 | GAMEL( 1991, ufomini, 0, ufomini, ufomini, driver_device, 0, ROT0, "Sega", "UFO Catcher Mini", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_ufomini ) | |
912 | GAMEL( 1996, ufo21, 0, ufo21, ufo21, driver_device, 0, ROT0, "Sega", "UFO Catcher 21", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_ufo21 ) | |
913 | GAMEL( 1998, ufo800, 0, ufo800, ufo800, driver_device, 0, ROT0, "Sega", "UFO Catcher 800", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_ufo800 ) | |
493 | GAME (1991, newufo, 0, ufo, ufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (standard)", GAME_MECHANICAL ) | |
494 | GAME (1991, newufo_sonic, newufo, ufo, ufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Sonic The Hedgehog)", GAME_MECHANICAL ) | |
495 | GAME (1991, newufo_nfl, newufo, ufo, ufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Team NFL)", GAME_MECHANICAL ) | |
496 | GAME (1991, newufo_xmas, newufo, ufo, ufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Christmas season ROM kit)", GAME_MECHANICAL ) | |
497 | GAME (1991, ufomini, 0, ufo, ufo, driver_device, 0, ROT0, "Sega", "UFO Catcher Mini", GAME_NOT_WORKING | GAME_MECHANICAL ) | |
498 | GAME (1996, ufo21, 0, ufo, ufo, driver_device, 0, ROT0, "Sega", "UFO Catcher 21", GAME_NOT_WORKING | GAME_MECHANICAL ) | |
499 | GAME (1998, ufo800, 0, ufo, ufo, driver_device, 0, ROT0, "Sega", "UFO Catcher 800", GAME_NOT_WORKING | GAME_MECHANICAL ) |
r241749 | r241750 | |
---|---|---|
62 | 62 | address_space &space = m_maincpu->space(AS_PROGRAM); |
63 | 63 | |
64 | 64 | /* 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(); | |
67 | 67 | memcpy(m_slapstic_base, &m_slapstic_source[m_slapstic_current_bank * 0x2000], 0x2000); |
68 | 68 | |
69 | 69 | /* reset all the banks */ |
r241749 | r241750 | |
97 | 97 | |
98 | 98 | void starwars_state::esb_slapstic_tweak(address_space &space, offs_t offset) |
99 | 99 | { |
100 | int new_bank = | |
100 | int new_bank = slapstic_tweak(space, offset); | |
101 | 101 | |
102 | 102 | /* update for the new bank */ |
103 | 103 | if (new_bank != m_slapstic_current_bank) |
r241749 | r241750 | |
331 | 331 | MCFG_CPU_PERIODIC_INT_DRIVER(starwars_state, irq0_line_assert, CLOCK_3KHZ / 12) |
332 | 332 | MCFG_WATCHDOG_TIME_INIT(attotime::from_hz(CLOCK_3KHZ / 128)) |
333 | 333 | |
334 | MCFG_SLAPSTIC_ADD("slapstic") | |
335 | ||
336 | 334 | MCFG_CPU_ADD("audiocpu", M6809, MASTER_CLOCK / 8) |
337 | 335 | MCFG_CPU_PROGRAM_MAP(sound_map) |
338 | 336 | |
r241749 | r241750 | |
526 | 524 | UINT8 *rom = memregion("maincpu")->base(); |
527 | 525 | |
528 | 526 | /* init the slapstic */ |
529 | | |
527 | slapstic_init(machine(), 101); | |
530 | 528 | m_slapstic_source = &rom[0x14000]; |
531 | 529 | m_slapstic_base = &rom[0x08000]; |
532 | 530 |
r241749 | r241750 | |
---|---|---|
1021 | 1021 | MCFG_SOUND_ADD("cdda", CDDA, 0) |
1022 | 1022 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
1023 | 1023 | 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) | |
1027 | 1024 | MACHINE_CONFIG_END |
1028 | 1025 | |
1029 | 1026 | /* |
r241749 | r241750 | |
---|---|---|
3178 | 3178 | ROM_LOAD( "palce16v8-d77-14.bin", 0x0800, 0x0117, CRC(7427e777) SHA1(e692cedb13e5bc02edc4b25e9dcea51e6715de85) ) |
3179 | 3179 | ROM_END |
3180 | 3180 | |
3181 | ROM_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) ) | |
3213 | ROM_END | |
3214 | ||
3215 | 3181 | ROM_START( arkretrnj ) |
3216 | 3182 | ROM_REGION(0x200000, "maincpu", 0) /* 68020 code */ |
3217 | 3183 | ROM_LOAD32_BYTE("e36-11.20", 0x000000, 0x040000, CRC(b50cfb92) SHA1(dac69fc9ef03315b11bb94d19e3dfdc8867b08ed) ) |
r241749 | r241750 | |
4154 | 4120 | GAME( 1996, pbobble3u,pbobble3, f3, f3, taito_f3_state, pbobble3, ROT0, "Taito Corporation", "Puzzle Bobble 3 (Ver 2.1A 1996/09/27)", 0 ) |
4155 | 4121 | GAME( 1996, pbobble3j,pbobble3, f3, f3, taito_f3_state, pbobble3, ROT0, "Taito Corporation", "Puzzle Bobble 3 (Ver 2.1J 1996/09/27)", 0 ) |
4156 | 4122 | GAME( 1997, arkretrn, 0, f3, f3, taito_f3_state, arkretrn, ROT0, "Taito Corporation", "Arkanoid Returns (Ver 2.02O 1997/02/10)", 0 ) |
4157 | GAME( 1997, arkretrnu,arkretrn, f3, f3, taito_f3_state, arkretrn, ROT0, "Taito Corporation", "Arkanoid Returns (Ver 2.02A 1997/02/10)", 0 ) | |
4158 | 4123 | GAME( 1997, arkretrnj,arkretrn, f3, f3, taito_f3_state, arkretrn, ROT0, "Taito Corporation", "Arkanoid Returns (Ver 2.02J 1997/02/10)", 0 ) |
4159 | 4124 | GAME( 1997, kirameki, 0, f3_224a, f3, taito_f3_state, kirameki, ROT0, "Taito Corporation", "Kirameki Star Road (Ver 2.10J 1997/08/29)", 0 ) |
4160 | 4125 | GAME( 1997, puchicar, 0, f3, f3, taito_f3_state, puchicar, ROT0, "Taito Corporation", "Puchi Carat (Ver 2.02O 1997/10/29)", 0 ) |
r241749 | r241750 | |
---|---|---|
27 | 27 | |
28 | 28 | #include "emu.h" |
29 | 29 | #include "cpu/i386/i386.h" |
30 | #include "machine/ | |
30 | #include "machine/pci.h" | |
31 | 31 | #include "machine/pcshare.h" |
32 | 32 | #include "machine/pckeybrd.h" |
33 | 33 | #if ENABLE_VGA |
r241749 | r241750 | |
---|---|---|
2894 | 2894 | ROM_LOAD( "963a25.d5", 0x00000, 0x80000, CRC(fca078c7) SHA1(3e1124d72c9db4cb11d8de6c44b7aeca967f44e1) ) |
2895 | 2895 | ROM_END |
2896 | 2896 | |
2897 | ||
2897 | 2898 | ROM_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 |
2898 | 2899 | 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) ) | |
2900 | ROM_LOAD16_BYTE( "unk3.i17", 0x00000, 0x20000, CRC(537eb047) SHA1(97e6dbc486c7d057355db7fcbdc0a2c2cad2c653) ) | |
2900 | 2901 | 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 ) | |
2903 | 2904 | |
2904 | 2905 | ROM_REGION( 0x10000, "audiocpu", 0 ) |
2905 | 2906 | ROM_LOAD( "963e20.g13", 0x00000, 0x08000, CRC(1692a6d6) SHA1(68c3419012b2863e91a7d7e479fce5ceabb10b88) ) |
r241749 | r241750 | |
2928 | 2929 | ROM_LOAD( "963a25.d5", 0x00000, 0x80000, CRC(fca078c7) SHA1(3e1124d72c9db4cb11d8de6c44b7aeca967f44e1) ) |
2929 | 2930 | ROM_END |
2930 | 2931 | |
2932 | ||
2931 | 2933 | ROM_START( tmntj ) |
2932 | 2934 | ROM_REGION( 0x60000, "maincpu", 0 ) /* 2*128k and 2*64k for 68000 code */ |
2933 | 2935 | ROM_LOAD16_BYTE( "963_223.j17", 0x00000, 0x20000, CRC(0d34a5ff) SHA1(a387f3e7c727dc66ebb0e1f40e4ab8dc83f647e5) ) |
r241749 | r241750 | |
4100 | 4102 | GAME( 1989, tmntua, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (US 4 Players, set 2)", GAME_SUPPORTS_SAVE ) |
4101 | 4103 | GAME( 1989, tmht, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 4 Players, set 1)", GAME_SUPPORTS_SAVE ) |
4102 | 4104 | GAME( 1989, tmhta, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 4 Players, set 2)", GAME_SUPPORTS_SAVE ) |
4103 | GAME( 1989, tmhtb, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK | |
4105 | GAME( 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 | |
4104 | 4106 | GAME( 1990, tmntj, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (Japan 4 Players)", GAME_SUPPORTS_SAVE ) |
4105 | 4107 | GAME( 1989, tmht2p, tmnt, tmnt, tmnt2p, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 2 Players, set 1)", GAME_SUPPORTS_SAVE ) |
4106 | 4108 | GAME( 1989, tmht2pa, tmnt, tmnt, tmnt2p, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 2 Players, set 2)", GAME_SUPPORTS_SAVE ) |
r241749 | r241750 | |
---|---|---|
5206 | 5206 | ROM_END |
5207 | 5207 | |
5208 | 5208 | |
5209 | ROM_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) ) | |
5232 | ROM_END | |
5233 | ||
5234 | ||
5235 | 5209 | ROM_START( bbakraidj ) |
5236 | 5210 | ROM_REGION( 0x200000, "maincpu", 0 ) /* Main 68k code */ |
5237 | 5211 | ROM_LOAD16_BYTE( "prg0u022.new", 0x000000, 0x080000, CRC(fa8d38d3) SHA1(aba91d87a8a62d3fe1139b4437b16e2f844264ad) ) |
r241749 | r241750 | |
5370 | 5344 | // Battle Bakraid |
5371 | 5345 | // the 'unlimited' version is a newer revision of the code |
5372 | 5346 | GAME( 1999, bbakraid, 0, bbakraid, bbakraid, toaplan2_state, bbakraid, ROT270, "Eighting", "Battle Bakraid - Unlimited Version (USA) (Tue Jun 8 1999)", GAME_SUPPORTS_SAVE ) |
5373 | GAME( 1999, bbakraidc, bbakraid, bbakraid, bbakraid, toaplan2_state, bbakraid, ROT270, "Eighting", "Battle Bakraid - Unlimited Version (China) (Tue Jun 8 1999)", GAME_SUPPORTS_SAVE ) | |
5374 | 5347 | GAME( 1999, bbakraidj, bbakraid, bbakraid, bbakraid, toaplan2_state, bbakraid, ROT270, "Eighting", "Battle Bakraid - Unlimited Version (Japan) (Tue Jun 8 1999)", GAME_SUPPORTS_SAVE ) |
5375 | 5348 | // older revision of the code |
5376 | 5349 | GAME( 1999, bbakraidja, bbakraid, bbakraid, bbakraid, toaplan2_state, bbakraid, ROT270, "Eighting", "Battle Bakraid (Japan) (Wed Apr 7 1999)", GAME_SUPPORTS_SAVE ) |
r241749 | r241750 | |
---|---|---|
1 | 1 | /* |
2 | 2 | |
3 | United Amusement | |
3 | United Amusement PC-Engine based hardware | |
4 | 4 | Driver by Mariusz Wojcieszek |
5 | 5 | Thanks for Charles MacDonald for hardware docs |
6 | 6 | |
r241749 | r241750 | |
12 | 12 | |
13 | 13 | History |
14 | 14 | |
15 | In 1989 United Amusement | |
15 | In 1989 United Amusement (a large operator of arcades in the US at that | |
16 | 16 | time) developed a JAMMA interface for the PC-Engine with NEC's blessing. NEC |
17 | 17 | pulled funding for the project before mass production began, and it never |
18 | 18 | took off. |
r241749 | r241750 | |
---|---|---|
606 | 606 | |
607 | 607 | ***************************************************************************/ |
608 | 608 | |
609 | ||
610 | 609 | ROM_START( vigilant ) |
611 | 610 | 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) ) | |
614 | 613 | /* 0x20000-0x2ffff empty */ |
615 | 614 | |
616 | 615 | ROM_REGION( 0x10000, "soundcpu", 0 ) /* 64k for sound */ |
617 | ROM_LOAD( " | |
616 | ROM_LOAD( "g05_c02.bin", 0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) ) | |
618 | 617 | |
619 | 618 | 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) ) | |
622 | 621 | |
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) ) | |
632 | 631 | |
633 | 632 | 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) ) | |
637 | 636 | |
638 | 637 | ROM_REGION( 0x10000, "samples", 0 ) /* samples */ |
639 | ROM_LOAD( " | |
638 | ROM_LOAD( "d04_c01.bin", 0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) ) | |
640 | 639 | |
641 | 640 | ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected */ |
642 | 641 | ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) ) |
643 | 642 | ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) ) |
644 | ROM_LOAD( "vg_b-1b.ic1", | |
643 | ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) ) | |
645 | 644 | ROM_END |
646 | 645 | |
646 | ||
647 | ||
647 | 648 | ROM_START( vigilant1 ) |
648 | 649 | 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) ) | |
651 | 652 | /* 0x20000-0x2ffff empty */ |
652 | 653 | |
653 | 654 | ROM_REGION( 0x10000, "soundcpu", 0 ) /* 64k for sound */ |
654 | ROM_LOAD( " | |
655 | ROM_LOAD( "g05_c02.bin", 0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) ) | |
655 | 656 | |
656 | 657 | 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) ) | |
659 | 660 | |
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) ) | |
669 | 670 | |
670 | 671 | 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) ) | |
674 | 675 | |
675 | 676 | ROM_REGION( 0x10000, "samples", 0 ) /* samples */ |
676 | ROM_LOAD( " | |
677 | ROM_LOAD( "d04_c01.bin", 0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) ) | |
677 | 678 | |
678 | 679 | ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected */ |
679 | 680 | ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) ) |
680 | 681 | ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) ) |
681 | ROM_LOAD( "vg_b-1b.ic1", | |
682 | ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) ) | |
682 | 683 | ROM_END |
683 | 684 | |
684 | ROM_START( vigilantu ) /* Need to determine the correct original roms & IC locations for this set */ | |
685 | ||
686 | ROM_START( vigilantu ) | |
685 | 687 | ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */ |
686 | 688 | ROM_LOAD( "a-8h", 0x00000, 0x08000, CRC(8d15109e) SHA1(9ef57047a0b53cd0143a260193b33e3d5680ca71) ) |
687 | 689 | ROM_LOAD( "a-8l", 0x10000, 0x10000, CRC(7f95799b) SHA1(a371671c3c26976314aaac4e410bff0f13a8a085) ) |
r241749 | r241750 | |
694 | 696 | ROM_LOAD( "f05_c08.bin", 0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) ) |
695 | 697 | ROM_LOAD( "h05_c09.bin", 0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) ) |
696 | 698 | |
697 | ROM_REGION( 0x80000, "gfx2", 0 ) | |
699 | ROM_REGION( 0x80000, "gfx2", 0 ) | |
698 | 700 | ROM_LOAD( "n07_c12.bin", 0x00000, 0x10000, CRC(10af8eb2) SHA1(664b178b248babc43a9af0fe140fe57bc7367762) ) |
699 | 701 | ROM_LOAD( "k07_c10.bin", 0x10000, 0x10000, CRC(9576f304) SHA1(0ec2a7d3d82208e2a9a4ef9ab2824e6fe26ebbe5) ) |
700 | 702 | ROM_LOAD( "o07_c13.bin", 0x20000, 0x10000, CRC(b1d9d4dc) SHA1(1aacf6b0ff8d102880d3dce3b55cd1488edb90cf) ) |
r241749 | r241750 | |
715 | 717 | ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected */ |
716 | 718 | ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) ) |
717 | 719 | ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) ) |
718 | ROM_LOAD( "vg_b-1b.ic1", | |
720 | ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) ) | |
719 | 721 | ROM_END |
720 | 722 | |
721 | ROM_START( vigilantu2 ) | |
723 | ROM_START( vigilantu2 ) | |
722 | 724 | ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */ |
723 | 725 | ROM_LOAD( "vg-a-8h-g.bin", 0x00000, 0x08000, CRC(9444c04e) SHA1(463d2dae48df2d237bd19d5e16cab032df0d9052) ) /* labeled Rev. G */ |
724 | 726 | ROM_LOAD( "a-8l", 0x10000, 0x10000, CRC(7f95799b) SHA1(a371671c3c26976314aaac4e410bff0f13a8a085) ) |
r241749 | r241750 | |
731 | 733 | ROM_LOAD( "f05_c08.bin", 0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) ) |
732 | 734 | ROM_LOAD( "h05_c09.bin", 0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) ) |
733 | 735 | |
734 | ROM_REGION( 0x80000, "gfx2", 0 ) | |
736 | ROM_REGION( 0x80000, "gfx2", 0 ) | |
735 | 737 | ROM_LOAD( "n07_c12.bin", 0x00000, 0x10000, CRC(10af8eb2) SHA1(664b178b248babc43a9af0fe140fe57bc7367762) ) |
736 | 738 | ROM_LOAD( "k07_c10.bin", 0x10000, 0x10000, CRC(9576f304) SHA1(0ec2a7d3d82208e2a9a4ef9ab2824e6fe26ebbe5) ) |
737 | 739 | ROM_LOAD( "o07_c13.bin", 0x20000, 0x10000, CRC(b1d9d4dc) SHA1(1aacf6b0ff8d102880d3dce3b55cd1488edb90cf) ) |
r241749 | r241750 | |
752 | 754 | ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected - sourced from this board */ |
753 | 755 | ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) ) |
754 | 756 | ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) ) |
755 | ROM_LOAD( "vg_b-1b.ic1", | |
757 | ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) ) | |
756 | 758 | ROM_END |
757 | 759 | |
758 | 760 | ROM_START( vigilantj ) |
759 | 761 | 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) ) | |
762 | 764 | /* 0x20000-0x2ffff empty */ |
763 | 765 | |
764 | 766 | 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) ) | |
793 | ROM_END | |
794 | ||
795 | ROM_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 */ | |
802 | 767 | ROM_LOAD( "g05_c02.bin", 0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) ) |
803 | 768 | |
804 | 769 | ROM_REGION( 0x20000, "gfx1", 0 ) |
805 | 770 | ROM_LOAD( "f05_c08.bin", 0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) ) |
806 | 771 | ROM_LOAD( "h05_c09.bin", 0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) ) |
807 | 772 | |
808 | ROM_REGION( 0x80000, "gfx2", 0 ) | |
773 | ROM_REGION( 0x80000, "gfx2", 0 ) | |
809 | 774 | ROM_LOAD( "n07_c12.bin", 0x00000, 0x10000, CRC(10af8eb2) SHA1(664b178b248babc43a9af0fe140fe57bc7367762) ) |
810 | 775 | ROM_LOAD( "k07_c10.bin", 0x10000, 0x10000, CRC(9576f304) SHA1(0ec2a7d3d82208e2a9a4ef9ab2824e6fe26ebbe5) ) |
811 | 776 | ROM_LOAD( "o07_c13.bin", 0x20000, 0x10000, CRC(b1d9d4dc) SHA1(1aacf6b0ff8d102880d3dce3b55cd1488edb90cf) ) |
r241749 | r241750 | |
823 | 788 | ROM_REGION( 0x10000, "samples", 0 ) /* samples */ |
824 | 789 | ROM_LOAD( "d04_c01.bin", 0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) ) |
825 | 790 | |
826 | ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 | |
791 | ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 */ | |
827 | 792 | ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) ) |
828 | 793 | ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) ) |
829 | ROM_LOAD( "vg_b-1b.ic1", | |
794 | ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) ) | |
830 | 795 | ROM_END |
831 | 796 | |
832 | ||
833 | 797 | ROM_START( kikcubic ) |
834 | 798 | ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */ |
835 | 799 | ROM_LOAD( "mqj-p0", 0x00000, 0x08000, CRC(9cef394a) SHA1(be9cc78420b4c35f8f9523b529bd56315749762c) ) |
r241749 | r241750 | |
889 | 853 | ROM_LOAD( "7s", 0x0120, 0x0020, CRC(face0cbb) SHA1(c56aea3b7aaabbd4ff1b4546fcad94f51b473cde) ) /* unknown (bad read?) */ |
890 | 854 | ROM_END |
891 | 855 | |
892 | ||
893 | 856 | ROM_START( buccanrs ) |
894 | 857 | ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */ |
895 | 858 | ROM_LOAD( "11.u58", 0x00000, 0x10000, CRC(bf1d7e6f) SHA1(55dcf993515b57c3eb1fab98097a2171df3e38ed) ) // both halves are identical (correct for rom type on this board tho) |
r241749 | r241750 | |
963 | 926 | ROM_LOAD( "prom2.u99", 0x0300, 0x0100, CRC(e0aa8869) SHA1(ac8bdfeba69420ba56ec561bf3d0f1229d02cea2) ) |
964 | 927 | ROM_END |
965 | 928 | |
966 | GAME( 1988, vigilant, 0, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (World, Rev E)", GAME_NO_COCKTAIL ) | |
967 | GAME( 1988, vigilant1, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (World, Rev C)", GAME_NO_COCKTAIL ) | |
968 | GAME( 1988, vigilantu, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East USA license)", "Vigilante (US)", GAME_NO_COCKTAIL ) | |
969 | GAME( 1988, vigilantu2,vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East USA license)", "Vigilante (US, Rev G)", GAME_NO_COCKTAIL ) | |
970 | GAME( 1988, vigilantj, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (Japan, Rev D)", GAME_NO_COCKTAIL ) | |
971 | GAME( 1988, vigilantb, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "bootleg", "Vigilante (bootleg)", GAME_NO_COCKTAIL ) | |
972 | ||
973 | GAME( 1988, kikcubic, 0, kikcubic, kikcubic, driver_device, 0, ROT0, "Irem", "Meikyu Jima (Japan)", GAME_NO_COCKTAIL ) /* English title is Kickle Cubicle */ | |
974 | GAME( 1988, kikcubicb, kikcubic, kikcubic, kikcubic, driver_device, 0, ROT0, "bootleg", "Kickle Cubele", GAME_NO_COCKTAIL ) | |
975 | ||
976 | GAME( 1989, buccanrs, 0, buccanrs, buccanrs, driver_device, 0, ROT0, "Duintronic", "Buccaneers (set 1)", GAME_NO_COCKTAIL ) | |
977 | GAME( 1989, buccanrsa, buccanrs, buccanrs, buccanra, driver_device, 0, ROT0, "Duintronic", "Buccaneers (set 2)", GAME_NO_COCKTAIL ) | |
929 | GAME( 1988, vigilant, 0, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (World, set 1)", GAME_NO_COCKTAIL ) | |
930 | GAME( 1988, vigilant1,vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (World, set 2)", GAME_NO_COCKTAIL ) | |
931 | GAME( 1988, vigilantu,vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East USA license)", "Vigilante (US)", GAME_NO_COCKTAIL ) | |
932 | GAME( 1988, vigilantu2,vigilant,vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East USA license)", "Vigilante (US) - Rev. G", GAME_NO_COCKTAIL ) | |
933 | GAME( 1988, vigilantj,vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (Japan)", GAME_NO_COCKTAIL ) | |
934 | GAME( 1988, kikcubic, 0, kikcubic, kikcubic, driver_device, 0, ROT0, "Irem", "Meikyu Jima (Japan)", GAME_NO_COCKTAIL ) /* English title is Kickle Cubicle */ | |
935 | GAME( 1988, kikcubicb,kikcubic, kikcubic, kikcubic, driver_device, 0, ROT0, "bootleg", "Kickle Cubele", GAME_NO_COCKTAIL ) | |
936 | GAME( 1989, buccanrs, 0, buccanrs, buccanrs, driver_device, 0, ROT0, "Duintronic", "Buccaneers (set 1)", GAME_NO_COCKTAIL ) | |
937 | GAME( 1989, buccanrsa,buccanrs, buccanrs, buccanra, driver_device, 0, ROT0, "Duintronic", "Buccaneers (set 2)", GAME_NO_COCKTAIL ) |
r241749 | r241750 | |
---|---|---|
184 | 184 | MCFG_CPU_ADD("maincpu", M68010, ATARI_CLOCK_14MHz/2) |
185 | 185 | MCFG_CPU_PROGRAM_MAP(main_map) |
186 | 186 | |
187 | MCFG_SLAPSTIC_ADD("slapstic") // where is this hooked up here? | |
188 | ||
189 | 187 | MCFG_MACHINE_RESET_OVERRIDE(vindictr_state,vindictr) |
190 | 188 | |
191 | 189 | MCFG_ATARI_EEPROM_2804_ADD("eeprom") |
r241749 | r241750 | |
---|---|---|
283 | 283 | |
284 | 284 | #include "emu.h" |
285 | 285 | #include "cpu/powerpc/ppc.h" |
286 | #include "machine/ | |
286 | #include "machine/pci.h" | |
287 | 287 | #include "machine/ataintf.h" |
288 | 288 | #include "machine/idehd.h" |
289 | 289 | #include "machine/timekpr.h" |
r241749 | r241750 | |
---|---|---|
14 | 14 | |
15 | 15 | #include "emu.h" |
16 | 16 | #include "cpu/i386/i386.h" |
17 | #include "machine/ | |
17 | #include "machine/pci.h" | |
18 | 18 | #include "machine/pcshare.h" |
19 | 19 | #include "machine/pckeybrd.h" |
20 | 20 | #include "machine/idectrl.h" |
r241749 | r241750 | |
---|---|---|
40 | 40 | |
41 | 41 | #include "emu.h" |
42 | 42 | #include "cpu/i386/i386.h" |
43 | #include "machine/ | |
43 | #include "machine/pci.h" | |
44 | 44 | #include "machine/pcshare.h" |
45 | 45 | #include "machine/pckeybrd.h" |
46 | 46 | #include "machine/idectrl.h" |
r241749 | r241750 | |
---|---|---|
184 | 184 | MCFG_CPU_PROGRAM_MAP(main_map) |
185 | 185 | MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen) |
186 | 186 | |
187 | MCFG_SLAPSTIC_ADD("slapstic") | |
188 | ||
189 | 187 | MCFG_MACHINE_RESET_OVERRIDE(xybots_state,xybots) |
190 | 188 | |
191 | 189 | MCFG_ATARI_EEPROM_2804_ADD("eeprom") |
r241749 | r241750 | |
---|---|---|
578 | 578 | static MACHINE_CONFIG_START( magicbub, yunsun16_state ) |
579 | 579 | |
580 | 580 | /* basic machine hardware */ |
581 | MCFG_CPU_ADD("maincpu", M68000, | |
581 | MCFG_CPU_ADD("maincpu", M68000, 16000000) | |
582 | 582 | MCFG_CPU_PROGRAM_MAP(main_map) |
583 | 583 | MCFG_CPU_VBLANK_INT_DRIVER("screen", yunsun16_state, irq2_line_hold) |
584 | 584 | |
585 | MCFG_CPU_ADD("audiocpu", Z80, | |
585 | MCFG_CPU_ADD("audiocpu", Z80, 3000000) /* ? */ | |
586 | 586 | MCFG_CPU_PROGRAM_MAP(sound_map) |
587 | 587 | MCFG_CPU_IO_MAP(sound_port_map) |
588 | 588 | |
r241749 | r241750 | |
601 | 601 | /* sound hardware */ |
602 | 602 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
603 | 603 | |
604 | MCFG_SOUND_ADD("ymsnd", YM3812, | |
604 | MCFG_SOUND_ADD("ymsnd", YM3812, 4000000) | |
605 | 605 | MCFG_YM3812_IRQ_HANDLER(WRITELINE(yunsun16_state, soundirq)) |
606 | 606 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) |
607 | 607 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) |
608 | 608 | |
609 | MCFG_OKIM6295_ADD("oki", | |
609 | MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) | |
610 | 610 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) |
611 | 611 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) |
612 | 612 | MACHINE_CONFIG_END |
r241749 | r241750 | |
619 | 619 | static MACHINE_CONFIG_START( shocking, yunsun16_state ) |
620 | 620 | |
621 | 621 | /* basic machine hardware */ |
622 | MCFG_CPU_ADD("maincpu", M68000, | |
622 | MCFG_CPU_ADD("maincpu", M68000, 16000000) | |
623 | 623 | MCFG_CPU_PROGRAM_MAP(main_map) |
624 | 624 | MCFG_CPU_VBLANK_INT_DRIVER("screen", yunsun16_state, irq2_line_hold) |
625 | 625 | |
r241749 | r241750 | |
637 | 637 | /* sound hardware */ |
638 | 638 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
639 | 639 | |
640 | MCFG_OKIM6295_ADD("oki", | |
640 | MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) | |
641 | 641 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) |
642 | 642 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) |
643 | 643 | MACHINE_CONFIG_END |
r241749 | r241750 | |
715 | 715 | ROM_LOAD16_BYTE( "magbuble.u32", 0x000001, 0x040000, CRC(f6ea7004) SHA1(069541e37b60370810451616ee66bbd05dc10137) ) |
716 | 716 | |
717 | 717 | ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 Code */ |
718 | ROM_LOAD( "u143 | |
718 | ROM_LOAD( "magbuble.143", 0x00000, 0x10000, CRC(04192753) SHA1(9c56ba70e1d074906ea1dc593c2a8516c6ba2074) ) | |
719 | 719 | |
720 | 720 | ROM_REGION( 0x200000*8, "gfx1", ROMREGION_ERASEFF ) /* 16x16x8 */ |
721 | 721 | ROMX_LOAD( "magbuble.u67", 0x000000, 0x080000, CRC(6355e57d) SHA1(5e9234dd474ddcf0a9e1001080f3de11c7d0ee55) , ROM_GROUPWORD | ROM_SKIP(6)) |
r241749 | r241750 | |
724 | 724 | ROMX_LOAD( "magbuble.u70", 0x000006, 0x080000, CRC(37794837) SHA1(11597614e1e048544326fbbe281b364278d6350d) , ROM_GROUPWORD | ROM_SKIP(6)) |
725 | 725 | |
726 | 726 | 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) ) | |
731 | 731 | |
732 | 732 | ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ |
733 | ROM_LOAD( "u131 | |
733 | ROM_LOAD( "magbuble.131", 0x000000, 0x020000, CRC(03e04e89) SHA1(7d80e6a7be2322e32e40acae72bedd8d7e90ad33) ) | |
734 | 734 | |
735 | 735 | ROM_END |
736 | 736 | |
r241749 | r241750 | |
741 | 741 | ROM_LOAD16_BYTE( "u32.bin", 0x000001, 0x040000, CRC(58f885ad) SHA1(e66f5bb1ac0acd9abc2def439af7f932c3a09cbd) ) |
742 | 742 | |
743 | 743 | ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 Code */ |
744 | ROM_LOAD( "u143 | |
744 | ROM_LOAD( "magbuble.143", 0x00000, 0x10000, CRC(04192753) SHA1(9c56ba70e1d074906ea1dc593c2a8516c6ba2074) ) | |
745 | 745 | |
746 | 746 | ROM_REGION( 0x200000*8, "gfx1", ROMREGION_ERASEFF ) /* 16x16x8 */ |
747 | 747 | ROMX_LOAD( "u67.bin", 0x000000, 0x080000, CRC(89523dcd) SHA1(edea2bbec615aa253d940bbc3bbdb33f6873a8ee) , ROM_GROUPWORD | ROM_SKIP(6)) |
r241749 | r241750 | |
754 | 754 | ROMX_LOAD( "u74.bin", 0x200006, 0x080000, CRC(81ff4910) SHA1(69241fe2d20b53984aa67f17d8da32e1b74ce696) , ROM_GROUPWORD | ROM_SKIP(6)) |
755 | 755 | |
756 | 756 | 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) ) | |
761 | 761 | |
762 | 762 | ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ |
763 | ROM_LOAD( "u131 | |
763 | ROM_LOAD( "magbuble.131", 0x000000, 0x020000, CRC(03e04e89) SHA1(7d80e6a7be2322e32e40acae72bedd8d7e90ad33) ) | |
764 | 764 | |
765 | 765 | ROM_END |
766 | 766 | |
767 | ROM_START( magicbubb ) /* Found on a YS-0211 PCB like below */ | |
768 | 767 | |
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 | ||
795 | ROM_END | |
796 | ||
797 | ||
798 | 768 | /*************************************************************************** |
799 | 769 | |
800 | 770 | YunSung YS-0211 based games: |
r241749 | r241750 | |
802 | 772 | Paparazzi (c) 1996 (no PCB label but looks identical) |
803 | 773 | Shocking (c) 1997 |
804 | 774 | Bomb Kick (c) 1998 |
805 | Magic Bubble (c) 199? | |
806 | 775 | |
807 | 776 | PCB Layout |
808 | 777 | ---------- |
r241749 | r241750 | |
987 | 956 | |
988 | 957 | ***************************************************************************/ |
989 | 958 | |
990 | GAME( 199?, magicbub, 0, magicbub, magicbub, yunsun16_state, magicbub, ROT0, "Yun Sung", "Magic Bubble", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) | |
991 | GAME( 199?, magicbuba, magicbub, magicbub, magicbua, yunsun16_state, magicbub, ROT0, "Yun Sung", "Magic Bubble (Adult version, YS-1302 PCB)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) | |
992 | GAME( 199?, magicbubb, magicbub, shocking, magicbua, driver_device, 0, ROT0, "Yun Sung", "Magic Bubble (Adult version, YS-0211 PCB)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) | |
993 | GAME( 1996, paprazzi, 0, shocking, paprazzi, driver_device, 0, ROT270, "Yun Sung", "Paparazzi", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) | |
994 | GAME( 1997, shocking, 0, shocking, shocking, driver_device, 0, ROT0, "Yun Sung", "Shocking", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) | |
995 | GAME( 1997, shockingk, shocking, shocking, shocking, driver_device, 0, ROT0, "Yun Sung", "Shocking (Korea)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) | |
996 | GAME( 1998, bombkick, 0, shocking, bombkick, driver_device, 0, ROT0, "Yun Sung", "Bomb Kick (set 1)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) | |
997 | GAME( 1998, bombkicka, bombkick, shocking, bombkick, driver_device, 0, ROT0, "Yun Sung", "Bomb Kick (set 2)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) | |
959 | GAME( 199?, magicbub, 0, magicbub, magicbub, yunsun16_state, magicbub, ROT0, "Yun Sung", "Magic Bubble", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) | |
960 | GAME( 199?, magicbuba, magicbub, magicbub, magicbua, yunsun16_state, magicbub, ROT0, "Yun Sung", "Magic Bubble (Adult version)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) | |
961 | GAME( 1996, paprazzi, 0, shocking, paprazzi, driver_device, 0, ROT270, "Yun Sung", "Paparazzi", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) | |
962 | GAME( 1997, shocking, 0, shocking, shocking, driver_device, 0, ROT0, "Yun Sung", "Shocking", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) | |
963 | GAME( 1997, shockingk, shocking, shocking, shocking, driver_device, 0, ROT0, "Yun Sung", "Shocking (Korea)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) | |
964 | GAME( 1998, bombkick, 0, shocking, bombkick, driver_device, 0, ROT0, "Yun Sung", "Bomb Kick (set 1)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) | |
965 | GAME( 1998, bombkicka, bombkick, shocking, bombkick, driver_device, 0, ROT0, "Yun Sung", "Bomb Kick (set 2)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
r241749 | r241750 | |
---|---|---|
8 | 8 | |
9 | 9 | #include "machine/atarigen.h" |
10 | 10 | #include "audio/atarijsa.h" |
11 | #include "includes/slapstic.h" | |
12 | 11 | |
13 | ||
14 | 12 | class atarigx2_state : public atarigen_state |
15 | 13 | { |
16 | 14 | public: |
r241749 | r241750 | |
21 | 19 | m_protection_base(*this, "protection_base"), |
22 | 20 | m_playfield_tilemap(*this, "playfield"), |
23 | 21 | m_alpha_tilemap(*this, "alpha"), |
24 | m_rle(*this, "rle") | |
25 | { } | |
22 | m_rle(*this, "rle") { } | |
26 | 23 | |
27 | 24 | UINT16 m_playfield_base; |
28 | 25 |
r241749 | r241750 | |
---|---|---|
10 | 10 | #include "video/atarimo.h" |
11 | 11 | #include "cpu/m6502/m6502.h" |
12 | 12 | #include "cpu/t11/t11.h" |
13 | #include "slapstic.h" | |
14 | 13 | |
15 | 14 | class atarisy2_state : public atarigen_state |
16 | 15 | { |
r241749 | r241750 | |
26 | 25 | m_alpha_tilemap(*this, "alpha"), |
27 | 26 | m_rombank1(*this, "rombank1"), |
28 | 27 | m_rombank2(*this, "rombank2"), |
29 | m_generic_paletteram_16(*this, "paletteram"), | |
30 | m_slapstic(*this, "slapstic") | |
31 | { } | |
28 | m_generic_paletteram_16(*this, "paletteram") { } | |
32 | 29 | |
33 | 30 | required_device<t11_device> m_maincpu; |
34 | 31 | required_device<m6502_device> m_audiocpu; |
r241749 | r241750 | |
53 | 50 | required_shared_ptr<UINT16> m_rombank1; |
54 | 51 | required_shared_ptr<UINT16> m_rombank2; |
55 | 52 | required_shared_ptr<UINT16> m_generic_paletteram_16; |
56 | required_device<atari_slapstic_device> m_slapstic; | |
57 | 53 | |
58 | 54 | UINT8 m_sound_reset_state; |
59 | 55 |
r241749 | r241750 | |
---|---|---|
4 | 4 | |
5 | 5 | *************************************************************************/ |
6 | 6 | |
7 | #include "includes/slapstic.h" | |
8 | ||
9 | 7 | class atetris_state : public driver_device |
10 | 8 | { |
11 | 9 | public: |
r241749 | r241750 | |
15 | 13 | m_videoram(*this, "videoram"), |
16 | 14 | m_maincpu(*this, "maincpu"), |
17 | 15 | m_gfxdecode(*this, "gfxdecode"), |
18 | m_screen(*this, "screen"), | |
19 | m_slapstic_device(*this, "slapstic") | |
20 | { } | |
16 | m_screen(*this, "screen") { } | |
21 | 17 | |
22 | 18 | required_shared_ptr<UINT8> m_nvram; |
23 | 19 | required_shared_ptr<UINT8> m_videoram; |
r241749 | r241750 | |
44 | 40 | required_device<cpu_device> m_maincpu; |
45 | 41 | required_device<gfxdecode_device> m_gfxdecode; |
46 | 42 | required_device<screen_device> m_screen; |
47 | optional_device<atari_slapstic_device> m_slapstic_device; | |
48 | 43 | }; |
r241749 | r241750 | |
---|---|---|
13 | 13 | #include "cpu/dsp32/dsp32.h" |
14 | 14 | #include "audio/atarijsa.h" |
15 | 15 | #include "sound/dac.h" |
16 | #include "machine/atarigen.h" | |
16 | 17 | #include "machine/mc68681.h" |
17 | 18 | #include "machine/asic65.h" |
18 | 19 | #include "machine/timekpr.h" |
r241749 | r241750 | |
20 | 21 | #define HARDDRIV_MASTER_CLOCK XTAL_32MHz |
21 | 22 | #define HARDDRIV_GSP_CLOCK XTAL_48MHz |
22 | 23 | |
23 | extern const device_type HARDDRIV_DEVICE; | |
24 | extern const device_type HARDDRIV_BOARD_DEVICE; | |
25 | extern const device_type HARDDRIVC_BOARD_DEVICE; | |
26 | extern const device_type RACEDRIV_BOARD_DEVICE; | |
27 | extern const device_type RACEDRIVC_BOARD_DEVICE; | |
28 | extern const device_type RACEDRIVC1_BOARD_DEVICE; | |
29 | extern const device_type RACEDRIVB1_BOARD_DEVICE; | |
30 | extern const device_type RACEDRIVC_PANORAMA_SIDE_BOARD_DEVICE; | |
31 | extern const device_type STUNRUN_BOARD_DEVICE; | |
32 | extern const device_type STEELTAL_BOARD_DEVICE; | |
33 | extern const device_type STEELTAL1_BOARD_DEVICE; | |
34 | extern const device_type STEELTALP_BOARD_DEVICE; | |
35 | extern const device_type STRTDRIV_BOARD_DEVICE; | |
36 | extern const device_type HDRIVAIR_BOARD_DEVICE; | |
37 | extern const device_type HDRIVAIRP_BOARD_DEVICE; | |
38 | ||
39 | ||
40 | class harddriv_state : public device_t | |
41 | /* public device_video_interface */ | |
24 | class harddriv_state : public atarigen_state | |
42 | 25 | { |
43 | 26 | public: |
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") {} | |
45 | 63 | |
46 | ||
47 | 64 | required_device<cpu_device> m_maincpu; |
48 | 65 | required_device<tms34010_device> m_gsp; |
49 | 66 | optional_device<tms34010_device> m_msp; |
r241749 | r241750 | |
251 | 268 | void init_driver_sound(); |
252 | 269 | void racedrivc_init_common(offs_t gsp_protection); |
253 | 270 | 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); | |
278 | 287 | INTERRUPT_GEN_MEMBER(hd68k_irq_gen); |
279 | 288 | TIMER_CALLBACK_MEMBER(deferred_adsp_bank_switch); |
280 | 289 | TIMER_CALLBACK_MEMBER(rddsp32_sync_cb); |
r241749 | r241750 | |
301 | 310 | DECLARE_READ16_MEMBER( hd68k_msp_io_r ); |
302 | 311 | DECLARE_WRITE16_MEMBER( hd68k_msp_io_w ); |
303 | 312 | |
304 | DECLARE_READ16_MEMBER( hd68k_a80000_r ); | |
305 | 313 | DECLARE_READ16_MEMBER( hd68k_port0_r ); |
306 | 314 | DECLARE_READ16_MEMBER( hd68k_adc8_r ); |
307 | 315 | DECLARE_READ16_MEMBER( hd68k_adc12_r ); |
r241749 | r241750 | |
461 | 469 | |
462 | 470 | TMS340X0_SCANLINE_IND16_CB_MEMBER(scanline_driver); |
463 | 471 | 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; | |
474 | protected: | |
475 | //virtual machine_config_constructor device_mconfig_additions() const; | |
476 | virtual void device_start(); | |
477 | virtual void device_reset(); | |
478 | 472 | }; |
479 | ||
480 | /* Hard Drivin' */ | |
481 | ||
482 | class harddriv_board_device_state : public harddriv_state | |
483 | { | |
484 | public: | |
485 | harddriv_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
486 | ||
487 | protected: | |
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 | ||
495 | class harddrivc_board_device_state : public harddriv_state | |
496 | { | |
497 | public: | |
498 | harddrivc_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
499 | ||
500 | protected: | |
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 | ||
508 | class racedriv_board_device_state : public harddriv_state | |
509 | { | |
510 | public: | |
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 | ||
514 | protected: | |
515 | virtual machine_config_constructor device_mconfig_additions() const; | |
516 | virtual void device_start(); | |
517 | // virtual void device_reset(); | |
518 | }; | |
519 | ||
520 | class racedrivb1_board_device_state : public racedriv_board_device_state | |
521 | { | |
522 | public: | |
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 | ||
527 | protected: | |
528 | virtual void device_start(); | |
529 | }; | |
530 | ||
531 | /* Race Drivin' Compact */ | |
532 | ||
533 | class racedrivc_board_device_state : public harddriv_state | |
534 | { | |
535 | public: | |
536 | racedrivc_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
537 | ||
538 | protected: | |
539 | virtual machine_config_constructor device_mconfig_additions() const; | |
540 | virtual void device_start(); | |
541 | // virtual void device_reset(); | |
542 | }; | |
543 | ||
544 | class racedrivc1_board_device_state : public racedrivc_board_device_state | |
545 | { | |
546 | public: | |
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 | {}; | |
550 | protected: | |
551 | virtual void device_start(); | |
552 | }; | |
553 | ||
554 | class racedrivc_panorama_side_board_device_state : public racedrivc_board_device_state | |
555 | { | |
556 | public: | |
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 | {}; | |
560 | protected: | |
561 | virtual machine_config_constructor device_mconfig_additions() const; | |
562 | virtual void device_start(); | |
563 | }; | |
564 | ||
565 | ||
566 | /* Stun Runner */ | |
567 | ||
568 | class stunrun_board_device_state : public harddriv_state | |
569 | { | |
570 | public: | |
571 | stunrun_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
572 | ||
573 | protected: | |
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 | ||
581 | class steeltal_board_device_state : public harddriv_state | |
582 | { | |
583 | public: | |
584 | steeltal_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
585 | ||
586 | protected: | |
587 | virtual machine_config_constructor device_mconfig_additions() const; | |
588 | virtual void device_start(); | |
589 | // virtual void device_reset(); | |
590 | }; | |
591 | ||
592 | class steeltal1_board_device_state : public steeltal_board_device_state | |
593 | { | |
594 | public: | |
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 | ||
599 | protected: | |
600 | virtual void device_start(); | |
601 | }; | |
602 | ||
603 | class steeltalp_board_device_state : public steeltal_board_device_state | |
604 | { | |
605 | public: | |
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 | ||
610 | protected: | |
611 | virtual void device_start(); | |
612 | }; | |
613 | ||
614 | ||
615 | ||
616 | /* Street Drivin' */ | |
617 | ||
618 | class strtdriv_board_device_state : public harddriv_state | |
619 | { | |
620 | public: | |
621 | strtdriv_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
622 | ||
623 | protected: | |
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 | ||
631 | class hdrivair_board_device_state : public harddriv_state | |
632 | { | |
633 | public: | |
634 | hdrivair_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
635 | ||
636 | protected: | |
637 | virtual machine_config_constructor device_mconfig_additions() const; | |
638 | virtual void device_start(); | |
639 | // virtual void device_reset(); | |
640 | }; | |
641 | ||
642 | class hdrivairp_board_device_state : public hdrivair_board_device_state | |
643 | { | |
644 | public: | |
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 | ||
649 | protected: | |
650 | virtual void device_start(); | |
651 | }; | |
652 | ||
653 | ||
654 | ||
655 |
r241749 | r241750 | |
---|---|---|
199 | 199 | |
200 | 200 | UINT16 m_prot_data[0x20]; |
201 | 201 | |
202 | UINT16 *m_gx_spriteram; | |
203 | ||
204 | // mirrored K054338 settings | |
205 | int *m_K054338_shdRGB; | |
206 | ||
207 | 202 | // 1st-Tier GX/MW Variables |
208 | 203 | // frequently used registers |
209 | 204 | int m_k053247_vrcbk[4]; |
r241749 | r241750 | |
241 | 236 | unsupported flipping modes (probably due to the way it's hooked up to the |
242 | 237 | rest of the chips) which is causing entirely the wrong output. |
243 | 238 | |
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 ... | |
246 | 241 | |
247 | 242 | |
248 | 243 | */ |
249 | 244 | bitmap_ind16 *m_gxtype1_roz_dstbitmap; |
250 | 245 | bitmap_ind16 *m_gxtype1_roz_dstbitmap2; |
251 | 246 | rectangle m_gxtype1_roz_dstbitmapclip; |
252 | ||
253 | int m_konamigx_type3_psac2_actual_bank; | |
254 | //int m_konamigx_type3_psac2_actual_last_bank = 0; | |
255 | 247 | }; |
256 | 248 | |
257 | 249 | // Sprite Callbacks |
r241749 | r241750 | |
---|---|---|
1 | 1 | |
2 | 2 | |
3 | 3 | |
4 | #define VERBOSE | |
4 | #define VERBOSE 1 | |
5 | 5 | #define LOG(x) do { if (VERBOSE) logerror x; } while (0) |
6 | 6 | |
7 | 7 | #define M1_MASTER_CLOCK (XTAL_8MHz) |
r241749 | r241750 | |
20 | 20 | #include "sound/2413intf.h" |
21 | 21 | #include "sound/okim6376.h" |
22 | 22 | #include "machine/nvram.h" |
23 | #include "sound/upd7759.h" | |
24 | 23 | |
25 | #include "sound/okim6295.h" | |
26 | ||
27 | 24 | class maygay1b_state : public driver_device |
28 | 25 | { |
29 | 26 | public: |
r241749 | r241750 | |
33 | 30 | m_vfd(*this, "vfd"), |
34 | 31 | m_ay(*this, "aysnd"), |
35 | 32 | m_msm6376(*this, "msm6376"), |
36 | m_upd7759(*this, "upd"), | |
37 | m_okim6295(*this, "oki"), | |
38 | 33 | m_duart68681(*this, "duart68681"), |
39 | 34 | m_sw1_port(*this, "SW1"), |
40 | 35 | m_sw2_port(*this, "SW2"), |
r241749 | r241750 | |
43 | 38 | m_s4_port(*this, "STROBE4"), |
44 | 39 | m_s5_port(*this, "STROBE5"), |
45 | 40 | m_s6_port(*this, "STROBE6"), |
46 | m_s7_port(*this, "STROBE7"), | |
47 | m_bank1(*this, "bank1") | |
41 | m_s7_port(*this, "STROBE7") | |
48 | 42 | {} |
49 | 43 | |
50 | 44 | required_device<cpu_device> m_maincpu; |
51 | 45 | optional_device<s16lf01_t> m_vfd; |
52 | 46 | required_device<ay8910_device> m_ay; |
53 | 47 | optional_device<okim6376_device> m_msm6376; |
54 | optional_device<upd7759_device> m_upd7759; | |
55 | optional_device<okim6295_device> m_okim6295; | |
56 | 48 | required_device<mc68681_device> m_duart68681; |
57 | 49 | required_ioport m_sw1_port; |
58 | 50 | required_ioport m_sw2_port; |
r241749 | r241750 | |
62 | 54 | required_ioport m_s5_port; |
63 | 55 | required_ioport m_s6_port; |
64 | 56 | required_ioport m_s7_port; |
65 | required_memory_bank m_bank1; | |
66 | 57 | |
67 | 58 | UINT8 m_lamppos; |
68 | 59 | int m_lamp_strobe; |
r241749 | r241750 | |
72 | 63 | int m_RAMEN; |
73 | 64 | int m_ALARMEN; |
74 | 65 | int m_PSUrelay; |
75 | bool m_Vmm; | |
76 | 66 | int m_WDOG; |
67 | int m_SRSEL; | |
77 | 68 | int m_NMIENABLE; |
78 | 69 | int m_meter; |
79 | 70 | TIMER_DEVICE_CALLBACK_MEMBER( maygay1b_nmitimer_callback ); |
r241749 | r241750 | |
98 | 89 | DECLARE_READ8_MEMBER(m1_meter_r); |
99 | 90 | DECLARE_READ8_MEMBER(m1_firq_clr_r); |
100 | 91 | 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); | |
105 | 92 | DECLARE_WRITE_LINE_MEMBER(duart_irq_handler); |
106 | 93 | DECLARE_READ8_MEMBER(m1_duart_r); |
107 | 94 | DECLARE_DRIVER_INIT(m1); |
108 | DECLARE_DRIVER_INIT(m1common); | |
109 | DECLARE_DRIVER_INIT(m1nec); | |
110 | 95 | virtual void machine_start(); |
111 | 96 | virtual void machine_reset(); |
112 | 97 | void cpu0_firq(int data); |
113 | void cpu0_nmi(); | |
98 | void cpu0_nmi(int data); | |
114 | 99 | void m1_stepper_reset(); |
115 | 100 | }; |
116 | ||
117 | MACHINE_CONFIG_EXTERN( maygay_m1 ); | |
118 | MACHINE_CONFIG_EXTERN( maygay_m1_nec ); | |
119 | MACHINE_CONFIG_EXTERN( maygay_m1_empire ); |
r241749 | r241750 | |
---|---|---|
411 | 411 | DECLARE_DRIVER_INIT(dw2v100x); |
412 | 412 | DECLARE_DRIVER_INIT(drgw2c); |
413 | 413 | DECLARE_DRIVER_INIT(drgw2j); |
414 | DECLARE_DRIVER_INIT(drgw2hk); | |
415 | 414 | |
416 | 415 | DECLARE_MACHINE_RESET(drgw2); |
417 | 416 |
r241749 | r241750 | |
---|---|---|
1 | #include "machine/bankdev.h" | |
2 | ||
3 | 1 | class psychic5_state : public driver_device |
4 | 2 | { |
5 | 3 | public: |
r241749 | r241750 | |
9 | 7 | m_maincpu(*this, "maincpu"), |
10 | 8 | m_audiocpu(*this, "audiocpu"), |
11 | 9 | 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") { } | |
17 | 11 | |
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 | ||
24 | 12 | UINT8 m_bank_latch; |
25 | 13 | UINT8 m_ps5_vram_page; |
26 | 14 | UINT8 m_bg_clip_mode; |
27 | 15 | 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; | |
29 | 23 | tilemap_t *m_bg_tilemap; |
30 | 24 | tilemap_t *m_fg_tilemap; |
25 | int m_bg_palette_ram_base; | |
26 | int m_bg_palette_base; | |
31 | 27 | UINT16 m_palette_intensity; |
32 | 28 | UINT8 m_bombsa_unknown; |
33 | 29 | int m_sx1; |
r241749 | r241750 | |
42 | 38 | DECLARE_READ8_MEMBER(psychic5_vram_page_select_r); |
43 | 39 | DECLARE_WRITE8_MEMBER(psychic5_vram_page_select_w); |
44 | 40 | 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); | |
45 | 44 | DECLARE_WRITE8_MEMBER(bombsa_unknown_w); |
46 | 45 | TILE_GET_INFO_MEMBER(get_bg_tile_info); |
47 | 46 | TILE_GET_INFO_MEMBER(get_fg_tile_info); |
r241749 | r241750 | |
49 | 48 | DECLARE_VIDEO_START(psychic5); |
50 | 49 | DECLARE_VIDEO_RESET(psychic5); |
51 | 50 | DECLARE_VIDEO_START(bombsa); |
51 | DECLARE_VIDEO_RESET(bombsa); | |
52 | 52 | UINT32 screen_update_psychic5(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
53 | 53 | UINT32 screen_update_bombsa(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
54 | 54 | TIMER_DEVICE_CALLBACK_MEMBER(psychic5_scanline); |
55 | void psychic5_change_palette(int o | |
55 | void psychic5_change_palette(int color, int offset); | |
56 | 56 | void psychic5_change_bg_palette(int color, int lo_offs, int hi_offs); |
57 | 57 | void set_background_palette_intensity(); |
58 | 58 | void draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect); |
r241749 | r241750 | |
62 | 62 | required_device<cpu_device> m_audiocpu; |
63 | 63 | required_device<gfxdecode_device> m_gfxdecode; |
64 | 64 | 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 | ||
82 | 65 | }; |
r241749 | r241750 | |
---|---|---|
55 | 55 | DECLARE_DRIVER_INIT(generic_5874); |
56 | 56 | DECLARE_DRIVER_INIT(wwally); |
57 | 57 | DECLARE_DRIVER_INIT(generic_5987); |
58 | DECLARE_DRIVER_INIT(hamaway); | |
59 | 58 | |
60 | 59 | // memory mapping |
61 | 60 | void memory_mapper(sega_315_5195_mapper_device &mapper, UINT8 index); |
r241749 | r241750 | |
64 | 63 | |
65 | 64 | // read/write handlers |
66 | 65 | DECLARE_WRITE16_MEMBER( rom_5987_bank_w ); |
67 | DECLARE_WRITE16_MEMBER( rom_837_7525_bank_w ); | |
68 | 66 | DECLARE_READ16_MEMBER( io_chip_r ); |
69 | 67 | DECLARE_WRITE16_MEMBER( io_chip_w ); |
70 | 68 | DECLARE_READ16_MEMBER( misc_io_r ); |
r241749 | r241750 | |
92 | 90 | |
93 | 91 | DECLARE_WRITE16_MEMBER( sega_tileram_0_w ) { m_segaic16vid->segaic16_tileram_0_w(space,offset,data,mem_mask); }; |
94 | 92 | 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); | |
97 | 93 | |
98 | 94 | protected: |
99 | 95 | // timer IDs |
r241749 | r241750 | |
108 | 104 | ROM_BOARD_INVALID, |
109 | 105 | ROM_BOARD_171_SHADOW, // 171-???? -- used by shadow dancer |
110 | 106 | 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 | |
114 | 108 | }; |
115 | 109 | |
116 | 110 | // device overrides |
r241749 | r241750 | |
---|---|---|
9 | 9 | |
10 | 10 | *************************************************************************/ |
11 | 11 | |
12 | ||
12 | /*----------- defined in machine/slapstic.c -----------*/ | |
13 | 13 | |
14 | #ifndef __SLAPSTIC__ | |
15 | #define __SLAPSTIC__ | |
14 | void slapstic_init(running_machine &machine, int chip); | |
15 | void slapstic_reset(void); | |
16 | 16 | |
17 | #include "emu.h" | |
18 | #include "cpu/m6800/m6800.h" | |
19 | #include "cpu/m68000/m68000.h" | |
20 | ||
21 | ||
22 | extern 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 | ||
44 | struct mask_value | |
45 | { | |
46 | int mask, value; | |
47 | }; | |
48 | ||
49 | ||
50 | struct 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 | ||
108 | enum | |
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 | ||
129 | class atari_slapstic_device : public device_t | |
130 | { | |
131 | public: | |
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 | ||
166 | protected: | |
167 | virtual void device_start(); | |
168 | virtual void device_reset(); | |
169 | ||
170 | ||
171 | private: | |
172 | ||
173 | ||
174 | ||
175 | ||
176 | }; | |
177 | ||
178 | ||
179 | ||
180 | ||
181 | #endif | |
17 | int slapstic_bank(void); | |
18 | int slapstic_tweak(address_space &space, offs_t offset); |
r241749 | r241750 | |
---|---|---|
5 | 5 | ***************************************************************************/ |
6 | 6 | |
7 | 7 | #include "machine/6532riot.h" |
8 | #include "includes/slapstic.h" | |
9 | 8 | |
10 | 9 | |
11 | 10 | class starwars_state : public driver_device |
r241749 | r241750 | |
16 | 15 | m_riot(*this, "riot"), |
17 | 16 | m_mathram(*this, "mathram"), |
18 | 17 | m_maincpu(*this, "maincpu"), |
19 | m_audiocpu(*this, "audiocpu"), | |
20 | m_slapstic_device(*this, "slapstic") | |
21 | { } | |
18 | m_audiocpu(*this, "audiocpu") { } | |
22 | 19 | |
23 | 20 | UINT8 m_sound_data; |
24 | 21 | UINT8 m_main_data; |
r241749 | r241750 | |
81 | 78 | void esb_slapstic_tweak(address_space &space, offs_t offset); |
82 | 79 | required_device<cpu_device> m_maincpu; |
83 | 80 | required_device<cpu_device> m_audiocpu; |
84 | optional_device<atari_slapstic_device> m_slapstic_device; | |
85 | 81 | }; |
r241749 | r241750 | |
---|---|---|
9 | 9 | #include "bus/generic/slot.h" |
10 | 10 | #include "bus/generic/carts.h" |
11 | 11 | |
12 | #include "machine/315-5881_crypt.h" | |
13 | ||
14 | 12 | #define MAX_FILTERS (24) |
15 | 13 | #define MAX_BLOCKS (200) |
16 | 14 | #define MAX_DIR_SIZE (256*1024) |
r241749 | r241750 | |
169 | 167 | required_device<gfxdecode_device> m_gfxdecode; |
170 | 168 | required_device<palette_device> m_palette; |
171 | 169 | |
172 | ||
173 | ||
174 | 170 | bitmap_rgb32 m_tmpbitmap; |
175 | 171 | DECLARE_VIDEO_START(stv_vdp2); |
176 | 172 | UINT32 screen_update_saturn(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
r241749 | r241750 | |
698 | 694 | stv_state(const machine_config &mconfig, device_type type, const char *tag) |
699 | 695 | : saturn_state(mconfig, type, tag), |
700 | 696 | m_adsp(*this, "adsp"), |
701 | m_adsp_pram(*this, "adsp_pram"), | |
702 | m_cryptdevice(*this, "315_5881") | |
697 | m_adsp_pram(*this, "adsp_pram") | |
703 | 698 | { |
704 | 699 | } |
705 | 700 | |
r241749 | r241750 | |
834 | 829 | DECLARE_WRITE32_MEMBER( decathlt_prot2_w ); |
835 | 830 | void write_prot_data(UINT32 data, UINT32 mem_mask, int offset, int which); |
836 | 831 | void install_decathlt_protection(); |
837 | ||
838 | optional_device<sega_315_5881_crypt_device> m_cryptdevice; | |
839 | UINT16 crypt_read_callback(UINT32 addr); | |
840 | 832 | }; |
841 | 833 | |
842 | 834 |
r241749 | r241750 | |
---|---|---|
193 | 193 | |
194 | 194 | void buggyboy_draw_char(UINT8 *bitmap, bool wide); |
195 | 195 | 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); | |
197 | 198 | void buggyboy_draw_road(UINT8 *bitmap); |
198 | 199 | void buggybjr_draw_road(UINT8 *bitmap); |
199 | 200 | void buggyboy_draw_objs(UINT8 *bitmap, bool wide); |
r241749 | r241750 | |
---|---|---|
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> |
r241749 | r241750 | |
---|---|---|
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> |
r241749 | r241750 | |
---|---|---|
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> |
r241749 | r241750 | |
---|---|---|
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> |
r241749 | r241750 | |
---|---|---|
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> |
r241749 | r241750 | |
---|---|---|
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 | ||
18 | extern const device_type SEGA315_5881_CRYPT = &device_creator<sega_315_5881_crypt_device>; | |
19 | ||
20 | ||
21 | sega_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 | ||
28 | void 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 | ||
50 | void 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 | ||
68 | UINT16 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 | ||
87 | void 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 | ||
93 | void 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 | ||
99 | void sega_315_5881_crypt_device::set_subkey(UINT16 data) | |
100 | { | |
101 | subkey = data; | |
102 | enc_ready = false; | |
103 | } | |
104 | ||
105 | void sega_315_5881_crypt_device::set_key(UINT32 data) | |
106 | { | |
107 | key = data; | |
108 | enc_ready = false; | |
109 | } | |
110 | ||
111 | /*************************************************************************** | |
112 | DECRYPTION EMULATION | |
113 | ||
114 | By convention, we label the three known cart protection methods this way (using Deunan Knute's wording): | |
115 | M1: DMA read of protected ROM area | |
116 | M2: special read of ROM area which supplies decryption key first | |
117 | M3: normal read followed by write to cart's decryption buffer (up to 64kB), followed by M2 but from buffer area | |
118 | ||
119 | Notes below refer to M2 & M3. | |
120 | ||
121 | The encryption is done by a stream cipher operating in counter mode, which use a 16-bits internal block cipher. | |
122 | ||
123 | There are 2 "control bits" at the start of the decrypted stream which control the mode of operation: bit #1 set to 1 means | |
124 | that the decrypted stream needs to be decompressed after being decrypted. More on this later. | |
125 | ||
126 | The next 16-bits are part of the header (they don't belong to the plaintext), but his meaning is unclear. It has been | |
127 | conjectured that it could stablish when to "reset" the process and start processing a new stream (based on some tests | |
128 | on WWFROYAL, in which the decryption's output doesn't seem to be valid for more than some dozens of words), but some | |
129 | more testing would be needed for clarifying that. | |
130 | ||
131 | After those 18 heading bits, we find the proper plaintext. It must be noted that, due to the initial 2 special bits, | |
132 | the 16-bits words of the plaintext are shifted 2 bits respect to the word-boundaries of the output stream of the | |
133 | internal block-cipher. So, at a given step, the internal block cipher will output 16-bits, 14 of which will go to a | |
134 | given plaintext word, and the remaining 2 to the next plaintext word. | |
135 | ||
136 | The underlying block cipher consists of two 4-round Feistel Networks (FN): the first one takes the counter (16 bits), | |
137 | the game-key (>=26 bits) and the sequence-key (16 bits) and output a middle result (16 bits) which will act as another key | |
138 | for the second one. The second FN will take the encrypted word (16 bits), the game-key, the sequence-key and the result | |
139 | from the first FN and will output the decrypted word (16 bits). | |
140 | ||
141 | Each round of the Feistel Networks use four substitution sboxes, each having 6 inputs and 2 outputs. The input can be the | |
142 | XOR of at most two "sources bits", being source bits the bits from the previous round and the bits from the different keys. | |
143 | ||
144 | The underlying block cipher has the same structure than the one used by the CPS-2 (Capcom Play System 2) and, | |
145 | indeed, some of the used sboxes are exactly the same and appear in the same FN/round in both systems (this is not evident, | |
146 | as you need to apply a bitswapping and some XORs to the input & output of the sboxes to get the same values due). However, | |
147 | the key scheduling used by this implementation is much weaker than the CPS-2's one. Many s-boxes inputs aren't XORed with any | |
148 | key bit. | |
149 | ||
150 | Due to the small key-length, no sophisticated attacks are needed to recover the keys; a brute-force attack knowing just | |
151 | some (encrypted word-decrypted word) pairs suffice. However, due to the weak key scheduling, it should be noted that some | |
152 | related keys can produce the same output bytes for some (short) input sequences. | |
153 | ||
154 | The only difference in the decryption process between M2 and M3 is the initialization of the counter. In M3, the counter is | |
155 | always set to 0 at the beginning of the decryption while, in M2, the bits #1-#16 of the ciphertext's address are used | |
156 | to initialize the counter. | |
157 | ||
158 | Note that this implementation considers that the counter initialization for ram decryption is 0 simply because the ram is | |
159 | mapped to multiples of 128K. | |
160 | ||
161 | Due to the nature of the cipher, there are some degrees of freedom when choosing the s-boxes and keys values; by example, | |
162 | you could apply a fixed bitswapping and XOR to the keys and the decryption would remain the same as long as you change | |
163 | accordingly the s-boxes' definitions. So the order of the bits in the keys is arbitrary, and the s-boxes values have been | |
164 | chosen so as to make the key for CAPSNK equal to 0. | |
165 | ||
166 | It can be observed that a couple of sboxes have incomplete tables (a 255 value indicate an unknown value). The recovered keys | |
167 | as of december/2010 show small randomness and big correlations, making possible that some unseen bits could make the | |
168 | decryption need those incomplete parts. | |
169 | ||
170 | ****************************************************************************************/ | |
171 | ||
172 | const 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 | ||
325 | const 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 | ||
477 | const 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 | ||
485 | const 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 | ||
493 | const 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 | ||
499 | const 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 | ||
501 | const 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 | ||
503 | int 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 | /************************** | |
526 | This implementation is an "educational" version. It must be noted that it can be speed-optimized in a number of ways. | |
527 | The most evident one is to factor out the parts of the key-scheduling that must only be done once (like the game-key & | |
528 | sequence-key parts) as noted in the comments inlined in the function. More sophisticated speed-ups can be gained by | |
529 | noticing that the weak key-scheduling would allow to create some pregenerated look-up tables for doing most of the work | |
530 | of the function. Even so, it would still be pretty slow, so caching techniques could be a wiser option here. | |
531 | **************************/ | |
532 | ||
533 | UINT16 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 | ||
639 | UINT16 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 | ||
653 | void 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 | ||
667 | void 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 | |
679 | 0xxxxxxx - next node index | |
680 | 1a0bbccc - 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 | |
691 | 11111111 - empty node | |
692 | */ | |
693 | const 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 | ||
750 | int 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 | ||
763 | void 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 |
r241749 | r241750 | |
---|---|---|
1 | ||
2 | #pragma once | |
3 | ||
4 | #ifndef __SEGA315_5881_CRYPT__ | |
5 | #define __SEGA315_5881_CRYPT__ | |
6 | ||
7 | typedef device_delegate<UINT16 (UINT32)> sega_m2_read_delegate; | |
8 | ||
9 | extern 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 | ||
15 | class sega_315_5881_crypt_device : public device_t | |
16 | { | |
17 | public: | |
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 | ||
36 | protected: | |
37 | virtual void device_start(); | |
38 | virtual void device_reset(); | |
39 | ||
40 | private: | |
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 |
r241749 | r241750 | |
---|---|---|
100 | 100 | |
101 | 101 | DECLARE_READ8_MEMBER( read ); |
102 | 102 | DECLARE_WRITE8_MEMBER( write ); |
103 | ||
104 | UINT8 debug_peek_output(offs_t offset) { return m_output_latch[offset & 7]; } | |
105 | 103 | |
106 | 104 | protected: |
107 | 105 | // device-level overrides |
r241749 | r241750 | |
---|---|---|
150 | 150 | |
151 | 151 | void asic65_device::reset_line(int state) |
152 | 152 | { |
153 | address_space &space = | |
153 | address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM); | |
154 | 154 | |
155 | 155 | /* rom-based means reset and clear states */ |
156 | 156 | if (m_asic65_type == ASIC65_ROMBASED) |
r241749 | r241750 | |
---|---|---|
16 | 16 | #include "sound/okim6295.h" |
17 | 17 | #include "sound/pokey.h" |
18 | 18 | #include "video/atarimo.h" |
19 | #include "includes/slapstic.h" | |
19 | 20 | #include "atarigen.h" |
20 | 21 | |
21 | 22 | |
r241749 | r241750 | |
974 | 975 | m_gfxdecode(*this, "gfxdecode"), |
975 | 976 | m_screen(*this, "screen"), |
976 | 977 | m_palette(*this, "palette"), |
977 | m_generic_paletteram_16(*this, "paletteram"), | |
978 | m_slapstic_device(*this, ":slapstic") | |
978 | m_generic_paletteram_16(*this, "paletteram") | |
979 | 979 | { |
980 | 980 | } |
981 | 981 | |
r241749 | r241750 | |
1022 | 1022 | // reset the slapstic |
1023 | 1023 | if (m_slapstic_num != 0) |
1024 | 1024 | { |
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()); | |
1030 | 1027 | } |
1031 | 1028 | } |
1032 | 1029 | |
r241749 | r241750 | |
1195 | 1192 | |
1196 | 1193 | void atarigen_state::device_post_load() |
1197 | 1194 | { |
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()); | |
1202 | 1196 | } |
1203 | 1197 | |
1204 | 1198 | |
r241749 | r241750 | |
1238 | 1232 | // if we have a chip, install it |
1239 | 1233 | if (chipnum != 0) |
1240 | 1234 | { |
1241 | if (!m_slapstic_device) | |
1242 | fatalerror("Slapstic device is missing\n"); | |
1243 | ||
1244 | 1235 | // initialize the slapstic |
1245 | | |
1236 | slapstic_init(machine(), chipnum); | |
1246 | 1237 | |
1247 | 1238 | // install the memory handlers |
1248 | 1239 | address_space &program = device.space(AS_PROGRAM); |
r241749 | r241750 | |
1271 | 1262 | |
1272 | 1263 | WRITE16_MEMBER(atarigen_state::slapstic_w) |
1273 | 1264 | { |
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)); | |
1278 | 1266 | } |
1279 | 1267 | |
1280 | 1268 | |
r241749 | r241750 | |
1285 | 1273 | |
1286 | 1274 | READ16_MEMBER(atarigen_state::slapstic_r) |
1287 | 1275 | { |
1288 | if (!m_slapstic_device) | |
1289 | fatalerror("Slapstic device is missing?\n"); | |
1290 | ||
1291 | 1276 | // fetch the result from the current bank first |
1292 | 1277 | int result = m_slapstic[offset & 0xfff]; |
1293 | 1278 | |
1294 | 1279 | // then determine the new one |
1295 | slapstic_update_bank( | |
1280 | slapstic_update_bank(slapstic_tweak(space, offset)); | |
1296 | 1281 | return result; |
1297 | 1282 | } |
1298 | 1283 |
r241749 | r241750 | |
---|---|---|
17 | 17 | #include "video/atarimo.h" |
18 | 18 | #include "cpu/m6502/m6502.h" |
19 | 19 | #include "sound/okim6295.h" |
20 | #include "includes/slapstic.h" | |
21 | 20 | |
22 | 21 | |
23 | 22 | /*************************************************************************** |
r241749 | r241750 | |
432 | 431 | optional_device<screen_device> m_screen; |
433 | 432 | optional_device<palette_device> m_palette; |
434 | 433 | optional_shared_ptr<UINT16> m_generic_paletteram_16; |
435 | optional_device<atari_slapstic_device> m_slapstic_device; | |
436 | 434 | }; |
437 | 435 | |
438 | 436 |
r241749 | r241750 | |
---|---|---|
36 | 36 | * |
37 | 37 | *************************************/ |
38 | 38 | |
39 | ||
39 | MACHINE_START_MEMBER(harddriv_state,harddriv) | |
40 | 40 | { |
41 | | |
41 | atarigen_state::machine_start(); | |
42 | 42 | |
43 | 43 | /* predetermine memory regions */ |
44 | 44 | m_sim_memory = (UINT16 *)memregion("user1")->base(); |
45 | 45 | m_sim_memory_size = memregion("user1")->bytes() / 2; |
46 | 46 | m_adsp_pgm_memory_word = (UINT16 *)(reinterpret_cast<UINT8 *>(m_adsp_pgm_memory.target()) + 1); |
47 | ||
48 | init_video(); | |
49 | ||
50 | 47 | } |
51 | 48 | |
52 | 49 | |
53 | ||
50 | MACHINE_RESET_MEMBER(harddriv_state,harddriv) | |
54 | 51 | { |
55 | 52 | /* generic reset */ |
56 | //atarigen_state::machine_reset(); | |
57 | m_slapstic_device->slapstic_reset(); | |
53 | atarigen_state::machine_reset(); | |
54 | slapstic_reset(); | |
58 | 55 | |
59 | 56 | /* halt several of the DSPs to start */ |
60 | 57 | if (m_adsp != NULL) m_adsp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); |
r241749 | r241750 | |
199 | 196 | * |
200 | 197 | *************************************/ |
201 | 198 | |
202 | READ16_MEMBER( harddriv_state::hd68k_a80000_r ) | |
203 | { | |
204 | return ioport("a80000")->read_safe(0xffff); | |
205 | } | |
206 | ||
207 | 199 | READ16_MEMBER( harddriv_state::hd68k_port0_r ) |
208 | 200 | { |
209 | 201 | /* port is as follows: |
r241749 | r241750 | |
221 | 213 | ..... |
222 | 214 | 0x8000 = SW1 #1 |
223 | 215 | */ |
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; | |
228 | 218 | temp ^= 0x0018; /* both EOCs always high for now */ |
229 | 219 | return temp; |
230 | 220 | } |
r241749 | r241750 | |
232 | 222 | |
233 | 223 | READ16_MEMBER( harddriv_state::hdc68k_port1_r ) |
234 | 224 | { |
235 | UINT16 result = ioport("a80000")->read | |
225 | UINT16 result = ioport("a80000")->read(); | |
236 | 226 | UINT16 diff = result ^ m_hdc68k_last_port1; |
237 | 227 | |
238 | 228 | /* if a new shifter position is selected, use it */ |
r241749 | r241750 | |
260 | 250 | |
261 | 251 | READ16_MEMBER( harddriv_state::hda68k_port1_r ) |
262 | 252 | { |
263 | UINT16 result = ioport("a80000")->read | |
253 | UINT16 result = ioport("a80000")->read(); | |
264 | 254 | |
265 | 255 | /* merge in the wheel edge latch bit */ |
266 | 256 | if (m_hdc68k_wheel_edge) |
r241749 | r241750 | |
273 | 263 | READ16_MEMBER( harddriv_state::hdc68k_wheel_r ) |
274 | 264 | { |
275 | 265 | /* grab the new wheel value and upconvert to 12 bits */ |
276 | UINT16 new_wheel = ioport("12BADC0")->read | |
266 | UINT16 new_wheel = ioport("12BADC0")->read() << 4; | |
277 | 267 | |
278 | 268 | /* hack to display the wheel position */ |
279 | 269 | if (space.machine().input().code_pressed(KEYCODE_LSHIFT)) |
r241749 | r241750 | |
327 | 317 | if (m_adc_control & 0x08) |
328 | 318 | { |
329 | 319 | m_adc8_select = m_adc_control & 0x07; |
330 | m_adc8_data = ioport(adc8names[m_adc8_select])->read | |
320 | m_adc8_data = ioport(adc8names[m_adc8_select])->read(); | |
331 | 321 | } |
332 | 322 | |
333 | 323 | /* handle a write to the 12-bit ADC address select */ |
334 | 324 | if (m_adc_control & 0x40) |
335 | 325 | { |
336 | 326 | m_adc12_select = (m_adc_control >> 4) & 0x03; |
337 | m_adc12_data = ioport(adc12names[m_adc12_select])->read | |
327 | m_adc12_data = space.machine().root_device().ioport(adc12names[m_adc12_select])->read() << 4; | |
338 | 328 | } |
339 | 329 | |
340 | 330 | /* bit 7 selects which byte of the 12 bit data to read */ |
r241749 | r241750 | |
495 | 485 | } |
496 | 486 | } |
497 | 487 | |
498 | screen_device &scr = m_gsp->screen(); | |
499 | ||
500 | 488 | /* detect changes to HEBLNK and HSBLNK and force an update before they change */ |
501 | 489 | if ((offset == REG_HEBLNK || offset == REG_HSBLNK) && data != m_gsp->io_register_r(space, offset, 0xffff)) |
502 | scr | |
490 | m_screen->update_partial(m_screen->vpos() - 1); | |
503 | 491 | |
504 | 492 | m_gsp->io_register_w(space, offset, data, mem_mask); |
505 | 493 | } |
r241749 | r241750 | |
1514 | 1502 | switch (offset & 7) |
1515 | 1503 | { |
1516 | 1504 | case 0: /* DSPRESTN */ |
1517 | | |
1505 | m_dsp32->set_input_line(INPUT_LINE_RESET, val ? CLEAR_LINE : ASSERT_LINE); | |
1518 | 1506 | break; |
1519 | 1507 | |
1520 | 1508 | case 1: /* DSPZN */ |
1521 | | |
1509 | m_dsp32->set_input_line(INPUT_LINE_HALT, val ? CLEAR_LINE : ASSERT_LINE); | |
1522 | 1510 | break; |
1523 | 1511 | |
1524 | 1512 | case 2: /* ZW1 */ |
r241749 | r241750 | |
1582 | 1570 | WRITE16_MEMBER( harddriv_state::hd68k_dsk_dsp32_w ) |
1583 | 1571 | { |
1584 | 1572 | m_dsk_pio_access = TRUE; |
1585 | | |
1573 | m_dsp32->pio_w(offset, data); | |
1586 | 1574 | m_dsk_pio_access = FALSE; |
1587 | 1575 | } |
1588 | 1576 | |
r241749 | r241750 | |
1591 | 1579 | { |
1592 | 1580 | UINT16 result; |
1593 | 1581 | 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); | |
1597 | 1583 | m_dsk_pio_access = FALSE; |
1598 | 1584 | return result; |
1599 | 1585 | } |
r241749 | r241750 | |
1685 | 1671 | |
1686 | 1672 | WRITE16_MEMBER( harddriv_state::rd68k_slapstic_w ) |
1687 | 1673 | { |
1688 | | |
1674 | slapstic_tweak(space, offset & 0x3fff); | |
1689 | 1675 | } |
1690 | 1676 | |
1691 | 1677 | |
1692 | 1678 | READ16_MEMBER( harddriv_state::rd68k_slapstic_r ) |
1693 | 1679 | { |
1694 | int bank = | |
1680 | int bank = slapstic_tweak(space, offset & 0x3fff) * 0x4000; | |
1695 | 1681 | return m_m68k_slapstic_base[bank + (offset & 0x3fff)]; |
1696 | 1682 | } |
1697 | 1683 |
r241749 | r241750 | |
---|---|---|
267 | 267 | pif_ram[0x27] = 0x3f; |
268 | 268 | cic_type=6; |
269 | 269 | } |
270 | else | |
271 | { | |
272 | //printf("Unknown BootCode Checksum %08X%08X\n", (UINT32)(boot_checksum>>32),(UINT32)(boot_checksum)); | |
273 | } | |
270 | 274 | } |
271 | 275 | |
272 | 276 | // Memory Interface (MI) |
r241749 | r241750 | |
308 | 312 | break; |
309 | 313 | } |
310 | 314 | |
315 | //printf("mi_reg_r %08x = %08x\n", offset * 4, ret); fflush(stdout); | |
311 | 316 | return ret; |
312 | 317 | } |
313 | 318 | |
314 | 319 | WRITE32_MEMBER( n64_periphs::mi_reg_w ) |
315 | 320 | { |
321 | //printf("mi_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); fflush(stdout); | |
316 | 322 | switch (offset) |
317 | 323 | { |
318 | 324 | case 0x00/4: // MI_INIT_MODE_REG |
r241749 | r241750 | |
403 | 409 | { |
404 | 410 | if (mi_intr_mask & mi_interrupt) |
405 | 411 | { |
412 | //printf("Asserting IRQ, %02x : %02x\n", mi_intr_mask, mi_interrupt); fflush(stdout); | |
406 | 413 | machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE); |
407 | 414 | } |
408 | 415 | else |
409 | 416 | { |
417 | //printf("Deasserting IRQ, %02x : %02x\n", mi_intr_mask, mi_interrupt); fflush(stdout); | |
410 | 418 | machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE); |
411 | 419 | } |
412 | 420 | } |
r241749 | r241750 | |
458 | 466 | case 0x0014/4: |
459 | 467 | for(i = 0x20; i < (0x20 + data); i++) |
460 | 468 | { |
469 | //printf( "%c", is64_buffer[i] ); | |
461 | 470 | if(is64_buffer[i] == 0x0a) |
462 | 471 | { |
463 | printf( "%c", 0x0d ); | |
472 | //printf( "%c", 0x0d ); | |
464 | 473 | } |
465 | 474 | is64_buffer[i] = 0; |
466 | 475 | } |
r241749 | r241750 | |
502 | 511 | |
503 | 512 | READ32_MEMBER( n64_periphs::rdram_reg_r ) |
504 | 513 | { |
514 | //printf("rdram_reg_r %08x = %08x\n", offset * 4, rdram_regs[offset]); fflush(stdout); | |
505 | 515 | if(offset > 0x24/4) |
506 | 516 | { |
507 | 517 | logerror("rdram_reg_r: %08X, %08X at %08X\n", offset, mem_mask, maincpu->safe_pc()); |
r241749 | r241750 | |
512 | 522 | |
513 | 523 | WRITE32_MEMBER( n64_periphs::rdram_reg_w ) |
514 | 524 | { |
525 | //printf("rdram_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); fflush(stdout); | |
515 | 526 | if(offset > 0x24/4) |
516 | 527 | { |
517 | 528 | logerror("rdram_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, maincpu->safe_pc()); |
r241749 | r241750 | |
531 | 542 | length = (length + 7) & ~7; |
532 | 543 | } |
533 | 544 | |
545 | //printf("Length %08x Skip %08x Count %08x\n", length, sp_dma_skip, sp_dma_count); fflush(stdout); | |
534 | 546 | if (sp_mem_addr & 0x3) |
535 | 547 | { |
536 | 548 | sp_mem_addr = sp_mem_addr & ~3; |
r241749 | r241750 | |
542 | 554 | |
543 | 555 | if ((sp_mem_addr & 0xfff) + (length) > 0x1000) |
544 | 556 | { |
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); | |
545 | 559 | length = 0x1000 - (sp_mem_addr & 0xfff); |
546 | 560 | } |
547 | 561 | |
r241749 | r241750 | |
588 | 602 | |
589 | 603 | WRITE32_MEMBER(n64_periphs::sp_set_status) |
590 | 604 | { |
605 | //printf("sp_set_status: %08x\n", data); | |
591 | 606 | if (data & 0x1) |
592 | 607 | { |
593 | 608 | rspcpu->execute().set_input_line(INPUT_LINE_HALT, ASSERT_LINE); |
r241749 | r241750 | |
623 | 638 | break; |
624 | 639 | |
625 | 640 | case 0x10/4: // SP_STATUS_REG |
641 | //machine().scheduler().synchronize(); | |
642 | //machine().scheduler().boost_interleave(attotime::from_msec(1), attotime::from_msec(m)); | |
626 | 643 | ret = rspcpu->state().state_int(RSP_SR); |
627 | 644 | break; |
628 | 645 | |
r241749 | r241750 | |
635 | 652 | break; |
636 | 653 | |
637 | 654 | case 0x1c/4: // SP_SEMAPHORE_REG |
655 | //machine().scheduler().boost_interleave(attotime::from_usec(1), attotime::from_usec(1)); | |
638 | 656 | machine().device("maincpu")->execute().yield(); |
639 | 657 | if( sp_semaphore ) |
640 | 658 | { |
r241749 | r241750 | |
642 | 660 | } |
643 | 661 | else |
644 | 662 | { |
663 | //printf("Semaphore is now acquired, returning 0\n"); | |
645 | 664 | sp_semaphore = 1; |
646 | 665 | ret = 0; |
647 | 666 | } |
r241749 | r241750 | |
699 | 718 | break; |
700 | 719 | } |
701 | 720 | |
721 | //printf("%08x sp_reg_r %08x = %08x\n", (UINT32)maincpu->state().state_int(MIPS3_PC), offset * 4, ret); fflush(stdout); | |
702 | 722 | return ret; |
703 | 723 | } |
704 | 724 | |
705 | 725 | |
706 | 726 | WRITE32_MEMBER(n64_periphs::sp_reg_w ) |
707 | 727 | { |
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 | ||
708 | 730 | if ((offset & 0x10000) == 0) |
709 | 731 | { |
710 | 732 | switch (offset & 0xffff) |
r241749 | r241750 | |
736 | 758 | UINT32 oldstatus = rspcpu->state().state_int(RSP_SR); |
737 | 759 | UINT32 newstatus = oldstatus; |
738 | 760 | |
761 | // printf( "RSP_STATUS_REG Write; %08x\n", data ); | |
739 | 762 | if (data & 0x00000001) // clear halt |
740 | 763 | { |
741 | 764 | rspcpu->execute().set_input_line(INPUT_LINE_HALT, CLEAR_LINE); |
742 | 765 | 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); | |
745 | 767 | } |
746 | 768 | if (data & 0x00000002) // set halt |
747 | 769 | { |
748 | 770 | rspcpu->execute().set_input_line(INPUT_LINE_HALT, ASSERT_LINE); |
749 | 771 | newstatus |= RSP_STATUS_HALT; |
772 | //printf("***SP HALT SET***\n"); fflush(stdout); | |
750 | 773 | } |
751 | 774 | if (data & 0x00000004) |
752 | 775 | { |
753 | 776 | newstatus &= ~RSP_STATUS_BROKE; |
777 | //printf("***SP BROKE CLR***\n"); fflush(stdout); | |
754 | 778 | } |
755 | 779 | if (data & 0x00000008) // clear interrupt |
756 | 780 | { |
781 | //printf("***SP INT CLR***\n"); fflush(stdout); | |
757 | 782 | clear_rcp_interrupt(SP_INTERRUPT); |
758 | 783 | } |
759 | 784 | if (data & 0x00000010) // set interrupt |
760 | 785 | { |
786 | //printf("***SP INT SET***\n"); fflush(stdout); | |
761 | 787 | signal_rcp_interrupt(SP_INTERRUPT); |
762 | 788 | } |
763 | 789 | if (data & 0x00000020) |
764 | 790 | { |
765 | 791 | newstatus &= ~RSP_STATUS_SSTEP; |
792 | //printf("***SP SSTEP CLR***\n"); fflush(stdout); | |
766 | 793 | } |
767 | 794 | if (data & 0x00000040) |
768 | 795 | { |
769 | 796 | newstatus |= RSP_STATUS_SSTEP; // set single step |
797 | //printf("***SP SSTEP SET***\n"); fflush(stdout); | |
770 | 798 | if(!(oldstatus & (RSP_STATUS_BROKE | RSP_STATUS_HALT))) |
771 | 799 | { |
772 | 800 | rspcpu->state().set_state_int(RSP_STEPCNT, 1 ); |
r241749 | r241750 | |
776 | 804 | if (data & 0x00000080) |
777 | 805 | { |
778 | 806 | newstatus &= ~RSP_STATUS_INTR_BREAK; // clear interrupt on break |
807 | //printf("***SP INTRBRK CLR***\n"); fflush(stdout); | |
779 | 808 | } |
780 | 809 | if (data & 0x00000100) |
781 | 810 | { |
782 | 811 | newstatus |= RSP_STATUS_INTR_BREAK; // set interrupt on break |
812 | //printf("***SP INTRBRK SET***\n"); fflush(stdout); | |
783 | 813 | } |
784 | 814 | if (data & 0x00000200) |
785 | 815 | { |
786 | 816 | newstatus &= ~RSP_STATUS_SIGNAL0; // clear signal 0 |
817 | //printf("***SP YIELD CLR***\n"); fflush(stdout); | |
787 | 818 | } |
788 | 819 | if (data & 0x00000400) |
789 | 820 | { |
790 | 821 | newstatus |= RSP_STATUS_SIGNAL0; // set signal 0 |
822 | //printf("***SP YIELD SET***\n"); fflush(stdout); | |
791 | 823 | } |
792 | 824 | if (data & 0x00000800) |
793 | 825 | { |
794 | 826 | newstatus &= ~RSP_STATUS_SIGNAL1; // clear signal 1 |
827 | //printf("***SP YIELDED CLR***\n"); fflush(stdout); | |
795 | 828 | } |
796 | 829 | if (data & 0x00001000) |
797 | 830 | { |
798 | 831 | newstatus |= RSP_STATUS_SIGNAL1; // set signal 1 |
832 | //printf("***SP YIELDED SET***\n"); fflush(stdout); | |
799 | 833 | } |
800 | 834 | if (data & 0x00002000) |
801 | 835 | { |
802 | 836 | newstatus &= ~RSP_STATUS_SIGNAL2 ; // clear signal 2 |
837 | //printf("***SP TASKDONE CLR***\n"); fflush(stdout); | |
803 | 838 | } |
804 | 839 | if (data & 0x00004000) |
805 | 840 | { |
806 | 841 | newstatus |= RSP_STATUS_SIGNAL2; // set signal 2 |
842 | //printf("***SP TASKDONE SET***\n"); fflush(stdout); | |
807 | 843 | } |
808 | 844 | if (data & 0x00008000) |
809 | 845 | { |
810 | 846 | newstatus &= ~RSP_STATUS_SIGNAL3; // clear signal 3 |
847 | //printf("***SP SIG3 CLR***\n"); fflush(stdout); | |
811 | 848 | } |
812 | 849 | if (data & 0x00010000) |
813 | 850 | { |
814 | 851 | newstatus |= RSP_STATUS_SIGNAL3; // set signal 3 |
852 | //printf("***SP SIG3 SET***\n"); fflush(stdout); | |
815 | 853 | } |
816 | 854 | if (data & 0x00020000) |
817 | 855 | { |
818 | 856 | newstatus &= ~RSP_STATUS_SIGNAL4; // clear signal 4 |
857 | //printf("***SP SIG4 CLR***\n"); fflush(stdout); | |
819 | 858 | } |
820 | 859 | if (data & 0x00040000) |
821 | 860 | { |
822 | 861 | newstatus |= RSP_STATUS_SIGNAL4; // set signal 4 |
862 | //printf("***SP SIG4 SET***\n"); fflush(stdout); | |
823 | 863 | } |
824 | 864 | if (data & 0x00080000) |
825 | 865 | { |
826 | 866 | newstatus &= ~RSP_STATUS_SIGNAL5; // clear signal 5 |
867 | //printf("***SP SIG5 CLR***\n"); fflush(stdout); | |
827 | 868 | } |
828 | 869 | if (data & 0x00100000) |
829 | 870 | { |
830 | 871 | newstatus |= RSP_STATUS_SIGNAL5; // set signal 5 |
872 | //printf("***SP SIG5 SET***\n"); fflush(stdout); | |
831 | 873 | } |
832 | 874 | if (data & 0x00200000) |
833 | 875 | { |
834 | 876 | newstatus &= ~RSP_STATUS_SIGNAL6; // clear signal 6 |
877 | //printf("***SP SIG6 CLR***\n"); fflush(stdout); | |
835 | 878 | } |
836 | 879 | if (data & 0x00400000) |
837 | 880 | { |
838 | 881 | newstatus |= RSP_STATUS_SIGNAL6; // set signal 6 |
882 | //printf("***SP SIG6 SET***\n"); fflush(stdout); | |
839 | 883 | } |
840 | 884 | if (data & 0x00800000) |
841 | 885 | { |
842 | 886 | newstatus &= ~RSP_STATUS_SIGNAL7; // clear signal 7 |
887 | //printf("***SP SIG7 CLR***\n"); fflush(stdout); | |
843 | 888 | } |
844 | 889 | if (data & 0x01000000) |
845 | 890 | { |
846 | 891 | newstatus |= RSP_STATUS_SIGNAL7; // set signal 7 |
892 | //printf("***SP SIG7 SET***\n"); fflush(stdout); | |
847 | 893 | } |
848 | 894 | rspcpu->state().set_state_int(RSP_SR, newstatus); |
849 | 895 | break; |
850 | 896 | } |
851 | 897 | |
852 | 898 | 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"); | |
853 | 901 | if(data == 0) |
854 | 902 | { |
855 | 903 | sp_semaphore = 0; |
r241749 | r241750 | |
928 | 976 | break; |
929 | 977 | } |
930 | 978 | |
979 | //printf("%08x dp_reg_r %08x = %08x\n", (UINT32)space.machine().device("rsp")->state().state_int(RSP_PC), offset, ret); fflush(stdout); | |
931 | 980 | return ret; |
932 | 981 | } |
933 | 982 | |
r241749 | r241750 | |
935 | 984 | { |
936 | 985 | n64_state *state = space.machine().driver_data<n64_state>(); |
937 | 986 | |
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); | |
938 | 988 | switch (offset) |
939 | 989 | { |
940 | 990 | case 0x00/4: // DP_START_REG |
r241749 | r241750 | |
943 | 993 | break; |
944 | 994 | |
945 | 995 | case 0x04/4: // DP_END_REG |
996 | //printf("dp_end_reg %08x\n", data); | |
946 | 997 | state->m_rdp->SetEndReg(data); |
947 | 998 | g_profiler.start(PROFILER_USER1); |
948 | 999 | state->m_rdp->ProcessList(); |
r241749 | r241750 | |
991 | 1042 | int y_end = (vi_vstart & 0x000003ff) / 2; |
992 | 1043 | int width = ((vi_xscale & 0x00000fff) * (x_end - x_start)) / 0x400; |
993 | 1044 | int height = ((vi_yscale & 0x00000fff) * (y_end - y_start)) / 0x400; |
994 | ||
1045 | //printf("%04x | %02x | ", vi_xscale >> 16, vi_burst & 0x000000ff); | |
995 | 1046 | rectangle visarea = m_screen->visible_area(); |
996 | 1047 | attoseconds_t period = m_screen->frame_period().attoseconds; |
997 | 1048 | |
r241749 | r241750 | |
1019 | 1070 | |
1020 | 1071 | visarea.max_x = width - 1; |
1021 | 1072 | 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); | |
1022 | 1074 | m_screen->configure(width, 525, visarea, period); |
1023 | 1075 | } |
1024 | 1076 | |
r241749 | r241750 | |
1088 | 1140 | break; |
1089 | 1141 | } |
1090 | 1142 | |
1143 | //printf("vi_reg_r %08x = %08x\n", offset * 4, ret); | |
1091 | 1144 | return ret; |
1092 | 1145 | } |
1093 | 1146 | |
1094 | 1147 | WRITE32_MEMBER( n64_periphs::vi_reg_w ) |
1095 | 1148 | { |
1149 | //printf("vi_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); | |
1096 | 1150 | n64_state *state = machine().driver_data<n64_state>(); |
1097 | 1151 | |
1098 | 1152 | switch (offset) |
r241749 | r241750 | |
1325 | 1379 | break; |
1326 | 1380 | } |
1327 | 1381 | |
1382 | //printf("ai_reg_r %08x = %08x\n", offset * 4, ret); | |
1328 | 1383 | return ret; |
1329 | 1384 | } |
1330 | 1385 | |
1331 | 1386 | WRITE32_MEMBER( n64_periphs::ai_reg_w ) |
1332 | 1387 | { |
1388 | //printf("ai_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); | |
1333 | 1389 | switch (offset) |
1334 | 1390 | { |
1335 | 1391 | case 0x00/4: // AI_DRAM_ADDR_REG |
r241749 | r241750 | |
1352 | 1408 | case 0x10/4: // AI_DACRATE_REG |
1353 | 1409 | ai_dacrate = data & 0x3fff; |
1354 | 1410 | 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) ); | |
1355 | 1412 | dmadac_enable(&ai_dac[0], 2, 1); |
1356 | 1413 | break; |
1357 | 1414 | |
r241749 | r241750 | |
1398 | 1455 | cart_addr &= ((machine().root_device().memregion("user2")->bytes() >> 1) - 1); |
1399 | 1456 | } |
1400 | 1457 | |
1458 | //printf("%08x Cart, %08x Dram\n", cart_addr << 1, dram_addr << 1); fflush(stdout); | |
1459 | ||
1401 | 1460 | if(pi_dma_dir == 1) |
1402 | 1461 | { |
1403 | 1462 | UINT32 dma_length = pi_wr_len + 1; |
r241749 | r241750 | |
1499 | 1558 | break; |
1500 | 1559 | } |
1501 | 1560 | |
1561 | //printf("pi_reg_r %08x = %08x\n", offset * 4, ret); | |
1502 | 1562 | return ret; |
1503 | 1563 | } |
1504 | 1564 | |
1505 | 1565 | WRITE32_MEMBER( n64_periphs::pi_reg_w ) |
1506 | 1566 | { |
1567 | //printf("pi_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); fflush(stdout); | |
1507 | 1568 | switch (offset) |
1508 | 1569 | { |
1509 | 1570 | case 0x00/4: // PI_DRAM_ADDR_REG |
r241749 | r241750 | |
1525 | 1586 | pi_status |= 1; |
1526 | 1587 | |
1527 | 1588 | 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)); | |
1528 | 1590 | pi_dma_timer->adjust(dma_period); |
1529 | 1591 | //pi_dma_tick(); |
1530 | 1592 | break; |
r241749 | r241750 | |
1537 | 1599 | pi_status |= 1; |
1538 | 1600 | |
1539 | 1601 | 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)); | |
1540 | 1603 | pi_dma_timer->adjust(dma_period); |
1541 | 1604 | |
1542 | 1605 | //pi_dma_tick(); |
r241749 | r241750 | |
1595 | 1658 | |
1596 | 1659 | READ32_MEMBER( n64_periphs::ri_reg_r ) |
1597 | 1660 | { |
1661 | //printf("ri_reg_r %08x = %08x\n", offset * 4, ri_regs[offset]); | |
1598 | 1662 | if(offset > 0x1c/4) |
1599 | 1663 | { |
1600 | 1664 | logerror("ri_reg_r: %08X, %08X at %08X\n", offset, mem_mask, maincpu->safe_pc()); |
r241749 | r241750 | |
1605 | 1669 | |
1606 | 1670 | WRITE32_MEMBER( n64_periphs::ri_reg_w ) |
1607 | 1671 | { |
1672 | //printf("ri_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); | |
1608 | 1673 | if(offset > 0x1c/4) |
1609 | 1674 | { |
1610 | 1675 | logerror("ri_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, maincpu->safe_pc()); |
r241749 | r241750 | |
1667 | 1732 | case 0x00: // Read status |
1668 | 1733 | case 0xff: // Reset |
1669 | 1734 | { |
1735 | if(command == 0) | |
1736 | { | |
1737 | //printf("Read status\n"); | |
1738 | } | |
1739 | else | |
1740 | { | |
1741 | //printf("Reset\n"); | |
1742 | } | |
1670 | 1743 | switch (channel) |
1671 | 1744 | { |
1672 | 1745 | case 0: |
1673 | 1746 | case 1: |
1674 | 1747 | { |
1675 | // | |
1748 | //printf("Read controller %d status\n", channel + 1); | |
1676 | 1749 | rdata[0] = 0x05; |
1677 | 1750 | rdata[1] = 0x00; |
1678 | 1751 | rdata[2] = 0x01; |
r241749 | r241750 | |
1681 | 1754 | case 2: |
1682 | 1755 | case 3: |
1683 | 1756 | { |
1684 | // Read status (unconnected) | |
1757 | //printf("Read controller %d status (NC)\n", channel + 1); | |
1758 | // not connected | |
1685 | 1759 | return 1; |
1686 | 1760 | } |
1687 | 1761 | case 4: |
1688 | 1762 | { |
1689 | // | |
1763 | //printf("Read EEPROM status\n"); | |
1690 | 1764 | rdata[0] = 0x00; |
1691 | 1765 | rdata[1] = 0x80; |
1692 | 1766 | rdata[2] = 0x00; |
r241749 | r241750 | |
1717 | 1791 | |
1718 | 1792 | switch (channel) |
1719 | 1793 | { |
1720 | case 0: // P1 Inputs | |
1721 | case 1: // P2 Inputs | |
1794 | case 0: //p1 inputs | |
1795 | case 1: //p2 inputs | |
1722 | 1796 | { |
1797 | //printf("Read p%d inputs\n", channel + 1); | |
1723 | 1798 | buttons = machine().root_device().ioport(portnames[(channel*3) + 0])->read(); |
1724 | 1799 | x = machine().root_device().ioport(portnames[(channel*3) + 1])->read() - 128; |
1725 | 1800 | y = machine().root_device().ioport(portnames[(channel*3) + 2])->read() - 128; |
r241749 | r241750 | |
1733 | 1808 | case 2: |
1734 | 1809 | case 3: |
1735 | 1810 | { |
1736 | // P3/P4 Inputs (not connected) | |
1811 | //printf("Controller %d not connected\n", channel + 1); | |
1812 | // not connected | |
1737 | 1813 | return 1; |
1738 | 1814 | } |
1739 | 1815 | } |
r241749 | r241750 | |
1748 | 1824 | address = (sdata[1] << 8) | (sdata[2]); |
1749 | 1825 | address &= ~0x1f; |
1750 | 1826 | |
1827 | ////printf("Read mempak at %04x\n", address); | |
1828 | ||
1751 | 1829 | if(address == 0x8000) |
1752 | 1830 | { |
1753 | 1831 | for(int i = 0; i < rlength-1; i++) |
r241749 | r241750 | |
1776 | 1854 | UINT32 address = (sdata[1] << 8) | (sdata[2]); |
1777 | 1855 | address &= ~0x1f; |
1778 | 1856 | |
1779 | if (address < 0x8000) | |
1857 | ////printf("Write mempak at %04x\n", address); | |
1858 | if (address >= 0x8000) | |
1780 | 1859 | { |
1860 | } | |
1861 | else | |
1862 | { | |
1781 | 1863 | for(int i = 3; i < slength; i++) |
1782 | 1864 | { |
1783 | 1865 | m_save_data.mempak[channel & 1][address++] = sdata[i]; |
r241749 | r241750 | |
1803 | 1885 | |
1804 | 1886 | UINT16 block_offset = sdata[1] * 8; |
1805 | 1887 | |
1888 | //printf("Read EEPROM at %04x\n", block_offset); | |
1889 | ||
1806 | 1890 | for(int i=0; i < 8; i++) |
1807 | 1891 | { |
1808 | 1892 | rdata[i] = m_save_data.eeprom[block_offset+i]; |
r241749 | r241750 | |
1825 | 1909 | |
1826 | 1910 | UINT16 block_offset = sdata[1] * 8; |
1827 | 1911 | |
1912 | //printf("Write EEPROM at %04x\n", block_offset); | |
1913 | ||
1828 | 1914 | for(int i = 0; i < 8; i++) |
1829 | 1915 | { |
1830 | 1916 | m_save_data.eeprom[block_offset+i] = sdata[2+i]; |
r241749 | r241750 | |
1835 | 1921 | |
1836 | 1922 | case 0x06: // Read RTC Status |
1837 | 1923 | { |
1924 | //printf("Read RTC Status\n"); | |
1838 | 1925 | rdata[0] = 0x00; |
1839 | 1926 | rdata[1] = 0x10; |
1840 | 1927 | rdata[2] = 0x00; |
r241749 | r241750 | |
1846 | 1933 | switch(sdata[1]) |
1847 | 1934 | { |
1848 | 1935 | case 0: |
1936 | //printf("Read RTC Block Header\n"); | |
1849 | 1937 | rdata[0] = 0x00; |
1850 | 1938 | rdata[1] = 0x02; |
1851 | 1939 | rdata[8] = 0x00; |
r241749 | r241750 | |
1866 | 1954 | rdata[6] = convert_to_bcd(systime.local_time.year % 100); // Year |
1867 | 1955 | rdata[7] = convert_to_bcd(systime.local_time.year / 100); // Century |
1868 | 1956 | rdata[8] = 0x00; |
1957 | //printf("Read RTC Time\n"); | |
1869 | 1958 | return 0; |
1870 | 1959 | } |
1871 | 1960 | return 1; |
r241749 | r241750 | |
1893 | 1982 | while(cmd_ptr < 0x3f && !end) |
1894 | 1983 | { |
1895 | 1984 | INT8 bytes_to_send = (INT8)pif_cmd[cmd_ptr++]; |
1985 | //printf("bytes to send: 0x%02x\n", bytes_to_send); | |
1896 | 1986 | |
1897 | 1987 | if (bytes_to_send == -2) |
1898 | 1988 | { |
1899 | 1989 | end = 1; |
1990 | //printf("end\n"); | |
1900 | 1991 | } |
1901 | 1992 | else if (bytes_to_send < 0) |
1902 | 1993 | { |
1994 | //printf("do nothing\n"); | |
1903 | 1995 | // do nothing |
1904 | 1996 | } |
1905 | 1997 | else |
r241749 | r241750 | |
1910 | 2002 | UINT8 send_buffer[0x40]; |
1911 | 2003 | |
1912 | 2004 | INT8 bytes_to_recv = pif_cmd[cmd_ptr++]; |
2005 | //printf("bytes to receive: 0x%02x\n", bytes_to_recv); | |
1913 | 2006 | |
1914 | 2007 | if (bytes_to_recv == -2) |
1915 | 2008 | { |
r241749 | r241750 | |
1922 | 2015 | } |
1923 | 2016 | |
1924 | 2017 | int res = pif_channel_handle_command(channel, bytes_to_send, send_buffer, bytes_to_recv, recv_buffer); |
2018 | //printf("result: %d\n", res); | |
1925 | 2019 | |
1926 | 2020 | if (res == 0) |
1927 | 2021 | { |
2022 | //printf("cmd_ptr (%d) + bytes_to_recv (%d) = %d\n", cmd_ptr, bytes_to_recv, cmd_ptr + bytes_to_recv); | |
1928 | 2023 | if (cmd_ptr + bytes_to_recv > 0x3f) |
1929 | 2024 | { |
1930 | 2025 | fatalerror("cmd_ptr overflow\n"); |
r241749 | r241750 | |
2015 | 2110 | ret = si_status; |
2016 | 2111 | } |
2017 | 2112 | |
2113 | //printf("si_reg_r %08x = %08x\n", offset * 4, ret); fflush(stdout); | |
2018 | 2114 | return ret; |
2019 | 2115 | } |
2020 | 2116 | |
2021 | 2117 | WRITE32_MEMBER( n64_periphs::si_reg_w ) |
2022 | 2118 | { |
2119 | //printf("si_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); fflush(stdout); | |
2023 | 2120 | switch (offset) |
2024 | 2121 | { |
2025 | 2122 | case 0x00/4: // SI_DRAM_ADDR_REG |
r241749 | r241750 | |
2299 | 2396 | return; |
2300 | 2397 | |
2301 | 2398 | device_image_interface *image = dynamic_cast<device_image_interface *>(periphs->m_nvram_image); |
2302 | ||
2399 | //printf("Saving stuff\n"); | |
2303 | 2400 | UINT8 data[0x30800]; |
2304 | 2401 | memcpy(data, n64_sram, 0x20000); |
2305 | 2402 | memcpy(data + 0x20000, periphs->m_save_data.eeprom, 0x800); |
r241749 | r241750 | |
---|---|---|
105 | 105 | const device_type NAOMI_M2_BOARD = &device_creator<naomi_m2_board>; |
106 | 106 | |
107 | 107 | naomi_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__) | |
110 | 109 | { |
111 | 110 | key_tag = 0; |
112 | 111 | } |
r241749 | r241750 | |
121 | 120 | { |
122 | 121 | naomi_board::device_start(); |
123 | 122 | |
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 | |
124 | 129 | 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); | |
125 | 133 | |
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); | |
126 | 138 | 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)); | |
128 | 147 | } |
129 | 148 | |
130 | 149 | void naomi_m2_board::device_reset() |
r241749 | r241750 | |
132 | 151 | naomi_board::device_reset(); |
133 | 152 | |
134 | 153 | 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); | |
135 | 157 | |
136 | 158 | rom_cur_address = 0; |
159 | prot_cur_address = 0; | |
160 | subkey = 0; | |
161 | dec_hist = 0; | |
162 | dec_header = 0; | |
163 | enc_ready = false; | |
137 | 164 | |
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; | |
144 | 169 | } |
145 | 170 | |
146 | 171 | void naomi_m2_board::board_setup_address(UINT32 address, bool is_dma) |
r241749 | r241750 | |
150 | 175 | |
151 | 176 | void naomi_m2_board::board_get_buffer(UINT8 *&base, UINT32 &limit) |
152 | 177 | { |
153 | ||
154 | 178 | if(rom_cur_address & 0x40000000) { |
155 | 179 | 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 | } | |
157 | 193 | limit = 2; |
158 | 194 | |
159 | 195 | } else |
r241749 | r241750 | |
178 | 214 | |
179 | 215 | void naomi_m2_board::board_write(offs_t offset, UINT16 data) |
180 | 216 | { |
181 | ||
182 | ||
183 | 217 | if(offset & 0x40000000) { |
184 | 218 | if((offset & 0x0f000000) == 0x02000000) { |
185 | 219 | offset &= RAM_SIZE-1; |
r241749 | r241750 | |
188 | 222 | return; |
189 | 223 | } |
190 | 224 | 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; | |
195 | 228 | } |
196 | 229 | } |
197 | 230 | throw emu_fatalerror("NAOMIM2: unhandled board write %08x, %04x\n", offset, data); |
198 | 231 | } |
199 | 232 | |
200 | UINT16 naomi_m2_board::read_callback(UINT32 addr) | |
233 | /*************************************************************************** | |
234 | DECRYPTION EMULATION | |
235 | ||
236 | By convention, we label the three known cart protection methods this way (using Deunan Knute's wording): | |
237 | M1: DMA read of protected ROM area | |
238 | M2: special read of ROM area which supplies decryption key first | |
239 | M3: normal read followed by write to cart's decryption buffer (up to 64kB), followed by M2 but from buffer area | |
240 | ||
241 | Notes below refer to M2 & M3. | |
242 | ||
243 | The encryption is done by a stream cipher operating in counter mode, which use a 16-bits internal block cipher. | |
244 | ||
245 | There are 2 "control bits" at the start of the decrypted stream which control the mode of operation: bit #1 set to 1 means | |
246 | that the decrypted stream needs to be decompressed after being decrypted. More on this later. | |
247 | ||
248 | The next 16-bits are part of the header (they don't belong to the plaintext), but his meaning is unclear. It has been | |
249 | conjectured that it could stablish when to "reset" the process and start processing a new stream (based on some tests | |
250 | on WWFROYAL, in which the decryption's output doesn't seem to be valid for more than some dozens of words), but some | |
251 | more testing would be needed for clarifying that. | |
252 | ||
253 | After those 18 heading bits, we find the proper plaintext. It must be noted that, due to the initial 2 special bits, | |
254 | the 16-bits words of the plaintext are shifted 2 bits respect to the word-boundaries of the output stream of the | |
255 | internal block-cipher. So, at a given step, the internal block cipher will output 16-bits, 14 of which will go to a | |
256 | given plaintext word, and the remaining 2 to the next plaintext word. | |
257 | ||
258 | The underlying block cipher consists of two 4-round Feistel Networks (FN): the first one takes the counter (16 bits), | |
259 | the game-key (>=26 bits) and the sequence-key (16 bits) and output a middle result (16 bits) which will act as another key | |
260 | for the second one. The second FN will take the encrypted word (16 bits), the game-key, the sequence-key and the result | |
261 | from the first FN and will output the decrypted word (16 bits). | |
262 | ||
263 | Each round of the Feistel Networks use four substitution sboxes, each having 6 inputs and 2 outputs. The input can be the | |
264 | XOR of at most two "sources bits", being source bits the bits from the previous round and the bits from the different keys. | |
265 | ||
266 | The underlying block cipher has the same structure than the one used by the CPS-2 (Capcom Play System 2) and, | |
267 | indeed, some of the used sboxes are exactly the same and appear in the same FN/round in both systems (this is not evident, | |
268 | as you need to apply a bitswapping and some XORs to the input & output of the sboxes to get the same values due). However, | |
269 | the key scheduling used by this implementation is much weaker than the CPS-2's one. Many s-boxes inputs aren't XORed with any | |
270 | key bit. | |
271 | ||
272 | Due to the small key-length, no sophisticated attacks are needed to recover the keys; a brute-force attack knowing just | |
273 | some (encrypted word-decrypted word) pairs suffice. However, due to the weak key scheduling, it should be noted that some | |
274 | related keys can produce the same output bytes for some (short) input sequences. | |
275 | ||
276 | The only difference in the decryption process between M2 and M3 is the initialization of the counter. In M3, the counter is | |
277 | always set to 0 at the beginning of the decryption while, in M2, the bits #1-#16 of the ciphertext's address are used | |
278 | to initialize the counter. | |
279 | ||
280 | Note that this implementation considers that the counter initialization for ram decryption is 0 simply because the ram is | |
281 | mapped to multiples of 128K. | |
282 | ||
283 | Due to the nature of the cipher, there are some degrees of freedom when choosing the s-boxes and keys values; by example, | |
284 | you could apply a fixed bitswapping and XOR to the keys and the decryption would remain the same as long as you change | |
285 | accordingly the s-boxes' definitions. So the order of the bits in the keys is arbitrary, and the s-boxes values have been | |
286 | chosen so as to make the key for CAPSNK equal to 0. | |
287 | ||
288 | It can be observed that a couple of sboxes have incomplete tables (a 255 value indicate an unknown value). The recovered keys | |
289 | as of december/2010 show small randomness and big correlations, making possible that some unseen bits could make the | |
290 | decryption need those incomplete parts. | |
291 | ||
292 | ****************************************************************************************/ | |
293 | ||
294 | const 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 | ||
447 | const 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 | ||
599 | const 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 | ||
607 | const 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 | ||
615 | const 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 | ||
621 | const 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 | ||
623 | const 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 | ||
625 | int naomi_m2_board::feistel_function(int input, const struct sbox *sboxes, UINT32 subkeys) | |
201 | 626 | { |
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; | |
205 | 630 | |
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; | |
206 | 642 | } |
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 | /************************** | |
648 | This implementation is an "educational" version. It must be noted that it can be speed-optimized in a number of ways. | |
649 | The most evident one is to factor out the parts of the key-scheduling that must only be done once (like the game-key & | |
650 | sequence-key parts) as noted in the comments inlined in the function. More sophisticated speed-ups can be gained by | |
651 | noticing that the weak key-scheduling would allow to create some pregenerated look-up tables for doing most of the work | |
652 | of the function. Even so, it would still be pretty slow, so caching techniques could be a wiser option here. | |
653 | **************************/ | |
654 | ||
655 | UINT16 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 | } | |
210 | 674 | } |
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; | |
211 | 759 | } |
212 | 760 | |
213 | static MACHINE_CONFIG_FRAGMENT( naomim2 ) | |
214 | MCFG_DEVICE_ADD("segam2crypt", SEGA315_5881_CRYPT, 0) | |
215 | MCFG_SET_READ_CALLBACK(naomi_m2_board, read_callback) | |
216 | MACHINE_CONFIG_END | |
761 | UINT16 naomi_m2_board::get_decrypted_16() | |
762 | { | |
763 | UINT16 enc; | |
217 | 764 | |
218 | machine_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 | ||
781 | void naomi_m2_board::enc_start() | |
219 | 782 | { |
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; | |
221 | 793 | } |
222 | 794 | |
795 | void 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 | |
807 | 0xxxxxxx - next node index | |
808 | 1a0bbccc - 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 | |
819 | 11111111 - empty node | |
820 | */ | |
821 | const 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 | ||
878 | int 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 | ||
891 | void 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 | } |
r241749 | r241750 | |
---|---|---|
2 | 2 | #define _NAOMIM2_H_ |
3 | 3 | |
4 | 4 | #include "naomibd.h" |
5 | #include "315-5881_crypt.h" | |
6 | 5 | |
7 | 6 | #define MCFG_NAOMI_M2_BOARD_ADD(_tag, _key_tag, _eeprom_tag, _actel_tag, _irq_cb) \ |
8 | 7 | MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_M2_BOARD, _eeprom_tag, _actel_tag, _irq_cb) \ |
r241749 | r241750 | |
12 | 11 | { |
13 | 12 | public: |
14 | 13 | 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; | |
18 | 14 | |
19 | 15 | static void static_set_tags(device_t &device, const char *_key_tag); |
20 | UINT16 read_callback(UINT32 addr); | |
21 | 16 | |
22 | 17 | protected: |
23 | 18 | virtual void device_start(); |
24 | 19 | virtual void device_reset(); |
25 | virtual machine_config_constructor device_mconfig_additions() const; | |
26 | 20 | |
27 | 21 | virtual void board_setup_address(UINT32 address, bool is_dma); |
28 | 22 | virtual void board_get_buffer(UINT8 *&base, UINT32 &limit); |
r241749 | r241750 | |
30 | 24 | virtual void board_write(offs_t offset, UINT16 data); |
31 | 25 | |
32 | 26 | private: |
27 | enum { | |
28 | RAM_SIZE = 65536, BUFFER_SIZE = 32768, LINE_SIZE = 512, | |
29 | FLAG_COMPRESSED = 0x10000, FLAG_LINE_SIZE_512 = 0x20000 | |
30 | }; | |
33 | 31 | |
34 | ||
35 | 32 | const char *key_tag; |
33 | UINT32 key; | |
36 | 34 | |
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(); | |
39 | 69 | }; |
40 | 70 | |
41 | 71 | extern const device_type NAOMI_M2_BOARD; |
r241749 | r241750 | |
---|---|---|
202 | 202 | mem16[0x130366 / 2] = 0x4e93; |
203 | 203 | mem16[0x1303f6 / 2] = 0x4e93; |
204 | 204 | } |
205 | ||
206 | DRIVER_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 | } |
r241749 | r241750 | |
---|---|---|
1 | #include "segabb.h" | |
2 | ||
3 | const device_type SEGA_LINDBERGH_BASEBOARD = &device_creator<sega_lindbergh_baseboard_device>; | |
4 | ||
5 | DEVICE_ADDRESS_MAP_START(map1, 32, sega_lindbergh_baseboard_device) | |
6 | ADDRESS_MAP_END | |
7 | ||
8 | DEVICE_ADDRESS_MAP_START(map2, 32, sega_lindbergh_baseboard_device) | |
9 | ADDRESS_MAP_END | |
10 | ||
11 | DEVICE_ADDRESS_MAP_START(map3, 32, sega_lindbergh_baseboard_device) | |
12 | ADDRESS_MAP_END | |
13 | ||
14 | sega_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 | ||
19 | void 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 | ||
27 | void sega_lindbergh_baseboard_device::device_reset() | |
28 | { | |
29 | pci_device::device_reset(); | |
30 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
11 | class sega_lindbergh_baseboard_device : public pci_device { | |
12 | public: | |
13 | sega_lindbergh_baseboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); | |
14 | ||
15 | protected: | |
16 | virtual void device_start(); | |
17 | virtual void device_reset(); | |
18 | ||
19 | private: | |
20 | DECLARE_ADDRESS_MAP(map1, 32); | |
21 | DECLARE_ADDRESS_MAP(map2, 32); | |
22 | DECLARE_ADDRESS_MAP(map3, 32); | |
23 | }; | |
24 | ||
25 | extern const device_type SEGA_LINDBERGH_BASEBOARD; | |
26 | ||
27 | #endif |
r241749 | r241750 | |
---|---|---|
180 | 180 | |
181 | 181 | *************************************************************************/ |
182 | 182 | |
183 | ||
183 | #include "emu.h" | |
184 | #include "cpu/m6800/m6800.h" | |
184 | 185 | #include "includes/slapstic.h" |
186 | #include "cpu/m68000/m68000.h" | |
185 | 187 | |
186 | 188 | |
187 | extern const device_type SLAPSTIC = &device_creator<atari_slapstic_device>; | |
189 | /************************************* | |
190 | * | |
191 | * Debugging | |
192 | * | |
193 | *************************************/ | |
188 | 194 | |
189 | atari_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) | |
233 | 196 | |
234 | 197 | |
235 | 198 | |
236 | void atari_slapstic_device::device_start() | |
199 | /************************************* | |
200 | * | |
201 | * Structure of slapstic params | |
202 | * | |
203 | *************************************/ | |
204 | ||
205 | struct mask_value | |
237 | 206 | { |
207 | int mask, value; | |
208 | }; | |
238 | 209 | |
239 | } | |
240 | 210 | |
241 | ||
211 | struct slapstic_data | |
242 | 212 | { |
213 | int bankstart; | |
214 | int bank[4]; | |
243 | 215 | |
244 | } | |
216 | struct mask_value alt1; | |
217 | struct mask_value alt2; | |
218 | struct mask_value alt3; | |
219 | struct mask_value alt4; | |
220 | int altshift; | |
245 | 221 | |
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 | ||
246 | 238 | /************************************* |
247 | 239 | * |
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 | ||
269 | enum | |
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 | * | |
248 | 288 | * Slapstic definitions |
249 | 289 | * |
250 | 290 | *************************************/ |
r241749 | r241750 | |
739 | 779 | |
740 | 780 | |
741 | 781 | |
782 | /************************************* | |
783 | * | |
784 | * Statics | |
785 | * | |
786 | *************************************/ | |
742 | 787 | |
788 | static UINT8 state; | |
789 | static UINT8 current_bank; | |
790 | static UINT8 access_68k; | |
791 | ||
792 | static UINT8 alt_bank; | |
793 | static UINT8 bit_bank; | |
794 | static UINT8 add_bank; | |
795 | static UINT8 bit_xor; | |
796 | ||
797 | static struct slapstic_data slapstic; | |
798 | ||
799 | ||
800 | static void slapstic_log(running_machine &machine, offs_t offset); | |
801 | static FILE *slapsticlog; | |
802 | ||
803 | ||
743 | 804 | /************************************* |
744 | 805 | * |
745 | 806 | * Initialization |
746 | 807 | * |
747 | 808 | *************************************/ |
748 | 809 | |
749 | void | |
810 | void slapstic_init(running_machine &machine, int chip) | |
750 | 811 | { |
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(); | |
758 | 813 | |
759 | 814 | /* only a small number of chips are known to exist */ |
760 | 815 | if (chip < 101 || chip > 118) |
r241749 | r241750 | |
768 | 823 | /* reset the chip */ |
769 | 824 | slapstic_reset(); |
770 | 825 | |
826 | /* see if we're 68k or 6502/6809 based */ | |
827 | access_68k = (cputype == M68000 || cputype == M68010); | |
771 | 828 | |
772 | 829 | /* 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); | |
779 | 836 | } |
780 | 837 | |
781 | 838 | |
782 | void | |
839 | void slapstic_reset(void) | |
783 | 840 | { |
784 | 841 | /* reset the chip */ |
785 | 842 | state = DISABLED; |
r241749 | r241750 | |
796 | 853 | * |
797 | 854 | *************************************/ |
798 | 855 | |
799 | int | |
856 | int slapstic_bank(void) | |
800 | 857 | { |
801 | 858 | return current_bank; |
802 | 859 | } |
r241749 | r241750 | |
809 | 866 | * |
810 | 867 | *************************************/ |
811 | 868 | |
812 | ||
869 | static int alt2_kludge(address_space &space, offs_t offset) | |
813 | 870 | { |
814 | 871 | /* Of the 3 alternate addresses, only the middle one needs to actually hit |
815 | 872 | in the slapstic region; the first and third ones can be anywhere in the |
r241749 | r241750 | |
856 | 913 | * |
857 | 914 | *************************************/ |
858 | 915 | |
859 | int | |
916 | int slapstic_tweak(address_space &space, offs_t offset) | |
860 | 917 | { |
861 | 918 | /* reset is universal */ |
862 | 919 | if (offset == 0x0000) |
r241749 | r241750 | |
1080 | 1137 | * |
1081 | 1138 | *************************************/ |
1082 | 1139 | |
1083 | ||
1140 | static void slapstic_log(running_machine &machine, offs_t offset) | |
1084 | 1141 | { |
1085 | 1142 | static attotime last_time; |
1086 | 1143 |
r241749 | r241750 | |
---|---|---|
572 | 572 | * |
573 | 573 | *************************************/ |
574 | 574 | |
575 | // the naomi hookup of 315-5881 reads 16-bits at a time, here we seem to read 32? | |
576 | ||
577 | 575 | READ32_MEMBER( stv_state::common_prot_r ) |
578 | 576 | { |
579 | 577 | UINT32 *ROM = (UINT32 *)space.machine().root_device().memregion("abus")->base(); |
r241749 | r241750 | |
590 | 588 | |
591 | 589 | 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); |
592 | 590 | |
593 | //UINT16 res = m_cryptdevice->do_decrypt(base); | |
594 | ||
595 | 591 | m_ctrl_index += 4; |
596 | 592 | return retdata; |
597 | 593 | |
r241749 | r241750 | |
606 | 602 | } |
607 | 603 | |
608 | 604 | |
609 | UINT16 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 | } | |
614 | 605 | |
606 | ||
615 | 607 | WRITE32_MEMBER ( stv_state::common_prot_w ) |
616 | 608 | { |
617 | 609 | COMBINE_DATA(&m_a_bus[offset]); |
r241749 | r241750 | |
624 | 616 | else if(offset == 2) |
625 | 617 | { |
626 | 618 | 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 | ||
631 | 619 | } |
632 | 620 | else if(offset == 3) |
633 | 621 | { |
634 | 622 | COMBINE_DATA(&m_abus_protkey); |
635 | ||
636 | m_cryptdevice->set_subkey(m_abus_protkey>>16); | |
637 | ||
638 | ||
639 | 623 | int a_bus_vector; |
640 | 624 | a_bus_vector = m_abus_prot_addr >> 16; |
641 | 625 | a_bus_vector|= (m_abus_prot_addr & 0xffff) << 16; |
r241749 | r241750 | |
671 | 655 | { |
672 | 656 | install_common_protection(); |
673 | 657 | m_prot_readback = astrass_prot_read_callback; |
674 | // m_cryptdevice->set_key(0x00000000); | |
675 | 658 | } |
676 | 659 | |
677 | 660 | void stv_state::install_ffreveng_protection() |
r241749 | r241750 | |
---|---|---|
42 | 42 | |
43 | 43 | int m_select; |
44 | 44 | int m_clock; |
45 | int m_datain; | |
45 | 46 | |
46 | 47 | UINT8 m_bit; |
47 | 48 | emu_timer *m_dip_timer; |
r241749 | r241750 | |
---|---|---|
441 | 441 | bigkong // bootleg |
442 | 442 | monkeyd // bootleg |
443 | 443 | dking // Crazy Kong Bootleg |
444 | ckongdks // Spanish Crazy Kong bootleg | |
445 | 444 | ckongpt2 // (c) 1981 Falcon |
446 | 445 | ckongpt2a // (c) 1981 Falcon |
447 | 446 | ckongpt2j // (c) 1981 Falcon |
r241749 | r241750 | |
1476 | 1475 | gunchamp // (c) 1980 Model Racing |
1477 | 1476 | gunchamps // (c) 1980 Model Racing (sshot.c) |
1478 | 1477 | spaceatt // (c) 1978 Video Games GMBH |
1479 | galmonst // (c) Laguna S.A. | |
1480 | 1478 | spaceat2 // (c) 1980 Zenitone-Microsec Ltd |
1481 | 1479 | spacecom // bootleg |
1482 | 1480 | sinvzen // Zenitone-Microsec Ltd |
r241749 | r241750 | |
1798 | 1796 | youjyudn // (c) 1986 (Japan) |
1799 | 1797 | |
1800 | 1798 | vigilant // (c) 1988 (World) |
1801 | vigilantb // (c) 1988 (World) | |
1802 | 1799 | vigilant1 // (c) 1988 (World) |
1803 | 1800 | vigilantu // (c) 1988 (US) |
1804 | 1801 | vigilantu2 // (c) 1988 (US) |
r241749 | r241750 | |
2523 | 2520 | pbobble3u // 1996.11 E29 (c) 1996 Taito Corporation (US) |
2524 | 2521 | pbobble3j // 1996.11 E29 (c) 1996 Taito Corporation (Japan) |
2525 | 2522 | arkretrn // 1997.03 E36 (c) 1997 Taito Corporation (World) |
2526 | arkretrnu // 1997.03 E36 (c) 1997 Taito Corporation (US) | |
2527 | 2523 | arkretrnj // 1997.03 E36 (c) 1997 Taito Corporation (Japan) |
2528 | 2524 | kirameki // 1997.09 E44 (c) 1997 Taito Corporation (Japan) |
2529 | 2525 | puchicar // 1997.?? E46 (c) 1997 Taito Corporation (World) |
r241749 | r241750 | |
2747 | 2743 | batriderja // (c) 1998 Raizing/8ing |
2748 | 2744 | batridert // (c) 1998 Raizing/8ing |
2749 | 2745 | bbakraid // (c) 1999 8ing |
2750 | bbakraidc // (c) 1999 8ing | |
2751 | 2746 | bbakraidj // (c) 1999 8ing |
2752 | 2747 | bbakraidja // (c) 1999 8ing |
2753 | 2748 | |
r241749 | r241750 | |
2847 | 2842 | crusherm // (c) 1999 Takumi |
2848 | 2843 | tjumpman // (c) 1999 Namco |
2849 | 2844 | |
2850 | mushisam // (c) 2004 Cave (AMI license) - 2004/10/12.MASTER VER. | |
2851 | mushisama // (c) 2004 Cave (AMI license) - 2004/10/12 MASTER VER. | |
2852 | mushisamb // (c) 2004 Cave (AMI license) - 2004/10/12 MASTER VER | |
2853 | espgal2 // (c) 2005 Cave (AMI license) - 2005/11/14 MASTER VER | |
2854 | ibara // (c) 2005 Cave (AMI license) - 2005/03/22 MASTER VER.. | |
2855 | ibarablk // (c) 2005 Cave (AMI license) - 2006/02/06. MASTER VER. | |
2856 | ibarablka // (c) 2005 Cave (AMI license) - 2006/02/06 MASTER VER. | |
2857 | mushitam // (c) 2005 Cave (AMI license) - 2005/09/09.MASTER VER | |
2858 | mushitama // (c) 2005 Cave (AMI license) - 2005/09/09 MASTER VER | |
2859 | futari15 // (c) 2006 Cave (AMI license) - 2006/12/8.MASTER VER. 1.54. | |
2860 | futari15a // (c) 2006 Cave (AMI license) - 2006/12/8 MASTER VER 1.54 | |
2861 | futari10 // (c) 2006 Cave (AMI license) - 2006/10/23 MASTER VER. | |
2862 | futaribl // (c) 2007 Cave (AMI license) - 2009/11/27 INTERNATIONAL BL | |
2863 | futariblj // (c) 2007 Cave (AMI license) - 2007/12/11 BLACK LABEL VER | |
2864 | pinkswts // (c) 2006 Cave (AMI license) - 2006/04/06 MASTER VER.... | |
2865 | pinkswtsa // (c) 2006 Cave (AMI license) - 2006/04/06 MASTER VER... | |
2866 | pinkswtsb // (c) 2006 Cave (AMI license) - 2006/04/06 MASTER VER. | |
2867 | pinkswtsx // (c) 2006 Cave (AMI license) - 2006/xx/xx MASTER VER. | |
2868 | deathsml // (c) 2007 Cave (AMI license) - 2007/10/09 MASTER VER | |
2869 | mmpork // (c) 2007 Cave (AMI license) - 2007/ 4/17 MASTER VER. | |
2870 | mmmbanc // (c) 2007 Cave (AMI license) - 2007/06/05 MASTER VER. | |
2871 | ddpdfk // (c) 2008 Cave (AMI license) - 2008/06/23 MASTER VER 1.5 | |
2872 | ddpdfk10 // (c) 2008 Cave (AMI license) - 2008/05/16 MASTER VER | |
2873 | dsmbl // (c) 2008 Cave (AMI license) - 2008/10/06 MEGABLACK LABEL VER | |
2845 | mushisam | |
2846 | mushisama | |
2847 | mushisamb | |
2848 | espgal2 | |
2849 | ibara | |
2850 | ibarablk | |
2851 | ibarablka | |
2852 | mushitam | |
2853 | mushitama | |
2854 | futari15 | |
2855 | futari15a | |
2856 | futari10 | |
2857 | futaribl | |
2858 | pinkswts | |
2859 | pinkswtsa | |
2860 | pinkswtsb | |
2861 | pinkswtsx | |
2862 | deathsml | |
2863 | mmpork | |
2864 | mmmbanc | |
2865 | ddpdfk | |
2866 | ddpdfk10 | |
2867 | dsmbl | |
2874 | 2868 | |
2875 | 2869 | deathsm2 |
2876 | 2870 | |
r241749 | r241750 | |
4690 | 4684 | desertbr // 1993.?? Desert Breaker (World, FD1094, decrypted) |
4691 | 4685 | desertbrj // 1992.10 Desert Breaker (Japan) |
4692 | 4686 | pontoon |
4693 | hamaway | |
4694 | 4687 | |
4695 | 4688 | // System18 Bootlegs |
4696 | 4689 | astormbl // BOOTLEG |
r241749 | r241750 | |
5483 | 5476 | wldrider // 2001.05 Wild Riders |
5484 | 5477 | clubkrte // 2001.06 Club Kart: European Session |
5485 | 5478 | clubkrtd // 2001.06 Club Kart: European Session (Rev D) |
5486 | clubkrtc // 2001.?? Club Kart: European Session (Rev C) | |
5487 | 5479 | beachspi // 2001.07 Beach Spikers |
5488 | 5480 | vf4cart // 2001.08.02 Virtua Fighter 4 (cartridge) |
5489 | 5481 | vf4 // 2001.08.02 Virtua Fighter 4 (GD-ROM) |
r241749 | r241750 | |
5503 | 5495 | initdv2e // 2002.12 Initial D Arcade Stage Ver. 2 (export) |
5504 | 5496 | vf4evo // 2002.12 Virtua Fighter 4 Evolution Ver.B |
5505 | 5497 | clubk2k3 // 2003.?? Club Kart: European Session (2003) |
5506 | clubk2k | |
5498 | clubk2kf // 2003.?? Club Kart: European Session (2003, not protected) | |
5507 | 5499 | initdexpo // 2002.?? Initial D Arcade Stage (Export) |
5508 | 5500 | // 2002.?? Sega Driving Simulator |
5509 | 5501 | // 2003.03 World Club Champion Football Serie A 2001-2002 Ver.2 |
r241749 | r241750 | |
7916 | 7908 | ninjakd2a // UPL-????? (c) 1987 |
7917 | 7909 | ninjakd2b // UPL-????? (c) 1987 |
7918 | 7910 | rdaction // UPL-87003?(c) 1987 + World Games license |
7919 | jt104 // hack? | |
7920 | 7911 | mnight // UPL-????? (c) 1987 distributed by Kawakus |
7921 | 7912 | arkarea // UPL-87007 (c) 1988 (Arcade TV Game List - P.67, Right, 2 from top) |
7922 | 7913 | robokid // UPL-88013 (c) 1988 |
r241749 | r241750 | |
8308 | 8299 | supdrapob // bootleg |
8309 | 8300 | sbagman // (c) 1984 |
8310 | 8301 | sbagmans // (c) 1984 + Stern license |
8311 | botanic // (c) 1983 | |
8312 | botanicf // (c) 1984 | |
8302 | botanic // (c) 1985 | |
8313 | 8303 | squaitsa // (c) 1985 |
8314 | 8304 | tankbust // (c) 1985 |
8315 | 8305 | |
r241749 | r241750 | |
9375 | 9365 | rocktris // (c) 1994? Yun Sung |
9376 | 9366 | magicbub // (c) Yun Sung |
9377 | 9367 | magicbuba // (c) Yun Sung |
9378 | magicbubb // (c) Yun Sung | |
9379 | 9368 | shocking // (c) 1997 Yun Sung |
9380 | 9369 | shockingk // (c) 1997 Yun Sung |
9381 | 9370 | bombkick // (c) 1998 Yun Sung |
r241749 | r241750 | |
9732 | 9721 | dw2v100x // |
9733 | 9722 | drgw2c // |
9734 | 9723 | drgw2j // |
9735 | drgw2hk // | |
9736 | 9724 | drgw3 // (c) 1998 Dragon World 3 |
9737 | 9725 | drgw3105 // |
9738 | 9726 | drgw3100 // |
r241749 | r241750 | |
9833 | 9821 | // IGS PGM2 Platform |
9834 | 9822 | orleg2 // (c) 2007 |
9835 | 9823 | orleg2o // |
9836 | orleg2oa // | |
9837 | 9824 | kov2nl // (c) 2008 |
9838 | 9825 | kov2nlo // |
9839 | kov2nloa // | |
9840 | 9826 | ddpdojh // |
9841 | 9827 | kov3 // |
9842 | 9828 | |
r241749 | r241750 | |
10982 | 10968 | |
10983 | 10969 | // IGT Player's Edge Plus |
10984 | 10970 | peset001 // (c) 1987 IGT - International Game Technology |
10985 | peset004 // (c) 1987 IGT - International Game Technology | |
10986 | 10971 | peset038 // (c) 1987 IGT - International Game Technology |
10987 | peivc006 // (c) 1987 IGT - International Game Technology | |
10988 | 10972 | pepk1024 // (c) 1987 IGT - International Game Technology |
10989 | 10973 | pepp0002 // (c) 1987 IGT - International Game Technology |
10990 | 10974 | pepp0002a // (c) 1987 IGT - International Game Technology |
r241749 | r241750 | |
11128 | 11112 | peip0116 // (c) 1987 IGT - International Game Technology |
11129 | 11113 | peip0118 // (c) 1987 IGT - International Game Technology |
11130 | 11114 | peip0120 // (c) 1987 IGT - International Game Technology |
11131 | pemg0252 // (c) 1994 IGT - International Game Technology | |
11132 | 11115 | pebe0014 // (c) 1994 IGT - International Game Technology |
11133 | peke0017 // (c) 1994 IGT - International Game Technology | |
11134 | 11116 | peke1012 // (c) 1994 IGT - International Game Technology |
11135 | 11117 | peke1013 // (c) 1994 IGT - International Game Technology |
11136 | 11118 | peps0014 // (c) 1996 IGT - International Game Technology |
r241749 | r241750 | |
20252 | 20234 | m1cluedob1 // |
20253 | 20235 | m1cluedob1p // |
20254 | 20236 | m1cluedob1h // |
20255 | m1cluedobi2 // | |
20256 | m1cluedobi2p // | |
20257 | 20237 | m1cluedo4 |
20258 | 20238 | m1cluedo4p |
20259 | 20239 | m1cluedo3 |
r241749 | r241750 | |
31810 | 31790 | ufomini |
31811 | 31791 | ufo21 |
31812 | 31792 | ufo800 |
31813 | westdrm | |
31814 | 31793 | |
31815 | 31794 | // VLC Nevada |
31816 | 31795 | nevada |
r241749 | r241750 | |
---|---|---|
271 | 271 | SOUNDS += MOS7360 |
272 | 272 | #SOUNDS += ESQPUMP |
273 | 273 | #SOUNDS += VRC6 |
274 | SOUNDS += SB0400 | |
275 | SOUNDS += AC97 | |
276 | 274 | |
277 | 275 | #------------------------------------------------- |
278 | 276 | # specify available video cores |
r241749 | r241750 | |
292 | 290 | #VIDEOS += EF9340_1 |
293 | 291 | #VIDEOS += EF9345 |
294 | 292 | #VIDEOS += GF4500 |
295 | VIDEOS += GF6800GT | |
296 | 293 | VIDEOS += EPIC12 |
297 | 294 | VIDEOS += FIXFREQ |
298 | 295 | VIDEOS += H63484 |
r241749 | r241750 | |
439 | 436 | MACHINES += LDVP931 |
440 | 437 | #MACHINES += LH5810 |
441 | 438 | MACHINES += LINFLASH |
442 | MACHINES += LPCI | |
443 | 439 | #MACHINES += LSI53C810 |
444 | 440 | #MACHINES += M68307 |
445 | 441 | #MACHINES += M68340 |
r241749 | r241750 | |
582 | 578 | #BUSES += ADAMNET |
583 | 579 | #BUSES += APF |
584 | 580 | #BUSES += ARCADIA |
585 | #BUSES += ASTROCADE | |
586 | 581 | #BUSES += BML3 |
587 | 582 | #BUSES += BW2 |
588 | 583 | #BUSES += C64 |
r241749 | r241750 | |
611 | 606 | BUSES += ISA |
612 | 607 | #BUSES += ISBX |
613 | 608 | #BUSES += KC |
614 | #BUSES += LPCI | |
615 | 609 | #BUSES += MACPDS |
616 | 610 | #BUSES += MIDI |
617 | 611 | #BUSES += MEGADRIVE |
r241749 | r241750 | |
622 | 616 | #BUSES += O2 |
623 | 617 | #BUSES += ORICEXT |
624 | 618 | #BUSES += PCE |
619 | #BUSES += PCI | |
625 | 620 | #BUSES += PC_JOY |
626 | 621 | #BUSES += PC_KBD |
627 | 622 | #BUSES += PET |
628 | 623 | #BUSES += PLUS4 |
629 | #BUSES += PSX_CONTROLLER | |
630 | 624 | #BUSES += QL |
631 | 625 | BUSES += RS232 |
632 | 626 | #BUSES += S100 |
r241749 | r241750 | |
637 | 631 | #BUSES += SMS_CTRL |
638 | 632 | #BUSES += SMS_EXP |
639 | 633 | #BUSES += SNES |
640 | #BUSES += SPC1000 | |
641 | 634 | #BUSES += TI99PEB |
642 | 635 | #BUSES += TVC |
643 | 636 | #BUSES += VBOY |
r241749 | r241750 | |
1701 | 1694 | $(DRIVERS)/hikaru.o \ |
1702 | 1695 | $(DRIVERS)/hshavoc.o \ |
1703 | 1696 | $(DRIVERS)/kopunch.o $(VIDEO)/kopunch.o \ |
1704 | $(DRIVERS)/lindbergh.o | |
1697 | $(DRIVERS)/lindbergh.o \ | |
1705 | 1698 | $(MACHINE)/megadriv.o \ |
1706 | 1699 | $(DRIVERS)/megadrvb.o \ |
1707 | 1700 | $(DRIVERS)/megaplay.o \ |
r241749 | r241750 | |
1714 | 1707 | $(DRIVERS)/naomi.o $(MACHINE)/dc.o $(VIDEO)/powervr2.o $(MACHINE)/naomi.o \ |
1715 | 1708 | $(MACHINE)/naomig1.o $(MACHINE)/naomibd.o $(MACHINE)/naomirom.o $(MACHINE)/naomigd.o \ |
1716 | 1709 | $(MACHINE)/naomicrypt.o $(MACHINE)/naomim1.o $(MACHINE)/naomim2.o $(MACHINE)/naomim4.o \ |
1717 | $(MACHINE)/315-5881_crypt.o \ | |
1718 | 1710 | $(MACHINE)/awboard.o \ |
1719 | 1711 | $(MACHINE)/mie.o $(MACHINE)/maple-dc.o $(MACHINE)/mapledev.o $(MACHINE)/dc-ctrl.o $(MACHINE)/jvs13551.o \ |
1720 | 1712 | $(DRIVERS)/triforce.o \ |
r241749 | r241750 | |
1722 | 1714 | $(DRIVERS)/segac2.o \ |
1723 | 1715 | $(DRIVERS)/segae.o \ |
1724 | 1716 | $(DRIVERS)/shtzone.o \ |
1725 | $(DRIVERS)/segacoin.o \ | |
1726 | 1717 | $(DRIVERS)/segag80r.o $(MACHINE)/segag80.o $(AUDIO)/segag80r.o $(VIDEO)/segag80r.o \ |
1727 | 1718 | $(DRIVERS)/segag80v.o $(AUDIO)/segag80v.o $(VIDEO)/segag80v.o \ |
1728 | 1719 | $(DRIVERS)/segahang.o $(VIDEO)/segahang.o \ |
r241749 | r241750 | |
2658 | 2649 | |
2659 | 2650 | $(DRIVERS)/grchamp.o: $(LAYOUT)/grchamp.lh |
2660 | 2651 | |
2661 | $(DRIVERS)/harddriv.o: $(LAYOUT)/racedrivpan.lh | |
2662 | ||
2663 | 2652 | $(DRIVERS)/highvdeo.o: $(LAYOUT)/fashion.lh |
2664 | 2653 | |
2665 | 2654 | $(DRIVERS)/hankin.o: $(LAYOUT)/hankin.lh |
r241749 | r241750 | |
2844 | 2833 | |
2845 | 2834 | $(DRIVERS)/segas32.o: $(LAYOUT)/radr.lh |
2846 | 2835 | |
2847 | $(DRIVERS)/segaufo.o: $(LAYOUT)/newufo.lh \ | |
2848 | $(LAYOUT)/ufomini.lh \ | |
2849 | $(LAYOUT)/ufo21.lh \ | |
2850 | $(LAYOUT)/ufo800.lh | |
2851 | ||
2852 | 2836 | $(DRIVERS)/segaybd.o: $(LAYOUT)/pdrift.lh |
2853 | 2837 | |
2854 | 2838 | $(DRIVERS)/sigmab52.o: $(LAYOUT)/sigmab52.lh |
r241749 | r241750 | |
---|---|---|
208 | 208 | READ16_MEMBER( atarisy2_state::slapstic_r ) |
209 | 209 | { |
210 | 210 | int result = m_slapstic_base[offset]; |
211 | | |
211 | slapstic_tweak(space, offset); | |
212 | 212 | |
213 | 213 | /* an extra tweak for the next opcode fetch */ |
214 | m_videobank = | |
214 | m_videobank = slapstic_tweak(space, 0x1234) * 0x1000; | |
215 | 215 | return result; |
216 | 216 | } |
217 | 217 | |
218 | 218 | |
219 | 219 | WRITE16_MEMBER( atarisy2_state::slapstic_w ) |
220 | 220 | { |
221 | | |
221 | slapstic_tweak(space, offset); | |
222 | 222 | |
223 | 223 | /* an extra tweak for the next opcode fetch */ |
224 | m_videobank = | |
224 | m_videobank = slapstic_tweak(space, 0x1234) * 0x1000; | |
225 | 225 | } |
226 | 226 | |
227 | 227 |
r241749 | r241750 | |
---|---|---|
30 | 30 | * |
31 | 31 | *************************************/ |
32 | 32 | |
33 | ||
33 | VIDEO_START_MEMBER(harddriv_state,harddriv) | |
34 | 34 | { |
35 | 35 | UINT32 *destmask, mask; |
36 | 36 | int i; |
r241749 | r241750 | |
161 | 161 | |
162 | 162 | void harddriv_state::update_palette_bank(int newbank) |
163 | 163 | { |
164 | screen_device &scr = m_gsp->screen(); | |
165 | ||
166 | scr.update_partial(scr.vpos()); | |
164 | m_screen->update_partial(m_screen->vpos()); | |
167 | 165 | m_gfx_palettebank = newbank; |
168 | 166 | } |
169 | 167 | |
r241749 | r241750 | |
216 | 214 | |
217 | 215 | COMBINE_DATA(&m_gsp_control_hi[offset]); |
218 | 216 | newword = m_gsp_control_hi[offset]; |
219 | screen_device &scr = m_gsp->screen(); | |
220 | 217 | |
221 | 218 | switch (offset & 7) |
222 | 219 | { |
r241749 | r241750 | |
226 | 223 | |
227 | 224 | case 0x01: |
228 | 225 | data = data & (15 >> m_gsp_multisync); |
229 | scr | |
226 | m_screen->update_partial(m_screen->vpos() - 1); | |
230 | 227 | m_gfx_finescroll = data; |
231 | 228 | break; |
232 | 229 | |
r241749 | r241750 | |
410 | 407 | TMS340X0_SCANLINE_IND16_CB_MEMBER(harddriv_state::scanline_driver) |
411 | 408 | { |
412 | 409 | UINT8 *vram_base = &m_gsp_vram[(params->rowaddr << 12) & m_vram_mask]; |
413 | ||
414 | if (!vram_base) return; | |
415 | ||
416 | 410 | UINT16 *dest = &bitmap.pix16(scanline); |
417 | 411 | int coladdr = (params->yoffset << 9) + ((params->coladdr & 0xff) << 4) - 15 + (m_gfx_finescroll & 0x0f); |
418 | 412 | int x; |
r241749 | r241750 | |
428 | 422 | TMS340X0_SCANLINE_IND16_CB_MEMBER(harddriv_state::scanline_multisync) |
429 | 423 | { |
430 | 424 | UINT8 *vram_base = &m_gsp_vram[(params->rowaddr << 11) & m_vram_mask]; |
431 | ||
432 | if (!vram_base) return; | |
433 | ||
434 | 425 | UINT16 *dest = &bitmap.pix16(scanline); |
435 | 426 | int coladdr = (params->yoffset << 9) + ((params->coladdr & 0xff) << 3) - 7 + (m_gfx_finescroll & 0x07); |
436 | 427 | int x; |
r241749 | r241750 | |
---|---|---|
7 | 7 | a single 64x32 one, or one of them can be moved to the side of screen, giving |
8 | 8 | a high score display suitable for vertical games. |
9 | 9 | The chip also generates clock and interrupt signals suitable for a 6809. |
10 | It uses 0x2000 bytes of static RAM for the tilemaps and sprite lists, and two | |
11 | 64kx4bit DRAMs, presumably as a double frame buffer. The maximum addressable | |
10 | It uses 0x2000 bytes of RAM for the tilemaps and sprites, and an additional | |
11 | 0x100 bytes, maybe for scroll RAM and line buffers. The maximum addressable | |
12 | 12 | ROM is 0x80000 bytes (addressed 16 bits at a time). Tile and sprite data both |
13 | come from the same ROM space. Like the 005885, external circuitry can cause | |
14 | tiles and sprites to be fetched from different ROMs (used by Haunted Castle). | |
15 | ||
13 | come from the same ROM space. | |
16 | 14 | Two 256x4 lookup PROMs are also used to increase the color combinations. |
17 | 15 | All tilemap / sprite priority handling is done internally and the chip exports |
18 | 16 | 7 bits of color code, composed of 2 bits of palette bank, 1 bit indicating tile |
r241749 | r241750 | |
29 | 27 | outputs: |
30 | 28 | - address lines for tilemap RAM (AX0-AX12) |
31 | 29 | - 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) | |
35 | 32 | - address lines for the gfx ROMs (R0-R17) |
36 | 33 | - address lines for the tile lookup PROMs (VCF0-VCF3, VCB0-VCB3) |
37 | 34 | - address lines for the sprite lookup PROMs (OCB0-OCB3, OCF0-OCF3) |
r241749 | r241750 | |
---|---|---|
276 | 276 | #define GX_MAX_OBJECTS (GX_MAX_SPRITES + GX_MAX_LAYERS) |
277 | 277 | |
278 | 278 | static struct GX_OBJ { int order, offs, code, color; } *gx_objpool; |
279 | static UINT16 *gx_spriteram; | |
279 | 280 | |
281 | // mirrored K054338 settings | |
282 | static int *K054338_shdRGB; | |
283 | ||
284 | ||
280 | 285 | void konamigx_state::konamigx_mixer_init(screen_device &screen, int objdma) |
281 | 286 | { |
282 | 287 | m_gx_objdma = 0; |
r241749 | r241750 | |
286 | 291 | m_gx_shdzbuf = auto_alloc_array(machine(), UINT8, GX_ZBUFSIZE); |
287 | 292 | gx_objpool = auto_alloc_array(machine(), struct GX_OBJ, GX_MAX_OBJECTS); |
288 | 293 | |
289 | m_k054338->export_config(& | |
294 | m_k054338->export_config(&K054338_shdRGB); | |
290 | 295 | |
291 | 296 | if (objdma) |
292 | 297 | { |
293 | | |
298 | gx_spriteram = auto_alloc_array(machine(), UINT16, 0x1000/2); | |
294 | 299 | m_gx_objdma = 1; |
295 | 300 | } |
296 | 301 | else |
297 | m_k055673->k053247_get_ram(& | |
302 | m_k055673->k053247_get_ram(&gx_spriteram); | |
298 | 303 | |
299 | 304 | m_palette->set_shadow_dRGB32(3,-80,-80,-80, 0); |
300 | 305 | m_k054338->invert_alpha(1); |
r241749 | r241750 | |
310 | 315 | UINT16* k053247_ram; |
311 | 316 | m_k055673->k053247_get_ram(&k053247_ram); |
312 | 317 | |
313 | if (m_gx_objdma && | |
318 | if (m_gx_objdma && gx_spriteram && k053247_ram) memcpy(gx_spriteram, k053247_ram, 0x1000); | |
314 | 319 | } |
315 | 320 | |
316 | 321 | void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, |
r241749 | r241750 | |
411 | 416 | // only enable shadows beyond a +/-7 RGB threshold |
412 | 417 | for (j=0,i=0; i<3; j+=3,i++) |
413 | 418 | { |
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; } | |
417 | 422 | } |
418 | 423 | |
419 | 424 | // SHDON specifies layers on which shadows can be projected (see detail on p.65 7.2.8) |
r241749 | r241750 | |
491 | 496 | { |
492 | 497 | int pri = 0; |
493 | 498 | |
494 | if (!( | |
499 | if (!(gx_spriteram[offs] & 0x8000)) continue; | |
495 | 500 | |
496 | int zcode = | |
501 | int zcode = gx_spriteram[offs] & 0xff; | |
497 | 502 | |
498 | 503 | // invert z-order when opset_pri is set (see p.51 OPSET PRI) |
499 | 504 | if (m_k053247_opset & 0x10) zcode = 0xff - zcode; |
500 | 505 | |
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]; | |
504 | 509 | |
505 | 510 | m_k055673->m_k053247_cb(&code, &color, &pri); |
506 | 511 | |
r241749 | r241750 | |
864 | 869 | |
865 | 870 | |
866 | 871 | m_k055673->k053247_draw_single_sprite_gxcore(bitmap, cliprect, |
867 | m_gx_objzbuf, m_gx_shdzbuf, code, | |
872 | m_gx_objzbuf, m_gx_shdzbuf, code, gx_spriteram, offs, | |
868 | 873 | color, alpha, drawmode, zcode, pri, |
869 | 874 | /* non-gx only */ |
870 | 875 | 0,0,NULL,NULL,0 |
r241749 | r241750 | |
922 | 927 | SET_TILE_INFO_MEMBER(0, tileno, colour, TILE_FLIPYX(flip)); |
923 | 928 | } |
924 | 929 | |
930 | static int konamigx_type3_psac2_actual_bank; | |
931 | //int konamigx_type3_psac2_actual_last_bank = 0; | |
925 | 932 | |
926 | 933 | WRITE32_MEMBER(konamigx_state::konamigx_type3_psac2_bank_w) |
927 | 934 | { |
928 | 935 | // other bits are used for something... |
929 | 936 | |
930 | 937 | COMBINE_DATA(&m_konamigx_type3_psac2_bank[offset]); |
931 | | |
938 | konamigx_type3_psac2_actual_bank = (m_konamigx_type3_psac2_bank[0] & 0x10000000) >> 28; | |
932 | 939 | |
933 | 940 | /* handle this by creating 2 roz tilemaps instead, otherwise performance dies completely on dual screen mode |
934 | if ( | |
941 | if (konamigx_type3_psac2_actual_bank!=konamigx_type3_psac2_actual_last_bank) | |
935 | 942 | { |
936 | 943 | m_gx_psac_tilemap->mark_all_dirty(); |
937 | | |
944 | konamigx_type3_psac2_actual_last_bank = konamigx_type3_psac2_actual_bank; | |
938 | 945 | } |
939 | 946 | */ |
940 | 947 | } |
r241749 | r241750 | |
949 | 956 | |
950 | 957 | int base_index = tile_index; |
951 | 958 | |
952 | // if ( | |
959 | // if (konamigx_type3_psac2_actual_bank) | |
953 | 960 | // base_index+=0x20000/2; |
954 | 961 | |
955 | 962 | |
r241749 | r241750 | |
970 | 977 | |
971 | 978 | int base_index = tile_index; |
972 | 979 | |
973 | // if ( | |
980 | // if (konamigx_type3_psac2_actual_bank) | |
974 | 981 | // base_index+=0x20000/2; |
975 | 982 | |
976 | 983 | |
r241749 | r241750 | |
1425 | 1432 | temprect = cliprect; |
1426 | 1433 | temprect.max_x = cliprect.min_x+320; |
1427 | 1434 | |
1428 | if ( | |
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 | |
1429 | 1436 | else K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap, 0,0,0); // soccerss playfield |
1430 | 1437 | |
1431 | 1438 |
r241749 | r241750 | |
---|---|---|
211 | 211 | It manages sprites and 32x32 or 64x32 tilemap (only Double Dribble uses the |
212 | 212 | 64x32 one). |
213 | 213 | The chip also generates clock and interrupt signals suitable for a 6809. |
214 | It uses 0x2000 bytes of static RAM for the tilemaps and sprite lists, and two | |
215 | 64kx4bit DRAMs, presumably as a double frame buffer. The maximum addressable | |
214 | It uses 0x2000 bytes of RAM for the tilemaps and sprites, and an additional | |
215 | 0x100 bytes, maybe for scroll RAM and line buffers. The maximum addressable | |
216 | 216 | ROM is 0x20000 bytes (addressed 16 bits at a time). Tile and sprite data both |
217 | 217 | come from the same ROM space. Double Dribble and Jackal have external circuitry |
218 | 218 | to extend the limits and use separated addressing spaces for sprites and tiles. |
r241749 | r241750 | |
234 | 234 | outputs: |
235 | 235 | - address lines for tilemap RAM (AX0-AX12) |
236 | 236 | - 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) | |
240 | 239 | - address lines for the gfx ROMs (R0-R15) |
241 | 240 | - address lines for the tile lookup PROMs (VCF0-VCF3, VCB0-VCB3) |
242 | 241 | - address lines for the sprite lookup PROMs (OCB0-OCB3, OCF0-OCF3) |
r241749 | r241750 | |
---|---|---|
10 | 10 | #include "video/jalblend.h" |
11 | 11 | #include "includes/psychic5.h" |
12 | 12 | |
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 | |
14 | 18 | #define BG_PAL_INTENSITY_RG 0x1fe |
15 | 19 | #define BG_PAL_INTENSITY_BU 0x1ff |
16 | 20 | |
r241749 | r241750 | |
19 | 23 | Palette color |
20 | 24 | ***************************************************************************/ |
21 | 25 | |
22 | void psychic5_state::psychic5_change_palette(int o | |
26 | void psychic5_state::psychic5_change_palette(int color, int offset) | |
23 | 27 | { |
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)); | |
31 | 32 | } |
32 | 33 | |
33 | 34 | void psychic5_state::psychic5_change_bg_palette(int color, int lo_offs, int hi_offs) |
r241749 | r241750 | |
43 | 44 | |
44 | 45 | irgb = rgb_t(ir,ig,ib); |
45 | 46 | |
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]; | |
48 | 49 | |
49 | 50 | /* red,green,blue component */ |
50 | 51 | r = pal4bit(lo >> 4); |
r241749 | r241750 | |
52 | 53 | b = pal4bit(hi >> 4); |
53 | 54 | |
54 | 55 | /* Grey background enable */ |
55 | if (m_bg_ | |
56 | if (m_bg_status & 2) | |
56 | 57 | { |
57 | 58 | UINT8 val = (r + g + b) / 3; /* Grey */ |
58 | 59 | /* Just leave plain grey */ |
r241749 | r241750 | |
72 | 73 | void psychic5_state::set_background_palette_intensity() |
73 | 74 | { |
74 | 75 | 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); | |
77 | 78 | |
78 | 79 | /* for all of the background palette */ |
79 | 80 | for (i = 0; i < 0x100; i++) |
80 | psychic5_change_bg_palette( | |
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); | |
81 | 82 | } |
82 | 83 | |
83 | 84 | |
r241749 | r241750 | |
93 | 94 | WRITE8_MEMBER(psychic5_state::psychic5_vram_page_select_w) |
94 | 95 | { |
95 | 96 | m_ps5_vram_page = data & 1; |
96 | m_vrambank->set_bank(data); | |
97 | 97 | } |
98 | 98 | |
99 | 99 | WRITE8_MEMBER(psychic5_state::psychic5_title_screen_w) |
r241749 | r241750 | |
101 | 101 | m_title_screen = data; |
102 | 102 | } |
103 | 103 | |
104 | READ8_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 | } | |
104 | 117 | |
105 | ||
106 | WRITE8_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]; | |
110 | 119 | } |
111 | 120 | |
112 | WRITE8_MEMBER(psychic5_state:: | |
121 | WRITE8_MEMBER(psychic5_state::psychic5_paged_ram_w) | |
113 | 122 | { |
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; | |
117 | 124 | |
118 | WRITE8_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 | } | |
122 | 155 | } |
123 | 156 | |
124 | ||
125 | WRITE8_MEMBER(psychic5_state::fg_videoram_w) | |
157 | WRITE8_MEMBER(psychic5_state::bombsa_paged_ram_w) | |
126 | 158 | { |
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; | |
130 | 160 | |
131 | WRITE8_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 | } | |
135 | 186 | } |
136 | 187 | |
137 | ||
138 | ||
139 | 188 | WRITE8_MEMBER(psychic5_state::bombsa_unknown_w) |
140 | 189 | { |
141 | 190 | m_bombsa_unknown = data; |
r241749 | r241750 | |
175 | 224 | |
176 | 225 | VIDEO_START_MEMBER(psychic5_state,psychic5) |
177 | 226 | { |
227 | /* info offset w h col row */ | |
178 | 228 | 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); |
179 | 229 | 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 | ||
180 | 231 | 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 | ||
181 | 242 | jal_blend_init(machine(), 1); |
182 | 243 | |
244 | m_bg_palette_ram_base = 0x400; | |
245 | m_bg_palette_base = 0x100; | |
183 | 246 | } |
184 | 247 | |
185 | 248 | VIDEO_START_MEMBER(psychic5_state,bombsa) |
186 | 249 | { |
250 | /* info offset w h col row */ | |
187 | 251 | 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); |
188 | 252 | 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 | ||
189 | 254 | 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 | ||
190 | 265 | jal_blend_init(machine(), 0); |
266 | ||
267 | m_bg_palette_ram_base = 0x000; | |
268 | m_bg_palette_base = 0x000; | |
191 | 269 | } |
192 | 270 | |
193 | 271 | VIDEO_RESET_MEMBER(psychic5_state,psychic5) |
194 | 272 | { |
195 | 273 | m_bg_clip_mode = 0; |
196 | 274 | 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 | ||
281 | VIDEO_RESET_MEMBER(psychic5_state,bombsa) | |
282 | { | |
283 | m_ps5_vram_page = 0; | |
284 | m_bg_status = 0; | |
197 | 285 | m_title_screen = 0; |
286 | memset(m_ps5_pagedram[0],0,0x2000); | |
287 | memset(m_ps5_pagedram[1],0,0x2000); | |
198 | 288 | m_palette_intensity = 0; |
199 | 289 | } |
200 | 290 | |
201 | 291 | |
202 | ||
203 | 292 | /*************************************************************************** |
204 | 293 | Screen refresh |
205 | 294 | ***************************************************************************/ |
r241749 | r241750 | |
317 | 406 | |
318 | 407 | UINT32 psychic5_state::screen_update_psychic5(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) |
319 | 408 | { |
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 | ||
325 | 409 | bitmap.fill(m_palette->black_pen(), cliprect); |
326 | if (m_bg_ | |
410 | if (m_bg_status & 1) /* Backgound enable */ | |
327 | 411 | draw_background(screen, bitmap, cliprect); |
328 | 412 | if (!(m_title_screen & 1)) |
329 | 413 | draw_sprites(bitmap, cliprect); |
r241749 | r241750 | |
333 | 417 | |
334 | 418 | UINT32 psychic5_state::screen_update_bombsa(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) |
335 | 419 | { |
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 */ | |
343 | 421 | m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); |
344 | 422 | else |
345 | 423 | bitmap.fill(m_palette->pen(0x0ff), cliprect); |
r241749 | r241750 | |
---|---|---|
572 | 572 | { |
573 | 573 | if (x >= clipx1 && x < clipx2) |
574 | 574 | { |
575 | if (object.MiscState.FBSize < 2 || object.MiscState.FBSize > 4) | |
576 | fatalerror("unsupported FBSize %d\n", object.MiscState.FBSize); | |
577 | 575 | ((this)->*(_Fill[object.MiscState.FBSize - 2]))(fb_index + x, object); |
578 | 576 | } |
579 | 577 |
r241749 | r241750 | |
---|---|---|
595 | 595 | userdata->m_precomp_s = nexts; |
596 | 596 | userdata->m_precomp_t = nextt; |
597 | 597 | |
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 | ||
613 | 598 | int tempanded; |
614 | 599 | if (*sss & 0x40000) |
615 | 600 | { |
r241749 | r241750 | |
660 | 645 | *sst &= 0xffff; |
661 | 646 | } |
662 | 647 | } |
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 | } | |
695 | 648 | } |
696 | 649 | |
697 | 650 | void 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) |
r241749 | r241750 | |
808 | 761 | |
809 | 762 | if(object.OtherModes.sharpen_tex_en && magnify) |
810 | 763 | { |
811 | userdata->LODFraction | |
764 | userdata->LODFraction = userdata->LODFraction | 0x100; | |
812 | 765 | } |
813 | 766 | |
814 | 767 | if (object.OtherModes.tex_lod_en) |
r241749 | r241750 | |
---|---|---|
4 | 4 | PALETTE_INIT_MEMBER(rockrage_state, rockrage) |
5 | 5 | { |
6 | 6 | const UINT8 *color_prom = memregion("proms")->base(); |
7 | int i; | |
7 | 8 | |
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++) | |
9 | 15 | { |
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); | |
14 | 23 | } |
15 | 24 | } |
16 | 25 | |
r241749 | r241750 | |
41 | 50 | { |
42 | 51 | *code |= ((*color & 0x40) << 2) | ((*color & 0x80) << 1) * ((m_vreg & 0x03) << 1); |
43 | 52 | *code = (*code << 2) | ((*color & 0x30) >> 4); |
44 | *color = 0 | |
53 | *color = 0; | |
45 | 54 | } |
46 | 55 | |
47 | 56 |
r241749 | r241750 | |
---|---|---|
269 | 269 | double G = Y - 0.272 * I - 0.647 * Q; |
270 | 270 | double B = Y - 1.106 * I + 1.703 * Q; |
271 | 271 | |
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 | ||
272 | 276 | if (R < 0) R = 0; |
273 | 277 | if (G < 0) G = 0; |
274 | 278 | if (B < 0) B = 0; |
275 | 279 | |
276 | R = pow(R, 0.9); | |
277 | G = pow(G, 0.9); | |
278 | B = pow(B, 0.9); | |
279 | ||
280 | 280 | if (R > 1) R = 1; |
281 | 281 | if (G > 1) G = 1; |
282 | 282 | if (B > 1) B = 1; |
r241749 | r241750 | |
328 | 328 | double G = Y - 0.344 * U - 0.714 * V; |
329 | 329 | double B = Y + 1.770 * U; |
330 | 330 | |
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 | ||
331 | 335 | if (R < 0) R = 0; |
332 | 336 | if (G < 0) G = 0; |
333 | 337 | if (B < 0) B = 0; |
334 | 338 | |
335 | R = pow(R, 1.2); | |
336 | G = pow(G, 1.2); | |
337 | B = pow(B, 1.2); | |
338 | ||
339 | 339 | if (R > 1) R = 1; |
340 | 340 | if (G > 1) G = 1; |
341 | 341 | if (B > 1) B = 1; |
r241749 | r241750 | |
---|---|---|
19 | 19 | |
20 | 20 | enum |
21 | 21 | { |
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 | |
28 | 28 | }; |
29 | 29 | |
30 | 30 | enum |
31 | 31 | { |
32 | 32 | // 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 | |
36 | 39 | }; |
37 | 40 | |
38 | 41 | |
r241749 | r241750 | |
104 | 107 | flip |= (m_video_register&TWIN16_SCREEN_FLIPY) ? TILEMAP_FLIPY : 0; |
105 | 108 | machine().tilemap().set_flip_all(flip); |
106 | 109 | } |
107 | if (changed & TWIN16_TILE_FLIPY) | |
110 | if (changed & (TWIN16_TILE_FLIPX | TWIN16_TILE_FLIPY)) | |
108 | 111 | { |
109 | 112 | m_scroll_tmap[0]->mark_all_dirty(); |
110 | 113 | m_scroll_tmap[1]->mark_all_dirty(); |
r241749 | r241750 | |
174 | 177 | * 2 | -------xxxxxxxxx | xpos |
175 | 178 | * -----+------------------+ |
176 | 179 | * 3 | x--------------- | enable |
177 | * 3 | -xxxxx---------- | ? | |
180 | * 3 | -x-------------- | priority ? | |
181 | * 3 | -----x---------- | no shadow ? | |
178 | 182 | * 3 | ------x--------- | yflip ? |
179 | 183 | * 3 | -------x-------- | xflip |
180 | 184 | * 3 | --------xx------ | height |
r241749 | r241750 | |
226 | 230 | UINT32 xpos = (0x10000*source[4])|source[5]; |
227 | 231 | UINT32 ypos = (0x10000*source[6])|source[7]; |
228 | 232 | |
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) | |
230 | 237 | |
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 | |
236 | 242 | |
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 | |
241 | 247 | |
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 | |
243 | 256 | */ |
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? | |
245 | 261 | |
246 | 262 | dest[0] = source[3]; /* gfx data */ |
247 | 263 | dest[1] = ((xpos>>8) - dx)&0xffff; |
r241749 | r241750 | |
275 | 291 | const UINT16 *pen_data = 0; |
276 | 292 | int flipy = attributes&0x0200; |
277 | 293 | int flipx = attributes&0x0100; |
294 | int priority = (attributes&0x4000)?TWIN16_SPRITE_PRI_L1:TWIN16_SPRITE_PRI_L2; | |
278 | 295 | |
279 | 296 | if( m_is_fround ) { |
280 | 297 | /* fround board */ |
r241749 | r241750 | |
343 | 360 | { |
344 | 361 | UINT16 pen = pen_data[x>>2]>>((~x&3)<<2)&0xf; |
345 | 362 | |
346 | if( pen | |
363 | if( pen ) | |
347 | 364 | { |
348 | | |
365 | int shadow = (pen==0xf) & ((attributes&0x400)==0); | |
349 | 366 | |
350 | if (pen==0xf) // shadow | |
351 | { | |
352 | if (!(pdest[sx] & TWIN16_BG_NO_SHADOW)) | |
367 | if (pdest[sx]<priority) { | |
368 | if (shadow) { | |
353 | 369 | 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 { | |
358 | 373 | dest[sx] = pal_base + pen; |
374 | } | |
359 | 375 | } |
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; | |
360 | 383 | } |
361 | 384 | } |
362 | 385 | } |
r241749 | r241750 | |
389 | 412 | void twin16_state::tile_get_info(tile_data &tileinfo, UINT16 data, int color_base) |
390 | 413 | { |
391 | 414 | /* fedcba9876543210 |
392 | xxx------------- color | |
415 | xxx------------- color | |
393 | 416 | ---xxxxxxxxxxxxx tile number |
394 | 417 | */ |
395 | 418 | int code = (data & 0x1fff); |
396 | 419 | int color = color_base + (data >> 13); |
397 | 420 | int flags = 0; |
421 | if (m_video_register & TWIN16_TILE_FLIPX) flags |= TILE_FLIPX; | |
398 | 422 | if (m_video_register & TWIN16_TILE_FLIPY) flags |= TILE_FLIPY; |
399 | 423 | SET_TILE_INFO_MEMBER(1, code, color, flags); |
400 | tileinfo.category = BIT(data, 15); | |
401 | 424 | } |
402 | 425 | |
403 | 426 | void fround_state::tile_get_info(tile_data &tileinfo, UINT16 data, int color_base) |
404 | 427 | { |
405 | 428 | /* fedcba9876543210 |
406 | xxx------------- color | |
429 | xxx------------- color | |
407 | 430 | ---xx----------- tile bank |
408 | 431 | -----xxxxxxxxxxx tile number |
409 | 432 | */ |
r241749 | r241750 | |
411 | 434 | int code = (m_gfx_bank[bank] << 11) | (data & 0x7ff); |
412 | 435 | int color = color_base | (data >> 13); |
413 | 436 | int flags = 0; |
437 | if (m_video_register & TWIN16_TILE_FLIPX) flags |= TILE_FLIPX; | |
414 | 438 | if (m_video_register & TWIN16_TILE_FLIPY) flags |= TILE_FLIPY; |
415 | 439 | SET_TILE_INFO_MEMBER(1, code, color, flags); |
416 | tileinfo.category = BIT(data, 15); | |
417 | 440 | } |
418 | 441 | |
419 | 442 | TILE_GET_INFO_MEMBER(twin16_state::layer0_tile_info) |
r241749 | r241750 | |
462 | 485 | |
463 | 486 | UINT32 twin16_state::screen_update_twin16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
464 | 487 | { |
465 | /* | |
466 | PAL equations (007789 @ 11J): | |
488 | int layer = m_video_register & TWIN16_PLANE_ORDER ? 0 : 1; | |
467 | 489 | |
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); | |
472 | 492 | |
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 | ||
531 | 493 | draw_sprites( screen, bitmap ); |
532 | 494 | |
533 | 495 | m_fixed_tmap->draw(screen, bitmap, cliprect, 0); |
r241749 | r241750 | |
---|---|---|
1438 | 1438 | ***************************************************************************/ |
1439 | 1439 | |
1440 | 1440 | void 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) | |
1442 | 1443 | { |
1443 | 1444 | /* Counter Q10-7 are added to 384 */ |
1444 | 1445 | UINT16 ls283_159 = (ls161 & 0x780) + 128 + (256 * screen); |
r241749 | r241750 | |
1448 | 1449 | UINT8 d0 = 0; |
1449 | 1450 | UINT8 d1 = 0; |
1450 | 1451 | |
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 | ||
1457 | 1452 | /* Latch road reverse bit */ |
1458 | 1453 | *_rorev = !( (rom_en && rom_flip) || (!rom_en && (ls161 & 0x4000)) ); |
1459 | 1454 | |
r241749 | r241750 | |
1544 | 1539 | |
1545 | 1540 | /* ROM/PROM lookup tables */ |
1546 | 1541 | 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; | |
1548 | 1547 | |
1549 | 1548 | /* Extract constant values */ |
1550 | 1549 | tcmd = ((vregs.scol & 0xc000) >> 12) | ((vregs.scol & 0x00c0) >> 6); |
r241749 | r241750 | |
1668 | 1667 | /* Have we crossed a road gfx strip boundary? */ |
1669 | 1668 | if (ls161 & 7) |
1670 | 1669 | { |
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); | |
1674 | 1673 | } |
1675 | 1674 | |
1676 | 1675 | /* We can evaluate some of the pixel logic outside of the x-loop */ |
r241749 | r241750 | |
1750 | 1749 | /* Load in a new road gfx strip? */ |
1751 | 1750 | if (!(ls161 & 7)) |
1752 | 1751 | { |
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); | |
1756 | 1755 | } |
1757 | 1756 | |
1758 | 1757 | /* Road camber/banking */ |
r241749 | r241750 | |
2171 | 2170 | |
2172 | 2171 | /* ROM/PROM lookup tables */ |
2173 | 2172 | 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; | |
2175 | 2178 | |
2176 | 2179 | /* Extract constant values */ |
2177 | 2180 | tcmd = ((vregs.scol & 0xc000) >> 12) | ((vregs.scol & 0x00c0) >> 6); |
r241749 | r241750 | |
2293 | 2296 | |
2294 | 2297 | /* Have we crossed a road gfx strip boundary? */ |
2295 | 2298 | 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); | |
2297 | 2300 | |
2298 | 2301 | for (x = 0; x < 256; ++x) |
2299 | 2302 | { |
r241749 | r241750 | |
2328 | 2331 | |
2329 | 2332 | /* Load in a new road gfx strip? */ |
2330 | 2333 | 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); | |
2332 | 2335 | |
2333 | 2336 | /* Road camber */ |
2334 | 2337 | if (vregs.bank_mode == 0) |
r241749 | r241750 | |
---|---|---|
711 | 711 | MCFG_Z80PIO_OUT_PA_CB(WRITE8(ace_state, pio_pa_w)) |
712 | 712 | MCFG_Z80PIO_OUT_PB_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) |
713 | 713 | |
714 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
714 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
715 | 715 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) |
716 | 716 | |
717 | 717 | // internal ram |
r241749 | r241750 | |
---|---|---|
1343 | 1343 | MCFG_RS232_CTS_HANDLER(WRITELINE(amiga_state, rs232_cts_w)) |
1344 | 1344 | |
1345 | 1345 | // centronics |
1346 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
1346 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
1347 | 1347 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(amiga_state, centronics_ack_w)) |
1348 | 1348 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(amiga_state, centronics_busy_w)) |
1349 | 1349 | MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(amiga_state, centronics_perror_w)) |
r241749 | r241750 | |
---|---|---|
804 | 804 | SLOT_INTERFACE("amsrs232", CPC_RS232_AMS) |
805 | 805 | SLOT_INTERFACE("sf2", CPC_SYMBIFACE2) |
806 | 806 | SLOT_INTERFACE("amdrum", CPC_AMDRUM) |
807 | SLOT_INTERFACE("playcity", CPC_PLAYCITY) | |
808 | 807 | SLOT_INTERFACE_END |
809 | 808 | |
810 | 809 | SLOT_INTERFACE_START(cpcplus_exp_cards) |
r241749 | r241750 | |
816 | 815 | SLOT_INTERFACE("amsrs232", CPC_RS232_AMS) |
817 | 816 | SLOT_INTERFACE("sf2", CPC_SYMBIFACE2) |
818 | 817 | SLOT_INTERFACE("amdrum", CPC_AMDRUM) |
819 | SLOT_INTERFACE("playcity", CPC_PLAYCITY) | |
820 | 818 | SLOT_INTERFACE_END |
821 | 819 | |
822 | SLOT_INTERFACE_START(amstrad_ | |
820 | SLOT_INTERFACE_START(amstrad_printers) | |
823 | 821 | SLOT_INTERFACE("pl80", COMX_PL80) |
824 | 822 | SLOT_INTERFACE("ex800", EPSON_EX800) |
825 | 823 | SLOT_INTERFACE("lx800", EPSON_LX800) |
r241749 | r241750 | |
864 | 862 | MCFG_MC6845_OUT_DE_CB(WRITELINE(amstrad_state, amstrad_de_changed)) |
865 | 863 | MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(amstrad_state, amstrad_hsync_changed)) |
866 | 864 | 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)) | |
868 | 865 | |
869 | 866 | MCFG_VIDEO_START_OVERRIDE(amstrad_state,amstrad) |
870 | 867 | |
r241749 | r241750 | |
877 | 874 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
878 | 875 | |
879 | 876 | /* printer */ |
880 | MCFG_CENTRONICS_ADD("centronics", amstrad_ | |
877 | MCFG_CENTRONICS_ADD("centronics", amstrad_printers, "printer") | |
881 | 878 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(amstrad_state, write_centronics_busy)) |
882 | 879 | |
883 | 880 | /* snapshot */ |
r241749 | r241750 | |
972 | 969 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
973 | 970 | |
974 | 971 | /* printer */ |
975 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
972 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
976 | 973 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(amstrad_state, write_centronics_busy)) |
977 | 974 | |
978 | 975 | /* snapshot */ |
r241749 | r241750 | |
---|---|---|
259 | 259 | m_ca2 = 0; |
260 | 260 | |
261 | 261 | // apfimag only |
262 | if (m_cass) | |
263 | m_cass->change_state(CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR); | |
264 | ||
265 | // apfimag only | |
262 | 266 | if (m_ram) |
263 | 267 | { |
264 | 268 | /* if we specified 8K of RAM, delete the extended RAM */ |
r241749 | r241750 | |
550 | 554 | MCFG_APF_CARTRIDGE_ADD("cartslot", apf_cart, NULL) |
551 | 555 | |
552 | 556 | /* software lists */ |
553 | MCFG_SOFTWARE_LIST_ADD("cart_list", | |
557 | MCFG_SOFTWARE_LIST_ADD("cart_list","apfm1000") | |
554 | 558 | MACHINE_CONFIG_END |
555 | 559 | |
556 | 560 | static MACHINE_CONFIG_DERIVED( apfimag, apfm1000 ) |
r241749 | r241750 | |
570 | 574 | MCFG_PIA_READPB_HANDLER(READ8(apf_state, pia1_portb_r)) |
571 | 575 | MCFG_PIA_WRITEPB_HANDLER(WRITE8(apf_state, pia1_portb_w)) |
572 | 576 | |
573 | MCFG_CASSETTE_ADD("cassette") | |
577 | MCFG_CASSETTE_ADD( "cassette" ) | |
574 | 578 | MCFG_CASSETTE_FORMATS(apf_cassette_formats) |
575 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_ | |
579 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY) | |
576 | 580 | |
577 | 581 | MCFG_FD1771x_ADD("fdc", 1000000) // guess |
578 | 582 | MCFG_FLOPPY_DRIVE_ADD("fdc:0", apf_floppies, "525dd", floppy_image_device::default_floppy_formats) |
579 | 583 | 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") | |
582 | 584 | MACHINE_CONFIG_END |
583 | 585 | |
584 | 586 |
r241749 | r241750 | |
---|---|---|
877 | 877 | MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(applix_state, applix_pb_w)) |
878 | 878 | MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m68000_device, write_irq2)) |
879 | 879 | |
880 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
880 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
881 | 881 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522", via6522_device, write_ca1)) |
882 | 882 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("via6522", via6522_device, write_pa0)) |
883 | 883 |
r241749 | r241750 | |
---|---|---|
384 | 384 | MCFG_RS232_CTS_HANDLER(DEVWRITELINE("ic15", z80dart_device, ctsa_w)) |
385 | 385 | |
386 | 386 | // centronics printer |
387 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
387 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
388 | 388 | MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in") |
389 | 389 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("ic15", z80dart_device, ctsb_w)) |
390 | 390 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("ic15", z80dart_device, dcdb_w)) |
r241749 | r241750 | |
---|---|---|
294 | 294 | MCFG_Z80CTC_ZC1_CB(WRITELINE(f1_state, ctc_z1_w)) |
295 | 295 | MCFG_Z80CTC_ZC2_CB(WRITELINE(f1_state, ctc_z2_w)) |
296 | 296 | |
297 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
297 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
298 | 298 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(Z80SIO2_TAG, z80dart_device, ctsa_w)) |
299 | 299 | |
300 | 300 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) |
r241749 | r241750 | |
---|---|---|
534 | 534 | MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":0", fp_floppies, "35dd", floppy_image_device::default_floppy_formats) |
535 | 535 | MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":1", fp_floppies, NULL, floppy_image_device::default_floppy_formats) |
536 | 536 | |
537 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
537 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
538 | 538 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fp_state, write_centronics_busy)) |
539 | 539 | MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(fp_state, write_centronics_select)) |
540 | 540 | MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(fp_state, write_centronics_fault)) |
r241749 | r241750 | |
---|---|---|
14 | 14 | #include "sound/astrocde.h" |
15 | 15 | #include "bus/astrocde/slot.h" |
16 | 16 | #include "bus/astrocde/rom.h" |
17 | #include "bus/astrocde/exp.h" | |
18 | #include "bus/astrocde/ram.h" | |
19 | 17 | |
20 | 18 | class astrocde_mess_state : public astrocde_state |
21 | 19 | { |
22 | 20 | public: |
23 | 21 | astrocde_mess_state(const machine_config &mconfig, device_type type, const char *tag) |
24 | 22 | : astrocde_state(mconfig, type, tag), |
25 | m_cart(*this, "cartslot"), | |
26 | m_exp(*this, "exp") | |
23 | m_cart(*this, "cartslot") | |
27 | 24 | { } |
28 | 25 | |
29 | 26 | required_device<astrocade_cart_slot_device> m_cart; |
30 | | |
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); | |
31 | 28 | DECLARE_MACHINE_START(astrocde); |
29 | DECLARE_MACHINE_RESET(astrocde); | |
30 | DECLARE_INPUT_CHANGED_MEMBER(set_write_protect); | |
32 | 31 | }; |
33 | 32 | |
34 | /************************************* | |
33 | /************************************* | |
35 | 34 | * |
36 | 35 | * Memory maps |
37 | 36 | * |
r241749 | r241750 | |
43 | 42 | * by an extended BASIC program. Bally and Astrocade BASIC can access from |
44 | 43 | * $5000 to $7FFF if available. |
45 | 44 | * |
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 | *************************************/ | |
47 | 92 | |
48 | 93 | static ADDRESS_MAP_START( astrocade_mem, AS_PROGRAM, 8, astrocde_mess_state ) |
49 | 94 | AM_RANGE(0x0000, 0x0fff) AM_ROM AM_WRITE(astrocade_funcgen_w) |
50 | 95 | AM_RANGE(0x1000, 0x3fff) AM_ROM /* Star Fortress writes in here?? */ |
51 | 96 | AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("videoram") /* ASG */ |
52 | //AM_RANGE(0x5000, 0xffff) AM_DEVREADWRITE("exp", astrocade_exp_device, read, write) | |
53 | 97 | ADDRESS_MAP_END |
54 | 98 | |
55 | 99 | |
r241749 | r241750 | |
57 | 101 | AM_RANGE(0x00, 0x1f) AM_MIRROR(0xff00) AM_MASK(0xffff) AM_READWRITE(astrocade_data_chip_register_r, astrocade_data_chip_register_w) |
58 | 102 | ADDRESS_MAP_END |
59 | 103 | |
104 | INPUT_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 | ||
60 | 127 | /************************************* |
61 | 128 | * |
62 | 129 | * Input ports |
r241749 | r241750 | |
160 | 227 | |
161 | 228 | PORT_START("P4_KNOB") |
162 | 229 | 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") | |
163 | 245 | INPUT_PORTS_END |
164 | 246 | |
165 | 247 | |
r241749 | r241750 | |
175 | 257 | SLOT_INTERFACE_INTERNAL("rom_512k", ASTROCADE_ROM_512K) |
176 | 258 | SLOT_INTERFACE_END |
177 | 259 | |
178 | static 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) | |
185 | SLOT_INTERFACE_END | |
186 | 260 | |
187 | ||
188 | 261 | static MACHINE_CONFIG_START( astrocde, astrocde_mess_state ) |
189 | 262 | /* basic machine hardware */ |
190 | 263 | MCFG_CPU_ADD("maincpu", Z80, ASTROCADE_CLOCK/4) /* 1.789 MHz */ |
r241749 | r241750 | |
192 | 265 | MCFG_CPU_IO_MAP(astrocade_io) |
193 | 266 | |
194 | 267 | MCFG_MACHINE_START_OVERRIDE(astrocde_mess_state, astrocde) |
268 | MCFG_MACHINE_RESET_OVERRIDE(astrocde_mess_state, astrocde) | |
195 | 269 | |
196 | 270 | /* video hardware */ |
197 | 271 | MCFG_SCREEN_ADD("screen", RASTER) |
r241749 | r241750 | |
207 | 281 | MCFG_SOUND_ADD("astrocade1", ASTROCADE, ASTROCADE_CLOCK/4) |
208 | 282 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
209 | 283 | |
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") | |
212 | 287 | |
213 | 288 | /* cartridge */ |
214 | 289 | MCFG_ASTROCADE_CARTRIDGE_ADD("cartslot", astrocade_cart, NULL) |
r241749 | r241750 | |
254 | 329 | { |
255 | 330 | if (m_cart->exists()) |
256 | 331 | 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 | } | |
257 | 333 | |
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)); | |
334 | MACHINE_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 | } | |
262 | 356 | } |
263 | 357 | |
358 | void 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 | ||
264 | 408 | /************************************* |
265 | 409 | * |
266 | 410 | * Driver definitions |
r241749 | r241750 | |
---|---|---|
2106 | 2106 | MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", st_state::floppy_formats) |
2107 | 2107 | MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, 0, st_state::floppy_formats) |
2108 | 2108 | |
2109 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
2109 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
2110 | 2110 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i0_w)) |
2111 | 2111 | |
2112 | 2112 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
2197 | 2197 | MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", st_state::floppy_formats) |
2198 | 2198 | MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, 0, st_state::floppy_formats) |
2199 | 2199 | |
2200 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
2200 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
2201 | 2201 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i0_w)) |
2202 | 2202 | |
2203 | 2203 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
2295 | 2295 | MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", st_state::floppy_formats) |
2296 | 2296 | MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, 0, st_state::floppy_formats) |
2297 | 2297 | |
2298 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
2298 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
2299 | 2299 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i0_w)) |
2300 | 2300 | |
2301 | 2301 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
2408 | 2408 | MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", 0, st_state::floppy_formats) |
2409 | 2409 | MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, 0, 0, st_state::floppy_formats) |
2410 | 2410 | |
2411 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
2411 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
2412 | 2412 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i0_w)) |
2413 | 2413 | |
2414 | 2414 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
---|---|---|
725 | 725 | MCFG_I8271_FLOPPIES(FLOPPY_0, FLOPPY_1) |
726 | 726 | MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(atom_floppy_interface) |
727 | 727 | |
728 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
728 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
729 | 729 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(R6522_TAG, via6522_device, write_ca1)) |
730 | 730 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(R6522_TAG, via6522_device, write_pa7)) |
731 | 731 | |
r241749 | r241750 | |
822 | 822 | MCFG_I8255_IN_PORTC_CB(READ8(atom_state, ppi_pc_r)) |
823 | 823 | MCFG_I8255_OUT_PORTC_CB(WRITE8(atom_state, ppi_pc_w)) |
824 | 824 | |
825 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
825 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
826 | 826 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(R6522_TAG, via6522_device, write_ca1)) |
827 | 827 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(R6522_TAG, via6522_device, write_pa7)) |
828 | 828 |
r241749 | r241750 | |
---|---|---|
748 | 748 | MCFG_UPD7002_EOC_CB(bbc_state, BBC_uPD7002_EOC) |
749 | 749 | |
750 | 750 | /* printer */ |
751 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
751 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
752 | 752 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */ |
753 | 753 | |
754 | 754 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
810 | 810 | MCFG_UPD7002_EOC_CB(bbc_state, BBC_uPD7002_EOC) |
811 | 811 | |
812 | 812 | /* printer */ |
813 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
813 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
814 | 814 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */ |
815 | 815 | |
816 | 816 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
919 | 919 | MCFG_MC146818_ADD( "rtc", XTAL_32_768kHz ) |
920 | 920 | |
921 | 921 | /* printer */ |
922 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
922 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
923 | 923 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */ |
924 | 924 | |
925 | 925 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
---|---|---|
12 | 12 | |
13 | 13 | /* Components */ |
14 | 14 | #include "video/pc_vga.h" |
15 | #include "bus/ | |
15 | #include "bus/pci/cirrus.h" | |
16 | 16 | #include "cpu/powerpc/ppc.h" |
17 | 17 | #include "sound/3812intf.h" |
18 | 18 | #include "machine/ins8250.h" |
19 | 19 | #include "machine/pic8259.h" |
20 | 20 | #include "machine/mc146818.h" |
21 | #include "bus/ | |
21 | #include "bus/pci/pci.h" | |
22 | 22 | #include "machine/am9517a.h" |
23 | 23 | #include "machine/pckeybrd.h" |
24 | 24 | #include "machine/idectrl.h" |
25 | #include "bus/ | |
25 | #include "bus/pci/mpc105.h" | |
26 | 26 | #include "machine/intelfsh.h" |
27 | 27 | #include "bus/scsi/scsi.h" |
28 | 28 | #include "machine/53c810.h" |
r241749 | r241750 | |
---|---|---|
1149 | 1149 | MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":6", bullet_8_floppies, NULL, floppy_image_device::default_floppy_formats) |
1150 | 1150 | MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":7", bullet_8_floppies, NULL, floppy_image_device::default_floppy_formats) |
1151 | 1151 | |
1152 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
1152 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
1153 | 1153 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(bullet_state, write_centronics_busy)) |
1154 | 1154 | MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(bullet_state, write_centronics_perror)) |
1155 | 1155 | MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(bullet_state, write_centronics_select)) |
r241749 | r241750 | |
1233 | 1233 | MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":8", bullet_35_floppies, NULL, floppy_image_device::default_floppy_formats) |
1234 | 1234 | MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":9", bullet_35_floppies, NULL, floppy_image_device::default_floppy_formats) |
1235 | 1235 | |
1236 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
1236 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
1237 | 1237 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(bullet_state, write_centronics_busy)) |
1238 | 1238 | |
1239 | 1239 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) |
r241749 | r241750 | |
---|---|---|
613 | 613 | MCFG_RS232_CTS_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, ctsb_w)) |
614 | 614 | |
615 | 615 | /* printer */ |
616 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
616 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
617 | 617 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(PIA6821_TAG, pia6821_device, ca1_w)) |
618 | 618 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(bw12_state, write_centronics_busy)) |
619 | 619 | MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(bw12_state, write_centronics_fault)) |
r241749 | r241750 | |
---|---|---|
618 | 618 | MCFG_DEVICE_ADDRESS_MAP(AS_0, lcdc_map) |
619 | 619 | MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) |
620 | 620 | |
621 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
621 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
622 | 622 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(bw2_state, write_centronics_busy)) |
623 | 623 | |
624 | 624 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) |
r241749 | r241750 | |
---|---|---|
1244 | 1244 | MCFG_MC68681_B_TX_CALLBACK(WRITELINE(cat_state, cat_duart_txb)) |
1245 | 1245 | MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(cat_state, cat_duart_output)) |
1246 | 1246 | |
1247 | MCFG_CENTRONICS_ADD("ctx", centronics_ | |
1247 | MCFG_CENTRONICS_ADD("ctx", centronics_printers, "printer") | |
1248 | 1248 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(cat_state, prn_ack_ff)) |
1249 | 1249 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("duartn68681", mc68681_device, ip4_w)) MCFG_DEVCB_XOR(1) |
1250 | 1250 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("ctx_data_out", "ctx") |
r241749 | r241750 | |
---|---|---|
767 | 767 | MCFG_RS232_DSR_HANDLER(DEVWRITELINE("acia", mos6551_device, write_dsr)) |
768 | 768 | MCFG_RS232_CTS_HANDLER(DEVWRITELINE("via1", via6522_device, write_pb4)) |
769 | 769 | |
770 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
770 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, NULL) | |
771 | 771 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("via1", via6522_device, write_pb6)) MCFG_DEVCB_XOR(1) |
772 | 772 | |
773 | 773 | MCFG_DEVICE_ADD("bank1", ADDRESS_MAP_BANK, 0) |
r241749 | r241750 | |
---|---|---|
706 | 706 | MCFG_RS232_DCD_HANDLER(DEVWRITELINE(I8274_TAG, z80dart_device, dcdb_w)) |
707 | 707 | MCFG_RS232_CTS_HANDLER(DEVWRITELINE(I8274_TAG, z80dart_device, ctsb_w)) |
708 | 708 | |
709 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
709 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
710 | 710 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(compis_state, write_centronics_busy)) |
711 | 711 | MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(compis_state, write_centronics_select)) |
712 | 712 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) |
r241749 | r241750 | |
---|---|---|
771 | 771 | MCFG_CASSETTE_ADD("cassette") |
772 | 772 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED) |
773 | 773 | |
774 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
774 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
775 | 775 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit7)) |
776 | 776 | |
777 | 777 | MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0) |
r241749 | r241750 | |
850 | 850 | MCFG_CASSETTE_ADD("cassette") |
851 | 851 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED) |
852 | 852 | |
853 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
853 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
854 | 854 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(laser2001_state, write_centronics_busy)) |
855 | 855 | |
856 | 856 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) |
r241749 | r241750 | |
---|---|---|
25 | 25 | #include "bus/dmv/k220.h" |
26 | 26 | #include "bus/dmv/k230.h" |
27 | 27 | #include "bus/dmv/k233.h" |
28 | #include "bus/dmv/k803.h" | |
29 | 28 | #include "bus/dmv/k806.h" |
30 | 29 | #include "bus/dmv/ram.h" |
31 | 30 | |
r241749 | r241750 | |
115 | 114 | DECLARE_READ8_MEMBER(exp_program_r); |
116 | 115 | DECLARE_WRITE8_MEMBER(exp_program_w); |
117 | 116 | 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); | |
129 | 118 | DECLARE_FLOPPY_FORMATS( floppy_formats ); |
130 | 119 | |
131 | 120 | UINT8 program_read(address_space &space, int cas, offs_t offset); |
r241749 | r241750 | |
157 | 146 | int m_dack3_line; |
158 | 147 | int m_sd_poll_state; |
159 | 148 | int m_floppy_motor; |
160 | int m_busint[8]; | |
161 | 149 | }; |
162 | 150 | |
163 | 151 | WRITE8_MEMBER(dmv_state::tc_set_w) |
r241749 | r241750 | |
341 | 329 | |
342 | 330 | static SLOT_INTERFACE_START( dmv_floppies ) |
343 | 331 | SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) |
344 | SLOT_INTERFACE( "525qd", FLOPPY_525_QD ) | |
345 | 332 | SLOT_INTERFACE_END |
346 | 333 | |
347 | 334 | |
r241749 | r241750 | |
388 | 375 | } |
389 | 376 | } |
390 | 377 | |
391 | ||
378 | WRITE_LINE_MEMBER( dmv_state::busint_w ) | |
392 | 379 | { |
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); | |
406 | 382 | } |
407 | 383 | |
408 | 384 | void dmv_state::program_write(address_space &space, int cas, offs_t offset, UINT8 data) |
r241749 | r241750 | |
529 | 505 | m_switch16 = 0; |
530 | 506 | m_thold7 = 0; |
531 | 507 | m_dma_hrq = 0; |
532 | memset(m_busint, 0, sizeof(m_busint)); | |
533 | 508 | |
534 | 509 | update_halt_line(); |
535 | 510 | } |
r241749 | r241750 | |
631 | 606 | |
632 | 607 | static SLOT_INTERFACE_START(dmv_slot2_6) |
633 | 608 | SLOT_INTERFACE("k233", DMV_K233) // K233 16K Shared RAM |
634 | SLOT_INTERFACE("k803", DMV_K803) // K803 RTC module | |
635 | 609 | SLOT_INTERFACE("k806", DMV_K806) // K806 Mouse module |
636 | 610 | SLOT_INTERFACE_END |
637 | 611 | |
r241749 | r241750 | |
718 | 692 | MCFG_DEVICE_SLOT_INTERFACE(dmv_slot1, NULL, false) |
719 | 693 | MCFG_DEVICE_ADD("slot2", DMVCART_SLOT, 0) |
720 | 694 | MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false) |
721 | MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint2_w)) | |
722 | 695 | MCFG_DEVICE_ADD("slot2a", DMVCART_SLOT, 0) |
723 | 696 | MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2a, NULL, false) |
724 | MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint2a_w)) | |
725 | 697 | MCFG_DEVICE_ADD("slot3", DMVCART_SLOT, 0) |
726 | 698 | MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false) |
727 | MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint3_w)) | |
728 | 699 | MCFG_DEVICE_ADD("slot4", DMVCART_SLOT, 0) |
729 | 700 | MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false) |
730 | MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint4_w)) | |
731 | 701 | MCFG_DEVICE_ADD("slot5", DMVCART_SLOT, 0) |
732 | 702 | MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false) |
733 | MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint5_w)) | |
734 | 703 | MCFG_DEVICE_ADD("slot6", DMVCART_SLOT, 0) |
735 | 704 | MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false) |
736 | MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint6_w)) | |
737 | 705 | |
738 | 706 | MCFG_DEVICE_ADD("slot7", DMVCART_SLOT, 0) |
739 | 707 | MCFG_DEVICE_SLOT_INTERFACE(dmv_slot7, NULL, false) |
740 | 708 | MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(READ8(dmv_state, exp_program_r), WRITE8(dmv_state, exp_program_w)) |
741 | 709 | MCFG_DMVCART_SLOT_OUT_THOLD_CB(WRITELINE(dmv_state, thold7_w)) |
742 | MCFG_DMVCART_SLOT_OUT_I | |
710 | MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(dmv_state, busint_w)) | |
743 | 711 | MCFG_DEVICE_ADD("slot7a", DMVCART_SLOT, 0) |
744 | 712 | MCFG_DEVICE_SLOT_INTERFACE(dmv_slot7a, "k230", false) |
745 | 713 | MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(READ8(dmv_state, exp_program_r), WRITE8(dmv_state, exp_program_w)) |
746 | 714 | MCFG_DMVCART_SLOT_OUT_THOLD_CB(WRITELINE(dmv_state, thold7_w)) |
747 | MCFG_DMVCART_SLOT_OUT_I | |
715 | MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(dmv_state, busint_w)) | |
748 | 716 | |
749 | 717 | MCFG_SOFTWARE_LIST_ADD("flop_list", "dmv") |
750 | 718 |
r241749 | r241750 | |
---|---|---|
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 | ||
41 | ksm|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 | ||
90 | class ksm_state : public driver_device | |
91 | { | |
92 | public: | |
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 | ||
116 | private: | |
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 | ||
127 | protected: | |
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 | ||
138 | static 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") | |
143 | ADDRESS_MAP_END | |
144 | ||
145 | static 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) | |
153 | ADDRESS_MAP_END | |
154 | ||
155 | /* Input ports */ | |
156 | static 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") | |
195 | INPUT_PORTS_END | |
196 | ||
197 | void ksm_state::machine_reset() | |
198 | { | |
199 | memset(&m_video, 0, sizeof(m_video)); | |
200 | } | |
201 | ||
202 | void 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 | ||
210 | WRITE8_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 | ||
216 | WRITE8_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 | ||
221 | WRITE_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 | ||
228 | WRITE_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 | ||
250 | UINT32 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 | ||
283 | TIMER_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 | ||
305 | UINT32 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 */ | |
313 | static 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 | ||
326 | static GFXDECODE_START( ksm ) | |
327 | GFXDECODE_ENTRY("chargen", 0x0000, ksm_charlayout, 0, 1) | |
328 | GFXDECODE_END | |
329 | ||
330 | static 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)) | |
383 | MACHINE_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 | */ | |
390 | ROM_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)) | |
397 | ROM_END | |
398 | ||
399 | /* | |
400 | Assumes that SRAM is at 0x2100, otherwise identical. | |
401 | Chargen has no missing pixels in 'G' character. | |
402 | */ | |
403 | ROM_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)) | |
410 | ROM_END | |
411 | ||
412 | /* Driver */ | |
413 | ||
414 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ | |
415 | COMP( 1986, dvk_ksm, 0, 0, ksm, ksm, driver_device, 0, "USSR", "DVK KSM", 0) | |
416 | COMP( 198?, dvk_ksm01,0 , 0, ksm, ksm, driver_device, 0, "USSR", "DVK KSM-01", 0) |
r241749 | r241750 | |
---|---|---|
730 | 730 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) |
731 | 731 | |
732 | 732 | /* printer */ |
733 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
733 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
734 | 734 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(IC_I063, z80pio_device, strobe_a)) |
735 | 735 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(einstein_state, write_centronics_busy)) |
736 | 736 | MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(einstein_state, write_centronics_perror)) |
r241749 | r241750 | |
---|---|---|
573 | 573 | MCFG_I8255_OUT_PORTC_CB(WRITE8(elwro800_state, i8255_port_c_w)) |
574 | 574 | |
575 | 575 | /* printer */ |
576 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
576 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
577 | 577 | MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in") |
578 | 578 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(elwro800_state, write_centronics_ack)) |
579 | 579 |
r241749 | r241750 | |
---|---|---|
521 | 521 | MCFG_EP64_EXPANSION_BUS_SLOT_NMI_CALLBACK(INPUTLINE(Z80_TAG, INPUT_LINE_NMI)) |
522 | 522 | MCFG_EP64_EXPANSION_BUS_SLOT_WAIT_CALLBACK(INPUTLINE(Z80_TAG, Z80_INPUT_LINE_WAIT)) |
523 | 523 | |
524 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
524 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
525 | 525 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(ep64_state, write_centronics_busy)) |
526 | 526 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) |
527 | 527 |
r241749 | r241750 | |
---|---|---|
552 | 552 | |
553 | 553 | MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "fc100_cart") |
554 | 554 | |
555 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
555 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
556 | 556 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit4)) |
557 | 557 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit5)) |
558 | 558 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
---|---|---|
2088 | 2088 | MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_intrq_w)) |
2089 | 2089 | MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_drq_w)) |
2090 | 2090 | |
2091 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
2091 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
2092 | 2092 | MCFG_SLOT_OPTION_ADD( "dsjoy", DEMPA_SHINBUNSHA_JOYSTICK ) |
2093 | 2093 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fm7_state, write_centronics_busy)) |
2094 | 2094 | MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(fm7_state, write_centronics_fault)) |
r241749 | r241750 | |
2145 | 2145 | MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_intrq_w)) |
2146 | 2146 | MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_drq_w)) |
2147 | 2147 | |
2148 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
2148 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
2149 | 2149 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fm7_state, write_centronics_busy)) |
2150 | 2150 | MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(fm7_state, write_centronics_fault)) |
2151 | 2151 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(fm7_state, write_centronics_ack)) |
r241749 | r241750 | |
2221 | 2221 | MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_intrq_w)) |
2222 | 2222 | MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_drq_w)) |
2223 | 2223 | |
2224 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
2224 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
2225 | 2225 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fm7_state, write_centronics_busy)) |
2226 | 2226 | MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(fm7_state, write_centronics_fault)) |
2227 | 2227 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(fm7_state, write_centronics_ack)) |
r241749 | r241750 | |
2299 | 2299 | MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_intrq_w)) |
2300 | 2300 | MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_drq_w)) |
2301 | 2301 | |
2302 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
2302 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
2303 | 2303 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fm7_state, write_centronics_busy)) |
2304 | 2304 | MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(fm7_state, write_centronics_fault)) |
2305 | 2305 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(fm7_state, write_centronics_ack)) |
r241749 | r241750 | |
2353 | 2353 | MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_intrq_w)) |
2354 | 2354 | MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_drq_w)) |
2355 | 2355 | |
2356 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
2356 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
2357 | 2357 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fm7_state, write_centronics_busy)) |
2358 | 2358 | MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(fm7_state, write_centronics_fault)) |
2359 | 2359 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(fm7_state, write_centronics_ack)) |
r241749 | r241750 | |
---|---|---|
674 | 674 | MCFG_MC6845_UPDATE_ROW_CB(fp1100_state, fp1100_update_row) |
675 | 675 | |
676 | 676 | /* Printer */ |
677 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
677 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
678 | 678 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fp1100_state, centronics_busy_w)) |
679 | 679 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
680 | 680 |
r241749 | r241750 | |
---|---|---|
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 | ||
11 | class gamate_state : public driver_device | |
12 | { | |
13 | public: | |
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 | ||
33 | private: | |
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 | ||
59 | WRITE8_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 | ||
85 | READ8_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 | ||
105 | WRITE8_MEMBER( gamate_state::audio_w ) | |
106 | { | |
107 | // logerror("%.6f audio write %04x %02x\n",timer_get_time(),offset,data); | |
108 | } | |
109 | ||
110 | WRITE8_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 | ||
150 | READ8_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 | ||
157 | static 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 | |
169 | ADDRESS_MAP_END | |
170 | ||
171 | ||
172 | static 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") | |
182 | INPUT_PORTS_END | |
183 | ||
184 | #if 0 | |
185 | static 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 | ||
199 | static const unsigned short gamate_palette[4] = | |
200 | { | |
201 | 0,1,2,3 | |
202 | }; | |
203 | #endif | |
204 | ||
205 | /* palette in red, green, blue tribles */ | |
206 | static 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 | |
215 | static GFXDECODE_START( gamate_charlayout ) | |
216 | GFXDECODE_ENTRY( "gfx1", 0x0000, gamate_charlayout, 0, 0x100 ) | |
217 | GFXDECODE_END | |
218 | #endif | |
219 | ||
220 | PALETTE_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 | ||
238 | static 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 | ||
246 | UINT32 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 | ||
310 | DRIVER_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 | ||
317 | void 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 | ||
335 | INTERRUPT_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 | ||
344 | static 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") | |
371 | MACHINE_CONFIG_END | |
372 | ||
373 | ||
374 | ROM_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) | |
379 | ROM_END | |
380 | ||
381 | ||
382 | /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */ | |
383 | CONS( 19??, gamate, 0, 0, gamate, gamate, gamate_state, gamate, "Bit Corp", "Gamate", GAME_NOT_WORKING | GAME_NO_SOUND) |
r241749 | r241750 | |
---|---|---|
485 | 485 | m_floppy0_ready = false; |
486 | 486 | m_floppy1_ready = false; |
487 | 487 | 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); | |
490 | 489 | |
491 | 490 | // initialise FDC clock based on DIP Switch S2-9 (5.25"/8" drive select) |
492 | 491 | if(m_dma_dip->read() & 0x00000100) |
r241749 | r241750 | |
---|---|---|
28 | 28 | DECLARE_WRITE8_MEMBER(gmaster_port_w); |
29 | 29 | DECLARE_DRIVER_INIT(gmaster) { memset(&m_video, 0, sizeof(m_video)); memset(m_ram, 0, sizeof(m_ram)); } |
30 | 30 | UINT32 screen_update_gmaster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
31 | INTERRUPT_GEN_MEMBER(gmaster_interrupt); | |
31 | 32 | |
32 | 33 | private: |
33 | 34 | virtual void machine_start(); |
r241749 | r241750 | |
277 | 278 | } |
278 | 279 | |
279 | 280 | |
281 | INTERRUPT_GEN_MEMBER(gmaster_state::gmaster_interrupt) | |
282 | { | |
283 | m_maincpu->set_input_line(UPD7810_INTFE1, ASSERT_LINE); | |
284 | } | |
285 | ||
280 | 286 | static MACHINE_CONFIG_START( gmaster, gmaster_state ) |
281 | 287 | MCFG_CPU_ADD("maincpu", UPD7810, XTAL_12MHz/2/*?*/) // upd78c11 in the unit |
282 | 288 | MCFG_CPU_PROGRAM_MAP(gmaster_mem) |
283 | 289 | MCFG_CPU_IO_MAP( gmaster_io) |
290 | MCFG_CPU_VBLANK_INT_DRIVER("screen", gmaster_state, gmaster_interrupt) | |
284 | 291 | |
285 | 292 | MCFG_SCREEN_ADD("screen", LCD) |
286 | 293 | MCFG_SCREEN_REFRESH_RATE(60) |
r241749 | r241750 | |
---|---|---|
864 | 864 | MCFG_RAM_EXTRA_OPTIONS("32K") |
865 | 865 | |
866 | 866 | // software lists |
867 | MCFG_SOFTWARE_LIST_ADD(" | |
867 | MCFG_SOFTWARE_LIST_ADD("flop_list", "hx20_flop") | |
868 | 868 | MACHINE_CONFIG_END |
869 | 869 | |
870 | 870 |
r241749 | r241750 | |
---|---|---|
283 | 283 | MCFG_I8255_IN_PORTB_CB(DEVREAD8("cent_status_in", input_buffer_device, read)) |
284 | 284 | MCFG_I8255_OUT_PORTC_CB(WRITE8(isbc_state, ppi_c_w)) |
285 | 285 | |
286 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
286 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
287 | 287 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(isbc_state, write_centronics_ack)) |
288 | 288 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit7)) |
289 | 289 | MCFG_CENTRONICS_FAULT_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit6)) |
r241749 | r241750 | |
---|---|---|
735 | 735 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED) |
736 | 736 | |
737 | 737 | /* printer */ |
738 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
738 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
739 | 739 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(jtc_state, write_centronics_busy)) |
740 | 740 | MACHINE_CONFIG_END |
741 | 741 |
r241749 | r241750 | |
---|---|---|
207 | 207 | /* devices */ |
208 | 208 | MCFG_QUICKLOAD_ADD("quickload", kaypro_state, kaypro, "com,cpm", 3) |
209 | 209 | |
210 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
210 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
211 | 211 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(kaypro_state, write_centronics_busy)) |
212 | 212 | |
213 | 213 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
281 | 281 | |
282 | 282 | MCFG_QUICKLOAD_ADD("quickload", kaypro_state, kaypro, "com,cpm", 3) |
283 | 283 | |
284 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
284 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
285 | 285 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(kaypro_state, write_centronics_busy)) |
286 | 286 | |
287 | 287 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
---|---|---|
1376 | 1376 | MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) |
1377 | 1377 | MCFG_RS232_RXD_HANDLER(DEVWRITELINE(IM6402_TAG, im6402_device, write_rri)) |
1378 | 1378 | |
1379 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
1379 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
1380 | 1380 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(kc85_state, write_centronics_busy)) |
1381 | 1381 | MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(kc85_state, write_centronics_select)) |
1382 | 1382 | |
r241749 | r241750 | |
1426 | 1426 | MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) |
1427 | 1427 | MCFG_RS232_RXD_HANDLER(DEVWRITELINE(IM6402_TAG, im6402_device, write_rri)) |
1428 | 1428 | |
1429 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
1429 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
1430 | 1430 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(kc85_state, write_centronics_busy)) |
1431 | 1431 | MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(kc85_state, write_centronics_select)) |
1432 | 1432 | |
r241749 | r241750 | |
1486 | 1486 | MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL) |
1487 | 1487 | MCFG_RS232_RXD_HANDLER(DEVWRITELINE(IM6402_TAG, im6402_device, write_rri)) |
1488 | 1488 | |
1489 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
1489 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
1490 | 1490 | MCFG_CASSETTE_ADD("cassette") |
1491 | 1491 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED) |
1492 | 1492 | |
r241749 | r241750 | |
1550 | 1550 | MCFG_RS232_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr)) |
1551 | 1551 | |
1552 | 1552 | // MCFG_MC14412_ADD(MC14412_TAG, XTAL_1MHz) |
1553 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
1553 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
1554 | 1554 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(tandy200_state, write_centronics_busy)) |
1555 | 1555 | MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(tandy200_state, write_centronics_select)) |
1556 | 1556 |
r241749 | r241750 | |
---|---|---|
486 | 486 | ROM_END |
487 | 487 | |
488 | 488 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ |
489 | COMP( 1989, lviv, 0, 0, lviv, lviv, driver_device, 0, "V. I. Lenin", " | |
489 | COMP( 1989, lviv, 0, 0, lviv, lviv, driver_device, 0, "V. I. Lenin", "Lviv" , 0 ) |
r241749 | r241750 | |
---|---|---|
595 | 595 | // CK0 = EXINT, CK1 = GND, CK2 = TCK, CK3 = VDP INT |
596 | 596 | // ZC2 = EXCLK |
597 | 597 | |
598 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
598 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
599 | 599 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(m5_state, write_centronics_busy)) |
600 | 600 | |
601 | 601 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) |
r241749 | r241750 | |
603 | 603 | MCFG_CASSETTE_ADD("cassette") |
604 | 604 | MCFG_CASSETTE_FORMATS(sordm5_cassette_formats) |
605 | 605 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY) |
606 | MCFG_CASSETTE_INTERFACE("m5_cass") | |
607 | 606 | |
608 | 607 | MCFG_DEVICE_ADD(I8255A_TAG, I8255, 0) |
609 | 608 | MCFG_I8255_IN_PORTA_CB(READ8(m5_state, ppi_pa_r)) |
r241749 | r241750 | |
622 | 621 | //MCFG_GENERIC_MANDATORY |
623 | 622 | |
624 | 623 | // 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") | |
627 | 625 | |
628 | 626 | // internal ram |
629 | 627 | MCFG_RAM_ADD(RAM_TAG) |
r241749 | r241750 | |
---|---|---|
699 | 699 | MCFG_QUICKLOAD_ADD("quickload", mbee_state, mbee, "mwb,com,bee", 2) |
700 | 700 | MCFG_QUICKLOAD_ADD("quickload2", mbee_state, mbee_z80bin, "bin", 2) |
701 | 701 | |
702 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
702 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
703 | 703 | |
704 | 704 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
705 | 705 | |
r241749 | r241750 | |
757 | 757 | MCFG_QUICKLOAD_ADD("quickload", mbee_state, mbee, "mwb,com,bee", 2) |
758 | 758 | MCFG_QUICKLOAD_ADD("quickload2", mbee_state, mbee_z80bin, "bin", 2) |
759 | 759 | |
760 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
760 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
761 | 761 | |
762 | 762 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
763 | 763 |
r241749 | r241750 | |
---|---|---|
453 | 453 | MCFG_CASSETTE_ADD("cassette") |
454 | 454 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED) |
455 | 455 | |
456 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
456 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
457 | 457 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(mc1000_state, write_centronics_busy)) |
458 | 458 | |
459 | 459 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) |
r241749 | r241750 | |
---|---|---|
76 | 76 | // DBG_LOG(2,"mc1502_ppi_portb_w",("( %02X )\n", data)); |
77 | 77 | m_ppi_portb = data; |
78 | 78 | m_pit8253->write_gate2(BIT(data, 0)); |
79 | ||
79 | // mc1502_speaker_set_spkrdata(BIT(data, 1)); | |
80 | 80 | m_centronics->write_strobe(BIT(data, 2)); |
81 | 81 | m_centronics->write_autofd(BIT(data, 3)); |
82 | 82 | m_centronics->write_init(BIT(data, 4)); |
r241749 | r241750 | |
163 | 163 | WRITE_LINE_MEMBER(mc1502_state::mc1502_pit8253_out2_changed) |
164 | 164 | { |
165 | 165 | m_pit_out2 = state; |
166 | ||
166 | // mc1502_speaker_set_input( state ); | |
167 | 167 | m_cassette->output(state ? 1 : -1); |
168 | 168 | } |
169 | 169 | |
170 | WRITE_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 | ||
176 | 170 | DRIVER_INIT_MEMBER( mc1502_state, mc1502 ) |
177 | 171 | { |
178 | 172 | address_space &program = m_maincpu->space(AS_PROGRAM); |
r241749 | r241750 | |
203 | 197 | MACHINE_RESET_MEMBER( mc1502_state, mc1502 ) |
204 | 198 | { |
205 | 199 | 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); | |
212 | 200 | } |
213 | 201 | |
214 | 202 | /* |
r241749 | r241750 | |
307 | 295 | MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) |
308 | 296 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
309 | 297 | |
310 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
298 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
311 | 299 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit6)) |
312 | 300 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit7)) |
313 | 301 | MCFG_CENTRONICS_FAULT_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit4)) |
r241749 | r241750 | |
336 | 324 | MACHINE_CONFIG_END |
337 | 325 | |
338 | 326 | |
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 | */ | |
348 | 327 | ROM_START( mc1502 ) |
349 | 328 | ROM_REGION16_LE(0x100000,"maincpu", 0) |
350 | 329 | |
351 | 330 | ROM_DEFAULT_BIOS("v52") |
352 | ROM_SYSTEM_BIOS(0, "v50", "v5.0 | |
331 | ROM_SYSTEM_BIOS(0, "v50", "v5.0") | |
353 | 332 | ROMX_LOAD( "monitor_5_0.rom", 0xfc000, 0x4000, CRC(9e97c6a0) SHA1(16a304e8de69ec4d8b92acda6bf28454c361a24f),ROM_BIOS(1)) |
354 | ROM_SYSTEM_BIOS(1, "v52", "v5.2 | |
333 | ROM_SYSTEM_BIOS(1, "v52", "v5.2") | |
355 | 334 | 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)) | |
388 | 340 | ROM_END |
389 | 341 | |
390 | /* | |
391 | Predecessor of MC1502, same keyboard attachment but | |
392 | different video subsystem (not emulated). | |
393 | */ | |
394 | 342 | ROM_START( pk88 ) |
395 | 343 | ROM_REGION16_LE(0x100000,"maincpu", 0) |
396 | 344 | |
r241749 | r241750 | |
410 | 358 | |
411 | 359 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ |
412 | 360 | COMP ( 1989, mc1502, ibm5150, 0, mc1502, mc1502, mc1502_state, mc1502, "NPO Microprocessor", "Elektronika MC-1502", 0) |
413 | COMP ( 19 | |
361 | COMP ( 1990, pk88, ibm5150, 0, pk88, mc1502, mc1502_state, mc1502, "NPO Microprocessor", "Elektronika PK-88", GAME_NOT_WORKING | GAME_NO_SOUND) |
r241749 | r241750 | |
---|---|---|
1 | /* | |
1 | /* | |
2 | 2 | |
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 | |
12 | 4 | |
5 | */ | |
13 | 6 | |
14 | TODO: | |
15 | - accurate speaker levels (tone pitch sounds good though) | |
16 | - is the rom dump good? | |
17 | ||
18 | ***************************************************************************/ | |
19 | ||
20 | 7 | #include "emu.h" |
21 | 8 | #include "cpu/tms0980/tms0980.h" |
22 | 9 | #include "sound/speaker.h" |
23 | 10 | |
11 | /* Layout */ | |
24 | 12 | #include "merlin.lh" |
25 | 13 | |
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) | |
29 | 14 | |
30 | ||
31 | 15 | class merlin_state : public driver_device |
32 | 16 | { |
33 | 17 | public: |
34 | 18 | merlin_state(const machine_config &mconfig, device_type type, const char *tag) |
35 | 19 | : 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") { } | |
40 | 22 | |
23 | virtual void machine_start(); | |
24 | ||
25 | required_device<speaker_sound_device> m_speaker; | |
26 | ||
41 | 27 | DECLARE_READ8_MEMBER(read_k); |
42 | 28 | DECLARE_WRITE16_MEMBER(write_o); |
43 | 29 | DECLARE_WRITE16_MEMBER(write_r); |
44 | 30 | |
45 | virtual void machine_start(); | |
46 | ||
47 | 31 | protected: |
32 | UINT16 m_o; | |
33 | UINT16 m_r; | |
48 | 34 | 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; | |
53 | 35 | }; |
54 | 36 | |
55 | 37 | |
56 | ||
38 | #define LOG 0 | |
57 | 39 | |
58 | I/O | |
59 | 40 | |
60 | ***************************************************************************/ | |
41 | static 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 | |
61 | 47 | |
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 | |
63 | 53 | |
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 | ||
66 | INPUT_PORTS_END | |
67 | ||
68 | ||
69 | /* | |
70 | The keypad is a 4*4 matrix, connected like so: | |
71 | ||
64 | 72 | +----+ +----+ +----+ +----+ |
65 | 73 | O0 o---| R0 |--| R1 |--| R2 |--| R3 | |
66 | 74 | +----+ +----+ +----+ +----+ |
r241749 | r241750 | |
80 | 88 | o o o o |
81 | 89 | K1 K2 K8 K4 |
82 | 90 | |
83 | SG = same game, CT = comp turn, NG = new game, HM = hit me */ | |
91 | SG = same game, CT = comp turn, NG = new game, HM = hit me | |
92 | */ | |
84 | 93 | |
85 | 94 | READ8_MEMBER(merlin_state::read_k) |
86 | 95 | { |
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; | |
93 | 97 | |
94 | return k; | |
95 | } | |
98 | if (LOG) | |
99 | logerror( "read_k\n" ); | |
96 | 100 | |
97 | WRITE16_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 | } | |
106 | 105 | |
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 | } | |
111 | 110 | |
112 | WRITE16_MEMBER(merlin_state::write_r) | |
113 | { | |
114 | /* LEDs: | |
111 | if ( m_o & 0x04 ) | |
112 | { | |
113 | data |= ioport("O2")->read(); | |
114 | } | |
115 | 115 | |
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; | |
124 | 122 | } |
125 | 123 | |
126 | 124 | |
125 | /* | |
126 | The speaker is connected to O4 through O6. The 3 outputs are paralleled for | |
127 | increased current driving capability. They are passed thru a 220 ohm resistor | |
128 | and then to the speaker, which has the other side grounded. The software then | |
129 | toggles these lines to make sounds and noises. (There is no audio generator | |
130 | other than toggling it with a software delay between to make tones). | |
131 | */ | |
127 | 132 | |
128 | /*************************************************************************** | |
133 | WRITE16_MEMBER(merlin_state::write_o) | |
134 | { | |
135 | if (LOG) | |
136 | logerror( "write_o: write %02x\n", data ); | |
129 | 137 | |
130 | | |
138 | m_o = data; | |
131 | 139 | |
132 | ***************************************************************************/ | |
140 | m_speaker->level_w(m_o & 0x70); | |
141 | } | |
133 | 142 | |
134 | static 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") | |
140 | 143 | |
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 | /* | |
146 | 145 | |
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: | |
152 | 147 | |
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") | |
158 | INPUT_PORTS_END | |
148 | R0 | |
149 | R1 R2 R3 | |
150 | R4 R5 R6 | |
151 | R7 R8 R9 | |
152 | R10 | |
159 | 153 | |
154 | When that particular R output is high, that LED is on. | |
155 | */ | |
160 | 156 | |
157 | WRITE16_MEMBER(merlin_state::write_r) | |
158 | { | |
159 | if (LOG) | |
160 | logerror( "write_r: write %04x\n", data ); | |
161 | 161 | |
162 | ||
162 | m_r = data; | |
163 | 163 | |
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 | } | |
165 | 176 | |
166 | ***************************************************************************/ | |
167 | 177 | |
168 | 178 | void merlin_state::machine_start() |
169 | 179 | { |
170 | m_o = 0; | |
171 | 180 | save_item(NAME(m_o)); |
181 | save_item(NAME(m_r)); | |
172 | 182 | } |
173 | 183 | |
174 | 184 | |
r241749 | r241750 | |
181 | 191 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 |
182 | 192 | }; |
183 | 193 | |
184 | static const INT16 speaker_levels[] = { 0, 32767, 0, 32767 }; // unknown too, due to output_pla being unknown | |
185 | 194 | |
186 | ||
187 | 195 | static 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 ) ) | |
188 | 201 | |
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 | ||
196 | 202 | MCFG_DEFAULT_LAYOUT(layout_merlin) |
197 | 203 | |
198 | /* no video! */ | |
199 | ||
200 | /* sound hardware */ | |
201 | 204 | MCFG_SPEAKER_STANDARD_MONO("mono") |
202 | 205 | MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) |
203 | MCFG_SPEAKER_LEVELS(4, speaker_levels) | |
204 | 206 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
205 | 207 | MACHINE_CONFIG_END |
206 | 208 | |
207 | 209 | |
208 | ||
209 | /*************************************************************************** | |
210 | ||
211 | Game driver(s) | |
212 | ||
213 | ***************************************************************************/ | |
214 | ||
215 | 210 | ROM_START( merlin ) |
216 | 211 | ROM_REGION( 0x800, "maincpu", 0 ) |
217 | 212 | // This rom needs verification, that's why it is marked as a bad dump |
r241749 | r241750 | |
221 | 216 | ROM_LOAD( "mp3404", 0x0000, 0x800, BAD_DUMP CRC(7515a75d) SHA1(76ca3605d3fde1df62f79b9bb1f534c2a2ae0229) ) |
222 | 217 | ROM_END |
223 | 218 | |
219 | /*************************************************************************** | |
224 | 220 | |
225 | CONS( 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 */ | |
226 | CONS( 1978, merlin, 0, 0, merlin, merlin, driver_device, 0, "Parker Brothers", "Merlin", 0 ) |
r241749 | r241750 | |
---|---|---|
517 | 517 | |
518 | 518 | |
519 | 519 | #include "includes/msx.h" |
520 | #include "bus/centronics/covox.h" | |
520 | 521 | #include "formats/dsk_dsk.h" |
521 | 522 | #include "formats/dmk_dsk.h" |
522 | 523 | #include "machine/msx_matsushita.h" |
r241749 | r241750 | |
1350 | 1351 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
1351 | 1352 | |
1352 | 1353 | /* 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 ) | |
1354 | 1356 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit1)) |
1355 | 1357 | |
1356 | 1358 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
1438 | 1440 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
1439 | 1441 | |
1440 | 1442 | /* 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 ) | |
1442 | 1445 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit1)) |
1443 | 1446 | |
1444 | 1447 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
1502 | 1505 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
1503 | 1506 | |
1504 | 1507 | /* 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 ) | |
1506 | 1510 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit1)) |
1507 | 1511 | |
1508 | 1512 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
---|---|---|
312 | 312 | |
313 | 313 | MCFG_TIMER_DRIVER_ADD_PERIODIC("z80ctc_timer", mtx_state, ctc_tick, attotime::from_hz(XTAL_4MHz/13)) |
314 | 314 | |
315 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
315 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
316 | 316 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(mtx_state, write_centronics_busy)) |
317 | 317 | MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(mtx_state, write_centronics_fault)) |
318 | 318 | MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(mtx_state, write_centronics_perror)) |
r241749 | r241750 | |
---|---|---|
406 | 406 | MCFG_Z80PIO_OUT_PA_CB(WRITE8(mz_state, mz800_z80pio_port_a_w)) |
407 | 407 | MCFG_Z80PIO_OUT_PB_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) |
408 | 408 | |
409 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
409 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
410 | 410 | |
411 | 411 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
412 | 412 | MACHINE_CONFIG_END |
r241749 | r241750 | |
---|---|---|
1423 | 1423 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
1424 | 1424 | |
1425 | 1425 | /* printer */ |
1426 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
1426 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
1427 | 1427 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(nc_state, write_nc100_centronics_ack)) |
1428 | 1428 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(nc_state, write_centronics_busy)) |
1429 | 1429 |
r241749 | r241750 | |
---|---|---|
793 | 793 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
794 | 794 | |
795 | 795 | /* printer */ |
796 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
796 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
797 | 797 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522", via6522_device, write_ca1)) |
798 | 798 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
799 | 799 |
r241749 | r241750 | |
---|---|---|
688 | 688 | m_u73_q2 = 0; |
689 | 689 | m_out1 = 2; // initial state of pit output is undefined |
690 | 690 | m_pc_spkrdata = 0; |
691 | m_pit_out2 = | |
691 | m_pit_out2 = 0; | |
692 | 692 | m_dma_channel = -1; |
693 | 693 | m_cur_eop = false; |
694 | 694 | } |
r241749 | r241750 | |
---|---|---|
1131 | 1131 | m_nmi_enable = 0; |
1132 | 1132 | m_toggle = 0; |
1133 | 1133 | m_kb_bits = 0; |
1134 | m_pit2 = 1; | |
1135 | 1134 | |
1136 | 1135 | m_lpen = 0; |
1137 | 1136 | m_blink = 0; |
r241749 | r241750 | |
1260 | 1259 | MCFG_INS8250_OUT_RTS_CB(DEVWRITELINE(RS232_TAG, rs232_port_device, write_rts)) |
1261 | 1260 | MCFG_INS8250_OUT_INT_CB(DEVWRITELINE(I8259A2_TAG, pic8259_device, ir4_w)) |
1262 | 1261 | |
1263 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
1262 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
1264 | 1263 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(pc1512_state, write_centronics_ack)) |
1265 | 1264 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(pc1512_state, write_centronics_busy)) |
1266 | 1265 | MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(pc1512_state, write_centronics_perror)) |
r241749 | r241750 | |
1381 | 1380 | MCFG_INS8250_OUT_INT_CB(DEVWRITELINE(I8259A2_TAG, pic8259_device, ir4_w)) |
1382 | 1381 | |
1383 | 1382 | |
1384 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
1383 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
1385 | 1384 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(pc1512_state, write_centronics_ack)) |
1386 | 1385 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(pc1512_state, write_centronics_busy)) |
1387 | 1386 | MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(pc1512_state, write_centronics_perror)) |
r241749 | r241750 | |
---|---|---|
508 | 508 | MCFG_UPD3301_DRAW_CHARACTER_CALLBACK_OWNER(pc8001_state, pc8001_display_pixels) |
509 | 509 | MCFG_UPD3301_VRTC_CALLBACK(DEVWRITELINE(I8257_TAG, i8257_device, dreq2_w)) |
510 | 510 | |
511 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
511 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
512 | 512 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(pc8001_state, write_centronics_ack)) |
513 | 513 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(pc8001_state, write_centronics_busy)) |
514 | 514 | |
r241749 | r241750 | |
557 | 557 | MCFG_UPD3301_DRAW_CHARACTER_CALLBACK_OWNER(pc8001_state, pc8001_display_pixels) |
558 | 558 | MCFG_UPD3301_VRTC_CALLBACK(DEVWRITELINE(I8257_TAG, i8257_device, dreq2_w)) |
559 | 559 | |
560 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
560 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
561 | 561 | |
562 | 562 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) |
563 | 563 |
r241749 | r241750 | |
---|---|---|
2605 | 2605 | MCFG_I8214_ADD(I8214_TAG, MASTER_CLOCK, pic_intf) |
2606 | 2606 | #endif |
2607 | 2607 | MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, NULL) |
2608 | //MCFG_CENTRONICS_ADD("centronics", centronics_ | |
2608 | //MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
2609 | 2609 | MCFG_CASSETTE_ADD("cassette") |
2610 | 2610 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED) |
2611 | 2611 |
r241749 | r241750 | |
---|---|---|
3349 | 3349 | { |
3350 | 3350 | address_space& space = m_maincpu->space(AS_PROGRAM); |
3351 | 3351 | 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); | |
3358 | 3355 | } |
3359 | 3356 | |
3360 | 3357 | m_ide_rom = memregion("ide")->base(); |
r241749 | r241750 | |
---|---|---|
304 | 304 | MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "pencil2_cart") |
305 | 305 | |
306 | 306 | /* printer */ |
307 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
307 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
308 | 308 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(pencil2_state, write_centronics_ack)) |
309 | 309 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(pencil2_state, write_centronics_busy)) |
310 | 310 |
r241749 | r241750 | |
---|---|---|
322 | 322 | MCFG_CASSETTE_FORMATS(phc25_cassette_formats) |
323 | 323 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED) |
324 | 324 | |
325 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
325 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
326 | 326 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(phc25_state, write_centronics_busy)) |
327 | 327 | |
328 | 328 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) |
r241749 | r241750 | |
---|---|---|
838 | 838 | MCFG_I8255_OUT_PORTB_CB(DEVWRITE8("cent_ctrl_out", output_latch_device, write)) |
839 | 839 | MCFG_I8255_IN_PORTC_CB(DEVREAD8("cent_status_in", input_buffer_device, read)) |
840 | 840 | |
841 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
841 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
842 | 842 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit5)) |
843 | 843 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit4)) |
844 | 844 | MCFG_CENTRONICS_FAULT_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit3)) |
r241749 | r241750 | |
---|---|---|
254 | 254 | MCFG_FLOPPY_DRIVE_ADD(FDC9268_TAG ":3", prof180x_floppies, "35dd", floppy_image_device::default_floppy_formats) |
255 | 255 | |
256 | 256 | //MCFG_RTC8583_ADD(MK3835_TAG, rtc_intf) |
257 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
257 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
258 | 258 | |
259 | 259 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) |
260 | 260 |
r241749 | r241750 | |
---|---|---|
595 | 595 | MCFG_PSION_DATAPACK_ADD("pack2") |
596 | 596 | |
597 | 597 | /* Software lists */ |
598 | MCFG_SOFTWARE_LIST_ADD("pack_list", "psion | |
598 | MCFG_SOFTWARE_LIST_ADD("pack_list", "psion") | |
599 | 599 | MACHINE_CONFIG_END |
600 | 600 | |
601 | 601 | /* basic configuration for 4 lines display */ |
r241749 | r241750 | |
624 | 624 | MCFG_DEVICE_MODIFY("hd44780") |
625 | 625 | MCFG_HD44780_LCD_SIZE(1, 16) |
626 | 626 | 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") | |
631 | 627 | MACHINE_CONFIG_END |
632 | 628 | |
633 | 629 | static MACHINE_CONFIG_DERIVED( psioncm, psion_2lines ) |
r241749 | r241750 | |
700 | 696 | ROMX_LOAD( "34-lag.rom", 0x8000, 0x8000, CRC(13a92c4b) SHA1(dab8bd6a41a5fd509c5ad4b0b0ab80d14f2c421a), ROM_BIOS(2)) |
701 | 697 | ROM_SYSTEM_BIOS(2, "v36", "LA v3.6") |
702 | 698 | 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)) | |
705 | 699 | ROM_END |
706 | 700 | |
707 | 701 | ROM_START( psionp200 ) |
r241749 | r241750 | |
---|---|---|
747 | 747 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) // cass2 speaker |
748 | 748 | |
749 | 749 | // devices |
750 | MCFG_CASSETTE_ADD("cassette") | |
750 | MCFG_CASSETTE_ADD( "cassette" ) | |
751 | 751 | MCFG_CASSETTE_FORMATS(sol20_cassette_formats) |
752 | 752 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED) |
753 | MCFG_CASSETTE_INTERFACE("sol20_cass") | |
754 | 753 | |
755 | MCFG_CASSETTE_ADD("cassette2") | |
754 | MCFG_CASSETTE_ADD( "cassette2" ) | |
756 | 755 | MCFG_CASSETTE_FORMATS(sol20_cassette_formats) |
757 | 756 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED) |
758 | MCFG_CASSETTE_INTERFACE("sol20_cass") | |
759 | 757 | |
760 | MCFG_DEVICE_ADD("uart", AY31015, 0) | |
758 | MCFG_DEVICE_ADD( "uart", AY31015, 0 ) | |
761 | 759 | MCFG_AY31015_TX_CLOCK(4800.0) |
762 | 760 | MCFG_AY31015_RX_CLOCK(4800.0) |
763 | MCFG_DEVICE_ADD("uart_s", AY31015, 0) | |
761 | MCFG_DEVICE_ADD( "uart_s", AY31015, 0 ) | |
764 | 762 | MCFG_AY31015_TX_CLOCK(4800.0) |
765 | 763 | MCFG_AY31015_RX_CLOCK(4800.0) |
766 | 764 | MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) |
767 | 765 | MCFG_GENERIC_KEYBOARD_CB(WRITE8(sol20_state, kbd_put)) |
768 | ||
769 | MCFG_SOFTWARE_LIST_ADD("cass_list", "sol20_cass") | |
770 | 766 | MACHINE_CONFIG_END |
771 | 767 | |
772 | 768 | /* ROM definition */ |
r241749 | r241750 | |
---|---|---|
19 | 19 | #include "machine/ram.h" |
20 | 20 | #include "machine/nvram.h" |
21 | 21 | #include "sound/speaker.h" |
22 | ||
22 | 23 | #include "bus/generic/slot.h" |
23 | 24 | #include "bus/generic/carts.h" |
24 | #include "coreutil.h" | |
25 | 25 | #include "px4.lh" |
26 | 26 | |
27 | 27 | |
r241749 | r241750 | |
31 | 31 | |
32 | 32 | #define VERBOSE 1 |
33 | 33 | |
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 | |
34 | 40 | |
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 | ||
35 | 57 | //************************************************************************** |
36 | 58 | // MACROS |
37 | 59 | //************************************************************************** |
r241749 | r241750 | |
45 | 67 | // TYPE DEFINITIONS |
46 | 68 | //************************************************************************** |
47 | 69 | |
48 | class px4_state : public driver_device, public device_serial_interface | |
70 | class px4_state : public driver_device, | |
71 | public device_serial_interface | |
49 | 72 | { |
50 | 73 | public: |
51 | 74 | px4_state(const machine_config &mconfig, device_type type, const char *tag) : |
r241749 | r241750 | |
53 | 76 | device_serial_interface(mconfig, *this), |
54 | 77 | m_z80(*this, "maincpu"), |
55 | 78 | m_ram(*this, RAM_TAG), |
56 | m_nvram(*this, "nvram"), | |
57 | 79 | m_centronics(*this, "centronics"), |
58 | 80 | m_ext_cas(*this, "extcas"), |
59 | 81 | m_ext_cas_timer(*this, "extcas_timer"), |
60 | 82 | m_speaker(*this, "speaker"), |
61 | 83 | m_sio(*this, "sio"), |
62 | 84 | 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"), | |
66 | 88 | 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), | |
70 | 89 | m_artdir(0xff), m_artdor(0xff), m_artsr(0), m_artcr(0), |
71 | 90 | m_swr(0), |
72 | 91 | 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) | |
78 | 94 | { } |
79 | 95 | |
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 | ||
133 | protected: | |
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 | ||
146 | private: | |
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 | ||
185 | 96 | // internal devices |
186 | 97 | required_device<cpu_device> m_z80; |
187 | 98 | required_device<ram_device> m_ram; |
188 | required_device<nvram_device> m_nvram; | |
189 | 99 | required_device<centronics_device> m_centronics; |
190 | 100 | required_device<cassette_image_device> m_ext_cas; |
191 | 101 | required_device<timer_device> m_ext_cas_timer; |
r241749 | r241750 | |
194 | 104 | required_device<rs232_port_device> m_rs232; |
195 | 105 | required_device<generic_slot_device> m_caps1; |
196 | 106 | required_device<generic_slot_device> m_caps2; |
107 | optional_device<generic_slot_device> m_rdsocket; | |
197 | 108 | |
198 | 109 | memory_region *m_caps1_rom; |
199 | 110 | memory_region *m_caps2_rom; |
r241749 | r241750 | |
215 | 126 | UINT8 m_vadr; |
216 | 127 | UINT8 m_yoff; |
217 | 128 | |
129 | void gapnit_interrupt(); | |
130 | ||
218 | 131 | // gapnio |
219 | 132 | emu_timer *m_receive_timer; |
220 | 133 | emu_timer *m_transmit_timer; |
r241749 | r241750 | |
224 | 137 | UINT8 m_artcr; |
225 | 138 | UINT8 m_swr; |
226 | 139 | |
140 | void txd_w(int data); | |
141 | ||
227 | 142 | // 7508 internal |
228 | 143 | bool m_one_sec_int_enabled; |
229 | 144 | bool m_alarm_int_enabled; |
r241749 | r241750 | |
232 | 147 | UINT8 m_key_status; |
233 | 148 | UINT8 m_interrupt_status; |
234 | 149 | |
235 | system_time m_time; | |
236 | int m_clock_state; | |
150 | // external ramdisk | |
151 | offs_t m_ramdisk_address; | |
152 | UINT8 *m_ramdisk; | |
237 | 153 | |
238 | 154 | // external cassette/barcode reader |
239 | 155 | int m_ear_last_state; |
240 | 156 | |
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); | |
246 | 158 | |
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(); | |
251 | 164 | |
252 | class px4p_state : public px4_state | |
253 | { | |
254 | public: | |
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); | |
262 | 166 | |
263 | DECLARE_DRIVER_INIT( px4p ); | |
167 | DECLARE_WRITE_LINE_MEMBER( sio_rx_w ); | |
168 | DECLARE_WRITE_LINE_MEMBER( sio_pin_w ); | |
264 | 169 | |
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 ); | |
266 | 174 | |
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; | |
271 | 176 | |
272 | protected: | |
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); | |
274 | 214 | 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); | |
275 | 226 | |
276 | private: | |
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); | |
279 | 231 | |
280 | offs_t m_ramdisk_address; | |
281 | UINT8 *m_ramdisk; | |
232 | private: | |
233 | DECLARE_WRITE_LINE_MEMBER( serial_rx_w ); | |
282 | 234 | }; |
283 | 235 | |
284 | 236 | |
r241749 | r241750 | |
358 | 310 | } |
359 | 311 | |
360 | 312 | // input capture register low command trigger |
361 | READ8_MEMBER( px4_state::icrlc_r ) | |
313 | READ8_MEMBER( px4_state::px4_icrlc_r ) | |
362 | 314 | { |
363 | 315 | if (VERBOSE) |
364 | logerror("%s: icrlc_r\n", machine().describe_context()); | |
316 | logerror("%s: px4_icrlc_r\n", machine().describe_context()); | |
365 | 317 | |
366 | 318 | // latch value |
367 | 319 | m_frc_latch = m_frc_value; |
r241749 | r241750 | |
370 | 322 | } |
371 | 323 | |
372 | 324 | // control register 1 |
373 | WRITE8_MEMBER( px4_state::ctrl1_w ) | |
325 | WRITE8_MEMBER( px4_state::px4_ctrl1_w ) | |
374 | 326 | { |
375 | 327 | const int rcv_rates[] = { 110, 150, 300, 600, 1200, 2400, 4800, 9600, 75, 1200, 19200, 38400, 200 }; |
376 | 328 | const int tra_rates[] = { 110, 150, 300, 600, 1200, 2400, 4800, 9600, 1200, 75, 19200, 38400, 200 }; |
377 | 329 | |
378 | 330 | 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); | |
380 | 332 | |
381 | 333 | // baudrate generator |
382 | 334 | int baud = data >> 4; |
r241749 | r241750 | |
394 | 346 | } |
395 | 347 | |
396 | 348 | // input capture register high command trigger |
397 | READ8_MEMBER( px4_state::icrhc_r ) | |
349 | READ8_MEMBER( px4_state::px4_icrhc_r ) | |
398 | 350 | { |
399 | 351 | if (VERBOSE) |
400 | logerror("%s: icrhc_r\n", machine().describe_context()); | |
352 | logerror("%s: px4_icrhc_r\n", machine().describe_context()); | |
401 | 353 | |
402 | 354 | return (m_frc_latch >> 8) & 0xff; |
403 | 355 | } |
404 | 356 | |
405 | 357 | // command register |
406 | WRITE8_MEMBER( px4_state::cmdr_w ) | |
358 | WRITE8_MEMBER( px4_state::px4_cmdr_w ) | |
407 | 359 | { |
408 | 360 | 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); | |
410 | 362 | |
411 | 363 | // clear overflow interrupt? |
412 | 364 | if (BIT(data, 2)) |
r241749 | r241750 | |
417 | 369 | } |
418 | 370 | |
419 | 371 | // input capture register low barcode trigger |
420 | READ8_MEMBER( px4_state::icrlb_r ) | |
372 | READ8_MEMBER( px4_state::px4_icrlb_r ) | |
421 | 373 | { |
422 | 374 | if (VERBOSE) |
423 | logerror("%s: icrlb_r\n", machine().describe_context()); | |
375 | logerror("%s: px4_icrlb_r\n", machine().describe_context()); | |
424 | 376 | |
425 | 377 | return m_icrb & 0xff; |
426 | 378 | } |
427 | 379 | |
428 | 380 | // control register 2 |
429 | WRITE8_MEMBER( px4_state::ctrl2_w ) | |
381 | WRITE8_MEMBER( px4_state::px4_ctrl2_w ) | |
430 | 382 | { |
431 | 383 | 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); | |
433 | 385 | |
434 | 386 | // bit 0, MIC, cassette output |
435 | 387 | m_ext_cas->output( BIT(data, 0) ? -1.0 : +1.0); |
r241749 | r241750 | |
448 | 400 | } |
449 | 401 | |
450 | 402 | // input capture register high barcode trigger |
451 | READ8_MEMBER( px4_state::icrhb_r ) | |
403 | READ8_MEMBER( px4_state::px4_icrhb_r ) | |
452 | 404 | { |
453 | 405 | if (VERBOSE) |
454 | logerror("%s: icrhb_r\n", machine().describe_context()); | |
406 | logerror("%s: px4_icrhb_r\n", machine().describe_context()); | |
455 | 407 | |
456 | 408 | // clear icf interrupt |
457 | 409 | m_isr &= ~INT2_ICF; |
r241749 | r241750 | |
461 | 413 | } |
462 | 414 | |
463 | 415 | // interrupt status register |
464 | READ8_MEMBER( px4_state::isr_r ) | |
416 | READ8_MEMBER( px4_state::px4_isr_r ) | |
465 | 417 | { |
466 | 418 | if (VERBOSE) |
467 | logerror("%s: isr_r\n", machine().describe_context()); | |
419 | logerror("%s: px4_isr_r\n", machine().describe_context()); | |
468 | 420 | |
469 | 421 | return m_isr; |
470 | 422 | } |
471 | 423 | |
472 | 424 | // interrupt enable register |
473 | WRITE8_MEMBER( px4_state::ier_w ) | |
425 | WRITE8_MEMBER( px4_state::px4_ier_w ) | |
474 | 426 | { |
475 | 427 | 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); | |
477 | 429 | |
478 | 430 | m_ier = data; |
479 | 431 | gapnit_interrupt(); |
480 | 432 | } |
481 | 433 | |
482 | 434 | // status register |
483 | READ8_MEMBER( px4_state::str_r ) | |
435 | READ8_MEMBER( px4_state::px4_str_r ) | |
484 | 436 | { |
485 | 437 | UINT8 data = 0; |
486 | 438 | |
487 | 439 | if (0) |
488 | logerror("%s: str_r\n", machine().describe_context()); | |
440 | logerror("%s: px4_str_r\n", machine().describe_context()); | |
489 | 441 | |
490 | 442 | data |= (m_ext_cas)->input() > 0 ? 1 : 0; |
491 | 443 | data |= 1 << 1; // BCRD, barcode reader input |
r241749 | r241750 | |
515 | 467 | } |
516 | 468 | |
517 | 469 | // bank register |
518 | WRITE8_MEMBER( px4_state::bankr_w ) | |
470 | WRITE8_MEMBER( px4_state::px4_bankr_w ) | |
519 | 471 | { |
520 | 472 | address_space &space_program = m_z80->space(AS_PROGRAM); |
521 | 473 | |
522 | 474 | 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); | |
524 | 476 | |
525 | 477 | m_bankr = data; |
526 | 478 | |
r241749 | r241750 | |
553 | 505 | } |
554 | 506 | |
555 | 507 | // serial io register |
556 | READ8_MEMBER( px4_state::sior_r ) | |
508 | READ8_MEMBER( px4_state::px4_sior_r ) | |
557 | 509 | { |
558 | 510 | 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); | |
560 | 512 | |
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 | ||
581 | 513 | return m_sior; |
582 | 514 | } |
583 | 515 | |
584 | 516 | // serial io register |
585 | WRITE8_MEMBER( px4_state::sior_w ) | |
517 | WRITE8_MEMBER( px4_state::px4_sior_w ) | |
586 | 518 | { |
587 | 519 | 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); | |
589 | 521 | |
590 | // writing clock? | |
591 | if (m_clock_state > 0) | |
522 | m_sior = data; | |
523 | ||
524 | switch (data) | |
592 | 525 | { |
593 | time_t time = m_time.time; | |
594 | struct tm *t = localtime(&time); | |
526 | case 0x01: | |
595 | 527 | |
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"); | |
619 | 530 | |
620 | // update | |
621 | m_time.set(mktime(t)); | |
531 | break; | |
622 | 532 | |
623 | // done? | |
624 | if (m_clock_state == 9) | |
625 | m_clock_state = 0; | |
626 | } | |
627 | else | |
628 | { | |
629 | m_sior = data; | |
533 | case 0x02: | |
630 | 534 | |
631 | switch (data) | |
535 | if (VERBOSE) | |
536 | logerror("7508 cmd: Read Status\n"); | |
537 | ||
538 | if (m_interrupt_status != 0) | |
632 | 539 | { |
633 | case 0x01: | |
634 | 540 | if (VERBOSE) |
635 | logerror("7508 | |
541 | logerror("> 7508 has interrupts pending: 0x%02x\n", m_interrupt_status); | |
636 | 542 | |
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 | } | |
638 | 557 | |
639 | case 0x02: | |
640 | if (VERBOSE) | |
641 | logerror("7508 cmd: Read Status\n"); | |
558 | break; | |
642 | 559 | |
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; | |
647 | 567 | |
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: | |
662 | 569 | |
663 | break; | |
570 | if (VERBOSE) | |
571 | logerror("7508 cmd: KB Interrupt OFF\n"); | |
664 | 572 | |
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; | |
672 | 575 | |
673 | case 0x06: | |
674 | if (VERBOSE) | |
675 | logerror("7508 cmd: KB Interrupt OFF\n"); | |
576 | case 0x16: | |
676 | 577 | |
677 | m_key_int_enabled = false; | |
678 | break; | |
578 | if (VERBOSE) | |
579 | logerror("7508 cmd: KB Interrupt ON\n"); | |
679 | 580 | |
680 | case 0x16: | |
681 | if (VERBOSE) | |
682 | logerror("7508 cmd: KB Interrupt ON\n"); | |
581 | m_key_int_enabled = true; | |
582 | break; | |
683 | 583 | |
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; | |
686 | 586 | |
687 | case 0x07: | |
688 | if (VERBOSE) | |
689 | logerror("7508 cmd: Clock Read\n"); | |
587 | case 0x08: | |
690 | 588 | |
691 | m_clock_state = 1; | |
692 | break; | |
589 | if (VERBOSE) | |
590 | logerror("7508 cmd: Power Switch Read\n"); | |
693 | 591 | |
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; | |
697 | 595 | |
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; | |
700 | 600 | |
701 | case 0x08: | |
702 | if (VERBOSE) | |
703 | logerror("7508 cmd: Power Switch Read\n"); | |
601 | case 0x0a: | |
704 | 602 | |
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; | |
708 | 607 | |
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; | |
713 | 612 | |
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: | |
719 | 614 | |
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"); | |
724 | 617 | |
725 | case 0x0d: | |
726 | if (VERBOSE) | |
727 | logerror("7508 cmd: 1 sec. Interrupt OFF\n"); | |
618 | m_one_sec_int_enabled = false; | |
619 | break; | |
728 | 620 | |
729 | m_one_sec_int_enabled = false; | |
730 | break; | |
621 | case 0x1d: | |
731 | 622 | |
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"); | |
735 | 625 | |
736 | m_one_sec_int_enabled = true; | |
737 | break; | |
626 | m_one_sec_int_enabled = true; | |
627 | break; | |
738 | 628 | |
739 | case 0x0e: | |
740 | if (VERBOSE) | |
741 | logerror("7508 cmd: KB Clear\n"); | |
629 | case 0x0e: | |
742 | 630 | |
743 | m_sior = 0xbf; | |
744 | break; | |
631 | if (VERBOSE) | |
632 | logerror("7508 cmd: KB Clear\n"); | |
745 | 633 | |
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; | |
748 | 638 | } |
749 | 639 | } |
750 | 640 | |
r241749 | r241750 | |
754 | 644 | //************************************************************************** |
755 | 645 | |
756 | 646 | // vram start address register |
757 | WRITE8_MEMBER( px4_state::vadr_w ) | |
647 | WRITE8_MEMBER( px4_state::px4_vadr_w ) | |
758 | 648 | { |
759 | 649 | 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); | |
761 | 651 | |
762 | 652 | m_vadr = data; |
763 | 653 | } |
764 | 654 | |
765 | 655 | // y offset register |
766 | WRITE8_MEMBER( px4_state::yoff_w ) | |
656 | WRITE8_MEMBER( px4_state::px4_yoff_w ) | |
767 | 657 | { |
768 | 658 | 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); | |
770 | 660 | |
771 | 661 | m_yoff = data; |
772 | 662 | } |
773 | 663 | |
774 | 664 | // frame register |
775 | WRITE8_MEMBER( px4_state::fr_w ) | |
665 | WRITE8_MEMBER( px4_state::px4_fr_w ) | |
776 | 666 | { |
777 | 667 | 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); | |
779 | 669 | } |
780 | 670 | |
781 | 671 | // speed-up register |
782 | WRITE8_MEMBER( px4_state::spur_w ) | |
672 | WRITE8_MEMBER( px4_state::px4_spur_w ) | |
783 | 673 | { |
784 | 674 | 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); | |
786 | 676 | } |
787 | 677 | |
788 | 678 | |
r241749 | r241750 | |
838 | 728 | if (ART_TX_ENABLED) |
839 | 729 | { |
840 | 730 | if (ART_BREAK) |
841 | txd_w(0); // transmit break | |
731 | { | |
732 | // transmit break | |
733 | txd_w(0); | |
734 | } | |
842 | 735 | else |
843 | txd_w(transmit_register_get_data_bit()); // transmit data | |
736 | { | |
737 | // transmit data | |
738 | txd_w(transmit_register_get_data_bit()); | |
739 | } | |
844 | 740 | } |
845 | 741 | else |
846 | txd_w(1); // transmit mark | |
742 | { | |
743 | // transmit mark | |
744 | txd_w(1); | |
745 | } | |
847 | 746 | } |
848 | 747 | |
849 | 748 | void px4_state::tra_complete() |
r241749 | r241750 | |
864 | 763 | void px4_state::rcv_callback() |
865 | 764 | { |
866 | 765 | 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 | } | |
868 | 770 | } |
869 | 771 | |
870 | 772 | void px4_state::rcv_complete() |
r241749 | r241750 | |
898 | 800 | } |
899 | 801 | |
900 | 802 | // cartridge interface |
901 | READ8_MEMBER( px4_state::ctgif_r ) | |
803 | READ8_MEMBER( px4_state::px4_ctgif_r ) | |
902 | 804 | { |
903 | 805 | 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); | |
905 | 807 | |
906 | 808 | return 0x00; |
907 | 809 | } |
908 | 810 | |
909 | 811 | // cartridge interface |
910 | WRITE8_MEMBER( px4_state::ctgif_w ) | |
812 | WRITE8_MEMBER( px4_state::px4_ctgif_w ) | |
911 | 813 | { |
912 | 814 | 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); | |
914 | 816 | } |
915 | 817 | |
916 | 818 | // art data input register |
917 | READ8_MEMBER( px4_state::artdir_r ) | |
819 | READ8_MEMBER( px4_state::px4_artdir_r ) | |
918 | 820 | { |
919 | 821 | 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); | |
921 | 823 | |
922 | 824 | // clear ready |
923 | 825 | m_artsr &= ~ART_RXRDY; |
r241749 | r241750 | |
930 | 832 | } |
931 | 833 | |
932 | 834 | // art data output register |
933 | WRITE8_MEMBER( px4_state::artdor_w ) | |
835 | WRITE8_MEMBER( px4_state::px4_artdor_w ) | |
934 | 836 | { |
935 | 837 | 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); | |
937 | 839 | |
938 | 840 | m_artdor = data; |
939 | 841 | |
r241749 | r241750 | |
951 | 853 | } |
952 | 854 | |
953 | 855 | // art status register |
954 | READ8_MEMBER( px4_state::artsr_r ) | |
856 | READ8_MEMBER( px4_state::px4_artsr_r ) | |
955 | 857 | { |
956 | 858 | 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); | |
958 | 860 | |
959 | 861 | return m_artsr; |
960 | 862 | } |
961 | 863 | |
962 | 864 | // art mode register |
963 | WRITE8_MEMBER( px4_state::artmr_w ) | |
865 | WRITE8_MEMBER( px4_state::px4_artmr_w ) | |
964 | 866 | { |
965 | 867 | int data_bit_count = BIT(data, 2) ? 8 : 7; |
966 | 868 | parity_t parity = BIT(data, 4) ? (BIT(data, 5) ? PARITY_EVEN : PARITY_ODD) : PARITY_NONE; |
r241749 | r241750 | |
972 | 874 | set_data_frame(1, data_bit_count, parity, stop_bits); |
973 | 875 | } |
974 | 876 | |
877 | WRITE_LINE_MEMBER( px4_state::write_centronics_busy ) | |
878 | { | |
879 | m_centronics_busy = state; | |
880 | } | |
881 | ||
882 | WRITE_LINE_MEMBER( px4_state::write_centronics_perror ) | |
883 | { | |
884 | m_centronics_perror = state; | |
885 | } | |
886 | ||
975 | 887 | // io status register |
976 | READ8_MEMBER( px4_state::iostr_r ) | |
888 | READ8_MEMBER( px4_state::px4_iostr_r ) | |
977 | 889 | { |
978 | 890 | UINT8 data = 0; |
979 | 891 | |
r241749 | r241750 | |
995 | 907 | data |= 0 << 7; // bit 7, caud - audio input from cartridge |
996 | 908 | |
997 | 909 | 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)); | |
999 | 911 | |
1000 | 912 | return data; |
1001 | 913 | } |
1002 | 914 | |
1003 | 915 | // art command register |
1004 | WRITE8_MEMBER( px4_state::artcr_w ) | |
916 | WRITE8_MEMBER( px4_state::px4_artcr_w ) | |
1005 | 917 | { |
1006 | 918 | 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); | |
1008 | 920 | |
1009 | 921 | m_artcr = data; |
1010 | 922 | |
r241749 | r241750 | |
1018 | 930 | } |
1019 | 931 | |
1020 | 932 | // switch register |
1021 | WRITE8_MEMBER( px4_state::swr_w ) | |
933 | WRITE8_MEMBER( px4_state::px4_swr_w ) | |
1022 | 934 | { |
1023 | 935 | if (VERBOSE) |
1024 | 936 | { |
r241749 | r241750 | |
1032 | 944 | } |
1033 | 945 | |
1034 | 946 | // io control register |
1035 | WRITE8_MEMBER( px4_state::ioctlr_w ) | |
947 | WRITE8_MEMBER( px4_state::px4_ioctlr_w ) | |
1036 | 948 | { |
1037 | 949 | 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); | |
1039 | 951 | |
1040 | 952 | m_centronics->write_strobe(!BIT(data, 0)); |
1041 | 953 | m_centronics->write_init(BIT(data, 1)); |
r241749 | r241750 | |
1067 | 979 | m_isr |= INT0_7508; |
1068 | 980 | gapnit_interrupt(); |
1069 | 981 | } |
1070 | ||
1071 | // update clock | |
1072 | m_time.set(m_time.time + 1); | |
1073 | 982 | } |
1074 | 983 | |
1075 | 984 | INPUT_CHANGED_MEMBER( px4_state::key_callback ) |
r241749 | r241750 | |
1116 | 1025 | // EXTERNAL RAM-DISK |
1117 | 1026 | //************************************************************************** |
1118 | 1027 | |
1119 | WRITE8_MEMBER( px4 | |
1028 | WRITE8_MEMBER( px4_state::px4_ramdisk_address_w ) | |
1120 | 1029 | { |
1121 | 1030 | switch (offset) |
1122 | 1031 | { |
r241749 | r241750 | |
1126 | 1035 | } |
1127 | 1036 | } |
1128 | 1037 | |
1129 | READ8_MEMBER( px4 | |
1038 | READ8_MEMBER( px4_state::px4_ramdisk_data_r ) | |
1130 | 1039 | { |
1131 | 1040 | UINT8 ret = 0xff; |
1132 | 1041 | |
r241749 | r241750 | |
1146 | 1055 | return ret; |
1147 | 1056 | } |
1148 | 1057 | |
1149 | WRITE8_MEMBER( px4 | |
1058 | WRITE8_MEMBER( px4_state::px4_ramdisk_data_w ) | |
1150 | 1059 | { |
1151 | 1060 | if (m_ramdisk_address < 0x20000) |
1152 | 1061 | m_ramdisk[m_ramdisk_address] = data; |
r241749 | r241750 | |
1154 | 1063 | m_ramdisk_address = (m_ramdisk_address & 0xffff00) | ((m_ramdisk_address & 0xff) + 1); |
1155 | 1064 | } |
1156 | 1065 | |
1157 | READ8_MEMBER( px4 | |
1066 | READ8_MEMBER( px4_state::px4_ramdisk_control_r ) | |
1158 | 1067 | { |
1159 | 1068 | // bit 7 determines the presence of a ram-disk |
1160 | 1069 | return 0x7f; |
r241749 | r241750 | |
1218 | 1127 | membank("bank2")->set_base(m_ram->pointer() + 0x8000); |
1219 | 1128 | } |
1220 | 1129 | |
1221 | DRIVER_INIT_MEMBER( px4 | |
1130 | DRIVER_INIT_MEMBER( px4_state, px4p ) | |
1222 | 1131 | { |
1223 | 1132 | DRIVER_INIT_CALL(px4); |
1224 | 1133 | |
r241749 | r241750 | |
1231 | 1140 | astring region_tag; |
1232 | 1141 | m_caps1_rom = memregion(region_tag.cpy(m_caps1->tag()).cat(GENERIC_ROM_REGION_TAG)); |
1233 | 1142 | 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); | |
1239 | 1143 | } |
1240 | 1144 | |
1241 | 1145 | void px4_state::machine_reset() |
1242 | 1146 | { |
1243 | m_artsr = ART_TXRDY | ART_TXEMPTY | |
1147 | m_artsr = ART_TXRDY | ART_TXEMPTY; | |
1244 | 1148 | receive_register_reset(); |
1245 | 1149 | transmit_register_reset(); |
1246 | 1150 | } |
1247 | 1151 | |
1248 | ||
1152 | MACHINE_START_MEMBER( px4_state, px4_ramdisk ) | |
1249 | 1153 | { |
1250 | 1154 | px4_state::machine_start(); |
1251 | m | |
1155 | machine().device<nvram_device>("nvram")->set_base(m_ramdisk, 0x20000); | |
1252 | 1156 | } |
1253 | 1157 | |
1254 | 1158 | |
r241749 | r241750 | |
1265 | 1169 | ADDRESS_MAP_UNMAP_HIGH |
1266 | 1170 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
1267 | 1171 | // 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) | |
1275 | 1179 | AM_RANGE(0x07, 0x07) AM_NOP |
1276 | 1180 | // 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) | |
1281 | 1185 | AM_RANGE(0x0c, 0x0f) AM_NOP |
1282 | 1186 | // 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) | |
1287 | 1191 | 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) | |
1290 | 1194 | AM_RANGE(0x1a, 0x1f) AM_NOP |
1291 | 1195 | ADDRESS_MAP_END |
1292 | 1196 | |
1293 | static ADDRESS_MAP_START( px4p_io, AS_IO, 8, px4 | |
1197 | static ADDRESS_MAP_START( px4p_io, AS_IO, 8, px4_state ) | |
1294 | 1198 | 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) | |
1298 | 1202 | ADDRESS_MAP_END |
1299 | 1203 | |
1300 | 1204 | |
r241749 | r241750 | |
1457 | 1361 | // PALETTE |
1458 | 1362 | //************************************************************************** |
1459 | 1363 | |
1460 | PALETTE_INIT_MEMBER( | |
1364 | PALETTE_INIT_MEMBER(px4_state, px4) | |
1461 | 1365 | { |
1462 | 1366 | palette.set_pen_color(0, rgb_t(138, 146, 148)); |
1463 | 1367 | palette.set_pen_color(1, rgb_t(92, 83, 88)); |
1464 | 1368 | } |
1465 | 1369 | |
1466 | PALETTE_INIT_MEMBER( | |
1370 | PALETTE_INIT_MEMBER(px4_state, px4p) | |
1467 | 1371 | { |
1468 | 1372 | palette.set_pen_color(0, rgb_t(149, 157, 130)); |
1469 | 1373 | palette.set_pen_color(1, rgb_t(92, 83, 88)); |
r241749 | r241750 | |
1504 | 1408 | // internal ram |
1505 | 1409 | MCFG_RAM_ADD(RAM_TAG) |
1506 | 1410 | MCFG_RAM_DEFAULT_SIZE("64k") |
1507 | MCFG_NVRAM_ADD_NO_FILL("nvram") | |
1508 | 1411 | |
1509 | 1412 | // 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)) | |
1513 | 1416 | |
1514 | 1417 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
1515 | 1418 | |
r241749 | r241750 | |
1537 | 1440 | |
1538 | 1441 | // software list |
1539 | 1442 | MCFG_SOFTWARE_LIST_ADD("cart_list", "px4_cart") |
1540 | MCFG_SOFTWARE_LIST_ADD("epson_cpm_list", "epson_cpm") | |
1541 | 1443 | MACHINE_CONFIG_END |
1542 | 1444 | |
1543 | static MACHINE_CONFIG_DERIVED | |
1445 | static MACHINE_CONFIG_DERIVED( px4p, px4 ) | |
1544 | 1446 | MCFG_CPU_MODIFY("maincpu") |
1545 | 1447 | MCFG_CPU_IO_MAP(px4p_io) |
1546 | 1448 | |
1547 | MCFG_NVRAM_ADD_0FILL("rdnvram") | |
1449 | MCFG_MACHINE_START_OVERRIDE(px4_state, px4_ramdisk) | |
1450 | MCFG_NVRAM_ADD_0FILL("nvram") | |
1548 | 1451 | |
1549 | 1452 | MCFG_PALETTE_MODIFY("palette") |
1550 | MCFG_PALETTE_INIT_OWNER(px4 | |
1453 | MCFG_PALETTE_INIT_OWNER(px4_state, px4p) | |
1551 | 1454 | |
1552 | 1455 | MCFG_GENERIC_CARTSLOT_ADD("ramdisk_socket", generic_plain_slot, "px4_cart") |
1553 | 1456 | MACHINE_CONFIG_END |
r241749 | r241750 | |
1561 | 1464 | |
1562 | 1465 | ROM_START( px4 ) |
1563 | 1466 | 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)) | |
1568 | 1468 | |
1569 | 1469 | ROM_REGION(0x1000, "slave", 0) |
1570 | 1470 | ROM_LOAD("upd7508.bin", 0x0000, 0x1000, NO_DUMP) |
r241749 | r241750 | |
1572 | 1472 | |
1573 | 1473 | ROM_START( px4p ) |
1574 | 1474 | 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)) | |
1579 | 1476 | |
1580 | 1477 | ROM_REGION(0x1000, "slave", 0) |
1581 | 1478 | ROM_LOAD("upd7508.bin", 0x0000, 0x1000, NO_DUMP) |
r241749 | r241750 | |
1586 | 1483 | // GAME DRIVERS |
1587 | 1484 | //************************************************************************** |
1588 | 1485 | |
1589 | // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS | |
1590 | COMP( 1985, px4, 0, 0, px4, px4_h450a, px4_state, px4, "Epson", "PX-4", 0 ) | |
1591 | COMP( 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 | |
1487 | COMP( 1985, px4, 0, 0, px4, px4_h450a, px4_state, px4, "Epson", "PX-4", 0 ) | |
1488 | COMP( 1985, px4p, px4, 0, px4p, px4_h450a, px4_state, px4p, "Epson", "PX-4+", 0 ) |
r241749 | r241750 | |
---|---|---|
801 | 801 | /* internal ram */ |
802 | 802 | MCFG_RAM_ADD(RAM_TAG) |
803 | 803 | MCFG_RAM_DEFAULT_SIZE("64K") |
804 | ||
805 | // software | |
806 | MCFG_SOFTWARE_LIST_ADD("epson_cpm_list", "epson_cpm") | |
807 | 804 | MACHINE_CONFIG_END |
808 | 805 | |
809 | 806 | /*************************************************************************** |
r241749 | r241750 | |
---|---|---|
178 | 178 | MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(CENTRONICS_TAG, centronics_device, write_strobe)) |
179 | 179 | MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE(MAINCPU_TAG, i80186_cpu_device, int3_w)) |
180 | 180 | |
181 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
181 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
182 | 182 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(VIA_TAG, via6522_device, write_ca1)) MCFG_DEVCB_INVERT |
183 | 183 | |
184 | 184 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
---|---|---|
496 | 496 | MCFG_UPD765A_ADD(UPD765_TAG, false, false) |
497 | 497 | MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(sage2_state, fdc_irq)) |
498 | 498 | |
499 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
499 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
500 | 500 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(sage2_state, write_centronics_ack)) |
501 | 501 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(sage2_state, write_centronics_busy)) |
502 | 502 | MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(sage2_state, write_centronics_perror)) |
r241749 | r241750 | |
---|---|---|
543 | 543 | MCFG_PALETTE_INIT_OWNER(samcoupe_state, samcoupe) |
544 | 544 | |
545 | 545 | /* devices */ |
546 | MCFG_CENTRONICS_ADD("lpt1", centronics_ | |
546 | MCFG_CENTRONICS_ADD("lpt1", centronics_printers, "printer") | |
547 | 547 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(samcoupe_state, write_lpt1_busy)) |
548 | 548 | |
549 | 549 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("lpt1_data_out", "lpt1") |
550 | 550 | |
551 | MCFG_CENTRONICS_ADD("lpt2", centronics_ | |
551 | MCFG_CENTRONICS_ADD("lpt2", centronics_printers, "printer") | |
552 | 552 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(samcoupe_state, write_lpt2_busy)) |
553 | 553 | |
554 | 554 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("lpt2_data_out", "lpt2") |
r241749 | r241750 | |
---|---|---|
855 | 855 | MCFG_UPD765A_ADD(UPD765_TAG, false, false) |
856 | 856 | MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", sf7000_floppies, "3ssdd", sf7000_state::floppy_formats) |
857 | 857 | |
858 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
858 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
859 | 859 | |
860 | 860 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
861 | 861 |
r241749 | r241750 | |
---|---|---|
88 | 88 | /* Driver */ |
89 | 89 | |
90 | 90 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT CONFIG COMPANY FULLNAME FLAGS */ |
91 | COMP( | |
91 | COMP( ????, sh4robot, 0, 0, sh4robot, sh4robot, driver_device, 0, "", "Robot", GAME_NOT_WORKING | GAME_NO_SOUND) |
r241749 | r241750 | |
---|---|---|
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 | ||
30 | class simon_state : public driver_device | |
31 | { | |
32 | public: | |
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 | ||
60 | READ8_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 | ||
75 | WRITE16_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 | ||
94 | WRITE16_MEMBER(simon_state::write_o) | |
95 | { | |
96 | // N/C | |
97 | } | |
98 | ||
99 | ||
100 | ||
101 | /*************************************************************************** | |
102 | ||
103 | Inputs | |
104 | ||
105 | ***************************************************************************/ | |
106 | ||
107 | static 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" ) | |
133 | INPUT_PORTS_END | |
134 | ||
135 | ||
136 | ||
137 | /*************************************************************************** | |
138 | ||
139 | Machine Config | |
140 | ||
141 | ***************************************************************************/ | |
142 | ||
143 | void simon_state::machine_start() | |
144 | { | |
145 | m_r = 0; | |
146 | save_item(NAME(m_r)); | |
147 | } | |
148 | ||
149 | ||
150 | static 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 | ||
160 | static 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) | |
177 | MACHINE_CONFIG_END | |
178 | ||
179 | ||
180 | ||
181 | /*************************************************************************** | |
182 | ||
183 | Game driver(s) | |
184 | ||
185 | ***************************************************************************/ | |
186 | ||
187 | ROM_START( simon ) | |
188 | ROM_REGION( 0x0800, "maincpu", ROMREGION_ERASE00 ) | |
189 | ROM_LOAD( "tms1000.u1", 0x0000, 0x0400, CRC(9961719d) SHA1(35dddb018a8a2b31f377ab49c1f0cb76951b81c0) ) | |
190 | ROM_END | |
191 | ||
192 | ||
193 | CONS( 1978, simon, 0, 0, simon, simon, driver_device, 0, "Milton Bradley", "Simon (Rev. A)", GAME_SUPPORTS_SAVE ) |
r241749 | r241750 | |
---|---|---|
426 | 426 | MCFG_AY31015_RX_CLOCK(4800.0) |
427 | 427 | |
428 | 428 | /* 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 ) | |
430 | 431 | |
431 | 432 | /* The use of the parallel port as a general purpose port is not emulated. |
432 | 433 | Currently the only use is to read the printer status in the Centronics CENDRV bios routine. */ |
r241749 | r241750 | |
---|---|---|
25 | 25 | 2014-10-11: Replaced above code with MESS-compliant code [Meeso Kim] |
26 | 26 | |
27 | 27 | ****************************************************************************/ |
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 | */ | |
126 | 28 | |
29 | ||
127 | 30 | #include "emu.h" |
128 | 31 | #include "cpu/z80/z80.h" |
129 | 32 | #include "machine/ram.h" |
r241749 | r241750 | |
---|---|---|
382 | 382 | MCFG_FLOPPY_DRIVE_ADD("upd765:0", specpls3_floppies, "3ssdd", spectrum_state::floppy_formats) |
383 | 383 | MCFG_FLOPPY_DRIVE_ADD("upd765:1", specpls3_floppies, "3ssdd", spectrum_state::floppy_formats) |
384 | 384 | |
385 | MCFG_SOFTWARE_LIST_ADD("flop_list", | |
385 | MCFG_SOFTWARE_LIST_ADD("flop_list","spectrum_flop") | |
386 | 386 | MACHINE_CONFIG_END |
387 | 387 | |
388 | 388 | /*************************************************************************** |
r241749 | r241750 | |
---|---|---|
708 | 708 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED) |
709 | 709 | MCFG_CASSETTE_INTERFACE("spectrum_cass") |
710 | 710 | |
711 | MCFG_SOFTWARE_LIST_ADD("cass_list", | |
711 | MCFG_SOFTWARE_LIST_ADD("cass_list","spectrum_cass") | |
712 | 712 | |
713 | 713 | /* cartridge */ |
714 | 714 | MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "spectrum_cart") |
715 | 715 | MCFG_GENERIC_EXTENSIONS("bin,rom") |
716 | 716 | MCFG_GENERIC_LOAD(spectrum_state, spectrum_cart) |
717 | 717 | |
718 | MCFG_SOFTWARE_LIST_ADD("cart_list", | |
718 | MCFG_SOFTWARE_LIST_ADD("cart_list","spectrum") | |
719 | 719 | MACHINE_CONFIG_END |
720 | 720 | |
721 | 721 | MACHINE_CONFIG_DERIVED( spectrum, spectrum_common ) |
r241749 | r241750 | |
---|---|---|
719 | 719 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
720 | 720 | |
721 | 721 | /* printer */ |
722 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
722 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
723 | 723 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit7)) |
724 | 724 | |
725 | 725 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
806 | 806 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
807 | 807 | |
808 | 808 | /* printer */ |
809 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
809 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
810 | 810 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit7)) |
811 | 811 | |
812 | 812 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
---|---|---|
165 | 165 | PORT_BIT (0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) |
166 | 166 | PORT_BIT (0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2) |
167 | 167 | 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)) | |
169 | 169 | PORT_BIT (0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC)) |
170 | 170 | PORT_BIT (0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Stop") PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(END)) |
171 | 171 | PORT_BIT (0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) |
r241749 | r241750 | |
295 | 295 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) |
296 | 296 | |
297 | 297 | /* printer */ |
298 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
298 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
299 | 299 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(svi318_state, write_centronics_busy)) |
300 | 300 | |
301 | 301 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
424 | 424 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) |
425 | 425 | |
426 | 426 | /* printer */ |
427 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
427 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
428 | 428 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(svi318_state, write_centronics_busy)) |
429 | 429 | |
430 | 430 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
---|---|---|
844 | 844 | MCFG_FLOPPY_DRIVE_ADD(I8272A_TAG ":0", tandy2k_floppies, "525qd", tandy2k_state::floppy_formats) |
845 | 845 | MCFG_FLOPPY_DRIVE_ADD(I8272A_TAG ":1", tandy2k_floppies, "525qd", tandy2k_state::floppy_formats) |
846 | 846 | |
847 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
847 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
848 | 848 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(tandy2k_state, write_centronics_ack)) |
849 | 849 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(tandy2k_state, write_centronics_busy)) |
850 | 850 | MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(tandy2k_state, write_centronics_perror)) |
r241749 | r241750 | |
---|---|---|
1451 | 1451 | MCFG_DEVICE_MODIFY("mc6846") |
1452 | 1452 | MCFG_MC6846_OUT_PORT_CB(WRITE8(thomson_state, to9_timer_port_out)) |
1453 | 1453 | |
1454 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
1454 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
1455 | 1455 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(thomson_state, write_centronics_busy)) |
1456 | 1456 | |
1457 | 1457 | /* internal ram */ |
r241749 | r241750 | |
1670 | 1670 | MCFG_PIA_CB2_HANDLER(NULL) |
1671 | 1671 | MCFG_PIA_IRQA_HANDLER(NULL) |
1672 | 1672 | |
1673 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
1673 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
1674 | 1674 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(thomson_state, write_centronics_busy)) |
1675 | 1675 | |
1676 | 1676 | MCFG_DEVICE_MODIFY("mc6846") |
r241749 | r241750 | |
1826 | 1826 | MCFG_PIA_IRQA_HANDLER(NULL) |
1827 | 1827 | MCFG_PIA_IRQB_HANDLER(WRITELINE(thomson_state, thom_firq_1)) |
1828 | 1828 | |
1829 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
1829 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
1830 | 1830 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(thomson_state, write_centronics_busy)) |
1831 | 1831 | |
1832 | 1832 | MCFG_DEVICE_MODIFY("mc6846") |
r241749 | r241750 | |
2176 | 2176 | MCFG_PIA_WRITEPA_HANDLER(WRITE8(thomson_state, mo6_game_porta_out)) |
2177 | 2177 | MCFG_PIA_CB2_HANDLER(WRITELINE(thomson_state, mo6_game_cb2_out)) |
2178 | 2178 | |
2179 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
2179 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
2180 | 2180 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(thomson_state, write_centronics_busy)) |
2181 | 2181 | |
2182 | 2182 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
2416 | 2416 | MCFG_DEVICE_MODIFY(THOM_PIA_GAME) |
2417 | 2417 | MCFG_PIA_WRITEPA_HANDLER(WRITE8(thomson_state, mo6_game_porta_out)) |
2418 | 2418 | |
2419 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
2419 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
2420 | 2420 | MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in") |
2421 | 2421 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(thomson_state, write_centronics_busy)) |
2422 | 2422 |
r241749 | r241750 | |
---|---|---|
686 | 686 | MCFG_RS232_PORT_ADD(RS232_B_TAG, default_rs232_devices, NULL) |
687 | 687 | MCFG_RS232_RXD_HANDLER(DEVWRITELINE(Z80DART_TAG, z80dart_device, rxb_w)) |
688 | 688 | |
689 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
689 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
690 | 690 | MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in") |
691 | 691 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(tiki100_state, write_centronics_ack)) |
692 | 692 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(tiki100_state, write_centronics_busy)) |
r241749 | r241750 | |
---|---|---|
267 | 267 | MCFG_FRAGMENT_ADD(tmc600_video) |
268 | 268 | |
269 | 269 | /* devices */ |
270 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
270 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
271 | 271 | |
272 | 272 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) |
273 | 273 |
r241749 | r241750 | |
---|---|---|
601 | 601 | |
602 | 602 | MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(trs80_floppy_interface) |
603 | 603 | |
604 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
604 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
605 | 605 | MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit7)) |
606 | 606 | MCFG_CENTRONICS_PERROR_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit6)) |
607 | 607 | MCFG_CENTRONICS_SELECT_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit5)) |
r241749 | r241750 | |
---|---|---|
756 | 756 | MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_8MHz/2, 0, 0, 0, 0) |
757 | 757 | MCFG_Z80DART_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) |
758 | 758 | |
759 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
759 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
760 | 760 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(Z80PIO_TAG, z80pio_device, strobe_b)) |
761 | 761 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(trs80m2_state, write_centronics_busy)) |
762 | 762 | MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(trs80m2_state, write_centronics_fault)) |
r241749 | r241750 | |
848 | 848 | |
849 | 849 | MCFG_PIC8259_ADD(AM9519A_TAG, INPUTLINE(M68000_TAG, M68K_IRQ_5), VCC, NULL ) |
850 | 850 | |
851 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
851 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
852 | 852 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(Z80PIO_TAG, z80pio_device, strobe_b)) |
853 | 853 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(trs80m2_state, write_centronics_busy)) |
854 | 854 | MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(trs80m2_state, write_centronics_fault)) |
r241749 | r241750 | |
---|---|---|
720 | 720 | MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette") |
721 | 721 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
722 | 722 | |
723 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
723 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
724 | 724 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(tutor_state, write_centronics_busy)) |
725 | 725 | |
726 | 726 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
---|---|---|
788 | 788 | MCFG_TVC_SOUND_SNDINT_CALLBACK(WRITELINE(tvc_state, int_ff_set)) |
789 | 789 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) |
790 | 790 | |
791 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
791 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
792 | 792 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(tvc_state, centronics_ack)) |
793 | 793 | |
794 | 794 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
r241749 | r241750 | |
---|---|---|
1129 | 1129 | MCFG_SOFTWARE_LIST_ADD("hdd_list", "v1050_hdd") |
1130 | 1130 | |
1131 | 1131 | // printer |
1132 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
1132 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
1133 | 1133 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(v1050_state, write_centronics_busy)) |
1134 | 1134 | MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(v1050_state, write_centronics_perror)) |
1135 | 1135 |
r241749 | r241750 | |
---|---|---|
11 | 11 | |
12 | 12 | /* |
13 | 13 | |
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 | ||
14 | 44 | TODO: |
15 | 45 | |
16 | 46 | - floppy 8048 |
r241749 | r241750 | |
29 | 59 | |
30 | 60 | |
31 | 61 | //************************************************************************** |
62 | // READ/WRITE HANDLERS | |
63 | //************************************************************************** | |
64 | ||
65 | //------------------------------------------------- | |
66 | // floppy_p1_r - | |
67 | //------------------------------------------------- | |
68 | ||
69 | READ8_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 | ||
94 | READ8_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 | ||
124 | WRITE8_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 | ||
172 | READ8_MEMBER( victor9k_state::tach0_r ) | |
173 | { | |
174 | return m_tach0; | |
175 | } | |
176 | ||
177 | ||
178 | //------------------------------------------------- | |
179 | // tach1_r - | |
180 | //------------------------------------------------- | |
181 | ||
182 | READ8_MEMBER( victor9k_state::tach1_r ) | |
183 | { | |
184 | return m_tach1; | |
185 | } | |
186 | ||
187 | ||
188 | //------------------------------------------------- | |
189 | // da_w - | |
190 | //------------------------------------------------- | |
191 | ||
192 | WRITE8_MEMBER( victor9k_state::da_w ) | |
193 | { | |
194 | m_da = data; | |
195 | } | |
196 | ||
197 | ||
198 | ||
199 | //************************************************************************** | |
32 | 200 | // ADDRESS MAPS |
33 | 201 | //************************************************************************** |
34 | 202 | |
r241749 | r241750 | |
38 | 206 | |
39 | 207 | static ADDRESS_MAP_START( victor9k_mem, AS_PROGRAM, 8, victor9k_state ) |
40 | 208 | // AM_RANGE(0x00000, 0xdffff) AM_RAM |
41 | AM_RANGE(0x20000, 0xdffff) AM_NOP | |
42 | 209 | AM_RANGE(0xe0000, 0xe0001) AM_DEVREADWRITE(I8259A_TAG, pic8259_device, read, write) |
43 | 210 | AM_RANGE(0xe0020, 0xe0023) AM_DEVREADWRITE(I8253_TAG, pit8253_device, read, write) |
44 | 211 | 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) | |
54 | 221 | AM_RANGE(0xf0000, 0xf0fff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("video_ram") |
55 | 222 | AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION(I8088_TAG, 0) |
56 | 223 | ADDRESS_MAP_END |
57 | 224 | |
58 | 225 | |
226 | //------------------------------------------------- | |
227 | // ADDRESS_MAP( floppy_io ) | |
228 | //------------------------------------------------- | |
59 | 229 | |
230 | static 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) | |
236 | ADDRESS_MAP_END | |
237 | ||
238 | ||
239 | ||
60 | 240 | //************************************************************************** |
61 | 241 | // INPUT PORTS |
62 | 242 | //************************************************************************** |
r241749 | r241750 | |
161 | 341 | { |
162 | 342 | m_ssda_irq = state; |
163 | 343 | |
164 | m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_ | |
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); | |
165 | 345 | } |
166 | 346 | |
167 | 347 | |
r241749 | r241750 | |
233 | 413 | { |
234 | 414 | m_via1_irq = state; |
235 | 415 | |
236 | m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_ | |
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); | |
237 | 417 | } |
238 | 418 | |
239 | 419 | WRITE8_MEMBER( victor9k_state::via2_pa_w ) |
r241749 | r241750 | |
300 | 480 | { |
301 | 481 | m_via2_irq = state; |
302 | 482 | |
303 | m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_ | |
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); | |
304 | 484 | } |
305 | 485 | |
306 | 486 | |
r241749 | r241750 | |
340 | 520 | { |
341 | 521 | m_via3_irq = state; |
342 | 522 | |
343 | m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_ | |
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); | |
344 | 524 | } |
345 | 525 | |
346 | 526 | |
527 | WRITE8_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 | ||
548 | WRITE8_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 | ||
569 | WRITE_LINE_MEMBER( victor9k_state::mode_w ) | |
570 | { | |
571 | } | |
572 | ||
573 | WRITE_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 | ||
596 | WRITE8_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 | ||
614 | WRITE_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 | ||
622 | READ8_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 | ||
656 | WRITE8_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 | ||
686 | READ8_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 | ||
723 | WRITE8_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 | ||
751 | WRITE_LINE_MEMBER( victor9k_state::drw_w ) | |
752 | { | |
753 | } | |
754 | ||
755 | WRITE_LINE_MEMBER( victor9k_state::erase_w ) | |
756 | { | |
757 | } | |
758 | ||
759 | WRITE_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 | ||
347 | 767 | //------------------------------------------------- |
348 | 768 | // VICTOR9K_KEYBOARD_INTERFACE( kb_intf ) |
349 | 769 | //------------------------------------------------- |
350 | 770 | |
351 | 771 | WRITE_LINE_MEMBER( victor9k_state::kbrdy_w ) |
352 | 772 | { |
353 | //logerror("KBRDY %u\n", state); | |
354 | 773 | m_via2->write_cb1(state); |
355 | 774 | |
356 | 775 | m_pic->ir6_w(state ? CLEAR_LINE : ASSERT_LINE); |
r241749 | r241750 | |
358 | 777 | |
359 | 778 | WRITE_LINE_MEMBER( victor9k_state::kbdata_w ) |
360 | 779 | { |
361 | //logerror("KBDATA %u\n", state); | |
362 | 780 | m_via2->write_cb2(state); |
363 | 781 | m_via2->write_pa6(state); |
364 | 782 | } |
365 | 783 | |
784 | //------------------------------------------------- | |
785 | // SLOT_INTERFACE( victor9k_floppies ) | |
786 | //------------------------------------------------- | |
366 | 787 | |
367 | ||
788 | void victor9k_state::ready0_cb(floppy_image_device *device, int state) | |
368 | 789 | { |
369 | m_ | |
790 | m_rdy0 = state; | |
370 | 791 | |
371 | m_ | |
792 | m_via5->write_ca2(m_rdy0); | |
372 | 793 | } |
373 | 794 | |
795 | int victor9k_state::load0_cb(floppy_image_device *device) | |
796 | { | |
797 | m_ds0 = 0; | |
374 | 798 | |
799 | m_via4->write_ca1(m_ds0); | |
800 | ||
801 | return IMAGE_INIT_PASS; | |
802 | } | |
803 | ||
804 | void victor9k_state::unload0_cb(floppy_image_device *device) | |
805 | { | |
806 | m_ds0 = 1; | |
807 | ||
808 | m_via4->write_ca1(m_ds0); | |
809 | } | |
810 | ||
811 | void 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 | ||
818 | int 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 | ||
827 | void victor9k_state::unload1_cb(floppy_image_device *device) | |
828 | { | |
829 | m_ds1 = 1; | |
830 | ||
831 | m_via4->write_cb1(m_ds1); | |
832 | } | |
833 | ||
834 | static SLOT_INTERFACE_START( victor9k_floppies ) | |
835 | SLOT_INTERFACE( "525qd", FLOPPY_525_QD ) | |
836 | SLOT_INTERFACE_END | |
837 | ||
838 | ||
375 | 839 | //************************************************************************** |
376 | 840 | // MACHINE INITIALIZATION |
377 | 841 | //************************************************************************** |
378 | 842 | |
843 | //------------------------------------------------- | |
844 | // MACHINE_START( victor9k ) | |
845 | //------------------------------------------------- | |
846 | ||
379 | 847 | void victor9k_state::machine_start() |
380 | 848 | { |
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)); | |
389 | 856 | |
390 | 857 | // memory banking |
391 | 858 | address_space &program = m_maincpu->space(AS_PROGRAM); |
392 | 859 | program.install_ram(0x00000, m_ram->size() - 1, m_ram->pointer()); |
393 | } | |
394 | 860 | |
395 | void 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); | |
405 | 863 | } |
406 | 864 | |
407 | 865 | |
866 | ||
408 | 867 | //************************************************************************** |
409 | 868 | // MACHINE CONFIGURATION |
410 | 869 | //************************************************************************** |
r241749 | r241750 | |
419 | 878 | MCFG_CPU_PROGRAM_MAP(victor9k_mem) |
420 | 879 | MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE(I8259A_TAG, pic8259_device, inta_cb) |
421 | 880 | |
881 | MCFG_CPU_ADD(I8048_TAG, I8048, XTAL_30MHz/6) | |
882 | MCFG_CPU_IO_MAP(floppy_io) | |
883 | ||
422 | 884 | // video hardware |
423 | 885 | MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) |
424 | 886 | MCFG_SCREEN_REFRESH_RATE(50) |
r241749 | r241750 | |
490 | 952 | MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(victor9k_state, via3_pb_w)) |
491 | 953 | MCFG_VIA6522_IRQ_HANDLER(WRITELINE(victor9k_state, via3_irq_w)) |
492 | 954 | |
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 | ||
493 | 976 | MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL) |
494 | 977 | MCFG_RS232_RXD_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, rxa_w)) |
495 | 978 | MCFG_RS232_DCD_HANDLER(DEVWRITELINE(UPD7201_TAG, z80dart_device, dcda_w)) |
r241749 | r241750 | |
508 | 991 | MCFG_VICTOR9K_KBRDY_HANDLER(WRITELINE(victor9k_state, kbrdy_w)) |
509 | 992 | MCFG_VICTOR9K_KBDATA_HANDLER(WRITELINE(victor9k_state, kbdata_w)) |
510 | 993 | |
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 | ||
516 | 994 | // internal ram |
517 | 995 | MCFG_RAM_ADD(RAM_TAG) |
518 | 996 | MCFG_RAM_DEFAULT_SIZE("128K") |
r241749 | r241750 | |
541 | 1019 | ROM_SYSTEM_BIOS( 1, "univ", "Universal" ) |
542 | 1020 | ROMX_LOAD( "v9000 univ. fe f3f7 13db.7j", 0x0000, 0x1000, CRC(25c7a59f) SHA1(8784e9aa7eb9439f81e18b8e223c94714e033911), ROM_BIOS(2) ) |
543 | 1021 | 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) ) | |
544 | 1028 | ROM_END |
545 | 1029 | |
546 | 1030 |
r241749 | r241750 | |
---|---|---|
1127 | 1127 | MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", wangpc_floppies, "525dd", wangpc_state::floppy_formats) |
1128 | 1128 | MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", wangpc_floppies, "525dd", wangpc_state::floppy_formats) |
1129 | 1129 | |
1130 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
1130 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
1131 | 1131 | MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in") |
1132 | 1132 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(wangpc_state, write_centronics_ack)) |
1133 | 1133 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(wangpc_state, write_centronics_busy)) |
r241749 | r241750 | |
---|---|---|
35 | 35 | #include "wswan.lh" |
36 | 36 | |
37 | 37 | static ADDRESS_MAP_START (wswan_mem, AS_PROGRAM, 8, wswan_state) |
38 | AM_RANGE(0x00000, 0x03fff) AM_ | |
38 | AM_RANGE(0x00000, 0x03fff) AM_RAM // 16kb RAM / 4 colour tiles | |
39 | 39 | AM_RANGE(0x04000, 0x0ffff) AM_NOP // nothing |
40 | 40 | //AM_RANGE(0x10000, 0xeffff) // cart range, setup at machine_start |
41 | 41 | AM_RANGE(0xf0000, 0xfffff) AM_READ(bios_r) |
42 | 42 | ADDRESS_MAP_END |
43 | 43 | |
44 | 44 | static ADDRESS_MAP_START (wscolor_mem, AS_PROGRAM, 8, wswan_state) |
45 | AM_RANGE(0x00000, 0x0ffff) AM_ | |
45 | AM_RANGE(0x00000, 0x0ffff) AM_RAM // 16kb RAM / 4 colour tiles, 16 colour tiles + palettes | |
46 | 46 | //AM_RANGE(0x10000, 0xeffff) // cart range, setup at machine_start |
47 | 47 | AM_RANGE(0xf0000, 0xfffff) AM_READ(bios_r) |
48 | 48 | ADDRESS_MAP_END |
r241749 | r241750 | |
83 | 83 | } |
84 | 84 | } |
85 | 85 | |
86 | PALETTE_INIT_MEMBER(wswan_state, | |
86 | PALETTE_INIT_MEMBER(wswan_state,wscolor) | |
87 | 87 | { |
88 | 88 | for (int i = 0; i < 4096; i++) |
89 | 89 | { |
r241749 | r241750 | |
95 | 95 | } |
96 | 96 | |
97 | 97 | static 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) | |
101 | 101 | SLOT_INTERFACE_END |
102 | 102 | |
103 | 103 | static MACHINE_CONFIG_START( wswan, wswan_state ) |
r241749 | r241750 | |
106 | 106 | MCFG_CPU_PROGRAM_MAP(wswan_mem) |
107 | 107 | MCFG_CPU_IO_MAP(wswan_io) |
108 | 108 | |
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 | ||
114 | 109 | MCFG_SCREEN_ADD("screen", LCD) |
115 | 110 | MCFG_SCREEN_REFRESH_RATE(75) |
116 | 111 | 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 ) | |
119 | 114 | MCFG_SCREEN_VISIBLE_AREA(0*8, WSWAN_X_PIXELS - 1, 0, WSWAN_Y_PIXELS - 1) |
120 | 115 | MCFG_SCREEN_PALETTE("palette") |
121 | 116 | |
r241749 | r241750 | |
146 | 141 | static MACHINE_CONFIG_DERIVED( wscolor, wswan ) |
147 | 142 | MCFG_CPU_MODIFY("maincpu") |
148 | 143 | MCFG_CPU_PROGRAM_MAP(wscolor_mem) |
149 | MCFG_MACHINE_START_OVERRIDE(wswan_state, wscolor) | |
144 | MCFG_MACHINE_START_OVERRIDE(wswan_state, wscolor ) | |
150 | 145 | |
151 | MCFG_DEVICE_MODIFY("vdp") | |
152 | MCFG_WSWAN_VIDEO_TYPE(VDP_TYPE_WSC) | |
153 | ||
154 | 146 | MCFG_PALETTE_MODIFY("palette") |
155 | 147 | MCFG_PALETTE_ENTRIES(4096) |
156 | MCFG_PALETTE_INIT_OWNER(wswan_state, wscolor) | |
148 | MCFG_PALETTE_INIT_OWNER(wswan_state, wscolor ) | |
157 | 149 | |
158 | 150 | /* software lists */ |
159 | 151 | MCFG_DEVICE_REMOVE("cart_list") |
r241749 | r241750 | |
---|---|---|
1513 | 1513 | MCFG_GENERIC_LOAD(x07_state, x07_card) |
1514 | 1514 | |
1515 | 1515 | /* cassette */ |
1516 | MCFG_CASSETTE_ADD("cassette") | |
1516 | MCFG_CASSETTE_ADD( "cassette" ) | |
1517 | 1517 | MCFG_CASSETTE_FORMATS(x07_cassette_formats) |
1518 | 1518 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED) |
1519 | 1519 | MCFG_CASSETTE_INTERFACE("x07_cass") |
1520 | 1520 | |
1521 | 1521 | /* Software lists */ |
1522 | 1522 | MCFG_SOFTWARE_LIST_ADD("card_list", "x07_card") |
1523 | MCFG_SOFTWARE_LIST_ADD("cass_list", "x07_cass") | |
1524 | 1523 | MACHINE_CONFIG_END |
1525 | 1524 | |
1526 | 1525 | /* ROM definition */ |
r241749 | r241750 | |
---|---|---|
25 | 25 | - Xerox 16/8 |
26 | 26 | - Emerald Microware X120 board |
27 | 27 | - type in Monitor v1.0 from manual |
28 | - ASCII keyboard | |
29 | - low-profile keyboard | |
28 | - proper keyboard emulation (MCU?) | |
30 | 29 | |
31 | 30 | http://users.telenet.be/lust/Xerox820/index.htm |
32 | 31 | http://www.classiccmp.org/dunfield/img41867/system.htm |
r241749 | r241750 | |
39 | 38 | |
40 | 39 | |
41 | 40 | #include "includes/xerox820.h" |
41 | #include "bus/rs232/rs232.h" | |
42 | 42 | |
43 | #define KEYBOARD_TAG "keyboard" | |
44 | ||
43 | 45 | /* Read/Write Handlers */ |
44 | 46 | |
45 | 47 | void xerox820_state::bankswitch(int bank) |
r241749 | r241750 | |
69 | 71 | if (bank) |
70 | 72 | { |
71 | 73 | /* 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); | |
74 | 76 | program.install_ram(0x3000, 0x3fff, m_video_ram); |
75 | 77 | program.unmap_readwrite(0x4000, 0xbfff); |
76 | 78 | } |
r241749 | r241750 | |
317 | 319 | |
318 | 320 | */ |
319 | 321 | |
320 | return m_k | |
322 | return m_keydata; | |
321 | 323 | }; |
322 | 324 | |
323 | 325 | WRITE8_MEMBER( xerox820ii_state::rdpio_pb_w ) |
r241749 | r241750 | |
404 | 406 | m_sio->txca_w(state); |
405 | 407 | } |
406 | 408 | |
409 | WRITE8_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 | ||
407 | 418 | /* Video */ |
408 | 419 | |
409 | 420 | UINT32 xerox820_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) |
r241749 | r241750 | |
458 | 469 | void xerox820_state::machine_start() |
459 | 470 | { |
460 | 471 | // state saving |
472 | save_item(NAME(m_keydata)); | |
461 | 473 | save_item(NAME(m_scroll)); |
462 | 474 | save_item(NAME(m_ncset2)); |
463 | 475 | save_item(NAME(m_vatt)); |
r241749 | r241750 | |
614 | 626 | MCFG_COM8116_FR_HANDLER(WRITELINE(xerox820_state, fr_w)) |
615 | 627 | MCFG_COM8116_FT_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxtxcb_w)) |
616 | 628 | |
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)) | |
619 | 631 | |
620 | 632 | /* internal ram */ |
621 | 633 | MCFG_RAM_ADD(RAM_TAG) |
r241749 | r241750 | |
701 | 713 | MCFG_COM8116_FR_HANDLER(WRITELINE(xerox820_state, fr_w)) |
702 | 714 | MCFG_COM8116_FT_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxtxcb_w)) |
703 | 715 | |
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)) | |
706 | 718 | |
707 | 719 | // SASI bus |
708 | 720 | MCFG_DEVICE_ADD(SASIBUS_TAG, SCSI_PORT, 0) |
r241749 | r241750 | |
746 | 758 | |
747 | 759 | ROM_START( bigboard ) |
748 | 760 | 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)) | |
750 | 762 | |
751 | 763 | ROM_REGION( 0x800, "chargen", 0 ) |
752 | 764 | ROM_LOAD( "bigboard.u73", 0x0000, 0x0800, CRC(10bf0d81) SHA1(7ec73670a4d9d6421a5d6a4c4edc8b7c87923f6c) ) |
r241749 | r241750 | |
772 | 784 | |
773 | 785 | ROM_REGION( 0x800, "chargen", 0 ) |
774 | 786 | 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 ) | |
775 | 790 | ROM_END |
776 | 791 | |
777 | 792 | ROM_START( x820ii ) |
778 | ROM_REGION( 0x | |
793 | ROM_REGION( 0x1800, Z80_TAG, 0 ) | |
779 | 794 | 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) ) | |
807 | 799 | |
808 | 800 | ROM_REGION( 0x1000, "chargen", 0 ) |
809 | 801 | ROM_LOAD( "x820ii.u57", 0x0000, 0x0800, CRC(1a50f600) SHA1(df4470c80611c14fa7ea8591f741fbbecdfe4fd9) ) |
810 | 802 | 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) ) | |
811 | 806 | ROM_END |
812 | 807 | |
813 | 808 | ROM_START( x168 ) |
814 | ROM_REGION( 0x | |
809 | ROM_REGION( 0x1800, Z80_TAG, 0 ) | |
815 | 810 | ROM_DEFAULT_BIOS( "v404" ) |
816 | ROM_SYSTEM_BIOS( 0, "v404", "Balcones Operating System v4.04" ) | |
811 | ROM_SYSTEM_BIOS( 0, "v404", "Balcones Operating System v4.04" ) | |
817 | 812 | ROMX_LOAD( "537p3652.u33", 0x0000, 0x0800, CRC(7807cfbb) SHA1(bd3cc5cc5c59c84a50747aae5c17eb4617b0dbc3), ROM_BIOS(1) ) |
818 | 813 | ROMX_LOAD( "537p3653.u34", 0x0800, 0x0800, CRC(a9c6c0c3) SHA1(c2da9d1bf0da96e6b8bfa722783e411d2fe6deb9), ROM_BIOS(1) ) |
819 | 814 | 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 | |
826 | 815 | |
827 | 816 | ROM_REGION( 0x1000, I8086_TAG, 0 ) |
828 | 817 | ROM_LOAD( "8086.u33", 0x0000, 0x1000, CRC(ee49e3dc) SHA1(a5f20c74fc53f9d695d8894534ab69a39e2c38d8) ) |
r241749 | r241750 | |
830 | 819 | ROM_REGION( 0x1000, "chargen", 0 ) |
831 | 820 | ROM_LOAD( "x820ii.u57", 0x0000, 0x0800, CRC(1a50f600) SHA1(df4470c80611c14fa7ea8591f741fbbecdfe4fd9) ) |
832 | 821 | 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) ) | |
833 | 825 | ROM_END |
834 | 826 | |
835 | 827 | ROM_START( mk83 ) |
836 | 828 | 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)) | |
839 | 830 | 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)) | |
841 | 832 | ROM_END |
842 | 833 | |
843 | 834 | /* System Drivers */ |
844 | 835 | |
845 | 836 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ |
846 | COMP( 1980, bigboard, 0, 0, bigboard, xerox820, driver_device, 0, "Digital Research Computers", "Big Board", 0 ) | |
847 | COMP( 1981, x820, bigboard, 0, xerox820, xerox820, driver_device, 0, "Xerox", "Xerox 820", GAME_NO_SOUND_HW ) | |
848 | COMP( 1982, mk82, bigboard, 0, bigboard, xerox820, driver_device, 0, "Scomar", "MK-82", 0 ) | |
849 | COMP( 1983, x820ii, 0, 0, xerox820ii, xerox820, driver_device, 0, "Xerox", "Xerox 820-II", GAME_NOT_WORKING ) | |
850 | COMP( 1983, x168, x820ii, 0, xerox168, xerox820, driver_device, 0, "Xerox", "Xerox 16/8", GAME_NOT_WORKING ) | |
851 | COMP( 1983, mk83, x820ii, 0, mk83, xerox820, driver_device, 0, "Scomar", "MK-83", GAME_NOT_WORKING | GAME_NO_SOUND_HW ) | |
837 | COMP( 1980, bigboard, 0, 0, bigboard, xerox820, driver_device, 0, "Digital Research Computers", "Big Board", GAME_IMPERFECT_KEYBOARD ) | |
838 | COMP( 1981, x820, bigboard, 0, xerox820, xerox820, driver_device, 0, "Xerox", "Xerox 820", GAME_IMPERFECT_KEYBOARD | GAME_NO_SOUND_HW ) | |
839 | COMP( 1982, mk82, bigboard, 0, bigboard, xerox820, driver_device, 0, "Scomar", "MK-82", GAME_IMPERFECT_KEYBOARD ) | |
840 | COMP( 1983, x820ii, 0, 0, xerox820ii, xerox820, driver_device, 0, "Xerox", "Xerox 820-II", GAME_NOT_WORKING | GAME_IMPERFECT_KEYBOARD ) | |
841 | COMP( 1983, x168, x820ii, 0, xerox168, xerox820, driver_device, 0, "Xerox", "Xerox 16/8", GAME_NOT_WORKING | GAME_IMPERFECT_KEYBOARD ) | |
842 | COMP( 1983, mk83, x820ii, 0, mk83, xerox820, driver_device, 0, "Scomar", "MK-83", GAME_NOT_WORKING | GAME_IMPERFECT_KEYBOARD | GAME_NO_SOUND_HW ) |
r241749 | r241750 | |
---|---|---|
558 | 558 | MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":2", xor100_floppies, NULL, floppy_image_device::default_floppy_formats) |
559 | 559 | MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":3", xor100_floppies, NULL, floppy_image_device::default_floppy_formats) |
560 | 560 | |
561 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_ | |
561 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") | |
562 | 562 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(I8255A_TAG, i8255_device, pc4_w)) |
563 | 563 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(xor100_state, write_centronics_busy)) |
564 | 564 | MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(xor100_state, write_centronics_select)) |
r241749 | r241750 | |
---|---|---|
22 | 22 | #include "bus/cpc/cpc_rs232.h" |
23 | 23 | #include "bus/cpc/symbfac2.h" |
24 | 24 | #include "bus/cpc/amdrum.h" |
25 | #include "bus/cpc/playcity.h" | |
26 | 25 | #include "machine/ram.h" |
27 | 26 | #include "imagedev/cassette.h" |
28 | 27 | #include "bus/centronics/ctronics.h" |
r241749 | r241750 | |
---|---|---|
17 | 17 | #include "machine/ins8250.h" |
18 | 18 | #include "machine/mc146818.h" |
19 | 19 | #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" | |
23 | 23 | #include "machine/cs8221.h" |
24 | 24 | #include "machine/pit8253.h" |
25 | 25 | #include "machine/wd7600.h" |
r241749 | r241750 | |
29 | 29 | |
30 | 30 | #include "imagedev/harddriv.h" |
31 | 31 | #include "machine/am9517a.h" |
32 | #include "bus/ | |
32 | #include "bus/pci/pci.h" | |
33 | 33 | |
34 | 34 | #include "sound/dac.h" |
35 | 35 | #include "sound/speaker.h" |
r241749 | r241750 | |
---|---|---|
59 | 59 | emu_timer *keyb_signal_timer; |
60 | 60 | } m_kbd; |
61 | 61 | |
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; | |
65 | 66 | |
66 | 67 | DECLARE_WRITE_LINE_MEMBER(mc1502_pit8253_out1_changed); |
67 | 68 | DECLARE_WRITE_LINE_MEMBER(mc1502_pit8253_out2_changed); |
r241749 | r241750 | |
---|---|---|
13 | 13 | #include "sound/wave.h" |
14 | 14 | #include "machine/ay31015.h" |
15 | 15 | #include "bus/centronics/ctronics.h" |
16 | #include "bus/centronics/covox.h" | |
16 | 17 | #include "machine/ram.h" |
17 | 18 | #include "imagedev/cassette.h" |
18 | 19 | #include "imagedev/snapquik.h" |
r241749 | r241750 | |
---|---|---|
86 | 86 | UINT8 m_ON_interrupt_status; |
87 | 87 | UINT8 m_ON_pressed; |
88 | 88 | UINT8 m_flash_unlocked; |
89 | UINT8 m_ti8x_memory_page_0; | |
89 | 90 | UINT8 m_ti8x_memory_page_1; |
90 | 91 | UINT8 m_ti8x_memory_page_2; |
91 | 92 | UINT8 m_ti8x_memory_page_3; |
92 | bool m_booting; | |
93 | 93 | UINT8 m_LCD_mask; |
94 | 94 | UINT8 m_power_mode; |
95 | 95 | UINT8 m_cpu_speed; |
r241749 | r241750 | |
217 | 217 | void ti85_setup_snapshot (UINT8 * data); |
218 | 218 | void ti86_setup_snapshot (UINT8 * data); |
219 | 219 | DECLARE_SNAPSHOT_LOAD_MEMBER( ti8x ); |
220 | DECLARE_DIRECT_UPDATE_MEMBER( ti83p_direct_update_handler ); | |
221 | 220 | |
222 | 221 | ti83pse_timer m_ctimer[3]; |
223 | 222 |
r241749 | r241750 | |
---|---|---|
16 | 16 | |
17 | 17 | #include "bus/rs232/rs232.h" |
18 | 18 | #include "cpu/i86/i86.h" |
19 | #include " | |
19 | #include "cpu/mcs48/mcs48.h" | |
20 | 20 | #include "imagedev/floppy.h" |
21 | 21 | #include "machine/ram.h" |
22 | 22 | #include "bus/centronics/ctronics.h" |
r241749 | r241750 | |
27 | 27 | #include "machine/pic8259.h" |
28 | 28 | #include "machine/z80dart.h" |
29 | 29 | #include "machine/victor9kb.h" |
30 | #include "machine/victor9k_fdc.h" | |
31 | 30 | #include "sound/hc55516.h" |
32 | 31 | #include "video/mc6845.h" |
33 | 32 | |
34 | 33 | #define I8088_TAG "8l" |
34 | #define I8048_TAG "5d" | |
35 | 35 | #define I8253_TAG "13h" |
36 | 36 | #define I8259A_TAG "7l" |
37 | 37 | #define UPD7201_TAG "16e" |
r241749 | r241750 | |
41 | 41 | #define M6522_1_TAG "m6522_1" |
42 | 42 | #define M6522_2_TAG "m6522_2" |
43 | 43 | #define M6522_3_TAG "14l" |
44 | #define M6522_4_TAG "1f" | |
45 | #define M6522_5_TAG "1k" | |
46 | #define M6522_6_TAG "1h" | |
44 | 47 | #define DAC0808_0_TAG "5b" |
45 | 48 | #define DAC0808_1_TAG "5c" |
46 | 49 | #define CENTRONICS_TAG "centronics" |
r241749 | r241750 | |
48 | 51 | #define RS232_B_TAG "rs232b" |
49 | 52 | #define SCREEN_TAG "screen" |
50 | 53 | #define VICTOR9K_KEYBOARD_TAG "victor9kb" |
51 | #define FDC_TAG "fdc" | |
52 | 54 | |
53 | 55 | class victor9k_state : public driver_device |
54 | 56 | { |
55 | 57 | public: |
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") | |
82 | 97 | { } |
83 | 98 | |
84 | 99 | required_device<cpu_device> m_maincpu; |
100 | required_device<cpu_device> m_fdc_cpu; | |
85 | 101 | required_device<ieee488_device> m_ieee488; |
86 | 102 | required_device<pic8259_device> m_pic; |
87 | 103 | required_device<upd7201_device> m_upd7201; |
r241749 | r241750 | |
89 | 105 | required_device<via6522_device> m_via1; |
90 | 106 | required_device<via6522_device> m_via2; |
91 | 107 | 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; | |
92 | 111 | required_device<hc55516_device> m_cvsd; |
93 | 112 | required_device<mc6845_device> m_crtc; |
94 | 113 | required_device<ram_device> m_ram; |
114 | required_device<floppy_image_device> m_floppy0; | |
115 | required_device<floppy_image_device> m_floppy1; | |
95 | 116 | required_device<victor9k_keyboard_device> m_kb; |
96 | required_device<victor_9000_fdc_t> m_fdc; | |
97 | 117 | required_device<rs232_port_device> m_rs232a; |
98 | 118 | required_device<rs232_port_device> m_rs232b; |
99 | required_device<palette_device> m_palette; | |
100 | required_shared_ptr<UINT8> m_video_ram; | |
101 | 119 | |
102 | 120 | virtual void machine_start(); |
103 | virtual void machine_reset(); | |
104 | 121 | |
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 | ||
105 | 129 | DECLARE_WRITE8_MEMBER( via1_pa_w ); |
106 | 130 | DECLARE_WRITE_LINE_MEMBER( write_nfrd ); |
107 | 131 | DECLARE_WRITE_LINE_MEMBER( write_ndac ); |
r241749 | r241750 | |
118 | 142 | DECLARE_WRITE8_MEMBER( via3_pb_w ); |
119 | 143 | DECLARE_WRITE_LINE_MEMBER( via3_irq_w ); |
120 | 144 | |
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 ); | |
122 | 149 | |
123 | DECLARE_WRITE_LINE_MEMBER( ssda_irq_w ); | |
150 | DECLARE_WRITE8_MEMBER( via5_pb_w ); | |
151 | DECLARE_WRITE_LINE_MEMBER( via5_irq_w ); | |
124 | 152 | |
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 ); | |
125 | 159 | DECLARE_WRITE_LINE_MEMBER( kbrdy_w ); |
126 | 160 | DECLARE_WRITE_LINE_MEMBER( kbdata_w ); |
127 | 161 | DECLARE_WRITE_LINE_MEMBER( vert_w ); |
162 | DECLARE_WRITE_LINE_MEMBER( via6_irq_w ); | |
128 | 163 | |
164 | DECLARE_WRITE_LINE_MEMBER( ssda_irq_w ); | |
129 | 165 | MC6845_UPDATE_ROW( crtc_update_row ); |
130 | 166 | |
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 | ||
131 | 180 | /* video state */ |
181 | required_shared_ptr<UINT8> m_video_ram; | |
132 | 182 | int m_brt; |
133 | 183 | int m_cont; |
134 | 184 | |
r241749 | r241750 | |
136 | 186 | int m_via1_irq; |
137 | 187 | int m_via2_irq; |
138 | 188 | int m_via3_irq; |
139 | int m_fdc_irq; | |
189 | int m_via4_irq; | |
190 | int m_via5_irq; | |
191 | int m_via6_irq; | |
140 | 192 | int m_ssda_irq; |
141 | 193 | |
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 | ||
142 | 215 | DECLARE_WRITE_LINE_MEMBER(mux_serial_b_w); |
143 | 216 | DECLARE_WRITE_LINE_MEMBER(mux_serial_a_w); |
217 | required_device<palette_device> m_palette; | |
144 | 218 | }; |
145 | 219 | |
146 | 220 | #endif |
r241749 | r241750 | |
---|---|---|
10 | 10 | #define WSWAN_TYPE_MONO 0 |
11 | 11 | #define WSWAN_TYPE_COLOR 1 |
12 | 12 | |
13 | #define WSWAN_X_PIXELS (28*8) | |
14 | #define WSWAN_Y_PIXELS (18*8) | |
15 | ||
13 | 16 | #define INTERNAL_EEPROM_SIZE 1024 |
14 | 17 | |
15 | 18 | #include "emu.h" |
16 | 19 | #include "cpu/v30mz/v30mz.h" |
20 | #include "audio/wswan_snd.h" | |
17 | 21 | #include "machine/nvram.h" |
18 | #include "audio/wswan_snd.h" | |
19 | #include "video/wswan_video.h" | |
20 | 22 | #include "bus/wswan/slot.h" |
21 | 23 | #include "bus/wswan/rom.h" |
22 | 24 | |
r241749 | r241750 | |
28 | 30 | UINT8 enable; /* Enabled */ |
29 | 31 | }; |
30 | 32 | |
33 | struct 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 | }; | |
31 | 78 | |
79 | ||
32 | 80 | class wswan_state : public driver_device |
33 | 81 | { |
34 | 82 | public: |
35 | 83 | wswan_state(const machine_config &mconfig, device_type type, const char *tag) |
36 | 84 | : driver_device(mconfig, type, tag), |
37 | 85 | m_maincpu(*this, "maincpu"), |
38 | m_vdp(*this, "vdp"), | |
39 | 86 | m_sound(*this, "custom"), |
40 | 87 | m_cart(*this, "cartslot"), |
41 | 88 | m_cursx(*this, "CURSX"), |
42 | 89 | 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 | ||
46 | 96 | required_device<cpu_device> m_maincpu; |
47 | required_device<wswan_video_device> m_vdp; | |
48 | 97 | required_device<wswan_sound_device> m_sound; |
49 | 98 | required_device<ws_cart_slot_device> m_cart; |
50 | 99 | DECLARE_READ8_MEMBER(bios_r); |
51 | 100 | DECLARE_READ8_MEMBER(port_r); |
52 | 101 | DECLARE_WRITE8_MEMBER(port_w); |
53 | ||
102 | ||
103 | VDP m_vdp; | |
54 | 104 | UINT8 m_ws_portram[256]; |
55 | 105 | UINT8 m_internal_eeprom[INTERNAL_EEPROM_SIZE]; |
56 | 106 | UINT8 m_system_type; |
57 | 107 | SoundDMA m_sound_dma; |
108 | UINT8 *m_ws_ram; | |
58 | 109 | UINT8 *m_ws_bios_bank; |
59 | 110 | UINT8 m_bios_disabled; |
111 | int m_pal[16][16]; | |
112 | bitmap_ind16 m_bitmap; | |
60 | 113 | 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); | |
64 | 116 | void common_start(); |
65 | 117 | virtual void machine_start(); |
66 | 118 | virtual void machine_reset(); |
67 | 119 | DECLARE_PALETTE_INIT(wswan); |
68 | 120 | DECLARE_MACHINE_START(wscolor); |
69 | 121 | DECLARE_PALETTE_INIT(wscolor); |
70 | ||
122 | TIMER_CALLBACK_MEMBER(wswan_scanline_interrupt); | |
123 | ||
71 | 124 | protected: |
72 | 125 | /* Interrupt flags */ |
73 | 126 | static const UINT8 WSWAN_IFLAG_STX = 0x01; |
r241749 | r241750 | |
78 | 131 | static const UINT8 WSWAN_IFLAG_VBLTMR = 0x20; |
79 | 132 | static const UINT8 WSWAN_IFLAG_VBL = 0x40; |
80 | 133 | static const UINT8 WSWAN_IFLAG_HBLTMR = 0x80; |
81 | ||
134 | ||
82 | 135 | /* Interrupts */ |
83 | 136 | static const UINT8 WSWAN_INT_STX = 0; |
84 | 137 | static const UINT8 WSWAN_INT_KEY = 1; |
r241749 | r241750 | |
88 | 141 | static const UINT8 WSWAN_INT_VBLTMR = 5; |
89 | 142 | static const UINT8 WSWAN_INT_VBL = 6; |
90 | 143 | static const UINT8 WSWAN_INT_HBLTMR = 7; |
91 | ||
144 | ||
92 | 145 | required_ioport m_cursx; |
93 | 146 | required_ioport m_cursy; |
94 | 147 | 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( ); | |
99 | 160 | }; |
100 | 161 | |
101 | 162 |
r241749 | r241750 | |
---|---|---|
5 | 5 | |
6 | 6 | #include "emu.h" |
7 | 7 | #include "bus/scsi/sa1403d.h" |
8 | #include "bus/rs232/rs232.h" | |
9 | 8 | #include "cpu/z80/z80.h" |
10 | 9 | #include "cpu/z80/z80daisy.h" |
11 | 10 | #include "cpu/i86/i86.h" |
12 | 11 | #include "machine/com8116.h" |
12 | #include "machine/keyboard.h" | |
13 | 13 | #include "machine/ram.h" |
14 | 14 | #include "bus/scsi/scsi.h" |
15 | 15 | #include "bus/scsi/scsihd.h" |
16 | 16 | #include "machine/wd_fdc.h" |
17 | #include "machine/x820kb.h" | |
18 | 17 | #include "machine/z80pio.h" |
19 | 18 | #include "machine/z80ctc.h" |
20 | 19 | #include "machine/z80dart.h" |
r241749 | r241750 | |
36 | 35 | #define SASIBUS_TAG "sasi" |
37 | 36 | #define RS232_A_TAG "rs232a" |
38 | 37 | #define RS232_B_TAG "rs232b" |
39 | #define KEYBOARD_TAG "kb" | |
40 | 38 | |
41 | 39 | #define XEROX820_VIDEORAM_SIZE 0x1000 |
42 | 40 | #define XEROX820_VIDEORAM_MASK 0x0fff |
r241749 | r241750 | |
44 | 42 | class xerox820_state : public driver_device |
45 | 43 | { |
46 | 44 | public: |
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) | |
66 | 63 | { } |
67 | 64 | |
68 | 65 | virtual void machine_start(); |
r241749 | r241750 | |
79 | 76 | required_device<palette_device> m_palette; |
80 | 77 | required_device<floppy_connector> m_floppy0; |
81 | 78 | required_device<floppy_connector> m_floppy1; |
82 | required_device<xerox_820_keyboard_t> m_kb; | |
83 | 79 | required_memory_region m_rom; |
84 | 80 | required_memory_region m_char_rom; |
85 | 81 | required_shared_ptr<UINT8> m_video_ram; |
r241749 | r241750 | |
93 | 89 | DECLARE_READ8_MEMBER( kbpio_pb_r ); |
94 | 90 | DECLARE_WRITE_LINE_MEMBER( intrq_w ); |
95 | 91 | DECLARE_WRITE_LINE_MEMBER( drq_w ); |
92 | DECLARE_WRITE8_MEMBER( kbd_w ); | |
96 | 93 | DECLARE_WRITE_LINE_MEMBER( fr_w ); |
97 | 94 | DECLARE_WRITE_LINE_MEMBER( fdc_intrq_w ); |
98 | 95 | DECLARE_WRITE_LINE_MEMBER( fdc_drq_w ); |
99 | 96 | |
100 | v | |
97 | void bankswitch(int bank); | |
101 | 98 | void update_nmi(); |
102 | 99 | |
100 | /* keyboard state */ | |
101 | int m_keydata; /* keyboard data */ | |
102 | ||
103 | 103 | /* video state */ |
104 | 104 | UINT8 m_scroll; /* vertical scroll */ |
105 | 105 | UINT8 m_framecnt; |
r241749 | r241750 | |
---|---|---|
1 | 1 | <?xml version="1.0"?> |
2 | 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_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> | |
20 | 8 | </element> |
21 | 9 | |
22 | 10 | <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> | |
36 | 17 | </element> |
37 | 18 | |
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" /> | |
50 | 31 | </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> | |
51 | 40 | </element> |
52 | 41 | |
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" /> | |
62 | 54 | </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> | |
63 | 63 | </element> |
64 | 64 | |
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" /> | |
74 | 77 | </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> | |
75 | 86 | </element> |
76 | 87 | |
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" /> | |
86 | 100 | </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> | |
87 | 109 | </element> |
88 | 110 | |
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" /> | |
98 | 123 | </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> | |
99 | 132 | </element> |
100 | 133 | |
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" /> | |
110 | 146 | </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> | |
111 | 155 | </element> |
112 | 156 | |
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" /> | |
122 | 169 | </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> | |
123 | 178 | </element> |
124 | 179 | |
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" /> | |
134 | 192 | </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> | |
135 | 201 | </element> |
136 | 202 | |
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" /> | |
146 | 215 | </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> | |
147 | 224 | </element> |
148 | 225 | |
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" /> | |
158 | 238 | </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> | |
159 | 247 | </element> |
160 | 248 | |
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" /> | |
170 | 261 | </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> | |
171 | 270 | </element> |
172 | 271 | |
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" /> | |
181 | 284 | </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" /> | |
185 | 292 | </text> |
186 | 293 | </element> |
187 | 294 | |
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" /> | |
193 | 307 | </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" /> | |
197 | 315 | </text> |
198 | 316 | </element> |
199 | 317 | |
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" /> | |
205 | 330 | </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" /> | |
209 | 338 | </text> |
210 | 339 | </element> |
211 | 340 | |
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" /> | |
217 | 353 | </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" /> | |
221 | 361 | </text> |
222 | 362 | </element> |
223 | 363 | |
364 | <view name="Default Layout"> | |
224 | 365 | |
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" /> | |
232 | 369 | </bezel> |
233 | 370 | |
234 | <!-- | |
371 | <!-- LEDs and number buttons --> | |
235 | 372 | |
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" /> | |
238 | 375 | </bezel> |
376 | <bezel element="0" inputtag="O0" inputmask="0x01"> | |
377 | <bounds x="100" y="32" width="20" height="10" /> | |
378 | </bezel> | |
239 | 379 | |
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" /> | |
242 | 382 | </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" /> | |
245 | 385 | </bezel> |
246 | <bezel element="static_red"> | |
247 | <bounds x="7" y="148" width="74" height="62" /> | |
248 | </bezel> | |
249 | 386 | |
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" /> | |
255 | 389 | </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" /> | |
258 | 392 | </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> | |
263 | 393 | |
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" /> | |
266 | 396 | </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" /> | |
269 | 399 | </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" /> | |
273 | 404 | </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" /> | |
276 | 407 | </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" /> | |
279 | 411 | </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" /> | |
283 | 414 | </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> | |
294 | 415 | |
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" /> | |
297 | 418 | </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" /> | |
300 | 421 | </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> | |
325 | 422 | |
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" /> | |
328 | 426 | </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" /> | |
331 | 429 | </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" /> | |
335 | 432 | </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" /> | |
338 | 435 | </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" /> | |
341 | 438 | </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" /> | |
345 | 441 | </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> | |
356 | 442 | |
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" /> | |
359 | 446 | </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" /> | |
362 | 449 | </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> | |
367 | 450 | |
368 | 451 | |
369 | <!-- b | |
452 | <!-- Other buttons --> | |
370 | 453 | |
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" /> | |
373 | 456 | </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" /> | |
377 | 459 | </bezel> |
378 | 460 | |
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" /> | |
381 | 463 | </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" /> | |
385 | 466 | </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 | ||
403 | 467 | </view> |
404 | 468 | </mamelayout> |
r241749 | r241750 | |
---|---|---|
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> |
r241749 | r241750 | |
---|---|---|
300 | 300 | MACHINE_RESET_MEMBER(at_state,at) |
301 | 301 | { |
302 | 302 | m_at_spkrdata = 0; |
303 | m_pit_out2 = | |
303 | m_pit_out2 = 0; | |
304 | 304 | m_dma_channel = -1; |
305 | 305 | m_cur_eop = false; |
306 | 306 | } |
r241749 | r241750 | |
---|---|---|
93 | 93 | |
94 | 94 | /* Components */ |
95 | 95 | #include "video/pc_vga.h" |
96 | #include "bus/ | |
96 | #include "bus/pci/cirrus.h" | |
97 | 97 | #include "cpu/powerpc/ppc.h" |
98 | 98 | #include "machine/ins8250.h" |
99 | 99 | #include "machine/upd765.h" |
r241749 | r241750 | |
101 | 101 | #include "machine/pic8259.h" |
102 | 102 | #include "machine/am9517a.h" |
103 | 103 | #include "machine/ataintf.h" |
104 | #include "bus/ | |
104 | #include "bus/pci/pci.h" | |
105 | 105 | #include "machine/intelfsh.h" |
106 | 106 | #include "machine/53c810.h" |
107 | 107 | #include "machine/ram.h" |
r241749 | r241750 | |
---|---|---|
681 | 681 | /* determine the sound mux status */ |
682 | 682 | soundmux_status_t status = soundmux_status(); |
683 | 683 | |
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 | ||
690 | 684 | /* determine the value to send to the DAC */ |
691 | 685 | 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); | |
694 | 688 | |
695 | 689 | /* 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; | |
697 | 693 | m_cassette->change_state(cas_sound, CASSETTE_MASK_SPEAKER); |
698 | 694 | |
699 | 695 | /* 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); | |
701 | 699 | } |
702 | 700 | |
703 | 701 |
r241749 | r241750 | |
---|---|---|
572 | 572 | m_u73_q2 = 0; |
573 | 573 | m_out1 = 2; // initial state of pit output is undefined |
574 | 574 | m_pc_spkrdata = 0; |
575 | m_pit_out2 = | |
575 | m_pit_out2 = 0; | |
576 | 576 | m_dma_channel = -1; |
577 | 577 | m_cur_eop = false; |
578 | 578 | memset(m_dma_offset,0,sizeof(m_dma_offset)); |
r241749 | r241750 | |
---|---|---|
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 | ||
37 | const device_type MS7004 = &device_creator<ms7004_device>; | |
38 | ||
39 | ROM_START( ms7004 ) | |
40 | ROM_REGION (0x800, MS7004_CPU_TAG, 0) | |
41 | ROM_LOAD ("mc7004_keyboard_original.rom", 0x0000, 0x800, CRC(69fcab53) SHA1(2d7cc7cd182f2ee09ecf2c539e33db3c2195f778)) | |
42 | ROM_END | |
43 | ||
44 | //------------------------------------------------- | |
45 | // ADDRESS_MAP | |
46 | //------------------------------------------------- | |
47 | ||
48 | static 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) | |
53 | ADDRESS_MAP_END | |
54 | ||
55 | //------------------------------------------------- | |
56 | // MACHINE_CONFIG | |
57 | //------------------------------------------------- | |
58 | ||
59 | static 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) | |
68 | MACHINE_CONFIG_END | |
69 | ||
70 | ||
71 | //------------------------------------------------- | |
72 | // machine_config_additions - device-specific | |
73 | // machine configurations | |
74 | //------------------------------------------------- | |
75 | ||
76 | machine_config_constructor ms7004_device::device_mconfig_additions() const | |
77 | { | |
78 | return MACHINE_CONFIG_NAME( ms7004 ); | |
79 | } | |
80 | ||
81 | const rom_entry *ms7004_device::device_rom_region() const | |
82 | { | |
83 | return ROM_NAME( ms7004 ); | |
84 | } | |
85 | ||
86 | //------------------------------------------------- | |
87 | // INPUT_PORTS( ms7004 ) | |
88 | //------------------------------------------------- | |
89 | /* | |
90 | bit sig XSn ВРn | |
91 | --- --- --- --- | |
92 | 0 8 16 15 | |
93 | 1 9 15 14 | |
94 | 2 10 14 13 | |
95 | 3 11 13 12 | |
96 | 4 12 19 16 | |
97 | 5 13 12 11 | |
98 | 6 14 11 10 | |
99 | 7 15 10 9 | |
100 | 8 16 9 8 | |
101 | 9 17 8 7 | |
102 | 10 18 7 6 | |
103 | 11 19 6 5 | |
104 | 12 20 3 1 | |
105 | 13 21 1 2 | |
106 | 14 22 4 3 | |
107 | 15 23 5 4 | |
108 | ||
109 | 0xc9 KEY_LANGLE_RANGLE 'резервная клавиша' | |
110 | 0xbc KEY_DELETE ЗБ | |
111 | 0xbd KEY_RETURN ВК | |
112 | 0xbf KEY_TILDE '; +' | |
113 | 0xc4 - 'Ъ' | |
114 | 0xca - '/ ?' | |
115 | 0xed KEY_PERIOD 'Ю @' | |
116 | 0xf1 - '_' | |
117 | <...> | |
118 | ||
119 | 0x56 KEY_F1 СТОП КАДР | |
120 | 0x57 KEY_F2 ПЕЧАТЬ КАДРА | |
121 | 0x58 KEY_F3 ПАУЗА | |
122 | 0x59 KEY_F4 УСТ РЕЖИМА | |
123 | 0x5a KEY_F5 Ф5 | |
124 | ||
125 | 0x64 KEY_F6 ПРЕРЫВ | |
126 | 0x65 KEY_F7 ПРОДОЛЖ | |
127 | 0x66 KEY_F8 ОТМЕН | |
128 | 0x67 KEY_F9 ОСНОВН КАДР | |
129 | 0x69 KEY_F10 ВЫХОД | |
130 | ||
131 | 0x71 KEY_F11 Ф11 (АР2) | |
132 | 0x72 KEY_F12 Ф12 (ВШ) | |
133 | 0x73 KEY_F13 Ф13 (ПС) | |
134 | 0x74 KEY_F14 ДОП ВАРИАНТ | |
135 | ||
136 | 0x7c KEY_HELP ПМ | |
137 | 0x7d KEY_MENU ИСП | |
138 | ||
139 | 0x80 KEY_F17 Ф17 | |
140 | 0x81 KEY_F18 Ф18 | |
141 | 0x82 KEY_F19 Ф19 | |
142 | 0x83 KEY_F20 Ф20 | |
143 | ||
144 | 0xb0 KEY_LOCK ФКС | |
145 | 0xae KEY_SHIFT ВР | |
146 | 0xaf KEY_CTRL СУ | |
147 | ||
148 | 0xb1 KEY_META КМП | |
149 | 0xb2 - РУС/ЛАТ | |
150 | ||
151 | 0x8a KEY_FIND НТ | |
152 | 0x8b KEY_INSERT_HERE ВСТ | |
153 | 0x8c KEY_REMOVE УДАЛ | |
154 | 0x8d KEY_SELECT ВЫБР | |
155 | 0x8e KEY_PREV_SCREEN ПРЕД КАДР | |
156 | 0x8f KEY_NEXT_SCREEN СЛЕД КАДР | |
157 | ||
158 | nothing sends '@' or '`' | |
159 | ||
160 | `/~ sends ^/~ | |
161 | 2/@ sends 2/" | |
162 | 6/^ sends 6/& | |
163 | 7/& sends 7/' | |
164 | 8/ * sends 8/( | |
165 | 9/( sends 9/) | |
166 | 0/) sends 0/0 | |
167 | -/_ sends _/_ | |
168 | +/= sends -/= | |
169 | ;/: sends ;/+ | |
170 | '/" sends :/ * | |
171 | ||
172 | F10 sends ^C | |
173 | F11 sends ESC | |
174 | F12 sends ^H | |
175 | */ | |
176 | INPUT_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) | |
336 | INPUT_PORTS_END | |
337 | ||
338 | ||
339 | //------------------------------------------------- | |
340 | // input_ports - device-specific input ports | |
341 | //------------------------------------------------- | |
342 | ||
343 | ioport_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 | ||
356 | ms7004_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 | ||
386 | void ms7004_device::device_start() | |
387 | { | |
388 | m_tx_handler.resolve_safe(); | |
389 | } | |
390 | ||
391 | ||
392 | //------------------------------------------------- | |
393 | // device_reset - device-specific reset | |
394 | //------------------------------------------------- | |
395 | ||
396 | void ms7004_device::device_reset() | |
397 | { | |
398 | } | |
399 | ||
400 | ||
401 | //------------------------------------------------- | |
402 | // p1_w - | |
403 | //------------------------------------------------- | |
404 | ||
405 | WRITE8_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 | ||
430 | WRITE8_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 | ||
455 | WRITE8_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 | ||
492 | READ8_MEMBER( ms7004_device::t1_r ) | |
493 | { | |
494 | if (!BIT(m_p1,4)) | |
495 | return m_keylatch; | |
496 | else | |
497 | return 0; | |
498 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
30 | class ms7004_device : public device_t //, public device_serial_interface | |
31 | { | |
32 | public: | |
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 | ||
43 | protected: | |
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 | ||
51 | private: | |
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 | |
81 | extern const device_type MS7004; | |
82 | ||
83 | #endif |
r241749 | r241750 | |
---|---|---|
638 | 638 | MCFG_RS232_CTS_HANDLER(WRITELINE(to7_io_line_device, write_cts)) |
639 | 639 | MCFG_RS232_DSR_HANDLER(WRITELINE(to7_io_line_device, write_dsr)) |
640 | 640 | |
641 | MCFG_CENTRONICS_ADD("centronics", centronics_ | |
641 | MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") | |
642 | 642 | MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(THOM_PIA_IO, pia6821_device, cb1_w)) |
643 | 643 | MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(to7_io_line_device, write_centronics_busy)) |
644 | 644 |
r241749 | r241750 | |
---|---|---|
154 | 154 | { |
155 | 155 | //address_space &space = m_maincpu->space(AS_PROGRAM); |
156 | 156 | |
157 | m_membank1->set_bank( | |
157 | m_membank1->set_bank(0); //Always flash page 0, well allmost | |
158 | 158 | |
159 | 159 | if (m_ti83p_port4 & 1) |
160 | 160 | { |
r241749 | r241750 | |
182 | 182 | { |
183 | 183 | //address_space &space = m_maincpu->space(AS_PROGRAM); |
184 | 184 | |
185 | m_membank1->set_bank(m_ | |
185 | m_membank1->set_bank(m_ti8x_memory_page_0); | |
186 | 186 | |
187 | 187 | if (m_ti83p_port4 & 1) |
188 | 188 | { |
r241749 | r241750 | |
273 | 273 | m_PCR = 0xc0; |
274 | 274 | } |
275 | 275 | |
276 | DIRECT_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 | ||
290 | 276 | MACHINE_RESET_MEMBER(ti85_state,ti83p) |
291 | 277 | { |
292 | 278 | m_red_out = 0x00; |
293 | 279 | m_white_out = 0x00; |
294 | 280 | m_PCR = 0xc0; |
295 | 281 | |
282 | m_ti8x_memory_page_0 = 0;//0x1f; | |
296 | 283 | |
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 | ||
298 | 297 | m_ti8x_memory_page_2 = 0; |
299 | 298 | m_ti8x_memory_page_3 = 0; |
300 | 299 | m_ti83p_port4 = 1; |
301 | m_booting = true; | |
302 | 300 | if (m_model == TI83P) |
303 | 301 | { |
304 | 302 | update_ti83p_memory(); |
r241749 | r241750 | |
307 | 305 | { |
308 | 306 | update_ti83pse_memory(); |
309 | 307 | } |
308 | ||
309 | m_maincpu->set_pc(0x8000); | |
310 | 310 | } |
311 | 311 | |
312 | 312 | MACHINE_START_MEMBER(ti85_state,ti83p) |
r241749 | r241750 | |
314 | 314 | m_model = TI83P; |
315 | 315 | //address_space &space = m_maincpu->space(AS_PROGRAM); |
316 | 316 | //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)); | |
318 | 317 | |
319 | 318 | m_timer_interrupt_mask = 0; |
320 | 319 | m_timer_interrupt_status = 0; |
321 | 320 | m_ON_interrupt_mask = 0; |
322 | 321 | m_ON_interrupt_status = 0; |
323 | 322 | 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; | |
325 | 325 | m_ti8x_memory_page_2 = 0; |
326 | 326 | m_ti8x_memory_page_3 = 0; |
327 | 327 | m_LCD_memory_base = 0; |
r241749 | r241750 | |
334 | 334 | m_ti83p_port4 = 1; |
335 | 335 | m_flash_unlocked = 0; |
336 | 336 | |
337 | m_booting = true; | |
338 | ||
339 | 337 | ti85_state::update_ti83p_memory(); |
338 | m_maincpu->set_pc(0x8000); //this is a hack due to incomplete memory mapping emulation | |
340 | 339 | |
341 | 340 | |
342 | 341 | machine().scheduler().timer_pulse(attotime::from_hz(256), timer_expired_delegate(FUNC(ti85_state::ti83_timer1_callback),this)); |
r241749 | r241750 | |
346 | 345 | /* save states and debugging */ |
347 | 346 | save_item(NAME(m_timer_interrupt_status)); |
348 | 347 | save_item(NAME(m_timer_interrupt_mask)); |
348 | save_item(NAME(m_ti8x_memory_page_0)); | |
349 | 349 | save_item(NAME(m_ti8x_memory_page_1)); |
350 | 350 | save_item(NAME(m_ti8x_memory_page_2)); |
351 | 351 | save_item(NAME(m_ti8x_memory_page_3)); |
352 | 352 | save_item(NAME(m_ti83p_port4)); |
353 | save_item(NAME(m_booting)); | |
354 | 353 | } |
355 | 354 | |
356 | 355 | void ti85_state::ti8xpse_init_common() |
r241749 | r241750 | |
364 | 363 | m_ON_interrupt_mask = 0; |
365 | 364 | m_ON_interrupt_status = 0; |
366 | 365 | 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 ; | |
368 | 368 | m_ti8x_memory_page_2 = 0; |
369 | 369 | m_ti8x_memory_page_3 = 0; |
370 | 370 | m_LCD_memory_base = 0; |
r241749 | r241750 | |
378 | 378 | m_flash_unlocked = 0; |
379 | 379 | |
380 | 380 | ti85_state::update_ti83pse_memory(); |
381 | m_maincpu->sp | |
381 | m_maincpu->set_pc(0x8000);//same as above, hack to work around incomplete memory mapping emulation | |
382 | 382 | |
383 | 383 | |
384 | 384 | machine().scheduler().timer_pulse(attotime::from_hz(256), timer_expired_delegate(FUNC(ti85_state::ti83_timer1_callback),this)); |
r241749 | r241750 | |
391 | 391 | /* save states and debugging */ |
392 | 392 | save_item(NAME(m_ctimer_interrupt_status)); |
393 | 393 | save_item(NAME(m_timer_interrupt_status)); |
394 | save_item(NAME(m_ti8x_memory_page_0)); | |
394 | 395 | save_item(NAME(m_ti8x_memory_page_1)); |
395 | 396 | save_item(NAME(m_ti8x_memory_page_2)); |
396 | 397 | save_item(NAME(m_ti8x_memory_page_3)); |
r241749 | r241750 | |
---|---|---|
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 | ||
46 | const device_type VICTOR_9000_FDC = &device_creator<victor_9000_fdc_t>; | |
47 | ||
48 | ||
49 | //------------------------------------------------- | |
50 | // ROM( victor_9000_fdc ) | |
51 | //------------------------------------------------- | |
52 | ||
53 | ROM_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) ) | |
59 | ROM_END | |
60 | ||
61 | ||
62 | //------------------------------------------------- | |
63 | // rom_region - device-specific ROM region | |
64 | //------------------------------------------------- | |
65 | ||
66 | const 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 | ||
76 | static 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) | |
82 | ADDRESS_MAP_END | |
83 | ||
84 | ||
85 | //------------------------------------------------- | |
86 | // SLOT_INTERFACE( victor9k_floppies ) | |
87 | //------------------------------------------------- | |
88 | ||
89 | int 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 | ||
96 | void victor_9000_fdc_t::unload0_cb(floppy_image_device *device) | |
97 | { | |
98 | m_via4->write_ca1(1); | |
99 | } | |
100 | ||
101 | int 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 | ||
108 | void victor_9000_fdc_t::unload1_cb(floppy_image_device *device) | |
109 | { | |
110 | m_via4->write_cb1(1); | |
111 | } | |
112 | ||
113 | static 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 | |
116 | SLOT_INTERFACE_END | |
117 | ||
118 | FLOPPY_FORMATS_MEMBER( victor_9000_fdc_t::floppy_formats ) | |
119 | FLOPPY_VICTOR_9000_FORMAT | |
120 | FLOPPY_FORMATS_END | |
121 | ||
122 | ||
123 | //------------------------------------------------- | |
124 | // MACHINE_CONFIG_FRAGMENT( victor_9000_fdc ) | |
125 | //------------------------------------------------- | |
126 | ||
127 | static 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) | |
153 | MACHINE_CONFIG_END | |
154 | ||
155 | ||
156 | //------------------------------------------------- | |
157 | // machine_config_additions - device-specific | |
158 | // machine configurations | |
159 | //------------------------------------------------- | |
160 | ||
161 | machine_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 | ||
176 | victor_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 | ||
228 | void 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 | ||
271 | void 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 | ||
298 | void 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 | ||
322 | READ8_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 | ||
347 | READ8_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 | ||
357 | WRITE8_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 | ||
437 | READ8_MEMBER( victor_9000_fdc_t::tach0_r ) | |
438 | { | |
439 | return m_tach0; | |
440 | } | |
441 | ||
442 | ||
443 | //------------------------------------------------- | |
444 | // tach1_r - | |
445 | //------------------------------------------------- | |
446 | ||
447 | READ8_MEMBER( victor_9000_fdc_t::tach1_r ) | |
448 | { | |
449 | return m_tach1; | |
450 | } | |
451 | ||
452 | ||
453 | void 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 | ||
481 | void 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 | ||
501 | WRITE8_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 | ||
516 | WRITE8_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 | ||
556 | WRITE8_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 | ||
596 | WRITE_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 | ||
609 | WRITE_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 | ||
616 | READ8_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 | ||
639 | WRITE8_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 | ||
666 | WRITE_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 | ||
674 | READ8_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 | ||
710 | WRITE8_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 | ||
762 | READ8_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 | ||
799 | WRITE8_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 | ||
847 | WRITE_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 | ||
864 | WRITE_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 | ||
876 | WRITE_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 | ||
883 | READ8_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 | ||
898 | WRITE8_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 | ||
913 | floppy_image_device* victor_9000_fdc_t::get_floppy() | |
914 | { | |
915 | return m_drive ? m_floppy1 : m_floppy0; | |
916 | } | |
917 | ||
918 | void 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 | ||
942 | void victor_9000_fdc_t::checkpoint() | |
943 | { | |
944 | get_next_edge(machine().time()); | |
945 | checkpoint_live = cur_live; | |
946 | } | |
947 | ||
948 | void victor_9000_fdc_t::rollback() | |
949 | { | |
950 | cur_live = checkpoint_live; | |
951 | get_next_edge(cur_live.tm); | |
952 | } | |
953 | ||
954 | void 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 | ||
960 | void victor_9000_fdc_t::stop_writing(const attotime &tm) | |
961 | { | |
962 | commit(tm); | |
963 | cur_live.write_start_time = attotime::never; | |
964 | } | |
965 | ||
966 | bool 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 | ||
985 | void 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 | ||
999 | void 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 | ||
1008 | void 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 | ||
1031 | void 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 | ||
1053 | void 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 | ||
1180 | void 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 | ||
1187 | int 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 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
46 | class victor_9000_fdc_t : public device_t | |
47 | { | |
48 | public: | |
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 | ||
89 | protected: | |
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 | ||
99 | private: | |
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 | |
234 | extern const device_type VICTOR_9000_FDC; | |
235 | ||
236 | ||
237 | ||
238 | #endif |
r241749 | r241750 | |
---|---|---|
28 | 28 | const device_type VICTOR9K_KEYBOARD = &device_creator<victor9k_keyboard_device>; |
29 | 29 | |
30 | 30 | |
31 | ||
31 | 32 | //------------------------------------------------- |
32 | 33 | // ROM( victor9k_keyboard ) |
33 | 34 | //------------------------------------------------- |
r241749 | r241750 | |
236 | 237 | // victor9k_keyboard_device - constructor |
237 | 238 | //------------------------------------------------- |
238 | 239 | |
239 | victor9k_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) | |
240 | victor9k_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) | |
261 | 262 | { |
262 | 263 | } |
263 | 264 | |
r241749 | r241750 | |
290 | 291 | |
291 | 292 | |
292 | 293 | //------------------------------------------------- |
294 | // kbrdy_r - | |
295 | //------------------------------------------------- | |
296 | ||
297 | READ_LINE_MEMBER( victor9k_keyboard_device::kbrdy_r ) | |
298 | { | |
299 | return m_kbrdy; | |
300 | } | |
301 | ||
302 | ||
303 | //------------------------------------------------- | |
293 | 304 | // kback_w - |
294 | 305 | //------------------------------------------------- |
295 | 306 | |
296 | 307 | WRITE_LINE_MEMBER( victor9k_keyboard_device::kback_w ) |
297 | 308 | { |
298 | //logerror("KBACK %u\n", state); | |
299 | 309 | m_kback = state; |
300 | 310 | } |
301 | 311 | |
302 | 312 | |
303 | 313 | //------------------------------------------------- |
314 | // kbdata_r - | |
315 | //------------------------------------------------- | |
316 | ||
317 | READ_LINE_MEMBER( victor9k_keyboard_device::kbdata_r ) | |
318 | { | |
319 | return m_kbdata; | |
320 | } | |
321 | ||
322 | ||
323 | //------------------------------------------------- | |
304 | 324 | // kb_p1_r - |
305 | 325 | //------------------------------------------------- |
306 | 326 | |
r241749 | r241750 | |
340 | 360 | m_y = data & 0x0f; |
341 | 361 | } |
342 | 362 | |
343 | | |
363 | logerror("P1 %02x\n", data); | |
344 | 364 | } |
345 | 365 | |
346 | 366 | |
r241749 | r241750 | |
354 | 374 | |
355 | 375 | bit description |
356 | 376 | |
357 | P20 ? | |
358 | P21 KBRDY | |
359 | P22 ? | |
360 | P23 KBDATA | |
377 | P20 keylatch enable ? | |
378 | P21 | |
379 | P22 key available ? | |
380 | P23 data ? | |
361 | 381 | |
362 | 382 | */ |
363 | 383 | |
364 | int kbrdy = BIT(data, | |
384 | int kbrdy = BIT(data, 2); | |
365 | 385 | |
366 | 386 | if (m_kbrdy != kbrdy) |
367 | 387 | { |
r241749 | r241750 | |
377 | 397 | m_kbdata_handler(m_kbdata); |
378 | 398 | } |
379 | 399 | |
380 | | |
400 | logerror("P2 %01x\n", data & 0x0f); | |
381 | 401 | } |
382 | 402 | |
383 | 403 | |
r241749 | r241750 | |
387 | 407 | |
388 | 408 | READ8_MEMBER( victor9k_keyboard_device::kb_t1_r ) |
389 | 409 | { |
410 | logerror("read T1 %u\n", m_kback); | |
411 | ||
390 | 412 | return m_kback; |
391 | 413 | } |
r241749 | r241750 | |
---|---|---|
51 | 51 | virtual machine_config_constructor device_mconfig_additions() const; |
52 | 52 | virtual ioport_constructor device_input_ports() const; |
53 | 53 | |
54 | DECLARE_READ_LINE_MEMBER( kbrdy_r ); | |
54 | 55 | DECLARE_WRITE_LINE_MEMBER( kback_w ); |
56 | DECLARE_READ_LINE_MEMBER( kbdata_r ); | |
55 | 57 | |
56 | 58 | // not really public |
57 | 59 | DECLARE_READ8_MEMBER( kb_p1_r ); |
r241749 | r241750 | |
---|---|---|
78 | 78 | 0xea, 0xc0, 0xff, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 |
79 | 79 | }; |
80 | 80 | |
81 | void wswan_state::handle_irqs() | |
81 | void wswan_state::wswan_handle_irqs() | |
82 | 82 | { |
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 ) | |
84 | 84 | { |
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 ); | |
86 | 86 | } |
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 ) | |
88 | 88 | { |
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 ); | |
90 | 90 | } |
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 ) | |
92 | 92 | { |
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 ); | |
94 | 94 | } |
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 ) | |
96 | 96 | { |
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 ); | |
98 | 98 | } |
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 ) | |
100 | 100 | { |
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 ); | |
102 | 102 | } |
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 ) | |
104 | 104 | { |
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 ); | |
106 | 106 | } |
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 ) | |
108 | 108 | { |
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 ); | |
110 | 110 | } |
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 ) | |
112 | 112 | { |
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 ); | |
114 | 114 | } |
115 | 115 | else |
116 | 116 | { |
117 | m_maincpu->set_input_line(0, CLEAR_LINE); | |
117 | m_maincpu->set_input_line(0, CLEAR_LINE ); | |
118 | 118 | } |
119 | 119 | } |
120 | 120 | |
121 | void wswan_state::set_irq_line(int irq) | |
121 | void wswan_state::wswan_set_irq_line(int irq) | |
122 | 122 | { |
123 | if (m_ws_portram[0xb2] & irq) | |
123 | if ( m_ws_portram[0xb2] & irq ) | |
124 | 124 | { |
125 | 125 | m_ws_portram[0xb6] |= irq; |
126 | handle_irqs(); | |
126 | wswan_handle_irqs(); | |
127 | 127 | } |
128 | 128 | } |
129 | 129 | |
130 | void wswan_state:: | |
130 | void wswan_state::wswan_clear_irq_line(int irq) | |
131 | 131 | { |
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 | ||
146 | void wswan_state::clear_irq_line(int irq) | |
147 | { | |
148 | 132 | m_ws_portram[0xb6] &= ~irq; |
149 | handle_irqs(); | |
133 | wswan_handle_irqs(); | |
150 | 134 | } |
151 | 135 | |
152 | void wswan_state::register_save() | |
136 | void wswan_state::wswan_register_save() | |
153 | 137 | { |
154 | 138 | save_item(NAME(m_ws_portram)); |
155 | 139 | save_item(NAME(m_internal_eeprom)); |
156 | 140 | save_item(NAME(m_bios_disabled)); |
157 | 141 | 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 | ||
159 | 182 | save_item(NAME(m_sound_dma.source)); |
160 | 183 | save_item(NAME(m_sound_dma.size)); |
161 | 184 | save_item(NAME(m_sound_dma.enable)); |
162 | ||
185 | ||
163 | 186 | if (m_cart->exists()) |
164 | 187 | m_cart->save_nvram(); |
188 | ||
189 | machine().save().register_postload(save_prepost_delegate(FUNC(wswan_state::wswan_postload), this)); | |
165 | 190 | } |
166 | 191 | |
192 | void 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 | ||
167 | 200 | void wswan_state::common_start() |
168 | 201 | { |
169 | 202 | m_ws_bios_bank = auto_alloc_array(machine(), UINT8, 0x10000); |
170 | 203 | 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 | ||
174 | 210 | machine().device<nvram_device>("nvram")->set_base(m_internal_eeprom, INTERNAL_EEPROM_SIZE); |
175 | ||
211 | ||
176 | 212 | if (m_cart->exists()) |
177 | 213 | { |
178 | 214 | // ROM |
179 | 215 | 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)); |
180 | 216 | 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)); |
181 | 217 | 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 | ||
183 | 219 | // SRAM |
184 | 220 | if (m_cart->get_type() == WS_SRAM) |
185 | 221 | { |
r241749 | r241750 | |
195 | 231 | m_system_type = TYPE_WSWAN; |
196 | 232 | } |
197 | 233 | |
198 | MACHINE_START_MEMBER(wswan_state, | |
234 | MACHINE_START_MEMBER(wswan_state,wscolor) | |
199 | 235 | { |
200 | 236 | common_start(); |
201 | 237 | m_system_type = TYPE_WSC; |
r241749 | r241750 | |
203 | 239 | |
204 | 240 | void wswan_state::machine_reset() |
205 | 241 | { |
242 | address_space &space = m_maincpu->space(AS_PROGRAM); | |
243 | ||
206 | 244 | 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 | ||
208 | 249 | if (m_cart->exists()) |
209 | 250 | m_rotate = m_cart->get_is_rotated(); |
210 | 251 | else |
211 | 252 | m_rotate = 0; |
212 | ||
253 | ||
213 | 254 | /* Intialize ports */ |
214 | 255 | 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 | ||
216 | 267 | render_target *target = machine().render().first_target(); |
217 | 268 | target->set_view(m_rotate); |
218 | ||
269 | ||
219 | 270 | /* Initialize sound DMA */ |
220 | 271 | memset(&m_sound_dma, 0, sizeof(m_sound_dma)); |
221 | 272 | } |
r241749 | r241750 | |
231 | 282 | READ8_MEMBER( wswan_state::port_r ) |
232 | 283 | { |
233 | 284 | UINT8 value = m_ws_portram[offset]; |
234 | ||
285 | ||
235 | 286 | if (offset != 2) |
236 | 287 | 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 | ||
241 | 288 | switch (offset) |
242 | 289 | { |
290 | case 0x02: // Current line | |
291 | value = m_vdp.current_line; | |
292 | break; | |
243 | 293 | case 0x4a: // Sound DMA source address (low) |
244 | 294 | value = m_sound_dma.source & 0xff; |
245 | 295 | break; |
r241749 | r241750 | |
258 | 308 | case 0x52: // Sound DMA start/stop |
259 | 309 | value = m_sound_dma.enable; |
260 | 310 | break; |
261 | case 0x60: | |
262 | value = m_vdp->reg_r(space, offset); | |
263 | break; | |
264 | 311 | 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 | |
268 | 315 | value = value & ~ 0x02; |
269 | 316 | if (m_system_type == TYPE_WSC) |
270 | 317 | value |= 2; |
271 | 318 | 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; | |
272 | 331 | case 0xc0: |
273 | 332 | case 0xc1: |
274 | 333 | case 0xc2: |
r241749 | r241750 | |
288 | 347 | value = m_cart->read_io(space, offset & 0x0f); |
289 | 348 | break; |
290 | 349 | } |
291 | ||
350 | ||
292 | 351 | return value; |
293 | 352 | } |
294 | 353 | |
r241749 | r241750 | |
297 | 356 | address_space &mem = m_maincpu->space(AS_PROGRAM); |
298 | 357 | UINT8 input; |
299 | 358 | 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 | ||
307 | 359 | switch (offset) |
308 | 360 | { |
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; | |
309 | 638 | 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 | */ | |
312 | 641 | 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 | */ | |
315 | 644 | case 0x42: /* DMA source bank |
316 | Bit 0-7 - DMA source bank number | |
317 | */ | |
645 | Bit 0-7 - DMA source bank number | |
646 | */ | |
318 | 647 | case 0x43: /* DMA destination bank |
319 | Bit 0-7 - DMA destination bank number | |
320 | */ | |
648 | Bit 0-7 - DMA destination bank number | |
649 | */ | |
321 | 650 | 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 | */ | |
324 | 653 | 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 | */ | |
327 | 656 | 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 | */ | |
330 | 659 | 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 | */ | |
333 | 662 | break; |
334 | 663 | 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 | */ | |
338 | 667 | if (data & 0x80) |
339 | 668 | { |
340 | 669 | UINT32 src, dst; |
341 | 670 | UINT16 length; |
342 | ||
671 | ||
343 | 672 | src = m_ws_portram[0x40] + (m_ws_portram[0x41] << 8) + (m_ws_portram[0x42] << 16); |
344 | 673 | dst = m_ws_portram[0x44] + (m_ws_portram[0x45] << 8) + (m_ws_portram[0x43] << 16); |
345 | 674 | length = m_ws_portram[0x46] + (m_ws_portram[0x47] << 8); |
r241749 | r241750 | |
350 | 679 | dst++; |
351 | 680 | } |
352 | 681 | #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); | |
354 | 683 | #endif |
355 | 684 | m_ws_portram[0x40] = src & 0xff; |
356 | 685 | m_ws_portram[0x41] = (src >> 8) & 0xff; |
r241749 | r241750 | |
362 | 691 | } |
363 | 692 | break; |
364 | 693 | 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 | */ | |
367 | 696 | m_sound_dma.source = (m_sound_dma.source & 0x0fff00) | data; |
368 | 697 | break; |
369 | 698 | 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 | */ | |
372 | 701 | m_sound_dma.source = (m_sound_dma.source & 0x0f00ff) | (data << 8); |
373 | 702 | break; |
374 | 703 | 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 | */ | |
378 | 707 | m_sound_dma.source = (m_sound_dma.source & 0xffff) | ((data & 0x0f) << 16); |
379 | 708 | break; |
380 | 709 | case 0x4d: /* Unknown */ |
381 | 710 | break; |
382 | 711 | 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 | */ | |
385 | 714 | m_sound_dma.size = (m_sound_dma.size & 0xff00) | data; |
386 | 715 | break; |
387 | 716 | 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 | */ | |
390 | 719 | m_sound_dma.size = (m_sound_dma.size & 0xff) | (data << 8); |
391 | 720 | break; |
392 | 721 | case 0x50: /* Unknown */ |
393 | 722 | case 0x51: /* Unknown */ |
394 | 723 | break; |
395 | 724 | 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 | */ | |
399 | 728 | m_sound_dma.enable = data; |
400 | 729 | 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 | } | |
403 | 752 | break; |
404 | 753 | 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 | */ | |
407 | 756 | 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 | */ | |
410 | 759 | 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 | */ | |
413 | 762 | 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 | */ | |
416 | 765 | 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 | */ | |
419 | 768 | 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 | */ | |
422 | 771 | 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 | */ | |
425 | 774 | 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 | */ | |
428 | 777 | 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 | */ | |
432 | 781 | 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 | */ | |
436 | 785 | 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 | */ | |
440 | 789 | 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 | */ | |
444 | 793 | case 0x8c: /* Sweep step |
445 | Bit 0-7 - Sweep step | |
446 | */ | |
794 | Bit 0-7 - Sweep step | |
795 | */ | |
447 | 796 | case 0x8d: /* Sweep time |
448 | Bit 0-7 - Sweep time | |
449 | */ | |
797 | Bit 0-7 - Sweep time | |
798 | */ | |
450 | 799 | 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 | */ | |
456 | 805 | 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 | */ | |
459 | 808 | 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 | */ | |
469 | 818 | 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 | */ | |
476 | 825 | 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 | */ | |
479 | 828 | 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 | */ | |
483 | 832 | 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 | */ | |
487 | 836 | m_sound->port_w(space, offset, data); |
488 | 837 | break; |
489 | 838 | 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 | */ | |
494 | 843 | if ((data & 0x01) && !m_bios_disabled) |
495 | 844 | m_bios_disabled = 1; |
496 | 845 | 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 | ||
498 | 900 | case 0xb0: /* Interrupt base vector |
499 | Bit 0-7 - Interrupt base vector | |
500 | */ | |
901 | Bit 0-7 - Interrupt base vector | |
902 | */ | |
501 | 903 | break; |
502 | 904 | case 0xb1: /* Communication byte |
503 | Bit 0-7 - Communication byte | |
504 | */ | |
905 | Bit 0-7 - Communication byte | |
906 | */ | |
505 | 907 | break; |
506 | 908 | 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 | */ | |
516 | 918 | break; |
517 | 919 | 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; | |
527 | 929 | m_ws_portram[0xb1] = 0xff; |
528 | 930 | if (data & 0x80) |
529 | 931 | { |
530 | ||
932 | // m_ws_portram[0xb1] = 0x00; | |
531 | 933 | data |= 0x04; |
532 | 934 | } |
533 | 935 | if (data & 0x20) |
534 | 936 | { |
535 | ||
937 | // data |= 0x01; | |
536 | 938 | } |
537 | 939 | break; |
538 | 940 | 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 | */ | |
546 | 948 | data = data & 0xf0; |
547 | 949 | 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; | |
560 | 962 | 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; | |
572 | 974 | 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(); | |
575 | 977 | break; |
576 | } | |
978 | } | |
577 | 979 | break; |
578 | 980 | 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); | |
589 | 991 | data = m_ws_portram[0xb6]; |
590 | 992 | break; |
591 | 993 | 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 | */ | |
594 | 996 | 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 | */ | |
597 | 999 | break; |
598 | 1000 | 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 | */ | |
601 | 1003 | 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 | */ | |
606 | 1008 | break; |
607 | 1009 | 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 | */ | |
616 | 1018 | if (data & 0x20) |
617 | 1019 | { |
618 | 1020 | UINT16 addr = ( ( ( m_ws_portram[0xbd] << 8 ) | m_ws_portram[0xbc] ) << 1 ) & 0x1FF; |
r241749 | r241750 | |
654 | 1056 | logerror( "Write to unsupported port: %X - %X\n", offset, data ); |
655 | 1057 | break; |
656 | 1058 | } |
657 | ||
1059 | ||
658 | 1060 | /* Update the port value */ |
659 | 1061 | m_ws_portram[offset] = data; |
660 | 1062 | } |
1063 | ||
1064 | ||
1065 | TIMER_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 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
14 | PCB Layout | |
15 | ---------- | |
16 | ||
17 | Maxi-Switch Co. | |
18 | 630107-02 | |
19 | ||
20 | |-----------------------------------------------------------------------| | |
21 | | |--CN1--| CN2 | | |
22 | | 8748 6MHz 74154 * | | |
23 | | | | |
24 | |-----------------------------------------------------------------------| | |
25 | ||
26 | Notes: | |
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 | ||
62 | const device_type XEROX_820_KEYBOARD = &device_creator<xerox_820_keyboard_t>; | |
63 | ||
64 | ||
65 | //------------------------------------------------- | |
66 | // ROM( xerox_820_keyboard ) | |
67 | //------------------------------------------------- | |
68 | ||
69 | ROM_START( xerox_820_keyboard ) | |
70 | ROM_REGION( 0x400, I8748_TAG, 0 ) | |
71 | ROM_LOAD( "820iikey.bin", 0x000, 0x400, CRC(8ea3b39b) SHA1(3f05959f54a558b273567b1b4f0c7cdf46d8d9bf) ) | |
72 | ROM_END | |
73 | ||
74 | ||
75 | //------------------------------------------------- | |
76 | // rom_region - device-specific ROM region | |
77 | //------------------------------------------------- | |
78 | ||
79 | const 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 | ||
89 | static 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) | |
95 | ADDRESS_MAP_END | |
96 | ||
97 | ||
98 | //------------------------------------------------- | |
99 | // MACHINE_DRIVER( xerox_820_keyboard ) | |
100 | //------------------------------------------------- | |
101 | ||
102 | static MACHINE_CONFIG_FRAGMENT( xerox_820_keyboard ) | |
103 | MCFG_CPU_ADD(I8748_TAG, I8048, XTAL_6MHz) | |
104 | MCFG_CPU_IO_MAP(xerox_820_keyboard_io) | |
105 | MACHINE_CONFIG_END | |
106 | ||
107 | ||
108 | //------------------------------------------------- | |
109 | // machine_config_additions - device-specific | |
110 | // machine configurations | |
111 | //------------------------------------------------- | |
112 | ||
113 | machine_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 | ||
123 | INPUT_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 ) | |
223 | INPUT_PORTS_END | |
224 | ||
225 | ||
226 | //------------------------------------------------- | |
227 | // input_ports - device-specific input ports | |
228 | //------------------------------------------------- | |
229 | ||
230 | ioport_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 | ||
245 | xerox_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 | ||
269 | void 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 | ||
281 | void xerox_820_keyboard_t::device_reset() | |
282 | { | |
283 | m_kbstb_cb.resolve_safe(); | |
284 | } | |
285 | ||
286 | void 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 | ||
296 | READ8_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 | ||
306 | WRITE8_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 | ||
333 | READ8_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 | ||
359 | READ8_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 | ||
377 | READ8_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 | ||
387 | WRITE8_MEMBER( xerox_820_keyboard_t::kb_bus_w ) | |
388 | { | |
389 | m_bus = data; | |
390 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
37 | class xerox_820_keyboard_t : public device_t | |
38 | { | |
39 | public: | |
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 | ||
59 | protected: | |
60 | // device-level overrides | |
61 | virtual void device_start(); | |
62 | virtual void device_reset(); | |
63 | virtual void device_reset_after_children(); | |
64 | ||
65 | private: | |
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 | |
86 | extern const device_type XEROX_820_KEYBOARD; | |
87 | ||
88 | ||
89 | ||
90 | #endif |
r241749 | r241750 | |
---|---|---|
297 | 297 | |
298 | 298 | // Milton Bradley |
299 | 299 | microvsn // MicroVision - 1979 |
300 | simon | |
301 | 300 | |
302 | 301 | // Entex |
303 | 302 | advision // Adventurevision |
r241749 | r241750 | |
333 | 332 | // EPOCH |
334 | 333 | gamepock // Epoch Game Pocket Computer |
335 | 334 | |
336 | // Bit Corp | |
337 | gamate // Bit Corp Gamate | |
338 | ||
339 | 335 | // KOEI |
340 | 336 | pasogo // KOEI PasoGo |
341 | 337 | |
r241749 | r241750 | |
2478 | 2474 | vax785 |
2479 | 2475 | ms0515 |
2480 | 2476 | ie15 |
2481 | dvk_ksm | |
2482 | 2477 | asmapro |
2483 | 2478 | asma2k |
2484 | 2479 | altos5 |
r241749 | r241750 | |
---|---|---|
425 | 425 | MACHINES += LDVP931 |
426 | 426 | MACHINES += LH5810 |
427 | 427 | MACHINES += LINFLASH |
428 | #MACHINES += LPCI | |
429 | 428 | MACHINES += LSI53C810 |
430 | 429 | MACHINES += M68307 |
431 | 430 | MACHINES += M68340 |
r241749 | r241750 | |
479 | 478 | MACHINES += PC_LPT |
480 | 479 | MACHINES += PCCARD |
481 | 480 | MACHINES += PCF8593 |
481 | #MACHINES += PCI | |
482 | 482 | MACHINES += PCKEYBRD |
483 | 483 | MACHINES += PIC8259 |
484 | 484 | MACHINES += PIT8253 |
r241749 | r241750 | |
599 | 599 | BUSES += ISA |
600 | 600 | BUSES += ISBX |
601 | 601 | BUSES += KC |
602 | BUSES += LPCI | |
603 | 602 | BUSES += MACPDS |
604 | 603 | BUSES += MIDI |
605 | 604 | BUSES += MEGADRIVE |
r241749 | r241750 | |
610 | 609 | BUSES += O2 |
611 | 610 | BUSES += ORICEXT |
612 | 611 | BUSES += PCE |
612 | BUSES += PCI | |
613 | 613 | BUSES += PC_JOY |
614 | 614 | BUSES += PC_KBD |
615 | 615 | BUSES += PET |
r241749 | r241750 | |
901 | 901 | $(MAME_MACHINE)/naomim2.o \ |
902 | 902 | $(MAME_MACHINE)/naomim4.o \ |
903 | 903 | $(MAME_MACHINE)/naomirom.o \ |
904 | $(MAME_MACHINE)/315-5881_crypt.o \ | |
905 | 904 | $(MAME_VIDEO)/powervr2.o \ |
906 | 905 | $(MAME_DRIVERS)/neogeo.o \ |
907 | 906 | $(MAME_MACHINE)/neoboot.o \ |
r241749 | r241750 | |
960 | 959 | $(MESS_DRIVERS)/apricotf.o \ |
961 | 960 | $(MESS_DRIVERS)/apricotp.o \ |
962 | 961 | $(MESS_MACHINE)/apricotkb.o \ |
963 | $(MESS_DRIVERS)/victor9k.o $(MESS_MACHINE)/victor9kb.o | |
962 | $(MESS_DRIVERS)/victor9k.o $(MESS_MACHINE)/victor9kb.o \ | |
964 | 963 | |
965 | 964 | $(MESSOBJ)/adc.a: \ |
966 | 965 | $(MESS_DRIVERS)/super6.o \ |
r241749 | r241750 | |
1030 | 1029 | $(MESSOBJ)/bandai.a: \ |
1031 | 1030 | $(MESS_DRIVERS)/sv8000.o \ |
1032 | 1031 | $(MESS_DRIVERS)/rx78.o \ |
1033 | $(MESS_DRIVERS)/wswan.o $(MESS_AUDIO)/wswan_snd.o $(MESS_MACHINE)/wswan.o $(MESS_VIDEO)/wswan | |
1032 | $(MESS_DRIVERS)/wswan.o $(MESS_AUDIO)/wswan_snd.o $(MESS_MACHINE)/wswan.o $(MESS_VIDEO)/wswan.o \ | |
1034 | 1033 | |
1035 | 1034 | $(MESSOBJ)/be.a: \ |
1036 | 1035 | $(MESS_DRIVERS)/bebox.o $(MESS_MACHINE)/bebox.o \ |
r241749 | r241750 | |
1180 | 1179 | |
1181 | 1180 | $(MESSOBJ)/elektrka.a: \ |
1182 | 1181 | $(MESS_DRIVERS)/bk.o $(MESS_MACHINE)/bk.o $(MESS_VIDEO)/bk.o \ |
1183 | $(MESS_DRIVERS)/dvk_ksm.o $(MESS_MACHINE)/ms7004.o \ | |
1184 | 1182 | $(MESS_DRIVERS)/mk85.o \ |
1185 | 1183 | $(MESS_DRIVERS)/mk90.o \ |
1186 | 1184 | |
r241749 | r241750 | |
1353 | 1351 | |
1354 | 1352 | $(MESSOBJ)/mb.a: \ |
1355 | 1353 | $(MESS_DRIVERS)/microvsn.o \ |
1356 | $(MESS_DRIVERS)/simon.o \ | |
1357 | 1354 | |
1358 | 1355 | $(MESSOBJ)/mchester.a: \ |
1359 | 1356 | $(MESS_DRIVERS)/ssem.o \ |
r241749 | r241750 | |
1832 | 1829 | $(MESS_DRIVERS)/jupiter.o \ |
1833 | 1830 | |
1834 | 1831 | $(MESSOBJ)/xerox.a: \ |
1835 | $(MESS_DRIVERS)/xerox820.o | |
1832 | $(MESS_DRIVERS)/xerox820.o \ | |
1836 | 1833 | $(MESS_DRIVERS)/bigbord2.o \ |
1837 | 1834 | $(MESS_DRIVERS)/alto2.o \ |
1838 | 1835 | |
r241749 | r241750 | |
1899 | 1896 | $(MESS_DRIVERS)/fc100.o \ |
1900 | 1897 | $(MESS_DRIVERS)/fk1.o \ |
1901 | 1898 | $(MESS_DRIVERS)/ft68m.o \ |
1902 | $(MESS_DRIVERS)/gamate.o \ | |
1903 | 1899 | $(MESS_DRIVERS)/gameking.o \ |
1904 | 1900 | $(MESS_DRIVERS)/gimix.o \ |
1905 | 1901 | $(MESS_DRIVERS)/grfd2301.o \ |
r241749 | r241750 | |
2125 | 2121 | $(MESS_DRIVERS)/sdk85.o: $(MESS_LAYOUT)/sdk85.lh |
2126 | 2122 | $(MESS_DRIVERS)/sdk86.o: $(MESS_LAYOUT)/sdk86.lh |
2127 | 2123 | $(MESS_DRIVERS)/selz80.o: $(MESS_LAYOUT)/selz80.lh |
2128 | $(MESS_DRIVERS)/simon.o: $(MESS_LAYOUT)/simon.lh | |
2129 | 2124 | $(MESS_DRIVERS)/sitcom.o: $(MESS_LAYOUT)/sitcom.lh |
2130 | 2125 | $(MESS_DRIVERS)/slc1.o: $(MESS_LAYOUT)/slc1.lh |
2131 | 2126 | $(MESS_DRIVERS)/sms.o: $(MESS_LAYOUT)/sms1.lh |
r241749 | r241750 | |
---|---|---|
20 | 20 | #include "corestr.h" |
21 | 21 | |
22 | 22 | #include "formats/a26_cas.h" |
23 | #include "formats/ace_tap.h" | |
24 | #include "formats/adam_cas.h" | |
25 | 23 | #include "formats/apf_apt.h" |
26 | 24 | #include "formats/cbm_tap.h" |
27 | 25 | #include "formats/cgen_cas.h" |
28 | 26 | #include "formats/coco_cas.h" |
29 | 27 | #include "formats/csw_cas.h" |
30 | #include "formats/fm7_cas.h" | |
31 | 28 | #include "formats/fmsx_cas.h" |
32 | 29 | #include "formats/gtp_cas.h" |
33 | 30 | #include "formats/hect_tap.h" |
31 | #include "formats/ace_tap.h" | |
32 | #include "formats/adam_cas.h" | |
34 | 33 | #include "formats/kc_cas.h" |
35 | 34 | #include "formats/kim1_cas.h" |
36 | 35 | #include "formats/lviv_lvt.h" |
37 | 36 | #include "formats/mz_cas.h" |
38 | 37 | #include "formats/orao_cas.h" |
39 | 38 | #include "formats/oric_tap.h" |
40 | #include "formats/p6001_cas.h" | |
41 | #include "formats/phc25_cas.h" | |
42 | 39 | #include "formats/pmd_cas.h" |
43 | 40 | #include "formats/primoptp.h" |
44 | 41 | #include "formats/rk_cas.h" |
45 | 42 | #include "formats/sc3000_bit.h" |
46 | #include "formats/sol_cas.h" | |
47 | #include "formats/sorc_cas.h" | |
48 | 43 | #include "formats/sord_cas.h" |
49 | #include "formats/spc1000_cas.h" | |
50 | 44 | #include "formats/svi_cas.h" |
51 | 45 | #include "formats/thom_cas.h" |
52 | 46 | #include "formats/trs_cas.h" |
r241749 | r241750 | |
56 | 50 | #include "formats/vg5k_cas.h" |
57 | 51 | #include "formats/vt_cas.h" |
58 | 52 | #include "formats/x07_cas.h" |
59 | #include "formats/x1_tap.h" | |
60 | 53 | #include "formats/zx81_p.h" |
61 | 54 | |
62 | 55 | struct SupportedCassetteFormats |
r241749 | r241750 | |
67 | 60 | }; |
68 | 61 | |
69 | 62 | const 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"}, | |
71 | 65 | {"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"}, | |
77 | 69 | {"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"}, | |
84 | 75 | {"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"}, | |
95 | 83 | {"rku", rku_cassette_formats ,"UT-88"}, |
96 | 84 | {"rk8", rk8_cassette_formats ,"Mikro-80"}, |
97 | 85 | {"rks", rks_cassette_formats ,"Specialist"}, |
98 | 86 | {"rko", rko_cassette_formats ,"Orion"}, |
99 | 87 | {"rkr", rkr_cassette_formats ,"Radio-86RK"}, |
100 | {"rka", rka_cassette_formats ," | |
88 | {"rka", rka_cassette_formats ,"Apogee"}, | |
101 | 89 | {"rkm", rkm_cassette_formats ,"Mikrosha"}, |
102 | {"rkp", rkp_cassette_formats ," | |
90 | {"rkp", rkp_cassette_formats ,"Partner"}, | |
103 | 91 | {"sc3000", sc3000_cassette_formats ,"Sega SC-3000"}, |
104 | {"sol20", sol20_cassette_formats ,"PTC SOL-20"}, | |
105 | {"sorcerer", sorcerer_cassette_formats ,"Exidy Sorcerer"}, | |
106 | 92 | {"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"}, | |
110 | 96 | {"trs80l2", trs80l2_cassette_formats ,"TRS-80 Level 2"}, |
111 | 97 | {"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"}, | |
113 | 100 | {"uef", uef_cassette_formats ,"Acorn Electron"}, |
114 | {"vg5k", vg5k_cassette_formats ," | |
101 | {"vg5k", vg5k_cassette_formats ,"VG 5000 k7"}, | |
115 | 102 | {"vtech1", vtech1_cassette_formats ,"Video Technology Laser 110-310"}, |
116 | 103 | {"vtech2", vtech2_cassette_formats ,"Video Technology Laser 350-700"}, |
117 | 104 | {"x07", x07_cassette_formats ,"Canon X-07"}, |
118 | {"x1", x1_cassette_formats ,"Sharp X1"}, | |
119 | {"zx80_o", zx80_o_format ,"Sinclair ZX80"}, | |
120 | 105 | {"zx81_p", zx81_p_format ,"Sinclair ZX81"}, |
121 | ||
122 | ||
123 | ||
106 | {"zx80_o", zx80_o_format ,"Sinclair ZX80"}, | |
124 | 107 | {NULL,NULL,NULL} |
125 | 108 | }; |
126 | 109 |
r0 | r241750 | |
---|---|---|
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 | ||
14 | void 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 | ||
34 | void 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 | ||
125 | void 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 | ||
213 | void 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 | ||
301 | void 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 | ||
389 | void 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 | ||
507 | void 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 | ||
573 | void wswan_state::video_start() | |
574 | { | |
575 | machine().first_screen()->register_screen_bitmap(m_bitmap); | |
576 | save_item(NAME(m_bitmap)); | |
577 | } | |
578 | ||
579 | UINT32 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 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
18 | const device_type WSWAN_VIDEO = &device_creator<wswan_video_device>; | |
19 | ||
20 | ||
21 | wswan_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 | ||
28 | void 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 | ||
79 | void 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! | |
106 | static 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 | ||
127 | void 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 | ||
180 | void 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 | ||
191 | void 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 | ||
211 | void 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 | ||
320 | void 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 | ||
428 | void 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 | ||
536 | void 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 | ||
643 | void 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 | ||
788 | void 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 | ||
846 | UINT32 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 | ||
853 | READ8_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 | ||
889 | WRITE8_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 | ||
1139 | void 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 | ||
1203 | READ8_MEMBER(wswan_video_device::vram_r) | |
1204 | { | |
1205 | return m_vram[offset]; | |
1206 | } | |
1207 | ||
1208 | WRITE8_MEMBER(wswan_video_device::vram_w) | |
1209 | { | |
1210 | m_vram[offset] = data; | |
1211 | } |
r241749 | r241750 | |
---|---|---|
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 | ||
17 | enum | |
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 | ||
28 | typedef device_delegate<void (int irq)> wswan_video_irq_cb_delegate; | |
29 | #define WSWAN_VIDEO_IRQ_CB_MEMBER(_name) void _name(int irq) | |
30 | ||
31 | typedef 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 | ||
44 | class wswan_video_device : public device_t | |
45 | { | |
46 | public: | |
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 | ||
62 | protected: | |
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 | ||
144 | extern const device_type WSWAN_VIDEO; | |
145 | ||
146 | ||
147 | #endif |
r241749 | r241750 | |
---|---|---|
6 | 6 | .\" Cesare Falco <c.falco@ubuntu.com>, February 2011 |
7 | 7 | .\" |
8 | 8 | .\" |
9 | .TH CASTOOL 1 2014- | |
9 | .TH CASTOOL 1 2014-07-31 0.154 "MESS Generic cassette manipulation tool" | |
10 | 10 | .\" |
11 | 11 | .\" |
12 | 12 | .\" NAME chapter |
r241749 | r241750 | |
---|---|---|
6 | 6 | .\" Ashley T. Howes <debiandev@ashleyhowes.com>, February 2005 |
7 | 7 | .\" updated by Cesare Falco <c.falco@ubuntu.com>, February 2007 |
8 | 8 | .\" |
9 | .TH CHDMAN 1 2014- | |
9 | .TH CHDMAN 1 2014-07-31 0.154 "MAME Compressed Hunks of Data (CHD) manager" | |
10 | 10 | .\" |
11 | 11 | .\" NAME chapter |
12 | 12 | .SH NAME |
r241749 | r241750 | |
---|---|---|
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 | |
14 | floptool \- 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 | |
26 | is a tool for the maintenance and manipulation of floppy disk | |
27 | images that MESS users need to deal with. | |
28 | .\" | |
29 | .\" | |
30 | .\" COMMANDS chapter | |
31 | .SH COMMANDS | |
32 | .TP | |
33 | .B identify \fIinputfile\fR [\fIinputfile \fR... ] | |
34 | Determine the format of a floppy disk image. | |
35 | .TP | |
36 | .B convert [\fIinputformat\fR|\fIauto\fR] \fIoutputformat inputfile outputfile | |
37 | Convert 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 | |
47 | mess(6) |
r241749 | r241750 | |
---|---|---|
6 | 6 | .\" Cesare Falco <c.falco@ubuntu.com>, February 2011 |
7 | 7 | .\" |
8 | 8 | .\" |
9 | .TH IMGTOOL 1 2014- | |
9 | .TH IMGTOOL 1 2014-07-31 0.154 "MESS media image manipulation tool" | |
10 | 10 | .\" |
11 | 11 | .\" |
12 | 12 | .\" NAME chapter |
r241749 | r241750 | |
---|---|---|
8 | 8 | .\" References |
9 | 9 | .\" http://aarongiles.com/?p=159 |
10 | 10 | .\" |
11 | .TH JEDUTIL 1 2014- | |
11 | .TH JEDUTIL 1 2014-07-31 0.154 "MAME JEDEC file utilities" | |
12 | 12 | .\" |
13 | 13 | .\" NAME chapter |
14 | 14 | .SH NAME |
r241749 | r241750 | |
---|---|---|
3 | 3 | .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection |
4 | 4 | .\" other parameters are allowed: see man(7), man(1) |
5 | 5 | .\" |
6 | .TH LDRESAMPLE 1 2014- | |
6 | .TH LDRESAMPLE 1 2014-07-31 0.154 "MAME laserdisc audio manipulation tool" | |
7 | 7 | .\" |
8 | 8 | .\" Please adjust this date whenever revising the manpage. |
9 | 9 | .\" |
r241749 | r241750 | |
---|---|---|
5 | 5 | .\" Man page created from source and usage information by |
6 | 6 | .\" Cesare Falco <c.falco@ubuntu.com>, August 2008 |
7 | 7 | .\" |
8 | .TH LDVERIFY 1 2014- | |
8 | .TH LDVERIFY 1 2014-07-31 0.154 "MAME laserdisc data checker" | |
9 | 9 | .\" |
10 | 10 | .\" NAME chapter |
11 | 11 | .SH NAME |
r241749 | r241750 | |
---|---|---|
13 | 13 | .\" and updated by Andrew Burton <burtona@gol.com>, July 2003 |
14 | 14 | .\" |
15 | 15 | .\" |
16 | .TH MAME 6 2014- | |
16 | .TH MAME 6 2014-07-31 0.154 "MAME \- The Multiple Arcade Machine Emulator" | |
17 | 17 | .\" |
18 | 18 | .\" |
19 | 19 | .\" NAME chapter |
r241749 | r241750 | |
933 | 933 | .B \-natural, \-nat |
934 | 934 | Allows user to specify whether or not to use a natural keyboard. |
935 | 935 | This allows you to start your game or system in a 'native' mode, depending |
936 | on your region, allowing compatibility for non\-"QWERTY" style keyboards. | |
937 | The default is OFF (\-nonatural). | |
936 | on your region, allowing compatability for non\-"QWERTY" style keyboards. | |
937 | The default is OFF (-nonatural). | |
938 | 938 | .TP |
939 | 939 | .B \-joystick_contradictory |
940 | 940 | Enable contradictory direction digital joystick input at the same time. |
r241749 | r241750 | |
---|---|---|
16 | 16 | .\" http://www.mess.org/ |
17 | 17 | .\" |
18 | 18 | .\" |
19 | .TH MESS 6 2014- | |
19 | .TH MESS 6 2014-07-31 0.154 "The Multiple Emulator Super System (MESS)" | |
20 | 20 | .\" |
21 | 21 | .\" |
22 | 22 | .\" NAME chapter |
r241749 | r241750 | |
935 | 935 | .B \-natural, \-nat |
936 | 936 | Allows user to specify whether or not to use a natural keyboard. |
937 | 937 | This allows you to start your game or system in a 'native' mode, depending |
938 | on your region, allowing compatibility for non\-"QWERTY" style keyboards. | |
939 | The default is OFF (\-nonatural). | |
938 | on your region, allowing compatability for non\-"QWERTY" style keyboards. | |
939 | The default is OFF (-nonatural). | |
940 | 940 | .TP |
941 | 941 | .B \-uimodekey, \-umk |
942 | 942 | Specifies the key used to toggle between full and partial UI mode. |
r241749 | r241750 | |
---|---|---|
9 | 9 | .\" References |
10 | 10 | .\" http://www.mame.net/mamefaq.html |
11 | 11 | .\" |
12 | .TH ROMCMP 1 2014- | |
12 | .TH ROMCMP 1 2014-07-31 0.154 "MAME romset checking tool" | |
13 | 13 | .\" |
14 | 14 | .\" NAME chapter |
15 | 15 | .SH NAME |
r241749 | r241750 | |
---|---|---|
5 | 5 | .\" Man page created from source and usage information |
6 | 6 | .\" Cesare Falco <c.falco@ubuntu.com>, February 2007 |
7 | 7 | .\" |
8 | .TH TESTKEYS 1 2014- | |
8 | .TH TESTKEYS 1 2014-07-31 0.154 "MAME SDL keycode scanner" | |
9 | 9 | .\" |
10 | 10 | .\" NAME chapter |
11 | 11 | .SH NAME |
r241749 | r241750 | |
---|---|---|
83 | 83 | OSDSRC = $(SRC)/osd |
84 | 84 | OSDOBJ = $(OBJ)/osd |
85 | 85 | |
86 | # default to SDL2 for non-OS/2 | |
86 | # default to SDL2 for non-OS/2 builds now | |
87 | 87 | ifndef SDL_LIBVER |
88 | 88 | ifneq ($(TARGETOS),os2) |
89 | ifneq ($(TARGETOS),emscripten) | |
90 | 89 | SDL_LIBVER = sdl2 |
91 | 90 | else |
92 | 91 | SDL_LIBVER = sdl |
93 | 92 | endif |
94 | else | |
95 | SDL_LIBVER = sdl | |
96 | 93 | endif |
97 | endif | |
98 | 94 | |
99 | 95 | ifndef NO_USE_QTDEBUG |
100 | 96 | OBJDIRS += $(OSDOBJ)/modules/debugger/qt |
r241749 | r241750 | |
262 | 258 | NO_USE_XINPUT = 1 |
263 | 259 | NO_USE_MIDI = 1 |
264 | 260 | NO_USE_QTDEBUG = 1 |
265 | DONT_USE_NETWORK = 1 | |
266 | 261 | endif |
267 | 262 | |
268 | 263 | ifeq ($(TARGETOS),macosx) |
r241749 | r241750 | |
784 | 779 | LIBS += -lpcap |
785 | 780 | endif |
786 | 781 | endif |
787 | else | |
788 | OSDOBJS += $(SDLOBJ)/netdev.o | |
789 | 782 | endif |
790 | 783 | |
791 | 784 | #------------------------------------------------- |
https://github.com/mamedev/mame/commit/f9b799e51fdd1dc5e9b425ec149989de5cfbf62e |
Previous | 199869 Revisions | Next |