Previous 199869 Revisions Next

r40677 Thursday 10th September, 2015 at 16:29:28 UTC by Felipe CorrĂȘa da Silva Sanches
Fixing ROM names in the bootleg version of CAPCOM GunSmoke 1985 to refer to the actual labels and PCB references using in this board.
[hash]a7800.xml bbcb_cass.xml bbcb_de_cass.xml bbcb_us_flop.xml bbcmc_flop.xml gameking.xml gameking3.xml gbcolor.xml jaguar.xml msx1_flop.xml msx2_cass.xml msx2_flop.xml msx2p_flop.xml msxr_flop.xml nes.xml pico.xml pro128_cart.xml tutor.xml vc4000.xml
[scripts/src]bus.lua sound.lua
[scripts/target/mame]mess.lua
[src/emu/bus/cpc]cpcexp.h magicsound.c magicsound.h
[src/emu/bus/isa]isa_cards.c isa_cards.h pgc.c pgc.h
[src/emu/cpu/mips]mips3.c mips3dsm.c
[src/emu/sound]315-5641.c 315-5641.h tms5110.c tms5220.c upd7759.c upd7759.h
[src/emu/video]scn2674.c scn2674.h
[src/lib/formats]bbc_dsk.c bbc_dsk.h
[src/mame]arcade.lst mess.lst
[src/mame/drivers]cclimber.c chihiro.c cninja.c gunsmoke.c hng64.c igs_m027.c macrossp.c nmk16.c pgm.c segaxbd.c wc90.c
[src/mame/includes]chihiro.h hng64.h n64.h pgm.h
[src/mame/machine]n64.c nmk004.c pgmcrypt.c pgmcrypt.h pgmprot_orlegend.c xbox.c
[src/mame/video]chihiro.c hng64.c hng64_3d.c tecmo_spr.c tecmo_spr.h
[src/mess/drivers]amstrad.c apple2.c bbc.c n64.c pcd.c segapico.c xbox.c
[src/mess/includes]amstrad.h bbc.h
[src/mess/machine]amstrad.c bbc.c pcd_kbd.c
[src/mess/video]bbc.c pcd.c pcd.h
[src/osd/modules/netdev]pcap.c

trunk/hash/a7800.xml
r249188r249189
23802380      <info name="programmer" value="TEP392" />
23812381      <sharedfeat name="compatibility" value="PAL"/>
23822382      <part name="cart" interface="a7800_cart">
2383         <feature name="slot" value="a78_sg9" />
2384         <dataarea name="rom" size="147456">
2385            <rom name="dkxm_demo_v12_pal.bin" size="147456" crc="9f6c0600" sha1="18409eace880dda3646792f9ec050a87a3b1b382" offset="0" />
2386         </dataarea>
2383      <feature name="slot" value="a78_sg9" />
2384      <dataarea name="rom" size="147456">
2385         <rom name="dkxm_demo_v12_pal.bin" size="147456" crc="9f6c0600" sha1="18409eace880dda3646792f9ec050a87a3b1b382" offset="0" />
2386      </dataarea>
23872387      </part>
23882388   </software>
23892389
r249188r249189
23942394      <info name="programmer" value="TEP392" />
23952395      <sharedfeat name="compatibility" value="NTSC"/>
23962396      <part name="cart" interface="a7800_cart">
2397         <feature name="slot" value="a78_sg9" />
2398         <dataarea name="rom" size="147456">
2399            <rom name="dkxm_demo_v12_ntsc.bin" size="147456" crc="8b06bb4b" sha1="3129cbc91dc8f223f00db5c3273a4a330320be99" offset="0" />
2400         </dataarea>
2397      <feature name="slot" value="a78_sg9" />
2398      <dataarea name="rom" size="147456">
2399         <rom name="dkxm_demo_v12_ntsc.bin" size="147456" crc="8b06bb4b" sha1="3129cbc91dc8f223f00db5c3273a4a330320be99" offset="0" />
2400      </dataarea>
24012401      </part>
24022402   </software>
24032403
r249188r249189
24112411      <info name="programmer" value="TEP392" />
24122412      <sharedfeat name="compatibility" value="PAL"/>
24132413      <part name="cart" interface="a7800_cart">
2414         <feature name="slot" value="a78_sg9" />
2415         <dataarea name="rom" size="147456">
2416            <rom name="dkxm_final_demo_pal_hsc.bin" size="147456" crc="6510b674" sha1="65b723b470d287af51e9888813149c43fb11ac26" offset="0" />
2417         </dataarea>
2414      <feature name="slot" value="a78_sg9" />
2415      <dataarea name="rom" size="147456">
2416         <rom name="dkxm_final_demo_pal_hsc.bin" size="147456" crc="6510b674" sha1="65b723b470d287af51e9888813149c43fb11ac26" offset="0" />
2417      </dataarea>
24182418      </part>
24192419   </software>
24202420
r249188r249189
24252425      <info name="programmer" value="TEP392" />
24262426      <sharedfeat name="compatibility" value="NTSC"/>
24272427      <part name="cart" interface="a7800_cart">
2428         <feature name="slot" value="a78_sg9" />
2429         <dataarea name="rom" size="147456">
2430            <rom name="dkxm_final_demo_ntsc_hsc.bin" size="147456" crc="2c67fea7" sha1="7825c1946e3c7492fa9bbfae33029cd68c0d1135" offset="0" />
2431         </dataarea>
2428      <feature name="slot" value="a78_sg9" />
2429      <dataarea name="rom" size="147456">
2430         <rom name="dkxm_final_demo_ntsc_hsc.bin" size="147456" crc="2c67fea7" sha1="7825c1946e3c7492fa9bbfae33029cd68c0d1135" offset="0" />
2431      </dataarea>
24322432      </part>
24332433   </software>
24342434
r249188r249189
24702470      <publisher>&lt;homebrew&gt;</publisher>
24712471      <info name="programmer" value="TEP392" />
24722472      <part name="cart" interface="a7800_cart">
2473         <feature name="slot" value="a78_sg9" />
2474         <dataarea name="rom" size="147456">
2475            <rom name="dkxm_final_demo.bin" size="0x20000" crc="fd503bd4" sha1="454d754a0c4603323e476d9418f343a6a1a0d017" offset="0x4000" />
2476            <rom size="0x4000" offset="0x0000" loadflag="continue" />
2477         </dataarea>
2473      <feature name="slot" value="a78_sg9" />
2474      <dataarea name="rom" size="147456">
2475         <rom name="dkxm_final_demo.bin" size="0x20000" crc="fd503bd4" sha1="454d754a0c4603323e476d9418f343a6a1a0d017" offset="0x4000" />
2476         <rom size="0x4000" offset="0x0000" loadflag="continue" />
2477      </dataarea>
24782478      </part>
24792479   </software>
24802480
trunk/hash/bbcb_cass.xml
r249188r249189
33243324      <publisher>Visions</publisher>
33253325      <info name="usage" value="Load with *RUN" />
33263326      <part name="cass1" interface="bbc_cass">
3327         <dataarea name="cass" size="9319">
3328            <rom name="demolator_run(visions).uef" size="9319" crc="5dc43e5b" sha1="d7d88ca1b651926104c0833e257e967e0d47dfc2" offset="0" />
3327         <dataarea name="cass" size="9339">
3328            <rom name="demolator_infinitelives_run(visions).uef" size="9339" crc="8c638151" sha1="85aced0345aec14e7750c5daa290f1cb642b1961" offset="0" />
33293329         </dataarea>
33303330      </part>
33313331      <part name="cass2" interface="bbc_cass">
3332         <dataarea name="cass" size="9339">
3333            <rom name="demolator_infinitelives_run(visions).uef" size="9339" crc="8c638151" sha1="85aced0345aec14e7750c5daa290f1cb642b1961" offset="0" />
3332         <dataarea name="cass" size="9319">
3333            <rom name="demolator_run(visions).uef" size="9319" crc="5dc43e5b" sha1="d7d88ca1b651926104c0833e257e967e0d47dfc2" offset="0" />
33343334         </dataarea>
33353335      </part>
33363336   </software>
r249188r249189
57105710      </part>
57115711   </software>
57125712
5713   <software name="hopperg" cloneof="hopper">
5714      <description>Hopper (Ger)</description>
5715      <year>1983</year>
5716      <publisher>Acornsoft</publisher>
5717      <part name="cass" interface="bbc_cass">
5718         <dataarea name="cass" size="8112">
5719            <rom name="hopper-german(1983)(acornsoft)(g23).uef" size="8112" crc="3972b897" sha1="b5f7897dcad92b758d0473ac840f2b41e8049ef4" offset="0" />
5720         </dataarea>
5721      </part>
5722   </software>
5723
57135724   <software name="hopper21" cloneof="hopper">
57145725      <description>Hopper v2.1</description>
57155726      <year>1983</year>
r249188r249189
74197430      </part>
74207431   </software>
74217432
7433   <software name="meteorsg" cloneof="meteors">
7434      <description>Meteors (Ger)</description>
7435      <year>1982</year>
7436      <publisher>Acornsoft</publisher>
7437      <part name="cass" interface="bbc_cass">
7438         <dataarea name="cass" size="6610">
7439            <rom name="meteors-german(1982)(acornsoft)(g13).uef" size="6610" crc="0bb65e55" sha1="238ba733b0094942dd477ca49754249284741c40" offset="0" />
7440         </dataarea>
7441      </part>
7442   </software>
7443
74227444   <software name="meteorssc" cloneof="meteors">
74237445      <description>Meteors (The Acornsoft Hits Vol.2)</description>
74247446      <year>1987</year>
r249188r249189
77237745      </part>
77247746   </software>
77257747
7748   <software name="monstersg" cloneof="monsters">
7749      <description>Monsters (Ger)</description>
7750      <year>1982</year>
7751      <publisher>Acornsoft</publisher>
7752      <part name="cass" interface="bbc_cass">
7753         <dataarea name="cass" size="7890">
7754            <rom name="monsters-german(1982)(acornsoft)(g03).uef" size="7890" crc="37838358" sha1="c3c698a8174d0b67d6ee563bcecb9a42354ae3fc" offset="0" />
7755         </dataarea>
7756      </part>
7757   </software>
7758
77267759   <software name="monsterspias" cloneof="monsters">
77277760      <description>Monsters (Play It Again Sam 11)</description>
77287761      <year>1989</year>
r249188r249189
88568889      </part>
88578890   </software>
88588891
8892   <software name="planetoidg" cloneof="plantoid">
8893      <description>Planetoid (Ger)</description>
8894      <year>1982</year>
8895      <publisher>Acornsoft</publisher>
8896      <part name="cass" interface="bbc_cass">
8897         <dataarea name="cass" size="8515">
8898            <rom name="planetoid-german(1982)(acornsoft)(g15).uef" size="8515" crc="bfaa94f8" sha1="fc8cb246c19cd717f7684074979ea5cb6d98e4fb" offset="0" />
8899         </dataarea>
8900      </part>
8901   </software>
8902
88598903   <software name="plantoidsc" cloneof="plantoid">
88608904      <description>Planetoid (The Acornsoft Hits Vol.1)</description>
88618905      <year>1987</year>
r249188r249189
97849828      </part>
97859829   </software>
97869830
9831   <software name="rocketrag" cloneof="rocketra">
9832      <description>Rocket Raid (Ger)</description>
9833      <year>1982</year>
9834      <publisher>Acornsoft</publisher>
9835      <part name="cass" interface="bbc_cass">
9836         <dataarea name="cass" size="7747">
9837            <rom name="rocketraid-german(1982)(acornsoft)(g05).uef" size="7747" crc="3a6ccbd0" sha1="afd7318589bb419606b25b575c7488369acf2c9b" offset="0" />
9838         </dataarea>
9839      </part>
9840   </software>
9841
97879842   <software name="rocketrasc" cloneof="rocketra">
97889843      <description>Rocket Raid (The Acornsoft Hits Vol.1)</description>
97899844      <year>1987</year>
r249188r249189
1066610721      </part>
1066710722   </software>
1066810723
10724   <software name="snapperg" cloneof="snapper">
10725      <description>Snapper (Ger)</description>
10726      <year>1982</year>
10727      <publisher>Acornsoft</publisher>
10728      <part name="cass" interface="bbc_cass">
10729         <dataarea name="cass" size="7174">
10730            <rom name="snapper-german(1982)(acornsoft)(g04).uef" size="7174" crc="6ffbe578" sha1="0cc295dba1b771475ae8e71340b6ce4f885040e9" offset="0" />
10731         </dataarea>
10732      </part>
10733   </software>
10734
1066910735   <software name="snapperpias" cloneof="snapper">
1067010736      <description>Snapper (Play It Again Sam 7)</description>
1067110737      <year>1988</year>
r249188r249189
1183611902      </part>
1183711903   </software>
1183811904
11905   <software name="superinvg" cloneof="superinv">
11906      <description>Super Invaders (Ger)</description>
11907      <year>1982</year>
11908      <publisher>Acornsoft</publisher>
11909      <part name="cass" interface="bbc_cass">
11910         <dataarea name="cass" size="7812">
11911            <rom name="superinvaders-german(1982)(acornsoft)(g16).uef" size="7812" crc="382b3412" sha1="4361fba1203b07fb05f62273ac02db403a3f38ce" offset="0" />
11912         </dataarea>
11913      </part>
11914   </software>
11915
1183911916   <software name="superinv">
1184011917      <description>Super Invaders</description>
1184111918      <year>1982</year>
r249188r249189
1341713494      </part>
1341813495   </software>
1341913496
13497   <software name="welcomeg" cloneof="welcome">
13498      <description>Welcome (Ger)</description>
13499      <year>1981</year>
13500      <publisher>BBC Soft</publisher>
13501      <part name="cass" interface="bbc_cass">
13502         <dataarea name="cass" size="48009">
13503            <rom name="welcome-german(1981)(bbc).uef" size="48009" crc="a2d78451" sha1="b0ff9fd8a51412dee878e763fe0aa54deef2c962" offset="0" />
13504         </dataarea>
13505      </part>
13506   </software>
13507
1342013508   <software name="welcome">
1342113509      <description>Welcome</description>
1342213510      <year>1981</year>
r249188r249189
1401114099      </part>
1401214100   </software>
1401314101
14102   <software name="dskdiaryg" cloneof="dskdiary">
14103      <description>Desk Diary (Ger)</description>
14104      <year>198?</year>
14105      <publisher>Acornsoft</publisher>
14106      <part name="cass" interface="bbc_cass">
14107         <dataarea name="cass" size="9739">
14108            <rom name="deskdiary-german(198x)(acornsoft)(b01).uef" size="9739" crc="7ef32892" sha1="ec3910be9c7b5c1729586ba88a88173d08dcf34b" offset="0" />
14109         </dataarea>
14110      </part>
14111   </software>
14112
1401414113   <software name="dskdiary">
1401514114      <description>Desk Diary</description>
1401614115      <year>198?</year>
r249188r249189
1465414753      </part>
1465514754   </software>
1465614755
14756   <software name="numberbag" cloneof="numberba">
14757      <description>Number Balance (Ger)</description>
14758      <year>198?</year>
14759      <publisher>Acornsoft/ESM</publisher>
14760      <part name="cass" interface="bbc_cass">
14761         <dataarea name="cass" size="7727">
14762            <rom name="numberbalance-german(acornsoftesm).uef" size="7727" crc="2461e7a8" sha1="7b2ce801a3213fcac582b173d65aaa347555a2c4" offset="0" />
14763         </dataarea>
14764      </part>
14765   </software>
14766
1465714767   <software name="numberba">
1465814768      <description>Number Balance</description>
1465914769      <year>198?</year>
r249188r249189
1474214852      </part>
1474314853   </software>
1474414854
14855   <software name="sentseqg" cloneof="sentseq">
14856      <description>Sentence Sequencing (Ger)</description>
14857      <year>198?</year>
14858      <publisher>Acornsoft</publisher>
14859      <part name="cass" interface="bbc_cass">
14860         <dataarea name="cass" size="10769">
14861            <rom name="sentencesequencing-german(198x)(acornsoft)(e07).uef" size="10769" crc="28955bf7" sha1="f6422764589cbe5d1acefca2d90f288b95e84280" offset="0" />
14862         </dataarea>
14863      </part>
14864   </software>
14865
1474514866   <software name="sentseq">
1474614867      <description>Sentence Sequencing</description>
1474714868      <year>198?</year>
r249188r249189
1484614967      </part>
1484714968   </software>
1484814969
14970   <software name="treeknowg" cloneof="treeknow">
14971      <description>Tree Of Knowledge (Ger)</description>
14972      <year>198?</year>
14973      <publisher>Acornsoft</publisher>
14974      <part name="cass" interface="bbc_cass">
14975         <dataarea name="cass" size="11319">
14976            <rom name="treeofknowledge-german(198x)(acornsoft)(e04).uef" size="11319" crc="c1b66b33" sha1="53bd97ccc48c5b00a1e57728800e786b6a9d30d9" offset="0" />
14977         </dataarea>
14978      </part>
14979   </software>
14980
1484914981   <software name="treeknow">
1485014982      <description>Tree Of Knowledge</description>
1485114983      <year>198?</year>
r249188r249189
1494515077      </part>
1494615078   </software>
1494715079
15080   <software name="jars">
15081      <description>Jars (Ger)</description>
15082      <year>198?</year>
15083      <publisher>Acornsoft</publisher>
15084      <part name="cass" interface="bbc_cass">
15085         <dataarea name="cass" size="8325">
15086            <rom name="jars-german(198x)(acornsoft)(e15).uef" size="8325" crc="943ba245" sha1="5a911796040eb708926d5c9e1aecb3d0e7ea546b" offset="0" />
15087         </dataarea>
15088      </part>
15089   </software>
15090
1494815091   <software name="spooky">
1494915092      <description>Spooky Manor</description>
1495015093      <year>198?</year>
trunk/hash/bbcb_de_cass.xml
r249188r249189
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- BBC Micro Model B (German) Tapes -->
5
6<!-- I believe all the Cassette images here are original, so some require the manuals for additional copy protection -->
7
8<!-- Loading Instructions:
9
10      If the system has a disk drive (which the BBC Model B does by default in MESS) you must type *TAPE, then use the relevant command to load the software, usually CHAIN"" or *RUN, though some earlier titles from Micro Power require *LOAD.
11
12      To start/stop the tape you must use the MESS menus, so you'll have to turn full keyboard mode off with Scroll Lock, then navigate the menus, turning Scroll Lock back on when you're finished.
13-->
14
15<softwarelist name="bbcb_de_cass" description="BBC Micro Model B (German) cassettes">
16
17   <!-- Games -->
18
19   <software name="hopperg">
20      <description>Hopper (Ger)</description>
21      <year>1983</year>
22      <publisher>Acornsoft</publisher>
23      <part name="cass" interface="bbc_cass">
24         <dataarea name="cass" size="8112">
25            <rom name="hopper-german(1983)(acornsoft)(g23).uef" size="8112" crc="3972b897" sha1="b5f7897dcad92b758d0473ac840f2b41e8049ef4" offset="0" />
26         </dataarea>
27      </part>
28   </software>
29
30   <software name="meteorsg">
31      <description>Meteors (Ger)</description>
32      <year>1982</year>
33      <publisher>Acornsoft</publisher>
34      <part name="cass" interface="bbc_cass">
35         <dataarea name="cass" size="6610">
36            <rom name="meteors-german(1982)(acornsoft)(g13).uef" size="6610" crc="0bb65e55" sha1="238ba733b0094942dd477ca49754249284741c40" offset="0" />
37         </dataarea>
38      </part>
39   </software>
40
41   <software name="monsterg">
42      <description>Monsters (Ger)</description>
43      <year>1982</year>
44      <publisher>Acornsoft</publisher>
45      <part name="cass" interface="bbc_cass">
46         <dataarea name="cass" size="7890">
47            <rom name="monsters-german(1982)(acornsoft)(g03).uef" size="7890" crc="37838358" sha1="c3c698a8174d0b67d6ee563bcecb9a42354ae3fc" offset="0" />
48         </dataarea>
49      </part>
50   </software>
51
52   <software name="planetog">
53      <description>Planetoid (Ger)</description>
54      <year>1982</year>
55      <publisher>Acornsoft</publisher>
56      <part name="cass" interface="bbc_cass">
57         <dataarea name="cass" size="8515">
58            <rom name="planetoid-german(1982)(acornsoft)(g15).uef" size="8515" crc="bfaa94f8" sha1="fc8cb246c19cd717f7684074979ea5cb6d98e4fb" offset="0" />
59         </dataarea>
60      </part>
61   </software>
62
63   <software name="rocketrg">
64      <description>Rocket Raid (Ger)</description>
65      <year>1982</year>
66      <publisher>Acornsoft</publisher>
67      <part name="cass" interface="bbc_cass">
68         <dataarea name="cass" size="7747">
69            <rom name="rocketraid-german(1982)(acornsoft)(g05).uef" size="7747" crc="3a6ccbd0" sha1="afd7318589bb419606b25b575c7488369acf2c9b" offset="0" />
70         </dataarea>
71      </part>
72   </software>
73
74   <software name="snapperg">
75      <description>Snapper (Ger)</description>
76      <year>1982</year>
77      <publisher>Acornsoft</publisher>
78      <part name="cass" interface="bbc_cass">
79         <dataarea name="cass" size="7174">
80            <rom name="snapper-german(1982)(acornsoft)(g04).uef" size="7174" crc="6ffbe578" sha1="0cc295dba1b771475ae8e71340b6ce4f885040e9" offset="0" />
81         </dataarea>
82      </part>
83   </software>
84
85   <software name="supering">
86      <description>Super Invaders (Ger)</description>
87      <year>1982</year>
88      <publisher>Acornsoft</publisher>
89      <part name="cass" interface="bbc_cass">
90         <dataarea name="cass" size="7812">
91            <rom name="superinvaders-german(1982)(acornsoft)(g16).uef" size="7812" crc="382b3412" sha1="4361fba1203b07fb05f62273ac02db403a3f38ce" offset="0" />
92         </dataarea>
93      </part>
94   </software>
95
96   <software name="welcomeg">
97      <description>Welcome (Ger)</description>
98      <year>1981</year>
99      <publisher>BBC Soft</publisher>
100      <part name="cass" interface="bbc_cass">
101         <dataarea name="cass" size="48009">
102            <rom name="welcome-german(1981)(bbc).uef" size="48009" crc="a2d78451" sha1="b0ff9fd8a51412dee878e763fe0aa54deef2c962" offset="0" />
103         </dataarea>
104      </part>
105   </software>
106
107   <!-- Business -->
108
109   <software name="dskdiarg">
110      <description>Desk Diary (Ger)</description>
111      <year>198?</year>
112      <publisher>Acornsoft</publisher>
113      <part name="cass" interface="bbc_cass">
114         <dataarea name="cass" size="9739">
115            <rom name="deskdiary-german(198x)(acornsoft)(b01).uef" size="9739" crc="7ef32892" sha1="ec3910be9c7b5c1729586ba88a88173d08dcf34b" offset="0" />
116         </dataarea>
117      </part>
118   </software>
119
120   <!-- Educational -->
121
122   <software name="numberbg">
123      <description>Number Balance (Ger)</description>
124      <year>198?</year>
125      <publisher>Acornsoft/ESM</publisher>
126      <part name="cass" interface="bbc_cass">
127         <dataarea name="cass" size="7727">
128            <rom name="numberbalance-german(acornsoftesm).uef" size="7727" crc="2461e7a8" sha1="7b2ce801a3213fcac582b173d65aaa347555a2c4" offset="0" />
129         </dataarea>
130      </part>
131   </software>
132
133   <software name="sentseqg">
134      <description>Sentence Sequencing (Ger)</description>
135      <year>198?</year>
136      <publisher>Acornsoft</publisher>
137      <part name="cass" interface="bbc_cass">
138         <dataarea name="cass" size="10769">
139            <rom name="sentencesequencing-german(198x)(acornsoft)(e07).uef" size="10769" crc="28955bf7" sha1="f6422764589cbe5d1acefca2d90f288b95e84280" offset="0" />
140         </dataarea>
141      </part>
142   </software>
143
144   <software name="treeknog">
145      <description>Tree Of Knowledge (Ger)</description>
146      <year>198?</year>
147      <publisher>Acornsoft</publisher>
148      <part name="cass" interface="bbc_cass">
149         <dataarea name="cass" size="11319">
150            <rom name="treeofknowledge-german(198x)(acornsoft)(e04).uef" size="11319" crc="c1b66b33" sha1="53bd97ccc48c5b00a1e57728800e786b6a9d30d9" offset="0" />
151         </dataarea>
152      </part>
153   </software>
154
155   <software name="jars">
156      <description>Jars (Ger)</description>
157      <year>198?</year>
158      <publisher>Acornsoft</publisher>
159      <part name="cass" interface="bbc_cass">
160         <dataarea name="cass" size="8325">
161            <rom name="jars-german(198x)(acornsoft)(e15).uef" size="8325" crc="943ba245" sha1="5a911796040eb708926d5c9e1aecb3d0e7ea546b" offset="0" />
162         </dataarea>
163      </part>
164   </software>
165
166</softwarelist>
trunk/hash/bbcb_us_flop.xml
r249188r249189
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- BBC Micro Model B (US) Disks -->
5
6<!-- Loading Instructions:
7
8      Hold down the SHIFT key and press and release the BREAK key.
9-->
10
11<softwarelist name="bbcb_us_flop" description="BBC Micro Model B (US) disks">
12
13   <software name="intrutil">
14      <description>Introductory and Utilities Disk</description>
15      <year>1983</year>
16      <publisher>Acorn</publisher>
17      <info name="protection" value="none" />
18      <part name="flop1" interface="floppy_5_25">
19         <dataarea name="flop" size="204800">
20            <rom name="introductory_utils(1983)(acorn).ssd" size="204800" crc="60612fc2" sha1="037f7c3499547d5ac5f88e812d7765ccaf27d6e1" offset="0" />
21         </dataarea>
22      </part>
23   </software>
24
25</softwarelist>
trunk/hash/bbcmc_flop.xml
r249188r249189
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3
4<!-- BBC Master Compact Disks -->
5
6<!-- Loading Instructions:
7
8      Hold down the SHIFT key and press and release the BREAK key.
9-->
10
11<softwarelist name="bbcmc_flop" description="BBC Master Compact disks">
12
13   <software name="welcome">
14      <description>BBC Master Compact Welcome Disc</description>
15      <year>1986</year>
16      <publisher>Acorn</publisher>
17      <info name="protection" value="none" />
18      <part name="flop1" interface="floppy_3_5">
19         <dataarea name="flop" size="655360">
20            <rom name="welcome_compact.adl" size="655360" crc="9d747205" sha1="04cfd6d1e08e8f695befb2948e27d63fd7842b8f" offset="0" />
21         </dataarea>
22      </part>
23   </software>
24
25</softwarelist>
trunk/hash/gameking.xml
r249188r249189
66
77<softwarelist name="gameking" description="TimeTop GameKing cartridges">
88
9   <software name="4in1_01" supported="no">
10      <description>4in1 - AirWar, DeadShot, Challenge, Speedboat</description>
9   <software name="4in1" supported="no">
10      <description>4 in 1 No. 10</description>
1111      <year>200?</year>
1212      <publisher>TimeTop</publisher>
1313      <part name="cart" interface="gameking_cart">
1414         <dataarea name="rom" size="524288">
15            <rom name="gk_airwar_deadshot_challenge_speedboat.gk" size="524288" crc="b366be5d" sha1="66e565640eb86a50c5a0fc8b8c62deea3e99b3a7" offset="0x00000" />
16         </dataarea>
17      </part>
18   </software>
19
20   <software name="4in1_02" supported="no">
21      <description>4in1 - Chaser, Blaster, StarWars, Nagual</description>
22      <year>200?</year>
23      <publisher>TimeTop</publisher>
24      <part name="cart" interface="gameking_cart">
25         <dataarea name="rom" size="524288">
26            <rom name="gk_4in1_chaser_blaster_starwars_nagual.gk" size="524288" crc="8a49e7ca" sha1="5c40c158564932184b14a5f481f7053aa00811e0" offset="0x00000" />
27         </dataarea>
28      </part>
29   </software>
30
31   <software name="4in1_03" supported="no">
32      <description>4in1 - DraculaZone, Hero, PocketTank, StarChazi</description>
33      <year>200?</year>
34      <publisher>TimeTop</publisher>
35      <part name="cart" interface="gameking_cart">
36         <dataarea name="rom" size="524288">
37            <rom name="gk_4in1_draculazone_hero_pockettank_starchazi.gk" size="524288" crc="5e0dac04" sha1="87fc1a06f00a313e8a49e06170d741e57df991f4" offset="0x00000" />
38         </dataarea>
39      </part>
40   </software>
41
42   <software name="4in1_04" supported="no">
43      <description>4in1 -  Farer, Sortie, PhantomFighter, Seabedwar</description>
44      <year>200?</year>
45      <publisher>TimeTop</publisher>
46      <part name="cart" interface="gameking_cart">
47         <dataarea name="rom" size="524288">
48            <rom name="gk_4in1_farer_sortie_phantomfighter_seabedwar.gk" size="524288" crc="bcbfb7d3" sha1="2f37e0e9cca23bb9e06f339030eaa6e357ed17eb" offset="0x00000" />
49         </dataarea>
50      </part>
51   </software>
52
53   <software name="4in1_05" supported="no">
54      <description>4in1 - SeaGuard, Whirlybird, Spectask, Captain</description>
55      <year>200?</year>
56      <publisher>TimeTop</publisher>
57      <part name="cart" interface="gameking_cart">
58         <dataarea name="rom" size="524288">
59            <rom name="gk_4in1_seaguard_whirlybird_spectask_captain.gk" size="524288" crc="465ad7c1" sha1="fde6bf47e1b88c8a73755ef98eee74b964e7fed5" offset="0x00000" />
60         </dataarea>
61      </part>
62   </software>
63
64   <software name="4in1_06" supported="no">
65      <description>4in1 - ThreeBattles, Lightswort, MetalDefor IV</description>
66      <year>200?</year>
67      <publisher>TimeTop</publisher>
68      <part name="cart" interface="gameking_cart">
69         <dataarea name="rom" size="524288">
70            <rom name="gk_4in1_threebattles_lightswort_metaldefor iv.gk" size="524288" crc="eb9399df" sha1="2f698fc716b3006f968d2b89a28424ca75ad2741" offset="0x00000" />
71         </dataarea>
72      </part>
73   </software>
74
75   <software name="4in1_07" supported="no">
76      <description>4in1 - TrojanLegend, HappyBall, Supermotor, Lanneret</description>
77      <year>200?</year>
78      <publisher>TimeTop</publisher>
79      <part name="cart" interface="gameking_cart">
80         <dataarea name="rom" size="524288">
81            <rom name="gk_4in1_trojanlegend_happyball_supermotor_lanneret.gk" size="524288" crc="cbd8df6a" sha1="63fbda84375a748721c41492610ae5e2f8910f08" offset="0x00000" />
82         </dataarea>
83      </part>
84   </software>
85
86   <software name="4in1no08" supported="no">
87      <description>4 in 1 Vol. 8</description>
88      <year>200?</year>
89      <publisher>TimeTop</publisher>
90      <part name="cart" interface="gameking_cart">
91         <dataarea name="rom" size="524288">
92            <rom name="4in1_vol8.bin" size="524288" crc="6741847e" sha1="b561ca1b52e3492f86e7558722c8c8956e845bc5" offset="0x00000" />
93         </dataarea>
94      </part>
95   </software>
96
97   <software name="4in1no09" supported="no">
98      <description>4 in 1 Vol. 9</description>
99      <year>200?</year>
100      <publisher>TimeTop</publisher>
101      <part name="cart" interface="gameking_cart">
102         <dataarea name="rom" size="524288">
103            <rom name="gk_4in1_vol9.gk" size="524288" crc="02fbc6ef" sha1="84bea568b4c9a50184f15709066e73f3ce09e184" offset="0x00000" />
104         </dataarea>
105      </part>
106   </software>
107
108   <software name="4in1no10" supported="no">
109      <description>4 in 1 Vol. 10</description>
110      <year>200?</year>
111      <publisher>TimeTop</publisher>
112      <part name="cart" interface="gameking_cart">
113         <dataarea name="rom" size="524288">
11415            <rom name="4in1no10.bin" size="524288" crc="b25b1080" sha1="24bc65a9e49ba6f0ffc19b3b858d6c576a3196f7" offset="0x00000" />
11516         </dataarea>
11617      </part>
11718   </software>
11819
119   <software name="4in1no11" supported="no">
120      <description>4 in 1 Vol. 11</description>
121      <year>200?</year>
122      <publisher>TimeTop</publisher>
123      <part name="cart" interface="gameking_cart">
124         <dataarea name="rom" size="524288">
125            <rom name="gk_4in1_vol11.gk" size="524288" crc="1bd50766" sha1="628b3b9b4f37f881f0aa19f30debb1bca06e0879" offset="0x00000" />
126         </dataarea>
127      </part>
20   <software name="4in1a" supported="no">
21   <description>4 in 1 Vol. 8</description>
22   <year>200?</year>
23   <publisher>TimeTop</publisher>
24   <part name="cart" interface="gameking_cart">
25      <dataarea name="rom" size="524288">
26      <rom name="4in1_vol8.bin" size="524288" crc="6741847e" sha1="b561ca1b52e3492f86e7558722c8c8956e845bc5" offset="0x00000" />
27      </dataarea>
28   </part>
12829   </software>
12930
130   <software name="4in1no12" supported="no">
131      <description>4 in 1 Vol. 12</description>
132      <year>200?</year>
133      <publisher>TimeTop</publisher>
134      <part name="cart" interface="gameking_cart">
135         <dataarea name="rom" size="524288">
136            <rom name="gk_4in1_vol12.gk" size="524288" crc="504eea37" sha1="06a45e4aaf8b225d9863a112c910a864c4edf116" offset="0x00000" />
137         </dataarea>
138      </part>
139
140   </software>
141   <software name="4in1no13" supported="no">
142      <description>4 in 1 Vol. 13</description>
143      <year>200?</year>
144      <publisher>TimeTop</publisher>
145      <part name="cart" interface="gameking_cart">
146         <dataarea name="rom" size="524288">
147            <rom name="gk_4in1_vol13.gk" size="524288" crc="1dfb2741" sha1="334a54ebc22f70bacfc87b2f5228f0649970d599" offset="0x00000" />
148         </dataarea>
149      </part>
150   </software>
151
15231   <software name="2004" supported="no">
15332      <description>2004</description>
15433      <year>200?</year>
trunk/hash/gameking3.xml
r249188r249189
66<softwarelist name="gameking3" description="TimeTop GameKing 3 cartridges">
77
88   <software name="urgent" supported="no">
9      <description>Urgent Action</description>
10      <year>200?</year>
11      <publisher>TimeTop</publisher>
12      <part name="cart" interface="gameking_cart">
13         <dataarea name="rom" size="524288">
14            <rom name="urgenaction.gk3" size="524288" crc="dcf935f8" sha1="9c1375c622caab9e328ee66434087a18a16ea036" offset="0x00000" />
15         </dataarea>
16      </part>
9   <description>Urgent Action</description>
10   <year>200?</year>
11   <publisher>TimeTop</publisher>
12   <part name="cart" interface="gameking_cart">
13      <dataarea name="rom" size="524288">
14      <rom name="urgenaction.gk3" size="524288" crc="dcf935f8" sha1="9c1375c622caab9e328ee66434087a18a16ea036" offset="0x00000" />
15      </dataarea>
16   </part>
1717   </software>
1818
1919   <software name="adventr" supported="no">
20      <description>Adventure</description>
21      <year>200?</year>
22      <publisher>TimeTop</publisher>
23      <part name="cart" interface="gameking_cart">
24         <dataarea name="rom" size="524288">
25            <rom name="adventure.gk3" size="524288" crc="70082274" sha1="83b164719b2c2d5c133ca05c9fac0102b0d88e4c" offset="0x00000" />
26         </dataarea>
27      </part>
20   <description>Adventure</description>
21   <year>200?</year>
22   <publisher>TimeTop</publisher>
23   <part name="cart" interface="gameking_cart">
24      <dataarea name="rom" size="524288">
25      <rom name="adventure.gk3" size="524288" crc="70082274" sha1="83b164719b2c2d5c133ca05c9fac0102b0d88e4c" offset="0x00000" />
26      </dataarea>
27   </part>
2828   </software>
2929
30   <software name="flycab" supported="no">
31      <description>Fly Cab</description>
32      <year>200?</year>
33      <publisher>TimeTop</publisher>
34      <part name="cart" interface="gameking_cart">
35         <dataarea name="rom" size="524288">
36            <rom name="fly_cab.gk3" size="524288" crc="da314211" sha1="ea901fe7a7aea203afe6fe0d33e374163cec0262" offset="0x00000" />
37         </dataarea>
38      </part>
39   </software>
40
4130</softwarelist>
trunk/hash/gbcolor.xml
r249188r249189
2371123711      </part>
2371223712   </software>
2371323713
23714   <software name="magiclmp" supported="no">
23715      <description>Magic Lamp (Tw)</description>
23716      <year>2000</year>
23717      <publisher>GOWIN</publisher>
23718      <info name="serial" value="GS-??"/>
23719      <part name="cart" interface="gameboy_cart">
23720         <feature name="slot" value="rom_mbc5" />
23721         <dataarea name="rom" size="1048576">
23722            <rom name="magic lamp.bin" size="524288" crc="15256d76" sha1="6286135ce3ad3fc5c6daaecff3d735fc8fb3ff2f" offset="000000" />
23723         </dataarea>
23724      </part>
23725   </software>
23714<!-- Li Cheng games -->
2372623715
23727   <software name="binmnst2" supported="no">
23728      <description>Binary Monster 2 - Adventure of Hell(TW)</description>
23729      <year>2000</year>
23730      <publisher>GOWIN</publisher>
23731      <info name="serial" value="GS-??"/>
23732      <part name="cart" interface="gameboy_cart">
23733         <feature name="slot" value="rom_mbc5" />
23734         <dataarea name="rom" size="1048576">
23735            <rom name="binary monster 2.bin" size="262144" crc="9bb8d5a8" sha1="9f2268a1ea438b8b739b22f7b3d2470b99716dfd" offset="000000" />
23736         </dataarea>
23737      </part>
23738   </software>
23739
23740   <!-- Li Cheng games -->
23741
2374223716<!--
2374323717
2374423718  * CBA010 Shui Hu Shen Shou æ°Žæ”’ç„žć…œ
trunk/hash/jaguar.xml
r249188r249189
124124      </part>
125125   </software>
126126
127   <software name="aircars94" cloneof="aircars" supported="no">
128      <description>Air Cars (1994 version)</description>
129      <year>1994</year>
130      <publisher>Midnite Entertainment Group</publisher>
131      <part name="cart" interface="jaguar_cart">
132         <dataarea name="rom" size="0x200000"  width="32" endianness="big"  >
133            <rom name="aircars94.u1" size="0x100000" crc="bbd4c4bd" sha1="4f9c914b43208eb100fb25b8be87dec370fd205d" offset="0x000000" loadflag="load32_word"/>
134            <rom name="aircars94.u2" size="0x100000" crc="d9958c79" sha1="d7aa26e084b68023076ac025eff819f0e568e2a0" offset="0x000002" loadflag="load32_word"/>
135         </dataarea>
136      </part>
137   </software>
138
139
140127   <software name="avsp" supported="no">
141128      <description>Alien vs Predator</description>
142129      <year>1994</year>
trunk/hash/msx1_flop.xml
r249188r249189
216216      <year>1988</year>
217217      <publisher>Eurosoft</publisher>
218218      <part name="flop1" interface="floppy_3_5">
219         <feature name="part_id" value="Disk 1"/>
219      <feature name="part_id" value="Disk 1"/>
220220         <dataarea name="flop" size="737280">
221221            <rom name="astro blaster (1988)(eurosoft)(nl).dsk" size="737280" crc="b0fa7831" sha1="789ca057a3a9f2c4dd9db874fc2de33e936c3ad3" offset="0" />
222222         </dataarea>
r249188r249189
723723      <year>1988</year>
724724      <publisher>Konami</publisher>
725725      <part name="flop1" interface="floppy_3_5">
726         <feature name="part_id" value="Disk 1"/>
726      <feature name="part_id" value="Disk 1"/>
727727         <dataarea name="flop" size="737280">
728728            <rom name="konami_game_collection_vol.1_(1988)_(konami)_(j)_(disk_1_of_2).dsk" size="737280" crc="bfab140f" sha1="37cfed5a5886637ca1dd866ea4e2e1ac23ab4841" offset="0" />
729729         </dataarea>
730730      </part>
731731      <part name="flop2" interface="floppy_3_5">
732         <feature name="part_id" value="Disk 2"/>
732      <feature name="part_id" value="Disk 2"/>
733733         <dataarea name="flop" size="737280">
734734            <rom name="konami_game_collection_vol.1_(1988)_(konami)_(j)_(disk_2_of_2).dsk" size="737280" crc="5f947098" sha1="d7ff2ec76ab2d198fdfe9bcbd9743c1e78939605" offset="0" />
735735         </dataarea>
r249188r249189
52325232      <year>19??</year>
52335233      <publisher>&lt;cart2disk hack&gt;</publisher>
52345234      <part name="flop1" interface="floppy_3_5">
5235         <feature name="part_id" value="Disk 1"/>
5235      <feature name="part_id" value="Disk 1"/>
52365236         <dataarea name="flop" size="737280">
52375237            <rom name="black onyx, the (1985)(ascii)(jp)(jp).dsk" size="737280" crc="3438f8b6" sha1="e1758f98d1a89e36bee6654bd8c1774a123ef391" offset="0" />
52385238         </dataarea>
52395239      </part>
52405240      <part name="flop2" interface="floppy_3_5">
5241         <feature name="part_id" value="Disk 1, Alt"/>
5241      <feature name="part_id" value="Disk 1, Alt"/>
52425242         <dataarea name="flop" size="737280">
52435243            <rom name="black onyx, the (1985)(ascii)(jp)[a].dsk" size="737280" crc="ac1495b3" sha1="5508fc5c758567f5ccf427ab7327137f2faec4ad" offset="0" />
52445244         </dataarea>
trunk/hash/msx2_cass.xml
r249188r249189
5959      <info name="usage" value="Load with RUN&quot;CAS:&quot;"/>
6060
6161      <part name="cass1" interface="msx_cass">
62         <feature name="part_id" value="Side A"/>
62      <feature name="part_id" value="Side A"/>
6363         <dataarea name="cass" size="52193">
6464            <rom name="red lights of amsterdam (1986)(eaglesoft)(nl)(side a)[run'cas-'].cas" size="52193" crc="fced9743" sha1="eeb226eab09670fd11f3d797ce667a11133cfd7c" offset="0" />
6565         </dataarea>
6666      </part>
6767      <part name="cass2" interface="msx_cass">
68         <feature name="part_id" value="Side B"/>
68      <feature name="part_id" value="Side B"/>
6969         <dataarea name="cass" size="120071">
7070            <rom name="red lights of amsterdam (1986)(eaglesoft)(nl)(side b)[run'cas-'].cas" size="120071" crc="e3bd39b3" sha1="bb8b304ff3f8a527648fb765da2ff9284f5c9f4c" offset="0" />
7171         </dataarea>
trunk/hash/msx2_flop.xml
r249188r249189
51955195      <year>1989</year>
51965196      <publisher>Xain Soft</publisher>
51975197      <part name="flop1" interface="floppy_3_5">
5198         <feature name="part_id" value="Disk 1"/>
5198      <feature name="part_id" value="Disk 1"/>
51995199         <dataarea name="flop" size="737280">
52005200            <rom name="gulf stream. galf streem (1989)(xain)(jp)(disk 1 of 4)[b].dsk" size="737280" crc="ebe9ca53" sha1="d917fb14fd8dc35033baaab3e33a332d792f542d" offset="0" status="baddump" />
52015201         </dataarea>
52025202      </part>
52035203      <part name="flop2" interface="floppy_3_5">
5204         <feature name="part_id" value="Disk 2"/>
5204      <feature name="part_id" value="Disk 2"/>
52055205         <dataarea name="flop" size="737280">
52065206            <rom name="gulf stream. galf streem (1989)(xain)(jp)(disk 2 of 4)[b].dsk" size="737280" crc="ed78946f" sha1="f5a7dcf962e929d5aee2e29241dfbaa09bfaceb1" offset="0" status="baddump" />
52075207         </dataarea>
52085208      </part>
52095209      <part name="flop3" interface="floppy_3_5">
5210         <feature name="part_id" value="Disk 3"/>
5210      <feature name="part_id" value="Disk 3"/>
52115211         <dataarea name="flop" size="737280">
52125212            <rom name="gulf stream. galf streem (1989)(xain)(jp)(disk 3 of 4)[b].dsk" size="737280" crc="7a243e71" sha1="6240760c3c9a332d8cdd8b4c373949cbfe2a919c" offset="0" status="baddump" />
52135213         </dataarea>
52145214      </part>
52155215      <part name="flop4" interface="floppy_3_5">
5216         <feature name="part_id" value="User Disk"/>
5216      <feature name="part_id" value="User Disk"/>
52175217         <dataarea name="flop" size="741376">
52185218            <rom name="gulf stream. galf streem (1989)(xain)(jp)(disk 4 of 4)(user disk)[o].dsk" size="741376" crc="41122643" sha1="d1f488c4c626efc17ff14dcefb0718a73fd00c7e" offset="0" status="baddump" />
52195219         </dataarea>
trunk/hash/msx2p_flop.xml
r249188r249189
4343      <info name="alt_title" value="F1ă‚čピăƒȘット3Dă‚čăƒšă‚·ăƒŁăƒ«" />
4444
4545      <part name="flop1" interface="floppy_3_5">
46         <feature name="part_id" value="Opening Disk"/>
46      <feature name="part_id" value="Opening Disk"/>
4747         <dataarea name="flop" size="737280">
4848            <rom name="f-1 spirit 3d special (1988)(konami)(disk 1 of 3)(opening disk).dsk" size="737280" crc="69058209" sha1="155702d3d41b8f8b3d4659d42aa474ce12f4d3c9" offset="0" />
4949         </dataarea>
5050      </part>
5151      <part name="flop2" interface="floppy_3_5">
52         <feature name="part_id" value="Game Disk A"/>
52      <feature name="part_id" value="Game Disk A"/>
5353         <dataarea name="flop" size="737280">
5454            <rom name="f-1 spirit 3d special (1988)(konami)(disk 2 of 3)(game disk a).dsk" size="737280" crc="96811cc3" sha1="9877150e691d41b615683684cf0b78fc84649d37" offset="0" />
5555         </dataarea>
5656      </part>
5757      <part name="flop3" interface="floppy_3_5">
58         <feature name="part_id" value="Game Disk B"/>
58      <feature name="part_id" value="Game Disk B"/>
5959         <dataarea name="flop" size="737280">
6060            <rom name="f-1 spirit 3d special (1988)(konami)(disk 3 of 3)(game disk b).dsk" size="737280" crc="72039928" sha1="9ab94b449cb3b2c7ea7f87c2f03eebfacddc4019" offset="0" />
6161         </dataarea>
r249188r249189
6969      <info name="alt_title" value="F1ă‚čピăƒȘット3Dă‚čăƒšă‚·ăƒŁăƒ«" />
7070
7171      <part name="flop1" interface="floppy_3_5">
72         <feature name="part_id" value="Opening Disk"/>
72      <feature name="part_id" value="Opening Disk"/>
7373         <dataarea name="flop" size="737280">
7474            <rom name="f-1 spirit 3d special (1988)(konami)(disk 1 of 3)(opening disk).dsk" size="737280" crc="69058209" sha1="155702d3d41b8f8b3d4659d42aa474ce12f4d3c9" offset="0" />
7575         </dataarea>
7676      </part>
7777      <part name="flop2" interface="floppy_3_5">
78         <feature name="part_id" value="Game Disk A"/>
78      <feature name="part_id" value="Game Disk A"/>
7979         <dataarea name="flop" size="737280">
8080            <rom name="f-1 spirit 3d special (1988)(konami)(disk 2 of 3)(game disk a)[a].dsk" size="737280" crc="b05f67a2" sha1="3fd1c3dacd8fc3b4fc4902ac35296ce30991ac9b" offset="0" />
8181         </dataarea>
8282      </part>
8383      <part name="flop3" interface="floppy_3_5">
84         <feature name="part_id" value="Game Disk B"/>
84      <feature name="part_id" value="Game Disk B"/>
8585         <dataarea name="flop" size="737280">
8686            <rom name="f-1 spirit 3d special (1988)(konami)(disk 3 of 3)(game disk b)[a].dsk" size="737280" crc="94fc3831" sha1="a645c37119c59eab0d42f0a2cfbc47dc9678bc3c" offset="0" />
8787         </dataarea>
r249188r249189
9595      <info name="alt_title" value="F1ă‚čピăƒȘット3Dă‚čăƒšă‚·ăƒŁăƒ«" />
9696
9797      <part name="flop1" interface="floppy_3_5">
98         <feature name="part_id" value="Opening Disk"/>
98      <feature name="part_id" value="Opening Disk"/>
9999         <dataarea name="flop" size="737280">
100100            <rom name="f-1 spirit 3d special (1988)(konami)(disk 1 of 3)(opening disk).dsk" size="737280" crc="69058209" sha1="155702d3d41b8f8b3d4659d42aa474ce12f4d3c9" offset="0" />
101101         </dataarea>
102102      </part>
103103      <part name="flop2" interface="floppy_3_5">
104         <feature name="part_id" value="Game Disk A"/>
104      <feature name="part_id" value="Game Disk A"/>
105105         <dataarea name="flop" size="737280">
106106            <rom name="f-1 spirit 3d special (1988)(konami)(disk 2 of 3)(game disk a)[a2].dsk" size="737280" crc="eb1d19a3" sha1="f3b1dafa72bdc5affaf49bac3481ad5276a51375" offset="0" />
107107         </dataarea>
108108      </part>
109109      <part name="flop3" interface="floppy_3_5">
110         <feature name="part_id" value="Game Disk B"/>
110      <feature name="part_id" value="Game Disk B"/>
111111         <dataarea name="flop" size="737280">
112112            <rom name="f-1 spirit 3d special (1988)(konami)(disk 3 of 3)(game disk b).dsk" size="737280" crc="72039928" sha1="9ab94b449cb3b2c7ea7f87c2f03eebfacddc4019" offset="0" />
113113         </dataarea>
r249188r249189
147147      <info name="alt_title" value="ïŒȘïŒąăƒăƒ­ăƒ«ăƒ‰3ïœžïŒ€ïŒŽïŒŁïŒŽă‚łăƒă‚Żă‚·ăƒ§ăƒł" />
148148
149149      <part name="flop1" interface="floppy_3_5">
150         <feature name="part_id" value="Disk 1"/>
150      <feature name="part_id" value="Disk 1"/>
151151         <dataarea name="flop" size="737280">
152152            <rom name="j.b. harold 3 - d.c. connection (1989)(riverhill soft)(jp)(disk 1 of 3)[mouse].dsk" size="737280" crc="79543c5d" sha1="9b2919c1c7725458305f8120975d94c2f6524d19" offset="0" />
153153         </dataarea>
154154      </part>
155155      <part name="flop2" interface="floppy_3_5">
156         <feature name="part_id" value="Disk 2"/>
156      <feature name="part_id" value="Disk 2"/>
157157         <dataarea name="flop" size="737280">
158158            <rom name="j.b. harold 3 - d.c. connection (1989)(riverhill soft)(jp)(disk 2 of 3)[mouse].dsk" size="737280" crc="b3454990" sha1="6a6e5caaf72d3f9285bf5adc11e90ab7242f22c7" offset="0" />
159159         </dataarea>
160160      </part>
161161      <part name="flop3" interface="floppy_3_5">
162         <feature name="part_id" value="Disk 3"/>
162      <feature name="part_id" value="Disk 3"/>
163163         <dataarea name="flop" size="737280">
164164            <rom name="j.b. harold 3 - d.c. connection (1989)(riverhill soft)(jp)(disk 3 of 3)[mouse].dsk" size="737280" crc="1eb4c4d6" sha1="c2bf5d6aff3b5b676fccdd010eedd67a4a2523ff" offset="0" />
165165         </dataarea>
r249188r249189
173173      <info name="alt_title" value="ïŒȘïŒąăƒăƒ­ăƒ«ăƒ‰3ïœžïŒ€ïŒŽïŒŁïŒŽă‚łăƒă‚Żă‚·ăƒ§ăƒł" />
174174
175175      <part name="flop1" interface="floppy_3_5">
176         <feature name="part_id" value="Disk 1"/>
176      <feature name="part_id" value="Disk 1"/>
177177         <dataarea name="flop" size="737280">
178178            <rom name="j.b. harold 3 - d.c. connection (1989)(riverhill soft)(jp)(disk 1 of 3)[mouse].dsk" size="737280" crc="79543c5d" sha1="9b2919c1c7725458305f8120975d94c2f6524d19" offset="0" />
179179         </dataarea>
180180      </part>
181181      <part name="flop2" interface="floppy_3_5">
182         <feature name="part_id" value="Disk 2"/>
182      <feature name="part_id" value="Disk 2"/>
183183         <dataarea name="flop" size="737280">
184184            <rom name="j.b. harold 3 - d.c. connection (1989)(riverhill soft)(jp)(disk 2 of 3)[a][mouse].dsk" size="737280" crc="952b3db8" sha1="319333dc9f37342802199fe576da759fef66501d" offset="0" />
185185         </dataarea>
186186      </part>
187187      <part name="flop3" interface="floppy_3_5">
188         <feature name="part_id" value="Disk 3"/>
188      <feature name="part_id" value="Disk 3"/>
189189         <dataarea name="flop" size="737280">
190190            <rom name="j.b. harold 3 - d.c. connection (1989)(riverhill soft)(jp)(disk 3 of 3)[a][mouse].dsk" size="737280" crc="4915e99b" sha1="c4f00d065f61f893a075e26b879dde68d2a493d5" offset="0" />
191191         </dataarea>
r249188r249189
248248      <info name="alt_title" value="ăƒŹă‚€ăƒ‰ăƒƒă‚Ż2ラă‚čトケタック" />
249249
250250      <part name="flop1" interface="floppy_3_5">
251         <feature name="part_id" value="Disk 1"/>
251      <feature name="part_id" value="Disk 1"/>
252252         <dataarea name="flop" size="737280">
253253            <rom name="laydock 2 - last attack (1988)(t&amp;e soft)(jp)(disk 1 of 2).dsk" size="737280" crc="02c2949e" sha1="c4217c7f0371e9c6f830d8a76f731123548c9719" offset="0" />
254254         </dataarea>
255255      </part>
256256      <part name="flop2" interface="floppy_3_5">
257         <feature name="part_id" value="Disk 2"/>
257      <feature name="part_id" value="Disk 2"/>
258258         <dataarea name="flop" size="737280">
259259            <rom name="laydock 2 - last attack (1988)(t&amp;e soft)(jp)(disk 2 of 2).dsk" size="737280" crc="cd89e9d3" sha1="63daaadce6ef18938788f3d1e4b08deff15fe5da" offset="0" />
260260         </dataarea>
r249188r249189
268268      <info name="alt_title" value="ăƒŹă‚€ăƒ‰ăƒƒă‚Ż2ラă‚čトケタック" />
269269
270270      <part name="flop1" interface="floppy_3_5">
271         <feature name="part_id" value="Disk 1"/>
271      <feature name="part_id" value="Disk 1"/>
272272         <dataarea name="flop" size="737280">
273273            <rom name="laydock 2 - last attack (1988)(t&amp;e soft)(jp)(disk 1 of 2)[a].dsk" size="737280" crc="1b68b1a9" sha1="db7cf4672f46017b69b02eb175b4a446a948c601" offset="0" />
274274         </dataarea>
275275      </part>
276276      <part name="flop2" interface="floppy_3_5">
277         <feature name="part_id" value="Disk 2"/>
277      <feature name="part_id" value="Disk 2"/>
278278         <dataarea name="flop" size="737280">
279279            <rom name="laydock 2 - last attack (1988)(t&amp;e soft)(jp)(disk 2 of 2)[a].dsk" size="737280" crc="25777c4e" sha1="bbbc09ed823847b567caa1f321f578cbaf3a356f" offset="0" />
280280         </dataarea>
r249188r249189
288288      <info name="alt_title" value="ăƒŸăƒƒăƒ‰ă‚Źăƒ«ăƒ„" />
289289
290290      <part name="flop1" interface="floppy_3_5">
291         <feature name="part_id" value="Disk 1"/>
291      <feature name="part_id" value="Disk 1"/>
292292         <dataarea name="flop" size="737280">
293293            <rom name="middogarutsu. mid-garts dual side (1989)(wolfteam)(jp)(disk 1 of 6).dsk" size="737280" crc="90559e83" sha1="c78e099022ae77c47b95a45fca869324fecb4cb5" offset="0" />
294294         </dataarea>
295295      </part>
296296      <part name="flop2" interface="floppy_3_5">
297         <feature name="part_id" value="Disk 2"/>
297      <feature name="part_id" value="Disk 2"/>
298298         <dataarea name="flop" size="737280">
299299            <rom name="middogarutsu. mid-garts dual side (1989)(wolfteam)(jp)(disk 2 of 6).dsk" size="737280" crc="24183de3" sha1="53d6aa633a841878a3c67a3024f7c3ed3e1b4508" offset="0" />
300300         </dataarea>
301301      </part>
302302      <part name="flop3" interface="floppy_3_5">
303         <feature name="part_id" value="Disk 3"/>
303      <feature name="part_id" value="Disk 3"/>
304304         <dataarea name="flop" size="737280">
305305            <rom name="middogarutsu. mid-garts dual side (1989)(wolfteam)(jp)(disk 3 of 6).dsk" size="737280" crc="5611fda7" sha1="b30746e7fe256ddef2d2f1cad8a57aea86a4c478" offset="0" />
306306         </dataarea>
307307      </part>
308308      <part name="flop4" interface="floppy_3_5">
309         <feature name="part_id" value="Disk 4"/>
309      <feature name="part_id" value="Disk 4"/>
310310         <dataarea name="flop" size="737280">
311311            <rom name="middogarutsu. mid-garts dual side (1989)(wolfteam)(jp)(disk 4 of 6).dsk" size="737280" crc="7a28644e" sha1="33e94dac0f9cb73f4a15265bb0166e48183bdb35" offset="0" />
312312         </dataarea>
313313      </part>
314314      <part name="flop5" interface="floppy_3_5">
315         <feature name="part_id" value="Disk 5"/>
315      <feature name="part_id" value="Disk 5"/>
316316         <dataarea name="flop" size="737280">
317317            <rom name="middogarutsu. mid-garts dual side (1989)(wolfteam)(jp)(disk 5 of 6).dsk" size="737280" crc="64acdb49" sha1="47b9228b014d9e953dad956bb04aabedfa4db8a9" offset="0" />
318318         </dataarea>
319319      </part>
320320      <part name="flop6" interface="floppy_3_5">
321         <feature name="part_id" value="Disk 6"/>
321      <feature name="part_id" value="Disk 6"/>
322322         <dataarea name="flop" size="737280">
323323            <rom name="middogarutsu. mid-garts dual side (1989)(wolfteam)(jp)(disk 6 of 6).dsk" size="737280" crc="b920cf5b" sha1="2863537cbf930701a81540948f7e037359ba8ec3" offset="0" />
324324         </dataarea>
r249188r249189
331331      <publisher>Panasoft</publisher>
332332
333333      <part name="flop1" interface="floppy_3_5">
334         <feature name="part_id" value="Disk 1"/>
334      <feature name="part_id" value="Disk 1"/>
335335         <dataarea name="flop" size="737280">
336336            <rom name="pana amusement collection 1 (1988)(panasoft)(jp).dsk" size="737280" crc="4dee2cff" sha1="e4bc138daedac129c39923cbe4a07bf79a880f8b" offset="0" />
337337         </dataarea>
338338      </part>
339339      <part name="flop2" interface="floppy_3_5">
340         <feature name="part_id" value="Disk 2"/>
340      <feature name="part_id" value="Disk 2"/>
341341         <dataarea name="flop" size="737280">
342342            <rom name="pana amusement collection 2 (1988)(panasoft)(jp).dsk" size="737280" crc="83f786e1" sha1="94c2cde50db86b91ad7d73cf6354a240c97ab3ea" offset="0" />
343343         </dataarea>
r249188r249189
350350      <publisher>Panasoft</publisher>
351351
352352      <part name="flop1" interface="floppy_3_5">
353         <feature name="part_id" value="Disk 1"/>
353      <feature name="part_id" value="Disk 1"/>
354354         <dataarea name="flop" size="737280">
355355            <rom name="pana amusement collection 1 (1988)(panasoft)(jp)[a].dsk" size="737280" crc="340292e7" sha1="f86f628e6cef41b777796c4797b9153b5c722710" offset="0" />
356356         </dataarea>
357357      </part>
358358      <part name="flop2" interface="floppy_3_5">
359         <feature name="part_id" value="Disk 2"/>
359      <feature name="part_id" value="Disk 2"/>
360360         <dataarea name="flop" size="737280">
361361            <rom name="pana amusement collection 2 (1988)(panasoft)(jp)[a].dsk" size="737280" crc="3ecc097d" sha1="552da3bf49e85911acc8f7a5c744ca86105bd081" offset="0" />
362362         </dataarea>
r249188r249189
369369      <publisher>Panasoft</publisher>
370370
371371      <part name="flop1" interface="floppy_3_5">
372         <feature name="part_id" value="Disk 1"/>
372      <feature name="part_id" value="Disk 1"/>
373373         <dataarea name="flop" size="737280">
374374            <rom name="pana amusement collection 1 (1988)(panasoft)(jp)[a2].dsk" size="737280" crc="441d35a8" sha1="fe949aa959949e478a22c93b67b2247a1cf3d7f9" offset="0" />
375375         </dataarea>
376376      </part>
377377      <part name="flop2" interface="floppy_3_5">
378         <feature name="part_id" value="Disk 2"/>
378      <feature name="part_id" value="Disk 2"/>
379379         <dataarea name="flop" size="737280">
380380            <rom name="pana amusement collection 2 (1988)(panasoft)(jp)[a2].dsk" size="737280" crc="4bf555e3" sha1="5eeb6b2b85a19664ef9b21c130fe9b995c4b4784" offset="0" />
381381         </dataarea>
r249188r249189
636636      <info name="developer" value="First Class Software" />
637637
638638      <part name="flop1" interface="floppy_3_5">
639         <feature name="part_id" value="Opening Disk"/>
639      <feature name="part_id" value="Opening Disk"/>
640640         <dataarea name="flop" size="737280">
641641            <rom name="megadoom (1992)(first class software)(nl)(disk 1 of 2)(opening disk).dsk" size="737280" crc="70a3494d" sha1="fa83f00dd2feb4a30d71616578ce553466d4d14e" offset="0" />
642642         </dataarea>
643643      </part>
644644      <part name="flop2" interface="floppy_3_5">
645         <feature name="part_id" value="Game Disk"/>
645      <feature name="part_id" value="Game Disk"/>
646646         <dataarea name="flop" size="737280">
647647            <rom name="megadoom (1992)(first class software)(nl)(disk 2 of 2)(game disk).dsk" size="737280" crc="1d7716de" sha1="6c48f8dedd8494c3aabeea3af997363ed861ac0f" offset="0" />
648648         </dataarea>
r249188r249189
656656      <info name="developer" value="First Class Software" />
657657
658658      <part name="flop1" interface="floppy_3_5">
659         <feature name="part_id" value="Disk 1"/>
659      <feature name="part_id" value="Disk 1"/>
660660         <dataarea name="flop" size="737280">
661661            <rom name="megadoom (demo) (1992)(first class software)(nl).dsk" size="737280" crc="72aa680e" sha1="196f0e8d263d69215cfc634e0518e7206136468d" offset="0" />
662662         </dataarea>
663663      </part>
664664      <part name="flop2" interface="floppy_3_5">
665         <feature name="part_id" value="Disk 2?"/>
665      <feature name="part_id" value="Disk 2?"/>
666666         <dataarea name="flop" size="737280">
667667            <rom name="megadoom (demo) (1992)(first class software)(nl)[2 disks].dsk" size="737280" crc="f8554ee4" sha1="70d62bfb6505ae91b1afde000d7b5fb771a8b38d" offset="0" />
668668         </dataarea>
trunk/hash/msxr_flop.xml
r249188r249189
7373      <info name="alt_title" value="ăƒ•ăƒŹă‚€ă‚”ăƒŒă‚Żć€–äŒ" />
7474
7575      <part name="flop1" interface="floppy_3_5">
76         <feature name="part_id" value="Opening Disk 0"/>
76      <feature name="part_id" value="Opening Disk 0"/>
7777         <dataarea name="flop" size="737280">
7878            <rom name="fray - in magical adventure (1990)(micro cabin)(jp)(disk 1 of 5)(opening disk 0).dsk" size="737280" crc="f26fdaeb" sha1="fd3c5f8793bfbec1851c89cfc32366618c6f482d" offset="0" />
7979         </dataarea>
8080      </part>
8181      <part name="flop2" interface="floppy_3_5">
82         <feature name="part_id" value="Opening Disk 1"/>
82      <feature name="part_id" value="Opening Disk 1"/>
8383         <dataarea name="flop" size="737280">
8484            <rom name="fray - in magical adventure (1990)(micro cabin)(jp)(disk 2 of 5)(opening disk 1).dsk" size="737280" crc="c33d5ac3" sha1="0b145459326c62254522bf77f063b069d086aa29" offset="0" />
8585         </dataarea>
8686      </part>
8787      <part name="flop3" interface="floppy_3_5">
88         <feature name="part_id" value="Opening Disk 2"/>
88      <feature name="part_id" value="Opening Disk 2"/>
8989         <dataarea name="flop" size="737280">
9090            <rom name="fray - in magical adventure (1990)(micro cabin)(jp)(disk 3 of 5)(opening disk 2).dsk" size="737280" crc="b770ee14" sha1="80701f4a86a151778c4fc81f56e9088d7b880651" offset="0" />
9191         </dataarea>
9292      </part>
9393      <part name="flop4" interface="floppy_3_5">
94         <feature name="part_id" value="Game Disk 0"/>
94      <feature name="part_id" value="Game Disk 0"/>
9595         <dataarea name="flop" size="737280">
9696            <rom name="fray - in magical adventure (1990)(micro cabin)(jp)(disk 4 of 5)(game disk 0).dsk" size="737280" crc="8c6d9bed" sha1="0bddc86900b934cb381ce3aac8d9f8614ca49ede" offset="0" />
9797         </dataarea>
9898      </part>
9999      <part name="flop5" interface="floppy_3_5">
100         <feature name="part_id" value="Game Disk 1"/>
100      <feature name="part_id" value="Game Disk 1"/>
101101         <dataarea name="flop" size="737280">
102102            <rom name="fray - in magical adventure (1990)(micro cabin)(jp)(disk 5 of 5)(game disk 1).dsk" size="737280" crc="d631a475" sha1="c1c35bedb620181846a407d6900db741f751e50f" offset="0" />
103103         </dataarea>
r249188r249189
111111      <info name="alt_title" value="ăƒ•ăƒŹă‚€ă‚”ăƒŒă‚Żć€–äŒ" />
112112
113113      <part name="flop1" interface="floppy_3_5">
114         <feature name="part_id" value="Opening Disk 0"/>
114      <feature name="part_id" value="Opening Disk 0"/>
115115         <dataarea name="flop" size="737280">
116116            <rom name="fray - in magical adventure (1990)(micro cabin)(jp)(disk 1 of 5)(opening disk 0)[a].dsk" size="737280" crc="ee1ddd5d" sha1="858f9861f5015fd2e04f5a9fa4de971bfe7b5ec4" offset="0" />
117117         </dataarea>
118118      </part>
119119      <part name="flop2" interface="floppy_3_5">
120         <feature name="part_id" value="Opening Disk 1"/>
120      <feature name="part_id" value="Opening Disk 1"/>
121121         <dataarea name="flop" size="737280">
122122            <rom name="fray - in magical adventure (1990)(micro cabin)(jp)(disk 2 of 5)(opening disk 1)[a].dsk" size="737280" crc="df4f5d75" sha1="4508096f7a4d5bf1c9e94df62def933ef1f6630f" offset="0" />
123123         </dataarea>
124124      </part>
125125      <part name="flop3" interface="floppy_3_5">
126         <feature name="part_id" value="Opening Disk 2"/>
126      <feature name="part_id" value="Opening Disk 2"/>
127127         <dataarea name="flop" size="737280">
128128            <rom name="fray - in magical adventure (1990)(micro cabin)(jp)(disk 3 of 5)(opening disk 2)[a].dsk" size="737280" crc="f2d4c059" sha1="ad26d223992b9c7713d2df7bd44b8a1cb09b9209" offset="0" />
129129         </dataarea>
130130      </part>
131131      <part name="flop4" interface="floppy_3_5">
132         <feature name="part_id" value="Game Disk 0"/>
132      <feature name="part_id" value="Game Disk 0"/>
133133         <dataarea name="flop" size="737280">
134134            <rom name="fray - in magical adventure (1990)(micro cabin)(jp)(disk 4 of 5)(game disk 0)[a].dsk" size="737280" crc="99dcaab5" sha1="bf2f9b963c8045dca79921c3c08cea9a4a31f129" offset="0" />
135135         </dataarea>
136136      </part>
137137      <part name="flop5" interface="floppy_3_5">
138         <feature name="part_id" value="Game Disk 1"/>
138      <feature name="part_id" value="Game Disk 1"/>
139139         <dataarea name="flop" size="737280">
140140            <rom name="fray - in magical adventure (1990)(micro cabin)(jp)(disk 5 of 5)(game disk 1)[a].dsk" size="737280" crc="db96855a" sha1="9fce9c2fb9f684ed2478deacf02a1388975230e5" offset="0" />
141141         </dataarea>
r249188r249189
149149      <info name="alt_title" value="ăƒ•ăƒŹă‚€ă‚”ăƒŒă‚Żć€–äŒ" />
150150
151151      <part name="flop1" interface="floppy_3_5">
152         <feature name="part_id" value="Opening Disk 0"/>
152      <feature name="part_id" value="Opening Disk 0"/>
153153         <dataarea name="flop" size="737280">
154154            <rom name="fray - in magical adventure (1990)(micro cabin)(jp)(disk 1 of 5)(opening disk 0)[a2].dsk" size="737280" crc="fe161465" sha1="9abd04cfb508567ab4d19e4a0a82fa00f6348286" offset="0" />
155155         </dataarea>
156156      </part>
157157      <part name="flop2" interface="floppy_3_5">
158         <feature name="part_id" value="Opening Disk 1"/>
158      <feature name="part_id" value="Opening Disk 1"/>
159159         <dataarea name="flop" size="737280">
160160            <rom name="fray - in magical adventure (1990)(micro cabin)(jp)(disk 2 of 5)(opening disk 1).dsk" size="737280" crc="c33d5ac3" sha1="0b145459326c62254522bf77f063b069d086aa29" offset="0" />
161161         </dataarea>
162162      </part>
163163      <part name="flop3" interface="floppy_3_5">
164         <feature name="part_id" value="Opening Disk 2"/>
164      <feature name="part_id" value="Opening Disk 2"/>
165165         <dataarea name="flop" size="737280">
166166            <rom name="fray - in magical adventure (1990)(micro cabin)(jp)(disk 3 of 5)(opening disk 2).dsk" size="737280" crc="b770ee14" sha1="80701f4a86a151778c4fc81f56e9088d7b880651" offset="0" />
167167         </dataarea>
168168      </part>
169169      <part name="flop4" interface="floppy_3_5">
170         <feature name="part_id" value="Game Disk 0"/>
170      <feature name="part_id" value="Game Disk 0"/>
171171         <dataarea name="flop" size="737280">
172172            <rom name="fray - in magical adventure (1990)(micro cabin)(jp)(disk 4 of 5)(game disk 0)[a2].dsk" size="737280" crc="4a96b160" sha1="f28e35348dceb9bef0d6e21674bf01d67fd9501b" offset="0" />
173173         </dataarea>
174174      </part>
175175      <part name="flop5" interface="floppy_3_5">
176         <feature name="part_id" value="Game Disk 1"/>
176      <feature name="part_id" value="Game Disk 1"/>
177177         <dataarea name="flop" size="737280">
178178            <rom name="fray - in magical adventure (1990)(micro cabin)(jp)(disk 5 of 5)(game disk 1).dsk" size="737280" crc="d631a475" sha1="c1c35bedb620181846a407d6900db741f751e50f" offset="0" />
179179         </dataarea>
r249188r249189
187187      <info name="alt_title" value="げんえいべし" />
188188
189189      <part name="flop1" interface="floppy_3_5">
190         <feature name="part_id" value="Game Disk 1"/>
190      <feature name="part_id" value="Game Disk 1"/>
191191         <dataarea name="flop" size="737280">
192192            <rom name="illusion city (1991)(micro cabin)(jp)(disk 01 of 13)(game disk 1).dsk" size="737280" crc="6c09d054" sha1="94258658039f76d22bc79ec02b7b78e9b4a7ac13" offset="0" />
193193         </dataarea>
194194      </part>
195195      <part name="flop2" interface="floppy_3_5">
196         <feature name="part_id" value="Game Disk 2"/>
196      <feature name="part_id" value="Game Disk 2"/>
197197         <dataarea name="flop" size="737280">
198198            <rom name="illusion city (1991)(micro cabin)(jp)(disk 02 of 13)(game disk 2).dsk" size="737280" crc="69872539" sha1="4535b5a13a86537e363566bd2a864cbf17bcd2e7" offset="0" />
199199         </dataarea>
200200      </part>
201201      <part name="flop3" interface="floppy_3_5">
202         <feature name="part_id" value="Game Disk 3"/>
202      <feature name="part_id" value="Game Disk 3"/>
203203         <dataarea name="flop" size="737280">
204204            <rom name="illusion city (1991)(micro cabin)(jp)(disk 03 of 13)(game disk 3).dsk" size="737280" crc="494a0db3" sha1="ac94c9f5e735c935a5ed4ff47c9689e5e07ac266" offset="0" />
205205         </dataarea>
206206      </part>
207207      <part name="flop4" interface="floppy_3_5">
208         <feature name="part_id" value="Game Disk 4"/>
208      <feature name="part_id" value="Game Disk 4"/>
209209         <dataarea name="flop" size="737280">
210210            <rom name="illusion city (1991)(micro cabin)(jp)(disk 04 of 13)(game disk 4).dsk" size="737280" crc="9d31fe9f" sha1="da08fd8c79ebb28a01232734bf607f576f7987cf" offset="0" />
211211         </dataarea>
212212      </part>
213213      <part name="flop5" interface="floppy_3_5">
214         <feature name="part_id" value="Game Disk 5"/>
214      <feature name="part_id" value="Game Disk 5"/>
215215         <dataarea name="flop" size="737280">
216216            <rom name="illusion city (1991)(micro cabin)(jp)(disk 05 of 13)(game disk 5).dsk" size="737280" crc="d8a0e0c8" sha1="5472f519f06212562d72f5be229b74a4599f13c2" offset="0" />
217217         </dataarea>
218218      </part>
219219      <part name="flop6" interface="floppy_3_5">
220         <feature name="part_id" value="Game Disk 6"/>
220      <feature name="part_id" value="Game Disk 6"/>
221221         <dataarea name="flop" size="737280">
222222            <rom name="illusion city (1991)(micro cabin)(jp)(disk 06 of 13)(game disk 6).dsk" size="737280" crc="5b89b23d" sha1="1141f0b05250ffde6cbd02a29041c4c520008267" offset="0" />
223223         </dataarea>
224224      </part>
225225      <part name="flop7" interface="floppy_3_5">
226         <feature name="part_id" value="Game Disk 7"/>
226      <feature name="part_id" value="Game Disk 7"/>
227227         <dataarea name="flop" size="737280">
228228            <rom name="illusion city (1991)(micro cabin)(jp)(disk 07 of 13)(game disk 7).dsk" size="737280" crc="98a4a1ac" sha1="fdad8341a81d1310f00e07057b61ea4ef31cdf06" offset="0" />
229229         </dataarea>
230230      </part>
231231      <part name="flop8" interface="floppy_3_5">
232         <feature name="part_id" value="Game Disk 8"/>
232      <feature name="part_id" value="Game Disk 8"/>
233233         <dataarea name="flop" size="737280">
234234            <rom name="illusion city (1991)(micro cabin)(jp)(disk 08 of 13)(game disk 8).dsk" size="737280" crc="11998da3" sha1="efa7b70351f0302e112cb9b0ef49dc033c967e3d" offset="0" />
235235         </dataarea>
r249188r249189
242242      <publisher>BitÂČ</publisher>
243243
244244      <part name="flop1" interface="floppy_3_5">
245         <feature name="part_id" value="Disk 1"/>
245      <feature name="part_id" value="Disk 1"/>
246246         <dataarea name="flop" size="737280">
247247            <rom name="myu note (1992)(bit2)(jp)(disk 1 of 2).dsk" size="737280" crc="e2d5772b" sha1="420fdd3980c4f18f46055ec457cf236348625a18" offset="0" />
248248         </dataarea>
249249      </part>
250250      <part name="flop2" interface="floppy_3_5">
251         <feature name="part_id" value="Disk 2"/>
251      <feature name="part_id" value="Disk 2"/>
252252         <dataarea name="flop" size="737280">
253253            <rom name="myu note (1992)(bit2)(jp)(disk 2 of 2).dsk" size="737280" crc="e3eda999" sha1="cf41b87c1390684fc31c2d6634756592d616073b" offset="0" />
254254         </dataarea>
r249188r249189
261261      <publisher>BitÂČ</publisher>
262262
263263      <part name="flop1" interface="floppy_3_5">
264         <feature name="part_id" value="Disk 1"/>
264      <feature name="part_id" value="Disk 1"/>
265265         <dataarea name="flop" size="737280">
266266            <rom name="myu sios (1991)(bit2)(jp)(disk 1 of 3).dsk" size="737280" crc="2cf78feb" sha1="f80b22f2f1f8263cceb782738558767286dd89a1" offset="0" />
267267         </dataarea>
268268      </part>
269269      <part name="flop2" interface="floppy_3_5">
270         <feature name="part_id" value="Disk 2"/>
270      <feature name="part_id" value="Disk 2"/>
271271         <dataarea name="flop" size="737280">
272272            <rom name="myu sios (1991)(bit2)(jp)(disk 2 of 3).dsk" size="737280" crc="0ffa249d" sha1="b7107c665a502c815e0d55e4165a17bd98420385" offset="0" />
273273         </dataarea>
274274      </part>
275275      <part name="flop3" interface="floppy_3_5">
276         <feature name="part_id" value="Disk 3"/>
276      <feature name="part_id" value="Disk 3"/>
277277         <dataarea name="flop" size="737280">
278278            <rom name="myu sios (1991)(bit2)(jp)(disk 3 of 3).dsk" size="737280" crc="74010ac2" sha1="2e1b83373aadd455f093907b0700623b462cbe68" offset="0" />
279279         </dataarea>
r249188r249189
287287      <info name="alt_title" value="ă‚‰ă‚“ăŸ1/2éŁ›éŸäŒèȘŹ" />
288288
289289      <part name="flop1" interface="floppy_3_5">
290         <feature name="part_id" value="Disk 1"/>
290      <feature name="part_id" value="Disk 1"/>
291291         <dataarea name="flop" size="737280">
292292            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 1 of 8).dsk" size="737280" crc="6074f52f" sha1="13ef524c86124a628e6169edcf81e2ede3140bc0" offset="0" />
293293         </dataarea>
294294      </part>
295295      <part name="flop2" interface="floppy_3_5">
296         <feature name="part_id" value="Disk 2"/>
296      <feature name="part_id" value="Disk 2"/>
297297         <dataarea name="flop" size="737280">
298298            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 8 of 8).dsk" size="737280" crc="ea153962" sha1="6ea5f0a2b89f223220ee8003b83a2f537fd63ee3" offset="0" />
299299         </dataarea>
300300      </part>
301301      <part name="flop3" interface="floppy_3_5">
302         <feature name="part_id" value="Disk 3"/>
302      <feature name="part_id" value="Disk 3"/>
303303         <dataarea name="flop" size="737280">
304304            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 2 of 8).dsk" size="737280" crc="fbb7805b" sha1="a9e6bfd80298626086e3a81d054b37142db08b52" offset="0" />
305305         </dataarea>
306306      </part>
307307      <part name="flop4" interface="floppy_3_5">
308         <feature name="part_id" value="Disk 4"/>
308      <feature name="part_id" value="Disk 4"/>
309309         <dataarea name="flop" size="737280">
310310            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 3 of 8).dsk" size="737280" crc="26295e10" sha1="7dcfedaafde8cf0b286d80b0f2a930dba15a362c" offset="0" />
311311         </dataarea>
312312      </part>
313313      <part name="flop5" interface="floppy_3_5">
314         <feature name="part_id" value="Disk 5"/>
314      <feature name="part_id" value="Disk 5"/>
315315         <dataarea name="flop" size="737280">
316316            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 4 of 8).dsk" size="737280" crc="4cb5d6f4" sha1="c0750209ce9b36dd76091ed353d762a9f5380adb" offset="0" />
317317         </dataarea>
318318      </part>
319319      <part name="flop6" interface="floppy_3_5">
320         <feature name="part_id" value="Disk 6"/>
320      <feature name="part_id" value="Disk 6"/>
321321         <dataarea name="flop" size="737280">
322322            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 5 of 8).dsk" size="737280" crc="9d9fd03d" sha1="7f92d37b3cb31689a3fa54c374c84366e302afb3" offset="0" />
323323         </dataarea>
324324      </part>
325325      <part name="flop7" interface="floppy_3_5">
326         <feature name="part_id" value="Disk 7"/>
326      <feature name="part_id" value="Disk 7"/>
327327         <dataarea name="flop" size="737280">
328328            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 6 of 8).dsk" size="737280" crc="c90a316e" sha1="27dfae858e543a443521dc3b9a8f70028e0cd033" offset="0" />
329329         </dataarea>
330330      </part>
331331      <part name="flop8" interface="floppy_3_5">
332         <feature name="part_id" value="Disk 8"/>
332      <feature name="part_id" value="Disk 8"/>
333333         <dataarea name="flop" size="737280">
334334            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 7 of 8).dsk" size="737280" crc="77b007ec" sha1="0f64b6b2a1eefb0597793ccb82a247945a19b5ca" offset="0" />
335335         </dataarea>
r249188r249189
343343      <info name="alt_title" value="ă‚‰ă‚“ăŸ1/2éŁ›éŸäŒèȘŹ" />
344344
345345      <part name="flop1" interface="floppy_3_5">
346         <feature name="part_id" value="Disk 1"/>
346      <feature name="part_id" value="Disk 1"/>
347347         <dataarea name="flop" size="737280">
348348            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 1 of 8)[a].dsk" size="737280" crc="9068b80b" sha1="846d114dfdcf6d33997937e03aefb5cfb782e75b" offset="0" />
349349         </dataarea>
350350      </part>
351351      <part name="flop2" interface="floppy_3_5">
352         <feature name="part_id" value="Disk 2"/>
352      <feature name="part_id" value="Disk 2"/>
353353         <dataarea name="flop" size="737280">
354354            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 8 of 8)[a].dsk" size="737280" crc="825b91a9" sha1="9dd478f437147726ba585c1a6446c0150f2de9a2" offset="0" />
355355         </dataarea>
356356      </part>
357357      <part name="flop3" interface="floppy_3_5">
358         <feature name="part_id" value="Disk 3"/>
358      <feature name="part_id" value="Disk 3"/>
359359         <dataarea name="flop" size="737280">
360360            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 2 of 8).dsk" size="737280" crc="fbb7805b" sha1="a9e6bfd80298626086e3a81d054b37142db08b52" offset="0" />
361361         </dataarea>
362362      </part>
363363      <part name="flop4" interface="floppy_3_5">
364         <feature name="part_id" value="Disk 4"/>
364      <feature name="part_id" value="Disk 4"/>
365365         <dataarea name="flop" size="737280">
366366            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 3 of 8).dsk" size="737280" crc="26295e10" sha1="7dcfedaafde8cf0b286d80b0f2a930dba15a362c" offset="0" />
367367         </dataarea>
368368      </part>
369369      <part name="flop5" interface="floppy_3_5">
370         <feature name="part_id" value="Disk 5"/>
370      <feature name="part_id" value="Disk 5"/>
371371         <dataarea name="flop" size="737280">
372372            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 4 of 8).dsk" size="737280" crc="4cb5d6f4" sha1="c0750209ce9b36dd76091ed353d762a9f5380adb" offset="0" />
373373         </dataarea>
374374      </part>
375375      <part name="flop6" interface="floppy_3_5">
376         <feature name="part_id" value="Disk 6"/>
376      <feature name="part_id" value="Disk 6"/>
377377         <dataarea name="flop" size="737280">
378378            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 6 of 8)[a].dsk" size="737280" crc="b313ebd6" sha1="99d9e9580372e9eccdc69a20e6b349a90e1c1005" offset="0" />
379379         </dataarea>
380380      </part>
381381      <part name="flop7" interface="floppy_3_5">
382         <feature name="part_id" value="Disk 7"/>
382      <feature name="part_id" value="Disk 7"/>
383383         <dataarea name="flop" size="737280">
384384            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 6 of 8).dsk" size="737280" crc="c90a316e" sha1="27dfae858e543a443521dc3b9a8f70028e0cd033" offset="0" />
385385         </dataarea>
386386      </part>
387387      <part name="flop8" interface="floppy_3_5">
388         <feature name="part_id" value="Disk 8"/>
388      <feature name="part_id" value="Disk 8"/>
389389         <dataarea name="flop" size="737280">
390390            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 7 of 8).dsk" size="737280" crc="77b007ec" sha1="0f64b6b2a1eefb0597793ccb82a247945a19b5ca" offset="0" />
391391         </dataarea>
r249188r249189
399399      <info name="alt_title" value="ă‚‰ă‚“ăŸ1/2éŁ›éŸäŒèȘŹ" />
400400
401401      <part name="flop1" interface="floppy_3_5">
402         <feature name="part_id" value="Disk 1"/>
402      <feature name="part_id" value="Disk 1"/>
403403         <dataarea name="flop" size="737280">
404404            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 1 of 8)[a2].dsk" size="737280" crc="bbd17c43" sha1="50f5d422b5eb45f5e8b340e1030bf65cb91e1a8e" offset="0" />
405405         </dataarea>
406406      </part>
407407      <part name="flop2" interface="floppy_3_5">
408         <feature name="part_id" value="Disk 2"/>
408      <feature name="part_id" value="Disk 2"/>
409409         <dataarea name="flop" size="737280">
410410            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 8 of 8)[a2].dsk" size="737280" crc="742f421d" sha1="34acc7e52b700557071447345f3f7419a972ddae" offset="0" />
411411         </dataarea>
412412      </part>
413413      <part name="flop3" interface="floppy_3_5">
414         <feature name="part_id" value="Disk 3"/>
414      <feature name="part_id" value="Disk 3"/>
415415         <dataarea name="flop" size="737280">
416416            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 2 of 8).dsk" size="737280" crc="fbb7805b" sha1="a9e6bfd80298626086e3a81d054b37142db08b52" offset="0" />
417417         </dataarea>
418418      </part>
419419      <part name="flop4" interface="floppy_3_5">
420         <feature name="part_id" value="Disk 4"/>
420      <feature name="part_id" value="Disk 4"/>
421421         <dataarea name="flop" size="737280">
422422            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 3 of 8).dsk" size="737280" crc="26295e10" sha1="7dcfedaafde8cf0b286d80b0f2a930dba15a362c" offset="0" />
423423         </dataarea>
424424      </part>
425425      <part name="flop5" interface="floppy_3_5">
426         <feature name="part_id" value="Disk 5"/>
426      <feature name="part_id" value="Disk 5"/>
427427         <dataarea name="flop" size="737280">
428428            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 4 of 8).dsk" size="737280" crc="4cb5d6f4" sha1="c0750209ce9b36dd76091ed353d762a9f5380adb" offset="0" />
429429         </dataarea>
430430      </part>
431431      <part name="flop6" interface="floppy_3_5">
432         <feature name="part_id" value="Disk 6"/>
432      <feature name="part_id" value="Disk 6"/>
433433         <dataarea name="flop" size="737280">
434434            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 5 of 8).dsk" size="737280" crc="9d9fd03d" sha1="7f92d37b3cb31689a3fa54c374c84366e302afb3" offset="0" />
435435         </dataarea>
436436      </part>
437437      <part name="flop7" interface="floppy_3_5">
438         <feature name="part_id" value="Disk 7"/>
438      <feature name="part_id" value="Disk 7"/>
439439         <dataarea name="flop" size="737280">
440440            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 6 of 8).dsk" size="737280" crc="c90a316e" sha1="27dfae858e543a443521dc3b9a8f70028e0cd033" offset="0" />
441441         </dataarea>
442442      </part>
443443      <part name="flop8" interface="floppy_3_5">
444         <feature name="part_id" value="Disk 8"/>
444      <feature name="part_id" value="Disk 8"/>
445445         <dataarea name="flop" size="737280">
446446            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 7 of 8).dsk" size="737280" crc="77b007ec" sha1="0f64b6b2a1eefb0597793ccb82a247945a19b5ca" offset="0" />
447447         </dataarea>
r249188r249189
455455      <info name="alt_title" value="ă‚‰ă‚“ăŸ1/2éŁ›éŸäŒèȘŹ" />
456456
457457      <part name="flop1" interface="floppy_3_5">
458         <feature name="part_id" value="Disk 1"/>
458      <feature name="part_id" value="Disk 1"/>
459459         <dataarea name="flop" size="737280">
460460            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 1 of 8)[a3].dsk" size="737280" crc="39cf454c" sha1="c627a49182ccf80e231525cb1a3a53e460fc024b" offset="0" />
461461         </dataarea>
462462      </part>
463463      <part name="flop2" interface="floppy_3_5">
464         <feature name="part_id" value="Disk 2"/>
464      <feature name="part_id" value="Disk 2"/>
465465         <dataarea name="flop" size="737280">
466466            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 8 of 8).dsk" size="737280" crc="ea153962" sha1="6ea5f0a2b89f223220ee8003b83a2f537fd63ee3" offset="0" />
467467         </dataarea>
468468      </part>
469469      <part name="flop3" interface="floppy_3_5">
470         <feature name="part_id" value="Disk 3"/>
470      <feature name="part_id" value="Disk 3"/>
471471         <dataarea name="flop" size="737280">
472472            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 2 of 8).dsk" size="737280" crc="fbb7805b" sha1="a9e6bfd80298626086e3a81d054b37142db08b52" offset="0" />
473473         </dataarea>
474474      </part>
475475      <part name="flop4" interface="floppy_3_5">
476         <feature name="part_id" value="Disk 4"/>
476      <feature name="part_id" value="Disk 4"/>
477477         <dataarea name="flop" size="737280">
478478            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 3 of 8).dsk" size="737280" crc="26295e10" sha1="7dcfedaafde8cf0b286d80b0f2a930dba15a362c" offset="0" />
479479         </dataarea>
480480      </part>
481481      <part name="flop5" interface="floppy_3_5">
482         <feature name="part_id" value="Disk 5"/>
482      <feature name="part_id" value="Disk 5"/>
483483         <dataarea name="flop" size="737280">
484484            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 4 of 8).dsk" size="737280" crc="4cb5d6f4" sha1="c0750209ce9b36dd76091ed353d762a9f5380adb" offset="0" />
485485         </dataarea>
486486      </part>
487487      <part name="flop6" interface="floppy_3_5">
488         <feature name="part_id" value="Disk 6"/>
488      <feature name="part_id" value="Disk 6"/>
489489         <dataarea name="flop" size="737280">
490490            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 5 of 8).dsk" size="737280" crc="9d9fd03d" sha1="7f92d37b3cb31689a3fa54c374c84366e302afb3" offset="0" />
491491         </dataarea>
492492      </part>
493493      <part name="flop7" interface="floppy_3_5">
494         <feature name="part_id" value="Disk 7"/>
494      <feature name="part_id" value="Disk 7"/>
495495         <dataarea name="flop" size="737280">
496496            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 6 of 8).dsk" size="737280" crc="c90a316e" sha1="27dfae858e543a443521dc3b9a8f70028e0cd033" offset="0" />
497497         </dataarea>
498498      </part>
499499      <part name="flop8" interface="floppy_3_5">
500         <feature name="part_id" value="Disk 8"/>
500      <feature name="part_id" value="Disk 8"/>
501501         <dataarea name="flop" size="737280">
502502            <rom name="ranma nibunnoichi 1-2 (1992)(bothtec)(jp)(disk 7 of 8).dsk" size="737280" crc="77b007ec" sha1="0f64b6b2a1eefb0597793ccb82a247945a19b5ca" offset="0" />
503503         </dataarea>
r249188r249189
511511      <info name="alt_title" value="ă‚·ăƒŒăƒ‰ă‚Șăƒ–ăƒ‰ăƒ©ă‚Žăƒł" />
512512
513513      <part name="flop1" interface="floppy_3_5">
514         <feature name="part_id" value="Game Disk 1"/>
514      <feature name="part_id" value="Game Disk 1"/>
515515         <dataarea name="flop" size="737280">
516516            <rom name="seed of dragon (1990)(riverhill soft)(jp)(disk 1 of 3)(game disk 1).dsk" size="737280" crc="6375eeb9" sha1="7a329629bc7667761751f092e8d2dc350f9eba76" offset="0" />
517517         </dataarea>
518518      </part>
519519      <part name="flop2" interface="floppy_3_5">
520         <feature name="part_id" value="Game Disk 2"/>
520      <feature name="part_id" value="Game Disk 2"/>
521521         <dataarea name="flop" size="737280">
522522            <rom name="seed of dragon (1990)(riverhill soft)(jp)(disk 2 of 3)(game disk 2).dsk" size="737280" crc="dd1fd600" sha1="16bece552fd1af10c2cf467d1c89e7d2869ded35" offset="0" />
523523         </dataarea>
524524      </part>
525525      <part name="flop3" interface="floppy_3_5">
526         <feature name="part_id" value="Game Disk 3"/>
526      <feature name="part_id" value="Game Disk 3"/>
527527         <dataarea name="flop" size="737280">
528528            <rom name="seed of dragon (1990)(riverhill soft)(jp)(disk 3 of 3)(game disk 3).dsk" size="737280" crc="3ac7bc91" sha1="f376d8875548a7910317ab7a34cd2be823101385" offset="0" />
529529         </dataarea>
r249188r249189
537537      <info name="alt_title" value="ă‚·ăƒŒăƒ‰ă‚Șăƒ–ăƒ‰ăƒ©ă‚Žăƒł" />
538538
539539      <part name="flop1" interface="floppy_3_5">
540         <feature name="part_id" value="Game Disk 1"/>
540      <feature name="part_id" value="Game Disk 1"/>
541541         <dataarea name="flop" size="737280">
542542            <rom name="seed of dragon (1990)(riverhill soft)(jp)(disk 1 of 3)(game disk 1)[a].dsk" size="737280" crc="a5f1a706" sha1="0df21b3debfc5bc83eed276ddeed0acf7f62ab30" offset="0" />
543543         </dataarea>
544544      </part>
545545      <part name="flop2" interface="floppy_3_5">
546         <feature name="part_id" value="Game Disk 2"/>
546      <feature name="part_id" value="Game Disk 2"/>
547547         <dataarea name="flop" size="737280">
548548            <rom name="seed of dragon (1990)(riverhill soft)(jp)(disk 2 of 3)(game disk 2)[a].dsk" size="737280" crc="86ea43d0" sha1="cf11190db1c36aa9b79c534b131f7258729e0e99" offset="0" />
549549         </dataarea>
550550      </part>
551551      <part name="flop3" interface="floppy_3_5">
552         <feature name="part_id" value="Game Disk 3"/>
552      <feature name="part_id" value="Game Disk 3"/>
553553         <dataarea name="flop" size="737280">
554554            <rom name="seed of dragon (1990)(riverhill soft)(jp)(disk 3 of 3)(game disk 3)[a].dsk" size="737280" crc="d0ef7a8e" sha1="a41729e7ae2e5223374603cadc08f551ae8e40e6" offset="0" />
555555         </dataarea>
r249188r249189
563563      <info name="alt_title" value="ă‚·ăƒŒăƒ‰ă‚Șăƒ–ăƒ‰ăƒ©ă‚Žăƒł" />
564564
565565      <part name="flop1" interface="floppy_3_5">
566         <feature name="part_id" value="Game Disk 1"/>
566      <feature name="part_id" value="Game Disk 1"/>
567567         <dataarea name="flop" size="737280">
568568            <rom name="seed of dragon (1990)(riverhill soft)(jp)(disk 1 of 3)(game disk 1)[a2].dsk" size="737280" crc="08fd8f1b" sha1="5803057e6c75a5841dc4f273e7d26b73f83a74f9" offset="0" />
569569         </dataarea>
570570      </part>
571571      <part name="flop2" interface="floppy_3_5">
572         <feature name="part_id" value="Game Disk 2"/>
572      <feature name="part_id" value="Game Disk 2"/>
573573         <dataarea name="flop" size="737280">
574574            <rom name="seed of dragon (1990)(riverhill soft)(jp)(disk 2 of 3)(game disk 2).dsk" size="737280" crc="dd1fd600" sha1="16bece552fd1af10c2cf467d1c89e7d2869ded35" offset="0" />
575575         </dataarea>
576576      </part>
577577      <part name="flop3" interface="floppy_3_5">
578         <feature name="part_id" value="Game Disk 3"/>
578      <feature name="part_id" value="Game Disk 3"/>
579579         <dataarea name="flop" size="737280">
580580            <rom name="seed of dragon (1990)(riverhill soft)(jp)(disk 3 of 3)(game disk 3).dsk" size="737280" crc="3ac7bc91" sha1="f376d8875548a7910317ab7a34cd2be823101385" offset="0" />
581581         </dataarea>
r249188r249189
777777      <info name="developer" value="MIWA" />
778778
779779      <part name="flop1" interface="floppy_3_5">
780         <feature name="part_id" value="Disk 1, Alt"/>
780      <feature name="part_id" value="Disk 1, Alt"/>
781781         <dataarea name="flop" size="737280">
782782            <rom name="multi-plex (1993)(miwa)(jp)[a].dsk" size="737280" crc="d116b2f7" sha1="8cd400d46b8af6a0f557eda0903ad916898b91cc" offset="0" />
783783         </dataarea>
trunk/hash/nes.xml
r249188r249189
5243352433      </part>
5243452434   </software>
5243552435
52436   <software name="bookyman">
52437      <description>Booky Man (Spa)</description>
52438      <year>1991</year>
52439      <publisher>Gluk Video</publisher>
52440      <info name="serial" value="CN-08"/>
52441      <info name="release" value="19920101"/>
52442      <part name="cart" interface="nes_cart">
52443         <feature name="pcb" value="NTDEC-N715062" />
52444         <feature name="mirroring" value="vertical" />
52445         <!-- dumped as booky man.bin with .nes header - manually split matched hashes previously known. -->
52446         <!-- <rom name="booky man.bin" size="40976" crc="dc5e106c" sha1="7777da877f2704101e73c0075c4a2a914b8430e3" offset="00000" /-->
52447         <dataarea name="prg" size="32768">
52448            <rom name="0.prg" size="16384" crc="0d7ea169" sha1="f78f6589e4b209cc0e5a61c7dea45f73fdcadc5e" offset="00000" />
52449            <rom size="16384" offset="0x4000" loadflag="reload" />
52450         </dataarea>
52451         <dataarea name="chr" size="8192">
52452            <rom name="0.chr" size="8192" crc="e838b839" sha1="09e2bc2fa043675d5300a065fbc0e29d321a6ba3" offset="00000" />
52453         </dataarea>
52454      </part>
52455   </software>
52436   <!--software name="bookyman">
52437       <description>Booky Man (Spa)</description>
52438       <year>1992</year>
52439       <publisher>Gluk Video</publisher>
52440       <info name="serial" value="CN-08"/>
52441       <info name="release" value="19920101"/>
52442       <part name="cart" interface="nes_cart">
52443           <feature name="pcb" value="NTDEC-N715062" />
52444           <feature name="mirroring" value="vertical" />
52445           <dataarea name="prg" size="32768">
52446               <rom name="0.prg" size="16384" crc="0d7ea169" sha1="f78f6589e4b209cc0e5a61c7dea45f73fdcadc5e" offset="00000" />
52447               <rom size="16384" offset="0x4000" loadflag="reload" />
52448           </dataarea>
52449           <dataarea name="chr" size="8192">
52450               <rom name="0.chr" size="8192" crc="e838b839" sha1="09e2bc2fa043675d5300a065fbc0e29d321a6ba3" offset="00000" />
52451           </dataarea>
52452       </part>
52453   </software-->
5245652454
5245752455   <!--software name="cosmocops" cloneof="cosmocop">
5245852456       <description>Cosmos Cop (Spa)</description>
r249188r249189
7988379881   </software>
7988479882
7988579883   <software name="mc_cb280" supported="no">
79886      <description>Coolboy RS-18 (280-in-1)</description>
79887      <year>19??</year>
79888      <publisher>&lt;unknown&gt;</publisher>
79889      <part name="cart" interface="nes_cart">
79890      <!--<feature name="slot" value="coolboy" /> <feature name="pcb" value="UNL-COOLBOY" /> -->
79891         <dataarea name="prg" size="4194304">
79892            <rom name="w25q32.u5" size="4194304" crc="c9541bdf" sha1="f0ce46f18658ca5dbed881e5a80460e59820bbd0" offset="00000" />
79893         </dataarea>
79884   <description>Coolboy RS-18 (280-in-1)</description>
79885   <year>19??</year>
79886   <publisher>&lt;unknown&gt;</publisher>
79887   <part name="cart" interface="nes_cart">
79888      <!--<feature name="slot" value="coolboy" />
79889      <feature name="pcb" value="UNL-COOLBOY" /> -->
79890      <dataarea name="prg" size="4194304">
79891      <rom name="w25q32.u5" size="4194304" crc="c9541bdf" sha1="f0ce46f18658ca5dbed881e5a80460e59820bbd0" offset="00000" />
79892      </dataarea>
7989479893      <!-- ?? -->
79895         <dataarea name="vram" size="131072">
79896         </dataarea>
79897      </part>
79894      <dataarea name="vram" size="131072">
79895      </dataarea>
79896   </part>
7989879897   </software>
7989979898
79900   <software name="mc_cb203" supported="no">
79901      <description>Coolboy RS-17 (203-in-1)</description>
79902      <year>19??</year>
79903      <publisher>&lt;unknown&gt;</publisher>
79904      <part name="cart" interface="nes_cart">
79905      <!--<feature name="slot" value="coolboy" /> <feature name="pcb" value="UNL-COOLBOY" /> -->
79906         <dataarea name="prg" size="4194304">
79907            <rom name="s25fl032.bin" size="4194304" crc="33c4e67b" sha1="5787db4c8ce4c2569a5f9e9054cbb1944c1b3092" offset="00000" />
79908         </dataarea>
79909      <!-- ?? -->
79910         <dataarea name="vram" size="131072">
79911         </dataarea>
79912      </part>
79913   </software>
79914
7991579899   <software name="mc_samur" supported="no">
7991679900   <!-- a VT03 OneBus based system -->
79917      <description>Samurai (60-in-1)</description>
79918      <year>2006</year>
79919      <publisher>Team Hummer</publisher>
79920      <part name="cart" interface="nes_cart">
79921         <dataarea name="prg" size="2097152">
79922            <rom name="29lv160b.bin" size="2097152" crc="7dac8efe" sha1="ffb27ebb4299d5b9a4b976c418fcc7695200060c" offset="00000" />
79923         </dataarea>
79901   <description>Samurai (60-in-1)</description>
79902   <year>2006</year>
79903   <publisher>Team Hummer</publisher>
79904   <part name="cart" interface="nes_cart">
79905      <dataarea name="prg" size="2097152">
79906      <rom name="29lv160b.bin" size="2097152" crc="7dac8efe" sha1="ffb27ebb4299d5b9a4b976c418fcc7695200060c" offset="00000" />
79907      </dataarea>
7992479908      <!-- ?? -->
79925         <dataarea name="vram" size="131072">
79926         </dataarea>
79927      </part>
79909      <dataarea name="vram" size="131072">
79910      </dataarea>
79911   </part>
7992879912   </software>
7992979913
7993079914   <software name="mc_sg360" supported="no">
trunk/hash/pico.xml
r249188r249189
2020* おえかきピコ <タブレットぼみ> - Oekaki Pico ~Tablet no Mi~ (Sega - ???? - HPC-????)
2121* ă„ăŁă—ă‚‡ă«ă†ăŸăŠă†! ăƒ‰ăƒ©ăˆă‚‚ă‚“ ă‚ăă‚ăă‚«ăƒ©ă‚Șケ - Issho ni Utaou! Doraemon Wakuwaku Karaoke (Sega Toys - 1999xxxx - HPC-6073)
2222* クッキングピコ ă‚»ăƒƒăƒˆ - Cooking Pico Set (Sega Toys - 1999xxxx - HPC-6076)
23* ă‚čăƒŒă‚žăƒŒăĄă‚ƒă‚“ăšăƒžăƒŒăƒ“ăƒŒ おお぀だい ă ïœžă„ă™ă! - Susie-chan to Mabi - Otetsudai Daisuki! (Sega Toys - 200010xx - HPC-6089)
2324* ăƒ‘ă‚œă‚łăƒłæŽ„ç¶šă‚­ăƒƒăƒˆ ăƒ”ă‚łă‚żă‚Šăƒłă«ă§ă‹ă‘ă‚ˆă†! - Pasokon Setsuzoku Kit PicoTown ni Dekakeyou! (Sega Toys - 20010601 - HPC-6097)
2425* ăƒˆăƒŸă‚«ăƒ»ăƒ”ă‚ł ハă‚čă‚­ăƒ„ăƒŒăƒ‘ăƒŒă‚­ăƒłă‚° ăă‚“ăă‚…ă†ă—ă‚…ă€ă©ă†! はたらくぼりもぼ <ćˆć›žïœ„ăƒˆăƒŸă‚«ä»˜ć±ž> - Tomica Pico Rescue Parking Kinkyuushutsudou! Hataraku Norimono ~Shokai-Tomica Fuzoku~ (Sega Toys - 200207xx - HPC-6114)
2526* 歩研 ピコで歩習 1ćčŽç”Ÿ - Gakken Pico de Gakushuu 1-nensei (Sega Toys - ???? - HPC-????)
27* ăƒ”ăƒŒă‚żăƒŒăƒ‘ăƒł ăƒăƒăƒŒăƒ©ăƒłăƒ‰ăž いこう!<10th> - Peter Pan - Neverland e Ikou! ~10th Anniversary Edition~ (Sega Toys - 200306xx - HPC-6124) [reprint HPC-6047]
2628* McDonald's ăƒžă‚Żăƒ‰ăƒŠăƒ«ăƒ‰ă§ă‚ăăŒ!<10th> - McDonald's - McDonald de Asobo! ~10th Anniversary Edition~ (Sega Toys - 200306xx - HPC-6125) [reprint HPC-6079]
2729* ăƒ‰ăƒ©ăˆă‚‚ă‚“ ぼびたぼ ăŸăĄăȘか ドキドキ たんけん!<10th> - Doraemon - Nobita no Machinaka Dokidoki Tanken! ~10th Anniversary Edition~ (Sega Toys - 200308xx - HPC-6126) [reprint HPC-6009]
2830* ăƒˆă‚€ă‚čăƒˆăƒŒăƒȘăƒŒ2 ォッディ そうさく だいさくせん!!<10th> - Toy Story 2 - Woody Sousaku Daisakusen!! ~10th Anniversary Edition~ (Sega Toys - 20030714 - HPC-6127) [reprint HPC-6090]
r249188r249189
4850* ă„ăŁă—ă‚‡ă«ăŻă—ă‚ă†ăă‹ă‚“ă—ă‚ƒăƒˆăƒŒăƒžă‚č <Best Selection> - Issho ni Hashirou Kikansha Thomas Best Selection (Bandai - 20040713 - T-133490) [reprint T-133140]
4951* 歩研ぼおăčă‚“ăă‚‡ă†ă‚œăƒ•ăƒˆ たしざん ăČきざん - Gakken no Obenkyou Soft - Tashizan Hikizan (Gakken - 1995xxxx - T-169030)
5052* ăŻă˜ă‚ăŸă‚·ăƒȘăƒŒă‚ș4 歩研ぼおăčă‚“ăă‚‡ă†ă‚œăƒ•ăƒˆ たしざん ăČきざん - Hajimema Series 4 - Gakken no Obenkyou Soft - Tashizan Hikizan (Gakken - 1998xxxx - T-169070)
53* ăƒ‰ăƒ©ăˆă‚‚ă‚“ ăˆă‚“ăăïœ„ă„ă‚‚ă»ă‚Šïœ„ă†ă‚“ă©ă†ă‹ă„ <10th Anniversary> - Doraemon Ensoku-Imohori-Undoukai ~10th Anniversary Edition~ (Shogakukan - 200309xx - T-226090)
5154* くもんぼ すくすくれっすん はじめどぼăČらがăȘ - Kumon no Sukusuku Ressun Hajimete no Hiragana (Kumon - 20020124 - T-300020)
5255* ć·Šè„łé–‹ç™șă‚·ăƒȘăƒŒă‚ș2 æ•°é‡ăƒ»èšˆçź— - Sanou Kaihatsu Series 2 Suuryou - Keisan (Imagineer - 19951002 - T-150230)
56* ć·Šè„łé–‹ç™șă‚·ăƒȘăƒŒă‚ș5 èż·è·Żăƒ»èš˜æ†¶ (CDä»˜ă) - Sanou Kaihatsu Series 5 Meiro - Kioku (CD Tsuki) (Imagineer - 19951208 - T-150240)
5357* ćčłæˆæ•™è‚Čć§”ć“ĄäŒšJr. めざせć„Ș等生 - Heisei Kyouikuiinkai Jr. Mezase Yuutousei (Imagineer - 19951201 - T-150270)
5458* ć·Šè„łé–‹ç™șă‚·ăƒȘăƒŒă‚ș æŽąçŽąăƒ»æ„Ÿæ€§ăƒ»èš˜æ†¶ - Sanou Kaihatsu Series Tansaku-Kansei-Kioku (Imagineer - Existence unconfirmed!)
5559
r249188r249189
10011005      </part>
10021006   </software>
10031007
1004   <software name="doraeiu10th" cloneof="doraeiu">
1005      <description>Doraemon Ensoku-Imohori-Undoukai ~10th Anniversary Edition~ (Jpn)</description>
1006      <year>2003</year>
1007      <publisher>Shogakukan</publisher>
1008      <info name="serial" value="T-226090"/>
1009      <!-- * ăƒ‰ăƒ©ăˆă‚‚ă‚“ ăˆă‚“ăăïœ„ă„ă‚‚ă»ă‚Šïœ„ă†ă‚“ă©ă†ă‹ă„ <10th Anniversary> - Doraemon Ensoku-Imohori-Undoukai ~10th Anniversary Edition~ (Shogakukan - 200309xx - T-226090) -->
1010      <info name="alt_title" value="ăƒ‰ăƒ©ăˆă‚‚ă‚“ ăˆă‚“ăăïœ„ă„ă‚‚ă»ă‚Šïœ„ă†ă‚“ă©ă†ă‹ă„"/>
1011      <part name="cart" interface="pico_cart">
1012         <feature name="pcb" value="171-7090A" />
1013         <feature name="ic1" value="unknown" />
1014         <dataarea name="rom" size="2097152">
1015            <rom name="Doraemon Ensoku-Imohori-Undoukai (10th Anniversary) (Japan).ic1" size="2097152" crc="5adcb456" sha1="9609c98dd34e6d5e5d0389d019c3017b9f244aff" offset="000000" loadflag="load16_word_swap" />
1016         </dataarea>
1017      </part>
1018   </software>
1019
10201008   <software name="dorakkkt">
10211009      <description>Doraemon Kazoete-Kanzan Kazu Tokei (Jpn)</description>
10221010      <year>199?</year>
r249188r249189
34133401      </part>
34143402   </software>
34153403
3416   <software name="peterpan10th" cloneof="peterpan">
3417      <description>Peter Pan - Neverland e Ikou! ~10th Anniversary Edition~ (Jpn)</description>
3418      <year>2002</year>
3419      <publisher>Sega Toys</publisher>
3420      <info name="serial" value="HPC-6214"/>
3421      <info name="release" value="200306xx"/>
3422      <!-- * ăƒ”ăƒŒă‚żăƒŒăƒ‘ăƒł ăƒăƒăƒŒăƒ©ăƒłăƒ‰ăž いこう!<10th> - Peter Pan - Neverland e Ikou! ~10th Anniversary Edition~ (Sega Toys - 200306xx - HPC-6124) [reprint HPC-6047]
3423           malformed token?  Used normal Peter Pan alt_title for now -->
3424      <info name="alt_title" value="ăƒ”ăƒŒă‚żăƒŒăƒ‘ăƒł ăƒăƒăƒŒăƒ©ăƒłăƒ‰ăž いこう!"/>
3425      <part name="cart" interface="pico_cart">
3426         <feature name="pcb" value="171-7090A" />
3427         <feature name="ic1" value="unknown" />
3428         <dataarea name="rom" size="2097152">
3429            <rom name="Peter Pan - Neverland e Ikou! (10th Anniversary) (Japan).bin.ic1" size="2097152" crc="e0ea39c0" sha1="ae35761b41632dfbe4f1a6f3065a5db2514d5558" offset="000000" loadflag="load16_word_swap" />
3430         </dataarea>
3431      </part>
3432   </software>
3433
34343404   <software name="psoccer">
34353405      <description>Pico Soccer - Mezase Soccer Senshu (Jpn)</description>
34363406      <year>1995</year>
r249188r249189
37813751      </part>
37823752   </software>
37833753
3784   <software name="sanouk5">
3785      <description>Sanou Kaihatsu Series 5 Meiro - Kioku (CD Tsuki) (Jpn)</description>
3786      <year>1995</year>
3787      <publisher>Imagineer</publisher>
3788      <info name="serial" value="T-150240"/>
3789      <!---This also contains a complement CD which will be dumped -->
3790      <!-- * ć·Šè„łé–‹ç™șă‚·ăƒȘăƒŒă‚ș5 èż·è·Żăƒ»èš˜æ†¶ (CDä»˜ă) (malformed token? - using sanouk4 above to fill field for now) -->
3791      <info name="release" value="19951208"/>
3792      <info name="alt_title" value="ć·Šè„łé–‹ç™șă‚·ăƒȘăƒŒă‚ș4 æŽšç†ăƒ»æ§‹æˆ"/>
3793      <part name="cart" interface="pico_cart">
3794         <feature name="pcb" value="171-6882A" />
3795         <feature name="ic1" value="MPR-18458-T" />
3796         <dataarea name="rom" size="524288">
3797            <rom name="mpr-18458-t.ic1" size="524288" crc="6340c18a" sha1="101d5652ffd704788f1f44b671be843e3430e58a" offset="000000" loadflag="load16_word_swap" />
3798         </dataarea>
3799      </part>
3800   </software>
3801
38023754   <software name="sanouk6">
38033755      <description>Sanou Kaihatsu Series 6 Ouyoumondai (Jpn)</description>
38043756      <year>1995</year>
r249188r249189
43434295      </part>
43444296   </software>
43454297
4346   <software name="susiechn">
4347      <description>Susie-chan to Marvy o-Tetsudai Da~isuki! (Jpn)</description>
4348      <year>2000</year>
4349      <publisher>Sega Toys</publisher>
4350      <info name="serial" value="HPC-6089"/>
4351      <info name="release" value="200010xx"/>
4352      <info name="alt_title" value="ă‚čăƒŒă‚žăƒŒăĄă‚ƒă‚“ăšăƒžăƒŒăƒ“ăƒŒ おお぀だい ă ïœžă„ă™ă!"/>
4353      <part name="cart" interface="pico_cart">
4354         <feature name="pcb" value="171-7090A" />
4355         <feature name="ic1" value="9KO-0027-MX" />
4356         <dataarea name="rom" size="2097152">
4357            <rom name="9ko-0027-mx.ic1" size="2097152" crc="178fd129" sha1="87c129ae9c253df476a4b588fdaa8afc0e4ecf67" offset="000000" loadflag="load16_word_swap" />
4358         </dataarea>
4359      </part>
4360   </software>
4361
43624298   <software name="sylvan">
43634299      <description>Silvanian Families - Mori no Nakama to Tanoshii Otanjoubikai (Jpn)</description>
43644300      <year>2001</year>
trunk/hash/pro128_cart.xml
r249188r249189
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3<softwarelist name="pro128_cart" description="Prodest PC 128 cartridges">
4
5
6   <software name="agenda">
7      <description>Agenda</description>
8      <year>1984</year>
9      <publisher>Answare</publisher>
10
11      <part name="cart" interface="mo5_cart">
12         <dataarea name="rom" size="16384">
13            <rom name="agenda (1984)(answare)(fr).m5" size="16384" crc="a4460761" sha1="5a77e3709b90f430c0b4c2c282916095e60ee22b" offset="0x0000" />
14         </dataarea>
15      </part>
16   </software>
17
18   <software name="clrpaint">
19      <description>Colorpaint</description>
20      <year>1985</year>
21      <publisher>Thomson</publisher>
22
23      <part name="cart" interface="mo5_cart">
24         <dataarea name="rom" size="32768">
25            <rom name="colorpaint (1985)(thomson)(it).m5" size="32768" crc="8fa1493b" sha1="d27c6db21adb29dc76df33d7a3855f8532d8cc57" offset="0x0000" />
26         </dataarea>
27      </part>
28   </software>
29
30   <software name="logo">
31      <description>LOGO v1.0</description>
32      <year>1984</year>
33      <publisher>Soli</publisher>
34
35      <part name="cart" interface="mo5_cart">
36         <dataarea name="rom" size="16384">
37            <rom name="logo v1.0 (1984)(soli)(fr).m5" size="16384" crc="6e997494" sha1="039f460f00973da9e192691061b37b493028bc35" offset="0x0000" />
38         </dataarea>
39      </part>
40   </software>
41
42   <software name="scriptor">
43      <description>Scriptor</description>
44      <year>1986</year>
45      <publisher>To Tek</publisher>
46
47      <part name="cart" interface="mo5_cart">
48         <dataarea name="rom" size="16384">
49            <rom name="scriptor (1986)(to tek)(it).m5" size="16384" crc="3bb553c9" sha1="b8b4b7618684e0c9331e8759fe13b07d22340fbe" offset="0x0000" />
50         </dataarea>
51      </part>
52   </software>
53
54
55</softwarelist>
trunk/hash/tutor.xml
r249188r249189
291291      <info name="alt_title" value="Mr.DO!"/>
292292      <info name="serial" value="019E"/>
293293      <part name="cart" interface="tutor_cart">
294         <dataarea name="rom" size="16384">
295            <rom name="tomy 3l1.ic1.bin" size="16384" crc="1dfa3f4b" sha1="93d1c17c5edd44f27c28cde88a68f609b77feb0c" offset="0" />
294         <dataarea name="rom" size="8192">
295            <rom name="tomy 3l1.ic1.bin" size="8192" crc="1dfa3f4b" sha1="93d1c17c5edd44f27c28cde88a68f609b77feb0c" offset="0" />
296296         </dataarea>
297297      </part>
298298   </software>
trunk/hash/vc4000.xml
r249188r249189
447447      </part>
448448   </software>
449449
450   <!-- Cassette 34 - Space Laser (unreleased) -->
451   <!-- Cassette 35 - Rodeo (unreleased) -->
450   <!-- Cassette 34 (unreleased) -->
451   <!-- Cassette 35 (unreleased) -->
452452
453453   <software name="backgamm">
454454      <description>Backgammon / Jacquet</description>
r249188r249189
491491      </part>
492492   </software>
493493
494   <!-- Cassette 39 - Basketball (unreleased) -->
494   <!-- Cassette 39 (unreleased) -->
495495
496496   <software name="suprspac">
497497      <description>Super-Space</description>
r249188r249189
508508      </part>
509509   </software>
510510
511<!-- Unknown number - cart label shows "CASSETTE PARA SISTEMA DE VIDEO H-21" -->
512   <software name="comefrut" supported="no">
513      <description>Come Frutas</description>
514      <year>19??</year>
515      <publisher>Interton</publisher>
516      <info name="serial" value="??"/>
517      <part name="cart" interface="vc4000_cart">
518         <feature name="slot" value="rom4k" />
519         <dataarea name="rom" size="4096">
520            <rom name="comefrutas.bin" size="4096" crc="f66c8e3a" sha1="c695bd36b572dff2c8f6c49edfcfda6dda3675c1" offset="0" />
521         </dataarea>
522      </part>
523   </software>
524
525511</softwarelist>
trunk/scripts/src/bus.lua
r249188r249189
779779      MAME_DIR .. "src/emu/bus/isa/svga_cirrus.h",
780780      MAME_DIR .. "src/emu/bus/isa/ega.c",
781781      MAME_DIR .. "src/emu/bus/isa/ega.h",
782      MAME_DIR .. "src/emu/bus/isa/pgc.c",
783      MAME_DIR .. "src/emu/bus/isa/pgc.h",
784782      MAME_DIR .. "src/emu/bus/isa/vga.c",
785783      MAME_DIR .. "src/emu/bus/isa/vga.h",
786784      MAME_DIR .. "src/emu/bus/isa/vga_ati.c",
r249188r249189
21872185      MAME_DIR .. "src/emu/bus/cpc/hd20.h",
21882186      MAME_DIR .. "src/emu/bus/cpc/ddi1.c",
21892187      MAME_DIR .. "src/emu/bus/cpc/ddi1.h",
2190      MAME_DIR .. "src/emu/bus/cpc/magicsound.c",
2191      MAME_DIR .. "src/emu/bus/cpc/magicsound.h",
21922188   }
21932189end
21942190
trunk/scripts/src/sound.lua
r249188r249189
627627   files {
628628      MAME_DIR .. "src/emu/sound/upd7759.c",
629629      MAME_DIR .. "src/emu/sound/upd7759.h",
630      MAME_DIR .. "src/emu/sound/315-5641.c",
631      MAME_DIR .. "src/emu/sound/315-5641.h",
632630   }
633631end
634632
trunk/scripts/target/mame/mess.lua
r249188r249189
22122212files {
22132213   MAME_DIR .. "src/mess/drivers/pcd.c",
22142214   MAME_DIR .. "src/mess/machine/pcd_kbd.c",
2215   MAME_DIR .. "src/mess/video/pcd.c",
22162215}
22172216
22182217createMESSProjects(_target, _subtarget, "slicer")
trunk/src/emu/bus/cpc/cpcexp.h
r249188r249189
3131 *   RAMDIS  45  46  CURSOR
3232 *    L.PEN  47  48  _EXP
3333 *      GND  49  50  CLOCK
34 *
35 *  Aleste 520EX expansion port is 62-pin.  Same as the CPC above, except that pin 40 is not connected, plus the following:
36 * 
37 *    MAP14  A26  B26  MAP15
38 *    MAP16  A27  B27  MAP17
39 *    MAP18  A28  B28  MAPBLK
40 *    _INTA  A29  B29  _DISP
41 *     Agnd  A30  B30  _CPU
42 *     Aucc  A31  B31  HIGH
43 *
4434 */
4535
4636#pragma once
trunk/src/emu/bus/cpc/magicsound.c
r249188r249189
1// license:BSD-3-Clause
2// copyright-holders:Barry Rodewald
3/*
4 * magicsound.c
5 *
6 *  Magic Sound Board for the Aleste 520EX
7 *
8 */
9 
10#include "emu.h"
11#include "magicsound.h"
12#include "includes/amstrad.h"
13
14
15//**************************************************************************
16//  DEVICE DEFINITIONS
17//**************************************************************************
18
19const device_type AL_MAGICSOUND = &device_creator<al_magicsound_device>;
20
21
22static MACHINE_CONFIG_FRAGMENT( al_magicsound )
23   MCFG_DEVICE_ADD( "dmac", AM9517A, XTAL_4MHz )  // CLK from expansion port
24   // According to the schematics, the TC pin (EOP on western chips) is connected to NMI on the expansion port.
25   // NMIs seem to occur too quickly when this is active, so either EOP is not triggered at the correct time, or
26   // the K1810WT37 is different to the i8237/AM9517A
27   //MCFG_I8237_OUT_EOP_CB(DEVWRITELINE("^", cpc_expansion_slot_device, nmi_w)) // MCFG_DEVCB_INVERT
28   MCFG_I8237_OUT_HREQ_CB(DEVWRITELINE("dmac", am9517a_device, hack_w))
29   MCFG_I8237_IN_MEMR_CB(READ8(al_magicsound_device,dma_read_byte))
30   MCFG_I8237_OUT_IOW_0_CB(WRITE8(al_magicsound_device,dma_write_byte))
31   MCFG_I8237_OUT_IOW_1_CB(WRITE8(al_magicsound_device,dma_write_byte))
32   MCFG_I8237_OUT_IOW_2_CB(WRITE8(al_magicsound_device,dma_write_byte))
33   MCFG_I8237_OUT_IOW_3_CB(WRITE8(al_magicsound_device,dma_write_byte))
34   MCFG_I8237_OUT_DACK_0_CB(WRITELINE(al_magicsound_device, dack0_w))
35   MCFG_I8237_OUT_DACK_1_CB(WRITELINE(al_magicsound_device, dack1_w))
36   MCFG_I8237_OUT_DACK_2_CB(WRITELINE(al_magicsound_device, dack2_w))
37   MCFG_I8237_OUT_DACK_3_CB(WRITELINE(al_magicsound_device, dack3_w))
38
39   // Timing does not seem to be correct.
40   // According to the schematics, the clock is from the clock pin on the expansion port (4MHz), and
41   // passes through an inverter to each CLK pin on both timers.  This seems to be too fast.
42   // Timer outputs to SAM0/1/2/3 are sample clocks for each sound channel, D/A0 is the low bit of the channel select.
43   MCFG_DEVICE_ADD("timer1", PIT8254, 0)
44   MCFG_PIT8253_CLK0(XTAL_4MHz)
45   MCFG_PIT8253_OUT0_HANDLER(WRITELINE(al_magicsound_device,sam0_w))
46   MCFG_PIT8253_CLK1(XTAL_4MHz)
47   MCFG_PIT8253_OUT1_HANDLER(WRITELINE(al_magicsound_device,sam1_w))
48   MCFG_PIT8253_CLK2(XTAL_4MHz)
49   MCFG_PIT8253_OUT2_HANDLER(WRITELINE(al_magicsound_device,sam2_w))
50
51   MCFG_DEVICE_ADD("timer2", PIT8254, 0)
52   MCFG_PIT8253_CLK0(XTAL_4MHz)
53   MCFG_PIT8253_OUT0_HANDLER(WRITELINE(al_magicsound_device,sam3_w))
54   MCFG_PIT8253_CLK1(XTAL_4MHz)
55   MCFG_PIT8253_OUT1_HANDLER(WRITELINE(al_magicsound_device,da0_w))
56   MCFG_PIT8253_CLK2(XTAL_4MHz)
57
58   MCFG_SPEAKER_STANDARD_MONO("mono")
59   MCFG_DAC_ADD("dac1")   
60   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
61   // no pass-through(?)
62MACHINE_CONFIG_END
63
64machine_config_constructor al_magicsound_device::device_mconfig_additions() const
65{
66   return MACHINE_CONFIG_NAME( al_magicsound );
67}
68
69//**************************************************************************
70//  LIVE DEVICE
71//**************************************************************************
72
73al_magicsound_device::al_magicsound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
74   device_t(mconfig, AL_MAGICSOUND, "Magic Sound Board", tag, owner, clock, "al_magicsound", __FILE__),
75   device_cpc_expansion_card_interface(mconfig, *this),
76   m_dac1(*this,"dac1"),
77   m_dmac(*this,"dmac"),
78   m_timer1(*this,"timer1"),
79   m_timer2(*this,"timer2")
80{
81}
82
83//-------------------------------------------------
84//  device_start - device-specific startup
85//-------------------------------------------------
86
87void al_magicsound_device::device_start()
88{
89   device_t* cpu = machine().device("maincpu");
90   address_space& space = cpu->memory().space(AS_IO);
91   m_slot = dynamic_cast<cpc_expansion_slot_device *>(owner());
92
93   space.install_readwrite_handler(0xf8d0,0xf8df,0,0,read8_delegate(FUNC(al_magicsound_device::dmac_r),this),write8_delegate(FUNC(al_magicsound_device::dmac_w),this));
94   space.install_write_handler(0xf9d0,0xf9df,0,0,write8_delegate(FUNC(al_magicsound_device::timer_w),this));
95   space.install_write_handler(0xfad0,0xfadf,0,0,write8_delegate(FUNC(al_magicsound_device::volume_w),this));
96   space.install_write_handler(0xfbd0,0xfbdf,0,0,write8_delegate(FUNC(al_magicsound_device::mapper_w),this));
97   
98   m_ramptr = machine().device<ram_device>(":" RAM_TAG);
99   
100   for(int x=0;x<4;x++)
101   {
102      save_item(NAME(m_output[x]),x);
103   }
104}
105
106//-------------------------------------------------
107//  device_reset - device-specific reset
108//-------------------------------------------------
109
110void al_magicsound_device::device_reset()
111{
112   m_current_channel = -1;
113   m_current_output = 0;
114   set_timer_gate(false);
115}
116
117READ8_MEMBER(al_magicsound_device::dmac_r)
118{
119   return m_dmac->read(space,offset);
120}
121
122WRITE8_MEMBER(al_magicsound_device::dmac_w)
123{
124   m_dmac->write(space,offset,data);
125}
126
127WRITE8_MEMBER(al_magicsound_device::timer_w)
128{
129   // can both PITs be selected at the same time?
130   if(offset & 0x08)
131      m_timer1->write(space,offset & 0x03,data);
132   if(offset & 0x04)
133      m_timer2->write(space,offset & 0x03,data);
134}
135
136WRITE8_MEMBER(al_magicsound_device::volume_w)
137{
138   m_volume[offset & 0x03] = data & 0x3f;
139}
140
141WRITE8_MEMBER(al_magicsound_device::mapper_w)
142{
143   UINT8 channel = (offset & 0x0c) >> 2;
144   UINT8 page = offset & 0x03;
145   m_page[channel][page] = (~(data) & 0x3f) * 0x4000;
146   set_timer_gate(true);
147}
148
149WRITE_LINE_MEMBER(al_magicsound_device::da0_w)
150{
151   m_dac1->write_unsigned8(m_output[m_current_output++]);
152   if(m_current_output > 3)
153      m_current_output = 0;
154}
155
156WRITE_LINE_MEMBER(al_magicsound_device::dack0_w) { m_dack[0] = state; }
157WRITE_LINE_MEMBER(al_magicsound_device::dack1_w) { m_dack[1] = state; }
158WRITE_LINE_MEMBER(al_magicsound_device::dack2_w) { m_dack[2] = state; }
159WRITE_LINE_MEMBER(al_magicsound_device::dack3_w) { m_dack[3] = state; }
160
161WRITE_LINE_MEMBER(al_magicsound_device::sam0_w) { m_current_channel = 0; if(m_dack[0] && state) m_dmac->dreq0_w(1); }
162WRITE_LINE_MEMBER(al_magicsound_device::sam1_w) { m_current_channel = 1; if(m_dack[1] && state) m_dmac->dreq1_w(1); }
163WRITE_LINE_MEMBER(al_magicsound_device::sam2_w) { m_current_channel = 2; if(m_dack[2] && state) m_dmac->dreq2_w(1); }
164WRITE_LINE_MEMBER(al_magicsound_device::sam3_w) { m_current_channel = 3; if(m_dack[3] && state) m_dmac->dreq3_w(1); }
165
166READ8_MEMBER(al_magicsound_device::dma_read_byte)
167{
168   UINT8 ret = 0xff;
169   UINT8 page = (offset & 0xc000) >> 14;
170   
171   if(m_current_channel != -1)
172      ret = m_ramptr->read(m_page[m_current_channel][page] + (offset & 0x3fff));
173   return ret;
174}
175
176WRITE8_MEMBER(al_magicsound_device::dma_write_byte)
177{
178   m_output[m_current_channel] = data;
179}
180
181void al_magicsound_device::set_timer_gate(bool state)
182{
183   m_timer1->write_gate0(state);
184   m_timer1->write_gate1(state);
185   m_timer1->write_gate2(state);
186   m_timer2->write_gate0(state);
187   m_timer2->write_gate1(state);
188   m_timer2->write_gate2(state);
189}
190
trunk/src/emu/bus/cpc/magicsound.h
r249188r249189
1// license:BSD-3-Clause
2// copyright-holders:Barry Rodewald
3/*
4 * magicsound.h
5 *
6 *  Magic Sound Board for the Aleste 520EX
7 *
8 *  DMA-based 4-channel sound board
9 * 
10 *  1x K1810WT37 DMA controller (i8237/AM9517A)
11 *  2x K1810WT54 programmable timers  (i8254)
12 *  1x K1118PA1 DAC  (MC10318)
13 *
14 *  I/O Ports:
15 *  FxDx: selects the board
16 *  F8Dx: DMA controller (R/w)
17 *  F9Dx: PIT timers (A2 active for channels 0-2, A3 active for channels 3-5) (W/O)
18 *  FADx: Volume control (A1-A0 = channel) (W/O, 6-bit)
19 *  FBDx: Mapper (A1-A0 = mapper page number, A3-A2 = channel, D5-D0 = inverted page number) (W/O)
20 *
21 *  Further info available here:  http://cpcwiki.eu/index.php/Magic_Sound_Board
22 *
23 */
24
25#ifndef MAGICSOUND_H_
26#define MAGICSOUND_H_
27
28#include "emu.h"
29#include "cpcexp.h"
30#include "sound/dmadac.h"
31#include "sound/dac.h"
32#include "machine/am9517a.h"
33#include "machine/pit8253.h"
34#include "machine/ram.h"
35
36class al_magicsound_device  : public device_t,
37                     public device_cpc_expansion_card_interface
38{
39public:
40   // construction/destruction
41   al_magicsound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
42
43   // optional information overrides
44   virtual machine_config_constructor device_mconfig_additions() const;
45
46   DECLARE_READ8_MEMBER(dmac_r);
47   DECLARE_WRITE8_MEMBER(dmac_w);
48   DECLARE_WRITE8_MEMBER(timer_w);
49   DECLARE_WRITE8_MEMBER(volume_w);
50   DECLARE_WRITE8_MEMBER(mapper_w);
51   DECLARE_WRITE_LINE_MEMBER(da0_w);
52   DECLARE_READ8_MEMBER(dma_read_byte);
53   DECLARE_WRITE8_MEMBER(dma_write_byte);
54   DECLARE_WRITE_LINE_MEMBER(dack0_w);
55   DECLARE_WRITE_LINE_MEMBER(dack1_w);
56   DECLARE_WRITE_LINE_MEMBER(dack2_w);
57   DECLARE_WRITE_LINE_MEMBER(dack3_w);
58   DECLARE_WRITE_LINE_MEMBER(sam0_w);
59   DECLARE_WRITE_LINE_MEMBER(sam1_w);
60   DECLARE_WRITE_LINE_MEMBER(sam2_w);
61   DECLARE_WRITE_LINE_MEMBER(sam3_w);
62
63protected:
64   // device-level overrides
65   virtual void device_start();
66   virtual void device_reset();
67
68private:
69   cpc_expansion_slot_device *m_slot;
70
71   required_device<dac_device> m_dac1;
72   required_device<am9517a_device> m_dmac;
73   required_device<pit8254_device> m_timer1;
74   required_device<pit8254_device> m_timer2;
75   
76   void set_timer_gate(bool state);
77   
78   UINT8 m_volume[4];
79   UINT32 m_page[4][4];
80   UINT8 m_output[4];
81   bool m_dack[4];
82   INT8 m_current_channel;
83   ram_device* m_ramptr;
84   UINT8 m_current_output;
85};
86
87// device type definition
88extern const device_type AL_MAGICSOUND;
89
90
91#endif /* MAGICSOUND_H_ */
trunk/src/emu/bus/isa/isa_cards.c
r249188r249189
1818   SLOT_INTERFACE("aga", ISA8_AGA)
1919   SLOT_INTERFACE("aga_pc200", ISA8_AGA_PC200)
2020   SLOT_INTERFACE("ega", ISA8_EGA)
21   SLOT_INTERFACE("pgc", ISA8_PGC)
2221   SLOT_INTERFACE("svga_et4k", ISA8_SVGA_ET4K)
2322   SLOT_INTERFACE("num9rev",ISA8_NUM_9_REV)
2423   SLOT_INTERFACE("com", ISA8_COM)
r249188r249189
5655   SLOT_INTERFACE("cga", ISA8_CGA)
5756   SLOT_INTERFACE("wyse700", ISA8_WYSE700)
5857   SLOT_INTERFACE("ega", ISA8_EGA)
59   SLOT_INTERFACE("pgc", ISA8_PGC)
6058   SLOT_INTERFACE("vga", ISA8_VGA)
6159   SLOT_INTERFACE("svga_et4k", ISA8_SVGA_ET4K)
6260   SLOT_INTERFACE("num9rev",ISA8_NUM_9_REV)
trunk/src/emu/bus/isa/isa_cards.h
r249188r249189
1818#include "cga.h"
1919#include "aga.h"
2020#include "ega.h"
21#include "pgc.h"
2221#include "vga.h"
2322#include "vga_ati.h"
2423#include "svga_cirrus.h"
trunk/src/emu/bus/isa/pgc.c
r249188r249189
1// license:BSD-3-Clause
2// copyright-holders:Sergey Svishchev
3
4/***************************************************************************
5
6  IBM Professional Graphics Controller (PGC), skeleton driver.
7
8  Designed for IBM by Vermont Microsystems.  References:
9
10  IBM Options and Adapters manual
11    http://www.minuszerodegrees.net/oa/OA%20-%20IBM%20Professional%20Graphics%20Controller.pdf
12    http://bitsavers.org/pdf/ibm/pc/cards/Technical_Reference_Options_and_Adapters_Volume_3.pdf
13  IBM Systems Journal white paper
14    http://wayback.archive.org/web/20061015235146/http://www.research.ibm.com/journal/sj/241/ibmsj2401D.pdf
15  John Elliott's page
16    http://www.seasip.info/VintagePC/pgc.html
17
18  To do:
19  - memory map (restore ROM mapping on reset, ...)
20  - various VRAM write modes
21  - what's up with irq 3 (= vblank irq)?
22  - "test pin of the microprocessor samples the hsync pulse"
23  - CGA emulator
24  - bus state handling?
25  - VRAM address translator ROM?
26
27***************************************************************************/
28
29#include "emu.h"
30
31//nclude "machine/ram.h"
32
33#include "pgc.h"
34
35#define VERBOSE_PGC     1
36
37#define DBG_LOG(N,M,A) \
38   do { \
39      if(VERBOSE_PGC>=N) \
40      { \
41         if( M ) \
42            logerror("%11.6f at %s: %-24s",machine().time().as_double(),machine().describe_context(),(char*)M ); \
43         logerror A; \
44      } \
45   } while (0)
46
47#define PGC_SCREEN_NAME "pgc_screen"
48
49#define PGC_TOTAL_HORZ 820
50#define PGC_DISP_HORZ  640
51#define PGC_HORZ_START 80
52
53#define PGC_TOTAL_VERT 508
54#define PGC_DISP_VERT  480
55#define PGC_VERT_START 10
56
57/*
58    Prototypes
59*/
60
61ROM_START( pgc )
62   ROM_REGION(0x100000, "maincpu", 0)
63   ROM_DEFAULT_BIOS("1985")
64
65   ROM_SYSTEM_BIOS(0, "1984", "1984 firmware, P/N 6137322/3")
66   ROMX_LOAD("ibm_6137323_pgc_card_27256.bin", 0x00000, 0x8000, CRC(f564f342) SHA1(c5ef17fd1569043cb59f61faf828ea8b0ee95526), ROM_BIOS(1))
67   ROMX_LOAD("ibm_6137322_pgc_card_27256.bin", 0x08000, 0x8000, CRC(5e6cc82f) SHA1(45b3ffb5a9c51986862f8d47b3e03dcaaf4073d5), ROM_BIOS(1))
68
69   ROM_SYSTEM_BIOS(1, "1985", "1985 firmware, P/N 59X7354/5")
70   ROMX_LOAD("pgc_u44.bin", 0x00000, 0x8000, CRC(71280241) SHA1(7042ccd4ebd03f576a256a433b8aa38d1b4fefa8), ROM_BIOS(2))
71   ROMX_LOAD("pgc_u43.bin", 0x08000, 0x8000, CRC(923f5ea3) SHA1(2b2a55d64b20d3a613b00c51443105aa03eca5d6), ROM_BIOS(2))
72
73   ROM_REGION(0x800, "commarea", ROMREGION_ERASE00)
74
75   ROM_REGION(0x1000, "chargen", 0)
76   ROM_LOAD("pgc_u27.bin", 0x0000, 0x1000, CRC(6be256cc) SHA1(deb1195886268dcddce10459911e020f7a9f74f7))
77ROM_END
78
79static INPUT_PORTS_START( pgc )
80   PORT_START("DSW")
81/*
82   PORT_DIPNAME( 0x01, 0x00, "CGA emulator")
83   PORT_DIPSETTING(    0x00, DEF_STR(No) )
84   PORT_DIPSETTING(    0x01, DEF_STR(Yes) )
85*/
86   PORT_DIPNAME( 0x02, 0x00, "Communication area")
87   PORT_DIPSETTING(    0x00, "C6000" )
88   PORT_DIPSETTING(    0x02, "C6400" )
89INPUT_PORTS_END
90
91/*
92write only
93   30000      LUT WR O L
94   30001      LUT WR I L
95   32000      MODE WT L
96   32001      NIBBLE WT L
97   3200A      ??
98   34000      FUNCTION WT L
99   34001      STARTADD WT L
100   36001      CURSOR WT L
101
102read only
103   38000      LUT RD O L
104   38001      LUT RD I L
105   3C001      INIT L/INIT H
106*/
107
108static ADDRESS_MAP_START( pgc_map, AS_PROGRAM, 8, isa8_pgc_device )
109   ADDRESS_MAP_UNMAP_HIGH
110   AM_RANGE(0x00000, 0x07fff) AM_ROM
111   AM_RANGE(0x08000, 0x0ffff) AM_ROM AM_REGION("maincpu", 0x8000)
112   AM_RANGE(0x10000, 0x1001f) AM_READWRITE(stateparam_r, stateparam_w)
113//   AM_RANGE(0x18000, 0x18fff) AM_RAM   // ??
114   AM_RANGE(0x28000, 0x287ff) AM_RAM AM_REGION("commarea", 0) AM_MIRROR(0x800)
115   AM_RANGE(0x3c000, 0x3c001) AM_READ(init_r)
116//   AM_RANGE(0x3e000, 0x3efff) AM_RAM   // ??
117   AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("maincpu", 0x8000)
118ADDRESS_MAP_END
119
120static ADDRESS_MAP_START( pgc_io, AS_IO, 8, isa8_pgc_device )
121   ADDRESS_MAP_UNMAP_HIGH
122ADDRESS_MAP_END
123
124static const gfx_layout pgc_charlayout =
125{
126   8, 16,                  /* 8x16 pixels */
127   256,                    /* 256 characters */
128   1,                      /* 1 bits per pixel */
129   { 0 },                  /* no bitplanes */
130   /* x offsets */
131   { 0, 1, 2, 3, 4, 5, 6, 7 },
132   /* y offsets */
133   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
134   8*16                    /* every char takes 10 bytes */
135};
136
137static GFXDECODE_START( pgc )
138   GFXDECODE_REVERSEBITS("chargen", 0, pgc_charlayout, 0, 1)
139GFXDECODE_END
140
141MACHINE_CONFIG_FRAGMENT( pcvideo_pgc )
142   MCFG_CPU_ADD("maincpu", I8088, XTAL_24MHz/3)
143   MCFG_CPU_PROGRAM_MAP(pgc_map)
144   MCFG_CPU_IO_MAP(pgc_io)
145#if 0
146   MCFG_CPU_VBLANK_INT_DRIVER(PGC_SCREEN_NAME, isa8_pgc_device, vblank_irq)
147   MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(isa8_pgc_device, irq_callback)
148#endif
149
150   MCFG_TIMER_DRIVER_ADD_PERIODIC("scantimer", isa8_pgc_device, scanline_callback,
151      attotime::from_hz(60*PGC_TOTAL_VERT))
152   MCFG_TIMER_START_DELAY(attotime::from_hz(XTAL_50MHz/(2*PGC_HORZ_START)))
153
154   MCFG_SCREEN_ADD(PGC_SCREEN_NAME, RASTER)
155   MCFG_SCREEN_RAW_PARAMS(XTAL_50MHz/2,
156      PGC_TOTAL_HORZ, PGC_HORZ_START, PGC_HORZ_START+PGC_DISP_HORZ,
157      PGC_TOTAL_VERT, PGC_VERT_START, PGC_VERT_START+PGC_DISP_VERT)
158   MCFG_SCREEN_UPDATE_DRIVER(isa8_pgc_device, screen_update)
159   MCFG_SCREEN_PALETTE("palette")
160
161   MCFG_GFXDECODE_ADD("gfxdecode", "palette", pgc)
162   MCFG_PALETTE_ADD( "palette", 256 )
163MACHINE_CONFIG_END
164
165//**************************************************************************
166//  GLOBAL VARIABLES
167//**************************************************************************
168
169const device_type ISA8_PGC = &device_creator<isa8_pgc_device>;
170
171
172//-------------------------------------------------
173//  machine_config_additions - device-specific
174//  machine configurations
175//-------------------------------------------------
176
177machine_config_constructor isa8_pgc_device::device_mconfig_additions() const
178{
179   return MACHINE_CONFIG_NAME( pcvideo_pgc );
180}
181
182//-------------------------------------------------
183//  rom_region - device-specific ROM region
184//-------------------------------------------------
185
186const rom_entry *isa8_pgc_device::device_rom_region() const
187{
188   return ROM_NAME( pgc );
189}
190
191//-------------------------------------------------
192//  input_ports - device-specific input ports
193//-------------------------------------------------
194
195ioport_constructor isa8_pgc_device::device_input_ports() const
196{
197   return INPUT_PORTS_NAME( pgc );
198}
199
200//**************************************************************************
201//  LIVE DEVICE
202//**************************************************************************
203
204//-------------------------------------------------
205//  isa8_pgc_device - constructor
206//-------------------------------------------------
207
208isa8_pgc_device::isa8_pgc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
209   device_t(mconfig, ISA8_PGC, "IBM Professional Graphics Controller", tag, owner, clock, "isa_ibm_pgc", __FILE__),
210   device_isa8_card_interface(mconfig, *this),
211   m_cpu(*this, "maincpu"),
212   m_screen(*this, PGC_SCREEN_NAME),
213   m_palette(*this, "palette")
214{
215}
216
217isa8_pgc_device::isa8_pgc_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) :
218   device_t(mconfig, type, name, tag, owner, clock, shortname, source),
219   device_isa8_card_interface(mconfig, *this),
220   m_cpu(*this, "maincpu"),
221   m_screen(*this, PGC_SCREEN_NAME),
222   m_palette(*this, "palette")
223{
224}
225
226//-------------------------------------------------
227//  device_start - device-specific startup
228//-------------------------------------------------
229
230void isa8_pgc_device::device_start()
231{
232   address_space &space = m_cpu->space( AS_PROGRAM );
233   int width = PGC_DISP_HORZ;
234   int height = PGC_DISP_VERT;
235
236   if (m_palette != NULL && !m_palette->started())
237      throw device_missing_dependencies();
238
239   set_isa_device();
240
241   for (int i = 0; i < 256; i++ )
242   {
243      m_palette->set_pen_color( i, 0, 0, 0 );
244   }
245
246   m_bitmap = auto_bitmap_ind16_alloc(machine(), width, height);
247   m_bitmap->fill(0);
248
249   m_vram = auto_alloc_array(machine(), UINT8, 0x78000);
250   space.install_readwrite_bank(0x80000, 0xf7fff, "vram");
251   membank("vram")->set_base(m_vram);
252
253   m_eram = auto_alloc_array(machine(), UINT8, 0x8000);
254}
255
256//-------------------------------------------------
257//  device_reset - device-specific reset
258//-------------------------------------------------
259
260void isa8_pgc_device::device_reset()
261{
262   memset(m_stateparam, 0, sizeof(m_stateparam));
263   memset(m_lut, 0, sizeof(m_lut));
264
265   m_commarea = memregion("commarea")->base();
266   if (BIT(ioport("DSW")->read(), 1))
267      m_isa->install_bank(0xc6400, 0xc67ff, 0, 0, "commarea", m_commarea);
268   else
269      m_isa->install_bank(0xc6000, 0xc63ff, 0, 0, "commarea", m_commarea);
270#if 0   
271   address_space &space = m_cpu->space( AS_PROGRAM );
272
273   space.unmap_readwrite(0xf8000, 0xfffff);
274   space.install_rom(0xf8000, 0xfffff,
275      space.machine().root_device().memregion("maincpu")->base() + 0x8000);
276#endif
277}
278
279//
280
281INTERRUPT_GEN_MEMBER(isa8_pgc_device::vblank_irq)
282{
283   DBG_LOG(2,"irq",("vblank_irq\n"));
284   m_cpu->set_input_line(0, ASSERT_LINE);
285}
286
287IRQ_CALLBACK_MEMBER(isa8_pgc_device::irq_callback)
288{
289   DBG_LOG(2,"irq",("irq_callback\n"));
290   m_cpu->set_input_line(0, CLEAR_LINE);
291   return 3;
292}
293
294// memory handlers
295
296READ8_MEMBER( isa8_pgc_device::stateparam_r ) {
297   UINT8 ret;
298
299   ret = m_stateparam[offset >> 1];
300   if ((machine().debug_flags & DEBUG_FLAG_ENABLED) != 0)
301   {
302      DBG_LOG(1,"stateparam",("R @ %02x == %02x\n", offset, ret));
303   }
304   return ret;
305}
306
307WRITE8_MEMBER( isa8_pgc_device::stateparam_w ) {
308   if ((machine().debug_flags & DEBUG_FLAG_ENABLED) != 0)
309   {
310      DBG_LOG(1,"stateparam",("W @ %02x <- %02x\n", offset, data));
311   }
312   m_stateparam[offset >> 1] = data;
313}
314
315WRITE8_MEMBER( isa8_pgc_device::lut_w ) {
316   UINT8 o = (offset >> 1) * 3;
317
318   if (offset & 1) {
319      m_lut[o + 2] = (data & 15) << 4;
320      m_palette->set_pen_color( offset >> 1, m_lut[o], m_lut[o + 1], m_lut[o + 2] );
321      DBG_LOG(1,"lut",("W @ %02X <- %d %d %d\n",
322         offset >> 1, m_lut[o], m_lut[o + 1], m_lut[o + 2] ));
323   } else {
324      m_lut[o    ] = data & 0xf0;
325      m_lut[o + 1] = (data & 15) << 4;
326   }
327}
328
329READ8_MEMBER( isa8_pgc_device::init_r ) {
330   DBG_LOG(1,"INIT",("unmapping ROM\n"));
331   space.unmap_read(0xf8000, 0xfffff);
332
333   DBG_LOG(1,"INIT",("mapping emulator RAM\n"));
334   space.install_readwrite_bank(0xf8000, 0xfffff, "eram");
335   membank("eram")->set_base(m_eram);
336
337   DBG_LOG(1,"INIT",("mapping LUT\n"));
338   space.install_write_handler(0xf8400, 0xf85ff,
339      write8_delegate(FUNC(isa8_pgc_device::lut_w), this));
340   
341   return 0; // XXX ignored
342}
343
344TIMER_DEVICE_CALLBACK_MEMBER(isa8_pgc_device::scanline_callback)
345{
346   UINT16 x, y = m_screen->vpos();
347   UINT16 *p;
348   UINT8 *v;
349
350   // XXX hpos shifts every frame -- fix
351   if (y == 0) DBG_LOG(2,"scanline_cb",
352      ("frame %d x %.4d y %.3d\n",
353      (int) m_screen->frame_number(), m_screen->hpos(), y));
354
355   if (y < PGC_VERT_START) return;
356   y -= PGC_VERT_START;
357   if (y >= PGC_DISP_VERT) return;
358
359   // XXX address translation happens in hardware
360   v = &m_vram[y * 1024];
361   p = &m_bitmap->pix16(y, 0);
362
363   for (x = 0; x < PGC_DISP_HORZ; x++) {
364      *p++ = *v++;
365   }
366}
367
368UINT32 isa8_pgc_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
369{
370   copybitmap(bitmap, *m_bitmap, 0, 0, PGC_HORZ_START, PGC_VERT_START, cliprect);
371   return 0;
372}
trunk/src/emu/bus/isa/pgc.h
r249188r249189
1// license:BSD-3-Clause
2// copyright-holders:Sergey Svishchev
3
4#pragma once
5
6#ifndef __ISA_PGC_H__
7#define __ISA_PGC_H__
8
9#include "emu.h"
10
11#include "cpu/i86/i86.h"
12#include "isa.h"
13
14//**************************************************************************
15//  TYPE DEFINITIONS
16//**************************************************************************
17
18// ======================> isa8_pgc_device
19
20class isa8_pgc_device :
21   public device_t,
22   public device_isa8_card_interface
23{
24public:
25   // construction/destruction
26   isa8_pgc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
27   isa8_pgc_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
29   // optional information overrides
30   virtual machine_config_constructor device_mconfig_additions() const;
31   virtual const rom_entry *device_rom_region() const;
32   virtual ioport_constructor device_input_ports() const;
33
34   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
35
36   TIMER_DEVICE_CALLBACK_MEMBER( scanline_callback );
37   INTERRUPT_GEN_MEMBER(vblank_irq);
38   IRQ_CALLBACK_MEMBER(irq_callback);
39
40   DECLARE_WRITE8_MEMBER( stateparam_w );
41   DECLARE_READ8_MEMBER( stateparam_r );
42   DECLARE_WRITE8_MEMBER( lut_w );
43   DECLARE_READ8_MEMBER( init_r );
44
45protected:
46   // device-level overrides
47   virtual void device_start();
48   virtual void device_reset();
49
50private:
51   required_device<i8088_cpu_device> m_cpu;
52   required_device<screen_device> m_screen;
53   required_device<palette_device> m_palette;
54
55   UINT8 *m_commarea;
56   UINT8 *m_vram;
57   UINT8 *m_eram;
58   UINT8 m_stateparam[16];
59   UINT8 m_lut[256*3];
60   bitmap_ind16 *m_bitmap;
61};
62
63
64// device type definition
65extern const device_type ISA8_PGC;
66
67#endif  /* __ISA_PGC_H__ */
trunk/src/emu/cpu/mips/mips3.c
r249188r249189
28452845         case 0x2e:  /* SWR */       (this->*m_swr)(op);                                                       break;
28462846         case 0x2f:  /* CACHE */     /* effective no-op */                                                   break;
28472847         case 0x30:  /* LL */        if (RWORD(SIMMVAL+RSVAL32, &temp) && RTREG) RTVAL64 = (UINT32)temp; m_ll_value = RTVAL32;       break;
2848         case 0x31:  /* LWC1 */     
2849            if (!(SR & SR_COP1))
2850            {
2851               m_badcop_value = 1;
2852               generate_exception(EXCEPTION_BADCOP, 1);
2853            }
2854            if (RWORD(SIMMVAL+RSVAL32, &temp)) set_cop1_reg32(RTREG, temp);         break;
2848         case 0x31:  /* LWC1 */      if (RWORD(SIMMVAL+RSVAL32, &temp)) set_cop1_reg32(RTREG, temp);         break;
28552849         case 0x32:  /* LWC2 */      if (RWORD(SIMMVAL+RSVAL32, &temp)) set_cop2_reg(RTREG, temp);           break;
28562850         case 0x33:  /* PREF */      /* effective no-op */                                                   break;
28572851         case 0x34:  /* LLD */       if (RDOUBLE(SIMMVAL+RSVAL32, &temp64) && RTREG) RTVAL64 = temp64; m_lld_value = temp64;     break;
2858         case 0x35:  /* LDC1 */     
2859         if (!(SR & SR_COP1))
2860         {
2861            m_badcop_value = 1;
2862            generate_exception(EXCEPTION_BADCOP, 1);
2863         }
2864         if (RDOUBLE(SIMMVAL+RSVAL32, &temp64)) set_cop1_reg64(RTREG, temp64);       break;
2852         case 0x35:  /* LDC1 */      if (RDOUBLE(SIMMVAL+RSVAL32, &temp64)) set_cop1_reg64(RTREG, temp64);       break;
28652853         case 0x36:  /* LDC2 */      if (RDOUBLE(SIMMVAL+RSVAL32, &temp64)) set_cop2_reg(RTREG, temp64);     break;
28662854         case 0x37:  /* LD */        if (RDOUBLE(SIMMVAL+RSVAL32, &temp64) && RTREG) RTVAL64 = temp64;       break;
28672855         case 0x38:  /* SC */        if (RWORD(SIMMVAL+RSVAL32, &temp) && RTREG)
r249188r249189
28772865            }
28782866         }
28792867         break;
2880         case 0x39:  /* SWC1 */     
2881            if (!(SR & SR_COP1))
2882            {
2883               m_badcop_value = 1;
2884               generate_exception(EXCEPTION_BADCOP, 1);
2885            }
2886            WWORD(SIMMVAL+RSVAL32, get_cop1_reg32(RTREG));                          break;
2868         case 0x39:  /* SWC1 */      WWORD(SIMMVAL+RSVAL32, get_cop1_reg32(RTREG));                          break;
28872869         case 0x3a:  /* SWC2 */      WWORD(SIMMVAL+RSVAL32, get_cop2_reg(RTREG));                            break;
28882870         case 0x3b:  /* SWC3 */      invalid_instruction(op);                                                break;
28892871         case 0x3c:  /* SCD */       if (RDOUBLE(SIMMVAL+RSVAL32, &temp64) && RTREG)
r249188r249189
28992881            }
29002882         }
29012883         break;
2902         case 0x3d:  /* SDC1 */
2903            if (!(SR & SR_COP1))
2904            {
2905               m_badcop_value = 1;
2906               generate_exception(EXCEPTION_BADCOP, 1);
2907            }
2908            WDOUBLE(SIMMVAL+RSVAL32, get_cop1_reg64(RTREG));                            break;
2884         case 0x3d:  /* SDC1 */      WDOUBLE(SIMMVAL+RSVAL32, get_cop1_reg64(RTREG));                            break;
29092885         case 0x3e:  /* SDC2 */      WDOUBLE(SIMMVAL+RSVAL32, get_cop2_reg(RTREG));                          break;
29102886         case 0x3f:  /* SD */        WDOUBLE(SIMMVAL+RSVAL32, RTVAL64);                                      break;
29112887         default:    /* ??? */       invalid_instruction(op);                                                break;
trunk/src/emu/cpu/mips/mips3dsm.c
r249188r249189
3030};
3131#endif
3232
33static const char *const cacheop[32] =
34{
35   "I_Invd", "D_WBInvd", "Unknown 2", "Unknown 3", "I_IndexLoadTag", "D_IndexLoadTag", "Unknown 6", "Unknown 7",
36   "I_IndexStoreTag", "D_IndexStoreTag", "Unknown 10", "Unknown 11", "Unknown 12", "D_CreateDirtyExcl", "Unknown 14", "Unknown 15",
37   "I_HitInvalid", "D_HitInvalid", "Unknown 18", "Unknown 19", "I_Fill", "D_HitWBInvalid", "Unknown 22", "Unknown 23",
38   "I_HitWB", "D_HitWB", "Unknown 26", "Unknown 27", "Unknown 28", "Unknown 29", "Unknown 30", "Unknown 31"
39};
4033
4134
4235static const char *const cpreg[4][32] =
r249188r249189
510503      case 0x2c:  sprintf(buffer, "sdl    %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]);        break;
511504      case 0x2d:  sprintf(buffer, "sdr    %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]);        break;
512505      case 0x2e:  sprintf(buffer, "swr    %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]);        break;
513      case 0x2f:  sprintf(buffer, "cache  %s,%s(%s)", cacheop[rt], reg[rs], signed_16bit(op));                    break;
506      case 0x2f:  sprintf(buffer, "cache  %s(%s)", reg[rs], signed_16bit(op));                    break;
514507      case 0x30:  sprintf(buffer, "ll     %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]);        break;
515508      case 0x31:  sprintf(buffer, "lwc1   %s,%s(%s)", cpreg[1][rt], signed_16bit(op), reg[rs]);   break;
516509      case 0x32:  sprintf(buffer, "lwc2   %s,%s(%s)", cpreg[2][rt], signed_16bit(op), reg[rs]);   break;
trunk/src/emu/sound/315-5641.c
r249188r249189
1/* Sega 315-5641 / D77591 / 9442CA010 */
2
3#include "emu.h"
4#include "315-5641.h"
5
6const device_type SEGA_315_5641_PCM = &device_creator<sega_315_5641_pcm_device>;
7
8sega_315_5641_pcm_device::sega_315_5641_pcm_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
9   : upd7759_device(mconfig, SEGA_315_5641_PCM, "315-5641 PCM", tag, owner, clock, "315-5641_pcm", __FILE__)
10{
11}
12
13void sega_315_5641_pcm_device::device_start()
14{
15   save_item(NAME(m_fifo_data), 0x40);
16   save_item(NAME(m_fifo_read));
17   save_item(NAME(m_fifo_write));
18
19   upd7759_device::device_start();
20}
21
22void sega_315_5641_pcm_device::advance_state()
23{
24   switch (m_state)
25   {
26      case STATE_DROP_DRQ:
27         if (m_rombase == NULL)
28         {
29            // Slave Mode: get data from FIFO buffer
30            UINT8 fiforead = (m_fifo_read + 1) & 0x3F;
31            if (fiforead != m_fifo_write)
32            {
33               m_fifo_in = m_fifo_data[fiforead];
34               m_fifo_read = fiforead;
35            }
36         }
37         break;
38   }
39
40   upd775x_device::advance_state();
41}
42
43
44WRITE8_MEMBER( sega_315_5641_pcm_device::port_w )
45{
46   if (m_rombase != NULL)
47   {
48      /* update the FIFO value */
49      m_fifo_in = data;
50   }
51   else
52   {
53      m_fifo_data[m_fifo_write++] = data;
54      m_fifo_write &= 0x3F;
55   }
56}
57
58
59UINT8 sega_315_5641_pcm_device::get_fifo_space()
60{
61   return (m_fifo_read - m_fifo_write) & 0x3F;
62}
63
64void sega_315_5641_pcm_device::device_reset()
65{
66   m_fifo_read          = 0x3F;
67   m_fifo_write         = 0x00;
68
69   upd775x_device::device_reset();
70}
No newline at end of file
trunk/src/emu/sound/315-5641.h
r249188r249189
1/* Sega 315-5641 / D77591 / 9442CA010 */
2
3// this is the PICO sound chip, we are not sure if it's the same as a 7759 or not, it requires FIFO logic
4// which the 7759 does _not_ have but it is possible that is handled somewhere else on the PICO hardawre.
5
6#include "upd7759.h"
7
8
9class sega_315_5641_pcm_device : public upd7759_device
10{
11public:
12   sega_315_5641_pcm_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
13
14   UINT8 get_fifo_space();
15   void advance_state();
16   DECLARE_WRITE8_MEMBER(port_w);
17
18   UINT8       m_fifo_data[0x40];
19   UINT8       m_fifo_read;   // last read offset (will read in m_fifo_read+1)
20   UINT8       m_fifo_write;   // write offset
21 
22protected:
23   // device-level overrides
24   virtual void device_start();
25   virtual void device_reset();
26
27
28};
29
30extern const device_type SEGA_315_5641_PCM;
No newline at end of file
trunk/src/emu/sound/tms5110.c
r249188r249189
407407             * Old frame was unvoiced, new is voiced (note this is the case on the patent but may not be correct on the real final chip)
408408             */
409409            if ( ((OLD_FRAME_UNVOICED_FLAG == 0) && (NEW_FRAME_UNVOICED_FLAG == 1))
410               || ((OLD_FRAME_UNVOICED_FLAG == 1) && (NEW_FRAME_UNVOICED_FLAG == 0))
410               || ((OLD_FRAME_UNVOICED_FLAG == 1) && (NEW_FRAME_UNVOICED_FLAG == 0)) /* this line needs further investigation, starwars tie fighters may sound better without it */
411411               || ((OLD_FRAME_SILENCE_FLAG == 1) && (NEW_FRAME_SILENCE_FLAG == 0)) )
412412               m_inhibit = 1;
413413            else // normal frame, normal interpolation
r249188r249189
415415
416416#ifdef DEBUG_GENERATION
417417            /* Debug info for current parsed frame */
418            fprintf(stderr, "OLDE=0: %d; OLDP=0: %d; E=0: %d; P=0: %d; ", m_OLDE, m_OLDP, (m_new_frame_energy_idx==0), (m_new_frame_pitch_idx==0));
418            fprintf(stderr, "OLDE: %d; OLDP: %d; ", m_OLDE, m_OLDP);
419419            fprintf(stderr,"Processing new frame: ");
420420            if (m_inhibit == 0)
421421               fprintf(stderr, "Normal Frame\n");
r249188r249189
10041004      fprintf(stderr," ");
10051005#endif
10061006   }
1007#ifdef DEBUG_PARSE_FRAME_DUMP
1008         fprintf(stderr,"\n");
1009#endif
10071010#ifdef VERBOSE
10081011      logerror("Parsed a frame successfully in ROM\n");
10091012#endif
trunk/src/emu/sound/tms5220.c
r249188r249189
630630      if (m_speechrom)
631631         val = m_speechrom->read(count);
632632   }
633
633634   return val;
634635}
635636
r249188r249189
648649   }
649650   else
650651   {   /* read status */
652
651653      /* clear the interrupt pin on status read */
652654      set_interrupt_state(0);
653655#ifdef DEBUG_PIN_READS
654656      fprintf(stderr,"Status read: TS=%d BL=%d BE=%d\n", TALK_STATUS, m_buffer_low, m_buffer_empty);
655657#endif
658
656659      return (TALK_STATUS << 7) | (m_buffer_low << 6) | (m_buffer_empty << 5);
657660   }
658661}
trunk/src/emu/sound/upd7759.c
r249188r249189
143143#define FRAC_ONE        (1 << FRAC_BITS)
144144#define FRAC_MASK       (FRAC_ONE - 1)
145145
146/* chip states */
147enum
148{
149   STATE_IDLE,
150   STATE_DROP_DRQ,
151   STATE_START,
152   STATE_FIRST_REQ,
153   STATE_LAST_SAMPLE,
154   STATE_DUMMY1,
155   STATE_ADDR_MSB,
156   STATE_ADDR_LSB,
157   STATE_DUMMY2,
158   STATE_BLOCK_HEADER,
159   STATE_NIBBLE_COUNT,
160   STATE_NIBBLE_MSN,
161   STATE_NIBBLE_LSN
162};
146163
147164upd775x_device::upd775x_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)
148165   : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
r249188r249189
187204{
188205}
189206
190
191upd7759_device::upd7759_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)
192   : upd775x_device(mconfig, type, name, tag, owner, clock, shortname, source),
193      m_timer(NULL)
194{
195}
196
197
198207const device_type UPD7756 = &device_creator<upd7756_device>;
199208
200209upd7756_device::upd7756_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
trunk/src/emu/sound/upd7759.h
r249188r249189
55#ifndef __UPD7759_H__
66#define __UPD7759_H__
77
8/* chip states */
9enum
10{
11   STATE_IDLE,
12   STATE_DROP_DRQ,
13   STATE_START,
14   STATE_FIRST_REQ,
15   STATE_LAST_SAMPLE,
16   STATE_DUMMY1,
17   STATE_ADDR_MSB,
18   STATE_ADDR_LSB,
19   STATE_DUMMY2,
20   STATE_BLOCK_HEADER,
21   STATE_NIBBLE_COUNT,
22   STATE_NIBBLE_MSN,
23   STATE_NIBBLE_LSN
24};
258
269/* NEC uPD7759/55/56/P56/57/58 ADPCM Speech Processor */
2710
r249188r249189
4629
4730   DECLARE_WRITE_LINE_MEMBER( reset_w );
4831   DECLARE_READ_LINE_MEMBER( busy_r );
49   virtual DECLARE_WRITE8_MEMBER( port_w );
32   DECLARE_WRITE8_MEMBER( port_w );
5033   void postload();
5134
5235protected:
r249188r249189
10386   devcb_write_line m_drqcallback;
10487
10588   void update_adpcm(int data);
106   virtual void advance_state();
89   void advance_state();
10790};
10891
10992class upd7759_device : public upd775x_device
11093{
11194public:
11295   upd7759_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
113   upd7759_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);
11496
11597   enum
11698   {
trunk/src/emu/video/scn2674.c
r249188r249189
3838   save_item(NAME(m_linecounter));
3939   save_item(NAME(m_screen2_l));
4040   save_item(NAME(m_screen2_h));
41   save_item(NAME(m_cursor_l));
42   save_item(NAME(m_cursor_h));
4341}
4442
4543void scn2674_device::device_reset()
r249188r249189
9694   m_spl1= 0;
9795   m_spl2= 0;
9896   m_dbl1= 0;
99   m_buffer= 0;
10097   m_linecounter= 0;
10198   m_irq_state= 0;
10299   m_IR_pointer = 0;
103100   m_address = 0;
104   m_start1change = 0;
105101   m_hpixels_per_column = m_text_hpixels_per_column;
106102}
107103
r249188r249189
250246         break;
251247
252248   }
253   recompute_parameters();
249   if(m_display_enabled)
250      recompute_parameters();
254251
255252   m_IR_pointer++;
256253   if (m_IR_pointer>14)m_IR_pointer=14;
r249188r249189
294291      /* Disable GFX */
295292      LOG2674(("disable GFX %02x\n",data));
296293      m_gfx_enabled = 0;
297      recompute_parameters();
294      if(m_display_enabled)
295         recompute_parameters();
298296   }
299297
300298   if ((data&0xe3)==0x23)
r249188r249189
302300      /* Enable GFX */
303301      LOG2674(("enable GFX %02x\n",data));
304302      m_gfx_enabled = 1;
305      recompute_parameters();
303      if(m_display_enabled)
304         recompute_parameters();
306305   }
307306
308307   if ((data&0xe9)==0x28)
r249188r249189
411410
412411   /* Delayed Commands */
413412   /* These set 0x20 in status register when done */
414   // These use the pointer address according to the datasheet but the pcx expects the screen start 2 address instead
415   switch(data)
413
414   if (data == 0xa4)
416415   {
417      case 0xa4:
418         /* read at pointer address */
419         m_buffer = space().read_byte(m_screen2_l | (m_screen2_h << 8));
420         LOG2674(("DELAYED read at pointer address %02x\n",data));
421         break;
416      /* read at pointer address */
417      LOG2674(("DELAYED read at pointer address %02x\n",data));
418   }
422419
423      case 0xa2:
424         /* write at pointer address */
425         space().write_byte(m_screen2_l | (m_screen2_h << 8), m_buffer);
426         LOG2674(("DELAYED write at pointer address %02x\n",data));
427         break;
420   if (data == 0xa2)
421   {
422      /* write at pointer address */
423      LOG2674(("DELAYED write at pointer address %02x\n",data));
424   }
428425
429      case 0xa9:
430         /* increment cursor address */
431         if(!(++m_cursor_l))
432            m_cursor_h++;
433         LOG2674(("DELAYED increase cursor address %02x\n",data));
434         break;
426   if (data == 0xa9)
427   {
428      /* increase cursor address */
429      LOG2674(("DELAYED increase cursor address %02x\n",data));
430   }
435431
436      case 0xac:
437         /* read at cursor address */
438         m_buffer = space().read_byte(m_cursor_l | (m_cursor_h << 8));
439         LOG2674(("DELAYED read at cursor address %02x\n",data));
440         break;
432   if (data == 0xac)
433   {
434      /* read at cursor address */
435      LOG2674(("DELAYED read at cursor address %02x\n",data));
436   }
441437
442      case 0xaa:
443         /* write at cursor address */
444         space().write_byte(m_cursor_l | (m_cursor_h << 8), m_buffer);
445         LOG2674(("DELAYED write at cursor address %02x\n",data));
446         break;
438   if (data == 0xaa)
439   {
440      /* write at cursor address */
441      LOG2674(("DELAYED write at cursor address %02x\n",data));
442   }
447443
448      case 0xad:
449         /* read at cursor address + increment */
450         m_buffer = space().read_byte(m_cursor_l | (m_cursor_h << 8));
451         if(!(++m_cursor_l))
452            m_cursor_h++;
453         LOG2674(("DELAYED read at cursor address+increment %02x\n",data));
454         break;
444   if (data == 0xad)
445   {
446      /* read at cursor address + increment */
447      LOG2674(("DELAYED read at cursor address+increment %02x\n",data));
448   }
455449
456      case 0xab:
457         /* write at cursor address + increment */
458         space().write_byte(m_cursor_l | (m_cursor_h << 8), m_buffer);
459         if(!(++m_cursor_l))
460            m_cursor_h++;
461         LOG2674(("DELAYED write at cursor address+increment %02x\n",data));
462         break;
450   if (data == 0xab)
451   {
452      /* write at cursor address + increment */
453      LOG2674(("DELAYED write at cursor address+increment %02x\n",data));
454   }
463455
464      case 0xbb:
465         /* write from cursor address to pointer address TODO: transfer only during blank*/
466         for(i = m_cursor_l | (m_cursor_h << 8); i != (m_screen2_l | (m_screen2_h << 8)); i = ((i + 1) & 0xffff))
467            space().write_byte(i, m_buffer);
468         space().write_byte(i, m_buffer); // get the last
469         m_cursor_l = m_screen2_l;
470         m_cursor_h = m_screen2_h;
471         LOG2674(("DELAYED write from cursor address to pointer address %02x\n",data));
472         break;
456   if (data == 0xbb)
457   {
458      /* write from cursor address to pointer address */
459      LOG2674(("DELAYED write from cursor address to pointer address %02x\n",data));
460   }
473461
474      case 0xbd:
475         /* read from cursor address to pointer address */
476         LOG2674(("DELAYED read from cursor address to pointer address %02x\n",data));
477         break;
462   if (data == 0xbd)
463   {
464      /* read from cursor address to pointer address */
465      LOG2674(("DELAYED read from cursor address to pointer address %02x\n",data));
478466   }
479467}
480468
r249188r249189
552540         write_command(data);
553541         break;
554542
555      case 2:
556         m_screen1_l = data;
557         if(!m_screen->vblank())
558            m_start1change = (m_linecounter / m_IR0_scanline_per_char_row) + 1;
559         break;
543      case 2: m_screen1_l = data; break;
560544      case 3:
561545         m_screen1_h = data;
562546         m_dbl1=(data & 0xc0)>>6;
r249188r249189
566550            m_screen1_h &= 0x3f;
567551            LOG2674(("IR14 - Double 1 overridden %02x\n",m_IR14_double_1));
568552         }
569         if(!m_screen->vblank())
570            m_start1change = (m_linecounter / m_IR0_scanline_per_char_row) + 1;
571553         break;
572554
573555      case 4: m_cursor_l  = data; break;
r249188r249189
590572   int max_visible_x = (m_IR5_character_per_row * m_hpixels_per_column) - 1;
591573   int max_visible_y = (m_IR4_rows_per_screen * m_IR0_scanline_per_char_row) - 1;
592574
593   if(!horiz_pix_total || !vert_pix_total)
594   {
595      m_scanline_timer->adjust(attotime::never);
596      return;
597   }
598
599575   LOG2674(("width %u height %u max_x %u max_y %u refresh %f\n", horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, 1 / ATTOSECONDS_TO_DOUBLE(refresh)));
600576
601577   rectangle visarea;
r249188r249189
618594            m_display_enabled_scanline = 0;
619595            m_display_enabled_field = 0;
620596         }
597         else if(!m_display_enabled)
598            break;
621599         else
622600            m_linecounter++;
623601
602         // should be triggered at the start of each ROW (line zero for that row)
624603         if(m_linecounter >= m_screen->height())
625604         {
605            m_status_register |= 0x08;
606            if (m_irq_mask & 0x08)
607            {
608               LOG2674(("SCN2674 Line Zero\n"));
609               m_irq_state = 1;
610               m_irq_register |= 0x08;
611               m_irq_cb(1);
612            }
626613            m_linecounter = 0;
627614            m_address = (m_screen1_h << 8) | m_screen1_l;
628615         }
r249188r249189
642629         if(m_linecounter >= (m_IR4_rows_per_screen * m_IR0_scanline_per_char_row))
643630            break;
644631
645         int charrow = m_linecounter % m_IR0_scanline_per_char_row;
646         int tilerow = charrow;
647
648         // should be triggered at the start of each ROW (line zero for that row)
649         if(!charrow)
650         {
651            m_status_register |= 0x08;
652            if (m_irq_mask & 0x08)
653            {
654               LOG2674(("SCN2674 Line Zero\n"));
655               m_irq_state = 1;
656               m_irq_register |= 0x08;
657               m_irq_cb(1);
658            }
659         }
660
661632         if((m_linecounter == (m_IR12_split_register_1 * m_IR0_scanline_per_char_row)) && m_linecounter) /* Split Screen 1 */
662633         {
663634            m_status_register |= 0x04;
r249188r249189
690661               dw = m_IR14_double_2;
691662         }
692663
693         if(!m_display_enabled)
694            break;
664         int charrow = m_linecounter % m_IR0_scanline_per_char_row;
665         int tilerow = charrow;
695666
696667         if(m_IR2_row_table)
697668         {
r249188r249189
713684               m_screen2_h = (addr >> 8) & 0x3f;
714685               m_screen2_l = addr & 0xff;
715686            }
687
716688         }
717         else if(m_start1change && (m_start1change == (m_linecounter / m_IR0_scanline_per_char_row)))
718         {
719            m_address = (m_screen1_h << 8) | m_screen1_l;
720            m_start1change = 0;
721         }
722689
723690         if(dw == 2)
724691            tilerow >>= 1;
trunk/src/emu/video/scn2674.h
r249188r249189
3737
3838   DECLARE_READ8_MEMBER( read );
3939   DECLARE_WRITE8_MEMBER( write );
40   DECLARE_READ8_MEMBER( buffer_r ) { return m_buffer; }
41   DECLARE_WRITE8_MEMBER( buffer_w ) { m_buffer = data; }
4240
4341   UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
4442   virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_0) ? &m_space_config : NULL; }
r249188r249189
107105   UINT8 m_spl1;
108106   UINT8 m_spl2;
109107   UINT8 m_dbl1;
110   UINT8 m_buffer;
111108   int m_linecounter;
112109   UINT16 m_address;
113   int m_start1change;
114110
115111   UINT8 m_irq_state;
116112
trunk/src/lib/formats/bbc_dsk.c
r249188r249189
11// license:GPL-2.0+
2// copyright-holders:Dirk Best, Nigel Barnes
2// copyright-holders:Dirk Best
33/***************************************************************************
44
55    BBC Micro
66
7    Disk image formats
7    Disk image format
88
99***************************************************************************/
1010
1111#include "bbc_dsk.h"
12#include "basicdsk.h"
1312
14LEGACY_FLOPPY_OPTIONS_START(bbc)
15   LEGACY_FLOPPY_OPTION( ssd40, "bbc,img,ssd", "BBC 40t SSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
16      HEADS([1])
17      TRACKS([40])
18      SECTORS([10])
19      SECTOR_LENGTH([256])
20      FIRST_SECTOR_ID([0]))
21   LEGACY_FLOPPY_OPTION( ssd80, "bbc,img,ssd", "BBC 80t SSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
22      HEADS([1])
23      TRACKS([80])
24      SECTORS([10])
25      SECTOR_LENGTH([256])
26      FIRST_SECTOR_ID([0]))
27   LEGACY_FLOPPY_OPTION( dsd40, "dsd", "BBC 40t DSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
28      HEADS([2])
29      TRACKS([40])
30      SECTORS([10])
31      SECTOR_LENGTH([256])
32      INTERLEAVE([0])
33      FIRST_SECTOR_ID([0]))
34   LEGACY_FLOPPY_OPTION( dsd80, "dsd", "BBC 80t DSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
35      HEADS([2])
36      TRACKS([80])
37      SECTORS([10])
38      SECTOR_LENGTH([256])
39      INTERLEAVE([0])
40      FIRST_SECTOR_ID([0]))
41LEGACY_FLOPPY_OPTIONS_END
42
43/********************************************************************/
44
45bbc_ssd_525_format::bbc_ssd_525_format() : wd177x_format(formats)
13bbc_format::bbc_format() : wd177x_format(formats)
4614{
4715}
4816
49const char *bbc_ssd_525_format::name() const
17const char *bbc_format::name() const
5018{
51   return "ssd";
19   return "bbc";
5220}
5321
54const char *bbc_ssd_525_format::description() const
22const char *bbc_format::description() const
5523{
56   return "BBC Micro 5.25\" disk image";
24   return "BBC Micro disk image";
5725}
5826
59const char *bbc_ssd_525_format::extensions() const
27const char *bbc_format::extensions() const
6028{
61   return "bbc,img,ssd";
29   return "bbc,img,ssd,dsd";
6230}
6331
64int bbc_ssd_525_format::find_size(io_generic *io, UINT32 form_factor)
32const bbc_format::format bbc_format::formats[] =
6533{
66   char cat[8];
67   io_generic_read(io, cat, 256, 8);
68   UINT64 sectors = ((cat[6] & 3) << 8) + cat[7]; // sector count from catalogue
69   UINT64 size = io_generic_size(io);
70   for(int i=0; formats[i].form_factor; i++) {
71      const format &f = formats[i];
72      if(form_factor != floppy_image::FF_UNKNOWN && form_factor != f.form_factor)
73         continue;
74
75      if((size <= (UINT64)compute_track_size(f) * f.track_count * f.head_count) && (sectors == f.track_count * f.sector_count))
76         return i;
77   }
78   return -1;
79}
80
81const bbc_ssd_525_format::format bbc_ssd_525_format::formats[] =
82{
83   { // 100k 40 track single sided single density
34   {   // 100k single sided single density
8435      floppy_image::FF_525, floppy_image::SSSD, floppy_image::FM,
85      4000, 10, 40, 1, 256, {}, 0, {}, 40, 10, 10
36      4000, 10, 40, 1, 256, {}, 0, {}, 16, 11, 19
8637   },
87   { // 200k 80 track single sided single density
88      floppy_image::FF_525, floppy_image::SSQD, floppy_image::FM,
89      4000, 10, 80, 1, 256, {}, 0, {}, 40, 10, 10
90   },
91   { // 200k 40 track double sided single density
38   {   // 200k double sided single density
9239      floppy_image::FF_525, floppy_image::DSSD, floppy_image::FM,
93      4000, 10, 40, 2, 256, {}, 0, {}, 40, 10, 10
40      4000, 10, 40, 2, 256, {}, 0, {}, 16, 11, 19
9441   },
95   { // 400k 80 track double sided single density
96      floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM,
97      4000, 10, 80, 2, 256, {}, 0, {}, 40, 10, 10
42   {   // 200k single sided double density
43      floppy_image::FF_525, floppy_image::SSQD, floppy_image::FM,
44      4000, 10, 80, 1, 256, {}, 0, {}, 16, 11, 19
9845   },
99   {}
100};
101
102
103bbc_dsd_525_format::bbc_dsd_525_format() : wd177x_format(formats)
104{
105}
106
107const char *bbc_dsd_525_format::name() const
108{
109   return "dsd";
110}
111
112const char *bbc_dsd_525_format::description() const
113{
114   return "BBC Micro 5.25\" disk image";
115}
116
117const char *bbc_dsd_525_format::extensions() const
118{
119   return "dsd";
120}
121
122int bbc_dsd_525_format::find_size(io_generic *io, UINT32 form_factor)
123{
124   char cat[8];
125   io_generic_read(io, cat, 256, 8);
126   UINT64 sectors = ((cat[6] & 3) << 8) + cat[7]; // sector count from catalogue
127   UINT64 size = io_generic_size(io);
128   for(int i=0; formats[i].form_factor; i++) {
129      const format &f = formats[i];
130      if(form_factor != floppy_image::FF_UNKNOWN && form_factor != f.form_factor)
131         continue;
132
133      if((size <= (UINT64)compute_track_size(f) * f.track_count * f.head_count) && (sectors == f.track_count * f.sector_count))
134         return i;
135   }
136   return -1;
137}
138
139const bbc_dsd_525_format::format bbc_dsd_525_format::formats[] =
140{
141   { // 200k 40 track double sided single density
46   {   // 400k double sided double density
14247      floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM,
143      4000, 10, 40, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9 }, 40, 10, 10
48      4000, 10, 80, 2, 256, {}, 0, {}, 16, 11, 19
14449   },
145   { // 400k 80 track double sided single density
146      floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM,
147      4000, 10, 80, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9 }, 40, 10, 10
148   },
14950   {}
15051};
15152
152
153bbc_adf_525_format::bbc_adf_525_format() : wd177x_format(formats)
154{
155}
156
157const char *bbc_adf_525_format::name() const
158{
159   return "adf";
160}
161
162const char *bbc_adf_525_format::description() const
163{
164   return "BBC Micro 5.25\" ADFS disk image";
165}
166
167const char *bbc_adf_525_format::extensions() const
168{
169   return "adf,ads,adm,adl,img";
170}
171
172const bbc_adf_525_format::format bbc_adf_525_format::formats[] =
173{
174   { // 160K 40 track single sided double density
175      floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
176      2000, 16, 40, 1, 256, {}, 0, {}, 60, 22, 43
177   },
178   { // 320K 80 track single sided double density
179      floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
180      2000, 16, 80, 1, 256, {}, 0, {}, 60, 22, 43
181   },
182   { // 640K 80 track double sided double density
183      floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
184      2000, 16, 80, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, 60, 22, 43
185   },
186   {}
187};
188
189
190bbc_adf_35_format::bbc_adf_35_format() : wd177x_format(formats)
191{
192}
193
194const char *bbc_adf_35_format::name() const
195{
196   return "adf";
197}
198
199const char *bbc_adf_35_format::description() const
200{
201   return "BBC Micro 3.5\" ADFS disk image";
202}
203
204const char *bbc_adf_35_format::extensions() const
205{
206   return "adf,ads,adm,adl,img";
207}
208
209const bbc_adf_35_format::format bbc_adf_35_format::formats[] = {
210   { // 160K 3 1/2 inch 40 track single sided double density
211      floppy_image::FF_35, floppy_image::SSDD, floppy_image::MFM,
212      2000, 16, 40, 1, 256, {}, 0, {}, 60, 22, 43
213   },
214   { // 320K 3 1/2 inch 80 track single sided double density
215      floppy_image::FF_35, floppy_image::SSQD, floppy_image::MFM,
216      2000, 16, 80, 1, 256, {}, 0, {}, 60, 22, 43
217   },
218   { // 640K 3 1/2 inch 80 track double sided double density
219      floppy_image::FF_35, floppy_image::DSQD, floppy_image::MFM,
220      2000, 16, 80, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, 60, 22, 43
221   },
222   {}
223};
224
225
226const floppy_format_type FLOPPY_BBC_SSD_525_FORMAT = &floppy_image_format_creator<bbc_ssd_525_format>;
227const floppy_format_type FLOPPY_BBC_DSD_525_FORMAT = &floppy_image_format_creator<bbc_dsd_525_format>;
228const floppy_format_type FLOPPY_BBC_ADF_525_FORMAT = &floppy_image_format_creator<bbc_adf_525_format>;
229const floppy_format_type FLOPPY_BBC_ADF_35_FORMAT = &floppy_image_format_creator<bbc_adf_35_format>;
53const floppy_format_type FLOPPY_BBC_FORMAT = &floppy_image_format_creator<bbc_format>;
trunk/src/lib/formats/bbc_dsk.h
r249188r249189
11// license:GPL-2.0+
2// copyright-holders:Dirk Best, Nigel Barnes
2// copyright-holders:Dirk Best
33/***************************************************************************
44
55    BBC Micro
66
7    Disk image formats
7    Disk image format
88
99***************************************************************************/
1010
r249188r249189
1313#ifndef __BBC_DSK_H__
1414#define __BBC_DSK_H__
1515
16#include "flopimg.h"
1716#include "wd177x_dsk.h"
1817
19/**************************************************************************/
20
21LEGACY_FLOPPY_OPTIONS_EXTERN(bbc);
22
23/**************************************************************************/
24
25class bbc_ssd_525_format : public wd177x_format
18class bbc_format : public wd177x_format
2619{
2720public:
28   bbc_ssd_525_format();
21   bbc_format();
2922
30   virtual int find_size(io_generic *io, UINT32 form_factor);
3123   virtual const char *name() const;
3224   virtual const char *description() const;
3325   virtual const char *extensions() const;
r249188r249189
3628   static const format formats[];
3729};
3830
39class bbc_dsd_525_format : public wd177x_format
40{
41public:
42   bbc_dsd_525_format();
31extern const floppy_format_type FLOPPY_BBC_FORMAT;
4332
44   virtual int find_size(io_generic *io, UINT32 form_factor);
45   virtual const char *name() const;
46   virtual const char *description() const;
47   virtual const char *extensions() const;
48
49private:
50   static const format formats[];
51};
52
53class bbc_adf_525_format : public wd177x_format
54{
55public:
56   bbc_adf_525_format();
57
58   virtual const char *name() const;
59   virtual const char *description() const;
60   virtual const char *extensions() const;
61
62private:
63   static const format formats[];
64};
65
66class bbc_adf_35_format : public wd177x_format
67{
68public:
69   bbc_adf_35_format();
70
71   virtual const char *name() const;
72   virtual const char *description() const;
73   virtual const char *extensions() const;
74
75private:
76   static const format formats[];
77};
78
79
80extern const floppy_format_type FLOPPY_BBC_SSD_525_FORMAT;
81extern const floppy_format_type FLOPPY_BBC_DSD_525_FORMAT;
82extern const floppy_format_type FLOPPY_BBC_ADF_525_FORMAT;
83extern const floppy_format_type FLOPPY_BBC_ADF_35_FORMAT;
84
8533#endif // __BBC_DSK_H__
trunk/src/mame/arcade.lst
r249188r249189
48024802rachero         // 1990.?? Racing Hero (World, FD1094)
48034803abcop           // 1990.?? A.B.Cop (World, FD1094)
48044804abcopj          // 1991.01 A.B.Cop (Japan, FD1094)
4805gpriderjs       // 1990.10 GP Rider (Japan, FD1094)
4806gpriderj      // as above
4807gpriders        // 1990.?? GP Rider (World, FD1094)
4808gprider          // as above
4809gpriderus       // 1990.12 GP Rider (US, FD1094)
4810gprideru       // as above
4805gpriderj        // 1990.10 GP Rider (Japan, FD1094)
4806gprider         // 1990.?? GP Rider (World, FD1094)
4807gpridert      // as above
4808gprideru        // 1990.12 GP Rider (US, FD1094)
48114809rascot          // 1991.?? Royal Ascot (Japan)
48124810
48134811
r249188r249189
62886286wc90b1          // bootleg
62896287wc90b2          // bootleg
62906288wc90ba          // bootleg
6291pac90         // bootleg
62926289spbactn         // 9002 - (c) 1991 Tecmo
62936290spbactnj        // 9002 - (c) 1991 Tecmo
62946291spbactnp        // prototype
r249188r249189
99139910
99149911// IGS027A Cpu Games
99159912slqz3           // (c) 1999
9916amazonia        // (c) 1999
99179913fruitpar        // (c) 200?
99189914zhongguo        // (c) 2000
99199915sdwx            // (c) 2002
9920amazoni2      // (c) 2002
99219916sddz            // (c) 200?
99229917lhzb3           // (c) 200?
99239918lhzb4           // (c) 200?
r249188r249189
99449939orlegendca      //
99459940orlegend111c    //
99469941orlegend111t    //
9947orlegend111k    //
99489942orlegend105k    //
99499943drgw2           // (c) 1997 Dragon World 2
99509944dw2v100x        //
trunk/src/mame/drivers/cclimber.c
r249188r249189
375375   AM_RANGE(0xba00, 0xba00) AM_READ_PORT("START")  /* maybe a mirror of b800 */
376376ADDRESS_MAP_END
377377
378static ADDRESS_MAP_START( yamato_decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, cclimber_state )
379   AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
380ADDRESS_MAP_END
381
382378static ADDRESS_MAP_START( toprollr_map, AS_PROGRAM, 8, cclimber_state )
383379   AM_RANGE(0x0000, 0x5fff) AM_ROMBANK("bank1")
384380   AM_RANGE(0x6000, 0x6bff) AM_RAM AM_SHARE("ram")
r249188r249189
10601056   MCFG_CPU_MODIFY("maincpu")
10611057   MCFG_CPU_PROGRAM_MAP(yamato_map)
10621058   MCFG_CPU_IO_MAP(yamato_portmap)
1063   MCFG_CPU_DECRYPTED_OPCODES_MAP(yamato_decrypted_opcodes_map)
1059   MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map)
10641060
10651061   MCFG_CPU_ADD("audiocpu", Z80, 3072000) /* 3.072 MHz ? */
10661062   MCFG_CPU_PROGRAM_MAP(yamato_audio_map)
r249188r249189
24192415      { 0x20,0xa0,0x28,0xa8 }, { 0x00,0x08,0x20,0x28 }    /* ...1...1...1...1 */
24202416   };
24212417
2422   sega_decode(memregion("maincpu")->base(), m_decrypted_opcodes, 0x8000, convtable);
2418   sega_decode(memregion("maincpu")->base(), m_decrypted_opcodes, 0x6000, convtable);
24232419
24242420   save_item(NAME(m_yamato_p0));
24252421   save_item(NAME(m_yamato_p1));
trunk/src/mame/drivers/chihiro.c
r249188r249189
896896      ROMX_LOAD(name, offset, length, hash, ROM_BIOS(bios+1)) /* Note '+1' */
897897
898898#define CHIHIRO_BIOS \
899   ROM_REGION( 0x100000, "bios", 0) \
899   ROM_REGION( 0x80000, "bios", 0) \
900900   ROM_SYSTEM_BIOS( 0, "bios0", "Chihiro Bios" ) \
901901   ROM_LOAD_BIOS( 0,  "chihiro_xbox_bios.bin", 0x000000, 0x80000, CRC(66232714) SHA1(b700b0041af8f84835e45d1d1250247bf7077188) ) \
902902   ROM_REGION( 0x404080, "others", 0) \
trunk/src/mame/drivers/cninja.c
r249188r249189
13961396
13971397   ROM_REGION( 1024, "proms", 0 )
13981398   ROM_LOAD( "mb7122h.7v", 0x00000, 0x400, CRC(a1267336) SHA1(d11ea9d78526ac3c0dc6e57a2da5914273ad1e3f) )    /* Priority  Unused */
1399
1400   ROM_REGION( 0x0e00, "plds", 0 )
1401   ROM_LOAD( "tj-00.9j", 0x0000, 0x0117, CRC(46defe8f) SHA1(50db2c265a0ab592938f780f212ef86070b2daa2) ) /* GAL16V8 */
1402   ROM_LOAD( "tj-01.9h", 0x0200, 0x0117, CRC(7a86902d) SHA1(7e116dbabe615ddae1588001b31a0a6e6e4dc46d) ) /* GAL16V8 */
1403   ROM_LOAD( "tj-02.9h", 0x0400, 0x0117, CRC(b476d59c) SHA1(c17b7884180b5041d1524e9fd479cddac787a3cb) ) /* GAL16V8 */
1404   ROM_LOAD( "tj-03.9e", 0x0600, 0x0117, CRC(cfb6e4aa) SHA1(fc70d1d43d8836ae7984c432b3f9e35c2256b18e) ) /* GAL16V8 */
1405   ROM_LOAD( "tj-04.5n", 0x0800, 0x0117, CRC(bca07086) SHA1(cf713185d7430e17077a95a58a42d28336432c95) ) /* GAL16V8 */
1406   ROM_LOAD( "tj-05.1r", 0x0a00, 0x0117, CRC(0dfc091b) SHA1(ab7ff0c8ada10633d27d5305f1f41f738647412a) ) /* GAL16V8 */
14071399ROM_END
14081400
14091401ROM_START( cninja1 ) /* World ver 1 */
r249188r249189
14451437
14461438   ROM_REGION( 1024, "proms", 0 )
14471439   ROM_LOAD( "mb7122h.7v", 0x00000, 0x400, CRC(a1267336) SHA1(d11ea9d78526ac3c0dc6e57a2da5914273ad1e3f) )    /* Priority  Unused */
1448
1449   ROM_REGION( 0x0e00, "plds", 0 )
1450   ROM_LOAD( "tj-00.9j", 0x0000, 0x0117, CRC(46defe8f) SHA1(50db2c265a0ab592938f780f212ef86070b2daa2) ) /* GAL16V8 */
1451   ROM_LOAD( "tj-01.9h", 0x0200, 0x0117, CRC(7a86902d) SHA1(7e116dbabe615ddae1588001b31a0a6e6e4dc46d) ) /* GAL16V8 */
1452   ROM_LOAD( "tj-02.9h", 0x0400, 0x0117, CRC(b476d59c) SHA1(c17b7884180b5041d1524e9fd479cddac787a3cb) ) /* GAL16V8 */
1453   ROM_LOAD( "tj-03.9e", 0x0600, 0x0117, CRC(cfb6e4aa) SHA1(fc70d1d43d8836ae7984c432b3f9e35c2256b18e) ) /* GAL16V8 */
1454   ROM_LOAD( "tj-04.5n", 0x0800, 0x0117, CRC(bca07086) SHA1(cf713185d7430e17077a95a58a42d28336432c95) ) /* GAL16V8 */
1455   ROM_LOAD( "tj-05.1r", 0x0a00, 0x0117, CRC(0dfc091b) SHA1(ab7ff0c8ada10633d27d5305f1f41f738647412a) ) /* GAL16V8 */
14561440ROM_END
14571441
14581442ROM_START( cninjau ) /* US ver 4 */
r249188r249189
14941478
14951479   ROM_REGION( 1024, "proms", 0 )
14961480   ROM_LOAD( "mb7122h.7v", 0x00000, 0x400, CRC(a1267336) SHA1(d11ea9d78526ac3c0dc6e57a2da5914273ad1e3f) )    /* Priority  Unused */
1497
1498   ROM_REGION( 0x0e00, "plds", 0 )
1499   ROM_LOAD( "tj-00.9j", 0x0000, 0x0117, CRC(46defe8f) SHA1(50db2c265a0ab592938f780f212ef86070b2daa2) ) /* GAL16V8 */
1500   ROM_LOAD( "tj-01.9h", 0x0200, 0x0117, CRC(7a86902d) SHA1(7e116dbabe615ddae1588001b31a0a6e6e4dc46d) ) /* GAL16V8 */
1501   ROM_LOAD( "tj-02.9h", 0x0400, 0x0117, CRC(b476d59c) SHA1(c17b7884180b5041d1524e9fd479cddac787a3cb) ) /* GAL16V8 */
1502   ROM_LOAD( "tj-03.9e", 0x0600, 0x0117, CRC(cfb6e4aa) SHA1(fc70d1d43d8836ae7984c432b3f9e35c2256b18e) ) /* GAL16V8 */
1503   ROM_LOAD( "tj-04.5n", 0x0800, 0x0117, CRC(bca07086) SHA1(cf713185d7430e17077a95a58a42d28336432c95) ) /* GAL16V8 */
1504   ROM_LOAD( "tj-05.1r", 0x0a00, 0x0117, CRC(0dfc091b) SHA1(ab7ff0c8ada10633d27d5305f1f41f738647412a) ) /* GAL16V8 */
15051481ROM_END
15061482
15071483ROM_START( joemac ) /* Japan ver 1 */
r249188r249189
15431519
15441520   ROM_REGION( 1024, "proms", 0 )
15451521   ROM_LOAD( "mb7122h.7v", 0x00000, 0x400, CRC(a1267336) SHA1(d11ea9d78526ac3c0dc6e57a2da5914273ad1e3f) )    /* Priority  Unused */
1546
1547   ROM_REGION( 0x0e00, "plds", 0 )
1548   ROM_LOAD( "tj-00.9j", 0x0000, 0x0117, CRC(46defe8f) SHA1(50db2c265a0ab592938f780f212ef86070b2daa2) ) /* GAL16V8 */
1549   ROM_LOAD( "tj-01.9h", 0x0200, 0x0117, CRC(7a86902d) SHA1(7e116dbabe615ddae1588001b31a0a6e6e4dc46d) ) /* GAL16V8 */
1550   ROM_LOAD( "tj-02.9h", 0x0400, 0x0117, CRC(b476d59c) SHA1(c17b7884180b5041d1524e9fd479cddac787a3cb) ) /* GAL16V8 */
1551   ROM_LOAD( "tj-03.9e", 0x0600, 0x0117, CRC(cfb6e4aa) SHA1(fc70d1d43d8836ae7984c432b3f9e35c2256b18e) ) /* GAL16V8 */
1552   ROM_LOAD( "tj-04.5n", 0x0800, 0x0117, CRC(bca07086) SHA1(cf713185d7430e17077a95a58a42d28336432c95) ) /* GAL16V8 */
1553   ROM_LOAD( "tj-05.1r", 0x0a00, 0x0117, CRC(0dfc091b) SHA1(ab7ff0c8ada10633d27d5305f1f41f738647412a) ) /* GAL16V8 */
15541522ROM_END
15551523
15561524ROM_START( stoneage )
trunk/src/mame/drivers/gunsmoke.c
r249188r249189
388388
389389ROM_START( gunsmokeb )
390390   ROM_REGION( 0x20000, "maincpu", 0 )
391   ROM_LOAD( "3.ic85",       0x00000, 0x8000, CRC(ae6f4b75) SHA1(f4ee4f7a7d507ceaef9ce8165704fd80c8c1e8ba) ) /* Code 0000-7fff */
392   ROM_LOAD( "gs04.10n", 0x10000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) /* Paged code */
393   ROM_LOAD( "gs05.12n", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */
391   ROM_LOAD( "3.ic85", 0x00000, 0x8000, CRC(ae6f4b75) SHA1(f4ee4f7a7d507ceaef9ce8165704fd80c8c1e8ba) ) /* Code 0000-7fff */
392   ROM_LOAD( "4.ic86", 0x10000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) /* Paged code */
393   ROM_LOAD( "5.ic87", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */
394394
395395   ROM_REGION( 0x10000, "audiocpu", 0 )
396   ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
396   ROM_LOAD( "2.ic41", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
397397
398398   ROM_REGION( 0x04000, "gfx1", 0 )
399   ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
399   ROM_LOAD( "1.ic39", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
400400
401401   ROM_REGION( 0x40000, "gfx2", 0 )
402   ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
403   ROM_LOAD( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
404   ROM_LOAD( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
405   ROM_LOAD( "gs10.02c", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
406   ROM_LOAD( "gs09.06a", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */
407   ROM_LOAD( "gs08.05a", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
408   ROM_LOAD( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
409   ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
402   ROM_LOAD( "13.ic21", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
403   ROM_LOAD( "12.ic20", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
404   ROM_LOAD( "11.ic19", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
405   ROM_LOAD( "10.ic18", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
406   ROM_LOAD( "9.ic04", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */
407   ROM_LOAD( "8.ic03", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
408   ROM_LOAD( "7.ic02", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
409   ROM_LOAD( "6.ic01", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
410410
411411   ROM_REGION( 0x40000, "gfx3", 0 )
412   ROM_LOAD( "gs22.06n", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */
413   ROM_LOAD( "gs21.04n", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */
414   ROM_LOAD( "gs20.03n", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */
415   ROM_LOAD( "gs19.01n", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */
416   ROM_LOAD( "gs18.06l", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */
417   ROM_LOAD( "gs17.04l", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */
418   ROM_LOAD( "gs16.03l", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */
419   ROM_LOAD( "gs15.01l", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */
412   ROM_LOAD( "22.ic134", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */
413   ROM_LOAD( "21.ic133", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */
414   ROM_LOAD( "20.ic132", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */
415   ROM_LOAD( "19.ic131", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */
416   ROM_LOAD( "18.ic115", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */
417   ROM_LOAD( "17.ic114", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */
418   ROM_LOAD( "16.ic113", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */
419   ROM_LOAD( "15.ic112", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */
420420
421421   ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */
422   ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
422   ROM_LOAD( "14.ic25", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
423423
424    /* The names of the proms starting with "g-" do not yet reflect their position in the pcb layout of this bootleg.
425       As the ICs are not socketed, but directly soldered to the pcb, it is harder to identify which is which.
426       But it would be good to figure this out at some point, for the sake of documenting this specific board layout. */
424427   ROM_REGION( 0x0a00, "proms", 0 )
425   ROM_LOAD( "g-01.03b", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) )    /* red component */
426   ROM_LOAD( "g-02.04b", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) )    /* green component */
427   ROM_LOAD( "g-03.05b", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) )    /* blue component */
428   ROM_LOAD( "prom.ic3", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) )    /* red component */
429   ROM_LOAD( "prom.ic4", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) )    /* green component */
430   ROM_LOAD( "prom.ic5", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) )    /* blue component */
428431   ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) )    /* char lookup table */
429432   ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) )    /* tile lookup table */
430433   ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) )    /* tile palette bank */
trunk/src/mame/drivers/hng64.c
r249188r249189
13001300   32*32
13011301};
13021302
1303
13031304static const gfx_layout hng64_16x16x8_tilelayout =
13041305{
13051306   16,16,
r249188r249189
15501551   MCFG_CPU_PROGRAM_MAP(hng_map)
15511552   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hng64_state, hng64_irq, "screen", 0, 1)
15521553
1554
1555
1556
15531557   MCFG_NVRAM_ADD_0FILL("nvram")
15541558
15551559   MCFG_DEVICE_ADD("rtc", MSM6242, XTAL_32_768kHz)
r249188r249189
20072011GAME( 1997, hng64,    0,      hng64, hng64, hng64_state,  hng64,       ROT0, "SNK", "Hyper NeoGeo 64 Bios", MACHINE_NOT_WORKING|MACHINE_NO_SOUND|MACHINE_IS_BIOS_ROOT )
20082012
20092013/* Games */
2010GAME( 1997, roadedge, hng64,  hng64, roadedge, hng64_state,  hng64_race,  ROT0, "SNK", "Roads Edge / Round Trip (rev.B)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND )  /* 001 */
2011GAME( 1998, sams64,   hng64,  hng64, hng64,    hng64_state,  ss64,        ROT0, "SNK", "Samurai Shodown 64 / Samurai Spirits 64", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) /* 002 */
2012GAME( 1998, xrally,   hng64,  hng64, roadedge, hng64_state,  hng64_race,  ROT0, "SNK", "Xtreme Rally / Off Beat Racer!", MACHINE_NOT_WORKING|MACHINE_NO_SOUND )  /* 003 */
2013GAME( 1998, bbust2,   hng64,  hng64, bbust2,   hng64_state,  hng64_shoot, ROT0, "SNK", "Beast Busters 2nd Nightmare", MACHINE_NOT_WORKING|MACHINE_NO_SOUND )  /* 004 */
2014GAME( 1998, sams64_2, hng64,  hng64, hng64,    hng64_state,  ss64,        ROT0, "SNK", "Samurai Shodown: Warrior's Rage / Samurai Spirits 2: Asura Zanmaden", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) /* 005 */
2015GAME( 1998, fatfurwa, hng64,  hng64, hng64,    hng64_state,  fatfurwa,    ROT0, "SNK", "Fatal Fury: Wild Ambition (rev.A)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND )  /* 006 */
2016GAME( 1999, buriki,   hng64,  hng64, hng64,    hng64_state,  buriki,      ROT0, "SNK", "Buriki One (rev.B)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND )  /* 007 */
2014GAME( 1997, roadedge, hng64,  hng64, roadedge, hng64_state,  hng64_race,  ROT0, "SNK", "Roads Edge / Round Trip (rev.B)",        MACHINE_NOT_WORKING|MACHINE_NO_SOUND )  /* 001 */
2015GAME( 1998, sams64,   hng64,  hng64, hng64, hng64_state,  ss64,        ROT0, "SNK", "Samurai Shodown 64 / Samurai Spirits 64", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) /* 002 */
2016GAME( 1998, xrally,   hng64,  hng64, roadedge, hng64_state,  hng64_race,  ROT0, "SNK", "Xtreme Rally / Off Beat Racer!",         MACHINE_NOT_WORKING|MACHINE_NO_SOUND )  /* 003 */
2017GAME( 1998, bbust2,   hng64,  hng64, bbust2, hng64_state, hng64_shoot, ROT0, "SNK", "Beast Busters 2nd Nightmare",            MACHINE_NOT_WORKING|MACHINE_NO_SOUND )  /* 004 */
2018GAME( 1998, sams64_2, hng64,  hng64, hng64, hng64_state,  ss64,        ROT0, "SNK", "Samurai Shodown: Warrior's Rage / Samurai Spirits 2: Asura Zanmaden", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) /* 005 */
2019GAME( 1998, fatfurwa, hng64,  hng64, hng64, hng64_state,  fatfurwa,    ROT0, "SNK", "Fatal Fury: Wild Ambition (rev.A)",          MACHINE_NOT_WORKING|MACHINE_NO_SOUND )  /* 006 */
2020GAME( 1999, buriki,   hng64,  hng64, hng64, hng64_state,  buriki,      ROT0, "SNK", "Buriki One (rev.B)",                     MACHINE_NOT_WORKING|MACHINE_NO_SOUND )  /* 007 */
trunk/src/mame/drivers/igs_m027.c
r249188r249189
6868   DECLARE_DRIVER_INIT(fearless);
6969   DECLARE_DRIVER_INIT(slqz3);
7070   DECLARE_DRIVER_INIT(fruitpar);
71   DECLARE_DRIVER_INIT(amazonia);
72   DECLARE_DRIVER_INIT(amazoni2);
7371   TILE_GET_INFO_MEMBER(get_tx_tilemap_tile_info);
7472   TILE_GET_INFO_MEMBER(get_bg_tilemap_tile_info);
7573   virtual void video_start();
r249188r249189
540538
541539
542540
543/***************************************************************************
544541
545Amazonia King
546IGS
547
548IGS PCB-0367-00-FG-1
549
550  - IGS 027A
551  - IGS 031
552  - IGS A2107
553  - IGS T2105
554  - K668 (qfp44) == OKI6225
555  - 82C55
556
557***************************************************************************/
558
559ROM_START( amazonia )
560   ROM_REGION( 0x04000, "maincpu", 0 )
561   /* Internal rom of IGS027A type G ARM based MCU */
562   ROM_LOAD( "amazonia_igs027a", 0x00000, 0x4000, NO_DUMP )
563
564   ROM_REGION( 0x80000, "user1", 0 ) // external ARM data / prg
565   ROM_LOAD( "amazonia_v-104br.u23", 0x00000, 0x80000, CRC(103d465e) SHA1(68d088f24171e27c0a9b0660f81d3334f730637a) )
566
567   ROM_REGION( 0x480000, "gfx1", 0 )
568   ROM_LOAD( "amazonia_cg.u11", 0x000000, 0x80000, CRC(2ac2cfd1) SHA1(f8750a4727ddabf1415dab6eaa4a72e60e86e7f1) )
569
570   ROM_REGION( 0x80000, "oki", 0 )
571   ROM_LOAD( "igs_s2102.u28", 0x00000, 0x80000, CRC(90dda82d) SHA1(67fbc1e8d76b85e124136e2f1df09c8b6c5a8f97) )
572ROM_END
573
574
575542ROM_START( sdwx )
576543   ROM_REGION( 0x04000, "maincpu", 0 )
577544   /* Internal rom of IGS027A ARM based MCU */
r249188r249189
586553   ROM_REGION( 0x200000, "gfx2", 0 )
587554   ROM_LOAD( "cg.u25", 0x000000, 0x200000, CRC(709b9a42) SHA1(18c4b8e159b29c168f5cafb437fe6eb123672471) )
588555
589   ROM_REGION( 0x80000, "oki", 0 ) // m6295 samples
556   ROM_REGION( 0x80000, "unknown", 0 )
590557   ROM_LOAD( "sp.u2", 0x00000, 0x80000, CRC(216b5418) SHA1(b7bc24ced0ccb5476c974420aa506c13b971fc9f) )
591558ROM_END
592559
593/*
594Amazonia King II by IGS 2004 ( International Game System )
595Patented by EAGO.
596560
597U12 is a 27c240  labeled ( AKII TEXT ) ( text )
598U13 is a 27c160  labeled ( AKII CG ) ( Grafics)
599U23 is a 27c4096 labeled ( AKII_V-202br ) ( Program version Brazil )
600U28 is a 29F4000 labeled (AKII SP) ( Sound Program )
601U17 is a ATF16V8B-15P labeled ( FG-1 ) (read protected)
602U10 is a IGS 003c Dip 40 pin ( Maybe 8255 ? )
603U24 is a IGS031 QFP with 208 pin
604U32 is a IGS027a QFP with 120 pin ( Encrypted ARM, internal code, stamped P9 A/K II )
605Crystal Frequency = 22.000 Mhz
606Sound Processor ( U6295 )
607*/
608561
609ROM_START( amazoni2 )
610   ROM_REGION( 0x04000, "maincpu", 0 )
611   /* Internal rom of IGS027A ARM based MCU */
612   ROM_LOAD( "sdwx_igs027a", 0x00000, 0x4000, NO_DUMP )
613562
614   ROM_REGION( 0x80000, "user1", 0 ) // external ARM data / prg
615   ROM_LOAD( "U23_27c4096_AKII_V-202br.bin", 0x000000, 0x80000, CRC(7147b43c) SHA1(29a4a20867595650918c4ab892ddb71440bd3f4b) )
616
617   ROM_REGION( 0x80000, "gfx1", 0 )
618   ROM_LOAD( "akii_text.u24", 0x000000, 0x80000, CRC(60b415ac) SHA1(b4475b0ba1e70504cac9ac05078873df0b16495b) )
619
620   ROM_REGION( 0x200000, "gfx2", 0 )
621   ROM_LOAD( "U13_27c160_AKII_CG.bin", 0x000000, 0x200000, CRC(254bd84f) SHA1(091ecda792c4c4a7bb039b2c708788ef87fdaf86) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
622
623   ROM_REGION( 0x80000, "oki", 0 )  // m6295 samples
624   ROM_LOAD( "akii_sp.u28", 0x00000, 0x80000, CRC(216b5418) SHA1(b7bc24ced0ccb5476c974420aa506c13b971fc9f) )
625ROM_END
626
627
628563ROM_START( sddz )
629564   ROM_REGION( 0x04000, "maincpu", 0 )
630565   /* Internal rom of IGS027A ARM based MCU */
r249188r249189
11291064   pgm_create_dummy_internal_arm_region();
11301065}
11311066
1132DRIVER_INIT_MEMBER(igs_m027_state,amazonia)
1133{
1134   amazonia_decrypt(machine());
1135   //sdwx_gfx_decrypt(machine());
1136   pgm_create_dummy_internal_arm_region();
1137}
1138
1139DRIVER_INIT_MEMBER(igs_m027_state,amazoni2)
1140{
1141   amazoni2_decrypt(machine());
1142   //sdwx_gfx_decrypt(machine());
1143   pgm_create_dummy_internal_arm_region();
1144}
1145
11461067/***************************************************************************
11471068
11481069    Game Drivers
r249188r249189
11501071***************************************************************************/
11511072
11521073GAME( 1999,  slqz3,     0, igs_majhong, sdwx, igs_m027_state, slqz3,       ROT0, "IGS", "Mahjong Shuang Long Qiang Zhu 3 (China, VS107C)", MACHINE_IS_SKELETON )
1153GAME( 1999,  amazonia,  0, igs_majhong, sdwx, igs_m027_state, amazonia,    ROT0, "IGS", "Amazonia King (V104BR)", MACHINE_IS_SKELETON )
11541074GAME( 200?,  fruitpar,  0, igs_majhong, sdwx, igs_m027_state, fruitpar,    ROT0, "IGS", "Fruit Paradise (V214)", MACHINE_IS_SKELETON )
1155GAME( 2002,  sdwx,      0, igs_majhong, sdwx, igs_m027_state, sdwx,        ROT0, "IGS", "Sheng Dan Wu Xian", MACHINE_IS_SKELETON ) // aka Christmas 5 Line? (or Amazonia King II, shares roms at least?)
1156GAME( 2002,  amazoni2,  0, igs_majhong, sdwx, igs_m027_state, amazoni2,    ROT0, "IGS", "Amazonia King II (V202BR)", MACHINE_IS_SKELETON )
1075GAME( 2002,  sdwx,      0, igs_majhong, sdwx, igs_m027_state, sdwx,        ROT0, "IGS", "Sheng Dan Wu Xian", MACHINE_IS_SKELETON ) // aka Christmas 5 Line?
11571076GAME( 200?,  sddz,      0, igs_majhong, sdwx, igs_m027_state, sddz,        ROT0, "IGS", "Super Dou Di Zhu",  MACHINE_IS_SKELETON )
11581077GAME( 2000,  zhongguo,  0, igs_majhong, sdwx, igs_m027_state, zhongguo,    ROT0, "IGS", "Zhong Guo Chu Da D",  MACHINE_IS_SKELETON )
11591078GAME( 200?,  lhzb3,     0, igs_majhong, sdwx, igs_m027_state, lhzb3,       ROT0, "IGS", "Long Hu Zheng Ba 3", MACHINE_IS_SKELETON )
trunk/src/mame/drivers/macrossp.c
r249188r249189
625625
626626   ROM_REGION16_BE( 0x400000, "ensoniq.1", 0 )
627627   ROM_COPY( "ensoniq.0", 0x400000, 0x000000, 0x400000 )
628
629   ROM_REGION( 0x0600, "plds", 0 )
630   ROM_LOAD( "u8.u8",     0x0000, 0x0117, CRC(99bd3cc1) SHA1(b0d3ac93cb5d2857cf9c184c7a2b4afa0211d588) ) /* unprotected GAL16V8B */
631   ROM_LOAD( "u9.u9",     0x0200, 0x0117, CRC(480f4860) SHA1(7ff3723122cbdda5c0dcea5167508e9a7437f551) ) /* unprotected GAL16V8B */
632   ROM_LOAD( "u200.u200", 0x0400, 0x0117, CRC(9343ad76) SHA1(a2adf2510011078ee9fae65acdd2daa0ffab48f6) ) /* unprotected GAL16V8B */
633628ROM_END
634629
635630ROM_START( quizmoon )
trunk/src/mame/drivers/nmk16.c
r249188r249189
43624362static MACHINE_CONFIG_START( gunnail, nmk16_state )
43634363
43644364   /* basic machine hardware */
4365   MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* verified on pcb */
4365   MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz? */
43664366   MCFG_CPU_PROGRAM_MAP(gunnail_map)
43674367   NMK_HACKY_INTERRUPT_TIMING
43684368
r249188r249189
43704370   NMK_HACKY_SCREEN_HIRES
43714371   MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_gunnail)
43724372
4373
4374
4375
43734376   MCFG_GFXDECODE_ADD("gfxdecode", "palette", macross)
43744377   MCFG_PALETTE_ADD("palette", 1024)
43754378   MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
r249188r249189
43794382   /* sound hardware */
43804383   MCFG_SPEAKER_STANDARD_MONO("mono")
43814384
4382   MCFG_NMK004_ADD("nmk004", XTAL_16MHz/2) /* verified on pcb */
4385   MCFG_NMK004_ADD("nmk004", 8000000)
43834386
4384   MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */
4387   MCFG_SOUND_ADD("ymsnd", YM2203, 1500000)
43854388   MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("nmk004", nmk004_device, ym2203_irq_handler))
43864389   MCFG_SOUND_ROUTE(0, "mono", 0.50)
43874390   MCFG_SOUND_ROUTE(1, "mono", 0.50)
43884391   MCFG_SOUND_ROUTE(2, "mono", 0.50)
43894392   MCFG_SOUND_ROUTE(3, "mono", 1.20)
43904393
4391   MCFG_OKIM6295_ADD("oki1", XTAL_16MHz/4, OKIM6295_PIN7_LOW) /* verified on pcb */
4394   MCFG_OKIM6295_ADD("oki1", 16000000/4, OKIM6295_PIN7_LOW)
43924395   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
43934396
4394   MCFG_OKIM6295_ADD("oki2", XTAL_16MHz/4, OKIM6295_PIN7_LOW) /* verified on pcb */
4397   MCFG_OKIM6295_ADD("oki2", 16000000/4, OKIM6295_PIN7_LOW)
43954398   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
43964399MACHINE_CONFIG_END
43974400
r249188r249189
61726175
61736176AK92077
61746177|-------------------------------------------------------------|
6175|  LA4460  VOL YM2203  6116    92077-2.U101  62256    62256   |
6178|  LA4460  VOL YM2203  6116    92077-2.U10   62256    62256   |
61766179|-|                       16MHz |------|     62256    62256   |
61776180  |   4558   6295 92077-6.U57   |NMK004|     62256    62256   |
61786181|-|                       12MHz |      |     62256    62256   |
r249188r249189
62006203|   6264                                               10MHz  |
62016204|-------------------------------------------------------------|
62026205Notes:
6203      68000 - Motorola MC68000P12 CPU running at 10MHz (DIP64)
6204      6116  - 2Kb x8 SRAM (x9, DIP24)
6205      6264  - 8Kb x8 SRAM (x2, DIP28)
6206      62256 - 32Kb x8 SRAM (x10, DIP28)
6207      YM2203- Yamaha YM2203 running at 1.5MHz [12/8] (DIP40)
6206      68000 - Motorola MC68000P12 CPU running at 10.000MHz (DIP64)
6207      6116  - 2K x8 SRAM (x9, DIP24)
6208      6264  - 8K x8 SRAM (x2, DIP28)
6209      62256 - 32K x8 SRAM (x10, DIP28)
6210      YM2203- Yamaha YM2203 (DIP40)
62086211      YM3014- Yamaha YM3014 (DIP8)
6209      6295  - OKI M6295 running at 4MHz, pin 7 low [16/4] (x2, QFP44)
62106212      4558  - BA4558 Op Amp (DIP8)
62116213      LA4460- Power Amplifier
6212      DIP1/2- 8 position DIP Switches
6214      6295  - Oki M6295, running at MHz, sample rate  (x2, QFP44)
6215      DIP1/2- 8 position Dip Switches
62136216      VOL   - Volume Potentiometer
6214      OSC   - 12MHz, 16MHz, 10MHz
6215      HSync - 15.367kHz
6216      VSync - 56.205Hz
62176217
62186218      NMK CUSTOM IC'S
6219          - NMK004 marked "NMK004 0840-1324". Actually a TLCS90-based Toshiba TMP90C840AF
6220            Microcontroller with 256 bytes RAM & 8Kb ROM, running at 8.000MHz [16/2] (QFP64)
6219          - NMK004; Actually a TLCS90-based Toshiba TMP91P640F-10 MCU
6220            with 16K internal OTP PROM, running at 8.000MHz [16 / 2] (QFP64)
6221            Note that the internal ROM is secured :(
62216222          - NMK005 (x1, Square QFP64)
62226223          - NMK008 (x1, Square QFP84)
62236224          - NMK009 (x2, Square QFP100)
r249188r249189
62276228          - NMK214 (x2, SDIP64)
62286229          - NMK215 (x1, SDIP64)
62296230
6231Sound:YM2203C,OKI M6295 x2
6232OSC  :12.0000MHz,16.0000MHz,10.0000MHz
6233Other:NMK 111 x3,214 x2,901,903 x2,902,005,004,215,008,009 x2
62306234*/
62316235
62326236ROM_START( gunnail )
62336237   ROM_REGION( 0x80000, "maincpu", 0 )     /* 68000 code */
6234   ROM_LOAD16_BYTE( "3e.u131",  0x00000, 0x40000, CRC(61d985b2) SHA1(96daca603f18accb47f98a3e584b2c84fc5a2ca4) )
6235   ROM_LOAD16_BYTE( "3o.u133",  0x00001, 0x40000, CRC(f114e89c) SHA1(a12f5278167f446bb5277e87289c41b5aa365c86) )
6238   ROM_LOAD16_BYTE( "3e.bin",  0x00000, 0x40000, CRC(61d985b2) SHA1(96daca603f18accb47f98a3e584b2c84fc5a2ca4) )
6239   ROM_LOAD16_BYTE( "3o.bin",  0x00001, 0x40000, CRC(f114e89c) SHA1(a12f5278167f446bb5277e87289c41b5aa365c86) )
62366240
6237   ROM_REGION( 0x10000, "audiocpu", 0 )     /* Code for NMK004 CPU */
6238   ROM_LOAD( "92077_2.u101",      0x00000, 0x10000, CRC(cd4e55f8) SHA1(92182767ca0ec37ec4949bd1a88c2efdcdcb60ed) )
6241   ROM_REGION( 0x10000, "audiocpu", 0 )        /* Code for (unknown?) CPU */
6242   ROM_LOAD( "92077_2.bin",      0x00000, 0x10000, CRC(cd4e55f8) SHA1(92182767ca0ec37ec4949bd1a88c2efdcdcb60ed) )
62396243
62406244   ROM_REGION( 0x020000, "fgtile", 0 )
6241   ROM_LOAD( "1.u21",    0x000000, 0x020000, CRC(3d00a9f4) SHA1(91a82e3e74c8774d7f8b2adceb228b97010facfd) )    /* 8x8 tiles */
6245   ROM_LOAD( "1.bin",    0x000000, 0x020000, CRC(3d00a9f4) SHA1(91a82e3e74c8774d7f8b2adceb228b97010facfd) )    /* 8x8 tiles */
62426246
62436247   ROM_REGION( 0x100000, "bgtile", 0 )
6244   ROM_LOAD( "92077-4.u19", 0x000000, 0x100000, CRC(a9ea2804) SHA1(14dbdb3c7986db5e44dc7c5be6fcf39f3d1e50b0) ) /* 16x16 tiles */
6248   ROM_LOAD( "92077-4.bin", 0x000000, 0x100000, CRC(a9ea2804) SHA1(14dbdb3c7986db5e44dc7c5be6fcf39f3d1e50b0) ) /* 16x16 tiles */
62456249
62466250   ROM_REGION( 0x200000, "sprites", 0 )
6247   ROM_LOAD16_WORD_SWAP( "92077-7.u134", 0x000000, 0x200000, CRC(d49169b3) SHA1(565ff7725dd6ace79b55706114132d8d867e81a9) ) /* Sprites */
6251   ROM_LOAD16_WORD_SWAP( "92077-7.bin", 0x000000, 0x200000, CRC(d49169b3) SHA1(565ff7725dd6ace79b55706114132d8d867e81a9) ) /* Sprites */
62486252
62496253   ROM_REGION( 0x0a0000, "oki1", 0 )   /* OKIM6295 samples */
6250   ROM_LOAD( "92077-5.u56", 0x00000, 0x20000, CRC(feb83c73) SHA1(b44e9d20b4af02e218c4bc875d66a7d6b8551cae) )
6254   ROM_LOAD( "92077-5.bin", 0x00000, 0x20000, CRC(feb83c73) SHA1(b44e9d20b4af02e218c4bc875d66a7d6b8551cae) )
62516255   ROM_CONTINUE(            0x40000, 0x60000 ) /* banked */
62526256
62536257   ROM_REGION( 0x0a0000, "oki2", 0 )   /* OKIM6295 samples */
6254   ROM_LOAD( "92077-6.u57", 0x00000, 0x20000, CRC(6d133f0d) SHA1(8a5e6e27a297196f20e4de0d060f1188115809bb) )
6258   ROM_LOAD( "92077-6.bin", 0x00000, 0x20000, CRC(6d133f0d) SHA1(8a5e6e27a297196f20e4de0d060f1188115809bb) )
62556259   ROM_CONTINUE(            0x40000, 0x60000 ) /* banked */
62566260
62576261   ROM_REGION( 0x0220, "proms", 0 )
6258   ROM_LOAD( "8_82s129.u35",   0x0000, 0x0100, CRC(4299776e) SHA1(683d14d2ace14965f0fcfe0f0540c1b77d2cece5) )  /* unknown */
6259   ROM_LOAD( "9_82s135.u72",   0x0100, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) )  /* unknown */
6260   ROM_LOAD( "10_82s123.u96",  0x0200, 0x0020, CRC(c60103c8) SHA1(dfb05b704bb5e1f75f5aaa4fa36e8ddcc905f8b6) )  /* unknown */
6262   ROM_LOAD( "8.bpr",      0x0000, 0x0100, CRC(4299776e) SHA1(683d14d2ace14965f0fcfe0f0540c1b77d2cece5) )  /* unknown */
6263   ROM_LOAD( "9.bpr",      0x0100, 0x0100, CRC(633ab1c9) SHA1(acd99fcca41eaab7948ca84988352f1d7d519c61) )  /* unknown */
6264   ROM_LOAD( "10.bpr",     0x0200, 0x0020, CRC(c60103c8) SHA1(dfb05b704bb5e1f75f5aaa4fa36e8ddcc905f8b6) )  /* unknown */
62616265ROM_END
62626266
62636267ROM_START( macross2 )
trunk/src/mame/drivers/pgm.c
r249188r249189
580580
581581   ROM_REGION( 0x800000, "tiles",  0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
582582   PGM_VIDEO_BIOS
583   ROM_LOAD( "t0100.u8",     0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
583   ROM_LOAD( "t0100.rom",    0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
584584
585585   ROM_REGION( 0x1800000, "sprcol", 0 ) /* Sprite Colour Data */
586   ROM_LOAD( "a0100.u5",     0x0000000, 0x400000, CRC(8b3bd88a) SHA1(42db3a60c6ba9d83ebe2008c8047d094027f65a7) )
587   ROM_LOAD( "a0101.u6",     0x0400000, 0x400000, CRC(3b9e9644) SHA1(5b95ec1d25c3bc3504c93547f5adb5ce24376405) )
588   ROM_LOAD( "a0102.u7",     0x0800000, 0x400000, CRC(069e2c38) SHA1(9bddca8c2f5bd80f4abe4e1f062751736dc151dd) )
589   ROM_LOAD( "a0103.u8",     0x0c00000, 0x400000, CRC(4460a3fd) SHA1(cbebdb65c17605853f7d0b298018dd8801a25a58) )
590   ROM_LOAD( "a0104.u11",    0x1000000, 0x400000, CRC(5f8abb56) SHA1(6c1ddc0309862a141aa0c0f63b641aec9257aaee) )
591   ROM_LOAD( "a0105.u12",    0x1400000, 0x400000, CRC(a17a7147) SHA1(44eeb43c6b0ebb829559a20ae357383fbdeecd82) )
586   ROM_LOAD( "a0100.rom",    0x0000000, 0x400000, CRC(8b3bd88a) SHA1(42db3a60c6ba9d83ebe2008c8047d094027f65a7) )
587   ROM_LOAD( "a0101.rom",    0x0400000, 0x400000, CRC(3b9e9644) SHA1(5b95ec1d25c3bc3504c93547f5adb5ce24376405) )
588   ROM_LOAD( "a0102.rom",    0x0800000, 0x400000, CRC(069e2c38) SHA1(9bddca8c2f5bd80f4abe4e1f062751736dc151dd) )
589   ROM_LOAD( "a0103.rom",    0x0c00000, 0x400000, CRC(4460a3fd) SHA1(cbebdb65c17605853f7d0b298018dd8801a25a58) )
590   ROM_LOAD( "a0104.rom",    0x1000000, 0x400000, CRC(5f8abb56) SHA1(6c1ddc0309862a141aa0c0f63b641aec9257aaee) )
591   ROM_LOAD( "a0105.rom",    0x1400000, 0x400000, CRC(a17a7147) SHA1(44eeb43c6b0ebb829559a20ae357383fbdeecd82) )
592592
593593   ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
594   ROM_LOAD( "b0100.u9",     0x0000000, 0x400000, CRC(69d2e48c) SHA1(5b5f759007264c07b3b39be8e03a713698e1fc2a) )
595   ROM_LOAD( "b0101.u10",    0x0400000, 0x400000, CRC(0d587bf3) SHA1(5347828b0a6e4ddd7a263663d2c2604407e4d49c) )
596   ROM_LOAD( "b0102.u15",    0x0800000, 0x400000, CRC(43823c1e) SHA1(e10a1a9a81b51b11044934ff702e35d8d7ab1b08) )
594   ROM_LOAD( "b0100.rom",    0x0000000, 0x400000, CRC(69d2e48c) SHA1(5b5f759007264c07b3b39be8e03a713698e1fc2a) )
595   ROM_LOAD( "b0101.rom",    0x0400000, 0x400000, CRC(0d587bf3) SHA1(5347828b0a6e4ddd7a263663d2c2604407e4d49c) )
596   ROM_LOAD( "b0102.rom",    0x0800000, 0x400000, CRC(43823c1e) SHA1(e10a1a9a81b51b11044934ff702e35d8d7ab1b08) )
597597
598598   ROM_REGION( 0x600000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
599599   PGM_AUDIO_BIOS
600   ROM_LOAD( "m0100.u1",     0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
600   ROM_LOAD( "m0100.rom",    0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
601601ROM_END
602602
603603ROM_START( orlegende )
r249188r249189
607607
608608   ROM_REGION( 0x800000, "tiles",  0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
609609   PGM_VIDEO_BIOS
610   ROM_LOAD( "t0100.u8",     0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
610   ROM_LOAD( "t0100.rom",    0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
611611
612612   ROM_REGION( 0x1800000, "sprcol", 0 ) /* Sprite Colour Data */
613   ROM_LOAD( "a0100.u5",     0x0000000, 0x400000, CRC(8b3bd88a) SHA1(42db3a60c6ba9d83ebe2008c8047d094027f65a7) )
614   ROM_LOAD( "a0101.u6",     0x0400000, 0x400000, CRC(3b9e9644) SHA1(5b95ec1d25c3bc3504c93547f5adb5ce24376405) )
615   ROM_LOAD( "a0102.u7",     0x0800000, 0x400000, CRC(069e2c38) SHA1(9bddca8c2f5bd80f4abe4e1f062751736dc151dd) )
616   ROM_LOAD( "a0103.u8",     0x0c00000, 0x400000, CRC(4460a3fd) SHA1(cbebdb65c17605853f7d0b298018dd8801a25a58) )
617   ROM_LOAD( "a0104.u11",    0x1000000, 0x400000, CRC(5f8abb56) SHA1(6c1ddc0309862a141aa0c0f63b641aec9257aaee) )
618   ROM_LOAD( "a0105.u12",    0x1400000, 0x400000, CRC(a17a7147) SHA1(44eeb43c6b0ebb829559a20ae357383fbdeecd82) )
613   ROM_LOAD( "a0100.rom",    0x0000000, 0x400000, CRC(8b3bd88a) SHA1(42db3a60c6ba9d83ebe2008c8047d094027f65a7) )
614   ROM_LOAD( "a0101.rom",    0x0400000, 0x400000, CRC(3b9e9644) SHA1(5b95ec1d25c3bc3504c93547f5adb5ce24376405) )
615   ROM_LOAD( "a0102.rom",    0x0800000, 0x400000, CRC(069e2c38) SHA1(9bddca8c2f5bd80f4abe4e1f062751736dc151dd) )
616   ROM_LOAD( "a0103.rom",    0x0c00000, 0x400000, CRC(4460a3fd) SHA1(cbebdb65c17605853f7d0b298018dd8801a25a58) )
617   ROM_LOAD( "a0104.rom",    0x1000000, 0x400000, CRC(5f8abb56) SHA1(6c1ddc0309862a141aa0c0f63b641aec9257aaee) )
618   ROM_LOAD( "a0105.rom",    0x1400000, 0x400000, CRC(a17a7147) SHA1(44eeb43c6b0ebb829559a20ae357383fbdeecd82) )
619619
620620   ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
621   ROM_LOAD( "b0100.u9",     0x0000000, 0x400000, CRC(69d2e48c) SHA1(5b5f759007264c07b3b39be8e03a713698e1fc2a) )
622   ROM_LOAD( "b0101.u10",    0x0400000, 0x400000, CRC(0d587bf3) SHA1(5347828b0a6e4ddd7a263663d2c2604407e4d49c) )
623   ROM_LOAD( "b0102.u15",    0x0800000, 0x400000, CRC(43823c1e) SHA1(e10a1a9a81b51b11044934ff702e35d8d7ab1b08) )
621   ROM_LOAD( "b0100.rom",    0x0000000, 0x400000, CRC(69d2e48c) SHA1(5b5f759007264c07b3b39be8e03a713698e1fc2a) )
622   ROM_LOAD( "b0101.rom",    0x0400000, 0x400000, CRC(0d587bf3) SHA1(5347828b0a6e4ddd7a263663d2c2604407e4d49c) )
623   ROM_LOAD( "b0102.rom",    0x0800000, 0x400000, CRC(43823c1e) SHA1(e10a1a9a81b51b11044934ff702e35d8d7ab1b08) )
624624
625625   ROM_REGION( 0x600000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
626626   PGM_AUDIO_BIOS
627   ROM_LOAD( "m0100.u1",     0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
627   ROM_LOAD( "m0100.rom",    0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
628628ROM_END
629629
630630ROM_START( orlegendc )
r249188r249189
634634
635635   ROM_REGION( 0x800000, "tiles",  0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
636636   PGM_VIDEO_BIOS
637   ROM_LOAD( "t0100.u8",     0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
637   ROM_LOAD( "t0100.rom",    0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
638638
639639   ROM_REGION( 0x1800000, "sprcol", 0 ) /* Sprite Colour Data */
640   ROM_LOAD( "a0100.u5",     0x0000000, 0x400000, CRC(8b3bd88a) SHA1(42db3a60c6ba9d83ebe2008c8047d094027f65a7) )
641   ROM_LOAD( "a0101.u6",     0x0400000, 0x400000, CRC(3b9e9644) SHA1(5b95ec1d25c3bc3504c93547f5adb5ce24376405) )
642   ROM_LOAD( "a0102.u7",     0x0800000, 0x400000, CRC(069e2c38) SHA1(9bddca8c2f5bd80f4abe4e1f062751736dc151dd) )
643   ROM_LOAD( "a0103.u8",     0x0c00000, 0x400000, CRC(4460a3fd) SHA1(cbebdb65c17605853f7d0b298018dd8801a25a58) )
644   ROM_LOAD( "a0104.u11",    0x1000000, 0x400000, CRC(5f8abb56) SHA1(6c1ddc0309862a141aa0c0f63b641aec9257aaee) )
645   ROM_LOAD( "a0105.u12",    0x1400000, 0x400000, CRC(a17a7147) SHA1(44eeb43c6b0ebb829559a20ae357383fbdeecd82) )
640   ROM_LOAD( "a0100.rom",    0x0000000, 0x400000, CRC(8b3bd88a) SHA1(42db3a60c6ba9d83ebe2008c8047d094027f65a7) )
641   ROM_LOAD( "a0101.rom",    0x0400000, 0x400000, CRC(3b9e9644) SHA1(5b95ec1d25c3bc3504c93547f5adb5ce24376405) )
642   ROM_LOAD( "a0102.rom",    0x0800000, 0x400000, CRC(069e2c38) SHA1(9bddca8c2f5bd80f4abe4e1f062751736dc151dd) )
643   ROM_LOAD( "a0103.rom",    0x0c00000, 0x400000, CRC(4460a3fd) SHA1(cbebdb65c17605853f7d0b298018dd8801a25a58) )
644   ROM_LOAD( "a0104.rom",    0x1000000, 0x400000, CRC(5f8abb56) SHA1(6c1ddc0309862a141aa0c0f63b641aec9257aaee) )
645   ROM_LOAD( "a0105.rom",    0x1400000, 0x400000, CRC(a17a7147) SHA1(44eeb43c6b0ebb829559a20ae357383fbdeecd82) )
646646
647647   ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
648   ROM_LOAD( "b0100.u9",     0x0000000, 0x400000, CRC(69d2e48c) SHA1(5b5f759007264c07b3b39be8e03a713698e1fc2a) )
649   ROM_LOAD( "b0101.u10",    0x0400000, 0x400000, CRC(0d587bf3) SHA1(5347828b0a6e4ddd7a263663d2c2604407e4d49c) )
650   ROM_LOAD( "b0102.u15",    0x0800000, 0x400000, CRC(43823c1e) SHA1(e10a1a9a81b51b11044934ff702e35d8d7ab1b08) )
648   ROM_LOAD( "b0100.rom",    0x0000000, 0x400000, CRC(69d2e48c) SHA1(5b5f759007264c07b3b39be8e03a713698e1fc2a) )
649   ROM_LOAD( "b0101.rom",    0x0400000, 0x400000, CRC(0d587bf3) SHA1(5347828b0a6e4ddd7a263663d2c2604407e4d49c) )
650   ROM_LOAD( "b0102.rom",    0x0800000, 0x400000, CRC(43823c1e) SHA1(e10a1a9a81b51b11044934ff702e35d8d7ab1b08) )
651651
652652   ROM_REGION( 0x600000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
653653   PGM_AUDIO_BIOS
654   ROM_LOAD( "m0100.u1",     0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
654   ROM_LOAD( "m0100.rom",    0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
655655ROM_END
656656
657657ROM_START( orlegendca )
r249188r249189
661661
662662   ROM_REGION( 0x800000, "tiles",  0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
663663   PGM_VIDEO_BIOS
664   ROM_LOAD( "t0100.u8",     0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
664   ROM_LOAD( "t0100.rom",    0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
665665
666666   ROM_REGION( 0x1800000, "sprcol", 0 ) /* Sprite Colour Data */
667   ROM_LOAD( "a0100.u5",     0x0000000, 0x400000, CRC(8b3bd88a) SHA1(42db3a60c6ba9d83ebe2008c8047d094027f65a7) )
668   ROM_LOAD( "a0101.u6",     0x0400000, 0x400000, CRC(3b9e9644) SHA1(5b95ec1d25c3bc3504c93547f5adb5ce24376405) )
669   ROM_LOAD( "a0102.u7",     0x0800000, 0x400000, CRC(069e2c38) SHA1(9bddca8c2f5bd80f4abe4e1f062751736dc151dd) )
670   ROM_LOAD( "a0103.u8",     0x0c00000, 0x400000, CRC(4460a3fd) SHA1(cbebdb65c17605853f7d0b298018dd8801a25a58) )
671   ROM_LOAD( "a0104.u11",    0x1000000, 0x400000, CRC(5f8abb56) SHA1(6c1ddc0309862a141aa0c0f63b641aec9257aaee) )
672   ROM_LOAD( "a0105.u12",    0x1400000, 0x400000, CRC(a17a7147) SHA1(44eeb43c6b0ebb829559a20ae357383fbdeecd82) )
667   ROM_LOAD( "a0100.rom",    0x0000000, 0x400000, CRC(8b3bd88a) SHA1(42db3a60c6ba9d83ebe2008c8047d094027f65a7) )
668   ROM_LOAD( "a0101.rom",    0x0400000, 0x400000, CRC(3b9e9644) SHA1(5b95ec1d25c3bc3504c93547f5adb5ce24376405) )
669   ROM_LOAD( "a0102.rom",    0x0800000, 0x400000, CRC(069e2c38) SHA1(9bddca8c2f5bd80f4abe4e1f062751736dc151dd) )
670   ROM_LOAD( "a0103.rom",    0x0c00000, 0x400000, CRC(4460a3fd) SHA1(cbebdb65c17605853f7d0b298018dd8801a25a58) )
671   ROM_LOAD( "a0104.rom",    0x1000000, 0x400000, CRC(5f8abb56) SHA1(6c1ddc0309862a141aa0c0f63b641aec9257aaee) )
672   ROM_LOAD( "a0105.rom",    0x1400000, 0x400000, CRC(a17a7147) SHA1(44eeb43c6b0ebb829559a20ae357383fbdeecd82) )
673673
674674   ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
675   ROM_LOAD( "b0100.u9",     0x0000000, 0x400000, CRC(69d2e48c) SHA1(5b5f759007264c07b3b39be8e03a713698e1fc2a) )
676   ROM_LOAD( "b0101.u10",    0x0400000, 0x400000, CRC(0d587bf3) SHA1(5347828b0a6e4ddd7a263663d2c2604407e4d49c) )
677   ROM_LOAD( "b0102.u15",    0x0800000, 0x400000, CRC(43823c1e) SHA1(e10a1a9a81b51b11044934ff702e35d8d7ab1b08) )
675   ROM_LOAD( "b0100.rom",    0x0000000, 0x400000, CRC(69d2e48c) SHA1(5b5f759007264c07b3b39be8e03a713698e1fc2a) )
676   ROM_LOAD( "b0101.rom",    0x0400000, 0x400000, CRC(0d587bf3) SHA1(5347828b0a6e4ddd7a263663d2c2604407e4d49c) )
677   ROM_LOAD( "b0102.rom",    0x0800000, 0x400000, CRC(43823c1e) SHA1(e10a1a9a81b51b11044934ff702e35d8d7ab1b08) )
678678
679679   ROM_REGION( 0x600000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
680680   PGM_AUDIO_BIOS
681   ROM_LOAD( "m0100.u1",     0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
681   ROM_LOAD( "m0100.rom",    0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
682682ROM_END
683683
684684
r249188r249189
691691IGS PCB NO-0134-1
692692IGS PCB NO-0135
693693
694
694695OLV111CH.U11 [b80ddd3c]
695696OLV111CH.U6  [5fb86373]
696697OLV111CH.U7  [6ee79faf]
r249188r249189
698699
699700T0100.U8
700701
702
701703A0100.U5
702704A0101.U6
703705A0102.U7
r249188r249189
723725
724726   ROM_REGION( 0x800000, "tiles",  0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
725727   PGM_VIDEO_BIOS
726   ROM_LOAD( "t0100.u8",     0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
728   ROM_LOAD( "t0100.rom",    0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
727729
728730   ROM_REGION( 0x1800000, "sprcol", 0 ) /* Sprite Colour Data */
729   ROM_LOAD( "a0100.u5",     0x0000000, 0x400000, CRC(8b3bd88a) SHA1(42db3a60c6ba9d83ebe2008c8047d094027f65a7) )
730   ROM_LOAD( "a0101.u6",     0x0400000, 0x400000, CRC(3b9e9644) SHA1(5b95ec1d25c3bc3504c93547f5adb5ce24376405) )
731   ROM_LOAD( "a0102.u7",     0x0800000, 0x400000, CRC(069e2c38) SHA1(9bddca8c2f5bd80f4abe4e1f062751736dc151dd) )
732   ROM_LOAD( "a0103.u8",     0x0c00000, 0x400000, CRC(4460a3fd) SHA1(cbebdb65c17605853f7d0b298018dd8801a25a58) )
733   ROM_LOAD( "a0104.u11",    0x1000000, 0x400000, CRC(5f8abb56) SHA1(6c1ddc0309862a141aa0c0f63b641aec9257aaee) )
734   ROM_LOAD( "a0105.u12",    0x1400000, 0x400000, CRC(a17a7147) SHA1(44eeb43c6b0ebb829559a20ae357383fbdeecd82) )
731   ROM_LOAD( "a0100.rom",    0x0000000, 0x400000, CRC(8b3bd88a) SHA1(42db3a60c6ba9d83ebe2008c8047d094027f65a7) )
732   ROM_LOAD( "a0101.rom",    0x0400000, 0x400000, CRC(3b9e9644) SHA1(5b95ec1d25c3bc3504c93547f5adb5ce24376405) )
733   ROM_LOAD( "a0102.rom",    0x0800000, 0x400000, CRC(069e2c38) SHA1(9bddca8c2f5bd80f4abe4e1f062751736dc151dd) )
734   ROM_LOAD( "a0103.rom",    0x0c00000, 0x400000, CRC(4460a3fd) SHA1(cbebdb65c17605853f7d0b298018dd8801a25a58) )
735   ROM_LOAD( "a0104.rom",    0x1000000, 0x400000, CRC(5f8abb56) SHA1(6c1ddc0309862a141aa0c0f63b641aec9257aaee) )
736   ROM_LOAD( "a0105.rom",    0x1400000, 0x400000, CRC(a17a7147) SHA1(44eeb43c6b0ebb829559a20ae357383fbdeecd82) )
735737
736738   ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
737   ROM_LOAD( "b0100.u9",     0x0000000, 0x400000, CRC(69d2e48c) SHA1(5b5f759007264c07b3b39be8e03a713698e1fc2a) )
738   ROM_LOAD( "b0101.u10",    0x0400000, 0x400000, CRC(0d587bf3) SHA1(5347828b0a6e4ddd7a263663d2c2604407e4d49c) )
739   ROM_LOAD( "b0102.u15",    0x0800000, 0x400000, CRC(43823c1e) SHA1(e10a1a9a81b51b11044934ff702e35d8d7ab1b08) )
739   ROM_LOAD( "b0100.rom",    0x0000000, 0x400000, CRC(69d2e48c) SHA1(5b5f759007264c07b3b39be8e03a713698e1fc2a) )
740   ROM_LOAD( "b0101.rom",    0x0400000, 0x400000, CRC(0d587bf3) SHA1(5347828b0a6e4ddd7a263663d2c2604407e4d49c) )
741   ROM_LOAD( "b0102.rom",    0x0800000, 0x400000, CRC(43823c1e) SHA1(e10a1a9a81b51b11044934ff702e35d8d7ab1b08) )
740742
741743   ROM_REGION( 0x600000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
742744   PGM_AUDIO_BIOS
743   ROM_LOAD( "m0100.u1",     0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
745   ROM_LOAD( "m0100.rom",    0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
744746ROM_END
745747
746748
r249188r249189
748750   ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code  */
749751   PGM_68K_BIOS
750752   ROM_LOAD16_BYTE( "olv111tw.u6",     0x100001, 0x080000, CRC(b205a733) SHA1(33f4c9162e36be4957004f80593f94fc33b163f8) )
751   ROM_LOAD16_BYTE( "olv111tw.u9",     0x100000, 0x080000, CRC(6d9d29b4) SHA1(29a18de7e5b58c2f3125d6dc9cc8a8186180e956) )
753   ROM_LOAD16_BYTE( "olv111tw.u8",     0x100000, 0x080000, CRC(6d9d29b4) SHA1(29a18de7e5b58c2f3125d6dc9cc8a8186180e956) )
752754   ROM_LOAD16_BYTE( "olv111tw.u7",     0x200001, 0x080000, CRC(27628e87) SHA1(a0effd83dc57ac72ba4f110737a075705d78e798) )
753   ROM_LOAD16_BYTE( "olv111tw.u11",    0x200000, 0x080000, CRC(23f33bc9) SHA1(f24490370d40d905afe8b716a3953b4e9f0aada4) )
755   ROM_LOAD16_BYTE( "olv111tw.u9",     0x200000, 0x080000, CRC(23f33bc9) SHA1(f24490370d40d905afe8b716a3953b4e9f0aada4) )
754756
755757   ROM_REGION( 0x800000, "tiles",  0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
756758   PGM_VIDEO_BIOS
757   ROM_LOAD( "t0100.u8",     0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
759   ROM_LOAD( "t0100.rom",    0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
758760
759761   ROM_REGION( 0x1800000, "sprcol", 0 ) /* Sprite Colour Data */
760   ROM_LOAD( "a0100.u5",     0x0000000, 0x400000, CRC(8b3bd88a) SHA1(42db3a60c6ba9d83ebe2008c8047d094027f65a7) )
761   ROM_LOAD( "a0101.u6",     0x0400000, 0x400000, CRC(3b9e9644) SHA1(5b95ec1d25c3bc3504c93547f5adb5ce24376405) )
762   ROM_LOAD( "a0102.u7",     0x0800000, 0x400000, CRC(069e2c38) SHA1(9bddca8c2f5bd80f4abe4e1f062751736dc151dd) )
763   ROM_LOAD( "a0103.u8",     0x0c00000, 0x400000, CRC(4460a3fd) SHA1(cbebdb65c17605853f7d0b298018dd8801a25a58) )
764   ROM_LOAD( "a0104.u11",    0x1000000, 0x400000, CRC(5f8abb56) SHA1(6c1ddc0309862a141aa0c0f63b641aec9257aaee) )
765   ROM_LOAD( "a0105.u12",    0x1400000, 0x400000, CRC(a17a7147) SHA1(44eeb43c6b0ebb829559a20ae357383fbdeecd82) )
762   ROM_LOAD( "a0100.rom",    0x0000000, 0x400000, CRC(8b3bd88a) SHA1(42db3a60c6ba9d83ebe2008c8047d094027f65a7) )
763   ROM_LOAD( "a0101.rom",    0x0400000, 0x400000, CRC(3b9e9644) SHA1(5b95ec1d25c3bc3504c93547f5adb5ce24376405) )
764   ROM_LOAD( "a0102.rom",    0x0800000, 0x400000, CRC(069e2c38) SHA1(9bddca8c2f5bd80f4abe4e1f062751736dc151dd) )
765   ROM_LOAD( "a0103.rom",    0x0c00000, 0x400000, CRC(4460a3fd) SHA1(cbebdb65c17605853f7d0b298018dd8801a25a58) )
766   ROM_LOAD( "a0104.rom",    0x1000000, 0x400000, CRC(5f8abb56) SHA1(6c1ddc0309862a141aa0c0f63b641aec9257aaee) )
767   ROM_LOAD( "a0105.rom",    0x1400000, 0x400000, CRC(a17a7147) SHA1(44eeb43c6b0ebb829559a20ae357383fbdeecd82) )
766768
767769   ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
768   ROM_LOAD( "b0100.u9",     0x0000000, 0x400000, CRC(69d2e48c) SHA1(5b5f759007264c07b3b39be8e03a713698e1fc2a) )
769   ROM_LOAD( "b0101.u10",    0x0400000, 0x400000, CRC(0d587bf3) SHA1(5347828b0a6e4ddd7a263663d2c2604407e4d49c) )
770   ROM_LOAD( "b0102.u15",    0x0800000, 0x400000, CRC(43823c1e) SHA1(e10a1a9a81b51b11044934ff702e35d8d7ab1b08) )
770   ROM_LOAD( "b0100.rom",    0x0000000, 0x400000, CRC(69d2e48c) SHA1(5b5f759007264c07b3b39be8e03a713698e1fc2a) )
771   ROM_LOAD( "b0101.rom",    0x0400000, 0x400000, CRC(0d587bf3) SHA1(5347828b0a6e4ddd7a263663d2c2604407e4d49c) )
772   ROM_LOAD( "b0102.rom",    0x0800000, 0x400000, CRC(43823c1e) SHA1(e10a1a9a81b51b11044934ff702e35d8d7ab1b08) )
771773
772774   ROM_REGION( 0x600000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
773775   PGM_AUDIO_BIOS
774   ROM_LOAD( "m0100.u1",     0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
776   ROM_LOAD( "m0100.rom",    0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
775777ROM_END
776778
777ROM_START( orlegend111k )
778   ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code  */
779   PGM_68K_BIOS
780   ROM_LOAD16_BYTE( "olv111ko.u6",     0x100001, 0x080000, CRC(1ff35baa) SHA1(f6791cc37ea468d0154b0e31a99f6f33a74bca81) )
781   ROM_LOAD16_BYTE( "olv111ko.u9",     0x100000, 0x080000, CRC(87b6d202) SHA1(32828166a645158630f79e7d493a2774e69bc265) )
782   ROM_LOAD16_BYTE( "olv111ko.u7",     0x200001, 0x080000, CRC(27628e87) SHA1(a0effd83dc57ac72ba4f110737a075705d78e798) )
783   ROM_LOAD16_BYTE( "olv111ko.u11",    0x200000, 0x080000, CRC(23f33bc9) SHA1(f24490370d40d905afe8b716a3953b4e9f0aada4) )
784
785   ROM_REGION( 0x800000, "tiles",  0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
786   PGM_VIDEO_BIOS
787   ROM_LOAD( "t0100.u8",     0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
788
789   ROM_REGION( 0x1800000, "sprcol", 0 ) /* Sprite Colour Data */
790   ROM_LOAD( "a0100.u5",     0x0000000, 0x400000, CRC(8b3bd88a) SHA1(42db3a60c6ba9d83ebe2008c8047d094027f65a7) )
791   ROM_LOAD( "a0101.u6",     0x0400000, 0x400000, CRC(3b9e9644) SHA1(5b95ec1d25c3bc3504c93547f5adb5ce24376405) )
792   ROM_LOAD( "a0102.u7",     0x0800000, 0x400000, CRC(069e2c38) SHA1(9bddca8c2f5bd80f4abe4e1f062751736dc151dd) )
793   ROM_LOAD( "a0103.u8",     0x0c00000, 0x400000, CRC(4460a3fd) SHA1(cbebdb65c17605853f7d0b298018dd8801a25a58) )
794   ROM_LOAD( "a0104.u11",    0x1000000, 0x400000, CRC(5f8abb56) SHA1(6c1ddc0309862a141aa0c0f63b641aec9257aaee) )
795   ROM_LOAD( "a0105.u12",    0x1400000, 0x400000, CRC(a17a7147) SHA1(44eeb43c6b0ebb829559a20ae357383fbdeecd82) )
796
797   ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
798   ROM_LOAD( "b0100.u9",     0x0000000, 0x400000, CRC(69d2e48c) SHA1(5b5f759007264c07b3b39be8e03a713698e1fc2a) )
799   ROM_LOAD( "b0101.u10",    0x0400000, 0x400000, CRC(0d587bf3) SHA1(5347828b0a6e4ddd7a263663d2c2604407e4d49c) )
800   ROM_LOAD( "b0102.u15",    0x0800000, 0x400000, CRC(43823c1e) SHA1(e10a1a9a81b51b11044934ff702e35d8d7ab1b08) )
801
802   ROM_REGION( 0x600000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
803   PGM_AUDIO_BIOS
804   ROM_LOAD( "m0100.u1",     0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
805ROM_END
806
807779/*
808780
809781Oriental Legend / Xi You Shi E Zhuan (KOREA 105 Ver.)
r249188r249189
813785IGS PCB NO-0134-2
814786IGS PCB NO-0135
815787
788
816789OLV105KO.U11 [40ae4d9e]
817790OLV105KO.U6  [b86703fe]
818791OLV105KO.U7  [5712facc]
r249188r249189
820793
821794T0100.U8
822795
796
823797A0100.U5
824798A0101.U6
825799A0102.U7
r249188r249189
845819
846820   ROM_REGION( 0x800000, "tiles",  0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
847821   PGM_VIDEO_BIOS
848   ROM_LOAD( "t0100.u8",     0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
822   ROM_LOAD( "t0100.rom",    0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
849823
850824   ROM_REGION( 0x1800000, "sprcol", 0 ) /* Sprite Colour Data */
851   ROM_LOAD( "a0100.u5",     0x0000000, 0x400000, CRC(8b3bd88a) SHA1(42db3a60c6ba9d83ebe2008c8047d094027f65a7) )
852   ROM_LOAD( "a0101.u6",     0x0400000, 0x400000, CRC(3b9e9644) SHA1(5b95ec1d25c3bc3504c93547f5adb5ce24376405) )
853   ROM_LOAD( "a0102.u7",     0x0800000, 0x400000, CRC(069e2c38) SHA1(9bddca8c2f5bd80f4abe4e1f062751736dc151dd) )
854   ROM_LOAD( "a0103.u8",     0x0c00000, 0x400000, CRC(4460a3fd) SHA1(cbebdb65c17605853f7d0b298018dd8801a25a58) )
855   ROM_LOAD( "a0104.u11",    0x1000000, 0x400000, CRC(5f8abb56) SHA1(6c1ddc0309862a141aa0c0f63b641aec9257aaee) )
856   ROM_LOAD( "a0105.u12",    0x1400000, 0x400000, CRC(a17a7147) SHA1(44eeb43c6b0ebb829559a20ae357383fbdeecd82) )
825   ROM_LOAD( "a0100.rom",    0x0000000, 0x400000, CRC(8b3bd88a) SHA1(42db3a60c6ba9d83ebe2008c8047d094027f65a7) )
826   ROM_LOAD( "a0101.rom",    0x0400000, 0x400000, CRC(3b9e9644) SHA1(5b95ec1d25c3bc3504c93547f5adb5ce24376405) )
827   ROM_LOAD( "a0102.rom",    0x0800000, 0x400000, CRC(069e2c38) SHA1(9bddca8c2f5bd80f4abe4e1f062751736dc151dd) )
828   ROM_LOAD( "a0103.rom",    0x0c00000, 0x400000, CRC(4460a3fd) SHA1(cbebdb65c17605853f7d0b298018dd8801a25a58) )
829   ROM_LOAD( "a0104.rom",    0x1000000, 0x400000, CRC(5f8abb56) SHA1(6c1ddc0309862a141aa0c0f63b641aec9257aaee) )
830   ROM_LOAD( "a0105.rom",    0x1400000, 0x400000, CRC(a17a7147) SHA1(44eeb43c6b0ebb829559a20ae357383fbdeecd82) )
857831
858832   ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
859   ROM_LOAD( "b0100.u9",     0x0000000, 0x400000, CRC(69d2e48c) SHA1(5b5f759007264c07b3b39be8e03a713698e1fc2a) )
860   ROM_LOAD( "b0101.u10",    0x0400000, 0x400000, CRC(0d587bf3) SHA1(5347828b0a6e4ddd7a263663d2c2604407e4d49c) )
861   ROM_LOAD( "b0102.u15",    0x0800000, 0x400000, CRC(43823c1e) SHA1(e10a1a9a81b51b11044934ff702e35d8d7ab1b08) )
833   ROM_LOAD( "b0100.rom",    0x0000000, 0x400000, CRC(69d2e48c) SHA1(5b5f759007264c07b3b39be8e03a713698e1fc2a) )
834   ROM_LOAD( "b0101.rom",    0x0400000, 0x400000, CRC(0d587bf3) SHA1(5347828b0a6e4ddd7a263663d2c2604407e4d49c) )
835   ROM_LOAD( "b0102.rom",    0x0800000, 0x400000, CRC(43823c1e) SHA1(e10a1a9a81b51b11044934ff702e35d8d7ab1b08) )
862836
863837   ROM_REGION( 0x600000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
864838   PGM_AUDIO_BIOS
865   ROM_LOAD( "m0100.u1",     0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
839   ROM_LOAD( "m0100.rom",    0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
866840ROM_END
867841
868842/*
r249188r249189
32063180   ROM_LOAD( "dmnfrnt_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
32073181
32083182   ROM_REGION( 0x800000, "user1", 0 ) /* Protection Data (encrypted external ARM data, internal missing) */
3209   ROM_LOAD( "v105_32m.u26", 0x000000, 0x400000,  CRC(c798c2ef) SHA1(91e364c33b935293fa765ca521cdb67ac45ec70f) )
3183   /* one of these is probably a bad dump, it should be obvious once progress is made because the external rom is checksummed by the internal one */
3184   ROM_LOAD( "v105_32m.u26",     0x000000, 0x400000,  CRC(d200ee63) SHA1(3128c27c5f5a4361d31e7b4bb006de631b3a228c) )
3185   ROM_LOAD( "chinese-v105.u62", 0x000000, 0x400000,  CRC(c798c2ef) SHA1(91e364c33b935293fa765ca521cdb67ac45ec70f) )
32103186
32113187   ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
32123188   PGM_VIDEO_BIOS
r249188r249189
42024178   -----------------------------------------------------------------------------------------------------------------------*/
42034179
42044180// the version numbering on these is a mess... date strings from ROM (and in some cases even those are missing..)
4205GAME( 1997, orlegend,     pgm,       pgm_asic3,     orlegend, pgm_asic3_state, orlegend,   ROT0,   "IGS", "Oriental Legend / Xi You Shi E Zhuan (ver. 126)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )                 // V0001 01/14/98 18:16:38 - runs as World
4206GAME( 1997, orlegende,    orlegend,  pgm_asic3,     orlegend, pgm_asic3_state, orlegend,   ROT0,   "IGS", "Oriental Legend / Xi You Shi E Zhuan (ver. 112)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )                 // V0001 07/14/97 11:19:45 - runs as World
4207GAME( 1997, orlegendc,    orlegend,  pgm_asic3,     orlegend, pgm_asic3_state, orlegend,   ROT0,   "IGS", "Oriental Legend / Xi You Shi E Zhuan (ver. 112, Chinese Board)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )  // V0001 05/05/97 10:08:21 - runs as World, Korea, China
4208GAME( 1997, orlegendca,   orlegend,  pgm_asic3,     orlegend, pgm_asic3_state, orlegend,   ROT0,   "IGS", "Oriental Legend / Xi You Shi E Zhuan (ver. ???, Chinese Board)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )  // V0001 04/02/97 13:35:43 - runs as HongKong, China, China
4209GAME( 1997, orlegend111c, orlegend,  pgm_asic3,     orlegend, pgm_asic3_state, orlegend,   ROT0,   "IGS", "Oriental Legend / Xi You Shi E Zhuan (ver. 111, Chinese Board)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )  // V0001 no date!          - runs as HongKong, China, China
4181GAME( 1997, orlegend,     pgm,       pgm_asic3,     orlegend, pgm_asic3_state, orlegend,   ROT0,   "IGS", "Oriental Legend / Xi You Shi E Zhuan (ver. 126)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )                // V0001 01/14/98 18:16:38 - runs as World
4182GAME( 1997, orlegende,    orlegend,  pgm_asic3,     orlegend, pgm_asic3_state, orlegend,   ROT0,   "IGS", "Oriental Legend / Xi You Shi E Zhuan (ver. 112)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )                // V0001 07/14/97 11:19:45 - runs as World
4183GAME( 1997, orlegendc,    orlegend,  pgm_asic3,     orlegend, pgm_asic3_state, orlegend,   ROT0,   "IGS", "Oriental Legend / Xi You Shi E Zhuan (ver. 112, Chinese Board)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // V0001 05/05/97 10:08:21 - runs as World, Korea, China
4184GAME( 1997, orlegendca,   orlegend,  pgm_asic3,     orlegend, pgm_asic3_state, orlegend,   ROT0,   "IGS", "Oriental Legend / Xi You Shi E Zhuan (ver. ???, Chinese Board)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // V0001 04/02/97 13:35:43 - runs as HongKong, China, China
4185GAME( 1997, orlegend111c, orlegend,  pgm_asic3,     orlegend, pgm_asic3_state, orlegend,   ROT0,   "IGS", "Oriental Legend / Xi You Shi E Zhuan (ver. 111, Chinese Board)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // V0001 no date!          - runs as HongKong, China, China
42104186GAME( 1997, orlegend111t, orlegend,  pgm_asic3,     orlegendt,pgm_asic3_state, orlegend,   ROT0,   "IGS", "Oriental Legend / Xi You Shi E Zhuan (ver. 111, Taiwanese Board)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )// V0001 no date! - needs a different protection sequence
4211GAME( 1997, orlegend111k, orlegend,  pgm_asic3,     orlegendk,pgm_asic3_state, orlegend,   ROT0,   "IGS", "Oriental Legend / Xi You Shi E Zhuan (ver. 111, Korean Board)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )   // not checked
4212GAME( 1997, orlegend105k, orlegend,  pgm_asic3,     orlegendk,pgm_asic3_state, orlegend,   ROT0,   "IGS", "Oriental Legend / Xi You Shi E Zhuan (ver. 105, Korean Board)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )  //  V0000 no date!          - runs as Korea
4187GAME( 1997, orlegend105k, orlegend,  pgm_asic3,     orld105k, pgm_asic3_state, orlegend,   ROT0,   "IGS", "Oriental Legend / Xi You Shi E Zhuan (ver. 105, Korean Board)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )  // V0000 no date!          - runs as Korea
42134188
42144189GAME( 1997, drgw2,        pgm,       pgm_012_025_drgw2,     pgm, pgm_012_025_state,      drgw2,      ROT0,   "IGS", "Dragon World II (ver. 110X, Export)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
42154190GAME( 1997, dw2v100x,     drgw2,     pgm_012_025_drgw2,     pgm, pgm_012_025_state,      dw2v100x,   ROT0,   "IGS", "Dragon World II (ver. 100X, Export)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
trunk/src/mame/drivers/segaxbd.c
r249188r249189
33883388//  Custom Chip 315-5304 (IC 127)
33893389//  IC BD Number: 834-7626-03 (roms are "MPR") / 834-7626-05 (roms are "EPR")
33903390//
3391ROM_START( gpriders )
3391ROM_START( gprider )
33923392   ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code
33933393   ROM_LOAD16_BYTE( "epr-13409.ic58", 0x00000, 0x20000, CRC(9abb81b6) SHA1(f6308f3ec99ee66677e86f6a915e4dff8557d25f) )
33943394   ROM_LOAD16_BYTE( "epr-13408.ic63", 0x00001, 0x20000, CRC(8e410e97) SHA1(2021d738064e57d175b59ba053d9ee35ed4516c8) )
r249188r249189
34383438ROM_END
34393439
34403440// Twin setup
3441ROM_START( gprider )
3441ROM_START( gpridert )
34423442   ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code
34433443   ROM_LOAD16_BYTE( "epr-13409.ic58", 0x00000, 0x20000, CRC(9abb81b6) SHA1(f6308f3ec99ee66677e86f6a915e4dff8557d25f) )
34443444   ROM_LOAD16_BYTE( "epr-13408.ic63", 0x00001, 0x20000, CRC(8e410e97) SHA1(2021d738064e57d175b59ba053d9ee35ed4516c8) )
r249188r249189
35413541//  Custom Chip 315-5304 (IC 127)
35423542//  IC BD Number: 834-7626-01 (roms are "MPR") / 834-7626-04 (roms are "EPR")
35433543//
3544ROM_START( gpriderus )
3545   ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code
3546   ROM_LOAD16_BYTE( "epr-13407.ic58", 0x00000, 0x20000, CRC(03553ebd) SHA1(041a71a2dce2ad56360f500cb11e29a629020160) )
3547   ROM_LOAD16_BYTE( "epr-13406.ic63", 0x00001, 0x20000, CRC(122c711f) SHA1(2bcc51347e771a7e7f770e68b24d82497d24aa2e) )
3548
3549   ROM_REGION( 0x2000, "mainpcb:maincpu:key", 0 )  // decryption key
3550   ROM_LOAD( "317-0162.key", 0x0000, 0x2000, CRC(8067de53) SHA1(e8cd1dfbad94856c6bd51569557667e72f0a5dd4) )
3551
3552   ROM_REGION( 0x80000, "mainpcb:subcpu", 0 ) // 2nd 68000 code
3553   ROM_LOAD16_BYTE( "epr-13395.ic20", 0x00000, 0x20000,CRC(d6ccfac7) SHA1(9287ab08600163a0d9bd33618c629f99391316bd) )
3554   ROM_LOAD16_BYTE( "epr-13394.ic29", 0x00001, 0x20000,CRC(914a55ec) SHA1(84fe1df12478990418b46b6800425e5599e9eff9) )
3555   ROM_LOAD16_BYTE( "epr-13393.ic21", 0x40000, 0x20000,CRC(08d023cc) SHA1(d008d57e494f484a1a84896065d53fb9b1d8d60e) )
3556   ROM_LOAD16_BYTE( "epr-13392.ic30", 0x40001, 0x20000,CRC(f927cd42) SHA1(67eab328c1fb878fe3d086d0639f5051b135a037) )
3557
3558   ROM_REGION( 0x30000, "mainpcb:gfx1", 0 ) // tiles
3559   ROM_LOAD( "epr-13383.ic154", 0x00000, 0x10000, CRC(24f897a7) SHA1(68ba17067d90f07bb5a549017be4773b33ae81d0) )
3560   ROM_LOAD( "epr-13384.ic153", 0x10000, 0x10000, CRC(fe8238bd) SHA1(601910bd86536e6b08f5308b298c8f01fa60f233) )
3561   ROM_LOAD( "epr-13385.ic152", 0x20000, 0x10000, CRC(6df1b995) SHA1(5aab19b87a9ef162c30ccf5974cb795e37dba91f) )
3562
3563   ROM_REGION32_LE( 0x200000, "mainpcb:sprites", 0 ) // sprites
3564   ROM_LOAD32_BYTE( "epr-13382.ic90",  0x000000, 0x20000, CRC(01dac209) SHA1(4c6b03308193c472f6cdbcede306f8ce6db0cc4b) )
3565   ROM_LOAD32_BYTE( "epr-13381.ic94",  0x000001, 0x20000, CRC(3a50d931) SHA1(9d9cb1793f3b8f562ce0ea49f2afeef099f20859) )
3566   ROM_LOAD32_BYTE( "epr-13380.ic98",  0x000002, 0x20000, CRC(ad1024c8) SHA1(86e941424b2e2e00940886e5daed640a78ed7403) )
3567   ROM_LOAD32_BYTE( "epr-13379.ic102", 0x000003, 0x20000, CRC(1ac17625) SHA1(7aefd382041dd3f97936ecb8738a3f2c9780c58f) )
3568   ROM_LOAD32_BYTE( "epr-13378.ic91",  0x080000, 0x20000, CRC(50c9b867) SHA1(dd9702b369ea8abd50da22ce721b7040428e9d4b) )
3569   ROM_LOAD32_BYTE( "epr-13377.ic95",  0x080001, 0x20000, CRC(9b12f5c0) SHA1(2060420611b3354974c49bc80f556f945512570b) )
3570   ROM_LOAD32_BYTE( "epr-13376.ic99",  0x080002, 0x20000, CRC(449ac518) SHA1(0438a72e53a7889d39ea7e2530e49a2594d97e90) )
3571   ROM_LOAD32_BYTE( "epr-13375.ic103", 0x080003, 0x20000, CRC(5489a9ff) SHA1(c458cb55d957edae340535f54189438296f3ec2f) )
3572   ROM_LOAD32_BYTE( "epr-13374.ic92",  0x100000, 0x20000, CRC(6a319e4f) SHA1(d9f92b15f4baa14745048073205add35b7d42d27) )
3573   ROM_LOAD32_BYTE( "epr-13373.ic96",  0x100001, 0x20000, CRC(eca5588b) SHA1(11def0c293868193d457958fe7459fd8c31dbd2b) )
3574   ROM_LOAD32_BYTE( "epr-13372.ic100", 0x100002, 0x20000, CRC(0b45a433) SHA1(82fa2b208eaf70b70524681fbc3ec70085e70d83) )
3575   ROM_LOAD32_BYTE( "epr-13371.ic104", 0x100003, 0x20000, CRC(b68f4cff) SHA1(166f2a685cbc230c098fdc1646b6e632dd2b09dd) )
3576   ROM_LOAD32_BYTE( "epr-13370.ic93",  0x180000, 0x20000, CRC(78276620) SHA1(2c4505c57a1e765f9cfd48fb1637d67d199a2f1d) )
3577   ROM_LOAD32_BYTE( "epr-13369.ic97",  0x180001, 0x20000, CRC(8625bf0f) SHA1(0ae70bc0d54e25eecf4a11cf0600225dca35914d) )
3578   ROM_LOAD32_BYTE( "epr-13368.ic101", 0x180002, 0x20000, CRC(0f50716c) SHA1(eb4c7f47e11c58fe0d58f67e6dafabc6291eabb8) )
3579   ROM_LOAD32_BYTE( "epr-13367.ic105", 0x180003, 0x20000, CRC(4b1bb51f) SHA1(17fd5ac9e18dd6097a015e9d7b6815826f9c53f1) )
3580
3581   ROM_REGION( 0x10000, "mainpcb:gfx3", ROMREGION_ERASE00 ) // road gfx
3582   // none??
3583
3584   ROM_REGION( 0x10000, "mainpcb:soundcpu", 0 ) // sound CPU
3585   ROM_LOAD( "epr-13388.ic17",    0x00000, 0x10000, CRC(706581e4) SHA1(51c9dbf2bf0d6b8826de24cd33596f5c95136870) )
3586
3587   ROM_REGION( 0x80000, "mainpcb:pcm", ROMREGION_ERASEFF ) // Sega PCM sound data
3588   ROM_LOAD( "epr-13391.ic11",    0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) )
3589   ROM_LOAD( "epr-13390.ic12",    0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) )
3590   ROM_LOAD( "epr-13389.ic13",    0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) )
3591ROM_END
3592
3593// twin setup
35943544ROM_START( gprideru )
35953545   ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code
35963546   ROM_LOAD16_BYTE( "epr-13407.ic58", 0x00000, 0x20000, CRC(03553ebd) SHA1(041a71a2dce2ad56360f500cb11e29a629020160) )
r249188r249189
36383588   ROM_LOAD( "epr-13391.ic11",    0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) )
36393589   ROM_LOAD( "epr-13390.ic12",    0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) )
36403590   ROM_LOAD( "epr-13389.ic13",    0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) )
3641
3642   ROM_REGION( 0x80000, "subpcb:maincpu", 0 ) // 68000 code
3643   ROM_LOAD16_BYTE( "epr-13407.ic58", 0x00000, 0x20000, CRC(03553ebd) SHA1(041a71a2dce2ad56360f500cb11e29a629020160) )
3644   ROM_LOAD16_BYTE( "epr-13406.ic63", 0x00001, 0x20000, CRC(122c711f) SHA1(2bcc51347e771a7e7f770e68b24d82497d24aa2e) )
3645
3646   ROM_REGION( 0x2000, "subpcb:maincpu:key", 0 )  // decryption key
3647   ROM_LOAD( "317-0162.key", 0x0000, 0x2000, CRC(8067de53) SHA1(e8cd1dfbad94856c6bd51569557667e72f0a5dd4) )
3648
3649   ROM_REGION( 0x80000, "subpcb:subcpu", 0 ) // 2nd 68000 code
3650   ROM_LOAD16_BYTE( "epr-13395.ic20", 0x00000, 0x20000,CRC(d6ccfac7) SHA1(9287ab08600163a0d9bd33618c629f99391316bd) )
3651   ROM_LOAD16_BYTE( "epr-13394.ic29", 0x00001, 0x20000,CRC(914a55ec) SHA1(84fe1df12478990418b46b6800425e5599e9eff9) )
3652   ROM_LOAD16_BYTE( "epr-13393.ic21", 0x40000, 0x20000,CRC(08d023cc) SHA1(d008d57e494f484a1a84896065d53fb9b1d8d60e) )
3653   ROM_LOAD16_BYTE( "epr-13392.ic30", 0x40001, 0x20000,CRC(f927cd42) SHA1(67eab328c1fb878fe3d086d0639f5051b135a037) )
3654
3655   ROM_REGION( 0x30000, "subpcb:gfx1", 0 ) // tiles
3656   ROM_LOAD( "epr-13383.ic154", 0x00000, 0x10000, CRC(24f897a7) SHA1(68ba17067d90f07bb5a549017be4773b33ae81d0) )
3657   ROM_LOAD( "epr-13384.ic153", 0x10000, 0x10000, CRC(fe8238bd) SHA1(601910bd86536e6b08f5308b298c8f01fa60f233) )
3658   ROM_LOAD( "epr-13385.ic152", 0x20000, 0x10000, CRC(6df1b995) SHA1(5aab19b87a9ef162c30ccf5974cb795e37dba91f) )
3659
3660   ROM_REGION32_LE( 0x200000, "subpcb:sprites", 0 ) // sprites
3661   ROM_LOAD32_BYTE( "epr-13382.ic90",  0x000000, 0x20000, CRC(01dac209) SHA1(4c6b03308193c472f6cdbcede306f8ce6db0cc4b) )
3662   ROM_LOAD32_BYTE( "epr-13381.ic94",  0x000001, 0x20000, CRC(3a50d931) SHA1(9d9cb1793f3b8f562ce0ea49f2afeef099f20859) )
3663   ROM_LOAD32_BYTE( "epr-13380.ic98",  0x000002, 0x20000, CRC(ad1024c8) SHA1(86e941424b2e2e00940886e5daed640a78ed7403) )
3664   ROM_LOAD32_BYTE( "epr-13379.ic102", 0x000003, 0x20000, CRC(1ac17625) SHA1(7aefd382041dd3f97936ecb8738a3f2c9780c58f) )
3665   ROM_LOAD32_BYTE( "epr-13378.ic91",  0x080000, 0x20000, CRC(50c9b867) SHA1(dd9702b369ea8abd50da22ce721b7040428e9d4b) )
3666   ROM_LOAD32_BYTE( "epr-13377.ic95",  0x080001, 0x20000, CRC(9b12f5c0) SHA1(2060420611b3354974c49bc80f556f945512570b) )
3667   ROM_LOAD32_BYTE( "epr-13376.ic99",  0x080002, 0x20000, CRC(449ac518) SHA1(0438a72e53a7889d39ea7e2530e49a2594d97e90) )
3668   ROM_LOAD32_BYTE( "epr-13375.ic103", 0x080003, 0x20000, CRC(5489a9ff) SHA1(c458cb55d957edae340535f54189438296f3ec2f) )
3669   ROM_LOAD32_BYTE( "epr-13374.ic92",  0x100000, 0x20000, CRC(6a319e4f) SHA1(d9f92b15f4baa14745048073205add35b7d42d27) )
3670   ROM_LOAD32_BYTE( "epr-13373.ic96",  0x100001, 0x20000, CRC(eca5588b) SHA1(11def0c293868193d457958fe7459fd8c31dbd2b) )
3671   ROM_LOAD32_BYTE( "epr-13372.ic100", 0x100002, 0x20000, CRC(0b45a433) SHA1(82fa2b208eaf70b70524681fbc3ec70085e70d83) )
3672   ROM_LOAD32_BYTE( "epr-13371.ic104", 0x100003, 0x20000, CRC(b68f4cff) SHA1(166f2a685cbc230c098fdc1646b6e632dd2b09dd) )
3673   ROM_LOAD32_BYTE( "epr-13370.ic93",  0x180000, 0x20000, CRC(78276620) SHA1(2c4505c57a1e765f9cfd48fb1637d67d199a2f1d) )
3674   ROM_LOAD32_BYTE( "epr-13369.ic97",  0x180001, 0x20000, CRC(8625bf0f) SHA1(0ae70bc0d54e25eecf4a11cf0600225dca35914d) )
3675   ROM_LOAD32_BYTE( "epr-13368.ic101", 0x180002, 0x20000, CRC(0f50716c) SHA1(eb4c7f47e11c58fe0d58f67e6dafabc6291eabb8) )
3676   ROM_LOAD32_BYTE( "epr-13367.ic105", 0x180003, 0x20000, CRC(4b1bb51f) SHA1(17fd5ac9e18dd6097a015e9d7b6815826f9c53f1) )
3677
3678   ROM_REGION( 0x10000, "subpcb:gfx3", ROMREGION_ERASE00 ) // road gfx
3679   // none??
3680
3681   ROM_REGION( 0x10000, "subpcb:soundcpu", 0 ) // sound CPU
3682   ROM_LOAD( "epr-13388.ic17",    0x00000, 0x10000, CRC(706581e4) SHA1(51c9dbf2bf0d6b8826de24cd33596f5c95136870) )
3683
3684   ROM_REGION( 0x80000, "subpcb:pcm", ROMREGION_ERASEFF ) // Sega PCM sound data
3685   ROM_LOAD( "epr-13391.ic11",    0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) )
3686   ROM_LOAD( "epr-13390.ic12",    0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) )
3687   ROM_LOAD( "epr-13389.ic13",    0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) )
36883591ROM_END
36893592
36903593//*************************************************************************************************************************
r249188r249189
36933596//  Custom Chip 315-5304 (IC 127)
36943597//  IC BD Number: 834-7626-01 (roms are "MPR") / 834-7626-04 (roms are "EPR")
36953598//
3696ROM_START( gpriderjs )
3697   ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code
3698   ROM_LOAD16_BYTE( "epr-13387.ic58", 0x00000, 0x20000, CRC(a1e8b2c5) SHA1(22b70a9074263af808bb9dffee29cbcff7e304e3) )
3699   ROM_LOAD16_BYTE( "epr-13386.ic63", 0x00001, 0x20000, CRC(d8be9e66) SHA1(d81c03b08fd6b971554b94e0adac131a1dcf3248) )
3700
3701   ROM_REGION( 0x2000, "mainpcb:maincpu:key", 0 )  // decryption key
3702   ROM_LOAD( "317-0161.key", 0x0000, 0x2000, CRC(e38ddc16) SHA1(d1f7f261320cbc605b4f7e5a9c28f49af5471d87) )
3703
3704   ROM_REGION( 0x80000, "mainpcb:subcpu", 0 ) // 2nd 68000 code
3705   ROM_LOAD16_BYTE( "epr-13395.ic20", 0x00000, 0x20000,CRC(d6ccfac7) SHA1(9287ab08600163a0d9bd33618c629f99391316bd) )
3706   ROM_LOAD16_BYTE( "epr-13394.ic29", 0x00001, 0x20000,CRC(914a55ec) SHA1(84fe1df12478990418b46b6800425e5599e9eff9) )
3707   ROM_LOAD16_BYTE( "epr-13393.ic21", 0x40000, 0x20000,CRC(08d023cc) SHA1(d008d57e494f484a1a84896065d53fb9b1d8d60e) )
3708   ROM_LOAD16_BYTE( "epr-13392.ic30", 0x40001, 0x20000,CRC(f927cd42) SHA1(67eab328c1fb878fe3d086d0639f5051b135a037) )
3709
3710   ROM_REGION( 0x30000, "mainpcb:gfx1", 0 ) // tiles
3711   ROM_LOAD( "epr-13383.ic154", 0x00000, 0x10000, CRC(24f897a7) SHA1(68ba17067d90f07bb5a549017be4773b33ae81d0) )
3712   ROM_LOAD( "epr-13384.ic153", 0x10000, 0x10000, CRC(fe8238bd) SHA1(601910bd86536e6b08f5308b298c8f01fa60f233) )
3713   ROM_LOAD( "epr-13385.ic152", 0x20000, 0x10000, CRC(6df1b995) SHA1(5aab19b87a9ef162c30ccf5974cb795e37dba91f) )
3714
3715   ROM_REGION32_LE( 0x200000, "mainpcb:sprites", 0 ) // sprites
3716   ROM_LOAD32_BYTE( "epr-13382.ic90",  0x000000, 0x20000, CRC(01dac209) SHA1(4c6b03308193c472f6cdbcede306f8ce6db0cc4b) )
3717   ROM_LOAD32_BYTE( "epr-13381.ic94",  0x000001, 0x20000, CRC(3a50d931) SHA1(9d9cb1793f3b8f562ce0ea49f2afeef099f20859) )
3718   ROM_LOAD32_BYTE( "epr-13380.ic98",  0x000002, 0x20000, CRC(ad1024c8) SHA1(86e941424b2e2e00940886e5daed640a78ed7403) )
3719   ROM_LOAD32_BYTE( "epr-13379.ic102", 0x000003, 0x20000, CRC(1ac17625) SHA1(7aefd382041dd3f97936ecb8738a3f2c9780c58f) )
3720   ROM_LOAD32_BYTE( "epr-13378.ic91",  0x080000, 0x20000, CRC(50c9b867) SHA1(dd9702b369ea8abd50da22ce721b7040428e9d4b) )
3721   ROM_LOAD32_BYTE( "epr-13377.ic95",  0x080001, 0x20000, CRC(9b12f5c0) SHA1(2060420611b3354974c49bc80f556f945512570b) )
3722   ROM_LOAD32_BYTE( "epr-13376.ic99",  0x080002, 0x20000, CRC(449ac518) SHA1(0438a72e53a7889d39ea7e2530e49a2594d97e90) )
3723   ROM_LOAD32_BYTE( "epr-13375.ic103", 0x080003, 0x20000, CRC(5489a9ff) SHA1(c458cb55d957edae340535f54189438296f3ec2f) )
3724   ROM_LOAD32_BYTE( "epr-13374.ic92",  0x100000, 0x20000, CRC(6a319e4f) SHA1(d9f92b15f4baa14745048073205add35b7d42d27) )
3725   ROM_LOAD32_BYTE( "epr-13373.ic96",  0x100001, 0x20000, CRC(eca5588b) SHA1(11def0c293868193d457958fe7459fd8c31dbd2b) )
3726   ROM_LOAD32_BYTE( "epr-13372.ic100", 0x100002, 0x20000, CRC(0b45a433) SHA1(82fa2b208eaf70b70524681fbc3ec70085e70d83) )
3727   ROM_LOAD32_BYTE( "epr-13371.ic104", 0x100003, 0x20000, CRC(b68f4cff) SHA1(166f2a685cbc230c098fdc1646b6e632dd2b09dd) )
3728   ROM_LOAD32_BYTE( "epr-13370.ic93",  0x180000, 0x20000, CRC(78276620) SHA1(2c4505c57a1e765f9cfd48fb1637d67d199a2f1d) )
3729   ROM_LOAD32_BYTE( "epr-13369.ic97",  0x180001, 0x20000, CRC(8625bf0f) SHA1(0ae70bc0d54e25eecf4a11cf0600225dca35914d) )
3730   ROM_LOAD32_BYTE( "epr-13368.ic101", 0x180002, 0x20000, CRC(0f50716c) SHA1(eb4c7f47e11c58fe0d58f67e6dafabc6291eabb8) )
3731   ROM_LOAD32_BYTE( "epr-13367.ic105", 0x180003, 0x20000, CRC(4b1bb51f) SHA1(17fd5ac9e18dd6097a015e9d7b6815826f9c53f1) )
3732
3733   ROM_REGION( 0x10000, "mainpcb:gfx3", ROMREGION_ERASE00 ) // road gfx
3734   // none??
3735
3736   ROM_REGION( 0x10000, "mainpcb:soundcpu", 0 ) // sound CPU
3737   ROM_LOAD( "epr-13388.ic17",    0x00000, 0x10000, CRC(706581e4) SHA1(51c9dbf2bf0d6b8826de24cd33596f5c95136870) )
3738
3739   ROM_REGION( 0x80000, "mainpcb:pcm", ROMREGION_ERASEFF ) // Sega PCM sound data
3740   ROM_LOAD( "epr-13391.ic11",    0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) )
3741   ROM_LOAD( "epr-13390.ic12",    0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) )
3742   ROM_LOAD( "epr-13389.ic13",    0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) )
3743ROM_END
3744
3745// twin setup
37463599ROM_START( gpriderj )
37473600   ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code
37483601   ROM_LOAD16_BYTE( "epr-13387.ic58", 0x00000, 0x20000, CRC(a1e8b2c5) SHA1(22b70a9074263af808bb9dffee29cbcff7e304e3) )
r249188r249189
37903643   ROM_LOAD( "epr-13391.ic11",    0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) )
37913644   ROM_LOAD( "epr-13390.ic12",    0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) )
37923645   ROM_LOAD( "epr-13389.ic13",    0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) )
3793
3794   ROM_REGION( 0x80000, "subpcb:maincpu", 0 ) // 68000 code
3795   ROM_LOAD16_BYTE( "epr-13387.ic58", 0x00000, 0x20000, CRC(a1e8b2c5) SHA1(22b70a9074263af808bb9dffee29cbcff7e304e3) )
3796   ROM_LOAD16_BYTE( "epr-13386.ic63", 0x00001, 0x20000, CRC(d8be9e66) SHA1(d81c03b08fd6b971554b94e0adac131a1dcf3248) )
3797
3798   ROM_REGION( 0x2000, "subpcb:maincpu:key", 0 )  // decryption key
3799   ROM_LOAD( "317-0161.key", 0x0000, 0x2000, CRC(e38ddc16) SHA1(d1f7f261320cbc605b4f7e5a9c28f49af5471d87) )
3800
3801   ROM_REGION( 0x80000, "subpcb:subcpu", 0 ) // 2nd 68000 code
3802   ROM_LOAD16_BYTE( "epr-13395.ic20", 0x00000, 0x20000,CRC(d6ccfac7) SHA1(9287ab08600163a0d9bd33618c629f99391316bd) )
3803   ROM_LOAD16_BYTE( "epr-13394.ic29", 0x00001, 0x20000,CRC(914a55ec) SHA1(84fe1df12478990418b46b6800425e5599e9eff9) )
3804   ROM_LOAD16_BYTE( "epr-13393.ic21", 0x40000, 0x20000,CRC(08d023cc) SHA1(d008d57e494f484a1a84896065d53fb9b1d8d60e) )
3805   ROM_LOAD16_BYTE( "epr-13392.ic30", 0x40001, 0x20000,CRC(f927cd42) SHA1(67eab328c1fb878fe3d086d0639f5051b135a037) )
3806
3807   ROM_REGION( 0x30000, "subpcb:gfx1", 0 ) // tiles
3808   ROM_LOAD( "epr-13383.ic154", 0x00000, 0x10000, CRC(24f897a7) SHA1(68ba17067d90f07bb5a549017be4773b33ae81d0) )
3809   ROM_LOAD( "epr-13384.ic153", 0x10000, 0x10000, CRC(fe8238bd) SHA1(601910bd86536e6b08f5308b298c8f01fa60f233) )
3810   ROM_LOAD( "epr-13385.ic152", 0x20000, 0x10000, CRC(6df1b995) SHA1(5aab19b87a9ef162c30ccf5974cb795e37dba91f) )
3811
3812   ROM_REGION32_LE( 0x200000, "subpcb:sprites", 0 ) // sprites
3813   ROM_LOAD32_BYTE( "epr-13382.ic90",  0x000000, 0x20000, CRC(01dac209) SHA1(4c6b03308193c472f6cdbcede306f8ce6db0cc4b) )
3814   ROM_LOAD32_BYTE( "epr-13381.ic94",  0x000001, 0x20000, CRC(3a50d931) SHA1(9d9cb1793f3b8f562ce0ea49f2afeef099f20859) )
3815   ROM_LOAD32_BYTE( "epr-13380.ic98",  0x000002, 0x20000, CRC(ad1024c8) SHA1(86e941424b2e2e00940886e5daed640a78ed7403) )
3816   ROM_LOAD32_BYTE( "epr-13379.ic102", 0x000003, 0x20000, CRC(1ac17625) SHA1(7aefd382041dd3f97936ecb8738a3f2c9780c58f) )
3817   ROM_LOAD32_BYTE( "epr-13378.ic91",  0x080000, 0x20000, CRC(50c9b867) SHA1(dd9702b369ea8abd50da22ce721b7040428e9d4b) )
3818   ROM_LOAD32_BYTE( "epr-13377.ic95",  0x080001, 0x20000, CRC(9b12f5c0) SHA1(2060420611b3354974c49bc80f556f945512570b) )
3819   ROM_LOAD32_BYTE( "epr-13376.ic99",  0x080002, 0x20000, CRC(449ac518) SHA1(0438a72e53a7889d39ea7e2530e49a2594d97e90) )
3820   ROM_LOAD32_BYTE( "epr-13375.ic103", 0x080003, 0x20000, CRC(5489a9ff) SHA1(c458cb55d957edae340535f54189438296f3ec2f) )
3821   ROM_LOAD32_BYTE( "epr-13374.ic92",  0x100000, 0x20000, CRC(6a319e4f) SHA1(d9f92b15f4baa14745048073205add35b7d42d27) )
3822   ROM_LOAD32_BYTE( "epr-13373.ic96",  0x100001, 0x20000, CRC(eca5588b) SHA1(11def0c293868193d457958fe7459fd8c31dbd2b) )
3823   ROM_LOAD32_BYTE( "epr-13372.ic100", 0x100002, 0x20000, CRC(0b45a433) SHA1(82fa2b208eaf70b70524681fbc3ec70085e70d83) )
3824   ROM_LOAD32_BYTE( "epr-13371.ic104", 0x100003, 0x20000, CRC(b68f4cff) SHA1(166f2a685cbc230c098fdc1646b6e632dd2b09dd) )
3825   ROM_LOAD32_BYTE( "epr-13370.ic93",  0x180000, 0x20000, CRC(78276620) SHA1(2c4505c57a1e765f9cfd48fb1637d67d199a2f1d) )
3826   ROM_LOAD32_BYTE( "epr-13369.ic97",  0x180001, 0x20000, CRC(8625bf0f) SHA1(0ae70bc0d54e25eecf4a11cf0600225dca35914d) )
3827   ROM_LOAD32_BYTE( "epr-13368.ic101", 0x180002, 0x20000, CRC(0f50716c) SHA1(eb4c7f47e11c58fe0d58f67e6dafabc6291eabb8) )
3828   ROM_LOAD32_BYTE( "epr-13367.ic105", 0x180003, 0x20000, CRC(4b1bb51f) SHA1(17fd5ac9e18dd6097a015e9d7b6815826f9c53f1) )
3829
3830   ROM_REGION( 0x10000, "subpcb:gfx3", ROMREGION_ERASE00 ) // road gfx
3831   // none??
3832
3833   ROM_REGION( 0x10000, "subpcb:soundcpu", 0 ) // sound CPU
3834   ROM_LOAD( "epr-13388.ic17",    0x00000, 0x10000, CRC(706581e4) SHA1(51c9dbf2bf0d6b8826de24cd33596f5c95136870) )
3835
3836   ROM_REGION( 0x80000, "subpcb:pcm", ROMREGION_ERASEFF ) // Sega PCM sound data
3837   ROM_LOAD( "epr-13391.ic11",    0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) )
3838   ROM_LOAD( "epr-13390.ic12",    0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) )
3839   ROM_LOAD( "epr-13389.ic13",    0x40000, 0x20000, CRC(4e4c758e) SHA1(181750dfcdd6d5b28b063c980c251991163d9474) )
38403646ROM_END
38413647
3648
38423649//*************************************************************************************************************************
38433650//*************************************************************************************************************************
38443651//*************************************************************************************************************************
r249188r249189
39393746
39403747DRIVER_INIT_MEMBER(segaxbd_new_state,rascot)
39413748{
3749#if 0
39423750   // patch out bootup link test
39433751   UINT16 *rom = reinterpret_cast<UINT16 *>(memregion("mainpcb:subcpu")->base());
39443752   rom[0xb78/2] = 0x601e; // subrom checksum test
r249188r249189
39473755   rom[0x606/2] = 0x4e71;
39483756
39493757   // map /EXCS space
3950   m_mainpcb->m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0f0000, 0x0f3fff, read16_delegate(FUNC(segaxbd_state::rascot_excs_r), (segaxbd_state*)m_mainpcb), write16_delegate(FUNC(segaxbd_state::rascot_excs_w), (segaxbd_state*)m_mainpcb));
3758   m_mainpcb->m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0f0000, 0x0f3fff, read16_delegate(FUNC(segaxbd_state::rascot_excs_r), this), write16_delegate(FUNC(segaxbd_state::rascot_excs_w), this));
3759#endif
39513760}
39523761
39533762void segaxbd_state::install_gprider(void)
r249188r249189
39973806GAME( 1989, smgpja,   smgp,     sega_smgp_fd1094,    smgp,     segaxbd_new_state, smgp,     ROT0,   "Sega", "Super Monaco GP (Japan, Rev A, FD1094 317-0124a)", 0 )
39983807GAME( 1990, abcop,    0,        sega_xboard_fd1094,  abcop,    driver_device,     0,  ROT0,   "Sega", "A.B. Cop (World, FD1094 317-0169b)", 0 )
39993808GAME( 1990, abcopj,   abcop,    sega_xboard_fd1094,  abcop,    driver_device,     0,  ROT0,   "Sega", "A.B. Cop (Japan, FD1094 317-0169b)", 0 )
4000// wasn't officially available as a single PCB setup, but runs anyway albeit with messages suggesting you can compete against a rival that doesn't exist?
4001GAME( 1990, gpriders, gprider,  sega_xboard_fd1094,  gprider, segaxbd_new_state, gprider,  ROT0,   "Sega", "GP Rider (World, FD1094 317-0163)", 0 )
4002GAME( 1990, gpriderus,gprider,  sega_xboard_fd1094,  gprider, segaxbd_new_state, gprider,  ROT0,   "Sega", "GP Rider (US, FD1094 317-0162)", 0 )
4003GAME( 1990, gpriderjs,gprider,  sega_xboard_fd1094,  gprider, segaxbd_new_state, gprider,  ROT0,   "Sega", "GP Rider (Japan, FD1094 317-0161)", 0 )
3809GAME( 1990, gprider,  0,        sega_xboard_fd1094,  gprider, segaxbd_new_state, gprider,  ROT0,   "Sega", "GP Rider (World, FD1094 317-0163)", 0 )
3810GAME( 1990, gprideru, gprider,  sega_xboard_fd1094,  gprider, segaxbd_new_state, gprider,  ROT0,   "Sega", "GP Rider (US, FD1094 317-0162)", 0 )
3811GAME( 1990, gpriderj, gprider,  sega_xboard_fd1094,  gprider, segaxbd_new_state, gprider,  ROT0,   "Sega", "GP Rider (Japan, FD1094 317-0161)", 0 )
40043812
4005// multi X-Board (2 stacks directly connected, shared RAM on bridge PCB - not networked)
4006GAME( 1990, gprider, 0,        sega_xboard_fd1094_double, gprider_double,  segaxbd_new_state_double, gprider_double,  ROT0,   "Sega", "GP Rider (World, FD1094 317-0163) (Twin setup)", 0 )
4007GAME( 1990, gprideru,gprider,  sega_xboard_fd1094_double, gprider_double,  segaxbd_new_state_double, gprider_double,  ROT0,   "Sega", "GP Rider (US, FD1094 317-0162) (Twin setup)", 0 )
4008GAME( 1990, gpriderj,gprider,  sega_xboard_fd1094_double, gprider_double,  segaxbd_new_state_double, gprider_double,  ROT0,   "Sega", "GP Rider (Japan, FD1094 317-0161) (Twin setup)", 0 )
3813// multi X-Board (2 stacks directly connected, shared RAM on bridge PCB?)
3814GAME( 1990, gpridert, gprider,  sega_xboard_fd1094_double, gprider_double,  segaxbd_new_state_double, gprider_double,  ROT0,   "Sega", "GP Rider (World, FD1094 317-0163) (master-slave setup)", MACHINE_NOT_WORKING ) // communication breaks down
40093815
40103816// X-Board + other boards?
40113817GAME( 1991, rascot,   0,        sega_rascot,         rascot,   segaxbd_new_state, rascot,   ROT0,   "Sega", "Royal Ascot (Japan, terminal?)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
trunk/src/mame/drivers/wc90.c
r249188r249189
5151Press one of the start buttons to exit.
5252
5353
54*****************************
55*                           *
56*  Pacman on WC90 Hardware  *
57*                           *
58*****************************
59
60There is known to be a Pacman hack running on this hardware.  It was done by Mike C. and isn't meant
61for inclusion in MAME.  However the roms with checksums are listed below to prevent it being added
62as a newly "found" game:
63
64Set is known as pac90 (rom names may differ, but the CRC32/SHA1 values are listed):
65
66rom1.ic87      CRC32 8af34306   SHA1 1a98adca74f46da36e3648d37bfcb56a328a031e
67rom2.ic67      CRC32 bc9bfdf2   SHA1 869e4012e5c577e501143cbfd75cce8cef919c86
68rom3.ic54      CRC32 1c4d17fd   SHA1 5abebf867de452cc3e85331e91b9110c26a8b050
69char.ic85      CRC32 70941a50   SHA1 283583743c21774d0097dc935ae7bc7009b5b633
70char.ic85      CRC32 0b906dae   SHA1 0d14d6a7bbe0b8772143afb4c6c94c62313e4b9c <-- An alternate version...
71sprite1.ic50   CRC32 190852ea   SHA1 fad7eb3aa53d03917173dd5a040655cfd329db32
72sprite2.ic60   CRC32 33effbea   SHA1 dbf6b735f3c8bacb695caf5d15ac8b7961bffc74
73voice.ic82     CRC32 abc61f3d   SHA1 c6f123d16a26c4d77c635617dd97bb4b906c463a
74
75
5476*/
5577
5678#include "emu.h"
r249188r249189
213235
214236
215237
216static INPUT_PORTS_START( pac90 )
217   PORT_START("P1")
218   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
219   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
220   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
221   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
222   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
223   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
224   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
225   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
226
227   PORT_START("P2")
228   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
229   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
230   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
231   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
232   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
233   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
234   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
235   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
236
237   PORT_START("DSW1")
238   PORT_DIPNAME( 0x03, 0x01, DEF_STR( Coinage ) )      PORT_DIPLOCATION("SW1:8,7")
239   PORT_DIPSETTING(    0x03, DEF_STR( 2C_1C ) )
240   PORT_DIPSETTING(    0x01, DEF_STR( 1C_1C ) )
241   PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
242   PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
243   PORT_DIPNAME( 0x0c, 0x08, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW1:6,5")
244   PORT_DIPSETTING(    0x00, "1" )
245   PORT_DIPSETTING(    0x04, "2" )
246   PORT_DIPSETTING(    0x08, "3" )
247   PORT_DIPSETTING(    0x0c, "5" )
248   PORT_DIPNAME( 0x30, 0x00, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW1:4,3")
249   PORT_DIPSETTING(    0x00, "10000" )
250   PORT_DIPSETTING(    0x10, "15000" )
251   PORT_DIPSETTING(    0x20, "20000" )
252   PORT_DIPSETTING(    0x30, DEF_STR( None ) )
253   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Difficulty ) )   PORT_DIPLOCATION("SW1:2")
254   PORT_DIPSETTING(    0x40, DEF_STR( Normal ) )
255   PORT_DIPSETTING(    0x00, DEF_STR( Hard ) )
256   PORT_DIPNAME( 0x80, 0x80, "Ghost Names" )           PORT_DIPLOCATION("SW1:1")
257   PORT_DIPSETTING(    0x80, DEF_STR( Normal ) )
258   PORT_DIPSETTING(    0x00, DEF_STR( Alternate ) )
259
260   PORT_START("DSW2")
261   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:8")
262   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
263   PORT_DIPSETTING(    0x01, DEF_STR( On ) )
264   PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:7")
265   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
266   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
267   PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:6")
268   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
269   PORT_DIPSETTING(    0x04, DEF_STR( On ) )
270   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:5")
271   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
272   PORT_DIPSETTING(    0x08, DEF_STR( On ) )
273   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:4")
274   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
275   PORT_DIPSETTING(    0x10, DEF_STR( On ) )
276   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:3")
277   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
278   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
279   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:2")
280   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
281   PORT_DIPSETTING(    0x40, DEF_STR( On ) )
282   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:1")
283   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
284   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
285
286
287   PORT_START("SYSTEM")
288   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
289   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
290   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
291   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
292INPUT_PORTS_END
293
294
295
296238static const gfx_layout charlayout =
297239{
298240   8,8,
r249188r249189
390332   MCFG_VIDEO_START_OVERRIDE(wc90_state, wc90t )
391333MACHINE_CONFIG_END
392334
393static MACHINE_CONFIG_DERIVED( pac90, wc90 )
394   MCFG_DEVICE_MODIFY("spritegen")
395   MCFG_TECMO_SPRITE_YOFFSET(16) // sprites need shifting, why?
396MACHINE_CONFIG_END
397
398
399335ROM_START( wc90 )
400336   ROM_REGION( 0x20000, "maincpu", 0 )
401337   ROM_LOAD( "ic87_01.bin",  0x00000, 0x08000, CRC(4a1affbc) SHA1(bc531e97ca31c66fdac194e2d79d5c6ba1300556) )  /* c000-ffff is not used */
r249188r249189
429365   ROM_LOAD( "ic82_06.bin",  0x00000, 0x20000, CRC(2fd692ed) SHA1(0273dc39181504320bec0187d074b2f86c821508) )
430366ROM_END
431367
432
433368ROM_START( wc90a )
434369   ROM_REGION( 0x20000, "maincpu", 0 )
435370   ROM_LOAD( "wc90-1.bin",   0x00000, 0x08000, CRC(d1804e1a) SHA1(eec7374f4d23c89843f38fffff436635adb43b63) )  /* c000-ffff is not used */
r249188r249189
529464   ROM_LOAD( "ic82_06.bin",  0x00000, 0x20000, CRC(2fd692ed) SHA1(0273dc39181504320bec0187d074b2f86c821508) )
530465ROM_END
531466
532ROM_START( pac90 )
533   ROM_REGION( 0x20000, "maincpu", 0 )
534   ROM_LOAD( "rom1.ic87",  0x00000, 0x08000, CRC(8af34306) SHA1(1a98adca74f46da36e3648d37bfcb56a328a031e) )
535
536   ROM_REGION( 0x20000, "sub", ROMREGION_ERASE00 )  /* Second CPU */
537   ROM_LOAD( "rom2.ic67",  0x00000, 0x10000, CRC(bc9bfdf2) SHA1(869e4012e5c577e501143cbfd75cce8cef919c86) )
538
539   ROM_REGION( 0x10000, "audiocpu", 0 )
540   ROM_LOAD( "rom3.ic54",  0x00000, 0x10000, CRC(1c4d17fd) SHA1(5abebf867de452cc3e85331e91b9110c26a8b050) )
541
542   ROM_REGION( 0x010000, "gfx1", 0 )
543   ROM_LOAD( "char.ic85", 0x00000, 0x10000, CRC(70941a50) SHA1(283583743c21774d0097dc935ae7bc7009b5b633) )
544   // char.ic85      CRC32 0b906dae   SHA1 0d14d6a7bbe0b8772143afb4c6c94c62313e4b9c <-- An alternate version...
545
546   ROM_REGION( 0x040000, "gfx2", ROMREGION_ERASE00 )
547   //ROM_LOAD( "ic86_08v.bin", 0x00000, 0x20000, CRC(8fa1a1ff) SHA1(ce624617ac8c8b54e41294cf5dca7a09c91f53ba) )  /* tiles #1 */
548   //ROM_LOAD( "ic90_09v.bin", 0x20000, 0x20000, CRC(99f8841c) SHA1(1969b4d78ca00924a7550826e1c4f4fa0588ef02) )  /* tiles #2 */
549
550   ROM_REGION( 0x040000, "gfx3", ROMREGION_ERASE00 )
551   //ROM_LOAD( "ic87_10v.bin", 0x00000, 0x20000, CRC(8232093d) SHA1(59bf9c9a858b47326cf0c64b1ee6ac727a15a20b) )  /* tiles #3 */
552   //ROM_LOAD( "ic91_11v.bin", 0x20000, 0x20000, CRC(188d3789) SHA1(35654a99a20735bae09b32f74255f8132dee9af2) )  /* tiles #4 */
553
554   ROM_REGION( 0x080000, "gfx4", ROMREGION_ERASE00 )
555   ROM_LOAD( "sprite1.ic50", 0x00000, 0x10000, CRC(190852ea) SHA1(fad7eb3aa53d03917173dd5a040655cfd329db32) )  /* sprites  */
556   ROM_LOAD( "sprite2.ic60", 0x40000, 0x10000, CRC(33effbea) SHA1(dbf6b735f3c8bacb695caf5d15ac8b7961bffc74) )  /* sprites  */
557
558   ROM_REGION( 0x20000, "ymsnd", ROMREGION_ERASE00 )   /* 64k for ADPCM samples */
559   ROM_LOAD( "voice.ic82",  0x00000, 0x10000, CRC(abc61f3d) SHA1(c6f123d16a26c4d77c635617dd97bb4b906c463a) )
560ROM_END
561
562
563467GAME( 1989, wc90,  0,    wc90, wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (World)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
564468GAME( 1989, wc90a, wc90, wc90, wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (Euro set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
565469GAME( 1989, wc90b, wc90, wc90, wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (Euro set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
566470GAME( 1989, wc90t, wc90, wc90t,wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (trackball set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
567
568GAME( 199?, pac90, puckman, pac90,pac90,driver_device, 0, ROT90, "bootleg (Macro)", "Pac-Man (bootleg on World Cup '90 hardware)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // made by Mike Coates etc.
trunk/src/mame/includes/chihiro.h
r249188r249189
224224      dilate_rendertarget = 0;
225225      antialiasing_rendertarget = 0;
226226      type_rendertarget = nv2a_renderer::LINEAR;
227      depthformat_rendertarget = nv2a_renderer::NV2A_RT_DEPTH_FORMAT_Z24S8;
228      colorformat_rendertarget = nv2a_renderer::NV2A_COLOR_FORMAT_A8R8G8B8;
229      bytespixel_rendertarget = 4;
230      antialias_control = 0;
227      depth_rendertarget = nv2a_renderer::NV2A_RT_DEPTH_FORMAT_Z24S8;
228      color_rendertarget = nv2a_renderer::NV2A_COLOR_FORMAT_A8R8G8B8;
231229      rendertarget = NULL;
232230      depthbuffer = NULL;
233231      displayedtarget = NULL;
r249188r249189
256254   void geforce_read_dma_object(UINT32 handle, UINT32 &offset, UINT32 &size);
257255   int geforce_exec_method(address_space &space, UINT32 channel, UINT32 subchannel, UINT32 method, UINT32 address, int &countlen);
258256   UINT32 texture_get_texel(int number, int x, int y);
259   UINT8 *read_pixel(int x, int y, UINT32 c[4]);
260257   void write_pixel(int x, int y, UINT32 color, UINT32 depth);
261258   void combiner_initialize_registers(UINT32 argb8[6]);
262259   void combiner_initialize_stage(int stage_number);
r249188r249189
296293   int read_vertices_0x1810(address_space & space, vertex_nv *destination, int offset, int limit);
297294   int read_vertices_0x1818(address_space & space, vertex_nv *destination, UINT32 address, int limit);
298295   void convert_vertices_poly(vertex_nv *source, vertex_t *destination, int count);
299   void clear_depth_buffer(int what, UINT32 value);
300296   inline UINT8 *direct_access_ptr(offs_t address);
301297   TIMER_CALLBACK_MEMBER(puller_timer_work);
302298
r249188r249189
325321   int dilate_rendertarget;
326322   int antialiasing_rendertarget;
327323   int type_rendertarget;
328   int depthformat_rendertarget;
329   int colorformat_rendertarget;
330   int bytespixel_rendertarget;
331   UINT32 antialias_control;
324   int depth_rendertarget;
325   int color_rendertarget;
332326   UINT32 *rendertarget;
333327   UINT32 *depthbuffer;
334328   UINT32 *displayedtarget;
trunk/src/mame/includes/hng64.h
r249188r249189
44#include "cpu/mips/mips3.h"
55#include "cpu/nec/v53.h"
66#include "sound/l7a1045_l6028_dsp_a.h"
7#include "video/poly.h"
87
98enum
109{
r249188r249189
2221   HNG64_TILEMAP_ALPHA
2322};
2423
24
2525struct blit_parameters
2626{
2727   bitmap_rgb32 *          bitmap;
r249188r249189
3535
3636#define HNG64_MASTER_CLOCK 50000000
3737
38///////////////
39// 3d Engine //
40///////////////
3841
39/////////////////
40/// 3d Engine ///
41/////////////////
42
4342struct polyVert
4443{
4544   float worldCoords[4];   // World space coordinates (X Y Z 1.0)
r249188r249189
7372};
7473
7574
76/////////////////////////
77/// polygon rendering ///
78/////////////////////////
7975
80// Refer to the clipping planes as numbers
81#define HNG64_LEFT   0
82#define HNG64_RIGHT  1
83#define HNG64_TOP    2
84#define HNG64_BOTTOM 3
85#define HNG64_NEAR   4
86#define HNG64_FAR    5
76///////////////////////
77// polygon rendering //
78///////////////////////
8779
88
89////////////////////////////////////
90/// Polygon rasterizer interface ///
91////////////////////////////////////
92
93const int HNG64_MAX_POLYGONS = 10000;
94
95struct hng64_poly_data
80struct polygonRasterOptions
9681{
9782   UINT8 texType;
9883   UINT8 texIndex;
r249188r249189
10489   int debugColor;
10590};
10691
107class hng64_state;
92// Refer to the clipping planes as numbers
93#define HNG64_LEFT   0
94#define HNG64_RIGHT  1
95#define HNG64_TOP    2
96#define HNG64_BOTTOM 3
97#define HNG64_NEAR   4
98#define HNG64_FAR    5
10899
109class hng64_poly_renderer : public poly_manager<float, hng64_poly_data, 7, HNG64_MAX_POLYGONS>
110{
111public:
112    hng64_poly_renderer(hng64_state& state);
113   
114    void drawShaded(struct polygon *p);
115    void render_scanline(INT32 scanline, const extent_t& extent, const hng64_poly_data& renderData, int threadid);
116100
117    hng64_state& state() { return m_state; }
118    bitmap_rgb32& colorBuffer3d() { return m_colorBuffer3d; }
119    float* depthBuffer3d() { return m_depthBuffer3d; }
120   
121private:
122    hng64_state& m_state;
123   
124    // (Temporarily class members - someday they will live in the memory map)
125    bitmap_rgb32 m_colorBuffer3d;
126    float* m_depthBuffer3d;
127};
128101
129
130
131102class hng64_state : public driver_device
132103{
133104public:
r249188r249189
172143   required_shared_ptr<UINT32> m_videoram;
173144   required_shared_ptr<UINT32> m_videoregs;
174145   required_shared_ptr<UINT32> m_tcram;
175
176    /* 3D stuff */
146   /* 3D stuff */
177147   UINT16* m_dl;
178148
179149   required_shared_ptr<UINT32> m_3dregs;
r249188r249189
224194
225195   UINT8 m_additive_tilemap_debug;
226196
197   // 3d display buffers
198   // (Temporarily global - someday they will live with the proper bit-depth in the memory map)
199   float *m_depthBuffer3d;
200   UINT32 *m_colorBuffer3d;
201
227202   UINT32 m_old_animmask;
228203   UINT32 m_old_animbits;
229204   UINT16 m_old_tileflags[4];
r249188r249189
324299   DECLARE_CUSTOM_INPUT_MEMBER(right_handle_r);
325300   DECLARE_CUSTOM_INPUT_MEMBER(acc_down_r);
326301   DECLARE_CUSTOM_INPUT_MEMBER(brake_down_r);
327
328    hng64_poly_renderer* m_poly_renderer;
329   
330    void clear3d();
302   void clear3d();
331303   TIMER_CALLBACK_MEMBER(hng64_3dfifo_processed);
332304
305   void FillSmoothTexPCHorizontalLine(
306      const polygonRasterOptions& prOptions,
307      int x_start, int x_end, int y, float z_start, float z_delta,
308      float w_start, float w_delta, float r_start, float r_delta,
309      float g_start, float g_delta, float b_start, float b_delta,
310      float s_start, float s_delta, float t_start, float t_delta);
311
333312   void hng64_command3d(const UINT16* packet);
334313   void draw_sprites(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
335   void transition_control(bitmap_rgb32 &bitmap, const rectangle &cliprect);
314   void transition_control( bitmap_rgb32 &bitmap, const rectangle &cliprect);
336315   void hng64_tilemap_draw_roz_core(screen_device &screen, tilemap_t *tmap, const blit_parameters *blit,
337316      UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy, int wraparound);
338317   void hng64_drawtilemap(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int tm);
r249188r249189
352331      UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy,
353332      int wraparound, UINT32 flags, UINT8 priority, UINT8 priority_mask, hng64trans_t drawformat);
354333
334   void RasterizeTriangle_SMOOTH_TEX_PC(
335      float A[4], float B[4], float C[4],
336      float Ca[3], float Cb[3], float Cc[3], // PER-VERTEX RGB COLORS
337      float Ta[2], float Tb[2], float Tc[2], // PER-VERTEX (S,T) TEX-COORDS
338      const polygonRasterOptions& prOptions);
339
340   void drawShaded( struct polygon *p);
341
355342   void printPacket(const UINT16* packet, int hex);
356343   void matmul4(float *product, const float *a, const float *b);
357344   void vecmatmul4(float *product, const float *a, const float *b);
trunk/src/mame/includes/n64.h
r249188r249189
8686   TIMER_CALLBACK_MEMBER(vi_scanline_callback);
8787   TIMER_CALLBACK_MEMBER(ai_timer_callback);
8888   TIMER_CALLBACK_MEMBER(pi_dma_callback);
89   TIMER_CALLBACK_MEMBER(si_dma_callback);
9089   DECLARE_READ32_MEMBER( dp_reg_r );
9190   DECLARE_WRITE32_MEMBER( dp_reg_w );
9291   DECLARE_READ32_MEMBER( sp_reg_r );
r249188r249189
9796
9897   void ai_timer_tick();
9998   void pi_dma_tick();
100   void si_dma_tick();
10199   void vi_scanline_tick();
102100   void reset_tick();
103101
r249188r249189
244242   UINT32 pi_dma_dir;
245243
246244   // Serial Interface (SI) registers and functions
247   emu_timer *si_dma_timer;
248245   void pif_dma(int direction);
249246   void handle_pif();
250247   int pif_channel_handle_command(int channel, int slength, UINT8 *sdata, int rlength, UINT8 *rdata);
trunk/src/mame/includes/pgm.h
r249188r249189
474474
475475INPUT_PORTS_EXTERN( orlegend );
476476INPUT_PORTS_EXTERN( orlegendt );
477INPUT_PORTS_EXTERN( orlegendk );
477INPUT_PORTS_EXTERN( orld105k );
478478
479
480479MACHINE_CONFIG_EXTERN( pgm_asic3 );
481480
482481/*----------- defined in machine/pgmprot1.c -----------*/
trunk/src/mame/machine/n64.c
r249188r249189
109109{
110110   ai_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(n64_periphs::ai_timer_callback),this));
111111   pi_dma_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(n64_periphs::pi_dma_callback),this));
112   si_dma_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(n64_periphs::si_dma_callback),this));
113112   vi_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(n64_periphs::vi_scanline_callback),this));
114113   reset_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(n64_periphs::reset_timer_callback),this));
115114}
r249188r249189
203202   si_dram_addr = 0;
204203   si_pif_addr = 0;
205204   si_status = 0;
206   si_dma_timer->adjust(attotime::never);
207205
208   //memset(m_save_data.eeprom, 0, 2048);
206   memset(m_save_data.eeprom, 0, 2048);
209207
210208   dp_clock = 0;
211209
r249188r249189
227225   pif_ram[0x26] = 0x3f;
228226   pif_ram[0x27] = 0x3f;
229227   cic_type=2;
230   mem_map->write_dword(0x00000318, 0x800000); /* RDRAM Size */
228   mem_map->write_dword(0x00000318, 0x800000);
231229
232230   if (boot_checksum == U64(0x00000000001ff230))
233231   {
r249188r249189
995993// Video Interface
996994void n64_periphs::vi_recalculate_resolution()
997995{
998   //n64_state *state = machine().driver_data<n64_state>();
996   n64_state *state = machine().driver_data<n64_state>();
999997
1000998   int x_start = (vi_hstart & 0x03ff0000) >> 16;
1001999   int x_end = vi_hstart & 0x000003ff;
r249188r249189
10271025   if (height > 480)
10281026      height = 480;
10291027
1030   if(vi_control & 0x40) /* Interlace */
1031   {
1032      height *= 2;
1033   }
1028   state->m_rdp->m_misc_state.m_fb_height = height;
10341029
1035   //state->m_rdp->m_misc_state.m_fb_height = height;
1036
10371030   visarea.max_x = width - 1;
10381031   visarea.max_y = height - 1;
10391032   m_screen->configure(width, 525, visarea, period);
r249188r249189
10611054         break;
10621055
10631056      case 0x10/4:        // VI_CURRENT_REG
1064         ret = (m_screen->vpos() << 1) + 1;
1057         ret = m_screen->vpos() << 1;
10651058         break;
10661059
10671060      case 0x14/4:        // VI_BURST_REG
r249188r249189
11101103
11111104WRITE32_MEMBER( n64_periphs::vi_reg_w )
11121105{
1113   //n64_state *state = machine().driver_data<n64_state>();
1106   n64_state *state = machine().driver_data<n64_state>();
11141107
11151108   switch (offset)
11161109   {
r249188r249189
11291122            vi_recalculate_resolution();
11301123         }
11311124         vi_width = data;
1132         //state->m_rdp->m_misc_state.m_fb_width = data;
1125         state->m_rdp->m_misc_state.m_fb_width = data;
11331126         break;
11341127
11351128      case 0x0c/4:        // VI_INTR_REG
r249188r249189
12211214
12221215   if (! (ai_status & 0x40000000))
12231216   {
1224      //signal_rcp_interrupt(AI_INTERRUPT);
1217      signal_rcp_interrupt(AI_INTERRUPT);
12251218      ai_dma();
12261219   }
12271220}
r249188r249189
12441237   if (ai_fifo_num < AUDIO_DMA_DEPTH)
12451238   {
12461239      ai_status &= ~0x80000001;   // FIFO not full
1247      //signal_rcp_interrupt(AI_INTERRUPT);
1240      signal_rcp_interrupt(AI_INTERRUPT);
12481241   }
12491242}
12501243
r249188r249189
12841277   ai_status |= 0x40000000;
12851278
12861279   // adjust the timer
1287   period = attotime::from_hz(DACRATE_NTSC) * (ai_dacrate + 1) * (current->length / 4);
1280   period = attotime::from_hz(DACRATE_NTSC) * ((ai_dacrate + 1) * (current->length / 4));
12881281   ai_timer->adjust(period);
12891282}
12901283
r249188r249189
12961289void n64_periphs::ai_timer_tick()
12971290{
12981291   ai_fifo_pop();
1299   signal_rcp_interrupt(AI_INTERRUPT);
13001292
13011293   // keep playing if there's another DMA queued
13021294   if (ai_fifo_get_top() != NULL)
13031295   {
13041296      ai_dma();
1297      signal_rcp_interrupt(AI_INTERRUPT);
13051298   }
13061299   else
13071300   {
r249188r249189
13321325         }
13331326         break;
13341327      }
1335      case 0x08/4:
1336         ret = ai_control;
1337         break;
1328
13381329      case 0x0c/4:        // AI_STATUS_REG
13391330         ret = ai_status;
13401331         break;
r249188r249189
14341425   {
14351426      UINT32 dma_length = pi_wr_len + 1;
14361427      //logerror("PI Write, %X, %X, %X\n", pi_cart_addr, pi_dram_addr, pi_wr_len);
1437      if (dma_length & 1)
1428      if (dma_length & 7)
14381429      {
1439         dma_length = (dma_length + 1) & ~1;
1430         dma_length = (dma_length + 7) & ~7;
14401431      }
14411432
14421433      if (pi_dram_addr != 0xffffffff)
r249188r249189
14541445   {
14551446      UINT32 dma_length = pi_rd_len + 1;
14561447      //logerror("PI Read, %X, %X, %X\n", pi_cart_addr, pi_dram_addr, pi_rd_len);
1457      if (dma_length & 1)
1448      if (dma_length & 7)
14581449      {
1459         dma_length = (dma_length + 1) & ~1;
1450         dma_length = (dma_length + 7) & ~7;
14601451      }
14611452
14621453      if (pi_dram_addr != 0xffffffff)
r249188r249189
20852076   }*/
20862077}
20872078
2088TIMER_CALLBACK_MEMBER(n64_periphs::si_dma_callback)
2089{
2090   machine().device<n64_periphs>("rcp")->si_dma_tick();
2091}
2092
2093void n64_periphs::si_dma_tick()
2094{
2095   si_dma_timer->adjust(attotime::never);
2096   si_status |= 0x1000;
2097   signal_rcp_interrupt(SI_INTERRUPT);
2098}
2099
21002079void n64_periphs::pif_dma(int direction)
21012080{
21022081   if (si_dram_addr & 0x3)
r249188r249189
21372116      }
21382117   }
21392118
2140   si_dma_timer->adjust(attotime::from_hz(500));
2141   //si_status |= 0x1000;
2142   //signal_rcp_interrupt(SI_INTERRUPT);
2119   si_status |= 0x1000;
2120   signal_rcp_interrupt(SI_INTERRUPT);
21432121}
21442122
21452123READ32_MEMBER( n64_periphs::si_reg_r )
trunk/src/mame/machine/nmk004.c
r249188r249189
8484
8585
8686static MACHINE_CONFIG_FRAGMENT( nmk004 )
87   MCFG_CPU_ADD("mcu",TMP90840, DERIVED_CLOCK(1,1)) // Toshiba TMP90C840AF in QFP64 package with 8Kbyte internal ROM
87   MCFG_CPU_ADD("mcu",TMP90840, DERIVED_CLOCK(1,1)) // unkonwn type, but 0x2000 byte internal ROM
8888   MCFG_CPU_PROGRAM_MAP(nmk004_sound_mem_map)
8989   MCFG_CPU_IO_MAP(nmk004_sound_io_map)
9090MACHINE_CONFIG_END
trunk/src/mame/machine/pgmcrypt.c
r249188r249189
15711571      src[i] = x;
15721572   }
15731573}
1574
1575
1576static UINT8 amazonia_tab[0x100] = { // seems to be correct
1577    0x87, 0x01, 0xd3, 0x6b, 0x79, 0x00, 0xbd, 0x81, 0xc7, 0x8f, 0x9b, 0xd9, 0x3b, 0x53, 0x09, 0x15,
1578    0x05, 0x57, 0x7b, 0x1f, 0x2f, 0x09, 0x47, 0xa1, 0x45, 0x00, 0xf7, 0xbf, 0x3d, 0x59, 0xd1, 0x19,
1579    0xad, 0xd5, 0xa1, 0x03, 0x2d, 0x35, 0xc7, 0x07, 0x09, 0x4f, 0x85, 0x95, 0x2b, 0x3f, 0x89, 0x09,
1580    0x49, 0x85, 0xb9, 0xe7, 0x4b, 0x53, 0x3f, 0x51, 0xff, 0x3b, 0xd5, 0xc9, 0xff, 0xfd, 0x53, 0x25,
1581    0xe3, 0xa9, 0x75, 0xd7, 0xa3, 0xfd, 0xf1, 0x5f, 0x51, 0xfb, 0xbb, 0x09, 0xf5, 0xc9, 0x91, 0xed,
1582    0xc7, 0xcd, 0xc9, 0x25, 0x93, 0x07, 0x63, 0x51, 0x69, 0xb3, 0x4b, 0x47, 0x85, 0x19, 0xe7, 0x1f,
1583    0x7f, 0xb3, 0xe9, 0x5f, 0xb5, 0x8b, 0x57, 0x83, 0xf5, 0xcb, 0xd5, 0xb1, 0x6d, 0xa3, 0x37, 0xbb,
1584    0xd7, 0x67, 0x45, 0x55, 0xe3, 0xdd, 0xcf, 0x97, 0xdd, 0xe9, 0xf1, 0xb5, 0xa7, 0x63, 0xa5, 0xfd,
1585    0xdb, 0x2b, 0x93, 0x13, 0x37, 0x95, 0x0d, 0x69, 0x4d, 0xf7, 0x6d, 0x03, 0x6f, 0x8b, 0x95, 0x69,
1586    0xd5, 0x8b, 0xc3, 0xeb, 0x0f, 0x8b, 0x97, 0x1b, 0xb1, 0x19, 0x5f, 0x89, 0x3d, 0x95, 0xa9, 0xb9,
1587    0x4f, 0x4b, 0x0b, 0x6b, 0x05, 0xd5, 0x2d, 0x0b, 0xb5, 0xb7, 0x19, 0x75, 0xcf, 0x35, 0xc3, 0xef,
1588    0x13, 0x71, 0xdb, 0x61, 0xf3, 0xcb, 0xd3, 0xd7, 0x3f, 0x79, 0x2d, 0x39, 0x21, 0x65, 0x07, 0x49,
1589    0x31, 0x47, 0xe9, 0xdd, 0xf3, 0x03, 0xcf, 0x5f, 0x7f, 0x45, 0x71, 0x83, 0x69, 0x5b, 0xd9, 0x47,
1590    0xef, 0x53, 0x27, 0x2f, 0x63, 0x55, 0x9f, 0xc1, 0xdf, 0x41, 0xf5, 0x41, 0x27, 0x8d, 0xdb, 0xa7,
1591    0xd9, 0x5b, 0xc7, 0xe5, 0xdd, 0xd7, 0x09, 0x5f, 0x09, 0xd7, 0x0d, 0xa1, 0x13, 0xb3, 0xef, 0x67,
1592    0xbb, 0x65, 0x3d, 0xcd, 0x3b, 0xdf, 0x0f, 0xd3, 0xe7, 0xab, 0x4d, 0x15, 0x29, 0xc5, 0x39, 0xc9
1593};
1594
1595void amazonia_decrypt(running_machine &machine)
1596{
1597   int i;
1598   UINT16 *src = (UINT16 *)machine.root_device().memregion("user1")->base();
1599
1600   int rom_size = 0x80000;
1601   for (i = 0; i < rom_size / 2; i++) {
1602      int x = amazonia_tab[(i / 2) & 0xff] << 8;
1603
1604      if ((i & 0x040480) != 0x000080) x ^= 0x0001;
1605      if ((i & 0x004008) == 0x004008) x ^= 0x0002;
1606      if ((i & 0x080030) == 0x080010) x ^= 0x0004; // pin high??
1607      if ((i & 0x000242) != 0x000042) x ^= 0x0008;
1608      if ((i & 0x008100) == 0x008000) x ^= 0x0010;
1609      if ((i & 0x022004) != 0x000004) x ^= 0x0020; // verified
1610      if ((i & 0x011800) != 0x010000) x ^= 0x0040;
1611      if ((i & 0x004820) == 0x004820) x ^= 0x0080; // verified
1612
1613      src[i] ^= x;
1614   }
1615}
1616
1617// not 100% verified
1618static const UINT8 amazoni2_tab[0x100] = {
1619    0x49, 0x47, 0x53, 0x30, 0x30, 0x37, 0x37, 0x52, 0x44, 0x34, 0x30, 0x32, 0x31, 0x30, 0x31, 0x36,
1620    0xed, 0x3f, 0x77, 0xd0, 0xc4, 0x72, 0x77, 0xe1, 0x35, 0x15, 0x10, 0xc6, 0x1b, 0xee, 0x25, 0x4a,
1621    0x0d, 0x06, 0x37, 0x19, 0xfa, 0xf9, 0x29, 0xb0, 0x03, 0x7e, 0x32, 0x83, 0x99, 0x32, 0x23, 0x6e,
1622    0xd8, 0xa9, 0xdb, 0x5f, 0x23, 0xb7, 0x08, 0x41, 0x00, 0xfb, 0x20, 0x2b, 0x36, 0xae, 0x9f, 0xc9,
1623    0x24, 0xaa, 0x82, 0x0b, 0x64, 0xbe, 0x03, 0x0d, 0xa2, 0x31, 0x97, 0x47, 0xb6, 0x94, 0x26, 0xf6,
1624    0x09, 0xcd, 0x8a, 0xca, 0x26, 0x61, 0x4a, 0xd1, 0x9f, 0x01, 0x98, 0xa3, 0x23, 0x58, 0x88, 0xcf,
1625    0xdd, 0x14, 0x93, 0x86, 0x0f, 0x33, 0x4c, 0x86, 0xef, 0x8f, 0x61, 0x4a, 0xc2, 0xad, 0xd5, 0x70,
1626    0x37, 0xc2, 0x7b, 0x6a, 0x06, 0x07, 0xb7, 0x69, 0xc9, 0x3f, 0x71, 0x87, 0x1a, 0x85, 0x5a, 0x33,
1627    0xee, 0x5b, 0x63, 0xe2, 0x32, 0xf0, 0x7a, 0xf4, 0xa4, 0xb2, 0x87, 0xe4, 0xf3, 0x14, 0xa7, 0xb4,
1628    0x1a, 0xa1, 0xa8, 0x98, 0xf9, 0x42, 0xc5, 0xe1, 0x36, 0xcc, 0xa3, 0x2d, 0x54, 0xcd, 0x8b, 0xcd,
1629    0x11, 0x98, 0xe9, 0x77, 0x05, 0x8e, 0x06, 0x2d, 0x78, 0xb0, 0x02, 0x6d, 0x83, 0x62, 0x15, 0x9a,
1630    0x6b, 0x82, 0x07, 0xaa, 0x3a, 0xa9, 0xed, 0x12, 0x9f, 0xc0, 0x25, 0xee, 0x08, 0xc7, 0x94, 0x75,
1631    0xfd, 0xe2, 0x1f, 0x9d, 0xc0, 0xa5, 0x68, 0x0a, 0x23, 0xa1, 0xca, 0x3d, 0xa9, 0x2f, 0x97, 0xfa,
1632    0xe0, 0x7c, 0x91, 0xfa, 0xfe, 0xd5, 0xa6, 0xd2, 0xbb, 0x34, 0xf1, 0x23, 0x6e, 0x0c, 0xed, 0x03,
1633    0x6b, 0x52, 0xfb, 0xac, 0x9c, 0xcc, 0x17, 0x64, 0x5d, 0x9e, 0xd7, 0xac, 0x9e, 0x12, 0xa5, 0xac,
1634    0x34, 0xa7, 0x3e, 0xde, 0x7f, 0x5d, 0x6a, 0xfa, 0x42, 0x40, 0xfd, 0x23, 0xbf, 0x33, 0x0e, 0x50
1635};
1636
1637
1638void amazoni2_decrypt(running_machine &machine)
1639{
1640    int i;
1641    UINT16 *src = (UINT16 *) machine.root_device().memregion("user1")->base();
1642
1643    int rom_size = 0x80000;
1644
1645    for(i=0; i<rom_size/2; i++)
1646    {
1647        UINT16 x = src[i];
1648
1649        // should be correct
1650        IGS27_CRYPT1
1651        IGS27_CRYPT2_ALT
1652    //    IGS27_CRYPT3
1653        IGS27_CRYPT4
1654        IGS27_CRYPT5
1655        IGS27_CRYPT6_ALT // second half is junk, not sure...
1656        IGS27_CRYPT7
1657        IGS27_CRYPT8
1658
1659        x ^= amazoni2_tab[(i >> 1) & 0xff] << 8;
1660
1661        src[i] = x;
1662    }
1663}
trunk/src/mame/machine/pgmcrypt.h
r249188r249189
3636void pgm_decrypt_pgm3in1(running_machine &machine);
3737void slqz3_decrypt(running_machine &machine);
3838void fruitpar_decrypt(running_machine &machine);
39void amazonia_decrypt(running_machine &machine);
40void amazoni2_decrypt(running_machine &machine);
trunk/src/mame/machine/pgmprot_orlegend.c
r249188r249189
205205   PORT_CONFSETTING(      0x0004, DEF_STR( Taiwan ) )
206206INPUT_PORTS_END
207207
208
209INPUT_PORTS_START( orlegendk )
208INPUT_PORTS_START( orld105k )
210209   PORT_INCLUDE ( pgm )
211210
212211   PORT_MODIFY("Region")
213   PORT_DIPNAME( 0x0007, 0x0002, DEF_STR( Region ) )
214   PORT_CONFSETTING(      0x0000, "Invalid 00?" )
215   PORT_CONFSETTING(      0x0001, "Invalid 01?" )
216   PORT_CONFSETTING(      0x0002, DEF_STR( Korea ) )
217   PORT_CONFSETTING(      0x0003, "Invalid 03?" )
218   PORT_CONFSETTING(      0x0004, "Invalid 04?" )
212   PORT_DIPNAME( 0x0003, 0x0002, DEF_STR( Unused ) )   // region switch
213   PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )      // if enabled, game gives
214   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )       // "incorrect version" error
219215INPUT_PORTS_END
220216
221
222217MACHINE_CONFIG_START( pgm_asic3, pgm_asic3_state )
223218   MCFG_FRAGMENT_ADD(pgmbase)
224219MACHINE_CONFIG_END
trunk/src/mame/machine/xbox.c
r249188r249189
14181418   AM_RANGE(0xfed00000, 0xfed003ff) AM_READWRITE(usbctrl_r, usbctrl_w)
14191419   AM_RANGE(0xfe800000, 0xfe85ffff) AM_READWRITE(audio_apu_r, audio_apu_w)
14201420   AM_RANGE(0xfec00000, 0xfec001ff) AM_READWRITE(audio_ac93_r, audio_ac93_w)
1421   AM_RANGE(0xff000000, 0xff0fffff) AM_ROM AM_REGION("bios", 0) AM_MIRROR(0x00f80000)
1421   AM_RANGE(0xff000000, 0xff07ffff) AM_ROM AM_REGION("bios", 0) AM_MIRROR(0x00f80000)
14221422ADDRESS_MAP_END
14231423
14241424ADDRESS_MAP_START(xbox_base_map_io, AS_IO, 32, xbox_base_state)
trunk/src/mame/mess.lst
r249188r249189
342342atombb    // 1979 Acorn Atom
343343//prophet2
344344bbca      // 1981 BBC Micro Model A
345bbcb      // 1981 BBC Micro Model B w/8271 FDC
345bbcb      // 1981 BBC Micro Model B
346346bbcb_de   // 1981 BBC Micro Model B (German)
347bbcb_us   // 1983 BBC Micro Model B (US)
347bbcb_us   // 1981 BBC Micro Model B (US)
348348electron  // 1983 Acorn Electron
349bbcb1770  // 1985 BBC Micro Model B w/1770 FDC
350349bbcbp     // 1985 BBC Micro Model B+ 64K
351350bbcbp128  // 1985 BBC Micro Model B+ 128K
352abc110    // 1985 ABC 110
353abc210    // 1985 ABC 210/Cambridge Workstation
354abc310    // 1985 ABC 310
355reutapm   // 1985 Reuters APM Board
356351bbcm      // 1986 BBC Master 128
357352bbcmt     // 1986 BBC Master Turbo
358353bbcmaiv   // 1986 BBC Master AIV
r249188r249189
360355bbcm512   // 1986 BBC Master 512
361356bbcmarm   // 1986 ARM Evaluation System
362357bbcmc     // 1986 BBC Master Compact
363bbcmc_ar  // 1986 BBC Master Compact (Arabic)
364pro128s   // 1987 Olivetti Prodest PC 128S
358bbcmc_ar  // 1986 BBC Master Comapact (Arabic)
365359bbcbc     // 1985 BBC Bridge Companion
366360a310      // 1988 Acorn Archimedes 310
367361a3010     // 1988 Acorn Archimedes 3010
trunk/src/mame/video/chihiro.c
r249188r249189
12401240   }
12411241}
12421242
1243inline UINT8 *nv2a_renderer::read_pixel(int x, int y, UINT32 c[4])
1244{
1245   UINT32 offset;
1246   UINT32 color;
1247   UINT32 *addr;
1248   UINT16 *addr16;
1249   UINT8 *addr8;
1250
1251   if (type_rendertarget == SWIZZLED)
1252      offset = (dilated0[dilate_rendertarget][x] + dilated1[dilate_rendertarget][y]) * bytespixel_rendertarget;
1253   else // type_rendertarget == LINEAR*/
1254      offset = pitch_rendertarget * y + x * bytespixel_rendertarget;
1255   switch (colorformat_rendertarget) {
1256   case NV2A_COLOR_FORMAT_R5G6B5:
1257      addr16 = (UINT16 *)((UINT8 *)rendertarget + offset);
1258      color = *addr16;
1259      c[3] = 0xff;
1260      c[2] = pal5bit((color & 0xf800) >> 11);
1261      c[1] = pal6bit((color & 0x07e0) >> 5);
1262      c[0] = pal5bit(color & 0x1f);
1263      return (UINT8 *)addr16;
1264   case NV2A_COLOR_FORMAT_X8R8G8B8:
1265      addr = (UINT32 *)((UINT8 *)rendertarget + offset);
1266      color = *addr;
1267
1268      c[3] = 0xff;
1269      c[2] = (color >> 16) & 255;
1270      c[1] = (color >> 8) & 255;
1271      c[0] = color & 255;
1272      return (UINT8 *)addr;
1273   case NV2A_COLOR_FORMAT_A8R8G8B8:
1274      addr = (UINT32 *)((UINT8 *)rendertarget + offset);
1275      color = *addr;
1276      c[3] = color >> 24;
1277      c[2] = (color >> 16) & 255;
1278      c[1] = (color >> 8) & 255;
1279      c[0] = color & 255;
1280      return (UINT8 *)addr;
1281   case NV2A_COLOR_FORMAT_B8:
1282      addr8 = (UINT8 *)rendertarget + offset;
1283      c[0] = *addr8;
1284      c[1] = c[2] = 0;
1285      c[3] = 0xff;
1286      return addr8;
1287   }
1288   return NULL;
1289}
1290
12911243void nv2a_renderer::write_pixel(int x, int y, UINT32 color, UINT32 depth)
12921244{
1293   UINT8 *addr;
1294   UINT32 *daddr32;
1295   UINT16 *daddr16;
1296   UINT32 deptsten;
1245   UINT32 *addr, *daddr;
1246   UINT32 fbcolor, deptsten;
12971247   UINT32 c[4], fb[4], s[4], d[4], cc[4];
12981248   UINT32 dep, sten, stenc, stenv;
12991249   bool stencil_passed;
13001250   bool depth_passed;
13011251
1302   fb[3] = fb[2] = fb[1] = fb[0] = 0;
1303   addr = NULL;
1252   if (type_rendertarget == SWIZZLED)
1253      addr = rendertarget + (dilated0[dilate_rendertarget][x] + dilated1[dilate_rendertarget][y]);
1254   else // type_rendertarget == LINEAR*/
1255      addr = rendertarget + (pitch_rendertarget / 4)*y + x;
1256   fbcolor = 0;
13041257   if (color_mask != 0)
1305      addr = read_pixel(x, y, fb);
1306   if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z24S8) {
1307      daddr32 = depthbuffer + (pitch_depthbuffer / 4) * y + x;
1308      deptsten = *daddr32;
1309      dep = deptsten >> 8;
1310      sten = deptsten & 255;
1311      daddr16 = NULL;
1312   }
1313   else if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z16) {
1314      daddr16 = (UINT16 *)depthbuffer + (pitch_depthbuffer / 2) * y + x;
1315      deptsten = *daddr16;
1316      dep = (deptsten << 8) | 0xff;
1317      sten = 0;
1318      daddr32 = NULL;
1319   }
1320   else {
1321      daddr32 = NULL;
1322      daddr16 = NULL;
1323      dep = 0xffffff;
1324      sten = 0;
1325   }
1326   if (depth > 0xffffff)
1327      depth = 0xffffff;
1258      fbcolor = *addr;
1259   daddr=depthbuffer + (pitch_depthbuffer / 4)*y + x;
1260   deptsten = *daddr;
13281261   c[3] = color >> 24;
13291262   c[2] = (color >> 16) & 255;
13301263   c[1] = (color >> 8) & 255;
13311264   c[0] = color & 255;
1265   fb[3] = fbcolor >> 24;
1266   fb[2] = (fbcolor >> 16) & 255;
1267   fb[1] = (fbcolor >> 8) & 255;
1268   fb[0] = fbcolor & 255;
13321269   cc[3] = blend_color >> 24;
13331270   cc[2] = (blend_color >> 16) & 255;
13341271   cc[1] = (blend_color >> 8) & 255;
13351272   cc[0] = blend_color & 255;
1273   dep = deptsten >> 8;
1274   sten = deptsten & 255;
1275   if (depth > 0xffffff)
1276      depth = 0xffffff;
1277   if (depth & 0x80000000)
1278      depth = 0;
13361279   // ownership test and scissor test not done
13371280   // alpha test
13381281   if (alpha_test_enabled) {
r249188r249189
14401383               sten = 255;
14411384            break;
14421385         }
1443         if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z24S8) {
1444            deptsten = (dep << 8) | sten;
1445            *daddr32 = deptsten;
1446         }
1447         else if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z16) {
1448            deptsten = dep >> 8;
1449            *daddr16 = (UINT16)deptsten;
1450         }
1386         deptsten = (dep << 8) | sten;
1387         *daddr = deptsten;
14511388         return;
14521389      }
14531390   }
r249188r249189
15211458               sten = 255;
15221459            break;
15231460         }
1524         if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z24S8) {
1525            deptsten = (dep << 8) | sten;
1526            *daddr32 = deptsten;
1527         }
1528         else if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z16) {
1529            deptsten = dep >> 8;
1530            *daddr16 = (UINT16)deptsten;
1531         }
1461         deptsten = (dep << 8) | sten;
1462         *daddr = deptsten;
15321463         return;
15331464      }
15341465      switch (stencil_op_zpass) {
r249188r249189
18511782      }
18521783   }
18531784   if (color_mask != 0) {
1854      UINT32 ct,ft,w;
1785      UINT32 fbcolor_tmp;
18551786
1856      ct = (c[3] << 24) | (c[2] << 16) | (c[1] << 8) | c[0];
1857      ft = (fb[3] << 24) | (fb[2] << 16) | (fb[1] << 8) | fb[0];
1858      w = (ft & ~color_mask) | (ct & color_mask);
1859      switch (colorformat_rendertarget) {
1860      case NV2A_COLOR_FORMAT_R5G6B5:
1861         w = ((w >> 8) & 0xf800) + ((w >> 5) & 0x7e0) + ((w >> 3) & 0x1f);
1862         *((UINT16 *)addr) = (UINT16)w;
1863         break;
1864      case NV2A_COLOR_FORMAT_X8R8G8B8:
1865         *((UINT32 *)addr) = w;
1866         break;
1867      case NV2A_COLOR_FORMAT_A8R8G8B8:
1868         *((UINT32 *)addr) = w;
1869         break;
1870      case NV2A_COLOR_FORMAT_B8:
1871         *addr = (UINT8)w;
1872         break;
1873      }
1787      fbcolor_tmp = (c[3] << 24) | (c[2] << 16) | (c[1] << 8) | c[0];
1788      *addr = (fbcolor & ~color_mask) | (fbcolor_tmp & color_mask);
18741789   }
18751790   if (depth_write_enabled)
18761791      dep = depth;
1877   if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z24S8) {
1878      deptsten = (dep << 8) | sten;
1879      *daddr32 = deptsten;
1880   }
1881   else if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z16) {
1882      deptsten = dep >> 8;
1883      *daddr16 = (UINT16)deptsten;
1884   }
1792   deptsten = (dep << 8) | sten;
1793   *daddr = deptsten;
18851794}
18861795
18871796void nv2a_renderer::render_color(INT32 scanline, const extent_t &extent, const nvidia_object_data &objectdata, int threadid)
r249188r249189
23292238   }
23302239}
23312240
2332void nv2a_renderer::clear_depth_buffer(int what, UINT32 value)
2333{
2334   int m;
2335
2336   m = antialias_control;
2337   if (antialiasing_rendertarget != 0)
2338      m = 2;
2339   else
2340      m = 1;
2341   if (what == 3) {
2342      if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z24S8) {
2343         UINT32 *p, *pl;
2344         int x, y;
2345
2346         pl = (UINT32 *)depthbuffer;
2347         for (y = (limits_rendertarget.bottom() + 1) * m; y != 0; y--) {
2348            p = pl;
2349            for (x = (limits_rendertarget.right() + 1) * m; x != 0; x--) {
2350               *p = value;
2351               p++;
2352            }
2353            pl = pl + pitch_rendertarget / 4;
2354         }
2355      }
2356      else if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z16) {
2357         UINT16 *p, *pl;
2358         int x, y;
2359
2360         pl = (UINT16 *)depthbuffer;
2361         for (y = (limits_rendertarget.bottom() + 1) * m; y != 0; y--) {
2362            p = pl;
2363            for (x = (limits_rendertarget.right() + 1) * m; x != 0; x--) {
2364               *p = (UINT16)value;
2365               p++;
2366            }
2367            pl = pl + pitch_rendertarget / 2;
2368         }
2369      }
2370   }
2371   else {
2372      if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z24S8) {
2373         UINT32 mask;
2374         UINT32 *p, *pl;
2375         int x, y;
2376
2377         if ((what & 0x03) == 2)
2378            mask = 0x000000ff;
2379         else
2380            mask = 0xffffff00;
2381         value = value & mask;
2382         pl = depthbuffer;
2383         for (y = (limits_rendertarget.bottom() + 1) * m; y != 0; y--) {
2384            p = pl;
2385            for (x = (limits_rendertarget.right() + 1) * m; x != 0; x--) {
2386               *p = (*p & ~mask) | value;
2387               p++;
2388            }
2389            pl = pl + pitch_rendertarget / 4;
2390         }
2391      }
2392      else if ((depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z16) && (what == 1)) {
2393         UINT16 *p, *pl;
2394         int x, y;
2395
2396         pl = (UINT16 *)depthbuffer;
2397         for (y = (limits_rendertarget.bottom() + 1) * m; y != 0; y--) {
2398            p = pl;
2399            for (x = (limits_rendertarget.right() + 1) * m; x != 0; x--) {
2400               *p = (UINT16)value;
2401               p++;
2402            }
2403            pl = pl + pitch_rendertarget / 2;
2404         }
2405      }
2406   }
2407}
2408
24092241int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UINT32 subchannel, UINT32 method, UINT32 address, int &countlen)
24102242{
24112243   UINT32 maddress;
r249188r249189
25272359            convert_vertices_poly(vert, xy, 4);
25282360            render_polygon<4>(limits_rendertarget, renderspans, 4 + 4 * 2, xy); // 4 rgba, 4 texture units 2 uv
25292361         }
2530         wait();
25312362      }
25322363      else if (type == nv2a_renderer::TRIANGLE_FAN) {
25332364         if ((countlen * mult + indexesleft_count) >= 3) {
r249188r249189
25742405            convert_vertices_poly(vert, xy, 3);
25752406            render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, xy[0], xy[1], xy[2]); // 4 rgba, 4 texture units 2 uv
25762407         }
2577         wait();
25782408      }
25792409      else if (type == nv2a_renderer::TRIANGLE_STRIP) {
25802410         if ((countlen * mult + indexesleft_count) >= 3) {
r249188r249189
26022432                  xy[(n + 2) & 3].y = xy[(n + 2) & 3].y + 1.0f;
26032433               render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, xy[((n & 1) + n) & 3], xy[((~n & 1) + n) & 3], xy[(2 + n) & 3]);
26042434            }
2605            wait();
26062435         }
26072436      }
26082437      else {
r249188r249189
26902519            address = address + c * 3;
26912520            render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, xy[0], xy[1], xy[2]); // 4 rgba, 4 texture units 2 uv
26922521         }
2693         wait();
26942522      }
26952523      else if (type == nv2a_renderer::TRIANGLE_STRIP) {
26962524         vertex_nv vert[4];
r249188r249189
28382666      space.write_dword(base + offset, data);
28392667      countlen--;
28402668   }
2841   if (maddress == 0x1d7c) {
2842      antialias_control = data;
2843      countlen--;
2844   }
28452669   if (maddress == 0x1d98) {
28462670      countlen--;
28472671   }
r249188r249189
28512675   if (maddress == 0x1d94) {
28522676      int m;
28532677
2854      m = antialias_control;
2678      m = channel[chanel][subchannel].object.method[0x1d7c / 4];
28552679      if (antialiasing_rendertarget != 0)
28562680         m = 2;
28572681      else
r249188r249189
28592683      // possible buffers: color, depth, stencil
28602684      // clear framebuffer
28612685      if (data & 0xf0) {
2862         if (bytespixel_rendertarget == 4) {
2863            bitmap_rgb32 bm(rendertarget, (limits_rendertarget.right() + 1) * m, (limits_rendertarget.bottom() + 1) * m, pitch_rendertarget / 4);
2864
2865            UINT32 color = channel[chanel][subchannel].object.method[0x1d90 / 4];
2866            bm.fill(color);
2867         }
2868         else if (bytespixel_rendertarget == 2) {
2869            bitmap_ind16 bm((UINT16 *)rendertarget, (limits_rendertarget.right() + 1) * m, (limits_rendertarget.bottom() + 1) * m, pitch_rendertarget / 2);
2870
2871            UINT16 color = channel[chanel][subchannel].object.method[0x1d90 / 4] & 0xffff;
2872
2873            bm.fill(color);
2874         }
2875         else if (bytespixel_rendertarget == 1) {
2876            UINT8 color = channel[chanel][subchannel].object.method[0x1d90 / 4] & 0xff;
2877
2878            memset(rendertarget, color, pitch_rendertarget*(limits_rendertarget.bottom() + 1) * m);
2879         }
2686         bitmap_rgb32 bm(rendertarget, (limits_rendertarget.right() + 1) * m, (limits_rendertarget.bottom() + 1) * m, pitch_rendertarget / 4); // why *2 ?
2687         // clear colors
2688         UINT32 color = channel[chanel][subchannel].object.method[0x1d90 / 4];
2689         bm.fill(color);
28802690#ifdef LOG_NV2A
28812691         printf("clearscreen\n\r");
28822692#endif
28832693      }
2884      clear_depth_buffer(data & 3, channel[chanel][subchannel].object.method[0x1d8c / 4]);
2694      if ((data & 0x03) == 3) {
2695         bitmap_rgb32 bm(depthbuffer, (limits_rendertarget.right() + 1) * m, (limits_rendertarget.bottom() + 1) * m, pitch_rendertarget / 4); // why *2 ?
2696         // clear zbuffer and stencil
2697         UINT32 depth_stencil = channel[chanel][subchannel].object.method[0x1d8c / 4];
2698         bm.fill(depth_stencil);
2699      }
2700      else if (((data & 0x03) == 1) || ((data & 0x03) == 2))
2701         logerror("Unsupported clear method parameter %d\n\r", data & 0x03);
28852702      countlen--;
28862703   }
28872704   if (maddress == 0x0200) {
r249188r249189
29032720      log2width_rendertarget = (data >> 16) & 255;
29042721      antialiasing_rendertarget = (data >> 12) & 15;
29052722      type_rendertarget = (data >> 8) & 15;
2906      depthformat_rendertarget = (data >> 4) & 15;
2907      colorformat_rendertarget = (data >> 0) & 15;
2908      switch (colorformat_rendertarget) {
2909      case NV2A_COLOR_FORMAT_R5G6B5:
2910         bytespixel_rendertarget = 2;
2911         break;
2912      case NV2A_COLOR_FORMAT_X8R8G8B8:
2913      case NV2A_COLOR_FORMAT_A8R8G8B8:
2914         bytespixel_rendertarget = 4;
2915         break;
2916      case NV2A_COLOR_FORMAT_B8:
2917         bytespixel_rendertarget = 1;
2918         break;
2919      default:
2920#ifdef LOG_NV2A
2921         printf("Unknown render target color format %d\n\r", colorformat_rendertarget);
2922#endif
2923         bytespixel_rendertarget = 4;
2924         break;
2925      }
2723      depth_rendertarget = (data >> 4) & 15;
2724      color_rendertarget = (data >> 0) & 15;;
29262725      dilate_rendertarget = dilatechose[(log2width_rendertarget << 4) + log2height_rendertarget];
29272726   }
29282727   if (maddress == 0x020c) {
trunk/src/mame/video/hng64.c
r249188r249189
166166// pppppppp ff--atttt tttttttt tttttttt
167167#define HNG64_GET_TILE_INFO                                                    \
168168{                                                                              \
169   UINT16 tilemapinfo = (m_videoregs[reg]>>shift)&0xffff;                     \
169   UINT16 tilemapinfo = (m_videoregs[reg]>>shift)&0xffff;                 \
170170   int tileno,pal, flip;                                                      \
171                                                            \
172   tileno = m_videoram[tile_index+(offset/4)];                                \
173                                                            \
171                                                            \
172   tileno = m_videoram[tile_index+(offset/4)];                            \
173                                                            \
174174   pal = (tileno&0xff000000)>>24;                                             \
175175   flip =(tileno&0x00c00000)>>22;                                             \
176                                                            \
176                                                            \
177177   if (tileno&0x200000)                                                       \
178178   {                                                                          \
179      tileno = (tileno & m_videoregs[0x0b]) | m_videoregs[0x0c];             \
179      tileno = (tileno & m_videoregs[0x0b]) | m_videoregs[0x0c];     \
180180   }                                                                          \
181                                                            \
181                                                            \
182182   tileno &= 0x1fffff;                                                        \
183                                                            \
183                                                            \
184184   if (size==0)                                                               \
185185   {                                                                          \
186186      if (tilemapinfo&0x400)                                                 \
187187      {                                                                      \
188         SET_TILE_INFO_MEMBER(1,tileno>>1,pal>>4,TILE_FLIPYX(flip));        \
188         SET_TILE_INFO_MEMBER(1,tileno>>1,pal>>4,TILE_FLIPYX(flip));               \
189189      }                                                                      \
190190      else                                                                   \
191191      {                                                                      \
192         SET_TILE_INFO_MEMBER(0,tileno, pal,TILE_FLIPYX(flip));             \
192         SET_TILE_INFO_MEMBER(0,tileno, pal,TILE_FLIPYX(flip));                    \
193193      }                                                                      \
194194   }                                                                          \
195195   else                                                                       \
196196   {                                                                          \
197197      if (tilemapinfo&0x400)                                                 \
198198      {                                                                      \
199         SET_TILE_INFO_MEMBER(3,tileno>>3,pal>>4,TILE_FLIPYX(flip));        \
199         SET_TILE_INFO_MEMBER(3,tileno>>3,pal>>4,TILE_FLIPYX(flip));               \
200200      }                                                                      \
201201      else                                                                   \
202202      {                                                                      \
203         SET_TILE_INFO_MEMBER(2,tileno>>2, pal,TILE_FLIPYX(flip));          \
203         SET_TILE_INFO_MEMBER(2,tileno>>2, pal,TILE_FLIPYX(flip));                 \
204204      }                                                                      \
205205   }                                                                          \
206206}
207
208207TILE_GET_INFO_MEMBER(hng64_state::get_hng64_tile0_8x8_info)
209208{
210209   int offset = 0x00000;
r249188r249189
385384-------------------------------------------------*/
386385
387386#define HNG64_ROZ_PLOT_PIXEL(INPUT_VAL)                                                 \
388do {                                                                                    \
389   if (blit->drawformat == HNG64_TILEMAP_NORMAL)                                       \
390      *(UINT32 *)dest = clut[INPUT_VAL];                                              \
391   else if (blit->drawformat == HNG64_TILEMAP_ADDITIVE)                                \
387do {                                                                                \
388   if (blit->drawformat == HNG64_TILEMAP_NORMAL)                                   \
389      *(UINT32 *)dest = clut[INPUT_VAL];                                          \
390   else if (blit->drawformat == HNG64_TILEMAP_ADDITIVE)                            \
392391      *(UINT32 *)dest = alpha_additive_r32(*(UINT32 *)dest, clut[INPUT_VAL], alpha);  \
393   else if (blit->drawformat == HNG64_TILEMAP_ALPHA)                                   \
394      *(UINT32 *)dest = alpha_blend_r32(*(UINT32 *)dest, clut[INPUT_VAL], alpha);     \
392   else if (blit->drawformat == HNG64_TILEMAP_ALPHA)                               \
393      *(UINT32 *)dest = alpha_blend_r32(*(UINT32 *)dest, clut[INPUT_VAL], alpha); \
395394} while (0)
396395
397396void hng64_state::hng64_tilemap_draw_roz_core(screen_device &screen, tilemap_t *tmap, const blit_parameters *blit,
r249188r249189
11231122      // Blit the color buffer into the primary bitmap
11241123      for (y = cliprect.min_y; y <= cliprect.max_y; y++)
11251124      {
1126         UINT32 *src = &m_poly_renderer->colorBuffer3d().pix32(y, cliprect.min_x);
1125         UINT32 *src = &m_colorBuffer3d[y * cliprect.max_x];
11271126         UINT32 *dst = &bitmap.pix32(y, cliprect.min_x);
11281127
11291128         for (x = cliprect.min_x; x <= cliprect.max_x; x++)
r249188r249189
12351234
12361235void hng64_state::video_start()
12371236{
1237   const rectangle &visarea = m_screen->visible_area();
1238
12381239   m_old_animmask = -1;
12391240   m_old_animbits = -1;
12401241   m_old_tileflags[0] = -1;
r249188r249189
12681269   // Debug switch, turn on / off additive blending on a per-tilemap basis
12691270   m_additive_tilemap_debug = 0;
12701271
1271   // Rasterizer creation
1272    m_poly_renderer = auto_alloc(machine(), hng64_poly_renderer(*this));
1272   // 3d Buffer Allocation
1273   m_depthBuffer3d = auto_alloc_array(machine(), float,  (visarea.max_x + 1)*(visarea.max_y + 1));
1274   m_colorBuffer3d = auto_alloc_array(machine(), UINT32, (visarea.max_x + 1)*(visarea.max_y + 1));
12731275
1274    // 3d information
1276
12751277   m_dl = auto_alloc_array(machine(), UINT16, 0x200/2);
12761278   polys.resize(1024*5);
12771279
trunk/src/mame/video/hng64_3d.c
r249188r249189
11// license:LGPL-2.1+
22// copyright-holders:David Haywood, Angelo Salese, ElSemi, Andrew Gardner, Andrew Zaferakis
3/* Hyper NeoGeo 64 - 3D bits */
34
5// todo, use poly.c
6
47#include "includes/hng64.h"
58
6/////////////////////////////////
7/// Hyper NeoGeo 64 - 3D bits ///
8/////////////////////////////////
99
1010
11// Polygon rasterizer interface
12hng64_poly_renderer::hng64_poly_renderer(hng64_state& state)
13    : poly_manager<float, hng64_poly_data, 7, HNG64_MAX_POLYGONS>(state.machine())
14    , m_state(state)
15    , m_colorBuffer3d(state.m_screen->visible_area().width(), state.m_screen->visible_area().height())
16{
17    const INT32 bufferSize = state.m_screen->visible_area().width() * state.m_screen->visible_area().height();
18    m_depthBuffer3d = auto_alloc_array(state.machine(), float, bufferSize);
19}
20
21
22
2311// Hardware calls these '3d buffers'
2412//   They're only read during the startup check of fatfurwa.  Z-buffer memory?  Front buffer, back buffer?
2513//   They're definitely mirrored in the startup test, according to ElSemi
r249188r249189
6654   for(int packetStart=0;packetStart<0x200;packetStart+=32)
6755   {
6856      // Send it off to the 3d subsystem.
69      hng64_command3d(&m_dl[packetStart/2]);
57      hng64_command3d( &m_dl[packetStart/2] );
7058   }
7159
7260   machine().scheduler().timer_set(m_maincpu->cycles_to_attotime(0x200*8), timer_expired_delegate(FUNC(hng64_state::hng64_3dfifo_processed),this));
7361g_profiler.stop();
7462}
7563
76TIMER_CALLBACK_MEMBER(hng64_state::hng64_3dfifo_processed)
64TIMER_CALLBACK_MEMBER(hng64_state::hng64_3dfifo_processed )
7765{
7866// ...
7967   m_set_irq(0x0008);
r249188r249189
596584               polys[*numPolys].vert[m].texCoords[3] = 1.0f;
597585
598586               polys[*numPolys].vert[m].normal[0] = uToF(chunkOffset[9  + (9*m)]);
599               polys[*numPolys].vert[m].normal[1] = uToF(chunkOffset[10 + (9*m)]);
600               polys[*numPolys].vert[m].normal[2] = uToF(chunkOffset[11 + (9*m)]);
587               polys[*numPolys].vert[m].normal[1] = uToF(chunkOffset[10 + (9*m)] );
588               polys[*numPolys].vert[m].normal[2] = uToF(chunkOffset[11 + (9*m)] );
601589               polys[*numPolys].vert[m].normal[3] = 0.0f;
602590            }
603591
r249188r249189
912900      if (packet[2] == 0x0003 && packet[3] == 0x8f37 && m_mcu_type == SHOOT_MCU)
913901         break;
914902
915      recoverPolygonBlock(packet, &numPolys);
903      recoverPolygonBlock( packet, &numPolys);
916904      break;
917905
918906   case 0x0102:    // Geometry with only translation
r249188r249189
932920      miniPacket[7] = 0x7fff;
933921      miniPacket[11] = 0x7fff;
934922      miniPacket[15] = 0x7fff;
935      recoverPolygonBlock(miniPacket, &numPolys);
923      recoverPolygonBlock( miniPacket, &numPolys);
936924
937925      memset(miniPacket, 0, sizeof(UINT16)*16);
938926      for (int i = 0; i < 7; i++) miniPacket[i] = packet[i+8];
r249188r249189
940928      miniPacket[7] = 0x7fff;
941929      miniPacket[11] = 0x7fff;
942930      miniPacket[15] = 0x7fff;
943      recoverPolygonBlock(miniPacket, &numPolys);
931      recoverPolygonBlock( miniPacket, &numPolys);
944932      break;
945933
946934   case 0x1000:    // Unknown: Some sort of global flags?
r249188r249189
961949   {
962950      if (polys[i].visible)
963951      {
964         m_poly_renderer->drawShaded(&polys[i]);
952         drawShaded( &polys[i]);
965953      }
966954   }
967    m_poly_renderer->wait();
968955}
969956
970957void hng64_state::clear3d()
r249188r249189
976963   // Reset the buffers...
977964   for (i = 0; i < (visarea.max_x)*(visarea.max_y); i++)
978965   {
979        m_poly_renderer->depthBuffer3d()[i] = 100.0f;
966      m_depthBuffer3d[i] = 100.0f;
967      m_colorBuffer3d[i] = rgb_t(0, 0, 0, 0);
980968   }
981   
982    // Clear the 3d rasterizer buffer
983    m_poly_renderer->colorBuffer3d().fill(0x00000000, m_screen->visible_area());   
984969
985970   // Set some matrices to the identity...
986971   setIdentity(m_projectionMatrix);
r249188r249189
1009994/////////////////////
1010995
1011996/* 4x4 matrix multiplication */
1012void hng64_state::matmul4(float *product, const float *a, const float *b)
997void hng64_state::matmul4(float *product, const float *a, const float *b )
1013998{
1014999   int i;
10151000   for (i = 0; i < 4; i++)
r249188r249189
10871072// POLYGON CLIPPING CODE //
10881073///////////////////////////
10891074
1075///////////////////////////////////////////////////////////////////////////////////
1076// The remainder of the code in this file is heavily                             //
1077//   influenced by, and sometimes copied verbatim from Andrew Zaferakis' SoftGL  //
1078//   rasterizing system.                                                         //
1079//                                                                               //
1080//   Andrew granted permission for its use in MAME in October of 2004.           //
1081///////////////////////////////////////////////////////////////////////////////////
1082
1083
1084
10901085int hng64_state::Inside(struct polyVert *v, int plane)
10911086{
10921087   switch(plane)
r249188r249189
11631158   Ol[2] = Il0[2] + (Il1[2] - Il0[2]) * t;
11641159}
11651160
1166//////////////////////////////////////////////////////////////////////////
1167// Clip against the volumes defined by the homogeneous clip coordinates //
1168//////////////////////////////////////////////////////////////////////////
1169
11701161void hng64_state::performFrustumClip(struct polygon *p)
11711162{
1172    polyVert *v0;
1173   polyVert *v1;
1174   polyVert *tv;
1163   int i, j, k;
1164   //////////////////////////////////////////////////////////////////////////
1165   // Clip against the volumes defined by the homogeneous clip coordinates //
1166   //////////////////////////////////////////////////////////////////////////
11751167
1176    polygon temp;
1168   struct polygon temp;
1169
1170   struct polyVert *v0;
1171   struct polyVert *v1;
1172   struct polyVert *tv;
1173
11771174   temp.n = 0;
11781175
11791176   // Skip near and far clipping planes ?
1180   for (int j = 0; j <= HNG64_BOTTOM; j++)
1177   for (j = 0; j <= HNG64_BOTTOM; j++)
11811178   {
1182      for (int i = 0; i < p->n; i++)
1179      for (i = 0; i < p->n; i++)
11831180      {
1184         int k = (i+1) % p->n; // Index of next vertex
1181         k = (i+1) % p->n; // Index of next vertex
11851182
11861183         v0 = &p->vert[i];
11871184         v1 = &p->vert[k];
r249188r249189
11931190            memcpy(tv, v1, sizeof(struct polyVert));
11941191            temp.n++;
11951192         }
1193
11961194         else if (Inside(v0, j) && !Inside(v1, j))                   // Edge goes from in to out...
11971195         {
11981196            Intersect(v0, v1, tv, j);
11991197            temp.n++;
12001198         }
1199
12011200         else if (!Inside(v0, j) && Inside(v1, j))                   // Edge goes from out to in...
12021201         {
12031202            Intersect(v0, v1, tv, j);
r249188r249189
12081207
12091208      p->n = temp.n;
12101209
1211      for (int i = 0; i < temp.n; i++)
1210      for (i = 0; i < temp.n; i++)
12121211      {
12131212         memcpy(&p->vert[i], &temp.vert[i], sizeof(struct polyVert));
12141213      }
r249188r249189
12171216   }
12181217}
12191218
1220void hng64_poly_renderer::render_scanline(INT32 scanline, const extent_t& extent, const hng64_poly_data& renderData, int threadid)
1219
1220
1221/*********************************************************************/
1222/**   FillSmoothTexPCHorizontalLine                                 **/
1223/**     Input: Color Buffer (framebuffer), depth buffer, width and  **/
1224/**            height of framebuffer, starting, and ending values   **/
1225/**            for x and y, constant y.  Fills horizontally with    **/
1226/**            z,r,g,b interpolation.                               **/
1227/**                                                                 **/
1228/**     Output: none                                                **/
1229/*********************************************************************/
1230inline void hng64_state::FillSmoothTexPCHorizontalLine(
1231                                 const polygonRasterOptions& prOptions,
1232                                 int x_start, int x_end, int y, float z_start, float z_delta,
1233                                 float w_start, float w_delta, float r_start, float r_delta,
1234                                 float g_start, float g_delta, float b_start, float b_delta,
1235                                 float s_start, float s_delta, float t_start, float t_delta)
12211236{
1222    // Pull the parameters out of the extent structure
1223    float z = extent.param[0].start;
1224    float w = extent.param[1].start;
1225   float lightR = extent.param[2].start;
1226   float lightG = extent.param[3].start;
1227   float lightB = extent.param[4].start;
1228   float s = extent.param[5].start;
1229    float t = extent.param[6].start;
1230   
1231    const float dz = extent.param[0].dpdx;
1232    const float dw = extent.param[1].dpdx;
1233   const float dlightR = extent.param[2].dpdx;
1234   const float dlightG = extent.param[3].dpdx;
1235   const float dlightB = extent.param[4].dpdx;
1236   const float ds = extent.param[5].dpdx;
1237    const float dt = extent.param[6].dpdx;
1238   
1239    // Pointers to the pixel buffers
1240    UINT32* colorBuffer = &m_colorBuffer3d.pix32(scanline, extent.startx);
1241    float*  depthBuffer = &m_depthBuffer3d[(scanline * m_state.m_screen->visible_area().width()) + extent.startx];
1237   float*  db = &(m_depthBuffer3d[(y * m_screen->visible_area().max_x) + x_start]);
1238   UINT32* cb = &(m_colorBuffer3d[(y * m_screen->visible_area().max_x) + x_start]);
12421239
1243    const UINT8 *textureOffset = &m_state.m_texturerom[renderData.texIndex * 1024 * 1024];
1244   
1245    // Step over each pixel in the horizontal span
1246    for(int x = extent.startx; x < extent.stopx; x++)
1247    {
1248        if (z < *depthBuffer)
1249        {
1250            // Translucency currently isn't an issue, so soldier on
1251            *depthBuffer = z;
1240   UINT8 paletteEntry = 0;
1241   float t_coord, s_coord;
1242   const UINT8 *gfx = m_texturerom;
1243   const UINT8 *textureOffset = &gfx[prOptions.texIndex * 1024 * 1024];
12521244
1253            // Multiply back through by w for everything that was interpolated perspective-correctly
1254            const float sCorrect = s / w;
1255            const float tCorrect = t / w;
1256            const float rCorrect = lightR / w;
1257            const float gCorrect = lightG / w;
1258            const float bCorrect = lightB / w;
1259           
1260            if ((renderData.debugColor & 0xff000000) == 0x01000000)
1245   for (; x_start <= x_end; x_start++)
1246   {
1247      if (z_start < (*db))
1248      {
1249         // MULTIPLY BACK THROUGH BY W
1250         t_coord = t_start / w_start;
1251         s_coord = s_start / w_start;
1252
1253         if ((prOptions.debugColor & 0xff000000) == 0x01000000)
12611254         {
1262            // ST color mode
1263            *colorBuffer = rgb_t(255, (UINT8)(sCorrect*255.0f), (UINT8)(tCorrect*255.0f), (UINT8)(0));
1255            // UV COLOR MODE
1256            *cb = rgb_t(255, (UINT8)(s_coord*255.0f), (UINT8)(t_coord*255.0f), (UINT8)(0));
1257            *db = z_start;
12641258         }
1265         else if ((renderData.debugColor & 0xff000000) == 0x02000000)
1259         else if ((prOptions.debugColor & 0xff000000) == 0x02000000)
12661260         {
1267            // Lighting only
1268            *colorBuffer = rgb_t(255, (UINT8)rCorrect, (UINT8)gCorrect, (UINT8)bCorrect);
1261            // Lit
1262            *cb = rgb_t(255, (UINT8)(r_start/w_start), (UINT8)(g_start/w_start), (UINT8)(b_start/w_start));
1263            *db = z_start;
12691264         }
1270         else if ((renderData.debugColor & 0xff000000) == 0xff000000)
1265         else if ((prOptions.debugColor & 0xff000000) == 0xff000000)
12711266         {
1272            // Debug color mode
1273            *colorBuffer = renderData.debugColor;
1267            // DEBUG COLOR MODE
1268            *cb = prOptions.debugColor;
1269            *db = z_start;
12741270         }
12751271         else
12761272         {
r249188r249189
12781274            float textureT = 0.0f;
12791275
12801276            // Standard & Half-Res textures
1281            if (renderData.texType == 0x0)
1277            if (prOptions.texType == 0x0)
12821278            {
1283               textureS = sCorrect * 1024.0f;
1284               textureT = tCorrect * 1024.0f;
1279               textureS = s_coord * 1024.0f;
1280               textureT = t_coord * 1024.0f;
12851281            }
1286            else if (renderData.texType == 0x1)
1282            else if (prOptions.texType == 0x1)
12871283            {
1288               textureS = sCorrect * 512.0f;
1289               textureT = tCorrect * 512.0f;
1284               textureS = s_coord * 512.0f;
1285               textureT = t_coord * 512.0f;
12901286            }
12911287
1288            // stuff in mode 1 here already looks good?
12921289            // Small-Page textures
1293            if (renderData.texPageSmall == 2)
1290            if (prOptions.texPageSmall == 2)
12941291            {
12951292               textureT = fmod(textureT, 256.0f);
12961293               textureS = fmod(textureS, 256.0f);
12971294
1298               textureT += (256.0f * (renderData.texPageHorizOffset>>1));
1299               textureS += (256.0f * (renderData.texPageVertOffset>>1));
1295               textureT += (256.0f * (prOptions.texPageHorizOffset>>1));
1296               textureS += (256.0f * (prOptions.texPageVertOffset>>1));
13001297            }
1301            else if (renderData.texPageSmall == 3)
1298            else if (prOptions.texPageSmall == 3)
13021299            {
13031300               textureT = fmod(textureT, 128.0f);
13041301               textureS = fmod(textureS, 128.0f);
13051302
1306               textureT += (128.0f * (renderData.texPageHorizOffset>>0));
1307               textureS += (128.0f * (renderData.texPageVertOffset>>0));
1303               textureT += (128.0f * (prOptions.texPageHorizOffset>>0));
1304               textureS += (128.0f * (prOptions.texPageVertOffset>>0));
13081305            }
13091306
1310            UINT8 paletteEntry = textureOffset[((int)textureS)*1024 + (int)textureT];
1307            paletteEntry = textureOffset[((int)textureS)*1024 + (int)textureT];
13111308
1312            // Naive Alpha Implementation (?) - don't draw if you're at texture index 0...
1309            // Naieve Alpha Implementation (?) - don't draw if you're at texture index 0...
13131310            if (paletteEntry != 0)
13141311            {
13151312               // The color out of the texture
1316               paletteEntry %= renderData.palPageSize;
1317               rgb_t color = m_state.m_palette->pen(renderData.palOffset + paletteEntry);
1313               paletteEntry %= prOptions.palPageSize;
1314               rgb_t color = m_palette->pen(prOptions.palOffset + paletteEntry);
13181315
13191316               // Apply the lighting
1320               float rIntensity = rCorrect / 255.0f;
1321               float gIntensity = gCorrect / 255.0f;
1322               float bIntensity = bCorrect / 255.0f;
1323               float red   = color.r() * rIntensity;
1317               float rIntensity = (r_start/w_start) / 255.0f;
1318               float gIntensity = (g_start/w_start) / 255.0f;
1319               float bIntensity = (b_start/w_start) / 255.0f;
1320               float red   = color.r()   * rIntensity;
13241321               float green = color.g() * gIntensity;
1325               float blue  = color.b() * bIntensity;
1322               float blue  = color.b() * bIntensity;
13261323
13271324               // Clamp and finalize
13281325               red = color.r() + red;
r249188r249189
13351332
13361333               color = rgb_t(255, (UINT8)red, (UINT8)green, (UINT8)blue);
13371334
1338               *colorBuffer = color;
1335               *cb = color;
1336               *db = z_start;
13391337            }
13401338         }
1341        }
1339      }
1340      db++;
1341      cb++;
1342      z_start += z_delta;
1343      w_start += w_delta;
1344      r_start += r_delta;
1345      g_start += g_delta;
1346      b_start += b_delta;
1347      s_start += s_delta;
1348      t_start += t_delta;
1349   }
1350}
13421351
1343        z += dz;
1344        w += dw;
1345        lightR += dlightR;
1346      lightG += dlightG;
1347      lightB += dlightB;
1348      s += ds;
1349        t += dt;
1350       
1351        colorBuffer++;
1352        depthBuffer++;
1353    }
1352//----------------------------------------------------------------------------
1353// Given 3D triangle ABC in screen space with clipped coordinates within the following
1354// bounds: x in [0,W], y in [0,H], z in [0,1]. The origin for (x,y) is in the bottom
1355// left corner of the pixel grid. z=0 is the near plane and z=1 is the far plane,
1356// so lesser values are closer. The coordinates of the pixels are evenly spaced
1357// in x and y 1 units apart starting at the bottom-left pixel with coords
1358// (0.5,0.5). In other words, the pixel sample point is in the center of the
1359// rectangular grid cell containing the pixel sample. The framebuffer has
1360// dimensions width x height (WxH). The Color buffer is a 1D array (row-major
1361// order) with 3 unsigned chars per pixel (24-bit color). The Depth buffer is
1362// a 1D array (also row-major order) with a float value per pixel
1363// For a pixel location (x,y) we can obtain
1364// the Color and Depth array locations as: Color[(((int)y)*W+((int)x))*3]
1365// (for the red value, green is offset +1, and blue is offset +2 and
1366// Depth[((int)y)*W+((int)x)]. Fills the pixels contained in the triangle
1367// with the global current color and the properly linearly interpolated depth
1368// value (performs Z-buffer depth test before writing new pixel).
1369// Pixel samples that lie inside the triangle edges are filled with
1370// a bias towards the minimum values (samples that lie exactly on a triangle
1371// edge are filled only for minimum x values along a horizontal span and for
1372// minimum y values, samples lying on max values are not filled).
1373// Per-vertex colors are RGB floating point triplets in [0.0,255.0]. The vertices
1374// include their w-components for use in linearly interpolating perspectively
1375// correct color (RGB) and texture-coords (st) across the face of the triangle.
1376// A texture image of RGB floating point triplets of size TWxWH is also given.
1377// Texture colors are normalized RGB values in [0,1].
1378//   clamp and repeat wrapping modes : Wrapping={0,1}
1379//   nearest and bilinear filtering: Filtering={0,1}
1380//   replace and modulate application modes: Function={0,1}
1381//---------------------------------------------------------------------------
1382void hng64_state::RasterizeTriangle_SMOOTH_TEX_PC(
1383                                 float A[4], float B[4], float C[4],
1384                                 float Ca[3], float Cb[3], float Cc[3], // PER-VERTEX RGB COLORS
1385                                 float Ta[2], float Tb[2], float Tc[2], // PER-VERTEX (S,T) TEX-COORDS
1386                                 const polygonRasterOptions& prOptions)
1387{
1388   // Get our order of points by increasing y-coord
1389   float *p_min = ((A[1] <= B[1]) && (A[1] <= C[1])) ? A : ((B[1] <= A[1]) && (B[1] <= C[1])) ? B : C;
1390   float *p_max = ((A[1] >= B[1]) && (A[1] >= C[1])) ? A : ((B[1] >= A[1]) && (B[1] >= C[1])) ? B : C;
1391   float *p_mid = ((A != p_min) && (A != p_max)) ? A : ((B != p_min) && (B != p_max)) ? B : C;
1392
1393   // Perspectively correct color interpolation, interpolate r/w, g/w, b/w, then divide by 1/w at each pixel (A[3] = 1/w)
1394   float ca[3], cb[3], cc[3];
1395   float ta[2], tb[2], tc[2];
1396
1397   float *c_min;
1398   float *c_mid;
1399   float *c_max;
1400
1401   // We must keep the tex coords straight with the point ordering
1402   float *t_min;
1403   float *t_mid;
1404   float *t_max;
1405
1406   // Find out control points for y, this divides the triangle into upper and lower
1407   int   y_min;
1408   int   y_max;
1409   int   y_mid;
1410
1411   // Compute the slopes of each line, and color this is used to determine the interpolation
1412   float x1_slope;
1413   float x2_slope;
1414   float z1_slope;
1415   float z2_slope;
1416   float w1_slope;
1417   float w2_slope;
1418   float r1_slope;
1419   float r2_slope;
1420   float g1_slope;
1421   float g2_slope;
1422   float b1_slope;
1423   float b2_slope;
1424   float s1_slope;
1425   float s2_slope;
1426   float t1_slope;
1427   float t2_slope;
1428
1429   // Compute the t values used in the equation Ax = Ax + (Bx - Ax)*t
1430   // We only need one t, because it is only used to compute the start.
1431   // Create storage for the interpolated x and z values for both lines
1432   // also for the RGB interpolation
1433   float t;
1434   float x1_interp;
1435   float z1_interp;
1436   float w1_interp;
1437   float r1_interp;
1438   float g1_interp;
1439   float b1_interp;
1440   float s1_interp;
1441   float t1_interp;
1442
1443   float x2_interp;
1444   float z2_interp;
1445   float w2_interp;
1446   float r2_interp;
1447   float g2_interp;
1448   float b2_interp;
1449   float s2_interp;
1450   float t2_interp;
1451
1452   // Create storage for the horizontal interpolation of z and RGB color and its starting points
1453   // This is used to fill the triangle horizontally
1454   int   x_start,     x_end;
1455   float z_interp_x,  z_delta_x;
1456   float w_interp_x,  w_delta_x;
1457   float r_interp_x,  r_delta_x;
1458   float g_interp_x,  g_delta_x;
1459   float b_interp_x,  b_delta_x;
1460   float s_interp_x,  s_delta_x;
1461   float t_interp_x,  t_delta_x;
1462
1463   ca[0] = Ca[0]; ca[1] = Ca[1]; ca[2] = Ca[2];
1464   cb[0] = Cb[0]; cb[1] = Cb[1]; cb[2] = Cb[2];
1465   cc[0] = Cc[0]; cc[1] = Cc[1]; cc[2] = Cc[2];
1466
1467   // Perspectively correct tex interpolation, interpolate s/w, t/w, then divide by 1/w at each pixel (A[3] = 1/w)
1468   ta[0] = Ta[0]; ta[1] = Ta[1];
1469   tb[0] = Tb[0]; tb[1] = Tb[1];
1470   tc[0] = Tc[0]; tc[1] = Tc[1];
1471
1472   // We must keep the colors straight with the point ordering
1473   c_min = (p_min == A) ? ca : (p_min == B) ? cb : cc;
1474   c_mid = (p_mid == A) ? ca : (p_mid == B) ? cb : cc;
1475   c_max = (p_max == A) ? ca : (p_max == B) ? cb : cc;
1476
1477   // We must keep the tex coords straight with the point ordering
1478   t_min = (p_min == A) ? ta : (p_min == B) ? tb : tc;
1479   t_mid = (p_mid == A) ? ta : (p_mid == B) ? tb : tc;
1480   t_max = (p_max == A) ? ta : (p_max == B) ? tb : tc;
1481
1482   // Find out control points for y, this divides the triangle into upper and lower
1483   y_min  = (((int)p_min[1]) + 0.5 >= p_min[1]) ? (int)p_min[1] : ((int)p_min[1]) + 1;
1484   y_max  = (((int)p_max[1]) + 0.5 <  p_max[1]) ? (int)p_max[1] : ((int)p_max[1]) - 1;
1485   y_mid  = (((int)p_mid[1]) + 0.5 >= p_mid[1]) ? (int)p_mid[1] : ((int)p_mid[1]) + 1;
1486
1487   // Compute the slopes of each line, and color this is used to determine the interpolation
1488   x1_slope = (p_max[0] - p_min[0]) / (p_max[1] - p_min[1]);
1489   x2_slope = (p_mid[0] - p_min[0]) / (p_mid[1] - p_min[1]);
1490   z1_slope = (p_max[2] - p_min[2]) / (p_max[1] - p_min[1]);
1491   z2_slope = (p_mid[2] - p_min[2]) / (p_mid[1] - p_min[1]);
1492   w1_slope = (p_max[3] - p_min[3]) / (p_max[1] - p_min[1]);
1493   w2_slope = (p_mid[3] - p_min[3]) / (p_mid[1] - p_min[1]);
1494   r1_slope = (c_max[0] - c_min[0]) / (p_max[1] - p_min[1]);
1495   r2_slope = (c_mid[0] - c_min[0]) / (p_mid[1] - p_min[1]);
1496   g1_slope = (c_max[1] - c_min[1]) / (p_max[1] - p_min[1]);
1497   g2_slope = (c_mid[1] - c_min[1]) / (p_mid[1] - p_min[1]);
1498   b1_slope = (c_max[2] - c_min[2]) / (p_max[1] - p_min[1]);
1499   b2_slope = (c_mid[2] - c_min[2]) / (p_mid[1] - p_min[1]);
1500   s1_slope = (t_max[0] - t_min[0]) / (p_max[1] - p_min[1]);
1501   s2_slope = (t_mid[0] - t_min[0]) / (p_mid[1] - p_min[1]);
1502   t1_slope = (t_max[1] - t_min[1]) / (p_max[1] - p_min[1]);
1503   t2_slope = (t_mid[1] - t_min[1]) / (p_mid[1] - p_min[1]);
1504
1505   // Compute the t values used in the equation Ax = Ax + (Bx - Ax)*t
1506   // We only need one t, because it is only used to compute the start.
1507   // Create storage for the interpolated x and z values for both lines
1508   // also for the RGB interpolation
1509   t = (((float)y_min) + 0.5 - p_min[1]) / (p_max[1] - p_min[1]);
1510   x1_interp = p_min[0] + (p_max[0] - p_min[0]) * t;
1511   z1_interp = p_min[2] + (p_max[2] - p_min[2]) * t;
1512   w1_interp = p_min[3] + (p_max[3] - p_min[3]) * t;
1513   r1_interp = c_min[0] + (c_max[0] - c_min[0]) * t;
1514   g1_interp = c_min[1] + (c_max[1] - c_min[1]) * t;
1515   b1_interp = c_min[2] + (c_max[2] - c_min[2]) * t;
1516   s1_interp = t_min[0] + (t_max[0] - t_min[0]) * t;
1517   t1_interp = t_min[1] + (t_max[1] - t_min[1]) * t;
1518
1519   t = (((float)y_min) + 0.5 - p_min[1]) / (p_mid[1] - p_min[1]);
1520   x2_interp = p_min[0] + (p_mid[0] - p_min[0]) * t;
1521   z2_interp = p_min[2] + (p_mid[2] - p_min[2]) * t;
1522   w2_interp = p_min[3] + (p_mid[3] - p_min[3]) * t;
1523   r2_interp = c_min[0] + (c_mid[0] - c_min[0]) * t;
1524   g2_interp = c_min[1] + (c_mid[1] - c_min[1]) * t;
1525   b2_interp = c_min[2] + (c_mid[2] - c_min[2]) * t;
1526   s2_interp = t_min[0] + (t_mid[0] - t_min[0]) * t;
1527   t2_interp = t_min[1] + (t_mid[1] - t_min[1]) * t;
1528
1529   // First work on the bottom half of the triangle
1530   // I'm using y_min as the incrementer because it saves space and we don't need it anymore
1531   for (; y_min < y_mid; y_min++) {
1532      // We always want to fill left to right, so we have 2 main cases
1533      // Compute the integer starting and ending points and the appropriate z by
1534      // interpolating.  Remember the pixels are in the middle of the grid, i.e. (0.5,0.5,0.5)
1535      if (x1_interp < x2_interp) {
1536         x_start    = ((((int)x1_interp) + 0.5) >= x1_interp) ? (int)x1_interp : ((int)x1_interp) + 1;
1537         x_end      = ((((int)x2_interp) + 0.5) <  x2_interp) ? (int)x2_interp : ((int)x2_interp) - 1;
1538         z_delta_x  = (z2_interp - z1_interp) / (x2_interp - x1_interp);
1539         w_delta_x  = (w2_interp - w1_interp) / (x2_interp - x1_interp);
1540         r_delta_x  = (r2_interp - r1_interp) / (x2_interp - x1_interp);
1541         g_delta_x  = (g2_interp - g1_interp) / (x2_interp - x1_interp);
1542         b_delta_x  = (b2_interp - b1_interp) / (x2_interp - x1_interp);
1543         s_delta_x  = (s2_interp - s1_interp) / (x2_interp - x1_interp);
1544         t_delta_x  = (t2_interp - t1_interp) / (x2_interp - x1_interp);
1545         t          = (x_start + 0.5 - x1_interp) / (x2_interp - x1_interp);
1546         z_interp_x = z1_interp + (z2_interp - z1_interp) * t;
1547         w_interp_x = w1_interp + (w2_interp - w1_interp) * t;
1548         r_interp_x = r1_interp + (r2_interp - r1_interp) * t;
1549         g_interp_x = g1_interp + (g2_interp - g1_interp) * t;
1550         b_interp_x = b1_interp + (b2_interp - b1_interp) * t;
1551         s_interp_x = s1_interp + (s2_interp - s1_interp) * t;
1552         t_interp_x = t1_interp + (t2_interp - t1_interp) * t;
1553
1554      } else {
1555         x_start    = ((((int)x2_interp) + 0.5) >= x2_interp) ? (int)x2_interp : ((int)x2_interp) + 1;
1556         x_end      = ((((int)x1_interp) + 0.5) <  x1_interp) ? (int)x1_interp : ((int)x1_interp) - 1;
1557         z_delta_x  = (z1_interp - z2_interp) / (x1_interp - x2_interp);
1558         w_delta_x  = (w1_interp - w2_interp) / (x1_interp - x2_interp);
1559         r_delta_x  = (r1_interp - r2_interp) / (x1_interp - x2_interp);
1560         g_delta_x  = (g1_interp - g2_interp) / (x1_interp - x2_interp);
1561         b_delta_x  = (b1_interp - b2_interp) / (x1_interp - x2_interp);
1562         s_delta_x  = (s1_interp - s2_interp) / (x1_interp - x2_interp);
1563         t_delta_x  = (t1_interp - t2_interp) / (x1_interp - x2_interp);
1564         t          = (x_start + 0.5 - x2_interp) / (x1_interp - x2_interp);
1565         z_interp_x = z2_interp + (z1_interp - z2_interp) * t;
1566         w_interp_x = w2_interp + (w1_interp - w2_interp) * t;
1567         r_interp_x = r2_interp + (r1_interp - r2_interp) * t;
1568         g_interp_x = g2_interp + (g1_interp - g2_interp) * t;
1569         b_interp_x = b2_interp + (b1_interp - b2_interp) * t;
1570         s_interp_x = s2_interp + (s1_interp - s2_interp) * t;
1571         t_interp_x = t2_interp + (t1_interp - t2_interp) * t;
1572      }
1573
1574      // Pass the horizontal line to the filler, this could be put in the routine
1575      // then interpolate for the next values of x and z
1576      FillSmoothTexPCHorizontalLine( prOptions,
1577         x_start, x_end, y_min, z_interp_x, z_delta_x, w_interp_x, w_delta_x,
1578         r_interp_x, r_delta_x, g_interp_x, g_delta_x, b_interp_x, b_delta_x,
1579         s_interp_x, s_delta_x, t_interp_x, t_delta_x);
1580      x1_interp += x1_slope;   z1_interp += z1_slope;
1581      x2_interp += x2_slope;   z2_interp += z2_slope;
1582      r1_interp += r1_slope;   r2_interp += r2_slope;
1583      g1_interp += g1_slope;   g2_interp += g2_slope;
1584      b1_interp += b1_slope;   b2_interp += b2_slope;
1585      w1_interp += w1_slope;   w2_interp += w2_slope;
1586      s1_interp += s1_slope;   s2_interp += s2_slope;
1587      t1_interp += t1_slope;   t2_interp += t2_slope;
1588   }
1589
1590   // Now do the same thing for the top half of the triangle.
1591   // We only need to recompute the x2 line because it changes at the midpoint
1592   x2_slope = (p_max[0] - p_mid[0]) / (p_max[1] - p_mid[1]);
1593   z2_slope = (p_max[2] - p_mid[2]) / (p_max[1] - p_mid[1]);
1594   w2_slope = (p_max[3] - p_mid[3]) / (p_max[1] - p_mid[1]);
1595   r2_slope = (c_max[0] - c_mid[0]) / (p_max[1] - p_mid[1]);
1596   g2_slope = (c_max[1] - c_mid[1]) / (p_max[1] - p_mid[1]);
1597   b2_slope = (c_max[2] - c_mid[2]) / (p_max[1] - p_mid[1]);
1598   s2_slope = (t_max[0] - t_mid[0]) / (p_max[1] - p_mid[1]);
1599   t2_slope = (t_max[1] - t_mid[1]) / (p_max[1] - p_mid[1]);
1600
1601   t = (((float)y_mid) + 0.5 - p_mid[1]) / (p_max[1] - p_mid[1]);
1602   x2_interp = p_mid[0] + (p_max[0] - p_mid[0]) * t;
1603   z2_interp = p_mid[2] + (p_max[2] - p_mid[2]) * t;
1604   w2_interp = p_mid[3] + (p_max[3] - p_mid[3]) * t;
1605   r2_interp = c_mid[0] + (c_max[0] - c_mid[0]) * t;
1606   g2_interp = c_mid[1] + (c_max[1] - c_mid[1]) * t;
1607   b2_interp = c_mid[2] + (c_max[2] - c_mid[2]) * t;
1608   s2_interp = t_mid[0] + (t_max[0] - t_mid[0]) * t;
1609   t2_interp = t_mid[1] + (t_max[1] - t_mid[1]) * t;
1610
1611   // We've seen this loop before haven't we?
1612   // I'm using y_mid as the incrementer because it saves space and we don't need it anymore
1613   for (; y_mid <= y_max; y_mid++) {
1614      if (x1_interp < x2_interp) {
1615         x_start    = ((((int)x1_interp) + 0.5) >= x1_interp) ? (int)x1_interp : ((int)x1_interp) + 1;
1616         x_end      = ((((int)x2_interp) + 0.5) <  x2_interp) ? (int)x2_interp : ((int)x2_interp) - 1;
1617         z_delta_x  = (z2_interp - z1_interp) / (x2_interp - x1_interp);
1618         w_delta_x  = (w2_interp - w1_interp) / (x2_interp - x1_interp);
1619         r_delta_x  = (r2_interp - r1_interp) / (x2_interp - x1_interp);
1620         g_delta_x  = (g2_interp - g1_interp) / (x2_interp - x1_interp);
1621         b_delta_x  = (b2_interp - b1_interp) / (x2_interp - x1_interp);
1622         s_delta_x  = (s2_interp - s1_interp) / (x2_interp - x1_interp);
1623         t_delta_x  = (t2_interp - t1_interp) / (x2_interp - x1_interp);
1624         t          = (x_start + 0.5 - x1_interp) / (x2_interp - x1_interp);
1625         z_interp_x = z1_interp + (z2_interp - z1_interp) * t;
1626         w_interp_x = w1_interp + (w2_interp - w1_interp) * t;
1627         r_interp_x = r1_interp + (r2_interp - r1_interp) * t;
1628         g_interp_x = g1_interp + (g2_interp - g1_interp) * t;
1629         b_interp_x = b1_interp + (b2_interp - b1_interp) * t;
1630         s_interp_x = s1_interp + (s2_interp - s1_interp) * t;
1631         t_interp_x = t1_interp + (t2_interp - t1_interp) * t;
1632
1633      } else {
1634         x_start    = ((((int)x2_interp) + 0.5) >= x2_interp) ? (int)x2_interp : ((int)x2_interp) + 1;
1635         x_end      = ((((int)x1_interp) + 0.5) <  x1_interp) ? (int)x1_interp : ((int)x1_interp) - 1;
1636         z_delta_x  = (z1_interp - z2_interp) / (x1_interp - x2_interp);
1637         w_delta_x  = (w1_interp - w2_interp) / (x1_interp - x2_interp);
1638         r_delta_x  = (r1_interp - r2_interp) / (x1_interp - x2_interp);
1639         g_delta_x  = (g1_interp - g2_interp) / (x1_interp - x2_interp);
1640         b_delta_x  = (b1_interp - b2_interp) / (x1_interp - x2_interp);
1641         s_delta_x  = (s1_interp - s2_interp) / (x1_interp - x2_interp);
1642         t_delta_x  = (t1_interp - t2_interp) / (x1_interp - x2_interp);
1643         t          = (x_start + 0.5 - x2_interp) / (x1_interp - x2_interp);
1644         z_interp_x = z2_interp + (z1_interp - z2_interp) * t;
1645         w_interp_x = w2_interp + (w1_interp - w2_interp) * t;
1646         r_interp_x = r2_interp + (r1_interp - r2_interp) * t;
1647         g_interp_x = g2_interp + (g1_interp - g2_interp) * t;
1648         b_interp_x = b2_interp + (b1_interp - b2_interp) * t;
1649         s_interp_x = s2_interp + (s1_interp - s2_interp) * t;
1650         t_interp_x = t2_interp + (t1_interp - t2_interp) * t;
1651      }
1652
1653      // Pass the horizontal line to the filler, this could be put in the routine
1654      // then interpolate for the next values of x and z
1655      FillSmoothTexPCHorizontalLine( prOptions,
1656         x_start, x_end, y_mid, z_interp_x, z_delta_x, w_interp_x, w_delta_x,
1657         r_interp_x, r_delta_x, g_interp_x, g_delta_x, b_interp_x, b_delta_x,
1658         s_interp_x, s_delta_x, t_interp_x, t_delta_x);
1659      x1_interp += x1_slope;   z1_interp += z1_slope;
1660      x2_interp += x2_slope;   z2_interp += z2_slope;
1661      r1_interp += r1_slope;   r2_interp += r2_slope;
1662      g1_interp += g1_slope;   g2_interp += g2_slope;
1663      b1_interp += b1_slope;   b2_interp += b2_slope;
1664      w1_interp += w1_slope;   w2_interp += w2_slope;
1665      s1_interp += s1_slope;   s2_interp += s2_slope;
1666      t1_interp += t1_slope;   t2_interp += t2_slope;
1667   }
13541668}
13551669
1356void hng64_poly_renderer::drawShaded(struct polygon *p)
1670void hng64_state::drawShaded( struct polygon *p)
13571671{
1358    // Polygon information for the rasterizer
1359    hng64_poly_data rOptions;
1360    rOptions.texType = p->texType;
1361   rOptions.texIndex = p->texIndex;
1362   rOptions.palOffset = p->palOffset;
1363   rOptions.palPageSize = p->palPageSize;
1364   rOptions.debugColor = p->debugColor;
1365   rOptions.texPageSmall = p->texPageSmall;
1366   rOptions.texPageHorizOffset = p->texPageHorizOffset;
1367   rOptions.texPageVertOffset = p->texPageVertOffset;
1368   
13691672   // The perspective-correct texture divide...
1370   // NOTE: There is a very good chance the HNG64 hardware does not do perspective-correct texture-mapping - explore
1371   for (int j = 0; j < p->n; j++)
1673   // !!! There is a very good chance the HNG64 hardware does not do perspective-correct texture-mapping !!!
1674   int j;
1675   for (j = 0; j < p->n; j++)
13721676   {
13731677      p->vert[j].clipCoords[3] = 1.0f / p->vert[j].clipCoords[3];
13741678      p->vert[j].light[0]      = p->vert[j].light[0]     * p->vert[j].clipCoords[3];
r249188r249189
13781682      p->vert[j].texCoords[1]  = p->vert[j].texCoords[1] * p->vert[j].clipCoords[3];
13791683   }
13801684
1381    // Rasterize the triangles
1382   for (int j = 1; j < p->n-1; j++)
1685   // Set up the struct that will pass the polygon's options around.
1686   polygonRasterOptions prOptions;
1687   prOptions.texType = p->texType;
1688   prOptions.texIndex = p->texIndex;
1689   prOptions.palOffset = p->palOffset;
1690   prOptions.palPageSize = p->palPageSize;
1691   prOptions.debugColor = p->debugColor;
1692   prOptions.texPageSmall = p->texPageSmall;
1693   prOptions.texPageHorizOffset = p->texPageHorizOffset;
1694   prOptions.texPageVertOffset = p->texPageVertOffset;
1695
1696   for (j = 1; j < p->n-1; j++)
13831697   {
1384        // Build some MAME rasterizer vertices from the hng64 vertices
1385        vertex_t pVert[3];
1386
1387        const polyVert& pv0 = p->vert[0];
1388        pVert[0].x = pv0.clipCoords[0];
1389        pVert[0].y = pv0.clipCoords[1];
1390        pVert[0].p[0] = pv0.clipCoords[2];
1391        pVert[0].p[1] = pv0.clipCoords[3];
1392        pVert[0].p[2] = pv0.light[0];
1393        pVert[0].p[3] = pv0.light[1];
1394        pVert[0].p[4] = pv0.light[2];
1395        pVert[0].p[5] = pv0.texCoords[0];
1396        pVert[0].p[6] = pv0.texCoords[1];
1397       
1398        const polyVert& pvj = p->vert[j];
1399        pVert[1].x = pvj.clipCoords[0];
1400        pVert[1].y = pvj.clipCoords[1];
1401        pVert[1].p[0] = pvj.clipCoords[2];
1402        pVert[1].p[1] = pvj.clipCoords[3];
1403        pVert[1].p[2] = pvj.light[0];
1404        pVert[1].p[3] = pvj.light[1];
1405        pVert[1].p[4] = pvj.light[2];
1406        pVert[1].p[5] = pvj.texCoords[0];
1407        pVert[1].p[6] = pvj.texCoords[1];
1408
1409        const polyVert& pvjp1 = p->vert[j+1];
1410        pVert[2].x = pvjp1.clipCoords[0];
1411        pVert[2].y = pvjp1.clipCoords[1];
1412        pVert[2].p[0] = pvjp1.clipCoords[2];
1413        pVert[2].p[1] = pvjp1.clipCoords[3];
1414        pVert[2].p[2] = pvjp1.light[0];
1415        pVert[2].p[3] = pvjp1.light[1];
1416        pVert[2].p[4] = pvjp1.light[2];
1417        pVert[2].p[5] = pvjp1.texCoords[0];
1418        pVert[2].p[6] = pvjp1.texCoords[1];
1419
1420        // Pass the render data into the rasterizer
1421        hng64_poly_data& renderData = object_data_alloc();
1422        renderData = rOptions;
1423       
1424        const rectangle& visibleArea = m_state.m_screen->visible_area();
1425        render_triangle(visibleArea, render_delegate(FUNC(hng64_poly_renderer::render_scanline), this), 7, pVert[0], pVert[1], pVert[2]);
1698      RasterizeTriangle_SMOOTH_TEX_PC(
1699                              p->vert[0].clipCoords, p->vert[j].clipCoords, p->vert[j+1].clipCoords,
1700                              p->vert[0].light,      p->vert[j].light,      p->vert[j+1].light,
1701                              p->vert[0].texCoords,  p->vert[j].texCoords,  p->vert[j+1].texCoords,
1702                              prOptions);
14261703   }
14271704}
trunk/src/mame/video/tecmo_spr.c
r249188r249189
2020tecmo_spr_device::tecmo_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
2121   : device_t(mconfig, TECMO_SPRITE, "Tecmo Chained Sprites", tag, owner, clock, "tecmo_spr", __FILE__),
2222m_gfxregion(0),
23m_bootleg(0),
24m_yoffset(0)
23m_bootleg(0)
2524{
2625}
2726
r249188r249189
4746   dev.m_bootleg = bootleg;
4847}
4948
50void tecmo_spr_device::set_yoffset(device_t &device, int yoffset)
51{
52   tecmo_spr_device &dev = downcast<tecmo_spr_device &>(device);
53   dev.m_yoffset = yoffset;
54}
5549
56
5750static const UINT8 layout[8][8] =
5851{
5952   { 0, 1, 4, 5, 16, 17, 20, 21 },
r249188r249189
330323            code = ( spriteram[offs+2] ) + ( spriteram[offs+3] << 8 );
331324
332325            int xpos = spriteram[offs + 8] + ( (spriteram[offs + 9] & 3 ) << 8 );
333            int ypos = spriteram[offs + 6] + ( (spriteram[offs + 7] & 1 ) << 8 ) + m_yoffset;
326            int ypos = spriteram[offs + 6] + ( (spriteram[offs + 7] & 1 ) << 8 );
334327
335328            if (xpos >= 0x0300) xpos -= 0x0400;
336329
trunk/src/mame/video/tecmo_spr.h
r249188r249189
1010   tecmo_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
1111   static void set_gfx_region(device_t &device, int gfxregion);
1212   static void set_bootleg(device_t &device, int bootleg);
13   static void set_yoffset(device_t &device, int bootleg);
1413
1514   // gaiden.c / spbactn.c / tecmo16.c sprites
1615   void gaiden_draw_sprites(screen_device &screen, gfxdecode_device *gfxdecode, const rectangle &cliprect, UINT16* spriteram, int sprite_sizey, int spr_offset_y, int flip_screen, bitmap_ind16 &sprite_bitmap);
r249188r249189
3029
3130   UINT8 m_gfxregion;
3231   int m_bootleg; // for Gals Pinball / Hot Pinball
33   int m_yoffset;
3432
33
3534private:
3635};
3736
r249188r249189
4342
4443#define MCFG_TECMO_SPRITE_BOOTLEG(_bootleg) \
4544   tecmo_spr_device::set_bootleg(*device, _bootleg);
46
47#define MCFG_TECMO_SPRITE_YOFFSET(_yoffset) \
48   tecmo_spr_device::set_yoffset(*device, _yoffset);
trunk/src/mess/drivers/amstrad.c
r249188r249189
846846   SLOT_INTERFACE("hd20", CPC_HD20)
847847SLOT_INTERFACE_END
848848
849SLOT_INTERFACE_START(aleste_exp_cards)
850   SLOT_INTERFACE("ssa1", CPC_SSA1)
851   SLOT_INTERFACE("dkspeech", CPC_DKSPEECH)
852   SLOT_INTERFACE("rom", CPC_ROM)
853   SLOT_INTERFACE("multiface2", CPC_MFACE2)
854   SLOT_INTERFACE("pds", CPC_PDS)
855   SLOT_INTERFACE("rs232", CPC_RS232)
856   SLOT_INTERFACE("amsrs232", CPC_RS232_AMS)
857   SLOT_INTERFACE("sf2", CPC_SYMBIFACE2)
858   SLOT_INTERFACE("amdrum", CPC_AMDRUM)
859   SLOT_INTERFACE("playcity", CPC_PLAYCITY)
860   SLOT_INTERFACE("smartwatch", CPC_SMARTWATCH)
861   SLOT_INTERFACE("brunword4", CPC_BRUNWORD_MK4)
862   SLOT_INTERFACE("hd20", CPC_HD20)
863   SLOT_INTERFACE("magicsound", AL_MAGICSOUND)
864SLOT_INTERFACE_END
865
866849SLOT_INTERFACE_START(amstrad_centronics_devices)
867850   SLOT_INTERFACE("pl80", COMX_PL80)
868851   SLOT_INTERFACE("ex800", EPSON_EX800)
r249188r249189
11451128   MCFG_DEVICE_REMOVE("upd765")
11461129   MCFG_I8272A_ADD("upd765", true)
11471130
1148   MCFG_DEVICE_REMOVE("exp")
1149   MCFG_DEVICE_ADD("exp", CPC_EXPANSION_SLOT, 0)
1150   MCFG_DEVICE_SLOT_INTERFACE(aleste_exp_cards, NULL, false)
1151   MCFG_CPC_EXPANSION_SLOT_OUT_IRQ_CB(INPUTLINE("maincpu", 0))
1152   MCFG_CPC_EXPANSION_SLOT_OUT_NMI_CB(INPUTLINE("maincpu", INPUT_LINE_NMI))
1153   MCFG_CPC_EXPANSION_SLOT_OUT_ROMDIS_CB(WRITELINE(amstrad_state, cpc_romdis))  // ROMDIS
1154   MCFG_CPC_EXPANSION_SLOT_ROM_SELECT(WRITE8(amstrad_state,rom_select))
1155
11561131   MCFG_FLOPPY_DRIVE_ADD("upd765:0", aleste_floppies, "35dd", amstrad_state::aleste_floppy_formats)
11571132   MCFG_FLOPPY_DRIVE_ADD("upd765:1", aleste_floppies, "35dd", amstrad_state::aleste_floppy_formats)
11581133
trunk/src/mess/drivers/apple2.c
r249188r249189
14481448   ROM_LOAD ( "unitron.f0"   , 0x3000, 0x1000, CRC(8e047c4a) SHA1(78c57c0e00dfce7fdec9437fe2b4c25def447e5d))
14491449ROM_END
14501450
1451ROM_START(uniap2ti) /* "Teclado Inteligente" means "smart keyboard" in brazilian portuguese */
1451ROM_START(uniap2ti)
14521452   ROM_REGION(0x1000,"gfx1",0)
14531453   ROM_LOAD ( "unitron.chr", 0x0000, 0x1000, CRC(7fdd1af6) SHA1(2f4f90d90f2f3a8c1fbea304e1072780fb22e698))
14541454
r249188r249189
14581458   ROM_LOAD ( "unitron.f0"   , 0x3000, 0x1000, CRC(8e047c4a) SHA1(78c57c0e00dfce7fdec9437fe2b4c25def447e5d))
14591459
14601460   ROM_REGION(0x4000,"keyboard",0)
1461   ROM_LOAD ( "unitron_apii+_keyboard.ic3", 0x0800, 0x0800, CRC(edc43205) SHA1(220cc21d86f1ab63a301ae7a9c5ff0f3f6cddb70))
1461   ROM_LOAD ( "unitron_apii_keyboard.ic3", 0x1000, 0x1000, CRC(311beae6) SHA1(f6379aba9ac982850edc314c93a393844a3349ef))
14621462ROM_END
14631463
14641464
r249188r249189
16031603COMP( 1982, ace100,   apple2,   0,        apple2,      apple2p, driver_device,  0,        "Franklin Computer", "Franklin Ace 100", MACHINE_SUPPORTS_SAVE )
16041604COMP( 1982, uniap2en, apple2,   0,        apple2p,     apple2p, driver_device,  0,        "Unitron Eletronica", "Unitron AP II (in English)", MACHINE_SUPPORTS_SAVE )
16051605COMP( 1982, uniap2pt, apple2,   0,        apple2p,     apple2p, driver_device,  0,        "Unitron Eletronica", "Unitron AP II (in Brazilian Portuguese)", MACHINE_SUPPORTS_SAVE )
1606COMP( 1984, uniap2ti, apple2,   0,        apple2p,     apple2p, driver_device,  0,        "Unitron Eletronica", "Unitron AP II+ (Teclado Inteligente)", MACHINE_SUPPORTS_SAVE )
1606COMP( 198?, uniap2ti, apple2,   0,        apple2p,     apple2p, driver_device,  0,        "Unitron Eletronica", "Unitron AP II+", MACHINE_SUPPORTS_SAVE )
16071607COMP( 1983, agat7,    apple2,   0,        apple2p,     apple2p, driver_device,  0,        "Agat",              "Agat-7", MACHINE_NOT_WORKING) // disk controller ROM JSRs to $FCA8 which is a delay on apple II, illegal instruction crash here :(
16081608// reverse font direction -\/
16091609COMP( 1984, ivelultr, apple2,   0,        apple2p,     apple2p, driver_device,  0,        "Ivasim",            "Ivel Ultra", MACHINE_SUPPORTS_SAVE )
trunk/src/mess/drivers/bbc.c
r249188r249189
4848#include "cpu/m6502/m6502.h"
4949#include "cpu/m6502/m65sc02.h"
5050#include "machine/6522via.h"
51#include "machine/mc146818.h"       /* RTC & CMOS RAM */
5152#include "bus/centronics/ctronics.h"
5253#include "bus/econet/econet.h"
5354#include "sound/tms5220.h"          /* Speech */
r249188r249189
5758/* Devices */
5859#include "imagedev/flopdrv.h"
5960#include "formats/bbc_dsk.h"
61#include "formats/basicdsk.h"
6062#include "imagedev/cassette.h"
6163#include "formats/uef_cas.h"
6264#include "formats/csw_cas.h"
r249188r249189
136138}
137139
138140static ADDRESS_MAP_START( bbca_mem, AS_PROGRAM, 8, bbc_state )
139   ADDRESS_MAP_UNMAP_HIGH                                                                                      /*  Hardware marked with a # is not present in a Model A        */
141   ADDRESS_MAP_UNMAP_HIGH                                                                      /*  Hardware marked with a # is not present in a Model A        */
140142
141   AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w)                                     /*    0000-3fff                 Regular Ram                     */
142   AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w)                                     /*    4000-7fff                 Repeat of the Regular Ram       */
143   AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w)                                     /*    8000-bfff                 Paged ROM                       */
144   AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7")                                                              /*    c000-fbff                 OS ROM                          */
145   AM_RANGE(0xfc00, 0xfdff) AM_NOP                                                                             /*    fc00-fdff                 FRED & JIM Pages                */
146                                                                                                               /*    fe00-feff                 SHEILA Address Page             */
147   AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, status_r, address_w)      /*    fe00-fe07  6845 CRTC      Video controller                */
148   AM_RANGE(0xfe01, 0xfe01) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, register_r, register_w)
149   AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)  /*    fe08-fe0F  6850 ACIA      Serial controller               */
143   AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w)                     /*    0000-3fff                 Regular Ram                     */
144   AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w)                     /*    4000-7fff                 Repeat of the Regular Ram       */
145   AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4")                                              /*    8000-bfff                 Paged ROM                       */
146   AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7")                                              /*    c000-fbff                 OS ROM                          */
147   AM_RANGE(0xfc00, 0xfdff) AM_NOP                                                             /*    fc00-fdff                 FRED & JIM Pages                */
148                                                                        /*    fe00-feff                 Shiela Address Page             */
149   AM_RANGE(0xfe00, 0xfe07) AM_READWRITE(bbc_6845_r, bbc_6845_w)                               /*    fe00-fe07  6845 CRTC      Video controller                */
150   AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)
150151   AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
151   AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w)                                            /*    fe10-fe17  Serial ULA     Serial system chip              */
152   AM_RANGE(0xfe18, 0xfe1f) AM_NOP                                                                             /*    fe18-fe1f  INTOFF/STATID  # ECONET Interrupt Off / ID No. */
153   AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w)                                                           /* R: fe20-fe2f  INTON          # ECONET Interrupt On           */
154                                                                                                               /* W: fe20-fe2f  Video ULA      Video system chip               */
155   AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selecta_w)                                         /* R: fe30-fe3f  NC             Not Connected                   */
156                                                                                                               /* W: fe30-fe3f  84LS161        Paged ROM selector              */
157   AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)                          /*    fe40-fe5f  6522 VIA       SYSTEM VIA                      */
158   AM_RANGE(0xfe60, 0xfe7f) AM_NOP                                                                             /*    fe60-fe7f  6522 VIA       # USER VIA                      */
159   AM_RANGE(0xfe80, 0xfe9f) AM_NOP                                                                             /*    fe80-fe9f  8271/1770 FDC  # Floppy disc controller        */
160   AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r)                                                                  /*    fea0-febf  68B54 ADLC     # ECONET controller             */
161   AM_RANGE(0xfec0, 0xfedf) AM_NOP                                                                             /*    fec0-fedf  uPD7002        # Analogue to digital converter */
162   AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r)                                                                  /*    fee0-feff  Tube ULA       # Tube system interface         */
163   AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00)                                                     /*    ff00-ffff                 OS Rom (continued)              */
152   AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w)                            /*    fe10-fe17  Serial ULA     Serial system chip              */
153   AM_RANGE(0xfe18, 0xfe1f) AM_NOP                                                             /*    fe18-fe1f  INTOFF/STATID  # ECONET Interrupt Off / ID No. */
154   AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w)                                           /* R: fe20-fe2f  INTON          # ECONET Interrupt On           */
155                                                                        /* W: fe20-fe2f  Video ULA      Video system chip               */
156   AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selecta_w)                         /* R: fe30-fe3f  NC             Not Connected                   */
157                                                                        /* W: fe30-fe3f  84LS161        Paged ROM selector              */
158   AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)          /*    fe40-fe5f  6522 VIA       SYSTEM VIA                      */
159   AM_RANGE(0xfe60, 0xfe7f) AM_NOP                                                             /*    fe60-fe7f  6522 VIA       # USER VIA                      */
160   AM_RANGE(0xfe80, 0xfe9f) AM_NOP                                                             /*    fe80-fe9f  8271/1770 FDC  # Floppy disc controller        */
161   AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r)                                                  /*    fea0-febf  68B54 ADLC     # ECONET controller             */
162   AM_RANGE(0xfec0, 0xfedf) AM_NOP                                                             /*    fec0-fedf  uPD7002        # Analogue to digital converter */
163   AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r)                                                  /*    fee0-feff  Tube ULA       # Tube system interface         */
164   AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00)                                 /*    ff00-ffff                 OS Rom (continued)              */
164165ADDRESS_MAP_END
165166
166167
167static ADDRESS_MAP_START( bbc_base, AS_PROGRAM, 8, bbc_state )
168static ADDRESS_MAP_START( bbcb_mem, AS_PROGRAM, 8, bbc_state )
168169   ADDRESS_MAP_UNMAP_HIGH
169170
170   AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7")                                                              /*    c000-fbff                 OS ROM                          */
171   AM_RANGE(0xfc00, 0xfdff) AM_NOP                                                                             /*    fc00-fdff                 FRED & JIM Pages                */
172                                                                                                               /*    fe00-feff                 SHEILA Address Page             */
173   AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, status_r, address_w)      /*    fe00-fe07  6845 CRTC      Video controller                */
174   AM_RANGE(0xfe01, 0xfe01) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, register_r, register_w)
175   AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)  /*    fe08-fe0F  6850 ACIA      Serial controller               */
176   AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
177   AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w)                                            /*    fe10-fe17  Serial ULA     Serial system chip              */
178   AM_RANGE(0xfe18, 0xfe1f) AM_READ_PORT("S11")                                                                /*    fe18-fe1f  INTOFF/STATID  ECONET Interrupt Off / ID No.   */
179   AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w)                                                           /* R: fe20-fe2f  INTON          ECONET Interrupt On             */
180                                                                                                               /* W: fe20-fe2f  Video ULA      Video system chip               */
181   AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)                          /*    fe40-fe5f  6522 VIA       SYSTEM VIA                      */
182   AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write)                          /*    fe60-fe7f  6522 VIA       USER VIA                        */
183                                                                                                               /*    fe80-fe9f  FDC            Floppy disc controller          */
184   AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r)                                                                  /*    fea0-febf  68B54 ADLC     ECONET controller               */
185   AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write)                            /*    fec0-fedf  uPD7002        Analogue to digital converter   */
186   AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r)                                                                  /*    fee0-feff  Tube ULA       Tube system interface           */
187   AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00)                                                     /*    ff00-ffff                 OS ROM (continued)              */
188ADDRESS_MAP_END
189
190
191static ADDRESS_MAP_START( bbcb_mem, AS_PROGRAM, 8, bbc_state )
192171   AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w)                     /*    0000-3fff                 Regular Ram                     */
193   AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w)                     /*    4000-7fff                 Regular Ram                     */
172   AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w)                     /*    4000-7fff                 Repeat of the Regular Ram       */
194173   AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w)                     /*    8000-bfff                 Paged ROM                       */
174   AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7")                                              /*    c000-fbff                 OS ROM                          */
175   AM_RANGE(0xfc00, 0xfdff) AM_READWRITE(bbc_opus_read, bbc_opus_write)                        /*    fc00-fdff                 OPUS Disc Controller            */
176                                                                        /*    fe00-feff                 Shiela Address Page             */
177   AM_RANGE(0xfe00, 0xfe07) AM_READWRITE(bbc_6845_r, bbc_6845_w)                               /*    fe00-fe07  6845 CRTC      Video controller                */
178   AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)
179   AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
180   AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w)                            /*    fe10-fe17  Serial ULA     Serial system chip              */
181   AM_RANGE(0xfe18, 0xfe1f) AM_NOP                                                             /*    fe18-fe1f  INTOFF/STATID  ECONET Interrupt Off / ID No.   */
182   AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w)                                           /* R: fe20-fe2f  INTON          ECONET Interrupt On             */
183                                                                        /* W: fe20-fe2f  Video ULA      Video system chip               */
195184   AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectb_w)                         /* R: fe30-fe3f  NC             Not Connected                   */
196                                                                                               /* W: fe30-fe3f  84LS161        Paged ROM selector              */
197   AM_RANGE(0xfe80, 0xfe83) AM_DEVREADWRITE("i8271", i8271_device, read, write)                /*    fe80-fe9f  8271 FDC       Floppy disc controller          */
198   AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("i8271", i8271_device, dack_r, dack_w)             /*    fe80-fe9f  8271 FDC       Floppy disc controller          */
199   AM_IMPORT_FROM(bbc_base)
185                                                                        /* W: fe30-fe3f  84LS161        Paged ROM selector              */
186   AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)          /*    fe40-fe5f  6522 VIA       SYSTEM VIA                      */
187   AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write)          /*    fe60-fe7f  6522 VIA       USER VIA                        */
188   AM_RANGE(0xfe80, 0xfe9f) AM_READWRITE(bbc_disc_r, bbc_disc_w)                               /*    fe80-fe9f  8271 FDC       Floppy disc controller          */
189   AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r)                                                  /*    fea0-febf  68B54 ADLC     ECONET controller               */
190   AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write)            /*    fec0-fedf  uPD7002        Analogue to digital converter   */
191   AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r)                                                  /*    fee0-feff  Tube ULA       Tube system interface           */
192   AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00)                                 /*    ff00-ffff                 OS Rom (continued)              */
200193ADDRESS_MAP_END
201194
202195
203static ADDRESS_MAP_START(bbcb1770_mem, AS_PROGRAM, 8, bbc_state)
204   AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w)                     /*    0000-3fff                 Regular Ram                     */
205   AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w)                     /*    4000-7fff                 Regular Ram                     */
206   AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w)                     /*    8000-bfff                 Paged ROM                       */
207   AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectb_w)                         /* R: fe30-fe3f  NC             Not Connected                   */
208                                                                                               /* W: fe30-fe3f  84LS161        Paged ROM selector              */
209   AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w)                                      /*    fe80-fe83  1770 FDC       Drive control register          */
210   AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write)                   /*    fe84-fe9f  1770 FDC       Floppy disc controller          */
211   AM_IMPORT_FROM(bbc_base)
212ADDRESS_MAP_END
213
214
215196static ADDRESS_MAP_START( bbcbp_mem, AS_PROGRAM, 8, bbc_state )
197   ADDRESS_MAP_UNMAP_HIGH
198
216199   AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w)                    /*    0000-2fff                 Regular Ram                     */
217200   AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w)                    /*    3000-7fff                 Video/Shadow Ram                */
218201   AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_w)                    /*    8000-afff                 Paged ROM or 12K of SWRAM       */
219202   AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6")                                              /*    b000-bfff                 Rest of paged ROM area          */
203   AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7")                                              /*    c000-fbff                 OS ROM                          */
204   AM_RANGE(0xfc00, 0xfdff) AM_NOP                                                             /*    fc00-fdff                 FRED & JIM Pages                */
205                                                                        /*    fe00-feff                 Shiela Address Page             */
206   AM_RANGE(0xfe00, 0xfe07) AM_READWRITE(bbc_6845_r, bbc_6845_w)                               /*    fe00-fe07  6845 CRTC      Video controller                */
207   AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)
208   AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
209   AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w)                            /*    fe10-fe17  Serial ULA     Serial system chip              */
210   AM_RANGE(0xfe18, 0xfe1f) AM_NOP                                                             /*    fe18-fe1f  INTOFF/STATID  ECONET Interrupt Off / ID No.   */
211   AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w)                                           /* R: fe20-fe2f  INTON          ECONET Interrupt On             */
212                                                                        /* W: fe20-fe2f  Video ULA      Video system chip               */
220213   AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w)                        /* R: fe30-fe3f  NC             Not Connected                   */
221                                                                                               /* W: fe30-fe3f  84LS161        Paged ROM selector              */
222   AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w)                                      /*    fe80-fe83  1770 FDC       Drive control register          */
223   AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write)                   /*    fe84-fe9f  1770 FDC       Floppy disc controller          */
224   AM_IMPORT_FROM(bbc_base)
214                                                                        /* W: fe30-fe3f  84LS161        Paged ROM selector              */
215   AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)          /*    fe40-fe5f  6522 VIA       SYSTEM VIA                      */
216   AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write)          /*    fe60-fe7f  6522 VIA       USER VIA                        */
217   AM_RANGE(0xfe80, 0xfe9f) AM_READWRITE(bbc_wd1770_read, bbc_wd1770_write)                    /*    fe80-fe9f  1770 FDC       Floppy disc controller          */
218   AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r)                                                  /*    fea0-febf  68B54 ADLC     ECONET controller               */
219   AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write)            /*    fec0-fedf  uPD7002        Analogue to digital converter   */
220   AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r)                                                  /*    fee0-feff  Tube ULA       Tube system interface           */
221   AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00)                                 /*    ff00-ffff                 OS Rom (continued)              */
225222ADDRESS_MAP_END
226223
227224
228225static ADDRESS_MAP_START( bbcbp128_mem, AS_PROGRAM, 8, bbc_state )
226   ADDRESS_MAP_UNMAP_HIGH
227
229228   AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w)                    /*    0000-2fff                 Regular Ram                     */
230229   AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w)                    /*    3000-7fff                 Video/Shadow Ram                */
231230   AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_128_w)                /*    8000-afff                 Paged ROM or 12K of SWRAM       */
232231   AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6") AM_WRITE(bbc_memorybp6_128_w)                /*    b000-bfff                 Rest of paged ROM area          */
232   AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7")                                              /*    c000-fbff                 OS ROM                          */
233   AM_RANGE(0xfc00, 0xfdff) AM_NOP                                                             /*    fc00-fdff                 FRED & JIM Pages                */
234                                                                        /*    fe00-feff                 Shiela Address Page             */
235   AM_RANGE(0xfe00, 0xfe07) AM_READWRITE(bbc_6845_r, bbc_6845_w)                               /*    fe00-fe07  6845 CRTC      Video controller                */
236   AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)
237   AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
238   AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w)                            /*    fe10-fe17  Serial ULA     Serial system chip              */
239   AM_RANGE(0xfe10, 0xfe17) AM_NOP                                                             /*    fe10-fe17  Serial ULA     Serial system chip              */
240   AM_RANGE(0xfe18, 0xfe1f) AM_NOP                                                             /*    fe18-fe1f  INTOFF/STATID  ECONET Interrupt Off / ID No.   */
241   AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w)                                           /* R: fe20-fe2f  INTON          ECONET Interrupt On             */
242                                                                        /* W: fe20-fe2f  Video ULA      Video system chip               */
233243   AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w)                        /* R: fe30-fe3f  NC             Not Connected                   */
234                                                                                               /* W: fe30-fe3f  84LS161        Paged ROM selector              */
235   AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w)                                      /*    fe80-fe83  1770 FDC       Drive control register          */
236   AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write)                   /*    fe84-fe9f  1770 FDC       Floppy disc controller          */
237   AM_IMPORT_FROM(bbc_base)
244                                                                        /* W: fe30-fe3f  84LS161        Paged ROM selector              */
245   AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)          /*    fe40-fe5f  6522 VIA       SYSTEM VIA                      */
246   AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write)          /*    fe60-fe7f  6522 VIA       USER VIA                        */
247   AM_RANGE(0xfe80, 0xfe9f) AM_READWRITE(bbc_wd1770_read, bbc_wd1770_write)                    /*    fe80-fe9f  1770 FDC       Floppy disc controller          */
248   AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r)                                                  /*    fea0-febf  68B54 ADLC     ECONET controller               */
249   AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write)            /*    fec0-fedf  uPD7002        Analogue to digital converter   */
250   AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r)                                                  /*    fee0-feff  Tube ULA       Tube system interface           */
251   AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00)                                 /*    ff00-ffff                 OS Rom (continued)              */
238252ADDRESS_MAP_END
239253
240254
241static ADDRESS_MAP_START( reutapm_mem, AS_PROGRAM, 8, bbc_state )
242   AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w)                    /*    0000-2fff                 Regular Ram                     */
243   AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w)                    /*    3000-7fff                 Video/Shadow Ram                */
244   AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_w)                    /*    8000-afff                 Paged ROM or 12K of SWRAM       */
245   AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6")                                              /*    b000-bfff                 Rest of paged ROM area          */
246   AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w)                        /* R: fe30-fe3f  NC             Not Connected                   */
247                                                                                               /* W: fe30-fe3f  84LS161        Paged ROM selector              */
248   AM_RANGE(0xfe80, 0xfe83) AM_NOP                                                             /*    fe80-fe83  1770 FDC       Drive control register          */
249   AM_RANGE(0xfe84, 0xfe9f) AM_NOP                                                             /*    fe84-fe9f  1770 FDC       Floppy disc controller          */
250   AM_IMPORT_FROM(bbc_base)
251ADDRESS_MAP_END
252
253255/******************************************************************************
254256&FC00-&FCFF FRED
255257&FD00-&FDFF JIM
r249188r249189
261263
262264&20-&23 Video ULA       -                       Video system chip        4 ( 2 bytes x  2 )
263265&24-&27 FDC Latch       1770 Control latch      1770 Control latch       4 ( 1 byte  x  4 )
264&28-&2F 1770 registers  1770 Disc Controller    1770 Disc Controller     8 ( 4 bytes x  2 )
266&28-&2F 1770 registers  1770 Disc Controller    1170 Disc Controller     8 ( 4 bytes x  2 )
265267&30-&33 ROMSEL          -                       ROM Select               4 ( 1 byte  x  4 )
266268&34-&37 ACCCON          ACCCON select reg.      ACCCON select reg        4 ( 1 byte  x  4 )
267269&38-&3F NC              -                       -
r249188r249189
280282   AM_RANGE(0x8000, 0x8fff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybm4_w)                    /*    8000-8fff                 Paged ROM/RAM or 4K of RAM ANDY */
281283   AM_RANGE(0x9000, 0xbfff) AM_READ_BANK("bank5") AM_WRITE(bbc_memorybm5_w)                    /*    9000-bfff                 Rest of paged ROM/RAM area      */
282284   AM_RANGE(0xc000, 0xdfff) AM_READ_BANK("bank7") AM_WRITE(bbc_memorybm7_w)                    /*    c000-dfff                 OS ROM or 8K of RAM       HAZEL */
283   AM_RANGE(0xe000, 0xfbff) AM_ROM AM_REGION("os", 0x2000)                                     /*    e000-fbff                 OS ROM                          */
284   AM_RANGE(0xfc00, 0xfeff) AM_READ_BANK("bank8") AM_WRITE(bbcm_w)                             /*    processed directly because it can be ROM or hardware      */
285   AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00)                                     /*    ff00-ffff                 OS ROM (continued)              */
285   AM_RANGE(0xe000, 0xfbff) AM_ROM AM_REGION("os", 0x2000)                                 /*    e000-fbff                 OS ROM                          */
286   AM_RANGE(0xfc00, 0xfeff) AM_READ_BANK("bank8") AM_WRITE(bbcm_w)                             /*    this is now processed directly because it can be ROM or hardware */
287   AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00)                                 /*    ff00-ffff                 OS ROM (continued)              */
286288ADDRESS_MAP_END
287289
288290
r249188r249189
462464
463465static INPUT_PORTS_START(bbc_dipswitch)
464466   PORT_MODIFY("COL2")
465   PORT_DIPNAME(0x01, 0x01, "Default File System") PORT_DIPLOCATION("KBD:1")
467   PORT_DIPNAME(0x01, 0x01, "DIP 8 (Default File System)")
466468   PORT_DIPSETTING(   0x00, "NFS" )
467469   PORT_DIPSETTING(   0x01, "DFS" )
468470
469471   PORT_MODIFY("COL3")
470   PORT_DIPNAME(0x01, 0x01, "Not Used") PORT_DIPLOCATION("KBD:2")
472   PORT_DIPNAME(0x01, 0x01, "DIP 7 (Not Used)")
471473   PORT_DIPSETTING(   0x00, DEF_STR( Off ))
472474   PORT_DIPSETTING(   0x01, DEF_STR( On ))
473475
474476   PORT_MODIFY("COL4")
475   PORT_DIPNAME(0x01, 0x01, "Disc Timings") PORT_DIPLOCATION("KBD:3")
477   PORT_DIPNAME(0x01, 0x01, "DIP 6 (Disc Timings)")
476478   PORT_DIPSETTING(   0x00, DEF_STR( Off ))
477479   PORT_DIPSETTING(   0x01, DEF_STR( On ))
478480
479481   PORT_MODIFY("COL5")
480   PORT_DIPNAME(0x01, 0x01, "Disc Timings") PORT_DIPLOCATION("KBD:4")
482   PORT_DIPNAME(0x01, 0x01, "DIP 5 (Disc Timings)")
481483   PORT_DIPSETTING(   0x00, DEF_STR( Off ))
482484   PORT_DIPSETTING(   0x01, DEF_STR( On ))
483485
484486   PORT_MODIFY("COL6")
485   PORT_DIPNAME(0x01, 0x01, "Boot") PORT_DIPLOCATION("KBD:5")
487   PORT_DIPNAME(0x01, 0x01, "DIP 4 (Boot)")
486488   PORT_DIPSETTING(   0x00, "SHIFT" )
487489   PORT_DIPSETTING(   0x01, "SHIFT-BREAK" )
488490
489491   PORT_MODIFY("COL7")
490   PORT_DIPNAME(0x01, 0x01, "Screen Mode") PORT_DIPLOCATION("KBD:6")
492   PORT_DIPNAME(0x01, 0x01, "DIP 3 (Screen Mode)")
491493   PORT_DIPSETTING(   0x00, "+0" )
492494   PORT_DIPSETTING(   0x01, "+4" )
493   
495
494496   PORT_MODIFY("COL8")
495   PORT_DIPNAME(0x01, 0x01, "Screen Mode") PORT_DIPLOCATION("KBD:7")
497   PORT_DIPNAME(0x01, 0x01, "DIP 2 (Screen Mode)")
496498   PORT_DIPSETTING(   0x00, "+0" )
497499   PORT_DIPSETTING(   0x01, "+2" )
498500
499501   PORT_MODIFY("COL9")
500   PORT_DIPNAME(0x01, 0x01, "Screen Mode") PORT_DIPLOCATION("KBD:8")
502   PORT_DIPNAME(0x01, 0x01, "DIP 1 (Screen Mode)")
501503   PORT_DIPSETTING(   0x00, "+0" )
502504   PORT_DIPSETTING(   0x01, "+1" )
503505INPUT_PORTS_END
504506
505507
506static INPUT_PORTS_START(bbc_links)
507   PORT_START("S11")
508   PORT_DIPNAME(0xff, 0xfe, "Econet ID") PORT_DIPLOCATION("S11:1,2,3,4,5,6,7,8")
509   PORT_DIPSETTING(   0x00,   "0" )   PORT_DIPSETTING(   0x01,   "1" )   PORT_DIPSETTING(   0x02,   "2" )   PORT_DIPSETTING(   0x03,   "3" )   PORT_DIPSETTING(   0x04,   "4" )
510   PORT_DIPSETTING(   0x05,   "5" )   PORT_DIPSETTING(   0x06,   "6" )   PORT_DIPSETTING(   0x07,   "7" )   PORT_DIPSETTING(   0x08,   "8" )   PORT_DIPSETTING(   0x09,   "9" )
511   PORT_DIPSETTING(   0x0a,  "10" )   PORT_DIPSETTING(   0x0b,  "11" )   PORT_DIPSETTING(   0x0c,  "12" )   PORT_DIPSETTING(   0x0d,  "13" )   PORT_DIPSETTING(   0x0e,  "14" )
512   PORT_DIPSETTING(   0x0f,  "15" )   PORT_DIPSETTING(   0x10,  "16" )   PORT_DIPSETTING(   0x11,  "17" )   PORT_DIPSETTING(   0x12,  "18" )   PORT_DIPSETTING(   0x13,  "19" )
513   PORT_DIPSETTING(   0x14,  "20" )   PORT_DIPSETTING(   0x15,  "21" )   PORT_DIPSETTING(   0x16,  "22" )   PORT_DIPSETTING(   0x17,  "23" )   PORT_DIPSETTING(   0x18,  "24" )
514   PORT_DIPSETTING(   0x19,  "25" )   PORT_DIPSETTING(   0x1a,  "26" )   PORT_DIPSETTING(   0x1b,  "27" )   PORT_DIPSETTING(   0x1c,  "28" )   PORT_DIPSETTING(   0x1d,  "29" )
515   PORT_DIPSETTING(   0x1e,  "30" )   PORT_DIPSETTING(   0x1f,  "31" )   PORT_DIPSETTING(   0x20,  "32" )   PORT_DIPSETTING(   0x21,  "33" )   PORT_DIPSETTING(   0x22,  "34" )
516   PORT_DIPSETTING(   0x23,  "35" )   PORT_DIPSETTING(   0x24,  "36" )   PORT_DIPSETTING(   0x25,  "37" )   PORT_DIPSETTING(   0x26,  "38" )   PORT_DIPSETTING(   0x27,  "39" )
517   PORT_DIPSETTING(   0x28,  "40" )   PORT_DIPSETTING(   0x29,  "41" )   PORT_DIPSETTING(   0x2a,  "42" )   PORT_DIPSETTING(   0x2b,  "43" )   PORT_DIPSETTING(   0x2c,  "44" )
518   PORT_DIPSETTING(   0x2d,  "45" )   PORT_DIPSETTING(   0x2e,  "46" )   PORT_DIPSETTING(   0x2f,  "47" )   PORT_DIPSETTING(   0x30,  "48" )   PORT_DIPSETTING(   0x31,  "49" )
519   PORT_DIPSETTING(   0x32,  "50" )   PORT_DIPSETTING(   0x33,  "51" )   PORT_DIPSETTING(   0x34,  "52" )   PORT_DIPSETTING(   0x35,  "53" )   PORT_DIPSETTING(   0x36,  "54" )
520   PORT_DIPSETTING(   0x37,  "15" )   PORT_DIPSETTING(   0x38,  "56" )   PORT_DIPSETTING(   0x39,  "57" )   PORT_DIPSETTING(   0x3a,  "58" )   PORT_DIPSETTING(   0x3b,  "59" )
521   PORT_DIPSETTING(   0x3c,  "60" )   PORT_DIPSETTING(   0x3d,  "61" )   PORT_DIPSETTING(   0x3e,  "62" )   PORT_DIPSETTING(   0x3f,  "63" )   PORT_DIPSETTING(   0x40,  "64" )
522   PORT_DIPSETTING(   0x41,  "65" )   PORT_DIPSETTING(   0x42,  "66" )   PORT_DIPSETTING(   0x43,  "67" )   PORT_DIPSETTING(   0x44,  "68" )   PORT_DIPSETTING(   0x45,  "69" )
523   PORT_DIPSETTING(   0x46,  "70" )   PORT_DIPSETTING(   0x47,  "71" )   PORT_DIPSETTING(   0x48,  "72" )   PORT_DIPSETTING(   0x49,  "73" )   PORT_DIPSETTING(   0x4a,  "74" )
524   PORT_DIPSETTING(   0x4b,  "75" )   PORT_DIPSETTING(   0x4c,  "76" )   PORT_DIPSETTING(   0x4d,  "77" )   PORT_DIPSETTING(   0x4e,  "78" )   PORT_DIPSETTING(   0x4f,  "79" )
525   PORT_DIPSETTING(   0x50,  "80" )   PORT_DIPSETTING(   0x51,  "81" )   PORT_DIPSETTING(   0x52,  "82" )   PORT_DIPSETTING(   0x53,  "83" )   PORT_DIPSETTING(   0x54,  "84" )
526   PORT_DIPSETTING(   0x55,  "85" )   PORT_DIPSETTING(   0x56,  "86" )   PORT_DIPSETTING(   0x57,  "87" )   PORT_DIPSETTING(   0x58,  "88" )   PORT_DIPSETTING(   0x59,  "89" )
527   PORT_DIPSETTING(   0x5a,  "90" )   PORT_DIPSETTING(   0x5b,  "91" )   PORT_DIPSETTING(   0x5c,  "92" )   PORT_DIPSETTING(   0x5d,  "93" )   PORT_DIPSETTING(   0x5e,  "94" )
528   PORT_DIPSETTING(   0x5f,  "95" )   PORT_DIPSETTING(   0x60,  "96" )   PORT_DIPSETTING(   0x61,  "97" )   PORT_DIPSETTING(   0x62,  "98" )   PORT_DIPSETTING(   0x63,  "99" )
529   PORT_DIPSETTING(   0x64, "100" )   PORT_DIPSETTING(   0x65, "101" )   PORT_DIPSETTING(   0x66, "102" )   PORT_DIPSETTING(   0x67, "103" )   PORT_DIPSETTING(   0x68, "104" )
530   PORT_DIPSETTING(   0x69, "105" )   PORT_DIPSETTING(   0x6a, "106" )   PORT_DIPSETTING(   0x6b, "107" )   PORT_DIPSETTING(   0x6c, "108" )   PORT_DIPSETTING(   0x6d, "109" )
531   PORT_DIPSETTING(   0x6e, "110" )   PORT_DIPSETTING(   0x6f, "111" )   PORT_DIPSETTING(   0x70, "112" )   PORT_DIPSETTING(   0x71, "113" )   PORT_DIPSETTING(   0x72, "114" )
532   PORT_DIPSETTING(   0x73, "115" )   PORT_DIPSETTING(   0x74, "116" )   PORT_DIPSETTING(   0x75, "117" )   PORT_DIPSETTING(   0x76, "118" )   PORT_DIPSETTING(   0x77, "119" )
533   PORT_DIPSETTING(   0x78, "120" )   PORT_DIPSETTING(   0x79, "121" )   PORT_DIPSETTING(   0x7a, "122" )   PORT_DIPSETTING(   0x7b, "123" )   PORT_DIPSETTING(   0x7c, "124" )
534   PORT_DIPSETTING(   0x7d, "125" )   PORT_DIPSETTING(   0x7e, "126" )   PORT_DIPSETTING(   0x7f, "127" )   PORT_DIPSETTING(   0x80, "128" )   PORT_DIPSETTING(   0x81, "129" )
535   PORT_DIPSETTING(   0x82, "130" )   PORT_DIPSETTING(   0x83, "131" )   PORT_DIPSETTING(   0x84, "132" )   PORT_DIPSETTING(   0x85, "133" )   PORT_DIPSETTING(   0x86, "134" )
536   PORT_DIPSETTING(   0x87, "135" )   PORT_DIPSETTING(   0x88, "136" )   PORT_DIPSETTING(   0x89, "137" )   PORT_DIPSETTING(   0x8a, "138" )   PORT_DIPSETTING(   0x8b, "139" )
537   PORT_DIPSETTING(   0x8c, "140" )   PORT_DIPSETTING(   0x8d, "141" )   PORT_DIPSETTING(   0x8e, "142" )   PORT_DIPSETTING(   0x8f, "143" )   PORT_DIPSETTING(   0x90, "144" )
538   PORT_DIPSETTING(   0x91, "145" )   PORT_DIPSETTING(   0x92, "146" )   PORT_DIPSETTING(   0x93, "147" )   PORT_DIPSETTING(   0x94, "148" )   PORT_DIPSETTING(   0x95, "149" )
539   PORT_DIPSETTING(   0x96, "150" )   PORT_DIPSETTING(   0x97, "151" )   PORT_DIPSETTING(   0x98, "152" )   PORT_DIPSETTING(   0x99, "153" )   PORT_DIPSETTING(   0x9a, "154" )
540   PORT_DIPSETTING(   0x9b, "155" )   PORT_DIPSETTING(   0x9c, "156" )   PORT_DIPSETTING(   0x9d, "157" )   PORT_DIPSETTING(   0x9e, "158" )   PORT_DIPSETTING(   0x9f, "159" )
541   PORT_DIPSETTING(   0xa0, "160" )   PORT_DIPSETTING(   0xa1, "161" )   PORT_DIPSETTING(   0xa2, "162" )   PORT_DIPSETTING(   0xa3, "163" )   PORT_DIPSETTING(   0xa4, "164" )
542   PORT_DIPSETTING(   0xa5, "165" )   PORT_DIPSETTING(   0xa6, "166" )   PORT_DIPSETTING(   0xa7, "167" )   PORT_DIPSETTING(   0xa8, "168" )   PORT_DIPSETTING(   0xa9, "169" )
543   PORT_DIPSETTING(   0xaa, "170" )   PORT_DIPSETTING(   0xab, "171" )   PORT_DIPSETTING(   0xac, "172" )   PORT_DIPSETTING(   0xad, "173" )   PORT_DIPSETTING(   0xae, "174" )
544   PORT_DIPSETTING(   0xaf, "175" )   PORT_DIPSETTING(   0xb0, "176" )   PORT_DIPSETTING(   0xb1, "177" )   PORT_DIPSETTING(   0xb2, "178" )   PORT_DIPSETTING(   0xb3, "179" )
545   PORT_DIPSETTING(   0xb4, "180" )   PORT_DIPSETTING(   0xb5, "181" )   PORT_DIPSETTING(   0xb6, "182" )   PORT_DIPSETTING(   0xb7, "183" )   PORT_DIPSETTING(   0xb8, "184" )
546   PORT_DIPSETTING(   0xb9, "185" )   PORT_DIPSETTING(   0xba, "186" )   PORT_DIPSETTING(   0xbb, "187" )   PORT_DIPSETTING(   0xbc, "188" )   PORT_DIPSETTING(   0xbd, "189" )
547   PORT_DIPSETTING(   0xbe, "190" )   PORT_DIPSETTING(   0xbf, "191" )   PORT_DIPSETTING(   0xc0, "192" )   PORT_DIPSETTING(   0xc1, "193" )   PORT_DIPSETTING(   0xc2, "194" )
548   PORT_DIPSETTING(   0xc3, "195" )   PORT_DIPSETTING(   0xc4, "196" )   PORT_DIPSETTING(   0xc5, "197" )   PORT_DIPSETTING(   0xc6, "198" )   PORT_DIPSETTING(   0xc7, "199" )
549   PORT_DIPSETTING(   0xc8, "200" )   PORT_DIPSETTING(   0xc9, "201" )   PORT_DIPSETTING(   0xca, "202" )   PORT_DIPSETTING(   0xcb, "203" )   PORT_DIPSETTING(   0xcc, "204" )
550   PORT_DIPSETTING(   0xcd, "205" )   PORT_DIPSETTING(   0xce, "206" )   PORT_DIPSETTING(   0xcf, "207" )   PORT_DIPSETTING(   0xd0, "208" )   PORT_DIPSETTING(   0xd1, "209" )
551   PORT_DIPSETTING(   0xd2, "210" )   PORT_DIPSETTING(   0xd3, "211" )   PORT_DIPSETTING(   0xd4, "212" )   PORT_DIPSETTING(   0xd5, "213" )   PORT_DIPSETTING(   0xd6, "214" )
552   PORT_DIPSETTING(   0xd7, "215" )   PORT_DIPSETTING(   0xd8, "216" )   PORT_DIPSETTING(   0xd9, "217" )   PORT_DIPSETTING(   0xda, "218" )   PORT_DIPSETTING(   0xdb, "219" )
553   PORT_DIPSETTING(   0xdc, "220" )   PORT_DIPSETTING(   0xdd, "221" )   PORT_DIPSETTING(   0xde, "222" )   PORT_DIPSETTING(   0xdf, "223" )   PORT_DIPSETTING(   0xe0, "224" )
554   PORT_DIPSETTING(   0xe1, "225" )   PORT_DIPSETTING(   0xe2, "226" )   PORT_DIPSETTING(   0xe3, "227" )   PORT_DIPSETTING(   0xe4, "228" )   PORT_DIPSETTING(   0xe5, "229" )
555   PORT_DIPSETTING(   0xe6, "230" )   PORT_DIPSETTING(   0xe7, "231" )   PORT_DIPSETTING(   0xe8, "232" )   PORT_DIPSETTING(   0xe9, "233" )   PORT_DIPSETTING(   0xea, "234" )
556   PORT_DIPSETTING(   0xeb, "235" )   PORT_DIPSETTING(   0xec, "236" )   PORT_DIPSETTING(   0xed, "237" )   PORT_DIPSETTING(   0xee, "238" )   PORT_DIPSETTING(   0xef, "239" )
557   PORT_DIPSETTING(   0xf0, "240" )   PORT_DIPSETTING(   0xf1, "241" )   PORT_DIPSETTING(   0xf2, "242" )   PORT_DIPSETTING(   0xf3, "243" )   PORT_DIPSETTING(   0xf4, "244" )
558   PORT_DIPSETTING(   0xf5, "245" )   PORT_DIPSETTING(   0xf6, "246" )   PORT_DIPSETTING(   0xf7, "247" )   PORT_DIPSETTING(   0xf8, "248" )   PORT_DIPSETTING(   0xf9, "249" )
559   PORT_DIPSETTING(   0xfa, "250" )   PORT_DIPSETTING(   0xfb, "251" )   PORT_DIPSETTING(   0xfc, "252" )   PORT_DIPSETTING(   0xfd, "253" )   PORT_DIPSETTING(   0xfe, "254" )
560   PORT_DIPSETTING(   0xff, "255" )
561INPUT_PORTS_END
562
563
564508static INPUT_PORTS_START(bbc_joy)
565509   PORT_START("JOY0")
566510   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_MINMAX(0x0,0xff ) PORT_PLAYER(1)
r249188r249189
579523static INPUT_PORTS_START(bbc_config)
580524   PORT_START("BBCCONFIG")
581525
582   PORT_CONFNAME( 0x01, 0x00, "Speech Upgrade" )
583   PORT_CONFSETTING(    0x00, DEF_STR( On ) )
584   PORT_CONFSETTING(    0x01, DEF_STR( Off ) )
526//  PORT_CONFNAME( 0x01, 0x00, "Speech Upgrade" )
527//  PORT_CONFSETTING(    0x00, DEF_STR( On ) )
528//  PORT_CONFSETTING(    0x01, DEF_STR( Off ) )
585529
530   PORT_CONFNAME( 0x07, 0x00, "DFS Select" )
531   PORT_CONFSETTING(    0x00, "Acorn DFS 0.90 (read only)"  )
532   PORT_CONFSETTING(    0x01, "Acorn DNFS 1.20 (read only)" )
533   PORT_CONFSETTING(    0x02, "Watford DFS 1.44 (read only)" )
534   PORT_CONFSETTING(    0x03, "Acorn DFS E00 (hack / read only)" )
535   PORT_CONFSETTING(    0x04, "Acorn DDFS" )
536   PORT_CONFSETTING(    0x05, "Watford DDFS (not working)" )
537   PORT_CONFSETTING(    0x06, "Opus Challenger 512K (RAM drive only)" )
538   PORT_CONFSETTING(    0x07, DEF_STR( None ) )
539
586540   PORT_CONFNAME( 0x18, 0x00, "Sideways RAM Type" )
587541   PORT_CONFSETTING(    0x00, DEF_STR( None ) )
588542   PORT_CONFSETTING(    0x08, "Solidisk 128K (fe62)" )
r249188r249189
600554   PORT_INCLUDE(bbc_config)
601555   PORT_INCLUDE(bbc_keyboard)
602556   PORT_INCLUDE(bbc_dipswitch)
603   PORT_INCLUDE(bbc_links)
604557   PORT_INCLUDE(bbc_joy)
605558INPUT_PORTS_END
606559
607static INPUT_PORTS_START(abc)
608   PORT_INCLUDE(bbc_keyboard)
609   PORT_INCLUDE(bbc_keypad)
610   PORT_INCLUDE(bbc_dipswitch)
611   PORT_INCLUDE(bbc_links)
612   PORT_INCLUDE(bbc_joy)
613INPUT_PORTS_END
614
615560static INPUT_PORTS_START(bbcm)
616561   PORT_INCLUDE(bbc_keyboard)
617562   PORT_INCLUDE(bbc_keypad)
r249188r249189
627572}
628573
629574
575//static const struct TMS5220interface tms5220_interface =
576//{
577//  680000L,
578//  50,
579//  bbc_TMSint
580//};
581
582
583
630584WRITE_LINE_MEMBER(bbc_state::bbcb_acia6850_irq_w)
631585{
632586   m_acia_irq = state;
r249188r249189
634588   check_interrupts();
635589}
636590
591static LEGACY_FLOPPY_OPTIONS_START(bbc)
592   LEGACY_FLOPPY_OPTION( ssd80, "bbc,img,ssd", "BBC SSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
593      HEADS([1])
594      TRACKS([80])
595      SECTORS([10])
596      SECTOR_LENGTH([256])
597      FIRST_SECTOR_ID([0]))
598   LEGACY_FLOPPY_OPTION( dsd80, "dsd", "BBC DSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
599      HEADS([2])
600      TRACKS([80])
601      SECTORS([10])
602      SECTOR_LENGTH([256])
603      FIRST_SECTOR_ID([0]))
604LEGACY_FLOPPY_OPTIONS_END
637605
638606static const floppy_interface bbc_floppy_interface =
639607{
r249188r249189
642610   "floppy_5_25"
643611};
644612
645FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_525sd )
646   FLOPPY_BBC_SSD_525_FORMAT,
647   FLOPPY_BBC_DSD_525_FORMAT
613FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats )
614   FLOPPY_BBC_FORMAT
648615FLOPPY_FORMATS_END
649616
650FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_525dd )
651   FLOPPY_BBC_SSD_525_FORMAT,
652   FLOPPY_BBC_DSD_525_FORMAT,
653   FLOPPY_BBC_ADF_525_FORMAT
654FLOPPY_FORMATS_END
655
656FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_35dd )
657   FLOPPY_BBC_ADF_35_FORMAT
658FLOPPY_FORMATS_END
659
660static SLOT_INTERFACE_START( bbc_floppies_525 )
617static SLOT_INTERFACE_START( bbc_floppies )
661618   SLOT_INTERFACE("sssd", FLOPPY_525_SSSD)
662619   SLOT_INTERFACE("sd",   FLOPPY_525_SD)
663620   SLOT_INTERFACE("ssdd", FLOPPY_525_SSDD)
r249188r249189
666623   SLOT_INTERFACE("qd",   FLOPPY_525_QD)
667624SLOT_INTERFACE_END
668625
669static SLOT_INTERFACE_START( bbc_floppies_35 )
670   SLOT_INTERFACE("qd",   FLOPPY_35_DD)
671SLOT_INTERFACE_END
672
673626WRITE_LINE_MEMBER(bbc_state::econet_clk_w)
674627{
675628   m_adlc->rxc_w(state);
r249188r249189
696649MACHINE_CONFIG_END
697650
698651
699/***************************************************************************
700
701    BBC Micro
702
703****************************************************************************/
704
705
706652static MACHINE_CONFIG_START( bbca, bbc_state )
707653   /* basic machine hardware */
708654   MCFG_CPU_ADD("maincpu", M6502, 2000000)         /* 2.00 MHz */
r249188r249189
801747   MCFG_RAM_DEFAULT_VALUE(0x00)
802748
803749   /* speech hardware */
804   MCFG_DEVICE_ADD("vsm", SPEECHROM, 0)
805   MCFG_SOUND_ADD("tms5220", TMS5220, 640000)
806   MCFG_TMS52XX_SPEECHROM("vsm")
750//  MCFG_SOUND_ADD("tms5220", TMS5220, 640000)
751//  MCFG_TMS52XX_SPEECHROM("vsm")
807752
808753   /* user via */
809754   MCFG_DEVICE_ADD("via6522_1", VIA6522, 1000000)
r249188r249189
821766   /* printer */
822767   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
823768   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
769
824770   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
825771
826772   /* fdc */
r249188r249189
830776
831777   MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(bbc_floppy_interface)
832778
779   MCFG_WD1770_ADD("wd177x", XTAL_16MHz / 2)
780   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
781   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
782
783   MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats)
784   MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats)
785
833786   /* software lists */
834787   MCFG_DEVICE_REMOVE("cass_ls_a")
835788   MCFG_SOFTWARE_LIST_ADD("cass_ls_b", "bbcb_cass")
r249188r249189
837790MACHINE_CONFIG_END
838791
839792
840static MACHINE_CONFIG_DERIVED(bbcb1770, bbcb)
793static MACHINE_CONFIG_DERIVED( bbcb_us, bbca )
841794   /* basic machine hardware */
842   MCFG_CPU_MODIFY("maincpu")
843   MCFG_CPU_PROGRAM_MAP(bbcb1770_mem)
795   MCFG_CPU_MODIFY( "maincpu" )
796   MCFG_CPU_PROGRAM_MAP(bbcb_mem)
844797
845   /* fdc */
846   MCFG_DEVICE_REMOVE("i8271")
847   MCFG_DEVICE_REMOVE(FLOPPY_0)
848   MCFG_DEVICE_REMOVE(FLOPPY_1)
798   MCFG_MACHINE_START_OVERRIDE(bbc_state, bbcb )
799   MCFG_MACHINE_RESET_OVERRIDE(bbc_state, bbcb )
800   MCFG_VIDEO_START_OVERRIDE(bbc_state, bbcb )
849801
850   MCFG_WD1770_ADD("wd1770", XTAL_16MHz / 2)
851   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
852   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
802   /* internal ram */
803   MCFG_RAM_MODIFY(RAM_TAG)
804   MCFG_RAM_DEFAULT_SIZE("32K")
805   MCFG_RAM_DEFAULT_VALUE(0x00)
853806
854   MCFG_FLOPPY_DRIVE_ADD("wd1770:0", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd)
855   MCFG_FLOPPY_DRIVE_SOUND(true)
856   MCFG_FLOPPY_DRIVE_ADD("wd1770:1", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd)
857   MCFG_FLOPPY_DRIVE_SOUND(true)
858MACHINE_CONFIG_END
807   /* speech hardware */
808//  MCFG_SOUND_ADD("tms5220", TMS5220, 640000)
809//  MCFG_TMS52XX_SPEECHROM("vsm")
859810
860
861static MACHINE_CONFIG_DERIVED( bbcb_de, bbcb )
862   /* software lists */
863   MCFG_DEVICE_REMOVE("cass_ls_b")
864   MCFG_SOFTWARE_LIST_ADD("flop_ls_b_de", "bbcb_de_cass")
865   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_b", "bbcb_cass")
866MACHINE_CONFIG_END
867
868
869static MACHINE_CONFIG_DERIVED( bbcb_us, bbcb )
870811   /* video hardware */
871812   MCFG_SCREEN_MODIFY("screen")
872813   MCFG_SCREEN_SIZE(640, 200)
873814   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
874815   MCFG_SCREEN_REFRESH_RATE(60)
875816
817   /* system via */
818   MCFG_DEVICE_ADD("via6522_1", VIA6522, 1000000)
819   MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_user_read_portb))
820   MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8("cent_data_out", output_latch_device, write))
821   MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(bbc_state, bbcb_via_user_write_portb))
822   MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE("centronics", centronics_device, write_strobe))
823   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_user_irq_w))
824
825   /* adc */
826   MCFG_DEVICE_ADD("upd7002", UPD7002, 0)
827   MCFG_UPD7002_GET_ANALOGUE_CB(bbc_state, BBC_get_analogue_input)
828   MCFG_UPD7002_EOC_CB(bbc_state, BBC_uPD7002_EOC)
829
830   /* printer */
831   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
832   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
833
834   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
835
836   /* fdc */
837   MCFG_DEVICE_ADD("i8271", I8271, 0)
838   MCFG_I8271_IRQ_CALLBACK(WRITELINE(bbc_state, bbc_i8271_interrupt))
839   MCFG_I8271_FLOPPIES(FLOPPY_0, FLOPPY_1)
840
841   MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(bbc_floppy_interface)
842
843   MCFG_WD1770_ADD("wd177x", XTAL_16MHz / 2)
844   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
845   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
846
847   MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats)
848   MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats)
849
876850   /* software lists */
877   MCFG_DEVICE_REMOVE("cass_ls_b")
878   MCFG_SOFTWARE_LIST_ADD("flop_ls_b_us", "bbcb_us_flop")
879   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_b", "bbcb_cass")
851   MCFG_DEVICE_REMOVE("cass_ls_a")
852   MCFG_SOFTWARE_LIST_ADD("cass_ls_b", "bbcb_cass")
853   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_a", "bbca_cass")
880854MACHINE_CONFIG_END
881855
882856
883static MACHINE_CONFIG_DERIVED( bbcbp, bbcb1770 )
857static MACHINE_CONFIG_DERIVED( bbcbp, bbcb )
884858   /* basic machine hardware */
885859   MCFG_CPU_MODIFY( "maincpu" )  /* M6512 */
886860   MCFG_CPU_PROGRAM_MAP(bbcbp_mem)
r249188r249189
893867   MCFG_RAM_MODIFY(RAM_TAG)
894868   MCFG_RAM_DEFAULT_SIZE("64K")
895869   MCFG_RAM_DEFAULT_VALUE(0x00)
870
871   /* fdc */
872   MCFG_DEVICE_REMOVE("i8271")
873   MCFG_DEVICE_REMOVE(FLOPPY_0)
874   MCFG_DEVICE_REMOVE(FLOPPY_1)
896875MACHINE_CONFIG_END
897876
898877
899static MACHINE_CONFIG_DERIVED( bbcbp128, bbcb1770 )
878static MACHINE_CONFIG_DERIVED( bbcbp128, bbcbp )
900879   /* basic machine hardware */
901880   MCFG_CPU_MODIFY( "maincpu" )  /* M6512 */
902881   MCFG_CPU_PROGRAM_MAP(bbcbp128_mem)
903
904882   MCFG_MACHINE_START_OVERRIDE(bbc_state, bbcbp)
905883   MCFG_MACHINE_RESET_OVERRIDE(bbc_state, bbcbp)
906884   MCFG_VIDEO_START_OVERRIDE(bbc_state, bbcbp)
r249188r249189
912890MACHINE_CONFIG_END
913891
914892
915/***************************************************************************
893/* BBC Master Series */
916894
917    Acorn Business Computers
918
919****************************************************************************/
920
921
922static MACHINE_CONFIG_DERIVED( abc110, bbcbp )
923   /* fdc */
924   MCFG_DEVICE_REMOVE("wd1770:1")
925
926   /* Add Z80 co-processor */
927
928   /* Add ADAPTEC ACB-4000 Winchester Disc Controller */
929
930   /* Add 10MB ST-412 Winchester */
931
932MACHINE_CONFIG_END
933
934
935static MACHINE_CONFIG_DERIVED( abc210, bbcbp )
936   /* fdc */
937   MCFG_DEVICE_REMOVE("wd1770:1")
938
939   /* Add 32016 co-processor */
940
941   /* Add ADAPTEC ACB-4000 Winchester Disc Controller */
942
943   /* Add 10MB ST-412 Winchester ABC210 */
944
945   /* Add 20MB ST-412 Winchester Cambridge */
946
947MACHINE_CONFIG_END
948
949
950static MACHINE_CONFIG_DERIVED( abc310, bbcbp )
951   /* fdc */
952   MCFG_DEVICE_REMOVE("wd1770:1")
953
954   /* Add 80286 co-processor */
955
956   /* Add ADAPTEC ACB-4000 Winchester Disc Controller */
957
958   /* Add 10MB ST-412 Winchester */
959
960MACHINE_CONFIG_END
961
962
963/***************************************************************************
964
965    Reuters APM Board (Application Processor Module)
966
967****************************************************************************/
968
969
970static MACHINE_CONFIG_DERIVED( reutapm, bbcbp )
971   /* basic machine hardware */
972   MCFG_CPU_MODIFY( "maincpu" )  /* M6512 */
973   MCFG_CPU_PROGRAM_MAP(reutapm_mem)
974
975   /* sound hardware */
976   MCFG_DEVICE_REMOVE("mono")
977  MCFG_DEVICE_REMOVE("sn76489")
978   MCFG_DEVICE_REMOVE("vsm")
979   MCFG_DEVICE_REMOVE("tms5220")
980
981   /* cassette */
982   MCFG_DEVICE_REMOVE( "cassette" )
983
984   /* fdc */
985   MCFG_DEVICE_REMOVE("wd1770")
986
987   /* software lists */
988   MCFG_DEVICE_REMOVE("cass_ls_a")
989   MCFG_DEVICE_REMOVE("cass_ls_b")
990MACHINE_CONFIG_END
991
992
993/***************************************************************************
994
995    BBC Master Series
996
997****************************************************************************/
998
999
1000895static MACHINE_CONFIG_START( bbcm, bbc_state )
1001896   /* basic machine hardware */
1002897   MCFG_CPU_ADD("maincpu", M65SC02, 2000000)        /* 2.00 MHz */
r249188r249189
1048943   /* printer */
1049944   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
1050945   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
946
1051947   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
1052948
1053949   /* cassette */
r249188r249189
11051001   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_user_irq_w))
11061002
11071003   /* fdc */
1108   MCFG_WD1770_ADD("wd1770", XTAL_16MHz / 2)
1004   MCFG_WD1770_ADD("wd177x", XTAL_16MHz / 2)
11091005   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
11101006   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
11111007
1112   MCFG_FLOPPY_DRIVE_ADD("wd1770:0", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd)
1113   MCFG_FLOPPY_DRIVE_SOUND(true)
1114   MCFG_FLOPPY_DRIVE_ADD("wd1770:1", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd)
1115   MCFG_FLOPPY_DRIVE_SOUND(true)
1008   MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats)
1009   MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats)
11161010
11171011   /* econet */
11181012   MCFG_DEVICE_ADD("mc6854", MC6854, 0)
r249188r249189
11431037
11441038
11451039static MACHINE_CONFIG_DERIVED( bbcmet, bbcm )
1040
1041   /* Remove all devices not present in this model */
1042
11461043   /* sound hardware */
1147   MCFG_DEVICE_REMOVE("mono")
1148   MCFG_DEVICE_REMOVE("sn76489")
1044//  MCFG_DEVICE_REMOVE("mono")
1045//  MCFG_DEVICE_REMOVE("sn76489")
11491046
11501047   /* printer */
1151   MCFG_DEVICE_REMOVE("centronics")
1048//  MCFG_DEVICE_REMOVE("centronics")
11521049
11531050   /* cassette */
11541051   MCFG_DEVICE_REMOVE("cassette")
r249188r249189
11591056   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
11601057
11611058   /* acia */
1162   MCFG_DEVICE_REMOVE("acia6850")
1059//  MCFG_DEVICE_REMOVE("acia6850")
11631060   MCFG_DEVICE_REMOVE(RS232_TAG)
1164   MCFG_DEVICE_REMOVE("acia_clock")
11651061
11661062   /* devices */
1167   MCFG_DEVICE_REMOVE("upd7002")
1168   MCFG_DEVICE_REMOVE("via6522_1")
1063//  MCFG_DEVICE_REMOVE("upd7002")
1064//  MCFG_DEVICE_REMOVE("via6522_1")
11691065
11701066   /* fdc */
1171   MCFG_DEVICE_REMOVE("wd1770")
1067//  MCFG_DEVICE_REMOVE("wd177x")
11721068MACHINE_CONFIG_END
11731069
11741070
r249188r249189
11861082MACHINE_CONFIG_END
11871083
11881084
1189/***************************************************************************
1190
1191    BBC Master Compact
1192
1193****************************************************************************/
1194
1195
11961085static MACHINE_CONFIG_DERIVED( bbcmc, bbcm )
1197   /* cassette */
1198   MCFG_DEVICE_REMOVE("cassette")
11991086
1087//  MCFG_DEVICE_REMOVE("rtc")
1088
12001089   /* fdc */
1201   MCFG_DEVICE_REMOVE("wd1770")
1090   MCFG_DEVICE_REMOVE("wd177x")
12021091
1203   MCFG_WD1772_ADD("wd1772", XTAL_16MHz / 2)
1092//  MCFG_WD1772_ADD("wd177x", XTAL_16MHz / 2)
1093   MCFG_WD1770_ADD("wd177x", XTAL_16MHz / 2)
12041094   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
12051095   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
12061096
1207   MCFG_FLOPPY_DRIVE_ADD("wd1772:0", bbc_floppies_35, "qd", bbc_state::floppy_formats_35dd)
1208   MCFG_FLOPPY_DRIVE_SOUND(true)
1209   MCFG_FLOPPY_DRIVE_ADD("wd1772:1", bbc_floppies_35, NULL, bbc_state::floppy_formats_35dd)
1210   MCFG_FLOPPY_DRIVE_SOUND(true)
1097   MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats)
1098   MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats)
12111099
1212   /* eeprom pcd8572 */
1213   //MCFG_DEVICE_REMOVE("rtc")
1214
12151100   /* software lists */
1216   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_m")
1217   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a")
1218   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
12191101   MCFG_SOFTWARE_LIST_REMOVE("cart_ls_m")
12201102   MCFG_SOFTWARE_LIST_ADD("flop_ls_mc", "bbcmc_flop")
12211103MACHINE_CONFIG_END
12221104
12231105
1224static MACHINE_CONFIG_DERIVED(pro128s, bbcmc)
1225   /* software lists */
1226   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_mc")
1227   MCFG_SOFTWARE_LIST_ADD("flop_ls_pro128s", "pro128s_flop")
1228   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("flop_ls_mc", "bbcmc_flop")
1229MACHINE_CONFIG_END
1230
1231
12321106/* the BBC came with 4 rom sockets on the motherboard as shown in the model A driver */
12331107/* you could get a number of rom upgrade boards that took this up to 16 roms as in the */
12341108/* model B driver */
r249188r249189
12371111   ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */
12381112
12391113   ROM_REGION(0x14000,"option",0) /* ROM */
1240   /* rom page 0  00000 SPARE SOCKET */
1241   /* rom page 1  04000 SPARE SOCKET */
1242   /* rom page 2  08000 SPARE SOCKET */
1114   /* rom page 0  00000 */
1115   /* rom page 1  04000 */
1116   /* rom page 2  08000 */
12431117   /* rom page 3  0c000 BASIC */
12441118   ROM_DEFAULT_BIOS("os12b2")
12451119   ROM_SYSTEM_BIOS( 0, "os12b2", "OS 1.20 / BASIC2" )
r249188r249189
12541128   ROM_SYSTEM_BIOS( 3, "os10b1", "OS 1.00 / BASIC1" )
12551129   ROMX_LOAD("os10.rom",   0x10000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(4)) /* os */
12561130   ROMX_LOAD("basic1.rom", 0x0c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(4)) /* rom page 3  0c000 */
1257   /* OS0.1 does not support rom paging, load BASIC into all pages */
12581131   ROM_SYSTEM_BIOS( 4, "os01b2", "OS 0.10 / BASIC2" )
12591132   ROMX_LOAD("os01.rom",   0x10000, 0x4000, CRC(45ee0980) SHA1(4b0ece6dc139d5d3f4fabd023716fb6f25149b80), ROM_BIOS(5)) /* os */
12601133   ROMX_LOAD("basic2.rom", 0x00000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(5)) /* rom page 0  00000 */
r249188r249189
12731146ROM_END
12741147
12751148
1149
12761150/*  0000- 7fff  ram */
12771151/*  8000- bfff  this area is mapped over with one of the roms from "option" region 0x00000-0x40000 */
12781152/*  c000- ffff  OS rom and memory mapped hardware at fc00-feff, from "option" region 0x40000-0x44000 */
r249188r249189
12941168   /* rom page 9  24000 */
12951169   /* rom page 10 28000 */
12961170   /* rom page 11 2c000 */
1297   /* rom page 12 30000 SPARE SOCKET */
1298   /* rom page 13 34000 SPARE SOCKET */
1299   /* rom page 14 38000 DFS */
1171   /* rom page 12 30000 */
1172   /* rom page 13 34000 */
1173   /* rom page 14 38000 */
13001174   /* rom page 15 3c000 BASIC */
13011175   ROM_DEFAULT_BIOS("os12b2")
13021176   ROM_SYSTEM_BIOS( 0, "os12b2", "OS 1.20 / BASIC2" )
r249188r249189
13121186   ROMX_LOAD("os10.rom",   0x40000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(4)) /* os */
13131187   ROMX_LOAD("basic1.rom", 0x3c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(4)) /* rom page 15 3c000 */
13141188
1315   ROM_LOAD("dnfs.rom",    0x38000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232))
1316
13171189   ROM_REGION(0x4000, "os", 0)
13181190   ROM_COPY("option", 0x40000, 0, 0x4000)
13191191
1320   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1321   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
1322ROM_END
1192   ROM_REGION(0x20000,"dfs",0) /* DFS ROMS */
1193   ROM_LOAD("dfs09.rom",    0x00000, 0x2000, CRC(3ce609cf) SHA1(5cc0f14b8f46855c70eaa653cca4ad079b458732))
1194   ROM_RELOAD(              0x02000, 0x2000                )
1195   ROM_LOAD("dnfs.rom",     0x04000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232))
1196   ROM_LOAD("dfs144.rom",   0x08000, 0x4000, CRC(9fb8d13f) SHA1(387d2468c6e1360f5b531784ce95d5f71a50c2b5))
1197   ROM_LOAD("zdfs-0.90.rom",0x0C000, 0x2000, CRC(ea579d4d) SHA1(59ad2a8994f4bddad6687891f1a2bc29f2fd32b8))
1198   ROM_LOAD("ddfs223.rom",  0x10000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
1199   ROM_LOAD("ddfs-1.53.rom",0x14000, 0x4000, CRC(e1be4ee4) SHA1(6719dc958f2631e6dc8f045429797b289bfe649a))
1200   ROM_LOAD("ch103.rom",    0x18000, 0x4000, CRC(98367cf4) SHA1(eca3631aa420691f96b72bfdf2e9c2b613e1bf33))
1201   /*NONE*/
1202   ROM_REGION(0x80000, "disks", ROMREGION_ERASEFF) /* Opus Ram Disc Space */
13231203
1204   //ROM_REGION(0x2000, "torch", 0)
1205   //ROM_LOAD("torchz80_094.bin", 0x0000, 0x2000, CRC(49989bd4) SHA1(62b57c858a3baa4ff943c31f77d331c414772a61))
1206   //ROM_LOAD("torchz80_102.bin", 0x0000, 0x2000, CRC(2eb40a21) SHA1(e6ee738e5f2f8556002b79d18caa8ef21f14e08d))
13241207
1325ROM_START(bbcb1770)
1326   ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */
1327
1328   ROM_REGION(0x44000,"option",0) /* ROM */
1329   /* rom page 0  00000 */
1330   /* rom page 1  04000 */
1331   /* rom page 2  08000 */
1332   /* rom page 3  0c000 */
1333   /* rom page 4  10000 */
1334   /* rom page 5  14000 */
1335   /* rom page 6  18000 */
1336   /* rom page 7  1c000 */
1337   /* rom page 8  20000 */
1338   /* rom page 9  24000 */
1339   /* rom page 10 28000 */
1340   /* rom page 11 2c000 */
1341   /* rom page 12 30000 SPARE SOCKET */
1342   /* rom page 13 34000 SPARE SOCKET */
1343   /* rom page 14 38000 DDFS */
1344   /* rom page 15 3c000 BASIC */
1345   ROM_DEFAULT_BIOS("os12b2")
1346   ROM_SYSTEM_BIOS( 0, "os12b2", "OS 1.20 / BASIC2" )
1347   ROMX_LOAD("os12.rom",   0x40000, 0x4000, CRC(3c14fc70) SHA1(0d9bcaf6a393c9ce2359ed700ddb53c232c2c45d), ROM_BIOS(1)) /* os */
1348   ROMX_LOAD("basic2.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(1)) /* rom page 15 3c000 */
1349   ROM_SYSTEM_BIOS( 1, "os12b1", "OS 1.20 / BASIC1" )
1350   ROMX_LOAD("os12.rom",   0x40000, 0x4000, CRC(3c14fc70) SHA1(0d9bcaf6a393c9ce2359ed700ddb53c232c2c45d), ROM_BIOS(2)) /* os */
1351   ROMX_LOAD("basic1.rom", 0x3c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(2)) /* rom page 15 3c000 */
1352   ROM_SYSTEM_BIOS( 2, "os10b2", "OS 1.00 / BASIC2" )
1353   ROMX_LOAD("os10.rom",   0x40000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(3)) /* os */
1354   ROMX_LOAD("basic2.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(3)) /* rom page 15 3c000 */
1355   ROM_SYSTEM_BIOS( 3, "os10b1", "OS 1.00 / BASIC1" )
1356   ROMX_LOAD("os10.rom",   0x40000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(4)) /* os */
1357   ROMX_LOAD("basic1.rom", 0x3c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(4)) /* rom page 15 3c000 */
1358
1359   ROM_LOAD("ddfs223.rom", 0x38000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
1360
1361   ROM_REGION(0x4000, "os", 0)
1362   ROM_COPY("option", 0x40000, 0, 0x4000)
1363
1364   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1365   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
1208   //ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1209   //ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
13661210ROM_END
13671211
1368
13691212ROM_START(bbcb_de)
13701213   ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */
13711214
r249188r249189
13821225   /* rom page 9  24000 */
13831226   /* rom page 10 28000 */
13841227   /* rom page 11 2c000 */
1385   /* rom page 12 30000 SPARE SOCKET */
1386   /* rom page 13 34000 SPARE SOCKET */
1387   /* rom page 14 38000 DFS */
1228   /* rom page 12 30000 */
1229   /* rom page 13 34000 */
1230   /* rom page 14 38000 */
13881231   /* rom page 15 3c000 BASIC */
13891232   ROM_DEFAULT_BIOS("os12")
13901233   ROM_SYSTEM_BIOS( 0, "os12", "OS 1.20 / BASIC2" )
13911234   ROMX_LOAD("os_de.rom",   0x40000, 0x4000, CRC(b7262caf) SHA1(aadf90338ee9d1c85dfa73beba50e930c2a38f10), ROM_BIOS(1))
13921235   ROMX_LOAD("basic2.rom",  0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(1)) /* rom page 15 3c000 */
13931236
1394   ROM_LOAD("dfs10.rom",    0x38000, 0x4000, CRC(7e367e8c) SHA1(161f585dc45665ea77433c84afd2f95049f7f5a0))
1395
13961237   ROM_REGION(0x4000, "os", 0)
13971238   ROM_COPY("option", 0x40000, 0, 0x4000)
13981239
1399   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1400   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
1240   ROM_REGION(0x20000,"dfs",0) /* DFS ROMS */
1241   ROM_LOAD("dfs09.rom",    0x00000, 0x2000, CRC(3ce609cf) SHA1(5cc0f14b8f46855c70eaa653cca4ad079b458732))
1242   ROM_RELOAD(              0x02000, 0x2000                )
1243
1244   ROM_LOAD("dnfs.rom",     0x04000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232))
1245   ROM_LOAD("dfs144.rom",   0x08000, 0x4000, CRC(9fb8d13f) SHA1(387d2468c6e1360f5b531784ce95d5f71a50c2b5))
1246   ROM_LOAD("zdfs-0.90.rom",0x0C000, 0x2000, CRC(ea579d4d) SHA1(59ad2a8994f4bddad6687891f1a2bc29f2fd32b8))
1247   ROM_LOAD("ddfs223.rom",  0x10000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
1248   ROM_LOAD("ddfs-1.53.rom",0x14000, 0x4000, CRC(e1be4ee4) SHA1(6719dc958f2631e6dc8f045429797b289bfe649a))
1249   ROM_LOAD("ch103.rom",    0x18000, 0x4000, CRC(98367cf4) SHA1(eca3631aa420691f96b72bfdf2e9c2b613e1bf33))
1250   /*NONE*/
1251   ROM_REGION(0x80000, "disks", ROMREGION_ERASEFF) /* Opus Ram Disc Space */
14011252ROM_END
14021253
1403
14041254ROM_START(bbcb_us)
14051255   ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */
14061256
r249188r249189
14171267   /* rom page 9  24000 */
14181268   /* rom page 10 28000 */
14191269   /* rom page 11 2c000 */
1420   /* rom page 12 30000 SPARE SOCKET */
1421   /* rom page 13 34000 SPARE SOCKET */
1422   /* rom page 14 38000 DFS */
1270   /* rom page 12 30000 */
1271   /* rom page 13 34000 */
1272   /* rom page 14 38000 */
14231273   /* rom page 15 3c000 BASIC */
14241274   ROM_DEFAULT_BIOS("os10b3")
14251275   ROM_SYSTEM_BIOS( 0, "os10b3", "OS A1.0 / BASIC3" )
14261276   ROMX_LOAD("os10_us.rom", 0x40000, 0x4000, CRC(c8e946a9) SHA1(83d91d089dca092d2c8b7c3650ff8143c9069b89), ROM_BIOS(1))
14271277   ROMX_LOAD("basic3.rom",  0x3c000, 0x4000, CRC(161b9539) SHA1(b39014610a968789afd7695aa04d1277d874405c), ROM_BIOS(1)) /* rom page 15 3c000 */
14281278
1429   ROM_LOAD("dfs10.rom",    0x38000, 0x4000, CRC(7e367e8c) SHA1(161f585dc45665ea77433c84afd2f95049f7f5a0))
1430
14311279   ROM_REGION(0x4000, "os", 0)
14321280   ROM_COPY("option", 0x40000, 0, 0x4000)
14331281
1282   ROM_REGION(0x20000,"dfs",0) /* DFS ROMS */
1283   ROM_LOAD("dfs09.rom",    0x00000, 0x2000, CRC(3ce609cf) SHA1(5cc0f14b8f46855c70eaa653cca4ad079b458732))
1284   ROM_RELOAD(              0x02000, 0x2000                )
1285
1286   ROM_LOAD("dnfs.rom",     0x04000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232))
1287   ROM_LOAD("dfs144.rom",   0x08000, 0x4000, CRC(9fb8d13f) SHA1(387d2468c6e1360f5b531784ce95d5f71a50c2b5))
1288   ROM_LOAD("zdfs-0.90.rom",0x0C000, 0x2000, CRC(ea579d4d) SHA1(59ad2a8994f4bddad6687891f1a2bc29f2fd32b8))
1289   ROM_LOAD("ddfs223.rom",  0x10000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
1290   ROM_LOAD("ddfs-1.53.rom",0x14000, 0x4000, CRC(e1be4ee4) SHA1(6719dc958f2631e6dc8f045429797b289bfe649a))
1291   ROM_LOAD("ch103.rom",    0x18000, 0x4000, CRC(98367cf4) SHA1(eca3631aa420691f96b72bfdf2e9c2b613e1bf33))
1292   /*NONE*/
1293   ROM_REGION(0x80000, "disks", ROMREGION_ERASEFF) /* Opus Ram Disc Space */
1294
14341295   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
14351296   ROM_LOAD("phrom_us.bin", 0x0000, 0x4000, CRC(bf4b3b64) SHA1(66876702d1d95eecc034d20f25047f893a27cde5))
14361297ROM_END
14371298
1438
14391299ROM_START(bbcbp)
14401300   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
14411301
r249188r249189
14491309   /* rom page 2  08000  32K IN PAGE 3 */
14501310   /* rom page 3  0c000  SPARE SOCKET */
14511311   /* rom page 4  10000  32K IN PAGE 5 */
1452   /* rom page 5  14000  ADFS */
1312   /* rom page 5  14000  SPARE SOCKET */
14531313   /* rom page 6  18000  32K IN PAGE 7 */
14541314   /* rom page 7  1c000  DDFS */
14551315   /* rom page 8  20000  32K IN PAGE 9 */
r249188r249189
14601320   /* rom page 13 34000 */
14611321   /* rom page 14 38000  32K IN PAGE 15 */
14621322   /* rom page 15 3C000  BASIC */
1463   ROM_LOAD("adfs130.rom", 0x14000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
1323   /* ddfs 2.23 this is acorns 1770 disc controller Double density disc filing system */
14641324   ROM_LOAD("ddfs223.rom", 0x1c000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
14651325
14661326   ROM_REGION(0x4000, "os", 0)
14671327   ROM_COPY("option", 0x40000, 0, 0x4000)
1468
1469   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1470   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
14711328ROM_END
14721329
14731330
r249188r249189
14841341   /* rom page 2  08000  32K IN PAGE 3 */
14851342   /* rom page 3  0c000  SPARE SOCKET */
14861343   /* rom page 4  10000  32K IN PAGE 5 */
1487   /* rom page 5  14000  ADFS */
1344   /* rom page 5  14000  SPARE SOCKET */
14881345   /* rom page 6  18000  32K IN PAGE 7 */
14891346   /* rom page 7  1c000  DDFS */
14901347   /* rom page 8  20000  32K IN PAGE 9 */
r249188r249189
14951352   /* rom page 13 34000 */
14961353   /* rom page 14 38000  32K IN PAGE 15 */
14971354   /* rom page 15 3C000  BASIC */
1498   ROM_LOAD("adfs130.rom", 0x14000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
1355   /* ddfs 2.23 this is acorns 1770 disc controller Double density disc filing system */
14991356   ROM_LOAD("ddfs223.rom", 0x1c000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
15001357
15011358   ROM_REGION(0x4000, "os", 0)
15021359   ROM_COPY("option", 0x40000, 0, 0x4000)
1503
1504   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1505   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
15061360ROM_END
15071361
15081362
1509ROM_START(abc110)
1510   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
1511
1512   ROM_REGION(0x44000,"option",0) /* ROM */
1513   ROM_DEFAULT_BIOS("mos200")
1514   ROM_SYSTEM_BIOS( 0, "mos200", "MOS2.00" )
1515   ROMX_LOAD("mos200.rom", 0x40000, 0x4000, CRC(5e88f994) SHA1(76235ff15d736f5def338f73ac7497c41b916505), ROM_BIOS(1))
1516   ROM_SYSTEM_BIOS( 1, "mos123", "MOS1.23" )
1517   ROMX_LOAD("mos123.rom", 0x40000, 0x4000, CRC(90d31d08) SHA1(42a01892cf8bd2ada4db1c8b36aff80c85eb5dcb), ROM_BIOS(2))
1518   ROM_SYSTEM_BIOS( 2, "mos120", "MOS1.20" )
1519   ROMX_LOAD("mos120.rom", 0x40000, 0x4000, CRC(0a1e83a0) SHA1(21dc3a94eef7c003b194686730fb461779f44925), ROM_BIOS(3))
1520   /* rom page 0  00000 */
1521   /* rom page 1  04000 */
1522   /* rom page 2  08000  32K IN PAGE 3 */
1523   /* rom page 3  0c000  SPARE SOCKET */
1524   /* rom page 4  10000  32K IN PAGE 5 */
1525   /* rom page 5  14000  DDFS */
1526   /* rom page 6  18000  32K IN PAGE 7 */
1527   /* rom page 7  1c000  ADFS */
1528   /* rom page 8  20000  32K IN PAGE 9 */
1529   /* rom page 9  24000  SPARE SOCKET */
1530   /* rom page 10 28000  32K IN PAGE 11 */
1531   /* rom page 11 2c000  SPARE SOCKET */
1532   /* rom page 12 30000 */
1533   /* rom page 13 34000 */
1534   /* rom page 14 38000  32K IN PAGE 15 */
1535   /* rom page 15 3C000  BASIC */
1536   ROM_LOAD("ddfs223.rom", 0x14000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
1537   ROM_LOAD("adfs130.rom", 0x1c000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
1538   ROM_LOAD("basic200.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281))
1539
1540   ROM_REGION(0x4000, "os", 0)
1541   ROM_COPY("option", 0x40000, 0, 0x4000)
1542
1543   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1544   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
1545ROM_END
1546
1547
1548ROM_START(abc210)
1549   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
1550
1551   ROM_REGION(0x44000,"option",0) /* ROM */
1552   ROM_DEFAULT_BIOS("mos200")
1553   ROM_SYSTEM_BIOS( 0, "mos200", "MOS2.00" )
1554   ROMX_LOAD("mos200.rom", 0x40000, 0x4000, CRC(5e88f994) SHA1(76235ff15d736f5def338f73ac7497c41b916505), ROM_BIOS(1))
1555   ROM_SYSTEM_BIOS( 1, "mos123", "MOS1.23" )
1556   ROMX_LOAD("mos123.rom", 0x40000, 0x4000, CRC(90d31d08) SHA1(42a01892cf8bd2ada4db1c8b36aff80c85eb5dcb), ROM_BIOS(2))
1557   ROM_SYSTEM_BIOS( 2, "mos120", "MOS1.20" )
1558   ROMX_LOAD("mos120.rom", 0x40000, 0x4000, CRC(0a1e83a0) SHA1(21dc3a94eef7c003b194686730fb461779f44925), ROM_BIOS(3))
1559   /* rom page 0  00000 */
1560   /* rom page 1  04000 */
1561   /* rom page 2  08000  32K IN PAGE 3 */
1562   /* rom page 3  0c000  SPARE SOCKET */
1563   /* rom page 4  10000  32K IN PAGE 5 */
1564   /* rom page 5  14000  DDFS */
1565   /* rom page 6  18000  32K IN PAGE 7 */
1566   /* rom page 7  1c000  ADFS */
1567   /* rom page 8  20000  32K IN PAGE 9 */
1568   /* rom page 9  24000  SPARE SOCKET */
1569   /* rom page 10 28000  32K IN PAGE 11 */
1570   /* rom page 11 2c000  SPARE SOCKET */
1571   /* rom page 12 30000 */
1572   /* rom page 13 34000 */
1573   /* rom page 14 38000  32K IN PAGE 15 */
1574   /* rom page 15 3C000  BASIC */
1575   ROM_LOAD("ddfs223.rom",  0x14000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
1576   ROM_LOAD("adfs130.rom",  0x1c000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
1577   ROM_LOAD("basic200.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281))
1578
1579   ROM_REGION(0x4000, "os", 0)
1580   ROM_COPY("option", 0x40000, 0, 0x4000)
1581
1582   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1583   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
1584ROM_END
1585
1586
1587ROM_START(abc310)
1588   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
1589
1590   ROM_REGION(0x44000,"option",0) /* ROM */
1591   ROM_DEFAULT_BIOS("mos200")
1592   ROM_SYSTEM_BIOS( 0, "mos200", "MOS2.00" )
1593   ROMX_LOAD("mos200.rom", 0x40000, 0x4000, CRC(5e88f994) SHA1(76235ff15d736f5def338f73ac7497c41b916505), ROM_BIOS(1))
1594   ROM_SYSTEM_BIOS( 1, "mos123", "MOS1.23" )
1595   ROMX_LOAD("mos123.rom", 0x40000, 0x4000, CRC(90d31d08) SHA1(42a01892cf8bd2ada4db1c8b36aff80c85eb5dcb), ROM_BIOS(2))
1596   ROM_SYSTEM_BIOS( 2, "mos120", "MOS1.20" )
1597   ROMX_LOAD("mos120.rom", 0x40000, 0x4000, CRC(0a1e83a0) SHA1(21dc3a94eef7c003b194686730fb461779f44925), ROM_BIOS(3))
1598   /* rom page 0  00000 */
1599   /* rom page 1  04000 */
1600   /* rom page 2  08000  32K IN PAGE 3 */
1601   /* rom page 3  0c000  SPARE SOCKET */
1602   /* rom page 4  10000  32K IN PAGE 5 */
1603   /* rom page 5  14000  DDFS */
1604   /* rom page 6  18000  32K IN PAGE 7 */
1605   /* rom page 7  1c000  ADFS */
1606   /* rom page 8  20000  32K IN PAGE 9 */
1607   /* rom page 9  24000  SPARE SOCKET */
1608   /* rom page 10 28000  32K IN PAGE 11 */
1609   /* rom page 11 2c000  SPARE SOCKET */
1610   /* rom page 12 30000 */
1611   /* rom page 13 34000 */
1612   /* rom page 14 38000  32K IN PAGE 15 */
1613   /* rom page 15 3C000  BASIC */
1614   ROM_LOAD("ddfs223.rom",  0x14000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
1615   ROM_LOAD("adfs130.rom",  0x1c000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
1616   ROM_LOAD("basic200.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281))
1617
1618   ROM_REGION(0x4000, "os", 0)
1619   ROM_COPY("option", 0x40000, 0, 0x4000)
1620
1621   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1622   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
1623ROM_END
1624
1625
1626ROM_START(reutapm)
1627   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
1628
1629   ROM_REGION(0x44000,"option",0) /* ROM */
1630   /* rom page 0  00000 */
1631   /* rom page 1  04000 */
1632   /* rom page 2  08000  32K IN PAGE 3 */
1633   /* rom page 3  0c000  SPARE SOCKET */
1634   /* rom page 4  10000  32K IN PAGE 5 */
1635   /* rom page 5  14000  SPARE SOCKET */
1636   /* rom page 6  18000  32K IN PAGE 7 */
1637   /* rom page 7  1c000  SPARE SOCKET */
1638   /* rom page 8  20000  32K IN PAGE 9 */
1639   /* rom page 9  24000  SPARE SOCKET */
1640   /* rom page 10 28000  32K IN PAGE 11 */
1641   /* rom page 11 2c000  SPARE SOCKET */
1642   /* rom page 12 30000 */
1643   /* rom page 13 34000 */
1644   /* rom page 14 38000  32K IN PAGE 15 */
1645   /* rom page 15 3C000  SPARE SOCKET */
1646   ROM_LOAD("reutera100.rom", 0x1c000, 0x4000, CRC(98ebabfb) SHA1(a7887e1e5c206203491e1e06682b9508b0fef49d))
1647   ROM_LOAD("reuterb.rom",    0x2c000, 0x4000, CRC(9e02f59b) SHA1(1e63aa3bf4b37bf9ba41e454f95db05c3d15bfbf))
1648
1649   ROM_REGION(0x4000, "os", 0)
1650   ROM_LOAD("mos_r030.rom", 0x0000, 0x4000, CRC(8b652337) SHA1(6a5c7ace255c8ac96c983d5ba67084fbd71ff61e))
1651ROM_END
1652
1653
16541363ROM_START(bbcm)
16551364   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
16561365
r249188r249189
17711480   ROM_REGION(0x44000,"option",0) /* ROM */
17721481   ROM_DEFAULT_BIOS("mos400")
17731482   ROM_SYSTEM_BIOS( 0, "mos400", "Econet MOS 4.00" )
1774   ROMX_LOAD("mos400.ic24", 0x30000, 0x10000, BAD_DUMP CRC(81729034) SHA1(d4bc2c7f5e66b5298786138f395908e70c772971), ROM_BIOS(1)) /* Merged individual ROM bank dumps */
1775   ROM_COPY("option", 0x34000, 0x24000, 0xC000) /* Mirror */
1776   ROM_COPY("option", 0x30000, 0x40000, 0x4000) /* Move loaded roms into place */
1777   ROM_FILL(0x30000, 0x4000, 0xFFFF)
1483   ROMX_LOAD("mos400.ic24", 0x20000, 0x10000, BAD_DUMP CRC(81729034) SHA1(d4bc2c7f5e66b5298786138f395908e70c772971), ROM_BIOS(1)) /* Merged individual ROM bank dumps */
1484   ROM_COPY("option", 0x24000, 0x34000, 0xC000) /* Mirror */
1485   ROM_COPY("option", 0x20000, 0x40000, 0x4000) /* Move loaded roms into place */
1486   ROM_FILL(0x20000, 0x4000, 0xFFFF)
17781487   /* 00000 rom 0   Rear Cartridge bottom 16K */
17791488   /* 04000 rom 1   Rear Cartridge top 16K */
17801489   /* 08000 rom 2   Front Cartridge bottom 16K */
r249188r249189
19501659ROM_END
19511660
19521661
1953ROM_START(pro128s)
1954   ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) /* ROM MEMORY */
1955
1956   ROM_REGION(0x44000, "option", 0) /* ROM */
1957   ROM_DEFAULT_BIOS("mos510o")
1958   ROM_SYSTEM_BIOS(0, "mos510o", "Olivetti MOS 5.10")
1959   ROMX_LOAD("mos510o.ic49", 0x30000, 0x10000, CRC(c16858d3) SHA1(ad231ed21a55e493b553703285530d1cacd3de7a), ROM_BIOS(1))
1960   ROM_COPY("option", 0x30000, 0x40000, 0x4000) /* Move loaded roms into place */
1961   ROM_FILL(0x30000, 0x4000, 0xFFFF)
1962   /* 00000 rom 0   EXTERNAL */
1963   /* 04000 rom 1   EXTERNAL */
1964   /* 08000 rom 2   SPARE SOCKET */
1965   /* 0c000 rom 3   SPARE SOCKET */
1966   /* 10000 rom 4   SWRAM */
1967   /* 14000 rom 5   SWRAM */
1968   /* 18000 rom 6   SWRAM */
1969   /* 1c000 rom 7   SWRAM */
1970   /* 20000 rom 8   SPARE SOCKET */
1971   /* 24000 rom 9   UNUSED */
1972   /* 28000 rom 10  UNUSED */
1973   /* 2c000 rom 11  UNUSED */
1974   /* 30000 rom 12  UNUSED */
1975   /* 34000 rom 13  ADFS */
1976   /* 38000 rom 14  BASIC */
1977   /* 3c000 rom 15  Utils */
1978
1979   ROM_REGION(0x4000, "os", 0)
1980   ROM_COPY("option", 0x40000, 0, 0x4000)
1981
1982   //  ROM_REGION(0x80,"eeprom",0) /* pcd8572 */
1983   /* Factory defaulted EEPROM, sets default language ROM, etc. */
1984   //  ROM_LOAD("mos510o.epr", 0x00, 0x80, CRC(d8458039) SHA1(72c056d493e74ceca41f48936012b012b496a226))
1985ROM_END
1986
1987/*     YEAR  NAME      PARENT    COMPAT MACHINE   INPUT  CLASS        INIT     COMPANY     FULLNAME                         FLAGS */
1988COMP ( 1981, bbcb,     0,        bbca,  bbcb,     bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B w/8271 FDC",  MACHINE_IMPERFECT_GRAPHICS)
1989COMP ( 1981, bbca,     bbcb,     0,     bbca,     bbca,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model A",             MACHINE_IMPERFECT_GRAPHICS)
1990COMP ( 1981, bbcb_de,  bbcb,     0,     bbcb_de,  bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B (German)",    MACHINE_IMPERFECT_GRAPHICS)
1991COMP ( 1983, bbcb_us,  bbcb,     0,     bbcb_us,  bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B (US)",        MACHINE_IMPERFECT_GRAPHICS)
1992COMP ( 1985, bbcb1770, bbcb,     0,     bbcb1770, bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B w/1770 FDC",  MACHINE_IMPERFECT_GRAPHICS)
1993COMP ( 1985, bbcbp,    0,        bbcb,  bbcbp,    bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B+ 64K",        MACHINE_IMPERFECT_GRAPHICS)
1994COMP ( 1985, bbcbp128, bbcbp,    0,     bbcbp128, bbcb,  bbc_state,   bbc,     "Acorn",    "BBC Micro Model B+ 128K",       MACHINE_IMPERFECT_GRAPHICS)
1995COMP ( 1985, abc110,   abc210,   0,     abc110,   abc,   bbc_state,   bbc,     "Acorn",    "ABC 110",                       MACHINE_NOT_WORKING)
1996COMP ( 1985, abc210,   0,        0,     abc210,   abc,   bbc_state,   bbc,     "Acorn",    "ABC 210/Cambridge Workstation", MACHINE_NOT_WORKING)
1997COMP ( 1985, abc310,   abc210,   0,     abc310,   abc,   bbc_state,   bbc,     "Acorn",    "ABC 310",                       MACHINE_NOT_WORKING)
1998COMP ( 1985, reutapm,  0,        0,     reutapm,  bbcb,  bbc_state,   bbc,     "Acorn",    "Reuters APM",                   MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
1999COMP ( 1986, bbcm,     0,        bbcb,  bbcm,     bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master 128",                MACHINE_IMPERFECT_GRAPHICS)
2000COMP ( 1986, bbcmt,    bbcm,     0,     bbcmt,    bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master Turbo",              MACHINE_NOT_WORKING)
2001COMP ( 1986, bbcmaiv,  bbcm,     0,     bbcmaiv,  bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master AIV",                MACHINE_NOT_WORKING)
2002COMP ( 1986, bbcmet,   bbcm,     0,     bbcmet,   bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master ET",                 MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS)
2003COMP ( 1986, bbcm512,  bbcm,     0,     bbcm512,  bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master 512",                MACHINE_NOT_WORKING)
2004COMP ( 1986, bbcmarm,  bbcm,     0,     bbcmarm,  bbcm,  bbc_state,   bbc,     "Acorn",    "ARM Evaluation System",         MACHINE_NOT_WORKING)
2005COMP ( 1986, bbcmc,    0,        bbcm,  bbcmc,    bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master Compact",            MACHINE_IMPERFECT_GRAPHICS)
2006COMP ( 1986, bbcmc_ar, bbcmc,    0,     bbcmc,    bbcm,  bbc_state,   bbc,     "Acorn",    "BBC Master Compact (Arabic)",   MACHINE_IMPERFECT_GRAPHICS)
2007COMP ( 1987, pro128s,  bbcmc,    0,     pro128s,  bbcm,  bbc_state,   bbc,     "Olivetti", "Prodest PC 128S",               MACHINE_IMPERFECT_GRAPHICS)
1662/*     YEAR  NAME      PARENT    COMPAT MACHINE   INPUT CLASS        INIT     COMPANY  FULLNAME */
1663COMP ( 1981, bbcb,     0,        bbca,  bbcb,     bbcb, bbc_state,   bbc,     "Acorn", "BBC Micro Model B", 0)
1664COMP ( 1981, bbca,     bbcb,     0,     bbca,     bbca, bbc_state,   bbc,     "Acorn", "BBC Micro Model A", 0)
1665COMP ( 1981, bbcb_us,  bbcb,     0,     bbcb_us,  bbcb, bbc_state,   bbc,     "Acorn", "Acorn Proton (US)", 0)
1666COMP ( 1981, bbcb_de,  bbcb,     0,     bbcb,     bbcb, bbc_state,   bbc,     "Acorn", "BBC Micro Model B (German)", 0)
1667COMP ( 1985, bbcbp,    0,        bbcb,  bbcbp,    bbcb, bbc_state,   bbc,     "Acorn", "BBC Micro Model B+ 64K", 0)
1668COMP ( 1985, bbcbp128, bbcbp,    0,     bbcbp128, bbcb, bbc_state,   bbc,     "Acorn", "BBC Micro Model B+ 128K", 0)
1669COMP ( 1986, bbcm,     0,        bbcb,  bbcm,     bbcm, bbc_state,   bbcm,    "Acorn", "BBC Master 128", 0)
1670COMP ( 1986, bbcmt,    bbcm,     0,     bbcmt,    bbcm, bbc_state,   bbcm,    "Acorn", "BBC Master Turbo", MACHINE_NOT_WORKING)
1671COMP ( 1986, bbcmaiv,  bbcm,     0,     bbcmaiv,  bbcm, bbc_state,   bbcm,    "Acorn", "BBC Master AIV", MACHINE_NOT_WORKING)
1672COMP ( 1986, bbcmet,   bbcm,     0,     bbcmet,   bbcm, bbc_state,   bbcm,    "Acorn", "BBC Master ET", 0)
1673COMP ( 1986, bbcm512,  bbcm,     0,     bbcm512,  bbcm, bbc_state,   bbcm,    "Acorn", "BBC Master 512", MACHINE_NOT_WORKING)
1674COMP ( 1986, bbcmarm,  bbcm,     0,     bbcmarm,  bbcm, bbc_state,   bbcm,    "Acorn", "ARM Evaluation System", MACHINE_NOT_WORKING)
1675COMP ( 1986, bbcmc,    0,        bbcm,  bbcmc,    bbcm, bbc_state,   bbcm,    "Acorn", "BBC Master Compact", 0)
1676COMP ( 1986, bbcmc_ar, bbcmc,    0,     bbcmc,    bbcm, bbc_state,   bbcm,    "Acorn", "BBC Master Compact (Arabic)", 0)
trunk/src/mess/drivers/n64.c
r249188r249189
414414   MCFG_SCREEN_REFRESH_RATE(60)
415415   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
416416   MCFG_SCREEN_SIZE(640, 525)
417   MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
417   MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
418418   MCFG_SCREEN_UPDATE_DRIVER(n64_state, screen_update_n64)
419419   MCFG_SCREEN_VBLANK_DRIVER(n64_state, screen_eof_n64)
420420
trunk/src/mess/drivers/pcd.c
r249188r249189
1717#include "machine/wd_fdc.h"
1818#include "machine/mc146818.h"
1919#include "machine/pcd_kbd.h"
20#include "video/pcd.h"
20#include "machine/terminal.h"
2121#include "sound/speaker.h"
22#include "video/scn2674.h"
2223#include "formats/pc_dsk.h"
2324#include "bus/scsi/omti5100.h"
2425#include "bus/rs232/rs232.h"
r249188r249189
3839   m_speaker(*this, "speaker"),
3940   m_fdc(*this, "fdc"),
4041   m_rtc(*this, "rtc"),
42   m_crtc(*this, "crtc"),
43   m_palette(*this, "palette"),
44   m_gfxdecode(*this, "gfxdecode"),
4145   m_scsi(*this, "scsi"),
4246   m_scsi_data_out(*this, "scsi_data_out"),
4347   m_scsi_data_in(*this, "scsi_data_in"),
44   m_ram(*this, "ram")
48   m_terminal(*this, "terminal"),
49   m_ram(*this, "ram"),
50   m_vram(*this, "vram"),
51   m_charram(8*1024)
4552   { }
4653
4754   DECLARE_READ8_MEMBER( irq_callback );
r249188r249189
5663   DECLARE_WRITE8_MEMBER( stat_w );
5764   DECLARE_READ8_MEMBER( led_r );
5865   DECLARE_WRITE8_MEMBER( led_w );
66   DECLARE_READ8_MEMBER( detect_r );
67   DECLARE_WRITE8_MEMBER( detect_w );
5968   DECLARE_READ16_MEMBER( dskctl_r );
6069   DECLARE_WRITE16_MEMBER( dskctl_w );
61
70   DECLARE_READ8_MEMBER( mcu_r );
71   DECLARE_WRITE8_MEMBER( mcu_w );
6272   DECLARE_READ8_MEMBER( scsi_r );
6373   DECLARE_WRITE8_MEMBER( scsi_w );
74   DECLARE_WRITE8_MEMBER( vram_sw_w );
75   DECLARE_WRITE16_MEMBER( vram_w );
6476   DECLARE_READ16_MEMBER( mmu_r );
6577   DECLARE_WRITE16_MEMBER( mmu_w );
6678   DECLARE_READ16_MEMBER( mem_r );
6779   DECLARE_WRITE16_MEMBER( mem_w );
68
80   DECLARE_READ8_MEMBER( exp_r );
81   DECLARE_WRITE8_MEMBER( exp_w );
82   DECLARE_WRITE8_MEMBER( term_key_w );
83   SCN2674_DRAW_CHARACTER_MEMBER(display_pixels);
6984   DECLARE_FLOPPY_FORMATS( floppy_formats );
7085   DECLARE_WRITE_LINE_MEMBER(write_scsi_bsy);
7186   DECLARE_WRITE_LINE_MEMBER(write_scsi_cd);
r249188r249189
86101   required_device<speaker_sound_device> m_speaker;
87102   required_device<wd2793_t> m_fdc;
88103   required_device<mc146818_device> m_rtc;
104   required_device<scn2674_device> m_crtc;
105   required_device<palette_device> m_palette;
106   required_device<gfxdecode_device> m_gfxdecode;
89107   required_device<SCSI_PORT_DEVICE> m_scsi;
90108   required_device<output_latch_device> m_scsi_data_out;
91109   required_device<input_buffer_device> m_scsi_data_in;
110   optional_device<generic_terminal_device> m_terminal;
92111   required_device<ram_device> m_ram;
93   UINT8 m_stat, m_led;
112   required_shared_ptr<UINT16> m_vram;
113   dynamic_buffer m_charram;
114   UINT8 m_stat, m_led, m_vram_sw, m_term_key;
94115   int m_msg, m_bsy, m_io, m_cd, m_req, m_rst;
95116   emu_timer *m_req_hack;
96117   UINT16 m_dskctl;
r249188r249189
107128//  MACHINE EMULATION
108129//**************************************************************************
109130
131static const gfx_layout pcd_charlayout =
132{
133   8, 14,                   /* 8 x 14 characters */
134   512,                    /* 512 characters */
135   1,                  /* 1 bits per pixel */
136   { 0 },                  /* no bitplanes */
137   /* x offsets */
138   { 0, 1, 2, 3, 4, 5, 6, 7 },
139   /* y offsets */
140   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8 },
141   8*16
142};
143
110144void pcd_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
111145{
112146   // TODO: remove this hack
r249188r249189
116150
117151void pcd_state::machine_start()
118152{
153   m_gfxdecode->set_gfx(0, global_alloc(gfx_element(machine().device<palette_device>("palette"), pcd_charlayout, &m_charram[0], 0, 1, 0)));
119154   m_req_hack = timer_alloc();
120155   save_item(NAME(m_mmu.ctl));
121156   save_item(NAME(m_mmu.regs));
r249188r249189
126161   m_stat = 0;
127162   m_led = 0;
128163   m_dskctl = 0;
164   m_vram_sw = 1;
129165   m_rst = 0;
130166   m_mmu.ctl = 0;
131167   m_mmu.sc = false;
132   if(ioport("mmu"))
133      m_mmu.type = ioport("mmu")->read();
134   else
135      m_mmu.type = 0;
168   m_mmu.type = ioport("mmu")->read();
169   m_term_key = 0;
136170}
137171
138172READ8_MEMBER( pcd_state::irq_callback )
r249188r249189
151185   m_speaker->level_w(state);
152186}
153187
188WRITE16_MEMBER( pcd_state::vram_w )
189{
190   if(m_vram_sw)
191      COMBINE_DATA(&m_vram[offset]);
192   else if(mem_mask & 0xff)
193   {
194      m_charram[offset & 0x1fff] = data;
195      m_gfxdecode->gfx(0)->mark_dirty(offset/16);
196   }
197}
198
199WRITE8_MEMBER( pcd_state::vram_sw_w )
200{
201   m_vram_sw = data & 1;
202}
203
154204READ8_MEMBER( pcd_state::nmi_io_r )
155205{
156206   if(space.debugger_access())
r249188r249189
192242   m_stat &= ~data;
193243}
194244
245READ8_MEMBER( pcd_state::detect_r )
246{
247   return 0;
248}
249
250WRITE8_MEMBER( pcd_state::detect_w )
251{
252}
253
254READ8_MEMBER( pcd_state::mcu_r )
255{
256   return 0x20;
257}
258
259WRITE8_MEMBER( pcd_state::mcu_w )
260{
261}
262
195263READ16_MEMBER( pcd_state::dskctl_r )
196264{
197265   return m_dskctl;
r249188r249189
269337   }
270338}
271339
340SCN2674_DRAW_CHARACTER_MEMBER(pcd_state::display_pixels)
341{
342   if(lg)
343   {
344      UINT16 data = m_vram[address];
345      data = (data >> 8) | (data << 8);
346      for(int i = 0; i < 16; i++)
347         bitmap.pix32(y, x + i) = m_palette->pen((data & (1 << (15 - i))) ? 1 : 0);
348   }
349   else
350   {
351      UINT8 data = m_charram[(m_vram[address] & 0xff) * 16 + linecount];
352      if(cursor && blink)
353         data = 0xff;
354      for(int i = 0; i < 8; i++)
355         bitmap.pix32(y, x + i) = m_palette->pen((data & (1 << (7 - i))) ? 1 : 0);
356   }
357}
358
272359READ8_MEMBER(pcd_state::scsi_r)
273360{
274361   UINT8 ret = 0;
r249188r249189
408495   return ram[offset];
409496}
410497
498// The PC-X treats the graphics board as a serial port.  Maybe the 8031 (instead of 8047) can
499// write directly to the video ram and there's a char ROM instead of RAM?
500READ8_MEMBER(pcd_state::exp_r)
501{
502   if(m_dskctl & 0x40)
503   {
504      if(!offset)
505      {
506         UINT8 data = m_term_key;
507         m_term_key = 0;
508         return data;
509      }
510      else
511      {
512         m_pic2->ir0_w(CLEAR_LINE);
513         return (m_term_key ? 1 : 0);
514      }
515   }
516   else if(offset & 1)
517      return m_crtc->read(space, offset/2);
518   return 0xff;
519}
520
521WRITE8_MEMBER(pcd_state::exp_w)
522{
523   if(m_dskctl & 0x40)
524   {
525      if(!offset)
526      {
527         m_pic2->ir0_w(ASSERT_LINE);
528         m_terminal->write(space, 0, data);
529      }
530   }
531   else if(!(offset & 1))
532      return m_crtc->write(space, offset/2, data);
533}
534
535WRITE8_MEMBER(pcd_state::term_key_w)
536{
537   m_pic2->ir0_w(ASSERT_LINE);
538   m_term_key = data;
539}
540
411541//**************************************************************************
412542//  ADDRESS MAPS
413543//**************************************************************************
414544
415545static ADDRESS_MAP_START( pcd_map, AS_PROGRAM, 16, pcd_state )
416546   AM_RANGE(0x00000, 0x7ffff) AM_READWRITE(mem_r, mem_w)
547   AM_RANGE(0xf0000, 0xf7fff) AM_READONLY AM_WRITE(vram_w) AM_SHARE("vram")
417548   AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("bios", 0)
418549   AM_RANGE(0x00000, 0xfffff) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xffff)
419550ADDRESS_MAP_END
420551
421552static ADDRESS_MAP_START( pcd_io, AS_IO, 16, pcd_state )
422553   ADDRESS_MAP_UNMAP_HIGH
554   AM_RANGE(0x8000, 0x8fff) AM_READWRITE(mmu_r, mmu_w)
423555   AM_RANGE(0x0000, 0xefff) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xffff)
424556   AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram")
425557   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE8("pic1", pic8259_device, read, write, 0xffff)
r249188r249189
430562   AM_RANGE(0xf900, 0xf903) AM_DEVREADWRITE8("fdc", wd2793_t, read, write, 0xffff)
431563   AM_RANGE(0xf904, 0xf905) AM_READWRITE(dskctl_r, dskctl_w)
432564   AM_RANGE(0xf940, 0xf943) AM_READWRITE8(scsi_r, scsi_w, 0xffff)
433   AM_RANGE(0xf980, 0xf98f) AM_DEVICE("video", pcdx_video_device, map)
565   AM_RANGE(0xf980, 0xf98f) AM_DEVWRITE8("crtc", scn2674_device, write, 0x00ff)
566   AM_RANGE(0xf980, 0xf98f) AM_DEVREAD8("crtc", scn2674_device, read, 0xff00)
567   AM_RANGE(0xf9a0, 0xf9a1) AM_WRITE8(vram_sw_w, 0x00ff)
568   AM_RANGE(0xf9b0, 0xf9b3) AM_READWRITE8(mcu_r, mcu_w, 0x00ff) // 8741 comms
434569   AM_RANGE(0xf9c0, 0xf9c3) AM_DEVREADWRITE8("usart1",mc2661_device,read,write,0xffff)  // UARTs
435570   AM_RANGE(0xf9d0, 0xf9d3) AM_DEVREADWRITE8("usart2",mc2661_device,read,write,0xffff)
436571   AM_RANGE(0xf9e0, 0xf9e3) AM_DEVREADWRITE8("usart3",mc2661_device,read,write,0xffff)
437572//  AM_RANGE(0xfa00, 0xfa7f) // pcs4-n (peripheral chip select)
573   AM_RANGE(0xfb00, 0xfb01) AM_READWRITE8(detect_r, detect_w, 0xff00) // expansion card detection?
438574   AM_RANGE(0xfb00, 0xffff) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xffff)
439575ADDRESS_MAP_END
440576
441577static ADDRESS_MAP_START( pcx_io, AS_IO, 16, pcd_state )
442578   ADDRESS_MAP_UNMAP_HIGH
443   AM_RANGE(0x8000, 0x8fff) AM_READWRITE(mmu_r, mmu_w)
444   AM_RANGE(0xfb00, 0xfb01) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xff00)
579   AM_RANGE(0xf980, 0xf98f) AM_READWRITE8(exp_r, exp_w, 0xffff)
445580   AM_IMPORT_FROM(pcd_io)
446581ADDRESS_MAP_END
447582
r249188r249189
458593   FLOPPY_PC_FORMAT
459594FLOPPY_FORMATS_END
460595
461static INPUT_PORTS_START(pcx)
596static INPUT_PORTS_START(pcd)
462597   PORT_START("mmu")
463598   PORT_CONFNAME(0x03, 0x00, "MMU Type")
464599   PORT_CONFSETTING(0x00, "None")
r249188r249189
473608   MCFG_80186_TMROUT1_HANDLER(WRITELINE(pcd_state, i186_timer1_w))
474609   MCFG_80186_IRQ_SLAVE_ACK(READ8(pcd_state, irq_callback))
475610
611   MCFG_CPU_ADD("graphics", I8741, XTAL_16MHz/2)
612   MCFG_DEVICE_DISABLE()
613
476614   MCFG_TIMER_DRIVER_ADD_PERIODIC("timer0_tick", pcd_state, timer0_tick, attotime::from_hz(XTAL_16MHz / 24)) // adjusted to pass post
477615
478616   MCFG_PIC8259_ADD("pic1", DEVWRITELINE("maincpu", i80186_cpu_device, int0_w), VCC, NULL)
479617   MCFG_PIC8259_ADD("pic2", DEVWRITELINE("maincpu", i80186_cpu_device, int1_w), VCC, NULL)
480618
481   MCFG_DEVICE_ADD("video", PCD_VIDEO, 0)
482
483619   MCFG_RAM_ADD(RAM_TAG)
484620   MCFG_RAM_DEFAULT_SIZE("1M")
485621
r249188r249189
520656   MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
521657   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
522658
659   // video hardware
660   MCFG_SCREEN_ADD("screen", RASTER)
661   MCFG_SCREEN_SIZE(640, 350)
662   MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 349)
663   MCFG_SCREEN_REFRESH_RATE(50)
664   MCFG_SCREEN_UPDATE_DEVICE("crtc", scn2674_device, screen_update)
665
666   MCFG_GFXDECODE_ADD("gfxdecode", "palette", empty)
667   MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
668
669   MCFG_SCN2674_VIDEO_ADD("crtc", 0, NULL);
670   MCFG_SCN2674_TEXT_CHARACTER_WIDTH(8)
671   MCFG_SCN2674_GFX_CHARACTER_WIDTH(16)
672   MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(pcd_state, display_pixels)
673   MCFG_VIDEO_SET_SCREEN("screen")
674
523675   // rtc
524676   MCFG_MC146818_ADD("rtc", XTAL_32_768kHz)
525677   MCFG_MC146818_IRQ_HANDLER(DEVWRITELINE("pic1", pic8259_device, ir7_w))
r249188r249189
544696   MCFG_CPU_MODIFY("maincpu")
545697   MCFG_CPU_IO_MAP(pcx_io)
546698
547   MCFG_DEVICE_REPLACE("video", PCX_VIDEO, 0)
548   MCFG_PCX_VIDEO_TXD_HANDLER(DEVWRITELINE("keyboard", pcd_keyboard_device, t0_w))
699   // FIXME: temporary workaround
700   MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0)
701   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(pcd_state, term_key_w))
549702
550   MCFG_DEVICE_MODIFY("keyboard")
551   MCFG_PCD_KEYBOARD_OUT_TX_HANDLER(DEVWRITELINE("video", pcx_video_device, rx_w))
552
553   MCFG_DEVICE_MODIFY("usart2")
554   MCFG_MC2661_TXD_HANDLER(NULL)
703   MCFG_DEVICE_REMOVE("graphics")
555704MACHINE_CONFIG_END
556705
557706//**************************************************************************
r249188r249189
566715   ROM_SYSTEM_BIOS(1, "v3", "V3 GS4") // from mainboard SYBAC S26361-D359 V3 GS4
567716   ROMX_LOAD("361d0359.d42", 0x0001, 0x2000, CRC(5b4461e4) SHA1(db6756aeabb2e6d3921dc7571a5bed3497b964bf), ROM_SKIP(1) | ROM_BIOS(2))
568717   ROMX_LOAD("361d0359.d43", 0x0000, 0x2000, CRC(71c3189d) SHA1(e8dd6c632bfc833074d3a833ea7f59bb5460f313), ROM_SKIP(1) | ROM_BIOS(2))
718
719   // gfx card (scn2674 with 8741), to be moved
720   ROM_REGION(0x400, "graphics", 0)
721   ROM_LOAD("s36361-d321-v1.bin", 0x000, 0x400, CRC(69baeb2a) SHA1(98b9cd0f38c51b4988a3aed0efcf004bedd115ff))
569722ROM_END
570723
571724ROM_START( pcx )
r249188r249189
582735//  GAME DRIVERS
583736//**************************************************************************
584737
585COMP( 1984, pcd, 0, 0, pcd, 0, driver_device, 0, "Siemens", "PC-D", MACHINE_NOT_WORKING )
586COMP( 1984, pcx, pcd, 0, pcx, pcx, driver_device, 0, "Siemens", "PC-X", MACHINE_NOT_WORKING )
738COMP( 1984, pcd, 0, 0, pcd, pcd, driver_device, 0, "Siemens", "PC-D", MACHINE_NOT_WORKING )
739COMP( 1984, pcx, pcd, 0, pcx, pcd, driver_device, 0, "Siemens", "PC-X", MACHINE_NOT_WORKING )
trunk/src/mess/drivers/segapico.c
r249188r249189
119119
120120#include "emu.h"
121121#include "includes/md_cons.h"
122#include "sound/315-5641.h"
122#include "sound/upd7759.h"
123123
124124
125125#define PICO_PENX   1
r249188r249189
130130public:
131131   pico_base_state(const machine_config &mconfig, device_type type, const char *tag)
132132      : md_cons_state(mconfig, type, tag),
133      m_sega_315_5641_pcm(*this, "315_5641"),
133      m_upd7759(*this, "7759"),
134134      m_io_page(*this, "PAGE"),
135135      m_io_pad(*this, "PAD"),
136136      m_io_penx(*this, "PENX"),
137137      m_io_peny(*this, "PENY")
138138   { }
139139
140   optional_device<sega_315_5641_pcm_device> m_sega_315_5641_pcm;
140   optional_device<upd7759_device> m_upd7759;
141141
142142   required_ioport m_io_page;
143143   required_ioport m_io_pad;
r249188r249189
251251
252252      case 8: // toy story 2 checks this for 0x3f (is that 'empty'?)
253253         /* Returns free bytes left in the PCM FIFO buffer */
254         retdata = m_sega_315_5641_pcm->get_fifo_space();
254         retdata = 0x3f;
255255         break;
256256      case 9:
257257      /*
258258         For reads, if bit 15 is cleared, it means PCM is 'busy' or
259259         something like that, as games sometimes wait for it to become 1.
260260      */
261         //   return (m_upd7759->busy_r()^1) << 15;
262         // The BUSY bit stays 1 as long as some PCM sound is playing.
263         // SMPS drivers check 800012 [byte] and clear the "prevent music PCM" byte when the READY bit gets set.
264         // If this is done incorrectly, the voices in Sonic Gameworld (J) are muted by the music's PCM drums.
265         return m_sega_315_5641_pcm->busy_r() << 15;
261         return (m_upd7759->busy_r()^1) << 15;
266262
267263
268264      case 7:
r249188r249189
283279WRITE_LINE_MEMBER(pico_base_state::sound_cause_irq)
284280{
285281//  printf("sound irq\n");
286   /* sega_315_5641_pcm callback */
282   /* upd7759 callback */
287283   m_maincpu->set_input_line(3, HOLD_LINE);
288284}
289285
r249188r249189
293289
294290   switch (offset)
295291   {
296      case 0x10/2:
297         if (mem_mask & 0xFF00)
298            m_sega_315_5641_pcm->port_w(space, 0, (data >> 8) & 0xFF);
299         if (mem_mask & 0x00FF)
300            m_sega_315_5641_pcm->port_w(space, 0, (data >> 0) & 0xFF);
301         break;
302       case 0x12/2: // guess
303         // Note about uPD7759 lines:
304         //   reset line: 1 - normal, 1->0 - reset chip, 0 - playback disabled
305         //   start line: 0->1 - start playback
306         if (mem_mask & 0xFF00)
307         {
308            // I assume that:
309            // value 8000 resets the FIFO? (always used with low reset line)
310            // value 0800 maps to the uPD7759's reset line (0 = reset, 1 = normal)
311            // value 4000 maps to the uPD7759's start line (0->1 = start)
312            m_sega_315_5641_pcm->reset_w((data >> 8) & 0x08);
313            m_sega_315_5641_pcm->start_w((data >> 8) & 0x40);
314            if (data & 0x4000)
315            {
316               // Somewhere between "Reset Off" and the first sample data,
317               // we need to send a few commands to make the sample stream work.
318               // Doing that when rising the "start" line seems to work fine.
319               m_sega_315_5641_pcm->port_w(space, 0, 0xFF);   // "Last Sample" value (must be >= 0x10)
320               m_sega_315_5641_pcm->port_w(space, 0, 0x00);   // Dummy 1
321               m_sega_315_5641_pcm->port_w(space, 0, 0x00);   // Addr MSB
322               m_sega_315_5641_pcm->port_w(space, 0, 0x00);   // Addr LSB
323            }
324         }
325         
326     
327         /*m_sega_315_5641_pcm->reset_w(0);
328         m_sega_315_5641_pcm->start_w(0);
329         m_sega_315_5641_pcm->reset_w(1);
330         m_sega_315_5641_pcm->start_w(1);
292      case 0x12/2: // guess
293         m_upd7759->reset_w(0);
294         m_upd7759->start_w(0);
295         m_upd7759->reset_w(1);
296         m_upd7759->start_w(1);
331297
332         if (mem_mask&0x00ff) m_sega_315_5641_pcm->port_w(space,0,data&0xff);
333         if (mem_mask&0xff00) m_sega_315_5641_pcm->port_w(space,0,(data>>8)&0xff);*/
298         if (mem_mask&0x00ff) m_upd7759->port_w(space,0,data&0xff);
299         if (mem_mask&0xff00) m_upd7759->port_w(space,0,(data>>8)&0xff);
334300
335301         break;
336302   }
r249188r249189
390356   MCFG_CPU_PROGRAM_MAP(pico_mem)
391357
392358   MCFG_DEVICE_REMOVE("genesis_snd_z80")
393   MCFG_DEVICE_REMOVE("ymsnd")
394359
395360   MCFG_MACHINE_START_OVERRIDE( pico_state, pico )
396361   MCFG_MACHINE_RESET_OVERRIDE( pico_base_state, ms_megadriv )
r249188r249189
398363   MCFG_PICO_CARTRIDGE_ADD("picoslot", pico_cart, NULL)
399364   MCFG_SOFTWARE_LIST_ADD("cart_list","pico")
400365
401   MCFG_SOUND_ADD("315_5641", SEGA_315_5641_PCM, UPD7759_STANDARD_CLOCK*2)
366   MCFG_SOUND_ADD("7759", UPD7759, UPD7759_STANDARD_CLOCK)
402367   MCFG_UPD7759_DRQ_CALLBACK(WRITELINE(pico_state,sound_cause_irq))
403   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.16)
404   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.16)
368   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.48)
369   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.48)
405370MACHINE_CONFIG_END
406371
407372static MACHINE_CONFIG_START( picopal, pico_state )
r249188r249189
411376   MCFG_CPU_PROGRAM_MAP(pico_mem)
412377
413378   MCFG_DEVICE_REMOVE("genesis_snd_z80")
414   MCFG_DEVICE_REMOVE("ymsnd")
415379
416380   MCFG_MACHINE_START_OVERRIDE( pico_state, pico )
417381   MCFG_MACHINE_RESET_OVERRIDE( pico_base_state, ms_megadriv )
r249188r249189
419383   MCFG_PICO_CARTRIDGE_ADD("picoslot", pico_cart, NULL)
420384   MCFG_SOFTWARE_LIST_ADD("cart_list","pico")
421385
422   MCFG_SOUND_ADD("315_5641", SEGA_315_5641_PCM, UPD7759_STANDARD_CLOCK*2)
386   MCFG_SOUND_ADD("7759", UPD7759, UPD7759_STANDARD_CLOCK)
423387   MCFG_UPD7759_DRQ_CALLBACK(WRITELINE(pico_state,sound_cause_irq))
424   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.16)
425   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.16)
388   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.48)
389   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.48)
426390MACHINE_CONFIG_END
427391
428392
r249188r249189
588552   m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a15),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a15),(base_md_cart_slot_device*)m_picocart));
589553   m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(FUNC(base_md_cart_slot_device::write_tmss_bank),(base_md_cart_slot_device*)m_picocart));
590554
591   m_sega_315_5641_pcm->reset_w(0);
592   m_sega_315_5641_pcm->start_w(0);
593   m_sega_315_5641_pcm->reset_w(1);
594   m_sega_315_5641_pcm->start_w(1);
555   m_upd7759->reset_w(0);
556   m_upd7759->start_w(0);
557   m_upd7759->reset_w(1);
558   m_upd7759->start_w(1);
595559
596560}
597561
r249188r249189
602566   MCFG_CPU_PROGRAM_MAP(copera_mem)
603567
604568   MCFG_DEVICE_REMOVE("genesis_snd_z80")
605   MCFG_DEVICE_REMOVE("ymsnd")
606569
607570   MCFG_MACHINE_START_OVERRIDE( copera_state, copera )
608571   MCFG_MACHINE_RESET_OVERRIDE( pico_base_state, ms_megadriv )
r249188r249189
610573   MCFG_COPERA_CARTRIDGE_ADD("coperaslot", copera_cart, NULL)
611574   MCFG_SOFTWARE_LIST_ADD("cart_list","copera")
612575
613   MCFG_SOUND_ADD("315_5641", SEGA_315_5641_PCM, UPD7759_STANDARD_CLOCK)
576   MCFG_SOUND_ADD("7759", UPD7759, UPD7759_STANDARD_CLOCK)
614577   MCFG_UPD7759_DRQ_CALLBACK(WRITELINE(copera_state,sound_cause_irq))
615   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.16)
616   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.16)
578   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.48)
579   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.48)
617580MACHINE_CONFIG_END
618581
619582
trunk/src/mess/drivers/xbox.c
r249188r249189
122122
123123void xbox_state::hack_eeprom()
124124{
125   // 8004e5da,4e5da=0xc3
126   m_maincpu->space(0).write_byte(0x4e5da, 0xc3);
125   // 8003b744,3b744=0x90 0x90
126   /*m_maincpu->space(0).write_byte(0x3b744, 0x90);
127   m_maincpu->space(0).write_byte(0x3b745, 0x90);
128   m_maincpu->space(0).write_byte(0x3b766, 0xc9);
129   m_maincpu->space(0).write_byte(0x3b767, 0xc3);*/
127130}
128131
129132/*static const struct {
r249188r249189
193196***************************************************************************/
194197
195198ROM_START( xbox )
196   ROM_REGION( 0x400, "mcpx", 0 )
197   // mcpx_1_0.bin is bad, first byte (0x7f) sould be removed and a byte with value 0xee added at the end
199   ROM_REGION( 0x200, "mcpx", 0 )
198200   ROM_LOAD( "mcpx_1_0.bin", 0, 0x200, CRC(f31429fc) SHA1(a9ecbf8896d10db81594923e485862aa3aac7b58) )
199   ROM_LOAD( "mcpx_1_1.bin", 0x200, 0x200, CRC(94ce376b) SHA1(6c875f17f773aaec51eb434068bb6c657c4343c0) )
201   ROM_LOAD( "mcpx_1_1.bin", 0, 0x200, CRC(94ce376b) SHA1(6c875f17f773aaec51eb434068bb6c657c4343c0) )
200202
201   ROM_REGION( 0x100000, "bios", 0)
202   ROM_LOAD( "4134_1024k.bin", 0x000000, 0x100000, CRC(49d8055a) SHA1(d46cef771a63dc8024fe36d7ab5b959087ac999f) )
203   ROM_COPY( "mcpx", 1, 0x7fe00, 0x1ff)
203   ROM_REGION( 0x80000, "bios", 0)
204   ROM_LOAD( "xbox-5530.bin", 0x000000, 0x040000, CRC(9569c4d3) SHA1(40fa73277013be3168135e1768b09623a987ff63) )
205   ROM_LOAD( "xbox-5713.bin", 0x040000, 0x040000, CRC(58fd8173) SHA1(8b7ccc4648ccd78cdb7b65cfca09621eaf2d4238) )
206   ROM_COPY( "mcpx", 0, 0x7fe00, 0x200 )
204207
205208
206209   ROM_REGION( 0x1000000, "tbp", 0 ) // To Be Processed, of course
207210   ROM_LOAD( "3944_1024k.bin", 0x000000, 0x100000, CRC(32a9ecb6) SHA1(67054fc88bda94e33e86f1b19be60efec0724fb6) )
208211   ROM_LOAD( "4034_1024k.bin", 0x000000, 0x100000, CRC(0d6fc88f) SHA1(ab676b712204fb1728bf89f9cd541a8f5a64ab97) )
212   ROM_LOAD( "4134_1024k.bin", 0x000000, 0x100000, CRC(49d8055a) SHA1(d46cef771a63dc8024fe36d7ab5b959087ac999f) )
209213   ROM_LOAD( "4817_1024k.bin", 0x000000, 0x100000, CRC(3f30863a) SHA1(dc955bd4d3ca71e01214a49e5d0aba615270c03c) )
210214   ROM_LOAD( "5101_256k.bin", 0x000000, 0x040000, CRC(e8a9224e) SHA1(5108e1025f48071c07a6823661d708c66dee97a9) )
211   ROM_LOAD( "xbox-5530.bin", 0x000000, 0x040000, CRC(9569c4d3) SHA1(40fa73277013be3168135e1768b09623a987ff63) )
212   ROM_LOAD( "xbox-5713.bin", 0x040000, 0x040000, CRC(58fd8173) SHA1(8b7ccc4648ccd78cdb7b65cfca09621eaf2d4238) )
213215   ROM_LOAD( "5838_256k.bin", 0x000000, 0x040000, CRC(5be2413d) SHA1(b9489e883c650b5e5fe2f83a32237dbf74f0e9f1) )
214216ROM_END
215217// See src/emu/gamedrv.h for details
trunk/src/mess/includes/amstrad.h
r249188r249189
2929#include "bus/cpc/smartwatch.h"
3030#include "bus/cpc/brunword4.h"
3131#include "bus/cpc/hd20.h"
32#include "bus/cpc/magicsound.h"
3332#include "machine/ram.h"
3433#include "imagedev/cassette.h"
3534#include "bus/centronics/ctronics.h"
trunk/src/mess/includes/bbc.h
r249188r249189
2222#include "machine/i8271.h"
2323#include "machine/wd_fdc.h"
2424#include "machine/upd7002.h"
25#include "machine/mc146818.h"
2625#include "video/mc6845.h"
2726#include "video/saa5050.h"
2827#include "sound/sn76496.h"
r249188r249189
5352      m_via6522_0(*this, "via6522_0"),
5453      m_via6522_1(*this, "via6522_1"),
5554      m_upd7002(*this, "upd7002"),
56      m_rtc(*this, "rtc"),
5755      m_i8271(*this, "i8271"),
58      m_wd1770(*this, "wd1770"),
59      m_wd1772(*this, "wd1772"),
6056      m_exp1(*this, "exp_rom1"),
6157      m_exp2(*this, "exp_rom2"),
6258      m_exp3(*this, "exp_rom3"),
r249188r249189
6864      m_region_maincpu(*this, "maincpu"),
6965      m_region_os(*this, "os"),
7066      m_region_opt(*this, "option"),
67      m_region_dfs(*this, "dfs"),
7168      m_bank1(*this, "bank1"),
7269      m_bank2(*this, "bank2"),
7370      m_bank3(*this, "bank3"),
r249188r249189
8380      m_palette(*this, "palette")
8481   { }
8582
86   DECLARE_FLOPPY_FORMATS(floppy_formats_525sd);
87   DECLARE_FLOPPY_FORMATS(floppy_formats_525dd);
88   DECLARE_FLOPPY_FORMATS(floppy_formats_35dd);
83   DECLARE_FLOPPY_FORMATS(floppy_formats);
8984
9085   DECLARE_WRITE8_MEMBER(bbc_page_selecta_w);
9186   DECLARE_WRITE8_MEMBER(bbc_memorya1_w);
r249188r249189
109104   DECLARE_READ8_MEMBER(bbcm_r);
110105   DECLARE_WRITE8_MEMBER(bbcm_w);
111106   DECLARE_WRITE8_MEMBER(bbc_SerialULA_w);
112
113   DECLARE_WRITE8_MEMBER(bbc_wd1770_status_w);
114   DECLARE_READ8_MEMBER(bbcm_wd177xl_read);
107   DECLARE_READ8_MEMBER(bbc_i8271_read);
108   DECLARE_WRITE8_MEMBER(bbc_i8271_write);
109   DECLARE_WRITE8_MEMBER(bbc_wd177x_status_w);
110   DECLARE_READ8_MEMBER(bbc_wd1770_read);
111   DECLARE_WRITE8_MEMBER(bbc_wd1770_write);
112   DECLARE_WRITE8_MEMBER(bbc_opus_status_w);
113   DECLARE_READ8_MEMBER(bbc_opus_read);
114   DECLARE_WRITE8_MEMBER(bbc_opus_write);
115   DECLARE_READ8_MEMBER(bbcm_wd1770_read);
116   DECLARE_WRITE8_MEMBER(bbcm_wd1770_write);
117   DECLARE_READ8_MEMBER(bbcm_wd1770l_read);
115118   DECLARE_WRITE8_MEMBER(bbcm_wd1770l_write);
116   DECLARE_WRITE8_MEMBER(bbcm_wd1772l_write);
119   DECLARE_READ8_MEMBER(bbc_disc_r);
120   DECLARE_WRITE8_MEMBER(bbc_disc_w);
117121   DECLARE_WRITE8_MEMBER(bbc_videoULA_w);
122   DECLARE_WRITE8_MEMBER(bbc_6845_w);
123   DECLARE_READ8_MEMBER(bbc_6845_r);
118124   DECLARE_READ8_MEMBER(bbc_fe_r);
119125   DECLARE_DIRECT_UPDATE_MEMBER(bbcbp_direct_handler);
120126   DECLARE_DIRECT_UPDATE_MEMBER(bbcm_direct_handler);
121
122127   DECLARE_DRIVER_INIT(bbc);
123
128   DECLARE_DRIVER_INIT(bbcm);
124129   DECLARE_MACHINE_START(bbca);
125130   DECLARE_MACHINE_RESET(bbca);
126131   DECLARE_VIDEO_START(bbca);
127
128132   DECLARE_MACHINE_START(bbcb);
129133   DECLARE_MACHINE_RESET(bbcb);
130134   DECLARE_VIDEO_START(bbcb);
131
132135   DECLARE_MACHINE_START(bbcbp);
133136   DECLARE_MACHINE_RESET(bbcbp);
134137   DECLARE_VIDEO_START(bbcbp);
135
136138   DECLARE_MACHINE_START(bbcm);
137139   DECLARE_MACHINE_RESET(bbcm);
138140   DECLARE_VIDEO_START(bbcm);
139
140141   DECLARE_PALETTE_INIT(bbc);
141142   UINT32 screen_update_bbc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
142143   INTERRUPT_GEN_MEMBER(bbcb_vsync);
r249188r249189
196197   optional_device<saa5050_device> m_trom;
197198   optional_device<tms5220_device> m_tms;
198199   optional_device<cassette_image_device> m_cassette;
199   optional_device<acia6850_device> m_acia;
200   optional_device<clock_device> m_acia_clock;
200   required_device<acia6850_device> m_acia;
201   required_device<clock_device> m_acia_clock;
201202   optional_device<rs232_port_device> m_rs232;
202203   required_device<via6522_device> m_via6522_0;
203204   optional_device<via6522_device> m_via6522_1;
204205   optional_device<upd7002_device> m_upd7002;
205   optional_device<mc146818_device> m_rtc;
206206   optional_device<i8271_device> m_i8271;
207   optional_device<wd1770_t> m_wd1770;
208   optional_device<wd1772_t> m_wd1772;
209207   required_device<generic_slot_device> m_exp1;
210208   required_device<generic_slot_device> m_exp2;
211209   optional_device<generic_slot_device> m_exp3;
r249188r249189
215213   required_memory_region m_region_maincpu;
216214   required_memory_region m_region_os;
217215   required_memory_region m_region_opt;
216   optional_memory_region m_region_dfs;
218217   required_memory_bank m_bank1; // bbca bbcb bbcbp bbcbp128 bbcm
219218   optional_memory_bank m_bank2; //           bbcbp bbcbp128 bbcm
220219   optional_memory_bank m_bank3; // bbca bbcb
r249188r249189
226225
227226   void check_interrupts();
228227
228   int m_DFSType;          // this stores the DIP switch setting for the DFS type being used
229229   int m_SWRAMtype;        // this stores the DIP switch setting for the SWRAM type being used
230230   int m_Speech;           // this stores the CONF setting for Speech enabled/disabled
231   int m_Master;           // if 0 then we are emulating a BBC B style machine
232                     // if 1 then we are emulating a BBC Master style machine
231233
232234   int m_ACCCON_IRR;       // IRQ inputs
233235
r249188r249189
345347                        i8271 disc control
346348                     ***************************************/
347349
348   int m_previous_i8271_int_state; // 8271 interrupt status
350   int m_previous_i8271_int_state; // 8271 interupt status
349351
350352                     /**************************************
351353                        WD1770 disc control
r249188r249189
355357   int m_wd177x_irq_state;
356358   int m_wd177x_drq_state;
357359   int m_previous_wd177x_int_state;
358   int m_177x_IntEnabled;
360   int m_1770_IntEnabled;
359361
360362                     /**************************************
363                        Opus Challenger Disc control
364                     ***************************************/
365
366   int m_opusbank;
367
368                     /**************************************
361369                        Video Code
362370                     ***************************************/
363371
trunk/src/mess/machine/amstrad.c
r249188r249189
16941694WRITE8_MEMBER(amstrad_state::aleste_msx_mapper)
16951695{
16961696   int page = (offset & 0x0300) >> 8;
1697   int ramptr = (data & 0x3f) * 0x4000;
1698   int rampage = data & 0x3f;
1697   int ramptr = (data & 0x1f) * 0x4000;
1698   int rampage = data & 0x1f;
16991699   int function = (data & 0xc0) >> 6;
17001700   UINT8 *ram = m_ram->pointer();
17011701
trunk/src/mess/machine/bbc.c
r249188r249189
5151*************************/
5252
5353/* the model B address all 16 of the ROM sockets */
54/* I have set bank 1 as a special case to load different DFS roms selectable from MESS's CONF settings var:bbc_DFSTypes */
5455WRITE8_MEMBER(bbc_state::bbc_page_selectb_w)
5556{
5657   m_rombank = data & 0x0f;
57   m_bank4->set_entry(m_rombank);
58   if (m_rombank != 1)
59   {
60      m_bank4->set_entry(m_rombank);
61   }
62   else
63   {
64      m_bank4->set_entry(0x10 + m_DFSType);
65   }
5866}
5967
6068
r249188r249189
7280
7381/* I have setup 3 types of sideways ram:
74820: none
751: 128K (bank 8 to 15) Solidisc sideways ram userport bank latch
831: 128K (bank 8 to 15) Solidisc sidewaysram userport bank latch
76842: 64K (banks 4 to 7) for Acorn sideways ram FE30 bank latch
77853: 128K (banks 8 to 15) for Acown sideways ram FE30 bank latch
7886*/
r249188r249189
8290
8391WRITE8_MEMBER(bbc_state::bbc_memoryb4_w)
8492{
85   switch (m_SWRAMtype)
93   if (m_rombank == 1)
8694   {
87      case 1: if (bbc_SWRAMtype1[m_userport]) m_region_opt->base()[(m_userport << 14) + offset] = data;
88      case 2: if (bbc_SWRAMtype2[m_rombank])  m_region_opt->base()[(m_rombank << 14) + offset] = data;
89      case 3: if (bbc_SWRAMtype3[m_rombank])  m_region_opt->base()[(m_rombank << 14) + offset] = data;
95      // special DFS case for Acorn DFS E00 Hack that can write to the DFS RAM Bank;
96      if (m_DFSType == 3) m_region_dfs->base()[((m_DFSType) << 14) + offset] = data;
9097   }
98   else
99   {
100      switch (m_SWRAMtype)
101      {
102         case 1: if (bbc_SWRAMtype1[m_userport]) m_region_opt->base()[(m_userport << 14) + offset] = data;
103         case 2: if (bbc_SWRAMtype2[m_rombank])  m_region_opt->base()[(m_rombank << 14) + offset] = data;
104         case 3: if (bbc_SWRAMtype3[m_rombank])  m_region_opt->base()[(m_rombank << 14) + offset] = data;
105      }
106   }
91107}
92108
93109/****************************************/
r249188r249189
361377      m_bank2->set_base(m_region_maincpu->base() + 0x3000);
362378   }
363379
364   /* ACCCON_TST controls paging of rom reads in the 0xFC00-0xFEFF region */
380   /* ACCCON_TST controls paging of rom reads in the 0xFC00-0xFEFF reigon */
365381   /* if 0 the I/O is paged for both reads and writes */
366382   /* if 1 the ROM is paged in for reads but writes still go to I/O */
367383   if (m_ACCCON_TST)
r249188r249189
522538&FE18-&FE1F uPD7002         A to D converter        A to D converter         8 ( 4 bytes x  2 )
523539&FE20-&FE23 Video ULA       -                       Video system chip        4 ( 2 bytes x  2 )
524540&FE24-&FE27 FDC Latch       1770 Control latch      1770 Control latch       4 ( 1 byte  x  4 )
525&FE28-&FE2F 1770 registers  1770 Disc Controller    1770 Disc Controller     8 ( 4 bytes x  2 )
541&FE28-&FE2F 1770 registers  1770 Disc Controller    1170 Disc Controller     8 ( 4 bytes x  2 )
526542&FE30-&FE33 ROMSEL          -                       ROM Select               4 ( 1 byte  x  4 )
527543&FE34-&3FE7 ACCCON          ACCCON select reg.      ACCCON select reg        4 ( 1 byte  x  4 )
528544&FE38-&FE3F NC              -                       -
r249188r249189
538554{
539555   long myo;
540556
557   /* Now handled in bbcm_ACCCON_write PHS - 2008-10-11 */
558//  if ( m_ACCCON_TST )
559//  {
560//      return m_region_os->base()[offset + 0x3c00];
561//  };
562
541563   if (offset<=0x0ff) /* FRED */
542564   {
543565      return 0xff;
r249188r249189
551573   if ((offset>=0x200) && (offset<=0x2ff)) /* SHEILA */
552574   {
553575      myo = offset-0x200;
554      if ((myo>=0x00) && (myo<=0x06) && (myo+0x01) & 1) return m_mc6845->status_r(space, myo-0x00);                     /* Video controller */
555      if ((myo>=0x01) && (myo<=0x07) && (myo & 1))      return m_mc6845->register_r(space, myo-0x01);
556      if ((myo>=0x08) && (myo<=0x0e) && (myo+0x01) & 1) return m_acia ? m_acia->status_r(space, myo-0x08) : 0xfe;       /* Serial controller */
557      if ((myo>=0x09) && (myo<=0x0f) && (myo & 1))      return m_acia ? m_acia->data_r(space, myo-0x09) : 0xfe;
558      if ((myo>=0x10) && (myo<=0x17))                   return 0xfe;                                                    /* Serial System Chip */
559      if ((myo>=0x18) && (myo<=0x1f))                   return m_upd7002 ? m_upd7002->read(space, myo-0x18) : 0xfe;     /* A to D converter */
560      if ((myo>=0x20) && (myo<=0x23))                   return 0xfe;                                                    /* VideoULA */
561      if ((myo>=0x24) && (myo<=0x27))                   return bbcm_wd177xl_read(space, myo - 0x24);                    /* 177x Control Latch */
562      if ((myo>=0x28) && (myo<=0x2f) && (m_wd1770))     return m_wd1770->read(space, myo-0x28);                         /* 1770 Controller */
563      if ((myo>=0x28) && (myo<=0x2f) && (m_wd1772))     return m_wd1772->read(space, myo-0x28);                         /* 1772 Controller */
564      if ((myo>=0x28) && (myo<=0x2f))                   return 0xfe;                                                    /* No Controller */
565      if ((myo>=0x30) && (myo<=0x33))                   return 0xfe;
566      if ((myo>=0x34) && (myo<=0x37))                   return bbcm_ACCCON_read(space, myo-0x34);                       /* ACCCON */
567      if ((myo>=0x38) && (myo<=0x3f))                   return 0xfe;                                                    /* NC ?? */
568      if ((myo>=0x40) && (myo<=0x5f))                   return m_via6522_0->read(space, myo-0x40);
569      if ((myo>=0x60) && (myo<=0x7f))                   return m_via6522_1 ? m_via6522_1->read(space, myo-0x60) : 0xfe;
570      if ((myo>=0x80) && (myo<=0x9f))                   return 0xfe;
571      if ((myo>=0xa0) && (myo<=0xbf))                   return m_adlc ? m_adlc->read(space, myo & 0x03) : 0xfe;
572      if ((myo>=0xc0) && (myo<=0xdf))                   return 0xfe;
573      if ((myo>=0xe0) && (myo<=0xff))                   return 0xfe;
576      if ((myo>=0x00) && (myo<=0x07)) return bbc_6845_r(space, myo-0x00);     /* Video Controller */
577      if ((myo>=0x08) && (myo<=0x0f))
578      {
579         if ((myo - 0x08) & 1)
580            return m_acia->status_r(space,0);
581         else
582            return m_acia->data_r(space,0);
583      }
584      if ((myo>=0x10) && (myo<=0x17)) return 0xfe;                                /* Serial System Chip */
585      if ((myo>=0x18) && (myo<=0x1f)) return m_upd7002->read(space, myo-0x18);    /* A to D converter */
586      if ((myo>=0x20) && (myo<=0x23)) return 0xfe;                                /* VideoULA */
587      if ((myo>=0x24) && (myo<=0x27)) return bbcm_wd1770l_read(space, myo-0x24);  /* 1770 */
588      if ((myo>=0x28) && (myo<=0x2f)) return bbcm_wd1770_read(space, myo-0x28);   /* disc control latch */
589      if ((myo>=0x30) && (myo<=0x33)) return 0xfe;                                /* page select */
590      if ((myo>=0x34) && (myo<=0x37)) return bbcm_ACCCON_read(space, myo-0x34);   /* ACCCON */
591      if ((myo>=0x38) && (myo<=0x3f)) return 0xfe;                                /* NC ?? */
592      if ((myo>=0x40) && (myo<=0x5f)) return m_via6522_0->read(space, myo-0x40);
593      if ((myo>=0x60) && (myo<=0x7f)) return m_via6522_1->read(space, myo-0x60);
594      if ((myo>=0x80) && (myo<=0x9f)) return 0xfe;
595      if ((myo>=0xa0) && (myo<=0xbf)) return m_adlc->read(space, myo & 0x03);
596      if ((myo>=0xc0) && (myo<=0xdf)) return 0xfe;
597      if ((myo>=0xe0) && (myo<=0xff)) return 0xfe;
574598   }
599
575600   return 0xfe;
576601}
577602
r249188r249189
582607   if ((offset>=0x200) && (offset<=0x2ff)) /* SHEILA */
583608   {
584609      myo=offset-0x200;
585      if ((myo>=0x00) && (myo<=0x06) && (myo+0x01) & 1) m_mc6845->address_w(space, myo-0x00, data);                     /* Video Controller */
586      if ((myo>=0x01) && (myo<=0x07) && (myo & 1))      m_mc6845->register_w(space, myo-0x01, data);
587      if ((myo>=0x08) && (myo<=0x0e) && (myo+0x01) & 1) if (m_acia) m_acia->control_w(space, myo-0x08, data);           /* Serial controller */
588      if ((myo>=0x09) && (myo<=0x0f) && (myo & 1))      if (m_acia) m_acia->data_w(space, myo-0x09, data);
589      if ((myo>=0x10) && (myo<=0x17))                   bbc_SerialULA_w(space, myo-0x10, data);                         /* Serial System Chip */
590      if ((myo>=0x18) && (myo<=0x1f) && (m_upd7002))    m_upd7002->write(space, myo-0x18, data);                        /* A to D converter */
591      if ((myo>=0x20) && (myo<=0x23))                   bbc_videoULA_w(space, myo-0x20, data);                          /* VideoULA */
592      if ((myo>=0x24) && (myo<=0x27) && (m_wd1770))     bbcm_wd1770l_write(space, myo-0x24, data);                      /* disc control latch */
593      if ((myo>=0x28) && (myo<=0x2f) && (m_wd1770))     m_wd1770->write(space, myo-0x28, data);                         /* 1770 Controller */
594      if ((myo>=0x24) && (myo<=0x27) && (m_wd1772))     bbcm_wd1772l_write(space, myo-0x24, data);                      /* disc control latch */
595      if ((myo>=0x28) && (myo<=0x2f) && (m_wd1772))     m_wd1772->write(space, myo-0x28, data);                         /* 1772 Controller */
596      if ((myo>=0x30) && (myo<=0x33))                   page_selectbm_w(space, myo-0x30, data);                         /* ROMSEL */
597      if ((myo>=0x34) && (myo<=0x37))                   bbcm_ACCCON_write(space, myo-0x34, data);                       /* ACCCON */
598      //if ((myo>=0x38) && (myo<=0x3f))                                                                                 /* NC ?? */
599      if ((myo>=0x40) && (myo<=0x5f))                   m_via6522_0->write(space, myo-0x40, data);
600      if ((myo>=0x60) && (myo<=0x7f) && (m_via6522_1))  m_via6522_1->write(space, myo-0x60, data);
610      if ((myo>=0x00) && (myo<=0x07)) bbc_6845_w(space, myo-0x00, data);           /* Video Controller */
611      if ((myo>=0x08) && (myo<=0x0f))
612      {
613         if ((myo - 0x08) & 1)
614            m_acia->control_w(space, 0, data);
615         else
616            m_acia->data_w(space, 0, data);
617      }
618      if ((myo>=0x10) && (myo<=0x17)) bbc_SerialULA_w(space, myo-0x10, data);     /* Serial System Chip */
619      if ((myo>=0x18) && (myo<=0x1f)) m_upd7002->write(space, myo-0x18, data);    /* A to D converter */
620      if ((myo>=0x20) && (myo<=0x23)) bbc_videoULA_w(space, myo-0x20, data);      /* VideoULA */
621      if ((myo>=0x24) && (myo<=0x27)) bbcm_wd1770l_write(space, myo-0x24, data);  /* 1770 */
622      if ((myo>=0x28) && (myo<=0x2f)) bbcm_wd1770_write(space, myo-0x28, data);   /* disc control latch */
623      if ((myo>=0x30) && (myo<=0x33)) page_selectbm_w(space, myo-0x30, data);     /* page select */
624      if ((myo>=0x34) && (myo<=0x37)) bbcm_ACCCON_write(space, myo-0x34, data);   /* ACCCON */
625      //if ((myo>=0x38) && (myo<=0x3f))                                           /* NC ?? */
626      if ((myo>=0x40) && (myo<=0x5f)) m_via6522_0->write(space, myo-0x40, data);
627      if ((myo>=0x60) && (myo<=0x7f)) m_via6522_1->write(space, myo-0x60, data);
601628      //if ((myo>=0x80) && (myo<=0x9f))
602      if ((myo>=0xa0) && (myo<=0xbf) && (m_adlc))      m_adlc->write(space, myo & 0x03, data);
629      if ((myo>=0xa0) && (myo<=0xbf)) m_adlc->write(space, myo & 0x03, data);
603630      //if ((myo>=0xc0) && (myo<=0xdf))
604631      //if ((myo>=0xe0) && (myo<=0xff))
605632   }
r249188r249189
638665normally at logic 1 with no button pressed and change to 0
639666when a button is pressed.
640667
641PB6 and PB7 inputs from the speech processor (model B and B+)
642-------------------------------------------------------------
668PB6 and PB7 inputs from the speech processor
669--------------------------------------------
643670PB6 is the speech processor 'ready' output and PB7 is from the
644671speech processor 'interrupt' output.
645672
646PB6 and PB7 outputs to Master CMOS RAM/RTC
647------------------------------------------
648PB6 operates the 146818 chip enable when set to '1'. PB7 operates
649the 146818 address strobe line.
650
651673CA1 input
652674---------
653675This is the vertical sync input from the 6845. CA1 is set up to
654676interrupt the 6502 every 20ms (50Hz) as a vertical sync from
655the video circuitry is detected. The operation system changes
656the display flash colours on this interrupt so that they occur
657during the screen blanking period.
677the video circuity is detected. The operation system changes
678the flash colours on the display in this interrupt time so that
679they maintain synchronisation with the rest of the picture.
658680----------------------------------------------------------------
659681This is required for a lot of time function within the machine
660682and must be triggered every 20ms. (Should check at some point
r249188r249189
808830/* This the BBC Masters Real Time Clock and NVRAM IC */
809831void bbc_state::MC146818_set(address_space &space)
810832{
811   //logerror ("146181 WR=%d DS=%d AS=%d CE=%d \n",m_MC146818_WR,m_MC146818_DS,m_MC146818_AS,m_MC146818_CE);
812   //mc146818_device *rtc = space.machine().device<mc146818_device>("rtc");
833   logerror ("146181 WR=%d DS=%d AS=%d CE=%d \n",m_MC146818_WR,m_MC146818_DS,m_MC146818_AS,m_MC146818_CE);
834   mc146818_device *rtc = space.machine().device<mc146818_device>("rtc");
813835
814836   // if chip enabled
815837   if (m_MC146818_CE)
r249188r249189
819841      {
820842         if (m_MC146818_WR)
821843         {
822            m_via_system_porta = m_rtc->read(space, 1);
844            m_via_system_porta=rtc->read(space, 1);
823845            //logerror("read 146818 data %d \n",m_via_system_porta);
824846         }
825847         else
826848         {
827            m_rtc->write(space, 1, m_via_system_porta);
849            rtc->write(space, 1, m_via_system_porta);
828850            //logerror("write 146818 data %d \n",m_via_system_porta);
829851         }
830852      }
r249188r249189
832854      // if address select is set then set the address in the 146818
833855      if (m_MC146818_AS)
834856      {
835         m_rtc->write(space, 0, m_via_system_porta);
857         rtc->write(space, 0, m_via_system_porta);
836858         //logerror("write 146818 address %d \n",m_via_system_porta);
837859      }
838860   }
r249188r249189
847869   if (m_b0_sound == 0)
848870   {
849871      //logerror("Doing an unsafe write to the sound chip %d \n",data);
850      if (m_sn) m_sn->write(space, 0, m_via_system_porta);
872      m_sn->write(space, 0, m_via_system_porta);
851873   }
852   if (m_b1_speech_read == 0)
853   {
854      if (m_tms) m_via_system_porta = m_tms->status_r(space, 0);
855      //logerror("Doing an unsafe read to the speech chip %d \n",m_via_system_porta);
856   }
857   if (m_b2_speech_write == 0)
858   {
859      //logerror("Doing an unsafe write to the speech chip %d \n",data);
860      if (m_tms) m_tms->data_w(space, 0, m_via_system_porta);
861   }
862874   if (m_b3_keyboard == 0)
863875   {
864876      //logerror("Doing an unsafe write to the keyboard %d \n",data);
865877      m_via_system_porta = bbc_keyboard(space, m_via_system_porta);
866878   }
867   if (m_rtc) MC146818_set(space);
879   if (m_Master) MC146818_set(space);
868880}
869881
870882
r249188r249189
887899         }
888900         break;
889901      case 1:
890         if (m_rtc && m_MC146818_WR == 0)
902         if (m_Master)
891903         {
892            /* BBC Master has NVRAM Here */
893            m_MC146818_WR = 1;
894            MC146818_set(space);
904            if (m_MC146818_WR == 0)
905            {
906               /* BBC MASTER has NVRAM Here */
907               m_MC146818_WR = 1;
908               MC146818_set(space);
909            }
895910         }
896911         else
897912         {
r249188r249189
899914            {
900915               /* VSP TMS 5220 */
901916               m_b1_speech_read = 1;
902               //logerror("Speech read select TRUE\n");
903               if (m_tms) m_tms->rsq_w(TRUE);
904917            }
905918         }
906919         break;
907920      case 2:
908         if (m_rtc && m_MC146818_DS == 0)
921         if (m_Master)
909922         {
910            /* BBC Master has NVRAM Here */
911            m_MC146818_DS = 1;
912            MC146818_set(space);
923            if (m_MC146818_DS == 0)
924            {
925               /* BBC MASTER has NVRAM Here */
926               m_MC146818_DS = 1;
927               MC146818_set(space);
928            }
913929         }
914930         else
915931         {
r249188r249189
917933            {
918934               /* VSP TMS 5220 */
919935               m_b2_speech_write = 1;
920               //logerror("Speech write select TRUE\n");
921               if (m_tms) m_tms->wsq_w(TRUE);
922936            }
923937         }
924938         break;
r249188r249189
966980         if (m_b0_sound == 1)
967981         {
968982            m_b0_sound = 0;
969            if (m_sn) m_sn->write(space, 0, m_via_system_porta);
983            m_sn->write(space, 0, m_via_system_porta);
970984         }
971985         break;
972986      case 1:
973         if (m_rtc && m_MC146818_WR == 1)
987         if (m_Master)
974988         {
975            /* BBC Master has NVRAM Here */
976            m_MC146818_WR = 0;
977            MC146818_set(space);
989            if (m_MC146818_WR == 1)
990            {
991               /* BBC MASTER has NV RAM Here */
992               m_MC146818_WR = 0;
993               MC146818_set(space);
994            }
978995         }
979996         else
980997         {
r249188r249189
982999            {
9831000               /* VSP TMS 5220 */
9841001               m_b1_speech_read = 0;
985               //logerror("Speech read select FALSE\n");
986               if (m_tms) m_tms->rsq_w(FALSE);
9871002            }
9881003         }
9891004         break;
9901005      case 2:
991         if (m_rtc && m_MC146818_DS == 1)
1006         if (m_Master)
9921007         {
993            /* BBC Master has NVRAM Here */
994            m_MC146818_DS = 0;
995            MC146818_set(space);
1008            if (m_MC146818_DS == 1)
1009            {
1010               /* BBC MASTER has NV RAM Here */
1011               m_MC146818_DS = 0;
1012               MC146818_set(space);
1013            }
9961014         }
9971015         else
9981016         {
r249188r249189
10001018            {
10011019               /* VSP TMS 5220 */
10021020               m_b2_speech_write = 0;
1003               //logerror("Speech write select FALSE\n");
1004               if (m_tms) m_tms->wsq_w(FALSE);
10051021            }
10061022         }
10071023         break;
r249188r249189
10101026         {
10111027            m_b3_keyboard = 0;
10121028            /* *** call keyboard enabled *** */
1013            m_via_system_porta = bbc_keyboard(space, m_via_system_porta);
1029            m_via_system_porta=bbc_keyboard(space, m_via_system_porta);
10141030         }
10151031         break;
10161032      case 4:
r249188r249189
10451061   }
10461062
10471063
1048   if (m_rtc)
1064   if (m_Master)
10491065   {
10501066      //set the Address Select
10511067      if (m_MC146818_AS != ((data>>7)&1))
r249188r249189
10701086   return m_via_system_porta;
10711087}
10721088
1089// D4 of portb is joystick fire button 1
1090// D5 of portb is joystick fire button 2
1091// D6 VSPINT
1092// D7 VSPRDY
10731093
1094/* this is the interupt and ready signal from the BBC B Speech processor */
1095static const int TMSint=1;
1096static const int TMSrdy=1;
1097
1098#ifdef UNUSED_FUNCTION
1099void bbc_state::bbc_TMSint(int status)
1100{
1101   TMSint=(!status)&1;
1102   TMSrdy=(!tms5220_readyq_r())&1;
1103   via_0_portb_w(0,(0xf | ioport("IN0")->read()|(TMSint<<6)|(TMSrdy<<7)));
1104}
1105#endif
1106
1107
10741108READ8_MEMBER(bbc_state::bbcb_via_system_read_portb)
10751109{
1076   // D4 of portb is joystick fire button 1
1077   // D5 of portb is joystick fire button 2
1078   // D6 VSPINT
1079   // D7 VSPRDY
1080   int TMSint = m_tms ? m_tms->intq_r() : 0;
1081   int TMSrdy = m_tms ? m_tms->readyq_r() : 0;
1082   //logerror("TMSint %d\n",TMSint);
1083   //logerror("TMSrdy %d\n",TMSrdy);
1084   return (0xf | ioport("IN0")->read() | (!TMSrdy << 7) | (!TMSint << 6));
1110   //TMSint=(!tms5220_int_r())&1;
1111   //TMSrdy=(!tms5220_readyq_r())&1;
1112
1113   //logerror("SYSTEM read portb %d\n",0xf | input_port(machine, "IN0") | (TMSint<<6)|(TMSrdy<<7));
1114
1115   return (0xf | ioport("IN0")->read() | (TMSint<<6)|(TMSrdy<<7));
10851116}
10861117
10871118
r249188r249189
10981129This means that they can only be operated as output lines.
10991130CA1 is pulled high by a 4K7 resistor. CA1 normally acts as an acknowledge
11001131line when a printer is used. CA2 is buffered so that it has become an open
1101collector output only. It usually acts as the printer strobe line.
1132collector output only. It usially acts as the printer strobe line.
11021133***********************************************************************/
11031134
11041135/* USER VIA 6522 port B is connected to the BBC user port */
r249188r249189
13991430   update_acia_rxd();
14001431   update_acia_dcd();
14011432   update_acia_cts();
1402   if (m_cassette) BBC_Cassette_motor(m_serproc_data & 0x80);
1433   BBC_Cassette_motor(m_serproc_data & 0x80);
14031434
14041435   // Set transmit clock rate
14051436   m_acia_clock->set_clock_scale( (double) 1 / serial_clocks[ data & 0x07 ] );
r249188r249189
14321463      {
14331464         /* I'll pulse it because if I used hold-line I'm not sure
14341465         it would clear - to be checked */
1435         m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
1466         m_maincpu->set_input_line(INPUT_LINE_NMI,PULSE_LINE);
14361467      }
14371468   }
14381469
r249188r249189
14401471}
14411472
14421473
1474READ8_MEMBER(bbc_state::bbc_i8271_read)
1475{
1476   int ret;
1477   logerror("i8271 read %d  ",offset);
1478   switch (offset)
1479   {
1480      case 0:
1481      case 1:
1482      case 2:
1483      case 3:
1484         /* 8271 registers */
1485         ret=m_i8271->read(space, offset);
1486         logerror("  %d\n",ret);
1487         break;
1488      case 4:
1489         ret=m_i8271->data_r(space, offset);
1490         logerror("  %d\n",ret);
1491         break;
1492      default:
1493         ret=0x0ff;
1494         break;
1495   }
1496   logerror("  void\n");
1497   return ret;
1498}
1499
1500WRITE8_MEMBER(bbc_state::bbc_i8271_write)
1501{
1502   logerror("i8271 write  %d  %d\n",offset,data);
1503
1504   switch (offset)
1505   {
1506      case 0:
1507      case 1:
1508      case 2:
1509      case 3:
1510         /* 8271 registers */
1511         m_i8271->write(space, offset, data);
1512         return;
1513      case 4:
1514         m_i8271->data_w(space, offset, data);
1515         return;
1516      default:
1517         break;
1518   }
1519}
1520
1521
1522
14431523/**************************************
14441524   WD1770 disc control function
14451525***************************************/
r249188r249189
14631543density select
14641544single density is as the 8271 disc format
14651545double density is as the 8271 disc format but with 16 sectors per track
1546
1547At some point we need to check the size of the disc image to work out if it is a single or double
1548density disc image
14661549*/
14671550
14681551
r249188r249189
14831566   int bbc_state;
14841567
14851568   /* if drq or irq is set, and interrupt is enabled */
1486   if ((m_wd177x_irq_state || m_wd177x_drq_state) && (m_177x_IntEnabled))
1569   if ((m_wd177x_irq_state || m_wd177x_drq_state) && (m_1770_IntEnabled))
14871570   {
14881571      /* int trigger */
14891572      bbc_state = 1;
r249188r249189
14931576      /* do not trigger int */
14941577      bbc_state = 0;
14951578   }
1579//printf("bbc_state %d prev %d\n", bbc_state, m_previous_wd177x_int_state);
14961580   /* nmi is edge triggered, and triggers when the state goes from clear->set.
14971581   Here we are checking this transition before triggering the nmi */
1498   if (bbc_state != m_previous_wd177x_int_state)
1582   if (bbc_state!=m_previous_wd177x_int_state)
14991583   {
15001584      if (bbc_state)
15011585      {
r249188r249189
15101594
15111595WRITE_LINE_MEMBER(bbc_state::bbc_wd177x_intrq_w)
15121596{
1597//printf("bbc_wd177x_intrq_w %d \n", state);
15131598   m_wd177x_irq_state = state;
15141599   bbc_update_fdq_int(state);
15151600}
r249188r249189
15201605   bbc_update_fdq_int(state);
15211606}
15221607
1523WRITE8_MEMBER(bbc_state::bbc_wd1770_status_w)
1608WRITE8_MEMBER(bbc_state::bbc_wd177x_status_w)
15241609{
1610   wd1770_t *fdc = machine().device<wd1770_t>("wd177x");
1611   floppy_image_device *floppy0 = machine().device<floppy_connector>("wd177x:0")->get_device();
1612   floppy_image_device *floppy1 = machine().device<floppy_connector>("wd177x:1")->get_device();
15251613   floppy_image_device *floppy = NULL;
15261614
15271615   m_drive_control = data;
1528   logerror("Drive control %d \n", data);
15291616
1530   // bit 5: reset
1531   if (!BIT(data, 5)) m_wd1770->reset();
1532
15331617   // bit 0, 1: drive select
1534   if (BIT(data, 0)) floppy = m_wd1770->subdevice<floppy_connector>("0")->get_device();
1535   if (BIT(data, 1)) floppy = m_wd1770->subdevice<floppy_connector>("1")->get_device();
1536   m_wd1770->set_floppy(floppy);
1618   if (BIT(data, 0)) floppy = floppy0;
1619   if (BIT(data, 1)) floppy = floppy1;
15371620
1621   fdc->set_floppy(floppy);
1622
15381623   // bit 2: side select
15391624   if (floppy)
15401625      floppy->ss_w(BIT(data, 2));
15411626
15421627   // bit 3: density
1543   m_wd1770->dden_w(BIT(data, 3));
1628   fdc->dden_w(BIT(data, 3));
15441629
15451630   // bit 4: interrupt enable
1546   m_177x_IntEnabled = !BIT(data, 4);
1631   m_1770_IntEnabled = !BIT(data, 4);
15471632}
15481633
1549/***************************************
1550BBC MASTER DISC SUPPORT
1551***************************************/
15521634
1553READ8_MEMBER(bbc_state::bbcm_wd177xl_read)
1635
1636READ8_MEMBER(bbc_state::bbc_wd1770_read)
15541637{
1555   return m_drive_control;
1638   int retval=0xff;
1639   wd1770_t *fdc = machine().device<wd1770_t>("wd177x");
1640   switch (offset)
1641   {
1642   case 4:
1643      retval=fdc->status_r(space, 0);
1644      break;
1645   case 5:
1646      retval=fdc->track_r(space, 0);
1647      break;
1648   case 6:
1649      retval=fdc->sector_r(space, 0);
1650      break;
1651   case 7:
1652      retval=fdc->data_r(space, 0);
1653      break;
1654   default:
1655      break;
1656   }
1657   //logerror("wd177x read: $%02X  $%02X\n", offset,retval);
1658
1659   return retval;
15561660}
15571661
1558WRITE8_MEMBER(bbc_state::bbcm_wd1770l_write)
1662WRITE8_MEMBER(bbc_state::bbc_wd1770_write)
15591663{
1664   wd1770_t *fdc = machine().device<wd1770_t>("wd177x");
1665   //logerror("wd177x write: $%02X  $%02X\n", offset,data);
1666   switch (offset)
1667   {
1668   case 0:
1669      bbc_wd177x_status_w(space, 0, data);
1670      break;
1671   case 4:
1672      fdc->cmd_w(space, 0, data);
1673      break;
1674   case 5:
1675      fdc->track_w(space, 0, data);
1676      break;
1677   case 6:
1678      fdc->sector_w(space, 0, data);
1679      break;
1680   case 7:
1681      fdc->data_w(space, 0, data);
1682      break;
1683   default:
1684      break;
1685   }
1686}
1687
1688
1689/*********************************************
1690OPUS CHALLENGER MEMORY MAP
1691        Read                        Write
1692
1693&FCF8   1770 Status register        1770 command register
1694&FCF9               1770 track register
1695&FCFA               1770 sector register
1696&FCFB               1770 data register
1697&FCFC                               1770 drive control
1698
1699
1700drive control register bits
17010   select side 0= side 0   1= side 1
17021   select drive 0
17032   select drive 1
17043   ?unused?
17054   ?Always Set
17065   Density Select 0=double, 1=single
17076   ?unused?
17087   ?unused?
1709
1710The RAM is accessible through JIM (page &FD). One page is visible in JIM at a time.
1711The selected page is controlled by the two paging registers:
1712
1713&FCFE       Paging register MSB
1714&FCFF       Paging register LSB
1715
1716256K model has 1024 pages &000 to &3ff
1717512K model has 2048 pages &000 to &7ff
1718
1719AM_RANGE(0xfc00, 0xfdff) AM_READWRITE(bbc_opus_read     , bbc_opus_write    )
1720
1721
1722**********************************************/
1723
1724
1725WRITE8_MEMBER(bbc_state::bbc_opus_status_w)
1726{
1727   wd1770_t *fdc = machine().device<wd1770_t>("wd177x");
1728   floppy_image_device *floppy0 = machine().device<floppy_connector>("wd177x:0")->get_device();
1729   floppy_image_device *floppy1 = machine().device<floppy_connector>("wd177x:1")->get_device();
15601730   floppy_image_device *floppy = NULL;
15611731
15621732   m_drive_control = data;
1563   //logerror("Drive control %d \n", data);
15641733
1565   // bit 2: reset
1566   if (!BIT(data, 2)) m_wd1770->reset();
1734   // bit 1, 2: drive select
1735   if (BIT(data, 1)) floppy = floppy0;
1736   if (BIT(data, 2)) floppy = floppy1;
15671737
1568   // bit 0, 1, 3: drive select
1569   if (BIT(data, 0)) floppy = m_wd1770->subdevice<floppy_connector>("0")->get_device();
1570   if (BIT(data, 1)) floppy = m_wd1770->subdevice<floppy_connector>("1")->get_device();
1571   if (BIT(data, 3)) floppy = m_wd1770->subdevice<floppy_connector>("2")->get_device();
1572   m_wd1770->set_floppy(floppy);
1738   fdc->set_floppy(floppy);
15731739
1574   // bit 4: side select
1740   // bit 0: side select
15751741   if (floppy)
1576      floppy->ss_w(BIT(data, 4));
1742      floppy->ss_w(BIT(data, 0));
15771743
15781744   // bit 5: density
1579   m_wd1770->dden_w(BIT(data, 5));
1745   fdc->dden_w(BIT(data, 5));
15801746
1581   m_177x_IntEnabled = 1;
1747   // bit 4: interrupt enable
1748   m_1770_IntEnabled = BIT(data, 4);
15821749}
15831750
1584WRITE8_MEMBER(bbc_state::bbcm_wd1772l_write)
1751READ8_MEMBER(bbc_state::bbc_opus_read)
15851752{
1753   wd1770_t *fdc = machine().device<wd1770_t>("wd177x");
1754   //logerror("wd177x read: $%02X\n", offset);
1755
1756   if (m_DFSType==6)
1757   {
1758      if (offset<0x100)
1759      {
1760         switch (offset)
1761         {
1762            case 0xf8:
1763               return fdc->status_r(space, 0);
1764            case 0xf9:
1765               return fdc->track_r(space, 0);
1766            case 0xfa:
1767               return fdc->sector_r(space, 0);
1768            case 0xfb:
1769               return fdc->data_r(space, 0);
1770         }
1771      }
1772      else
1773      {
1774         return memregion("disks")->base()[offset + (m_opusbank << 8)];
1775      }
1776   }
1777   return 0xff;
1778}
1779
1780WRITE8_MEMBER(bbc_state::bbc_opus_write)
1781{
1782   wd1770_t *fdc = machine().device<wd1770_t>("wd177x");
1783   //logerror("wd177x write: $%02X  $%02X\n", offset,data);
1784
1785   if (m_DFSType==6)
1786   {
1787      if (offset<0x100)
1788      {
1789         switch (offset)
1790         {
1791            case 0xf8:
1792               fdc->cmd_w(space, 0, data);
1793               break;
1794            case 0xf9:
1795               fdc->track_w(space, 0, data);
1796               break;
1797            case 0xfa:
1798               fdc->sector_w(space, 0, data);
1799               break;
1800            case 0xfb:
1801               fdc->data_w(space, 0, data);
1802               break;
1803            case 0xfc:
1804               bbc_opus_status_w(space, 0,data);
1805               break;
1806            case 0xfe:
1807               m_opusbank=(m_opusbank & 0xff) | (data<<8);
1808               break;
1809            case 0xff:
1810               m_opusbank=(m_opusbank & 0xff00) | data;
1811               break;
1812         }
1813      }
1814      else
1815      {
1816         memregion("disks")->base()[offset + (m_opusbank << 8)] = data;
1817      }
1818   }
1819}
1820
1821
1822/***************************************
1823BBC MASTER DISC SUPPORT
1824***************************************/
1825
1826
1827READ8_MEMBER(bbc_state::bbcm_wd1770_read)
1828{
1829   int retval=0xff;
1830   wd1770_t *fdc = machine().device<wd1770_t>("wd177x");
1831   switch (offset)
1832   {
1833   case 0:
1834      retval=fdc->status_r(space, 0);
1835      break;
1836   case 1:
1837      retval=fdc->track_r(space, 0);
1838      break;
1839   case 2:
1840      retval=fdc->sector_r(space, 0);
1841      break;
1842   case 3:
1843      retval=fdc->data_r(space, 0);
1844      break;
1845   default:
1846      break;
1847   }
1848   return retval;
1849}
1850
1851
1852WRITE8_MEMBER(bbc_state::bbcm_wd1770_write)
1853{
1854   wd1770_t *fdc = machine().device<wd1770_t>("wd177x");
1855   //logerror("wd177x write: $%02X  $%02X\n", offset,data);
1856   switch (offset)
1857   {
1858   case 0:
1859      fdc->cmd_w(space, 0, data);
1860      break;
1861   case 1:
1862      fdc->track_w(space, 0, data);
1863      break;
1864   case 2:
1865      fdc->sector_w(space, 0, data);
1866      break;
1867   case 3:
1868      fdc->data_w(space, 0, data);
1869      break;
1870   default:
1871      break;
1872   }
1873}
1874
1875
1876READ8_MEMBER(bbc_state::bbcm_wd1770l_read)
1877{
1878   return m_drive_control;
1879}
1880
1881WRITE8_MEMBER(bbc_state::bbcm_wd1770l_write)
1882{
1883   wd1770_t *fdc = machine().device<wd1770_t>("wd177x");
1884   floppy_image_device *floppy0 = machine().device<floppy_connector>("wd177x:0")->get_device();
1885   floppy_image_device *floppy1 = machine().device<floppy_connector>("wd177x:1")->get_device();
15861886   floppy_image_device *floppy = NULL;
15871887
15881888   m_drive_control = data;
1589   //logerror("Drive control %d \n", data);
15901889
1591   // bit 2: reset
1592   if (!BIT(data, 2)) m_wd1772->reset();
1890   // bit 0, 1: drive select
1891   if (BIT(data, 0)) floppy = floppy0;
1892   if (BIT(data, 1)) floppy = floppy1;
15931893
1594   // bit 0, 1, 3: drive select
1595   if (BIT(data, 0)) floppy = m_wd1772->subdevice<floppy_connector>("0")->get_device();
1596   if (BIT(data, 1)) floppy = m_wd1772->subdevice<floppy_connector>("1")->get_device();
1597   if (BIT(data, 3)) floppy = m_wd1772->subdevice<floppy_connector>("2")->get_device();
1598   m_wd1772->set_floppy(floppy);
1599
16001894   // bit 4: side select
16011895   if (floppy)
16021896      floppy->ss_w(BIT(data, 4));
16031897
16041898   // bit 5: density
1605   m_wd1772->dden_w(BIT(data, 5));
1899   fdc->dden_w(BIT(data, 5));
16061900
1607   m_177x_IntEnabled = 1;
1901//  m_1770_IntEnabled=(((data>>4) & 0x01)==0);
1902   m_1770_IntEnabled=1;
16081903}
16091904
1905
16101906/**************************************
1907DFS Hardware mapping for different Disc Controller types
1908***************************************/
1909
1910READ8_MEMBER(bbc_state::bbc_disc_r)
1911{
1912   switch (m_DFSType){
1913   /* case 0 to 3 are all standard 8271 interfaces */
1914   case 0: case 1: case 2: case 3:
1915      return bbc_i8271_read(space, offset);
1916   /* case 4 is the acorn 1770 interface */
1917   case 4:
1918      return bbc_wd1770_read(space, offset);
1919   /* case 5 is the watford 1770 interface */
1920   case 5:
1921      return bbc_wd1770_read(space, offset);
1922   /* case 6 is the Opus challenger interface */
1923   case 6:
1924      /* not connected here, opus drive is connected via the 1MHz Bus */
1925      break;
1926   /* case 7 in no disc controller */
1927   case 7:
1928      break;
1929   }
1930   return 0x0ff;
1931}
1932
1933WRITE8_MEMBER(bbc_state::bbc_disc_w)
1934{
1935   switch (m_DFSType){
1936   /* case 0 to 3 are all standard 8271 interfaces */
1937   case 0: case 1: case 2: case 3:
1938      bbc_i8271_write(space, offset,data);
1939      break;
1940   /* case 4 is the acorn 1770 interface */
1941   case 4:
1942      bbc_wd1770_write(space, offset,data);
1943      break;
1944   /* case 5 is the watford 1770 interface */
1945   case 5:
1946      bbc_wd1770_write(space, offset,data);
1947      break;
1948   /* case 6 is the Opus challenger interface */
1949   case 6:
1950      /* not connected here, opus drive is connected via the 1MHz Bus */
1951      break;
1952   /* case 7 in no disc controller */
1953   case 7:
1954      break;
1955   }
1956}
1957
1958
1959
1960/**************************************
16111961   BBC B Rom loading functions
16121962***************************************/
16131963
r249188r249189
16732023
16742024DRIVER_INIT_MEMBER(bbc_state,bbc)
16752025{
2026   m_Master=0;
16762027   m_rxd_cass = 0;
16772028   m_nr_high_tones = 0;
16782029   m_serproc_data = 0;
r249188r249189
16862037   m_via6522_0->write_cb2(1);
16872038}
16882039
2040DRIVER_INIT_MEMBER(bbc_state,bbcm)
2041{
2042   m_Master=1;
2043   m_rxd_cass = 0;
2044   m_nr_high_tones = 0;
2045   m_serproc_data = 0;
2046   m_cass_out_enabled = 0;
2047   m_tape_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(bbc_state::bbc_tape_timer_cb),this));
2048
2049   /* vertical sync pulse from video circuit */
2050   m_via6522_0->write_ca1(1);
2051
2052   /* light pen strobe detect (not emulated) */
2053   m_via6522_0->write_cb2(1);
2054}
2055
16892056// setup pointers for optional EPROMs
16902057void bbc_state::bbc_setup_banks(memory_bank *membank, int banks, UINT32 shift, UINT32 size)
16912058{
r249188r249189
17092076   else
17102077      eprom[3] = m_region_opt->base() + 0xc000 + shift;
17112078
1712   membank->configure_entries(0, 1, eprom[0], size);
1713   membank->configure_entries(1, 1, eprom[1], size);
1714   membank->configure_entries(2, 1, eprom[2], size);
1715   membank->configure_entries(3, 1, eprom[3], size);
2079   membank->configure_entries(0, 1,  eprom[0], size);
2080   membank->configure_entries(1, 1,  eprom[1], size);
2081   membank->configure_entries(2, 1,  eprom[2], size);
2082   membank->configure_entries(3, 1,  eprom[3], size);
17162083
17172084   if (banks > 4)
17182085   {
r249188r249189
17352102   else
17362103      eprom[1] = m_region_opt->base() + 0x8000 + shift;
17372104
1738   membank->configure_entries(0, 1, eprom[0], size);
1739   membank->configure_entries(1, 1, eprom[0] + 0x4000, size);
1740   membank->configure_entries(2, 1, eprom[1], size);
1741   membank->configure_entries(3, 1, eprom[1] + 0x4000, size);
2105   membank->configure_entries(0, 1,  eprom[0], size);
2106   membank->configure_entries(1, 1,  eprom[0] + 0x4000, size);
2107   membank->configure_entries(2, 1,  eprom[1], size);
2108   membank->configure_entries(3, 1,  eprom[1] + 0x4000, size);
17422109
17432110   if (banks > 4)
17442111   {
r249188r249189
17822149   m_previous_i8271_int_state=0;
17832150   m_previous_wd177x_int_state=1;
17842151   bbc_setup_banks(m_bank4, 16, 0, 0x4000);
2152   if (m_region_dfs)
2153      m_bank4->configure_entries(16, 8, m_region_dfs->base(), 0x4000);    // additional bank for paged ram
17852154}
17862155
17872156MACHINE_RESET_MEMBER(bbc_state, bbcb)
17882157{
17892158   UINT8 *RAM = m_region_maincpu->base();
1790   m_Speech    = (ioport("BBCCONFIG")->read() >> 0) & 0x01;
2159   m_DFSType=    (ioport("BBCCONFIG")->read() >> 0) & 0x07;
17912160   m_SWRAMtype = (ioport("BBCCONFIG")->read() >> 3) & 0x03;
17922161   m_bank1->set_base(RAM);
17932162   m_bank3->set_base(RAM + 0x4000);
r249188r249189
17972166   m_bank7->set_base(m_region_os->base());  /* bank 7 points at the OS rom  from c000 to ffff */
17982167
17992168   bbcb_IC32_initialise(this);
2169
2170   m_opusbank = 0;
18002171}
18012172
18022173
r249188r249189
18132184
18142185MACHINE_RESET_MEMBER(bbc_state, bbcbp)
18152186{
1816   m_Speech = 1;
18172187   m_bank1->set_base(m_region_maincpu->base());
18182188   m_bank2->set_base(m_region_maincpu->base() + 0x03000);  /* bank 2 screen/shadow ram     from 3000 to 7fff */
18192189   m_bank4->set_entry(0);
18202190   m_bank6->set_entry(0);
1821   m_bank7->set_base(m_region_os->base());                 /* bank 7 points at the OS rom  from c000 to ffff */
2191   m_bank7->set_base(m_region_os->base());    /* bank 7 points at the OS rom  from c000 to ffff */
18222192
18232193   bbcb_IC32_initialise(this);
18242194
r249188r249189
18472217   m_bank2->set_base(m_region_maincpu->base() + 0x3000);  /* bank 2 screen/shadow ram     from 3000 to 7fff */
18482218   m_bank4->set_entry(0);
18492219   m_bank5->set_entry(0);
1850   m_bank7->set_base(m_region_os->base());                /* bank 6 OS rom of RAM         from c000 to dfff */
2220   m_bank7->set_base(m_region_os->base());   /* bank 6 OS rom of RAM         from c000 to dfff */
18512221
18522222   bbcb_IC32_initialise(this);
18532223
trunk/src/mess/machine/pcd_kbd.c
r249188r249189
77ROM_START( pcd_keyboard )
88   ROM_REGION(0x1000, "mcu", 0)
99   ROM_LOAD("pcd_keyboard.bin", 0x0000, 0x1000, CRC(d227d6cb) SHA1(3d6140764d3d043428c941826370ebf1597c63bd))
10   ROM_FILL(0x526,1,0x03) // make the PCX video happy, TODO: figure out what's really happening
11   ROM_FILL(0x1e1,1,0x50) // fix csum
1210ROM_END
1311
1412
trunk/src/mess/video/bbc.c
r249188r249189
9999   this is used by the palette lookup in the video ULA */
100100void bbc_state::set_pixel_lookup()
101101{
102   for (int i=0; i<256; i++)
102   int i;
103   for (i=0; i<256; i++)
103104   {
104105      m_pixel_bits[i] = (((i>>7)&1)<<3) | (((i>>5)&1)<<2) | (((i>>3)&1)<<1) | (((i>>1)&1)<<0);
105106   }
r249188r249189
253254   m_trom->dew_w(state);
254255}
255256
257/************************************************************************
258 * memory interface to BBC's 6845
259 ************************************************************************/
256260
261WRITE8_MEMBER(bbc_state::bbc_6845_w)
262{
263   switch(offset & 1)
264   {
265      case 0 :
266         m_mc6845->address_w(space,0,data);
267         break;
268      case 1 :
269         m_mc6845->register_w(space,0,data);
270         break;
271   }
272   return;
273}
274
275READ8_MEMBER(bbc_state::bbc_6845_r)
276{
277   switch (offset&1)
278   {
279      case 0: return m_mc6845->status_r(space,0);
280      case 1: return m_mc6845->register_r(space,0);
281   }
282   return 0;
283}
284
285
286
287
288
257289/**** BBC B+ Shadow Ram change ****/
258290
259291void bbc_state::bbcbp_setvideoshadow(int vdusel)
r249188r249189
287319
288320VIDEO_START_MEMBER(bbc_state,bbca)
289321{
290   common_init(m_ram->size()/1024);
322   common_init(16);
291323}
292324
293325VIDEO_START_MEMBER(bbc_state,bbcb)
trunk/src/mess/video/pcd.c
r249188r249189
1// license:BSD-3-Clause
2// copyright-holders:Carl
3
4#include "pcd.h"
5#include "cpu/mcs51/mcs51.h"
6#include "cpu/mcs48/mcs48.h"
7
8const device_type PCD_VIDEO = &device_creator<pcd_video_device>;
9const device_type PCX_VIDEO = &device_creator<pcx_video_device>;
10
11pcdx_video_device::pcdx_video_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) :
12   device_t(mconfig, type, name, tag, owner, clock, shortname, source),
13   m_maincpu(*this, ":maincpu"),
14   m_mcu(*this, "graphics"),
15   m_crtc(*this, "crtc"),
16   m_palette(*this, "palette"),
17   m_gfxdecode(*this, "gfxdecode")
18{
19}
20
21pcd_video_device::pcd_video_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
22   pcdx_video_device(mconfig, PCD_VIDEO, "Siemens PC-D Video", tag, owner, clock, "pcd_video", __FILE__),
23   m_vram(32*1024),
24   m_charram(8*1024)
25{
26}
27
28pcx_video_device::pcx_video_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
29   pcdx_video_device(mconfig, PCX_VIDEO, "Siemens PC-X Video", tag, owner, clock, "pcx_video", __FILE__),
30   device_serial_interface(mconfig, *this),
31   m_vram(4*1024),
32   m_charrom(*this, "char"),
33   m_pic2(*this, ":pic2"),
34   m_txd_handler(*this)
35{
36}
37
38ROM_START( pcd_video )
39   ROM_REGION(0x400, "graphics", 0)
40   ROM_LOAD("s36361-d321-v1.bin", 0x000, 0x400, CRC(69baeb2a) SHA1(98b9cd0f38c51b4988a3aed0efcf004bedd115ff))
41ROM_END
42
43const rom_entry *pcd_video_device::device_rom_region() const
44{
45   return ROM_NAME( pcd_video );
46}
47
48ROM_START( pcx_video )
49   ROM_REGION(0x2000, "char", 0)
50   ROM_LOAD("d12-graka.bin", 0x0000, 0x2000, CRC(e4933c16) SHA1(932ae1f0cd2b029b7f5fc3d2d1679e70b25c0828))
51
52   ROM_REGION(0x6000, "graphics", 0)
53   ROM_LOAD("d40-graka.bin", 0x0000, 0x2000, CRC(dce48252) SHA1(0d9a575b2d001168a36864d7bd5db1c3aca5fb8d))
54   ROM_LOAD("d39-graka.bin", 0x4000, 0x2000, CRC(02920e25) SHA1(145a6648d75c1dc4788f9bc7790281ef7e8f8426))
55ROM_END
56
57const rom_entry *pcx_video_device::device_rom_region() const
58{
59   return ROM_NAME( pcx_video );
60}
61
62static const gfx_layout pcd_charlayout =
63{
64   8, 14,                   /* 8 x 14 characters */
65   512,                    /* 512 characters */
66   1,                  /* 1 bits per pixel */
67   { 0 },                  /* no bitplanes */
68   /* x offsets */
69   { 0, 1, 2, 3, 4, 5, 6, 7 },
70   /* y offsets */
71   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8 },
72   8*16
73};
74
75static GFXDECODE_START( pcx )
76   GFXDECODE_ENTRY( "char", 0x0000, pcd_charlayout, 0, 1 )
77GFXDECODE_END
78
79static MACHINE_CONFIG_FRAGMENT( pcd_video )
80   MCFG_CPU_ADD("graphics", I8741, XTAL_16MHz/2)
81   MCFG_DEVICE_DISABLE()
82
83   // video hardware
84   MCFG_SCREEN_ADD("screen", RASTER)
85   MCFG_SCREEN_SIZE(640, 350)
86   MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 349)
87   MCFG_SCREEN_REFRESH_RATE(50)
88   MCFG_SCREEN_UPDATE_DEVICE("crtc", scn2674_device, screen_update)
89
90   MCFG_GFXDECODE_ADD("gfxdecode", "palette", empty)
91   MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
92
93   MCFG_SCN2674_VIDEO_ADD("crtc", 0, NULL);
94   MCFG_SCN2674_TEXT_CHARACTER_WIDTH(8)
95   MCFG_SCN2674_GFX_CHARACTER_WIDTH(16)
96   MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(pcd_video_device, display_pixels)
97   MCFG_VIDEO_SET_SCREEN("screen")
98MACHINE_CONFIG_END
99
100machine_config_constructor pcd_video_device::device_mconfig_additions() const
101{
102   return MACHINE_CONFIG_NAME( pcd_video );
103}
104
105static ADDRESS_MAP_START( pcx_vid_map, AS_PROGRAM, 8, pcx_video_device )
106   AM_RANGE(0x0000, 0x5fff) AM_ROM AM_REGION("graphics", 0)
107ADDRESS_MAP_END
108
109static ADDRESS_MAP_START( pcx_vid_io, AS_IO, 8, pcx_video_device )
110   AM_RANGE(0x8000, 0x8007) AM_DEVREADWRITE("crtc", scn2674_device, read, write)
111   AM_RANGE(0x8008, 0x8008) AM_READ(unk_r)
112   AM_RANGE(0xa000, 0xa001) AM_READWRITE(vram_latch_r, vram_latch_w)
113   AM_RANGE(0xa002, 0xa003) AM_READWRITE(term_mcu_r, term_mcu_w)
114   AM_RANGE(0xc000, 0xc7ff) AM_RAM
115ADDRESS_MAP_END
116
117static ADDRESS_MAP_START( pcx_vram, AS_0, 8, pcx_video_device )
118   AM_RANGE(0x0000, 0x07ff) AM_READWRITE(vram_r, vram_w)
119ADDRESS_MAP_END
120
121static MACHINE_CONFIG_FRAGMENT( pcx_video )
122   MCFG_CPU_ADD("graphics", I8031, XTAL_24MHz/2)
123   MCFG_CPU_PROGRAM_MAP(pcx_vid_map)
124   MCFG_CPU_IO_MAP(pcx_vid_io)
125
126   // video hardware
127   MCFG_SCREEN_ADD("screen", RASTER)
128   MCFG_SCREEN_SIZE(640, 350)
129   MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 349)
130   MCFG_SCREEN_REFRESH_RATE(50)
131   MCFG_SCREEN_UPDATE_DEVICE("crtc", scn2674_device, screen_update)
132
133   MCFG_GFXDECODE_ADD("gfxdecode", "palette", pcx)
134   MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
135
136   MCFG_SCN2674_VIDEO_ADD("crtc", 0, INPUTLINE("graphics", MCS51_INT0_LINE));
137   MCFG_SCN2674_TEXT_CHARACTER_WIDTH(8)
138   MCFG_SCN2674_GFX_CHARACTER_WIDTH(16)
139   MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(pcx_video_device, display_pixels)
140   MCFG_VIDEO_SET_SCREEN("screen")
141   MCFG_DEVICE_ADDRESS_MAP(AS_0, pcx_vram)
142MACHINE_CONFIG_END
143
144machine_config_constructor pcx_video_device::device_mconfig_additions() const
145{
146   return MACHINE_CONFIG_NAME( pcx_video );
147}
148
149SCN2674_DRAW_CHARACTER_MEMBER(pcd_video_device::display_pixels)
150{
151   address <<= 1;
152   if(lg)
153   {
154      UINT16 data = m_vram[address + 1] | (m_vram[address] << 8);
155      for(int i = 0; i < 16; i++)
156         bitmap.pix32(y, x + i) = m_palette->pen((data & (1 << (15 - i))) ? 1 : 0);
157   }
158   else
159   {
160      UINT8 data;
161      data = m_charram[m_vram[address] * 16 + linecount];
162      if(cursor && blink)
163         data = 0xff;
164      for(int i = 0; i < 8; i++)
165         bitmap.pix32(y, x + i) = m_palette->pen((data & (1 << (7 - i))) ? 1 : 0);
166   }
167}
168
169SCN2674_DRAW_CHARACTER_MEMBER(pcx_video_device::display_pixels)
170{
171   UINT8 data;
172   address <<= 1;
173   data = m_charrom[m_vram[address] * 16 + linecount + (m_vram[address + 1] & 0x20 ? 4096 : 0)];
174   if(cursor && blink)
175      data = 0xff;
176   for(int i = 0; i < 8; i++)
177      bitmap.pix32(y, x + i) = m_palette->pen((data & (1 << (7 - i))) ? 1 : 0);
178}
179
180WRITE8_MEMBER(pcd_video_device::vram_w)
181{
182   if(m_vram_sw)
183      m_vram[offset] = data;
184   else if(!(offset & 1))
185   {
186      offset >>= 1;
187      m_charram[offset & 0x1fff] = data;
188      m_gfxdecode->gfx(0)->mark_dirty(offset/16);
189   }
190}
191
192READ8_MEMBER(pcd_video_device::vram_r)
193{
194   return m_vram[offset];
195}
196
197WRITE8_MEMBER(pcd_video_device::vram_sw_w)
198{
199   m_vram_sw = data & 1;
200}
201
202
203READ8_MEMBER(pcd_video_device::mcu_r)
204{
205   return 0x20;
206}
207
208WRITE8_MEMBER(pcd_video_device::mcu_w)
209{
210}
211
212READ8_MEMBER(pcx_video_device::term_r)
213{
214   switch(offset)
215   {
216      case 0:
217         m_pic2->ir0_w(CLEAR_LINE);
218         m_term_stat &= ~2;
219         return m_term_key;
220      case 1:
221         m_pic2->ir0_w(CLEAR_LINE);
222         return m_term_stat >> 1;
223   }
224   return 0xff;
225}
226
227WRITE8_MEMBER(pcx_video_device::term_w)
228{
229   if(!offset)
230   {
231      m_mcu->set_input_line(MCS51_INT1_LINE, ASSERT_LINE);
232      m_term_char = data;
233      m_term_stat |= 4;
234   }
235}
236
237READ8_MEMBER(pcx_video_device::term_mcu_r)
238{
239   switch(offset)
240   {
241      case 0:
242         m_mcu->set_input_line(MCS51_INT1_LINE, CLEAR_LINE);
243         m_pic2->ir0_w(ASSERT_LINE);
244         m_term_stat &= ~4;
245         return m_term_char;
246      case 1:
247         return m_term_stat;
248   }
249   return 0;
250}
251
252WRITE8_MEMBER(pcx_video_device::term_mcu_w)
253{
254   if(!offset)
255   {
256      m_term_key = data;
257      m_pic2->ir0_w(ASSERT_LINE);
258      m_term_stat |= 2;
259   }
260}
261
262WRITE8_MEMBER(pcx_video_device::vram_w)
263{
264   offset <<= 1;
265   m_vram[offset] = m_vram_latch_w[0];
266   m_vram[offset+1] = m_vram_latch_w[1];
267}
268
269READ8_MEMBER(pcx_video_device::vram_r)
270{
271   offset <<= 1;
272   m_vram_latch_r[0] = m_vram[offset];
273   m_vram_latch_r[1] = m_vram[offset+1];
274   return m_vram[offset];
275}
276
277WRITE8_MEMBER(pcx_video_device::vram_latch_w)
278{
279   m_vram_latch_w[offset] = data;
280}
281
282READ8_MEMBER(pcx_video_device::vram_latch_r)
283{
284   return m_vram_latch_r[offset];
285}
286
287READ8_MEMBER(pcdx_video_device::detect_r)
288{
289   return 0;
290}
291
292WRITE8_MEMBER(pcdx_video_device::detect_w)
293{
294}
295
296READ8_MEMBER(pcx_video_device::unk_r)
297{
298   return 0x80;
299}
300
301void pcd_video_device::device_start()
302{
303   m_maincpu->space(AS_IO).install_write_handler(0xf9a0, 0xf9a1, 0, 0, write8_delegate(FUNC(pcd_video_device::vram_sw_w), this), 0x00ff);
304   m_maincpu->space(AS_IO).install_readwrite_handler(0xf9b0, 0xf9b3, 0, 0, read8_delegate(FUNC(pcd_video_device::mcu_r), this), write8_delegate(FUNC(pcd_video_device::mcu_w), this), 0x00ff);
305   m_maincpu->space(AS_IO).install_readwrite_handler(0xfb00, 0xfb01, 0, 0, read8_delegate(FUNC(pcdx_video_device::detect_r), this), write8_delegate(FUNC(pcdx_video_device::detect_w), this), 0xff00);
306   m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0000, 0xf7fff, 0, 0, read8_delegate(FUNC(pcd_video_device::vram_r), this), write8_delegate(FUNC(pcd_video_device::vram_w), this), 0xffff);
307   m_gfxdecode->set_gfx(0, global_alloc(gfx_element(machine().device<palette_device>("palette"), pcd_charlayout, &m_charram[0], 0, 1, 0)));
308}
309
310void pcd_video_device::device_reset()
311{
312   m_vram_sw = 1;
313}
314
315
316DEVICE_ADDRESS_MAP_START(map, 16, pcd_video_device)
317   AM_RANGE(0x0, 0xf) AM_DEVWRITE8("crtc", scn2674_device, write, 0x00ff)
318   AM_RANGE(0x0, 0xf) AM_DEVREAD8("crtc", scn2674_device, read, 0xff00)
319ADDRESS_MAP_END
320
321void pcx_video_device::device_start()
322{
323   mcs51_cpu_device *mcu = downcast<mcs51_cpu_device *>(m_mcu.target());
324   m_maincpu->space(AS_IO).install_readwrite_handler(0xfb00, 0xfb01, 0, 0, read8_delegate(FUNC(pcdx_video_device::detect_r), this), write8_delegate(FUNC(pcdx_video_device::detect_w), this), 0x00ff);
325   m_txd_handler.resolve_safe();
326
327   // set serial callbacks
328   mcu->i8051_set_serial_tx_callback(WRITE8_DELEGATE(pcx_video_device, tx_callback));
329   mcu->i8051_set_serial_rx_callback(READ8_DELEGATE(pcx_video_device, rx_callback));
330   set_data_frame(1, 8, PARITY_NONE, STOP_BITS_1);
331   set_rate(600*2);  // FIXME: fix the keyboard when the mc2661 baud rate calc is fixed
332}
333
334void pcx_video_device::device_reset()
335{
336   m_term_key = 0;
337   m_term_stat = 0;
338   transmit_register_reset();
339   receive_register_reset();
340
341   m_txd_handler(1);
342}
343
344DEVICE_ADDRESS_MAP_START(map, 16, pcx_video_device)
345   AM_RANGE(0x0, 0xf) AM_READWRITE8(term_r, term_w, 0xffff)
346ADDRESS_MAP_END
347
348READ8_MEMBER(pcx_video_device::rx_callback)
349{
350   return get_received_char();
351}
352
353WRITE8_MEMBER(pcx_video_device::tx_callback)
354{
355   transmit_register_setup(data);
356}
357
358void pcx_video_device::tra_callback()
359{
360   m_txd_handler(transmit_register_get_data_bit());
361}
362
363void pcx_video_device::rcv_complete()
364{
365   receive_register_extract();
366   m_mcu->set_input_line(MCS51_RX_LINE, ASSERT_LINE);
367   m_mcu->set_input_line(MCS51_RX_LINE, CLEAR_LINE);
368}
369
370void pcx_video_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
371{
372   device_serial_interface::device_timer(timer, id, param, ptr);
373}
trunk/src/mess/video/pcd.h
r249188r249189
1// license:BSD-3-Clause
2// copyright-holders:Carl
3
4#ifndef _PCD_H_
5#define _PCD_H_
6
7#include "emu.h"
8#include "machine/pic8259.h"
9#include "video/scn2674.h"
10
11#define MCFG_PCX_VIDEO_TXD_HANDLER(_devcb) \
12   devcb = &pcx_video_device::set_txd_handler(*device, DEVCB_##_devcb);
13
14class pcdx_video_device : public device_t
15{
16public:
17   pcdx_video_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);
18
19   virtual DECLARE_ADDRESS_MAP(map, 16) = 0;
20   DECLARE_READ8_MEMBER(detect_r);
21   DECLARE_WRITE8_MEMBER(detect_w);
22protected:
23   required_device<cpu_device> m_maincpu;
24   required_device<cpu_device> m_mcu;
25   required_device<scn2674_device> m_crtc;
26   required_device<palette_device> m_palette;
27   required_device<gfxdecode_device> m_gfxdecode;
28};
29
30class pcd_video_device : public pcdx_video_device
31{
32public:
33   pcd_video_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
34
35   DECLARE_ADDRESS_MAP(map, 16);
36   DECLARE_ADDRESS_MAP(vram_map, 8);
37   DECLARE_READ8_MEMBER(mcu_r);
38   DECLARE_WRITE8_MEMBER(mcu_w);
39   DECLARE_WRITE8_MEMBER(vram_sw_w);
40   DECLARE_READ8_MEMBER(vram_r);
41   DECLARE_WRITE8_MEMBER(vram_w);
42
43   virtual const rom_entry *device_rom_region() const;
44   virtual machine_config_constructor device_mconfig_additions() const;
45   SCN2674_DRAW_CHARACTER_MEMBER(display_pixels);
46protected:
47   void device_start();
48   void device_reset();
49private:
50   dynamic_buffer m_vram;
51   dynamic_buffer m_charram;
52   UINT8 m_vram_sw;
53};
54
55class pcx_video_device : public pcdx_video_device,
56                   public device_serial_interface
57{
58public:
59   pcx_video_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
60   template<class _Object> static devcb_base &set_txd_handler(device_t &device, _Object object) { return downcast<pcx_video_device &>(device).m_txd_handler.set_callback(object); }
61
62   DECLARE_ADDRESS_MAP(map, 16);
63   DECLARE_READ8_MEMBER(term_r);
64   DECLARE_WRITE8_MEMBER(term_w);
65   DECLARE_READ8_MEMBER(term_mcu_r);
66   DECLARE_WRITE8_MEMBER(term_mcu_w);
67   DECLARE_READ8_MEMBER(rx_callback);
68   DECLARE_WRITE8_MEMBER(tx_callback);
69   DECLARE_READ8_MEMBER(vram_r);
70   DECLARE_WRITE8_MEMBER(vram_w);
71   DECLARE_READ8_MEMBER(vram_latch_r);
72   DECLARE_WRITE8_MEMBER(vram_latch_w);
73   DECLARE_READ8_MEMBER(unk_r);
74
75   virtual const rom_entry *device_rom_region() const;
76   virtual machine_config_constructor device_mconfig_additions() const;
77   SCN2674_DRAW_CHARACTER_MEMBER(display_pixels);
78protected:
79   void device_start();
80   void device_reset();
81   void tra_callback();
82   void rcv_complete();
83   void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
84private:
85   dynamic_buffer m_vram;
86   required_region_ptr<UINT8> m_charrom;
87   required_device<pic8259_device> m_pic2;
88   devcb_write_line m_txd_handler;
89   UINT8 m_term_key, m_term_char, m_term_stat, m_vram_latch_r[2], m_vram_latch_w[2];
90};
91
92extern const device_type PCD_VIDEO;
93extern const device_type PCX_VIDEO;
94
95#endif
trunk/src/osd/modules/netdev/pcap.c
r249188r249189
125125static void netdev_pcap_handler(u_char *user, const struct pcap_pkthdr *h, const u_char *bytes) {
126126   struct netdev_pcap_context *ctx = (struct netdev_pcap_context*)user;
127127
128   if(!ctx->p) return;
129
130128   if(OSAtomicCompareAndSwapInt((ctx->head+1) & 0x1F, ctx->tail, &ctx->tail)) {
131129      printf("buffer full, dropping packet\n");
132130      return;
r249188r249189
139137static void *netdev_pcap_blocker(void *arg) {
140138   struct netdev_pcap_context *ctx = (struct netdev_pcap_context*)arg;
141139
142   while(ctx && ctx->p) {
140   while(1) {
143141      pcap_dispatch_dl(ctx->p, 1, netdev_pcap_handler, (u_char*)ctx);
144142   }
145143
r249188r249189
234232
235233netdev_pcap::~netdev_pcap()
236234{
237#ifdef SDLMAME_MACOSX
238   m_ctx.p = NULL;
239   pthread_cancel(m_thread);
240   pthread_join(m_thread, NULL);
241#endif
242235   if(m_p) pcap_close_dl(m_p);
243236   m_p = NULL;
244237}


Previous 199869 Revisions Next


© 1997-2024 The MAME Team