Previous 199869 Revisions Next

r40678 Friday 11th September, 2015 at 06:48:57 UTC by David Haywood
Merge pull request #317 from felipesanches/gunsmokeb_rom_naming

Fixing ROM names in the bootleg version of CAPCOM GunSmoke 1985 to re…
[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 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
r249189r249190
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
r249189r249190
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
r249189r249190
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
r249189r249190
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
r249189r249190
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
r249189r249190
33243324      <publisher>Visions</publisher>
33253325      <info name="usage" value="Load with *RUN" />
33263326      <part name="cass1" interface="bbc_cass">
3327         <dataarea name="cass" size="9339">
3328            <rom name="demolator_infinitelives_run(visions).uef" size="9339" crc="8c638151" sha1="85aced0345aec14e7750c5daa290f1cb642b1961" offset="0" />
3327         <dataarea name="cass" size="9319">
3328            <rom name="demolator_run(visions).uef" size="9319" crc="5dc43e5b" sha1="d7d88ca1b651926104c0833e257e967e0d47dfc2" offset="0" />
33293329         </dataarea>
33303330      </part>
33313331      <part name="cass2" interface="bbc_cass">
3332         <dataarea name="cass" size="9319">
3333            <rom name="demolator_run(visions).uef" size="9319" crc="5dc43e5b" sha1="d7d88ca1b651926104c0833e257e967e0d47dfc2" offset="0" />
3332         <dataarea name="cass" size="9339">
3333            <rom name="demolator_infinitelives_run(visions).uef" size="9339" crc="8c638151" sha1="85aced0345aec14e7750c5daa290f1cb642b1961" offset="0" />
33343334         </dataarea>
33353335      </part>
33363336   </software>
r249189r249190
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
57245713   <software name="hopper21" cloneof="hopper">
57255714      <description>Hopper v2.1</description>
57265715      <year>1983</year>
r249189r249190
74307419      </part>
74317420   </software>
74327421
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
74447422   <software name="meteorssc" cloneof="meteors">
74457423      <description>Meteors (The Acornsoft Hits Vol.2)</description>
74467424      <year>1987</year>
r249189r249190
77457723      </part>
77467724   </software>
77477725
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
77597726   <software name="monsterspias" cloneof="monsters">
77607727      <description>Monsters (Play It Again Sam 11)</description>
77617728      <year>1989</year>
r249189r249190
88898856      </part>
88908857   </software>
88918858
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
89038859   <software name="plantoidsc" cloneof="plantoid">
89048860      <description>Planetoid (The Acornsoft Hits Vol.1)</description>
89058861      <year>1987</year>
r249189r249190
98289784      </part>
98299785   </software>
98309786
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
98429787   <software name="rocketrasc" cloneof="rocketra">
98439788      <description>Rocket Raid (The Acornsoft Hits Vol.1)</description>
98449789      <year>1987</year>
r249189r249190
1072110666      </part>
1072210667   </software>
1072310668
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
1073510669   <software name="snapperpias" cloneof="snapper">
1073610670      <description>Snapper (Play It Again Sam 7)</description>
1073710671      <year>1988</year>
r249189r249190
1190211836      </part>
1190311837   </software>
1190411838
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
1191611839   <software name="superinv">
1191711840      <description>Super Invaders</description>
1191811841      <year>1982</year>
r249189r249190
1349413417      </part>
1349513418   </software>
1349613419
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
1350813420   <software name="welcome">
1350913421      <description>Welcome</description>
1351013422      <year>1981</year>
r249189r249190
1409914011      </part>
1410014012   </software>
1410114013
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
1411314014   <software name="dskdiary">
1411414015      <description>Desk Diary</description>
1411514016      <year>198?</year>
r249189r249190
1475314654      </part>
1475414655   </software>
1475514656
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
1476714657   <software name="numberba">
1476814658      <description>Number Balance</description>
1476914659      <year>198?</year>
r249189r249190
1485214742      </part>
1485314743   </software>
1485414744
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
1486614745   <software name="sentseq">
1486714746      <description>Sentence Sequencing</description>
1486814747      <year>198?</year>
r249189r249190
1496714846      </part>
1496814847   </software>
1496914848
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
1498114849   <software name="treeknow">
1498214850      <description>Tree Of Knowledge</description>
1498314851      <year>198?</year>
r249189r249190
1507714945      </part>
1507814946   </software>
1507914947
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
1509114948   <software name="spooky">
1509214949      <description>Spooky Manor</description>
1509314950      <year>198?</year>
trunk/hash/bbcb_de_cass.xml
r0r249190
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
r0r249190
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
r0r249190
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
r249189r249190
66
77<softwarelist name="gameking" description="TimeTop GameKing cartridges">
88
9   <software name="4in1" supported="no">
10      <description>4 in 1 No. 10</description>
9   <software name="4in1_01" supported="no">
10      <description>4in1 - AirWar, DeadShot, Challenge, Speedboat</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">
15114            <rom name="4in1no10.bin" size="524288" crc="b25b1080" sha1="24bc65a9e49ba6f0ffc19b3b858d6c576a3196f7" offset="0x00000" />
16115         </dataarea>
17116      </part>
18117   </software>
19118
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>
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>
29128   </software>
30129
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
31152   <software name="2004" supported="no">
32153      <description>2004</description>
33154      <year>200?</year>
trunk/hash/gameking3.xml
r249189r249190
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
3041</softwarelist>
trunk/hash/gbcolor.xml
r249189r249190
2371123711      </part>
2371223712   </software>
2371323713
23714<!-- Li Cheng games -->
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>
2371523726
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
2371623742<!--
2371723743
2371823744  * CBA010 Shui Hu Shen Shou 水浒神兽
trunk/hash/jaguar.xml
r249189r249190
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
127140   <software name="avsp" supported="no">
128141      <description>Alien vs Predator</description>
129142      <year>1994</year>
trunk/hash/msx1_flop.xml
r249189r249190
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>
r249189r249190
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>
r249189r249190
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
r249189r249190
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
r249189r249190
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
r249189r249190
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>
r249189r249190
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>
r249189r249190
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>
r249189r249190
147147      <info name="alt_title" value="JBハロルド3~D.C.コネクション" />
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>
r249189r249190
173173      <info name="alt_title" value="JBハロルド3~D.C.コネクション" />
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>
r249189r249190
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>
r249189r249190
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>
r249189r249190
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>
r249189r249190
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>
r249189r249190
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>
r249189r249190
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>
r249189r249190
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>
r249189r249190
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
r249189r249190
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>
r249189r249190
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>
r249189r249190
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>
r249189r249190
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>
r249189r249190
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>
r249189r249190
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>
r249189r249190
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>
r249189r249190
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>
r249189r249190
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>
r249189r249190
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>
r249189r249190
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>
r249189r249190
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>
r249189r249190
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>
r249189r249190
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
r249189r249190
5243352433      </part>
5243452434   </software>
5243552435
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-->
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>
5245452456
5245552457   <!--software name="cosmocops" cloneof="cosmocop">
5245652458       <description>Cosmos Cop (Spa)</description>
r249189r249190
7988179883   </software>
7988279884
7988379885   <software name="mc_cb280" supported="no">
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>
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>
7989379894      <!-- ?? -->
79894      <dataarea name="vram" size="131072">
79895      </dataarea>
79896   </part>
79895         <dataarea name="vram" size="131072">
79896         </dataarea>
79897      </part>
7989779898   </software>
7989879899
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
7989979915   <software name="mc_samur" supported="no">
7990079916   <!-- a VT03 OneBus based system -->
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>
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>
7990879924      <!-- ?? -->
79909      <dataarea name="vram" size="131072">
79910      </dataarea>
79911   </part>
79925         <dataarea name="vram" size="131072">
79926         </dataarea>
79927      </part>
7991279928   </software>
7991379929
7991479930   <software name="mc_sg360" supported="no">
trunk/hash/pico.xml
r249189r249190
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)
2423* パソコン接続キット ピコタウンにでかけよう! - Pasokon Setsuzoku Kit PicoTown ni Dekakeyou! (Sega Toys - 20010601 - HPC-6097)
2524* トミカ・ピコ レスキューパーキング きんきゅうしゅつどう! はたらくのりもの <初回・トミカ付属> - Tomica Pico Rescue Parking Kinkyuushutsudou! Hataraku Norimono ~Shokai-Tomica Fuzoku~ (Sega Toys - 200207xx - HPC-6114)
2625* 学研 ピコで学習 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]
2826* McDonald's マクドナルドであそぼ!<10th> - McDonald's - McDonald de Asobo! ~10th Anniversary Edition~ (Sega Toys - 200306xx - HPC-6125) [reprint HPC-6079]
2927* ドラえもん のびたの まちなか ドキドキ たんけん!<10th> - Doraemon - Nobita no Machinaka Dokidoki Tanken! ~10th Anniversary Edition~ (Sega Toys - 200308xx - HPC-6126) [reprint HPC-6009]
3028* トイストーリー2 ウッディ そうさく だいさくせん!!<10th> - Toy Story 2 - Woody Sousaku Daisakusen!! ~10th Anniversary Edition~ (Sega Toys - 20030714 - HPC-6127) [reprint HPC-6090]
r249189r249190
5048* いっしょにはしろうきかんしゃトーマス <Best Selection> - Issho ni Hashirou Kikansha Thomas Best Selection (Bandai - 20040713 - T-133490) [reprint T-133140]
5149* 学研のおべんきょうソフト たしざん ひきざん - Gakken no Obenkyou Soft - Tashizan Hikizan (Gakken - 1995xxxx - T-169030)
5250* はじめまシリーズ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)
5451* くもんの すくすくれっすん はじめてのひらがな - Kumon no Sukusuku Ressun Hajimete no Hiragana (Kumon - 20020124 - T-300020)
5552* 左脳開発シリーズ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)
5753* 平成教育委員会Jr. めざせ優等生 - Heisei Kyouikuiinkai Jr. Mezase Yuutousei (Imagineer - 19951201 - T-150270)
5854* 左脳開発シリーズ 探索・感性・記憶 - Sanou Kaihatsu Series Tansaku-Kansei-Kioku (Imagineer - Existence unconfirmed!)
5955
r249189r249190
10051001      </part>
10061002   </software>
10071003
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
10081020   <software name="dorakkkt">
10091021      <description>Doraemon Kazoete-Kanzan Kazu Tokei (Jpn)</description>
10101022      <year>199?</year>
r249189r249190
34013413      </part>
34023414   </software>
34033415
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
34043434   <software name="psoccer">
34053435      <description>Pico Soccer - Mezase Soccer Senshu (Jpn)</description>
34063436      <year>1995</year>
r249189r249190
37513781      </part>
37523782   </software>
37533783
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
37543802   <software name="sanouk6">
37553803      <description>Sanou Kaihatsu Series 6 Ouyoumondai (Jpn)</description>
37563804      <year>1995</year>
r249189r249190
42954343      </part>
42964344   </software>
42974345
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
42984362   <software name="sylvan">
42994363      <description>Silvanian Families - Mori no Nakama to Tanoshii Otanjoubikai (Jpn)</description>
43004364      <year>2001</year>
trunk/hash/pro128_cart.xml
r0r249190
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
r249189r249190
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="8192">
295            <rom name="tomy 3l1.ic1.bin" size="8192" crc="1dfa3f4b" sha1="93d1c17c5edd44f27c28cde88a68f609b77feb0c" offset="0" />
294         <dataarea name="rom" size="16384">
295            <rom name="tomy 3l1.ic1.bin" size="16384" crc="1dfa3f4b" sha1="93d1c17c5edd44f27c28cde88a68f609b77feb0c" offset="0" />
296296         </dataarea>
297297      </part>
298298   </software>
trunk/hash/vc4000.xml
r249189r249190
447447      </part>
448448   </software>
449449
450   <!-- Cassette 34 (unreleased) -->
451   <!-- Cassette 35 (unreleased) -->
450   <!-- Cassette 34 - Space Laser (unreleased) -->
451   <!-- Cassette 35 - Rodeo (unreleased) -->
452452
453453   <software name="backgamm">
454454      <description>Backgammon / Jacquet</description>
r249189r249190
491491      </part>
492492   </software>
493493
494   <!-- Cassette 39 (unreleased) -->
494   <!-- Cassette 39 - Basketball (unreleased) -->
495495
496496   <software name="suprspac">
497497      <description>Super-Space</description>
r249189r249190
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
511525</softwarelist>
trunk/scripts/src/bus.lua
r249189r249190
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",
782784      MAME_DIR .. "src/emu/bus/isa/vga.c",
783785      MAME_DIR .. "src/emu/bus/isa/vga.h",
784786      MAME_DIR .. "src/emu/bus/isa/vga_ati.c",
r249189r249190
21852187      MAME_DIR .. "src/emu/bus/cpc/hd20.h",
21862188      MAME_DIR .. "src/emu/bus/cpc/ddi1.c",
21872189      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",
21882192   }
21892193end
21902194
trunk/scripts/src/sound.lua
r249189r249190
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",
630632   }
631633end
632634
trunk/scripts/target/mame/mess.lua
r249189r249190
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",
22152216}
22162217
22172218createMESSProjects(_target, _subtarget, "slicer")
trunk/src/emu/bus/cpc/cpcexp.h
r249189r249190
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 *
3444 */
3545
3646#pragma once
trunk/src/emu/bus/cpc/magicsound.c
r0r249190
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
r0r249190
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
r249189r249190
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)
2122   SLOT_INTERFACE("svga_et4k", ISA8_SVGA_ET4K)
2223   SLOT_INTERFACE("num9rev",ISA8_NUM_9_REV)
2324   SLOT_INTERFACE("com", ISA8_COM)
r249189r249190
5556   SLOT_INTERFACE("cga", ISA8_CGA)
5657   SLOT_INTERFACE("wyse700", ISA8_WYSE700)
5758   SLOT_INTERFACE("ega", ISA8_EGA)
59   SLOT_INTERFACE("pgc", ISA8_PGC)
5860   SLOT_INTERFACE("vga", ISA8_VGA)
5961   SLOT_INTERFACE("svga_et4k", ISA8_SVGA_ET4K)
6062   SLOT_INTERFACE("num9rev",ISA8_NUM_9_REV)
trunk/src/emu/bus/isa/isa_cards.h
r249189r249190
1818#include "cga.h"
1919#include "aga.h"
2020#include "ega.h"
21#include "pgc.h"
2122#include "vga.h"
2223#include "vga_ati.h"
2324#include "svga_cirrus.h"
trunk/src/emu/bus/isa/pgc.c
r0r249190
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
r0r249190
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
r249189r249190
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 */      if (RWORD(SIMMVAL+RSVAL32, &temp)) set_cop1_reg32(RTREG, temp);         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;
28492855         case 0x32:  /* LWC2 */      if (RWORD(SIMMVAL+RSVAL32, &temp)) set_cop2_reg(RTREG, temp);           break;
28502856         case 0x33:  /* PREF */      /* effective no-op */                                                   break;
28512857         case 0x34:  /* LLD */       if (RDOUBLE(SIMMVAL+RSVAL32, &temp64) && RTREG) RTVAL64 = temp64; m_lld_value = temp64;     break;
2852         case 0x35:  /* LDC1 */      if (RDOUBLE(SIMMVAL+RSVAL32, &temp64)) set_cop1_reg64(RTREG, 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;
28532865         case 0x36:  /* LDC2 */      if (RDOUBLE(SIMMVAL+RSVAL32, &temp64)) set_cop2_reg(RTREG, temp64);     break;
28542866         case 0x37:  /* LD */        if (RDOUBLE(SIMMVAL+RSVAL32, &temp64) && RTREG) RTVAL64 = temp64;       break;
28552867         case 0x38:  /* SC */        if (RWORD(SIMMVAL+RSVAL32, &temp) && RTREG)
r249189r249190
28652877            }
28662878         }
28672879         break;
2868         case 0x39:  /* SWC1 */      WWORD(SIMMVAL+RSVAL32, get_cop1_reg32(RTREG));                          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;
28692887         case 0x3a:  /* SWC2 */      WWORD(SIMMVAL+RSVAL32, get_cop2_reg(RTREG));                            break;
28702888         case 0x3b:  /* SWC3 */      invalid_instruction(op);                                                break;
28712889         case 0x3c:  /* SCD */       if (RDOUBLE(SIMMVAL+RSVAL32, &temp64) && RTREG)
r249189r249190
28812899            }
28822900         }
28832901         break;
2884         case 0x3d:  /* SDC1 */      WDOUBLE(SIMMVAL+RSVAL32, get_cop1_reg64(RTREG));                            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;
28852909         case 0x3e:  /* SDC2 */      WDOUBLE(SIMMVAL+RSVAL32, get_cop2_reg(RTREG));                          break;
28862910         case 0x3f:  /* SD */        WDOUBLE(SIMMVAL+RSVAL32, RTVAL64);                                      break;
28872911         default:    /* ??? */       invalid_instruction(op);                                                break;
trunk/src/emu/cpu/mips/mips3dsm.c
r249189r249190
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};
3340
3441
3542static const char *const cpreg[4][32] =
r249189r249190
503510      case 0x2c:  sprintf(buffer, "sdl    %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]);        break;
504511      case 0x2d:  sprintf(buffer, "sdr    %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]);        break;
505512      case 0x2e:  sprintf(buffer, "swr    %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]);        break;
506      case 0x2f:  sprintf(buffer, "cache  %s(%s)", reg[rs], signed_16bit(op));                    break;
513      case 0x2f:  sprintf(buffer, "cache  %s,%s(%s)", cacheop[rt], reg[rs], signed_16bit(op));                    break;
507514      case 0x30:  sprintf(buffer, "ll     %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]);        break;
508515      case 0x31:  sprintf(buffer, "lwc1   %s,%s(%s)", cpreg[1][rt], signed_16bit(op), reg[rs]);   break;
509516      case 0x32:  sprintf(buffer, "lwc2   %s,%s(%s)", cpreg[2][rt], signed_16bit(op), reg[rs]);   break;
trunk/src/emu/sound/315-5641.c
r0r249190
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
r0r249190
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
r249189r249190
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)) /* this line needs further investigation, starwars tie fighters may sound better without it */
410               || ((OLD_FRAME_UNVOICED_FLAG == 1) && (NEW_FRAME_UNVOICED_FLAG == 0))
411411               || ((OLD_FRAME_SILENCE_FLAG == 1) && (NEW_FRAME_SILENCE_FLAG == 0)) )
412412               m_inhibit = 1;
413413            else // normal frame, normal interpolation
r249189r249190
415415
416416#ifdef DEBUG_GENERATION
417417            /* Debug info for current parsed frame */
418            fprintf(stderr, "OLDE: %d; OLDP: %d; ", m_OLDE, m_OLDP);
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));
419419            fprintf(stderr,"Processing new frame: ");
420420            if (m_inhibit == 0)
421421               fprintf(stderr, "Normal Frame\n");
r249189r249190
10041004      fprintf(stderr," ");
10051005#endif
10061006   }
1007#ifdef DEBUG_PARSE_FRAME_DUMP
1008         fprintf(stderr,"\n");
1009#endif
10101007#ifdef VERBOSE
10111008      logerror("Parsed a frame successfully in ROM\n");
10121009#endif
trunk/src/emu/sound/tms5220.c
r249189r249190
630630      if (m_speechrom)
631631         val = m_speechrom->read(count);
632632   }
633
634633   return val;
635634}
636635
r249189r249190
649648   }
650649   else
651650   {   /* read status */
652
653651      /* clear the interrupt pin on status read */
654652      set_interrupt_state(0);
655653#ifdef DEBUG_PIN_READS
656654      fprintf(stderr,"Status read: TS=%d BL=%d BE=%d\n", TALK_STATUS, m_buffer_low, m_buffer_empty);
657655#endif
658
659656      return (TALK_STATUS << 7) | (m_buffer_low << 6) | (m_buffer_empty << 5);
660657   }
661658}
trunk/src/emu/sound/upd7759.c
r249189r249190
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};
163146
164147upd775x_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)
165148   : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
r249189r249190
204187{
205188}
206189
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
207198const device_type UPD7756 = &device_creator<upd7756_device>;
208199
209200upd7756_device::upd7756_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
trunk/src/emu/sound/upd7759.h
r249189r249190
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};
825
926/* NEC uPD7759/55/56/P56/57/58 ADPCM Speech Processor */
1027
r249189r249190
2946
3047   DECLARE_WRITE_LINE_MEMBER( reset_w );
3148   DECLARE_READ_LINE_MEMBER( busy_r );
32   DECLARE_WRITE8_MEMBER( port_w );
49   virtual DECLARE_WRITE8_MEMBER( port_w );
3350   void postload();
3451
3552protected:
r249189r249190
86103   devcb_write_line m_drqcallback;
87104
88105   void update_adpcm(int data);
89   void advance_state();
106   virtual void advance_state();
90107};
91108
92109class upd7759_device : public upd775x_device
93110{
94111public:
95112   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);
96114
97115   enum
98116   {
trunk/src/emu/video/scn2674.c
r249189r249190
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));
4143}
4244
4345void scn2674_device::device_reset()
r249189r249190
9496   m_spl1= 0;
9597   m_spl2= 0;
9698   m_dbl1= 0;
99   m_buffer= 0;
97100   m_linecounter= 0;
98101   m_irq_state= 0;
99102   m_IR_pointer = 0;
100103   m_address = 0;
104   m_start1change = 0;
101105   m_hpixels_per_column = m_text_hpixels_per_column;
102106}
103107
r249189r249190
246250         break;
247251
248252   }
249   if(m_display_enabled)
250      recompute_parameters();
253   recompute_parameters();
251254
252255   m_IR_pointer++;
253256   if (m_IR_pointer>14)m_IR_pointer=14;
r249189r249190
291294      /* Disable GFX */
292295      LOG2674(("disable GFX %02x\n",data));
293296      m_gfx_enabled = 0;
294      if(m_display_enabled)
295         recompute_parameters();
297      recompute_parameters();
296298   }
297299
298300   if ((data&0xe3)==0x23)
r249189r249190
300302      /* Enable GFX */
301303      LOG2674(("enable GFX %02x\n",data));
302304      m_gfx_enabled = 1;
303      if(m_display_enabled)
304         recompute_parameters();
305      recompute_parameters();
305306   }
306307
307308   if ((data&0xe9)==0x28)
r249189r249190
410411
411412   /* Delayed Commands */
412413   /* These set 0x20 in status register when done */
413
414   if (data == 0xa4)
414   // These use the pointer address according to the datasheet but the pcx expects the screen start 2 address instead
415   switch(data)
415416   {
416      /* read at pointer address */
417      LOG2674(("DELAYED read at pointer address %02x\n",data));
418   }
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;
419422
420   if (data == 0xa2)
421   {
422      /* write at pointer address */
423      LOG2674(("DELAYED write at pointer address %02x\n",data));
424   }
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;
425428
426   if (data == 0xa9)
427   {
428      /* increase cursor address */
429      LOG2674(("DELAYED increase cursor address %02x\n",data));
430   }
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;
431435
432   if (data == 0xac)
433   {
434      /* read at cursor address */
435      LOG2674(("DELAYED read at cursor address %02x\n",data));
436   }
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;
437441
438   if (data == 0xaa)
439   {
440      /* write at cursor address */
441      LOG2674(("DELAYED write at cursor address %02x\n",data));
442   }
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;
443447
444   if (data == 0xad)
445   {
446      /* read at cursor address + increment */
447      LOG2674(("DELAYED read at cursor address+increment %02x\n",data));
448   }
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;
449455
450   if (data == 0xab)
451   {
452      /* write at cursor address + increment */
453      LOG2674(("DELAYED write at cursor address+increment %02x\n",data));
454   }
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;
455463
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   }
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;
461473
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));
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;
466478   }
467479}
468480
r249189r249190
540552         write_command(data);
541553         break;
542554
543      case 2: m_screen1_l = data; break;
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;
544560      case 3:
545561         m_screen1_h = data;
546562         m_dbl1=(data & 0xc0)>>6;
r249189r249190
550566            m_screen1_h &= 0x3f;
551567            LOG2674(("IR14 - Double 1 overridden %02x\n",m_IR14_double_1));
552568         }
569         if(!m_screen->vblank())
570            m_start1change = (m_linecounter / m_IR0_scanline_per_char_row) + 1;
553571         break;
554572
555573      case 4: m_cursor_l  = data; break;
r249189r249190
572590   int max_visible_x = (m_IR5_character_per_row * m_hpixels_per_column) - 1;
573591   int max_visible_y = (m_IR4_rows_per_screen * m_IR0_scanline_per_char_row) - 1;
574592
593   if(!horiz_pix_total || !vert_pix_total)
594   {
595      m_scanline_timer->adjust(attotime::never);
596      return;
597   }
598
575599   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)));
576600
577601   rectangle visarea;
r249189r249190
594618            m_display_enabled_scanline = 0;
595619            m_display_enabled_field = 0;
596620         }
597         else if(!m_display_enabled)
598            break;
599621         else
600622            m_linecounter++;
601623
602         // should be triggered at the start of each ROW (line zero for that row)
603624         if(m_linecounter >= m_screen->height())
604625         {
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            }
613626            m_linecounter = 0;
614627            m_address = (m_screen1_h << 8) | m_screen1_l;
615628         }
r249189r249190
629642         if(m_linecounter >= (m_IR4_rows_per_screen * m_IR0_scanline_per_char_row))
630643            break;
631644
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
632661         if((m_linecounter == (m_IR12_split_register_1 * m_IR0_scanline_per_char_row)) && m_linecounter) /* Split Screen 1 */
633662         {
634663            m_status_register |= 0x04;
r249189r249190
661690               dw = m_IR14_double_2;
662691         }
663692
664         int charrow = m_linecounter % m_IR0_scanline_per_char_row;
665         int tilerow = charrow;
693         if(!m_display_enabled)
694            break;
666695
667696         if(m_IR2_row_table)
668697         {
r249189r249190
684713               m_screen2_h = (addr >> 8) & 0x3f;
685714               m_screen2_l = addr & 0xff;
686715            }
687
688716         }
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         }
689722
690723         if(dw == 2)
691724            tilerow >>= 1;
trunk/src/emu/video/scn2674.h
r249189r249190
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; }
4042
4143   UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
4244   virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_0) ? &m_space_config : NULL; }
r249189r249190
105107   UINT8 m_spl1;
106108   UINT8 m_spl2;
107109   UINT8 m_dbl1;
110   UINT8 m_buffer;
108111   int m_linecounter;
109112   UINT16 m_address;
113   int m_start1change;
110114
111115   UINT8 m_irq_state;
112116
trunk/src/lib/formats/bbc_dsk.c
r249189r249190
11// license:GPL-2.0+
2// copyright-holders:Dirk Best
2// copyright-holders:Dirk Best, Nigel Barnes
33/***************************************************************************
44
55    BBC Micro
66
7    Disk image format
7    Disk image formats
88
99***************************************************************************/
1010
1111#include "bbc_dsk.h"
12#include "basicdsk.h"
1213
13bbc_format::bbc_format() : wd177x_format(formats)
14LEGACY_FLOPPY_OPTIONS_START(bbc)
15   LEGACY_FLOPPY_OPTION( ssd40, "bbc,img,ssd", "BBC 40t SSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
16      HEADS([1])
17      TRACKS([40])
18      SECTORS([10])
19      SECTOR_LENGTH([256])
20      FIRST_SECTOR_ID([0]))
21   LEGACY_FLOPPY_OPTION( ssd80, "bbc,img,ssd", "BBC 80t SSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
22      HEADS([1])
23      TRACKS([80])
24      SECTORS([10])
25      SECTOR_LENGTH([256])
26      FIRST_SECTOR_ID([0]))
27   LEGACY_FLOPPY_OPTION( dsd40, "dsd", "BBC 40t DSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
28      HEADS([2])
29      TRACKS([40])
30      SECTORS([10])
31      SECTOR_LENGTH([256])
32      INTERLEAVE([0])
33      FIRST_SECTOR_ID([0]))
34   LEGACY_FLOPPY_OPTION( dsd80, "dsd", "BBC 80t DSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
35      HEADS([2])
36      TRACKS([80])
37      SECTORS([10])
38      SECTOR_LENGTH([256])
39      INTERLEAVE([0])
40      FIRST_SECTOR_ID([0]))
41LEGACY_FLOPPY_OPTIONS_END
42
43/********************************************************************/
44
45bbc_ssd_525_format::bbc_ssd_525_format() : wd177x_format(formats)
1446{
1547}
1648
17const char *bbc_format::name() const
49const char *bbc_ssd_525_format::name() const
1850{
19   return "bbc";
51   return "ssd";
2052}
2153
22const char *bbc_format::description() const
54const char *bbc_ssd_525_format::description() const
2355{
24   return "BBC Micro disk image";
56   return "BBC Micro 5.25\" disk image";
2557}
2658
27const char *bbc_format::extensions() const
59const char *bbc_ssd_525_format::extensions() const
2860{
29   return "bbc,img,ssd,dsd";
61   return "bbc,img,ssd";
3062}
3163
32const bbc_format::format bbc_format::formats[] =
64int bbc_ssd_525_format::find_size(io_generic *io, UINT32 form_factor)
3365{
34   {   // 100k single sided single density
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
3584      floppy_image::FF_525, floppy_image::SSSD, floppy_image::FM,
36      4000, 10, 40, 1, 256, {}, 0, {}, 16, 11, 19
85      4000, 10, 40, 1, 256, {}, 0, {}, 40, 10, 10
3786   },
38   {   // 200k double sided single density
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
3992      floppy_image::FF_525, floppy_image::DSSD, floppy_image::FM,
40      4000, 10, 40, 2, 256, {}, 0, {}, 16, 11, 19
93      4000, 10, 40, 2, 256, {}, 0, {}, 40, 10, 10
4194   },
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
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
4598   },
46   {   // 400k double sided double density
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
47142      floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM,
48      4000, 10, 80, 2, 256, {}, 0, {}, 16, 11, 19
143      4000, 10, 40, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9 }, 40, 10, 10
49144   },
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   },
50149   {}
51150};
52151
53const floppy_format_type FLOPPY_BBC_FORMAT = &floppy_image_format_creator<bbc_format>;
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>;
trunk/src/lib/formats/bbc_dsk.h
r249189r249190
11// license:GPL-2.0+
2// copyright-holders:Dirk Best
2// copyright-holders:Dirk Best, Nigel Barnes
33/***************************************************************************
44
55    BBC Micro
66
7    Disk image format
7    Disk image formats
88
99***************************************************************************/
1010
r249189r249190
1313#ifndef __BBC_DSK_H__
1414#define __BBC_DSK_H__
1515
16#include "flopimg.h"
1617#include "wd177x_dsk.h"
1718
18class bbc_format : public wd177x_format
19/**************************************************************************/
20
21LEGACY_FLOPPY_OPTIONS_EXTERN(bbc);
22
23/**************************************************************************/
24
25class bbc_ssd_525_format : public wd177x_format
1926{
2027public:
21   bbc_format();
28   bbc_ssd_525_format();
2229
30   virtual int find_size(io_generic *io, UINT32 form_factor);
2331   virtual const char *name() const;
2432   virtual const char *description() const;
2533   virtual const char *extensions() const;
r249189r249190
2836   static const format formats[];
2937};
3038
31extern const floppy_format_type FLOPPY_BBC_FORMAT;
39class bbc_dsd_525_format : public wd177x_format
40{
41public:
42   bbc_dsd_525_format();
3243
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
3385#endif // __BBC_DSK_H__
trunk/src/mame/arcade.lst
r249189r249190
48024802rachero         // 1990.?? Racing Hero (World, FD1094)
48034803abcop           // 1990.?? A.B.Cop (World, FD1094)
48044804abcopj          // 1991.01 A.B.Cop (Japan, FD1094)
4805gpriderj        // 1990.10 GP Rider (Japan, FD1094)
4806gprider         // 1990.?? GP Rider (World, FD1094)
4807gpridert      // as above
4808gprideru        // 1990.12 GP Rider (US, 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
48094811rascot          // 1991.?? Royal Ascot (Japan)
48104812
48114813
r249189r249190
62866288wc90b1          // bootleg
62876289wc90b2          // bootleg
62886290wc90ba          // bootleg
6291pac90         // bootleg
62896292spbactn         // 9002 - (c) 1991 Tecmo
62906293spbactnj        // 9002 - (c) 1991 Tecmo
62916294spbactnp        // prototype
r249189r249190
99109913
99119914// IGS027A Cpu Games
99129915slqz3           // (c) 1999
9916amazonia        // (c) 1999
99139917fruitpar        // (c) 200?
99149918zhongguo        // (c) 2000
99159919sdwx            // (c) 2002
9920amazoni2      // (c) 2002
99169921sddz            // (c) 200?
99179922lhzb3           // (c) 200?
99189923lhzb4           // (c) 200?
r249189r249190
99399944orlegendca      //
99409945orlegend111c    //
99419946orlegend111t    //
9947orlegend111k    //
99429948orlegend105k    //
99439949drgw2           // (c) 1997 Dragon World 2
99449950dw2v100x        //
trunk/src/mame/drivers/cclimber.c
r249189r249190
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
378382static ADDRESS_MAP_START( toprollr_map, AS_PROGRAM, 8, cclimber_state )
379383   AM_RANGE(0x0000, 0x5fff) AM_ROMBANK("bank1")
380384   AM_RANGE(0x6000, 0x6bff) AM_RAM AM_SHARE("ram")
r249189r249190
10561060   MCFG_CPU_MODIFY("maincpu")
10571061   MCFG_CPU_PROGRAM_MAP(yamato_map)
10581062   MCFG_CPU_IO_MAP(yamato_portmap)
1059   MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map)
1063   MCFG_CPU_DECRYPTED_OPCODES_MAP(yamato_decrypted_opcodes_map)
10601064
10611065   MCFG_CPU_ADD("audiocpu", Z80, 3072000) /* 3.072 MHz ? */
10621066   MCFG_CPU_PROGRAM_MAP(yamato_audio_map)
r249189r249190
24152419      { 0x20,0xa0,0x28,0xa8 }, { 0x00,0x08,0x20,0x28 }    /* ...1...1...1...1 */
24162420   };
24172421
2418   sega_decode(memregion("maincpu")->base(), m_decrypted_opcodes, 0x6000, convtable);
2422   sega_decode(memregion("maincpu")->base(), m_decrypted_opcodes, 0x8000, convtable);
24192423
24202424   save_item(NAME(m_yamato_p0));
24212425   save_item(NAME(m_yamato_p1));
trunk/src/mame/drivers/chihiro.c
r249189r249190
896896      ROMX_LOAD(name, offset, length, hash, ROM_BIOS(bios+1)) /* Note '+1' */
897897
898898#define CHIHIRO_BIOS \
899   ROM_REGION( 0x80000, "bios", 0) \
899   ROM_REGION( 0x100000, "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
r249189r249190
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 */
13991407ROM_END
14001408
14011409ROM_START( cninja1 ) /* World ver 1 */
r249189r249190
14371445
14381446   ROM_REGION( 1024, "proms", 0 )
14391447   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 */
14401456ROM_END
14411457
14421458ROM_START( cninjau ) /* US ver 4 */
r249189r249190
14781494
14791495   ROM_REGION( 1024, "proms", 0 )
14801496   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 */
14811505ROM_END
14821506
14831507ROM_START( joemac ) /* Japan ver 1 */
r249189r249190
15191543
15201544   ROM_REGION( 1024, "proms", 0 )
15211545   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 */
15221554ROM_END
15231555
15241556ROM_START( stoneage )
trunk/src/mame/drivers/hng64.c
r249189r249190
13001300   32*32
13011301};
13021302
1303
13041303static const gfx_layout hng64_16x16x8_tilelayout =
13051304{
13061305   16,16,
r249189r249190
15511550   MCFG_CPU_PROGRAM_MAP(hng_map)
15521551   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hng64_state, hng64_irq, "screen", 0, 1)
15531552
1554
1555
1556
15571553   MCFG_NVRAM_ADD_0FILL("nvram")
15581554
15591555   MCFG_DEVICE_ADD("rtc", MSM6242, XTAL_32_768kHz)
r249189r249190
20112007GAME( 1997, hng64,    0,      hng64, hng64, hng64_state,  hng64,       ROT0, "SNK", "Hyper NeoGeo 64 Bios", MACHINE_NOT_WORKING|MACHINE_NO_SOUND|MACHINE_IS_BIOS_ROOT )
20122008
20132009/* Games */
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 */
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 */
trunk/src/mame/drivers/igs_m027.c
r249189r249190
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);
7173   TILE_GET_INFO_MEMBER(get_tx_tilemap_tile_info);
7274   TILE_GET_INFO_MEMBER(get_bg_tilemap_tile_info);
7375   virtual void video_start();
r249189r249190
538540
539541
540542
543/***************************************************************************
541544
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
542575ROM_START( sdwx )
543576   ROM_REGION( 0x04000, "maincpu", 0 )
544577   /* Internal rom of IGS027A ARM based MCU */
r249189r249190
553586   ROM_REGION( 0x200000, "gfx2", 0 )
554587   ROM_LOAD( "cg.u25", 0x000000, 0x200000, CRC(709b9a42) SHA1(18c4b8e159b29c168f5cafb437fe6eb123672471) )
555588
556   ROM_REGION( 0x80000, "unknown", 0 )
589   ROM_REGION( 0x80000, "oki", 0 ) // m6295 samples
557590   ROM_LOAD( "sp.u2", 0x00000, 0x80000, CRC(216b5418) SHA1(b7bc24ced0ccb5476c974420aa506c13b971fc9f) )
558591ROM_END
559592
593/*
594Amazonia King II by IGS 2004 ( International Game System )
595Patented by EAGO.
560596
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*/
561608
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 )
562613
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
563628ROM_START( sddz )
564629   ROM_REGION( 0x04000, "maincpu", 0 )
565630   /* Internal rom of IGS027A ARM based MCU */
r249189r249190
10641129   pgm_create_dummy_internal_arm_region();
10651130}
10661131
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
10671146/***************************************************************************
10681147
10691148    Game Drivers
r249189r249190
10711150***************************************************************************/
10721151
10731152GAME( 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 )
10741154GAME( 200?,  fruitpar,  0, igs_majhong, sdwx, igs_m027_state, fruitpar,    ROT0, "IGS", "Fruit Paradise (V214)", 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?
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 )
10761157GAME( 200?,  sddz,      0, igs_majhong, sdwx, igs_m027_state, sddz,        ROT0, "IGS", "Super Dou Di Zhu",  MACHINE_IS_SKELETON )
10771158GAME( 2000,  zhongguo,  0, igs_majhong, sdwx, igs_m027_state, zhongguo,    ROT0, "IGS", "Zhong Guo Chu Da D",  MACHINE_IS_SKELETON )
10781159GAME( 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
r249189r249190
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 */
628633ROM_END
629634
630635ROM_START( quizmoon )
trunk/src/mame/drivers/nmk16.c
r249189r249190
43624362static MACHINE_CONFIG_START( gunnail, nmk16_state )
43634363
43644364   /* basic machine hardware */
4365   MCFG_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz? */
4365   MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* verified on pcb */
43664366   MCFG_CPU_PROGRAM_MAP(gunnail_map)
43674367   NMK_HACKY_INTERRUPT_TIMING
43684368
r249189r249190
43704370   NMK_HACKY_SCREEN_HIRES
43714371   MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_gunnail)
43724372
4373
4374
4375
43764373   MCFG_GFXDECODE_ADD("gfxdecode", "palette", macross)
43774374   MCFG_PALETTE_ADD("palette", 1024)
43784375   MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
r249189r249190
43824379   /* sound hardware */
43834380   MCFG_SPEAKER_STANDARD_MONO("mono")
43844381
4385   MCFG_NMK004_ADD("nmk004", 8000000)
4382   MCFG_NMK004_ADD("nmk004", XTAL_16MHz/2) /* verified on pcb */
43864383
4387   MCFG_SOUND_ADD("ymsnd", YM2203, 1500000)
4384   MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */
43884385   MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("nmk004", nmk004_device, ym2203_irq_handler))
43894386   MCFG_SOUND_ROUTE(0, "mono", 0.50)
43904387   MCFG_SOUND_ROUTE(1, "mono", 0.50)
43914388   MCFG_SOUND_ROUTE(2, "mono", 0.50)
43924389   MCFG_SOUND_ROUTE(3, "mono", 1.20)
43934390
4394   MCFG_OKIM6295_ADD("oki1", 16000000/4, OKIM6295_PIN7_LOW)
4391   MCFG_OKIM6295_ADD("oki1", XTAL_16MHz/4, OKIM6295_PIN7_LOW) /* verified on pcb */
43954392   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
43964393
4397   MCFG_OKIM6295_ADD("oki2", 16000000/4, OKIM6295_PIN7_LOW)
4394   MCFG_OKIM6295_ADD("oki2", XTAL_16MHz/4, OKIM6295_PIN7_LOW) /* verified on pcb */
43984395   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
43994396MACHINE_CONFIG_END
44004397
r249189r249190
61756172
61766173AK92077
61776174|-------------------------------------------------------------|
6178|  LA4460  VOL YM2203  6116    92077-2.U10   62256    62256   |
6175|  LA4460  VOL YM2203  6116    92077-2.U101  62256    62256   |
61796176|-|                       16MHz |------|     62256    62256   |
61806177  |   4558   6295 92077-6.U57   |NMK004|     62256    62256   |
61816178|-|                       12MHz |      |     62256    62256   |
r249189r249190
62036200|   6264                                               10MHz  |
62046201|-------------------------------------------------------------|
62056202Notes:
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)
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)
62116208      YM3014- Yamaha YM3014 (DIP8)
6209      6295  - OKI M6295 running at 4MHz, pin 7 low [16/4] (x2, QFP44)
62126210      4558  - BA4558 Op Amp (DIP8)
62136211      LA4460- Power Amplifier
6214      6295  - Oki M6295, running at MHz, sample rate  (x2, QFP44)
6215      DIP1/2- 8 position Dip Switches
6212      DIP1/2- 8 position DIP Switches
62166213      VOL   - Volume Potentiometer
6214      OSC   - 12MHz, 16MHz, 10MHz
6215      HSync - 15.367kHz
6216      VSync - 56.205Hz
62176217
62186218      NMK CUSTOM IC'S
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 :(
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)
62226221          - NMK005 (x1, Square QFP64)
62236222          - NMK008 (x1, Square QFP84)
62246223          - NMK009 (x2, Square QFP100)
r249189r249190
62286227          - NMK214 (x2, SDIP64)
62296228          - NMK215 (x1, SDIP64)
62306229
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
62346230*/
62356231
62366232ROM_START( gunnail )
62376233   ROM_REGION( 0x80000, "maincpu", 0 )     /* 68000 code */
6238   ROM_LOAD16_BYTE( "3e.bin",  0x00000, 0x40000, CRC(61d985b2) SHA1(96daca603f18accb47f98a3e584b2c84fc5a2ca4) )
6239   ROM_LOAD16_BYTE( "3o.bin",  0x00001, 0x40000, CRC(f114e89c) SHA1(a12f5278167f446bb5277e87289c41b5aa365c86) )
6234   ROM_LOAD16_BYTE( "3e.u131",  0x00000, 0x40000, CRC(61d985b2) SHA1(96daca603f18accb47f98a3e584b2c84fc5a2ca4) )
6235   ROM_LOAD16_BYTE( "3o.u133",  0x00001, 0x40000, CRC(f114e89c) SHA1(a12f5278167f446bb5277e87289c41b5aa365c86) )
62406236
6241   ROM_REGION( 0x10000, "audiocpu", 0 )        /* Code for (unknown?) CPU */
6242   ROM_LOAD( "92077_2.bin",      0x00000, 0x10000, CRC(cd4e55f8) SHA1(92182767ca0ec37ec4949bd1a88c2efdcdcb60ed) )
6237   ROM_REGION( 0x10000, "audiocpu", 0 )     /* Code for NMK004 CPU */
6238   ROM_LOAD( "92077_2.u101",      0x00000, 0x10000, CRC(cd4e55f8) SHA1(92182767ca0ec37ec4949bd1a88c2efdcdcb60ed) )
62436239
62446240   ROM_REGION( 0x020000, "fgtile", 0 )
6245   ROM_LOAD( "1.bin",    0x000000, 0x020000, CRC(3d00a9f4) SHA1(91a82e3e74c8774d7f8b2adceb228b97010facfd) )    /* 8x8 tiles */
6241   ROM_LOAD( "1.u21",    0x000000, 0x020000, CRC(3d00a9f4) SHA1(91a82e3e74c8774d7f8b2adceb228b97010facfd) )    /* 8x8 tiles */
62466242
62476243   ROM_REGION( 0x100000, "bgtile", 0 )
6248   ROM_LOAD( "92077-4.bin", 0x000000, 0x100000, CRC(a9ea2804) SHA1(14dbdb3c7986db5e44dc7c5be6fcf39f3d1e50b0) ) /* 16x16 tiles */
6244   ROM_LOAD( "92077-4.u19", 0x000000, 0x100000, CRC(a9ea2804) SHA1(14dbdb3c7986db5e44dc7c5be6fcf39f3d1e50b0) ) /* 16x16 tiles */
62496245
62506246   ROM_REGION( 0x200000, "sprites", 0 )
6251   ROM_LOAD16_WORD_SWAP( "92077-7.bin", 0x000000, 0x200000, CRC(d49169b3) SHA1(565ff7725dd6ace79b55706114132d8d867e81a9) ) /* Sprites */
6247   ROM_LOAD16_WORD_SWAP( "92077-7.u134", 0x000000, 0x200000, CRC(d49169b3) SHA1(565ff7725dd6ace79b55706114132d8d867e81a9) ) /* Sprites */
62526248
62536249   ROM_REGION( 0x0a0000, "oki1", 0 )   /* OKIM6295 samples */
6254   ROM_LOAD( "92077-5.bin", 0x00000, 0x20000, CRC(feb83c73) SHA1(b44e9d20b4af02e218c4bc875d66a7d6b8551cae) )
6250   ROM_LOAD( "92077-5.u56", 0x00000, 0x20000, CRC(feb83c73) SHA1(b44e9d20b4af02e218c4bc875d66a7d6b8551cae) )
62556251   ROM_CONTINUE(            0x40000, 0x60000 ) /* banked */
62566252
62576253   ROM_REGION( 0x0a0000, "oki2", 0 )   /* OKIM6295 samples */
6258   ROM_LOAD( "92077-6.bin", 0x00000, 0x20000, CRC(6d133f0d) SHA1(8a5e6e27a297196f20e4de0d060f1188115809bb) )
6254   ROM_LOAD( "92077-6.u57", 0x00000, 0x20000, CRC(6d133f0d) SHA1(8a5e6e27a297196f20e4de0d060f1188115809bb) )
62596255   ROM_CONTINUE(            0x40000, 0x60000 ) /* banked */
62606256
62616257   ROM_REGION( 0x0220, "proms", 0 )
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 */
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 */
62656261ROM_END
62666262
62676263ROM_START( macross2 )
trunk/src/mame/drivers/pgm.c
r249189r249190
580580
581581   ROM_REGION( 0x800000, "tiles",  0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
582582   PGM_VIDEO_BIOS
583   ROM_LOAD( "t0100.rom",    0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
583   ROM_LOAD( "t0100.u8",     0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
584584
585585   ROM_REGION( 0x1800000, "sprcol", 0 ) /* Sprite Colour Data */
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) )
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) )
592592
593593   ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
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) )
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) )
597597
598598   ROM_REGION( 0x600000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
599599   PGM_AUDIO_BIOS
600   ROM_LOAD( "m0100.rom",    0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
600   ROM_LOAD( "m0100.u1",     0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
601601ROM_END
602602
603603ROM_START( orlegende )
r249189r249190
607607
608608   ROM_REGION( 0x800000, "tiles",  0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
609609   PGM_VIDEO_BIOS
610   ROM_LOAD( "t0100.rom",    0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
610   ROM_LOAD( "t0100.u8",     0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
611611
612612   ROM_REGION( 0x1800000, "sprcol", 0 ) /* Sprite Colour Data */
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) )
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) )
619619
620620   ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
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) )
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) )
624624
625625   ROM_REGION( 0x600000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
626626   PGM_AUDIO_BIOS
627   ROM_LOAD( "m0100.rom",    0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
627   ROM_LOAD( "m0100.u1",     0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
628628ROM_END
629629
630630ROM_START( orlegendc )
r249189r249190
634634
635635   ROM_REGION( 0x800000, "tiles",  0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
636636   PGM_VIDEO_BIOS
637   ROM_LOAD( "t0100.rom",    0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
637   ROM_LOAD( "t0100.u8",     0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
638638
639639   ROM_REGION( 0x1800000, "sprcol", 0 ) /* Sprite Colour Data */
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) )
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) )
646646
647647   ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
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) )
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) )
651651
652652   ROM_REGION( 0x600000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
653653   PGM_AUDIO_BIOS
654   ROM_LOAD( "m0100.rom",    0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
654   ROM_LOAD( "m0100.u1",     0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
655655ROM_END
656656
657657ROM_START( orlegendca )
r249189r249190
661661
662662   ROM_REGION( 0x800000, "tiles",  0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
663663   PGM_VIDEO_BIOS
664   ROM_LOAD( "t0100.rom",    0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
664   ROM_LOAD( "t0100.u8",     0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
665665
666666   ROM_REGION( 0x1800000, "sprcol", 0 ) /* Sprite Colour Data */
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) )
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) )
673673
674674   ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
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) )
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) )
678678
679679   ROM_REGION( 0x600000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
680680   PGM_AUDIO_BIOS
681   ROM_LOAD( "m0100.rom",    0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
681   ROM_LOAD( "m0100.u1",     0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
682682ROM_END
683683
684684
r249189r249190
691691IGS PCB NO-0134-1
692692IGS PCB NO-0135
693693
694
695694OLV111CH.U11 [b80ddd3c]
696695OLV111CH.U6  [5fb86373]
697696OLV111CH.U7  [6ee79faf]
r249189r249190
699698
700699T0100.U8
701700
702
703701A0100.U5
704702A0101.U6
705703A0102.U7
r249189r249190
725723
726724   ROM_REGION( 0x800000, "tiles",  0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
727725   PGM_VIDEO_BIOS
728   ROM_LOAD( "t0100.rom",    0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
726   ROM_LOAD( "t0100.u8",     0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
729727
730728   ROM_REGION( 0x1800000, "sprcol", 0 ) /* Sprite Colour Data */
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) )
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) )
737735
738736   ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
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) )
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) )
742740
743741   ROM_REGION( 0x600000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
744742   PGM_AUDIO_BIOS
745   ROM_LOAD( "m0100.rom",    0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
743   ROM_LOAD( "m0100.u1",     0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
746744ROM_END
747745
748746
r249189r249190
750748   ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code  */
751749   PGM_68K_BIOS
752750   ROM_LOAD16_BYTE( "olv111tw.u6",     0x100001, 0x080000, CRC(b205a733) SHA1(33f4c9162e36be4957004f80593f94fc33b163f8) )
753   ROM_LOAD16_BYTE( "olv111tw.u8",     0x100000, 0x080000, CRC(6d9d29b4) SHA1(29a18de7e5b58c2f3125d6dc9cc8a8186180e956) )
751   ROM_LOAD16_BYTE( "olv111tw.u9",     0x100000, 0x080000, CRC(6d9d29b4) SHA1(29a18de7e5b58c2f3125d6dc9cc8a8186180e956) )
754752   ROM_LOAD16_BYTE( "olv111tw.u7",     0x200001, 0x080000, CRC(27628e87) SHA1(a0effd83dc57ac72ba4f110737a075705d78e798) )
755   ROM_LOAD16_BYTE( "olv111tw.u9",     0x200000, 0x080000, CRC(23f33bc9) SHA1(f24490370d40d905afe8b716a3953b4e9f0aada4) )
753   ROM_LOAD16_BYTE( "olv111tw.u11",    0x200000, 0x080000, CRC(23f33bc9) SHA1(f24490370d40d905afe8b716a3953b4e9f0aada4) )
756754
757755   ROM_REGION( 0x800000, "tiles",  0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
758756   PGM_VIDEO_BIOS
759   ROM_LOAD( "t0100.rom",    0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
757   ROM_LOAD( "t0100.u8",     0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
760758
761759   ROM_REGION( 0x1800000, "sprcol", 0 ) /* Sprite Colour Data */
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) )
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) )
768766
769767   ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
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) )
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) )
773771
774772   ROM_REGION( 0x600000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
775773   PGM_AUDIO_BIOS
776   ROM_LOAD( "m0100.rom",    0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
774   ROM_LOAD( "m0100.u1",     0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
777775ROM_END
778776
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
779807/*
780808
781809Oriental Legend / Xi You Shi E Zhuan (KOREA 105 Ver.)
r249189r249190
785813IGS PCB NO-0134-2
786814IGS PCB NO-0135
787815
788
789816OLV105KO.U11 [40ae4d9e]
790817OLV105KO.U6  [b86703fe]
791818OLV105KO.U7  [5712facc]
r249189r249190
793820
794821T0100.U8
795822
796
797823A0100.U5
798824A0101.U6
799825A0102.U7
r249189r249190
819845
820846   ROM_REGION( 0x800000, "tiles",  0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
821847   PGM_VIDEO_BIOS
822   ROM_LOAD( "t0100.rom",    0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
848   ROM_LOAD( "t0100.u8",     0x180000, 0x400000, CRC(61425e1e) SHA1(20753b86fc12003cfd763d903f034dbba8010b32) )
823849
824850   ROM_REGION( 0x1800000, "sprcol", 0 ) /* Sprite Colour Data */
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) )
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) )
831857
832858   ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
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) )
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) )
836862
837863   ROM_REGION( 0x600000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
838864   PGM_AUDIO_BIOS
839   ROM_LOAD( "m0100.rom",    0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
865   ROM_LOAD( "m0100.u1",     0x400000, 0x200000, CRC(e5c36c83) SHA1(50c6f66770e8faa3df349f7d68c407a7ad021716) )
840866ROM_END
841867
842868/*
r249189r249190
31803206   ROM_LOAD( "dmnfrnt_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
31813207
31823208   ROM_REGION( 0x800000, "user1", 0 ) /* Protection Data (encrypted external ARM data, internal missing) */
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) )
3209   ROM_LOAD( "v105_32m.u26", 0x000000, 0x400000,  CRC(c798c2ef) SHA1(91e364c33b935293fa765ca521cdb67ac45ec70f) )
31863210
31873211   ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
31883212   PGM_VIDEO_BIOS
r249189r249190
41784202   -----------------------------------------------------------------------------------------------------------------------*/
41794203
41804204// the version numbering on these is a mess... date strings from ROM (and in some cases even those are missing..)
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
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
41864210GAME( 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
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
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
41884213
41894214GAME( 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 )
41904215GAME( 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
r249189r249190
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( gprider )
3391ROM_START( gpriders )
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) )
r249189r249190
34383438ROM_END
34393439
34403440// Twin setup
3441ROM_START( gpridert )
3441ROM_START( gprider )
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) )
r249189r249190
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
35443594ROM_START( gprideru )
35453595   ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code
35463596   ROM_LOAD16_BYTE( "epr-13407.ic58", 0x00000, 0x20000, CRC(03553ebd) SHA1(041a71a2dce2ad56360f500cb11e29a629020160) )
r249189r249190
35883638   ROM_LOAD( "epr-13391.ic11",    0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) )
35893639   ROM_LOAD( "epr-13390.ic12",    0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) )
35903640   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) )
35913688ROM_END
35923689
35933690//*************************************************************************************************************************
r249189r249190
35963693//  Custom Chip 315-5304 (IC 127)
35973694//  IC BD Number: 834-7626-01 (roms are "MPR") / 834-7626-04 (roms are "EPR")
35983695//
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
35993746ROM_START( gpriderj )
36003747   ROM_REGION( 0x80000, "mainpcb:maincpu", 0 ) // 68000 code
36013748   ROM_LOAD16_BYTE( "epr-13387.ic58", 0x00000, 0x20000, CRC(a1e8b2c5) SHA1(22b70a9074263af808bb9dffee29cbcff7e304e3) )
r249189r249190
36433790   ROM_LOAD( "epr-13391.ic11",    0x00000, 0x20000, CRC(8c30c867) SHA1(0d735291b1311890938f8a1143fae6af9feb2a69) )
36443791   ROM_LOAD( "epr-13390.ic12",    0x20000, 0x20000, CRC(8c93cd05) SHA1(bb08094abac6c104eddf14f634e9791f03122946) )
36453792   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) )
36463840ROM_END
36473841
3648
36493842//*************************************************************************************************************************
36503843//*************************************************************************************************************************
36513844//*************************************************************************************************************************
r249189r249190
37463939
37473940DRIVER_INIT_MEMBER(segaxbd_new_state,rascot)
37483941{
3749#if 0
37503942   // patch out bootup link test
37513943   UINT16 *rom = reinterpret_cast<UINT16 *>(memregion("mainpcb:subcpu")->base());
37523944   rom[0xb78/2] = 0x601e; // subrom checksum test
r249189r249190
37553947   rom[0x606/2] = 0x4e71;
37563948
37573949   // map /EXCS space
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
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));
37603951}
37613952
37623953void segaxbd_state::install_gprider(void)
r249189r249190
38063997GAME( 1989, smgpja,   smgp,     sega_smgp_fd1094,    smgp,     segaxbd_new_state, smgp,     ROT0,   "Sega", "Super Monaco GP (Japan, Rev A, FD1094 317-0124a)", 0 )
38073998GAME( 1990, abcop,    0,        sega_xboard_fd1094,  abcop,    driver_device,     0,  ROT0,   "Sega", "A.B. Cop (World, FD1094 317-0169b)", 0 )
38083999GAME( 1990, abcopj,   abcop,    sega_xboard_fd1094,  abcop,    driver_device,     0,  ROT0,   "Sega", "A.B. Cop (Japan, FD1094 317-0169b)", 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 )
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 )
38124004
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
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 )
38154009
38164010// X-Board + other boards?
38174011GAME( 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
r249189r249190
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
7654*/
7755
7856#include "emu.h"
r249189r249190
235213
236214
237215
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
238296static const gfx_layout charlayout =
239297{
240298   8,8,
r249189r249190
332390   MCFG_VIDEO_START_OVERRIDE(wc90_state, wc90t )
333391MACHINE_CONFIG_END
334392
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
335399ROM_START( wc90 )
336400   ROM_REGION( 0x20000, "maincpu", 0 )
337401   ROM_LOAD( "ic87_01.bin",  0x00000, 0x08000, CRC(4a1affbc) SHA1(bc531e97ca31c66fdac194e2d79d5c6ba1300556) )  /* c000-ffff is not used */
r249189r249190
365429   ROM_LOAD( "ic82_06.bin",  0x00000, 0x20000, CRC(2fd692ed) SHA1(0273dc39181504320bec0187d074b2f86c821508) )
366430ROM_END
367431
432
368433ROM_START( wc90a )
369434   ROM_REGION( 0x20000, "maincpu", 0 )
370435   ROM_LOAD( "wc90-1.bin",   0x00000, 0x08000, CRC(d1804e1a) SHA1(eec7374f4d23c89843f38fffff436635adb43b63) )  /* c000-ffff is not used */
r249189r249190
464529   ROM_LOAD( "ic82_06.bin",  0x00000, 0x20000, CRC(2fd692ed) SHA1(0273dc39181504320bec0187d074b2f86c821508) )
465530ROM_END
466531
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
467563GAME( 1989, wc90,  0,    wc90, wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (World)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
468564GAME( 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 )
469565GAME( 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 )
470566GAME( 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
r249189r249190
224224      dilate_rendertarget = 0;
225225      antialiasing_rendertarget = 0;
226226      type_rendertarget = nv2a_renderer::LINEAR;
227      depth_rendertarget = nv2a_renderer::NV2A_RT_DEPTH_FORMAT_Z24S8;
228      color_rendertarget = nv2a_renderer::NV2A_COLOR_FORMAT_A8R8G8B8;
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;
229231      rendertarget = NULL;
230232      depthbuffer = NULL;
231233      displayedtarget = NULL;
r249189r249190
254256   void geforce_read_dma_object(UINT32 handle, UINT32 &offset, UINT32 &size);
255257   int geforce_exec_method(address_space &space, UINT32 channel, UINT32 subchannel, UINT32 method, UINT32 address, int &countlen);
256258   UINT32 texture_get_texel(int number, int x, int y);
259   UINT8 *read_pixel(int x, int y, UINT32 c[4]);
257260   void write_pixel(int x, int y, UINT32 color, UINT32 depth);
258261   void combiner_initialize_registers(UINT32 argb8[6]);
259262   void combiner_initialize_stage(int stage_number);
r249189r249190
293296   int read_vertices_0x1810(address_space & space, vertex_nv *destination, int offset, int limit);
294297   int read_vertices_0x1818(address_space & space, vertex_nv *destination, UINT32 address, int limit);
295298   void convert_vertices_poly(vertex_nv *source, vertex_t *destination, int count);
299   void clear_depth_buffer(int what, UINT32 value);
296300   inline UINT8 *direct_access_ptr(offs_t address);
297301   TIMER_CALLBACK_MEMBER(puller_timer_work);
298302
r249189r249190
321325   int dilate_rendertarget;
322326   int antialiasing_rendertarget;
323327   int type_rendertarget;
324   int depth_rendertarget;
325   int color_rendertarget;
328   int depthformat_rendertarget;
329   int colorformat_rendertarget;
330   int bytespixel_rendertarget;
331   UINT32 antialias_control;
326332   UINT32 *rendertarget;
327333   UINT32 *depthbuffer;
328334   UINT32 *displayedtarget;
trunk/src/mame/includes/hng64.h
r249189r249190
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"
78
89enum
910{
r249189r249190
2122   HNG64_TILEMAP_ALPHA
2223};
2324
24
2525struct blit_parameters
2626{
2727   bitmap_rgb32 *          bitmap;
r249189r249190
3535
3636#define HNG64_MASTER_CLOCK 50000000
3737
38///////////////
39// 3d Engine //
40///////////////
4138
39/////////////////
40/// 3d Engine ///
41/////////////////
42
4243struct polyVert
4344{
4445   float worldCoords[4];   // World space coordinates (X Y Z 1.0)
r249189r249190
7273};
7374
7475
76/////////////////////////
77/// polygon rendering ///
78/////////////////////////
7579
76///////////////////////
77// polygon rendering //
78///////////////////////
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
7987
80struct polygonRasterOptions
88
89////////////////////////////////////
90/// Polygon rasterizer interface ///
91////////////////////////////////////
92
93const int HNG64_MAX_POLYGONS = 10000;
94
95struct hng64_poly_data
8196{
8297   UINT8 texType;
8398   UINT8 texIndex;
r249189r249190
89104   int debugColor;
90105};
91106
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
107class hng64_state;
99108
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);
100116
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};
101128
129
130
102131class hng64_state : public driver_device
103132{
104133public:
r249189r249190
143172   required_shared_ptr<UINT32> m_videoram;
144173   required_shared_ptr<UINT32> m_videoregs;
145174   required_shared_ptr<UINT32> m_tcram;
146   /* 3D stuff */
175
176    /* 3D stuff */
147177   UINT16* m_dl;
148178
149179   required_shared_ptr<UINT32> m_3dregs;
r249189r249190
194224
195225   UINT8 m_additive_tilemap_debug;
196226
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
202227   UINT32 m_old_animmask;
203228   UINT32 m_old_animbits;
204229   UINT16 m_old_tileflags[4];
r249189r249190
299324   DECLARE_CUSTOM_INPUT_MEMBER(right_handle_r);
300325   DECLARE_CUSTOM_INPUT_MEMBER(acc_down_r);
301326   DECLARE_CUSTOM_INPUT_MEMBER(brake_down_r);
302   void clear3d();
327
328    hng64_poly_renderer* m_poly_renderer;
329   
330    void clear3d();
303331   TIMER_CALLBACK_MEMBER(hng64_3dfifo_processed);
304332
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
312333   void hng64_command3d(const UINT16* packet);
313334   void draw_sprites(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
314   void transition_control( bitmap_rgb32 &bitmap, const rectangle &cliprect);
335   void transition_control(bitmap_rgb32 &bitmap, const rectangle &cliprect);
315336   void hng64_tilemap_draw_roz_core(screen_device &screen, tilemap_t *tmap, const blit_parameters *blit,
316337      UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy, int wraparound);
317338   void hng64_drawtilemap(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int tm);
r249189r249190
331352      UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy,
332353      int wraparound, UINT32 flags, UINT8 priority, UINT8 priority_mask, hng64trans_t drawformat);
333354
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
342355   void printPacket(const UINT16* packet, int hex);
343356   void matmul4(float *product, const float *a, const float *b);
344357   void vecmatmul4(float *product, const float *a, const float *b);
trunk/src/mame/includes/n64.h
r249189r249190
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);
8990   DECLARE_READ32_MEMBER( dp_reg_r );
9091   DECLARE_WRITE32_MEMBER( dp_reg_w );
9192   DECLARE_READ32_MEMBER( sp_reg_r );
r249189r249190
9697
9798   void ai_timer_tick();
9899   void pi_dma_tick();
100   void si_dma_tick();
99101   void vi_scanline_tick();
100102   void reset_tick();
101103
r249189r249190
242244   UINT32 pi_dma_dir;
243245
244246   // Serial Interface (SI) registers and functions
247   emu_timer *si_dma_timer;
245248   void pif_dma(int direction);
246249   void handle_pif();
247250   int pif_channel_handle_command(int channel, int slength, UINT8 *sdata, int rlength, UINT8 *rdata);
trunk/src/mame/includes/pgm.h
r249189r249190
474474
475475INPUT_PORTS_EXTERN( orlegend );
476476INPUT_PORTS_EXTERN( orlegendt );
477INPUT_PORTS_EXTERN( orld105k );
477INPUT_PORTS_EXTERN( orlegendk );
478478
479
479480MACHINE_CONFIG_EXTERN( pgm_asic3 );
480481
481482/*----------- defined in machine/pgmprot1.c -----------*/
trunk/src/mame/machine/n64.c
r249189r249190
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));
112113   vi_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(n64_periphs::vi_scanline_callback),this));
113114   reset_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(n64_periphs::reset_timer_callback),this));
114115}
r249189r249190
202203   si_dram_addr = 0;
203204   si_pif_addr = 0;
204205   si_status = 0;
206   si_dma_timer->adjust(attotime::never);
205207
206   memset(m_save_data.eeprom, 0, 2048);
208   //memset(m_save_data.eeprom, 0, 2048);
207209
208210   dp_clock = 0;
209211
r249189r249190
225227   pif_ram[0x26] = 0x3f;
226228   pif_ram[0x27] = 0x3f;
227229   cic_type=2;
228   mem_map->write_dword(0x00000318, 0x800000);
230   mem_map->write_dword(0x00000318, 0x800000); /* RDRAM Size */
229231
230232   if (boot_checksum == U64(0x00000000001ff230))
231233   {
r249189r249190
993995// Video Interface
994996void n64_periphs::vi_recalculate_resolution()
995997{
996   n64_state *state = machine().driver_data<n64_state>();
998   //n64_state *state = machine().driver_data<n64_state>();
997999
9981000   int x_start = (vi_hstart & 0x03ff0000) >> 16;
9991001   int x_end = vi_hstart & 0x000003ff;
r249189r249190
10251027   if (height > 480)
10261028      height = 480;
10271029
1028   state->m_rdp->m_misc_state.m_fb_height = height;
1030   if(vi_control & 0x40) /* Interlace */
1031   {
1032      height *= 2;
1033   }
10291034
1035   //state->m_rdp->m_misc_state.m_fb_height = height;
1036
10301037   visarea.max_x = width - 1;
10311038   visarea.max_y = height - 1;
10321039   m_screen->configure(width, 525, visarea, period);
r249189r249190
10541061         break;
10551062
10561063      case 0x10/4:        // VI_CURRENT_REG
1057         ret = m_screen->vpos() << 1;
1064         ret = (m_screen->vpos() << 1) + 1;
10581065         break;
10591066
10601067      case 0x14/4:        // VI_BURST_REG
r249189r249190
11031110
11041111WRITE32_MEMBER( n64_periphs::vi_reg_w )
11051112{
1106   n64_state *state = machine().driver_data<n64_state>();
1113   //n64_state *state = machine().driver_data<n64_state>();
11071114
11081115   switch (offset)
11091116   {
r249189r249190
11221129            vi_recalculate_resolution();
11231130         }
11241131         vi_width = data;
1125         state->m_rdp->m_misc_state.m_fb_width = data;
1132         //state->m_rdp->m_misc_state.m_fb_width = data;
11261133         break;
11271134
11281135      case 0x0c/4:        // VI_INTR_REG
r249189r249190
12141221
12151222   if (! (ai_status & 0x40000000))
12161223   {
1217      signal_rcp_interrupt(AI_INTERRUPT);
1224      //signal_rcp_interrupt(AI_INTERRUPT);
12181225      ai_dma();
12191226   }
12201227}
r249189r249190
12371244   if (ai_fifo_num < AUDIO_DMA_DEPTH)
12381245   {
12391246      ai_status &= ~0x80000001;   // FIFO not full
1240      signal_rcp_interrupt(AI_INTERRUPT);
1247      //signal_rcp_interrupt(AI_INTERRUPT);
12411248   }
12421249}
12431250
r249189r249190
12771284   ai_status |= 0x40000000;
12781285
12791286   // adjust the timer
1280   period = attotime::from_hz(DACRATE_NTSC) * ((ai_dacrate + 1) * (current->length / 4));
1287   period = attotime::from_hz(DACRATE_NTSC) * (ai_dacrate + 1) * (current->length / 4);
12811288   ai_timer->adjust(period);
12821289}
12831290
r249189r249190
12891296void n64_periphs::ai_timer_tick()
12901297{
12911298   ai_fifo_pop();
1299   signal_rcp_interrupt(AI_INTERRUPT);
12921300
12931301   // keep playing if there's another DMA queued
12941302   if (ai_fifo_get_top() != NULL)
12951303   {
12961304      ai_dma();
1297      signal_rcp_interrupt(AI_INTERRUPT);
12981305   }
12991306   else
13001307   {
r249189r249190
13251332         }
13261333         break;
13271334      }
1328
1335      case 0x08/4:
1336         ret = ai_control;
1337         break;
13291338      case 0x0c/4:        // AI_STATUS_REG
13301339         ret = ai_status;
13311340         break;
r249189r249190
14251434   {
14261435      UINT32 dma_length = pi_wr_len + 1;
14271436      //logerror("PI Write, %X, %X, %X\n", pi_cart_addr, pi_dram_addr, pi_wr_len);
1428      if (dma_length & 7)
1437      if (dma_length & 1)
14291438      {
1430         dma_length = (dma_length + 7) & ~7;
1439         dma_length = (dma_length + 1) & ~1;
14311440      }
14321441
14331442      if (pi_dram_addr != 0xffffffff)
r249189r249190
14451454   {
14461455      UINT32 dma_length = pi_rd_len + 1;
14471456      //logerror("PI Read, %X, %X, %X\n", pi_cart_addr, pi_dram_addr, pi_rd_len);
1448      if (dma_length & 7)
1457      if (dma_length & 1)
14491458      {
1450         dma_length = (dma_length + 7) & ~7;
1459         dma_length = (dma_length + 1) & ~1;
14511460      }
14521461
14531462      if (pi_dram_addr != 0xffffffff)
r249189r249190
20762085   }*/
20772086}
20782087
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
20792100void n64_periphs::pif_dma(int direction)
20802101{
20812102   if (si_dram_addr & 0x3)
r249189r249190
21162137      }
21172138   }
21182139
2119   si_status |= 0x1000;
2120   signal_rcp_interrupt(SI_INTERRUPT);
2140   si_dma_timer->adjust(attotime::from_hz(500));
2141   //si_status |= 0x1000;
2142   //signal_rcp_interrupt(SI_INTERRUPT);
21212143}
21222144
21232145READ32_MEMBER( n64_periphs::si_reg_r )
trunk/src/mame/machine/nmk004.c
r249189r249190
8484
8585
8686static MACHINE_CONFIG_FRAGMENT( nmk004 )
87   MCFG_CPU_ADD("mcu",TMP90840, DERIVED_CLOCK(1,1)) // unkonwn type, but 0x2000 byte internal ROM
87   MCFG_CPU_ADD("mcu",TMP90840, DERIVED_CLOCK(1,1)) // Toshiba TMP90C840AF in QFP64 package with 8Kbyte 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
r249189r249190
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
r249189r249190
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
r249189r249190
205205   PORT_CONFSETTING(      0x0004, DEF_STR( Taiwan ) )
206206INPUT_PORTS_END
207207
208INPUT_PORTS_START( orld105k )
208
209INPUT_PORTS_START( orlegendk )
209210   PORT_INCLUDE ( pgm )
210211
211212   PORT_MODIFY("Region")
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
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?" )
215219INPUT_PORTS_END
216220
221
217222MACHINE_CONFIG_START( pgm_asic3, pgm_asic3_state )
218223   MCFG_FRAGMENT_ADD(pgmbase)
219224MACHINE_CONFIG_END
trunk/src/mame/machine/xbox.c
r249189r249190
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, 0xff07ffff) AM_ROM AM_REGION("bios", 0) AM_MIRROR(0x00f80000)
1421   AM_RANGE(0xff000000, 0xff0fffff) 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
r249189r249190
342342atombb    // 1979 Acorn Atom
343343//prophet2
344344bbca      // 1981 BBC Micro Model A
345bbcb      // 1981 BBC Micro Model B
345bbcb      // 1981 BBC Micro Model B w/8271 FDC
346346bbcb_de   // 1981 BBC Micro Model B (German)
347bbcb_us   // 1981 BBC Micro Model B (US)
347bbcb_us   // 1983 BBC Micro Model B (US)
348348electron  // 1983 Acorn Electron
349bbcb1770  // 1985 BBC Micro Model B w/1770 FDC
349350bbcbp     // 1985 BBC Micro Model B+ 64K
350351bbcbp128  // 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
351356bbcm      // 1986 BBC Master 128
352357bbcmt     // 1986 BBC Master Turbo
353358bbcmaiv   // 1986 BBC Master AIV
r249189r249190
355360bbcm512   // 1986 BBC Master 512
356361bbcmarm   // 1986 ARM Evaluation System
357362bbcmc     // 1986 BBC Master Compact
358bbcmc_ar  // 1986 BBC Master Comapact (Arabic)
363bbcmc_ar  // 1986 BBC Master Compact (Arabic)
364pro128s   // 1987 Olivetti Prodest PC 128S
359365bbcbc     // 1985 BBC Bridge Companion
360366a310      // 1988 Acorn Archimedes 310
361367a3010     // 1988 Acorn Archimedes 3010
trunk/src/mame/video/chihiro.c
r249189r249190
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
12431291void nv2a_renderer::write_pixel(int x, int y, UINT32 color, UINT32 depth)
12441292{
1245   UINT32 *addr, *daddr;
1246   UINT32 fbcolor, deptsten;
1293   UINT8 *addr;
1294   UINT32 *daddr32;
1295   UINT16 *daddr16;
1296   UINT32 deptsten;
12471297   UINT32 c[4], fb[4], s[4], d[4], cc[4];
12481298   UINT32 dep, sten, stenc, stenv;
12491299   bool stencil_passed;
12501300   bool depth_passed;
12511301
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;
1302   fb[3] = fb[2] = fb[1] = fb[0] = 0;
1303   addr = NULL;
12571304   if (color_mask != 0)
1258      fbcolor = *addr;
1259   daddr=depthbuffer + (pitch_depthbuffer / 4)*y + x;
1260   deptsten = *daddr;
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;
12611328   c[3] = color >> 24;
12621329   c[2] = (color >> 16) & 255;
12631330   c[1] = (color >> 8) & 255;
12641331   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;
12691332   cc[3] = blend_color >> 24;
12701333   cc[2] = (blend_color >> 16) & 255;
12711334   cc[1] = (blend_color >> 8) & 255;
12721335   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;
12791336   // ownership test and scissor test not done
12801337   // alpha test
12811338   if (alpha_test_enabled) {
r249189r249190
13831440               sten = 255;
13841441            break;
13851442         }
1386         deptsten = (dep << 8) | sten;
1387         *daddr = deptsten;
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         }
13881451         return;
13891452      }
13901453   }
r249189r249190
14581521               sten = 255;
14591522            break;
14601523         }
1461         deptsten = (dep << 8) | sten;
1462         *daddr = deptsten;
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         }
14631532         return;
14641533      }
14651534      switch (stencil_op_zpass) {
r249189r249190
17821851      }
17831852   }
17841853   if (color_mask != 0) {
1785      UINT32 fbcolor_tmp;
1854      UINT32 ct,ft,w;
17861855
1787      fbcolor_tmp = (c[3] << 24) | (c[2] << 16) | (c[1] << 8) | c[0];
1788      *addr = (fbcolor & ~color_mask) | (fbcolor_tmp & color_mask);
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      }
17891874   }
17901875   if (depth_write_enabled)
17911876      dep = depth;
1792   deptsten = (dep << 8) | sten;
1793   *daddr = deptsten;
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   }
17941885}
17951886
17961887void nv2a_renderer::render_color(INT32 scanline, const extent_t &extent, const nvidia_object_data &objectdata, int threadid)
r249189r249190
22382329   }
22392330}
22402331
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
22412409int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UINT32 subchannel, UINT32 method, UINT32 address, int &countlen)
22422410{
22432411   UINT32 maddress;
r249189r249190
23592527            convert_vertices_poly(vert, xy, 4);
23602528            render_polygon<4>(limits_rendertarget, renderspans, 4 + 4 * 2, xy); // 4 rgba, 4 texture units 2 uv
23612529         }
2530         wait();
23622531      }
23632532      else if (type == nv2a_renderer::TRIANGLE_FAN) {
23642533         if ((countlen * mult + indexesleft_count) >= 3) {
r249189r249190
24052574            convert_vertices_poly(vert, xy, 3);
24062575            render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, xy[0], xy[1], xy[2]); // 4 rgba, 4 texture units 2 uv
24072576         }
2577         wait();
24082578      }
24092579      else if (type == nv2a_renderer::TRIANGLE_STRIP) {
24102580         if ((countlen * mult + indexesleft_count) >= 3) {
r249189r249190
24322602                  xy[(n + 2) & 3].y = xy[(n + 2) & 3].y + 1.0f;
24332603               render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, xy[((n & 1) + n) & 3], xy[((~n & 1) + n) & 3], xy[(2 + n) & 3]);
24342604            }
2605            wait();
24352606         }
24362607      }
24372608      else {
r249189r249190
25192690            address = address + c * 3;
25202691            render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, xy[0], xy[1], xy[2]); // 4 rgba, 4 texture units 2 uv
25212692         }
2693         wait();
25222694      }
25232695      else if (type == nv2a_renderer::TRIANGLE_STRIP) {
25242696         vertex_nv vert[4];
r249189r249190
26662838      space.write_dword(base + offset, data);
26672839      countlen--;
26682840   }
2841   if (maddress == 0x1d7c) {
2842      antialias_control = data;
2843      countlen--;
2844   }
26692845   if (maddress == 0x1d98) {
26702846      countlen--;
26712847   }
r249189r249190
26752851   if (maddress == 0x1d94) {
26762852      int m;
26772853
2678      m = channel[chanel][subchannel].object.method[0x1d7c / 4];
2854      m = antialias_control;
26792855      if (antialiasing_rendertarget != 0)
26802856         m = 2;
26812857      else
r249189r249190
26832859      // possible buffers: color, depth, stencil
26842860      // clear framebuffer
26852861      if (data & 0xf0) {
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);
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         }
26902880#ifdef LOG_NV2A
26912881         printf("clearscreen\n\r");
26922882#endif
26932883      }
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);
2884      clear_depth_buffer(data & 3, channel[chanel][subchannel].object.method[0x1d8c / 4]);
27022885      countlen--;
27032886   }
27042887   if (maddress == 0x0200) {
r249189r249190
27202903      log2width_rendertarget = (data >> 16) & 255;
27212904      antialiasing_rendertarget = (data >> 12) & 15;
27222905      type_rendertarget = (data >> 8) & 15;
2723      depth_rendertarget = (data >> 4) & 15;
2724      color_rendertarget = (data >> 0) & 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      }
27252926      dilate_rendertarget = dilatechose[(log2width_rendertarget << 4) + log2height_rendertarget];
27262927   }
27272928   if (maddress == 0x020c) {
trunk/src/mame/video/hng64.c
r249189r249190
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
207208TILE_GET_INFO_MEMBER(hng64_state::get_hng64_tile0_8x8_info)
208209{
209210   int offset = 0x00000;
r249189r249190
384385-------------------------------------------------*/
385386
386387#define HNG64_ROZ_PLOT_PIXEL(INPUT_VAL)                                                 \
387do {                                                                                \
388   if (blit->drawformat == HNG64_TILEMAP_NORMAL)                                   \
389      *(UINT32 *)dest = clut[INPUT_VAL];                                          \
390   else if (blit->drawformat == HNG64_TILEMAP_ADDITIVE)                            \
388do {                                                                                    \
389   if (blit->drawformat == HNG64_TILEMAP_NORMAL)                                       \
390      *(UINT32 *)dest = clut[INPUT_VAL];                                              \
391   else if (blit->drawformat == HNG64_TILEMAP_ADDITIVE)                                \
391392      *(UINT32 *)dest = alpha_additive_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); \
393   else if (blit->drawformat == HNG64_TILEMAP_ALPHA)                                   \
394      *(UINT32 *)dest = alpha_blend_r32(*(UINT32 *)dest, clut[INPUT_VAL], alpha);     \
394395} while (0)
395396
396397void hng64_state::hng64_tilemap_draw_roz_core(screen_device &screen, tilemap_t *tmap, const blit_parameters *blit,
r249189r249190
11221123      // Blit the color buffer into the primary bitmap
11231124      for (y = cliprect.min_y; y <= cliprect.max_y; y++)
11241125      {
1125         UINT32 *src = &m_colorBuffer3d[y * cliprect.max_x];
1126         UINT32 *src = &m_poly_renderer->colorBuffer3d().pix32(y, cliprect.min_x);
11261127         UINT32 *dst = &bitmap.pix32(y, cliprect.min_x);
11271128
11281129         for (x = cliprect.min_x; x <= cliprect.max_x; x++)
r249189r249190
12341235
12351236void hng64_state::video_start()
12361237{
1237   const rectangle &visarea = m_screen->visible_area();
1238
12391238   m_old_animmask = -1;
12401239   m_old_animbits = -1;
12411240   m_old_tileflags[0] = -1;
r249189r249190
12691268   // Debug switch, turn on / off additive blending on a per-tilemap basis
12701269   m_additive_tilemap_debug = 0;
12711270
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));
1271   // Rasterizer creation
1272    m_poly_renderer = auto_alloc(machine(), hng64_poly_renderer(*this));
12751273
1276
1274    // 3d information
12771275   m_dl = auto_alloc_array(machine(), UINT16, 0x200/2);
12781276   polys.resize(1024*5);
12791277
trunk/src/mame/video/hng64_3d.c
r249189r249190
11// license:LGPL-2.1+
22// copyright-holders:David Haywood, Angelo Salese, ElSemi, Andrew Gardner, Andrew Zaferakis
3/* Hyper NeoGeo 64 - 3D bits */
43
5// todo, use poly.c
6
74#include "includes/hng64.h"
85
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
1123// Hardware calls these '3d buffers'
1224//   They're only read during the startup check of fatfurwa.  Z-buffer memory?  Front buffer, back buffer?
1325//   They're definitely mirrored in the startup test, according to ElSemi
r249189r249190
5466   for(int packetStart=0;packetStart<0x200;packetStart+=32)
5567   {
5668      // Send it off to the 3d subsystem.
57      hng64_command3d( &m_dl[packetStart/2] );
69      hng64_command3d(&m_dl[packetStart/2]);
5870   }
5971
6072   machine().scheduler().timer_set(m_maincpu->cycles_to_attotime(0x200*8), timer_expired_delegate(FUNC(hng64_state::hng64_3dfifo_processed),this));
6173g_profiler.stop();
6274}
6375
64TIMER_CALLBACK_MEMBER(hng64_state::hng64_3dfifo_processed )
76TIMER_CALLBACK_MEMBER(hng64_state::hng64_3dfifo_processed)
6577{
6678// ...
6779   m_set_irq(0x0008);
r249189r249190
584596               polys[*numPolys].vert[m].texCoords[3] = 1.0f;
585597
586598               polys[*numPolys].vert[m].normal[0] = uToF(chunkOffset[9  + (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)] );
599               polys[*numPolys].vert[m].normal[1] = uToF(chunkOffset[10 + (9*m)]);
600               polys[*numPolys].vert[m].normal[2] = uToF(chunkOffset[11 + (9*m)]);
589601               polys[*numPolys].vert[m].normal[3] = 0.0f;
590602            }
591603
r249189r249190
900912      if (packet[2] == 0x0003 && packet[3] == 0x8f37 && m_mcu_type == SHOOT_MCU)
901913         break;
902914
903      recoverPolygonBlock( packet, &numPolys);
915      recoverPolygonBlock(packet, &numPolys);
904916      break;
905917
906918   case 0x0102:    // Geometry with only translation
r249189r249190
920932      miniPacket[7] = 0x7fff;
921933      miniPacket[11] = 0x7fff;
922934      miniPacket[15] = 0x7fff;
923      recoverPolygonBlock( miniPacket, &numPolys);
935      recoverPolygonBlock(miniPacket, &numPolys);
924936
925937      memset(miniPacket, 0, sizeof(UINT16)*16);
926938      for (int i = 0; i < 7; i++) miniPacket[i] = packet[i+8];
r249189r249190
928940      miniPacket[7] = 0x7fff;
929941      miniPacket[11] = 0x7fff;
930942      miniPacket[15] = 0x7fff;
931      recoverPolygonBlock( miniPacket, &numPolys);
943      recoverPolygonBlock(miniPacket, &numPolys);
932944      break;
933945
934946   case 0x1000:    // Unknown: Some sort of global flags?
r249189r249190
949961   {
950962      if (polys[i].visible)
951963      {
952         drawShaded( &polys[i]);
964         m_poly_renderer->drawShaded(&polys[i]);
953965      }
954966   }
967    m_poly_renderer->wait();
955968}
956969
957970void hng64_state::clear3d()
r249189r249190
963976   // Reset the buffers...
964977   for (i = 0; i < (visarea.max_x)*(visarea.max_y); i++)
965978   {
966      m_depthBuffer3d[i] = 100.0f;
967      m_colorBuffer3d[i] = rgb_t(0, 0, 0, 0);
979        m_poly_renderer->depthBuffer3d()[i] = 100.0f;
968980   }
981   
982    // Clear the 3d rasterizer buffer
983    m_poly_renderer->colorBuffer3d().fill(0x00000000, m_screen->visible_area());   
969984
970985   // Set some matrices to the identity...
971986   setIdentity(m_projectionMatrix);
r249189r249190
9941009/////////////////////
9951010
9961011/* 4x4 matrix multiplication */
997void hng64_state::matmul4(float *product, const float *a, const float *b )
1012void hng64_state::matmul4(float *product, const float *a, const float *b)
9981013{
9991014   int i;
10001015   for (i = 0; i < 4; i++)
r249189r249190
10721087// POLYGON CLIPPING CODE //
10731088///////////////////////////
10741089
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
10851090int hng64_state::Inside(struct polyVert *v, int plane)
10861091{
10871092   switch(plane)
r249189r249190
11581163   Ol[2] = Il0[2] + (Il1[2] - Il0[2]) * t;
11591164}
11601165
1166//////////////////////////////////////////////////////////////////////////
1167// Clip against the volumes defined by the homogeneous clip coordinates //
1168//////////////////////////////////////////////////////////////////////////
1169
11611170void hng64_state::performFrustumClip(struct polygon *p)
11621171{
1163   int i, j, k;
1164   //////////////////////////////////////////////////////////////////////////
1165   // Clip against the volumes defined by the homogeneous clip coordinates //
1166   //////////////////////////////////////////////////////////////////////////
1172    polyVert *v0;
1173   polyVert *v1;
1174   polyVert *tv;
11671175
1168   struct polygon temp;
1169
1170   struct polyVert *v0;
1171   struct polyVert *v1;
1172   struct polyVert *tv;
1173
1176    polygon temp;
11741177   temp.n = 0;
11751178
11761179   // Skip near and far clipping planes ?
1177   for (j = 0; j <= HNG64_BOTTOM; j++)
1180   for (int j = 0; j <= HNG64_BOTTOM; j++)
11781181   {
1179      for (i = 0; i < p->n; i++)
1182      for (int i = 0; i < p->n; i++)
11801183      {
1181         k = (i+1) % p->n; // Index of next vertex
1184         int k = (i+1) % p->n; // Index of next vertex
11821185
11831186         v0 = &p->vert[i];
11841187         v1 = &p->vert[k];
r249189r249190
11901193            memcpy(tv, v1, sizeof(struct polyVert));
11911194            temp.n++;
11921195         }
1193
11941196         else if (Inside(v0, j) && !Inside(v1, j))                   // Edge goes from in to out...
11951197         {
11961198            Intersect(v0, v1, tv, j);
11971199            temp.n++;
11981200         }
1199
12001201         else if (!Inside(v0, j) && Inside(v1, j))                   // Edge goes from out to in...
12011202         {
12021203            Intersect(v0, v1, tv, j);
r249189r249190
12071208
12081209      p->n = temp.n;
12091210
1210      for (i = 0; i < temp.n; i++)
1211      for (int i = 0; i < temp.n; i++)
12111212      {
12121213         memcpy(&p->vert[i], &temp.vert[i], sizeof(struct polyVert));
12131214      }
r249189r249190
12161217   }
12171218}
12181219
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)
1220void hng64_poly_renderer::render_scanline(INT32 scanline, const extent_t& extent, const hng64_poly_data& renderData, int threadid)
12361221{
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]);
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];
12391242
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];
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;
12441252
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)
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)
12541261         {
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;
1262            // ST color mode
1263            *colorBuffer = rgb_t(255, (UINT8)(sCorrect*255.0f), (UINT8)(tCorrect*255.0f), (UINT8)(0));
12581264         }
1259         else if ((prOptions.debugColor & 0xff000000) == 0x02000000)
1265         else if ((renderData.debugColor & 0xff000000) == 0x02000000)
12601266         {
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;
1267            // Lighting only
1268            *colorBuffer = rgb_t(255, (UINT8)rCorrect, (UINT8)gCorrect, (UINT8)bCorrect);
12641269         }
1265         else if ((prOptions.debugColor & 0xff000000) == 0xff000000)
1270         else if ((renderData.debugColor & 0xff000000) == 0xff000000)
12661271         {
1267            // DEBUG COLOR MODE
1268            *cb = prOptions.debugColor;
1269            *db = z_start;
1272            // Debug color mode
1273            *colorBuffer = renderData.debugColor;
12701274         }
12711275         else
12721276         {
r249189r249190
12741278            float textureT = 0.0f;
12751279
12761280            // Standard & Half-Res textures
1277            if (prOptions.texType == 0x0)
1281            if (renderData.texType == 0x0)
12781282            {
1279               textureS = s_coord * 1024.0f;
1280               textureT = t_coord * 1024.0f;
1283               textureS = sCorrect * 1024.0f;
1284               textureT = tCorrect * 1024.0f;
12811285            }
1282            else if (prOptions.texType == 0x1)
1286            else if (renderData.texType == 0x1)
12831287            {
1284               textureS = s_coord * 512.0f;
1285               textureT = t_coord * 512.0f;
1288               textureS = sCorrect * 512.0f;
1289               textureT = tCorrect * 512.0f;
12861290            }
12871291
1288            // stuff in mode 1 here already looks good?
12891292            // Small-Page textures
1290            if (prOptions.texPageSmall == 2)
1293            if (renderData.texPageSmall == 2)
12911294            {
12921295               textureT = fmod(textureT, 256.0f);
12931296               textureS = fmod(textureS, 256.0f);
12941297
1295               textureT += (256.0f * (prOptions.texPageHorizOffset>>1));
1296               textureS += (256.0f * (prOptions.texPageVertOffset>>1));
1298               textureT += (256.0f * (renderData.texPageHorizOffset>>1));
1299               textureS += (256.0f * (renderData.texPageVertOffset>>1));
12971300            }
1298            else if (prOptions.texPageSmall == 3)
1301            else if (renderData.texPageSmall == 3)
12991302            {
13001303               textureT = fmod(textureT, 128.0f);
13011304               textureS = fmod(textureS, 128.0f);
13021305
1303               textureT += (128.0f * (prOptions.texPageHorizOffset>>0));
1304               textureS += (128.0f * (prOptions.texPageVertOffset>>0));
1306               textureT += (128.0f * (renderData.texPageHorizOffset>>0));
1307               textureS += (128.0f * (renderData.texPageVertOffset>>0));
13051308            }
13061309
1307            paletteEntry = textureOffset[((int)textureS)*1024 + (int)textureT];
1310            UINT8 paletteEntry = textureOffset[((int)textureS)*1024 + (int)textureT];
13081311
1309            // Naieve Alpha Implementation (?) - don't draw if you're at texture index 0...
1312            // Naive Alpha Implementation (?) - don't draw if you're at texture index 0...
13101313            if (paletteEntry != 0)
13111314            {
13121315               // The color out of the texture
1313               paletteEntry %= prOptions.palPageSize;
1314               rgb_t color = m_palette->pen(prOptions.palOffset + paletteEntry);
1316               paletteEntry %= renderData.palPageSize;
1317               rgb_t color = m_state.m_palette->pen(renderData.palOffset + paletteEntry);
13151318
13161319               // Apply the lighting
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;
1320               float rIntensity = rCorrect / 255.0f;
1321               float gIntensity = gCorrect / 255.0f;
1322               float bIntensity = bCorrect / 255.0f;
1323               float red   = color.r() * rIntensity;
13211324               float green = color.g() * gIntensity;
1322               float blue  = color.b() * bIntensity;
1325               float blue  = color.b() * bIntensity;
13231326
13241327               // Clamp and finalize
13251328               red = color.r() + red;
r249189r249190
13321335
13331336               color = rgb_t(255, (UINT8)red, (UINT8)green, (UINT8)blue);
13341337
1335               *cb = color;
1336               *db = z_start;
1338               *colorBuffer = color;
13371339            }
13381340         }
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}
1341        }
13511342
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   }
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    }
16681354}
16691355
1670void hng64_state::drawShaded( struct polygon *p)
1356void hng64_poly_renderer::drawShaded(struct polygon *p)
16711357{
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   
16721369   // The perspective-correct texture divide...
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++)
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++)
16761372   {
16771373      p->vert[j].clipCoords[3] = 1.0f / p->vert[j].clipCoords[3];
16781374      p->vert[j].light[0]      = p->vert[j].light[0]     * p->vert[j].clipCoords[3];
r249189r249190
16821378      p->vert[j].texCoords[1]  = p->vert[j].texCoords[1] * p->vert[j].clipCoords[3];
16831379   }
16841380
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++)
1381    // Rasterize the triangles
1382   for (int j = 1; j < p->n-1; j++)
16971383   {
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);
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]);
17031426   }
17041427}
trunk/src/mame/video/tecmo_spr.c
r249189r249190
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)
23m_bootleg(0),
24m_yoffset(0)
2425{
2526}
2627
r249189r249190
4647   dev.m_bootleg = bootleg;
4748}
4849
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}
4955
56
5057static const UINT8 layout[8][8] =
5158{
5259   { 0, 1, 4, 5, 16, 17, 20, 21 },
r249189r249190
323330            code = ( spriteram[offs+2] ) + ( spriteram[offs+3] << 8 );
324331
325332            int xpos = spriteram[offs + 8] + ( (spriteram[offs + 9] & 3 ) << 8 );
326            int ypos = spriteram[offs + 6] + ( (spriteram[offs + 7] & 1 ) << 8 );
333            int ypos = spriteram[offs + 6] + ( (spriteram[offs + 7] & 1 ) << 8 ) + m_yoffset;
327334
328335            if (xpos >= 0x0300) xpos -= 0x0400;
329336
trunk/src/mame/video/tecmo_spr.h
r249189r249190
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);
1314
1415   // gaiden.c / spbactn.c / tecmo16.c sprites
1516   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);
r249189r249190
2930
3031   UINT8 m_gfxregion;
3132   int m_bootleg; // for Gals Pinball / Hot Pinball
33   int m_yoffset;
3234
33
3435private:
3536};
3637
r249189r249190
4243
4344#define MCFG_TECMO_SPRITE_BOOTLEG(_bootleg) \
4445   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
r249189r249190
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
849866SLOT_INTERFACE_START(amstrad_centronics_devices)
850867   SLOT_INTERFACE("pl80", COMX_PL80)
851868   SLOT_INTERFACE("ex800", EPSON_EX800)
r249189r249190
11281145   MCFG_DEVICE_REMOVE("upd765")
11291146   MCFG_I8272A_ADD("upd765", true)
11301147
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
11311156   MCFG_FLOPPY_DRIVE_ADD("upd765:0", aleste_floppies, "35dd", amstrad_state::aleste_floppy_formats)
11321157   MCFG_FLOPPY_DRIVE_ADD("upd765:1", aleste_floppies, "35dd", amstrad_state::aleste_floppy_formats)
11331158
trunk/src/mess/drivers/apple2.c
r249189r249190
14481448   ROM_LOAD ( "unitron.f0"   , 0x3000, 0x1000, CRC(8e047c4a) SHA1(78c57c0e00dfce7fdec9437fe2b4c25def447e5d))
14491449ROM_END
14501450
1451ROM_START(uniap2ti)
1451ROM_START(uniap2ti) /* "Teclado Inteligente" means "smart keyboard" in brazilian portuguese */
14521452   ROM_REGION(0x1000,"gfx1",0)
14531453   ROM_LOAD ( "unitron.chr", 0x0000, 0x1000, CRC(7fdd1af6) SHA1(2f4f90d90f2f3a8c1fbea304e1072780fb22e698))
14541454
r249189r249190
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", 0x1000, 0x1000, CRC(311beae6) SHA1(f6379aba9ac982850edc314c93a393844a3349ef))
1461   ROM_LOAD ( "unitron_apii+_keyboard.ic3", 0x0800, 0x0800, CRC(edc43205) SHA1(220cc21d86f1ab63a301ae7a9c5ff0f3f6cddb70))
14621462ROM_END
14631463
14641464
r249189r249190
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( 198?, uniap2ti, apple2,   0,        apple2p,     apple2p, driver_device,  0,        "Unitron Eletronica", "Unitron AP II+", MACHINE_SUPPORTS_SAVE )
1606COMP( 1984, uniap2ti, apple2,   0,        apple2p,     apple2p, driver_device,  0,        "Unitron Eletronica", "Unitron AP II+ (Teclado Inteligente)", 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
r249189r249190
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 */
5251#include "bus/centronics/ctronics.h"
5352#include "bus/econet/econet.h"
5453#include "sound/tms5220.h"          /* Speech */
r249189r249190
5857/* Devices */
5958#include "imagedev/flopdrv.h"
6059#include "formats/bbc_dsk.h"
61#include "formats/basicdsk.h"
6260#include "imagedev/cassette.h"
6361#include "formats/uef_cas.h"
6462#include "formats/csw_cas.h"
r249189r249190
138136}
139137
140138static ADDRESS_MAP_START( bbca_mem, AS_PROGRAM, 8, bbc_state )
141   ADDRESS_MAP_UNMAP_HIGH                                                                      /*  Hardware marked with a # is not present in a Model A        */
139   ADDRESS_MAP_UNMAP_HIGH                                                                                      /*  Hardware marked with a # is not present in a Model A        */
142140
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)
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               */
151150   AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
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)              */
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)              */
165164ADDRESS_MAP_END
166165
167166
168static ADDRESS_MAP_START( bbcb_mem, AS_PROGRAM, 8, bbc_state )
167static ADDRESS_MAP_START( bbc_base, AS_PROGRAM, 8, bbc_state )
169168   ADDRESS_MAP_UNMAP_HIGH
170169
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 )
171192   AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w)                     /*    0000-3fff                 Regular Ram                     */
172   AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w)                     /*    4000-7fff                 Repeat of the Regular Ram       */
193   AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w)                     /*    4000-7fff                 Regular Ram                     */
173194   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               */
184195   AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectb_w)                         /* R: fe30-fe3f  NC             Not Connected                   */
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)              */
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)
193200ADDRESS_MAP_END
194201
195202
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
196215static ADDRESS_MAP_START( bbcbp_mem, AS_PROGRAM, 8, bbc_state )
197   ADDRESS_MAP_UNMAP_HIGH
198
199216   AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w)                    /*    0000-2fff                 Regular Ram                     */
200217   AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w)                    /*    3000-7fff                 Video/Shadow Ram                */
201218   AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_w)                    /*    8000-afff                 Paged ROM or 12K of SWRAM       */
202219   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               */
213220   AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w)                        /* R: fe30-fe3f  NC             Not Connected                   */
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)              */
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)
222225ADDRESS_MAP_END
223226
224227
225228static ADDRESS_MAP_START( bbcbp128_mem, AS_PROGRAM, 8, bbc_state )
226   ADDRESS_MAP_UNMAP_HIGH
227
228229   AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w)                    /*    0000-2fff                 Regular Ram                     */
229230   AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w)                    /*    3000-7fff                 Video/Shadow Ram                */
230231   AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_128_w)                /*    8000-afff                 Paged ROM or 12K of SWRAM       */
231232   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               */
243233   AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w)                        /* R: fe30-fe3f  NC             Not Connected                   */
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)              */
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)
252238ADDRESS_MAP_END
253239
254240
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
255253/******************************************************************************
256254&FC00-&FCFF FRED
257255&FD00-&FDFF JIM
r249189r249190
263261
264262&20-&23 Video ULA       -                       Video system chip        4 ( 2 bytes x  2 )
265263&24-&27 FDC Latch       1770 Control latch      1770 Control latch       4 ( 1 byte  x  4 )
266&28-&2F 1770 registers  1770 Disc Controller    1170 Disc Controller     8 ( 4 bytes x  2 )
264&28-&2F 1770 registers  1770 Disc Controller    1770 Disc Controller     8 ( 4 bytes x  2 )
267265&30-&33 ROMSEL          -                       ROM Select               4 ( 1 byte  x  4 )
268266&34-&37 ACCCON          ACCCON select reg.      ACCCON select reg        4 ( 1 byte  x  4 )
269267&38-&3F NC              -                       -
r249189r249190
282280   AM_RANGE(0x8000, 0x8fff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybm4_w)                    /*    8000-8fff                 Paged ROM/RAM or 4K of RAM ANDY */
283281   AM_RANGE(0x9000, 0xbfff) AM_READ_BANK("bank5") AM_WRITE(bbc_memorybm5_w)                    /*    9000-bfff                 Rest of paged ROM/RAM area      */
284282   AM_RANGE(0xc000, 0xdfff) AM_READ_BANK("bank7") AM_WRITE(bbc_memorybm7_w)                    /*    c000-dfff                 OS ROM or 8K of RAM       HAZEL */
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)              */
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)              */
288286ADDRESS_MAP_END
289287
290288
r249189r249190
464462
465463static INPUT_PORTS_START(bbc_dipswitch)
466464   PORT_MODIFY("COL2")
467   PORT_DIPNAME(0x01, 0x01, "DIP 8 (Default File System)")
465   PORT_DIPNAME(0x01, 0x01, "Default File System") PORT_DIPLOCATION("KBD:1")
468466   PORT_DIPSETTING(   0x00, "NFS" )
469467   PORT_DIPSETTING(   0x01, "DFS" )
470468
471469   PORT_MODIFY("COL3")
472   PORT_DIPNAME(0x01, 0x01, "DIP 7 (Not Used)")
470   PORT_DIPNAME(0x01, 0x01, "Not Used") PORT_DIPLOCATION("KBD:2")
473471   PORT_DIPSETTING(   0x00, DEF_STR( Off ))
474472   PORT_DIPSETTING(   0x01, DEF_STR( On ))
475473
476474   PORT_MODIFY("COL4")
477   PORT_DIPNAME(0x01, 0x01, "DIP 6 (Disc Timings)")
475   PORT_DIPNAME(0x01, 0x01, "Disc Timings") PORT_DIPLOCATION("KBD:3")
478476   PORT_DIPSETTING(   0x00, DEF_STR( Off ))
479477   PORT_DIPSETTING(   0x01, DEF_STR( On ))
480478
481479   PORT_MODIFY("COL5")
482   PORT_DIPNAME(0x01, 0x01, "DIP 5 (Disc Timings)")
480   PORT_DIPNAME(0x01, 0x01, "Disc Timings") PORT_DIPLOCATION("KBD:4")
483481   PORT_DIPSETTING(   0x00, DEF_STR( Off ))
484482   PORT_DIPSETTING(   0x01, DEF_STR( On ))
485483
486484   PORT_MODIFY("COL6")
487   PORT_DIPNAME(0x01, 0x01, "DIP 4 (Boot)")
485   PORT_DIPNAME(0x01, 0x01, "Boot") PORT_DIPLOCATION("KBD:5")
488486   PORT_DIPSETTING(   0x00, "SHIFT" )
489487   PORT_DIPSETTING(   0x01, "SHIFT-BREAK" )
490488
491489   PORT_MODIFY("COL7")
492   PORT_DIPNAME(0x01, 0x01, "DIP 3 (Screen Mode)")
490   PORT_DIPNAME(0x01, 0x01, "Screen Mode") PORT_DIPLOCATION("KBD:6")
493491   PORT_DIPSETTING(   0x00, "+0" )
494492   PORT_DIPSETTING(   0x01, "+4" )
495
493   
496494   PORT_MODIFY("COL8")
497   PORT_DIPNAME(0x01, 0x01, "DIP 2 (Screen Mode)")
495   PORT_DIPNAME(0x01, 0x01, "Screen Mode") PORT_DIPLOCATION("KBD:7")
498496   PORT_DIPSETTING(   0x00, "+0" )
499497   PORT_DIPSETTING(   0x01, "+2" )
500498
501499   PORT_MODIFY("COL9")
502   PORT_DIPNAME(0x01, 0x01, "DIP 1 (Screen Mode)")
500   PORT_DIPNAME(0x01, 0x01, "Screen Mode") PORT_DIPLOCATION("KBD:8")
503501   PORT_DIPSETTING(   0x00, "+0" )
504502   PORT_DIPSETTING(   0x01, "+1" )
505503INPUT_PORTS_END
506504
507505
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
508564static INPUT_PORTS_START(bbc_joy)
509565   PORT_START("JOY0")
510566   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_MINMAX(0x0,0xff ) PORT_PLAYER(1)
r249189r249190
523579static INPUT_PORTS_START(bbc_config)
524580   PORT_START("BBCCONFIG")
525581
526//  PORT_CONFNAME( 0x01, 0x00, "Speech Upgrade" )
527//  PORT_CONFSETTING(    0x00, DEF_STR( On ) )
528//  PORT_CONFSETTING(    0x01, DEF_STR( Off ) )
582   PORT_CONFNAME( 0x01, 0x00, "Speech Upgrade" )
583   PORT_CONFSETTING(    0x00, DEF_STR( On ) )
584   PORT_CONFSETTING(    0x01, DEF_STR( Off ) )
529585
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
540586   PORT_CONFNAME( 0x18, 0x00, "Sideways RAM Type" )
541587   PORT_CONFSETTING(    0x00, DEF_STR( None ) )
542588   PORT_CONFSETTING(    0x08, "Solidisk 128K (fe62)" )
r249189r249190
554600   PORT_INCLUDE(bbc_config)
555601   PORT_INCLUDE(bbc_keyboard)
556602   PORT_INCLUDE(bbc_dipswitch)
603   PORT_INCLUDE(bbc_links)
557604   PORT_INCLUDE(bbc_joy)
558605INPUT_PORTS_END
559606
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
560615static INPUT_PORTS_START(bbcm)
561616   PORT_INCLUDE(bbc_keyboard)
562617   PORT_INCLUDE(bbc_keypad)
r249189r249190
572627}
573628
574629
575//static const struct TMS5220interface tms5220_interface =
576//{
577//  680000L,
578//  50,
579//  bbc_TMSint
580//};
581
582
583
584630WRITE_LINE_MEMBER(bbc_state::bbcb_acia6850_irq_w)
585631{
586632   m_acia_irq = state;
r249189r249190
588634   check_interrupts();
589635}
590636
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
605637
606638static const floppy_interface bbc_floppy_interface =
607639{
r249189r249190
610642   "floppy_5_25"
611643};
612644
613FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats )
614   FLOPPY_BBC_FORMAT
645FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_525sd )
646   FLOPPY_BBC_SSD_525_FORMAT,
647   FLOPPY_BBC_DSD_525_FORMAT
615648FLOPPY_FORMATS_END
616649
617static SLOT_INTERFACE_START( bbc_floppies )
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 )
618661   SLOT_INTERFACE("sssd", FLOPPY_525_SSSD)
619662   SLOT_INTERFACE("sd",   FLOPPY_525_SD)
620663   SLOT_INTERFACE("ssdd", FLOPPY_525_SSDD)
r249189r249190
623666   SLOT_INTERFACE("qd",   FLOPPY_525_QD)
624667SLOT_INTERFACE_END
625668
669static SLOT_INTERFACE_START( bbc_floppies_35 )
670   SLOT_INTERFACE("qd",   FLOPPY_35_DD)
671SLOT_INTERFACE_END
672
626673WRITE_LINE_MEMBER(bbc_state::econet_clk_w)
627674{
628675   m_adlc->rxc_w(state);
r249189r249190
649696MACHINE_CONFIG_END
650697
651698
699/***************************************************************************
700
701    BBC Micro
702
703****************************************************************************/
704
705
652706static MACHINE_CONFIG_START( bbca, bbc_state )
653707   /* basic machine hardware */
654708   MCFG_CPU_ADD("maincpu", M6502, 2000000)         /* 2.00 MHz */
r249189r249190
747801   MCFG_RAM_DEFAULT_VALUE(0x00)
748802
749803   /* speech hardware */
750//  MCFG_SOUND_ADD("tms5220", TMS5220, 640000)
751//  MCFG_TMS52XX_SPEECHROM("vsm")
804   MCFG_DEVICE_ADD("vsm", SPEECHROM, 0)
805   MCFG_SOUND_ADD("tms5220", TMS5220, 640000)
806   MCFG_TMS52XX_SPEECHROM("vsm")
752807
753808   /* user via */
754809   MCFG_DEVICE_ADD("via6522_1", VIA6522, 1000000)
r249189r249190
766821   /* printer */
767822   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
768823   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
769
770824   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
771825
772826   /* fdc */
r249189r249190
776830
777831   MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(bbc_floppy_interface)
778832
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
786833   /* software lists */
787834   MCFG_DEVICE_REMOVE("cass_ls_a")
788835   MCFG_SOFTWARE_LIST_ADD("cass_ls_b", "bbcb_cass")
r249189r249190
790837MACHINE_CONFIG_END
791838
792839
793static MACHINE_CONFIG_DERIVED( bbcb_us, bbca )
840static MACHINE_CONFIG_DERIVED(bbcb1770, bbcb)
794841   /* basic machine hardware */
795   MCFG_CPU_MODIFY( "maincpu" )
796   MCFG_CPU_PROGRAM_MAP(bbcb_mem)
842   MCFG_CPU_MODIFY("maincpu")
843   MCFG_CPU_PROGRAM_MAP(bbcb1770_mem)
797844
798   MCFG_MACHINE_START_OVERRIDE(bbc_state, bbcb )
799   MCFG_MACHINE_RESET_OVERRIDE(bbc_state, bbcb )
800   MCFG_VIDEO_START_OVERRIDE(bbc_state, bbcb )
845   /* fdc */
846   MCFG_DEVICE_REMOVE("i8271")
847   MCFG_DEVICE_REMOVE(FLOPPY_0)
848   MCFG_DEVICE_REMOVE(FLOPPY_1)
801849
802   /* internal ram */
803   MCFG_RAM_MODIFY(RAM_TAG)
804   MCFG_RAM_DEFAULT_SIZE("32K")
805   MCFG_RAM_DEFAULT_VALUE(0x00)
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))
806853
807   /* speech hardware */
808//  MCFG_SOUND_ADD("tms5220", TMS5220, 640000)
809//  MCFG_TMS52XX_SPEECHROM("vsm")
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
810859
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 )
811870   /* video hardware */
812871   MCFG_SCREEN_MODIFY("screen")
813872   MCFG_SCREEN_SIZE(640, 200)
814873   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
815874   MCFG_SCREEN_REFRESH_RATE(60)
816875
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
850876   /* software lists */
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")
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")
854880MACHINE_CONFIG_END
855881
856882
857static MACHINE_CONFIG_DERIVED( bbcbp, bbcb )
883static MACHINE_CONFIG_DERIVED( bbcbp, bbcb1770 )
858884   /* basic machine hardware */
859885   MCFG_CPU_MODIFY( "maincpu" )  /* M6512 */
860886   MCFG_CPU_PROGRAM_MAP(bbcbp_mem)
r249189r249190
867893   MCFG_RAM_MODIFY(RAM_TAG)
868894   MCFG_RAM_DEFAULT_SIZE("64K")
869895   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)
875896MACHINE_CONFIG_END
876897
877898
878static MACHINE_CONFIG_DERIVED( bbcbp128, bbcbp )
899static MACHINE_CONFIG_DERIVED( bbcbp128, bbcb1770 )
879900   /* basic machine hardware */
880901   MCFG_CPU_MODIFY( "maincpu" )  /* M6512 */
881902   MCFG_CPU_PROGRAM_MAP(bbcbp128_mem)
903
882904   MCFG_MACHINE_START_OVERRIDE(bbc_state, bbcbp)
883905   MCFG_MACHINE_RESET_OVERRIDE(bbc_state, bbcbp)
884906   MCFG_VIDEO_START_OVERRIDE(bbc_state, bbcbp)
r249189r249190
890912MACHINE_CONFIG_END
891913
892914
893/* BBC Master Series */
915/***************************************************************************
894916
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
8951000static MACHINE_CONFIG_START( bbcm, bbc_state )
8961001   /* basic machine hardware */
8971002   MCFG_CPU_ADD("maincpu", M65SC02, 2000000)        /* 2.00 MHz */
r249189r249190
9431048   /* printer */
9441049   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
9451050   MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
946
9471051   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
9481052
9491053   /* cassette */
r249189r249190
10011105   MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_user_irq_w))
10021106
10031107   /* fdc */
1004   MCFG_WD1770_ADD("wd177x", XTAL_16MHz / 2)
1108   MCFG_WD1770_ADD("wd1770", XTAL_16MHz / 2)
10051109   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
10061110   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
10071111
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)
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)
10101116
10111117   /* econet */
10121118   MCFG_DEVICE_ADD("mc6854", MC6854, 0)
r249189r249190
10371143
10381144
10391145static MACHINE_CONFIG_DERIVED( bbcmet, bbcm )
1040
1041   /* Remove all devices not present in this model */
1042
10431146   /* sound hardware */
1044//  MCFG_DEVICE_REMOVE("mono")
1045//  MCFG_DEVICE_REMOVE("sn76489")
1147   MCFG_DEVICE_REMOVE("mono")
1148   MCFG_DEVICE_REMOVE("sn76489")
10461149
10471150   /* printer */
1048//  MCFG_DEVICE_REMOVE("centronics")
1151   MCFG_DEVICE_REMOVE("centronics")
10491152
10501153   /* cassette */
10511154   MCFG_DEVICE_REMOVE("cassette")
r249189r249190
10561159   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
10571160
10581161   /* acia */
1059//  MCFG_DEVICE_REMOVE("acia6850")
1162   MCFG_DEVICE_REMOVE("acia6850")
10601163   MCFG_DEVICE_REMOVE(RS232_TAG)
1164   MCFG_DEVICE_REMOVE("acia_clock")
10611165
10621166   /* devices */
1063//  MCFG_DEVICE_REMOVE("upd7002")
1064//  MCFG_DEVICE_REMOVE("via6522_1")
1167   MCFG_DEVICE_REMOVE("upd7002")
1168   MCFG_DEVICE_REMOVE("via6522_1")
10651169
10661170   /* fdc */
1067//  MCFG_DEVICE_REMOVE("wd177x")
1171   MCFG_DEVICE_REMOVE("wd1770")
10681172MACHINE_CONFIG_END
10691173
10701174
r249189r249190
10821186MACHINE_CONFIG_END
10831187
10841188
1189/***************************************************************************
1190
1191    BBC Master Compact
1192
1193****************************************************************************/
1194
1195
10851196static MACHINE_CONFIG_DERIVED( bbcmc, bbcm )
1197   /* cassette */
1198   MCFG_DEVICE_REMOVE("cassette")
10861199
1087//  MCFG_DEVICE_REMOVE("rtc")
1088
10891200   /* fdc */
1090   MCFG_DEVICE_REMOVE("wd177x")
1201   MCFG_DEVICE_REMOVE("wd1770")
10911202
1092//  MCFG_WD1772_ADD("wd177x", XTAL_16MHz / 2)
1093   MCFG_WD1770_ADD("wd177x", XTAL_16MHz / 2)
1203   MCFG_WD1772_ADD("wd1772", XTAL_16MHz / 2)
10941204   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
10951205   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
10961206
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)
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)
10991211
1212   /* eeprom pcd8572 */
1213   //MCFG_DEVICE_REMOVE("rtc")
1214
11001215   /* 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")
11011219   MCFG_SOFTWARE_LIST_REMOVE("cart_ls_m")
11021220   MCFG_SOFTWARE_LIST_ADD("flop_ls_mc", "bbcmc_flop")
11031221MACHINE_CONFIG_END
11041222
11051223
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
11061232/* the BBC came with 4 rom sockets on the motherboard as shown in the model A driver */
11071233/* you could get a number of rom upgrade boards that took this up to 16 roms as in the */
11081234/* model B driver */
r249189r249190
11111237   ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */
11121238
11131239   ROM_REGION(0x14000,"option",0) /* ROM */
1114   /* rom page 0  00000 */
1115   /* rom page 1  04000 */
1116   /* rom page 2  08000 */
1240   /* rom page 0  00000 SPARE SOCKET */
1241   /* rom page 1  04000 SPARE SOCKET */
1242   /* rom page 2  08000 SPARE SOCKET */
11171243   /* rom page 3  0c000 BASIC */
11181244   ROM_DEFAULT_BIOS("os12b2")
11191245   ROM_SYSTEM_BIOS( 0, "os12b2", "OS 1.20 / BASIC2" )
r249189r249190
11281254   ROM_SYSTEM_BIOS( 3, "os10b1", "OS 1.00 / BASIC1" )
11291255   ROMX_LOAD("os10.rom",   0x10000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(4)) /* os */
11301256   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 */
11311258   ROM_SYSTEM_BIOS( 4, "os01b2", "OS 0.10 / BASIC2" )
11321259   ROMX_LOAD("os01.rom",   0x10000, 0x4000, CRC(45ee0980) SHA1(4b0ece6dc139d5d3f4fabd023716fb6f25149b80), ROM_BIOS(5)) /* os */
11331260   ROMX_LOAD("basic2.rom", 0x00000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(5)) /* rom page 0  00000 */
r249189r249190
11461273ROM_END
11471274
11481275
1149
11501276/*  0000- 7fff  ram */
11511277/*  8000- bfff  this area is mapped over with one of the roms from "option" region 0x00000-0x40000 */
11521278/*  c000- ffff  OS rom and memory mapped hardware at fc00-feff, from "option" region 0x40000-0x44000 */
r249189r249190
11681294   /* rom page 9  24000 */
11691295   /* rom page 10 28000 */
11701296   /* rom page 11 2c000 */
1171   /* rom page 12 30000 */
1172   /* rom page 13 34000 */
1173   /* rom page 14 38000 */
1297   /* rom page 12 30000 SPARE SOCKET */
1298   /* rom page 13 34000 SPARE SOCKET */
1299   /* rom page 14 38000 DFS */
11741300   /* rom page 15 3c000 BASIC */
11751301   ROM_DEFAULT_BIOS("os12b2")
11761302   ROM_SYSTEM_BIOS( 0, "os12b2", "OS 1.20 / BASIC2" )
r249189r249190
11861312   ROMX_LOAD("os10.rom",   0x40000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(4)) /* os */
11871313   ROMX_LOAD("basic1.rom", 0x3c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(4)) /* rom page 15 3c000 */
11881314
1315   ROM_LOAD("dnfs.rom",    0x38000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232))
1316
11891317   ROM_REGION(0x4000, "os", 0)
11901318   ROM_COPY("option", 0x40000, 0, 0x4000)
11911319
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 */
1320   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1321   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
1322ROM_END
12031323
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))
12071324
1208   //ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1209   //ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
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))
12101366ROM_END
12111367
1368
12121369ROM_START(bbcb_de)
12131370   ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */
12141371
r249189r249190
12251382   /* rom page 9  24000 */
12261383   /* rom page 10 28000 */
12271384   /* rom page 11 2c000 */
1228   /* rom page 12 30000 */
1229   /* rom page 13 34000 */
1230   /* rom page 14 38000 */
1385   /* rom page 12 30000 SPARE SOCKET */
1386   /* rom page 13 34000 SPARE SOCKET */
1387   /* rom page 14 38000 DFS */
12311388   /* rom page 15 3c000 BASIC */
12321389   ROM_DEFAULT_BIOS("os12")
12331390   ROM_SYSTEM_BIOS( 0, "os12", "OS 1.20 / BASIC2" )
12341391   ROMX_LOAD("os_de.rom",   0x40000, 0x4000, CRC(b7262caf) SHA1(aadf90338ee9d1c85dfa73beba50e930c2a38f10), ROM_BIOS(1))
12351392   ROMX_LOAD("basic2.rom",  0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(1)) /* rom page 15 3c000 */
12361393
1394   ROM_LOAD("dfs10.rom",    0x38000, 0x4000, CRC(7e367e8c) SHA1(161f585dc45665ea77433c84afd2f95049f7f5a0))
1395
12371396   ROM_REGION(0x4000, "os", 0)
12381397   ROM_COPY("option", 0x40000, 0, 0x4000)
12391398
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 */
1399   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
1400   ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
12521401ROM_END
12531402
1403
12541404ROM_START(bbcb_us)
12551405   ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */
12561406
r249189r249190
12671417   /* rom page 9  24000 */
12681418   /* rom page 10 28000 */
12691419   /* rom page 11 2c000 */
1270   /* rom page 12 30000 */
1271   /* rom page 13 34000 */
1272   /* rom page 14 38000 */
1420   /* rom page 12 30000 SPARE SOCKET */
1421   /* rom page 13 34000 SPARE SOCKET */
1422   /* rom page 14 38000 DFS */
12731423   /* rom page 15 3c000 BASIC */
12741424   ROM_DEFAULT_BIOS("os10b3")
12751425   ROM_SYSTEM_BIOS( 0, "os10b3", "OS A1.0 / BASIC3" )
12761426   ROMX_LOAD("os10_us.rom", 0x40000, 0x4000, CRC(c8e946a9) SHA1(83d91d089dca092d2c8b7c3650ff8143c9069b89), ROM_BIOS(1))
12771427   ROMX_LOAD("basic3.rom",  0x3c000, 0x4000, CRC(161b9539) SHA1(b39014610a968789afd7695aa04d1277d874405c), ROM_BIOS(1)) /* rom page 15 3c000 */
12781428
1429   ROM_LOAD("dfs10.rom",    0x38000, 0x4000, CRC(7e367e8c) SHA1(161f585dc45665ea77433c84afd2f95049f7f5a0))
1430
12791431   ROM_REGION(0x4000, "os", 0)
12801432   ROM_COPY("option", 0x40000, 0, 0x4000)
12811433
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
12951434   ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
12961435   ROM_LOAD("phrom_us.bin", 0x0000, 0x4000, CRC(bf4b3b64) SHA1(66876702d1d95eecc034d20f25047f893a27cde5))
12971436ROM_END
12981437
1438
12991439ROM_START(bbcbp)
13001440   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
13011441
r249189r249190
13091449   /* rom page 2  08000  32K IN PAGE 3 */
13101450   /* rom page 3  0c000  SPARE SOCKET */
13111451   /* rom page 4  10000  32K IN PAGE 5 */
1312   /* rom page 5  14000  SPARE SOCKET */
1452   /* rom page 5  14000  ADFS */
13131453   /* rom page 6  18000  32K IN PAGE 7 */
13141454   /* rom page 7  1c000  DDFS */
13151455   /* rom page 8  20000  32K IN PAGE 9 */
r249189r249190
13201460   /* rom page 13 34000 */
13211461   /* rom page 14 38000  32K IN PAGE 15 */
13221462   /* rom page 15 3C000  BASIC */
1323   /* ddfs 2.23 this is acorns 1770 disc controller Double density disc filing system */
1463   ROM_LOAD("adfs130.rom", 0x14000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
13241464   ROM_LOAD("ddfs223.rom", 0x1c000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
13251465
13261466   ROM_REGION(0x4000, "os", 0)
13271467   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))
13281471ROM_END
13291472
13301473
r249189r249190
13411484   /* rom page 2  08000  32K IN PAGE 3 */
13421485   /* rom page 3  0c000  SPARE SOCKET */
13431486   /* rom page 4  10000  32K IN PAGE 5 */
1344   /* rom page 5  14000  SPARE SOCKET */
1487   /* rom page 5  14000  ADFS */
13451488   /* rom page 6  18000  32K IN PAGE 7 */
13461489   /* rom page 7  1c000  DDFS */
13471490   /* rom page 8  20000  32K IN PAGE 9 */
r249189r249190
13521495   /* rom page 13 34000 */
13531496   /* rom page 14 38000  32K IN PAGE 15 */
13541497   /* rom page 15 3C000  BASIC */
1355   /* ddfs 2.23 this is acorns 1770 disc controller Double density disc filing system */
1498   ROM_LOAD("adfs130.rom", 0x14000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
13561499   ROM_LOAD("ddfs223.rom", 0x1c000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
13571500
13581501   ROM_REGION(0x4000, "os", 0)
13591502   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))
13601506ROM_END
13611507
13621508
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
13631654ROM_START(bbcm)
13641655   ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
13651656
r249189r249190
14801771   ROM_REGION(0x44000,"option",0) /* ROM */
14811772   ROM_DEFAULT_BIOS("mos400")
14821773   ROM_SYSTEM_BIOS( 0, "mos400", "Econet MOS 4.00" )
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)
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)
14871778   /* 00000 rom 0   Rear Cartridge bottom 16K */
14881779   /* 04000 rom 1   Rear Cartridge top 16K */
14891780   /* 08000 rom 2   Front Cartridge bottom 16K */
r249189r249190
16591950ROM_END
16601951
16611952
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)
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)
trunk/src/mess/drivers/n64.c
r249189r249190
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, 239)
417   MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
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
r249189r249190
1717#include "machine/wd_fdc.h"
1818#include "machine/mc146818.h"
1919#include "machine/pcd_kbd.h"
20#include "machine/terminal.h"
20#include "video/pcd.h"
2121#include "sound/speaker.h"
22#include "video/scn2674.h"
2322#include "formats/pc_dsk.h"
2423#include "bus/scsi/omti5100.h"
2524#include "bus/rs232/rs232.h"
r249189r249190
3938   m_speaker(*this, "speaker"),
4039   m_fdc(*this, "fdc"),
4140   m_rtc(*this, "rtc"),
42   m_crtc(*this, "crtc"),
43   m_palette(*this, "palette"),
44   m_gfxdecode(*this, "gfxdecode"),
4541   m_scsi(*this, "scsi"),
4642   m_scsi_data_out(*this, "scsi_data_out"),
4743   m_scsi_data_in(*this, "scsi_data_in"),
48   m_terminal(*this, "terminal"),
49   m_ram(*this, "ram"),
50   m_vram(*this, "vram"),
51   m_charram(8*1024)
44   m_ram(*this, "ram")
5245   { }
5346
5447   DECLARE_READ8_MEMBER( irq_callback );
r249189r249190
6356   DECLARE_WRITE8_MEMBER( stat_w );
6457   DECLARE_READ8_MEMBER( led_r );
6558   DECLARE_WRITE8_MEMBER( led_w );
66   DECLARE_READ8_MEMBER( detect_r );
67   DECLARE_WRITE8_MEMBER( detect_w );
6859   DECLARE_READ16_MEMBER( dskctl_r );
6960   DECLARE_WRITE16_MEMBER( dskctl_w );
70   DECLARE_READ8_MEMBER( mcu_r );
71   DECLARE_WRITE8_MEMBER( mcu_w );
61
7262   DECLARE_READ8_MEMBER( scsi_r );
7363   DECLARE_WRITE8_MEMBER( scsi_w );
74   DECLARE_WRITE8_MEMBER( vram_sw_w );
75   DECLARE_WRITE16_MEMBER( vram_w );
7664   DECLARE_READ16_MEMBER( mmu_r );
7765   DECLARE_WRITE16_MEMBER( mmu_w );
7866   DECLARE_READ16_MEMBER( mem_r );
7967   DECLARE_WRITE16_MEMBER( mem_w );
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);
68
8469   DECLARE_FLOPPY_FORMATS( floppy_formats );
8570   DECLARE_WRITE_LINE_MEMBER(write_scsi_bsy);
8671   DECLARE_WRITE_LINE_MEMBER(write_scsi_cd);
r249189r249190
10186   required_device<speaker_sound_device> m_speaker;
10287   required_device<wd2793_t> m_fdc;
10388   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;
10789   required_device<SCSI_PORT_DEVICE> m_scsi;
10890   required_device<output_latch_device> m_scsi_data_out;
10991   required_device<input_buffer_device> m_scsi_data_in;
110   optional_device<generic_terminal_device> m_terminal;
11192   required_device<ram_device> m_ram;
112   required_shared_ptr<UINT16> m_vram;
113   dynamic_buffer m_charram;
114   UINT8 m_stat, m_led, m_vram_sw, m_term_key;
93   UINT8 m_stat, m_led;
11594   int m_msg, m_bsy, m_io, m_cd, m_req, m_rst;
11695   emu_timer *m_req_hack;
11796   UINT16 m_dskctl;
r249189r249190
128107//  MACHINE EMULATION
129108//**************************************************************************
130109
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
144110void pcd_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
145111{
146112   // TODO: remove this hack
r249189r249190
150116
151117void pcd_state::machine_start()
152118{
153   m_gfxdecode->set_gfx(0, global_alloc(gfx_element(machine().device<palette_device>("palette"), pcd_charlayout, &m_charram[0], 0, 1, 0)));
154119   m_req_hack = timer_alloc();
155120   save_item(NAME(m_mmu.ctl));
156121   save_item(NAME(m_mmu.regs));
r249189r249190
161126   m_stat = 0;
162127   m_led = 0;
163128   m_dskctl = 0;
164   m_vram_sw = 1;
165129   m_rst = 0;
166130   m_mmu.ctl = 0;
167131   m_mmu.sc = false;
168   m_mmu.type = ioport("mmu")->read();
169   m_term_key = 0;
132   if(ioport("mmu"))
133      m_mmu.type = ioport("mmu")->read();
134   else
135      m_mmu.type = 0;
170136}
171137
172138READ8_MEMBER( pcd_state::irq_callback )
r249189r249190
185151   m_speaker->level_w(state);
186152}
187153
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
204154READ8_MEMBER( pcd_state::nmi_io_r )
205155{
206156   if(space.debugger_access())
r249189r249190
242192   m_stat &= ~data;
243193}
244194
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
263195READ16_MEMBER( pcd_state::dskctl_r )
264196{
265197   return m_dskctl;
r249189r249190
337269   }
338270}
339271
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
359272READ8_MEMBER(pcd_state::scsi_r)
360273{
361274   UINT8 ret = 0;
r249189r249190
495408   return ram[offset];
496409}
497410
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
541411//**************************************************************************
542412//  ADDRESS MAPS
543413//**************************************************************************
544414
545415static ADDRESS_MAP_START( pcd_map, AS_PROGRAM, 16, pcd_state )
546416   AM_RANGE(0x00000, 0x7ffff) AM_READWRITE(mem_r, mem_w)
547   AM_RANGE(0xf0000, 0xf7fff) AM_READONLY AM_WRITE(vram_w) AM_SHARE("vram")
548417   AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("bios", 0)
549418   AM_RANGE(0x00000, 0xfffff) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xffff)
550419ADDRESS_MAP_END
551420
552421static ADDRESS_MAP_START( pcd_io, AS_IO, 16, pcd_state )
553422   ADDRESS_MAP_UNMAP_HIGH
554   AM_RANGE(0x8000, 0x8fff) AM_READWRITE(mmu_r, mmu_w)
555423   AM_RANGE(0x0000, 0xefff) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xffff)
556424   AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram")
557425   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE8("pic1", pic8259_device, read, write, 0xffff)
r249189r249190
562430   AM_RANGE(0xf900, 0xf903) AM_DEVREADWRITE8("fdc", wd2793_t, read, write, 0xffff)
563431   AM_RANGE(0xf904, 0xf905) AM_READWRITE(dskctl_r, dskctl_w)
564432   AM_RANGE(0xf940, 0xf943) AM_READWRITE8(scsi_r, scsi_w, 0xffff)
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
433   AM_RANGE(0xf980, 0xf98f) AM_DEVICE("video", pcdx_video_device, map)
569434   AM_RANGE(0xf9c0, 0xf9c3) AM_DEVREADWRITE8("usart1",mc2661_device,read,write,0xffff)  // UARTs
570435   AM_RANGE(0xf9d0, 0xf9d3) AM_DEVREADWRITE8("usart2",mc2661_device,read,write,0xffff)
571436   AM_RANGE(0xf9e0, 0xf9e3) AM_DEVREADWRITE8("usart3",mc2661_device,read,write,0xffff)
572437//  AM_RANGE(0xfa00, 0xfa7f) // pcs4-n (peripheral chip select)
573   AM_RANGE(0xfb00, 0xfb01) AM_READWRITE8(detect_r, detect_w, 0xff00) // expansion card detection?
574438   AM_RANGE(0xfb00, 0xffff) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xffff)
575439ADDRESS_MAP_END
576440
577441static ADDRESS_MAP_START( pcx_io, AS_IO, 16, pcd_state )
578442   ADDRESS_MAP_UNMAP_HIGH
579   AM_RANGE(0xf980, 0xf98f) AM_READWRITE8(exp_r, exp_w, 0xffff)
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)
580445   AM_IMPORT_FROM(pcd_io)
581446ADDRESS_MAP_END
582447
r249189r249190
593458   FLOPPY_PC_FORMAT
594459FLOPPY_FORMATS_END
595460
596static INPUT_PORTS_START(pcd)
461static INPUT_PORTS_START(pcx)
597462   PORT_START("mmu")
598463   PORT_CONFNAME(0x03, 0x00, "MMU Type")
599464   PORT_CONFSETTING(0x00, "None")
r249189r249190
608473   MCFG_80186_TMROUT1_HANDLER(WRITELINE(pcd_state, i186_timer1_w))
609474   MCFG_80186_IRQ_SLAVE_ACK(READ8(pcd_state, irq_callback))
610475
611   MCFG_CPU_ADD("graphics", I8741, XTAL_16MHz/2)
612   MCFG_DEVICE_DISABLE()
613
614476   MCFG_TIMER_DRIVER_ADD_PERIODIC("timer0_tick", pcd_state, timer0_tick, attotime::from_hz(XTAL_16MHz / 24)) // adjusted to pass post
615477
616478   MCFG_PIC8259_ADD("pic1", DEVWRITELINE("maincpu", i80186_cpu_device, int0_w), VCC, NULL)
617479   MCFG_PIC8259_ADD("pic2", DEVWRITELINE("maincpu", i80186_cpu_device, int1_w), VCC, NULL)
618480
481   MCFG_DEVICE_ADD("video", PCD_VIDEO, 0)
482
619483   MCFG_RAM_ADD(RAM_TAG)
620484   MCFG_RAM_DEFAULT_SIZE("1M")
621485
r249189r249190
656520   MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
657521   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
658522
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
675523   // rtc
676524   MCFG_MC146818_ADD("rtc", XTAL_32_768kHz)
677525   MCFG_MC146818_IRQ_HANDLER(DEVWRITELINE("pic1", pic8259_device, ir7_w))
r249189r249190
696544   MCFG_CPU_MODIFY("maincpu")
697545   MCFG_CPU_IO_MAP(pcx_io)
698546
699   // FIXME: temporary workaround
700   MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0)
701   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(pcd_state, term_key_w))
547   MCFG_DEVICE_REPLACE("video", PCX_VIDEO, 0)
548   MCFG_PCX_VIDEO_TXD_HANDLER(DEVWRITELINE("keyboard", pcd_keyboard_device, t0_w))
702549
703   MCFG_DEVICE_REMOVE("graphics")
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)
704555MACHINE_CONFIG_END
705556
706557//**************************************************************************
r249189r249190
715566   ROM_SYSTEM_BIOS(1, "v3", "V3 GS4") // from mainboard SYBAC S26361-D359 V3 GS4
716567   ROMX_LOAD("361d0359.d42", 0x0001, 0x2000, CRC(5b4461e4) SHA1(db6756aeabb2e6d3921dc7571a5bed3497b964bf), ROM_SKIP(1) | ROM_BIOS(2))
717568   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))
722569ROM_END
723570
724571ROM_START( pcx )
r249189r249190
735582//  GAME DRIVERS
736583//**************************************************************************
737584
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 )
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 )
trunk/src/mess/drivers/segapico.c
r249189r249190
119119
120120#include "emu.h"
121121#include "includes/md_cons.h"
122#include "sound/upd7759.h"
122#include "sound/315-5641.h"
123123
124124
125125#define PICO_PENX   1
r249189r249190
130130public:
131131   pico_base_state(const machine_config &mconfig, device_type type, const char *tag)
132132      : md_cons_state(mconfig, type, tag),
133      m_upd7759(*this, "7759"),
133      m_sega_315_5641_pcm(*this, "315_5641"),
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<upd7759_device> m_upd7759;
140   optional_device<sega_315_5641_pcm_device> m_sega_315_5641_pcm;
141141
142142   required_ioport m_io_page;
143143   required_ioport m_io_pad;
r249189r249190
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 = 0x3f;
254         retdata = m_sega_315_5641_pcm->get_fifo_space();
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;
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;
262266
263267
264268      case 7:
r249189r249190
279283WRITE_LINE_MEMBER(pico_base_state::sound_cause_irq)
280284{
281285//  printf("sound irq\n");
282   /* upd7759 callback */
286   /* sega_315_5641_pcm callback */
283287   m_maincpu->set_input_line(3, HOLD_LINE);
284288}
285289
r249189r249190
289293
290294   switch (offset)
291295   {
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);
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);
297331
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);
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);*/
300334
301335         break;
302336   }
r249189r249190
356390   MCFG_CPU_PROGRAM_MAP(pico_mem)
357391
358392   MCFG_DEVICE_REMOVE("genesis_snd_z80")
393   MCFG_DEVICE_REMOVE("ymsnd")
359394
360395   MCFG_MACHINE_START_OVERRIDE( pico_state, pico )
361396   MCFG_MACHINE_RESET_OVERRIDE( pico_base_state, ms_megadriv )
r249189r249190
363398   MCFG_PICO_CARTRIDGE_ADD("picoslot", pico_cart, NULL)
364399   MCFG_SOFTWARE_LIST_ADD("cart_list","pico")
365400
366   MCFG_SOUND_ADD("7759", UPD7759, UPD7759_STANDARD_CLOCK)
401   MCFG_SOUND_ADD("315_5641", SEGA_315_5641_PCM, UPD7759_STANDARD_CLOCK*2)
367402   MCFG_UPD7759_DRQ_CALLBACK(WRITELINE(pico_state,sound_cause_irq))
368   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.48)
369   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.48)
403   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.16)
404   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.16)
370405MACHINE_CONFIG_END
371406
372407static MACHINE_CONFIG_START( picopal, pico_state )
r249189r249190
376411   MCFG_CPU_PROGRAM_MAP(pico_mem)
377412
378413   MCFG_DEVICE_REMOVE("genesis_snd_z80")
414   MCFG_DEVICE_REMOVE("ymsnd")
379415
380416   MCFG_MACHINE_START_OVERRIDE( pico_state, pico )
381417   MCFG_MACHINE_RESET_OVERRIDE( pico_base_state, ms_megadriv )
r249189r249190
383419   MCFG_PICO_CARTRIDGE_ADD("picoslot", pico_cart, NULL)
384420   MCFG_SOFTWARE_LIST_ADD("cart_list","pico")
385421
386   MCFG_SOUND_ADD("7759", UPD7759, UPD7759_STANDARD_CLOCK)
422   MCFG_SOUND_ADD("315_5641", SEGA_315_5641_PCM, UPD7759_STANDARD_CLOCK*2)
387423   MCFG_UPD7759_DRQ_CALLBACK(WRITELINE(pico_state,sound_cause_irq))
388   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.48)
389   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.48)
424   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.16)
425   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.16)
390426MACHINE_CONFIG_END
391427
392428
r249189r249190
552588   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));
553589   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));
554590
555   m_upd7759->reset_w(0);
556   m_upd7759->start_w(0);
557   m_upd7759->reset_w(1);
558   m_upd7759->start_w(1);
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);
559595
560596}
561597
r249189r249190
566602   MCFG_CPU_PROGRAM_MAP(copera_mem)
567603
568604   MCFG_DEVICE_REMOVE("genesis_snd_z80")
605   MCFG_DEVICE_REMOVE("ymsnd")
569606
570607   MCFG_MACHINE_START_OVERRIDE( copera_state, copera )
571608   MCFG_MACHINE_RESET_OVERRIDE( pico_base_state, ms_megadriv )
r249189r249190
573610   MCFG_COPERA_CARTRIDGE_ADD("coperaslot", copera_cart, NULL)
574611   MCFG_SOFTWARE_LIST_ADD("cart_list","copera")
575612
576   MCFG_SOUND_ADD("7759", UPD7759, UPD7759_STANDARD_CLOCK)
613   MCFG_SOUND_ADD("315_5641", SEGA_315_5641_PCM, UPD7759_STANDARD_CLOCK)
577614   MCFG_UPD7759_DRQ_CALLBACK(WRITELINE(copera_state,sound_cause_irq))
578   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.48)
579   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.48)
615   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.16)
616   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.16)
580617MACHINE_CONFIG_END
581618
582619
trunk/src/mess/drivers/xbox.c
r249189r249190
122122
123123void xbox_state::hack_eeprom()
124124{
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);*/
125   // 8004e5da,4e5da=0xc3
126   m_maincpu->space(0).write_byte(0x4e5da, 0xc3);
130127}
131128
132129/*static const struct {
r249189r249190
196193***************************************************************************/
197194
198195ROM_START( xbox )
199   ROM_REGION( 0x200, "mcpx", 0 )
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
200198   ROM_LOAD( "mcpx_1_0.bin", 0, 0x200, CRC(f31429fc) SHA1(a9ecbf8896d10db81594923e485862aa3aac7b58) )
201   ROM_LOAD( "mcpx_1_1.bin", 0, 0x200, CRC(94ce376b) SHA1(6c875f17f773aaec51eb434068bb6c657c4343c0) )
199   ROM_LOAD( "mcpx_1_1.bin", 0x200, 0x200, CRC(94ce376b) SHA1(6c875f17f773aaec51eb434068bb6c657c4343c0) )
202200
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 )
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)
207204
208205
209206   ROM_REGION( 0x1000000, "tbp", 0 ) // To Be Processed, of course
210207   ROM_LOAD( "3944_1024k.bin", 0x000000, 0x100000, CRC(32a9ecb6) SHA1(67054fc88bda94e33e86f1b19be60efec0724fb6) )
211208   ROM_LOAD( "4034_1024k.bin", 0x000000, 0x100000, CRC(0d6fc88f) SHA1(ab676b712204fb1728bf89f9cd541a8f5a64ab97) )
212   ROM_LOAD( "4134_1024k.bin", 0x000000, 0x100000, CRC(49d8055a) SHA1(d46cef771a63dc8024fe36d7ab5b959087ac999f) )
213209   ROM_LOAD( "4817_1024k.bin", 0x000000, 0x100000, CRC(3f30863a) SHA1(dc955bd4d3ca71e01214a49e5d0aba615270c03c) )
214210   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) )
215213   ROM_LOAD( "5838_256k.bin", 0x000000, 0x040000, CRC(5be2413d) SHA1(b9489e883c650b5e5fe2f83a32237dbf74f0e9f1) )
216214ROM_END
217215// See src/emu/gamedrv.h for details
trunk/src/mess/includes/amstrad.h
r249189r249190
2929#include "bus/cpc/smartwatch.h"
3030#include "bus/cpc/brunword4.h"
3131#include "bus/cpc/hd20.h"
32#include "bus/cpc/magicsound.h"
3233#include "machine/ram.h"
3334#include "imagedev/cassette.h"
3435#include "bus/centronics/ctronics.h"
trunk/src/mess/includes/bbc.h
r249189r249190
2222#include "machine/i8271.h"
2323#include "machine/wd_fdc.h"
2424#include "machine/upd7002.h"
25#include "machine/mc146818.h"
2526#include "video/mc6845.h"
2627#include "video/saa5050.h"
2728#include "sound/sn76496.h"
r249189r249190
5253      m_via6522_0(*this, "via6522_0"),
5354      m_via6522_1(*this, "via6522_1"),
5455      m_upd7002(*this, "upd7002"),
56      m_rtc(*this, "rtc"),
5557      m_i8271(*this, "i8271"),
58      m_wd1770(*this, "wd1770"),
59      m_wd1772(*this, "wd1772"),
5660      m_exp1(*this, "exp_rom1"),
5761      m_exp2(*this, "exp_rom2"),
5862      m_exp3(*this, "exp_rom3"),
r249189r249190
6468      m_region_maincpu(*this, "maincpu"),
6569      m_region_os(*this, "os"),
6670      m_region_opt(*this, "option"),
67      m_region_dfs(*this, "dfs"),
6871      m_bank1(*this, "bank1"),
6972      m_bank2(*this, "bank2"),
7073      m_bank3(*this, "bank3"),
r249189r249190
8083      m_palette(*this, "palette")
8184   { }
8285
83   DECLARE_FLOPPY_FORMATS(floppy_formats);
86   DECLARE_FLOPPY_FORMATS(floppy_formats_525sd);
87   DECLARE_FLOPPY_FORMATS(floppy_formats_525dd);
88   DECLARE_FLOPPY_FORMATS(floppy_formats_35dd);
8489
8590   DECLARE_WRITE8_MEMBER(bbc_page_selecta_w);
8691   DECLARE_WRITE8_MEMBER(bbc_memorya1_w);
r249189r249190
104109   DECLARE_READ8_MEMBER(bbcm_r);
105110   DECLARE_WRITE8_MEMBER(bbcm_w);
106111   DECLARE_WRITE8_MEMBER(bbc_SerialULA_w);
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);
112
113   DECLARE_WRITE8_MEMBER(bbc_wd1770_status_w);
114   DECLARE_READ8_MEMBER(bbcm_wd177xl_read);
118115   DECLARE_WRITE8_MEMBER(bbcm_wd1770l_write);
119   DECLARE_READ8_MEMBER(bbc_disc_r);
120   DECLARE_WRITE8_MEMBER(bbc_disc_w);
116   DECLARE_WRITE8_MEMBER(bbcm_wd1772l_write);
121117   DECLARE_WRITE8_MEMBER(bbc_videoULA_w);
122   DECLARE_WRITE8_MEMBER(bbc_6845_w);
123   DECLARE_READ8_MEMBER(bbc_6845_r);
124118   DECLARE_READ8_MEMBER(bbc_fe_r);
125119   DECLARE_DIRECT_UPDATE_MEMBER(bbcbp_direct_handler);
126120   DECLARE_DIRECT_UPDATE_MEMBER(bbcm_direct_handler);
121
127122   DECLARE_DRIVER_INIT(bbc);
128   DECLARE_DRIVER_INIT(bbcm);
123
129124   DECLARE_MACHINE_START(bbca);
130125   DECLARE_MACHINE_RESET(bbca);
131126   DECLARE_VIDEO_START(bbca);
127
132128   DECLARE_MACHINE_START(bbcb);
133129   DECLARE_MACHINE_RESET(bbcb);
134130   DECLARE_VIDEO_START(bbcb);
131
135132   DECLARE_MACHINE_START(bbcbp);
136133   DECLARE_MACHINE_RESET(bbcbp);
137134   DECLARE_VIDEO_START(bbcbp);
135
138136   DECLARE_MACHINE_START(bbcm);
139137   DECLARE_MACHINE_RESET(bbcm);
140138   DECLARE_VIDEO_START(bbcm);
139
141140   DECLARE_PALETTE_INIT(bbc);
142141   UINT32 screen_update_bbc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
143142   INTERRUPT_GEN_MEMBER(bbcb_vsync);
r249189r249190
197196   optional_device<saa5050_device> m_trom;
198197   optional_device<tms5220_device> m_tms;
199198   optional_device<cassette_image_device> m_cassette;
200   required_device<acia6850_device> m_acia;
201   required_device<clock_device> m_acia_clock;
199   optional_device<acia6850_device> m_acia;
200   optional_device<clock_device> m_acia_clock;
202201   optional_device<rs232_port_device> m_rs232;
203202   required_device<via6522_device> m_via6522_0;
204203   optional_device<via6522_device> m_via6522_1;
205204   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;
207209   required_device<generic_slot_device> m_exp1;
208210   required_device<generic_slot_device> m_exp2;
209211   optional_device<generic_slot_device> m_exp3;
r249189r249190
213215   required_memory_region m_region_maincpu;
214216   required_memory_region m_region_os;
215217   required_memory_region m_region_opt;
216   optional_memory_region m_region_dfs;
217218   required_memory_bank m_bank1; // bbca bbcb bbcbp bbcbp128 bbcm
218219   optional_memory_bank m_bank2; //           bbcbp bbcbp128 bbcm
219220   optional_memory_bank m_bank3; // bbca bbcb
r249189r249190
225226
226227   void check_interrupts();
227228
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
233231
234232   int m_ACCCON_IRR;       // IRQ inputs
235233
r249189r249190
347345                        i8271 disc control
348346                     ***************************************/
349347
350   int m_previous_i8271_int_state; // 8271 interupt status
348   int m_previous_i8271_int_state; // 8271 interrupt status
351349
352350                     /**************************************
353351                        WD1770 disc control
r249189r249190
357355   int m_wd177x_irq_state;
358356   int m_wd177x_drq_state;
359357   int m_previous_wd177x_int_state;
360   int m_1770_IntEnabled;
358   int m_177x_IntEnabled;
361359
362360                     /**************************************
363                        Opus Challenger Disc control
364                     ***************************************/
365
366   int m_opusbank;
367
368                     /**************************************
369361                        Video Code
370362                     ***************************************/
371363
trunk/src/mess/machine/amstrad.c
r249189r249190
16941694WRITE8_MEMBER(amstrad_state::aleste_msx_mapper)
16951695{
16961696   int page = (offset & 0x0300) >> 8;
1697   int ramptr = (data & 0x1f) * 0x4000;
1698   int rampage = data & 0x1f;
1697   int ramptr = (data & 0x3f) * 0x4000;
1698   int rampage = data & 0x3f;
16991699   int function = (data & 0xc0) >> 6;
17001700   UINT8 *ram = m_ram->pointer();
17011701
trunk/src/mess/machine/bbc.c
r249189r249190
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 */
5554WRITE8_MEMBER(bbc_state::bbc_page_selectb_w)
5655{
5756   m_rombank = data & 0x0f;
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   }
57   m_bank4->set_entry(m_rombank);
6658}
6759
6860
r249189r249190
8072
8173/* I have setup 3 types of sideways ram:
82740: none
831: 128K (bank 8 to 15) Solidisc sidewaysram userport bank latch
751: 128K (bank 8 to 15) Solidisc sideways ram userport bank latch
84762: 64K (banks 4 to 7) for Acorn sideways ram FE30 bank latch
85773: 128K (banks 8 to 15) for Acown sideways ram FE30 bank latch
8678*/
r249189r249190
9082
9183WRITE8_MEMBER(bbc_state::bbc_memoryb4_w)
9284{
93   if (m_rombank == 1)
85   switch (m_SWRAMtype)
9486   {
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;
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;
9790   }
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   }
10791}
10892
10993/****************************************/
r249189r249190
377361      m_bank2->set_base(m_region_maincpu->base() + 0x3000);
378362   }
379363
380   /* ACCCON_TST controls paging of rom reads in the 0xFC00-0xFEFF reigon */
364   /* ACCCON_TST controls paging of rom reads in the 0xFC00-0xFEFF region */
381365   /* if 0 the I/O is paged for both reads and writes */
382366   /* if 1 the ROM is paged in for reads but writes still go to I/O */
383367   if (m_ACCCON_TST)
r249189r249190
538522&FE18-&FE1F uPD7002         A to D converter        A to D converter         8 ( 4 bytes x  2 )
539523&FE20-&FE23 Video ULA       -                       Video system chip        4 ( 2 bytes x  2 )
540524&FE24-&FE27 FDC Latch       1770 Control latch      1770 Control latch       4 ( 1 byte  x  4 )
541&FE28-&FE2F 1770 registers  1770 Disc Controller    1170 Disc Controller     8 ( 4 bytes x  2 )
525&FE28-&FE2F 1770 registers  1770 Disc Controller    1770 Disc Controller     8 ( 4 bytes x  2 )
542526&FE30-&FE33 ROMSEL          -                       ROM Select               4 ( 1 byte  x  4 )
543527&FE34-&3FE7 ACCCON          ACCCON select reg.      ACCCON select reg        4 ( 1 byte  x  4 )
544528&FE38-&FE3F NC              -                       -
r249189r249190
554538{
555539   long myo;
556540
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
563541   if (offset<=0x0ff) /* FRED */
564542   {
565543      return 0xff;
r249189r249190
573551   if ((offset>=0x200) && (offset<=0x2ff)) /* SHEILA */
574552   {
575553      myo = offset-0x200;
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;
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;
598574   }
599
600575   return 0xfe;
601576}
602577
r249189r249190
607582   if ((offset>=0x200) && (offset<=0x2ff)) /* SHEILA */
608583   {
609584      myo=offset-0x200;
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);
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);
628601      //if ((myo>=0x80) && (myo<=0x9f))
629      if ((myo>=0xa0) && (myo<=0xbf)) m_adlc->write(space, myo & 0x03, data);
602      if ((myo>=0xa0) && (myo<=0xbf) && (m_adlc))      m_adlc->write(space, myo & 0x03, data);
630603      //if ((myo>=0xc0) && (myo<=0xdf))
631604      //if ((myo>=0xe0) && (myo<=0xff))
632605   }
r249189r249190
665638normally at logic 1 with no button pressed and change to 0
666639when a button is pressed.
667640
668PB6 and PB7 inputs from the speech processor
669--------------------------------------------
641PB6 and PB7 inputs from the speech processor (model B and B+)
642-------------------------------------------------------------
670643PB6 is the speech processor 'ready' output and PB7 is from the
671644speech processor 'interrupt' output.
672645
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
673651CA1 input
674652---------
675653This is the vertical sync input from the 6845. CA1 is set up to
676654interrupt the 6502 every 20ms (50Hz) as a vertical sync from
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.
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.
680658----------------------------------------------------------------
681659This is required for a lot of time function within the machine
682660and must be triggered every 20ms. (Should check at some point
r249189r249190
830808/* This the BBC Masters Real Time Clock and NVRAM IC */
831809void bbc_state::MC146818_set(address_space &space)
832810{
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");
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");
835813
836814   // if chip enabled
837815   if (m_MC146818_CE)
r249189r249190
841819      {
842820         if (m_MC146818_WR)
843821         {
844            m_via_system_porta=rtc->read(space, 1);
822            m_via_system_porta = m_rtc->read(space, 1);
845823            //logerror("read 146818 data %d \n",m_via_system_porta);
846824         }
847825         else
848826         {
849            rtc->write(space, 1, m_via_system_porta);
827            m_rtc->write(space, 1, m_via_system_porta);
850828            //logerror("write 146818 data %d \n",m_via_system_porta);
851829         }
852830      }
r249189r249190
854832      // if address select is set then set the address in the 146818
855833      if (m_MC146818_AS)
856834      {
857         rtc->write(space, 0, m_via_system_porta);
835         m_rtc->write(space, 0, m_via_system_porta);
858836         //logerror("write 146818 address %d \n",m_via_system_porta);
859837      }
860838   }
r249189r249190
869847   if (m_b0_sound == 0)
870848   {
871849      //logerror("Doing an unsafe write to the sound chip %d \n",data);
872      m_sn->write(space, 0, m_via_system_porta);
850      if (m_sn) m_sn->write(space, 0, m_via_system_porta);
873851   }
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   }
874862   if (m_b3_keyboard == 0)
875863   {
876864      //logerror("Doing an unsafe write to the keyboard %d \n",data);
877865      m_via_system_porta = bbc_keyboard(space, m_via_system_porta);
878866   }
879   if (m_Master) MC146818_set(space);
867   if (m_rtc) MC146818_set(space);
880868}
881869
882870
r249189r249190
899887         }
900888         break;
901889      case 1:
902         if (m_Master)
890         if (m_rtc && m_MC146818_WR == 0)
903891         {
904            if (m_MC146818_WR == 0)
905            {
906               /* BBC MASTER has NVRAM Here */
907               m_MC146818_WR = 1;
908               MC146818_set(space);
909            }
892            /* BBC Master has NVRAM Here */
893            m_MC146818_WR = 1;
894            MC146818_set(space);
910895         }
911896         else
912897         {
r249189r249190
914899            {
915900               /* VSP TMS 5220 */
916901               m_b1_speech_read = 1;
902               //logerror("Speech read select TRUE\n");
903               if (m_tms) m_tms->rsq_w(TRUE);
917904            }
918905         }
919906         break;
920907      case 2:
921         if (m_Master)
908         if (m_rtc && m_MC146818_DS == 0)
922909         {
923            if (m_MC146818_DS == 0)
924            {
925               /* BBC MASTER has NVRAM Here */
926               m_MC146818_DS = 1;
927               MC146818_set(space);
928            }
910            /* BBC Master has NVRAM Here */
911            m_MC146818_DS = 1;
912            MC146818_set(space);
929913         }
930914         else
931915         {
r249189r249190
933917            {
934918               /* VSP TMS 5220 */
935919               m_b2_speech_write = 1;
920               //logerror("Speech write select TRUE\n");
921               if (m_tms) m_tms->wsq_w(TRUE);
936922            }
937923         }
938924         break;
r249189r249190
980966         if (m_b0_sound == 1)
981967         {
982968            m_b0_sound = 0;
983            m_sn->write(space, 0, m_via_system_porta);
969            if (m_sn) m_sn->write(space, 0, m_via_system_porta);
984970         }
985971         break;
986972      case 1:
987         if (m_Master)
973         if (m_rtc && m_MC146818_WR == 1)
988974         {
989            if (m_MC146818_WR == 1)
990            {
991               /* BBC MASTER has NV RAM Here */
992               m_MC146818_WR = 0;
993               MC146818_set(space);
994            }
975            /* BBC Master has NVRAM Here */
976            m_MC146818_WR = 0;
977            MC146818_set(space);
995978         }
996979         else
997980         {
r249189r249190
999982            {
1000983               /* VSP TMS 5220 */
1001984               m_b1_speech_read = 0;
985               //logerror("Speech read select FALSE\n");
986               if (m_tms) m_tms->rsq_w(FALSE);
1002987            }
1003988         }
1004989         break;
1005990      case 2:
1006         if (m_Master)
991         if (m_rtc && m_MC146818_DS == 1)
1007992         {
1008            if (m_MC146818_DS == 1)
1009            {
1010               /* BBC MASTER has NV RAM Here */
1011               m_MC146818_DS = 0;
1012               MC146818_set(space);
1013            }
993            /* BBC Master has NVRAM Here */
994            m_MC146818_DS = 0;
995            MC146818_set(space);
1014996         }
1015997         else
1016998         {
r249189r249190
10181000            {
10191001               /* VSP TMS 5220 */
10201002               m_b2_speech_write = 0;
1003               //logerror("Speech write select FALSE\n");
1004               if (m_tms) m_tms->wsq_w(FALSE);
10211005            }
10221006         }
10231007         break;
r249189r249190
10261010         {
10271011            m_b3_keyboard = 0;
10281012            /* *** call keyboard enabled *** */
1029            m_via_system_porta=bbc_keyboard(space, m_via_system_porta);
1013            m_via_system_porta = bbc_keyboard(space, m_via_system_porta);
10301014         }
10311015         break;
10321016      case 4:
r249189r249190
10611045   }
10621046
10631047
1064   if (m_Master)
1048   if (m_rtc)
10651049   {
10661050      //set the Address Select
10671051      if (m_MC146818_AS != ((data>>7)&1))
r249189r249190
10861070   return m_via_system_porta;
10871071}
10881072
1089// D4 of portb is joystick fire button 1
1090// D5 of portb is joystick fire button 2
1091// D6 VSPINT
1092// D7 VSPRDY
10931073
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
11081074READ8_MEMBER(bbc_state::bbcb_via_system_read_portb)
11091075{
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));
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));
11161085}
11171086
11181087
r249189r249190
11291098This means that they can only be operated as output lines.
11301099CA1 is pulled high by a 4K7 resistor. CA1 normally acts as an acknowledge
11311100line when a printer is used. CA2 is buffered so that it has become an open
1132collector output only. It usially acts as the printer strobe line.
1101collector output only. It usually acts as the printer strobe line.
11331102***********************************************************************/
11341103
11351104/* USER VIA 6522 port B is connected to the BBC user port */
r249189r249190
14301399   update_acia_rxd();
14311400   update_acia_dcd();
14321401   update_acia_cts();
1433   BBC_Cassette_motor(m_serproc_data & 0x80);
1402   if (m_cassette) BBC_Cassette_motor(m_serproc_data & 0x80);
14341403
14351404   // Set transmit clock rate
14361405   m_acia_clock->set_clock_scale( (double) 1 / serial_clocks[ data & 0x07 ] );
r249189r249190
14631432      {
14641433         /* I'll pulse it because if I used hold-line I'm not sure
14651434         it would clear - to be checked */
1466         m_maincpu->set_input_line(INPUT_LINE_NMI,PULSE_LINE);
1435         m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
14671436      }
14681437   }
14691438
r249189r249190
14711440}
14721441
14731442
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
15231443/**************************************
15241444   WD1770 disc control function
15251445***************************************/
r249189r249190
15431463density select
15441464single density is as the 8271 disc format
15451465double 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
15491466*/
15501467
15511468
r249189r249190
15661483   int bbc_state;
15671484
15681485   /* if drq or irq is set, and interrupt is enabled */
1569   if ((m_wd177x_irq_state || m_wd177x_drq_state) && (m_1770_IntEnabled))
1486   if ((m_wd177x_irq_state || m_wd177x_drq_state) && (m_177x_IntEnabled))
15701487   {
15711488      /* int trigger */
15721489      bbc_state = 1;
r249189r249190
15761493      /* do not trigger int */
15771494      bbc_state = 0;
15781495   }
1579//printf("bbc_state %d prev %d\n", bbc_state, m_previous_wd177x_int_state);
15801496   /* nmi is edge triggered, and triggers when the state goes from clear->set.
15811497   Here we are checking this transition before triggering the nmi */
1582   if (bbc_state!=m_previous_wd177x_int_state)
1498   if (bbc_state != m_previous_wd177x_int_state)
15831499   {
15841500      if (bbc_state)
15851501      {
r249189r249190
15941510
15951511WRITE_LINE_MEMBER(bbc_state::bbc_wd177x_intrq_w)
15961512{
1597//printf("bbc_wd177x_intrq_w %d \n", state);
15981513   m_wd177x_irq_state = state;
15991514   bbc_update_fdq_int(state);
16001515}
r249189r249190
16051520   bbc_update_fdq_int(state);
16061521}
16071522
1608WRITE8_MEMBER(bbc_state::bbc_wd177x_status_w)
1523WRITE8_MEMBER(bbc_state::bbc_wd1770_status_w)
16091524{
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();
16131525   floppy_image_device *floppy = NULL;
16141526
16151527   m_drive_control = data;
1528   logerror("Drive control %d \n", data);
16161529
1530   // bit 5: reset
1531   if (!BIT(data, 5)) m_wd1770->reset();
1532
16171533   // bit 0, 1: drive select
1618   if (BIT(data, 0)) floppy = floppy0;
1619   if (BIT(data, 1)) floppy = floppy1;
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);
16201537
1621   fdc->set_floppy(floppy);
1622
16231538   // bit 2: side select
16241539   if (floppy)
16251540      floppy->ss_w(BIT(data, 2));
16261541
16271542   // bit 3: density
1628   fdc->dden_w(BIT(data, 3));
1543   m_wd1770->dden_w(BIT(data, 3));
16291544
16301545   // bit 4: interrupt enable
1631   m_1770_IntEnabled = !BIT(data, 4);
1546   m_177x_IntEnabled = !BIT(data, 4);
16321547}
16331548
1549/***************************************
1550BBC MASTER DISC SUPPORT
1551***************************************/
16341552
1635
1636READ8_MEMBER(bbc_state::bbc_wd1770_read)
1553READ8_MEMBER(bbc_state::bbcm_wd177xl_read)
16371554{
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;
1555   return m_drive_control;
16601556}
16611557
1662WRITE8_MEMBER(bbc_state::bbc_wd1770_write)
1558WRITE8_MEMBER(bbc_state::bbcm_wd1770l_write)
16631559{
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();
17301560   floppy_image_device *floppy = NULL;
17311561
17321562   m_drive_control = data;
1563   //logerror("Drive control %d \n", data);
17331564
1734   // bit 1, 2: drive select
1735   if (BIT(data, 1)) floppy = floppy0;
1736   if (BIT(data, 2)) floppy = floppy1;
1565   // bit 2: reset
1566   if (!BIT(data, 2)) m_wd1770->reset();
17371567
1738   fdc->set_floppy(floppy);
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);
17391573
1740   // bit 0: side select
1574   // bit 4: side select
17411575   if (floppy)
1742      floppy->ss_w(BIT(data, 0));
1576      floppy->ss_w(BIT(data, 4));
17431577
17441578   // bit 5: density
1745   fdc->dden_w(BIT(data, 5));
1579   m_wd1770->dden_w(BIT(data, 5));
17461580
1747   // bit 4: interrupt enable
1748   m_1770_IntEnabled = BIT(data, 4);
1581   m_177x_IntEnabled = 1;
17491582}
17501583
1751READ8_MEMBER(bbc_state::bbc_opus_read)
1584WRITE8_MEMBER(bbc_state::bbcm_wd1772l_write)
17521585{
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();
18861586   floppy_image_device *floppy = NULL;
18871587
18881588   m_drive_control = data;
1589   //logerror("Drive control %d \n", data);
18891590
1890   // bit 0, 1: drive select
1891   if (BIT(data, 0)) floppy = floppy0;
1892   if (BIT(data, 1)) floppy = floppy1;
1591   // bit 2: reset
1592   if (!BIT(data, 2)) m_wd1772->reset();
18931593
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
18941600   // bit 4: side select
18951601   if (floppy)
18961602      floppy->ss_w(BIT(data, 4));
18971603
18981604   // bit 5: density
1899   fdc->dden_w(BIT(data, 5));
1605   m_wd1772->dden_w(BIT(data, 5));
19001606
1901//  m_1770_IntEnabled=(((data>>4) & 0x01)==0);
1902   m_1770_IntEnabled=1;
1607   m_177x_IntEnabled = 1;
19031608}
19041609
1905
19061610/**************************************
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/**************************************
19611611   BBC B Rom loading functions
19621612***************************************/
19631613
r249189r249190
20231673
20241674DRIVER_INIT_MEMBER(bbc_state,bbc)
20251675{
2026   m_Master=0;
20271676   m_rxd_cass = 0;
20281677   m_nr_high_tones = 0;
20291678   m_serproc_data = 0;
r249189r249190
20371686   m_via6522_0->write_cb2(1);
20381687}
20391688
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
20561689// setup pointers for optional EPROMs
20571690void bbc_state::bbc_setup_banks(memory_bank *membank, int banks, UINT32 shift, UINT32 size)
20581691{
r249189r249190
20761709   else
20771710      eprom[3] = m_region_opt->base() + 0xc000 + shift;
20781711
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);
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);
20831716
20841717   if (banks > 4)
20851718   {
r249189r249190
21021735   else
21031736      eprom[1] = m_region_opt->base() + 0x8000 + shift;
21041737
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);
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);
21091742
21101743   if (banks > 4)
21111744   {
r249189r249190
21491782   m_previous_i8271_int_state=0;
21501783   m_previous_wd177x_int_state=1;
21511784   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
21541785}
21551786
21561787MACHINE_RESET_MEMBER(bbc_state, bbcb)
21571788{
21581789   UINT8 *RAM = m_region_maincpu->base();
2159   m_DFSType=    (ioport("BBCCONFIG")->read() >> 0) & 0x07;
1790   m_Speech    = (ioport("BBCCONFIG")->read() >> 0) & 0x01;
21601791   m_SWRAMtype = (ioport("BBCCONFIG")->read() >> 3) & 0x03;
21611792   m_bank1->set_base(RAM);
21621793   m_bank3->set_base(RAM + 0x4000);
r249189r249190
21661797   m_bank7->set_base(m_region_os->base());  /* bank 7 points at the OS rom  from c000 to ffff */
21671798
21681799   bbcb_IC32_initialise(this);
2169
2170   m_opusbank = 0;
21711800}
21721801
21731802
r249189r249190
21841813
21851814MACHINE_RESET_MEMBER(bbc_state, bbcbp)
21861815{
1816   m_Speech = 1;
21871817   m_bank1->set_base(m_region_maincpu->base());
21881818   m_bank2->set_base(m_region_maincpu->base() + 0x03000);  /* bank 2 screen/shadow ram     from 3000 to 7fff */
21891819   m_bank4->set_entry(0);
21901820   m_bank6->set_entry(0);
2191   m_bank7->set_base(m_region_os->base());    /* bank 7 points at the OS rom  from c000 to ffff */
1821   m_bank7->set_base(m_region_os->base());                 /* bank 7 points at the OS rom  from c000 to ffff */
21921822
21931823   bbcb_IC32_initialise(this);
21941824
r249189r249190
22171847   m_bank2->set_base(m_region_maincpu->base() + 0x3000);  /* bank 2 screen/shadow ram     from 3000 to 7fff */
22181848   m_bank4->set_entry(0);
22191849   m_bank5->set_entry(0);
2220   m_bank7->set_base(m_region_os->base());   /* bank 6 OS rom of RAM         from c000 to dfff */
1850   m_bank7->set_base(m_region_os->base());                /* bank 6 OS rom of RAM         from c000 to dfff */
22211851
22221852   bbcb_IC32_initialise(this);
22231853
trunk/src/mess/machine/pcd_kbd.c
r249189r249190
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
1012ROM_END
1113
1214
trunk/src/mess/video/bbc.c
r249189r249190
9999   this is used by the palette lookup in the video ULA */
100100void bbc_state::set_pixel_lookup()
101101{
102   int i;
103   for (i=0; i<256; i++)
102   for (int i=0; i<256; i++)
104103   {
105104      m_pixel_bits[i] = (((i>>7)&1)<<3) | (((i>>5)&1)<<2) | (((i>>3)&1)<<1) | (((i>>1)&1)<<0);
106105   }
r249189r249190
254253   m_trom->dew_w(state);
255254}
256255
257/************************************************************************
258 * memory interface to BBC's 6845
259 ************************************************************************/
260256
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
289257/**** BBC B+ Shadow Ram change ****/
290258
291259void bbc_state::bbcbp_setvideoshadow(int vdusel)
r249189r249190
319287
320288VIDEO_START_MEMBER(bbc_state,bbca)
321289{
322   common_init(16);
290   common_init(m_ram->size()/1024);
323291}
324292
325293VIDEO_START_MEMBER(bbc_state,bbcb)
trunk/src/mess/video/pcd.c
r0r249190
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
r0r249190
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
r249189r249190
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
128130   if(OSAtomicCompareAndSwapInt((ctx->head+1) & 0x1F, ctx->tail, &ctx->tail)) {
129131      printf("buffer full, dropping packet\n");
130132      return;
r249189r249190
137139static void *netdev_pcap_blocker(void *arg) {
138140   struct netdev_pcap_context *ctx = (struct netdev_pcap_context*)arg;
139141
140   while(1) {
142   while(ctx && ctx->p) {
141143      pcap_dispatch_dl(ctx->p, 1, netdev_pcap_handler, (u_char*)ctx);
142144   }
143145
r249189r249190
232234
233235netdev_pcap::~netdev_pcap()
234236{
237#ifdef SDLMAME_MACOSX
238   m_ctx.p = NULL;
239   pthread_cancel(m_thread);
240   pthread_join(m_thread, NULL);
241#endif
235242   if(m_p) pcap_close_dl(m_p);
236243   m_p = NULL;
237244}


Previous 199869 Revisions Next


© 1997-2024 The MAME Team