diff --git a/.gitignore b/.gitignore
index d55db650fac..f3ee176fc10 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,7 @@
/cfg
/diff
/ini
+/inp
/nvram
/obj
/snap
diff --git a/hash/amiga_workbench.xml b/hash/amiga_workbench.xml
index f6585cef478..a995b455c90 100644
--- a/hash/amiga_workbench.xml
+++ b/hash/amiga_workbench.xml
@@ -212,20 +212,21 @@
-
- Workbench 1.3.3 (Rev. 34.34)
+
+
+
+
+ Workbench 1.3.3 (US)
1990
Commodore
-
-
+
-
+
-
-
+
@@ -496,4 +497,17 @@
+
+
+
+ AmigaOS 3.5
+ 1999
+ Haage & Partner
+
+
+
+
+
+
+
diff --git a/hash/apfimag_cass.xml b/hash/apfimag_cass.xml
new file mode 100644
index 00000000000..22e89445cf7
--- /dev/null
+++ b/hash/apfimag_cass.xml
@@ -0,0 +1,1214 @@
+
+
+
+
+
+
+
+
+
+
+
+ 16K Letter Writter
+ 1982
+ Milt Perry
+
+
+
+
+
+
+
+
+
+ An Adventure in Murder
+ 198?
+ R. Eisman
+
+
+
+
+
+
+
+
+
+ ALPHAbit
+ 19??
+ MR R's
+
+
+
+
+
+
+
+
+
+
+ Alpha Centurion
+ 1983
+ G. Karabin
+
+
+
+
+
+
+
+
+
+ Alpine Skiing
+ 19??
+ York 10 Computerware
+
+
+
+
+
+
+
+
+ APF-MAN
+ 1982
+ Carl A. Echols
+
+
+
+
+
+
+
+
+
+ Artist and Easel
+ 1979
+ APF Electronics
+
+
+
+
+
+
+
+
+
+ Asteroids
+ 19??
+ York 10 Computerware
+
+
+
+
+
+
+
+
+ Astroid Patrol
+ 198?
+ Rief Games
+
+
+
+
+
+
+
+
+
+ Baja
+ 19??
+ York 10 Computerware
+
+
+
+
+
+
+
+
+
+ Basic Tutor
+ 1980
+ APF Electronics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Battle Zone
+ 19??
+ IM-1 Games
+
+
+
+
+
+
+
+
+ Bi-Plane Rescue
+ 19??
+ York 10 Computerware
+
+
+
+
+
+
+
+
+
+ Electronic Billboard
+ 1979
+ APF Electronics
+
+
+
+
+
+
+
+
+ Boxing
+ 198?
+ Millivision
+
+
+
+
+
+
+
+
+
+ Bugger (Bad?)
+ 19??
+ MR R's
+
+
+
+
+
+
+
+
+ Burger Man
+ 198?
+ Rief Games
+
+
+
+
+
+
+
+
+ Centipeed
+ 198?
+ John Mechalas
+
+
+
+
+
+
+
+
+
+ Choplifter
+ 19??
+ York 10 Computerware
+
+
+
+
+
+
+
+
+ Chopper Interceptor
+ 19??
+ York 10 Computerware
+
+
+
+
+
+
+
+
+
+ Concentration
+ 198?
+ G. R. Jones
+
+
+
+
+
+
+
+
+ Copy Cat
+ 198?
+ R. Eisman
+
+
+
+
+
+
+
+
+
+ Death Tank
+ 19??
+ York 10 Computerware
+
+
+
+
+
+
+
+
+ Defender (MR R)
+ 19??
+ MR R's
+
+
+
+
+
+
+
+
+
+ Defender (York 10 Computerware)
+ 19??
+ York 10 Computerware
+
+
+
+
+
+
+
+
+
+
+ Defender (York 10 Computerware, Alt)
+ 19??
+ York 10 Computerware
+
+
+
+
+
+
+
+
+ Demo
+ 197?
+ APF Electronics
+
+
+
+
+
+
+
+
+ Depth Charge!!
+ 19??
+ MR R's
+
+
+
+
+
+
+
+
+ Donkey Kong II
+ 198?
+ Rief Games
+
+
+
+
+
+
+
+
+ Donki-Kong
+ 198?
+ Millivision
+
+
+
+
+
+
+
+
+ Donki-Kong Jr
+ 198?
+ Millivision
+
+
+
+
+
+
+
+
+
+ Draw Draw
+ 198?
+ Rief Games
+
+
+
+
+
+
+
+
+
+ Dungeon_Treasure
+ 19??
+ IM-1 Games
+
+
+
+
+
+
+
+
+ E.T.
+ 19??
+ York 10 Computerware
+
+
+
+
+
+
+
+
+
+ Escape + 21 + Escape 2 (Bad?)
+ 198?
+ Lacroix Games
+
+
+
+
+
+
+
+
+
+
+ Escape!!!
+ 198?
+ E. Beckett
+
+
+
+
+
+
+
+
+ Excape Mommies Tumb
+ 19??
+ Handy Dandy Games
+
+
+
+
+
+
+
+
+ Ferzerx
+ 1983
+ G. R. Jones
+
+
+
+
+
+
+
+
+ Fire!
+ 19??
+ MR R's
+
+
+
+
+
+
+
+
+ FooseBall
+ 198?
+ E. Beckett
+
+
+
+
+
+
+
+
+
+ Frogger
+ 19??
+ York 10 Computerware
+
+
+
+
+
+
+
+
+ Froggy (Bad?)
+ 198?
+ E. Beckett
+
+
+
+
+
+
+
+
+
+ Gondola Pitts + Saucer Shoot
+ 19??
+ MR R's
+
+
+
+
+
+
+
+
+ Graphics Helper
+ 1982
+ Carl A. Echols
+
+
+
+
+
+
+
+
+
+ GraySkull
+ 1984
+ G. Karabin
+
+
+
+
+
+
+
+
+
+ Head-Hunter
+ 198?
+ G. R. Jones
+
+
+
+
+
+
+
+
+ Heart Attack
+ 1983
+ MR R's
+
+
+
+
+
+
+
+
+
+ IM-1 in a Million Club Newsletter Tape 4
+ 19??
+ IM-1 in a Million Club Newsletter
+
+
+
+
+
+
+
+
+ IM-1 in a Million Club Newsletter Tape 9
+ 19??
+ IM-1 in a Million Club Newsletter
+
+
+
+
+
+
+
+
+ Lord Logic-Locks
+ 19??
+ IM-1 in a Million Club Newsletter
+
+
+
+
+
+
+
+
+
+ Lunar Lander (Bad?)
+ 19??
+ IM-1 in a Million Club Newsletter
+
+
+
+
+
+
+
+
+ Maze
+ 198?
+ R. Eisman
+
+
+
+
+
+
+
+
+ Mimic My Music
+ 19??
+ IM-1 in a Million Club Newsletter
+
+
+
+
+
+
+
+
+ Minotaur
+ 1982
+ G. R. Jones
+
+
+
+
+
+
+
+
+ Mission: Improbable - Mission Alpha
+ 1982
+ Geo-Grafix
+
+
+
+
+
+
+
+
+
+
+ Mission: Improbable - Mission Bravo
+ 198?
+ Geo-Grafix
+
+
+
+
+
+
+
+
+
+ Music Composer Player Piano
+ 1979
+ APF Electronics
+
+
+
+
+
+
+
+
+ Mystry Mansion
+ 19??
+ Handy Dandy Games
+
+
+
+
+
+
+
+
+ Pac-Rat
+ 19??
+ MR R's
+
+
+
+
+
+
+
+
+ Pak-Man
+ 198?
+ E. Beckett
+
+
+
+
+
+
+
+
+
+ Pinball Wiz
+ 1983
+ G. Karabin
+
+
+
+
+
+
+
+
+ Planet Atack
+ 198?
+ Rief Games
+
+
+
+
+
+
+
+
+ Rattler
+ 198?
+ Geo-Grafix
+
+
+
+
+
+
+
+
+ Recollection
+ 19??
+ IM-1 in a Million Club Newsletter
+
+
+
+
+
+
+
+
+ RoadRunner
+ 19??
+ MR R's
+
+
+
+
+
+
+
+
+ Run Around
+ 198?
+ Millivision
+
+
+
+
+
+
+
+
+ Safari in Africa
+ 198?
+ DataComp
+
+
+
+
+
+
+
+
+
+ Sailing
+ 19??
+ York 10 Computerware
+
+
+
+
+
+
+
+
+
+ Sky Diver
+ 19??
+ York 10 Computerware
+
+
+
+
+
+
+
+
+
+ Solar Wars!
+ 1983
+ Handmade Games
+
+
+
+
+
+
+
+
+
+ Sound Effects Demo Program
+ 19??
+ Ralph A. Rodriguez
+
+
+
+
+
+
+
+
+
+ Space Destroyers
+ 1980
+ APF Electronics
+
+
+
+
+
+
+
+
+
+ Space Shuttle
+ 19??
+ York 10 Computerware
+
+
+
+
+
+
+
+
+
+ Star Battle
+ 19??
+ Handy Dandy Games
+
+
+
+
+
+
+
+
+
+ Star Castle
+ 19??
+ York 10 Computerware
+
+
+
+
+
+
+
+
+
+ Star Ship
+ 198?
+ R. Eisman
+
+
+
+
+
+
+
+
+ Star Trex
+ 1981
+ G. R. Jones
+
+
+
+
+
+
+
+
+ Super 21 + Space Hunt
+ 1983
+ Geo-Grafix
+
+
+
+
+
+
+
+
+
+ Super 21 + Space Hunt (Alt?)
+ 1983
+ Geo-Grafix
+
+
+
+
+
+
+
+
+
+ Super Frog
+ 198?
+ E. Beckett
+
+
+
+
+
+
+
+
+
+ SY-50 IM-1 Diagnostics
+ 1979
+ APF Electronics
+
+
+
+
+
+
+
+
+
+ Theft at the Art Museum
+ 1982
+ Carl A. Echols
+
+
+
+
+
+
+
+
+ Thief
+ 198?
+ Millivision
+
+
+
+
+
+
+
+
+
+ Transport + 15 Matches
+ 19??
+ R. T. Carman
+
+
+
+
+
+
+
+
+
+
+ Treasure Hunt (Bad?)
+ 1982
+ Carl A. Echols
+
+
+
+
+
+
+
+
+
+ Three-for-One : Space War + Air Fortress + Squeeze Play
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+ Tronn
+ 19??
+ MR R's
+
+
+
+
+
+
+
+
+ Turbo
+ 19??
+ York 10 Computerware
+
+
+
+
+
+
+
+
+ UBet
+ 19??
+ MR R's
+
+
+
+
+
+
+
+
+ Wall Street Cartel
+ 19??
+ IM-1 in a Million Club Newsletter
+
+
+
+
+
+
+
+
+ Zap
+ 198?
+ R. Eisman
+
+
+
+
+
+
+
+
+
+
+
+
+ 40 Track Initialization Program
+ 1983
+ Hex-Mart Software
+
+
+
+
+
+
+
+
+ BasNum
+ 1983
+ Hex-Mart Software
+
+
+
+
+
+
+
+
+ Basic Trace
+ 1982
+ Carl A. Echols
+
+
+
+
+
+
+
+
+ Disk Modification Program
+ 1983
+ Hex-Mart Software
+
+
+
+
+
+
+
+
+ Disk Test
+ 19??
+ IM-1 in a Million Club Newsletter
+
+
+
+
+
+
+
+
+ Graphics Tablet
+ 19??
+ IM-1 in a Million Club Newsletter
+
+
+
+
+
+
+
+
+ Hi-res Plot
+ 19??
+ IM-1 in a Million Club Newsletter
+
+
+
+
+
+
+
+
+ Lo-res Plot
+ 19??
+ IM-1 in a Million Club Newsletter
+
+
+
+
+
+
+
+
+
+ MAE
+ 1981
+ David Donnelly
+
+
+
+
+
+
+
+
+ Renumber
+ 1982
+ Carl A. Echols
+
+
+
+
+
+
+
+
+ SY-40 Disassembler
+ 1979
+ APF Electronics
+
+
+
+
+
+
+
+
+
+
+
+ Primera? (Bad?)
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
diff --git a/hash/dmv.xml b/hash/dmv.xml
index c1620d32ccd..3230286466c 100644
--- a/hash/dmv.xml
+++ b/hash/dmv.xml
@@ -939,6 +939,74 @@
+
+ DR Draw (Color)
+ 1983
+ Digital Research
+
+
+
+
+
+
+
+
+
+ DR Draw (Monochrome)
+ 1983
+ Digital Research
+
+
+
+
+
+
+
+
+
+ TUTBOGRAPH Demonstration Programs
+ 198?
+ <unknown>
+
+
+
+
+
+
+
+
+ CP/M-86 1.1 with quad-density FDD support
+ 1983
+ NCR Corporation
+
+
+
+
+
+
+
+
+ GSX-86 Test Suite
+ 198?
+ <unknown>
+
+
+
+
+
+
+
+
+ MS-DOS v2.11 with quad-density FDD support
+ 1983
+ Microsoft
+
+
+
+
+
+
+
dBASE II v2.38
198?
@@ -1043,7 +1111,7 @@
-
+
AutoCAD
1987
<unknown>
@@ -1060,7 +1128,7 @@
-
+
AutoCAD (Alt 1)
1987
<unknown>
@@ -1087,7 +1155,7 @@
-
+
AutoCAD (Alt 2)
1987
<unknown>
diff --git a/hash/ec1841.xml b/hash/ec1841.xml
index 22c117a89a7..eb4bea92fb8 100644
--- a/hash/ec1841.xml
+++ b/hash/ec1841.xml
@@ -131,7 +131,7 @@
??
-
+
diff --git a/hash/epson_cpm.xml b/hash/epson_cpm.xml
new file mode 100644
index 00000000000..9ba907ee5c5
--- /dev/null
+++ b/hash/epson_cpm.xml
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
+
+
+
+ TF-20 boot disk
+ 198?
+ Epson
+
+
+
+
+
+
+
+
+
+
+
+ Archivers
+ ?????
+ <unofficial>
+
+
+
+
+
+
+
+
+
+ VDE 2.66
+ ?????
+ <unofficial>
+
+
+
+
+
+
+
+
+
+ Extra Utilities
+ ?????
+ <unofficial>
+
+
+
+
+
+
+
+
+
+ Modem Sample & M80 & L80
+ ?????
+ <unofficial>
+
+
+
+
+
+
+
+
+
+ PROM Progs
+ ?????
+ <unofficial>
+
+
+
+
+
+
+
+
+
+ PX-4 Utils
+ ?????
+ <unofficial>
+
+
+
+
+
+
+
+
+
+ PX-4 Utility Disk
+ ?????
+ <unofficial>
+
+
+
+
+
+
+
+
+
+ PX-4 Utility Disk 2
+ ?????
+ <unofficial>
+
+
+
+
+
+
+
+
+
+ PX-4 Wanderer
+ ?????
+ <unofficial>
+
+
+
+
+
+
+
+
+
+ PX-8 EPS (TF-20 bootdisk)
+ ?????
+ <unofficial>
+
+
+
+
+
+
+
+
+
+ PX-8 Games
+ ?????
+ <unofficial>
+
+
+
+
+
+
+
+
+
+ Scratch
+ ?????
+ <unofficial>
+
+
+
+
+
+
+
+
+
diff --git a/hash/fmtowns_cd.xml b/hash/fmtowns_cd.xml
index f6d18346620..d5aa57beb6a 100644
--- a/hash/fmtowns_cd.xml
+++ b/hash/fmtowns_cd.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/hash/g7400.xml b/hash/g7400.xml
index 33c8906c1a6..123e6111789 100644
--- a/hash/g7400.xml
+++ b/hash/g7400.xml
@@ -33,7 +33,7 @@ Interpol (USA)
-->
-
+
diff --git a/hash/galaxy.xml b/hash/galaxy.xml
index afed437e5a3..d3ad6174f27 100644
--- a/hash/galaxy.xml
+++ b/hash/galaxy.xml
@@ -5,11 +5,11 @@
Asteroidi
- 19??
- <unknown>
+ 1984
+ GAC Software
-
+
@@ -20,40 +20,40 @@
<unknown>
-
+
-
- Bioritam1
- 19??
- <unknown>
+
+ Bioritam
+ 1984
+ Galaxy Computer
-
+
- Bioritam2
+ Bioritam (Alt)
19??
<unknown>
-
+
-
- BladeAlley
- 19??
- <unknown>
+
+ Blade Alley
+ 1985
+ Jasmin Halilovic
-
+
@@ -61,21 +61,21 @@
Bombarder
19??
- <unknown>
+ Nenad Balint
-
+
- ChariotsOfFire
+ Chariots of Fire
19??
- <unknown>
+ Dragan Yujkov
-
+
@@ -86,29 +86,29 @@
<unknown>
-
+
- DijamantskiRudnik
- 19??
- <unknown>
+ Dijamantski Rudnik
+ 1985
+ Nenad Balint
-
+
- DijamantskiRudnik_ALT
- 19??
- <unknown>
+ Dijamantski Rudnik (Alt Format)
+ 1985
+ Nenad Balint
-
+
@@ -119,171 +119,171 @@
<unknown>
-
+
Evolucija
- 19??
- <unknown>
+ 1984
+ Dejan Ristanovic
-
+
- Formula1
+ Formula 1
19??
<unknown>
-
+
Four
- 19??
- <unknown>
+ 1986
+ Dragan Yujkov
-
+
- GalaktickiRat
- 19??
- <unknown>
+ Galakticki Rat
+ 1985
+ Antonic Voja
-
+
- HungryHorace
+ Hungry Horace
19??
<unknown>
-
+
- IgraDiskova
- 19??
- <unknown>
+ Igra Diskova
+ 1985
+ Yojislav Mihailovic
-
+
- InspektorSpiridon
+ Inspektor Spiridon
19??
<unknown>
-
+
-
+
-
+
- JumpingJack
- 19??
- <unknown>
+ Jumping Jack
+ 1985
+ Antonic Voja
-
+
- LightCycles
- 19??
- <unknown>
+ Light Cycles
+ 1985
+ Bojan Stanojevic
-
+
- LightCycles2
+ Light Cycles (Alt)
19??
<unknown>
-
+
- LightShow
- 19??
- <unknown>
+ Light Show
+ 1987
+ Dragan Vujkov
-
+
- ManicMiner
+ Manic Miner
19??
<unknown>
-
+
Mastermajnd
- 19??
- <unknown>
+ 1984
+ Dejan Ristanovic
-
+
- Mastermind2
+ Mastermind
19??
<unknown>
-
+
@@ -294,7 +294,7 @@
<unknown>
-
+
@@ -305,7 +305,7 @@
<unknown>
-
+
@@ -313,21 +313,21 @@
Monitor
19??
- <unknown>
+ Antonic Voja
-
+
- NightPilot
- 19??
- <unknown>
+ Night Pilot
+ 1985
+ Dragutin Vukotic
-
+
@@ -335,65 +335,65 @@
Oscilacije
19??
- <unknown>
+ Dragan Vujkov
-
+
- PacManPlus
+ Pac Man (Plus)
19??
- <unknown>
+ Josip Perusanec
-
+
Pamtilice
- 19??
- <unknown>
+ 1985
+ Peca Milosavljevic
-
+
Poker
- 19??
- <unknown>
+ 1985
+ Nenad Balint
-
+
- PozivniZnak
+ Pozivni Znak
19??
- <unknown>
+ Dragan Vujkov
-
+
- RainDrops
+ Rain Drops
19??
<unknown>
-
+
@@ -404,7 +404,7 @@
<unknown>
-
+
@@ -412,186 +412,186 @@
Sintesajzer
19??
- <unknown>
+ Dragan Vujkov
-
+
- Slalom2
- 19??
- <unknown>
+ Slalom II
+ 1985
+ Zeljko Gerovac
-
+
- Snake
- 19??
- <unknown>
+ Snake (Nenad Balint)
+ 1984
+ Nenad Balint
-
+
-
- Snake2
- 19??
- <unknown>
+
+ Snake (Dragan Vujkov)
+ 1987
+ Dragan Vujkov
-
+
Squash
- 19??
+ 1986
<unknown>
-
+
- Squash_ALT
+ Squash (Alt Format)
19??
<unknown>
-
+
- SuperCruiser
- 19??
- <unknown>
+ Super Cruiser
+ 1985
+ Jasmin Halilovic
-
+
- SuperCruiser_ALT
- 19??
- <unknown>
+ Super Cruiser (Alt Format)
+ 1985
+ Jasmin Halilovic
-
+
- SuperSah
- 19??
- <unknown>
+ Super-Sah
+ 1984
+ Page Software
-
+
- SvemirskiTrgovac
- 19??
- <unknown>
+ Svemirski Trgovac
+ 198?
+ Ilija Vitanov
-
+
- SvetleciBicikliPlus
- 19??
- <unknown>
+ Svetleci Bicikli (Plus)
+ 1986
+ Nenad Balint
-
+
Tenis
- 19??
- <unknown>
+ 1985
+ Nenad Balint
-
+
- Tenis3
- 19??
- <unknown>
+ Tenis 3
+ 1986
+ Dragan Yujkov
-
+
Tetris
- 19??
- <unknown>
+ 1988
+ Dragoljub Obradovic
-
+
- TetrisPlus
- 19??
- <unknown>
+ Tetris (Plus)
+ 1988
+ Dragoljub Obradovic
-
+
- Tetris_ALT
+ Tetris (Alt Format)
19??
<unknown>
-
+
Wall
- 19??
- <unknown>
+ 1986
+ Dragan Vujkov
-
+
@@ -602,51 +602,51 @@
<unknown>
-
+
- Wonderer2
+ Wonderer 2
19??
<unknown>
-
+
Zamak
- 19??
- <unknown>
+ 1984
+ Antonic Voja
-
+
Zid
- 19??
- <unknown>
+ 1984
+ GAC Software
-
+
Ziul
- 19??
- <unknown>
+ 1984
+ Dejan Ristanovic
-
+
@@ -657,20 +657,75 @@
<unknown>
-
+
- ZvjezdaneStaze
- 19??
+ Zvjezdane Staze
+ 1985
<unknown>
-
+
+
+ Fire
+ 2007
+ Tomaz Solc
+
+
+
+
+
+
+
+
+ Hardware
+ 2007
+ Tomaz Solc
+
+
+
+
+
+
+
+
+ Highres
+ 2009
+ Tomaz Solc
+
+
+
+
+
+
+
+
+ Particle
+ 2007
+ Tomaz Solc
+
+
+
+
+
+
+
+
+ Stars
+ 2007
+ Tomaz Solc
+
+
+
+
+
+
+
diff --git a/hash/gamate.xml b/hash/gamate.xml
new file mode 100644
index 00000000000..9fff1320ff1
--- /dev/null
+++ b/hash/gamate.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ Cube Up
+ 19??
+ Bit Corp
+
+
+
+
+
+
+
+
+
diff --git a/hash/gamegear.xml b/hash/gamegear.xml
index 805b3957d50..8dd194e843c 100644
--- a/hash/gamegear.xml
+++ b/hash/gamegear.xml
@@ -7,7 +7,6 @@ The following games existed according to VGRebirth
- NFL Quarterback Club 95 (Jpn) by Acclaim
- Robocop 3 (Jpn) by Acclaim
- Sonic Drift (Euro) by Sega
- - Super Golf (USA) by Sage's Creations
- Terminator 2 - Judgement Day (Jpn) by Acclaim
Other undumped games:
@@ -8415,6 +8414,17 @@ a certain item) -->
+ Super Golf (USA)
+ 1991
+ Sage's Creations
+
+
+
+
+
+
+
+
Super Golf (Jpn)
1991
Sigma Enterprises
diff --git a/hash/gameking.xml b/hash/gameking.xml
index 0764a60e97a..5ab4e90c849 100644
--- a/hash/gameking.xml
+++ b/hash/gameking.xml
@@ -5,7 +5,7 @@
-
+
2004
200?
TimeTop
@@ -16,7 +16,7 @@
-
+
Adventure Legend Carlo
200?
TimeTop
@@ -27,7 +27,7 @@
-
+
Aries
200?
TimeTop
@@ -38,7 +38,7 @@
-
+
Dino Adventure Legend
200?
TimeTop
@@ -49,7 +49,7 @@
-
+
Duck Man
200?
TimeTop
@@ -60,7 +60,7 @@
-
+
Happy Ball
200?
TimeTop
@@ -71,7 +71,7 @@
-
+
Happy Killer
200?
TimeTop
@@ -82,7 +82,7 @@
-
+
Lanneret
200?
TimeTop
@@ -93,7 +93,7 @@
-
+
Penguin
200?
TimeTop
@@ -104,7 +104,7 @@
-
+
Popper
200?
TimeTop
@@ -115,7 +115,7 @@
-
+
Street Hero
200?
TimeTop
@@ -126,7 +126,7 @@
-
+
Supermotor
200?
TimeTop
@@ -137,7 +137,7 @@
-
+
Trojan Legend
200?
TimeTop
diff --git a/hash/gbcolor.xml b/hash/gbcolor.xml
index a1aa94e5170..6e89d1d352f 100644
--- a/hash/gbcolor.xml
+++ b/hash/gbcolor.xml
@@ -10286,7 +10286,7 @@ List of unconfirmed retail cartridge roms
-
+
diff --git a/hash/hx20_flop.xml b/hash/hx20_flop.xml
deleted file mode 100644
index cd292e690f9..00000000000
--- a/hash/hx20_flop.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
- Epson TF-20 / HX-20 boot disk
- 1982
- Epson
-
-
-
-
-
-
-
-
-
diff --git a/hash/ibm5150.xml b/hash/ibm5150.xml
index b268f5e93db..a67aa753a4d 100644
--- a/hash/ibm5150.xml
+++ b/hash/ibm5150.xml
@@ -2822,4 +2822,72 @@ Known PC Booter Games Not Dumped, Or Dumped and Lost when Demonlord's Site went
+
+
+
+ King's Quest IV: The Perils of Rosella (Version #2.2, 3.5")
+ 1988
+ Sierra
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ King's Quest IV: The Perils of Rosella (Version #2.2, 5.25")
+ 1988
+ Sierra
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hash/ibm5170.xml b/hash/ibm5170.xml
index 82509238371..631ba7c1f4f 100644
--- a/hash/ibm5170.xml
+++ b/hash/ibm5170.xml
@@ -3966,6 +3966,48 @@ Missing files come here
+
+
+ Sam & Max Hit the Road
+ 1993
+ LucasArts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Silent Service II (Version 457.01)
diff --git a/hash/intv.xml b/hash/intv.xml
index 6dd05d4c996..f8a0d47d26f 100644
--- a/hash/intv.xml
+++ b/hash/intv.xml
@@ -31,6 +31,7 @@
1982
Mattel Electronics
+
@@ -90,6 +91,20 @@
+
+
+ AstroSmash - Meteor (Hacked?)
+ 1981
+ Mattel Electronics
+
+
+
+
+
+
+
+
Atlantis
1982
@@ -502,6 +517,7 @@
+
Dig Dug
1987
@@ -1823,6 +1839,18 @@
+
+ Adventure (Prototype)
+ 1982
+ Mattel Electronics
+
+
+
+
+
+
+
+
Adventures of TRON (Unreleased)
1982
@@ -1874,6 +1902,18 @@
+
+ Crazy Clones (Unfinished)
+ 1981
+ Mattel Electronics
+
+
+
+
+
+
+
+
Choplifter! (Prototype)
1983
@@ -1904,6 +1944,18 @@
+
+ The Dreadnaught Factor (Prototype)
+ 1982
+ Activision
+
+
+
+
+
+
+
+
Go for the Gold! (Prototype)
1983
@@ -2035,7 +2087,7 @@
-
+
League of Light (Prototype)
1983
Activision
@@ -2047,6 +2099,30 @@
+
+ League of Light (Prototype, Alt)
+ 1983
+ Activision
+
+
+
+
+
+
+
+
+
+ League of Light (Prototype, Alt 2)
+ 1983
+ Activision
+
+
+
+
+
+
+
+
Magic Carousel (Prototype)
1983
@@ -2075,6 +2151,42 @@
+
+ Minotaur (Prototype)
+ 1981
+ Mattel Electronics
+
+
+
+
+
+
+
+
+
+ Minotaur (Prototype, v2)
+ 1981
+ Mattel Electronics
+
+
+
+
+
+
+
+
+
+ Minotaur (Prototype, v1.1)
+ 1981
+ Mattel Electronics
+
+
+
+
+
+
+
+
Mystic Castle (Prototype)
1982
@@ -2144,6 +2256,18 @@
+
+ River Raid (Prototype)
+ 1983?
+ Activision
+
+
+
+
+
+
+
+
Robot Rubble (Prototype)
1983
@@ -2156,6 +2280,30 @@
+
+ Robot Rubble (Prototype, v2)
+ 1983
+ Activision
+
+
+
+
+
+
+
+
+
+ Robot Rubble (Prototype, v1)
+ 1983
+ Activision
+
+
+
+
+
+
+
+
Rocky & Bullwinckle (Unreleased)
1983
@@ -2243,6 +2391,18 @@
+
+ Thin Ice (Prototype)
+ 1983
+ Mattel Electronics
+
+
+
+
+
+
+
+
Yogi's Frustration (Unreleased)
1983
@@ -2393,10 +2553,10 @@
-
+
Space Cunt
- 200?
- IntelligentVision
+ 1983
+ Mattel Electronics
diff --git a/hash/m5.xml b/hash/m5_cart.xml
similarity index 99%
rename from hash/m5.xml
rename to hash/m5_cart.xml
index 6794057c899..3836952aace 100644
--- a/hash/m5.xml
+++ b/hash/m5_cart.xml
@@ -71,7 +71,7 @@ and why some of the dumps below have weird size?
-->
-
+
diff --git a/hash/m5_cass.xml b/hash/m5_cass.xml
new file mode 100644
index 00000000000..457d2c3b2e4
--- /dev/null
+++ b/hash/m5_cass.xml
@@ -0,0 +1,284 @@
+
+
+
+
+
+
+
+ Barricade
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+
+ Barrier Attack
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+
+ Baseball
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+ Biorhythm Diagnosis
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+
+ Blackjack
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+
+ Cowboy
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+
+ Graphic Designer
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+ Jogging
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+
+ Last Day of the Earth
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+
+ Mini Star Trek
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+
+ Music Tone
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+
+ Number Search
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+
+ Sidewinder
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+
+ Slot Machine
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+
+ Snaky
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+
+ Solitaire
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+
+ Three Circles
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+
+ Tower of Hanoi
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+
+ TV Adjust
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+ Zac Banic
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
diff --git a/hash/megadriv.xml b/hash/megadriv.xml
index cc17ffcfa1a..78a55a06ecc 100644
--- a/hash/megadriv.xml
+++ b/hash/megadriv.xml
@@ -3,7 +3,6 @@
+
+
+ 2 in 1 - Fantastic Dizzy & Cosmic Spacehead (Euro)
+ 1994
+ Codemasters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
688 Attack Sub (Euro, USA)
@@ -825,6 +841,28 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+
+ Barkley Shut Up and Jam! (Euro, USA)
+ 1993
+ Accolade
+
+
+
+
+
+
+
+
+
+
+
Batman (Euro)
1992
@@ -1105,6 +1143,36 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+
+ Bubsy in Claws Encounters of the Furred Kind (Euro, USA)
+ 1993
+ Accolade
+
+
+
+
+
+
+
+
+
+
+
+
+ Bubsy II (Euro, USA)
+ 1994
+ Accolade
+
+
+
+
+
+
+
+
+
+
Buck Rogers - Countdown to Doomsday (Euro, USA)
@@ -1153,6 +1221,21 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+
+ Bulls Vs Lakers and the NBA Playoffs (Euro, USA)
+ 1992
+ Electronic Arts
+
+
+
+
+
+
+
+
+
+
Burning Force (Euro)
@@ -1481,6 +1564,20 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+ Clue (USA)
+ 1992
+ Parker Brothers
+
+
+
+
+
+
+
+
+
+
College Slam (USA)
1996
@@ -2197,6 +2294,23 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+ Earthworm Jim 2 (Euro)
+ 1995
+ Virgin Interactive
+
+
+
+
+
+
+
+
+
+
+
+
+
Ecco the Dolphin (Euro, USA, Kor)
@@ -2909,6 +3023,34 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+ Formula One (USA)
+ 1993
+ Tengen
+
+
+
+
+
+
+
+
+
+
+
+ Fun 'N Games (Euro)
+ 1993
+ Sony Imagesoft
+
+
+
+
+
+
+
+
+
+
Gain Ground (World, Rev. A)
@@ -3007,6 +3149,20 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+ Garry Kitchen's Super Battletank - War in the Gulf (USA)
+ 1992
+ Absolute Entertainment
+
+
+
+
+
+
+
+
+
+
General Chaos (Euro, USA)
@@ -3325,6 +3481,21 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+
+ HardBall! (Euro, USA)
+ 1991
+ Ballistic
+
+
+
+
+
+
+
+
+
+
HardBall '94 (Euro, USA)
@@ -3554,6 +3725,20 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+ Indiana Jones and the Last Crusade (USA)
+ 1992
+ U.S. Gold
+
+
+
+
+
+
+
+
+
+
International Rugby (Euro)
1993
@@ -3642,6 +3827,26 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+
+ Jack Nicklaus' Power Challenge Golf (Euro, USA)
+ 1993
+ Accolade
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
James 'Buster' Douglas Knockout Boxing (Euro, USA)
@@ -3736,6 +3941,20 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+ Jennifer Capriati Tennis (USA)
+ 1992
+ Renovation
+
+
+
+
+
+
+
+
+
+
Jewel Master (Euro, USA, Rev. A)
@@ -4780,6 +4999,38 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+
+ Micro Machines 2 - Turbo Tournament (Euro, J-Cart)
+ 1994
+ Codemasters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cosmic Spacehead (Euro, USA)
+ 1993
+ Codemasters
+
+
+
+
+
+
+
+
+
+
Mighty Morphin Power Rangers - The Movie (Euro)
1995
@@ -5130,6 +5381,28 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+
+ NBA Live 97 (Euro, USA)
+ 1996
+ Electronic Arts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
NBA Pro Basketball - Bulls Vs Lakers (Jpn)
1993
@@ -5632,6 +5905,28 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+
+ PGA European Tour (Euro, USA)
+ 1994
+ Electronic Arts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
PGA Tour 96 (Euro, USA)
@@ -5723,6 +6018,28 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+
+ PGA Tour Golf III (Euro, USA)
+ 1994
+ Electronic Arts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Phantom 2040 (Euro)
1995
@@ -5873,6 +6190,24 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+
+ Pocahontas (Euro)
+ 1996
+ Sega
+
+
+
+
+
+
+
+
+
+
+
+
+
Power Drive (Euro)
1994
@@ -5902,13 +6237,13 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
-
+
Predator 2 (Euro, USA)
1992
Arena
-
+
@@ -5917,6 +6252,28 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+ Premier Manager (Euro)
+ 1995
+ Sega
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Premier Manager 97 (Euro)
1996
@@ -5985,6 +6342,20 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+ Psycho Pinball (Euro, 199409)
+ 1994
+ Codemasters
+
+
+
+
+
+
+
+
+
+
Puggsy (Euro)
1993
@@ -6426,6 +6797,23 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+ Saturday Night Slammasters (Euro)
+ 1994
+ Capcom
+
+
+
+
+
+
+
+
+
+
+
+
+
Saturday Night Slammasters (USA)
1994
@@ -6732,13 +7120,13 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
-
+
The Simpsons - Bart's Nightmare (Euro, USA)
1993
Flying Edge
-
+
@@ -6859,6 +7247,20 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+ Sonic Spinball (USA)
+ 1993
+ Sega
+
+
+
+
+
+
+
+
+
+
Sonic the Hedgehog (Euro, USA)
@@ -6874,6 +7276,24 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+
+ Sonic the Hedgehog (Jpn, Kor)
+ 1991
+ Sega
+
+
+
+
+
+
+
+
+
+
+
+
+
Sonic the Hedgehog 2 (World, Rev. A)
@@ -6944,6 +7364,20 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+ Sparkster (Euro)
+ 1994
+ Konami
+
+
+
+
+
+
+
+
+
+
Speedball 2 (Euro)
1992
@@ -7948,7 +8382,7 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
-
+
Toe Jam & Earl (World)
1992
@@ -7958,7 +8392,7 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
-
+
@@ -8352,6 +8786,28 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+
+ Virtual Pinball (Euro, USA)
+ 1993
+ Electronic Arts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
VR Troopers (Euro, USA)
@@ -8465,7 +8921,7 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
Ballistic
-
+
@@ -8756,12 +9212,9 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
- WWF Royal Rumble (World)
+ WWF Royal Rumble (Euro)
1994
- Flying Edge
-
-
-
+ Flying Edge
@@ -8784,6 +9237,24 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+
+ WWF Royal Rumble (Jpn, USA)
+ 1994
+ Flying Edge
+
+
+
+
+
+
+
+
+
+
+
+
+
WWF Super WrestleMania (Euro, USA)
@@ -8917,6 +9388,36 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
+
+ Zool (Euro)
+ 1993
+ Electronic Arts
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Rugby World Cup 1995 (Euro, USA)
+ 1994
+ Electronic Arts
+
+
+
+
+
+
+
+
+
+
Zoom! (World)
@@ -8938,22 +9439,6 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
-
- Micro Machines 2 - Turbo Tournament (Euro, J-Cart)
- 1994
- Codemasters
-
-
-
-
-
-
-
-
-
-
-
-
Micro Machines Turbo Tournament 96 (Euro, v1.1, J-Cart)
1995
@@ -9098,18 +9583,6 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
-
- Psycho Pinball (Euro, 199409)
- 1994
- Codemasters
-
-
-
-
-
-
-
-
Micro Machines (Euro, USA)
1993
@@ -9131,7 +9604,7 @@ Info on Sega chip labels (from Sunbeam / Digital Corruption)
-
+
@@ -9901,16 +10374,14 @@ but dumps still have to be confirmed.
-
- Arrow Flash (World, Alt)
+
+
+ Arrow Flash (USA, Prototype)
1990
- Sega
-
-
-
+ Renovation
-
+
@@ -10374,17 +10845,6 @@ but dumps still have to be confirmed.
-
- Barkley Shut Up and Jam! (Euro, USA)
- 1993
- Accolade
-
-
-
-
-
-
-
Barkley Shut Up and Jam! 2 (USA)
1995
@@ -11380,34 +11840,6 @@ but dumps still have to be confirmed.
-
- Bubsy in Claws Encounters of the Furred Kind (Euro, USA)
- 1993
- Accolade
-
-
-
-
-
-
-
-
-
-
-
- Bubsy II (Euro, USA)
- 1994
- Accolade
-
-
-
-
-
-
-
-
-
-
Budokan - The Martial Spirit (USA)
1990
@@ -11441,17 +11873,6 @@ but dumps still have to be confirmed.
-
- Bulls Vs Lakers and the NBA Playoffs (Euro, USA)
- 1992
- Electronic Arts
-
-
-
-
-
-
-
Burning Force (USA)
1990
@@ -11883,17 +12304,6 @@ but dumps still have to be confirmed.
-
- Clue (USA)
- 1992
- Parker Brothers
-
-
-
-
-
-
-
Coach K College Basketball (USA)
1995
@@ -12511,17 +12921,6 @@ but dumps still have to be confirmed.
-
- Cosmic Spacehead (Euro, USA)
- 1993
- Codemasters
-
-
-
-
-
-
-
Crack Down (USA)
1991
@@ -13761,17 +14160,6 @@ but dumps still have to be confirmed.
-
- Earthworm Jim 2 (Euro)
- 1995
- Virgin Interactive
-
-
-
-
-
-
-
Earthworm Jim 2 (USA)
1996
@@ -14414,17 +14802,6 @@ but dumps still have to be confirmed.
-
- Formula One (USA)
- 1993
- Tengen
-
-
-
-
-
-
-
F1 - World Championship Edition (Euro, Prototype)
1993
@@ -14952,17 +15329,6 @@ but dumps still have to be confirmed.
-
- Fun 'N Games (Euro)
- 1993
- Sony Imagesoft
-
-
-
-
-
-
-
Fun 'N' Games (USA)
1993
@@ -15021,16 +15387,14 @@ but dumps still have to be confirmed.
-
- Gain Ground (World, Alt)
+
+
+ Gain Ground (USA, Prototype)
1991
- Sega
-
-
-
+ Renovation
-
+
@@ -15458,17 +15822,6 @@ but dumps still have to be confirmed.
-
- Jennifer Capriati Tennis (USA)
- 1992
- Renovation
-
-
-
-
-
-
-
Great Circus Mystery - Mickey to Minnie Magical Adventure 2 (Jpn)
1994
@@ -15637,17 +15990,6 @@ but dumps still have to be confirmed.
-
- HardBall! (USA)
- 1991
- Ballistic
-
-
-
-
-
-
-
High Seas Havoc (USA)
1993
@@ -15917,17 +16259,6 @@ but dumps still have to be confirmed.
-
- Indiana Jones and the Last Crusade (USA)
- 1992
- U.S. Gold
-
-
-
-
-
-
-
Insector X (USA)
1990
@@ -16166,21 +16497,6 @@ but dumps still have to be confirmed.
-
- Jack Nicklaus' Power Challenge Golf (Euro, USA)
- 1993
- Accolade
-
-
-
-
-
-
-
-
-
-
-
Final Blow (Jpn)
1990
@@ -19159,20 +19475,6 @@ Notice that these are not working on real hardware due to bugged code with VDP i
-
- NBA Live 97 (Euro, USA)
- 1996
- Electronic Arts
-
-
-
-
-
-
-
-
-
-
NBA Live 98 (USA)
1997
@@ -20494,6 +20796,20 @@ Notice that these are not working on real hardware due to bugged code with VDP i
+
+ Panorama Cotton (Jpn, Prototype 19931127)
+ 1993
+ Sunsoft
+
+
+
+
+
+
+
+
+
+
Paperboy (Jpn)
1992
@@ -20622,27 +20938,6 @@ Notice that these are not working on real hardware due to bugged code with VDP i
-
- PGA European Tour (Euro, USA)
- 1994
- Electronic Arts
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
PGA Tour Golf II (Euro, USA, v1.1)
1992
@@ -20674,20 +20969,6 @@ Notice that these are not working on real hardware due to bugged code with VDP i
-
- PGA Tour Golf III (Euro, USA)
- 1994
- Electronic Arts
-
-
-
-
-
-
-
-
-
-
Phantasy Star II (Euro, USA)
1989
@@ -21086,17 +21367,6 @@ Notice that these are not working on real hardware due to bugged code with VDP i
-
- Pocahontas (Euro)
- 1996
- Sega
-
-
-
-
-
-
-
Pocahontas (USA)
1996
@@ -21247,28 +21517,6 @@ Notice that these are not working on real hardware due to bugged code with VDP i
-
- Premier Manager (Euro)
- 1995
- Sega
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Prime Time NFL Starring Deion Sanders (USA)
1995
@@ -22321,6 +22569,17 @@ Notice that these are not working on real hardware due to bugged code with VDP i
+
+ Rocket Knight Adventures (USA, Prototype 19930615)
+ 1993
+ Konami
+
+
+
+
+
+
+
Roger Clements MVP Baseball (USA)
1992
@@ -22458,17 +22717,6 @@ Notice that these are not working on real hardware due to bugged code with VDP i
-
- Rugby World Cup 1995 (Euro, USA)
- 1994
- Electronic Arts
-
-
-
-
-
-
-
Sagaia (USA)
1991
@@ -22615,17 +22863,6 @@ Notice that these are not working on real hardware due to bugged code with VDP i
-
- Saturday Night Slammasters (Euro)
- 1994
- Capcom
-
-
-
-
-
-
-
Scooby-Doo Mystery (USA)
1995
@@ -23745,17 +23982,6 @@ Notice that these are not working on real hardware due to bugged code with VDP i
-
- Sonic Spinball (USA)
- 1993
- Sega
-
-
-
-
-
-
-
Sonic Spinball (USA, Alt)
1993
@@ -23767,20 +23993,6 @@ Notice that these are not working on real hardware due to bugged code with VDP i
-
- Sonic the Hedgehog (Jpn, Kor)
- 1991
- Sega
-
-
-
-
-
-
-
-
-
-
Sonic the Hedgehog (Pirate, Ripped from Golden 10 in 1)
1991?
@@ -24059,20 +24271,6 @@ Notice that these are not working on real hardware due to bugged code with VDP i
-
- Sparkster (Euro)
- 1994
- Konami
-
-
-
-
-
-
-
-
-
-
Sparkster (USA)
1994
@@ -25096,17 +25294,6 @@ Notice that these are not working on real hardware due to bugged code with VDP i
-
- Garry Kitchen's Super Battletank - War in the Gulf (USA)
- 1992
- Absolute Entertainment
-
-
-
-
-
-
-
Super Fantasy Zone (Euro)
1993
@@ -27074,20 +27261,6 @@ Notice that these are not working on real hardware due to bugged code with VDP i
-
- Virtual Pinball (Euro, USA)
- 1993
- Electronic Arts
-
-
-
-
-
-
-
-
-
-
Vixen 357 (Jpn)
1992
@@ -29166,21 +29339,6 @@ Notice that these are not working on real hardware due to bugged code with VDP i
-
- Zool (Euro)
- 1993
- Electronic Arts
-
-
-
-
-
-
-
-
-
-
-
Zool (USA)
1993
diff --git a/hash/mikrosha.xml b/hash/mikrosha.xml
index 88b98781e0b..f46a03eff58 100644
--- a/hash/mikrosha.xml
+++ b/hash/mikrosha.xml
@@ -16,9 +16,9 @@
- ALAMBUSH
- 19??
- <unknown>
+ Alien Ambush
+ 1990
+ Sedov E. A.
@@ -27,9 +27,9 @@
- BALL
- 19??
- <unknown>
+ The Ball Game
+ 1990
+ Sandy Pat Corp.
@@ -38,9 +38,9 @@
- BARMEN
- 19??
- <unknown>
+ Barmen (v1.5)
+ 1988
+ ALG
@@ -49,9 +49,9 @@
- BOMBER
- 19??
- <unknown>
+ Bomber Aircraft
+ 1990
+ Jup Corp
@@ -59,10 +59,10 @@
-
- BOULDER
- 19??
- <unknown>
+
+ Boulder Dash (v2)
+ 1989
+ Clever Hands Software
@@ -71,7 +71,7 @@
- CHESS
+ Chess
19??
<unknown>
@@ -81,10 +81,10 @@
-
- CIRCUS
- 19??
- <unknown>
+
+ Cirk (v1.2)
+ 1986
+ Popov S.N.
@@ -93,9 +93,9 @@
- CROSSFIR
- 19??
- <unknown>
+ Cross Fire (v004)
+ 1988
+ Zyryanov A.V.
@@ -566,9 +566,9 @@
- XONMICR
+ Xonix (Micron)
19??
- <unknown>
+ Micron
@@ -576,10 +576,10 @@
-
- ZSTATION
- 19??
- <unknown>
+
+ Z-Stanciya
+ 1987
+ SNP
@@ -591,7 +591,7 @@
- BASIC
+ Mikrosha BASIC
19??
<unknown>
@@ -602,7 +602,7 @@
- DISASM
+ Disassembler Mikron
19??
<unknown>
diff --git a/hash/msx1_cart.xml b/hash/msx1_cart.xml
index c4863b1214c..557bff34a45 100644
--- a/hash/msx1_cart.xml
+++ b/hash/msx1_cart.xml
@@ -13654,7 +13654,7 @@ kept for now until finding out what those bytes affect...
Cheese (Jpn)
1984
- Nihon ELectronics
+ Nihon Electronics
diff --git a/hash/nes.xml b/hash/nes.xml
index 834b9152f5b..4bdfdb738c4 100644
--- a/hash/nes.xml
+++ b/hash/nes.xml
@@ -11218,6 +11218,7 @@
+
@@ -20454,7 +20455,7 @@
-
+
Krazy Kreatures (USA, v1.1)
1990
American Video Entertainment
@@ -20473,7 +20474,7 @@
-
+
Krazy Kreatures (USA, v1.0)
1990
American Video Entertainment
@@ -23815,7 +23816,7 @@
-
+
Mermaids of Atlantis - The Riddle of the Magic Bubble (USA)
1991
American Video Entertainment
@@ -45717,6 +45718,7 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
+
@@ -45855,6 +45857,23 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
+
+ Ghostbusters (Jpn, Prototype)
+ 1986
+ Tokuma Shoten
+
+
+
+
+
+
+
+
+
+
+
+
+
Goal!! (Jpn)
1992
@@ -48398,6 +48417,7 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
+
@@ -49911,6 +49931,7 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
+
@@ -52745,6 +52766,7 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
+
@@ -57136,6 +57158,7 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
+
@@ -57443,7 +57466,7 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
-
+
diff --git a/hash/orao.xml b/hash/orao.xml
index b45a1773a8c..48e7ffbf954 100644
--- a/hash/orao.xml
+++ b/hash/orao.xml
@@ -4,12 +4,12 @@
- 6502Step
+ 6502 Step (v1.0)
19??
<unknown>
-
+
@@ -17,32 +17,32 @@
Ajnc
19??
- <unknown>
+ PEL Soft
-
+
Avion
- 19??
- <unknown>
+ 1986
+ Emil Herceg - Igor Kos
-
+
- BoulderDash
+ Boulder Dash
19??
- <unknown>
+ Nenad Mihailovic - Mihajlo Dapjas
-
+
@@ -50,10 +50,10 @@
Breakout
19??
- <unknown>
+ Stan Rimox Software
-
+
@@ -64,73 +64,67 @@
<unknown>
-
+
Crtanje
- 19??
- <unknown>
+ 1987
+ Suzy Soft
-
+
Crvic
- 19??
- <unknown>
+ 1986
+ PEL Soft
-
+
-
- Demo 1
- 19??
- <unknown>
+
+ Mikroracunalo Orao
+ 1988
+ PEL Varazdin
-
+
-
-
-
- Demo 2
- 19??
- <unknown>
-
+
-
+
- DemoGrafika
- 19??
- <unknown>
+ Demo Grafika
+ 1985
+ KMI Borovo
-
+
Eagle
- 19??
- <unknown>
+ 1986
+ KMI Borovo
-
+
@@ -138,131 +132,131 @@
Jugador
19??
- <unknown>
+ Mario Vuletic
-
+
- JumpingJack
- 19??
- <unknown>
+ Jumping Jack
+ 1986
+ KMI Borovo
-
+
- Karate
+ Internacional Karate
19??
- <unknown>
+ KMI Borovo
-
+
Kuki
- 19??
- <unknown>
+ 1986
+ KMI Borovo
-
+
- Kvadrat
- 19??
- <unknown>
+ Magicni Kvadrat
+ 1985
+ Mario Ranogajec - Boris Korpar
-
+
Labirint
- 19??
- <unknown>
+ 1985
+ Bibi Soft
-
+
- LabirintM
+ Labirint M
19??
<unknown>
-
+
- ManicMiner
+ Manic Miner
19??
- <unknown>
+ Nenad Mihailovic
-
+
- MatchFishing
- 19??
- <unknown>
+ Match Fishing
+ 1986
+ KMI Borovo
-
+
-
- MemoNoName
+
+ Memo
19??
- <unknown>
-
-
-
-
-
-
-
-
- Memo PEL
- 19??
- <unknown>
+ PEL Soft
-
+
+
+
+
+
+
+ Memo (No Loading Screen)
+ 19??
+ PEL Soft
+
+
+
Nevidljivi
- 19??
- <unknown>
+ 1987
+ Suzy Soft
-
+
@@ -270,65 +264,65 @@
Obelix
19??
- <unknown>
+ KMI Borovo
-
+
Othello
- 19??
- <unknown>
+ 1985
+ Sasa Ivkovic
-
+
- PacMan
+ Pac-Man
19??
- <unknown>
+ Sasa Ivkovic
-
+
- PcelicaMaja
+ Pcelica Maja
19??
<unknown>
-
+
Podsjetnik
- 19??
- <unknown>
+ 1987
+ Suzy Soft
-
+
- PomorskaBitka
+ Pomorska Bitka
19??
<unknown>
-
+
@@ -339,7 +333,7 @@
<unknown>
-
+
@@ -350,29 +344,29 @@
<unknown>
-
+
-
- Sah
- 19??
- <unknown>
+
+ Figure Chess
+ 1986
+ KMI Borovo
-
+
- SintetizatorZvuka
- 19??
- <unknown>
+ Sintetizator Zvuka
+ 1987
+ Suzy Soft
-
+
@@ -380,43 +374,43 @@
Sokoban
19??
- <unknown>
+ J.P.
-
+
- SpaceInvaders
+ Space Invaders
19??
- <unknown>
+ PEL Soft
-
+
- StripAjnc
- 19??
- <unknown>
+ Strip Ajnc
+ 1985
+ Z. Bistrovic
-
+
- StripGameAinc
+ Strip Game Ainc
19??
- <unknown>
+ KMI Borovo
-
+
@@ -424,43 +418,43 @@
Tornjevi
19??
- <unknown>
+ Tom
-
+
- UkletiDvorac
+ Ukleti Dvorac
19??
<unknown>
-
+
Zid
- 19??
- <unknown>
+ 1985
+ PEL Zabavni Programi
-
+
Znakovi
- 19??
- <unknown>
+ 1987
+ Suzy Soft
-
+
diff --git a/hash/pecom_cass.xml b/hash/pecom_cass.xml
index 09368ba772f..e163452d764 100644
--- a/hash/pecom_cass.xml
+++ b/hash/pecom_cass.xml
@@ -6,109 +6,109 @@
Adresar
19??
- <unknown>
+ Ei Racunari
-
+
Bioritam
- 19??
- <unknown>
+ 1985
+ Ei Racunari
-
+
Lavirint
- 19??
- <unknown>
+ 1987
+ Ei Racunari
-
+
- LopovIBankar
- 19??
- <unknown>
+ Lopov i Bankar
+ 1985
+ Ei Racunari
-
+
- OsvajaciSvemira
- 19??
- <unknown>
+ Osvajaci Svemira
+ 1985
+ Ei Racunari
-
+
- PecomRatuje
- 19??
- <unknown>
+ Pecom Ratuje
+ 1985
+ Ei Racunari
-
+
- SamSvojKompozitor
- 19??
- <unknown>
+ Sam Svoj Kompozitor
+ 1987
+ Ei Racunari
-
+
Sljive
- 19??
- <unknown>
+ 1986
+ Ei Racunari
-
+
- SuviAjnc
- 19??
- <unknown>
+ Suvi Ajnc
+ 1986
+ Ei Racunari
-
+
- TrkaKonja
+ Trka Konja
19??
<unknown>
-
+
diff --git a/hash/pegasus_cart.xml b/hash/pegasus_cart.xml
index 1ec677ca794..7ecc8e8e923 100644
--- a/hash/pegasus_cart.xml
+++ b/hash/pegasus_cart.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/hash/pet_cass.xml b/hash/pet_cass.xml
index 8fce47a0149..0d9268ebab5 100644
--- a/hash/pet_cass.xml
+++ b/hash/pet_cass.xml
@@ -77,7 +77,7 @@
Avalon Hill
-
+
diff --git a/hash/pokemini.xml b/hash/pokemini.xml
index 690f4371ea8..e8ae6775104 100644
--- a/hash/pokemini.xml
+++ b/hash/pokemini.xml
@@ -101,6 +101,17 @@
+ Pokémon Zany Cards (Aus, Euro, USA)
+ 2001
+ Nintendo
+
+
+
+
+
+
+
+
Pokémon Zany Cards (Fra)
2001
Nintendo
@@ -133,8 +144,19 @@
+
+ Pokémon Party Mini (Jpn)
+ 2001
+ Nintendo
+
+
+
+
+
+
+
- Pokémon Party Mini (USA)
+ Pokémon Party Mini (Aus, USA)
2001
Nintendo
@@ -145,7 +167,7 @@
- Pokémon Pinball Mini (USA)
+ Pokémon Pinball Mini (Aus, Euro, USA)
2001
Nintendo
@@ -288,7 +310,7 @@
- Pokémon Puzzle Collection (USA)
+ Pokémon Puzzle Collection (Aus, Euro, USA)
2001
Nintendo
@@ -298,13 +320,24 @@
-
- Pokémon Puzzle Collection Vol. 2 (Jpn)
- 2002
+
+ Pokémon Puzzle Collection (USA, GameCube Preview)
+ 2001
Nintendo
-
+
+
+
+
+
+
+ Pokémon Puzzle Collection (Fra)
+ 2001
+ Nintendo
+
+
+
@@ -364,13 +397,13 @@
-
- Pokémon Puzzle Collection (USA, GameCube Preview)
- 2001
+
+ Pokémon Puzzle Collection Vol. 2 (Jpn)
+ 2002
Nintendo
-
+
diff --git a/hash/psion.xml b/hash/psion.xml
deleted file mode 100644
index 2a0167ce83c..00000000000
--- a/hash/psion.xml
+++ /dev/null
@@ -1,364 +0,0 @@
-
-
-
-
-
-
-
-
- Anteta Barcode Reader
- 198?
- Anteta
-
-
-
-
-
-
-
-
-
- Airnav Professional 2c
- 198?
- <unknown>
-
-
-
-
-
-
-
-
-
- AutoScribe Plus
- 1989
- Widget Software
-
-
-
-
-
-
-
-
-
- Assembler Pack 1.0
- 1989
- AR Software
-
-
-
-
-
-
-
-
-
-
- Comms Link
- 1987
- Psion Ltd
-
-
-
-
-
-
-
-
-
- Clipboard Inspection System
- 1991
- Rafiq Mahmood
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Coastal v4.2a
- 198?
- Maritek Ltd
-
-
-
-
-
-
-
-
-
- Finance
- 198?
- Aware
-
-
-
-
-
-
-
-
-
- Finance II
- 198?
- Aware
-
-
-
-
-
-
-
-
-
- Finger Organiser
- 1988
- Harvester Information Systems
-
-
-
-
-
-
-
-
-
- Fish
- 198?
- <unknown>
-
-
-
-
-
-
-
-
-
- FileMaster v3.76
- 1988
- Widget Software
-
-
-
-
-
-
-
-
-
- FNkey v3.1
- 1989
- Cubsoft
-
-
-
-
-
-
-
-
-
- Game Pack
- 198?
- <unknown>
-
-
-
-
-
-
-
-
-
- Inkasencki v6.1
- 199?
- <unknown>
-
-
-
-
-
-
-
-
-
- Maths
- 198?
- Psion
-
-
-
-
-
-
-
-
-
- ParaLink v2.0
- 198?
- Silvertree
-
-
-
-
-
-
-
-
-
- Personal Finance
- 1987
- Willow Enterprises Limited
-
-
-
-
-
-
-
-
-
- Result Vers 4L
- 1989
- Terrace Software
-
-
-
-
-
-
-
-
-
- Spreadsheet
- 1987
- Psion Ltd
-
-
-
-
-
-
-
-
-
- Top Finance v2.1f
- 1988
- Aware
-
-
-
-
-
-
-
-
-
- Travel Pack 1.5
- 1988
- Organized Solutions Ltd
-
-
-
-
-
-
-
-
-
- Formulator
- 198?
- Psion Ltd
-
-
-
-
-
-
-
-
-
- Formulator (Alt)
- 198?
- Psion Ltd
-
-
-
-
-
-
-
-
-
- Formulator Top
- 198?
- Psion Ltd
-
-
-
-
-
-
-
diff --git a/hash/psion1.xml b/hash/psion1.xml
new file mode 100644
index 00000000000..f0e6bfd1dab
--- /dev/null
+++ b/hash/psion1.xml
@@ -0,0 +1,101 @@
+
+
+
+
+ Finance Pack
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ Link Up Pack
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ Maths Pack
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ Science Pack
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Software Pack
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ Utility Pack
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Construction Pack
+ 198?
+ Wessex
+
+
+
+
+
+
+
+
+ Restaurant Guide
+ 198?
+ Psion
+
+
+
+
+
+
+
diff --git a/hash/psion2.xml b/hash/psion2.xml
new file mode 100644
index 00000000000..894caa4907a
--- /dev/null
+++ b/hash/psion2.xml
@@ -0,0 +1,1014 @@
+
+
+
+
+
+
+
+ Anteta Barcode Reader
+ 198?
+ Anteta
+
+
+
+
+
+
+
+
+
+ Airnav Professional 2c
+ 198?
+ <unknown>
+
+
+
+
+
+
+
+
+
+ Angler Pack
+ 198?
+ Skyfact Software
+
+
+
+
+
+
+
+
+
+ AutoScribe Plus v4.11
+ 1989
+ Widget Software
+
+
+
+
+
+
+
+
+
+ AutoScribe Plus v5.11
+ 198?
+ Widget Software
+
+
+
+
+
+
+
+
+
+ Assembler Pack v1.0
+ 1989
+ A.R. Software
+
+
+
+
+
+
+
+
+
+ Barcode Printer I v1.42
+ 198?
+ Gaascom Ltd.
+
+
+
+
+
+
+
+
+
+ Clipboard Inspection System
+ 1991
+ Rafiq Mahmood
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Coastal v4.2a
+ 198?
+ Maritek Ltd
+
+
+
+
+
+
+
+
+
+ The Data Organiser v2.4
+ 198?
+ Harvester Information Systems
+
+
+
+
+
+
+
+
+
+ Ferret Helper v5.1N
+ 198?
+ Ferret Information Systems
+
+
+
+
+
+
+
+
+
+ FileMaster v3.75
+ 1988
+ Widget Software
+
+
+
+
+
+
+
+
+
+ FileMaster v3.76
+ 1988
+ Widget Software
+
+
+
+
+
+
+
+
+
+ FileMaster v3.762
+ 1988
+ Widget Software
+
+
+
+
+
+
+
+
+
+ Finance Pack
+ 198?
+ Aware
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Finance Pack II
+ 198?
+ Aware
+
+
+
+
+
+
+
+
+
+ Finger Organiser v1.3
+ 198?
+ Harvester Information Systems
+
+
+
+
+
+
+
+
+
+ Finger Organiser v1.4
+ 198?
+ Harvester Information Systems
+
+
+
+
+
+
+
+
+
+ Flightmaster v2.19
+ 1993
+ Software 2000, Inc.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FnKey v3.1
+ 1989
+ Cubsoft
+
+
+
+
+
+
+
+
+
+ FnKey v4.0
+ 1989
+ Cubsoft
+
+
+
+
+
+
+
+
+
+ Form Master
+ 198?
+ Cascade Systems Ltd.
+
+
+
+
+
+
+
+
+
+ Formulator v1.1
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+
+ Formulator v2.1
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+
+ Games Organiser v0.2
+ 198?
+ Harvester Information Systems
+
+
+
+
+
+
+
+
+
+ Games Pack
+ 198?
+ S.I.S. Ltd, Psion
+
+
+
+
+
+
+
+
+
+ Games Pack (Mick Andon)
+ 198?
+ Mick Andon
+
+
+
+
+
+
+
+
+
+ Harvester Superchip v1.2
+ 198?
+ Harvester Information Systems
+
+
+
+
+
+
+
+
+
+ Inkasencki v6.1
+ 199?
+ <unknown>
+
+
+
+
+
+
+
+
+
+ Jotter v2.5
+ 198?
+ Camel Systems Ltd
+
+
+
+
+
+
+
+
+
+ Maths Pack
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+
+ Personal Finance
+ 1987
+ Willow Enterprises Ltd
+
+
+
+
+
+
+
+
+
+ Portfolio Pack
+ 198?
+ DIP, Psion
+
+
+
+
+
+
+
+
+
+ Result Vers 4L
+ 1989
+ Terrace Software
+
+
+
+
+
+
+
+
+
+ SDRP 01.05
+ 198?
+ Datacom Group Ltd.
+
+
+
+
+
+
+
+
+
+ Concise Oxford Spelling Checker
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+
+ Spreadsheet v1.2
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+
+ Spreadsheet v1.3
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+
+ Spreadsheet v3.4
+ 1987
+ Psion
+
+
+
+
+
+
+
+
+
+ Thesaurus and Spelling Checker
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+
+ Top Finance 2.1f
+ 1988
+ Aware
+
+
+
+
+
+
+
+
+
+ Travel Pack v1.2
+ 1988
+ Organised Solutions Ltd, Psion
+
+
+
+
+
+
+
+
+
+ Travel Pack v1.5
+ 1988
+ Organised Solutions Ltd, Psion
+
+
+
+
+
+
+
+
+
+ Travel Pack v2.0
+ 198?
+ Organised Solutions Ltd, Psion
+
+
+
+
+
+
+
+
+
+ XBase v2.0
+ 198?
+ Cubsoft
+
+
+
+
+
+
+
+
+
+ XBase v3.0
+ 198?
+ Cubsoft
+
+
+
+
+
+
+
+
+
+ Formulator (Alt)
+ 198?
+ Psion Ltd
+
+
+
+
+
+
+
+
+
+ Formulator Top
+ 198?
+ Psion Ltd
+
+
+
+
+
+
+
+
+
+
+ Dial-Link
+ 198?
+ Widget Software
+
+
+
+
+
+
+
+
+
+
+ Digitron SF10 v1.10
+ 198?
+ Silvertree Eng., Digitron Inst.
+
+
+
+
+
+
+
+
+
+
+ Digitron SF10 v1.14
+ 198?
+ Silvertree Eng., Digitron Inst.
+
+
+
+
+
+
+
+
+
+
+ FlashPak Driver v1.9
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+
+
+ KDG Mobrey MSP100 v1.0
+ 198?
+ KDG Mobrey
+
+
+
+
+
+
+
+
+
+
+
+ One-Way Interface
+ 198?
+ On-Line Design Inc
+
+
+
+
+
+
+
+
+
+
+
+ PsiTex v2.000
+ 198?
+ Microtima
+
+
+
+
+
+
+
+
+
+
+
+ SigSet v2.01
+ 198?
+ Microtima
+
+
+
+
+
+
+
+
+
+
+
+ Sony Lisa-1 v3.0
+ 198?
+ Sony
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RS232 Link 1.1
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ RS232 Link 1.5
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ Comms Link 2.4
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ Comms Link 2.5
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ Comms Link 3.0
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ Comms Link 4.0
+ 1987
+ Psion
+
+
+
+
+
+
+
+
+ Comms Link 4.1
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ Comms Link 4.2
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+
+ Extech Comms Printer II 4.3
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+
+ Dynapen 4.4
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ Psion Printer 1.6
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ Psion Printer 2.1
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ Psion Printer 2.2
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ Magnetic Card Reader 2.0
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ Bad Code Reader 3.1
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ Bad Code Reader 3.2
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ Pager 1.3
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ Paralink 2.0
+ 198?
+ Silvertree Engineering Ltd.
+
+
+
+
+
+
+
+
+ Paralink 3.3
+ 198?
+ Silvertree Engineering Ltd.
+
+
+
+
+
+
+
+
+ Paralink 3.4
+ 198?
+ Silvertree Engineering Ltd.
+
+
+
+
+
+
+
+
+ Andover Controls Hand-Held Operator's Terminal
+ 198?
+ Psion
+
+
+
+
+
+
+
+
+ CNF41 HART interface 1.0
+ 198?
+ Psion
+
+
+
+
+
+
+
+
diff --git a/hash/radio86_cass.xml b/hash/radio86_cass.xml
index 00a1a28510d..e6bd9cffad6 100644
--- a/hash/radio86_cass.xml
+++ b/hash/radio86_cass.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/hash/snes.xml b/hash/snes.xml
index 61d94cdec84..b02227f2749 100644
--- a/hash/snes.xml
+++ b/hash/snes.xml
@@ -428,33 +428,6 @@ Beyond that last category are the roms waiting to be classified.
-
- Ganbare Goemon 3 - Shishi Juurokubee no Karakuri Manjigatame (Jpn, Rev. B)
- 1994
- Konami
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Shinchou Kouki (Jpn, Rev. A)
1993
@@ -15249,7 +15222,7 @@ more investigation needed...
-
+
Jikkyou Powerful Pro Yakyuu 2 (Jpn)
1995
Konami
@@ -17348,7 +17321,7 @@ more investigation needed...
-
+
Mahjong Taikai II (Jpn)
1994
Koei
@@ -26411,7 +26384,7 @@ more investigation needed...
-
+
Super Mahjong Taikai (Jpn)
1992
Koei
@@ -26437,7 +26410,7 @@ more investigation needed...
-
+
Super Mahjong Taikai (Jpn, Rev. A)
1992
Koei
@@ -32492,7 +32465,7 @@ Alternate board (XL-1)
-
+
Jikkyou Powerful Pro Yakyuu 2 (Jpn, Rev. A)
1995
@@ -33158,7 +33131,7 @@ Alternate board (XL-1)
-
+
Super Mahjong Taikai (Jpn, Rev. D)
1992
@@ -35697,6 +35670,20 @@ List of unclassified roms
+
+
+ Buck Rogers - The Arcade Game (Euro, Prototype)
+ 1993
+ Electro Brain
+
+
+
+
+
+
+
+
+
Bulls vs Blazers and the NBA Playoffs (Euro, Rev. A)
1992
@@ -40045,7 +40032,7 @@ List of unclassified roms
-
+
Ganbare Goemon 3 - Shishi Juurokubee no Karakuri Manjigatame (Jpn)
1994
Konami
@@ -40063,6 +40050,33 @@ List of unclassified roms
+
+ Ganbare Goemon 3 - Shishi Juurokubee no Karakuri Manjigatame (Jpn, Rev. B)
+ 1994
+ Konami
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Ganbare Goemon Kirakira Douchuu - Boku ga Dancer ni Natta Wake (Jpn, Rev. B, NP)
1995
@@ -43057,6 +43071,24 @@ List of unclassified roms
+
+ Jikkyou Powerful Pro Yakyuu 2 (Jpn, Rev. B)
+ 1995
+ Konami
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Jikkyou Powerful Pro Yakyuu 3 - '97 Haru (Jpn, Rev. A)
1997
@@ -46106,6 +46138,21 @@ List of unclassified roms
+
+ Magical Drop 2 (Jpn, Bunka Housou Special Version)
+ 1996
+ Data East
+
+
+
+
+
+
+
+
+
+
+
Magical Pop'n (Jpn)
1995
@@ -46267,6 +46314,23 @@ List of unclassified roms
+
+ Mahjong Taikai II (Jpn, Rev. A)
+ 1994
+ Koei
+
+
+
+
+
+
+
+
+
+
+
+
+
The Mahjong Touhaiden (Jpn)
1993
@@ -50629,6 +50693,18 @@ List of unclassified roms
+
+ Pinkie (USA, Prototype)
+ 1995
+ Data Design
+
+
+
+
+
+
+
+
Pinocchio (Jpn)
1996
@@ -57256,7 +57332,7 @@ List of unclassified roms
-
+
Super Mahjong Taikai (Jpn, Rev. C)
1992
Koei
@@ -57273,6 +57349,23 @@ List of unclassified roms
+
+ Super Mahjong Taikai (Jpn, Rev. E)
+ 1992
+ Koei
+
+
+
+
+
+
+
+
+
+
+
+
+
Super Mario - Yossy Island (Jpn, Rev. A)
1995
diff --git a/hash/sol20_cass.xml b/hash/sol20_cass.xml
new file mode 100644
index 00000000000..1e110c44f4a
--- /dev/null
+++ b/hash/sol20_cass.xml
@@ -0,0 +1,149 @@
+
+
+
+
+
+ 2 Programs in 1
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+ Metron Computerware
+ 1977
+ Tiny C Associates
+
+
+
+
+
+
+
+
+
+ Pilot
+ 19??
+ Processor Techonolgy
+
+
+
+
+
+
+
+
+
+ Proteus Cassete #1
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+ Proteus Cassete #2
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+ Proteus Cassete #3
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+ Proteus Cassete #7
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+ Proteus Cassete #8
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+ Sol Printer
+ 19??
+ Processor Techonolgy
+
+
+
+
+
+
+
+
+
+ Spaces Games
+ 19??
+ Creative Computing Software
+
+
+
+
+
+
+
+
+
+ Strategy Games
+ 19??
+ Creative Computing Software
+
+
+
+
+
+
+
+
+
+ Strategy Games (Alt)
+ 19??
+ Creative Computing Software
+
+
+
+
+
+
+
+
+
diff --git a/hash/sorcerer_cart.xml b/hash/sorcerer_cart.xml
index 9bfab8170b5..ba30c26fb39 100644
--- a/hash/sorcerer_cart.xml
+++ b/hash/sorcerer_cart.xml
@@ -17,7 +17,7 @@ Four cartridges were made for this computer one of which was a hardware device,
Exidy Standard Basic v1.0
1978
- Exidy Inc.
+ Exidy
@@ -29,7 +29,7 @@ Four cartridges were made for this computer one of which was a hardware device,
Exidy Z80 Development Pac
1979
- Exidy Inc.
+ Exidy
@@ -41,7 +41,7 @@ Four cartridges were made for this computer one of which was a hardware device,
Exidy Word Processor Pac
1978
- Exidy Inc.
+ Exidy
@@ -50,7 +50,7 @@ Four cartridges were made for this computer one of which was a hardware device,
-
+
Exidy Standard Modified Basic v1.01
1980
diff --git a/hash/sorcerer_cass.xml b/hash/sorcerer_cass.xml
index b6db7dd7b12..6d05dcf0276 100644
--- a/hash/sorcerer_cass.xml
+++ b/hash/sorcerer_cass.xml
@@ -5,10 +5,11 @@
-
+
Chomp
1981
W. S. King
+
@@ -16,10 +17,11 @@
-
+
Eliza
19??
<unknown>
+
@@ -27,10 +29,11 @@
-
+
Galaxians
19??
<unknown>
+
@@ -38,4 +41,129 @@
-
\ No newline at end of file
+
+
+
+
+
+ Eliza (Alt)
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+ DEMO1 (Bad?)
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+ DEMO2
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+ DEMO3
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+ DEMO4
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+ DEMO5
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+ DEMO6
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+ DEMO7
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+ DEMO8
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+ Martian Invaders (Bad?)
+ 1980?
+ <unknown>
+
+
+
+
+
+
+
+
+
+
diff --git a/hash/spc1000_cass.xml b/hash/spc1000_cass.xml
index a227099faaa..5c2635ae55c 100644
--- a/hash/spc1000_cass.xml
+++ b/hash/spc1000_cass.xml
@@ -1005,6 +1005,7 @@
Toiyar
198?
Sammi Computer
+
diff --git a/hash/spectrum_flop.xml b/hash/specpls3_flop.xml
similarity index 100%
rename from hash/spectrum_flop.xml
rename to hash/specpls3_flop.xml
diff --git a/hash/spectrum.xml b/hash/spectrum_cart.xml
similarity index 99%
rename from hash/spectrum.xml
rename to hash/spectrum_cart.xml
index 3d6867c1241..e181f9feb3b 100644
--- a/hash/spectrum.xml
+++ b/hash/spectrum_cart.xml
@@ -7,7 +7,7 @@
7 unreleased prototypes are included in this collection.
-->
-
+
Backgammon
diff --git a/hash/ut88.xml b/hash/ut88.xml
index e9ca0a4771b..54ecab9550d 100644
--- a/hash/ut88.xml
+++ b/hash/ut88.xml
@@ -4,7 +4,7 @@
- BASIC80
+ Mikro/80 BASIC
19??
<unknown>
@@ -15,7 +15,7 @@
- CH$COM
+ Changer (v1.1) (CP/M)
19??
<unknown>
@@ -26,7 +26,7 @@
- CPM35
+ CP/M (v2.2, 35K)
19??
<unknown>
@@ -36,8 +36,8 @@
-
- CPM64
+
+ CP/M (v2.2, 256K)
19??
<unknown>
@@ -48,7 +48,7 @@
- TETRIS
+ Tetris
19??
<unknown>
diff --git a/hash/vreader.xml b/hash/vreader.xml
index 75837b8844e..6379cd82362 100644
--- a/hash/vreader.xml
+++ b/hash/vreader.xml
@@ -47,3 +47,4 @@ Language:
-->
+
diff --git a/hash/vsmile_cd.xml b/hash/vsmile_cd.xml
index f91b29c92b8..0658e971fdc 100644
--- a/hash/vsmile_cd.xml
+++ b/hash/vsmile_cd.xml
@@ -17,8 +17,8 @@ Language:
********7 = Spain
80-093000(US) | The Crystal Ball Adventures
-80-093004(GE) | Das zauberhafte Märchenabenteuer
-80-093005(FR) | L'aventure enchantée
+80-093004(GE) | Das zauberhafte Märchenabenteuer
+80-093005(FR) | L'aventure enchantée
80-093007(SP) | El Castillo de las Princesas
-
80-093020(US) | The Incredibles - Mission Incredible
@@ -33,7 +33,7 @@ Language:
-
80-093060(US) | The Amazing Spider-Man - Countdown to Doom
80-093064(GE) | Spiderman - Angriff der Superschurken
-80-093065(FR) | Spider-Man - Course-poursuite à Manhattan
+80-093065(FR) | Spider-Man - Course-poursuite à Manhattan
80-093067(SP) | El Asombroso Spider-Man - Persecucion en la Cuidad
-
80-093080(US) | Scooby-Doo! - Ancient Adventure
@@ -43,12 +43,12 @@ Language:
80-093087(SP) | Scooby-Doo - Viaje al Pasdao
-
80-093100(US) | Cars - In The Fast Lane
-80-093104(GE) | Cars - Auf der Überholspur
+80-093104(GE) | Cars - Auf der Überholspur
80-093105(FR) | Cars - A Fond la Caisse!
80-093107(SP) | Cars - El Carril Rapido
-
80-093120(US) | Wacky Race on Jumpin' Bean Island
-80-093124(GE) | Das verrückte Rennen auf der Hüpf-Bohnen-Insel
+80-093124(GE) | Das verrückte Rennen auf der Hüpf-Bohnen-Insel
80-093127(SP) | Carrera Loca - En La Isla de las Vainas Fritas (real# unknown)
-
80-093140(US) | Shrek The Third - The Search for Arthur
diff --git a/hash/x07_cass.xml b/hash/x07_cass.xml
new file mode 100644
index 00000000000..f21bb05e504
--- /dev/null
+++ b/hash/x07_cass.xml
@@ -0,0 +1,1385 @@
+
+
+
+
+
+
+
+ Canon X-07 Calc (Fra)
+ 19??
+ Logi'stick
+
+
+
+
+
+
+
+
+
+
+
+
+ 3-D Labyrinthe (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ 3D Munch (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3D-Turbo (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Adventure-Land (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+ Amerinca Gold (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Amidar - Le Peintre (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+ Assembleur Désassembleur (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+ Aventurier (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ BASIC Étendu (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ BASIX 07 (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Bataille dans la Galaxie (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+ Beach-Head (Fra, Incomplete)
+ 1987
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Belote (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Calcul (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Calculatrice (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Canon Burger (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Canon Runner (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Canon-Calc (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Canon-Graff (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Carré Diabolique II (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ CarWar (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Catch-Mean (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Chenille (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Chevalier Lancelot. (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Le Chateau Maudit (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Courbes (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+ Defenseur (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Desassembleur (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+ DESASS-ASM (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Destruction (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Donjon (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ E.D.F. (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Eudipe (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Fifine la Tortue (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Finances (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ FONTIX+ (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Force 8 (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Formule 1 (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ France (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Générateur Musical (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+ Gentleman Cambrioleur (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Golf Miniature (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Jeu de Ponts (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Jeux d'Hiver (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Joe Dalt'Kid (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Judoka (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Jump (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Key Programmer (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ LABYR (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Liaisons (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Lion (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Lucky Joe (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Mathématiques (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+ Mines (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Mini-Géo (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Multigraph (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Music Maker (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pac-Man (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+ Panic Bank (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Patrouilleur de l'Espace (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pin-Up (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Piste (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Le Prix du Danger (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Puzzle (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Rendez-Vous (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Renum Auto (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Runner (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+ Sante7 (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Sea War (Fra, Trancart)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SeaWar (Fra, Jorden)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Serpentine (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Le Sorcier Maudit (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Space (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Space-Panic (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Star-War (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+ Stat (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Strip X07 (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Super Glouton (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Synthétiseur (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Temple (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Tic-Tac-Toe (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+ Tron (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ U~Boat (Fra)
+ 1986
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Un Homme à Abattre (Fra)
+ 1985
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ X07 CAR (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+ Utilitaires (Fra)
+ 1984
+ <type-in>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/makefile b/makefile
index 0c7aac71a64..5584f847e92 100644
--- a/makefile
+++ b/makefile
@@ -910,7 +910,7 @@ $(EMULATOR): $(EMUINFOOBJ) $(DRIVLISTOBJ) $(DRVLIBS) $(LIBOSD) $(LIBBUS) $(LIBOP
$(CC) $(CDEFS) $(CFLAGS) -c $(SRC)/version.c -o $(VERSIONOBJ)
@echo Linking $@...
ifeq ($(TARGETOS),emscripten)
- # Emscripten's linker seems to be stricter about the ordering of .a files
+# Emscripten's linker seems to be stricter about the ordering of .a files
$(LD) $(LDFLAGS) $(LDFLAGSEMULATOR) $(VERSIONOBJ) -Wl,--start-group $^ -Wl,--end-group $(LIBS) -o $@
else
$(LD) $(LDFLAGS) $(LDFLAGSEMULATOR) $(VERSIONOBJ) $^ $(LIBS) -o $@
diff --git a/src/build/flags_clang.mak b/src/build/flags_clang.mak
index 5aaa56d1c8b..daa2fee187c 100644
--- a/src/build/flags_clang.mak
+++ b/src/build/flags_clang.mak
@@ -20,10 +20,8 @@ ifeq ($(findstring 3.5,$(TEST_CLANG)),3.5)
CCOMFLAGS += -Wno-inline-new-delete
# caused by src/mess/drivers/x07.c, src/osd/sdl/window.c, src/emu/sound/disc_mth.inc
CCOMFLAGS += -Wno-absolute-value
-# caused by src/emu/bus/isa/s3virge.c, src/emu/cpu/drcfe.c, src/emu/video/pc_vga.c
-CCOMFLAGS +=-Wno-dynamic-class-memaccess
# these were disabled because of bugs in older clang versions
-CCOMFLAGS += -Wformat-security
+CCOMFLAGS += -Wformat-security -Wconstant-logical-operand
# these show up when compiling as c++11
CCOMFLAGS += -Wno-deprecated-register -Wno-reserved-user-defined-literal -Wno-c++11-narrowing
# TODO: add proper detection of XCode 6.0.1
diff --git a/src/emu/bus/a2bus/a2pic.c b/src/emu/bus/a2bus/a2pic.c
index f22f89177c5..1e59f3673c9 100644
--- a/src/emu/bus/a2bus/a2pic.c
+++ b/src/emu/bus/a2bus/a2pic.c
@@ -22,7 +22,7 @@ const device_type A2BUS_PIC = &device_creator;
#define PIC_CENTRONICS_TAG "pic_ctx"
MACHINE_CONFIG_FRAGMENT( pic )
- MCFG_CENTRONICS_ADD(PIC_CENTRONICS_TAG, centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD(PIC_CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_DATA_INPUT_BUFFER("ctx_data_in")
MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(a2bus_pic_device, ack_w))
diff --git a/src/emu/bus/abckb/abc99.c b/src/emu/bus/abckb/abc99.c
index a4272a52213..972067ddf23 100644
--- a/src/emu/bus/abckb/abc99.c
+++ b/src/emu/bus/abckb/abc99.c
@@ -49,7 +49,6 @@ Notes:
- verify cursor keys
- language DIP
- mouse
- - investigate unknown ROMs
- MCS-48 PC:01DC - Unimplemented opcode = 75
- 75 = ENT0 CLK : enable CLK (unscaled_clock/3) output on T0
- halt Z2 when Z5 is reset, resume Z2 when Z5 executes ENT0 CLK instruction
@@ -81,15 +80,17 @@ const device_type ABC99 = &device_creator;
//-------------------------------------------------
ROM_START( abc99 )
- ROM_REGION( 0x800, I8035_Z2_TAG, 0 )
- ROM_LOAD( "107268-17.z3", 0x000, 0x800, CRC(2f60cc35) SHA1(ebc6af9cd0a49a0d01698589370e628eebb6221c) )
+ ROM_DEFAULT_BIOS("107268")
+ ROM_SYSTEM_BIOS( 0, "107268", "107268-17" )
+ ROM_SYSTEM_BIOS( 1, "106819", "106819-09" )
+
+ ROM_REGION( 0x1000, I8035_Z2_TAG, 0 )
+ ROMX_LOAD( "107268-17.z3", 0x0000, 0x0800, CRC(2f60cc35) SHA1(ebc6af9cd0a49a0d01698589370e628eebb6221c), ROM_BIOS(1) )
+ ROMX_LOAD( "106819-09.z3", 0x0000, 0x1000, CRC(ffe32a71) SHA1(fa2ce8e0216a433f9bbad0bdd6e3dc0b540f03b7), ROM_BIOS(2) ) // ABC 99 6490423-01
ROM_REGION( 0x800, I8035_Z5_TAG, 0 )
- ROM_LOAD( "107268-16.z6", 0x000, 0x800, CRC(785ec0c6) SHA1(0b261beae20dbc06fdfccc50b19ea48b5b6e22eb) )
-
- ROM_REGION( 0x1800, "unknown", 0)
- ROM_LOAD( "106819-09.bin", 0x0000, 0x1000, CRC(ffe32a71) SHA1(fa2ce8e0216a433f9bbad0bdd6e3dc0b540f03b7) )
- ROM_LOAD( "107268-64.bin", 0x1000, 0x0800, CRC(e33683ae) SHA1(0c1d9e320f82df05f4804992ef6f6f6cd20623f3) )
+ ROMX_LOAD( "107268-16.z6", 0x0000, 0x0800, CRC(785ec0c6) SHA1(0b261beae20dbc06fdfccc50b19ea48b5b6e22eb), ROM_BIOS(1) )
+ ROMX_LOAD( "107268-64.z6", 0x0000, 0x0800, CRC(e33683ae) SHA1(0c1d9e320f82df05f4804992ef6f6f6cd20623f3), ROM_BIOS(2) )
ROM_END
@@ -108,7 +109,7 @@ const rom_entry *abc99_device::device_rom_region() const
//-------------------------------------------------
static ADDRESS_MAP_START( abc99_z2_mem, AS_PROGRAM, 8, abc99_device )
- AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION(I8035_Z2_TAG, 0)
+ AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION(I8035_Z2_TAG, 0)
ADDRESS_MAP_END
@@ -488,24 +489,24 @@ inline void abc99_device::scan_mouse()
// abc99_device - constructor
//-------------------------------------------------
-abc99_device::abc99_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, ABC99, "Luxor ABC 99", tag, owner, clock, "abc99", __FILE__),
- abc_keyboard_interface(mconfig, *this),
- m_maincpu(*this, I8035_Z2_TAG),
- m_mousecpu(*this, I8035_Z5_TAG),
- m_speaker(*this, "speaker"),
- m_z14(*this, "Z14"),
- m_mouseb(*this, "MOUSEB"),
- m_si(1),
- m_si_en(1),
- m_so_z2(1),
- m_so_z5(1),
- m_keydown(0),
- m_t1_z2(0),
- m_t1_z5(0),
- m_led_en(0),
- m_reset(1),
- m_txd(1)
+abc99_device::abc99_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, ABC99, "Luxor ABC 99", tag, owner, clock, "abc99", __FILE__),
+ abc_keyboard_interface(mconfig, *this),
+ m_maincpu(*this, I8035_Z2_TAG),
+ m_mousecpu(*this, I8035_Z5_TAG),
+ m_speaker(*this, "speaker"),
+ m_z14(*this, "Z14"),
+ m_mouseb(*this, "MOUSEB"),
+ m_si(1),
+ m_si_en(1),
+ m_so_z2(1),
+ m_so_z5(1),
+ m_keydown(0),
+ m_t1_z2(0),
+ m_t1_z5(0),
+ m_led_en(0),
+ m_reset(1),
+ m_txd(1)
{
}
diff --git a/src/emu/bus/adam/ide.c b/src/emu/bus/adam/ide.c
index 8b8772b3292..0eb1dd087ea 100644
--- a/src/emu/bus/adam/ide.c
+++ b/src/emu/bus/adam/ide.c
@@ -65,7 +65,7 @@ const rom_entry *powermate_ide_device::device_rom_region() const
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( adam_ata )
MCFG_ATA_INTERFACE_ADD(ATA_TAG, ata_devices, "hdd", NULL, false)
- MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
MACHINE_CONFIG_END
diff --git a/src/emu/bus/adamnet/spi.c b/src/emu/bus/adamnet/spi.c
index f45abbe2672..8b0c5e15d52 100644
--- a/src/emu/bus/adamnet/spi.c
+++ b/src/emu/bus/adamnet/spi.c
@@ -85,7 +85,7 @@ static MACHINE_CONFIG_FRAGMENT( adam_spi )
MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
- MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in")
MCFG_DEVICE_ADD("cent_data_in", INPUT_BUFFER, 0)
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
diff --git a/src/emu/bus/astrocde/exp.c b/src/emu/bus/astrocde/exp.c
new file mode 100644
index 00000000000..53ff66213d7
--- /dev/null
+++ b/src/emu/bus/astrocde/exp.c
@@ -0,0 +1,85 @@
+// license:BSD-3-Clause
+// copyright-holders:etabeta
+/***********************************************************************************************************
+
+ Bally Astrocade Expansion port
+
+ ***********************************************************************************************************/
+
+
+#include "emu.h"
+#include "exp.h"
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+const device_type ASTROCADE_EXP_SLOT = &device_creator;
+
+
+device_astrocade_card_interface::device_astrocade_card_interface(const machine_config &mconfig, device_t &device)
+ : device_slot_card_interface(mconfig, device)
+{
+}
+
+
+device_astrocade_card_interface::~device_astrocade_card_interface()
+{
+}
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// astrocade_exp_device - constructor
+//-------------------------------------------------
+astrocade_exp_device::astrocade_exp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, ASTROCADE_EXP_SLOT, "Bally Astrocade expansion", tag, owner, clock, "astrocde_exp", __FILE__),
+ device_slot_interface(mconfig, *this),
+ m_card_mounted(false)
+{
+}
+
+
+//-------------------------------------------------
+// astrocade_exp_device - destructor
+//-------------------------------------------------
+
+astrocade_exp_device::~astrocade_exp_device()
+{
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void astrocade_exp_device::device_start()
+{
+ m_card = dynamic_cast(get_card_device());
+ if (m_card)
+ m_card_mounted = true;
+}
+
+/*-------------------------------------------------
+ read
+ -------------------------------------------------*/
+
+READ8_MEMBER(astrocade_exp_device::read)
+{
+ if (m_card)
+ return m_card->read(space, offset);
+ else
+ return 0xff;
+}
+
+/*-------------------------------------------------
+ write
+ -------------------------------------------------*/
+
+WRITE8_MEMBER(astrocade_exp_device::write)
+{
+ if (m_card)
+ m_card->write(space, offset, data);
+}
diff --git a/src/emu/bus/astrocde/exp.h b/src/emu/bus/astrocde/exp.h
new file mode 100644
index 00000000000..bbd8c0b6465
--- /dev/null
+++ b/src/emu/bus/astrocde/exp.h
@@ -0,0 +1,57 @@
+// license:BSD-3-Clause
+// copyright-holders:etabeta
+#ifndef __ASTROCADE_EXP_H
+#define __ASTROCADE_EXP_H
+
+// ======================> device_astrocade_card_interface
+
+class device_astrocade_card_interface : public device_slot_card_interface
+{
+public:
+ // construction/destruction
+ device_astrocade_card_interface(const machine_config &mconfig, device_t &device);
+ virtual ~device_astrocade_card_interface();
+
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read) { return 0xff; }
+ virtual DECLARE_WRITE8_MEMBER(write) {}
+
+protected:
+};
+
+
+// ======================> astrocade_exp_device
+
+class astrocade_exp_device : public device_t,
+ public device_slot_interface
+{
+public:
+ // construction/destruction
+ astrocade_exp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ virtual ~astrocade_exp_device();
+
+ // device-level overrides
+ virtual void device_start();
+
+ bool get_card_mounted() { return m_card_mounted; }
+
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read);
+ virtual DECLARE_WRITE8_MEMBER(write);
+
+protected:
+ bool m_card_mounted;
+ device_astrocade_card_interface* m_card;
+};
+
+
+
+// device type definition
+extern const device_type ASTROCADE_EXP_SLOT;
+
+
+#define MCFG_ASTROCADE_EXPANSION_SLOT_ADD(_tag, _slot_intf, _def_slot) \
+ MCFG_DEVICE_ADD(_tag, ASTROCADE_EXP_SLOT, 0) \
+ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
+
+#endif
diff --git a/src/emu/bus/astrocde/ram.c b/src/emu/bus/astrocde/ram.c
new file mode 100644
index 00000000000..41f79e176e9
--- /dev/null
+++ b/src/emu/bus/astrocde/ram.c
@@ -0,0 +1,213 @@
+// license:BSD-3-Clause
+// copyright-holders:etabeta
+/***********************************************************************************************************
+
+
+ Bally Astrocade RAM expansion emulation
+
+ RAM Expansions (info below courtesy of Paul Thacker)
+
+ Several third party RAM expansions have been made for the Astrocade. These
+ allow access to various ranges of the expansion memory ($5000 to $FFFF).
+ A RAM expansion is required to use extended BASIC programs like Blue RAM BASIC
+ and VIPERSoft BASIC. All of the expansions also have a RAM protect switch, which
+ can be flipped at any time to make the RAM act like ROM. Extended BASIC
+ programs need access to the RAM and won't work with RAM protect enabled, but
+ this can be useful with Bally and Astrocade BASIC. They also have a range switch
+ (not implemented). The default position is 6K, but it can be switched to
+ 2K. This means that the expanded memory starting at $6000 will instead be
+ mapped to the cartridge memory starting at $2000. So it would be possible to
+ load a cartridge program from tape into the expansion memory, then flip the range
+ switch and run it as a cartridge. This is useful for cartridge development.
+
+ Blue RAM -- available in 4K, 16K, and 32K. These also use an INS8154 chip,
+ (not yet implemented) which has an additional $80 bytes of RAM mapped
+ immediately after the end of the expansion address space. This memory
+ can't be write protected. The INS8154 has I/O features needed for loading
+ tape programs into Blue RAM BASIC, as well as running the Blue RAM Utility cart.
+ 4K: $6000 to $6FFF (can't run VIPERSoft BASIC, because this program needs memory
+ past this range)
+ 16K: $6000 to $9FFF
+ 32K: $6000 to $DFFF
+
+ VIPER System 1 -- This is available in 16K only. It also includes a keyboard (not implemented).
+ 16K: $6000 to $9FFF
+
+ Lil' WHITE RAM -- This is available in 32K only. Attempts to read and write
+ to memory outside of its address range ($D000 to $FFFF) are mapped to the expansion
+ memory $5000 to $7FFF. The current implementation won't allow the shadow RAM area
+ to be accessed when RAM protect is on, but there is no known software that will
+ access the upper range of the expansion RAM when RAM protect is enabled.
+ 32K: $5000 to $CFFF
+
+ R&L 64K RAM Board -- This is a highly configurable kit. RAM can be installed in
+ 2K increments. So, the entire 44K expansion memory can be filled. It is also
+ possible to override the rest of the memory map with RAM (not implemented).
+ There are 32 switches allowing users to activate and deactivate each 2K block (not implemented).
+ RAM write protection can be implemented in three ranges through jumpers or by
+ installing switches. The ranges are $0000 to $0FFF (first 4K), $0000 to $3FFF (first 16K),
+ and $0000 to $FFFF (all 64K). The current implementation is for 44K expansion memory mapped from
+ $5000 to $FFFF, with only a single write protect covering this entire range.
+
+ ***********************************************************************************************************/
+
+
+#include "emu.h"
+#include "ram.h"
+
+
+//-------------------------------------------------
+// astrocade_rom_device - constructor
+//-------------------------------------------------
+
+const device_type ASTROCADE_BLUERAM_4K = &device_creator;
+const device_type ASTROCADE_BLUERAM_16K = &device_creator;
+const device_type ASTROCADE_BLUERAM_32K = &device_creator;
+const device_type ASTROCADE_VIPER_SYS1 = &device_creator;
+const device_type ASTROCADE_WHITERAM = &device_creator;
+const device_type ASTROCADE_RL64RAM = &device_creator;
+
+
+astrocade_blueram_4k_device::astrocade_blueram_4k_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
+ : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ device_astrocade_card_interface(mconfig, *this),
+ m_write_prot(*this, "RAM_PROTECT")
+{
+}
+
+astrocade_blueram_4k_device::astrocade_blueram_4k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, ASTROCADE_BLUERAM_4K, "Bally Astrocade Blue RAM 4K", tag, owner, clock, "astrocade_br4", __FILE__),
+ device_astrocade_card_interface(mconfig, *this),
+ m_write_prot(*this, "RAM_PROTECT")
+{
+}
+
+astrocade_blueram_16k_device::astrocade_blueram_16k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : astrocade_blueram_4k_device(mconfig, ASTROCADE_BLUERAM_16K, "Bally Astrocade Blue RAM 16K", tag, owner, clock, "astrocade_br16", __FILE__)
+{
+}
+
+astrocade_blueram_32k_device::astrocade_blueram_32k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : astrocade_blueram_4k_device(mconfig, ASTROCADE_BLUERAM_32K, "Bally Astrocade Blue RAM 32K", tag, owner, clock, "astrocade_br32", __FILE__)
+{
+}
+
+astrocade_viper_sys1_device::astrocade_viper_sys1_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, ASTROCADE_VIPER_SYS1, "Bally Astrocade Viper System 1", tag, owner, clock, "astrocade_vs1", __FILE__),
+ device_astrocade_card_interface(mconfig, *this),
+ m_write_prot(*this, "RAM_PROTECT")
+{
+}
+
+astrocade_whiteram_device::astrocade_whiteram_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, ASTROCADE_WHITERAM, "Bally Astrocade Lil' White RAM 32K", tag, owner, clock, "astrocade_lwr", __FILE__),
+ device_astrocade_card_interface(mconfig, *this),
+ m_write_prot(*this, "RAM_PROTECT")
+{
+}
+
+astrocade_rl64ram_device::astrocade_rl64ram_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, ASTROCADE_RL64RAM, "Bally Astrocade R&L RAM 64K", tag, owner, clock, "astrocade_rl64", __FILE__),
+ device_astrocade_card_interface(mconfig, *this),
+ m_write_prot(*this, "RAM_PROTECT")
+{
+}
+
+
+//-------------------------------------------------
+// RAM Write protect switch
+//-------------------------------------------------
+
+static INPUT_PORTS_START( exp_switches )
+ PORT_START("RAM_PROTECT")
+ PORT_CONFNAME( 0x01, 0x00, "Write Protect RAM")
+ PORT_CONFSETTING( 0x00, DEF_STR(Off))
+ PORT_CONFSETTING( 0x01, DEF_STR(On))
+INPUT_PORTS_END
+
+
+ioport_constructor astrocade_blueram_4k_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( exp_switches );
+}
+
+ioport_constructor astrocade_viper_sys1_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( exp_switches );
+}
+
+ioport_constructor astrocade_whiteram_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( exp_switches );
+}
+
+ioport_constructor astrocade_rl64ram_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( exp_switches );
+}
+
+/*-------------------------------------------------
+ specific handlers
+ -------------------------------------------------*/
+
+// Blue RAM expansions have RAM starting at 0x6000, up to the RAM size
+READ8_MEMBER(astrocade_blueram_4k_device::read)
+{
+ if (offset >= 0x1000 && offset < 0x1000 + m_ram.bytes())
+ return m_ram[offset - 0x1000];
+ else
+ return 0;
+}
+
+WRITE8_MEMBER(astrocade_blueram_4k_device::write)
+{
+ if (offset >= 0x1000 && offset < 0x1000 + m_ram.bytes() && !m_write_prot->read())
+ m_ram[offset - 0x1000] = data;
+}
+
+
+
+// Viper System 1 expansion has RAM in 0x6000-0x9fff
+READ8_MEMBER(astrocade_viper_sys1_device::read)
+{
+ if (offset >= 0x1000 && offset < 0xa000)
+ return m_ram[offset - 0x1000];
+ else
+ return 0;
+}
+
+WRITE8_MEMBER(astrocade_viper_sys1_device::write)
+{
+ if (offset >= 0x1000 && offset < 0xa000 && !m_write_prot->read())
+ m_ram[offset - 0x1000] = data;
+}
+
+
+
+// Lil' WHITE RAM expansion has RAM in 0x5000-0xcfff + a mirror of the first 0x3000 bytes up to 0xffff
+READ8_MEMBER(astrocade_whiteram_device::read)
+{
+ return m_ram[offset % 0x8000];
+}
+
+WRITE8_MEMBER(astrocade_whiteram_device::write)
+{
+ if (!m_write_prot->read())
+ m_ram[offset % 0x8000] = data;
+}
+
+
+
+// R&L 64K RAM Board (44KB installed) has RAM in 0x5000-0xffff
+READ8_MEMBER(astrocade_rl64ram_device::read)
+{
+ return m_ram[offset];
+}
+
+WRITE8_MEMBER(astrocade_rl64ram_device::write)
+{
+ if (!m_write_prot->read())
+ m_ram[offset] = data;
+}
+
+
diff --git a/src/emu/bus/astrocde/ram.h b/src/emu/bus/astrocde/ram.h
new file mode 100644
index 00000000000..8434249cdee
--- /dev/null
+++ b/src/emu/bus/astrocde/ram.h
@@ -0,0 +1,135 @@
+// license:BSD-3-Clause
+// copyright-holders:etabeta
+#ifndef __ASTROCADE_RAM_H
+#define __ASTROCADE_RAM_H
+
+#include "exp.h"
+
+
+// ======================> astrocade_blueram_4k_device
+
+class astrocade_blueram_4k_device : public device_t,
+ public device_astrocade_card_interface
+{
+public:
+ // construction/destruction
+ astrocade_blueram_4k_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
+ astrocade_blueram_4k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual void device_start() { m_ram.resize(0x1000); save_item(NAME(m_ram)); }
+ virtual void device_reset() {}
+ virtual ioport_constructor device_input_ports() const;
+
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read);
+ virtual DECLARE_WRITE8_MEMBER(write);
+
+protected:
+ dynamic_buffer m_ram;
+ required_ioport m_write_prot;
+};
+
+// ======================> astrocade_blueram_16k_device
+
+class astrocade_blueram_16k_device : public astrocade_blueram_4k_device
+{
+public:
+ // construction/destruction
+ astrocade_blueram_16k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ virtual void device_start() { m_ram.resize(0x4000); save_item(NAME(m_ram)); }
+};
+
+// ======================> astrocade_blueram_32k_device
+
+class astrocade_blueram_32k_device : public astrocade_blueram_4k_device
+{
+public:
+ // construction/destruction
+ astrocade_blueram_32k_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ virtual void device_start() { m_ram.resize(0x8000); save_item(NAME(m_ram)); }
+};
+
+// ======================> astrocade_viper_sys1_device
+
+class astrocade_viper_sys1_device : public device_t,
+ public device_astrocade_card_interface
+{
+public:
+ // construction/destruction
+ astrocade_viper_sys1_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual void device_start() { m_ram.resize(0x4000); save_item(NAME(m_ram)); }
+ virtual void device_reset() {}
+ virtual ioport_constructor device_input_ports() const;
+
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read);
+ virtual DECLARE_WRITE8_MEMBER(write);
+
+private:
+ dynamic_buffer m_ram;
+ required_ioport m_write_prot;
+};
+
+// ======================> astrocade_whiteram_device
+
+class astrocade_whiteram_device : public device_t,
+ public device_astrocade_card_interface
+{
+public:
+ // construction/destruction
+ astrocade_whiteram_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual void device_start() { m_ram.resize(0x8000); save_item(NAME(m_ram)); }
+ virtual void device_reset() {}
+ virtual ioport_constructor device_input_ports() const;
+
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read);
+ virtual DECLARE_WRITE8_MEMBER(write);
+
+private:
+ dynamic_buffer m_ram;
+ required_ioport m_write_prot;
+};
+
+// ======================> astrocade_rl64ram_device
+
+class astrocade_rl64ram_device : public device_t,
+ public device_astrocade_card_interface
+{
+public:
+ // construction/destruction
+ astrocade_rl64ram_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual void device_start() { m_ram.resize(0xb000); save_item(NAME(m_ram)); }
+ virtual void device_reset() {}
+ virtual ioport_constructor device_input_ports() const;
+
+ // reading and writing
+ virtual DECLARE_READ8_MEMBER(read);
+ virtual DECLARE_WRITE8_MEMBER(write);
+
+private:
+ dynamic_buffer m_ram;
+ required_ioport m_write_prot;
+};
+
+
+
+// device type definition
+extern const device_type ASTROCADE_BLUERAM_4K;
+extern const device_type ASTROCADE_BLUERAM_16K;
+extern const device_type ASTROCADE_BLUERAM_32K;
+extern const device_type ASTROCADE_VIPER_SYS1;
+extern const device_type ASTROCADE_WHITERAM;
+extern const device_type ASTROCADE_RL64RAM;
+
+
+#endif
diff --git a/src/emu/bus/bus.mak b/src/emu/bus/bus.mak
index f7e8b67e8d8..9a7420d11a9 100644
--- a/src/emu/bus/bus.mak
+++ b/src/emu/bus/bus.mak
@@ -129,6 +129,8 @@ ifneq ($(filter ASTROCADE,$(BUSES)),)
OBJDIRS += $(BUSOBJ)/astrocde
BUSOBJS += $(BUSOBJ)/astrocde/slot.o
BUSOBJS += $(BUSOBJ)/astrocde/rom.o
+BUSOBJS += $(BUSOBJ)/astrocde/exp.o
+BUSOBJS += $(BUSOBJ)/astrocde/ram.o
endif
@@ -331,6 +333,7 @@ BUSOBJS += $(BUSOBJ)/dmv/dmvbus.o
BUSOBJS += $(BUSOBJ)/dmv/k220.o
BUSOBJS += $(BUSOBJ)/dmv/k230.o
BUSOBJS += $(BUSOBJ)/dmv/k233.o
+BUSOBJS += $(BUSOBJ)/dmv/k803.o
BUSOBJS += $(BUSOBJ)/dmv/k806.o
BUSOBJS += $(BUSOBJ)/dmv/ram.o
endif
@@ -508,6 +511,7 @@ BUSOBJS += $(BUSOBJ)/isa/xsu_cards.o
BUSOBJS += $(BUSOBJ)/isa/sc499.o
BUSOBJS += $(BUSOBJ)/isa/aga.o
BUSOBJS += $(BUSOBJ)/isa/svga_trident.o
+BUSOBJS += $(BUSOBJ)/isa/num9rev.o
endif
#-------------------------------------------------
@@ -987,19 +991,19 @@ endif
#-------------------------------------------------
#
-#@src/emu/bus/pci/pci.h,BUSES += PCI
+#@src/emu/bus/lpci/pci.h,BUSES += LPCI
#-------------------------------------------------
-ifneq ($(filter PCI,$(BUSES)),)
-OBJDIRS += $(BUSOBJ)/pci
-BUSOBJS += $(BUSOBJ)/pci/pci.o
-BUSOBJS += $(BUSOBJ)/pci/cirrus.o
-BUSOBJS += $(BUSOBJ)/pci/i82371ab.o
-BUSOBJS += $(BUSOBJ)/pci/i82371sb.o
-BUSOBJS += $(BUSOBJ)/pci/i82439tx.o
-BUSOBJS += $(BUSOBJ)/pci/northbridge.o
-BUSOBJS += $(BUSOBJ)/pci/southbridge.o
-BUSOBJS += $(BUSOBJ)/pci/mpc105.o
+ifneq ($(filter LPCI,$(BUSES)),)
+OBJDIRS += $(BUSOBJ)/lpci
+BUSOBJS += $(BUSOBJ)/lpci/pci.o
+BUSOBJS += $(BUSOBJ)/lpci/cirrus.o
+BUSOBJS += $(BUSOBJ)/lpci/i82371ab.o
+BUSOBJS += $(BUSOBJ)/lpci/i82371sb.o
+BUSOBJS += $(BUSOBJ)/lpci/i82439tx.o
+BUSOBJS += $(BUSOBJ)/lpci/northbridge.o
+BUSOBJS += $(BUSOBJ)/lpci/southbridge.o
+BUSOBJS += $(BUSOBJ)/lpci/mpc105.o
endif
#-------------------------------------------------
@@ -1292,6 +1296,7 @@ BUSOBJS += $(BUSOBJ)/cpc/cpc_rs232.o
BUSOBJS += $(BUSOBJ)/cpc/mface2.o
BUSOBJS += $(BUSOBJ)/cpc/symbfac2.o
BUSOBJS += $(BUSOBJ)/cpc/amdrum.o
+BUSOBJS += $(BUSOBJ)/cpc/playcity.o
endif
#-------------------------------------------------
diff --git a/src/emu/bus/c64/geocable.c b/src/emu/bus/c64/geocable.c
index 3f7b9f0f719..98deb96f93e 100644
--- a/src/emu/bus/c64/geocable.c
+++ b/src/emu/bus/c64/geocable.c
@@ -33,7 +33,7 @@ const device_type C64_GEOCABLE = &device_creator;
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( c64_geocable )
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(c64_geocable_device, output_b))
MACHINE_CONFIG_END
diff --git a/src/emu/bus/cbmiec/c1541.c b/src/emu/bus/cbmiec/c1541.c
index 7f00594f35c..a2dc778bbd5 100644
--- a/src/emu/bus/cbmiec/c1541.c
+++ b/src/emu/bus/cbmiec/c1541.c
@@ -887,7 +887,7 @@ static MACHINE_CONFIG_FRAGMENT( c1541pdc )
MCFG_PIA_WRITEPB_HANDLER(WRITE8(c1541_prologic_dos_classic_device, pia_pb_w))
MCFG_PIA_CA2_HANDLER(DEVWRITELINE(CENTRONICS_TAG, centronics_device, write_strobe))
- MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(MC6821_TAG, pia6821_device, ca1_w))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
MACHINE_CONFIG_END
diff --git a/src/emu/bus/centronics/ctronics.c b/src/emu/bus/centronics/ctronics.c
index 024d348171d..b7c87a3b79b 100644
--- a/src/emu/bus/centronics/ctronics.c
+++ b/src/emu/bus/centronics/ctronics.c
@@ -120,12 +120,15 @@ device_centronics_peripheral_interface::~device_centronics_peripheral_interface(
#include "epson_ex800.h"
#include "epson_lx800.h"
#include "printer.h"
+#include "covox.h"
-SLOT_INTERFACE_START(centronics_printers)
+SLOT_INTERFACE_START(centronics_devices)
SLOT_INTERFACE("pl80", COMX_PL80)
SLOT_INTERFACE("ex800", EPSON_EX800)
SLOT_INTERFACE("lx800", EPSON_LX800)
SLOT_INTERFACE("lx810l", EPSON_LX810L)
SLOT_INTERFACE("ap2000", EPSON_AP2000)
SLOT_INTERFACE("printer", CENTRONICS_PRINTER)
+ SLOT_INTERFACE("covox", CENTRONICS_COVOX)
+ SLOT_INTERFACE("covox_stereo", CENTRONICS_COVOX_STEREO)
SLOT_INTERFACE_END
diff --git a/src/emu/bus/centronics/ctronics.h b/src/emu/bus/centronics/ctronics.h
index 9dc450cc2e0..5f7d5df0048 100644
--- a/src/emu/bus/centronics/ctronics.h
+++ b/src/emu/bus/centronics/ctronics.h
@@ -218,6 +218,6 @@ protected:
};
-SLOT_INTERFACE_EXTERN( centronics_printers );
+SLOT_INTERFACE_EXTERN( centronics_devices );
#endif
diff --git a/src/emu/bus/comx35/printer.c b/src/emu/bus/comx35/printer.c
index 82bbe30fe44..1851865b73f 100644
--- a/src/emu/bus/comx35/printer.c
+++ b/src/emu/bus/comx35/printer.c
@@ -53,22 +53,12 @@ const rom_entry *comx_prn_device::device_rom_region() const
}
-//-------------------------------------------------
-// SLOT_INTERFACE( comx_centronics_printer )
-//-------------------------------------------------
-
-SLOT_INTERFACE_START(comx_centronics_printer)
- SLOT_INTERFACE("printer", CENTRONICS_PRINTER)
- //SLOT_INTERFACE("pl80", COMX_PL80)
-SLOT_INTERFACE_END
-
-
//-------------------------------------------------
// MACHINE_CONFIG_FRAGMENT( comx_prn )
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( comx_prn )
- MCFG_CENTRONICS_ADD(CENTRONICS_TAG, comx_centronics_printer, "printer")
+ MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit0))
MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit1))
MCFG_CENTRONICS_PERROR_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit2))
diff --git a/src/emu/bus/cpc/cpcexp.h b/src/emu/bus/cpc/cpcexp.h
index f7ac370b86b..06cf61e1e70 100644
--- a/src/emu/bus/cpc/cpcexp.h
+++ b/src/emu/bus/cpc/cpcexp.h
@@ -78,6 +78,7 @@ public:
// reset
virtual void cpc_reset_w() { };
+ virtual WRITE_LINE_MEMBER( cursor_w ) { };
void set_rom_bank(UINT8 sel) { m_rom_sel = sel; } // tell device the currently selected ROM
UINT8 get_rom_bank() { return m_rom_sel; }
@@ -108,6 +109,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( romdis_w );
void set_rom_bank(UINT8 sel) { if(m_card) m_card->set_rom_bank(sel); } // tell device the currently selected ROM
+ DECLARE_WRITE_LINE_MEMBER( cursor_w ) { if(m_card) m_card->cursor_w(state); } // pass on CRTC Cursor signal
protected:
// device-level overrides
diff --git a/src/emu/bus/cpc/playcity.c b/src/emu/bus/cpc/playcity.c
new file mode 100644
index 00000000000..e6803ffb049
--- /dev/null
+++ b/src/emu/bus/cpc/playcity.c
@@ -0,0 +1,161 @@
+/*
+ PlayCity expansion device
+
+ Z80 CTC
+ 2x YMZ294 (clocks provided by CTC)
+
+ TODO:
+ IRQs aren't working currently, the Z80CTC core requires the daisy chain setup to acknowledge IRQs properly, and that can't be used in a slot device currently.
+*/
+
+#include "playcity.h"
+#include "includes/amstrad.h"
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type CPC_PLAYCITY = &device_creator;
+
+// device machine config
+static MACHINE_CONFIG_FRAGMENT( cpc_playcity )
+ MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_4MHz)
+ MCFG_Z80CTC_ZC1_CB(WRITELINE(cpc_playcity_device,ctc_zc1_cb))
+ MCFG_Z80CTC_ZC2_CB(DEVWRITELINE("ctc",z80ctc_device,trg3))
+ MCFG_Z80CTC_INTR_CB(WRITELINE(cpc_playcity_device,ctc_intr_cb))
+
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker","rspeaker")
+ MCFG_SOUND_ADD("ymz_1",YMZ294,XTAL_4MHz) // when timer is not set, operates at 4MHz (interally divided by 2, so equivalent to the ST)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30)
+ MCFG_SOUND_ADD("ymz_2",YMZ294,XTAL_4MHz)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30)
+
+ // pass-through
+ MCFG_DEVICE_ADD("exp", CPC_EXPANSION_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(cpc_exp_cards, NULL, false)
+ MCFG_CPC_EXPANSION_SLOT_OUT_IRQ_CB(DEVWRITELINE("^", cpc_expansion_slot_device, irq_w))
+ MCFG_CPC_EXPANSION_SLOT_OUT_NMI_CB(DEVWRITELINE("^", cpc_expansion_slot_device, nmi_w))
+ MCFG_CPC_EXPANSION_SLOT_OUT_ROMDIS_CB(DEVWRITELINE("^", cpc_expansion_slot_device, romdis_w)) // ROMDIS
+
+MACHINE_CONFIG_END
+
+
+machine_config_constructor cpc_playcity_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( cpc_playcity );
+}
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+cpc_playcity_device::cpc_playcity_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, CPC_PLAYCITY, "PlayCity", tag, owner, clock, "cpc_playcity", __FILE__),
+ device_cpc_expansion_card_interface(mconfig, *this),
+ m_ctc(*this,"ctc"),
+ m_ymz1(*this,"ymz_1"),
+ m_ymz2(*this,"ymz_2")
+{
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void cpc_playcity_device::device_start()
+{
+ device_t* cpu = machine().device("maincpu");
+ address_space& space = cpu->memory().space(AS_IO);
+ m_slot = dynamic_cast(owner());
+
+ space.install_readwrite_handler(0xf880,0xf883,0,0,read8_delegate(FUNC(cpc_playcity_device::ctc_r),this),write8_delegate(FUNC(cpc_playcity_device::ctc_w),this));
+ space.install_readwrite_handler(0xf884,0xf884,0,0,read8_delegate(FUNC(cpc_playcity_device::ymz1_data_r),this),write8_delegate(FUNC(cpc_playcity_device::ymz1_data_w),this));
+ space.install_readwrite_handler(0xf888,0xf888,0,0,read8_delegate(FUNC(cpc_playcity_device::ymz2_data_r),this),write8_delegate(FUNC(cpc_playcity_device::ymz2_data_w),this));
+ space.install_write_handler(0xf984,0xf984,0,0,write8_delegate(FUNC(cpc_playcity_device::ymz1_address_w),this));
+ space.install_write_handler(0xf988,0xf988,0,0,write8_delegate(FUNC(cpc_playcity_device::ymz2_address_w),this));
+}
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void cpc_playcity_device::device_reset()
+{
+}
+
+
+READ8_MEMBER(cpc_playcity_device::ctc_r)
+{
+ return m_ctc->read(space,offset);
+}
+
+WRITE8_MEMBER(cpc_playcity_device::ctc_w)
+{
+ m_ctc->write(space,offset,data);
+ if(offset == 0)
+ update_ymz_clock();
+}
+
+WRITE8_MEMBER(cpc_playcity_device::ymz1_address_w)
+{
+ m_ymz1->address_w(space,offset,data);
+}
+
+WRITE8_MEMBER(cpc_playcity_device::ymz2_address_w)
+{
+ m_ymz2->address_w(space,offset,data);
+}
+
+WRITE8_MEMBER(cpc_playcity_device::ymz1_data_w)
+{
+ m_ymz1->data_w(space,offset,data);
+}
+
+WRITE8_MEMBER(cpc_playcity_device::ymz2_data_w)
+{
+ m_ymz2->data_w(space,offset,data);
+}
+
+READ8_MEMBER(cpc_playcity_device::ymz1_data_r)
+{
+ return m_ymz1->data_r(space,offset);
+}
+
+READ8_MEMBER(cpc_playcity_device::ymz2_data_r)
+{
+ return m_ymz2->data_r(space,offset);
+}
+
+void cpc_playcity_device::update_ymz_clock()
+{
+ // Bit of a hack job here, since there is no way currently to connect the CTC channel output directly to the YMZ clocks.
+ UINT8 rate = m_ctc->get_channel_constant(0);
+ UINT32 clk = XTAL_4MHz;
+
+ switch(rate)
+ {
+ case 0x00: clk = 3980000; break;
+ case 0x01: clk = 2000000; break;
+ case 0x02: clk = 3000000; break;
+ case 0x03: clk = 3330000; break;
+ case 0x04: clk = 3500000; break;
+ case 0x05: clk = 3600000; break;
+ case 0x06: clk = 3670000; break;
+ case 0x07: clk = 3710000; break;
+ case 0x08: clk = 3750000; break;
+ case 0x09: clk = 3780000; break;
+ case 0x0a: clk = 3800000; break;
+ case 0x0b: clk = 3820000; break;
+ case 0x0c: clk = 3830000; break;
+ case 0x0d: clk = 3850000; break;
+ case 0x0e: clk = 3860000; break;
+ case 0x0f: clk = 3870000; break;
+ }
+
+ clk = clk / 2; // YMZ294 has an internal /2 divider (not handled in AY core?)
+ m_ymz1->ay_set_clock(clk);
+ m_ymz2->ay_set_clock(clk);
+ popmessage("YMZ clocks set to %d Hz",clk);
+}
+
diff --git a/src/emu/bus/cpc/playcity.h b/src/emu/bus/cpc/playcity.h
new file mode 100644
index 00000000000..0f904da3bc3
--- /dev/null
+++ b/src/emu/bus/cpc/playcity.h
@@ -0,0 +1,67 @@
+/*
+ PlayCity expansion device
+
+ I/O ports:
+ * F880 - Z80CTC channel 0 (input is system clock (4MHz), output to YMZ294 clock)
+ * F881 - Z80CTC channel 1 (input from CRTC CURSOR, output to /NMI)
+ * F882 - Z80CTC channel 2 (input is system clock (4MHz), output to channel 3 input)
+ * F883 - Z80CTC channel 3 (input is channel 2 output)
+ * F884 - YMZ294 #1 (right) data
+ * F888 - YMZ294 #2 (left) data
+ * F984 - YMZ294 #1 (right) register select
+ * F988 - YMZ294 #2 (left) register select
+*/
+
+#ifndef CPC_PLAYCITY_H_
+#define CPC_PLAYCITY_H_
+
+
+#include "emu.h"
+#include "cpcexp.h"
+#include "sound/ay8910.h"
+#include "machine/z80ctc.h"
+
+class cpc_playcity_device : public device_t,
+ public device_cpc_expansion_card_interface
+{
+public:
+ // construction/destruction
+ cpc_playcity_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+
+ DECLARE_READ8_MEMBER(ctc_r);
+ DECLARE_WRITE8_MEMBER(ctc_w);
+ DECLARE_WRITE8_MEMBER(ymz1_address_w);
+ DECLARE_WRITE8_MEMBER(ymz2_address_w);
+ DECLARE_WRITE8_MEMBER(ymz1_data_w);
+ DECLARE_WRITE8_MEMBER(ymz2_data_w);
+ DECLARE_READ8_MEMBER(ymz1_data_r);
+ DECLARE_READ8_MEMBER(ymz2_data_r);
+ DECLARE_WRITE_LINE_MEMBER(ctc_zc1_cb) { if(state) { m_slot->nmi_w(1); m_slot->nmi_w(0); } }
+ DECLARE_WRITE_LINE_MEMBER(ctc_intr_cb) { m_slot->irq_w(state); }
+
+ virtual WRITE_LINE_MEMBER(cursor_w) { m_ctc->trg1(state); }
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ cpc_expansion_slot_device *m_slot;
+
+ required_device m_ctc;
+ required_device m_ymz1;
+ required_device m_ymz2;
+
+ void update_ymz_clock();
+};
+
+// device type definition
+extern const device_type CPC_PLAYCITY;
+
+
+#endif /* CPC_PLAYCITY_H_ */
+
diff --git a/src/emu/bus/dmv/dmvbus.c b/src/emu/bus/dmv/dmvbus.c
index 0484b539752..ba40d69dd30 100644
--- a/src/emu/bus/dmv/dmvbus.c
+++ b/src/emu/bus/dmv/dmvbus.c
@@ -199,6 +199,7 @@ dmvcart_slot_device::dmvcart_slot_device(const machine_config &mconfig, const ch
device_slot_interface(mconfig, *this),
m_prog_read_cb(*this),
m_prog_write_cb(*this),
+ m_out_int_cb(*this),
m_out_irq_cb(*this),
m_out_thold_cb(*this)
{
@@ -224,6 +225,7 @@ void dmvcart_slot_device::device_start()
// resolve callbacks
m_prog_read_cb.resolve_safe(0);
m_prog_write_cb.resolve_safe();
+ m_out_int_cb.resolve_safe();
m_out_irq_cb.resolve_safe();
m_out_thold_cb.resolve_safe();
}
diff --git a/src/emu/bus/dmv/dmvbus.h b/src/emu/bus/dmv/dmvbus.h
index a5c827402bb..e4a3d035677 100644
--- a/src/emu/bus/dmv/dmvbus.h
+++ b/src/emu/bus/dmv/dmvbus.h
@@ -58,6 +58,7 @@ public:
template static devcb_base &set_prog_read_callback(device_t &device, _Object object) { return downcast(device).m_prog_read_cb.set_callback(object); }
template static devcb_base &set_prog_write_callback(device_t &device, _Object object) { return downcast(device).m_prog_write_cb.set_callback(object); }
+ template static devcb_base &set_out_int_callback(device_t &device, _Object object) { return downcast(device).m_out_int_cb.set_callback(object); }
template static devcb_base &set_out_irq_callback(device_t &device, _Object object) { return downcast(device).m_out_irq_cb.set_callback(object); }
template static devcb_base &set_out_thold_callback(device_t &device, _Object object) { return downcast(device).m_out_thold_cb.set_callback(object); }
@@ -86,6 +87,7 @@ public:
// internal state
devcb_read8 m_prog_read_cb;
devcb_write8 m_prog_write_cb;
+ devcb_write_line m_out_int_cb;
devcb_write_line m_out_irq_cb;
devcb_write_line m_out_thold_cb;
device_dmvslot_interface* m_cart;
@@ -104,6 +106,9 @@ extern const device_type DMVCART_SLOT;
devcb = &dmvcart_slot_device::set_prog_read_callback(*device, DEVCB_##_read_devcb); \
devcb = &dmvcart_slot_device::set_prog_write_callback(*device, DEVCB_##_write_devcb);
+#define MCFG_DMVCART_SLOT_OUT_INT_CB(_devcb) \
+ devcb = &dmvcart_slot_device::set_out_int_callback(*device, DEVCB_##_devcb);
+
#define MCFG_DMVCART_SLOT_OUT_IRQ_CB(_devcb) \
devcb = &dmvcart_slot_device::set_out_irq_callback(*device, DEVCB_##_devcb);
diff --git a/src/emu/bus/dmv/k803.c b/src/emu/bus/dmv/k803.c
new file mode 100644
index 00000000000..4e57aea8280
--- /dev/null
+++ b/src/emu/bus/dmv/k803.c
@@ -0,0 +1,133 @@
+// license:BSD-3-Clause
+// copyright-holders:Sandro Ronco
+/***************************************************************************
+
+ K803 RTC module
+
+***************************************************************************/
+
+#include "emu.h"
+#include "k803.h"
+
+
+/***************************************************************************
+ IMPLEMENTATION
+***************************************************************************/
+
+static MACHINE_CONFIG_FRAGMENT( dmv_k803 )
+ MCFG_DEVICE_ADD("rtc", MM58167, XTAL_32_768kHz)
+ MCFG_MM58167_IRQ_CALLBACK(WRITELINE(dmv_k803_device, rtc_irq_w))
+MACHINE_CONFIG_END
+
+static INPUT_PORTS_START( dmv_k803 )
+ PORT_START("DSW")
+ PORT_DIPNAME( 0x0f, 0x09, "K803 IFSEL" ) PORT_DIPLOCATION("S:!4,S:!3,S:!2,S:!1")
+ PORT_DIPSETTING( 0x00, "0A" )
+ PORT_DIPSETTING( 0x01, "0B" )
+ PORT_DIPSETTING( 0x02, "1A" )
+ PORT_DIPSETTING( 0x03, "1B" )
+ PORT_DIPSETTING( 0x04, "2A" )
+ PORT_DIPSETTING( 0x05, "2B" )
+ PORT_DIPSETTING( 0x06, "3A" )
+ PORT_DIPSETTING( 0x07, "3B" )
+ PORT_DIPSETTING( 0x08, "4A" )
+ PORT_DIPSETTING( 0x09, "4B" ) // default
+INPUT_PORTS_END
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+const device_type DMV_K803 = &device_creator;
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// dmv_k803_device - constructor
+//-------------------------------------------------
+
+dmv_k803_device::dmv_k803_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, DMV_K803, "K803 RTC", tag, owner, clock, "dmv_k803", __FILE__),
+ device_dmvslot_interface( mconfig, *this ),
+ m_rtc(*this, "rtc"),
+ m_dsw(*this, "DSW")
+{
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void dmv_k803_device::device_start()
+{
+ m_bus = static_cast(owner());
+}
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void dmv_k803_device::device_reset()
+{
+ m_latch = 0;
+ m_rtc_int = CLEAR_LINE;
+}
+
+//-------------------------------------------------
+// machine_config_additions - device-specific
+// machine configurations
+//-------------------------------------------------
+
+machine_config_constructor dmv_k803_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( dmv_k803 );
+}
+
+//-------------------------------------------------
+// input_ports - device-specific input ports
+//-------------------------------------------------
+
+ioport_constructor dmv_k803_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( dmv_k803 );
+}
+
+void dmv_k803_device::io_read(address_space &space, int ifsel, offs_t offset, UINT8 &data)
+{
+ UINT8 dsw = m_dsw->read() & 0x0f;
+ if ((dsw >> 1) == ifsel && BIT(offset, 3) == BIT(dsw, 0))
+ {
+ if (offset & 0x04)
+ data = m_rtc->read(space, ((m_latch & 0x07) << 2) | (offset & 0x03));
+ }
+}
+
+void dmv_k803_device::io_write(address_space &space, int ifsel, offs_t offset, UINT8 data)
+{
+ UINT8 dsw = m_dsw->read() & 0x0f;
+ if ((dsw >> 1) == ifsel && BIT(offset, 3) == BIT(dsw, 0))
+ {
+ if (offset & 0x04)
+ m_rtc->write(space, ((m_latch & 0x07) << 2) | (offset & 0x03), data);
+ else
+ {
+ m_latch = data;
+ update_int();
+ }
+ }
+}
+
+WRITE_LINE_MEMBER(dmv_k803_device::rtc_irq_w)
+{
+ m_rtc_int = state;
+ update_int();
+}
+
+void dmv_k803_device::update_int()
+{
+ bool state = ((m_latch & 0x80) && m_rtc_int);
+ m_bus->m_out_irq_cb(state ? ASSERT_LINE : CLEAR_LINE);
+}
diff --git a/src/emu/bus/dmv/k803.h b/src/emu/bus/dmv/k803.h
new file mode 100644
index 00000000000..51fd9eaaa9c
--- /dev/null
+++ b/src/emu/bus/dmv/k803.h
@@ -0,0 +1,54 @@
+// license:BSD-3-Clause
+// copyright-holders:Sandro Ronco
+#pragma once
+
+#ifndef __DMV_K803_H__
+#define __DMV_K803_H__
+
+#include "emu.h"
+#include "dmvbus.h"
+#include "machine/mm58167.h"
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> dmv_k803_device
+
+class dmv_k803_device :
+ public device_t,
+ public device_dmvslot_interface
+{
+public:
+ // construction/destruction
+ dmv_k803_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // optional information overrides
+ virtual ioport_constructor device_input_ports() const;
+ virtual machine_config_constructor device_mconfig_additions() const;
+
+ DECLARE_WRITE_LINE_MEMBER(rtc_irq_w);
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+ virtual void io_read(address_space &space, int ifsel, offs_t offset, UINT8 &data);
+ virtual void io_write(address_space &space, int ifsel, offs_t offset, UINT8 data);
+
+ void update_int();
+
+private:
+ required_device m_rtc;
+ required_ioport m_dsw;
+ dmvcart_slot_device * m_bus;
+ UINT8 m_latch;
+ int m_rtc_int;
+};
+
+
+// device type definition
+extern const device_type DMV_K803;
+
+#endif /* __DMV_K803_H__ */
diff --git a/src/emu/bus/dmv/k806.c b/src/emu/bus/dmv/k806.c
index 2fae2b93f3b..66509a0d095 100644
--- a/src/emu/bus/dmv/k806.c
+++ b/src/emu/bus/dmv/k806.c
@@ -20,7 +20,8 @@ ROM_START( dmv_k806 )
ROM_END
static ADDRESS_MAP_START( k806_io, AS_IO, 8, dmv_k806_device )
- AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(port1_r, port1_w)
+ AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(port1_r)
+ AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(port2_w)
AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(portt1_r)
ADDRESS_MAP_END
@@ -75,6 +76,7 @@ dmv_k806_device::dmv_k806_device(const machine_config &mconfig, const char *tag,
void dmv_k806_device::device_start()
{
+ m_bus = static_cast(owner());
}
//-------------------------------------------------
@@ -129,6 +131,15 @@ void dmv_k806_device::io_write(address_space &space, int ifsel, offs_t offset, U
READ8_MEMBER( dmv_k806_device::port1_r )
{
+ // ---- ---x Left button
+ // ---- --x- Middle button
+ // ---- -x-- Right button
+ // ---- x--- XA / Y1
+ // ---x ---- XB / Y2
+ // --x- ---- YA / X2
+ // -x-- ---- YB / X1
+ // x--- ---- not used
+
// TODO
return 0xff;
}
@@ -138,7 +149,7 @@ READ8_MEMBER( dmv_k806_device::portt1_r )
return BIT(m_jumpers->read(), 7) ? 0 : 1;
}
-WRITE8_MEMBER( dmv_k806_device::port1_w )
+WRITE8_MEMBER( dmv_k806_device::port2_w )
{
- // TODO
+ m_bus->m_out_int_cb((data & 1) ? CLEAR_LINE : ASSERT_LINE);
};
diff --git a/src/emu/bus/dmv/k806.h b/src/emu/bus/dmv/k806.h
index 9fc0ca8712b..af2ce0aae3a 100644
--- a/src/emu/bus/dmv/k806.h
+++ b/src/emu/bus/dmv/k806.h
@@ -31,7 +31,7 @@ public:
DECLARE_READ8_MEMBER(portt1_r);
DECLARE_READ8_MEMBER(port1_r);
- DECLARE_WRITE8_MEMBER(port1_w);
+ DECLARE_WRITE8_MEMBER(port2_w);
protected:
// device-level overrides
@@ -44,6 +44,7 @@ protected:
private:
required_device m_mcu;
required_ioport m_jumpers;
+ dmvcart_slot_device * m_bus;
};
diff --git a/src/emu/bus/ecbbus/grip.c b/src/emu/bus/ecbbus/grip.c
index 397c985aa1e..1a1b333d4b8 100644
--- a/src/emu/bus/ecbbus/grip.c
+++ b/src/emu/bus/ecbbus/grip.c
@@ -500,7 +500,7 @@ static MACHINE_CONFIG_FRAGMENT( grip )
MCFG_Z80STI_OUT_TCO_CB(DEVWRITELINE(Z80STI_TAG, z80sti_device, tc_w))
MCFG_Z80STI_OUT_TDO_CB(DEVWRITELINE(Z80STI_TAG, z80sti_device, tc_w))
- MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(grip_device, write_centronics_busy))
MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(grip_device, write_centronics_fault))
@@ -681,6 +681,7 @@ void grip_device::device_reset()
{
m_base = m_j7->read();
m_page = 0;
+ m_lps = 0;
}
diff --git a/src/emu/bus/econet/e01.c b/src/emu/bus/econet/e01.c
index d2874048db0..45f17d72b21 100644
--- a/src/emu/bus/econet/e01.c
+++ b/src/emu/bus/econet/e01.c
@@ -259,7 +259,7 @@ static MACHINE_CONFIG_FRAGMENT( e01 )
MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":0", e01_floppies, "35dd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":1", e01_floppies, "35dd", floppy_image_device::default_floppy_formats)
- MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(R6522_TAG, via6522_device, write_ca1))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
diff --git a/src/emu/bus/isa/isa_cards.c b/src/emu/bus/isa/isa_cards.c
index 5913486424a..4bd09ba9c7f 100644
--- a/src/emu/bus/isa/isa_cards.c
+++ b/src/emu/bus/isa/isa_cards.c
@@ -19,6 +19,7 @@ SLOT_INTERFACE_START( pc_isa8_cards )
SLOT_INTERFACE("aga_pc200", ISA8_AGA_PC200)
SLOT_INTERFACE("ega", ISA8_EGA)
SLOT_INTERFACE("svga_et4k", ISA8_SVGA_ET4K)
+ SLOT_INTERFACE("num9rev",ISA8_NUM_9_REV)
SLOT_INTERFACE("com", ISA8_COM)
SLOT_INTERFACE("fdc", ISA8_FDC_SUPERIO)
SLOT_INTERFACE("fdc_xt", ISA8_FDC_XT)
@@ -57,6 +58,7 @@ SLOT_INTERFACE_START( pc_isa16_cards )
SLOT_INTERFACE("vga", ISA8_VGA)
SLOT_INTERFACE("svga_et4k", ISA8_SVGA_ET4K)
SLOT_INTERFACE("svga_dm",ISA8_SVGA_CIRRUS)
+ SLOT_INTERFACE("num9rev",ISA8_NUM_9_REV)
SLOT_INTERFACE("com", ISA8_COM)
SLOT_INTERFACE("comat", ISA8_COM_AT)
SLOT_INTERFACE("fdc", ISA8_FDC_AT)
diff --git a/src/emu/bus/isa/isa_cards.h b/src/emu/bus/isa/isa_cards.h
index 8c3f11b9145..d7762ab4bcf 100644
--- a/src/emu/bus/isa/isa_cards.h
+++ b/src/emu/bus/isa/isa_cards.h
@@ -25,6 +25,7 @@
#include "svga_s3.h"
#include "svga_tseng.h"
#include "svga_trident.h"
+#include "num9rev.h"
// storage
#include "fdc.h"
diff --git a/src/emu/bus/isa/lpt.c b/src/emu/bus/isa/lpt.c
index 50388be4f58..491f7abe1e6 100644
--- a/src/emu/bus/isa/lpt.c
+++ b/src/emu/bus/isa/lpt.c
@@ -7,8 +7,6 @@
#include "emu.h"
#include "lpt.h"
#include "machine/pc_lpt.h"
-#include "bus/centronics/covox.h"
-#include "bus/centronics/printer.h"
const device_type ISA8_LPT = &device_creator;
diff --git a/src/emu/bus/isa/num9rev.c b/src/emu/bus/isa/num9rev.c
new file mode 100644
index 00000000000..891c10600c9
--- /dev/null
+++ b/src/emu/bus/isa/num9rev.c
@@ -0,0 +1,318 @@
+// license:BSD-3-Clause
+// Number Nine Revolution 512x32/1024x8
+// TODO: for 1024x768 mode the 7220 is programmed for 512x768, how does that work?
+
+#include "emu.h"
+#include "num9rev.h"
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+const device_type ISA8_NUM_9_REV = &device_creator;
+
+static ADDRESS_MAP_START( upd7220_map, AS_0, 8, isa8_number_9_rev_device )
+ AM_RANGE(0x00000, 0x3ffff) AM_NOP
+ADDRESS_MAP_END
+
+UPD7220_DISPLAY_PIXELS_MEMBER( isa8_number_9_rev_device::hgdc_display_pixels )
+{
+ palette_t *pal = m_palette->palette();
+ if(!m_1024)
+ {
+ rgb_t color(0);
+ UINT16 overlay;
+ if(((address << 3) + 0xc0008) > (1024*1024))
+ return;
+ for(int i = 0; i < 8; i++)
+ {
+ UINT32 addr = (address << 3) + i;
+ overlay = m_ram[addr + 0xc0000] << 1;
+ overlay = m_overlay[overlay + ((m_mode & 8) ? 512 : 0)] | (m_overlay[overlay + 1 + ((m_mode & 8) ? 512 : 0)] << 8);
+ color.set_r(pal->entry_color(m_ram[addr] | ((overlay & 0xf) << 8)).r());
+ color.set_g(pal->entry_color(m_ram[addr + 0x40000] | ((overlay & 0xf0) << 4)).g());
+ color.set_b(pal->entry_color(m_ram[addr + 0x80000] | (overlay & 0xf00)).b());
+ bitmap.pix32(y, x + i) = color;
+ }
+ }
+ else
+ {
+ if(((address << 3) + 8) > (1024*1024))
+ return;
+ for(int i = 0; i < 8; i++)
+ bitmap.pix32(y, x + i) = pal->entry_color(m_ram[(address << 3) + i]);
+ }
+}
+
+static MACHINE_CONFIG_FRAGMENT( num_9_rev )
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_SIZE(512, 448)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 448-1)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_UPDATE_DRIVER(isa8_number_9_rev_device, screen_update)
+ MCFG_PALETTE_ADD("palette", 4096)
+
+ MCFG_DEVICE_ADD("upd7220", UPD7220, XTAL_4_433619MHz/2) // unknown clock
+ MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_map)
+ MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(isa8_number_9_rev_device, hgdc_display_pixels)
+ MCFG_VIDEO_SET_SCREEN("screen")
+MACHINE_CONFIG_END
+
+//-------------------------------------------------
+// machine_config_additions - device-specific
+// machine configurations
+//-------------------------------------------------
+
+machine_config_constructor isa8_number_9_rev_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( num_9_rev );
+}
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// isa16_vga_device - constructor
+//-------------------------------------------------
+
+isa8_number_9_rev_device::isa8_number_9_rev_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, ISA8_NUM_9_REV, "Number Nine Revolution 512x32/1024x8", tag, owner, clock, "number_9_rev", __FILE__),
+ device_isa8_card_interface(mconfig, *this),
+ m_upd7220(*this, "upd7220"),
+ m_palette(*this, "palette"),
+ m_ram(1024*1024),
+ m_overlay(1024)
+{
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void isa8_number_9_rev_device::device_start()
+{
+ set_isa_device();
+
+ m_isa->install_memory(0xc0000, 0xc0001, 0, 0, read8_delegate(FUNC(upd7220_device::read), (upd7220_device *)m_upd7220), write8_delegate(FUNC(upd7220_device::write), (upd7220_device *)m_upd7220));
+ m_isa->install_memory(0xc0100, 0xc03ff, 0, 0, read8_delegate(FUNC(isa8_number_9_rev_device::pal8_r), this), write8_delegate(FUNC(isa8_number_9_rev_device::pal8_w), this));
+ m_isa->install_memory(0xc0400, 0xc0401, 0, 0, read8_delegate(FUNC(isa8_number_9_rev_device::bank_r), this), write8_delegate(FUNC(isa8_number_9_rev_device::bank_w), this));
+ m_isa->install_memory(0xc0500, 0xc06ff, 0, 0, read8_delegate(FUNC(isa8_number_9_rev_device::overlay_r), this), write8_delegate(FUNC(isa8_number_9_rev_device::overlay_w), this));
+ m_isa->install_memory(0xc0700, 0xc070f, 0, 0, read8_delegate(FUNC(isa8_number_9_rev_device::ctrl_r), this), write8_delegate(FUNC(isa8_number_9_rev_device::ctrl_w), this));
+ m_isa->install_memory(0xc1000, 0xc3fff, 0, 0, read8_delegate(FUNC(isa8_number_9_rev_device::pal12_r), this), write8_delegate(FUNC(isa8_number_9_rev_device::pal12_w), this));
+ m_isa->install_memory(0xa0000, 0xaffff, 0, 0, read8_delegate(FUNC(isa8_number_9_rev_device::read8), this), write8_delegate(FUNC(isa8_number_9_rev_device::write8), this));
+}
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void isa8_number_9_rev_device::device_reset()
+{
+ m_bank = 0;
+ m_mode = 0;
+ m_1024 = false;
+}
+
+READ8_MEMBER(isa8_number_9_rev_device::read8)
+{
+ if((m_mode & 1) && !m_1024)
+ return m_ram[offset + ((m_mode & 0xc) << 14)];
+ else if((m_mode & 4) && !m_1024)
+ {
+ UINT32 newoff = ((offset & 3) << 18) | (m_bank << 14) | ((offset >> 2) & 0x3fff);
+ return m_ram[newoff];
+ }
+ else
+ return m_ram[offset + (m_bank << 16)];
+}
+
+WRITE8_MEMBER(isa8_number_9_rev_device::write8)
+{
+ if(m_1024 || ((m_mode & 6) == 0))
+ m_ram[offset + (m_bank << 16)] = data;
+ else if((m_mode & 1) || ((m_mode & 6) == 2))
+ {
+ UINT8 bank = m_bank;
+ if(m_mode & 1)
+ bank = (m_mode & 0xc) >> 2;
+ else
+ {
+ if(m_bank >= 12)
+ {
+ m_ram[offset + (m_bank << 16)] = data;
+ return;
+ }
+ bank &= 3;
+ }
+
+ m_ram[offset + (bank << 16)] = data;
+ m_ram[offset + ((bank + 4) << 16)] = data;
+ m_ram[offset + ((bank + 8) << 16)] = data;
+ }
+ else if(m_mode & 4)
+ {
+ UINT32 newoff = ((offset & 3) << 18) | (m_bank << 14) | ((offset >> 2) & 0x3fff);
+ if((newoff >= 0xc0000) && ((m_mode & 6) == 6))
+ return;
+ m_ram[newoff] = data;
+ }
+}
+
+READ8_MEMBER(isa8_number_9_rev_device::pal8_r)
+{
+ offset += 0x100;
+ palette_t *pal = m_palette->palette();
+ switch(offset & 0xf00)
+ {
+ case 0x100:
+ return pal->entry_color(offset).r();
+ case 0x200:
+ return pal->entry_color(offset).g();
+ case 0x300:
+ return pal->entry_color(offset).b();
+ }
+ return 0;
+}
+
+WRITE8_MEMBER(isa8_number_9_rev_device::pal8_w)
+{
+ offset += 0x100;
+ palette_t *pal = m_palette->palette();
+ rgb_t pen = pal->entry_color(offset);
+ switch(offset & 0xf00)
+ {
+ case 0x100:
+ pen.set_r(data);
+ break;
+ case 0x200:
+ pen.set_g(data);
+ break;
+ case 0x300:
+ pen.set_b(data);
+ break;
+ }
+ pal->entry_set_color(offset, pen);
+}
+
+READ8_MEMBER(isa8_number_9_rev_device::pal12_r)
+{
+ UINT16 color = offset & 0xfff;
+ palette_t *pal = m_palette->palette();
+ switch(offset & 0xf000)
+ {
+ case 0x0000:
+ return pal->entry_color(color).r();
+ case 0x1000:
+ return pal->entry_color(color).g();
+ case 0x2000:
+ return pal->entry_color(color).b();
+ }
+ return 0;
+}
+
+WRITE8_MEMBER(isa8_number_9_rev_device::pal12_w)
+{
+ UINT16 color = offset & 0xfff;
+ palette_t *pal = m_palette->palette();
+ rgb_t pen = pal->entry_color(color);
+ switch(offset & 0xf000)
+ {
+ case 0x0000:
+ pen.set_r(data);
+ break;
+ case 0x1000:
+ pen.set_g(data);
+ break;
+ case 0x2000:
+ pen.set_b(data);
+ break;
+ }
+ pal->entry_set_color(color, pen);
+}
+
+READ8_MEMBER(isa8_number_9_rev_device::overlay_r)
+{
+ return m_overlay[offset + ((m_mode & 8) ? 512 : 0)];
+}
+WRITE8_MEMBER(isa8_number_9_rev_device::overlay_w)
+{
+ m_overlay[offset + ((m_mode & 8) ? 512 : 0)] = data;
+}
+
+READ8_MEMBER(isa8_number_9_rev_device::bank_r)
+{
+ return m_bank;
+}
+
+WRITE8_MEMBER(isa8_number_9_rev_device::bank_w)
+{
+ m_bank = data & 0xf;
+}
+
+READ8_MEMBER(isa8_number_9_rev_device::ctrl_r)
+{
+ switch(offset & 0xf)
+ {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ // zoom, set to same value as 7220 external zoom factor
+ break;
+ case 4:
+ return (m_mode & 2) ? 0xff : 0;
+ case 5:
+ return (m_mode & 4) ? 0xff : 0;
+ case 6:
+ return (m_mode & 8) ? 0xff : 0;
+ case 15:
+ return (m_mode & 1) ? 0xff : 0;
+ }
+ return 0;
+}
+
+WRITE8_MEMBER(isa8_number_9_rev_device::ctrl_w)
+{
+ switch(offset & 0xf)
+ {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ // zoom
+ break;
+ case 4:
+ if(data & 0x80)
+ m_mode |= 2;
+ else
+ m_mode &= ~2;
+ break;
+ case 5:
+ if(data & 0x80)
+ m_mode |= 4;
+ else
+ m_mode &= ~4;
+ break;
+ case 6:
+ if(data & 0x80)
+ m_mode |= 8;
+ else
+ m_mode &= ~8;
+ break;
+ case 15:
+ if(data & 0x80)
+ m_mode |= 1;
+ else
+ m_mode &= ~1;
+ break;
+ }
+}
+
+UINT32 isa8_number_9_rev_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ rectangle visarea = screen.visible_area();
+ // try to support the 1024x8 or at least don't crash as there's no way to detect it
+ m_1024 = (visarea.width() * visarea.height()) > (512 * 512);
+ return m_upd7220->screen_update(screen, bitmap, cliprect);
+}
diff --git a/src/emu/bus/isa/num9rev.h b/src/emu/bus/isa/num9rev.h
new file mode 100644
index 00000000000..5bace1297f5
--- /dev/null
+++ b/src/emu/bus/isa/num9rev.h
@@ -0,0 +1,61 @@
+#pragma once
+
+#ifndef __NUM9REV_H__
+#define __NUM9REV_H__
+
+#include "emu.h"
+#include "isa.h"
+#include "video/upd7220.h"
+#include "machine/bankdev.h"
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> isa16_vga_device
+
+class isa8_number_9_rev_device :
+ public device_t,
+ public device_isa8_card_interface
+{
+public:
+ // construction/destruction
+ isa8_number_9_rev_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+
+ UPD7220_DISPLAY_PIXELS_MEMBER(hgdc_display_pixels);
+ DECLARE_READ8_MEMBER(pal8_r);
+ DECLARE_WRITE8_MEMBER(pal8_w);
+ DECLARE_READ8_MEMBER(pal12_r);
+ DECLARE_WRITE8_MEMBER(pal12_w);
+ DECLARE_READ8_MEMBER(overlay_r);
+ DECLARE_WRITE8_MEMBER(overlay_w);
+ DECLARE_READ8_MEMBER(bank_r);
+ DECLARE_WRITE8_MEMBER(bank_w);
+ DECLARE_READ8_MEMBER(ctrl_r);
+ DECLARE_WRITE8_MEMBER(ctrl_w);
+ DECLARE_READ8_MEMBER(read8);
+ DECLARE_WRITE8_MEMBER(write8);
+
+ UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+private:
+ required_device m_upd7220;
+ required_device m_palette;
+ dynamic_buffer m_ram;
+ dynamic_buffer m_overlay;
+
+ UINT8 m_bank;
+ UINT8 m_mode;
+ bool m_1024;
+};
+
+// device type definition
+extern const device_type ISA8_NUM_9_REV;
+
+#endif /* __NUM9REV_H__ */
diff --git a/src/emu/bus/isa/s3virge.c b/src/emu/bus/isa/s3virge.c
index 2e6ba49e279..fdd4c3b8ed7 100644
--- a/src/emu/bus/isa/s3virge.c
+++ b/src/emu/bus/isa/s3virge.c
@@ -45,8 +45,7 @@ s3virgedx_rev1_vga_device::s3virgedx_rev1_vga_device(const machine_config &mconf
void s3virge_vga_device::device_start()
{
- memset(&vga, 0, sizeof(vga));
- memset(&svga, 0, sizeof(svga));
+ zero();
int x;
int i;
diff --git a/src/emu/bus/isa/trident.c b/src/emu/bus/isa/trident.c
index a4afa62d9f8..0d8b2134808 100644
--- a/src/emu/bus/isa/trident.c
+++ b/src/emu/bus/isa/trident.c
@@ -155,8 +155,7 @@ void trident_vga_device::WRITEPIXEL(INT16 x,INT16 y, UINT32 data)
void trident_vga_device::device_start()
{
- memset(&vga, 0, sizeof(vga));
- memset(&svga, 0, sizeof(svga));
+ zero();
int i;
for (i = 0; i < 0x100; i++)
diff --git a/src/emu/bus/pci/cirrus.c b/src/emu/bus/lpci/cirrus.c
similarity index 100%
rename from src/emu/bus/pci/cirrus.c
rename to src/emu/bus/lpci/cirrus.c
diff --git a/src/emu/bus/pci/cirrus.h b/src/emu/bus/lpci/cirrus.h
similarity index 97%
rename from src/emu/bus/pci/cirrus.h
rename to src/emu/bus/lpci/cirrus.h
index 8a458039650..9027f6827e4 100644
--- a/src/emu/bus/pci/cirrus.h
+++ b/src/emu/bus/lpci/cirrus.h
@@ -9,7 +9,7 @@
#ifndef CIRRUS_H
#define CIRRUS_H
-#include "bus/pci/pci.h"
+#include "bus/lpci/pci.h"
// ======================> cirrus_device
diff --git a/src/emu/bus/pci/i82371ab.c b/src/emu/bus/lpci/i82371ab.c
similarity index 100%
rename from src/emu/bus/pci/i82371ab.c
rename to src/emu/bus/lpci/i82371ab.c
diff --git a/src/emu/bus/pci/i82371ab.h b/src/emu/bus/lpci/i82371ab.h
similarity index 100%
rename from src/emu/bus/pci/i82371ab.h
rename to src/emu/bus/lpci/i82371ab.h
diff --git a/src/emu/bus/pci/i82371sb.c b/src/emu/bus/lpci/i82371sb.c
similarity index 100%
rename from src/emu/bus/pci/i82371sb.c
rename to src/emu/bus/lpci/i82371sb.c
diff --git a/src/emu/bus/pci/i82371sb.h b/src/emu/bus/lpci/i82371sb.h
similarity index 100%
rename from src/emu/bus/pci/i82371sb.h
rename to src/emu/bus/lpci/i82371sb.h
diff --git a/src/emu/bus/pci/i82439tx.c b/src/emu/bus/lpci/i82439tx.c
similarity index 100%
rename from src/emu/bus/pci/i82439tx.c
rename to src/emu/bus/lpci/i82439tx.c
diff --git a/src/emu/bus/pci/i82439tx.h b/src/emu/bus/lpci/i82439tx.h
similarity index 100%
rename from src/emu/bus/pci/i82439tx.h
rename to src/emu/bus/lpci/i82439tx.h
diff --git a/src/emu/bus/pci/mpc105.c b/src/emu/bus/lpci/mpc105.c
similarity index 100%
rename from src/emu/bus/pci/mpc105.c
rename to src/emu/bus/lpci/mpc105.c
diff --git a/src/emu/bus/pci/mpc105.h b/src/emu/bus/lpci/mpc105.h
similarity index 100%
rename from src/emu/bus/pci/mpc105.h
rename to src/emu/bus/lpci/mpc105.h
diff --git a/src/emu/bus/pci/northbridge.c b/src/emu/bus/lpci/northbridge.c
similarity index 100%
rename from src/emu/bus/pci/northbridge.c
rename to src/emu/bus/lpci/northbridge.c
diff --git a/src/emu/bus/pci/northbridge.h b/src/emu/bus/lpci/northbridge.h
similarity index 100%
rename from src/emu/bus/pci/northbridge.h
rename to src/emu/bus/lpci/northbridge.h
diff --git a/src/emu/bus/pci/pci.c b/src/emu/bus/lpci/pci.c
similarity index 100%
rename from src/emu/bus/pci/pci.c
rename to src/emu/bus/lpci/pci.c
diff --git a/src/emu/bus/pci/pci.h b/src/emu/bus/lpci/pci.h
similarity index 100%
rename from src/emu/bus/pci/pci.h
rename to src/emu/bus/lpci/pci.h
diff --git a/src/emu/bus/pci/southbridge.c b/src/emu/bus/lpci/southbridge.c
similarity index 99%
rename from src/emu/bus/pci/southbridge.c
rename to src/emu/bus/lpci/southbridge.c
index d6797fdef06..bb1a8cf629b 100644
--- a/src/emu/bus/pci/southbridge.c
+++ b/src/emu/bus/lpci/southbridge.c
@@ -203,7 +203,7 @@ void southbridge_device::device_start()
void southbridge_device::device_reset()
{
m_at_spkrdata = 0;
- m_pit_out2 = 0;
+ m_pit_out2 = 1;
m_dma_channel = -1;
m_cur_eop = false;
m_nmi_enabled = 0;
diff --git a/src/emu/bus/pci/southbridge.h b/src/emu/bus/lpci/southbridge.h
similarity index 100%
rename from src/emu/bus/pci/southbridge.h
rename to src/emu/bus/lpci/southbridge.h
diff --git a/src/emu/bus/nes/ave.c b/src/emu/bus/nes/ave.c
index aecf875d000..4280286519b 100644
--- a/src/emu/bus/nes/ave.c
+++ b/src/emu/bus/nes/ave.c
@@ -79,7 +79,6 @@ void nes_nina006_device::pcb_reset()
m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
prg32(0);
chr8(0, m_chr_source);
- set_nt_mirroring(PPU_MIRROR_HORZ);
}
@@ -164,7 +163,7 @@ WRITE8_MEMBER(nes_nina006_device::write_l)
if (!(offset & 0x0100))
{
prg32(data >> 3);
- chr8(data, CHRROM);
+ chr8(data & 7, CHRROM);
}
}
diff --git a/src/emu/bus/nes/nes_ines.inc b/src/emu/bus/nes/nes_ines.inc
index 45ea6d40324..b99dea5cda2 100644
--- a/src/emu/bus/nes/nes_ines.inc
+++ b/src/emu/bus/nes/nes_ines.inc
@@ -693,6 +693,7 @@ void nes_cart_slot_device::call_load_ines()
logerror("-- PRG 0x%x (%d x 16k chunks)\n", prg_size, prg_size / 0x4000);
logerror("-- VROM 0x%x (%d x 8k chunks)\n", vrom_size, vrom_size / 0x2000);
logerror("-- VRAM 0x%x (%d x 8k chunks)\n", vram_size, vram_size / 0x2000);
+ logerror("-- Mirroring %s\n", BIT(header[6], 0) ? "Vertical" : "Horizontal");
if (battery_size)
logerror("-- Battery found\n");
if (m_cart->get_trainer())
diff --git a/src/emu/bus/ql/sandy_superdisk.c b/src/emu/bus/ql/sandy_superdisk.c
index 0bc2a426dbd..3ee38632534 100644
--- a/src/emu/bus/ql/sandy_superdisk.c
+++ b/src/emu/bus/ql/sandy_superdisk.c
@@ -88,7 +88,7 @@ static MACHINE_CONFIG_FRAGMENT( sandy_super_disk )
MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", sandy_super_disk_floppies, "35dd", sandy_super_disk_t::floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":1", sandy_super_disk_floppies, NULL, sandy_super_disk_t::floppy_formats)
- MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(sandy_super_disk_t, busy_w))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD(TTL74273_TAG, CENTRONICS_TAG)
MACHINE_CONFIG_END
diff --git a/src/emu/bus/ql/sandy_superqboard.c b/src/emu/bus/ql/sandy_superqboard.c
index f3e3464e551..16459fe2822 100644
--- a/src/emu/bus/ql/sandy_superqboard.c
+++ b/src/emu/bus/ql/sandy_superqboard.c
@@ -109,7 +109,7 @@ static MACHINE_CONFIG_FRAGMENT( sandy_superqboard )
MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", sandy_superqboard_floppies, "35hd", sandy_superqboard_t::floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":1", sandy_superqboard_floppies, NULL, sandy_superqboard_t::floppy_formats)
- MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(sandy_superqboard_t, busy_w))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD(TTL74273_TAG, CENTRONICS_TAG)
MACHINE_CONFIG_END
diff --git a/src/emu/bus/snes/sa1.c b/src/emu/bus/snes/sa1.c
index 620d1db1285..9b715d135e8 100644
--- a/src/emu/bus/snes/sa1.c
+++ b/src/emu/bus/snes/sa1.c
@@ -96,11 +96,15 @@ sns_sa1_device::sns_sa1_device(const machine_config &mconfig, const char *tag, d
void sns_sa1_device::device_start()
{
+ m_scpu_ctrl = 0;
+ m_nmi_vector = 0;
+ m_bank_c_hi = 0;
+ m_bank_c_rom = 0;
}
void sns_sa1_device::device_reset()
{
- memset(m_internal_ram, 0, 0x800);
+ memset(m_internal_ram, 0, sizeof(m_internal_ram));
m_sa1_ctrl = 0x20;
m_scpu_ctrl = 0;
@@ -127,7 +131,7 @@ void sns_sa1_device::device_reset()
m_iram_write_sa1 = 1;
m_src_addr = 0;
m_dst_addr = 0;
- memset(m_brf_reg, 0, 0x10);
+ memset(m_brf_reg, 0, sizeof(m_brf_reg));
m_math_ctlr = 0;
m_math_overflow = 0;
m_math_a = 0;
diff --git a/src/emu/bus/vtech/ioexp/printer.c b/src/emu/bus/vtech/ioexp/printer.c
index c4b5c7735f4..b3342d54a0a 100644
--- a/src/emu/bus/vtech/ioexp/printer.c
+++ b/src/emu/bus/vtech/ioexp/printer.c
@@ -25,7 +25,7 @@ const device_type PRINTER_INTERFACE = &device_creator;
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( printer_interface )
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(printer_interface_device, busy_w))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("latch", "centronics")
MACHINE_CONFIG_END
diff --git a/src/emu/cpu/drcfe.c b/src/emu/cpu/drcfe.c
index 698bee17bfe..c3969be84fe 100644
--- a/src/emu/cpu/drcfe.c
+++ b/src/emu/cpu/drcfe.c
@@ -160,11 +160,20 @@ opcode_desc *drc_frontend::describe_one(offs_t curpc, const opcode_desc *prevdes
{
// initialize the description
opcode_desc *desc = m_desc_allocator.alloc();
- // TODO: this kills the opcode_desc.delay vptr
- memset(desc, 0, sizeof(*desc));
+ desc->m_next = NULL;
+ desc->branch = NULL;
desc->pc = curpc;
desc->physpc = curpc;
desc->targetpc = BRANCH_TARGET_DYNAMIC;
+ memset(&desc->opptr, 0x00, sizeof(desc->opptr));
+ desc->length = 0;
+ desc->delayslots = 0;
+ desc->skipslots = 0;
+ desc->flags = 0;
+ desc->cycles = 0;
+ memset(desc->regin, 0x00, sizeof(desc->regin));
+ memset(desc->regout, 0x00, sizeof(desc->regout));
+ memset(desc->regreq, 0x00, sizeof(desc->regreq));
// call the callback to describe an instruction
if (!describe(*desc, prevdesc))
diff --git a/src/emu/cpu/drcuml.c b/src/emu/cpu/drcuml.c
index 9096f0b8d8c..e3893039b9f 100644
--- a/src/emu/cpu/drcuml.c
+++ b/src/emu/cpu/drcuml.c
@@ -274,6 +274,7 @@ void drcuml_state::log_printf(const char *format, ...)
va_start(va, format);
vfprintf(m_umllog, format, va);
va_end(va);
+ fflush(m_umllog);
}
}
diff --git a/src/emu/cpu/i386/i386.c b/src/emu/cpu/i386/i386.c
index bbd83a7aa93..32374631565 100644
--- a/src/emu/cpu/i386/i386.c
+++ b/src/emu/cpu/i386/i386.c
@@ -125,6 +125,16 @@ UINT32 i386_device::i386_load_protected_mode_segment(I386_SREG *seg, UINT64 *des
UINT32 base, limit;
int entry;
+ if(!seg->selector)
+ {
+ seg->flags = 0;
+ seg->base = 0;
+ seg->limit = 0;
+ seg->d = 0;
+ seg->valid = false;
+ return 0;
+ }
+
if ( seg->selector & 0x4 )
{
base = m_ldtr.base;
@@ -147,7 +157,7 @@ UINT32 i386_device::i386_load_protected_mode_segment(I386_SREG *seg, UINT64 *des
if (seg->flags & 0x8000)
seg->limit = (seg->limit << 12) | 0xfff;
seg->d = (seg->flags & 0x4000) ? 1 : 0;
- seg->valid = (seg->selector & ~3)?(true):(false);
+ seg->valid = true;
if(desc)
*desc = ((UINT64)v2<<32)|v1;
@@ -212,7 +222,8 @@ void i386_device::i386_load_segment_descriptor(int segment )
if (!V8086_MODE)
{
i386_load_protected_mode_segment(&m_sreg[segment], NULL );
- i386_set_descriptor_accessed(m_sreg[segment].selector);
+ if(m_sreg[segment].selector)
+ i386_set_descriptor_accessed(m_sreg[segment].selector);
}
else
{
@@ -752,6 +763,15 @@ void i386_device::i386_trap(int irq, int irq_gate, int trap_level)
logerror("IRQ (%08x): Software IRQ - gate DPL is less than CPL.\n",m_pc);
FAULT_EXP(FAULT_GP,entry+2)
}
+ if(V8086_MODE)
+ {
+ if((!m_IOP1 || !m_IOP2) && (m_opcode != 0xcc))
+ {
+ logerror("IRQ (%08x): Is in Virtual 8086 mode and IOPL != 3.\n",m_pc);
+ FAULT(FAULT_GP,0)
+ }
+
+ }
}
if((flags & 0x0080) == 0)
@@ -1666,17 +1686,17 @@ void i386_device::i386_protected_mode_call(UINT16 seg, UINT32 off, int indirect,
}
if (operand32 != 0) // if 32-bit
{
- if(REG32(ESP) < 8)
+ if(i386_limit_check(SS, REG32(ESP) - 8))
{
- logerror("CALL: Stack has no room for return address.\n");
+ logerror("CALL (%08x): Stack has no room for return address.\n",m_pc);
FAULT(FAULT_SS,0) // #SS(0)
}
}
else
{
- if(REG16(SP) < 4)
+ if(i386_limit_check(SS, (REG16(SP) - 4) & 0xffff))
{
- logerror("CALL: Stack has no room for return address.\n");
+ logerror("CALL (%08x): Stack has no room for return address.\n",m_pc);
FAULT(FAULT_SS,0) // #SS(0)
}
}
@@ -1716,9 +1736,9 @@ void i386_device::i386_protected_mode_call(UINT16 seg, UINT32 off, int indirect,
logerror("CALL: TSS: TSS is busy.\n");
FAULT(FAULT_TS,selector & ~0x03) // #TS(selector)
}
- if(desc.flags & 0x0080)
+ if((desc.flags & 0x0080) == 0)
{
- logerror("CALL: TSS: Segment is not present.\n");
+ logerror("CALL: TSS: Segment %02x is not present.\n",selector);
FAULT(FAULT_NP,selector & ~0x03) // #NP(selector)
}
if(desc.flags & 0x08)
@@ -1924,7 +1944,7 @@ void i386_device::i386_protected_mode_call(UINT16 seg, UINT32 off, int indirect,
/* same privilege */
if (operand32 != 0) // if 32-bit
{
- if(REG32(ESP) < 8)
+ if(i386_limit_check(SS, REG32(ESP) - 8))
{
logerror("CALL: Stack has no room for return address.\n");
FAULT(FAULT_SS,0) // #SS(0)
@@ -1934,7 +1954,7 @@ void i386_device::i386_protected_mode_call(UINT16 seg, UINT32 off, int indirect,
}
else
{
- if(REG16(SP) < 4)
+ if(i386_limit_check(SS, (REG16(SP) - 4) & 0xffff))
{
logerror("CALL: Stack has no room for return address.\n");
FAULT(FAULT_SS,0) // #SS(0)
@@ -1966,7 +1986,7 @@ void i386_device::i386_protected_mode_call(UINT16 seg, UINT32 off, int indirect,
logerror("CALL: Task Gate: Gate DPL is less than RPL.\n");
FAULT(FAULT_TS,selector & ~0x03) // #TS(selector)
}
- if(gate.ar & 0x0080)
+ if((gate.ar & 0x0080) == 0)
{
logerror("CALL: Task Gate: Gate is not present.\n");
FAULT(FAULT_NP,selector & ~0x03) // #NP(selector)
@@ -1992,7 +2012,7 @@ void i386_device::i386_protected_mode_call(UINT16 seg, UINT32 off, int indirect,
logerror("CALL: Task Gate: TSS is busy.\n");
FAULT(FAULT_TS,gate.selector & ~0x03) // #TS(selector)
}
- if(desc.flags & 0x0080)
+ if((desc.flags & 0x0080) == 0)
{
logerror("CALL: Task Gate: TSS is not present.\n");
FAULT(FAULT_NP,gate.selector & ~0x03) // #TS(selector)
@@ -3124,6 +3144,7 @@ void i386_device::i386_common_init(int tlbsize)
m_vtlb = vtlb_alloc(this, AS_PROGRAM, 0, tlbsize);
m_smi = false;
m_debugger_temp = 0;
+ m_lock = false;
zero_state();
@@ -3132,26 +3153,32 @@ void i386_device::i386_common_init(int tlbsize)
save_item(NAME(m_sreg[ES].base));
save_item(NAME(m_sreg[ES].limit));
save_item(NAME(m_sreg[ES].flags));
+ save_item(NAME(m_sreg[ES].d));
save_item(NAME(m_sreg[CS].selector));
save_item(NAME(m_sreg[CS].base));
save_item(NAME(m_sreg[CS].limit));
save_item(NAME(m_sreg[CS].flags));
+ save_item(NAME(m_sreg[CS].d));
save_item(NAME(m_sreg[SS].selector));
save_item(NAME(m_sreg[SS].base));
save_item(NAME(m_sreg[SS].limit));
save_item(NAME(m_sreg[SS].flags));
+ save_item(NAME(m_sreg[SS].d));
save_item(NAME(m_sreg[DS].selector));
save_item(NAME(m_sreg[DS].base));
save_item(NAME(m_sreg[DS].limit));
save_item(NAME(m_sreg[DS].flags));
+ save_item(NAME(m_sreg[DS].d));
save_item(NAME(m_sreg[FS].selector));
save_item(NAME(m_sreg[FS].base));
save_item(NAME(m_sreg[FS].limit));
save_item(NAME(m_sreg[FS].flags));
+ save_item(NAME(m_sreg[FS].d));
save_item(NAME(m_sreg[GS].selector));
save_item(NAME(m_sreg[GS].base));
save_item(NAME(m_sreg[GS].limit));
save_item(NAME(m_sreg[GS].flags));
+ save_item(NAME(m_sreg[GS].d));
save_item(NAME(m_eip));
save_item(NAME(m_prev_eip));
save_item(NAME(m_CF));
@@ -3545,7 +3572,6 @@ void i386_device::device_reset()
m_smi_latched = false;
m_nmi_masked = false;
m_nmi_latched = false;
- m_lock = false;
m_a20_mask = ~0;
diff --git a/src/emu/cpu/i386/i386op16.inc b/src/emu/cpu/i386/i386op16.inc
index 81aaf8f025b..7c327d12621 100644
--- a/src/emu/cpu/i386/i386op16.inc
+++ b/src/emu/cpu/i386/i386op16.inc
@@ -1746,8 +1746,12 @@ void i386_device::i386_popf() // Opcode 0x9d
void i386_device::i386_push_ax() // Opcode 0x50
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-2) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 2;
+ else
+ offset = (REG16(SP) - 2) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH16(REG16(AX) );
else
FAULT(FAULT_SS,0)
@@ -1756,8 +1760,12 @@ void i386_device::i386_push_ax() // Opcode 0x50
void i386_device::i386_push_cx() // Opcode 0x51
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-2) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 2;
+ else
+ offset = (REG16(SP) - 2) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH16(REG16(CX) );
else
FAULT(FAULT_SS,0)
@@ -1766,8 +1774,12 @@ void i386_device::i386_push_cx() // Opcode 0x51
void i386_device::i386_push_dx() // Opcode 0x52
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-2) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 2;
+ else
+ offset = (REG16(SP) - 2) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH16(REG16(DX) );
else
FAULT(FAULT_SS,0)
@@ -1776,8 +1788,12 @@ void i386_device::i386_push_dx() // Opcode 0x52
void i386_device::i386_push_bx() // Opcode 0x53
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-2) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 2;
+ else
+ offset = (REG16(SP) - 2) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH16(REG16(BX) );
else
FAULT(FAULT_SS,0)
@@ -1786,8 +1802,12 @@ void i386_device::i386_push_bx() // Opcode 0x53
void i386_device::i386_push_sp() // Opcode 0x54
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-2) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 2;
+ else
+ offset = (REG16(SP) - 2) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH16(REG16(SP) );
else
FAULT(FAULT_SS,0)
@@ -1796,8 +1816,12 @@ void i386_device::i386_push_sp() // Opcode 0x54
void i386_device::i386_push_bp() // Opcode 0x55
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-2) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 2;
+ else
+ offset = (REG16(SP) - 2) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH16(REG16(BP) );
else
FAULT(FAULT_SS,0)
@@ -1806,8 +1830,12 @@ void i386_device::i386_push_bp() // Opcode 0x55
void i386_device::i386_push_si() // Opcode 0x56
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-2) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 2;
+ else
+ offset = (REG16(SP) - 2) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH16(REG16(SI) );
else
FAULT(FAULT_SS,0)
@@ -1816,8 +1844,12 @@ void i386_device::i386_push_si() // Opcode 0x56
void i386_device::i386_push_di() // Opcode 0x57
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-2) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 2;
+ else
+ offset = (REG16(SP) - 2) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH16(REG16(DI) );
else
FAULT(FAULT_SS,0)
@@ -1826,8 +1858,12 @@ void i386_device::i386_push_di() // Opcode 0x57
void i386_device::i386_push_cs16() // Opcode 0x0e
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-2) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 2;
+ else
+ offset = (REG16(SP) - 2) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH16(m_sreg[CS].selector );
else
FAULT(FAULT_SS,0)
@@ -1836,8 +1872,12 @@ void i386_device::i386_push_cs16() // Opcode 0x0e
void i386_device::i386_push_ds16() // Opcode 0x1e
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-2) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 2;
+ else
+ offset = (REG16(SP) - 2) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH16(m_sreg[DS].selector );
else
FAULT(FAULT_SS,0)
@@ -1846,8 +1886,12 @@ void i386_device::i386_push_ds16() // Opcode 0x1e
void i386_device::i386_push_es16() // Opcode 0x06
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-2) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 2;
+ else
+ offset = (REG16(SP) - 2) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH16(m_sreg[ES].selector );
else
FAULT(FAULT_SS,0)
@@ -1856,8 +1900,12 @@ void i386_device::i386_push_es16() // Opcode 0x06
void i386_device::i386_push_fs16() // Opcode 0x0f a0
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-2) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 2;
+ else
+ offset = (REG16(SP) - 2) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH16(m_sreg[FS].selector );
else
FAULT(FAULT_SS,0)
@@ -1866,8 +1914,12 @@ void i386_device::i386_push_fs16() // Opcode 0x0f a0
void i386_device::i386_push_gs16() // Opcode 0x0f a8
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-2) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 2;
+ else
+ offset = (REG16(SP) - 2) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH16(m_sreg[GS].selector );
else
FAULT(FAULT_SS,0)
@@ -1876,8 +1928,12 @@ void i386_device::i386_push_gs16() // Opcode 0x0f a8
void i386_device::i386_push_ss16() // Opcode 0x16
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-2) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 2;
+ else
+ offset = (REG16(SP) - 2) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH16(m_sreg[SS].selector );
else
FAULT(FAULT_SS,0)
@@ -1887,8 +1943,12 @@ void i386_device::i386_push_ss16() // Opcode 0x16
void i386_device::i386_push_i16() // Opcode 0x68
{
UINT16 value = FETCH16();
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-2) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 2;
+ else
+ offset = (REG16(SP) - 2) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH16(value);
else
FAULT(FAULT_SS,0)
@@ -1898,8 +1958,12 @@ void i386_device::i386_push_i16() // Opcode 0x68
void i386_device::i386_pusha() // Opcode 0x60
{
UINT16 temp = REG16(SP);
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-16) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 16;
+ else
+ offset = (REG16(SP) - 16) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
{
PUSH16(REG16(AX) );
PUSH16(REG16(CX) );
@@ -1917,8 +1981,12 @@ void i386_device::i386_pusha() // Opcode 0x60
void i386_device::i386_pushf() // Opcode 0x9c
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-2) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 2;
+ else
+ offset = (REG16(SP) - 2) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH16(get_flags() & 0xffff );
else
FAULT(FAULT_SS,0)
@@ -3133,9 +3201,14 @@ void i386_device::i386_group0F00_16() // Opcode 0x0f 00
memset(&seg, 0, sizeof(seg));
seg.selector = m_task.segment;
i386_load_protected_mode_segment(&seg,NULL);
+
+ UINT32 addr = ((seg.selector & 4) ? m_ldtr.base : m_gdtr.base) + (seg.selector & ~7) + 5;
+ i386_translate_address(TRANSLATE_READ, &addr, NULL);
+ m_program->write_byte(addr, (seg.flags & 0xff) | 2);
+
m_task.limit = seg.limit;
m_task.base = seg.base;
- m_task.flags = seg.flags;
+ m_task.flags = seg.flags | 2;
}
else
{
diff --git a/src/emu/cpu/i386/i386op32.inc b/src/emu/cpu/i386/i386op32.inc
index ea6a6ea5672..18b4ab46f20 100644
--- a/src/emu/cpu/i386/i386op32.inc
+++ b/src/emu/cpu/i386/i386op32.inc
@@ -1599,8 +1599,12 @@ void i386_device::i386_popfd() // Opcode 0x9d
void i386_device::i386_push_eax() // Opcode 0x50
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-4) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 4;
+ else
+ offset = (REG16(SP) - 4) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH32(REG32(EAX) );
else
FAULT(FAULT_SS,0)
@@ -1609,8 +1613,12 @@ void i386_device::i386_push_eax() // Opcode 0x50
void i386_device::i386_push_ecx() // Opcode 0x51
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-4) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 4;
+ else
+ offset = (REG16(SP) - 4) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH32(REG32(ECX) );
else
FAULT(FAULT_SS,0)
@@ -1619,8 +1627,12 @@ void i386_device::i386_push_ecx() // Opcode 0x51
void i386_device::i386_push_edx() // Opcode 0x52
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-4) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 4;
+ else
+ offset = (REG16(SP) - 4) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH32(REG32(EDX) );
else
FAULT(FAULT_SS,0)
@@ -1629,8 +1641,12 @@ void i386_device::i386_push_edx() // Opcode 0x52
void i386_device::i386_push_ebx() // Opcode 0x53
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-4) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 4;
+ else
+ offset = (REG16(SP) - 4) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH32(REG32(EBX) );
else
FAULT(FAULT_SS,0)
@@ -1639,8 +1655,12 @@ void i386_device::i386_push_ebx() // Opcode 0x53
void i386_device::i386_push_esp() // Opcode 0x54
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-4) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 4;
+ else
+ offset = (REG16(SP) - 4) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH32(REG32(ESP) );
else
FAULT(FAULT_SS,0)
@@ -1649,8 +1669,12 @@ void i386_device::i386_push_esp() // Opcode 0x54
void i386_device::i386_push_ebp() // Opcode 0x55
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-4) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 4;
+ else
+ offset = (REG16(SP) - 4) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH32(REG32(EBP) );
else
FAULT(FAULT_SS,0)
@@ -1659,8 +1683,12 @@ void i386_device::i386_push_ebp() // Opcode 0x55
void i386_device::i386_push_esi() // Opcode 0x56
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-4) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 4;
+ else
+ offset = (REG16(SP) - 4) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH32(REG32(ESI) );
else
FAULT(FAULT_SS,0)
@@ -1669,8 +1697,12 @@ void i386_device::i386_push_esi() // Opcode 0x56
void i386_device::i386_push_edi() // Opcode 0x57
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-4) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 4;
+ else
+ offset = (REG16(SP) - 4) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH32(REG32(EDI) );
else
FAULT(FAULT_SS,0)
@@ -1679,8 +1711,12 @@ void i386_device::i386_push_edi() // Opcode 0x57
void i386_device::i386_push_cs32() // Opcode 0x0e
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-4) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 4;
+ else
+ offset = (REG16(SP) - 4) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH32(m_sreg[CS].selector );
else
FAULT(FAULT_SS,0)
@@ -1689,8 +1725,12 @@ void i386_device::i386_push_cs32() // Opcode 0x0e
void i386_device::i386_push_ds32() // Opcode 0x1e
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-4) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 4;
+ else
+ offset = (REG16(SP) - 4) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH32(m_sreg[DS].selector );
else
FAULT(FAULT_SS,0)
@@ -1699,8 +1739,12 @@ void i386_device::i386_push_ds32() // Opcode 0x1e
void i386_device::i386_push_es32() // Opcode 0x06
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-4) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 4;
+ else
+ offset = (REG16(SP) - 4) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH32(m_sreg[ES].selector );
else
FAULT(FAULT_SS,0)
@@ -1709,8 +1753,12 @@ void i386_device::i386_push_es32() // Opcode 0x06
void i386_device::i386_push_fs32() // Opcode 0x0f a0
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-4) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 4;
+ else
+ offset = (REG16(SP) - 4) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH32(m_sreg[FS].selector );
else
FAULT(FAULT_SS,0)
@@ -1719,8 +1767,12 @@ void i386_device::i386_push_fs32() // Opcode 0x0f a0
void i386_device::i386_push_gs32() // Opcode 0x0f a8
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-4) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 4;
+ else
+ offset = (REG16(SP) - 4) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH32(m_sreg[GS].selector );
else
FAULT(FAULT_SS,0)
@@ -1729,8 +1781,12 @@ void i386_device::i386_push_gs32() // Opcode 0x0f a8
void i386_device::i386_push_ss32() // Opcode 0x16
{
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-4) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 4;
+ else
+ offset = (REG16(SP) - 4) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH32(m_sreg[SS].selector );
else
FAULT(FAULT_SS,0)
@@ -1740,8 +1796,12 @@ void i386_device::i386_push_ss32() // Opcode 0x16
void i386_device::i386_push_i32() // Opcode 0x68
{
UINT32 value = FETCH32();
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-4) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 4;
+ else
+ offset = (REG16(SP) - 4) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH32(value);
else
FAULT(FAULT_SS,0)
@@ -1751,8 +1811,12 @@ void i386_device::i386_push_i32() // Opcode 0x68
void i386_device::i386_pushad() // Opcode 0x60
{
UINT32 temp = REG32(ESP);
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-32) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 32;
+ else
+ offset = (REG16(SP) - 32) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
{
PUSH32(REG32(EAX) );
PUSH32(REG32(ECX) );
@@ -1772,8 +1836,12 @@ void i386_device::i386_pushfd() // Opcode 0x9c
{
if(!m_IOP1 && !m_IOP2 && V8086_MODE)
FAULT(FAULT_GP,0)
- UINT32 offset = (STACK_32BIT ? REG32(ESP) : REG16(SP));
- if(i386_limit_check(SS,offset-4) == 0)
+ UINT32 offset;
+ if(STACK_32BIT)
+ offset = REG32(ESP) - 4;
+ else
+ offset = (REG16(SP) - 4) & 0xffff;
+ if(i386_limit_check(SS,offset) == 0)
PUSH32(get_flags() & 0x00fcffff );
else
FAULT(FAULT_SS,0)
@@ -2939,9 +3007,14 @@ void i386_device::i386_group0F00_32() // Opcode 0x0f 00
memset(&seg, 0, sizeof(seg));
seg.selector = m_task.segment;
i386_load_protected_mode_segment(&seg,NULL);
+
+ UINT32 addr = ((seg.selector & 4) ? m_ldtr.base : m_gdtr.base) + (seg.selector & ~7) + 5;
+ i386_translate_address(TRANSLATE_READ, &addr, NULL);
+ m_program->write_byte(addr, (seg.flags & 0xff) | 2);
+
m_task.limit = seg.limit;
m_task.base = seg.base;
- m_task.flags = seg.flags;
+ m_task.flags = seg.flags | 2;
}
else
{
diff --git a/src/emu/cpu/mips/mips3drc.c b/src/emu/cpu/mips/mips3drc.c
index b8c67dc8694..8727bc18bd9 100644
--- a/src/emu/cpu/mips/mips3drc.c
+++ b/src/emu/cpu/mips/mips3drc.c
@@ -1387,7 +1387,7 @@ int mips3_device::generate_opcode(drcuml_block *block, compiler_state *compiler,
case 0x0f: /* LUI - MIPS I */
if (RTREG != 0)
- UML_DMOV(block, R64(RTREG), SIMMVAL << 16); // dmov ,SIMMVAL << 16
+ UML_DMOV(block, R64(RTREG), UIMMVAL << 16); // dmov ,UIMMVAL << 16
return TRUE;
case 0x08: /* ADDI - MIPS I */
@@ -2764,9 +2764,17 @@ int mips3_device::generate_cop1(drcuml_block *block, compiler_state *compiler, c
case 0x07:
if (IS_SINGLE(op)) /* NEG.S - MIPS I */
+ {
UML_FSNEG(block, FPR32(FDREG), FPR32(FSREG)); // fsneg ,
+ UML_CMP(block, FPR32(FSREG), 0); // cmp ,0.0
+ UML_MOVc(block, COND_E, FPR32(FDREG), 0x80000000); // mov ,-0.0,e
+ }
else /* NEG.D - MIPS I */
+ {
UML_FDNEG(block, FPR64(FDREG), FPR64(FSREG)); // fdneg ,
+ UML_CMP(block, FPR64(FSREG), 0); // cmp ,0.0
+ UML_DMOVc(block, COND_E, FPR64(FDREG), 0x8000000000000000L);// dmov ,-0.0,e
+ }
return TRUE;
case 0x08:
@@ -2774,6 +2782,7 @@ int mips3_device::generate_cop1(drcuml_block *block, compiler_state *compiler, c
UML_FSTOINT(block, FPR64(FDREG), FPR32(FSREG), SIZE_QWORD, ROUND_ROUND);// fstoint ,,qword,round
else /* ROUND.L.D - MIPS III */
UML_FDTOINT(block, FPR64(FDREG), FPR64(FSREG), SIZE_QWORD, ROUND_ROUND);// fdtoint ,,qword,round
+ UML_DSEXT(block, FPR64(FDREG), FPR64(FDREG), SIZE_DWORD);
return TRUE;
case 0x09:
@@ -2781,6 +2790,7 @@ int mips3_device::generate_cop1(drcuml_block *block, compiler_state *compiler, c
UML_FSTOINT(block, FPR64(FDREG), FPR32(FSREG), SIZE_QWORD, ROUND_TRUNC);// fstoint ,,qword,trunc
else /* TRUNC.L.D - MIPS III */
UML_FDTOINT(block, FPR64(FDREG), FPR64(FSREG), SIZE_QWORD, ROUND_TRUNC);// fdtoint ,,qword,trunc
+ UML_DSEXT(block, FPR64(FDREG), FPR64(FDREG), SIZE_DWORD);
return TRUE;
case 0x0a:
@@ -2788,6 +2798,7 @@ int mips3_device::generate_cop1(drcuml_block *block, compiler_state *compiler, c
UML_FSTOINT(block, FPR64(FDREG), FPR32(FSREG), SIZE_QWORD, ROUND_CEIL);// fstoint ,,qword,ceil
else /* CEIL.L.D - MIPS III */
UML_FDTOINT(block, FPR64(FDREG), FPR64(FSREG), SIZE_QWORD, ROUND_CEIL);// fdtoint ,,qword,ceil
+ UML_DSEXT(block, FPR64(FDREG), FPR64(FDREG), SIZE_DWORD);
return TRUE;
case 0x0b:
@@ -2795,6 +2806,7 @@ int mips3_device::generate_cop1(drcuml_block *block, compiler_state *compiler, c
UML_FSTOINT(block, FPR64(FDREG), FPR32(FSREG), SIZE_QWORD, ROUND_FLOOR);// fstoint ,,qword,floor
else /* FLOOR.L.D - MIPS III */
UML_FDTOINT(block, FPR64(FDREG), FPR64(FSREG), SIZE_QWORD, ROUND_FLOOR);// fdtoint ,,qword,floor
+ UML_DSEXT(block, FPR64(FDREG), FPR64(FDREG), SIZE_DWORD);
return TRUE;
case 0x0c:
diff --git a/src/emu/cpu/mips/mips3fe.c b/src/emu/cpu/mips/mips3fe.c
index da713856e65..7d031c32407 100644
--- a/src/emu/cpu/mips/mips3fe.c
+++ b/src/emu/cpu/mips/mips3fe.c
@@ -106,7 +106,7 @@ bool mips3_frontend::describe(opcode_desc &desc, const opcode_desc *prev)
desc.regin[0] |= REGFLAG_R(RSREG) | REGFLAG_R(RTREG);
desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
}
- desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
+ desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
desc.delayslots = 1;
desc.skipslots = (opswitch & 0x10) ? 1 : 0;
return true;
@@ -122,7 +122,7 @@ bool mips3_frontend::describe(opcode_desc &desc, const opcode_desc *prev)
desc.regin[0] |= REGFLAG_R(RSREG);
desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
}
- desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
+ desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
desc.delayslots = 1;
desc.skipslots = (opswitch & 0x10) ? 1 : 0;
return true;
@@ -396,7 +396,7 @@ bool mips3_frontend::describe_regimm(UINT32 op, opcode_desc &desc)
desc.regin[0] |= REGFLAG_R(RSREG);
desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
}
- desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
+ desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
desc.delayslots = 1;
desc.skipslots = (RTREG & 0x02) ? 1 : 0;
return true;
@@ -423,7 +423,7 @@ bool mips3_frontend::describe_regimm(UINT32 op, opcode_desc &desc)
desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
}
desc.regout[0] |= REGFLAG_R(31);
- desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
+ desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
desc.delayslots = 1;
desc.skipslots = (RTREG & 0x02) ? 1 : 0;
return true;
@@ -508,7 +508,7 @@ bool mips3_frontend::describe_cop0(UINT32 op, opcode_desc &desc)
case 0x00: // BCzF
case 0x01: // BCzT
desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
- desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
+ desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
desc.delayslots = 1;
return true;
}
@@ -580,7 +580,7 @@ bool mips3_frontend::describe_cop1(UINT32 op, opcode_desc &desc)
case 0x03: // BCzTL
desc.regin[2] |= REGFLAG_FCC;
desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
- desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
+ desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
desc.delayslots = 1;
desc.skipslots = (RTREG & 0x02) ? 1 : 0;
return true;
@@ -730,7 +730,7 @@ bool mips3_frontend::describe_cop2(UINT32 op, opcode_desc &desc)
case 0x00: // BCzF
case 0x01: // BCzT
desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
- desc.targetpc = desc.pc + 4 + (SIMMVAL << 2);
+ desc.targetpc = desc.pc + 4 + SIMMVAL * 4;
desc.delayslots = 1;
return true;
}
diff --git a/src/emu/cpu/rsp/rsp.h b/src/emu/cpu/rsp/rsp.h
index 3d0ec785156..38e63a7a787 100644
--- a/src/emu/cpu/rsp/rsp.h
+++ b/src/emu/cpu/rsp/rsp.h
@@ -299,6 +299,7 @@ public:
void ccfunc_rsp_vabs_scalar();
void ccfunc_rsp_vaddc_scalar();
void ccfunc_rsp_vsubc_scalar();
+ void ccfunc_rsp_vaddb_scalar();
void ccfunc_rsp_vsaw_scalar();
void ccfunc_rsp_vlt_scalar();
void ccfunc_rsp_veq_scalar();
@@ -325,6 +326,7 @@ public:
void ccfunc_mtc2_scalar();
void ccfunc_ctc2_scalar();
#endif
+ void ccfunc_rsp_vrsq_scalar();
#if USE_SIMD && SIMUL_SIMD
void ccfunc_backup_regs();
void ccfunc_restore_regs();
@@ -541,6 +543,7 @@ private:
void generate_checksum_block(drcuml_block *block, compiler_state *compiler, const opcode_desc *seqhead, const opcode_desc *seqlast);
void generate_sequence_instruction(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
void generate_delay_slot_and_branch(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc, UINT8 linkreg);
+ void generate_branch(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
int generate_vector_opcode(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
int generate_opcode(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
int generate_special(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
diff --git a/src/emu/cpu/rsp/rspdrc.c b/src/emu/cpu/rsp/rspdrc.c
index e2f5e9bb805..24154b985fc 100644
--- a/src/emu/cpu/rsp/rspdrc.c
+++ b/src/emu/cpu/rsp/rspdrc.c
@@ -4686,7 +4686,7 @@ inline void rsp_device::ccfunc_rsp_vaddc_scalar()
INT32 s2 = (UINT32)(UINT16)w2;
INT32 r = s1 + s2;
- vres[i] = (INT16)r;
+ vres[i] = (INT16)(r);
SET_ACCUM_L((INT16)r, i);
if (r & 0xffff0000)
@@ -4754,7 +4754,6 @@ inline void rsp_device::ccfunc_rsp_vsubc_scalar()
{
int op = m_rsp_state->arg0;
-
CLEAR_ZERO_FLAGS();
CLEAR_CARRY_FLAGS();
@@ -4789,6 +4788,67 @@ static void cfunc_rsp_vsubc_scalar(void *param)
}
#endif
+// VADDB
+//
+// 31 25 24 20 15 10 5 0
+// ------------------------------------------------------
+// | 010010 | 1 | EEEE | SSSSS | TTTTT | DDDDD | 010110 |
+// ------------------------------------------------------
+//
+// Adds two vector registers bytewise with rounding
+inline void rsp_device::ccfunc_rsp_vaddb_scalar()
+{
+ const int op = m_rsp_state->arg0;
+ const int round = (EL == 0) ? 0 : (1 << (EL - 1));
+
+ INT16 vres[8];
+ for (int i = 0; i < 8; i++)
+ {
+ UINT16 w1, w2;
+ SCALAR_GET_VS1(w1, i);
+ SCALAR_GET_VS2(w2, i);
+
+ UINT8 hb1 = w1 >> 8;
+ UINT8 lb1 = w1 & 0xff;
+ UINT8 hb2 = w2 >> 8;
+ UINT8 lb2 = w2 & 0xff;
+
+ UINT16 hs = hb1 + hb2 + round;
+ UINT16 ls = lb1 + lb2 + round;
+
+ SET_ACCUM_L((hs << 8) | ls, i);
+
+ hs >>= EL;
+ if (hs > 255)
+ {
+ hs = 255;
+ }
+ else if (hs < 0)
+ {
+ hs = 0;
+ }
+
+ ls >>= EL;
+ if (ls > 255)
+ {
+ ls = 255;
+ }
+ else if (ls < 0)
+ {
+ ls = 0;
+ }
+
+ vres[i] = 0; // VD writeback disabled on production hardware
+ // vres[i] = (hs << 8) | ls;
+ }
+ WRITEBACK_RESULT();
+}
+
+static void cfunc_rsp_vaddb_scalar(void *param)
+{
+ ((rsp_device *)param)->ccfunc_rsp_vaddb_scalar();
+}
+
#if USE_SIMD
// VSAW
//
@@ -6318,13 +6378,15 @@ inline void rsp_device::ccfunc_rsp_vrcpl_simd()
UINT16 urec;
SIMD_EXTRACT16(m_xv[VS2REG], urec, EL);
- INT32 rec = (urec | m_reciprocal_high);
-
+ INT32 rec = (INT16)urec;
INT32 datainput = rec;
- if (rec < 0)
+ if (m_dp_allowed)
{
- if (m_dp_allowed)
+ rec = (rec & 0x0000ffff) | m_reciprocal_high;
+ datainput = rec;
+
+ if (rec < 0)
{
if (rec < -32768)
{
@@ -6335,12 +6397,13 @@ inline void rsp_device::ccfunc_rsp_vrcpl_simd()
datainput = -datainput;
}
}
- else
- {
- datainput = -datainput;
- }
}
+ else if (datainput < 0)
+ {
+ datainput = -datainput;
+ shifter = 0x10;
+ }
if (datainput)
{
@@ -6353,25 +6416,12 @@ inline void rsp_device::ccfunc_rsp_vrcpl_simd()
}
}
}
- else
- {
- if (m_dp_allowed)
- {
- shifter = 0;
- }
- else
- {
- shifter = 0x10;
- }
- }
INT32 address = ((datainput << shifter) & 0x7fc00000) >> 22;
INT32 fetchval = rsp_divtable[address];
INT32 temp = (0x40000000 | (fetchval << 14)) >> ((~shifter) & 0x1f);
- if (rec < 0)
- {
- temp = ~temp;
- }
+ temp ^= rec >> 31;
+
if (!rec)
{
temp = 0x7fffffff;
@@ -6408,12 +6458,15 @@ inline void rsp_device::ccfunc_rsp_vrcpl_scalar()
int op = m_rsp_state->arg0;
INT32 shifter = 0;
- INT32 rec = ((UINT16)(VREG_S(VS2REG, EL & 7)) | m_reciprocal_high);
+ INT32 rec = (INT16)VREG_S(VS2REG, EL & 7);
INT32 datainput = rec;
- if (rec < 0)
+ if (m_dp_allowed)
{
- if (m_dp_allowed)
+ rec = (rec & 0x0000ffff) | m_reciprocal_high;
+ datainput = rec;
+
+ if (rec < 0)
{
if (rec < -32768)
{
@@ -6424,12 +6477,13 @@ inline void rsp_device::ccfunc_rsp_vrcpl_scalar()
datainput = -datainput;
}
}
- else
- {
- datainput = -datainput;
- }
}
+ else if (datainput < 0)
+ {
+ datainput = -datainput;
+ shifter = 0x10;
+ }
if (datainput)
{
@@ -6442,25 +6496,11 @@ inline void rsp_device::ccfunc_rsp_vrcpl_scalar()
}
}
}
- else
- {
- if (m_dp_allowed)
- {
- shifter = 0;
- }
- else
- {
- shifter = 0x10;
- }
- }
- INT32 address = ((datainput << shifter) & 0x7fc00000) >> 22;
- INT32 fetchval = rsp_divtable[address];
+ UINT32 address = (datainput << shifter) >> 22;
+ INT32 fetchval = rsp_divtable[address & 0x1ff];
INT32 temp = (0x40000000 | (fetchval << 14)) >> ((~shifter) & 0x1f);
- if (rec < 0)
- {
- temp = ~temp;
- }
+ temp ^= rec >> 31;
if (!rec)
{
temp = 0x7fffffff;
@@ -6592,31 +6632,69 @@ static void cfunc_rsp_vmov_scalar(void *param)
}
#endif
-#if USE_SIMD
-// VRSQL
+// VRSQ
//
// 31 25 24 20 15 10 5 0
// ------------------------------------------------------
-// | 010010 | 1 | EEEE | SSSSS | ?FFFF | DDDDD | 110101 |
+// | 010010 | 1 | EEEE | SSSSS | ?FFFF | DDDDD | 110100 |
// ------------------------------------------------------
//
-// Calculates reciprocal square-root low part
+// Calculates reciprocal square-root
-inline void rsp_device::ccfunc_rsp_vrsql_simd()
+inline void rsp_device::ccfunc_rsp_vrsq_scalar()
{
int op = m_rsp_state->arg0;
-#if SIMUL_SIMD
- m_old_reciprocal_res = m_reciprocal_res;
- m_old_reciprocal_high = m_reciprocal_high;
- m_old_dp_allowed = m_dp_allowed;
-#endif
-
INT32 shifter = 0;
- UINT16 val;
- SIMD_EXTRACT16(m_xv[VS2REG], val, EL);
- INT32 rec = m_reciprocal_high | val;
- INT32 datainput = rec;
+ INT32 rec = (INT16)VREG_S(VS2REG, EL & 7);
+ INT32 datainput = (rec < 0) ? (-rec) : (rec);
+
+ if (rec < 0)
+ {
+ if (rec < -32768)
+ {
+ datainput = ~datainput;
+ }
+ else
+ {
+ datainput = -datainput;
+ }
+ }
+
+ if (datainput)
+ {
+ for (int i = 0; i < 32; i++)
+ {
+ if (datainput & (1 << ((~i) & 0x1f)))
+ {
+ shifter = i;
+ break;
+ }
+ }
+ }
+ else
+ {
+ shifter = 0;
+ }
+
+ INT32 address = ((datainput << shifter) & 0x7fc00000) >> 22;
+ address = ((address | 0x200) & 0x3fe) | (shifter & 1);
+
+ INT32 fetchval = rsp_divtable[address];
+ INT32 temp = (0x40000000 | (fetchval << 14)) >> (((~shifter) & 0x1f) >> 1);
+ if (rec < 0)
+ {
+ temp = ~temp;
+ }
+ if (!rec)
+ {
+ temp = 0x7fffffff;
+ }
+ else if (rec == 0xffff8000)
+ {
+ temp = 0xffff0000;
+ }
+ rec = temp;
if (rec < 0)
{
@@ -6650,13 +6728,99 @@ inline void rsp_device::ccfunc_rsp_vrsql_simd()
}
else
{
- if (m_dp_allowed)
+ shifter = 0;
+ }
+
+ address = ((datainput << shifter) & 0x7fc00000) >> 22;
+ address = ((address | 0x200) & 0x3fe) | (shifter & 1);
+
+ fetchval = rsp_divtable[address];
+ temp = (0x40000000 | (fetchval << 14)) >> (((~shifter) & 0x1f) >> 1);
+ if (rec < 0)
+ {
+ temp = ~temp;
+ }
+ if (!rec)
+ {
+ temp = 0x7fff;
+ }
+ else if (rec == 0xffff8000)
+ {
+ temp = 0x0000;
+ }
+ rec = temp;
+
+ W_VREG_S(VDREG, VS1REG & 7) = (UINT16)rec;
+ for (int i = 0; i < 8; i++)
+ {
+ SET_ACCUM_L(VREG_S(VS2REG, VEC_EL_2(EL, i)), i);
+ }
+}
+
+static void cfunc_rsp_vrsq_scalar(void *param)
+{
+ ((rsp_device *)param)->ccfunc_rsp_vrsq_scalar();
+}
+
+#if USE_SIMD
+// VRSQL
+//
+// 31 25 24 20 15 10 5 0
+// ------------------------------------------------------
+// | 010010 | 1 | EEEE | SSSSS | ?FFFF | DDDDD | 110101 |
+// ------------------------------------------------------
+//
+// Calculates reciprocal square-root low part
+
+inline void rsp_device::ccfunc_rsp_vrsql_simd()
+{
+ int op = m_rsp_state->arg0;
+
+#if SIMUL_SIMD
+ m_old_reciprocal_res = m_reciprocal_res;
+ m_old_reciprocal_high = m_reciprocal_high;
+ m_old_dp_allowed = m_dp_allowed;
+#endif
+
+ INT32 shifter = 0;
+ UINT16 val;
+ SIMD_EXTRACT16(m_xv[VS2REG], val, EL);
+ INT32 rec = (INT16)val;
+ INT32 datainput = rec;
+
+ if (m_dp_allowed)
+ {
+ rec = (rec & 0x0000ffff) | m_reciprocal_high;
+ datainput = rec;
+
+ if (rec < 0)
{
- shifter = 0;
+ if (rec < -32768)
+ {
+ datainput = ~datainput;
+ }
+ else
+ {
+ datainput = -datainput;
+ }
}
- else
+ }
+ else if (datainput < 0)
+ {
+ datainput = -datainput;
+
+ shifter = 0x10;
+ }
+
+ if (datainput)
+ {
+ for (int i = 0; i < 32; i++)
{
- shifter = 0x10;
+ if (datainput & (1 << ((~i) & 0x1f)))
+ {
+ shifter = i;
+ break;
+ }
}
}
@@ -6665,10 +6829,8 @@ inline void rsp_device::ccfunc_rsp_vrsql_simd()
INT32 fetchval = rsp_divtable[address];
INT32 temp = (0x40000000 | (fetchval << 14)) >> (((~shifter) & 0x1f) >> 1);
- if (rec < 0)
- {
- temp = ~temp;
- }
+ temp ^= rec >> 31;
+
if (!rec)
{
temp = 0x7fffffff;
@@ -6699,12 +6861,15 @@ inline void rsp_device::ccfunc_rsp_vrsql_scalar()
int op = m_rsp_state->arg0;
INT32 shifter = 0;
- INT32 rec = m_reciprocal_high | (UINT16)VREG_S(VS2REG, EL & 7);
+ INT32 rec = (INT16)VREG_S(VS2REG, EL & 7);
INT32 datainput = rec;
- if (rec < 0)
+ if (m_dp_allowed)
{
- if (m_dp_allowed)
+ rec = (rec & 0x0000ffff) | m_reciprocal_high;
+ datainput = rec;
+
+ if (rec < 0)
{
if (rec < -32768)
{
@@ -6715,10 +6880,12 @@ inline void rsp_device::ccfunc_rsp_vrsql_scalar()
datainput = -datainput;
}
}
- else
- {
- datainput = -datainput;
- }
+ }
+ else if (datainput < 0)
+ {
+ datainput = -datainput;
+
+ shifter = 0x10;
}
if (datainput)
@@ -6732,27 +6899,14 @@ inline void rsp_device::ccfunc_rsp_vrsql_scalar()
}
}
}
- else
- {
- if (m_dp_allowed)
- {
- shifter = 0;
- }
- else
- {
- shifter = 0x10;
- }
- }
INT32 address = ((datainput << shifter) & 0x7fc00000) >> 22;
address = ((address | 0x200) & 0x3fe) | (shifter & 1);
INT32 fetchval = rsp_divtable[address];
INT32 temp = (0x40000000 | (fetchval << 14)) >> (((~shifter) & 0x1f) >> 1);
- if (rec < 0)
- {
- temp = ~temp;
- }
+ temp ^= rec >> 31;
+
if (!rec)
{
temp = 0x7fffffff;
@@ -7360,6 +7514,30 @@ void rsp_device::generate_sequence_instruction(drcuml_block *block, compiler_sta
}
}
+/*------------------------------------------------------------------
+ generate_branch
+------------------------------------------------------------------*/
+
+void rsp_device::generate_branch(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc)
+{
+ compiler_state compiler_temp = *compiler;
+
+ /* update the cycles and jump through the hash table to the target */
+ if (desc->targetpc != BRANCH_TARGET_DYNAMIC)
+ {
+ generate_update_cycles(block, &compiler_temp, desc->targetpc, TRUE); //
+ if (desc->flags & OPFLAG_INTRABLOCK_BRANCH)
+ UML_JMP(block, desc->targetpc | 0x80000000); // jmp desc->targetpc
+ else
+ UML_HASHJMP(block, 0, desc->targetpc, *m_nocode); // hashjmp ,desc->targetpc,nocode
+ }
+ else
+ {
+ generate_update_cycles(block, &compiler_temp, mem(&m_rsp_state->jmpdest), TRUE); //
+ UML_HASHJMP(block, 0, mem(&m_rsp_state->jmpdest), *m_nocode); // hashjmp ,,nocode
+ }
+}
+
/*------------------------------------------------------------------
generate_delay_slot_and_branch
------------------------------------------------------------------*/
@@ -7386,23 +7564,7 @@ void rsp_device::generate_delay_slot_and_branch(drcuml_block *block, compiler_st
assert(desc->delay.first() != NULL);
generate_sequence_instruction(block, &compiler_temp, desc->delay.first()); //
- /* update the cycles and jump through the hash table to the target */
- if (desc->targetpc != BRANCH_TARGET_DYNAMIC)
- {
- generate_update_cycles(block, &compiler_temp, desc->targetpc, TRUE); //
- if (desc->flags & OPFLAG_INTRABLOCK_BRANCH)
- UML_JMP(block, desc->targetpc | 0x80000000); // jmp desc->targetpc
- else
- UML_HASHJMP(block, 0, desc->targetpc, *m_nocode);
- // hashjmp ,desc->targetpc,nocode
- }
- else
- {
- generate_update_cycles(block, &compiler_temp, mem(&m_rsp_state->jmpdest), TRUE);
- //
- UML_HASHJMP(block, 0, mem(&m_rsp_state->jmpdest), *m_nocode);
- // hashjmp ,,nocode
- }
+ generate_branch(block, compiler, desc);
/* update the label */
compiler->labelnum = compiler_temp.labelnum;
@@ -7618,6 +7780,26 @@ int rsp_device::generate_vector_opcode(drcuml_block *block, compiler_state *comp
#endif
return TRUE;
+ case 0x16: /* VADDB */
+ UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ UML_CALLC(block, cfunc_rsp_vaddb_scalar, this);
+ return TRUE;
+
+ case 0x17: /* VSUBB (reserved, functionally identical to VADDB) */
+ UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ UML_CALLC(block, cfunc_rsp_vaddb_scalar, this);
+ return TRUE;
+
+ case 0x18: /* VACCB (reserved, functionally identical to VADDB) */
+ UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ UML_CALLC(block, cfunc_rsp_vaddb_scalar, this);
+ return TRUE;
+
+ case 0x19: /* VSUCB (reserved, functionally identical to VADDB) */
+ UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ UML_CALLC(block, cfunc_rsp_vaddb_scalar, this);
+ return TRUE;
+
case 0x1d: /* VSAW */
UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
UML_CALLC(block, cfunc_rsp_vsaw_simd, this);
@@ -7827,6 +8009,11 @@ int rsp_device::generate_vector_opcode(drcuml_block *block, compiler_state *comp
#endif
return TRUE;
+ case 0x34: /* VRSQ */
+ UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ UML_CALLC_block, cfunc_rsp_vrsq_scalar, this);
+ return TRUE;
+
case 0x35: /* VRSQL */
UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
UML_CALLC(block, cfunc_rsp_vrsql_simd, this);
@@ -7849,6 +8036,10 @@ int rsp_device::generate_vector_opcode(drcuml_block *block, compiler_state *comp
#endif
return TRUE;
+ case 0x37: /* VNOP */
+ case 0x3F: /* VNULL */
+ return TRUE;
+
default:
UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
UML_CALLC(block, cfunc_unimplemented_opcode, this);
@@ -7954,6 +8145,26 @@ int rsp_device::generate_vector_opcode(drcuml_block *block, compiler_state *comp
UML_CALLC(block, cfunc_rsp_vsubc_scalar, this);
return TRUE;
+ case 0x16: /* VADDB */
+ UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ UML_CALLC(block, cfunc_rsp_vaddb_scalar, this);
+ return TRUE;
+
+ case 0x17: /* VSUBB (reserved, functionally identical to VADDB) */
+ UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ UML_CALLC(block, cfunc_rsp_vaddb_scalar, this);
+ return TRUE;
+
+ case 0x18: /* VACCB (reserved, functionally identical to VADDB) */
+ UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ UML_CALLC(block, cfunc_rsp_vaddb_scalar, this);
+ return TRUE;
+
+ case 0x19: /* VSUCB (reserved, functionally identical to VADDB) */
+ UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ UML_CALLC(block, cfunc_rsp_vaddb_scalar, this);
+ return TRUE;
+
case 0x1d: /* VSAW */
UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
UML_CALLC(block, cfunc_rsp_vsaw_scalar, this);
@@ -8049,6 +8260,11 @@ int rsp_device::generate_vector_opcode(drcuml_block *block, compiler_state *comp
UML_CALLC(block, cfunc_rsp_vmov_scalar, this);
return TRUE;
+ case 0x34: /* VRSQ */
+ UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
+ UML_CALLC(block, cfunc_rsp_vrsq_scalar, this);
+ return TRUE;
+
case 0x35: /* VRSQL */
UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
UML_CALLC(block, cfunc_rsp_vrsql_scalar, this);
@@ -8059,6 +8275,10 @@ int rsp_device::generate_vector_opcode(drcuml_block *block, compiler_state *comp
UML_CALLC(block, cfunc_rsp_vrsqh_scalar, this);
return TRUE;
+ case 0x37: /* VNOP */
+ case 0x3F: /* VNULL */
+ return TRUE;
+
default:
UML_MOV(block, mem(&m_rsp_state->arg0), desc->opptr.l[0]); // mov [arg0],desc->opptr.l
UML_CALLC(block, cfunc_unimplemented_opcode, this);
@@ -8421,6 +8641,9 @@ int rsp_device::generate_special(drcuml_block *block, compiler_state *compiler,
UML_MOV(block, mem(&m_rsp_state->arg0), 3); // mov [arg0],3
UML_CALLC(block, cfunc_sp_set_status_cb, this); // callc cfunc_sp_set_status_cb
UML_MOV(block, mem(&m_rsp_state->icount), 0); // mov icount, #0
+ UML_MOV(block, mem(&m_rsp_state->jmpdest), desc->targetpc);
+
+ generate_branch(block, compiler, desc);
UML_EXIT(block, EXECUTE_OUT_OF_CYCLES);
return TRUE;
diff --git a/src/emu/cpu/rsp/rspfe.c b/src/emu/cpu/rsp/rspfe.c
index 85d6a36021b..bd610bca661 100644
--- a/src/emu/cpu/rsp/rspfe.c
+++ b/src/emu/cpu/rsp/rspfe.c
@@ -83,7 +83,7 @@ bool rsp_frontend::describe(opcode_desc &desc, const opcode_desc *prev)
desc.regin[0] |= REGFLAG_R(RSREG) | REGFLAG_R(RTREG);
desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
}
- desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000;
+ desc.targetpc = ((desc.pc + 4 + SIMMVAL * 4) & 0x00000fff) | 0x1000;
desc.delayslots = 1;
desc.skipslots = (opswitch & 0x10) ? 1 : 0;
return true;
@@ -97,7 +97,7 @@ bool rsp_frontend::describe(opcode_desc &desc, const opcode_desc *prev)
desc.regin[0] |= REGFLAG_R(RSREG);
desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
}
- desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000;
+ desc.targetpc = ((desc.pc + 4 + SIMMVAL * 4) & 0x00000fff) | 0x1000;
desc.delayslots = 1;
desc.skipslots = (opswitch & 0x10) ? 1 : 0;
return true;
@@ -207,8 +207,8 @@ bool rsp_frontend::describe_special(UINT32 op, opcode_desc &desc)
return true;
case 0x0d: // BREAK
- desc.flags |= OPFLAG_END_SEQUENCE;
- desc.targetpc = BRANCH_TARGET_DYNAMIC;
+ desc.flags |= OPFLAG_IS_UNCONDITIONAL_BRANCH | OPFLAG_END_SEQUENCE;
+ desc.targetpc = (op >> 5) & 0x000fffff;
return true;
}
@@ -234,7 +234,7 @@ bool rsp_frontend::describe_regimm(UINT32 op, opcode_desc &desc)
desc.regin[0] |= REGFLAG_R(RSREG);
desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
}
- desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000;
+ desc.targetpc = ((desc.pc + 4 + SIMMVAL * 4) & 0x00000fff) | 0x1000;
desc.delayslots = 1;
desc.skipslots = (RTREG & 0x02) ? 1 : 0;
return true;
@@ -249,7 +249,7 @@ bool rsp_frontend::describe_regimm(UINT32 op, opcode_desc &desc)
desc.flags |= OPFLAG_IS_CONDITIONAL_BRANCH;
}
desc.regout[0] |= REGFLAG_R(31);
- desc.targetpc = ((desc.pc + 4 + (SIMMVAL << 2)) & 0x00000fff) | 0x1000;
+ desc.targetpc = ((desc.pc + 4 + SIMMVAL * 4) & 0x00000fff) | 0x1000;
desc.delayslots = 1;
desc.skipslots = (RTREG & 0x02) ? 1 : 0;
return true;
diff --git a/src/emu/cpu/tms0980/tms0980.c b/src/emu/cpu/tms0980/tms0980.c
index bf95bccca8d..06a438521a1 100644
--- a/src/emu/cpu/tms0980/tms0980.c
+++ b/src/emu/cpu/tms0980/tms0980.c
@@ -123,7 +123,6 @@ unknown cycle: CME, SSE, SSS
#include "debugger.h"
#include "tms0980.h"
-#define LOG 0
const device_type TMS0980 = &device_creator;
@@ -236,20 +235,11 @@ const device_type TMS1300 = &device_creator;
#define I_YNEC ( MICRO_MASK | M_YTP | M_CKN | M_NE )
-static const UINT8 tms0980_c2_value[4] =
-{
- 0x00, 0x02, 0x01, 0x03
-};
-static const UINT8 tms0980_c3_value[8] =
-{
- 0x00, 0x04, 0x02, 0x06, 0x01, 0x05, 0x03, 0x07
-};
-static const UINT8 tms0980_c4_value[16] =
-{
- 0x00, 0x08, 0x04, 0x0C, 0x02, 0x0A, 0x06, 0x0E, 0x01, 0x09, 0x05, 0x0D, 0x03, 0x0B, 0x07, 0x0F
-};
+static const UINT8 tms0980_c2_value[4] = { 0, 2, 1, 3 };
+static const UINT8 tms0980_c3_value[8] = { 0, 4, 2, 6, 1, 5, 3, 7 };
+static const UINT8 tms0980_c4_value[16] = { 0x0, 0x8, 0x4, 0xC, 0x2, 0xA, 0x6, 0xE, 0x1, 0x9, 0x5, 0xD, 0x3, 0xB, 0x7, 0xF };
static const UINT8 tms0980_bit_value[4] = { 1, 4, 2, 8 };
-static const UINT8 tms0980_nbit_value[4] = { 0x0E, 0x0B, 0x0D, 0x07 };
+static const UINT8 tms0980_nbit_value[4] = { 0xE, 0xB, 0xD, 0x7 };
static const UINT32 tms0980_decode[512] =
@@ -329,7 +319,8 @@ static const UINT32 tms0980_decode[512] =
};
-static const UINT32 tms1000_default_decode[256] = {
+static const UINT32 tms1000_default_decode[256] =
+{
/* 0x00 */
F_COMX, I_A8AAC, I_YNEA, I_TAM, I_TAMZA, I_A10AAC, I_A6AAC, I_DAN,
I_TKA, I_KNEZ, F_TDO, F_CLO, F_RSTR, F_SETR, I_IA, F_RETN,
@@ -371,7 +362,8 @@ static const UINT32 tms1000_default_decode[256] = {
};
-static const UINT32 tms1100_default_decode[256] = {
+static const UINT32 tms1100_default_decode[256] =
+{
/* 0x00 */
I_MNEA, I_ALEM, I_YNEA, I_XMA, I_DYN, I_IYC, I_AMAAC, I_DMAN,
I_TKA, F_COMX, F_TDO, F_COMC, F_RSTR, F_SETR, I_KNEZ, F_RETN,
@@ -504,8 +496,8 @@ void tms1xxx_cpu_device::device_start()
void tms1xxx_cpu_device::device_reset()
{
- m_pa = 0x0F;
- m_pb = 0x0F;
+ m_pa = 0xF;
+ m_pb = 0xF;
m_pc = 0;
m_dam = 0;
m_ca = 0;
@@ -620,7 +612,8 @@ location{1:0} = ( pc{5:4} == 00 && pc{0} == 0 ) => 11
( pc{5:4} == 11 && pc{0} == 1 ) => 10
*/
-static const UINT8 tms1000_next_pc[64] = {
+static const UINT8 tms1000_next_pc[64] =
+{
0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F,
0x20, 0x22, 0x24, 0x26, 0x28, 0x2A, 0x2C, 0x2E, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3A, 0x3C, 0x3F,
0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E,
@@ -711,7 +704,6 @@ void tms1xxx_cpu_device::execute_run()
{
do
{
-// debugger_instruction_hook( this, ( ( m_pa << m_pc_size ) | m_pc ) << 1 );
m_icount--;
switch( m_subcycle )
{
@@ -811,12 +803,10 @@ void tms1xxx_cpu_device::execute_run()
}
if ( m_decode & M_STO )
{
-//printf("write ram %02x data %01x\n", m_ram_address, m_a );
m_data->write_byte( m_ram_address, m_a );
}
if ( m_decode & M_CKM )
{
-//printf("write ram %02x data %01x\n", m_ram_address, m_cki_bus );
m_data->write_byte( m_ram_address, m_cki_bus );
}
}
@@ -824,12 +814,10 @@ void tms1xxx_cpu_device::execute_run()
{
if ( m_decode & F_SBIT )
{
-//printf("write ram %02x data %01x\n", m_ram_address, m_ram_data | tms0980_bit_value[ m_opcode & 0x03 ] );
m_data->write_byte( m_ram_address, m_ram_data | tms0980_bit_value[ m_opcode & 0x03 ] );
}
if ( m_decode & F_RBIT )
{
-//printf("write ram %02x data %01x\n", m_ram_address, m_ram_data & tms0980_nbit_value[ m_opcode & 0x03 ] );
m_data->write_byte( m_ram_address, m_ram_data & tms0980_nbit_value[ m_opcode & 0x03 ] );
}
if ( m_decode & F_SETR )
@@ -850,10 +838,6 @@ void tms1xxx_cpu_device::execute_run()
{
logerror("unknown output pla mapping for status latch = %d and a = %X\n", m_status_latch, m_a);
}
-//if ( ( c_output_pla[ ( m_status_latch << 4 ) | m_a ] & 0xFF00 ) == 0xFF00 )
-//printf("****** o output m_status_latch = %X, m_a = %X\n", m_status_latch, m_a);
-//else
-//printf("o output m_status_latch = %X, m_a = %X\n", m_status_latch, m_a);
m_write_o( 0, m_o & m_o_mask, 0xffff );
}
@@ -951,8 +935,6 @@ void tms1xxx_cpu_device::execute_run()
m_opcode = m_program->read_byte( m_rom_address );
}
next_pc();
- if (LOG)
- logerror( "tms0980: read opcode %04x from %04x. Set pc to %04x\n", m_opcode, m_rom_address, m_pc );
/* ram address */
m_ram_address = ( m_x << 4 ) | m_y;
diff --git a/src/emu/cpu/tms57002/tms57002.c b/src/emu/cpu/tms57002/tms57002.c
index bb8698f9661..fb55dfa916c 100644
--- a/src/emu/cpu/tms57002/tms57002.c
+++ b/src/emu/cpu/tms57002/tms57002.c
@@ -23,6 +23,7 @@ ADDRESS_MAP_END
tms57002_device::tms57002_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: cpu_device(mconfig, TMS57002, "TMS57002", tag, owner, clock, "tms57002", __FILE__),
device_sound_interface(mconfig, *this),
+ txrd(0),
program_config("program", ENDIANNESS_LITTLE, 32, 8, -2, ADDRESS_MAP_NAME(internal_pgm)),
data_config("data", ENDIANNESS_LITTLE, 8, 20)
{
diff --git a/src/emu/cpu/upd7810/upd7810.c b/src/emu/cpu/upd7810/upd7810.c
index 1232fd20271..70bdeafe766 100644
--- a/src/emu/cpu/upd7810/upd7810.c
+++ b/src/emu/cpu/upd7810/upd7810.c
@@ -567,8 +567,8 @@ UINT8 upd7810_device::RP(offs_t port)
data = (data & ~0x02) | (m_rxd & 1 ? 0x02 : 0x00);
if (m_mcc & 0x04) /* PC2 = SCK input/output */
data = (data & ~0x04) | (m_sck & 1 ? 0x04 : 0x00);
- if (m_mcc & 0x08) /* PC3 = TI input */
- data = (data & ~0x08) | (m_ti & 1 ? 0x08 : 0x00);
+ if (m_mcc & 0x08) /* PC3 = TI/INT2 input */
+ data = (data & ~0x08) | (m_int2 & 1 ? 0x08 : 0x00);
if (m_mcc & 0x10) /* PC4 = TO output */
data = (data & ~0x10) | (m_to & 1 ? 0x10 : 0x00);
if (m_mcc & 0x20) /* PC5 = CI input */
@@ -648,8 +648,8 @@ void upd7810_device::WP(offs_t port, UINT8 data)
data = (data & ~0x02) | (m_rxd & 1 ? 0x02 : 0x00);
if (m_mcc & 0x04) /* PC2 = SCK input/output */
data = (data & ~0x04) | (m_sck & 1 ? 0x04 : 0x00);
- if (m_mcc & 0x08) /* PC3 = TI input */
- data = (data & ~0x08) | (m_ti & 1 ? 0x08 : 0x00);
+ if (m_mcc & 0x08) /* PC3 = TI/INT2 input */
+ data = (data & ~0x08) | (m_int2 & 1 ? 0x08 : 0x00);
if (m_mcc & 0x10) /* PC4 = TO output */
data = (data & ~0x10) | (m_to & 1 ? 0x10 : 0x00);
if (m_mcc & 0x20) /* PC5 = CI input */
@@ -709,6 +709,14 @@ void upd7810_device::upd7810_take_irq()
return;
/* check the interrupts in priority sequence */
+ if (IRR & INTNMI)
+ {
+ /* Nonmaskable interrupt */
+ irqline = INPUT_LINE_NMI;
+ vector = 0x0004;
+ IRR &= ~INTNMI;
+ }
+ else
if ((IRR & INTFT0) && 0 == (MKL & 0x02))
{
vector = 0x0008;
@@ -1174,6 +1182,64 @@ void upd7810_device::upd7810_sio_input()
}
}
+void upd7810_device::upd7810_handle_timer0(int cycles, int clkdiv)
+{
+ OVC0 += cycles;
+ while (OVC0 >= clkdiv)
+ {
+ OVC0 -= clkdiv;
+ CNT0++;
+ if (CNT0 == TM0)
+ {
+ CNT0 = 0;
+ IRR |= INTFT0;
+ /* timer F/F source is timer 0 ? */
+ if (0x00 == (TMM & 0x03))
+ {
+ TO ^= 1;
+ m_to_func(TO);
+ }
+ /* timer 1 chained with timer 0 ? */
+ if ((TMM & 0xe0) == 0x60)
+ {
+ CNT1++;
+ if (CNT1 == TM1)
+ {
+ CNT1 = 0;
+ IRR |= INTFT1;
+ /* timer F/F source is timer 1 ? */
+ if (0x01 == (TMM & 0x03))
+ {
+ TO ^= 1;
+ m_to_func(TO);
+ }
+ }
+ }
+ }
+ }
+}
+
+void upd7810_device::upd7810_handle_timer1(int cycles, int clkdiv)
+{
+ OVC1 += cycles;
+ while (OVC1 >= clkdiv)
+ {
+ OVC1 -= clkdiv;
+ CNT1++;
+ if (CNT1 == TM1)
+ {
+ CNT1 = 0;
+ IRR |= INTFT1;
+ /* timer F/F source is timer 1 ? */
+ if (0x01 == (TMM & 0x03))
+ {
+ TO ^= 1;
+ m_to_func(TO);
+ }
+ }
+ }
+}
+
void upd7810_device::handle_timers(int cycles)
{
/**** TIMER 0 ****/
@@ -1184,74 +1250,10 @@ void upd7810_device::handle_timers(int cycles)
switch (TMM & 0x0c) /* timer 0 clock source */
{
case 0x00: /* clock divided by 12 */
- OVC0 += cycles;
- while (OVC0 >= 12)
- {
- OVC0 -= 12;
- CNT0++;
- if (CNT0 == TM0)
- {
- CNT0 = 0;
- IRR |= INTFT0;
- /* timer F/F source is timer 0 ? */
- if (0x00 == (TMM & 0x03))
- {
- TO ^= 1;
- m_to_func(TO);
- }
- /* timer 1 chained with timer 0 ? */
- if ((TMM & 0xe0) == 0x60)
- {
- CNT1++;
- if (CNT1 == TM1)
- {
- IRR |= INTFT1;
- CNT1 = 0;
- /* timer F/F source is timer 1 ? */
- if (0x01 == (TMM & 0x03))
- {
- TO ^= 1;
- m_to_func(TO);
- }
- }
- }
- }
- }
+ upd7810_handle_timer0(cycles, 12);
break;
case 0x04: /* clock divided by 384 */
- OVC0 += cycles;
- while (OVC0 >= 384)
- {
- OVC0 -= 384;
- CNT0++;
- if (CNT0 == TM0)
- {
- CNT0 = 0;
- IRR |= INTFT0;
- /* timer F/F source is timer 0 ? */
- if (0x00 == (TMM & 0x03))
- {
- TO ^= 1;
- m_to_func(TO);
- }
- /* timer 1 chained with timer 0 ? */
- if ((TMM & 0xe0) == 0x60)
- {
- CNT1++;
- if (CNT1 == TM1)
- {
- CNT1 = 0;
- IRR |= INTFT1;
- /* timer F/F source is timer 1 ? */
- if (0x01 == (TMM & 0x03))
- {
- TO ^= 1;
- m_to_func(TO);
- }
- }
- }
- }
- }
+ upd7810_handle_timer0(cycles, 384);
break;
case 0x08: /* external signal at TI */
break;
@@ -1268,42 +1270,10 @@ void upd7810_device::handle_timers(int cycles)
switch (TMM & 0x60) /* timer 1 clock source */
{
case 0x00: /* clock divided by 12 */
- OVC1 += cycles;
- while (OVC1 >= 12)
- {
- OVC1 -= 12;
- CNT1++;
- if (CNT1 == TM1)
- {
- CNT1 = 0;
- IRR |= INTFT1;
- /* timer F/F source is timer 1 ? */
- if (0x01 == (TMM & 0x03))
- {
- TO ^= 1;
- m_to_func(TO);
- }
- }
- }
+ upd7810_handle_timer1(cycles, 12);
break;
case 0x20: /* clock divided by 384 */
- OVC1 += cycles;
- while (OVC1 >= 384)
- {
- OVC1 -= 384;
- CNT1++;
- if (CNT1 == TM1)
- {
- CNT1 = 0;
- IRR |= INTFT1;
- /* timer F/F source is timer 1 ? */
- if (0x01 == (TMM & 0x03))
- {
- TO ^= 1;
- m_to_func(TO);
- }
- }
- }
+ upd7810_handle_timer1(cycles, 384);
break;
case 0x40: /* external signal at TI */
break;
@@ -1338,6 +1308,12 @@ void upd7810_device::handle_timers(int cycles)
{
OVCE -= 12;
ECNT++;
+ /* Interrupt Control Circuit */
+ if (ETM0 == ECNT)
+ IRR |= INTFE0;
+ if (ETM1 == ECNT)
+ IRR |= INTFE1;
+ /* How and When ECNT is Cleared */
switch (ETMM & 0x0c)
{
case 0x00: /* clear ECNT */
@@ -1353,117 +1329,43 @@ void upd7810_device::handle_timers(int cycles)
ECNT = 0;
break;
}
- switch (ETMM & 0x30)
+ /* Conditions When ECNT Causes a CO0 Output Change */
+ if (((0x00 == (ETMM & 0x30)) && (ETM0 == ECNT)) || /* set CO0 if ECNT == ETM0 */
+ /* ((0x10 == (ETMM & 0x30)) prohibited */
+ ((0x20 == (ETMM & 0x30)) && (ETM0 == ECNT)) || /* set CO0 if ECNT == ETM0 or at falling CI input */
+ ((0x30 == (ETMM & 0x30)) && (ETM0 == ECNT || ETM1 == ECNT))) /* latch CO0 if ECNT == ETM0 or ECNT == ETM1 */
{
- case 0x00: /* set CO0 if ECNT == ETM0 */
- if (ETM0 == ECNT)
+ switch (EOM & 0x0e)
{
- switch (EOM & 0x0e)
- {
- case 0x02: /* toggle CO0 */
- CO0 = (CO0 >> 1) | ((CO0 ^ 2) & 2);
- break;
- case 0x04: /* reset CO0 */
- CO0 = 0;
- break;
- case 0x08: /* set CO0 */
- CO0 = 1;
- break;
- }
+ case 0x02: /* toggle CO0 */
+ CO0 = (CO0 >> 1) | ((CO0 ^ 2) & 2);
+ break;
+ case 0x04: /* reset CO0 */
+ CO0 = 0;
+ break;
+ case 0x08: /* set CO0 */
+ CO0 = 1;
+ break;
}
- break;
- case 0x10: /* prohibited */
- break;
- case 0x20: /* set CO0 if ECNT == ETM0 or at falling CI input */
- if (ETM0 == ECNT)
- {
- switch (EOM & 0x0e)
- {
- case 0x02: /* toggle CO0 */
- CO0 = (CO0 >> 1) | ((CO0 ^ 2) & 2);
- break;
- case 0x04: /* reset CO0 */
- CO0 = 0;
- break;
- case 0x08: /* set CO0 */
- CO0 = 1;
- break;
- }
- }
- break;
- case 0x30: /* latch CO0 if ECNT == ETM0 or ECNT == ETM1 */
- if (ETM0 == ECNT || ETM1 == ECNT)
- {
- switch (EOM & 0x0e)
- {
- case 0x02: /* toggle CO0 */
- CO0 = (CO0 >> 1) | ((CO0 ^ 2) & 2);
- break;
- case 0x04: /* reset CO0 */
- CO0 = 0;
- break;
- case 0x08: /* set CO0 */
- CO0 = 1;
- break;
- }
- }
- break;
}
- switch (ETMM & 0xc0)
+ /* Conditions When ECNT Causes a CO1 Output Change */
+ if (((0x00 == (ETMM & 0xc0)) && (ETM0 == ECNT)) || /* set CO1 if ECNT == ETM0 */
+ /* ((0x40 == (ETMM & 0xc0)) prohibited */
+ ((0x80 == (ETMM & 0xc0)) && (ETM0 == ECNT)) || /* set CO1 if ECNT == ETM0 or at falling CI input */
+ ((0xc0 == (ETMM & 0xc0)) && (ETM0 == ECNT || ETM1 == ECNT))) /* latch CO1 if ECNT == ETM0 or ECNT == ETM1 */
{
- case 0x00: /* lacth CO1 if ECNT == ETM1 */
- if (ETM1 == ECNT)
+ switch (EOM & 0xe0)
{
- switch (EOM & 0xe0)
- {
- case 0x20: /* toggle CO1 */
- CO1 = (CO1 >> 1) | ((CO1 ^ 2) & 2);
- break;
- case 0x40: /* reset CO1 */
- CO1 = 0;
- break;
- case 0x80: /* set CO1 */
- CO1 = 1;
- break;
- }
+ case 0x20: /* toggle CO1 */
+ CO1 = (CO1 >> 1) | ((CO1 ^ 2) & 2);
+ break;
+ case 0x40: /* reset CO1 */
+ CO1 = 0;
+ break;
+ case 0x80: /* set CO1 */
+ CO1 = 1;
+ break;
}
- break;
- case 0x40: /* prohibited */
- break;
- case 0x80: /* latch CO1 if ECNT == ETM1 or falling edge of CI input */
- if (ETM1 == ECNT)
- {
- switch (EOM & 0xe0)
- {
- case 0x20: /* toggle CO1 */
- CO1 = (CO1 >> 1) | ((CO1 ^ 2) & 2);
- break;
- case 0x40: /* reset CO1 */
- CO1 = 0;
- break;
- case 0x80: /* set CO1 */
- CO1 = 1;
- break;
- }
- }
- break;
- case 0xc0: /* latch CO1 if ECNT == ETM0 or ECNT == ETM1 */
- if (ETM0 == ECNT || ETM1 == ECNT)
- {
- switch (EOM & 0xe0)
- {
- case 0x20: /* toggle CO1 */
- CO1 = (CO1 >> 1) | ((CO1 ^ 2) & 2);
- break;
- case 0x40: /* reset CO1 */
- CO1 = 0;
- break;
- case 0x80: /* set CO1 */
- CO1 = 1;
- break;
- }
- }
- break;
}
}
}
@@ -1508,6 +1410,7 @@ void upd7810_device::handle_timers(int cycles)
else
m_adtot = 192;
m_adout = 0;
+ m_shdone = 0;
if (ANM & 0x01)
{
/* select mode */
@@ -1524,62 +1427,70 @@ void upd7810_device::handle_timers(int cycles)
if (ANM & 0x01)
{
/* select mode */
- while (m_adcnt > m_adtot)
+ if (m_shdone == 0)
{
- UINT8 cr = 0;
- m_adcnt -= m_adtot;
switch (m_adin)
{
- case 0: cr = m_an0_func(); break;
- case 1: cr = m_an1_func(); break;
- case 2: cr = m_an2_func(); break;
- case 3: cr = m_an3_func(); break;
- case 4: cr = m_an4_func(); break;
- case 5: cr = m_an5_func(); break;
- case 6: cr = m_an6_func(); break;
- case 7: cr = m_an7_func(); break;
+ case 0: m_tmpcr = m_an0_func(); break;
+ case 1: m_tmpcr = m_an1_func(); break;
+ case 2: m_tmpcr = m_an2_func(); break;
+ case 3: m_tmpcr = m_an3_func(); break;
+ case 4: m_tmpcr = m_an4_func(); break;
+ case 5: m_tmpcr = m_an5_func(); break;
+ case 6: m_tmpcr = m_an6_func(); break;
+ case 7: m_tmpcr = m_an7_func(); break;
}
+ m_shdone = 1;
+ }
+ if (m_adcnt > m_adtot)
+ {
+ m_adcnt -= m_adtot;
switch (m_adout)
{
- case 0: CR0 = cr; break;
- case 1: CR1 = cr; break;
- case 2: CR2 = cr; break;
- case 3: CR3 = cr; break;
+ case 0: CR0 = m_tmpcr; break;
+ case 1: CR1 = m_tmpcr; break;
+ case 2: CR2 = m_tmpcr; break;
+ case 3: CR3 = m_tmpcr; break;
}
- m_adout = (m_adout + 1) & 0x07;
+ m_adout = (m_adout + 1) & 0x03;
if (m_adout == 0)
IRR |= INTFAD;
+ m_shdone = 0;
}
}
else
{
/* scan mode */
- while (m_adcnt > m_adtot)
+ if (m_shdone == 0)
{
- UINT8 cr = 0;
- m_adcnt -= m_adtot;
switch (m_adin | m_adrange)
{
- case 0: cr = m_an0_func(); break;
- case 1: cr = m_an1_func(); break;
- case 2: cr = m_an2_func(); break;
- case 3: cr = m_an3_func(); break;
- case 4: cr = m_an4_func(); break;
- case 5: cr = m_an5_func(); break;
- case 6: cr = m_an6_func(); break;
- case 7: cr = m_an7_func(); break;
+ case 0: m_tmpcr = m_an0_func(); break;
+ case 1: m_tmpcr = m_an1_func(); break;
+ case 2: m_tmpcr = m_an2_func(); break;
+ case 3: m_tmpcr = m_an3_func(); break;
+ case 4: m_tmpcr = m_an4_func(); break;
+ case 5: m_tmpcr = m_an5_func(); break;
+ case 6: m_tmpcr = m_an6_func(); break;
+ case 7: m_tmpcr = m_an7_func(); break;
}
+ m_shdone = 1;
+ }
+ if (m_adcnt > m_adtot)
+ {
+ m_adcnt -= m_adtot;
switch (m_adout)
{
- case 0: CR0 = cr; break;
- case 1: CR1 = cr; break;
- case 2: CR2 = cr; break;
- case 3: CR3 = cr; break;
+ case 0: CR0 = m_tmpcr; break;
+ case 1: CR1 = m_tmpcr; break;
+ case 2: CR2 = m_tmpcr; break;
+ case 3: CR3 = m_tmpcr; break;
}
m_adin = (m_adin + 1) & 0x07;
- m_adout = (m_adout + 1) & 0x07;
+ m_adout = (m_adout + 1) & 0x03;
if (m_adout == 0)
IRR |= INTFAD;
+ m_shdone = 0;
}
}
@@ -1705,6 +1616,7 @@ void upd7810_device::base_device_start()
save_item(NAME(m_ovcf));
save_item(NAME(m_ovcs));
save_item(NAME(m_edges));
+ save_item(NAME(m_nmi));
save_item(NAME(m_int1));
save_item(NAME(m_int2));
@@ -1886,6 +1798,7 @@ void upd7810_device::device_reset()
m_co1 = 0;
m_irr = 0;
m_itf = 0;
+ m_nmi = 0;
m_int1 = 0;
m_int2 = 0;
@@ -1902,6 +1815,8 @@ void upd7810_device::device_reset()
m_edges = 0;
m_adcnt = 0;
m_adtot = 0;
+ m_tmpcr = 0;
+ m_shdone = 0;
m_adout = 0;
m_adin = 0;
m_adrange = 0;
@@ -2057,37 +1972,31 @@ void upd7801_device::execute_set_input(int irqline, int state)
void upd7810_device::execute_set_input(int irqline, int state)
{
- if (state != CLEAR_LINE)
- {
- if (irqline == INPUT_LINE_NMI)
- {
- /* no nested NMIs ? */
-// if (0 == (IRR & INTNMI))
- {
- IRR |= INTNMI;
- SP--;
- WM( SP, PSW );
- SP--;
- WM( SP, PCH );
- SP--;
- WM( SP, PCL );
- IFF = 0;
- PSW &= ~(SK|L0|L1);
- PC = 0x0004;
- }
- }
- else
- if (irqline == UPD7810_INTF1)
+ switch (irqline) {
+ case INPUT_LINE_NMI:
+ /* NMI is falling edge sensitive */
+ if ( m_nmi == ASSERT_LINE && state == CLEAR_LINE )
+ IRR |= INTNMI;
+
+ m_nmi = state;
+ break;
+ case UPD7810_INTF1:
+ /* INT1 is rising edge sensitive */
+ if ( m_int1 == CLEAR_LINE && state == ASSERT_LINE )
IRR |= INTF1;
- else
- if ( irqline == UPD7810_INTF2 && ( MKL & 0x20 ) )
+
+ m_int1 = state;
+ break;
+ case UPD7810_INTF2:
+ /* INT2 is falling edge sensitive */
+ if ( m_int2 == ASSERT_LINE && state == CLEAR_LINE )
IRR |= INTF2;
- // gamemaster hack
- else
- if (irqline == UPD7810_INTFE1)
- IRR |= INTFE1;
- else
- logerror("upd7810_set_irq_line invalid irq line #%d\n", irqline);
+
+ m_int2 = state;
+ break;
+ default:
+ logerror("upd7810_set_irq_line invalid irq line #%d\n", irqline);
+ break;
}
/* resetting interrupt requests is done with the SKIT/SKNIT opcodes only! */
}
diff --git a/src/emu/cpu/upd7810/upd7810.h b/src/emu/cpu/upd7810/upd7810.h
index 3be3177040c..45dbbfc8df9 100644
--- a/src/emu/cpu/upd7810/upd7810.h
+++ b/src/emu/cpu/upd7810/upd7810.h
@@ -169,17 +169,20 @@ protected:
virtual void handle_timers(int cycles);
virtual void upd7810_take_irq();
+ void upd7810_handle_timer0(int cycles, int clkdiv);
+ void upd7810_handle_timer1(int cycles, int clkdiv);
+
devcb_write_line m_to_func;
devcb_write_line m_txd_func;
devcb_read_line m_rxd_func;
- devcb_read_line m_an0_func;
- devcb_read_line m_an1_func;
- devcb_read_line m_an2_func;
- devcb_read_line m_an3_func;
- devcb_read_line m_an4_func;
- devcb_read_line m_an5_func;
- devcb_read_line m_an6_func;
- devcb_read_line m_an7_func;
+ devcb_read8 m_an0_func;
+ devcb_read8 m_an1_func;
+ devcb_read8 m_an2_func;
+ devcb_read8 m_an3_func;
+ devcb_read8 m_an4_func;
+ devcb_read8 m_an5_func;
+ devcb_read8 m_an6_func;
+ devcb_read8 m_an7_func;
typedef void (upd7810_device::*opcode_func)();
@@ -291,8 +294,9 @@ protected:
UINT8 m_co1;
UINT16 m_irr; /* interrupt request register */
UINT16 m_itf; /* interrupt test flag register */
- int m_int1; /* keep track of current int1 state. Needed for 7801 irq checking. */
- int m_int2; /* keep track to current int2 state. Needed for 7801 irq checking. */
+ int m_nmi; /* keep track of current nmi state. Needed for 7810 irq checking. */
+ int m_int1; /* keep track of current int1 state. Needed for irq checking. */
+ int m_int2; /* keep track to current int2 state. Needed for irq checking. */
/* internal helper variables */
UINT16 m_txs; /* transmitter shift register */
@@ -308,6 +312,8 @@ protected:
UINT8 m_edges; /* rising/falling edge flag for serial I/O */
UINT16 m_adcnt; /* A/D converter cycle count */
UINT8 m_adtot; /* A/D converter total cycles per conversion */
+ UINT8 m_tmpcr; /* temporary analog digital conversion register */
+ int m_shdone; /* A/D converter sample and hold done */
int m_adout; /* currently selected A/D converter output register */
int m_adin; /* currently selected A/D converter input */
int m_adrange;/* in scan mode, A/D converter range (AN0-AN3 or AN4-AN7) */
diff --git a/src/emu/drivers/xtal.h b/src/emu/drivers/xtal.h
index 7aed2542f26..032f91fc466 100644
--- a/src/emu/drivers/xtal.h
+++ b/src/emu/drivers/xtal.h
@@ -133,6 +133,7 @@ enum
XTAL_14_7456MHz = 14745600, /* Namco System 12 & System Super 22/23 for JVS */
XTAL_15MHz = 15000000, /* Sinclair QL, Amusco Poker */
XTAL_15_36MHz = 15360000, /* Visual 1050 */
+ XTAL_15_4MHz = 15400000, /* DVK KSM */
XTAL_15_468MHz = 15468480, /* Bank Panic h/w, Sega G80 */
XTAL_15_8976MHz = 15897600, /* IAI Swyft */
XTAL_16MHz = 16000000, /* Extremely common, used on 100's of PCBs */
diff --git a/src/emu/machine/ataflash.c b/src/emu/machine/ataflash.c
index 0e0b3221540..226e887d80e 100644
--- a/src/emu/machine/ataflash.c
+++ b/src/emu/machine/ataflash.c
@@ -202,3 +202,8 @@ void ata_flash_pccard_device::process_buffer()
ide_hdd_device::process_buffer();
}
}
+
+attotime ata_flash_pccard_device::seek_time()
+{
+ return attotime::zero;
+}
diff --git a/src/emu/machine/ataflash.h b/src/emu/machine/ataflash.h
index b2a1c9f1901..9c067e1ecc3 100644
--- a/src/emu/machine/ataflash.h
+++ b/src/emu/machine/ataflash.h
@@ -26,6 +26,7 @@ protected:
virtual void device_start();
virtual void device_reset();
+ virtual attotime seek_time();
virtual void process_command();
virtual void process_buffer();
virtual bool is_ready();
diff --git a/src/emu/machine/i6300esb.c b/src/emu/machine/i6300esb.c
new file mode 100644
index 00000000000..59fc013a226
--- /dev/null
+++ b/src/emu/machine/i6300esb.c
@@ -0,0 +1,119 @@
+#include "i6300esb.h"
+
+const device_type I6300ESB_WATCHDOG = &device_creator;
+const device_type I6300ESB_LPC = &device_creator;
+
+DEVICE_ADDRESS_MAP_START(map, 32, i6300esb_watchdog_device)
+ADDRESS_MAP_END
+
+i6300esb_watchdog_device::i6300esb_watchdog_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : pci_device(mconfig, I6300ESB_WATCHDOG, "i6300ESB southbridge watchdog", tag, owner, clock, "i6300esb_watchdog", __FILE__)
+{
+}
+
+void i6300esb_watchdog_device::device_start()
+{
+ pci_device::device_start();
+ add_map(16, M_MEM, FUNC(i6300esb_watchdog_device::map));
+}
+
+void i6300esb_watchdog_device::device_reset()
+{
+ pci_device::device_reset();
+}
+
+
+DEVICE_ADDRESS_MAP_START(config_map, 32, i6300esb_lpc_device)
+ AM_RANGE(0x58, 0x5b) AM_READWRITE (gpio_base_r, gpio_base_w)
+ AM_RANGE(0x5c, 0x5f) AM_READWRITE8 (gpio_cntl_r, gpio_cntl_w, 0x000000ff)
+ AM_RANGE(0xe4, 0xe7) AM_READWRITE16(gen1_dec_r, gen1_dec_w, 0x0000ffff)
+ AM_RANGE(0xe4, 0xe7) AM_READWRITE16(lpc_en_r, lpc_en_w, 0xffff0000)
+ AM_RANGE(0xe8, 0xeb) AM_READWRITE (fwh_sel1_r, fwh_sel1_w)
+
+ AM_INHERIT_FROM(pci_device::config_map)
+ADDRESS_MAP_END
+
+
+i6300esb_lpc_device::i6300esb_lpc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : pci_device(mconfig, I6300ESB_LPC, "i6300ESB southbridge ISA/LPC bridge", tag, owner, clock, "i6300esb_lpc", __FILE__)
+{
+}
+
+void i6300esb_lpc_device::device_start()
+{
+ pci_device::device_start();
+}
+
+void i6300esb_lpc_device::device_reset()
+{
+ pci_device::device_reset();
+ gpio_base = 0;
+ gpio_cntl = 0x00;
+ gen1_dec = 0x0000;
+ lpc_en = 0x0000;
+ fwh_sel1 = 0x00112233;
+}
+
+READ32_MEMBER (i6300esb_lpc_device::gpio_base_r)
+{
+ return gpio_base | 1;
+}
+
+WRITE32_MEMBER(i6300esb_lpc_device::gpio_base_w)
+{
+ COMBINE_DATA(&gpio_base);
+ gpio_base &= 0x0000ffc0;
+ logerror("%s: gpio_base = %08x\n", tag(), gpio_base);
+}
+
+READ8_MEMBER (i6300esb_lpc_device::gpio_cntl_r)
+{
+ return gpio_cntl;
+}
+
+WRITE8_MEMBER (i6300esb_lpc_device::gpio_cntl_w)
+{
+ COMBINE_DATA(&gpio_cntl);
+ logerror("%s: gpio_cntl = %02x\n", tag(), gpio_cntl);
+}
+
+READ16_MEMBER (i6300esb_lpc_device::gen1_dec_r)
+{
+ return gen1_dec;
+}
+
+WRITE16_MEMBER(i6300esb_lpc_device::gen1_dec_w)
+{
+ COMBINE_DATA(&gen1_dec);
+ logerror("%s: gen1_dec = %04x\n", tag(), gen1_dec);
+}
+
+READ16_MEMBER (i6300esb_lpc_device::lpc_en_r)
+{
+ return lpc_en;
+}
+
+WRITE16_MEMBER(i6300esb_lpc_device::lpc_en_w)
+{
+ COMBINE_DATA(&lpc_en);
+ logerror("%s: lpc_en = %04x\n", tag(), lpc_en);
+}
+
+READ32_MEMBER (i6300esb_lpc_device::fwh_sel1_r)
+{
+ return fwh_sel1;
+}
+
+WRITE32_MEMBER(i6300esb_lpc_device::fwh_sel1_w)
+{
+ COMBINE_DATA(&fwh_sel1);
+ logerror("%s: fwh_sel1 = %08x\n", tag(), fwh_sel1);
+}
+
+void i6300esb_lpc_device::map_extra(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
+ UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space)
+{
+ memory_space->install_rom(0xfff00000, 0xffffffff, m_region->base());
+ memory_space->install_rom(0x000f0000, 0x000fffff, m_region->base()+0xf0000);
+}
+
diff --git a/src/emu/machine/i6300esb.h b/src/emu/machine/i6300esb.h
new file mode 100644
index 00000000000..1749b6dcefb
--- /dev/null
+++ b/src/emu/machine/i6300esb.h
@@ -0,0 +1,60 @@
+// Intel i6300ESB southbridge
+
+#ifndef I6300ESB_H
+#define I6300ESB_H
+
+#include "pci.h"
+
+#define MCFG_I6300ESB_LPC_ADD(_tag) \
+ MCFG_PCI_DEVICE_ADD(_tag, I6300ESB_LPC, 0x808625a1, 0x02, 0x060100, 0x00000000)
+
+#define MCFG_I6300ESB_WATCHDOG_ADD(_tag, _subdevice_id) \
+ MCFG_PCI_DEVICE_ADD(_tag, I6300ESB_WATCHDOG, 0x808625ab, 0x02, 0x088000, _subdevice_id)
+
+class i6300esb_lpc_device : public pci_device {
+public:
+ i6300esb_lpc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ virtual void map_extra(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
+ UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space);
+
+ virtual DECLARE_ADDRESS_MAP(config_map, 32);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ UINT32 gpio_base, fwh_sel1;
+ UINT16 gen1_dec, lpc_en;
+ UINT8 gpio_cntl;
+
+ DECLARE_READ32_MEMBER (gpio_base_r); // 58
+ DECLARE_WRITE32_MEMBER(gpio_base_w);
+ DECLARE_READ8_MEMBER (gpio_cntl_r); // 5c
+ DECLARE_WRITE8_MEMBER (gpio_cntl_w);
+
+ DECLARE_READ16_MEMBER (gen1_dec_r); // e4
+ DECLARE_WRITE16_MEMBER(gen1_dec_w);
+ DECLARE_READ16_MEMBER (lpc_en_r); // e6
+ DECLARE_WRITE16_MEMBER(lpc_en_w);
+ DECLARE_READ32_MEMBER (fwh_sel1_r); // e8
+ DECLARE_WRITE32_MEMBER(fwh_sel1_w);
+};
+
+class i6300esb_watchdog_device : public pci_device {
+public:
+ i6300esb_watchdog_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ DECLARE_ADDRESS_MAP(map, 32);
+};
+
+extern const device_type I6300ESB_LPC;
+extern const device_type I6300ESB_WATCHDOG;
+
+#endif
diff --git a/src/emu/machine/i82541.c b/src/emu/machine/i82541.c
new file mode 100644
index 00000000000..e6d415c6dd7
--- /dev/null
+++ b/src/emu/machine/i82541.c
@@ -0,0 +1,30 @@
+#include "i82541.h"
+
+const device_type I82541 = &device_creator;
+
+DEVICE_ADDRESS_MAP_START(registers_map, 32, i82541_device)
+ADDRESS_MAP_END
+
+DEVICE_ADDRESS_MAP_START(flash_map, 32, i82541_device)
+ADDRESS_MAP_END
+
+DEVICE_ADDRESS_MAP_START(registers_io_map, 32, i82541_device)
+ADDRESS_MAP_END
+
+i82541_device::i82541_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : pci_device(mconfig, I82541, "I82541 ethernet controller", tag, owner, clock, "i82541", __FILE__)
+{
+}
+
+void i82541_device::device_start()
+{
+ pci_device::device_start();
+ add_map(128*1024, M_MEM, FUNC(i82541_device::registers_map));
+ add_map(128*1024, M_MEM, FUNC(i82541_device::flash_map));
+ add_map(32, M_IO, FUNC(i82541_device::registers_io_map));
+}
+
+void i82541_device::device_reset()
+{
+ pci_device::device_reset();
+}
diff --git a/src/emu/machine/i82541.h b/src/emu/machine/i82541.h
new file mode 100644
index 00000000000..eaf57e54f60
--- /dev/null
+++ b/src/emu/machine/i82541.h
@@ -0,0 +1,27 @@
+// Intel I82541 ethernet controller
+
+#ifndef I82541_H
+#define I82541_H
+
+#include "pci.h"
+
+#define MCFG_I82541PI_ADD(_tag, _subdevice_id) \
+ MCFG_PCI_DEVICE_ADD(_tag, I82541, 0x8086107c, 0x05, 0x020000, _subdevice_id)
+
+class i82541_device : public pci_device {
+public:
+ i82541_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ DECLARE_ADDRESS_MAP(registers_map, 32);
+ DECLARE_ADDRESS_MAP(flash_map, 32);
+ DECLARE_ADDRESS_MAP(registers_io_map, 32);
+};
+
+extern const device_type I82541;
+
+#endif
diff --git a/src/emu/machine/i82875p.c b/src/emu/machine/i82875p.c
new file mode 100644
index 00000000000..9df538d9209
--- /dev/null
+++ b/src/emu/machine/i82875p.c
@@ -0,0 +1,71 @@
+#include "i82875p.h"
+
+const device_type I82875P_HOST = &device_creator;
+const device_type I82875P_AGP = &device_creator;
+
+DEVICE_ADDRESS_MAP_START(agp_translation_map, 32, i82875p_host_device)
+ADDRESS_MAP_END
+
+i82875p_host_device::i82875p_host_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : pci_host_device(mconfig, I82875P_HOST, "i82875p northbridge", tag, owner, clock, "i82875p_host", __FILE__)
+{
+}
+
+void i82875p_host_device::set_cpu_tag(const char *_cpu_tag)
+{
+ cpu_tag = _cpu_tag;
+}
+
+void i82875p_host_device::set_ram_size(int _ram_size)
+{
+ ram_size = _ram_size;
+}
+
+void i82875p_host_device::device_start()
+{
+ pci_host_device::device_start();
+ cpu = machine().device(cpu_tag);
+ memory_space = &cpu->space(AS_PROGRAM);
+ io_space = &cpu->space(AS_IO);
+
+ memory_window_start = 0;
+ memory_window_end = 0xffffffff;
+ memory_offset = 0;
+ io_window_start = 0;
+ io_window_end = 0xffff;
+ io_offset = 0;
+
+ ram.resize(ram_size/4);
+
+ // Resizeable with the apsize register
+ add_map(256*1024*1024, M_MEM, FUNC(i82875p_host_device::agp_translation_map));
+}
+
+void i82875p_host_device::device_reset()
+{
+ pci_host_device::device_reset();
+}
+
+void i82875p_host_device::map_extra(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
+ UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space)
+{
+ io_space->install_device(0, 0xffff, *static_cast(this), &pci_host_device::io_configuration_access_map);
+}
+
+
+
+
+i82875p_agp_device::i82875p_agp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : agp_bridge_device(mconfig, I82875P_AGP, "i82875p AGP bridge", tag, owner, clock, "i82875p_agp", __FILE__)
+{
+}
+
+void i82875p_agp_device::device_start()
+{
+ agp_bridge_device::device_start();
+}
+
+void i82875p_agp_device::device_reset()
+{
+ agp_bridge_device::device_reset();
+}
diff --git a/src/emu/machine/i82875p.h b/src/emu/machine/i82875p.h
new file mode 100644
index 00000000000..2f3d67f7570
--- /dev/null
+++ b/src/emu/machine/i82875p.h
@@ -0,0 +1,52 @@
+// Intel i82875p northbridge
+
+#ifndef I82875P_H
+#define I82875P_H
+
+#include "pci.h"
+
+#define MCFG_I82875P_HOST_ADD(_tag, _subdevice_id, _cpu_tag, _ram_size) \
+ MCFG_PCI_HOST_ADD(_tag, I82875P_HOST, 0x80862578, 0x02, _subdevice_id) \
+ downcast(device)->set_cpu_tag(_cpu_tag); \
+ downcast(device)->set_ram_size(_ram_size);
+
+#define MCFG_I82875P_AGP_ADD(_tag) \
+ MCFG_AGP_BRIDGE_ADD(_tag, I82875P_AGP, 0x80862579, 0x02)
+
+class i82875p_host_device : public pci_host_device {
+public:
+ i82875p_host_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ void set_cpu_tag(const char *tag);
+ void set_ram_size(int ram_size);
+
+ virtual void map_extra(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
+ UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ DECLARE_ADDRESS_MAP(agp_translation_map, 32);
+
+ const char *cpu_tag;
+ int ram_size;
+ cpu_device *cpu;
+ dynamic_array ram;
+};
+
+class i82875p_agp_device : public agp_bridge_device {
+public:
+ i82875p_agp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+};
+
+extern const device_type I82875P_HOST;
+extern const device_type I82875P_AGP;
+
+
+#endif
diff --git a/src/emu/machine/idehd.h b/src/emu/machine/idehd.h
index 090d39a7ddc..f00f055d60d 100644
--- a/src/emu/machine/idehd.h
+++ b/src/emu/machine/idehd.h
@@ -44,6 +44,7 @@ protected:
virtual int read_sector(UINT32 lba, void *buffer) = 0;
virtual int write_sector(UINT32 lba, const void *buffer) = 0;
+ virtual attotime seek_time();
void ide_build_identify_device();
@@ -72,7 +73,6 @@ private:
void security_error();
void read_first_sector();
void soft_reset();
- attotime seek_time();
UINT32 m_cur_lba;
UINT16 m_block_count;
@@ -93,9 +93,6 @@ public:
ide_hdd_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
ide_hdd_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
- virtual int read_sector(UINT32 lba, void *buffer) { if (m_disk == NULL) return 0; return hard_disk_read(m_disk, lba, buffer); }
- virtual int write_sector(UINT32 lba, const void *buffer) { if (m_disk == NULL) return 0; return hard_disk_write(m_disk, lba, buffer); }
-
protected:
// device-level overrides
virtual void device_start();
@@ -104,6 +101,8 @@ protected:
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const;
+ virtual int read_sector(UINT32 lba, void *buffer) { if (m_disk == NULL) return 0; return hard_disk_read(m_disk, lba, buffer); }
+ virtual int write_sector(UINT32 lba, const void *buffer) { if (m_disk == NULL) return 0; return hard_disk_write(m_disk, lba, buffer); }
virtual UINT8 calculate_status();
chd_file *m_handle;
diff --git a/src/emu/machine/lpci.c b/src/emu/machine/lpci.c
new file mode 100644
index 00000000000..03eff2d5d6e
--- /dev/null
+++ b/src/emu/machine/lpci.c
@@ -0,0 +1,289 @@
+/***************************************************************************
+
+ machine/lpci.c
+
+ Legacy PCI bus
+
+ The PCI bus is a 32-bit bus introduced by Intel, so it is little endian
+
+ Control word:
+ bit 31: Enable bit
+ bits 30-24: Reserved
+ bits 23-16: PCI bus number
+ bits 15-11: PCI device number
+ bits 10- 8: PCI function number
+ bits 7- 0: Offset address
+
+ Standard PCI registers:
+ 0x00 2 Vendor ID
+ 0x02 2 Device ID
+ 0x04 2 PCI Command
+ 0x06 2 PCI Status
+ 0x08 1 Revision ID
+ 0x09 1 Programming Interface
+ 0x0A 1 Subclass Code
+ 0x0B 1 Class Code
+
+ Class Code/Subclass Code/Programming Interface
+ 0x00XXXX Pre-PCI 2.0 devices
+ 0x000000 Non-VGA device
+ 0x000101 VGA device
+ 0x01XXXX Storage Controller
+ 0x010000 SCSI
+ 0x0101XX IDE
+ 0x0102XX Floppy
+ 0x0103XX IPI
+ 0x0104XX RAID
+ 0x0180XX Other
+ 0x02XXXX Network Card
+ 0x020000 Ethernet
+ 0x020100 Tokenring
+ 0x020200 FDDI
+ 0x020300 ATM
+ 0x028000 Other
+ 0x03XXXX Display Controller
+ 0x030000 VGA
+ 0x030001 8514 Compatible
+ 0x030100 XGA
+ 0x038000 Other
+ 0x04XXXX Multimedia
+ 0x040000 Video
+ 0x040100 Audio
+ 0x048000 Other
+ 0x05XXXX Memory Controller
+ 0x050000 RAM
+ 0x050100 Flash
+ 0x058000 Other
+ 0x06XXXX Bridge
+ 0x060000 Host/PCI
+ 0x060100 PCI/ISA
+ 0x060200 PCI/EISA
+ 0x060300 PCI/Micro Channel
+ 0x060400 PCI/PCI
+ 0x060500 PCI/PCMCIA
+ 0x060600 PCI/NuBus
+ 0x060700 PCI/CardBus
+ 0x068000 Other
+
+ Information on PCI vendors can be found at http://www.pcidatabase.com/
+
+***************************************************************************/
+
+#include "emu.h"
+#include "machine/lpci.h"
+
+#define LOG_PCI 0
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+const device_type PCI_BUS_LEGACY = &device_creator;
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// pci_bus_legacy_device - constructor
+//-------------------------------------------------
+pci_bus_legacy_device::pci_bus_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, PCI_BUS_LEGACY, "PCI Bus Legacy", tag, owner, clock, "pci_bus_legacy", __FILE__),
+ m_father(NULL)
+{
+ for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++) {
+ m_devtag[i]= NULL;
+ m_read_callback[i] = NULL;
+ m_write_callback[i] = NULL;
+ }
+ m_siblings_count = 0;
+}
+
+/***************************************************************************
+ INLINE FUNCTIONS
+***************************************************************************/
+
+READ32_MEMBER( pci_bus_legacy_device::read )
+{
+ UINT32 result = 0xffffffff;
+ int function, reg;
+
+ offset %= 2;
+
+ switch (offset)
+ {
+ case 0:
+ result = m_address;
+ break;
+
+ case 1:
+ if (m_devicenum != -1)
+ {
+ pci_read_func read = m_busnumaddr->m_read_callback[m_devicenum];
+ if (read != NULL)
+ {
+ function = (m_address >> 8) & 0x07;
+ reg = (m_address >> 0) & 0xfc;
+ result = (*read)(m_busnumaddr, m_busnumaddr->m_device[m_devicenum], function, reg, mem_mask);
+ }
+ }
+ break;
+ }
+
+ if (LOG_PCI)
+ logerror("read('%s'): offset=%d result=0x%08X\n", tag(), offset, result);
+
+ return result;
+}
+
+
+
+pci_bus_legacy_device *pci_bus_legacy_device::pci_search_bustree(int busnum, int devicenum, pci_bus_legacy_device *pcibus)
+{
+ int a;
+ pci_bus_legacy_device *ret;
+
+ if (pcibus->m_busnum == busnum)
+ {
+ return pcibus;
+ }
+ for (a = 0; a < pcibus->m_siblings_count; a++)
+ {
+ ret = pci_search_bustree(busnum, devicenum, pcibus->m_siblings[a]);
+ if (ret != NULL)
+ return ret;
+ }
+ return NULL;
+}
+
+
+
+WRITE32_MEMBER( pci_bus_legacy_device::write )
+{
+ offset %= 2;
+
+ if (LOG_PCI)
+ logerror("write('%s'): offset=%d data=0x%08X\n", tag(), offset, data);
+
+ switch (offset)
+ {
+ case 0:
+ m_address = data;
+
+ /* lookup current device */
+ if (m_address & 0x80000000)
+ {
+ int busnum = (m_address >> 16) & 0xff;
+ int devicenum = (m_address >> 11) & 0x1f;
+ m_busnumaddr = pci_search_bustree(busnum, devicenum, this);
+ if (m_busnumaddr != NULL)
+ {
+ m_busnumber = busnum;
+ m_devicenum = devicenum;
+ }
+ else
+ m_devicenum = -1;
+ if (LOG_PCI)
+ logerror(" bus:%d device:%d\n", busnum, devicenum);
+ }
+ break;
+
+ case 1:
+ if (m_devicenum != -1)
+ {
+ pci_write_func write = m_busnumaddr->m_write_callback[m_devicenum];
+ if (write != NULL)
+ {
+ int function = (m_address >> 8) & 0x07;
+ int reg = (m_address >> 0) & 0xfc;
+ (*write)(m_busnumaddr, m_busnumaddr->m_device[m_devicenum], function, reg, data, mem_mask);
+ }
+ if (LOG_PCI)
+ logerror(" function:%d register:%d\n", (m_address >> 8) & 0x07, (m_address >> 0) & 0xfc);
+ }
+ break;
+ }
+}
+
+
+
+READ64_MEMBER(pci_bus_legacy_device::read_64be)
+{
+ UINT64 result = 0;
+ mem_mask = FLIPENDIAN_INT64(mem_mask);
+ if (ACCESSING_BITS_0_31)
+ result |= (UINT64)read(space, offset * 2 + 0, mem_mask >> 0) << 0;
+ if (ACCESSING_BITS_32_63)
+ result |= (UINT64)read(space, offset * 2 + 1, mem_mask >> 32) << 32;
+ return FLIPENDIAN_INT64(result);
+}
+
+WRITE64_MEMBER(pci_bus_legacy_device::write_64be)
+{
+ data = FLIPENDIAN_INT64(data);
+ mem_mask = FLIPENDIAN_INT64(mem_mask);
+ if (ACCESSING_BITS_0_31)
+ write(space, offset * 2 + 0, data >> 0, mem_mask >> 0);
+ if (ACCESSING_BITS_32_63)
+ write(space, offset * 2 + 1, data >> 32, mem_mask >> 32);
+}
+
+
+void pci_bus_legacy_device::add_sibling(pci_bus_legacy_device *sibling, int busnum)
+{
+ m_siblings[m_siblings_count] = sibling;
+ m_siblings_busnum[m_siblings_count] = busnum;
+ m_siblings_count++;
+}
+
+
+//-------------------------------------------------
+// device_post_load - handle updating after a
+// restore
+//-------------------------------------------------
+
+void pci_bus_legacy_device::device_post_load()
+{
+ if (m_devicenum != -1)
+ {
+ m_busnumaddr = pci_search_bustree(m_busnumber, m_devicenum, this);
+ }
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void pci_bus_legacy_device::device_start()
+{
+ /* store a pointer back to the device */
+ m_devicenum = -1;
+
+ /* find all our devices */
+ for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++)
+ if (m_devtag[i] != NULL)
+ m_device[i] = machine().device(m_devtag[i]);
+
+ if (m_father != NULL) {
+ pci_bus_legacy_device *father = machine().device(m_father);
+ if (father)
+ father->add_sibling(this, m_busnum);
+ }
+
+ /* register pci states */
+ save_item(NAME(m_address));
+ save_item(NAME(m_devicenum));
+ save_item(NAME(m_busnum));
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void pci_bus_legacy_device::device_reset()
+{
+ /* reset the drive state */
+ m_devicenum = -1;
+ m_address = 0;
+}
diff --git a/src/emu/machine/lpci.h b/src/emu/machine/lpci.h
new file mode 100644
index 00000000000..f3c47a6a82c
--- /dev/null
+++ b/src/emu/machine/lpci.h
@@ -0,0 +1,81 @@
+/***************************************************************************
+
+ machine/lpci.h
+
+ Legacy PCI bus
+
+***************************************************************************/
+
+#ifndef LPCI_H
+#define LPCI_H
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+typedef UINT32 (*pci_read_func)(device_t *pcibus, device_t *device, int function, int reg, UINT32 mem_mask);
+typedef void (*pci_write_func)(device_t *pcibus, device_t *device, int function, int reg, UINT32 data, UINT32 mem_mask);
+
+// ======================> pci_bus_legacy_device
+
+class pci_bus_legacy_device : public device_t
+{
+public:
+ // construction/destruction
+ pci_bus_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ DECLARE_READ32_MEMBER( read );
+ DECLARE_WRITE32_MEMBER( write );
+
+ DECLARE_READ64_MEMBER( read_64be );
+ DECLARE_WRITE64_MEMBER( write_64be );
+
+ void set_busnum(int busnum) { m_busnum = busnum; }
+ void set_father(const char *father) { m_father = father; }
+ void set_device(int num, const char *tag, pci_read_func read_func, pci_write_func write_func) {
+ m_devtag[num] = tag; m_read_callback[num] = read_func; m_write_callback[num] = write_func; }
+
+ pci_bus_legacy_device *pci_search_bustree(int busnum, int devicenum, pci_bus_legacy_device *pcibus);
+ void add_sibling(pci_bus_legacy_device *sibling, int busnum);
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+ virtual void device_post_load();
+
+private:
+ UINT8 m_busnum;
+ const char * m_devtag[32];
+ pci_read_func m_read_callback[32];
+ pci_write_func m_write_callback[32];
+ const char * m_father;
+ device_t * m_device[32];
+ pci_bus_legacy_device * m_siblings[8];
+ UINT8 m_siblings_busnum[8];
+ int m_siblings_count;
+
+ offs_t m_address;
+ INT8 m_devicenum; // device number we are addressing
+ INT8 m_busnumber; // pci bus number we are addressing
+ pci_bus_legacy_device * m_busnumaddr; // pci bus we are addressing
+};
+
+// device type definition
+extern const device_type PCI_BUS_LEGACY;
+
+
+/***************************************************************************
+ DEVICE CONFIGURATION MACROS
+***************************************************************************/
+
+#define MCFG_PCI_BUS_LEGACY_ADD(_tag, _busnum) \
+ MCFG_DEVICE_ADD(_tag, PCI_BUS_LEGACY, 0) \
+ downcast(device)->set_busnum(_busnum);
+#define MCFG_PCI_BUS_LEGACY_DEVICE(_devnum, _devtag, _configread, _configwrite) \
+ downcast(device)->set_device(_devnum, _devtag,_configread,_configwrite);
+#define MCFG_PCI_BUS_LEGACY_SIBLING(_father_tag) \
+ downcast(device)->set_father(_father_tag);
+
+
+#endif /* PCI_H */
diff --git a/src/emu/machine/machine.mak b/src/emu/machine/machine.mak
index dc8bca8373a..98ffdd4c8b1 100644
--- a/src/emu/machine/machine.mak
+++ b/src/emu/machine/machine.mak
@@ -1219,6 +1219,15 @@ ifneq ($(filter PCF8593,$(MACHINES)),)
MACHINEOBJS += $(MACHINEOBJ)/pcf8593.o
endif
+#-------------------------------------------------
+#
+#@src/emu/machine/lpci.h,MACHINES += LPCI
+#-------------------------------------------------
+
+ifneq ($(filter LPCI,$(MACHINES)),)
+MACHINEOBJS += $(MACHINEOBJ)/lpci.o
+endif
+
#-------------------------------------------------
#
#@src/emu/machine/pci.h,MACHINES += PCI
@@ -1226,6 +1235,13 @@ endif
ifneq ($(filter PCI,$(MACHINES)),)
MACHINEOBJS += $(MACHINEOBJ)/pci.o
+MACHINEOBJS += $(MACHINEOBJ)/pci-usb.o
+MACHINEOBJS += $(MACHINEOBJ)/pci-sata.o
+MACHINEOBJS += $(MACHINEOBJ)/pci-apic.o
+MACHINEOBJS += $(MACHINEOBJ)/pci-smbus.o
+MACHINEOBJS += $(MACHINEOBJ)/i82541.o
+MACHINEOBJS += $(MACHINEOBJ)/i82875p.o
+MACHINEOBJS += $(MACHINEOBJ)/i6300esb.o
endif
#-------------------------------------------------
diff --git a/src/emu/machine/pc_lpt.c b/src/emu/machine/pc_lpt.c
index d489ad02361..40ae6f1852e 100644
--- a/src/emu/machine/pc_lpt.c
+++ b/src/emu/machine/pc_lpt.c
@@ -6,8 +6,6 @@
#include "emu.h"
#include "pc_lpt.h"
-#include "bus/centronics/covox.h"
-#include "bus/centronics/printer.h"
const device_type PC_LPT = &device_creator;
@@ -46,14 +44,8 @@ void pc_lpt_device::device_reset()
m_cent_ctrl_out->write(m_control);
}
-static SLOT_INTERFACE_START(pc_centronics)
- SLOT_INTERFACE("printer", CENTRONICS_PRINTER)
- SLOT_INTERFACE("covox", CENTRONICS_COVOX)
- SLOT_INTERFACE("covox_stereo", CENTRONICS_COVOX_STEREO)
-SLOT_INTERFACE_END
-
static MACHINE_CONFIG_FRAGMENT( pc_lpt )
- MCFG_CENTRONICS_ADD("centronics", pc_centronics, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in")
MCFG_CENTRONICS_FAULT_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit3))
MCFG_CENTRONICS_SELECT_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit4))
diff --git a/src/emu/machine/pci-apic.c b/src/emu/machine/pci-apic.c
new file mode 100644
index 00000000000..7b61167d1d4
--- /dev/null
+++ b/src/emu/machine/pci-apic.c
@@ -0,0 +1,18 @@
+#include "pci-apic.h"
+
+const device_type APIC = &device_creator;
+
+apic_device::apic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : pci_device(mconfig, APIC, "I/O Advanced Programmable Interrupt Controller", tag, owner, clock, "apic", __FILE__)
+{
+}
+
+void apic_device::device_start()
+{
+ pci_device::device_start();
+}
+
+void apic_device::device_reset()
+{
+ pci_device::device_reset();
+}
diff --git a/src/emu/machine/pci-apic.h b/src/emu/machine/pci-apic.h
new file mode 100644
index 00000000000..30e4f900185
--- /dev/null
+++ b/src/emu/machine/pci-apic.h
@@ -0,0 +1,20 @@
+#ifndef PCI_APIC_H
+#define PCI_APIC_H
+
+#include "pci.h"
+
+#define MCFG_APIC_ADD(_tag, _main_id, _revision, _subdevice_id) \
+ MCFG_PCI_DEVICE_ADD(_tag, APIC, _main_id, _revision, 0x0c0320, _subdevice_id)
+
+class apic_device : public pci_device {
+public:
+ apic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+};
+
+extern const device_type APIC;
+
+#endif
diff --git a/src/emu/machine/pci-sata.c b/src/emu/machine/pci-sata.c
new file mode 100644
index 00000000000..55980ee20fe
--- /dev/null
+++ b/src/emu/machine/pci-sata.c
@@ -0,0 +1,44 @@
+#include "pci-sata.h"
+
+const device_type SATA = &device_creator;
+
+sata_device::sata_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : pci_device(mconfig, SATA, "SATA AHCI interface", tag, owner, clock, "sata", __FILE__)
+{
+}
+
+DEVICE_ADDRESS_MAP_START(primary_command_map, 32, sata_device)
+ADDRESS_MAP_END
+
+DEVICE_ADDRESS_MAP_START(primary_control_map, 32, sata_device)
+ADDRESS_MAP_END
+
+DEVICE_ADDRESS_MAP_START(secondary_command_map, 32, sata_device)
+ADDRESS_MAP_END
+
+DEVICE_ADDRESS_MAP_START(secondary_control_map, 32, sata_device)
+ADDRESS_MAP_END
+
+DEVICE_ADDRESS_MAP_START(bus_master_map, 32, sata_device)
+ADDRESS_MAP_END
+
+DEVICE_ADDRESS_MAP_START(ide_command_posting_map, 32, sata_device)
+ADDRESS_MAP_END
+
+
+void sata_device::device_start()
+{
+ pci_device::device_start();
+
+ add_map(8, M_IO, FUNC(sata_device::primary_command_map));
+ add_map(4, M_IO, FUNC(sata_device::primary_control_map));
+ add_map(8, M_IO, FUNC(sata_device::secondary_command_map));
+ add_map(4, M_IO, FUNC(sata_device::secondary_control_map));
+ add_map(16, M_IO, FUNC(sata_device::bus_master_map));
+ add_map(1024, M_MEM, FUNC(sata_device::ide_command_posting_map));
+}
+
+void sata_device::device_reset()
+{
+ pci_device::device_reset();
+}
diff --git a/src/emu/machine/pci-sata.h b/src/emu/machine/pci-sata.h
new file mode 100644
index 00000000000..baf2e96aada
--- /dev/null
+++ b/src/emu/machine/pci-sata.h
@@ -0,0 +1,28 @@
+#ifndef PCI_SATA_H
+#define PCI_SATA_H
+
+#include "pci.h"
+
+#define MCFG_SATA_ADD(_tag, _main_id, _revision, _subdevice_id) \
+ MCFG_PCI_DEVICE_ADD(_tag, SATA, _main_id, _revision, 0x01018a, _subdevice_id)
+
+class sata_device : public pci_device {
+public:
+ sata_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ DECLARE_ADDRESS_MAP(primary_command_map, 32);
+ DECLARE_ADDRESS_MAP(primary_control_map, 32);
+ DECLARE_ADDRESS_MAP(secondary_command_map, 32);
+ DECLARE_ADDRESS_MAP(secondary_control_map, 32);
+ DECLARE_ADDRESS_MAP(bus_master_map, 32);
+ DECLARE_ADDRESS_MAP(ide_command_posting_map, 32);
+};
+
+extern const device_type SATA;
+
+#endif
diff --git a/src/emu/machine/pci-smbus.c b/src/emu/machine/pci-smbus.c
new file mode 100644
index 00000000000..bc631951808
--- /dev/null
+++ b/src/emu/machine/pci-smbus.c
@@ -0,0 +1,22 @@
+#include "pci-smbus.h"
+
+const device_type SMBUS = &device_creator;
+
+DEVICE_ADDRESS_MAP_START(map, 32, smbus_device)
+ADDRESS_MAP_END
+
+smbus_device::smbus_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : pci_device(mconfig, SMBUS, "SMBUS interface", tag, owner, clock, "smbus", __FILE__)
+{
+}
+
+void smbus_device::device_start()
+{
+ pci_device::device_start();
+ add_map(32, M_IO, FUNC(smbus_device::map));
+}
+
+void smbus_device::device_reset()
+{
+ pci_device::device_reset();
+}
diff --git a/src/emu/machine/pci-smbus.h b/src/emu/machine/pci-smbus.h
new file mode 100644
index 00000000000..90c06aebee1
--- /dev/null
+++ b/src/emu/machine/pci-smbus.h
@@ -0,0 +1,23 @@
+#ifndef PCI_SMBUS_H
+#define PCI_SMBUS_H
+
+#include "pci.h"
+
+#define MCFG_SMBUS_ADD(_tag, _main_id, _revision, _subdevice_id) \
+ MCFG_PCI_DEVICE_ADD(_tag, SMBUS, _main_id, _revision, 0x0c0500, _subdevice_id)
+
+class smbus_device : public pci_device {
+public:
+ smbus_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ DECLARE_ADDRESS_MAP(map, 32);
+};
+
+extern const device_type SMBUS;
+
+#endif
diff --git a/src/emu/machine/pci-usb.c b/src/emu/machine/pci-usb.c
new file mode 100644
index 00000000000..b7bc2d96556
--- /dev/null
+++ b/src/emu/machine/pci-usb.c
@@ -0,0 +1,42 @@
+#include "pci-usb.h"
+
+const device_type USB_UHCI = &device_creator;
+const device_type USB_EHCI = &device_creator;
+
+DEVICE_ADDRESS_MAP_START(map, 32, usb_uhci_device)
+ADDRESS_MAP_END
+
+usb_uhci_device::usb_uhci_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : pci_device(mconfig, USB_UHCI, "USB 1.1 UHCI interface", tag, owner, clock, "usb_uhci", __FILE__)
+{
+}
+
+void usb_uhci_device::device_start()
+{
+ pci_device::device_start();
+ add_map(32, M_IO, FUNC(usb_uhci_device::map));
+}
+
+void usb_uhci_device::device_reset()
+{
+ pci_device::device_reset();
+}
+
+DEVICE_ADDRESS_MAP_START(map, 32, usb_ehci_device)
+ADDRESS_MAP_END
+
+usb_ehci_device::usb_ehci_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : pci_device(mconfig, USB_EHCI, "USB 2.0 EHCI interface", tag, owner, clock, "usb_ehci", __FILE__)
+{
+}
+
+void usb_ehci_device::device_start()
+{
+ pci_device::device_start();
+ add_map(1024, M_MEM, FUNC(usb_ehci_device::map));
+}
+
+void usb_ehci_device::device_reset()
+{
+ pci_device::device_reset();
+}
diff --git a/src/emu/machine/pci-usb.h b/src/emu/machine/pci-usb.h
new file mode 100644
index 00000000000..5cc6c931031
--- /dev/null
+++ b/src/emu/machine/pci-usb.h
@@ -0,0 +1,39 @@
+#ifndef PCI_USB_H
+#define PCI_USB_H
+
+#include "pci.h"
+
+#define MCFG_USB_UHCI_ADD(_tag, _main_id, _revision, _subdevice_id) \
+ MCFG_PCI_DEVICE_ADD(_tag, USB_UHCI, _main_id, _revision, 0x0c0300, _subdevice_id)
+
+#define MCFG_USB_EHCI_ADD(_tag, _main_id, _revision, _subdevice_id) \
+ MCFG_PCI_DEVICE_ADD(_tag, USB_EHCI, _main_id, _revision, 0x0c0320, _subdevice_id)
+
+class usb_uhci_device : public pci_device {
+public:
+ usb_uhci_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ DECLARE_ADDRESS_MAP(map, 32);
+};
+
+class usb_ehci_device : public pci_device {
+public:
+ usb_ehci_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ DECLARE_ADDRESS_MAP(map, 32);
+};
+
+extern const device_type USB_UHCI;
+extern const device_type USB_EHCI;
+
+#endif
diff --git a/src/emu/machine/pci.c b/src/emu/machine/pci.c
index ae611d67cae..33baec75ad8 100644
--- a/src/emu/machine/pci.c
+++ b/src/emu/machine/pci.c
@@ -1,289 +1,291 @@
-/***************************************************************************
+#include "pci.h"
- machine/pci.c
+const device_type PCI_ROOT = &device_creator;
+const device_type PCI_BRIDGE = &device_creator;
- PCI bus
+DEVICE_ADDRESS_MAP_START(config_map, 32, pci_device)
+ADDRESS_MAP_END
- The PCI bus is a 32-bit bus introduced by Intel, so it is little endian
-
- Control word:
- bit 31: Enable bit
- bits 30-24: Reserved
- bits 23-16: PCI bus number
- bits 15-11: PCI device number
- bits 10- 8: PCI function number
- bits 7- 0: Offset address
-
- Standard PCI registers:
- 0x00 2 Vendor ID
- 0x02 2 Device ID
- 0x04 2 PCI Command
- 0x06 2 PCI Status
- 0x08 1 Revision ID
- 0x09 1 Programming Interface
- 0x0A 1 Subclass Code
- 0x0B 1 Class Code
-
- Class Code/Subclass Code/Programming Interface
- 0x00XXXX Pre-PCI 2.0 devices
- 0x000000 Non-VGA device
- 0x000101 VGA device
- 0x01XXXX Storage Controller
- 0x010000 SCSI
- 0x0101XX IDE
- 0x0102XX Floppy
- 0x0103XX IPI
- 0x0104XX RAID
- 0x0180XX Other
- 0x02XXXX Network Card
- 0x020000 Ethernet
- 0x020100 Tokenring
- 0x020200 FDDI
- 0x020300 ATM
- 0x028000 Other
- 0x03XXXX Display Controller
- 0x030000 VGA
- 0x030001 8514 Compatible
- 0x030100 XGA
- 0x038000 Other
- 0x04XXXX Multimedia
- 0x040000 Video
- 0x040100 Audio
- 0x048000 Other
- 0x05XXXX Memory Controller
- 0x050000 RAM
- 0x050100 Flash
- 0x058000 Other
- 0x06XXXX Bridge
- 0x060000 Host/PCI
- 0x060100 PCI/ISA
- 0x060200 PCI/EISA
- 0x060300 PCI/Micro Channel
- 0x060400 PCI/PCI
- 0x060500 PCI/PCMCIA
- 0x060600 PCI/NuBus
- 0x060700 PCI/CardBus
- 0x068000 Other
-
- Information on PCI vendors can be found at http://www.pcidatabase.com/
-
-***************************************************************************/
-
-#include "emu.h"
-#include "machine/pci.h"
-
-#define LOG_PCI 0
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-const device_type PCI_BUS_LEGACY = &device_creator;
-
-//**************************************************************************
-// LIVE DEVICE
-//**************************************************************************
-
-//-------------------------------------------------
-// pci_bus_legacy_device - constructor
-//-------------------------------------------------
-pci_bus_legacy_device::pci_bus_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
- device_t(mconfig, PCI_BUS_LEGACY, "PCI Bus Legacy", tag, owner, clock, "pci_bus_legacy", __FILE__),
- m_father(NULL)
+pci_device::pci_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
+ : device_t(mconfig, type, name, tag, owner, clock, shortname, source)
{
- for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++) {
- m_devtag[i]= NULL;
- m_read_callback[i] = NULL;
- m_write_callback[i] = NULL;
+ main_id = 0xffffffff;
+ revision = 0x00;
+ pclass = 0xffffff;
+ subdevice_id = 0xffffffff;
+}
+
+void pci_device::set_ids(UINT32 _main_id, UINT8 _revision, UINT32 _pclass, UINT32 _subdevice_id)
+{
+ main_id = _main_id;
+ revision = _revision;
+ pclass = _pclass;
+ subdevice_id = _subdevice_id;
+}
+
+void pci_device::device_start()
+{
+}
+
+void pci_device::device_reset()
+{
+}
+
+void pci_device::scan_sub_devices(pci_device **devices, dynamic_array &all, dynamic_array &bridges, device_t *root)
+{
+}
+
+void pci_device::reset_all_mappings()
+{
+}
+
+void pci_device::map_device(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
+ UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space)
+{
+ map_extra(memory_window_start, memory_window_end, memory_offset, memory_space,
+ io_window_start, io_window_end, io_offset, io_space);
+}
+
+void pci_device::map_extra(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
+ UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space)
+{
+}
+
+void pci_device::map_config(UINT8 device, address_space *config_space)
+{
+ config_space->install_device(device << 12, (device << 12) | 0xfff, *this, &pci_device::config_map);
+}
+
+void pci_device::add_map(UINT64 size, int flags, address_map_delegate &map)
+{
+ logerror("Device %s (%s) has 0x%" I64FMT "x bytes of %s named %s\n", tag(), name(), size, flags & M_IO ? "io" : "memory", map.name());
+}
+
+agp_device::agp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
+ : pci_device(mconfig, type, name, tag, owner, clock, shortname, source)
+{
+}
+
+void agp_device::device_start()
+{
+ pci_device::device_start();
+}
+
+void agp_device::device_reset()
+{
+ pci_device::device_reset();
+}
+
+
+
+pci_bridge_device::pci_bridge_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : pci_device(mconfig, PCI_BRIDGE, "PCI-PCI Bridge", tag, owner, clock, "pci_bridge", __FILE__),
+ device_memory_interface(mconfig, *this),
+ configure_space_config("configuration_space", ENDIANNESS_LITTLE, 32, 20)
+{
+}
+
+pci_bridge_device::pci_bridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
+ : pci_device(mconfig, type, name, tag, owner, clock, shortname, source),
+ device_memory_interface(mconfig, *this),
+ configure_space_config("configuration_space", ENDIANNESS_LITTLE, 32, 20)
+{
+}
+
+const address_space_config *pci_bridge_device::memory_space_config(address_spacenum spacenum) const
+{
+ return spacenum == AS_PROGRAM ? &configure_space_config : NULL;
+}
+
+device_t *pci_bridge_device::bus_root()
+{
+ return this;
+}
+
+void pci_bridge_device::device_start()
+{
+ pci_device::device_start();
+
+ for(int i=0; i<32*8; i++)
+ sub_devices[i] = NULL;
+
+ for(device_t *d = bus_root()->first_subdevice(); d != NULL; d = d->next()) {
+ if(d == this)
+ continue;
+ const char *t = d->tag();
+ int l = strlen(t);
+ if(l <= 4 || t[l-5] != ':' || t[l-2] != '.')
+ continue;
+ int id = strtol(t+l-4, 0, 16);
+ int fct = t[l-1] - '0';
+ sub_devices[(id << 3) | fct] = downcast(d);
}
- m_siblings_count = 0;
+ for(int i=0; i<32*8; i++)
+ if(sub_devices[i]) {
+ all_devices.append(sub_devices[i]);
+ pci_bridge_device *bridge = dynamic_cast(sub_devices[i]);
+ if(bridge)
+ all_bridges.append(bridge);
+ }
}
-/***************************************************************************
- INLINE FUNCTIONS
-***************************************************************************/
-
-READ32_MEMBER( pci_bus_legacy_device::read )
+void pci_bridge_device::device_reset()
{
- UINT32 result = 0xffffffff;
- int function, reg;
-
- offset %= 2;
-
- switch (offset)
- {
- case 0:
- result = m_address;
- break;
-
- case 1:
- if (m_devicenum != -1)
- {
- pci_read_func read = m_busnumaddr->m_read_callback[m_devicenum];
- if (read != NULL)
- {
- function = (m_address >> 8) & 0x07;
- reg = (m_address >> 0) & 0xfc;
- result = (*read)(m_busnumaddr, m_busnumaddr->m_device[m_devicenum], function, reg, mem_mask);
- }
- }
- break;
- }
-
- if (LOG_PCI)
- logerror("read('%s'): offset=%d result=0x%08X\n", tag(), offset, result);
-
- return result;
+ pci_device::device_reset();
+ regenerate_config_mapping();
}
-
-
-pci_bus_legacy_device *pci_bus_legacy_device::pci_search_bustree(int busnum, int devicenum, pci_bus_legacy_device *pcibus)
+void pci_bridge_device::reset_all_mappings()
{
- int a;
- pci_bus_legacy_device *ret;
-
- if (pcibus->m_busnum == busnum)
- {
- return pcibus;
- }
- for (a = 0; a < pcibus->m_siblings_count; a++)
- {
- ret = pci_search_bustree(busnum, devicenum, pcibus->m_siblings[a]);
- if (ret != NULL)
- return ret;
- }
- return NULL;
+ for(int i=0; i != all_devices.count(); i++)
+ all_devices[i]->reset_all_mappings();
}
-
-WRITE32_MEMBER( pci_bus_legacy_device::write )
+void pci_bridge_device::map_device(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
+ UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space)
{
- offset %= 2;
+ for(int i = all_devices.count()-1; i>=0; i--)
+ all_devices[i]->map_device(memory_window_start, memory_window_end, memory_offset, memory_space,
+ io_window_start, io_window_end, io_offset, io_space);
- if (LOG_PCI)
- logerror("write('%s'): offset=%d data=0x%08X\n", tag(), offset, data);
-
- switch (offset)
- {
- case 0:
- m_address = data;
-
- /* lookup current device */
- if (m_address & 0x80000000)
- {
- int busnum = (m_address >> 16) & 0xff;
- int devicenum = (m_address >> 11) & 0x1f;
- m_busnumaddr = pci_search_bustree(busnum, devicenum, this);
- if (m_busnumaddr != NULL)
- {
- m_busnumber = busnum;
- m_devicenum = devicenum;
- }
- else
- m_devicenum = -1;
- if (LOG_PCI)
- logerror(" bus:%d device:%d\n", busnum, devicenum);
- }
- break;
-
- case 1:
- if (m_devicenum != -1)
- {
- pci_write_func write = m_busnumaddr->m_write_callback[m_devicenum];
- if (write != NULL)
- {
- int function = (m_address >> 8) & 0x07;
- int reg = (m_address >> 0) & 0xfc;
- (*write)(m_busnumaddr, m_busnumaddr->m_device[m_devicenum], function, reg, data, mem_mask);
- }
- if (LOG_PCI)
- logerror(" function:%d register:%d\n", (m_address >> 8) & 0x07, (m_address >> 0) & 0xfc);
- }
- break;
- }
+ map_extra(memory_window_start, memory_window_end, memory_offset, memory_space,
+ io_window_start, io_window_end, io_offset, io_space);
}
-
-READ64_MEMBER(pci_bus_legacy_device::read_64be)
+void pci_bridge_device::regenerate_config_mapping()
{
- UINT64 result = 0;
- mem_mask = FLIPENDIAN_INT64(mem_mask);
- if (ACCESSING_BITS_0_31)
- result |= (UINT64)read(space, offset * 2 + 0, mem_mask >> 0) << 0;
- if (ACCESSING_BITS_32_63)
- result |= (UINT64)read(space, offset * 2 + 1, mem_mask >> 32) << 32;
- return FLIPENDIAN_INT64(result);
+ address_space *config_space = &space(AS_PROGRAM);
+ config_space->unmap_readwrite(0x00000, 0xfffff);
+ for(int i=0; i<32*8; i++)
+ if(sub_devices[i])
+ sub_devices[i]->map_config(i, config_space);
}
-WRITE64_MEMBER(pci_bus_legacy_device::write_64be)
+
+agp_bridge_device::agp_bridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
+ : pci_bridge_device(mconfig, type, name, tag, owner, clock, shortname, source)
{
- data = FLIPENDIAN_INT64(data);
- mem_mask = FLIPENDIAN_INT64(mem_mask);
- if (ACCESSING_BITS_0_31)
- write(space, offset * 2 + 0, data >> 0, mem_mask >> 0);
- if (ACCESSING_BITS_32_63)
- write(space, offset * 2 + 1, data >> 32, mem_mask >> 32);
}
-
-void pci_bus_legacy_device::add_sibling(pci_bus_legacy_device *sibling, int busnum)
+void agp_bridge_device::device_start()
{
- m_siblings[m_siblings_count] = sibling;
- m_siblings_busnum[m_siblings_count] = busnum;
- m_siblings_count++;
+ pci_bridge_device::device_start();
}
-
-//-------------------------------------------------
-// device_post_load - handle updating after a
-// restore
-//-------------------------------------------------
-
-void pci_bus_legacy_device::device_post_load()
+void agp_bridge_device::device_reset()
{
- if (m_devicenum != -1)
- {
- m_busnumaddr = pci_search_bustree(m_busnumber, m_devicenum, this);
- }
+ pci_bridge_device::device_reset();
}
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-void pci_bus_legacy_device::device_start()
+
+DEVICE_ADDRESS_MAP_START(io_configuration_access_map, 32, pci_host_device)
+ AM_RANGE(0xcf8, 0xcfb) AM_READWRITE(config_address_r, config_address_w)
+ AM_RANGE(0xcfc, 0xcff) AM_READWRITE(config_data_r, config_data_w)
+ADDRESS_MAP_END
+
+
+pci_host_device::pci_host_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
+ : pci_bridge_device(mconfig, type, name, tag, owner, clock, shortname, source)
{
- /* store a pointer back to the device */
- m_devicenum = -1;
-
- /* find all our devices */
- for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++)
- if (m_devtag[i] != NULL)
- m_device[i] = machine().device(m_devtag[i]);
-
- if (m_father != NULL) {
- pci_bus_legacy_device *father = machine().device(m_father);
- if (father)
- father->add_sibling(this, m_busnum);
- }
-
- /* register pci states */
- save_item(NAME(m_address));
- save_item(NAME(m_devicenum));
- save_item(NAME(m_busnum));
}
-
-//-------------------------------------------------
-// device_reset - device-specific reset
-//-------------------------------------------------
-
-void pci_bus_legacy_device::device_reset()
+device_t *pci_host_device::bus_root()
+{
+ return owner();
+}
+
+void pci_host_device::device_start()
+{
+ pci_bridge_device::device_start();
+
+ memory_window_start = memory_window_end = memory_offset = 0;
+ io_window_start = io_window_end = io_offset = 0;
+}
+
+void pci_host_device::device_reset()
+{
+ pci_bridge_device::device_reset();
+ for(int i=0; i != all_devices.count(); i++)
+ all_devices[i]->reset_all_mappings();
+ regenerate_mapping();
+
+ config_address = 0;
+}
+
+void pci_host_device::regenerate_mapping()
+{
+ memory_space->unmap_readwrite(memory_window_start, memory_window_end);
+ io_space->unmap_readwrite(io_window_start, io_window_end);
+
+ map_device(memory_window_start, memory_window_end, memory_offset, memory_space,
+ io_window_start, io_window_end, io_offset, io_space);
+}
+
+void pci_host_device::regenerate_config_mapping()
+{
+ pci_bridge_device::regenerate_config_mapping();
+ map_config(0, &space(AS_PROGRAM));
+}
+
+READ32_MEMBER(pci_host_device::config_address_r)
+{
+ return config_address;
+}
+
+WRITE32_MEMBER(pci_host_device::config_address_w)
+{
+ COMBINE_DATA(&config_address);
+}
+
+READ32_MEMBER(pci_host_device::config_data_r)
+{
+ return config_address & 0x80000000 ? config_read((config_address >> 16) & 0xff, (config_address >> 8) & 0xff, config_address & 0xfc, mem_mask) : 0xffffffff;
+}
+
+WRITE32_MEMBER(pci_host_device::config_data_w)
+{
+ if(config_address & 0x80000000)
+ config_write((config_address >> 16) & 0xff, (config_address >> 8) & 0xff, config_address & 0xfc, data, mem_mask);
+}
+
+UINT32 pci_host_device::config_read(UINT8 bus, UINT8 device, UINT16 reg, UINT32 mem_mask)
+{
+ UINT32 data = 0xffffffff;
+ if(!bus) {
+ if(sub_devices[device]) {
+ data = space(AS_PROGRAM).read_dword((device << 12) | reg, mem_mask);
+ logerror("config_read %02x:%02x.%x:%02x %08x @ %08x\n", bus, device >> 3, device & 7, reg, data, mem_mask);
+ }
+ } else
+ abort();
+
+ return data;
+}
+
+void pci_host_device::config_write(UINT8 bus, UINT8 device, UINT16 reg, UINT32 data, UINT32 mem_mask)
+{
+ if(!bus) {
+ if(sub_devices[device]) {
+ space(AS_PROGRAM).write_dword((device << 12) | reg, data, mem_mask);
+ logerror("config_write %02x:%02x.%x:%02x %08x @ %08x\n", bus, device >> 3, device & 7, reg, data, mem_mask);
+ }
+ } else
+ abort();
+}
+
+
+pci_root_device::pci_root_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, PCI_ROOT,"PCI virtual root", tag, owner, clock, "pci_root", __FILE__)
+{
+}
+
+void pci_root_device::device_start()
+{
+}
+
+void pci_root_device::device_reset()
{
- /* reset the drive state */
- m_devicenum = -1;
- m_address = 0;
}
diff --git a/src/emu/machine/pci.h b/src/emu/machine/pci.h
index c878ebd2d71..a2e48ddc7e8 100644
--- a/src/emu/machine/pci.h
+++ b/src/emu/machine/pci.h
@@ -1,81 +1,152 @@
-/***************************************************************************
-
- machine/pci.h
-
- PCI bus
-
-***************************************************************************/
-
#ifndef PCI_H
#define PCI_H
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
+#include "emu.h"
-typedef UINT32 (*pci_read_func)(device_t *pcibus, device_t *device, int function, int reg, UINT32 mem_mask);
-typedef void (*pci_write_func)(device_t *pcibus, device_t *device, int function, int reg, UINT32 data, UINT32 mem_mask);
+#define MCFG_PCI_ROOT_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, PCI_ROOT, 0)
-// ======================> pci_bus_legacy_device
+#define MCFG_PCI_DEVICE_ADD(_tag, _type, _main_id, _revision, _pclass, _subdevice_id) \
+ MCFG_DEVICE_ADD(_tag, _type, 0) \
+ downcast(device)->set_ids(_main_id, _revision, _pclass, _subdevice_id);
-class pci_bus_legacy_device : public device_t
-{
+#define MCFG_AGP_DEVICE_ADD(_tag, _type, _main_id, _revision, _subdevice_id) \
+ MCFG_PCI_DEVICE_ADD(_tag, _type, _main_id, _revision, 0x030000, _subdevice_id)
+
+#define MCFG_PCI_HOST_ADD(_tag, _type, _main_id, _revision, _subdevice_id) \
+ MCFG_PCI_DEVICE_ADD(_tag, _type, _main_id, _revision, 0x060000, _subdevice_id)
+
+#define MCFG_PCI_BRIDGE_ADD(_tag, _main_id, _revision) \
+ MCFG_PCI_DEVICE_ADD(_tag, PCI_BRIDGE, _main_id, _revision, 0x060400, 0x00000000)
+
+#define MCFG_AGP_BRIDGE_ADD(_tag, _type, _main_id, _revision) \
+ MCFG_PCI_DEVICE_ADD(_tag, _type, _main_id, _revision, 0x060400, 0x00000000)
+
+class pci_device : public device_t {
public:
- // construction/destruction
- pci_bus_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ pci_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
- DECLARE_READ32_MEMBER( read );
- DECLARE_WRITE32_MEMBER( write );
+ void set_ids(UINT32 main_id, UINT8 revision, UINT32 pclass, UINT32 subdevice_id);
- DECLARE_READ64_MEMBER( read_64be );
- DECLARE_WRITE64_MEMBER( write_64be );
+ virtual void reset_all_mappings();
+ virtual void map_device(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
+ UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space);
+ virtual void map_extra(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
+ UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space);
- void set_busnum(int busnum) { m_busnum = busnum; }
- void set_father(const char *father) { m_father = father; }
- void set_device(int num, const char *tag, pci_read_func read_func, pci_write_func write_func) {
- m_devtag[num] = tag; m_read_callback[num] = read_func; m_write_callback[num] = write_func; }
+ void map_config(UINT8 device, address_space *config_space);
- pci_bus_legacy_device *pci_search_bustree(int busnum, int devicenum, pci_bus_legacy_device *pcibus);
- void add_sibling(pci_bus_legacy_device *sibling, int busnum);
+ virtual DECLARE_ADDRESS_MAP(config_map, 32);
protected:
- // device-level overrides
+ enum {
+ M_MEM = 0,
+ M_IO = 1,
+ M_64D = 2,
+ M_64A = 4,
+ M_PREF = 8
+ };
+
+ UINT32 main_id, subdevice_id;
+ UINT32 pclass;
+ UINT8 revision;
+
virtual void device_start();
virtual void device_reset();
- virtual void device_post_load();
-private:
- UINT8 m_busnum;
- const char * m_devtag[32];
- pci_read_func m_read_callback[32];
- pci_write_func m_write_callback[32];
- const char * m_father;
- device_t * m_device[32];
- pci_bus_legacy_device * m_siblings[8];
- UINT8 m_siblings_busnum[8];
- int m_siblings_count;
+ static void scan_sub_devices(pci_device **devices, dynamic_array &all, dynamic_array &bridges, device_t *root);
- offs_t m_address;
- INT8 m_devicenum; // device number we are addressing
- INT8 m_busnumber; // pci bus number we are addressing
- pci_bus_legacy_device * m_busnumaddr; // pci bus we are addressing
+ void add_map(UINT64 size, int flags, address_map_delegate &map);
+ template void add_map(UINT64 size, int flags, void (T::*map)(address_map &map, device_t &device), const char *name) {
+ address_map_delegate delegate(map, name, static_cast(this));
+ add_map(size, flags, delegate);
+ }
};
-// device type definition
-extern const device_type PCI_BUS_LEGACY;
+class agp_device : public pci_device {
+public:
+ agp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+};
-/***************************************************************************
- DEVICE CONFIGURATION MACROS
-***************************************************************************/
+class pci_bridge_device : public pci_device, public device_memory_interface {
+public:
+ pci_bridge_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ pci_bridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
-#define MCFG_PCI_BUS_LEGACY_ADD(_tag, _busnum) \
- MCFG_DEVICE_ADD(_tag, PCI_BUS_LEGACY, 0) \
- downcast(device)->set_busnum(_busnum);
-#define MCFG_PCI_BUS_LEGACY_DEVICE(_devnum, _devtag, _configread, _configwrite) \
- downcast(device)->set_device(_devnum, _devtag,_configread,_configwrite);
-#define MCFG_PCI_BUS_LEGACY_SIBLING(_father_tag) \
- downcast(device)->set_father(_father_tag);
+ virtual void map_device(UINT64 memory_window_start, UINT64 memory_window_end, UINT64 memory_offset, address_space *memory_space,
+ UINT64 io_window_start, UINT64 io_window_end, UINT64 io_offset, address_space *io_space);
+ virtual void reset_all_mappings();
+protected:
+ pci_device *sub_devices[32*8];
+ dynamic_array all_devices;
+ dynamic_array all_bridges;
-#endif /* PCI_H */
+ virtual void device_start();
+ virtual void device_reset();
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum) const;
+
+ virtual device_t *bus_root();
+ virtual void regenerate_config_mapping();
+
+private:
+ address_space_config configure_space_config;
+};
+
+class agp_bridge_device : public pci_bridge_device {
+public:
+ agp_bridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+};
+
+class pci_host_device : public pci_bridge_device {
+public:
+ DECLARE_ADDRESS_MAP(io_configuration_access_map, 32);
+
+ pci_host_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
+
+protected:
+ address_space *memory_space, *io_space;
+
+ UINT64 memory_window_start, memory_window_end, memory_offset;
+ UINT64 io_window_start, io_window_end, io_offset;
+
+ virtual void device_start();
+ virtual void device_reset();
+
+ virtual device_t *bus_root();
+
+ UINT32 config_address;
+
+ DECLARE_READ32_MEMBER(config_address_r);
+ DECLARE_WRITE32_MEMBER(config_address_w);
+ DECLARE_READ32_MEMBER(config_data_r);
+ DECLARE_WRITE32_MEMBER(config_data_w);
+
+ UINT32 config_read(UINT8 bus, UINT8 device, UINT16 reg, UINT32 mem_mask);
+ void config_write(UINT8 bus, UINT8 device, UINT16 reg, UINT32 data, UINT32 mem_mask);
+
+ void regenerate_mapping();
+ virtual void regenerate_config_mapping();
+};
+
+class pci_root_device : public device_t {
+public:
+ pci_root_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+};
+
+extern const device_type PCI_ROOT;
+extern const device_type PCI_BRIDGE;
+
+#endif
diff --git a/src/emu/machine/pic8259.c b/src/emu/machine/pic8259.c
index b11fc023b1b..ea91fa1240b 100644
--- a/src/emu/machine/pic8259.c
+++ b/src/emu/machine/pic8259.c
@@ -14,8 +14,6 @@
#include "emu.h"
#include "machine/pic8259.h"
-#define IRQ_COUNT 8
-
#define LOG_ICW 0
#define LOG_OCW 0
#define LOG_GENERAL 0
@@ -24,20 +22,17 @@ ALLOW_SAVE_TYPE(pic8259_device::pic8259_state_t); // allow save_item on a non-fu
void pic8259_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
- int irq;
- UINT8 mask;
-
/* check the various IRQs */
- for (irq = 0; irq < IRQ_COUNT; irq++)
+ for (int n = 0, irq = m_prio; n < 8; n++, irq = (irq + 1) & 7)
{
- mask = 1 << irq;
+ UINT8 mask = 1 << irq;
- /* is this IRQ in service? */
- if (m_isr & mask)
+ /* is this IRQ in service and not cascading and sfnm? */
+ if ((m_isr & mask) && !(m_master && m_cascade && m_nested && (m_slave & mask)))
{
if (LOG_GENERAL)
{
- logerror("pic8259_timerproc(): PIC IRQ #%d still in service\n", irq);
+ logerror("pic8259_timerproc() %s: PIC IRQ #%d still in service\n", tag(), irq);
}
break;
}
@@ -47,7 +42,7 @@ void pic8259_device::device_timer(emu_timer &timer, device_timer_id id, int para
{
if (LOG_GENERAL)
{
- logerror("pic8259_timerproc(): PIC triggering IRQ #%d\n", irq);
+ logerror("pic8259_timerproc() %s: PIC triggering IRQ #%d\n", tag(), irq);
}
if (!BIT(m_ocw3, 2))
{
@@ -55,6 +50,9 @@ void pic8259_device::device_timer(emu_timer &timer, device_timer_id id, int para
}
return;
}
+ // if sfnm and in-service don't continue
+ if((m_isr & mask) && m_master && m_cascade && m_nested && (m_slave & mask))
+ break;
}
if (!BIT(m_ocw3, 2))
{
@@ -71,7 +69,7 @@ void pic8259_device::set_irq_line(int irq, int state)
{
/* setting IRQ line */
if (LOG_GENERAL)
- logerror("pic8259_set_irq_line(): PIC set IRQ line #%d\n", irq);
+ logerror("pic8259_set_irq_line() %s: PIC set IRQ line #%d\n", tag(), irq);
if(m_level_trig_mode || (!m_level_trig_mode && !(m_irq_lines & mask)))
{
@@ -84,7 +82,7 @@ void pic8259_device::set_irq_line(int irq, int state)
/* clearing IRQ line */
if (LOG_GENERAL)
{
- logerror("pic8259_device::set_irq_line(): PIC cleared IRQ line #%d\n", irq);
+ logerror("pic8259_device::set_irq_line() %s: PIC cleared IRQ line #%d\n", tag(), irq);
}
m_irq_lines &= ~mask;
@@ -96,19 +94,16 @@ void pic8259_device::set_irq_line(int irq, int state)
UINT32 pic8259_device::acknowledge()
{
- UINT8 mask;
- int irq;
-
- for (irq = 0; irq < IRQ_COUNT; irq++)
+ for (int n = 0, irq = m_prio; n < 8; n++, irq = (irq + 1) & 7)
{
- mask = 1 << irq;
+ UINT8 mask = 1 << irq;
/* is this IRQ pending and enabled? */
if ((m_irr & mask) && !(m_imr & mask))
{
if (LOG_GENERAL)
{
- logerror("pic8259_acknowledge(): PIC acknowledge IRQ #%d\n", irq);
+ logerror("pic8259_acknowledge() %s: PIC acknowledge IRQ #%d\n", tag(), irq);
}
if (!m_level_trig_mode)
{
@@ -170,8 +165,8 @@ READ8_MEMBER( pic8259_device::read )
if ( m_irr & ~m_imr )
{
- int irq;
- for ( irq = 0; irq < IRQ_COUNT; irq++ )
+ /* check the various IRQs */
+ for (int n = 0, irq = m_prio; n < 8; n++, irq = (irq + 1) & 7)
{
if ( ( 1 << irq ) & m_irr & ~m_imr )
{
@@ -216,7 +211,7 @@ WRITE8_MEMBER( pic8259_device::write )
/* write ICW1 - this pretty much resets the chip */
if (LOG_ICW)
{
- logerror("pic8259_device::write(): ICW1; data=0x%02X\n", data);
+ logerror("pic8259_device::write() %s: ICW1; data=0x%02X\n", tag(), data);
}
m_imr = 0x00;
@@ -237,7 +232,7 @@ WRITE8_MEMBER( pic8259_device::write )
/* write OCW3 */
if (LOG_OCW)
{
- logerror("pic8259_device::write(): OCW3; data=0x%02X\n", data);
+ logerror("pic8259_device::write() %s: OCW3; data=0x%02X\n", tag(), data);
}
m_ocw3 = data;
@@ -250,7 +245,7 @@ WRITE8_MEMBER( pic8259_device::write )
/* write OCW2 */
if (LOG_OCW)
{
- logerror("pic8259_device::write(): OCW2; data=0x%02X\n", data);
+ logerror("pic8259_device::write() %s: OCW2; data=0x%02X\n", tag(), data);
}
switch (data & 0xe0)
@@ -291,13 +286,13 @@ WRITE8_MEMBER( pic8259_device::write )
}
break;
case 0xc0:
- m_prio = n & 7;
+ m_prio = (n + 1) & 7;
break;
case 0xe0:
if( m_isr & mask )
{
m_isr &= ~mask;
- m_prio = (m_prio + 1) & 7;
+ m_prio = (n + 1) & 7;
}
break;
}
@@ -315,7 +310,7 @@ WRITE8_MEMBER( pic8259_device::write )
/* write ICW2 */
if (LOG_ICW)
{
- logerror("pic8259_device::write(): ICW2; data=0x%02X\n", data);
+ logerror("pic8259_device::write() %s: ICW2; data=0x%02X\n", tag(), data);
}
m_base = data & 0xf8;
@@ -334,7 +329,7 @@ WRITE8_MEMBER( pic8259_device::write )
/* write ICW3 */
if (LOG_ICW)
{
- logerror("pic8259_device::write(): ICW3; data=0x%02X\n", data);
+ logerror("pic8259_device::write() %s: ICW3; data=0x%02X\n", tag(), data);
}
m_slave = data;
@@ -345,7 +340,7 @@ WRITE8_MEMBER( pic8259_device::write )
/* write ICW4 */
if (LOG_ICW)
{
- logerror("pic8259_device::write(): ICW4; data=0x%02X\n", data);
+ logerror("pic8259_device::write() %s: ICW4; data=0x%02X\n", tag(), data);
}
m_nested = (data & 0x10) ? 1 : 0;
diff --git a/src/emu/machine/z80ctc.h b/src/emu/machine/z80ctc.h
index 4e395517092..a9945d547bf 100644
--- a/src/emu/machine/z80ctc.h
+++ b/src/emu/machine/z80ctc.h
@@ -74,6 +74,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( trg2 );
DECLARE_WRITE_LINE_MEMBER( trg3 );
+ UINT16 get_channel_constant(UINT8 channel) { return m_channel[channel].m_tconst; }
+
protected:
// device-level overrides
virtual void device_start();
diff --git a/src/emu/sound/pci-ac97.c b/src/emu/sound/pci-ac97.c
new file mode 100644
index 00000000000..6890b6add73
--- /dev/null
+++ b/src/emu/sound/pci-ac97.c
@@ -0,0 +1,34 @@
+#include "pci-ac97.h"
+
+const device_type AC97 = &device_creator;
+
+DEVICE_ADDRESS_MAP_START(native_audio_mixer_map, 32, ac97_device)
+ADDRESS_MAP_END
+
+DEVICE_ADDRESS_MAP_START(native_audio_bus_mastering_map, 32, ac97_device)
+ADDRESS_MAP_END
+
+DEVICE_ADDRESS_MAP_START(mixer_map, 32, ac97_device)
+ADDRESS_MAP_END
+
+DEVICE_ADDRESS_MAP_START(bus_mastering_map, 32, ac97_device)
+ADDRESS_MAP_END
+
+ac97_device::ac97_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : pci_device(mconfig, AC97, "AC97 audio", tag, owner, clock, "ac97", __FILE__)
+{
+}
+
+void ac97_device::device_start()
+{
+ pci_device::device_start();
+ add_map(256, M_IO, FUNC(ac97_device::native_audio_mixer_map));
+ add_map(64, M_IO, FUNC(ac97_device::native_audio_bus_mastering_map));
+ add_map(512, M_MEM, FUNC(ac97_device::mixer_map));
+ add_map(256, M_MEM, FUNC(ac97_device::bus_mastering_map));
+}
+
+void ac97_device::device_reset()
+{
+ pci_device::device_reset();
+}
diff --git a/src/emu/sound/pci-ac97.h b/src/emu/sound/pci-ac97.h
new file mode 100644
index 00000000000..ffe7c8165df
--- /dev/null
+++ b/src/emu/sound/pci-ac97.h
@@ -0,0 +1,26 @@
+#ifndef PCI_AC97_H
+#define PCI_AC97_H
+
+#include "machine/pci.h"
+
+#define MCFG_AC97_ADD(_tag, _main_id, _revision, _subdevice_id) \
+ MCFG_PCI_DEVICE_ADD(_tag, AC97, _main_id, _revision, 0x040300, _subdevice_id)
+
+class ac97_device : public pci_device {
+public:
+ ac97_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ DECLARE_ADDRESS_MAP(native_audio_mixer_map, 32);
+ DECLARE_ADDRESS_MAP(native_audio_bus_mastering_map, 32);
+ DECLARE_ADDRESS_MAP(mixer_map, 32);
+ DECLARE_ADDRESS_MAP(bus_mastering_map, 32);
+};
+
+extern const device_type AC97;
+
+#endif
diff --git a/src/emu/sound/sb0400.c b/src/emu/sound/sb0400.c
new file mode 100644
index 00000000000..6a8c522a525
--- /dev/null
+++ b/src/emu/sound/sb0400.c
@@ -0,0 +1,22 @@
+#include "sb0400.h"
+
+const device_type SB0400 = &device_creator;
+
+DEVICE_ADDRESS_MAP_START(map, 32, sb0400_device)
+ADDRESS_MAP_END
+
+sb0400_device::sb0400_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : pci_device(mconfig, SB0400, "Creative Labs SB0400 Audigy2 Value", tag, owner, clock, "sb0400", __FILE__)
+{
+}
+
+void sb0400_device::device_start()
+{
+ pci_device::device_start();
+ add_map(64, M_IO, FUNC(sb0400_device::map));
+}
+
+void sb0400_device::device_reset()
+{
+ pci_device::device_reset();
+}
diff --git a/src/emu/sound/sb0400.h b/src/emu/sound/sb0400.h
new file mode 100644
index 00000000000..cea968503d9
--- /dev/null
+++ b/src/emu/sound/sb0400.h
@@ -0,0 +1,25 @@
+// Creative labs SB0400 Audigy2 Value
+
+#ifndef SB0400_H
+#define SB0400_H
+
+#include "machine/pci.h"
+
+#define MCFG_SB0400_ADD(_tag, _subdevice_id) \
+ MCFG_PCI_DEVICE_ADD(_tag, SB0400, 0x11020008, 0x00, 0x040100, _subdevice_id)
+
+class sb0400_device : public pci_device {
+public:
+ sb0400_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ DECLARE_ADDRESS_MAP(map, 32);
+};
+
+extern const device_type SB0400;
+
+#endif
diff --git a/src/emu/sound/sound.mak b/src/emu/sound/sound.mak
index 6a6a0cf0d0d..de4f8024a5d 100644
--- a/src/emu/sound/sound.mak
+++ b/src/emu/sound/sound.mak
@@ -69,6 +69,17 @@ $(SOUNDOBJ)/discrete.o: $(SOUNDSRC)/discrete.c \
$(SOUNDSRC)/disc_wav.inc
+#-------------------------------------------------
+# AC97
+#@src/emu/sound/pic-ac97.h,SOUNDS += AC97
+#-------------------------------------------------
+
+ifneq ($(filter AC97,$(SOUNDS)),)
+SOUNDOBJS += $(SOUNDOBJ)/pci-ac97.o
+endif
+
+
+
#-------------------------------------------------
# Apple custom sound chips
#@src/emu/sound/asc.h,SOUNDS += ASC
@@ -123,6 +134,14 @@ endif
#-------------------------------------------------
+#-------------------------------------------------
+# AC97
+#@src/emu/sound/pic-ac97.h,SOUNDS += AC97
+#-------------------------------------------------
+
+ifneq ($(filter AC97,$(SOUNDS)),)
+SOUNDOBJS += $(SOUNDOBJ)/pci-ac97.o
+endif
# CEM 3394 analog synthesizer chip
#@src/emu/sound/cem3394.h,SOUNDS += CEM3394
#-------------------------------------------------
@@ -133,6 +152,17 @@ endif
+#-------------------------------------------------
+# Creative Labs SB0400 Audigy2 Value
+#@src/emu/sound/sb0400.h,SOUNDS += AC97
+#-------------------------------------------------
+
+ifneq ($(filter SB0400,$(SOUNDS)),)
+SOUNDOBJS += $(SOUNDOBJ)/sb0400.o
+endif
+
+
+
#-------------------------------------------------
# Data East custom sound chips
#@src/emu/sound/bsmt2000.h,SOUNDS += BSMT2000
diff --git a/src/emu/video/gf6800gt.c b/src/emu/video/gf6800gt.c
new file mode 100644
index 00000000000..578ee56da90
--- /dev/null
+++ b/src/emu/video/gf6800gt.c
@@ -0,0 +1,30 @@
+#include "gf6800gt.h"
+
+const device_type GEFORCE_6800GT = &device_creator;
+
+DEVICE_ADDRESS_MAP_START(map1, 32, geforce_6800gt_device)
+ADDRESS_MAP_END
+
+DEVICE_ADDRESS_MAP_START(map2, 32, geforce_6800gt_device)
+ADDRESS_MAP_END
+
+DEVICE_ADDRESS_MAP_START(map3, 32, geforce_6800gt_device)
+ADDRESS_MAP_END
+
+geforce_6800gt_device::geforce_6800gt_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : pci_device(mconfig, GEFORCE_6800GT, "NVidia GeForce 6800GT", tag, owner, clock, "geforce_6800gt", __FILE__)
+{
+}
+
+void geforce_6800gt_device::device_start()
+{
+ pci_device::device_start();
+ add_map( 16*1024*1024, M_MEM, FUNC(geforce_6800gt_device::map1));
+ add_map(256*1024*1024, M_MEM, FUNC(geforce_6800gt_device::map2));
+ add_map( 16*1024*1024, M_MEM, FUNC(geforce_6800gt_device::map3));
+}
+
+void geforce_6800gt_device::device_reset()
+{
+ pci_device::device_reset();
+}
diff --git a/src/emu/video/gf6800gt.h b/src/emu/video/gf6800gt.h
new file mode 100644
index 00000000000..cdd6a3bc184
--- /dev/null
+++ b/src/emu/video/gf6800gt.h
@@ -0,0 +1,25 @@
+#ifndef GF6800GT_H
+#define GF6800GT_H
+
+#include "machine/pci.h"
+
+#define MCFG_GEFORCE_6800GT_ADD(_tag, _subdevice_id) \
+ MCFG_AGP_DEVICE_ADD(_tag, GEFORCE_6800GT, 0x10de00f9, 0xa1, _subdevice_id)
+
+class geforce_6800gt_device : public pci_device {
+public:
+ geforce_6800gt_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ DECLARE_ADDRESS_MAP(map1, 32);
+ DECLARE_ADDRESS_MAP(map2, 32);
+ DECLARE_ADDRESS_MAP(map3, 32);
+};
+
+extern const device_type GEFORCE_6800GT;
+
+#endif
diff --git a/src/emu/video/pc_vga.c b/src/emu/video/pc_vga.c
index 93e7e2a6354..da2ea0ec5d6 100644
--- a/src/emu/video/pc_vga.c
+++ b/src/emu/video/pc_vga.c
@@ -198,6 +198,27 @@ mach8_device::mach8_device(const machine_config &mconfig, const char *tag, devic
{
}
+// zero everything, keep vtbls
+void vga_device::zero()
+{
+ memset(&vga.svga_intf, 0, sizeof(vga.svga_intf));
+ vga.memory.resize(0);
+ memset(vga.pens, 0, sizeof(vga.pens));
+ vga.miscellaneous_output = 0;
+ vga.feature_control = 0;
+ memset(&vga.sequencer, 0, sizeof(vga.sequencer));
+ memset(&vga.crtc, 0, sizeof(vga.crtc));
+ memset(&vga.gc, 0, sizeof(vga.gc));
+ memset(&vga.attribute, 0, sizeof(vga.attribute));
+ memset(&vga.dac, 0, sizeof(vga.dac));
+ memset(&vga.oak, 0, sizeof(vga.oak));
+}
+
+void svga_device::zero()
+{
+ vga_device::zero();
+ memset(&svga, 0, sizeof(svga));
+}
/* VBLANK callback, start address definitely updates AT vblank, not before. */
TIMER_CALLBACK_MEMBER(vga_device::vblank_timer_cb)
@@ -208,7 +229,7 @@ TIMER_CALLBACK_MEMBER(vga_device::vblank_timer_cb)
void vga_device::device_start()
{
- memset(&vga, 0, sizeof(vga));
+ zero();
int i;
for (i = 0; i < 0x100; i++)
@@ -241,8 +262,7 @@ void svga_device::device_start()
void cirrus_vga_device::device_start()
{
- memset(&vga, 0, sizeof(vga));
- memset(&svga, 0, sizeof(svga));
+ zero();
int i;
for (i = 0; i < 0x100; i++)
diff --git a/src/emu/video/pc_vga.h b/src/emu/video/pc_vga.h
index 7869955ecde..be658c147d7 100644
--- a/src/emu/video/pc_vga.h
+++ b/src/emu/video/pc_vga.h
@@ -26,7 +26,7 @@ public:
vga_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
vga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
-
+ virtual void zero();
virtual UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
virtual READ8_MEMBER(port_03b0_r);
@@ -205,6 +205,7 @@ public:
// construction/destruction
svga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
+ virtual void zero();
virtual UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
protected:
void svga_vh_rgb8(bitmap_rgb32 &bitmap, const rectangle &cliprect);
diff --git a/src/emu/video/snes_ppu.c b/src/emu/video/snes_ppu.c
index 526e449ae85..e41f2f00bd3 100644
--- a/src/emu/video/snes_ppu.c
+++ b/src/emu/video/snes_ppu.c
@@ -214,51 +214,10 @@ void snes_ppu_device::device_start()
{
m_openbus_cb.resolve_safe(0);
-#if SNES_LAYER_DEBUG
- memset(&m_debug_options, 0, sizeof(m_debug_options));
-#endif
-
m_vram = auto_alloc_array(machine(), UINT8, SNES_VRAM_SIZE);
m_cgram = auto_alloc_array(machine(), UINT16, SNES_CGRAM_SIZE/2);
m_oam_ram = auto_alloc_array(machine(), UINT16, SNES_OAM_SIZE/2);
- /* Inititialize registers/variables */
- m_update_windows = 1;
- m_beam.latch_vert = 0;
- m_beam.latch_horz = 0;
- m_beam.current_vert = 0;
- m_beam.current_horz = 0;
- m_beam.last_visible_line = 225; /* TODO: PAL setting */
- m_mode = 0;
- m_ppu1_version = 1; // 5C77 chip version number, read by STAT77, only '1' is known
- m_ppu2_version = 3; // 5C78 chip version number, read by STAT78, only '2' & '3' encountered so far.
-
- m_cgram_address = 0;
- m_read_ophct = 0;
- m_read_opvct = 0;
-
- PPU_REG(VMAIN) = 0x80;
- // what about other regs?
-
- /* Inititialize mosaic table */
- for (int j = 0; j < 16; j++)
- {
- for (int i = 0; i < 4096; i++)
- m_mosaic_table[j][i] = (i / (j + 1)) * (j + 1);
- }
-
- /* Init VRAM */
- memset(m_vram, 0, SNES_VRAM_SIZE);
-
- /* Init Palette RAM */
- memset((UINT8 *)m_cgram, 0, SNES_CGRAM_SIZE);
-
- /* Init oam RAM */
- memset((UINT8 *)m_oam_ram, 0xff, SNES_OAM_SIZE);
-
- m_stat78 = 0;
- memset(m_regs, 0x00, sizeof(m_regs));
-
for (int i = 0; i < 2; i++)
{
save_item(NAME(m_scanlines[i].enable), i);
@@ -400,7 +359,113 @@ void snes_ppu_device::device_start()
save_pointer(NAME(m_oam_ram), SNES_OAM_SIZE/2);
}
+void snes_ppu_device::device_reset()
+{
+
+#if SNES_LAYER_DEBUG
+ memset(&m_debug_options, 0, sizeof(m_debug_options));
+#endif
+
+ /* Inititialize registers/variables */
+ m_update_windows = 1;
+ m_beam.latch_vert = 0;
+ m_beam.latch_horz = 0;
+ m_beam.current_vert = 0;
+ m_beam.current_horz = 0;
+ m_beam.last_visible_line = 225; /* TODO: PAL setting */
+ m_mode = 0;
+ m_ppu1_version = 1; // 5C77 chip version number, read by STAT77, only '1' is known
+ m_ppu2_version = 3; // 5C78 chip version number, read by STAT78, only '2' & '3' encountered so far.
+
+ m_cgram_address = 0;
+ m_read_ophct = 0;
+ m_read_opvct = 0;
+ m_vmadd = 0;
+
+ PPU_REG(VMAIN) = 0x80;
+ // what about other regs?
+
+ /* Inititialize mosaic table */
+ for (int j = 0; j < 16; j++)
+ {
+ for (int i = 0; i < 4096; i++)
+ m_mosaic_table[j][i] = (i / (j + 1)) * (j + 1);
+ }
+
+ /* Init VRAM */
+ memset(m_vram, 0, SNES_VRAM_SIZE);
+
+ /* Init Palette RAM */
+ memset((UINT8 *)m_cgram, 0, SNES_CGRAM_SIZE);
+
+ /* Init oam RAM */
+ memset((UINT8 *)m_oam_ram, 0xff, SNES_OAM_SIZE);
+
+ m_stat78 = 0;
+
+ // other initializations to 0
+ memset(m_regs, 0, sizeof(m_regs));
+ memset(m_oam_itemlist, 0, sizeof(m_oam_itemlist));
+ memset(&m_oam, 0, sizeof(m_oam));
+ memset(&m_mode7, 0, sizeof(m_mode7));
+
+ for (int i = 0; i < 2; i++)
+ {
+ m_scanlines[i].enable = 0;
+ m_scanlines[i].clip = 0;
+ memset(m_scanlines[i].buffer, 0, SNES_SCR_WIDTH);
+ memset(m_scanlines[i].priority, 0, SNES_SCR_WIDTH);
+ memset(m_scanlines[i].layer, 0, SNES_SCR_WIDTH);
+ memset(m_scanlines[i].blend_exception, 0, SNES_SCR_WIDTH);
+ }
+
+ for (int i = 0; i < 6; i++)
+ {
+ m_layer[i].window1_enabled = 0;
+ m_layer[i].window1_invert = 0;
+ m_layer[i].window2_enabled = 0;
+ m_layer[i].window2_invert = 0;
+ m_layer[i].wlog_mask = 0;
+ m_layer[i].color_math = 0;
+ m_layer[i].charmap = 0;
+ m_layer[i].tilemap = 0;
+ m_layer[i].tilemap_size = 0;
+ m_layer[i].tile_size = 0;
+ m_layer[i].mosaic_enabled = 0;
+ m_layer[i].main_window_enabled = 0;
+ m_layer[i].sub_window_enabled = 0;
+ m_layer[i].main_bg_enabled = 0;
+ m_layer[i].sub_bg_enabled = 0;
+ m_layer[i].hoffs = 0;
+ m_layer[i].voffs = 0;
+
+ memset(m_clipmasks[i], 0, SNES_SCR_WIDTH);
+ }
+
+ for (int i = 0; i < ARRAY_LENGTH(m_oam_spritelist); i++)
+ {
+ m_oam_spritelist[i].tile = 0;
+ m_oam_spritelist[i].x = 0;
+ m_oam_spritelist[i].y = 0;
+ m_oam_spritelist[i].size = 0;
+ m_oam_spritelist[i].vflip = 0;
+ m_oam_spritelist[i].hflip = 0;
+ m_oam_spritelist[i].priority_bits = 0;
+ m_oam_spritelist[i].pal = 0;
+ m_oam_spritelist[i].height = 0;
+ m_oam_spritelist[i].width = 0;
+ }
+
+ for (int i = 0; i < ARRAY_LENGTH(m_oam_tilelist); i++)
+ {
+ m_oam_tilelist[i].x = 0;
+ m_oam_tilelist[i].priority = 0;
+ m_oam_tilelist[i].pal = 0;
+ m_oam_tilelist[i].tileaddr = 0;
+ m_oam_tilelist[i].hflip = 0;
+ }
+}
/*****************************************
* get_bgcolor()
diff --git a/src/emu/video/snes_ppu.h b/src/emu/video/snes_ppu.h
index 5f628e76259..7b1e4eeb401 100644
--- a/src/emu/video/snes_ppu.h
+++ b/src/emu/video/snes_ppu.h
@@ -271,7 +271,7 @@ public:
protected:
// device-level overrides
virtual void device_start();
- virtual void device_reset() {};
+ virtual void device_reset();
private:
devcb_read16 m_openbus_cb;
diff --git a/src/emu/video/upd7220.c b/src/emu/video/upd7220.c
index d869b16f052..c930853dac3 100644
--- a/src/emu/video/upd7220.c
+++ b/src/emu/video/upd7220.c
@@ -371,17 +371,20 @@ inline void upd7220_device::update_blank_timer(int state)
inline void upd7220_device::recompute_parameters()
{
- int horiz_mult;
+ int horiz_mult = 16, vert_mult = 1;
/* TODO: assume that the pitch also controls number of horizontal pixels in a single cell */
// horiz_mult = 4 if both mixed and interlace?
- if(((m_mode & UPD7220_MODE_DISPLAY_MASK) == UPD7220_MODE_DISPLAY_MIXED) ||
- ((m_mode & UPD7220_MODE_INTERLACE_MASK) == UPD7220_MODE_INTERLACE_ON))
+ if((m_mode & UPD7220_MODE_DISPLAY_MASK) == UPD7220_MODE_DISPLAY_MIXED)
horiz_mult = 8;
- else
- horiz_mult = 16;
+ else if((m_mode & UPD7220_MODE_INTERLACE_MASK) == UPD7220_MODE_INTERLACE_ON)
+ {
+ // in interlaced mode every line contains both fields
+ horiz_mult = 8;
+ vert_mult = 2;
+ }
int horiz_pix_total = (m_hs + m_hbp + m_hfp + m_aw) * horiz_mult;
- int vert_pix_total = m_vs + m_vbp + m_al + m_vfp;
+ int vert_pix_total = (m_vs + m_vbp + m_al + m_vfp) * vert_mult;
//printf("%d %d %d %d\n",m_hs,m_hbp,m_aw,m_hfp);
//printf("%d %d\n",m_aw * 8,m_pitch * 8);
@@ -394,9 +397,9 @@ inline void upd7220_device::recompute_parameters()
rectangle visarea;
visarea.min_x = 0; //(m_hs + m_hbp) * 8;
- visarea.min_y = 0; //m_vs + m_vbp;
+ visarea.min_y = m_vbp; //m_vs + m_vbp;
visarea.max_x = m_aw * horiz_mult - 1;//horiz_pix_total - (m_hfp * 8) - 1;
- visarea.max_y = m_al - 1;//vert_pix_total - m_vfp - 1;
+ visarea.max_y = m_al * vert_mult + m_vbp - 1;//vert_pix_total - m_vfp - 1;
LOG(("uPD7220 '%s' Screen: %u x %u @ %f Hz\n", tag(), horiz_pix_total, vert_pix_total, 1 / ATTOSECONDS_TO_DOUBLE(refresh)));
LOG(("Visible Area: (%u, %u) - (%u, %u)\n", visarea.min_x, visarea.min_y, visarea.max_x, visarea.max_y));
@@ -798,31 +801,47 @@ void upd7220_device::draw_pixel(int x, int y, int xi, UINT16 tile_data)
void upd7220_device::draw_line(int x, int y)
{
- int line_size,i;
- const int line_x_dir[8] = { 0, 1, 1, 0, 0,-1,-1, 0};
- const int line_y_dir[8] = { 1, 0, 0,-1,-1, 0, 0, 1};
- const int line_x_step[8] = { 1, 0, 0, 1,-1, 0, 0,-1 };
- const int line_y_step[8] = { 0, 1,-1, 0, 0,-1, 1, 0 };
+ int xi, yi;
+ int d = (m_figs.m_d & 0x2000) ? (INT16)(m_figs.m_d | 0xe000) : m_figs.m_d;
+ int d2 = (m_figs.m_d2 & 0x2000) ? (INT16)(m_figs.m_d2 | 0xe000) : m_figs.m_d2;
UINT16 pattern = (m_ra[8]) | (m_ra[9]<<8);
- int line_step = 0;
+ const int dot_dir[4] = {1, -1, -1, 1};
LOG(("uPD7220 line check: %d %d %02x %08x %d %d %d\n",x,y,m_figs.m_dir,m_ead,m_figs.m_d1,m_figs.m_dc,m_bitmap_mod));
- line_size = m_figs.m_dc;
-
- for(i = 0;i>= 1;
- draw_pixel(x + (line_step*line_x_step[m_figs.m_dir]),y + (line_step*line_y_step[m_figs.m_dir]),i,pattern);
- x += line_x_dir[m_figs.m_dir];
- y += line_y_dir[m_figs.m_dir];
+ switch(m_figs.m_dir & 3)
+ {
+ case 1:
+ case 2:
+ draw_pixel(yi * dot_dir[((m_figs.m_dir >> 1) + 3) & 3] + x, xi * dot_dir[m_figs.m_dir >> 1] + y, yi, pattern);
+ break;
+ default:
+ draw_pixel(xi * dot_dir[((m_figs.m_dir >> 1) + 3) & 3] + x, yi * dot_dir[m_figs.m_dir >> 1] + y, yi, pattern);
+ break;
+ }
+ if(d > 0)
+ {
+ xi++;
+ d += d2;
+ }
+ else
+ d += m_figs.m_d1;
}
- /* TODO: check me*/
- x += (line_step*line_x_step[m_figs.m_dir]);
- y += (line_step*line_y_step[m_figs.m_dir]);
+ switch(m_figs.m_dir & 3)
+ {
+ case 1:
+ case 2:
+ x += yi * dot_dir[((m_figs.m_dir >> 1) + 3) & 3];
+ y += xi * dot_dir[m_figs.m_dir >> 1];
+ break;
+ default:
+ x += xi * dot_dir[((m_figs.m_dir >> 1) + 3) & 3];
+ y += yi * dot_dir[m_figs.m_dir >> 1];
+ break;
+ }
m_ead = (x >> 4) + (y * (m_pitch >> m_figs.m_gd));
m_dad = x & 0x0f;
@@ -854,7 +873,7 @@ void upd7220_device::draw_arc(int x, int y)
LOG(("uPD7220 arc check: %d %d %02x %08x %d %d %d\n",x,y,m_figs.m_dir,m_ead,m_figs.m_dm,m_figs.m_dc,m_figs.m_d));
- for(int i = 0; i < m_figs.m_dc; i++)
+ for(int i = 0; i <= m_figs.m_dc; i++)
{
if(i >= m_figs.m_dm)
{
@@ -882,10 +901,10 @@ void upd7220_device::draw_arc(int x, int y)
{
case 1:
case 2:
- x += m_figs.m_dc * dot_dir[((m_figs.m_dir >> 1) + 3) & 3];
+ x += (m_figs.m_dc + 1) * dot_dir[((m_figs.m_dir >> 1) + 3) & 3];
break;
default:
- y += m_figs.m_dc * dot_dir[m_figs.m_dir >> 1];
+ y += (m_figs.m_dc + 1) * dot_dir[m_figs.m_dir >> 1];
break;
}
@@ -1535,7 +1554,7 @@ void upd7220_device::update_text(bitmap_rgb32 &bitmap, const rectangle &cliprect
addr = sad + (y * m_pitch);
if (!m_draw_text_cb.isnull())
- m_draw_text_cb(bitmap, addr, (y * m_lr), wd, m_pitch, m_lr, m_dc, m_ead);
+ m_draw_text_cb(bitmap, addr, (y * m_lr) + m_vbp, wd, m_pitch, m_lr, m_dc, m_ead);
}
sy = y + 1;
@@ -1547,13 +1566,13 @@ void upd7220_device::update_text(bitmap_rgb32 &bitmap, const rectangle &cliprect
// draw_graphics_line -
//-------------------------------------------------
-void upd7220_device::draw_graphics_line(bitmap_rgb32 &bitmap, UINT32 addr, int y, int wd)
+void upd7220_device::draw_graphics_line(bitmap_rgb32 &bitmap, UINT32 addr, int y, int wd, int pitch)
{
- int sx;
+ int sx, al = bitmap.cliprect().height();
- for (sx = 0; sx < 80; sx++)
+ for (sx = 0; sx < pitch; sx++)
{
- if((sx << 3) < m_aw * 16 && y < m_al)
+ if((sx << 3) < m_aw * 16 && y < al)
m_display_cb(bitmap, y, sx << 3, addr);
addr+= wd + 1;
@@ -1571,6 +1590,8 @@ void upd7220_device::update_graphics(bitmap_rgb32 &bitmap, const rectangle &clip
UINT16 len;
int im, wd, area;
int y = 0, tsy = 0, bsy = 0;
+ bool mixed = ((m_mode & UPD7220_MODE_DISPLAY_MASK) == UPD7220_MODE_DISPLAY_MIXED);
+ UINT8 interlace = ((m_mode & UPD7220_MODE_INTERLACE_MASK) == UPD7220_MODE_INTERLACE_ON) ? 0 : 1;
for (area = 0; area < 4; area++)
{
@@ -1583,6 +1604,9 @@ void upd7220_device::update_graphics(bitmap_rgb32 &bitmap, const rectangle &clip
if(area >= 3) // TODO: most likely to be correct, Quarth (PC-98xx) definitely draws with area 2. We might see an area 3 someday ...
break;
+ if(!interlace)
+ len <<= 1;
+
for (y = 0; y < len; y++)
{
/* TODO: again correct?
@@ -1592,7 +1616,7 @@ void upd7220_device::update_graphics(bitmap_rgb32 &bitmap, const rectangle &clip
addr = ((sad << 1) & 0x3ffff) + (y * (m_pitch << (im ? 0 : 1)));
if (!m_display_cb.isnull())
- draw_graphics_line(bitmap, addr, y + (bsy / m_lr), wd);
+ draw_graphics_line(bitmap, addr, y + ((bsy + m_vbp) / (mixed ? 1 : m_lr)), wd, (m_pitch << interlace));
}
}
else
@@ -1606,7 +1630,7 @@ void upd7220_device::update_graphics(bitmap_rgb32 &bitmap, const rectangle &clip
addr = (sad & 0x3ffff) + ((y / m_lr) * m_pitch);
if (!m_draw_text_cb.isnull())
- m_draw_text_cb(bitmap, addr, y + tsy, wd, m_pitch, m_lr, m_dc, m_ead);
+ m_draw_text_cb(bitmap, addr, y + tsy + m_vbp, wd, m_pitch, m_lr, m_dc, m_ead);
}
}
}
diff --git a/src/emu/video/upd7220.h b/src/emu/video/upd7220.h
index affbe531c40..d91ed53c24a 100644
--- a/src/emu/video/upd7220.h
+++ b/src/emu/video/upd7220.h
@@ -150,7 +150,7 @@ private:
void process_fifo();
void continue_command();
void update_text(bitmap_rgb32 &bitmap, const rectangle &cliprect);
- void draw_graphics_line(bitmap_rgb32 &bitmap, UINT32 addr, int y, int wd);
+ void draw_graphics_line(bitmap_rgb32 &bitmap, UINT32 addr, int y, int wd, int pitch);
void update_graphics(bitmap_rgb32 &bitmap, const rectangle &cliprect, int force_bitmap);
upd7220_display_pixels_delegate m_display_cb;
diff --git a/src/emu/video/video.mak b/src/emu/video/video.mak
index 25f724ebae4..67cef5683bf 100644
--- a/src/emu/video/video.mak
+++ b/src/emu/video/video.mak
@@ -172,6 +172,15 @@ ifneq ($(filter GF4500,$(VIDEOS)),)
VIDEOOBJS+= $(VIDEOOBJ)/gf4500.o
endif
+#-------------------------------------------------
+#
+#@src/emu/video/gf6800gt.h,VIDEOS += GF6800GT
+#-------------------------------------------------
+
+ifneq ($(filter GF6800GT,$(VIDEOS)),)
+VIDEOOBJS+= $(VIDEOOBJ)/gf6800gt.o
+endif
+
#-------------------------------------------------
#
#@src/emu/video/h63484.h,VIDEOS += H63484
diff --git a/src/lib/formats/cbm_crt.c b/src/lib/formats/cbm_crt.c
index fd44e061376..6ce4cc992d8 100644
--- a/src/lib/formats/cbm_crt.c
+++ b/src/lib/formats/cbm_crt.c
@@ -4,14 +4,44 @@
cbm_crt.c
- Commodore C64 cartridge images
+ Commodore C64 cartridge images in .CRT format
+
+ This format was introduced in the CCS64 emulator by Per Hakan
+ Sundell.
+
+ Header info based on the VICE manual chapter 15.11, which in turn
+ is based on CRT.txt rev 1.14 compiled by Peter Schepers, with
+ additional contributions by Per Hakan Sundell, Markus Brenner,
+ and Marco Van Den Heuvel.
+ Relevant links:
+ http://vice-emu.sourceforge.net/vice_15.html#SEC300
+ http://ist.uwaterloo.ca/~schepers/formats/CRT.TXT (version 1.13, outdated)
+
+ Header Contents (bytes $0000-003F):
+ Bytes $0000-000F - 16-byte cartridge signature "C64 CARTRIDGE" (padded with spaces)
+ $0010-0013 - File header length
+ $0014-0015 - Cartridge version (high/low, presently 01.00)
+ $0016-0017 - Cartridge hardware type ($0000, high/low), see below
+ $0018 - Cartridge port EXROM line status (0 = inactive, 1 = active)
+ $0019 - Cartridge port GAME line status (0 = inactive, 1 = active)
+ $001A-001F - Reserved for future use
+ $0020-003F - 32-byte cartridge name (uppercase, padded with null characters)
+
+ CHIP Packet Contents (starting from $0040; there can be multiple CHIP packets
+ in a single CRT file):
+ Bytes $0040-0043 - Contained ROM signature "CHIP"
+ $0044-0047 - Total packet length (ROM image size and header combined) (high/low format)
+ $0048-0049 - Chip type (0 = ROM, 1 = RAM (no ROM data), 2 = Flash ROM)
+ $004A-004B - Bank number
+ $004C-004D - Starting load address (high/low format)
+ $004E-004F - ROM image size in bytes (high/low format, typically $2000 or $4000)
+ $0050-xxxx - ROM data
*********************************************************************/
#include "cbm_crt.h"
-
//**************************************************************************
// MACROS/CONSTANTS
//**************************************************************************
@@ -22,62 +52,62 @@
// slot names for the C64 cartridge types
static const char * CRT_C64_SLOT_NAMES[_CRT_C64_COUNT] =
{
- "standard",
- UNSUPPORTED,
- UNSUPPORTED,
- UNSUPPORTED,
- "simons_basic",
- "ocean",
- UNSUPPORTED,
- "fun_play",
- "super_games",
- UNSUPPORTED,
- "epyxfastload",
- "westermann",
- "rex",
- UNSUPPORTED,
- "magic_formel",
- "system3",
- "warp_speed",
- "dinamic",
- "zaxxon",
- "magic_desk",
- UNSUPPORTED,
- "comal80",
- "struct_basic",
- "ross",
- "ep64",
- "ep7x8",
- "dela_ep256",
- "rex_ep256",
- "mikroasm",
- UNSUPPORTED,
- UNSUPPORTED,
- "stardos",
- UNSUPPORTED,
- UNSUPPORTED,
- UNSUPPORTED,
- UNSUPPORTED,
- UNSUPPORTED,
- UNSUPPORTED,
- UNSUPPORTED,
- UNSUPPORTED,
- UNSUPPORTED,
- "ieee488",
- UNSUPPORTED,
- UNSUPPORTED,
- "exos",
- UNSUPPORTED,
- UNSUPPORTED,
- UNSUPPORTED,
- "super_explode",
- UNSUPPORTED,
- UNSUPPORTED,
- "mach5",
- UNSUPPORTED,
- "pagefox",
- UNSUPPORTED,
- "silverrock"
+ "standard", // 0 - Normal cartridge
+ UNSUPPORTED, // 1 - Action Replay
+ UNSUPPORTED, // 2 - KCS Power Cartridge
+ "final3", // 3 - Final Cartridge III
+ "simons_basic", // 4 - Simons' BASIC
+ "ocean", // 5 - Ocean type 1
+ UNSUPPORTED, // 6 - Expert Cartridge
+ "fun_play", // 7 - Fun Play, Power Play
+ "super_games", // 8 - Super Games
+ UNSUPPORTED, // 9 - Atomic Power
+ "epyxfastload", // 10 - Epyx Fastload
+ "westermann", // 11 - Westermann Learning
+ "rex", // 12 - Rex Utility
+ "final", // 13 - Final Cartridge I
+ "magic_formel", // 14 - Magic Formel
+ "system3", // 15 - C64 Game System, System 3
+ "warp_speed", // 16 - Warp Speed
+ "dinamic", // 17 - Dinamic
+ "zaxxon", // 18 - Zaxxon, Super Zaxxon (SEGA)
+ "magic_desk", // 19 - Magic Desk, Domark, HES Australia
+ UNSUPPORTED, // 20 - Super Snapshot V5
+ "comal80", // 21 - Comal-80
+ "struct_basic", // 22 - Structured BASIC
+ "ross", // 23 - Ross
+ "ep64", // 24 - Dela EP64
+ "ep7x8", // 25 - Dela EP7x8
+ "dela_ep256", // 26 - Dela EP256
+ "rex_ep256", // 27 - Rex EP256
+ "mikroasm", // 28 - Mikro Assembler
+ UNSUPPORTED, // 29 - Final Cartridge Plus
+ UNSUPPORTED, // 30 - Action Replay 4
+ "stardos", // 31 - Stardos
+ "easyflash", // 32 - EasyFlash
+ UNSUPPORTED, // 33 - EasyFlash Xbank
+ UNSUPPORTED, // 34 - Capture
+ UNSUPPORTED, // 35 - Action Replay 3
+ UNSUPPORTED, // 36 - Retro Replay
+ UNSUPPORTED, // 37 - MMC64
+ UNSUPPORTED, // 38 - MMC Replay
+ "ide64", // 39 - IDE64
+ UNSUPPORTED, // 40 - Super Snapshot V4
+ "ieee488", // 41 - IEEE-488
+ UNSUPPORTED, // 42 - Game Killer
+ "prophet64", // 43 - Prophet64
+ "exos", // 44 - EXOS
+ UNSUPPORTED, // 45 - Freeze Frame
+ UNSUPPORTED, // 46 - Freeze Machine
+ UNSUPPORTED, // 47 - Snapshot64
+ "super_explode", // 48 - Super Explode V5.0
+ "magic_voice", // 49 - Magic Voice
+ UNSUPPORTED, // 50 - Action Replay 2
+ "mach5", // 51 - MACH 5
+ UNSUPPORTED, // 52 - Diashow-Maker
+ "pagefox", // 53 - Pagefox
+ UNSUPPORTED, // 54 - ?
+ "silverrock" // 55 - Silverrock
};
diff --git a/src/lib/formats/d88_dsk.c b/src/lib/formats/d88_dsk.c
index 658205e97ba..1df91cc94c9 100644
--- a/src/lib/formats/d88_dsk.c
+++ b/src/lib/formats/d88_dsk.c
@@ -492,8 +492,12 @@ bool d88_format::load(io_generic *io, UINT32 form_factor, floppy_image *image)
pos += 16;
UINT16 size = LITTLE_ENDIANIZE_INT16(*(UINT16 *)(hs+14));
- if(i == 0)
+ if(i == 0) {
sector_count = LITTLE_ENDIANIZE_INT16(*(UINT16 *)(hs+4));
+ // Support broken vfman converter
+ if(sector_count == 0x1000)
+ sector_count = 0x10;
+ }
sects[i].track = hs[0];
sects[i].head = hs[1];
diff --git a/src/lib/formats/esq16_dsk.c b/src/lib/formats/esq16_dsk.c
index e5d5c0f65cd..4b370cfe0bd 100644
--- a/src/lib/formats/esq16_dsk.c
+++ b/src/lib/formats/esq16_dsk.c
@@ -50,7 +50,7 @@ esqimg_format::esqimg_format()
const char *esqimg_format::name() const
{
- return "img";
+ return "esq16";
}
const char *esqimg_format::description() const
diff --git a/src/lib/formats/esq8_dsk.c b/src/lib/formats/esq8_dsk.c
index 08fcb5bd7d1..8af0bc46a84 100644
--- a/src/lib/formats/esq8_dsk.c
+++ b/src/lib/formats/esq8_dsk.c
@@ -52,7 +52,7 @@ esq8img_format::esq8img_format()
const char *esq8img_format::name() const
{
- return "img";
+ return "esq8";
}
const char *esq8img_format::description() const
diff --git a/src/lib/formats/flopimg.c b/src/lib/formats/flopimg.c
index 00c393939bf..1e0f42a5b35 100644
--- a/src/lib/formats/flopimg.c
+++ b/src/lib/formats/flopimg.c
@@ -1071,6 +1071,8 @@ bool floppy_image_format_t::type_no_data(int type) const
type == CRC_CBM_START ||
type == CRC_MACHEAD_START ||
type == CRC_FCS_START ||
+ type == CRC_VICTOR_HDR_START ||
+ type == CRC_VICTOR_DATA_START ||
type == CRC_END ||
type == SECTOR_LOOP_START ||
type == SECTOR_LOOP_END ||
@@ -1112,6 +1114,12 @@ void floppy_image_format_t::collect_crcs(const desc_e *desc, gen_crc_info *crcs)
case CRC_FCS_START:
crcs[desc[i].p1].type = CRC_FCS;
break;
+ case CRC_VICTOR_HDR_START:
+ crcs[desc[i].p1].type = CRC_VICTOR_HDR;
+ break;
+ case CRC_VICTOR_DATA_START:
+ crcs[desc[i].p1].type = CRC_VICTOR_DATA;
+ break;
}
for(int i=0; desc[i].type != END; i++)
@@ -1131,6 +1139,8 @@ int floppy_image_format_t::crc_cells_size(int type) const
case CRC_CBM: return 10;
case CRC_MACHEAD: return 8;
case CRC_FCS: return 20;
+ case CRC_VICTOR_HDR: return 10;
+ case CRC_VICTOR_DATA: return 20;
default: return 0;
}
}
@@ -1271,17 +1281,40 @@ void floppy_image_format_t::fixup_crc_fcs(UINT32 *buffer, const gen_crc_info *cr
// TODO
}
+void floppy_image_format_t::fixup_crc_victor_header(UINT32 *buffer, const gen_crc_info *crc)
+{
+ UINT8 v = 0;
+ for(int o = crc->start; o < crc->end; o+=10) {
+ v += ((gcr5bw_tb[bitn_r(buffer, o, 5)] << 4) | gcr5bw_tb[bitn_r(buffer, o+5, 5)]);
+ }
+ int offset = crc->write;
+ gcr5_w(buffer, offset, 10, v);
+}
+
+void floppy_image_format_t::fixup_crc_victor_data(UINT32 *buffer, const gen_crc_info *crc)
+{
+ UINT16 v = 0;
+ for(int o = crc->start; o < crc->end; o+=10) {
+ v += ((gcr5bw_tb[bitn_r(buffer, o, 5)] << 4) | gcr5bw_tb[bitn_r(buffer, o+5, 5)]);
+ }
+ int offset = crc->write;
+ gcr5_w(buffer, offset, 10, v & 0xff);
+ gcr5_w(buffer, offset, 10, v >> 8);
+}
+
void floppy_image_format_t::fixup_crcs(UINT32 *buffer, gen_crc_info *crcs)
{
for(int i=0; i != MAX_CRC_COUNT; i++)
if(crcs[i].write != -1) {
switch(crcs[i].type) {
- case CRC_AMIGA: fixup_crc_amiga(buffer, crcs+i); break;
- case CRC_CBM: fixup_crc_cbm(buffer, crcs+i); break;
- case CRC_CCITT: fixup_crc_ccitt(buffer, crcs+i); break;
- case CRC_CCITT_FM:fixup_crc_ccitt_fm(buffer, crcs+i); break;
- case CRC_MACHEAD: fixup_crc_machead(buffer, crcs+i); break;
- case CRC_FCS: fixup_crc_fcs(buffer, crcs+i); break;
+ case CRC_AMIGA: fixup_crc_amiga(buffer, crcs+i); break;
+ case CRC_CBM: fixup_crc_cbm(buffer, crcs+i); break;
+ case CRC_CCITT: fixup_crc_ccitt(buffer, crcs+i); break;
+ case CRC_CCITT_FM: fixup_crc_ccitt_fm(buffer, crcs+i); break;
+ case CRC_MACHEAD: fixup_crc_machead(buffer, crcs+i); break;
+ case CRC_FCS: fixup_crc_fcs(buffer, crcs+i); break;
+ case CRC_VICTOR_HDR: fixup_crc_victor_header(buffer, crcs+i); break;
+ case CRC_VICTOR_DATA: fixup_crc_victor_data(buffer, crcs+i); break;
}
if(crcs[i].fixup_mfm_clock) {
int offset = crcs[i].write + crc_cells_size(crcs[i].type);
@@ -1403,6 +1436,11 @@ void floppy_image_format_t::generate_track(const desc_e *desc, int track, int he
raw_w(buffer, offset, desc[index].p2, desc[index].p1);
break;
+ case SYNC_GCR5:
+ for(int i=0; i1, 1->0), mfm-encoded
@@ -346,6 +348,8 @@ protected:
CRC_CBM_START, //!< Start a CBM checksum calculation (xor of original data values, gcr5-encoded), p1 = crc id
CRC_MACHEAD_START, //!< Start of the mac gcr6 sector header checksum calculation (xor of pre-encode 6-bits values, gcr6-encoded)
CRC_FCS_START, //!< Start a Compucolor File Control System checksum calculation, p1 = crc id
+ CRC_VICTOR_HDR_START, //!< Start a Victor 9000 checksum calculation, p1 = crc id
+ CRC_VICTOR_DATA_START, //!< Start a Victor 9000 checksum calculation, p1 = crc id
CRC_END, //!< End the checksum, p1 = crc id
CRC, //!< Write a checksum in the apporpriate format, p1 = crc id
@@ -565,7 +569,7 @@ protected:
UINT8 sbyte_mfm_r(const UINT8 *bitstream, int &pos, int track_size);
private:
- enum { CRC_NONE, CRC_AMIGA, CRC_CBM, CRC_CCITT, CRC_CCITT_FM, CRC_MACHEAD, CRC_FCS };
+ enum { CRC_NONE, CRC_AMIGA, CRC_CBM, CRC_CCITT, CRC_CCITT_FM, CRC_MACHEAD, CRC_FCS, CRC_VICTOR_HDR, CRC_VICTOR_DATA };
enum { MAX_CRC_COUNT = 64 };
//! Holds data used internally for generating CRCs.
@@ -587,6 +591,8 @@ private:
void fixup_crc_ccitt_fm(UINT32 *buffer, const gen_crc_info *crc);
void fixup_crc_machead(UINT32 *buffer, const gen_crc_info *crc);
void fixup_crc_fcs(UINT32 *buffer, const gen_crc_info *crc);
+ void fixup_crc_victor_header(UINT32 *buffer, const gen_crc_info *crc);
+ void fixup_crc_victor_data(UINT32 *buffer, const gen_crc_info *crc);
void fixup_crcs(UINT32 *buffer, gen_crc_info *crcs);
void collect_crcs(const desc_e *desc, gen_crc_info *crcs);
diff --git a/src/lib/formats/p6001_cas.c b/src/lib/formats/p6001_cas.c
index baf223d060f..78e5e929963 100644
--- a/src/lib/formats/p6001_cas.c
+++ b/src/lib/formats/p6001_cas.c
@@ -1,5 +1,5 @@
/*
- * Nec PC-6001 cassette format handling
+ * NEC PC-6001 cassette format handling
*/
#include "p6001_cas.h"
diff --git a/src/lib/formats/p6001_cas.h b/src/lib/formats/p6001_cas.h
index a79a3a149b1..2006bbb9794 100644
--- a/src/lib/formats/p6001_cas.h
+++ b/src/lib/formats/p6001_cas.h
@@ -1,5 +1,5 @@
/*
- * Nec PC-6001 cassette format handling
+ * NEC PC-6001 cassette format handling
*/
#ifndef PC6001_CAS_H_
diff --git a/src/lib/formats/pc98fdi_dsk.c b/src/lib/formats/pc98fdi_dsk.c
index d1859981305..81aeaf7a42b 100644
--- a/src/lib/formats/pc98fdi_dsk.c
+++ b/src/lib/formats/pc98fdi_dsk.c
@@ -17,7 +17,7 @@ pc98fdi_format::pc98fdi_format()
const char *pc98fdi_format::name() const
{
- return "pc98-fdi";
+ return "pc98_fdi";
}
const char *pc98fdi_format::description() const
diff --git a/src/lib/formats/victor9k_dsk.c b/src/lib/formats/victor9k_dsk.c
new file mode 100644
index 00000000000..db2a75b21e7
--- /dev/null
+++ b/src/lib/formats/victor9k_dsk.c
@@ -0,0 +1,256 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+/*********************************************************************
+
+ formats/victor9k_dsk.c
+
+ Victor 9000 sector disk image format
+
+*********************************************************************/
+
+/*
+
+ Sector format
+ -------------
+
+ Header sync
+ Sector header (header ID, track ID, sector ID, and checksum)
+ Gap 1
+ Data Sync
+ Data field (data sync, data ID, data bytes, and checksum)
+ Gap 2
+
+ Track format
+ ------------
+
+ ZONE LOWER HEAD UPPER HEAD SECTORS ROTATIONAL RPM
+ NUMBER TRACKS TRACKS PER TRACK PERIOD (MS)
+
+ 0 0-3 unused 19 237.9 252
+ 1 4-15 0-7 18 224.5 267
+ 2 16-26 8-18 17 212.2 283
+ 3 27-37 19-29 16 199.9 300
+ 4 38-48 30-40 15 187.6 320
+ 5 49-59 41-51 14 175.3 342
+ 6 60-70 52-62 13 163.0 368
+ 7 71-79 63-74 12 149.6 401
+ 8 unused 75-79 11 144.0 417
+
+ Interleave factor 3
+ cell 2.13 usec
+
+*/
+
+#include "emu.h"
+#include "formats/victor9k_dsk.h"
+
+victor9k_format::victor9k_format()
+{
+}
+
+const char *victor9k_format::name() const
+{
+ return "victor9k";
+}
+
+const char *victor9k_format::description() const
+{
+ return "Victor 9000 disk image";
+}
+
+const char *victor9k_format::extensions() const
+{
+ return "img";
+}
+
+int victor9k_format::find_size(io_generic *io, UINT32 form_factor)
+{
+ UINT64 size = io_generic_size(io);
+ for(int i=0; formats[i].sector_count; i++) {
+ const format &f = formats[i];
+ if(size == (UINT32) f.sector_count*f.sector_base_size*f.head_count)
+ return i;
+ }
+ return -1;
+}
+
+int victor9k_format::identify(io_generic *io, UINT32 form_factor)
+{
+ int type = find_size(io, form_factor);
+
+ if (type != -1)
+ return 50;
+
+ return 0;
+}
+
+floppy_image_format_t::desc_e* victor9k_format::get_sector_desc(const format &f, int ¤t_size, int sector_count)
+{
+ static floppy_image_format_t::desc_e desc[] = {
+ /* 00 */ { SECTOR_INTERLEAVE_SKEW, 0, 0},
+ /* 01 */ { SECTOR_LOOP_START, 0, -1 },
+ /* 02 */ { SYNC_GCR5, 6 },
+ /* 03 */ { GCR5, 0x07, 1 },
+ /* 04 */ { CRC_VICTOR_HDR_START, 1 },
+ /* 05 */ { TRACK_ID_VICTOR_GCR5 },
+ /* 06 */ { SECTOR_ID_GCR5 },
+ /* 07 */ { CRC_END, 1 },
+ /* 08 */ { CRC, 1 },
+ /* 09 */ { RAWBYTE, 0x55, 8 },
+ /* 10 */ { SYNC_GCR5, 5 },
+ /* 11 */ { GCR5, 0x08, 1 },
+ /* 12 */ { CRC_VICTOR_DATA_START, 2 },
+ /* 13 */ { SECTOR_DATA_GCR5, -1 },
+ /* 14 */ { CRC_END, 2 },
+ /* 15 */ { CRC, 2 },
+ /* 16 */ { RAWBYTE, 0x55, 8 },
+ /* 17 */ { SECTOR_LOOP_END },
+ /* 18 */ { RAWBYTE, 0x55, 0 },
+ /* 19 */ { RAWBITS, 0x5555, 0 },
+ /* 20 */ { END }
+ };
+
+ current_size = 60 + (1+1+1+1)*10 + 8*8 + 50 + (1+f.sector_base_size+2)*10 + 8*8;
+
+ current_size *= sector_count;
+ return desc;
+}
+
+void victor9k_format::build_sector_description(const format &f, UINT8 *sectdata, offs_t sect_offs, desc_s *sectors, int sector_count) const
+{
+ for (int i = 0; i < sector_count; i++) {
+ sectors[i].data = sectdata + sect_offs;
+ sectors[i].size = f.sector_base_size;
+ sectors[i].sector_id = i;
+
+ sect_offs += sectors[i].size;
+ }
+}
+
+bool victor9k_format::load(io_generic *io, UINT32 form_factor, floppy_image *image)
+{
+ int type = find_size(io, form_factor);
+ if(type == -1)
+ return false;
+
+ const format &f = formats[type];
+
+ UINT64 size = io_generic_size(io);
+ dynamic_buffer img;
+ img.resize(size);
+
+ io_generic_read(io, img, 0, size);
+
+ int track_offset = 0;
+
+ for (int head = 0; head < f.head_count; head++) {
+ for (int track = 0; track < f.track_count; track++) {
+ int current_size = 0;
+ int total_size = 200000000./cell_size[speed_zone[head][track]];
+ int sector_count = sectors_per_track[head][track];
+ int track_size = sector_count*f.sector_base_size;
+
+ floppy_image_format_t::desc_e *desc = get_sector_desc(f, current_size, sector_count);
+
+ int remaining_size = total_size - current_size;
+ if(remaining_size < 0)
+ throw emu_fatalerror("victor9k_format: Incorrect track layout, max_size=%d, current_size=%d", total_size, current_size);
+
+ // Fixup the end gap
+ desc[18].p2 = remaining_size / 8;
+ desc[19].p2 = remaining_size & 7;
+ desc[19].p1 >>= remaining_size & 0x01;
+
+ desc_s sectors[40];
+
+ build_sector_description(f, img, track_offset, sectors, sector_count);
+ generate_track(desc, track, head, sectors, sector_count, total_size, image);
+
+ track_offset += track_size;
+ }
+ }
+
+ image->set_variant(f.variant);
+
+ return true;
+}
+
+bool victor9k_format::supports_save() const
+{
+ return false;
+}
+
+int victor9k_format::get_rpm(int head, int track)
+{
+ return rpm[speed_zone[head][track]];
+}
+
+const victor9k_format::format victor9k_format::formats[] = {
+ { //
+ floppy_image::FF_525, floppy_image::SSDD, 1224, 80, 1, 512
+ },
+ { //
+ floppy_image::FF_525, floppy_image::DSDD, 2448, 80, 2, 512
+ },
+ {}
+};
+
+const UINT32 victor9k_format::cell_size[9] =
+{
+ 1789, 1896, 2009, 2130, 2272, 2428, 2613, 2847, 2961
+};
+
+const int victor9k_format::sectors_per_track[2][80] =
+{
+ {
+ 19, 19, 19, 19,
+ 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12
+ },
+ {
+ 18, 18, 18, 18, 18, 18, 18, 18,
+ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 11, 11, 11, 11, 11
+ }
+};
+
+const int victor9k_format::speed_zone[2][80] =
+{
+ {
+ 0, 0, 0, 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7
+ },
+ {
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 8, 8, 8, 8, 8
+ }
+};
+
+const int victor9k_format::rpm[9] =
+{
+ 252, 267, 283, 300, 320, 342, 368, 401, 417
+};
+
+const floppy_format_type FLOPPY_VICTOR_9000_FORMAT = &floppy_image_format_creator;
diff --git a/src/lib/formats/victor9k_dsk.h b/src/lib/formats/victor9k_dsk.h
new file mode 100644
index 00000000000..2fb24a6534a
--- /dev/null
+++ b/src/lib/formats/victor9k_dsk.h
@@ -0,0 +1,59 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+/*********************************************************************
+
+ formats/victor9k_dsk.h
+
+ Victor 9000 sector disk image format
+
+*********************************************************************/
+
+#ifndef VICTOR9K_DSK_H_
+#define VICTOR9K_DSK_H_
+
+#include "flopimg.h"
+
+class victor9k_format : public floppy_image_format_t {
+public:
+ struct format {
+ UINT32 form_factor; // See floppy_image for possible values
+ UINT32 variant; // See floppy_image for possible values
+
+ UINT16 sector_count;
+ UINT8 track_count;
+ UINT8 head_count;
+ UINT16 sector_base_size;
+ };
+
+ victor9k_format();
+
+ virtual const char *name() const;
+ virtual const char *description() const;
+ virtual const char *extensions() const;
+
+ int find_size(io_generic *io, UINT32 form_factor);
+ virtual int identify(io_generic *io, UINT32 form_factor);
+ floppy_image_format_t::desc_e* get_sector_desc(const format &f, int ¤t_size, int sector_count);
+ void build_sector_description(const format &f, UINT8 *sectdata, offs_t sect_offs, desc_s *sectors, int sector_count) const;
+ virtual bool load(io_generic *io, UINT32 form_factor, floppy_image *image);
+ virtual bool supports_save() const;
+
+ static int get_rpm(int head, int track);
+
+protected:
+ static const format formats[];
+
+ static const UINT32 cell_size[9];
+ static const int sectors_per_track[2][80];
+ static const int speed_zone[2][80];
+ static const int rpm[9];
+};
+
+extern const floppy_format_type FLOPPY_VICTOR_9000_FORMAT;
+
+
+FLOPPY_IDENTIFY( victor9k_dsk_identify );
+
+FLOPPY_CONSTRUCT( victor9k_dsk_construct );
+
+#endif
diff --git a/src/lib/lib.mak b/src/lib/lib.mak
index b7014a926c8..57140d0da4d 100644
--- a/src/lib/lib.mak
+++ b/src/lib/lib.mak
@@ -215,6 +215,7 @@ FORMATSOBJS = \
$(LIBOBJ)/formats/tzx_cas.o \
$(LIBOBJ)/formats/uef_cas.o \
$(LIBOBJ)/formats/upd765_dsk.o \
+ $(LIBOBJ)/formats/victor9k_dsk.o\
$(LIBOBJ)/formats/vg5k_cas.o \
$(LIBOBJ)/formats/vt_cas.o \
$(LIBOBJ)/formats/vt_dsk.o \
diff --git a/src/lib/sqlite3/sqlite3.c b/src/lib/sqlite3/sqlite3.c
index 8243bf2c637..becc84a5e69 100644
--- a/src/lib/sqlite3/sqlite3.c
+++ b/src/lib/sqlite3/sqlite3.c
@@ -8494,9 +8494,13 @@ SQLITE_PRIVATE const int sqlite3one;
/*
** Disable MMAP on platforms where it is known to not work
*/
-#if defined(__OpenBSD__) || defined(__QNXNTO__)
+#if defined(__OpenBSD__) || defined(__QNXNTO__) || defined(__OS2__)
# undef SQLITE_MAX_MMAP_SIZE
# define SQLITE_MAX_MMAP_SIZE 0
+# ifdef __OS2__
+# undef SQLITE_OMIT_WAL
+# define SQLITE_OMIT_WAL 0
+# endif
#endif
/*
diff --git a/src/lib/web/mongoose.c b/src/lib/web/mongoose.c
index e9305981bac..3482875b7b8 100644
--- a/src/lib/web/mongoose.c
+++ b/src/lib/web/mongoose.c
@@ -72,6 +72,9 @@
#include
#include
#include
+#ifdef __OS2__
+#include // struct timeval
+#endif
#include
#ifdef _WIN32
@@ -120,7 +123,11 @@ typedef SOCKET sock_t;
#include
#include
#define closesocket(x) close(x)
+#ifdef __OS2__
+typedef int socklen_t;
+#else
#define __cdecl
+#endif
#define INVALID_SOCKET (-1)
#define to64(x) strtoll(x, NULL, 10)
typedef int sock_t;
@@ -1170,7 +1177,9 @@ typedef HANDLE process_id_t;
#include
#include
#include
+#ifndef __OS2__
#define O_BINARY 0
+#endif
#define INT64_FMT PRId64
typedef struct stat file_stat_t;
typedef pid_t process_id_t;
@@ -5152,6 +5161,28 @@ static void *mmap(void *addr, int64_t len, int prot, int flags, int fd,
#define MAP_FAILED NULL
#define MAP_PRIVATE 0
#define PROT_READ 0
+#elif defined(__OS2__)
+static void *mmap(void *addr, int64_t len, int prot, int flags, int fd,
+ int offset) {
+ void *p;
+ off_t curpos;
+
+ p = malloc(len);
+ if (!p)
+ return NULL;
+
+ curpos = lseek(fd, 0, SEEK_CUR);
+ lseek(fd, offset, SEEK_SET);
+ read(fd, p, len);
+ lseek(fd, curpos, SEEK_SET);
+
+ return p;
+}
+
+#define munmap(x, y) free(x)
+#define MAP_FAILED NULL
+#define MAP_PRIVATE 0
+#define PROT_READ 0
#else
#include
#endif
diff --git a/src/mame/audio/harddriv.c b/src/mame/audio/harddriv.c
index da3d51a96b9..a1aafc76405 100644
--- a/src/mame/audio/harddriv.c
+++ b/src/mame/audio/harddriv.c
@@ -39,8 +39,8 @@ void harddriv_state::hdsnd_init()
void harddriv_state::update_68k_interrupts()
{
- m_soundcpu->set_input_line(1, m_mainflag ? ASSERT_LINE : CLEAR_LINE);
- m_soundcpu->set_input_line(3, m_irq68k ? ASSERT_LINE : CLEAR_LINE);
+ if (m_soundcpu) m_soundcpu->set_input_line(1, m_mainflag ? ASSERT_LINE : CLEAR_LINE);
+ if (m_soundcpu) m_soundcpu->set_input_line(3, m_irq68k ? ASSERT_LINE : CLEAR_LINE);
}
@@ -82,8 +82,8 @@ WRITE16_MEMBER(harddriv_state::hd68k_snd_data_w)
WRITE16_MEMBER(harddriv_state::hd68k_snd_reset_w)
{
- m_soundcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
- m_soundcpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
+ if (m_soundcpu) m_soundcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
+ if (m_soundcpu) m_soundcpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
m_mainflag = m_soundflag = 0;
update_68k_interrupts();
logerror("%06X:Reset sound\n", space.device().safe_pcbase());
@@ -235,7 +235,7 @@ READ16_MEMBER(harddriv_state::hdsnd68k_320ports_r)
WRITE16_MEMBER(harddriv_state::hdsnd68k_320ports_w)
{
- m_sounddsp->space(AS_IO).write_word((offset & 7) << 1, data);
+ if (m_sounddsp) m_sounddsp->space(AS_IO).write_word((offset & 7) << 1, data);
}
diff --git a/src/mame/drivers/8080bw.c b/src/mame/drivers/8080bw.c
index 262741d7b4d..70bb3cffdc4 100644
--- a/src/mame/drivers/8080bw.c
+++ b/src/mame/drivers/8080bw.c
@@ -3361,6 +3361,22 @@ ROM_START( spaceat2 )
ROM_LOAD( "spaceatt.e", 0x1800, 0x0800, CRC(7cf6f604) SHA1(469557de15178c4b2d686e5724e1006f7c20d7a4) )
ROM_END
+ROM_START( galmonst )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "h.5m", 0x0000, 0x0400, CRC(8a0395e9) SHA1(f456aaa0301a1d0f3f9f45cbe39c5ff14909ecd3) )
+ ROM_LOAD( "g.5n", 0x0400, 0x0400, CRC(6183ed16) SHA1(8e0bc13cafa237daa5fdeda9a5d6df8f491eabc2) )
+ ROM_LOAD( "f.5p", 0x0800, 0x0400, CRC(b6047fdd) SHA1(bc324a9bf7829a2c2bb2bbf965d64272b0d07223) )
+ ROM_LOAD( "c.5t", 0x1400, 0x0400, CRC(e88e8c96) SHA1(43108ddb328914c68977c7c49b4c1f71073ca36b) )
+ ROM_LOAD( "b.5u", 0x1800, 0x0400, CRC(34678b80) SHA1(17f01facb3272c963a8bca290c4ca36411b8de31) )
+ ROM_LOAD( "a.5v", 0x1c00, 0x0400, CRC(05a6806b) SHA1(ea884110d0ea6463801cbc2f87ce9c4921b49e33) )
+ROM_END
+
+
+
+
+
+
+
ROM_START( spacecom )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "1f.ic67", 0x0000, 0x0400, BAD_DUMP CRC(703f2cbe) SHA1(b183f9fbedd8658399555c0ba21ecab6370e86cb) )
@@ -4680,6 +4696,7 @@ GAMEL(1979, cosmicm2, invaders, cosmicmo, cosmicmo, driver_device, 0, ROT270
GAMEL(1980?,sinvzen, invaders, invaders, sinvzen, driver_device, 0, ROT270, "Taito / Zenitone-Microsec Ltd.", "Super Invaders (Zenitone-Microsec)", GAME_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
GAMEL(1980, ultrainv, invaders, invaders, sicv, driver_device, 0, ROT270, "Taito / Konami", "Ultra Invaders", GAME_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
GAMEL(1978, spaceatt, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg (Video Games GmbH)", "Space Attack (bootleg of Space Invaders)", GAME_SUPPORTS_SAVE, layout_invaders )
+GAMEL(1978, galmonst, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg (Laguna S.A.)", "Galaxy Monsters (Laguna S.A. Spanish bootleg of Space Invaders)", GAME_SUPPORTS_SAVE, layout_invaders )
GAMEL(1980, spaceat2, invaders, invaders, spaceat2, driver_device, 0, ROT270, "bootleg (Video Games UK)", "Space Attack II (bootleg of Super Invaders)", GAME_SUPPORTS_SAVE, layout_invaders ) // bootleg of Zenitone-Microsec Super Invaders
GAMEL(1979, spacecom, invaders, spacecom, spacecom, _8080bw_state, spacecom, ROT270, "bootleg", "Space Combat (bootleg of Space Invaders)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_spacecom )
GAME( 1978, spacerng, invaders, spacerng, sitv, driver_device, 0, ROT90, "bootleg (Leisure Time Electronics)", "Space Ranger (bootleg of Space Invaders)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) // many modifications
diff --git a/src/mame/drivers/adp.c b/src/mame/drivers/adp.c
index cd1e660426e..7ed941ecb33 100644
--- a/src/mame/drivers/adp.c
+++ b/src/mame/drivers/adp.c
@@ -193,8 +193,25 @@ public:
DECLARE_PALETTE_INIT(fstation);
DECLARE_WRITE_LINE_MEMBER(duart_irq_handler);
//INTERRUPT_GEN_MEMBER(adp_int);
+ void skattva_nvram_init(nvram_device &nvram, void *base, size_t size);
};
+void adp_state::skattva_nvram_init(nvram_device &nvram, void *base, size_t size)
+{
+/*
+ 00F6FA: 4EB9 0001 A4B2 jsr $1a4b2.l
+ 00F700: 0CB8 2400 0018 E450 cmpi.l #$24000018, $e450.w
+ 00F708: 6606 bne $f710
+ 00F70A: 4EB9 0001 D7F4 jsr $1d7f4.l ; initializes the HD63484
+ 00F710: 11FC 0010 E8AD move.b #$10, $e8ad.w
+*/
+ UINT16 *ram = (UINT16 *)base;
+ ram[0x2450 >> 1] = 0x2400;
+ ram[0x2452 >> 1] = 0x0018;
+ ram[0x0000 >> 1] = 0x3141;
+ ram[0x0002 >> 1] = 0x5926;
+}
+
/***************************************************************************
@@ -277,6 +294,17 @@ static ADDRESS_MAP_START( skattv_mem, AS_PROGRAM, 16, adp_state )
AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram")
ADDRESS_MAP_END
+static ADDRESS_MAP_START( skattva_mem, AS_PROGRAM, 16, adp_state )
+ AM_RANGE(0x000000, 0x03ffff) AM_ROM
+ AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc",msm6242_device, read, write, 0x00ff)
+ AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("h63484", h63484_device, status_r, address_w)
+ AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("h63484", h63484_device, data_r, data_w)
+ AM_RANGE(0x800100, 0x800101) AM_READ_PORT("IN0")
+ AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too
+ AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff )
+ AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram")
+ADDRESS_MAP_END
+
static ADDRESS_MAP_START( quickjac_mem, AS_PROGRAM, 16, adp_state )
AM_RANGE(0x000000, 0x01ffff) AM_ROM
AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc",msm6242_device, read, write, 0x00ff)
@@ -313,7 +341,6 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( fstation_mem, AS_PROGRAM, 16, adp_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
- //400000-40001f?
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("h63484", h63484_device, status_r, address_w)
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("h63484", h63484_device, data_r, data_w)
AM_RANGE(0x800100, 0x800101) AM_READWRITE(input_r, input_w)
@@ -400,6 +427,28 @@ static INPUT_PORTS_START( skattv )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN1 )
INPUT_PORTS_END
+static INPUT_PORTS_START( skattva )
+ PORT_START("PA")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_HBLANK("screen")
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
+ PORT_BIT( 0x9e, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
+ PORT_START("IN0")
+ PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON3 )
+ PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
+ PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
+ PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
+ PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON2 )
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_START1 )
+ PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
+ PORT_START("DSW1")
+ PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNKNOWN )
+INPUT_PORTS_END
+
static INPUT_PORTS_START( fstation )
PORT_START("PA")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -527,6 +576,13 @@ static MACHINE_CONFIG_DERIVED( skattv, quickjac )
MCFG_CPU_PROGRAM_MAP(skattv_mem)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( skattva, quickjac )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(skattva_mem)
+
+ MCFG_NVRAM_REPLACE_CUSTOM_DRIVER("nvram", adp_state, skattva_nvram_init)
+MACHINE_CONFIG_END
+
static MACHINE_CONFIG_DERIVED( backgamn, skattv )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(backgamn_mem)
@@ -664,7 +720,7 @@ ROM_END
GAME( 1990, backgamn, 0, backgamn, skattv, driver_device, 0, ROT0, "ADP", "Backgammon", GAME_NOT_WORKING )
GAME( 1993, quickjac, 0, quickjac, quickjac, driver_device, 0, ROT0, "ADP", "Quick Jack", GAME_NOT_WORKING )
GAME( 1994, skattv, 0, skattv, skattv, driver_device, 0, ROT0, "ADP", "Skat TV", GAME_NOT_WORKING )
-GAME( 1995, skattva, skattv, skattv, skattv, driver_device, 0, ROT0, "ADP", "Skat TV (version TS3)", GAME_NOT_WORKING )
+GAME( 1995, skattva, skattv, skattva, skattva, driver_device, 0, ROT0, "ADP", "Skat TV (version TS3)", GAME_NOT_WORKING )
GAME( 1997, fashiong, 0, fashiong, skattv, driver_device, 0, ROT0, "ADP", "Fashion Gambler (set 1)", GAME_NOT_WORKING )
GAME( 1997, fashiong2, fashiong, fashiong, skattv, driver_device, 0, ROT0, "ADP", "Fashion Gambler (set 2)", GAME_NOT_WORKING )
GAME( 1999, funlddlx, 0, funland, skattv, driver_device, 0, ROT0, "Stella", "Funny Land de Luxe", GAME_NOT_WORKING )
diff --git a/src/mame/drivers/atarig1.c b/src/mame/drivers/atarig1.c
index 6eb7775bae4..5c16f59afed 100644
--- a/src/mame/drivers/atarig1.c
+++ b/src/mame/drivers/atarig1.c
@@ -428,6 +428,8 @@ static MACHINE_CONFIG_START( atarig1, atarig1_state )
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
+ MCFG_SLAPSTIC_ADD("slapstic")
+
MCFG_MACHINE_START_OVERRIDE(atarig1_state,atarig1)
MCFG_MACHINE_RESET_OVERRIDE(atarig1_state,atarig1)
diff --git a/src/mame/drivers/atarisy1.c b/src/mame/drivers/atarisy1.c
index e86a64be198..6b9c7636357 100644
--- a/src/mame/drivers/atarisy1.c
+++ b/src/mame/drivers/atarisy1.c
@@ -713,6 +713,8 @@ static MACHINE_CONFIG_START( atarisy1, atarisy1_state )
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
+ MCFG_SLAPSTIC_ADD("slapstic")
+
MCFG_CPU_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8)
MCFG_CPU_PROGRAM_MAP(sound_map)
diff --git a/src/mame/drivers/atarisy2.c b/src/mame/drivers/atarisy2.c
index 9b42d5d8519..5a94bf0defb 100644
--- a/src/mame/drivers/atarisy2.c
+++ b/src/mame/drivers/atarisy2.c
@@ -126,7 +126,6 @@
#include "emu.h"
-#include "includes/slapstic.h"
#include "includes/atarisy2.h"
#include "sound/tms5220.h"
#include "sound/2151intf.h"
@@ -222,7 +221,7 @@ MACHINE_START_MEMBER(atarisy2_state,atarisy2)
MACHINE_RESET_MEMBER(atarisy2_state,atarisy2)
{
atarigen_state::machine_reset();
- slapstic_reset();
+ m_slapstic->slapstic_reset();
scanline_timer_reset(*m_screen, 64);
m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(atarisy2_state::atarisy2_direct_handler), this));
@@ -1208,6 +1207,8 @@ static MACHINE_CONFIG_START( atarisy2, atarisy2_state )
MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, (double)MASTER_CLOCK/2/16/16/16/10)
+ MCFG_SLAPSTIC_ADD("slapstic")
+
MCFG_MACHINE_START_OVERRIDE(atarisy2_state,atarisy2)
MCFG_MACHINE_RESET_OVERRIDE(atarisy2_state,atarisy2)
@@ -3143,7 +3144,7 @@ DRIVER_INIT_MEMBER(atarisy2_state,paperboy)
int i;
UINT8 *cpu1 = memregion("maincpu")->base();
- slapstic_init(machine(), 105);
+ m_slapstic->slapstic_init(machine(), 105);
/* expand the 16k program ROMs into full 64k chunks */
for (i = 0x10000; i < 0x90000; i += 0x20000)
@@ -3164,7 +3165,7 @@ DRIVER_INIT_MEMBER(atarisy2_state,720)
/* without the default EEPROM, 720 hangs at startup due to communication
issues with the sound CPU; temporarily increasing the sound CPU frequency
to ~2.2MHz "fixes" the problem */
- slapstic_init(machine(), 107);
+ m_slapstic->slapstic_init(machine(), 107);
m_pedal_count = -1;
m_has_tms5220 = 1;
@@ -3177,7 +3178,7 @@ DRIVER_INIT_MEMBER(atarisy2_state,ssprint)
int i;
UINT8 *cpu1 = memregion("maincpu")->base();
- slapstic_init(machine(), 108);
+ m_slapstic->slapstic_init(machine(), 108);
/* expand the 32k program ROMs into full 64k chunks */
for (i = 0x10000; i < 0x90000; i += 0x20000)
@@ -3193,7 +3194,7 @@ DRIVER_INIT_MEMBER(atarisy2_state,csprint)
int i;
UINT8 *cpu1 = memregion("maincpu")->base();
- slapstic_init(machine(), 109);
+ m_slapstic->slapstic_init(machine(), 109);
/* expand the 32k program ROMs into full 64k chunks */
for (i = 0x10000; i < 0x90000; i += 0x20000)
@@ -3206,7 +3207,7 @@ DRIVER_INIT_MEMBER(atarisy2_state,csprint)
DRIVER_INIT_MEMBER(atarisy2_state,apb)
{
- slapstic_init(machine(), 110);
+ m_slapstic->slapstic_init(machine(), 110);
m_pedal_count = 2;
m_has_tms5220 = 1;
diff --git a/src/mame/drivers/atetris.c b/src/mame/drivers/atetris.c
index 6d51ace6ef9..4e39cf7ae9d 100644
--- a/src/mame/drivers/atetris.c
+++ b/src/mame/drivers/atetris.c
@@ -49,7 +49,6 @@
#include "emu.h"
#include "cpu/m6502/m6502.h"
-#include "includes/slapstic.h"
#include "includes/atetris.h"
#include "sound/sn76496.h"
#include "sound/pokey.h"
@@ -115,8 +114,8 @@ void atetris_state::machine_start()
void atetris_state::machine_reset()
{
/* reset the slapstic */
- slapstic_reset();
- m_current_bank = slapstic_bank() & 1;
+ m_slapstic_device->slapstic_reset();
+ m_current_bank = m_slapstic_device->slapstic_bank() & 1;
reset_bank();
/* start interrupts going (32V clocked by 16V) */
@@ -134,7 +133,7 @@ void atetris_state::machine_reset()
READ8_MEMBER(atetris_state::atetris_slapstic_r)
{
int result = m_slapstic_base[0x2000 + offset];
- int new_bank = slapstic_tweak(space, offset) & 1;
+ int new_bank = m_slapstic_device->slapstic_tweak(space, offset) & 1;
/* update for the new bank */
if (new_bank != m_current_bank)
@@ -308,6 +307,8 @@ static MACHINE_CONFIG_START( atetris, atetris_state )
MCFG_CPU_ADD("maincpu", M6502,MASTER_CLOCK/8)
MCFG_CPU_PROGRAM_MAP(main_map)
+ MCFG_SLAPSTIC_ADD("slapstic")
+
MCFG_NVRAM_ADD_1FILL("nvram")
/* video hardware */
@@ -456,7 +457,7 @@ DRIVER_INIT_MEMBER(atetris_state,atetris)
{
UINT8 *rgn = memregion("maincpu")->base();
- slapstic_init(machine(), 101);
+ m_slapstic_device->slapstic_init(machine(), 101);
m_slapstic_source = &rgn[0x10000];
m_slapstic_base = &rgn[0x04000];
}
diff --git a/src/mame/drivers/bagman.c b/src/mame/drivers/bagman.c
index 20ae3877ca6..fb662795fe9 100644
--- a/src/mame/drivers/bagman.c
+++ b/src/mame/drivers/bagman.c
@@ -256,10 +256,18 @@ static INPUT_PORTS_START( pickin )
PORT_DIPSETTING( 0x00, DEF_STR( French ) )
INPUT_PORTS_END
-static INPUT_PORTS_START( botanic )
+static INPUT_PORTS_START( botanicf )
PORT_INCLUDE( bagman )
PORT_MODIFY("DSW")
+ PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x03, "2" )
+ PORT_DIPSETTING( 0x02, "3" )
+ PORT_DIPSETTING( 0x01, "4" )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:3")
+ PORT_DIPSETTING( 0x00, "1C/1C 1C/2C 1C/6C 1C/14C" )
+ PORT_DIPSETTING( 0x04, "2C/1C 1C/2C 1C/3C 1C/7C" )
PORT_DIPNAME( 0x08, 0x08, "Invulnerability Fruits" ) PORT_DIPLOCATION("SW1:4")
PORT_DIPSETTING( 0x08, "3" )
PORT_DIPSETTING( 0x00, DEF_STR( None ) )
@@ -268,6 +276,27 @@ static INPUT_PORTS_START( botanic )
PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW1:7" )
INPUT_PORTS_END
+static INPUT_PORTS_START( botanici )
+ PORT_INCLUDE( botanicf )
+
+ PORT_MODIFY("P2") // only seems to have 2 coin slots
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_MODIFY("DSW") // dipswitches are a bit messy on this set
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:3")
+ PORT_DIPSETTING( 0x00, "1C/1C 1C/2C" )
+ PORT_DIPSETTING( 0x04, "2C/1C 1C/2C" )
+ PORT_DIPNAME( 0x18, 0x18, "Invulnerability Fruits" ) PORT_DIPLOCATION("SW1:4,5")
+ PORT_DIPSETTING( 0x00, "2" )
+ PORT_DIPSETTING( 0x08, "3" )
+ PORT_DIPSETTING( 0x10, "3 (duplicate 1)" )
+ PORT_DIPSETTING( 0x18, "3 (duplicate 2)" )
+ PORT_DIPNAME( 0x20, 0x20, "Language / Disable Invlunerability Fruits" ) PORT_DIPLOCATION("SW1:6") // changing this off, even in game, seems to remove all fruits you have?
+ PORT_DIPSETTING( 0x20, "Fruits On, English" )
+ PORT_DIPSETTING( 0x00, "Fruits Off, Spanish" )
+INPUT_PORTS_END
+
static INPUT_PORTS_START( squaitsa )
PORT_START("P1")
@@ -834,7 +863,32 @@ ROM_START( pickin )
ROM_LOAD( "6331-1.3r", 0x0020, 0x0020, CRC(14ee1603) SHA1(f3c071399606b727ae7dd0bfc21e1c6ca2d43c7c) )
ROM_END
+
+
+
ROM_START( botanic )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "5.9e", 0x0000, 0x1000, CRC(907f01c7) SHA1(156b6b6bbc2176998fb0c18ad453fc42185ae490) )
+ ROM_LOAD( "06.9f", 0x1000, 0x1000, CRC(ff2533fb) SHA1(808a1555c16470b87fca0aea73e0291dbe0b9355) )
+ ROM_LOAD( "07.9j", 0x2000, 0x1000, CRC(b7c544ef) SHA1(75b5224c313e97c2c02ca7e9bc3f682278cb7a5c) )
+ ROM_LOAD( "08.9k", 0x3000, 0x1000, CRC(2df22793) SHA1(d1f27c915e7563abba4d14ec3fd6757a4d6137be) )
+ ROM_LOAD( "09.9m", 0x4000, 0x1000, CRC(f7d908ec) SHA1(ee5827f84505c1f37bebf48181d3e7759421fada) )
+ ROM_LOAD( "10.9n", 0x5000, 0x1000, CRC(7ce9fbc8) SHA1(cd2ba01470964640fad9ccf6ff23cbd76c0c2aeb) )
+
+ ROM_REGION( 0x2000, "gfx1", 0 )
+ ROM_LOAD( "2.1e", 0x0000, 0x1000, CRC(bea449a6) SHA1(fe06208996d15a4d50753fb62a3020063a0a6620) )
+ ROM_LOAD( "4.1j", 0x1000, 0x1000, CRC(a5deb8ed) SHA1(b6b38daffdda263a366656168a6d094ad2b1458f) )
+
+ ROM_REGION( 0x2000, "gfx2", 0 )
+ ROM_LOAD( "1.1c", 0x0000, 0x1000, CRC(a1148d89) SHA1(b1424693cebc410749216457d07bae54b903bc07) )
+ ROM_LOAD( "3.1f", 0x1000, 0x1000, CRC(70be5565) SHA1(a7eab667a82d3e7321f393073f29c6e5e865ec6b) )
+
+ ROM_REGION( 0x0040, "proms", 0 )
+ ROM_LOAD( "prom.3p", 0x0000, 0x0020, CRC(a8a2ddd2) SHA1(fc2da863d13e92f7682f393a08bc9357841ae7ea) )
+ ROM_LOAD( "prom.3r", 0x0020, 0x0020, CRC(edf88f34) SHA1(b9c342d51303d552f87df2543a34e38c30acd07c) )
+ROM_END
+
+ROM_START( botanicf )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "bota_05.9e", 0x0000, 0x1000, CRC(cc66e6f8) SHA1(251481b16f8925a11f02f49e5a79f6524460aa6c) )
ROM_LOAD( "bota_06.9f", 0x1000, 0x1000, CRC(59892f41) SHA1(eb01601a9163679560b878366aaf7cc0fb54a3e9) )
@@ -934,6 +988,7 @@ GAME( 1984, sbagmans, sbagman, bagman, sbagman, driver_device, 0, ROT270,
GAME( 1983, pickin, 0, pickin, pickin, driver_device, 0, ROT270, "Valadon Automation", "Pickin'", 0 )
-GAME( 1984, botanic, 0, botanic, botanic, driver_device, 0, ROT270, "Itisa (Valadon Automation license)", "Botanic (French)", 0 ) // the game was made by Itisa, there is a Spanish original (not yet dumped)
+GAME( 1983, botanic, 0, botanic, botanici,driver_device, 0, ROT90, "Itisa", "Botanic (English / Spanish)", 0 )
+GAME( 1984, botanicf, botanic, botanic, botanicf,driver_device, 0, ROT270, "Itisa (Valadon Automation license)", "Botanic (French)", 0 )
GAME( 1984, squaitsa, 0, squaitsa,squaitsa, driver_device,0, ROT0, "Itisa", "Squash (Itisa)", 0 )
diff --git a/src/mame/drivers/beaminv.c b/src/mame/drivers/beaminv.c
index ed9e128ec01..e015621efaf 100644
--- a/src/mame/drivers/beaminv.c
+++ b/src/mame/drivers/beaminv.c
@@ -1,6 +1,6 @@
/***************************************************************************
- Tekunon Kougyou Beam Invader hardware
+ Tekunon Kougyou(Teknon Kogyo) Beam Invader hardware
driver by Zsolt Vasvari
@@ -385,5 +385,5 @@ ROM_END
*
*************************************/
-GAMEL( 1979, beaminv, 0, beaminv, beaminv, driver_device, 0, ROT270, "Tekunon Kougyou", "Beam Invader", GAME_NO_SOUND | GAME_SUPPORTS_SAVE, layout_beaminv )
+GAMEL( 1979, beaminv, 0, beaminv, beaminv, driver_device, 0, ROT270, "Teknon Kogyo", "Beam Invader", GAME_NO_SOUND | GAME_SUPPORTS_SAVE, layout_beaminv )
GAMEL( 1979, pacominv, beaminv, beaminv, pacominv, driver_device, 0, ROT270, "Pacom Corporation", "Pacom Invader", GAME_NO_SOUND | GAME_SUPPORTS_SAVE, layout_beaminv )
diff --git a/src/mame/drivers/calchase.c b/src/mame/drivers/calchase.c
index 5672fd5eca5..4b5f0256bf2 100644
--- a/src/mame/drivers/calchase.c
+++ b/src/mame/drivers/calchase.c
@@ -121,12 +121,13 @@ something wrong in the disk geometry reported by calchase.chd (20,255,63) since
#include "emu.h"
#include "cpu/i386/i386.h"
-#include "machine/pci.h"
+#include "machine/lpci.h"
#include "machine/pckeybrd.h"
#include "machine/idectrl.h"
#include "video/pc_vga.h"
#include "sound/dac.h"
#include "machine/pcshare.h"
+#include "machine/ds128x.h"
#include "bus/isa/trident.h"
@@ -661,6 +662,11 @@ static MACHINE_CONFIG_START( calchase, calchase_state )
/* video hardware */
MCFG_FRAGMENT_ADD( pcvideo_trident_vga )
+ MCFG_DEVICE_REMOVE("rtc")
+ MCFG_DS12885_ADD("rtc")
+ MCFG_MC146818_IRQ_HANDLER(DEVWRITELINE("pic8259_2", pic8259_device, ir0_w))
+ MCFG_MC146818_CENTURY_INDEX(0x32)
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker","rspeaker")
MCFG_DAC_ADD("dac_l")
diff --git a/src/mame/drivers/cclimber.c b/src/mame/drivers/cclimber.c
index d05a2babcf9..fbabbf700f0 100644
--- a/src/mame/drivers/cclimber.c
+++ b/src/mame/drivers/cclimber.c
@@ -1788,6 +1788,37 @@ ROM_START( dking )
ROM_END
+ROM_START( ckongdks )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ck13.bin", 0x0800, 0x0800, CRC(f97ba8ae) SHA1(ae4a578ad77a8d3252f2f99a1afa6f38bc00471e) ) // 97.509766%
+ ROM_CONTINUE( 0x0000, 0x0800 )
+ ROM_LOAD( "ck09.bin", 0x1000, 0x1000, CRC(fe89dea4) SHA1(c39372ebe9950808ebc1ff7909c291496b206026) )
+ ROM_LOAD( "ck11.bin", 0x2000, 0x1000, CRC(b3947d06) SHA1(1c5e66e1f11313e11de760cda406c1fe237ce09a) ) // 99.975586%
+ ROM_LOAD( "ck12.bin", 0x3000, 0x1000, CRC(23d0657d) SHA1(dfebf3902186a3ab3b36c6d07bdbc832885347b4) ) // 95.214844%
+ ROM_LOAD( "ck10.bin", 0x4800, 0x0800, CRC(c27a13f1) SHA1(14f11976bc0e643829a4d4d2d5bb27971979be6f) ) // 94.921875%
+ ROM_CONTINUE( 0x4000, 0x0800 )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "ck06.bin", 0x0000, 0x1000, CRC(a8916dc8) SHA1(472520aae3837e6026f2a7577d3b2aff371a316c) )
+ ROM_LOAD( "ck05.bin", 0x1000, 0x1000, CRC(cd3b5dde) SHA1(2319a2be04d70989b01f4fc703756ba6e1c1f388) )
+ ROM_LOAD( "ck04.bin", 0x2000, 0x1000, CRC(b62a0367) SHA1(8c285cbc714d7e6589bd63b3cef7c841ed1c2a4e) )
+ ROM_LOAD( "ck03.bin", 0x3000, 0x1000, CRC(61122c5e) SHA1(978b6dbec35f3adc651fddf332db17625099a92e) )
+
+ ROM_REGION( 0x1000, "gfx2", 0 )
+ ROM_LOAD( "ck02.bin", 0x0000, 0x0800, CRC(085b5f90) SHA1(cce771fbd76c2bc7749325d71c95810898e5b0d9) ) // 98.730469%
+ ROM_LOAD( "ck01.bin", 0x0800, 0x0800, CRC(16fd47e2) SHA1(43e5ea70e99482db90681e401a7e1e2d2d36b6f4) ) // 98.339844%
+
+ ROM_REGION( 0x0160, "proms", 0 ) // not dumped, assuming to be the same as dking
+ ROM_LOAD( "ck6v.bin", 0x0000, 0x0020, CRC(751c3325) SHA1(edce2bc883996c1d72dc6c1c9f62799b162d415a) ) // 82s123.1v
+ ROM_LOAD( "ck6u.bin", 0x0020, 0x0020, CRC(ab1940fa) SHA1(8d98e05cbaa6f55770c12e0a9a8ed9c73cc54423) ) // 82s123.1u
+ ROM_LOAD( "ck6t.bin", 0x0040, 0x0020, CRC(b4e827a5) SHA1(31a5a5ad54417a474d22bb16c473415d99a2b6f1) ) // 82s123.1t
+ ROM_LOAD( "82s129.5g", 0x0060, 0x0100, CRC(9e11550d) SHA1(b8cba8e16e10e23fba1f11551102ab77b680bdf0) ) // Decryption Table?
+
+ ROM_REGION( 0x2000, "samples", 0 ) /* samples */
+ ROM_LOAD( "ck08.bin", 0x0000, 0x1000, CRC(31c0a7de) SHA1(ace23fde4cb3c336b8377c1a1e940607d545e8c3) ) // 97.241211%
+ ROM_LOAD( "ck07.bin", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
+ROM_END
+
/* This set came from a 'Silver Land' board with Silver Land GFX roms, however, the program roms are nearly
the same as River Patrol but appear to have an original ORCA copyright
@@ -2363,7 +2394,8 @@ GAME( 1980, cclimbroper, cclimber, cclimber, cclimber, driver_device, 0,
GAME( 1981, ckong, 0, cclimber, ckong, driver_device, 0, ROT270, "Kyoei / Falcon", "Crazy Kong", 0 ) // on a Falcon FCK-01 PCB, but doesn't display any Falcon copyright
GAME( 1981, ckongalc, ckong, cclimber, ckong, driver_device, 0, ROT270, "bootleg (Alca)", "Crazy Kong (Alca bootleg)", 0 )
GAME( 1981, monkeyd, ckong, cclimber, ckong, driver_device, 0, ROT270, "bootleg", "Monkey Donkey", 0 )
-GAME( 1981, dking, ckong , cclimber, ckong, cclimber_state, dking, ROT270, "bootleg", "Donkey King", 0 )
+GAME( 1981, dking, ckong, cclimber, ckong, cclimber_state, dking, ROT270, "bootleg", "Donkey King", 0 )
+GAME( 1981, ckongdks, ckong, cclimber, ckong, cclimber_state, dking, ROT270, "bootleg", "Donkey Kong (Spanish Crazy Kong bootleg)", 0 )
/* these sets have correct colours, and also contain the graphics used for the extra attract screen in the BG roms, but it is unused
- the Falcon logo in the text roms is still unused
diff --git a/src/mame/drivers/chihiro.c b/src/mame/drivers/chihiro.c
index 09513f3e383..b59273997ba 100644
--- a/src/mame/drivers/chihiro.c
+++ b/src/mame/drivers/chihiro.c
@@ -358,7 +358,7 @@ Thanks to Alex, Mr Mudkips, and Philip Burke for this info.
#include "emu.h"
#include "cpu/i386/i386.h"
-#include "machine/pci.h"
+#include "machine/lpci.h"
#include "machine/pic8259.h"
#include "machine/pit8253.h"
#include "machine/idectrl.h"
diff --git a/src/mame/drivers/cobra.c b/src/mame/drivers/cobra.c
index 2dc25d4bc10..f6ec50c7432 100644
--- a/src/mame/drivers/cobra.c
+++ b/src/mame/drivers/cobra.c
@@ -313,7 +313,7 @@
#include "emu.h"
#include "cpu/powerpc/ppc.h"
-#include "machine/pci.h"
+#include "machine/lpci.h"
#include "machine/ataintf.h"
#include "machine/idehd.h"
#include "machine/jvshost.h"
diff --git a/src/mame/drivers/coolridr.c b/src/mame/drivers/coolridr.c
index 52a400c8eb1..98ed5b45bd0 100644
--- a/src/mame/drivers/coolridr.c
+++ b/src/mame/drivers/coolridr.c
@@ -18,17 +18,20 @@
- i8237 purpose is unknown (missing ROM for comms?).
- verify zooming etc. our current algorithm is a bit ugly for text
-
+ Also known to exist on this hardware is Aqua Stage (Coin pusher):
+ 833-12000 AQUA STAGE
+ Program roms EPR-18279 through EPR-18282
+ 12 MASK roms (MPR numbers unknown)
+ SUB CPU program rom EPR-18278
=======================================================================================================
Cool Riders
Sega 1994
-This game runs on SYSTEM-H1 hardware. Only one known game exists on this
-PCB and this is it. The hardware seems overly complex for a 2D bike
-racing game? The design of the PCB is very similar to vanilla Model 2
-(i.e. Daytona etc). However instead of fully custom-badged chips,
-many of the custom chips are off-the-shelf Hitachi/Toshiba gate-arrays.
+This game runs on SYSTEM-H1 hardware. The hardware seems overly complex for a
+2D bike racing game? The design of the PCB is very similar to vanilla Model 2
+(i.e. Daytona etc). However instead of fully custom-badged chips, many of the
+custom chips are off-the-shelf Hitachi/Toshiba gate-arrays.
PCB Layouts
diff --git a/src/mame/drivers/cps1.c b/src/mame/drivers/cps1.c
index f8af1c4c607..1bd2918c13c 100644
--- a/src/mame/drivers/cps1.c
+++ b/src/mame/drivers/cps1.c
@@ -4002,7 +4002,7 @@ ROM_START( striderjr )
ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
ROM_REGION( 0x0200, "bboardplds", 0 )
- ROM_LOAD( "sth63b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "sth63b.1a", 0x0000, 0x0117, BAD_DUMP CRC(c706b773) SHA1(ddfe2e747637eec081a5125cfefcb478a4ba9e76) ) /* Handcrafted but works on actual PCB. Redump needed */
ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
@@ -4483,7 +4483,7 @@ ROM_START( area88r )
ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
ROM_REGION( 0x0200, "bboardplds", 0 )
- ROM_LOAD( "ara63b.1a", 0x0000, 0x0117, NO_DUMP )
+ ROM_LOAD( "ara63b.1a", 0x0000, 0x0117, BAD_DUMP CRC(f5569c93) SHA1(7db7cf23639036590eef1e5e309f08560859efaf) ) /* Handcrafted but works on actual PCB. Redump needed */
ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
diff --git a/src/mame/drivers/cv1k.c b/src/mame/drivers/cv1k.c
index 5177b9ecf83..5b09619e1a9 100644
--- a/src/mame/drivers/cv1k.c
+++ b/src/mame/drivers/cv1k.c
@@ -514,7 +514,6 @@ ROM_START( mushisama )
ROM_RELOAD(0x200000,0x200000)
ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF)
-// ROM_LOAD("mushisama_u2", 0x000000, 0x8400000, CRC(f1e0cf65) SHA1(d00d950422309fdf08efe1e2d5f040beb45ee6fb) ) // bad rom, one corrupt asset vs. below
ROM_LOAD("mushisam_u2", 0x000000, 0x8400000, CRC(4f0a842a) SHA1(33f3550ec676a7088b6348cd72c16cc6594afb84) ) /* (2004/10/12.MASTER VER.) */
ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF)
@@ -528,7 +527,6 @@ ROM_START( mushisamb )
ROM_RELOAD(0x200000,0x200000)
ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF)
-// ROM_LOAD("mushisamb_u2", 0x000000, 0x8400000, CRC(6cc9d1a9) SHA1(17907798dce1defadd10354cec6c8d364e045570) ) // bad rom, one corrupt asset vs. below
ROM_LOAD("mushisam_u2", 0x000000, 0x8400000, CRC(4f0a842a) SHA1(33f3550ec676a7088b6348cd72c16cc6594afb84) ) /* (2004/10/12.MASTER VER.) */
ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF)
@@ -616,7 +614,20 @@ ROM_START( futari10 )
ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(c631a766) SHA1(8bb6934a2f5b8a9841c3dcf85192b1743773dd8b) )
ROM_END
-ROM_START( futaribl )
+ROM_START( futaribl ) /* Title screen shows (c) 2007 despite the 2009 "master" date - Also prints "Another Ver" to the title screen */
+ ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD16_WORD_SWAP( "futaribli_u4", 0x000000, 0x200000, CRC(1971dd16) SHA1(e75993f2978cbaaf925b4b8bb33d094a5a7cebf0) )
+ ROM_RELOAD(0x200000,0x200000)
+
+ ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF)
+ ROM_LOAD( "futariblk_u2", 0x000000, 0x8400000, CRC(08c6fd62) SHA1(e1fc386b2b0e41906c724287cbf82304297e0150) )
+
+ ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF)
+ ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(39f1e1f4) SHA1(53d12f59a56df35c705408c76e6e02118da656f1) )
+ ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(c631a766) SHA1(8bb6934a2f5b8a9841c3dcf85192b1743773dd8b) )
+ROM_END
+
+ROM_START( futariblj )
ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD16_WORD_SWAP( "futariblk_u4", 0x000000, 0x200000, CRC(6db13c62) SHA1(6a53ce7f70b754936ccbb3a4674d4b2f03979644) ) /* (2007/12/11 BLACK LABEL VER) */
ROM_RELOAD(0x200000,0x200000)
@@ -844,50 +855,51 @@ DRIVER_INIT_MEMBER(cv1k_state,espgal2)
// The black label versions are intentionally not set as clones, they were re-releases with different game codes, not bugfixes.
// CA011 Mushihime-Sama
-GAME( 2004, mushisam, 0, cv1k, cv1k, cv1k_state, mushisama, ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12.MASTER VER.)", 0 )
-GAME( 2004, mushisama, mushisam, cv1k, cv1k, cv1k_state, mushisam, ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12 MASTER VER.)", 0 )
-GAME( 2004, mushisamb, mushisam, cv1k, cv1k, cv1k_state, mushisama, ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12 MASTER VER)", 0 )
+GAME( 2004, mushisam, 0, cv1k, cv1k, cv1k_state, mushisama, ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12.MASTER VER.)", 0 )
+GAME( 2004, mushisama, mushisam, cv1k, cv1k, cv1k_state, mushisam, ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12 MASTER VER.)", 0 )
+GAME( 2004, mushisamb, mushisam, cv1k, cv1k, cv1k_state, mushisama, ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12 MASTER VER)", 0 )
// CA012 Ibara
-GAME( 2005, ibara, 0, cv1k, cv1k, cv1k_state, mushisam, ROT270, "Cave (AMI license)", "Ibara (2005/03/22 MASTER VER..)", 0 )
+GAME( 2005, ibara, 0, cv1k, cv1k, cv1k_state, mushisam, ROT270, "Cave (AMI license)", "Ibara (2005/03/22 MASTER VER..)", 0 )
// CA012B Ibara Kuro Black Label
-GAME( 2006, ibarablk, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Ibara Kuro Black Label (2006/02/06. MASTER VER.)", 0 )
-GAME( 2006, ibarablka, ibarablk, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Ibara Kuro Black Label (2006/02/06 MASTER VER.)", 0 )
+GAME( 2006, ibarablk, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Ibara Kuro Black Label (2006/02/06. MASTER VER.)", 0 )
+GAME( 2006, ibarablka, ibarablk, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Ibara Kuro Black Label (2006/02/06 MASTER VER.)", 0 )
// CA013 Espgaluda II
-GAME( 2005, espgal2, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Espgaluda II (2005/11/14 MASTER VER)", 0 )
+GAME( 2005, espgal2, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Espgaluda II (2005/11/14 MASTER VER)", 0 )
// CA??? Puzzle! Mushihime-Tama
-GAME( 2005, mushitam, 0, cv1k, cv1k, cv1k_state, mushisam, ROT0, "Cave (AMI license)", "Puzzle! Mushihime-Tama (2005/09/09.MASTER VER)", 0 )
-GAME( 2005, mushitama, mushitam, cv1k, cv1k, cv1k_state, mushisam, ROT0, "Cave (AMI license)", "Puzzle! Mushihime-Tama (2005/09/09 MASTER VER)", 0 )
+GAME( 2005, mushitam, 0, cv1k, cv1k, cv1k_state, mushisam, ROT0, "Cave (AMI license)", "Puzzle! Mushihime-Tama (2005/09/09.MASTER VER)", 0 )
+GAME( 2005, mushitama, mushitam, cv1k, cv1k, cv1k_state, mushisam, ROT0, "Cave (AMI license)", "Puzzle! Mushihime-Tama (2005/09/09 MASTER VER)", 0 )
// CA014 Pink Sweets: Ibara Sorekara
-GAME( 2006, pinkswts, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER....)", 0 )
-GAME( 2006, pinkswtsa, pinkswts, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER...)", 0 )
-GAME( 2006, pinkswtsb, pinkswts, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER.)", 0 )
-GAME( 2006, pinkswtsx, pinkswts, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/xx/xx MASTER VER.)", 0 ) // defaults to freeplay, possibly bootlegged from show/dev version?
+GAME( 2006, pinkswts, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER....)", 0 )
+GAME( 2006, pinkswtsa, pinkswts, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER...)", 0 )
+GAME( 2006, pinkswtsb, pinkswts, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER.)", 0 )
+GAME( 2006, pinkswtsx, pinkswts, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/xx/xx MASTER VER.)", 0 ) // defaults to freeplay, possibly bootlegged from show/dev version?
// CA015 Mushihime-Sama Futari
-GAME( 2006, futari15, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.5 (2006/12/8.MASTER VER. 1.54.)", 0 )
-GAME( 2006, futari15a, futari15, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.5 (2006/12/8 MASTER VER 1.54)", 0 )
-GAME( 2006, futari10, futari15, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.0 (2006/10/23 MASTER VER.)", 0 )
+GAME( 2006, futari15, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.5 (2006/12/8.MASTER VER. 1.54.)", 0 )
+GAME( 2006, futari15a, futari15, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.5 (2006/12/8 MASTER VER 1.54)", 0 )
+GAME( 2006, futari10, futari15, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.0 (2006/10/23 MASTER VER.)", 0 )
// CA016 Muchi Muchi Pork!
-GAME( 2007, mmpork, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Muchi Muchi Pork! (2007/ 4/17 MASTER VER.)", 0 )
+GAME( 2007, mmpork, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Muchi Muchi Pork! (2007/ 4/17 MASTER VER.)", 0 )
// CA015B Mushihime-Sama Futari Black Label
-GAME( 2007, futaribl, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Black Label (2007/12/11 BLACK LABEL VER)", 0 )
+GAME( 2007, futaribl, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Black Label (2009/11/27 INTERNATIONAL BL)", 0 )
+GAME( 2007, futariblj, futaribl, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Black Label (2007/12/11 BLACK LABEL VER)", 0 )
// CA017 Deathsmiles
-GAME( 2007, deathsml, 0, cv1k, cv1k, cv1k_state, espgal2, ROT0, "Cave (AMI license)", "Deathsmiles (2007/10/09 MASTER VER)", 0 )
+GAME( 2007, deathsml, 0, cv1k, cv1k, cv1k_state, espgal2, ROT0, "Cave (AMI license)", "Deathsmiles (2007/10/09 MASTER VER)", 0 )
// CA017B Deathsmiles Black Label
-GAME( 2008, dsmbl, 0, cv1k_d, cv1k, cv1k_state, espgal2, ROT0, "Cave (AMI license)", "Deathsmiles MegaBlack Label (2008/10/06 MEGABLACK LABEL VER)", 0 )
+GAME( 2008, dsmbl, 0, cv1k_d, cv1k, cv1k_state, espgal2, ROT0, "Cave (AMI license)", "Deathsmiles MegaBlack Label (2008/10/06 MEGABLACK LABEL VER)", 0 )
// CA019 Do-Don-Pachi Dai-Fukkatsu
-GAME( 2008, ddpdfk, 0, cv1k_d, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Ver 1.5 (2008/06/23 MASTER VER 1.5)", 0 )
-GAME( 2008, ddpdfk10, ddpdfk, cv1k_d, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Ver 1.0 (2008/05/16 MASTER VER)", 0 )
+GAME( 2008, ddpdfk, 0, cv1k_d, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Ver 1.5 (2008/06/23 MASTER VER 1.5)", 0 )
+GAME( 2008, ddpdfk10, ddpdfk, cv1k_d, cv1k, cv1k_state, espgal2, ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Ver 1.0 (2008/05/16 MASTER VER)", 0 )
// CMDL01 Medal Mahjong Moukari Bancho
-GAME( 2007, mmmbanc, 0, cv1k, cv1k, cv1k_state, espgal2, ROT0, "Cave (AMI license)", "Medal Mahjong Moukari Bancho (2007/06/05 MASTER VER.)", GAME_NOT_WORKING )
+GAME( 2007, mmmbanc, 0, cv1k, cv1k, cv1k_state, espgal2, ROT0, "Cave (AMI license)", "Medal Mahjong Moukari Bancho (2007/06/05 MASTER VER.)", GAME_NOT_WORKING )
diff --git a/src/mame/drivers/cyberbal.c b/src/mame/drivers/cyberbal.c
index e595b7a7461..138bdb6d9b6 100644
--- a/src/mame/drivers/cyberbal.c
+++ b/src/mame/drivers/cyberbal.c
@@ -389,6 +389,8 @@ static MACHINE_CONFIG_START( cyberbal, cyberbal_state )
MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
MCFG_CPU_PROGRAM_MAP(main_map)
+ MCFG_SLAPSTIC_ADD("slapstic")
+
MCFG_CPU_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8)
MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, (double)ATARI_CLOCK_14MHz/4/4/16/16/14)
diff --git a/src/mame/drivers/fruitpc.c b/src/mame/drivers/fruitpc.c
index c326897f676..69e0e84dc0c 100644
--- a/src/mame/drivers/fruitpc.c
+++ b/src/mame/drivers/fruitpc.c
@@ -13,7 +13,7 @@
#include "emu.h"
#include "cpu/i386/i386.h"
-#include "machine/pci.h"
+#include "machine/lpci.h"
#include "machine/pckeybrd.h"
#include "machine/idectrl.h"
#include "video/pc_vga.h"
diff --git a/src/mame/drivers/funkball.c b/src/mame/drivers/funkball.c
index 0e0530077dd..d96872f921c 100644
--- a/src/mame/drivers/funkball.c
+++ b/src/mame/drivers/funkball.c
@@ -71,7 +71,7 @@ Notes:
#include "emu.h"
#include "cpu/i386/i386.h"
-#include "machine/pci.h"
+#include "machine/lpci.h"
#include "machine/pckeybrd.h"
#include "machine/idectrl.h"
#include "video/voodoo.h"
diff --git a/src/mame/drivers/funworld.c b/src/mame/drivers/funworld.c
index 569fcfe1d22..f27c3e12cfb 100644
--- a/src/mame/drivers/funworld.c
+++ b/src/mame/drivers/funworld.c
@@ -6352,8 +6352,9 @@ DRIVER_INIT_MEMBER(funworld_state, rcdino4)
}
j = 1;
+ i = 0x81;
- for (i = 0x81; i < (0x81 + ARRAY_LENGTH(rcdino4_keys80));)
+ do
{
UINT8 key;
@@ -6418,9 +6419,14 @@ DRIVER_INIT_MEMBER(funworld_state, rcdino4)
while (j < 0x100);
j &= 0xff;
- do {
- assert((i+1 - 0x81) >= 0 && (i+1 - 0x81) < ARRAY_LENGTH(rcdino4_keys80));
- } while (!rcdino4_keys80[++i - 0x81]);
+
+ do {} while (((++i - 0x81) < ARRAY_LENGTH(rcdino4_keys80))
+ && !rcdino4_keys80[i - 0x81]);
+
+ if ((i - 0x81) == ARRAY_LENGTH(rcdino4_keys80))
+ {
+ break;
+ }
if ((i == 0xa4)
|| (i == 0xb0)
@@ -6430,6 +6436,7 @@ DRIVER_INIT_MEMBER(funworld_state, rcdino4)
j = 0; /* re-align offset after skipping some pages */
}
}
+ while (1);
}
DRIVER_INIT_MEMBER(funworld_state, rcdinch)
diff --git a/src/mame/drivers/galaxian.c b/src/mame/drivers/galaxian.c
index 1076c031eeb..db91e8e579c 100644
--- a/src/mame/drivers/galaxian.c
+++ b/src/mame/drivers/galaxian.c
@@ -10798,7 +10798,7 @@ GAME( 198?, kong, 0, mooncrst, kong, galaxian_state, kong,
GAME( 198?, fantastc, 0, fantastc, fantastc, galaxian_state, fantastc, ROT90, "Taito do Brasil", "Fantastic (Galaga conversion on Galaxian hardware)", GAME_SUPPORTS_SAVE ) // rewrite of Galaga (!) not a clone
/* like fantastc, plus larger spriteram, and maybe different bullet hw(?) */
-GAME( 198?, timefgtr, 0, timefgtr, timefgtr, galaxian_state, timefgtr, ROT90, "Taito do Brasil", "Time Fighter (Time Pilot conversion on Galaxian hardware)", GAME_SUPPORTS_SAVE | GAME_SUPPORTS_SAVE | GAME_WRONG_COLORS ) // rewrite of Time Pilot (!) not a clone
+GAME( 198?, timefgtr, 0, timefgtr, timefgtr, galaxian_state, timefgtr, ROT90, "Taito do Brasil", "Time Fighter (Time Pilot conversion on Galaxian hardware)", GAME_SUPPORTS_SAVE | GAME_WRONG_COLORS ) // rewrite of Time Pilot (!) not a clone
/* extra ROMs, protection, and sound hardware replaced with AY8910 */
GAME( 1981, jumpbug, 0, jumpbug, jumpbug, galaxian_state, jumpbug, ROT90, "Hoei (Rock-Ola license)", "Jump Bug", GAME_SUPPORTS_SAVE ) // or by Alpha Denshi Co. under contract from Hoei?
diff --git a/src/mame/drivers/gamecstl.c b/src/mame/drivers/gamecstl.c
index 362fcd82f89..06408abc5a0 100644
--- a/src/mame/drivers/gamecstl.c
+++ b/src/mame/drivers/gamecstl.c
@@ -64,7 +64,7 @@
#include "emu.h"
#include "cpu/i386/i386.h"
-#include "machine/pci.h"
+#include "machine/lpci.h"
#include "machine/pcshare.h"
#include "machine/pckeybrd.h"
#include "machine/idectrl.h"
diff --git a/src/mame/drivers/gammagic.c b/src/mame/drivers/gammagic.c
index 13148732ac6..d9a320d5926 100644
--- a/src/mame/drivers/gammagic.c
+++ b/src/mame/drivers/gammagic.c
@@ -32,7 +32,7 @@ Additional CD-ROM games: "99 Bottles of Beer"
#include "machine/cr589.h"
//#include "machine/i82371sb.h"
//#include "machine/i82439tx.h"
-#include "machine/pci.h"
+#include "machine/lpci.h"
#include "machine/pcshare.h"
#include "machine/pckeybrd.h"
#include "video/pc_vga.h"
diff --git a/src/mame/drivers/gauntlet.c b/src/mame/drivers/gauntlet.c
index b80b0dd5cd0..ef8253a71d5 100644
--- a/src/mame/drivers/gauntlet.c
+++ b/src/mame/drivers/gauntlet.c
@@ -499,6 +499,8 @@ static MACHINE_CONFIG_START( gauntlet, gauntlet_state )
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
+ MCFG_SLAPSTIC_ADD("slapstic")
+
MCFG_CPU_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8)
MCFG_CPU_PROGRAM_MAP(sound_map)
diff --git a/src/mame/drivers/harddriv.c b/src/mame/drivers/harddriv.c
index 09eeb04e65a..bba37a26373 100644
--- a/src/mame/drivers/harddriv.c
+++ b/src/mame/drivers/harddriv.c
@@ -330,6 +330,7 @@ Notes:
#include "includes/slapstic.h"
#include "includes/harddriv.h"
+#include "racedrivpan.lh"
/*************************************
*
@@ -337,6 +338,195 @@ Notes:
*
*************************************/
+const device_type HARDDRIV_DEVICE = &device_creator;
+
+harddriv_state::harddriv_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, HARDDRIV_DEVICE, "Hard Drivin' PCB Family", tag, owner, clock, "harddriv_pcb", __FILE__),
+/* device_video_interface(mconfig, *this, false), */
+ m_maincpu(*this, "maincpu"),
+ m_gsp(*this, "gsp"),
+ m_msp(*this, "msp"),
+ m_adsp(*this, "adsp"),
+ m_soundcpu(*this, "soundcpu"),
+ m_sounddsp(*this, "sounddsp"),
+ m_jsacpu(*this, "jsacpu"),
+ m_dsp32(*this, "dsp32"),
+ m_ds3sdsp(*this, "ds3sdsp"),
+ m_ds3xdsp(*this, "ds3xdsp"),
+ m_ds3dac1(*this, "ds3dac1"),
+ m_ds3dac2(*this, "ds3dac2"),
+ m_jsa(*this, "jsa"),
+ m_hd34010_host_access(0),
+ m_dsk_pio_access(0),
+ m_msp_ram(*this, "msp_ram"),
+ m_dsk_ram(0),
+ m_dsk_rom(0),
+ m_dsk_10c(*this, "dsk_10c"),
+ m_dsk_30c(*this, "dsk_30c"),
+ m_m68k_slapstic_base(0),
+ m_m68k_sloop_alt_base(0),
+ m_200e(*this, "200e"),
+ m_210e(*this, "210e"),
+ m_adsp_data_memory(*this, "adsp_data"),
+ m_adsp_pgm_memory(*this, "adsp_pgm_memory"),
+ m_ds3sdsp_data_memory(*this, "ds3sdsp_data"),
+ m_ds3sdsp_pgm_memory(*this, "ds3sdsp_pgm"),
+ m_ds3xdsp_pgm_memory(*this, "ds3xdsp_pgm"),
+ m_gsp_protection(0),
+ m_gsp_speedup_pc(0),
+ m_msp_speedup_addr(0),
+ m_msp_speedup_pc(0),
+ m_ds3_speedup_addr(0),
+ m_ds3_speedup_pc(0),
+ m_ds3_transfer_pc(0),
+ m_sounddsp_ram(*this, "sounddsp_ram"),
+ m_gsp_multisync(0),
+ m_gsp_vram(*this, "gsp_vram", 16),
+ m_gsp_control_lo(*this, "gsp_control_lo"),
+ m_gsp_control_hi(*this, "gsp_control_hi"),
+ m_gsp_paletteram_lo(*this, "gsp_palram_lo"),
+ m_gsp_paletteram_hi(*this, "gsp_palram_hi"),
+ m_irq_state(0),
+ m_gsp_irq_state(0),
+ m_msp_irq_state(0),
+ m_adsp_irq_state(0),
+ m_ds3sdsp_irq_state(0),
+ m_duart_irq_state(0),
+ m_last_gsp_shiftreg(0),
+ m_m68k_zp1(0),
+ m_m68k_zp2(0),
+ m_m68k_adsp_buffer_bank(0),
+ m_adsp_halt(0),
+ m_adsp_br(0),
+ m_adsp_xflag(0),
+ m_adsp_sim_address(0),
+ m_adsp_som_address(0),
+ m_adsp_eprom_base(0),
+ m_sim_memory(0),
+ m_sim_memory_size(0),
+ m_adsp_pgm_memory_word(0),
+ m_ds3_sdata_memory(0),
+ m_ds3_sdata_memory_size(0),
+ m_ds3_gcmd(0),
+ m_ds3_gflag(0),
+ m_ds3_g68irqs(0),
+ m_ds3_gfirqs(0),
+ m_ds3_g68flag(0),
+ m_ds3_send(0),
+ m_ds3_reset(0),
+ m_ds3_gdata(0),
+ m_ds3_g68data(0),
+ m_ds3_sim_address(0),
+ m_ds3_scmd(0),
+ m_ds3_sflag(0),
+ m_ds3_s68irqs(0),
+ m_ds3_sfirqs(0),
+ m_ds3_s68flag(0),
+ m_ds3_sreset(0),
+ m_ds3_sdata(0),
+ m_ds3_s68data(0),
+ m_ds3_sdata_address(0),
+ m_ds3sdsp_timer_en(0),
+ m_ds3sdsp_sdata(0),
+ m_ds3sdsp_internal_timer(*this, "ds3sdsp_timer"),
+ m_ds3xdsp_timer_en(0),
+ m_ds3xdsp_sdata(0),
+ m_ds3xdsp_internal_timer(*this, "ds3xdsp_timer"),
+ m_adc_control(0),
+ m_adc8_select(0),
+ m_adc8_data(0),
+ m_adc12_select(0),
+ m_adc12_byte(0),
+ m_adc12_data(0),
+ m_hdc68k_last_wheel(0),
+ m_hdc68k_last_port1(0),
+ m_hdc68k_wheel_edge(0),
+ m_hdc68k_shifter_state(0),
+ m_st68k_sloop_bank(0),
+ m_st68k_last_alt_sloop_offset(0),
+ m_next_msp_sync(0),
+ m_soundflag(0),
+ m_mainflag(0),
+ m_sounddata(0),
+ m_maindata(0),
+ m_dacmute(0),
+ m_cramen(0),
+ m_irq68k(0),
+ m_sound_rom_offs(0),
+ m_rombase(0),
+ m_romsize(0),
+ m_last_bio_cycles(0),
+ m_vram_mask(0),
+ m_shiftreg_enable(0),
+ m_gsp_shiftreg_source(0),
+ m_gfx_finescroll(0),
+ m_gfx_palettebank(0),
+ m_dac(*this, "dac"),
+ m_duart(*this, "duartn68681"),
+ m_asic65(*this, "asic65"),
+ m_palette(*this, "palette"),
+ m_slapstic_device(*this, "slapstic")
+{
+ int i;
+
+ for (i = 0; i < 2; i++)
+ {
+ m_gsp_speedup_addr[i] = 0;
+ m_rddsp32_sync[i] = 0;
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ m_gsp_speedup_count[i] = 0;
+ m_msp_speedup_count[i] = 0;
+ m_adsp_speedup_count[i] = 0;
+ }
+
+ for (i = 0; i < 32; i++)
+ {
+ m_ds3sdsp_regs[i] = 0;
+ m_ds3xdsp_regs[i] = 0;
+ }
+
+ for (i = 0; i < 0x8000 / 2; i++)
+ {
+ m_som_memory[i] = 0;
+ }
+
+ for (i = 0; i < MAX_MSP_SYNC; i++)
+ {
+ m_dataptr[i] = 0;
+ m_dataval[i] = 0;
+ }
+
+ for (i = 0; i < 0x400 / 2; i++)
+ {
+ m_comram[i] = 0;
+ }
+
+ for (i = 0; i < 65536 * 4; i++)
+ {
+ m_mask_table[i] = 0;
+ }
+}
+
+
+class harddriv_new_state : public driver_device
+{
+public:
+ harddriv_new_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ { }
+
+
+};
+
+
+WRITE16_MEMBER( harddriv_state::watchdog_reset16_w )
+{
+
+}
+
static ADDRESS_MAP_START( driver_68k_map, AS_PROGRAM, 16, harddriv_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x0fffff) AM_ROM
@@ -345,7 +535,7 @@ static ADDRESS_MAP_START( driver_68k_map, AS_PROGRAM, 16, harddriv_state )
AM_RANGE(0x608000, 0x60bfff) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x60c000, 0x60ffff) AM_WRITE(hd68k_irq_ack_w)
AM_RANGE(0xa00000, 0xa7ffff) AM_WRITE(hd68k_wr0_write)
- AM_RANGE(0xa80000, 0xafffff) AM_READ_PORT("a80000") AM_WRITE(hd68k_wr1_write)
+ AM_RANGE(0xa80000, 0xafffff) AM_READ(hd68k_a80000_r) AM_WRITE(hd68k_wr1_write)
AM_RANGE(0xb00000, 0xb7ffff) AM_READWRITE(hd68k_adc8_r, hd68k_wr2_write)
AM_RANGE(0xb80000, 0xbfffff) AM_READWRITE(hd68k_adc12_r, hd68k_adc_control_w)
AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(hd68k_gsp_io_r, hd68k_gsp_io_w)
@@ -392,7 +582,7 @@ static ADDRESS_MAP_START( multisync_68k_map, AS_PROGRAM, 16, harddriv_state )
AM_RANGE(0x608000, 0x60bfff) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x60c000, 0x60ffff) AM_READWRITE(hd68k_port0_r, hd68k_irq_ack_w)
AM_RANGE(0xa00000, 0xa7ffff) AM_WRITE(hd68k_wr0_write)
- AM_RANGE(0xa80000, 0xafffff) AM_READ_PORT("a80000") AM_WRITE(hd68k_wr1_write)
+ AM_RANGE(0xa80000, 0xafffff) AM_READ(hd68k_a80000_r) AM_WRITE(hd68k_wr1_write)
AM_RANGE(0xb00000, 0xb7ffff) AM_READWRITE(hd68k_adc8_r, hd68k_wr2_write)
AM_RANGE(0xb80000, 0xbfffff) AM_READWRITE(hd68k_adc12_r, hd68k_adc_control_w)
AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(hd68k_gsp_io_r, hd68k_gsp_io_w)
@@ -430,7 +620,7 @@ static ADDRESS_MAP_START( multisync2_68k_map, AS_PROGRAM, 16, harddriv_state )
AM_RANGE(0x608000, 0x60bfff) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x60c000, 0x60ffff) AM_READWRITE(hd68k_port0_r, hd68k_irq_ack_w)
AM_RANGE(0xa00000, 0xa7ffff) AM_WRITE(hd68k_wr0_write)
- AM_RANGE(0xa80000, 0xafffff) AM_READ_PORT("a80000") AM_WRITE(hd68k_wr1_write)
+ AM_RANGE(0xa80000, 0xafffff) AM_READ(hd68k_a80000_r) AM_WRITE(hd68k_wr1_write)
AM_RANGE(0xb00000, 0xb7ffff) AM_READWRITE(hd68k_adc8_r, hd68k_wr2_write)
AM_RANGE(0xb80000, 0xbfffff) AM_READWRITE(hd68k_adc12_r, hd68k_adc_control_w)
AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(hd68k_gsp_io_r, hd68k_gsp_io_w)
@@ -597,6 +787,7 @@ ADDRESS_MAP_END
+
/*************************************
*
* Port definitions
@@ -604,19 +795,19 @@ ADDRESS_MAP_END
*************************************/
static INPUT_PORTS_START( harddriv )
- PORT_START("IN0") /* 600000 */
+ PORT_START("mainpcb:IN0") /* 600000 */
PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* HBLANK */
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 12-bit EOC */
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 8-bit EOC */
PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_START("SW1") /* 600002 */
+ PORT_START("mainpcb:SW1") /* 600002 */
PORT_DIPNAME( 0x01, 0x01, "SW1:8" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@@ -642,64 +833,65 @@ static INPUT_PORTS_START( harddriv )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("a80000")
+ PORT_START("mainpcb:a80000")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Abort") /* abort */
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Key") /* key */
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 ) /* aux coin */
PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
+ PORT_START("mainpcb:8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
- PORT_START("8BADC1") /* b00000 - 8 bit ADC 1 - clutch pedal */
+ PORT_START("mainpcb:8BADC1") /* b00000 - 8 bit ADC 1 - clutch pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL3 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) PORT_NAME("Clutch Pedal")
- PORT_START("8BADC2") /* b00000 - 8 bit ADC 2 - seat */
+ PORT_START("mainpcb:8BADC2") /* b00000 - 8 bit ADC 2 - seat */
PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
- PORT_START("8BADC3") /* b00000 - 8 bit ADC 3 - shifter lever Y */
+ PORT_START("mainpcb:8BADC3") /* b00000 - 8 bit ADC 3 - shifter lever Y */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(128) PORT_CODE_DEC(KEYCODE_R) PORT_CODE_INC(KEYCODE_F) PORT_NAME("Shifter Lever Y")
- PORT_START("8BADC4") /* b00000 - 8 bit ADC 4 - shifter lever X*/
+ PORT_START("mainpcb:8BADC4") /* b00000 - 8 bit ADC 4 - shifter lever X*/
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(128) PORT_CODE_DEC(KEYCODE_D) PORT_CODE_INC(KEYCODE_G) PORT_NAME("Shifter Lever X")
- PORT_START("8BADC5") /* b00000 - 8 bit ADC 5 - wheel */
+ PORT_START("mainpcb:8BADC5") /* b00000 - 8 bit ADC 5 - wheel */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Wheel")
- PORT_START("8BADC6") /* b00000 - 8 bit ADC 6 - line volts */
+ PORT_START("mainpcb:8BADC6") /* b00000 - 8 bit ADC 6 - line volts */
PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
- PORT_START("8BADC7") /* b00000 - 8 bit ADC 7 - shift force */
+ PORT_START("mainpcb:8BADC7") /* b00000 - 8 bit ADC 7 - shift force */
PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
- PORT_START("12BADC0") /* b80000 - 12 bit ADC 0 - steering wheel */
+ PORT_START("mainpcb:12BADC0") /* b80000 - 12 bit ADC 0 - steering wheel */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel")
- PORT_START("12BADC1") /* b80000 - 12 bit ADC 1 - force brake */
+ PORT_START("mainpcb:12BADC1") /* b80000 - 12 bit ADC 1 - force brake */
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Force Brake")
- PORT_START("12BADC2") /* b80000 - 12 bit ADC 2 */
+ PORT_START("mainpcb:12BADC2") /* b80000 - 12 bit ADC 2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("12BADC3") /* b80000 - 12 bit ADC 3 */
+ PORT_START("mainpcb:12BADC3") /* b80000 - 12 bit ADC 3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
+
INPUT_PORTS_END
static INPUT_PORTS_START( racedriv )
- PORT_START("IN0") /* 600000 */
+ PORT_START("mainpcb:IN0") /* 600000 */
PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* HBLANK */
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 12-bit EOC */
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 8-bit EOC */
PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_START("SW1") /* 600002 */
+ PORT_START("mainpcb:SW1") /* 600002 */
PORT_DIPNAME( 0x01, 0x01, "SW1:8" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@@ -725,64 +917,104 @@ static INPUT_PORTS_START( racedriv )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("a80000")
+ PORT_START("mainpcb:a80000")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Abort") /* abort */
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Key") /* key */
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 ) /* aux coin */
PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
+ PORT_START("mainpcb:8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
- PORT_START("8BADC1") /* b00000 - 8 bit ADC 1 - clutch pedal */
+ PORT_START("mainpcb:8BADC1") /* b00000 - 8 bit ADC 1 - clutch pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL3 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) PORT_NAME("Clutch Pedal")
- PORT_START("8BADC2") /* b00000 - 8 bit ADC 2 - seat */
+ PORT_START("mainpcb:8BADC2") /* b00000 - 8 bit ADC 2 - seat */
PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
- PORT_START("8BADC3") /* b00000 - 8 bit ADC 3 - shifter lever Y */
+ PORT_START("mainpcb:8BADC3") /* b00000 - 8 bit ADC 3 - shifter lever Y */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(128) PORT_CODE_DEC(KEYCODE_R) PORT_CODE_INC(KEYCODE_F) PORT_NAME("Shifter Lever Y")
- PORT_START("8BADC4") /* b00000 - 8 bit ADC 4 - shifter lever X*/
+ PORT_START("mainpcb:8BADC4") /* b00000 - 8 bit ADC 4 - shifter lever X*/
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(128) PORT_CODE_DEC(KEYCODE_D) PORT_CODE_INC(KEYCODE_G) PORT_NAME("Shifter Lever X")
- PORT_START("8BADC5") /* b00000 - 8 bit ADC 5 - wheel */
+ PORT_START("mainpcb:8BADC5") /* b00000 - 8 bit ADC 5 - wheel */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Wheel")
- PORT_START("8BADC6") /* b00000 - 8 bit ADC 6 - line volts */
+ PORT_START("mainpcb:8BADC6") /* b00000 - 8 bit ADC 6 - line volts */
PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
- PORT_START("8BADC7") /* b00000 - 8 bit ADC 7 */
+ PORT_START("mainpcb:8BADC7") /* b00000 - 8 bit ADC 7 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("12BADC0") /* b80000 - 12 bit ADC 0 - steering wheel */
+ PORT_START("mainpcb:12BADC0") /* b80000 - 12 bit ADC 0 - steering wheel */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel")
- PORT_START("12BADC1") /* b80000 - 12 bit ADC 1 - force brake */
+ PORT_START("mainpcb:12BADC1") /* b80000 - 12 bit ADC 1 - force brake */
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Force Brake")
- PORT_START("12BADC2") /* b80000 - 12 bit ADC 2 */
+ PORT_START("mainpcb:12BADC2") /* b80000 - 12 bit ADC 2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("12BADC3") /* b80000 - 12 bit ADC 3 */
+ PORT_START("mainpcb:12BADC3") /* b80000 - 12 bit ADC 3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
+static INPUT_PORTS_START( racedriv_pan )
+ PORT_INCLUDE( racedriv )
+
+ PORT_START("leftpcb:IN0") /* 600000 */
+ PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper (Left)" )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* HBLANK */
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("leftpcb:screen")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 12-bit EOC */
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 8-bit EOC */
+ PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
+
+ PORT_START("rightpcb:IN0") /* 600000 */
+ PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper (Right)" )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* HBLANK */
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("rightpcb:screen")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 12-bit EOC */
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 8-bit EOC */
+ PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
+#if 1 // needed to navigate sub-screen test menus
+ PORT_START("leftpcb:a80000")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Abort") /* abort */
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Key") /* key */
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 ) /* aux coin */
+ PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("rightpcb:a80000")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Abort") /* abort */
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Key") /* key */
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 ) /* aux coin */
+ PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED )
+#endif
+INPUT_PORTS_END
static INPUT_PORTS_START( racedrivc )
- PORT_START("IN0") /* 60c000 */
+ PORT_START("mainpcb:IN0") /* 60c000 */
PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* HBLANK */
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 12-bit EOC */
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 8-bit EOC */
PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_START("SW1") /* 60c002 */
+ PORT_START("mainpcb:SW1") /* 60c002 */
PORT_DIPNAME( 0x01, 0x01, "SW1:8" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@@ -808,7 +1040,7 @@ static INPUT_PORTS_START( racedrivc )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("a80000")
+ PORT_START("mainpcb:a80000")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Abort")
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Key")
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 ) /* aux coin */
@@ -821,57 +1053,57 @@ static INPUT_PORTS_START( racedrivc )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL ) /* center edge on steering wheel */
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
+ PORT_START("mainpcb:8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
- PORT_START("8BADC1") /* b00000 - 8 bit ADC 1 - clutch pedal */
+ PORT_START("mainpcb:8BADC1") /* b00000 - 8 bit ADC 1 - clutch pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL3 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) PORT_NAME("Clutch Pedal")
- PORT_START("8BADC2") /* b00000 - 8 bit ADC 2 */
+ PORT_START("mainpcb:8BADC2") /* b00000 - 8 bit ADC 2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC3") /* b00000 - 8 bit ADC 3 */
+ PORT_START("mainpcb:8BADC3") /* b00000 - 8 bit ADC 3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC4") /* b00000 - 8 bit ADC 4 */
+ PORT_START("mainpcb:8BADC4") /* b00000 - 8 bit ADC 4 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC5") /* b00000 - 8 bit ADC 5 */
+ PORT_START("mainpcb:8BADC5") /* b00000 - 8 bit ADC 5 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC6") /* b00000 - 8 bit ADC 6 - force brake */
+ PORT_START("mainpcb:8BADC6") /* b00000 - 8 bit ADC 6 - force brake */
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Force Brake")
- PORT_START("8BADC7") /* b00000 - 8 bit ADC 7 */
+ PORT_START("mainpcb:8BADC7") /* b00000 - 8 bit ADC 7 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("12BADC0") /* 400000 - steering wheel */
+ PORT_START("mainpcb:12BADC0") /* 400000 - steering wheel */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel")
/* dummy ADC ports to end up with the same number as the full version */
- PORT_START("12BADC1")
+ PORT_START("mainpcb:12BADC1")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("12BADC2")
+ PORT_START("mainpcb:12BADC2")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("12BADC3")
+ PORT_START("mainpcb:12BADC3")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
static INPUT_PORTS_START( stunrun )
- PORT_START("IN0") /* 60c000 */
+ PORT_START("mainpcb:IN0") /* 60c000 */
PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* HBLANK */
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 12-bit EOC */
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 8-bit EOC */
PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_START("SW1") /* 60c002 */
+ PORT_START("mainpcb:SW1") /* 60c002 */
PORT_DIPNAME( 0x01, 0x00, "SW1:8" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@@ -897,46 +1129,46 @@ static INPUT_PORTS_START( stunrun )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("a80000")
+ PORT_START("mainpcb:a80000")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC0") /* b00000 - 8 bit ADC 0 */
+ PORT_START("mainpcb:8BADC0") /* b00000 - 8 bit ADC 0 */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)
- PORT_START("8BADC1") /* b00000 - 8 bit ADC 1 */
+ PORT_START("mainpcb:8BADC1") /* b00000 - 8 bit ADC 1 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC2") /* b00000 - 8 bit ADC 2 */
+ PORT_START("mainpcb:8BADC2") /* b00000 - 8 bit ADC 2 */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)
- PORT_START("8BADC3") /* b00000 - 8 bit ADC 3 */
+ PORT_START("mainpcb:8BADC3") /* b00000 - 8 bit ADC 3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC4") /* b00000 - 8 bit ADC 4 */
+ PORT_START("mainpcb:8BADC4") /* b00000 - 8 bit ADC 4 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC5") /* b00000 - 8 bit ADC 5 */
+ PORT_START("mainpcb:8BADC5") /* b00000 - 8 bit ADC 5 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC6") /* b00000 - 8 bit ADC 6 */
+ PORT_START("mainpcb:8BADC6") /* b00000 - 8 bit ADC 6 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC7") /* b00000 - 8 bit ADC 7 */
+ PORT_START("mainpcb:8BADC7") /* b00000 - 8 bit ADC 7 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("12BADC0") /* b80000 - 12 bit ADC 0 */
+ PORT_START("mainpcb:12BADC0") /* b80000 - 12 bit ADC 0 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("12BADC1") /* b80000 - 12 bit ADC 1 */
+ PORT_START("mainpcb:12BADC1") /* b80000 - 12 bit ADC 1 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("12BADC2") /* b80000 - 12 bit ADC 2 */
+ PORT_START("mainpcb:12BADC2") /* b80000 - 12 bit ADC 2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("12BADC3") /* b80000 - 12 bit ADC 3 */
+ PORT_START("mainpcb:12BADC3") /* b80000 - 12 bit ADC 3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
/* stunrun has its own coins */
@@ -948,19 +1180,19 @@ INPUT_PORTS_END
static INPUT_PORTS_START( steeltal )
- PORT_START("IN0") /* 60c000 */
+ PORT_START("mainpcb:IN0") /* 60c000 */
PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* HBLANK */
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 12-bit EOC */
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 8-bit EOC */
PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_START("SW1") /* 60c002 */
+ PORT_START("mainpcb:SW1") /* 60c002 */
PORT_DIPNAME( 0x01, 0x00, "SW1:8" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@@ -986,47 +1218,47 @@ static INPUT_PORTS_START( steeltal )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("a80000")
+ PORT_START("mainpcb:a80000")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Trigger")
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Thumb")
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Zoom")
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Real Helicopter Flight")
PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC0") /* b00000 - 8 bit ADC 0 */
+ PORT_START("mainpcb:8BADC0") /* b00000 - 8 bit ADC 0 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC1") /* b00000 - 8 bit ADC 1 */
+ PORT_START("mainpcb:8BADC1") /* b00000 - 8 bit ADC 1 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) /* volume control */
- PORT_START("8BADC2") /* b00000 - 8 bit ADC 2 */
+ PORT_START("mainpcb:8BADC2") /* b00000 - 8 bit ADC 2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC3") /* b00000 - 8 bit ADC 3 */
+ PORT_START("mainpcb:8BADC3") /* b00000 - 8 bit ADC 3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC4") /* b00000 - 8 bit ADC 4 */
+ PORT_START("mainpcb:8BADC4") /* b00000 - 8 bit ADC 4 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC5") /* b00000 - 8 bit ADC 5 */
+ PORT_START("mainpcb:8BADC5") /* b00000 - 8 bit ADC 5 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC6") /* b00000 - 8 bit ADC 6 */
+ PORT_START("mainpcb:8BADC6") /* b00000 - 8 bit ADC 6 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC7") /* b00000 - 8 bit ADC 7 */
+ PORT_START("mainpcb:8BADC7") /* b00000 - 8 bit ADC 7 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("12BADC0") /* b80000 - 12 bit ADC 0 */
+ PORT_START("mainpcb:12BADC0") /* b80000 - 12 bit ADC 0 */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) /* left/right */
- PORT_START("12BADC1") /* b80000 - 12 bit ADC 1 */
+ PORT_START("mainpcb:12BADC1") /* b80000 - 12 bit ADC 1 */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) /* up/down */
- PORT_START("12BADC2") /* b80000 - 12 bit ADC 2 */
+ PORT_START("mainpcb:12BADC2") /* b80000 - 12 bit ADC 2 */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Z ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_NAME("Collective") PORT_REVERSE /* collective */
- PORT_START("12BADC3") /* b80000 - 12 bit ADC 3 */
+ PORT_START("mainpcb:12BADC3") /* b80000 - 12 bit ADC 3 */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_NAME("Rudder") PORT_PLAYER(2) /* rudder */
/* steeltal has its own coins */
@@ -1038,19 +1270,19 @@ INPUT_PORTS_END
static INPUT_PORTS_START( strtdriv )
- PORT_START("IN0") /* 60c000 */
+ PORT_START("mainpcb:IN0") /* 60c000 */
PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* HBLANK */
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 12-bit EOC */
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 8-bit EOC */
PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_START("SW1") /* 60c002 */
+ PORT_START("mainpcb:SW1") /* 60c002 */
PORT_DIPNAME( 0x01, 0x01, "SW1:8" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@@ -1076,7 +1308,7 @@ static INPUT_PORTS_START( strtdriv )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("a80000")
+ PORT_START("mainpcb:a80000")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) /* abort */
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) /* start */
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 ) /* aux coin */
@@ -1090,57 +1322,57 @@ static INPUT_PORTS_START( strtdriv )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL ) /* center edge on steering wheel */
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
+ PORT_START("mainpcb:8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
- PORT_START("8BADC1") /* b00000 - 8 bit ADC 1 */
+ PORT_START("mainpcb:8BADC1") /* b00000 - 8 bit ADC 1 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC2") /* b00000 - 8 bit ADC 2 - voice mic */
+ PORT_START("mainpcb:8BADC2") /* b00000 - 8 bit ADC 2 - voice mic */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC3") /* b00000 - 8 bit ADC 3 - volume */
+ PORT_START("mainpcb:8BADC3") /* b00000 - 8 bit ADC 3 - volume */
PORT_BIT( 0xff, 0X80, IPT_UNUSED )
- PORT_START("8BADC4") /* b00000 - 8 bit ADC 4 - elevator */
+ PORT_START("mainpcb:8BADC4") /* b00000 - 8 bit ADC 4 - elevator */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_NAME("Elevator") PORT_REVERSE /* up/down */
- PORT_START("8BADC5") /* b00000 - 8 bit ADC 5 - canopy */
+ PORT_START("mainpcb:8BADC5") /* b00000 - 8 bit ADC 5 - canopy */
PORT_BIT( 0xff, 0X80, IPT_UNUSED )
- PORT_START("8BADC6") /* b00000 - 8 bit ADC 6 - brake */
+ PORT_START("mainpcb:8BADC6") /* b00000 - 8 bit ADC 6 - brake */
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_NAME("Brake") PORT_REVERSE
- PORT_START("8BADC7") /* b00000 - 8 bit ADC 7 - seat adjust */
+ PORT_START("mainpcb:8BADC7") /* b00000 - 8 bit ADC 7 - seat adjust */
PORT_BIT( 0xff, 0X80, IPT_UNUSED )
- PORT_START("12BADC0") /* 400000 - steering wheel */
+ PORT_START("mainpcb:12BADC0") /* 400000 - steering wheel */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel")
/* dummy ADC ports to end up with the same number as the full version */
- PORT_START("12BADC1") /* FAKE */
+ PORT_START("mainpcb:12BADC1") /* FAKE */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("12BADC2") /* FAKE */
+ PORT_START("mainpcb:12BADC2") /* FAKE */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("12BADC3") /* FAKE */
+ PORT_START("mainpcb:12BADC3") /* FAKE */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
static INPUT_PORTS_START( hdrivair )
- PORT_START("IN0") /* 60c000 */
+ PORT_START("mainpcb:IN0") /* 60c000 */
PORT_DIPNAME( 0x01, 0x01, "Diagnostic jumper" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* HBLANK */
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("mainpcb:screen")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 12-bit EOC */
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* 8-bit EOC */
PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_START("SW1") /* 60c002 */
+ PORT_START("mainpcb:SW1") /* 60c002 */
PORT_DIPNAME( 0x01, 0x01, "SW1:8" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@@ -1166,7 +1398,7 @@ static INPUT_PORTS_START( hdrivair )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("a80000")
+ PORT_START("mainpcb:a80000")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) /* abort */
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 ) /* start */
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 ) /* aux coin */
@@ -1180,39 +1412,39 @@ static INPUT_PORTS_START( hdrivair )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL ) /* center edge on steering wheel */
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
+ PORT_START("mainpcb:8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
- PORT_START("8BADC1") /* b00000 - 8 bit ADC 1 */
+ PORT_START("mainpcb:8BADC1") /* b00000 - 8 bit ADC 1 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC2") /* b00000 - 8 bit ADC 2 - voice mic */
+ PORT_START("mainpcb:8BADC2") /* b00000 - 8 bit ADC 2 - voice mic */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("8BADC3") /* b00000 - 8 bit ADC 3 - volume */
+ PORT_START("mainpcb:8BADC3") /* b00000 - 8 bit ADC 3 - volume */
PORT_BIT( 0xff, 0X80, IPT_UNUSED )
- PORT_START("8BADC4") /* b00000 - 8 bit ADC 4 - elevator */
+ PORT_START("mainpcb:8BADC4") /* b00000 - 8 bit ADC 4 - elevator */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_REVERSE PORT_NAME("Elevator") /* up/down */
- PORT_START("8BADC5") /* b00000 - 8 bit ADC 5 - canopy */
+ PORT_START("mainpcb:8BADC5") /* b00000 - 8 bit ADC 5 - canopy */
PORT_BIT( 0xff, 0X80, IPT_UNUSED )
- PORT_START("8BADC6") /* b00000 - 8 bit ADC 6 - brake */
+ PORT_START("mainpcb:8BADC6") /* b00000 - 8 bit ADC 6 - brake */
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Brake")
- PORT_START("8BADC7") /* b00000 - 8 bit ADC 7 - seat adjust */
+ PORT_START("mainpcb:8BADC7") /* b00000 - 8 bit ADC 7 - seat adjust */
PORT_BIT( 0xff, 0X80, IPT_UNUSED )
- PORT_START("12BADC0") /* 400000 - steering wheel */
+ PORT_START("mainpcb:12BADC0") /* 400000 - steering wheel */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_REVERSE PORT_NAME("Steering Wheel")
/* dummy ADC ports to end up with the same number as the full version */
- PORT_START("12BADC1")
+ PORT_START("mainpcb:12BADC1")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("12BADC2")
+ PORT_START("mainpcb:12BADC2")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("12BADC3")
+ PORT_START("mainpcb:12BADC3")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
@@ -1223,15 +1455,25 @@ INPUT_PORTS_END
*
*************************************/
+INTERRUPT_GEN_MEMBER(harddriv_state::video_int_gen)
+{
+ m_video_int_state = 1;
+ update_interrupts();
+}
+
+
/* Driver board without MSP (used by Race Drivin' cockpit) */
-static MACHINE_CONFIG_START( driver_nomsp, harddriv_state )
+static MACHINE_CONFIG_FRAGMENT( driver_nomsp )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68010, HARDDRIV_MASTER_CLOCK/4)
MCFG_CPU_PROGRAM_MAP(driver_68k_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", harddriv_state, video_int_gen)
MCFG_CPU_PERIODIC_INT_DRIVER(harddriv_state, hd68k_irq_gen, (double)HARDDRIV_MASTER_CLOCK/16/16/16/16/2)
+ MCFG_SLAPSTIC_ADD("slapstic")
+ MCFG_SLAPSTIC_68K_ACCESS(1)
+
MCFG_CPU_ADD("gsp", TMS34010, HARDDRIV_GSP_CLOCK)
MCFG_CPU_PROGRAM_MAP(driver_gsp_map)
MCFG_TMS340X0_HALT_ON_RESET(TRUE) /* halt on reset */
@@ -1241,12 +1483,10 @@ static MACHINE_CONFIG_START( driver_nomsp, harddriv_state )
MCFG_TMS340X0_OUTPUT_INT_CB(WRITELINE(harddriv_state, hdgsp_irq_gen))
MCFG_TMS340X0_TO_SHIFTREG_CB(harddriv_state, hdgsp_write_to_shiftreg)
MCFG_TMS340X0_FROM_SHIFTREG_CB(harddriv_state, hdgsp_read_from_shiftreg)
+ MCFG_VIDEO_SET_SCREEN("screen")
MCFG_QUANTUM_TIME(attotime::from_hz(30000))
- MCFG_MACHINE_START_OVERRIDE(harddriv_state,harddriv)
- MCFG_MACHINE_RESET_OVERRIDE(harddriv_state,harddriv)
-
MCFG_M48T02_ADD("200e") // MK48T02
MCFG_EEPROM_2816_ADD("210e") // MK48Z02
@@ -1261,13 +1501,13 @@ static MACHINE_CONFIG_START( driver_nomsp, harddriv_state )
MCFG_SCREEN_UPDATE_DEVICE("gsp", tms34010_device, tms340x0_ind16)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_SCREEN_PALETTE("palette")
-
- MCFG_VIDEO_START_OVERRIDE(harddriv_state,harddriv)
MACHINE_CONFIG_END
/* Driver board with MSP (used by Hard Drivin' cockpit) */
-static MACHINE_CONFIG_DERIVED( driver_msp, driver_nomsp )
+static MACHINE_CONFIG_FRAGMENT( driver_msp )
+
+ MCFG_FRAGMENT_ADD( driver_nomsp )
/* basic machine hardware */
MCFG_CPU_ADD("msp", TMS34010, XTAL_50MHz)
@@ -1276,11 +1516,15 @@ static MACHINE_CONFIG_DERIVED( driver_msp, driver_nomsp )
MCFG_TMS340X0_PIXEL_CLOCK(5000000) /* pixel clock */
MCFG_TMS340X0_PIXELS_PER_CLOCK(2) /* pixels per clock */
MCFG_TMS340X0_OUTPUT_INT_CB(WRITELINE(harddriv_state, hdmsp_irq_gen))
+ MCFG_VIDEO_SET_SCREEN("screen")
+
MACHINE_CONFIG_END
/* Multisync board without MSP (used by STUN Runner, Steel Talons, Race Drivin' compact) */
-static MACHINE_CONFIG_DERIVED( multisync_nomsp, driver_nomsp )
+static MACHINE_CONFIG_FRAGMENT( multisync_nomsp )
+
+ MCFG_FRAGMENT_ADD( driver_nomsp )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
@@ -1299,7 +1543,9 @@ MACHINE_CONFIG_END
/* Multisync board with MSP (used by Hard Drivin' compact) */
-static MACHINE_CONFIG_DERIVED( multisync_msp, multisync_nomsp )
+static MACHINE_CONFIG_FRAGMENT( multisync_msp )
+
+ MCFG_FRAGMENT_ADD( multisync_nomsp )
/* basic machine hardware */
MCFG_CPU_ADD("msp", TMS34010, XTAL_50MHz)
@@ -1308,11 +1554,15 @@ static MACHINE_CONFIG_DERIVED( multisync_msp, multisync_nomsp )
MCFG_TMS340X0_PIXEL_CLOCK(5000000) /* pixel clock */
MCFG_TMS340X0_PIXELS_PER_CLOCK(2) /* pixels per clock */
MCFG_TMS340X0_OUTPUT_INT_CB(WRITELINE(harddriv_state, hdmsp_irq_gen))
+ MCFG_VIDEO_SET_SCREEN("screen")
+
MACHINE_CONFIG_END
/* Multisync II board (used by Hard Drivin's Airborne) */
-static MACHINE_CONFIG_DERIVED( multisync2, multisync_nomsp )
+static MACHINE_CONFIG_FRAGMENT( multisync2 )
+
+ MCFG_FRAGMENT_ADD( multisync_nomsp )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
@@ -1444,23 +1694,23 @@ MACHINE_CONFIG_END
*
*************************************/
-static MACHINE_CONFIG_DERIVED( harddriv, driver_msp )
-
+static MACHINE_CONFIG_FRAGMENT( harddriv )
+ MCFG_FRAGMENT_ADD( driver_msp )
/* basic machine hardware */ /* original driver board with MSP */
MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */
MCFG_FRAGMENT_ADD( driversnd ) /* driver sound board */
MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED( harddrivc, multisync_msp )
+static MACHINE_CONFIG_FRAGMENT( harddrivc )
+ MCFG_FRAGMENT_ADD( multisync_msp )
/* basic machine hardware */ /* multisync board with MSP */
MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */
MCFG_FRAGMENT_ADD( driversnd ) /* driver sound board */
MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED( racedriv, driver_nomsp )
+static MACHINE_CONFIG_FRAGMENT( racedriv )
+ MCFG_FRAGMENT_ADD( driver_nomsp )
/* basic machine hardware */ /* original driver board without MSP */
MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */
@@ -1468,8 +1718,9 @@ static MACHINE_CONFIG_DERIVED( racedriv, driver_nomsp )
MCFG_FRAGMENT_ADD( driversnd ) /* driver sound board */
MACHINE_CONFIG_END
+static MACHINE_CONFIG_FRAGMENT( racedrivc )
-static MACHINE_CONFIG_DERIVED( racedrivc, multisync_nomsp )
+ MCFG_FRAGMENT_ADD( multisync_nomsp )
/* basic machine hardware */ /* multisync board without MSP */
MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */
@@ -1478,7 +1729,26 @@ static MACHINE_CONFIG_DERIVED( racedrivc, multisync_nomsp )
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( stunrun, multisync_nomsp )
+static MACHINE_CONFIG_FRAGMENT( racedrivc_panorama_side )
+
+ MCFG_FRAGMENT_ADD( multisync_nomsp )
+
+ /* basic machine hardware */ /* multisync board without MSP */
+ MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */
+// MCFG_FRAGMENT_ADD( dsk ) /* DSK board */
+// MCFG_FRAGMENT_ADD( driversnd ) /* driver sound board */
+MACHINE_CONFIG_END
+
+WRITE_LINE_MEMBER(harddriv_state::sound_int_write_line)
+{
+ m_sound_int_state = state;
+ update_interrupts();
+}
+
+
+static MACHINE_CONFIG_FRAGMENT( stunrun )
+
+ MCFG_FRAGMENT_ADD( multisync_nomsp )
/* basic machine hardware */ /* multisync board without MSP */
MCFG_CPU_MODIFY("gsp")
@@ -1492,13 +1762,13 @@ static MACHINE_CONFIG_DERIVED( stunrun, multisync_nomsp )
/* sund hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_ATARI_JSA_II_ADD("jsa", WRITELINE(atarigen_state, sound_int_write_line))
+ MCFG_ATARI_JSA_II_ADD("jsa", WRITELINE(harddriv_state, sound_int_write_line))
MCFG_ATARI_JSA_TEST_PORT("IN0", 5)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
-
-static MACHINE_CONFIG_DERIVED( steeltal, multisync_msp )
+static MACHINE_CONFIG_FRAGMENT( steeltal )
+ MCFG_FRAGMENT_ADD( multisync_msp )
/* basic machine hardware */ /* multisync board with MSP */
MCFG_FRAGMENT_ADD( ds3 ) /* DS III board */
@@ -1514,13 +1784,14 @@ static MACHINE_CONFIG_DERIVED( steeltal, multisync_msp )
/* sund hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_ATARI_JSA_III_ADD("jsa", WRITELINE(atarigen_state, sound_int_write_line))
+ MCFG_ATARI_JSA_III_ADD("jsa", WRITELINE(harddriv_state, sound_int_write_line))
MCFG_ATARI_JSA_TEST_PORT("IN0", 5)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_FRAGMENT( strtdriv )
-static MACHINE_CONFIG_DERIVED( strtdriv, multisync_nomsp )
+ MCFG_FRAGMENT_ADD( multisync_nomsp )
/* basic machine hardware */ /* multisync board */
MCFG_FRAGMENT_ADD( ds3 ) /* DS III board */
@@ -1530,15 +1801,300 @@ static MACHINE_CONFIG_DERIVED( strtdriv, multisync_nomsp )
MCFG_FRAGMENT_ADD( dsk ) /* DSK board */
MACHINE_CONFIG_END
+static MACHINE_CONFIG_FRAGMENT( hdrivair )
-static MACHINE_CONFIG_DERIVED( hdrivair, multisync2 )
+ MCFG_FRAGMENT_ADD( multisync2 )
/* basic machine hardware */ /* multisync II board */
MCFG_FRAGMENT_ADD( ds3 ) /* DS IV board */
MCFG_FRAGMENT_ADD( dsk2 ) /* DSK II board */
MACHINE_CONFIG_END
+const device_type HARDDRIV_BOARD_DEVICE = &device_creator;
+harddriv_board_device_state::harddriv_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : harddriv_state(mconfig, tag, owner, clock)
+{
+}
+
+machine_config_constructor harddriv_board_device_state::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( harddriv );
+}
+
+void harddriv_board_device_state::device_start()
+{
+ init_harddriv();
+ harddriv_state::device_start();
+}
+
+/* Compact */
+
+void harddrivc_board_device_state::device_start()
+{
+ init_harddrivc();
+ harddriv_state::device_start();
+}
+
+const device_type HARDDRIVC_BOARD_DEVICE = &device_creator;
+
+harddrivc_board_device_state::harddrivc_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : harddriv_state(mconfig, tag, owner, clock)
+{
+}
+
+machine_config_constructor harddrivc_board_device_state::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( harddrivc );
+}
+
+
+/* Race Drivin */
+
+void racedriv_board_device_state::device_start()
+{
+ init_racedriv();
+ harddriv_state::device_start();
+}
+
+void racedrivb1_board_device_state::device_start()
+{
+ init_racedrivb1();
+ harddriv_state::device_start();
+}
+
+const device_type RACEDRIV_BOARD_DEVICE = &device_creator;
+const device_type RACEDRIVB1_BOARD_DEVICE = &device_creator;
+
+racedriv_board_device_state::racedriv_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : harddriv_state(mconfig, tag, owner, clock)
+{
+}
+
+machine_config_constructor racedriv_board_device_state::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( racedriv );
+}
+
+
+/* Race Drivin Compact */
+
+void racedrivc_board_device_state::device_start()
+{
+ init_racedrivc();
+ harddriv_state::device_start();
+}
+
+void racedrivc1_board_device_state::device_start()
+{
+ init_racedrivc1();
+ harddriv_state::device_start();
+}
+
+void racedrivc_panorama_side_board_device_state::device_start()
+{
+ init_racedrivc_panorama_side();
+ harddriv_state::device_start();
+}
+
+
+
+const device_type RACEDRIVC_BOARD_DEVICE = &device_creator;
+const device_type RACEDRIVC1_BOARD_DEVICE = &device_creator;
+const device_type RACEDRIVC_PANORAMA_SIDE_BOARD_DEVICE = &device_creator;
+
+racedrivc_board_device_state::racedrivc_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : harddriv_state(mconfig, tag, owner, clock)
+{
+}
+
+machine_config_constructor racedrivc_board_device_state::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( racedrivc );
+}
+
+machine_config_constructor racedrivc_panorama_side_board_device_state::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( racedrivc_panorama_side );
+}
+
+
+/* Stun Runner */
+
+void stunrun_board_device_state::device_start()
+{
+ init_stunrun();
+ harddriv_state::device_start();
+}
+
+const device_type STUNRUN_BOARD_DEVICE = &device_creator;
+
+stunrun_board_device_state::stunrun_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : harddriv_state(mconfig, tag, owner, clock)
+{
+}
+
+machine_config_constructor stunrun_board_device_state::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( stunrun );
+}
+
+/* Steel Talons */
+
+void steeltal_board_device_state::device_start()
+{
+ init_steeltal();
+ harddriv_state::device_start();
+}
+
+void steeltal1_board_device_state::device_start()
+{
+ init_steeltal1();
+ harddriv_state::device_start();
+}
+
+void steeltalp_board_device_state::device_start()
+{
+ init_steeltalp();
+ harddriv_state::device_start();
+}
+
+const device_type STEELTAL_BOARD_DEVICE = &device_creator;
+const device_type STEELTAL1_BOARD_DEVICE = &device_creator;
+const device_type STEELTALP_BOARD_DEVICE = &device_creator;
+
+steeltal_board_device_state::steeltal_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : harddriv_state(mconfig, tag, owner, clock)
+{
+}
+
+machine_config_constructor steeltal_board_device_state::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( steeltal );
+}
+
+/* Street Drivin' */
+
+void strtdriv_board_device_state::device_start()
+{
+ init_strtdriv();
+ harddriv_state::device_start();
+}
+
+const device_type STRTDRIV_BOARD_DEVICE = &device_creator;
+
+strtdriv_board_device_state::strtdriv_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : harddriv_state(mconfig, tag, owner, clock)
+{
+}
+
+machine_config_constructor strtdriv_board_device_state::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( strtdriv );
+}
+
+/* Hard Drivin' Airbourne */
+
+void hdrivair_board_device_state::device_start()
+{
+ init_hdrivair();
+ harddriv_state::device_start();
+}
+
+void hdrivairp_board_device_state::device_start()
+{
+ init_hdrivairp();
+ harddriv_state::device_start();
+}
+
+const device_type HDRIVAIR_BOARD_DEVICE = &device_creator;
+const device_type HDRIVAIRP_BOARD_DEVICE = &device_creator;
+
+hdrivair_board_device_state::hdrivair_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : harddriv_state(mconfig, tag, owner, clock)
+{
+}
+
+machine_config_constructor hdrivair_board_device_state::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( hdrivair );
+}
+
+
+
+static MACHINE_CONFIG_START( harddriv_machine, harddriv_new_state )
+ MCFG_DEVICE_ADD("mainpcb", HARDDRIV_BOARD_DEVICE, 0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( harddrivc_machine, harddriv_new_state )
+ MCFG_DEVICE_ADD("mainpcb", HARDDRIVC_BOARD_DEVICE, 0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( racedriv_machine, harddriv_new_state )
+ MCFG_DEVICE_ADD("mainpcb", RACEDRIV_BOARD_DEVICE, 0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( racedrivb1_machine, harddriv_new_state )
+ MCFG_DEVICE_ADD("mainpcb", RACEDRIVB1_BOARD_DEVICE, 0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( racedrivc_machine, harddriv_new_state )
+ MCFG_DEVICE_ADD("mainpcb", RACEDRIVC_BOARD_DEVICE, 0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( racedrivc1_machine, harddriv_new_state )
+ MCFG_DEVICE_ADD("mainpcb", RACEDRIVC1_BOARD_DEVICE, 0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( stunrun_machine, harddriv_new_state )
+ MCFG_DEVICE_ADD("mainpcb", STUNRUN_BOARD_DEVICE, 0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( strtdriv_machine, harddriv_new_state )
+ MCFG_DEVICE_ADD("mainpcb", STRTDRIV_BOARD_DEVICE, 0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( hdrivair_machine, harddriv_new_state )
+ MCFG_DEVICE_ADD("mainpcb", HDRIVAIR_BOARD_DEVICE, 0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( hdrivairp_machine, harddriv_new_state )
+ MCFG_DEVICE_ADD("mainpcb", HDRIVAIRP_BOARD_DEVICE, 0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( steeltal_machine, harddriv_new_state )
+ MCFG_DEVICE_ADD("mainpcb", STEELTAL_BOARD_DEVICE, 0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( steeltal1_machine, harddriv_new_state )
+ MCFG_DEVICE_ADD("mainpcb", STEELTAL1_BOARD_DEVICE, 0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( steeltalp_machine, harddriv_new_state )
+ MCFG_DEVICE_ADD("mainpcb", STEELTALP_BOARD_DEVICE, 0)
+MACHINE_CONFIG_END
+
+WRITE_LINE_MEMBER(racedriv_board_device_state::tx_a)
+{
+ // passive connection, one way, to both screens
+ mc68681_device* left = machine().device(":leftpcb:duartn68681");
+ mc68681_device* right = machine().device(":rightpcb:duartn68681");
+ left->rx_a_w(state);
+ right->rx_a_w(state);
+}
+
+static MACHINE_CONFIG_START( racedriv_panorama_machine, harddriv_new_state )
+ MCFG_DEVICE_ADD("mainpcb", RACEDRIV_BOARD_DEVICE, 0) // if this is anything except the first screen the partial updates / rasters glitch, mame bug? something assuming primary_screen? other screens suffer from the same issue, not related to new code, you could reproduce it before just by adding a dummy screen
+ MCFG_DEVICE_ADD("leftpcb", RACEDRIVC_PANORAMA_SIDE_BOARD_DEVICE, 0)
+ MCFG_DEVICE_ADD("rightpcb", RACEDRIVC_PANORAMA_SIDE_BOARD_DEVICE, 0)
+
+ MCFG_QUANTUM_TIME(attotime::from_hz(100000))
+ MCFG_DEVICE_MODIFY("mainpcb:duartn68681")
+ MCFG_MC68681_A_TX_CALLBACK(WRITELINE(racedriv_board_device_state,tx_a ))
+
+
+
+MACHINE_CONFIG_END
/*************************************
*
@@ -1554,7 +2110,7 @@ MACHINE_CONFIG_END
*/
ROM_START( harddriv )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136052-7105.200r", 0x000000, 0x010000, CRC(af5d5c3e) SHA1(09ccf4aa933413b71b6a42796d42299e1334902f) )
ROM_LOAD16_BYTE( "136052-7113.210r", 0x000001, 0x010000, CRC(3330a942) SHA1(b9210f6befd875be8bc1dbd31f44d0cb63166748) )
ROM_LOAD16_BYTE( "136052-2106.200s", 0x020000, 0x010000, CRC(a668db0e) SHA1(8ac405a0ba12bac9acabdb64970608d1b2b1a99b) )
@@ -1564,32 +2120,33 @@ ROM_START( harddriv )
ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) )
ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
- ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */
+ ROM_REGION( 0x40000, "mainpcb:serialroms", 0 ) /* 4*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
- ROM_REGION( 0x800, "210e", 0 )
- ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
+ ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
ROM_END
+
ROM_START( harddrivg )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136052-7205.200r", 0x000000, 0x010000, CRC(b50b1968) SHA1(b6fd9f0600cba995bf31fd0f30f15f091bbbfb09) )
ROM_LOAD16_BYTE( "136052-7213.210r", 0x000001, 0x010000, CRC(e6d57108) SHA1(a4eda6db4ec67b1cb8f9bfee17d8adc93675ef8a) )
ROM_LOAD16_BYTE( "136052-4206.200s", 0x020000, 0x010000, CRC(70f78c50) SHA1(6baed202937c455c7c6e4baa74ee7858673a37fc) )
@@ -1599,32 +2156,32 @@ ROM_START( harddrivg )
ROM_LOAD16_BYTE( "136052-4211.200x", 0x0c0000, 0x010000, CRC(20d1b3d5) SHA1(b7c4a2cf6ba729530c24980704989b3a3efb343b) )
ROM_LOAD16_BYTE( "136052-4219.210x", 0x0c0001, 0x010000, CRC(105e7052) SHA1(a8d13c35418e58410cfd74c243b74963f1553068) )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
- ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */
+ ROM_REGION( 0x40000, "mainpcb:serialroms", 0 ) /* 4*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
ROM_END
ROM_START( harddrivj )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136052-7805.200r", 0x000000, 0x010000, CRC(f170c842) SHA1(842cef66646a664300a7e2b827c0bbd53e5f27ad) )
ROM_LOAD16_BYTE( "136052-7813.210r", 0x000001, 0x010000, CRC(e5a3367d) SHA1(96b3a6fb5561fa59d7ac4b840fa1891d02f1bd8c) )
ROM_LOAD16_BYTE( "136052-6806.200s", 0x020000, 0x010000, CRC(bd68696e) SHA1(33b173f210183fef84c4c04b3bff515d79b4924d) )
@@ -1636,32 +2193,32 @@ ROM_START( harddrivj )
ROM_LOAD16_BYTE( "136052-6811.200x", 0x0c0000, 0x010000, CRC(7bc5c8da) SHA1(ac228d6391bc9ac4238f953f9ad6eb93b3ff9958) )
ROM_LOAD16_BYTE( "136052-6819.210x", 0x0c0001, 0x010000, CRC(368b7e17) SHA1(e8742edec6961173df4450073a427cf3b9f3ff57) )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
- ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */
+ ROM_REGION( 0x40000, "mainpcb:serialroms", 0 ) /* 4*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
ROM_END
ROM_START( harddrivb )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136052-7905.200r", 0x000000, 0x010000, CRC(c4379a2e) SHA1(41dc66c1576c591520543343a798e0d80def2188) )
ROM_LOAD16_BYTE( "136052-7913.210r", 0x000001, 0x010000, CRC(1e76fa17) SHA1(80ec1de4c8a4622fb5c65ec3e8c194a8eabacc38) )
ROM_LOAD16_BYTE( "136052-6906.200s", 0x020000, 0x010000, CRC(47c4498b) SHA1(aad3463f29ffc733ab42a7abf739ca698cdd8ec1) )
@@ -1671,32 +2228,32 @@ ROM_START( harddrivb )
ROM_LOAD16_BYTE( "136052-5911.200x", 0x0c0000, 0x010000, CRC(564ac427) SHA1(f71d5a8d06681fc96e753e7cd18e16b32ba6907f) )
ROM_LOAD16_BYTE( "136052-5919.210x", 0x0c0001, 0x010000, CRC(752d9a6d) SHA1(28edb54c7217f5ccdcb2b5614d4e8c2290d96b2a) )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
- ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */
+ ROM_REGION( 0x40000, "mainpcb:serialroms", 0 ) /* 4*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
ROM_END
ROM_START( harddrivb6 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136052-6905.200r", 0x000000, 0x010000, CRC(b1f38593) SHA1(958622128c7c687071211343ef657c38f928e25a) )
ROM_LOAD16_BYTE( "136052-6913.210r", 0x000001, 0x010000, CRC(15eb0da5) SHA1(0200328582c77d4d64e9f7df1f8755f7f4975ac3) )
ROM_LOAD16_BYTE( "136052-6906.200s", 0x020000, 0x010000, CRC(47c4498b) SHA1(aad3463f29ffc733ab42a7abf739ca698cdd8ec1) )
@@ -1706,32 +2263,32 @@ ROM_START( harddrivb6 )
ROM_LOAD16_BYTE( "136052-5911.200x", 0x0c0000, 0x010000, CRC(564ac427) SHA1(f71d5a8d06681fc96e753e7cd18e16b32ba6907f) )
ROM_LOAD16_BYTE( "136052-5919.210x", 0x0c0001, 0x010000, CRC(752d9a6d) SHA1(28edb54c7217f5ccdcb2b5614d4e8c2290d96b2a) )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
- ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */
+ ROM_REGION( 0x40000, "mainpcb:serialroms", 0 ) /* 4*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
ROM_END
ROM_START( harddrivj6 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136052-6805.200r", 0x000000, 0x010000, CRC(e61ce7af) SHA1(38115a5a44f330abf1f7d684e630a1a232769f7c) )
ROM_LOAD16_BYTE( "136052-6813.210r", 0x000001, 0x010000, CRC(adfef1e7) SHA1(dc1bdb5ce9143a94d734ce9ecdf9195589608b65) )
ROM_LOAD16_BYTE( "136052-6806.200s", 0x020000, 0x010000, CRC(bd68696e) SHA1(33b173f210183fef84c4c04b3bff515d79b4924d) )
@@ -1743,32 +2300,32 @@ ROM_START( harddrivj6 )
ROM_LOAD16_BYTE( "136052-6811.200x", 0x0c0000, 0x010000, CRC(7bc5c8da) SHA1(ac228d6391bc9ac4238f953f9ad6eb93b3ff9958) )
ROM_LOAD16_BYTE( "136052-6819.210x", 0x0c0001, 0x010000, CRC(368b7e17) SHA1(e8742edec6961173df4450073a427cf3b9f3ff57) )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
- ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */
+ ROM_REGION( 0x40000, "mainpcb:serialroms", 0 ) /* 4*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
ROM_END
ROM_START( harddrivb5 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136052-5905.200r", 0x000000, 0x010000, CRC(6dd28313) SHA1(c1f860470070dad7d8865aca508ecf5eb92fa8c5) )
ROM_LOAD16_BYTE( "136052-5913.210r", 0x000001, 0x010000, CRC(2e5a006f) SHA1(8a2da1868bbad54b33e993f5bf9ba61186caef5b) )
ROM_LOAD16_BYTE( "136052-5906.200s", 0x020000, 0x010000, CRC(206b59db) SHA1(2bbae0ac4af9cdda44d6d8b5fcf6b3b1c3103796) )
@@ -1778,32 +2335,32 @@ ROM_START( harddrivb5 )
ROM_LOAD16_BYTE( "136052-5911.200x", 0x0c0000, 0x010000, CRC(564ac427) SHA1(f71d5a8d06681fc96e753e7cd18e16b32ba6907f) )
ROM_LOAD16_BYTE( "136052-5919.210x", 0x0c0001, 0x010000, CRC(752d9a6d) SHA1(28edb54c7217f5ccdcb2b5614d4e8c2290d96b2a) )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
- ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */
+ ROM_REGION( 0x40000, "mainpcb:serialroms", 0 ) /* 4*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
ROM_END
ROM_START( harddrivg4 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136052-4205.200r", 0x000000, 0x010000, CRC(94db6d9e) SHA1(98a509daacb9f18c7171246d1782d09a6456e241) )
ROM_LOAD16_BYTE( "136052-4213.210r", 0x000001, 0x010000, CRC(cacaf671) SHA1(7bd0f531402b2f10cb00bb8f7ca0b62eed23bffa) )
ROM_LOAD16_BYTE( "136052-4206.200s", 0x020000, 0x010000, CRC(70f78c50) SHA1(6baed202937c455c7c6e4baa74ee7858673a37fc) )
@@ -1813,32 +2370,32 @@ ROM_START( harddrivg4 )
ROM_LOAD16_BYTE( "136052-4211.200x", 0x0c0000, 0x010000, CRC(20d1b3d5) SHA1(b7c4a2cf6ba729530c24980704989b3a3efb343b) )
ROM_LOAD16_BYTE( "136052-4219.210x", 0x0c0001, 0x010000, CRC(105e7052) SHA1(a8d13c35418e58410cfd74c243b74963f1553068) )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
- ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */
+ ROM_REGION( 0x40000, "mainpcb:serialroms", 0 ) /* 4*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
ROM_END
ROM_START( harddriv3 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136052-3105.200r", 0x000000, 0x010000, CRC(a42a2c69) SHA1(66233f25533106aab69df21db69f96368f1399a9) )
ROM_LOAD16_BYTE( "136052-3113.210r", 0x000001, 0x010000, CRC(358995b5) SHA1(f18c0da58ec7befefc61d5f0d35787516b775c92) )
ROM_LOAD16_BYTE( "136052-2106.200s", 0x020000, 0x010000, CRC(a668db0e) SHA1(8ac405a0ba12bac9acabdb64970608d1b2b1a99b) )
@@ -1848,32 +2405,32 @@ ROM_START( harddriv3 )
ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) )
ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
- ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */
+ ROM_REGION( 0x40000, "mainpcb:serialroms", 0 ) /* 4*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
ROM_END
ROM_START( harddriv2 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136052-2105.200r", 0x000000, 0x010000, CRC(967903b9) SHA1(4363f3b3f08d00819f47a3682462fd0e5dc4e0ac) )
ROM_LOAD16_BYTE( "136052-2113.210r", 0x000001, 0x010000, CRC(c87f7067) SHA1(3d85d2ba818739ed05086502cd8e57438251b20b) )
ROM_LOAD16_BYTE( "136052-2106.200s", 0x020000, 0x010000, CRC(a668db0e) SHA1(8ac405a0ba12bac9acabdb64970608d1b2b1a99b) )
@@ -1883,32 +2440,32 @@ ROM_START( harddriv2 )
ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) )
ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
- ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */
+ ROM_REGION( 0x40000, "mainpcb:serialroms", 0 ) /* 4*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
ROM_END
ROM_START( harddriv1 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136052-1105.200r", 0x000000, 0x010000, CRC(1dfda789) SHA1(83be0d66fe21e974f8d4582b0ab60245f1db7e55) )
ROM_LOAD16_BYTE( "136052-1113.210r", 0x000001, 0x010000, CRC(db2f6593) SHA1(864ea5604cea2507b180a91b35e349d3924bf9bc) )
ROM_LOAD16_BYTE( "136052-1106.200s", 0x020000, 0x010000, CRC(e82210fd) SHA1(916e674017f5187531c2de7961791c060f8412c7) )
@@ -1918,32 +2475,32 @@ ROM_START( harddriv1 )
ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) )
ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) )
ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
- ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */
+ ROM_REGION( 0x40000, "mainpcb:serialroms", 0 ) /* 4*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-1125.45a", 0x020000, 0x010000, CRC(ebf391af) SHA1(3c4097db8d625b994b39d46fe652585a74378ca0) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "harddriv.200e", 0x000000, 0x000800, CRC(aed020f7) SHA1(494fc2eb74b4924c07f18bef5e69efd5476deec2) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "harddriv.210e", 0x000000, 0x000800, CRC(4a91835b) SHA1(96f0087ba7e577748758a2fbe61225048862bb65) )
ROM_END
ROM_START( harddrivc )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136068-2102.200r", 0x000000, 0x010000, CRC(6252048b) SHA1(64caf3adfad6965768fc6d39a8bcde62fe6dfa9e) )
ROM_LOAD16_BYTE( "136068-2101.210r", 0x000001, 0x010000, CRC(4805ba06) SHA1(e0c2d935ced05b8162f2925520422184a81d5294) )
ROM_LOAD16_BYTE( "136068-2104.200s", 0x020000, 0x010000, CRC(8246f945) SHA1(633b6c9a5d3e33d3035ccdb7b6ad883c334a4db9) )
@@ -1953,32 +2510,32 @@ ROM_START( harddrivc )
ROM_LOAD16_BYTE( "136068-1114.200x", 0x0c0000, 0x010000, CRC(293c153b) SHA1(6300a50766b19ad203b5c7da28d51bf22054b39e) )
ROM_LOAD16_BYTE( "136068-1113.210x", 0x0c0001, 0x010000, CRC(5630390d) SHA1(cd1932cee70cddd1fb2110d1aeebb573a13f1339) )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) )
ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
- ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */
+ ROM_REGION( 0x40000, "mainpcb:serialroms", 0 ) /* 4*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "harddrivc.200e", 0x000000, 0x000800, CRC(560a0106) SHA1(7295a4f1255869c43c3cf146ddebaea62c30b850) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "harddrivc.210e", 0x000000, 0x000800, CRC(208bba53) SHA1(c9a36015a66917df528b84d20d255b6b96a90e76) )
ROM_END
ROM_START( harddrivcg )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136068-2202.200r", 0x000000, 0x010000, CRC(ea09bdc2) SHA1(9e38ed0a47a2bfb6b80cbf1e0b3e891b94f30c10) )
ROM_LOAD16_BYTE( "136068-2201.210r", 0x000001, 0x010000, CRC(a5e9947f) SHA1(75973346c9399752d8ae82fbada3a24c6d5fec94) )
ROM_LOAD16_BYTE( "136068-2204.200s", 0x020000, 0x010000, CRC(65792c94) SHA1(89e93cf0d2afc4bd8a01155ba908c9aa7149dc78) )
@@ -1988,32 +2545,32 @@ ROM_START( harddrivcg )
ROM_LOAD16_BYTE( "136068-1114.200x", 0x0c0000, 0x010000, CRC(293c153b) SHA1(6300a50766b19ad203b5c7da28d51bf22054b39e) )
ROM_LOAD16_BYTE( "136068-1113.210x", 0x0c0001, 0x010000, CRC(5630390d) SHA1(cd1932cee70cddd1fb2110d1aeebb573a13f1339) )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) )
ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
- ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */
+ ROM_REGION( 0x40000, "mainpcb:serialroms", 0 ) /* 4*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "harddrivc.200e", 0x000000, 0x000800, CRC(560a0106) SHA1(7295a4f1255869c43c3cf146ddebaea62c30b850) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "harddrivc.210e", 0x000000, 0x000800, CRC(208bba53) SHA1(c9a36015a66917df528b84d20d255b6b96a90e76) )
ROM_END
ROM_START( harddrivcb )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136068-2102.200r", 0x000000, 0x010000, CRC(6252048b) SHA1(64caf3adfad6965768fc6d39a8bcde62fe6dfa9e) )
ROM_LOAD16_BYTE( "136068-2101.210r", 0x000001, 0x010000, CRC(4805ba06) SHA1(e0c2d935ced05b8162f2925520422184a81d5294) )
ROM_LOAD16_BYTE( "136068-2104.200s", 0x020000, 0x010000, CRC(8246f945) SHA1(633b6c9a5d3e33d3035ccdb7b6ad883c334a4db9) )
@@ -2023,32 +2580,32 @@ ROM_START( harddrivcb )
ROM_LOAD16_BYTE( "136068-2914.200x", 0x0c0000, 0x010000, CRC(dd2998a5) SHA1(36c71549d114309b9072ced83ed149cad1d23646) )
ROM_LOAD16_BYTE( "136068-2913.210x", 0x0c0001, 0x010000, CRC(a211754d) SHA1(b93d4867f664caa76f2170ef0934194de29a5516) )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) )
ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
- ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */
+ ROM_REGION( 0x40000, "mainpcb:serialroms", 0 ) /* 4*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "harddrivc.200e", 0x000000, 0x000800, CRC(560a0106) SHA1(7295a4f1255869c43c3cf146ddebaea62c30b850) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "harddrivc.210e", 0x000000, 0x000800, CRC(208bba53) SHA1(c9a36015a66917df528b84d20d255b6b96a90e76) )
ROM_END
ROM_START( harddrivc1 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136068-1102.200r", 0x000000, 0x010000, CRC(f1d3779f) SHA1(1ab84fc920f6810aa7c1af80b0472ea17d07e58b) )
ROM_LOAD16_BYTE( "136068-1101.210r", 0x000001, 0x010000, CRC(3ea4d3d9) SHA1(3901e8c07bed35bf6a55ab92f5c7eb9335675792) )
ROM_LOAD16_BYTE( "136068-1104.200s", 0x020000, 0x010000, CRC(34133511) SHA1(71c56607cecd379761f700d181f6e91e7bb6fdfc) )
@@ -2058,32 +2615,32 @@ ROM_START( harddrivc1 )
ROM_LOAD16_BYTE( "136068-1114.200x", 0x0c0000, 0x010000, CRC(293c153b) SHA1(6300a50766b19ad203b5c7da28d51bf22054b39e) )
ROM_LOAD16_BYTE( "136068-1113.210x", 0x0c0001, 0x010000, CRC(5630390d) SHA1(cd1932cee70cddd1fb2110d1aeebb573a13f1339) )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) )
ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136052-1101.10h", 0x000000, 0x010000, CRC(1b77f171) SHA1(10434e492e4e9de5cd8543271914d5ba37c52b50) )
ROM_LOAD16_BYTE( "136052-1103.10k", 0x000001, 0x010000, CRC(e50bec32) SHA1(30c504c730e8e568e78e06c756a23b8923e85b4b) )
ROM_LOAD16_BYTE( "136052-1102.10j", 0x020000, 0x010000, CRC(998d3da2) SHA1(6ed560c2132e33858c91b1f4ab0247399665b5fd) )
ROM_LOAD16_BYTE( "136052-1104.10l", 0x020001, 0x010000, CRC(bc59a2b7) SHA1(7dfde5bbaa0cf349b1ef5d6b076baded7330376a) )
- ROM_REGION( 0x40000, "serialroms", 0 ) /* 4*128k for audio serial ROMs */
+ ROM_REGION( 0x40000, "mainpcb:serialroms", 0 ) /* 4*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "harddrivc.200e", 0x000000, 0x000800, CRC(560a0106) SHA1(7295a4f1255869c43c3cf146ddebaea62c30b850) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "harddrivc.210e", 0x000000, 0x000800, CRC(208bba53) SHA1(c9a36015a66917df528b84d20d255b6b96a90e76) )
ROM_END
ROM_START( stunrun )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
ROM_LOAD16_BYTE( "136070-6104.200s", 0x020000, 0x010000, CRC(f469f91c) SHA1(488ea6251ff4028edaf00bb1ded74cefdc71a373) )
@@ -2097,11 +2654,11 @@ ROM_START( stunrun )
ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
- ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */
+ ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 ) /* 64k for 6502 code */
ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
ROM_CONTINUE( 0x004000, 0x00c000 )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
@@ -2109,22 +2666,22 @@ ROM_START( stunrun )
ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
- ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */
+ ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 ) /* 256k for ADPCM samples */
ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
ROM_END
ROM_START( stunrunj )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136070-3402.200r", 0x000000, 0x010000, CRC(d8d56923) SHA1(248b22dab791c2d9ee6e6097dac9f3bf85d572be) )
ROM_LOAD16_BYTE( "136070-3401.210r", 0x000001, 0x010000, CRC(ce11126c) SHA1(cf27b56103048cc23dc6763763b7419583a27c76) )
ROM_LOAD16_BYTE( "136070-7404.200s", 0x020000, 0x010000, CRC(81da3e74) SHA1(38864aac479a8927d168ee977fd0981a7926d0fd) )
@@ -2138,11 +2695,11 @@ ROM_START( stunrunj )
ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
- ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */
+ ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 ) /* 64k for 6502 code */
ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
ROM_CONTINUE( 0x004000, 0x00c000 )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
@@ -2150,22 +2707,22 @@ ROM_START( stunrunj )
ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
- ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */
+ ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 ) /* 256k for ADPCM samples */
ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
ROM_END
ROM_START( stunrun5 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
ROM_LOAD16_BYTE( "136070-5104.200s", 0x020000, 0x010000, CRC(d5c601fe) SHA1(ab61e11723ab9b92fb98b6f8e520a7b323caae64) )
@@ -2179,11 +2736,11 @@ ROM_START( stunrun5 )
ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
- ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */
+ ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 ) /* 64k for 6502 code */
ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
ROM_CONTINUE( 0x004000, 0x00c000 )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
@@ -2191,22 +2748,22 @@ ROM_START( stunrun5 )
ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
- ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */
+ ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 ) /* 256k for ADPCM samples */
ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
ROM_END
ROM_START( stunrune )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
ROM_LOAD16_BYTE( "136070-5004.200s", 0x020000, 0x010000, CRC(c2e4bde8) SHA1(766242455b0be6dc7b698cc6fe86d90991ca2e0a) )
@@ -2220,11 +2777,11 @@ ROM_START( stunrune )
ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
- ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */
+ ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 ) /* 64k for 6502 code */
ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
ROM_CONTINUE( 0x004000, 0x00c000 )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
@@ -2232,22 +2789,22 @@ ROM_START( stunrune )
ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
- ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */
+ ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 ) /* 256k for ADPCM samples */
ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
ROM_END
ROM_START( stunrun4 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
ROM_LOAD16_BYTE( "136070-4104.200s", 0x020000, 0x010000, CRC(62c7700b) SHA1(31d7a39df7353e60b806c204bfdd75c06b17c984) )
@@ -2261,11 +2818,11 @@ ROM_START( stunrun4 )
ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
- ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */
+ ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 ) /* 64k for 6502 code */
ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
ROM_CONTINUE( 0x004000, 0x00c000 )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
@@ -2273,22 +2830,22 @@ ROM_START( stunrun4 )
ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
- ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */
+ ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 ) /* 256k for ADPCM samples */
ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
ROM_END
ROM_START( stunrun3 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
ROM_LOAD16_BYTE( "136070-2104.200s", 0x020000, 0x010000, CRC(6acdeeaa) SHA1(a4cbe648ad2fee3bb945fbc8055b76be1f5c03d1) )
@@ -2302,11 +2859,11 @@ ROM_START( stunrun3 )
ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
- ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */
+ ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 ) /* 64k for 6502 code */
ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
ROM_CONTINUE( 0x004000, 0x00c000 )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
@@ -2314,22 +2871,22 @@ ROM_START( stunrun3 )
ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
- ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */
+ ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 ) /* 256k for ADPCM samples */
ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
ROM_END
ROM_START( stunrun3e )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
ROM_LOAD16_BYTE( "136070-3004.200s", 0x020000, 0x010000, CRC(d9474678) SHA1(090b78f9e9d2ecf4218821fc102861df1e27d95a) )
@@ -2343,11 +2900,11 @@ ROM_START( stunrun3e )
ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
- ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */
+ ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 ) /* 64k for 6502 code */
ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
ROM_CONTINUE( 0x004000, 0x00c000 )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
@@ -2355,22 +2912,22 @@ ROM_START( stunrun3e )
ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
- ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */
+ ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 ) /* 256k for ADPCM samples */
ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
ROM_END
ROM_START( stunrun2 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
ROM_LOAD16_BYTE( "136070-2104.200s", 0x020000, 0x010000, CRC(6acdeeaa) SHA1(a4cbe648ad2fee3bb945fbc8055b76be1f5c03d1) )
@@ -2384,11 +2941,11 @@ ROM_START( stunrun2 )
ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
- ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */
+ ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 ) /* 64k for 6502 code */
ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
ROM_CONTINUE( 0x004000, 0x00c000 )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
@@ -2396,22 +2953,22 @@ ROM_START( stunrun2 )
ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
- ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */
+ ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 ) /* 256k for ADPCM samples */
ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
ROM_END
ROM_START( stunrun2e )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
ROM_LOAD16_BYTE( "136070-2004.200s", 0x020000, 0x010000, CRC(30303326) SHA1(49a279b5b02af97395dfb8c66410319a807aa4b9) )
@@ -2425,11 +2982,11 @@ ROM_START( stunrun2e )
ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
- ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */
+ ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 ) /* 64k for 6502 code */
ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
ROM_CONTINUE( 0x004000, 0x00c000 )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
@@ -2437,22 +2994,22 @@ ROM_START( stunrun2e )
ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
- ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */
+ ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 ) /* 256k for ADPCM samples */
ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
ROM_END
ROM_START( stunrun0 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
ROM_LOAD16_BYTE( "136070-0304.200s", 0x020000, 0x010000, CRC(e7968b1b) SHA1(f2e5b4f64e553041abbe2610968f59cca425a4d4) )
@@ -2466,11 +3023,11 @@ ROM_START( stunrun0 )
ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
- ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */
+ ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 ) /* 64k for 6502 code */
ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
ROM_CONTINUE( 0x004000, 0x00c000 )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
@@ -2478,22 +3035,22 @@ ROM_START( stunrun0 )
ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
- ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */
+ ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 ) /* 256k for ADPCM samples */
ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
ROM_END
ROM_START( stunrunp )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136070-2102.200r", 0x000000, 0x010000, CRC(e0ed54d8) SHA1(15850568d8308b6499cbe55b5d8308041d906a29) )
ROM_LOAD16_BYTE( "136070-2101.210r", 0x000001, 0x010000, CRC(3008bcf8) SHA1(9d3a20b639969bab68441f76467ed60e395c10e3) )
ROM_LOAD16_BYTE( "prog-hi0.s20", 0x020000, 0x010000, CRC(0be15a99) SHA1(52b152b23af305e95765c72052bb7aba846510d6) )
@@ -2507,11 +3064,11 @@ ROM_START( stunrunp )
ROM_LOAD16_BYTE( "136070-2112.200w", 0x0a0000, 0x010000, CRC(3f896aaf) SHA1(817136ddc37566108de15f6bfedc6e0da13a2df2) )
ROM_LOAD16_BYTE( "136070-2111.210w", 0x0a0001, 0x010000, CRC(47f010ad) SHA1(a2587ce1d01c78f1d757fb3e4512be9655d17f9c) )
- ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */
+ ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 ) /* 64k for 6502 code */
ROM_LOAD( "136070-2123.10c", 0x010000, 0x004000, CRC(121ab09a) SHA1(c26b8ddbcb011416e6ab695980d2cf37e672e973) )
ROM_CONTINUE( 0x004000, 0x00c000 )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136070-2121.90h", 0x000000, 0x010000, CRC(0ebf8e58) SHA1(b6bf3e020b29a34ef3eaca6b5e1f17bb89fdc476) )
ROM_LOAD16_BYTE( "136070-2118.90k", 0x000001, 0x010000, CRC(fb98abaf) SHA1(6a141effee644f34634b57d1fe4c03f56981f966) )
ROM_LOAD16_BYTE( "136070-2122.10h", 0x020000, 0x010000, CRC(bd5380bd) SHA1(e1e2b3c9f9bfc988f0dcc9a9f520f51957e13a97) )
@@ -2519,22 +3076,22 @@ ROM_START( stunrunp )
ROM_LOAD16_BYTE( "136070-2120.9h", 0x040000, 0x010000, CRC(55a30976) SHA1(045a04d3d24e783a6a643cab08e8974ee5dc2128) )
ROM_LOAD16_BYTE( "136070-2117.9k", 0x040001, 0x010000, CRC(d4a9696d) SHA1(574e5f3758ac2e18423ae350e8509aa135ca6da0) )
- ROM_REGION( 0x40000, "jsa:oki1", 0 ) /* 256k for ADPCM samples */
+ ROM_REGION( 0x40000, "mainpcb:jsa:oki1", 0 ) /* 256k for ADPCM samples */
ROM_LOAD( "136070-2124.1fh", 0x000000, 0x010000, CRC(4dc14fe8) SHA1(c7cc00715f6687ced9d69ec793d6e9d4bc1b5287) )
ROM_LOAD( "136070-2125.1ef", 0x010000, 0x010000, CRC(cbdabbcc) SHA1(4d102a5677d96e68d27c1960dc3a237ae6751c2f) )
ROM_LOAD( "136070-2126.1de", 0x020000, 0x010000, CRC(b973d9d1) SHA1(a74a3c981497a9c5557f793d49381a9b776cb025) )
ROM_LOAD( "136070-2127.1cd", 0x030000, 0x010000, CRC(3e419f4e) SHA1(e382e047f02591a934a53e5fbf07cccf285abb29) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
ROM_END
ROM_START( racedriv )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136077-5002.200r", 0x000000, 0x010000, CRC(0a78adca) SHA1(a44722340ff7c99253107be092bec2e87cae340b) )
ROM_LOAD16_BYTE( "136077-5001.210r", 0x000001, 0x010000, CRC(74b4cd49) SHA1(48fc4344c092c9eb14249874ac305b87bba53e7e) )
ROM_LOAD16_BYTE( "136077-5004.200s", 0x020000, 0x010000, CRC(c0cbdf4e) SHA1(8c7f4f79e90dc7206d9d83d588822000a7a53c52) )
@@ -2552,40 +3109,40 @@ ROM_START( racedriv )
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) )
ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
ROM_END
ROM_START( racedrivb )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136077-5002.200r", 0x000000, 0x010000, CRC(0a78adca) SHA1(a44722340ff7c99253107be092bec2e87cae340b) )
ROM_LOAD16_BYTE( "136077-5001.210r", 0x000001, 0x010000, CRC(74b4cd49) SHA1(48fc4344c092c9eb14249874ac305b87bba53e7e) )
ROM_LOAD16_BYTE( "136077-5004.200s", 0x020000, 0x010000, CRC(c0cbdf4e) SHA1(8c7f4f79e90dc7206d9d83d588822000a7a53c52) )
@@ -2603,40 +3160,40 @@ ROM_START( racedrivb )
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) )
ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
ROM_END
ROM_START( racedrivg )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136077-5202.200r", 0x000000, 0x010000, CRC(69016b69) SHA1(8da1314b4b6da6fc95479b9034190181bf778b25) )
ROM_LOAD16_BYTE( "136077-5201.210r", 0x000001, 0x010000, CRC(439a1ce7) SHA1(fc376c654c494d2895bcf85d5d8a9d6f17b6887e) )
ROM_LOAD16_BYTE( "136077-5204.200s", 0x020000, 0x010000, CRC(15df2b3d) SHA1(49235687b7be684dcd491b854f80c1d849894956) )
@@ -2654,40 +3211,40 @@ ROM_START( racedrivg )
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) )
ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
ROM_END
ROM_START( racedriv4 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136077-4002.200r", 0x000000, 0x010000, CRC(afe1beb5) SHA1(66dba58f2a02eaa2d6306e53adffb662a8021031) )
ROM_LOAD16_BYTE( "136077-4001.210r", 0x000001, 0x010000, CRC(8a449e44) SHA1(03800b96a3992baa4bd37db20e559e08b12e55d1) )
ROM_LOAD16_BYTE( "136077-4004.200s", 0x020000, 0x010000, CRC(6d886150) SHA1(514de55de66a2b7fb14d6e2d896911e1b1af62f2) )
@@ -2705,40 +3262,40 @@ ROM_START( racedriv4 )
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) )
ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
ROM_END
ROM_START( racedrivb4 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136077-4002.200r", 0x000000, 0x010000, CRC(afe1beb5) SHA1(66dba58f2a02eaa2d6306e53adffb662a8021031) )
ROM_LOAD16_BYTE( "136077-4001.210r", 0x000001, 0x010000, CRC(8a449e44) SHA1(03800b96a3992baa4bd37db20e559e08b12e55d1) )
ROM_LOAD16_BYTE( "136077-4004.200s", 0x020000, 0x010000, CRC(6d886150) SHA1(514de55de66a2b7fb14d6e2d896911e1b1af62f2) )
@@ -2756,40 +3313,40 @@ ROM_START( racedrivb4 )
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) )
ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
ROM_END
ROM_START( racedrivg4 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136077-4202.200r", 0x000000, 0x010000, CRC(a8c7e15e) SHA1(6aa4b819e5c8562c8eef92a411b2dc91ed35ae4c) )
ROM_LOAD16_BYTE( "136077-4201.210r", 0x000001, 0x010000, CRC(1dfa4df2) SHA1(1db0676f0ff1e7996c9791b041d9cd4ca9c70261) )
ROM_LOAD16_BYTE( "136077-4204.200s", 0x020000, 0x010000, CRC(29eea8c1) SHA1(1a8020efc0b963bbd05bd33dc3176db7c3234fcc) )
@@ -2807,40 +3364,40 @@ ROM_START( racedrivg4 )
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
ROM_LOAD16_BYTE( "136077-4015.210y", 0x0e0001, 0x010000, CRC(725806f3) SHA1(0fa4601465dc94f27c71db789ad625bbcd254169) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136077-4030.30e", 0x000000, 0x010000, CRC(4207c784) SHA1(5ec410bd75c281ac57d9856d08ce65431f3af994) )
ROM_LOAD16_BYTE( "136077-4031.10e", 0x000001, 0x010000, CRC(796486b3) SHA1(937e27c012c5fb457bee1b43fc8e075b3e9405b4) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
ROM_END
ROM_START( racedriv3 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136077-3002.200r", 0x000000, 0x010000, CRC(78771253) SHA1(88fdae99eb4feb40db8ad171b3435315db3adedb) )
ROM_LOAD16_BYTE( "136077-3001.210r", 0x000001, 0x010000, CRC(c75373a4) SHA1(d2f14190218cfedf4478806a26c77edd4d7c73eb) )
ROM_LOAD16_BYTE( "136077-2004.200s", 0x020000, 0x010000, CRC(4eb19582) SHA1(52359d7839f3459aec4fdc16a659a29fa60feee4) )
@@ -2858,40 +3415,40 @@ ROM_START( racedriv3 )
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) )
ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
ROM_END
ROM_START( racedriv2 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136077-2002.200r", 0x000000, 0x010000, CRC(6b440e10) SHA1(8074a1de01e2cdc497a51339f9c05329d6f540b0) )
ROM_LOAD16_BYTE( "136077-2001.210r", 0x000001, 0x010000, CRC(eee12973) SHA1(0cd2e88c431d08fba5a73c903327f39f8692f3aa) )
ROM_LOAD16_BYTE( "136077-2004.200s", 0x020000, 0x010000, CRC(4eb19582) SHA1(52359d7839f3459aec4fdc16a659a29fa60feee4) )
@@ -2909,40 +3466,40 @@ ROM_START( racedriv2 )
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) )
ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
ROM_END
ROM_START( racedriv1 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136077-1002.200r", 0x000000, 0x010000, CRC(d39f6d53) SHA1(c278cd4109a65304a21dd1d8ba27375713a8b107) )
ROM_LOAD16_BYTE( "136077-1001.210r", 0x000001, 0x010000, CRC(e29e011c) SHA1(7044e7f9c8551309b5867a06672796411007a427) )
ROM_LOAD16_BYTE( "136077-1004.200s", 0x020000, 0x010000, CRC(809831e8) SHA1(681160deceff4df0f000c23f8514086dbbcc0c8d) )
@@ -2960,40 +3517,40 @@ ROM_START( racedriv1 )
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) )
ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
ROM_END
ROM_START( racedrivg1 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136077-1202.200r", 0x000000, 0x010000, CRC(bd363903) SHA1(8f0937725adabf5ee9e0ac015c83916e2575670a) )
ROM_LOAD16_BYTE( "136077-1201.210r", 0x000001, 0x010000, CRC(748c3be4) SHA1(ddf149f333d23e9c782ae447f6fb3f780680b3f5) )
ROM_LOAD16_BYTE( "136077-1204.200s", 0x020000, 0x010000, CRC(aef103bb) SHA1(52831858d3a45ad00e156c5b2a11e7fddf06bead) )
@@ -3011,40 +3568,40 @@ ROM_START( racedrivg1 )
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-2021.10h", 0x000000, 0x010000, CRC(8b2a98da) SHA1(264b7ec218e423ea85c54e586f8ff091f033d472) )
ROM_LOAD16_BYTE( "136077-2023.10k", 0x000001, 0x010000, CRC(c6d83d38) SHA1(e42c186a7fc0d88982b26eafdb834406b4ed3c8a) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) )
ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
ROM_END
ROM_START( racedrivb1 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136077-2002.200r", 0x000000, 0x010000, CRC(6b440e10) SHA1(8074a1de01e2cdc497a51339f9c05329d6f540b0) )
ROM_LOAD16_BYTE( "136077-2001.210r", 0x000001, 0x010000, CRC(eee12973) SHA1(0cd2e88c431d08fba5a73c903327f39f8692f3aa) )
ROM_LOAD16_BYTE( "136077-1104.200s", 0x020000, 0x010000, CRC(a9495f53) SHA1(68e7d983c0e1a84f5ad0743a230e6126169a6fd6) )
@@ -3062,40 +3619,40 @@ ROM_START( racedrivb1 )
ROM_LOAD16_BYTE( "136077-1016.200y", 0x0e0000, 0x010000, CRC(e83a9c99) SHA1(1d4093902133bb6da981f294e6947544c3564393) )
ROM_LOAD16_BYTE( "136077-1015.210y", 0x0e0001, 0x010000, CRC(c51f2702) SHA1(2279f15c4c09af92fe9b87dc0ed842092ca64906) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136077-1030.30e", 0x000000, 0x010000, CRC(ff575b3d) SHA1(7f2202db7ec9dac06499c9535b4852defb192eb3) )
ROM_LOAD16_BYTE( "136077-1031.10e", 0x000001, 0x010000, CRC(2ae2ac35) SHA1(e2a050a6e24dc6fef86b3556b69b2c3e2993febc) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
ROM_END
ROM_START( racedrivc )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136078-5002.200r", 0x000000, 0x010000, CRC(ae8f79bd) SHA1(054f2d1948d6d03832c4557c3dd7667c0784716d) )
ROM_LOAD16_BYTE( "136078-5001.210r", 0x000001, 0x010000, CRC(ad896e7f) SHA1(7b047f0c972fac075db00faf19cdf9ccdcef5c63) )
ROM_LOAD16_BYTE( "136078-5004.200s", 0x020000, 0x010000, CRC(b8650bee) SHA1(a9905081e622e4a4fcec9aa08b87566ecdb9198b) )
@@ -3113,40 +3670,40 @@ ROM_START( racedrivc )
ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedrivc.200e", 0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedrivc.210e", 0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
ROM_END
ROM_START( racedrivcb )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136078-5002.200r", 0x000000, 0x010000, CRC(ae8f79bd) SHA1(054f2d1948d6d03832c4557c3dd7667c0784716d) )
ROM_LOAD16_BYTE( "136078-5001.210r", 0x000001, 0x010000, CRC(ad896e7f) SHA1(7b047f0c972fac075db00faf19cdf9ccdcef5c63) )
ROM_LOAD16_BYTE( "136078-5004.200s", 0x020000, 0x010000, CRC(b8650bee) SHA1(a9905081e622e4a4fcec9aa08b87566ecdb9198b) )
@@ -3164,40 +3721,40 @@ ROM_START( racedrivcb )
ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedrivc.200e", 0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedrivc.210e", 0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
ROM_END
ROM_START( racedrivcg )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136078-5202.200r", 0x000000, 0x010000, CRC(c37b5281) SHA1(1ff7a879853dd1e10881fd56e8ae0962676ef319) )
ROM_LOAD16_BYTE( "136078-5201.210r", 0x000001, 0x010000, CRC(80072dad) SHA1(ba33465f639431cf6e9ce377ed31e538a0304dc5) )
ROM_LOAD16_BYTE( "136078-5204.200s", 0x020000, 0x010000, CRC(5d45fbd2) SHA1(5279c814c2876c642630fed5c114eccea6d703b0) )
@@ -3215,40 +3772,40 @@ ROM_START( racedrivcg )
ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedrivc.200e", 0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedrivc.210e", 0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
ROM_END
ROM_START( racedrivc4 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136078-4002.200r", 0x000000, 0x010000, CRC(d6522b97) SHA1(0e4c4ce9f6147cc3878a3f1e60cf58f00bfe9e4c) )
ROM_LOAD16_BYTE( "136078-4001.210r", 0x000001, 0x010000, CRC(d658a8ed) SHA1(59d823d8150de62ba5c4fddf87584bd2044e87f7) )
ROM_LOAD16_BYTE( "136078-4004.200s", 0x020000, 0x010000, CRC(c8520b01) SHA1(f0bd0505cbf24f7e43dc2e775ecbbf0db5419b6e) )
@@ -3266,40 +3823,40 @@ ROM_START( racedrivc4 )
ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedrivc.200e", 0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedrivc.210e", 0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
ROM_END
ROM_START( racedrivcb4 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136078-4002.200r", 0x000000, 0x010000, CRC(d6522b97) SHA1(0e4c4ce9f6147cc3878a3f1e60cf58f00bfe9e4c) )
ROM_LOAD16_BYTE( "136078-4001.210r", 0x000001, 0x010000, CRC(d658a8ed) SHA1(59d823d8150de62ba5c4fddf87584bd2044e87f7) )
ROM_LOAD16_BYTE( "136078-4004.200s", 0x020000, 0x010000, CRC(c8520b01) SHA1(f0bd0505cbf24f7e43dc2e775ecbbf0db5419b6e) )
@@ -3317,40 +3874,40 @@ ROM_START( racedrivcb4 )
ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedrivc.200e", 0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedrivc.210e", 0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
ROM_END
ROM_START( racedrivcg4 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136078-4202.200r", 0x000000, 0x010000, CRC(be58215d) SHA1(0497efbd696e8d2db4e42678dd6cfe6cd3f78688) )
ROM_LOAD16_BYTE( "136078-4201.210r", 0x000001, 0x010000, CRC(609c5f23) SHA1(a66e1f10f8ad9d25fca5b681ad543967287f2036) )
ROM_LOAD16_BYTE( "136078-4204.200s", 0x020000, 0x010000, CRC(2e590c4f) SHA1(dcb56bacdde17eade5b347d5549cec1de89774e6) )
@@ -3368,40 +3925,40 @@ ROM_START( racedrivcg4 )
ROM_LOAD16_BYTE( "136078-4016.200y", 0x0e0000, 0x010000, CRC(aa296776) SHA1(991e33568e47a82cb183724f7df1f835850c30fa) )
ROM_LOAD16_BYTE( "136078-4015.210y", 0x0e0001, 0x010000, CRC(030c803d) SHA1(bb249c9d1d28f6851a529b93c4f96d80665f2bce) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedrivc.200e", 0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedrivc.210e", 0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
ROM_END
ROM_START( racedrivc2 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136078-2002.200r", 0x000000, 0x010000, CRC(669fe6fe) SHA1(1775ee3ef4817f553113772cf0fb35cbbe2e73a5) )
ROM_LOAD16_BYTE( "136078-2001.210r", 0x000001, 0x010000, CRC(9312fd5f) SHA1(9dd1b30ebceedf50fb18d744540e2003a8110d09) )
ROM_LOAD16_BYTE( "136078-1004.200s", 0x020000, 0x010000, CRC(4a1beb65) SHA1(3a4e3dd07a1415aef27e8bbebe0503296dfc7586) )
@@ -3419,40 +3976,40 @@ ROM_START( racedrivc2 )
ROM_LOAD16_BYTE( "136078-1015.210y", 0x0e0001, 0x010000, CRC(64dd6040) SHA1(bcadf4f1d9a0685ca39af903d3342d590850513c) )
ROM_LOAD16_BYTE( "136078-1016.200y", 0x0e0000, 0x010000, CRC(a2a0ed28) SHA1(6f308a38594f7e54ebdd6983d28664ba595bc525) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedrivc.200e", 0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedrivc.210e", 0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
ROM_END
ROM_START( racedrivc1 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136078-1002.200r", 0x000000, 0x010000, CRC(ed997f08) SHA1(9512f347120174345dbe8c756e5c239fdce438a5) )
ROM_LOAD16_BYTE( "136078-1001.210r", 0x000001, 0x010000, CRC(5540ee7d) SHA1(f1d16cfa20b61f1cf075e3275ea4af0b46aa5470) )
ROM_LOAD16_BYTE( "136078-1004.200s", 0x020000, 0x010000, CRC(4a1beb65) SHA1(3a4e3dd07a1415aef27e8bbebe0503296dfc7586) )
@@ -3470,34 +4027,34 @@ ROM_START( racedrivc1 )
ROM_LOAD16_BYTE( "136078-1015.210y", 0x0e0001, 0x010000, CRC(64dd6040) SHA1(bcadf4f1d9a0685ca39af903d3342d590850513c) )
ROM_LOAD16_BYTE( "136078-1016.200y", 0x0e0000, 0x010000, CRC(a2a0ed28) SHA1(6f308a38594f7e54ebdd6983d28664ba595bc525) )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) )
ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) )
- ROM_REGION16_BE( 0x60000, "user1", 0 ) /* 384k for ADSP object ROM */
+ ROM_REGION16_BE( 0x60000, "mainpcb:user1", 0 ) /* 384k for ADSP object ROM */
ROM_LOAD16_BYTE( "136077-1021.10h", 0x000000, 0x010000, CRC(9831fe73) SHA1(5215ee89a0014399b7d829e443b16590a4679844) )
ROM_LOAD16_BYTE( "136077-1023.10k", 0x000001, 0x010000, CRC(74bf0e0e) SHA1(a3d91ecf13c3619e073324517a4a5afaae831982) )
ROM_LOAD16_BYTE( "136077-1022.10j", 0x020000, 0x010000, CRC(c0393c31) SHA1(31726c01eb0d4650936908c90d45161197b7efba) )
ROM_LOAD16_BYTE( "136077-1024.10l", 0x020001, 0x010000, CRC(1e2fb25f) SHA1(4940091bbad6144bce091d2737191d266d4b0310) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136078-1030.30e", 0x000000, 0x010000, CRC(d355a1c2) SHA1(6b0fb52dbecbe574959739f49c3c0fccdd5cebdb) )
ROM_LOAD16_BYTE( "136078-1031.10e", 0x000001, 0x010000, CRC(18fd5f44) SHA1(1c3bd780b72cfa61bcbd82683da18b4ee8d03a6d) )
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 10*128k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 10*128k for audio serial ROMs */
ROM_LOAD( "136052-1123.65a", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "136052-1124.55a", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "136052-3125.45a", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "136052-1126.30a", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "136077-1017.45c", 0x040000, 0x010000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedrivc.200e", 0x000000, 0x000800, CRC(2c0f7715) SHA1(79cf3a6cd48fc4a86cd94e823243fc0cd4bffa57) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedrivc.210e", 0x000000, 0x000800, CRC(2e843742) SHA1(bc73ab0270cdf45aaa1a19703e8c3aa916578ef0) )
ROM_END
@@ -3573,8 +4130,10 @@ Filename Location Label Board
*/
+// if the side video boards die you have to hook up inputs to them to reconfigure so we'll need some default NVRAMs
+
ROM_START( racedrivpan )
- ROM_REGION( 0x200000, "maincpu", 0 ) /* 2MB for 68000 code */
+ ROM_REGION( 0x200000, "mainpcb:maincpu", 0 ) /* 2MB for 68000 code */
// Multisync PBB A045988 - Central Monitor
// boots with 'PROGRAM OK' when using standard Hard Drivin' board type (needs 137412-115 slapstic)
ROM_LOAD16_BYTE( "088-1002.bin", 0x000000, 0x010000, CRC(49a97391) SHA1(dbe4086cd87669a02d2a2133d0d9e2895946b383) )
@@ -3597,7 +4156,7 @@ ROM_START( racedrivpan )
// Multisync PCB (A046901) - Side Monitor
// these will boot with 'PROGRAM OK' and display an empty side view, if you use the 'compact' type board driver
// there should be one board for each side. (needs 137412-117 slapstic)
- ROM_REGION( 0x200000, "sidecpu", 0 ) /* 2MB for 68000 code */
+ ROM_REGION( 0x200000, "mainpcb:sidecpu", 0 ) /* 2MB for 68000 code */
ROM_LOAD16_BYTE( "088-2002.bin", 0x000000, 0x010000, CRC(77724070) SHA1(5862f30f7e2ab9c0beb06cf5599bcb1ff97f3a47) )
ROM_LOAD16_BYTE( "088-2001.bin", 0x000001, 0x010000, CRC(16ab2fff) SHA1(bf6dcefc98e1fe27bef0ddacc265d8782c486c83) )
ROM_LOAD16_BYTE( "088-2004.bin", 0x020000, 0x010000, CRC(dccdb16b) SHA1(330cf39bcbdb9c73da48b4e947086a7988e37496) )
@@ -3615,7 +4174,7 @@ ROM_START( racedrivpan )
ROM_LOAD16_BYTE( "088-2016.bin", 0x0e0000, 0x010000, CRC(6a42b7e2) SHA1(2e0ff4b7e391106a976cb872f6311f6d35dca5b0) )
ROM_LOAD16_BYTE( "088-2015.bin", 0x0e0001, 0x010000, CRC(334e2a3b) SHA1(a19bfa7652845b9453c722091c773819ba248569) )
- ROM_REGION( 0x60000, "user1", 0 ) /* 384k for object ROM */
+ ROM_REGION( 0x60000, "mainpcb:user1", 0 ) /* 384k for object ROM */
ROM_LOAD16_BYTE( "088-1017.bin", 0x00000, 0x10000, CRC(d92251e8) SHA1(deeeec54c4a61c3adf62f6b1b910135559090ee5) )
ROM_LOAD16_BYTE( "088-1018.bin", 0x00001, 0x10000, CRC(11a0a8f5) SHA1(d4ccc83fc99331d741bc9b8027ef20d72e3ad71a) )
ROM_LOAD16_BYTE( "088-1019.bin", 0x20000, 0x10000, CRC(5bb00676) SHA1(cad1cea8e43f9590fc71c00fab4eff0d447f9296) ) // == 136091-0019.2k (strtdriv)
@@ -3625,37 +4184,102 @@ ROM_START( racedrivpan )
/* ----------------------- */
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */
ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP )
/* ADSP board */
- ROM_REGION( 0x20000, "soundcpu", 0 ) /* 2*64k for audio 68000 code */
+ ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */
ROM_LOAD16_BYTE( "rdps1032.bin", 0x000000, 0x010000, CRC(33005f2a) SHA1(e4037a76f122b271a9675d9187ab847a11738640) )
ROM_LOAD16_BYTE( "rdps1033.bin", 0x000001, 0x010000, CRC(4fc800ac) SHA1(dd8cfdb727d6a65274f4f871a589a36796ae1e57) )
/* DSK board */
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "rdpd1026.bin", 0x000000, 0x020000, CRC(16572618) SHA1(08d9f7f76e6e75d5233240d4deab96808825994b) )
ROM_LOAD16_BYTE( "rdpd1025.bin", 0x000001, 0x020000, CRC(57b8a266) SHA1(257246d42841aa30220caeb91945e29978ee8fc0) )
/* Audio ROMs - show up as bad in self-test but so do racedriv's */
- ROM_REGION( 0x50000, "serialroms", 0 ) /* 5*64k for audio serial ROMs */
+ ROM_REGION( 0x50000, "mainpcb:serialroms", 0 ) /* 5*64k for audio serial ROMs */
ROM_LOAD( "rdps1123.bin", 0x000000, 0x010000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD( "rdps1124.bin", 0x010000, 0x010000, CRC(071a4309) SHA1(c623bd51d6a4a56503fbf138138854d6a30b11d6) )
ROM_LOAD( "rdps3125.bin", 0x020000, 0x010000, CRC(856548ff) SHA1(e8a17b274185c5e4ecf5f9f1c211e18b3ef2456d) )
ROM_LOAD( "rdps1126.bin", 0x030000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
ROM_LOAD( "rdps1017.bin", 0x040000, 0x010000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "racedriv.200e", 0x000000, 0x000800, CRC(bfdf633c) SHA1(b930f90c388e6773e6ba4254214a3a6076e610b0) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "racedriv.210e", 0x000000, 0x000800, CRC(3d7c732e) SHA1(e7de81d4a54327514fdd339e93c888c63a344d2c) )
+
+ /* Left PCB*/
+ ROM_REGION( 0x200000, "leftpcb:maincpu", 0 ) /* 2MB for 68000 code */
+ ROM_LOAD16_BYTE( "088-2002.bin", 0x000000, 0x010000, CRC(77724070) SHA1(5862f30f7e2ab9c0beb06cf5599bcb1ff97f3a47) )
+ ROM_LOAD16_BYTE( "088-2001.bin", 0x000001, 0x010000, CRC(16ab2fff) SHA1(bf6dcefc98e1fe27bef0ddacc265d8782c486c83) )
+ ROM_LOAD16_BYTE( "088-2004.bin", 0x020000, 0x010000, CRC(dccdb16b) SHA1(330cf39bcbdb9c73da48b4e947086a7988e37496) )
+ ROM_LOAD16_BYTE( "088-2003.bin", 0x020001, 0x010000, CRC(132ef986) SHA1(106f1a23ac200a868959181fa1c47419806e8366) )
+ ROM_LOAD16_BYTE( "088-2006.bin", 0x040000, 0x010000, CRC(de3a0c24) SHA1(1121b8a16ac11b2480f1c4336a5aa3271364f80e))
+ ROM_LOAD16_BYTE( "088-2005.bin", 0x040001, 0x010000, CRC(96ad705f) SHA1(cc0bc7fdd2a5f91a5929b889607dcf7ad015bb95) )
+ ROM_LOAD16_BYTE( "088-2008.bin", 0x060000, 0x010000, CRC(452d991c) SHA1(42dad0a93839a900c3571ce9e252e1c991a1da56) )
+ ROM_LOAD16_BYTE( "088-2007.bin", 0x060001, 0x010000, CRC(d6f526d3) SHA1(8406917c91c1d3690379cb0bca5809d1db27abec) )
+ ROM_LOAD16_BYTE( "088-2010.bin", 0x080000, 0x010000, CRC(775bca3d) SHA1(926b460faeb2aa46899432b3a9973381ffd7781d) )
+ ROM_LOAD16_BYTE( "088-2009.bin", 0x080001, 0x010000, CRC(6aedccc5) SHA1(9189881802969ecdde2fd41a20ff6ea0471ce2c0) )
+ ROM_LOAD16_BYTE( "088-2012.bin", 0x0a0000, 0x010000, CRC(bacf08c0) SHA1(2f7ddaf4ef350ee3e6ab886759d88c03aa94784b) )
+ ROM_LOAD16_BYTE( "088-2011.bin", 0x0a0001, 0x010000, CRC(1e0c2f71) SHA1(bcdd9089442934df78109df7c0dcf170873cf992) )
+ ROM_LOAD16_BYTE( "088-2014.bin", 0x0c0000, 0x010000, CRC(3512537c) SHA1(896975ef2685358bd98f7a9b45dda11e8bfa3a13) )
+ ROM_LOAD16_BYTE( "088-2013.bin", 0x0c0001, 0x010000, CRC(8d7c4e80) SHA1(eda8d02e51b18234fc0912eaca8171d75ae643c7) )
+ ROM_LOAD16_BYTE( "088-2016.bin", 0x0e0000, 0x010000, CRC(6a42b7e2) SHA1(2e0ff4b7e391106a976cb872f6311f6d35dca5b0) )
+ ROM_LOAD16_BYTE( "088-2015.bin", 0x0e0001, 0x010000, CRC(334e2a3b) SHA1(a19bfa7652845b9453c722091c773819ba248569) )
+
+ ROM_REGION( 0x60000, "leftpcb:user1", 0 ) /* 384k for object ROM */
+ ROM_LOAD16_BYTE( "088-1017.bin", 0x00000, 0x10000, CRC(d92251e8) SHA1(deeeec54c4a61c3adf62f6b1b910135559090ee5) )
+ ROM_LOAD16_BYTE( "088-1018.bin", 0x00001, 0x10000, CRC(11a0a8f5) SHA1(d4ccc83fc99331d741bc9b8027ef20d72e3ad71a) )
+ ROM_LOAD16_BYTE( "088-1019.bin", 0x20000, 0x10000, CRC(5bb00676) SHA1(cad1cea8e43f9590fc71c00fab4eff0d447f9296) ) // == 136091-0019.2k (strtdriv)
+ ROM_LOAD16_BYTE( "088-1020.bin", 0x20001, 0x10000, CRC(311cef99) SHA1(9c466aabad7e80581e477253ec6f2fd245f9b9fd) ) // == 136091-0020.2r (strtdriv)
+ ROM_LOAD16_BYTE( "088-1021.bin", 0x40000, 0x10000, CRC(ce8e4886) SHA1(d29cd4761deb80ed179d0e503243739eebc0edb4) )
+ ROM_LOAD16_BYTE( "088-1022.bin", 0x40001, 0x10000, CRC(4f1e1c5d) SHA1(3e72813129cae9e9bf084bfb1b747aa46b92591e) )
+
+ ROM_REGION( 0x800, "leftpcb:200e", 0 ) // set to display left monitor, controls not calibrated with valid values (don't think they need to be)
+ ROM_LOAD( "leftpcb_200e", 0x000000, 0x000800, CRC(a618d02e) SHA1(cc1068fe4f6ec9a26b6e8fdbe05f4364a64559c1) )
+ ROM_REGION( 0x800, "leftpcb:210e", 0 )
+ ROM_LOAD( "leftpcb_210e", 0x000000, 0x000800, CRC(108ea834) SHA1(d7aec78287647dc52f92143cdb6d7765de0b4e39) )
+
+
+ /* Right PCB*/
+ ROM_REGION( 0x200000, "rightpcb:maincpu", 0 ) /* 2MB for 68000 code */
+ ROM_LOAD16_BYTE( "088-2002.bin", 0x000000, 0x010000, CRC(77724070) SHA1(5862f30f7e2ab9c0beb06cf5599bcb1ff97f3a47) )
+ ROM_LOAD16_BYTE( "088-2001.bin", 0x000001, 0x010000, CRC(16ab2fff) SHA1(bf6dcefc98e1fe27bef0ddacc265d8782c486c83) )
+ ROM_LOAD16_BYTE( "088-2004.bin", 0x020000, 0x010000, CRC(dccdb16b) SHA1(330cf39bcbdb9c73da48b4e947086a7988e37496) )
+ ROM_LOAD16_BYTE( "088-2003.bin", 0x020001, 0x010000, CRC(132ef986) SHA1(106f1a23ac200a868959181fa1c47419806e8366) )
+ ROM_LOAD16_BYTE( "088-2006.bin", 0x040000, 0x010000, CRC(de3a0c24) SHA1(1121b8a16ac11b2480f1c4336a5aa3271364f80e))
+ ROM_LOAD16_BYTE( "088-2005.bin", 0x040001, 0x010000, CRC(96ad705f) SHA1(cc0bc7fdd2a5f91a5929b889607dcf7ad015bb95) )
+ ROM_LOAD16_BYTE( "088-2008.bin", 0x060000, 0x010000, CRC(452d991c) SHA1(42dad0a93839a900c3571ce9e252e1c991a1da56) )
+ ROM_LOAD16_BYTE( "088-2007.bin", 0x060001, 0x010000, CRC(d6f526d3) SHA1(8406917c91c1d3690379cb0bca5809d1db27abec) )
+ ROM_LOAD16_BYTE( "088-2010.bin", 0x080000, 0x010000, CRC(775bca3d) SHA1(926b460faeb2aa46899432b3a9973381ffd7781d) )
+ ROM_LOAD16_BYTE( "088-2009.bin", 0x080001, 0x010000, CRC(6aedccc5) SHA1(9189881802969ecdde2fd41a20ff6ea0471ce2c0) )
+ ROM_LOAD16_BYTE( "088-2012.bin", 0x0a0000, 0x010000, CRC(bacf08c0) SHA1(2f7ddaf4ef350ee3e6ab886759d88c03aa94784b) )
+ ROM_LOAD16_BYTE( "088-2011.bin", 0x0a0001, 0x010000, CRC(1e0c2f71) SHA1(bcdd9089442934df78109df7c0dcf170873cf992) )
+ ROM_LOAD16_BYTE( "088-2014.bin", 0x0c0000, 0x010000, CRC(3512537c) SHA1(896975ef2685358bd98f7a9b45dda11e8bfa3a13) )
+ ROM_LOAD16_BYTE( "088-2013.bin", 0x0c0001, 0x010000, CRC(8d7c4e80) SHA1(eda8d02e51b18234fc0912eaca8171d75ae643c7) )
+ ROM_LOAD16_BYTE( "088-2016.bin", 0x0e0000, 0x010000, CRC(6a42b7e2) SHA1(2e0ff4b7e391106a976cb872f6311f6d35dca5b0) )
+ ROM_LOAD16_BYTE( "088-2015.bin", 0x0e0001, 0x010000, CRC(334e2a3b) SHA1(a19bfa7652845b9453c722091c773819ba248569) )
+
+ ROM_REGION( 0x60000, "rightpcb:user1", 0 ) /* 384k for object ROM */
+ ROM_LOAD16_BYTE( "088-1017.bin", 0x00000, 0x10000, CRC(d92251e8) SHA1(deeeec54c4a61c3adf62f6b1b910135559090ee5) )
+ ROM_LOAD16_BYTE( "088-1018.bin", 0x00001, 0x10000, CRC(11a0a8f5) SHA1(d4ccc83fc99331d741bc9b8027ef20d72e3ad71a) )
+ ROM_LOAD16_BYTE( "088-1019.bin", 0x20000, 0x10000, CRC(5bb00676) SHA1(cad1cea8e43f9590fc71c00fab4eff0d447f9296) ) // == 136091-0019.2k (strtdriv)
+ ROM_LOAD16_BYTE( "088-1020.bin", 0x20001, 0x10000, CRC(311cef99) SHA1(9c466aabad7e80581e477253ec6f2fd245f9b9fd) ) // == 136091-0020.2r (strtdriv)
+ ROM_LOAD16_BYTE( "088-1021.bin", 0x40000, 0x10000, CRC(ce8e4886) SHA1(d29cd4761deb80ed179d0e503243739eebc0edb4) )
+ ROM_LOAD16_BYTE( "088-1022.bin", 0x40001, 0x10000, CRC(4f1e1c5d) SHA1(3e72813129cae9e9bf084bfb1b747aa46b92591e) )
+
+ ROM_REGION( 0x800, "rightpcb:200e", 0 ) // set to display right monitor, controls not calibrated with valid values (don't think they need to be)
+ ROM_LOAD( "rightpcb_200e", 0x000000, 0x000800, CRC(6f1b7094) SHA1(6194a5b99aebe43f02c8d267290207b32c5bdbbd) )
+ ROM_REGION( 0x800, "rightpcb:210e", 0 )
+ ROM_LOAD( "rightpcb_210e", 0x000000, 0x000800, CRC(108ea834) SHA1(d7aec78287647dc52f92143cdb6d7765de0b4e39) )
ROM_END
ROM_START( steeltal )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136087-1002.200r", 0x000000, 0x010000, CRC(31bf01a9) SHA1(cd08a839dbb5283a6e2bb35bc9e1578a14e3c2e6) )
ROM_LOAD16_BYTE( "136087-1001.210r", 0x000001, 0x010000, CRC(b4fa2900) SHA1(5e92ab4af31321b891c072305f8b8ef30a3e1fb0) )
ROM_LOAD16_BYTE( "136087-1004.200s", 0x020000, 0x010000, CRC(c31ca924) SHA1(8d7d2a3d204e69d759cf767b57570c18db5a3fd8) )
@@ -3673,27 +4297,27 @@ ROM_START( steeltal )
ROM_LOAD16_BYTE( "136087-1016.200y", 0x0e0000, 0x010000, CRC(db62362e) SHA1(e1d392aa00ac36296728257fa26c6aa68a4ebe5f) )
ROM_LOAD16_BYTE( "136087-1015.210y", 0x0e0001, 0x010000, CRC(ef517db7) SHA1(16e7e351326391480bf36c58d6b34ef4128b6627) )
- ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */
+ ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 ) /* 64k for 6502 code */
ROM_LOAD( "136087-5001.1f", 0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
ROM_CONTINUE( 0x004000, 0x00c000 )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* 64k for ASIC65 */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* 64k for ASIC65 */
ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
- ROM_REGION( 0x10000, "cpu6", 0 ) /* 64k for DSP communications */
+ ROM_REGION( 0x10000, "mainpcb:cpu6", 0 ) /* 64k for DSP communications */
ROM_LOAD( "136087-1025.5f", 0x000000, 0x010000, CRC(4c645933) SHA1(7a1cf049e368059a79b03598de73c30d8dae5e90) )
- ROM_REGION16_BE( 0xc0000, "user1", 0 ) /* 768k for object ROM */
+ ROM_REGION16_BE( 0xc0000, "mainpcb:user1", 0 ) /* 768k for object ROM */
ROM_LOAD16_BYTE( "136087-1018.2t", 0x000000, 0x020000, CRC(a5882384) SHA1(157707b5b114fa584893dec07dc456d4a5520f44) )
ROM_LOAD16_BYTE( "136087-1017.2lm", 0x000001, 0x020000, CRC(0a29db30) SHA1(f11ad7fe27989ffd66e9bef2c14ec040a4125d8a) )
- ROM_REGION( 0x80000, "jsa:oki1", 0 )
+ ROM_REGION( 0x80000, "mainpcb:jsa:oki1", 0 )
ROM_LOAD( "136087-5002.1m", 0x000000, 0x020000, CRC(c904db9c) SHA1(d25fff3da87d2b716cd65fb7dd157c3f1f5e5909) )
ROM_LOAD( "136087-5003.1n", 0x020000, 0x020000, CRC(164580b3) SHA1(03118c8323d8a49a65addc61c1402d152d42d7f9) )
ROM_LOAD( "136087-5004.1p", 0x040000, 0x020000, CRC(296290a0) SHA1(8a3441a5618233f561531fe456e1f5ed22183421) )
ROM_LOAD( "136087-5005.1r", 0x060000, 0x020000, CRC(c029d037) SHA1(0ae736c0ca3a1974911464328dd5a6b41a939130) )
- ROM_REGION( 0x015D, "plds", 0 )
+ ROM_REGION( 0x015D, "mainpcb:plds", 0 )
/* GAL's located on Sound board */
ROM_LOAD( "136085-1038.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2F */
ROM_LOAD( "136085-1039.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2L */
@@ -3710,16 +4334,16 @@ ROM_START( steeltal )
/* GAL's located on "Multisync" board */
ROM_LOAD( "136087-9001.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL6001 at location 200K (SLOOP) */
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
ROM_END
ROM_START( steeltalg )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136087-1002.200r", 0x000000, 0x010000, CRC(31bf01a9) SHA1(cd08a839dbb5283a6e2bb35bc9e1578a14e3c2e6) )
ROM_LOAD16_BYTE( "136087-1001.210r", 0x000001, 0x010000, CRC(b4fa2900) SHA1(5e92ab4af31321b891c072305f8b8ef30a3e1fb0) )
ROM_LOAD16_BYTE( "136087-2004.200s", 0x020000, 0x010000, CRC(11fcba15) SHA1(031fc4c46a25ba8b5e15257f7443899bb484c09e) )
@@ -3737,27 +4361,27 @@ ROM_START( steeltalg )
ROM_LOAD16_BYTE( "136087-1016.200y", 0x0e0000, 0x010000, CRC(db62362e) SHA1(e1d392aa00ac36296728257fa26c6aa68a4ebe5f) )
ROM_LOAD16_BYTE( "136087-1015.210y", 0x0e0001, 0x010000, CRC(ef517db7) SHA1(16e7e351326391480bf36c58d6b34ef4128b6627) )
- ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */
+ ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 ) /* 64k for 6502 code */
ROM_LOAD( "136087-5001.1f", 0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
ROM_CONTINUE( 0x004000, 0x00c000 )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* 64k for ASIC65 */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* 64k for ASIC65 */
ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
- ROM_REGION( 0x10000, "cpu6", 0 ) /* 64k for DSP communications */
+ ROM_REGION( 0x10000, "mainpcb:cpu6", 0 ) /* 64k for DSP communications */
ROM_LOAD( "136087-1025.5f", 0x000000, 0x010000, CRC(4c645933) SHA1(7a1cf049e368059a79b03598de73c30d8dae5e90) )
- ROM_REGION16_BE( 0xc0000, "user1", 0 ) /* 768k for object ROM */
+ ROM_REGION16_BE( 0xc0000, "mainpcb:user1", 0 ) /* 768k for object ROM */
ROM_LOAD16_BYTE( "136087-1018.2t", 0x000000, 0x020000, CRC(a5882384) SHA1(157707b5b114fa584893dec07dc456d4a5520f44) )
ROM_LOAD16_BYTE( "136087-1017.2lm", 0x000001, 0x020000, CRC(0a29db30) SHA1(f11ad7fe27989ffd66e9bef2c14ec040a4125d8a) )
- ROM_REGION( 0x80000, "jsa:oki1", 0 )
+ ROM_REGION( 0x80000, "mainpcb:jsa:oki1", 0 )
ROM_LOAD( "136087-5002.1m", 0x000000, 0x020000, CRC(c904db9c) SHA1(d25fff3da87d2b716cd65fb7dd157c3f1f5e5909) )
ROM_LOAD( "136087-5003.1n", 0x020000, 0x020000, CRC(164580b3) SHA1(03118c8323d8a49a65addc61c1402d152d42d7f9) )
ROM_LOAD( "136087-5004.1p", 0x040000, 0x020000, CRC(296290a0) SHA1(8a3441a5618233f561531fe456e1f5ed22183421) )
ROM_LOAD( "136087-5005.1r", 0x060000, 0x020000, CRC(c029d037) SHA1(0ae736c0ca3a1974911464328dd5a6b41a939130) )
- ROM_REGION( 0x015D, "plds", 0 )
+ ROM_REGION( 0x015D, "mainpcb:plds", 0 )
/* GAL's located on Sound board */
ROM_LOAD( "136085-1038.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2F */
ROM_LOAD( "136085-1039.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2L */
@@ -3774,16 +4398,16 @@ ROM_START( steeltalg )
/* GAL's located on "Multisync" board */
ROM_LOAD( "136087-9001.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL6001 at location 200K (SLOOP) */
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
ROM_END
ROM_START( steeltal1 )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "136087-1002.200r", 0x000000, 0x010000, CRC(31bf01a9) SHA1(cd08a839dbb5283a6e2bb35bc9e1578a14e3c2e6) )
ROM_LOAD16_BYTE( "136087-1001.210r", 0x000001, 0x010000, CRC(b4fa2900) SHA1(5e92ab4af31321b891c072305f8b8ef30a3e1fb0) )
ROM_LOAD16_BYTE( "136087-a004.200s", 0x020000, 0x010000, CRC(392c992d) SHA1(10d1606214df675e6e59185e6b97034c4a47055a) )
@@ -3801,27 +4425,27 @@ ROM_START( steeltal1 )
ROM_LOAD16_BYTE( "136087-1016.200y", 0x0e0000, 0x010000, CRC(db62362e) SHA1(e1d392aa00ac36296728257fa26c6aa68a4ebe5f) )
ROM_LOAD16_BYTE( "136087-1015.210y", 0x0e0001, 0x010000, CRC(ef517db7) SHA1(16e7e351326391480bf36c58d6b34ef4128b6627) )
- ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */
+ ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 ) /* 64k for 6502 code */
ROM_LOAD( "136087-5001.1f", 0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
ROM_CONTINUE( 0x004000, 0x00c000 )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* 64k for ASIC65 */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* 64k for ASIC65 */
ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
- ROM_REGION( 0x10000, "cpu6", 0 ) /* 64k for DSP communications */
+ ROM_REGION( 0x10000, "mainpcb:cpu6", 0 ) /* 64k for DSP communications */
ROM_LOAD( "136087-1025.5f", 0x000000, 0x010000, CRC(4c645933) SHA1(7a1cf049e368059a79b03598de73c30d8dae5e90) )
- ROM_REGION16_BE( 0xc0000, "user1", 0 ) /* 768k for object ROM */
+ ROM_REGION16_BE( 0xc0000, "mainpcb:user1", 0 ) /* 768k for object ROM */
ROM_LOAD16_BYTE( "136087-1018.2t", 0x000000, 0x020000, CRC(a5882384) SHA1(157707b5b114fa584893dec07dc456d4a5520f44) )
ROM_LOAD16_BYTE( "136087-1017.2lm", 0x000001, 0x020000, CRC(0a29db30) SHA1(f11ad7fe27989ffd66e9bef2c14ec040a4125d8a) )
- ROM_REGION( 0x80000, "jsa:oki1", 0 )
+ ROM_REGION( 0x80000, "mainpcb:jsa:oki1", 0 )
ROM_LOAD( "136087-5002.1m", 0x000000, 0x020000, CRC(c904db9c) SHA1(d25fff3da87d2b716cd65fb7dd157c3f1f5e5909) )
ROM_LOAD( "136087-5003.1n", 0x020000, 0x020000, CRC(164580b3) SHA1(03118c8323d8a49a65addc61c1402d152d42d7f9) )
ROM_LOAD( "136087-5004.1p", 0x040000, 0x020000, CRC(296290a0) SHA1(8a3441a5618233f561531fe456e1f5ed22183421) )
ROM_LOAD( "136087-5005.1r", 0x060000, 0x020000, CRC(c029d037) SHA1(0ae736c0ca3a1974911464328dd5a6b41a939130) )
- ROM_REGION( 0x015D, "plds", 0 )
+ ROM_REGION( 0x015D, "mainpcb:plds", 0 )
/* GAL's located on Sound board */
ROM_LOAD( "136085-1038.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2F */
ROM_LOAD( "136085-1039.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2L */
@@ -3838,16 +4462,16 @@ ROM_START( steeltal1 )
/* GAL's located on "Multisync" board */
ROM_LOAD( "136087-9001.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL6001 at location 200K (SLOOP) */
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
ROM_END
ROM_START( steeltalp )
- ROM_REGION( 0x100000, "maincpu", 0 ) /* 1MB for 68000 code */
+ ROM_REGION( 0x100000, "mainpcb:maincpu", 0 ) /* 1MB for 68000 code */
ROM_LOAD16_BYTE( "rom-200r.bin", 0x00000, 0x10000, CRC(72a9ce3b) SHA1(6706ff32173735d16d9da1321b64a4a9bb317b2e) )
ROM_LOAD16_BYTE( "rom-210r.bin", 0x00001, 0x10000, CRC(46d83b42) SHA1(85b178781f0595b5af0375fee32d0dd8cdba8fca) )
ROM_LOAD16_BYTE( "rom-200s.bin", 0x20000, 0x10000, CRC(bf1b31ae) SHA1(f2d7f13854b8a3dd4de9ae98cc3034dfcf3846b8) )
@@ -3865,27 +4489,27 @@ ROM_START( steeltalp )
ROM_LOAD16_BYTE( "rom-200y.bin", 0xe0000, 0x10000, CRC(b568e1be) SHA1(5d62037892e040515e4262db43057f33436fa12d) )
ROM_LOAD16_BYTE( "rom-210y.bin", 0xe0001, 0x10000, CRC(3f5cdd3e) SHA1(c33c155158a5c69a7f2e61cd88b297dc14ecd479) )
- ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k for 6502 code */
+ ROM_REGION( 0x14000, "mainpcb:jsa:cpu", 0 ) /* 64k for 6502 code */
ROM_LOAD( "136087-5001.1f", 0x010000, 0x004000, CRC(c52d8218) SHA1(3511c8c65583c7e44242f4cc48d7cc46fc748868) )
ROM_CONTINUE( 0x004000, 0x00c000 )
- ROM_REGION( 0x2000, "asic65:asic65cpu", 0 ) /* 64k for ASIC65 */
+ ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* 64k for ASIC65 */
ROM_LOAD( "136087-9007.10c", 0x000000, 0x002000, CRC(2956984f) SHA1(63c9a99b00c3cbb63aca908b076c2c4d3f70f386) )
- ROM_REGION( 0x10000, "cpu6", 0 ) /* 64k for DSP communications */
+ ROM_REGION( 0x10000, "mainpcb:cpu6", 0 ) /* 64k for DSP communications */
ROM_LOAD( "136087-1025.5f", 0x000000, 0x010000, CRC(4c645933) SHA1(7a1cf049e368059a79b03598de73c30d8dae5e90) )
- ROM_REGION16_BE( 0xc0000, "user1", 0 ) /* 768k for object ROM */
+ ROM_REGION16_BE( 0xc0000, "mainpcb:user1", 0 ) /* 768k for object ROM */
ROM_LOAD16_BYTE( "rom.2t", 0x00000, 0x20000, CRC(05284504) SHA1(03b81c077f8ff073713f4bcc10b82087743b0d84) )
ROM_LOAD16_BYTE( "rom.2lm", 0x00001, 0x20000, CRC(d6e65b87) SHA1(ac4b2f292f6e28a15e3a12f09f6c2f9523e8b178) )
- ROM_REGION( 0x80000, "jsa:oki1", 0 )
+ ROM_REGION( 0x80000, "mainpcb:jsa:oki1", 0 )
ROM_LOAD( "136087-5002.1m", 0x000000, 0x020000, CRC(c904db9c) SHA1(d25fff3da87d2b716cd65fb7dd157c3f1f5e5909) )
ROM_LOAD( "136087-5003.1n", 0x020000, 0x020000, CRC(164580b3) SHA1(03118c8323d8a49a65addc61c1402d152d42d7f9) )
ROM_LOAD( "136087-5004.1p", 0x040000, 0x020000, CRC(296290a0) SHA1(8a3441a5618233f561531fe456e1f5ed22183421) )
ROM_LOAD( "136087-5005.1r", 0x060000, 0x020000, CRC(c029d037) SHA1(0ae736c0ca3a1974911464328dd5a6b41a939130) )
- ROM_REGION( 0x015D, "plds", 0 )
+ ROM_REGION( 0x015D, "mainpcb:plds", 0 )
/* GAL's located on Sound board */
ROM_LOAD( "136085-1038.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2F */
ROM_LOAD( "136085-1039.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL16V8A at location 2L */
@@ -3902,16 +4526,16 @@ ROM_START( steeltalp )
/* GAL's located on "Multisync" board */
ROM_LOAD( "136087-9001.bin", 0x0000, 0x0001, NO_DUMP ) /* GAL6001 at location 200K (SLOOP) */
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
ROM_END
ROM_START( strtdriv )
- ROM_REGION( 0x200000, "maincpu", 0 ) /* 2MB for 68000 code */
+ ROM_REGION( 0x200000, "mainpcb:maincpu", 0 ) /* 2MB for 68000 code */
ROM_LOAD16_BYTE( "136091-0002.200r", 0x000000, 0x010000, CRC(d28f2629) SHA1(266b4a80fd366fec2329ed2cec7fb570cef34291) )
ROM_LOAD16_BYTE( "136091-0001.210r", 0x000001, 0x010000, CRC(443428d1) SHA1(d93fd21a2c9d1e24c599867a110c1031d72e81b7) )
ROM_LOAD16_BYTE( "136091-0004.200s", 0x020000, 0x010000, CRC(379b9d18) SHA1(8cd903cc4e970cc45d7ef431233730b53dabeb1d) )
@@ -3929,10 +4553,10 @@ ROM_START( strtdriv )
ROM_LOAD16_BYTE( "136091-0016.200y", 0x0e0000, 0x010000, CRC(f85ad532) SHA1(f9d2480104a7487c23d33b05aa044b7f4ca08c67) )
ROM_LOAD16_BYTE( "136091-0015.210y", 0x0e0001, 0x010000, CRC(a2e406f3) SHA1(a7266508011c892cb1032fa4d77ccbafedc844e8) )
- ROM_REGION( 0x10000 + 0x10000, "asic65:asic65cpu", 0 ) /* dummy region for ADSP 2105 */
+ ROM_REGION( 0x10000 + 0x10000, "mainpcb:asic65:asic65cpu", 0 ) /* dummy region for ADSP 2105 */
ROM_LOAD( "136091-0033.10j", 0x000000, 0x010000, CRC(57504ab6) SHA1(ec8361b7da964c07ca0da48a87537badc3986fe0) )
- ROM_REGION( 0x60000, "user1", 0 ) /* 384k for object ROM */
+ ROM_REGION( 0x60000, "mainpcb:user1", 0 ) /* 384k for object ROM */
ROM_LOAD16_BYTE( "136091-0017.2lm", 0x00000, 0x10000, CRC(b0454074) SHA1(9530ea1ef215116da1f0843776fa7a6b4637049d) )
ROM_LOAD16_BYTE( "136091-0018.2t", 0x00001, 0x10000, CRC(ef432aa8) SHA1(56bce13c111db7874c9b669d479f6ef47976ee14) )
ROM_LOAD16_BYTE( "136091-0019.2k", 0x20000, 0x10000, CRC(5bb00676) SHA1(cad1cea8e43f9590fc71c00fab4eff0d447f9296) )
@@ -3940,17 +4564,17 @@ ROM_START( strtdriv )
ROM_LOAD16_BYTE( "136091-0021.2j", 0x40000, 0x10000, CRC(14f2caae) SHA1(ff40dbced58dc910a2b5825b846a5e52933cb8fc) )
ROM_LOAD16_BYTE( "136091-0022.2p", 0x40001, 0x10000, CRC(bc4dd071) SHA1(ca182451a0a18d343dce1be56090d51950d43906) )
- ROM_REGION16_BE( 0x50000, "user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
+ ROM_REGION16_BE( 0x50000, "mainpcb:user3", 0 ) /* 256k for DSK ROMs + 64k for RAM */
ROM_LOAD16_BYTE( "136091-0026.30e", 0x000000, 0x020000, CRC(47705109) SHA1(fa40275b71b74be8591282d2fba4215b98fc29c9) )
ROM_LOAD16_BYTE( "136091-0025.10e", 0x000001, 0x020000, CRC(ead9254e) SHA1(92152d3ca77b542b3bb3398ccf414df28c95abfd) )
- ROM_REGION16_BE( 0x100000, "ds3sdsp", 0 ) /* DS III sound ADSP-2105 */
+ ROM_REGION16_BE( 0x100000, "mainpcb:ds3sdsp", 0 ) /* DS III sound ADSP-2105 */
ROM_LOAD( "136091-0033.10j", 0x000000, 0x010000, CRC(57504ab6) SHA1(ec8361b7da964c07ca0da48a87537badc3986fe0) )
- ROM_REGION16_BE( 0x100000, "ds3xdsp", 0 ) /* DS III auxillary ADSP-2105 (unused) */
+ ROM_REGION16_BE( 0x100000, "mainpcb:ds3xdsp", 0 ) /* DS III auxillary ADSP-2105 (unused) */
ROM_FILL( 0x000000, 0x010000, 0x00)
- ROM_REGION( 0x80000, "ds3sdsp_data", 0 )
+ ROM_REGION( 0x80000, "mainpcb:ds3sdsp_data", 0 )
ROM_LOAD16_BYTE( "136052-1123.12lm",0x00000, 0x10000, CRC(a88411dc) SHA1(1fd53c7eadffa163d5423df2f8338757e58d5f2e) )
ROM_LOAD16_BYTE( "136077-1017.12t", 0x00001, 0x10000, CRC(e93129a3) SHA1(1221b08c8efbfd8cf6bfbfd956545f10bef48663) )
@@ -3963,15 +4587,15 @@ ROM_START( strtdriv )
ROM_FILL( 0x60000, 0x20000, 0xff) /* 12N */
ROM_LOAD16_BYTE( "136052-1126.12h", 0x60000, 0x10000, CRC(f46ef09c) SHA1(ba62f73ee3b33d8f26b430ffa468f8792dca23de) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "stunrun.200e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "stunrun.210e", 0x000000, 0x000800, CRC(f1e8ba9e) SHA1(605db3fdbaff4ba13729371ad0c4fbab3889378e) )
ROM_END
ROM_START( hdrivair )
- ROM_REGION( 0x200000, "maincpu", 0 ) /* 2MB for 68000 code */
+ ROM_REGION( 0x200000, "mainpcb:maincpu", 0 ) /* 2MB for 68000 code */
ROM_LOAD16_BYTE( "stesthi.bin", 0x000000, 0x20000, CRC(b4bfa451) SHA1(002a5d213ba8ec76ad83a87d76aefbd98b1e4c94) )
ROM_LOAD16_BYTE( "stestlo.bin", 0x000001, 0x20000, CRC(58758419) SHA1(7951d4c8cf0b28b4fac3fe172ea3bc56f61bd9ff) )
ROM_LOAD16_BYTE( "drivehi.bin", 0x040000, 0x20000, CRC(d15f5119) SHA1(c2c7e9675c14ba41effa6f721602f6471b348758) )
@@ -3985,10 +4609,10 @@ ROM_START( hdrivair )
ROM_LOAD16_BYTE( "coprochi.bin",0x1c0000, 0x20000, CRC(5d2ca109) SHA1(e1a94d3fbfd5d542732555bf60268e73d66b3a06) )
ROM_LOAD16_BYTE( "coproclo.bin",0x1c0001, 0x20000, CRC(5f98b04d) SHA1(9c4fa4092fd85f1d67be44f2ff91a907a87db51a) )
- ROM_REGION( 0x10000 + 0x10000, "asic65:asic65cpu", 0 ) /* dummy region for ADSP 2105 */
+ ROM_REGION( 0x10000 + 0x10000, "mainpcb:asic65:asic65cpu", 0 ) /* dummy region for ADSP 2105 */
ROM_LOAD( "sboot.bin", 0x000000, 0x010000, CRC(cde4d010) SHA1(853f4b813ff70fe74cd87e92131c46fca045610d) )
- ROM_REGION( 0xc0000, "user1", 0 ) /* 768k for object ROM */
+ ROM_REGION( 0xc0000, "mainpcb:user1", 0 ) /* 768k for object ROM */
ROM_LOAD16_BYTE( "obj0l.bin", 0x00000, 0x20000, CRC(1f835f2e) SHA1(9d3419f2c1aa65ddfe9ace4e70ca1212d634afbf) )
ROM_LOAD16_BYTE( "obj0h.bin", 0x00001, 0x20000, CRC(c321ab55) SHA1(e095e40bb1ebda7c9ff04a5086c10ab41dec2f16) )
ROM_LOAD16_BYTE( "obj1l.bin", 0x40000, 0x20000, CRC(3d65f264) SHA1(e9232f5bf439bf4e1cf99cc7e81b7f9550563f15) )
@@ -3996,23 +4620,23 @@ ROM_START( hdrivair )
ROM_LOAD16_BYTE( "obj2l.bin", 0x80000, 0x20000, CRC(b206cc7e) SHA1(17f05e906c41b804fe99dd6cd8acbade919a6a10) )
ROM_LOAD16_BYTE( "obj2h.bin", 0x80001, 0x20000, CRC(a666e98c) SHA1(90e380ff87538c7d557cf005a4a5bcedc250eb72) )
- ROM_REGION16_BE( 0x140000, "user3", 0 )/* 1MB for DSK ROMs + 256k for RAM */
+ ROM_REGION16_BE( 0x140000, "mainpcb:user3", 0 )/* 1MB for DSK ROMs + 256k for RAM */
ROM_LOAD16_BYTE( "dsk2phi.bin", 0x00000, 0x80000, CRC(71c268e0) SHA1(c089248a7dfadf2eba3134fe40ebb777c115a886) )
ROM_LOAD16_BYTE( "dsk2plo.bin", 0x00001, 0x80000, CRC(edf96363) SHA1(47f0608c2b0ab983681de021a16b1d10d4feb800) )
- ROM_REGION32_LE( 0x200000, "user4", 0 )/* 2MB for ASIC61 ROMs */
+ ROM_REGION32_LE( 0x200000, "mainpcb:user4", 0 )/* 2MB for ASIC61 ROMs */
ROM_LOAD32_BYTE( "roads0.bin", 0x000000, 0x80000, CRC(5028eb41) SHA1(abe9d73e74d4f0308f07cbe9c18c8a77456fdbc7) )
ROM_LOAD32_BYTE( "roads1.bin", 0x000001, 0x80000, CRC(c3f2c201) SHA1(c73933d7e46f3c63c4ca86af40eb4f0abb09aedf) )
ROM_LOAD32_BYTE( "roads2.bin", 0x000002, 0x80000, CRC(527923fe) SHA1(839de8486bb7489f059b5a629ab229ad96de7eac) )
ROM_LOAD32_BYTE( "roads3.bin", 0x000003, 0x80000, CRC(2f2023b2) SHA1(d474892443db2f0710c2be0d6b90735a2fbee12a) )
- ROM_REGION16_BE( 0x10000, "ds3sdsp", 0 ) /* DS IV sound ADSP-2105 */
+ ROM_REGION16_BE( 0x10000, "mainpcb:ds3sdsp", 0 ) /* DS IV sound ADSP-2105 */
ROM_LOAD( "sboot.bin", 0x00000, 0x10000, CRC(cde4d010) SHA1(853f4b813ff70fe74cd87e92131c46fca045610d) )
- ROM_REGION16_BE( 0x10000, "ds3xdsp", 0 ) /* DS IV auxillary ADSP-2105 */
+ ROM_REGION16_BE( 0x10000, "mainpcb:ds3xdsp", 0 ) /* DS IV auxillary ADSP-2105 */
ROM_LOAD( "xboot.bin", 0x00000, 0x10000, CRC(054b46a0) SHA1(038eec17e678f2755239d6795acfda621796802e) )
- ROM_REGION16_BE( 0x400000, "ds3sdsp_data", 0 ) /* DS IV sound data */
+ ROM_REGION16_BE( 0x400000, "mainpcb:ds3sdsp_data", 0 ) /* DS IV sound data */
ROM_LOAD16_BYTE( "ds3rom4.bin", 0x000000, 0x80000, CRC(15ffb19a) SHA1(030dc90b7cabcd7fc5f231b09d2aa2eaf6e60b98) )
ROM_LOAD16_BYTE( "ds3rom0.bin", 0x000001, 0x80000, CRC(90b8dbb6) SHA1(fff693cb81e88bc00e048bb71406295fe7be5122) )
ROM_LOAD16_BYTE( "ds3rom5.bin", 0x100000, 0x80000, CRC(8d0e9b27) SHA1(76556f48bdf14475260c268ebdb16ecb494b2f36) )
@@ -4022,16 +4646,16 @@ ROM_START( hdrivair )
ROM_LOAD16_BYTE( "ds3rom7.bin", 0x300000, 0x80000, CRC(323eff0b) SHA1(5d4945d77191ee44b4fbf125bc0816217321829e) )
ROM_LOAD16_BYTE( "ds3rom3.bin", 0x300001, 0x80000, CRC(63965868) SHA1(d61d9d6709a3a3c37c2652602e97fdee52e0e7cb) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "hdrivair.200e", 0x000000, 0x000800, CRC(6270b696) SHA1(e302880dbca53ee725108ca4f7e45a176e85e96d) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "hdrivair.210e", 0x000000, 0x000800, CRC(a1c39919) SHA1(92799a7a73f545dad6684eacf7009a6c4d52d8f7) )
ROM_END
ROM_START( hdrivairp )
- ROM_REGION( 0x200000, "maincpu", 0 ) /* 2MB for 68000 code */
+ ROM_REGION( 0x200000, "mainpcb:maincpu", 0 ) /* 2MB for 68000 code */
ROM_LOAD16_BYTE( "stest.0h", 0x000000, 0x20000, CRC(bf4bb6a0) SHA1(e38ec5ce245f98bfe8084ba684bffc85dc19d3be) )
ROM_LOAD16_BYTE( "stest.0l", 0x000001, 0x20000, CRC(f462b511) SHA1(d88efb8cc30322a8332a1f50de775a204758e176) )
ROM_LOAD16_BYTE( "drive.hi", 0x040000, 0x20000, CRC(56571590) SHA1(d0362b8bd438cd7dfa9ff7cf71307f44c2cfe843) )
@@ -4045,13 +4669,13 @@ ROM_START( hdrivairp )
ROM_LOAD16_BYTE( "ms2cproc.0h", 0x1c0000, 0x20000, CRC(19024f2d) SHA1(a94e8836cdc147cea5816b99b8a1ad5ff669d984) )
ROM_LOAD16_BYTE( "ms2cproc.0l", 0x1c0001, 0x20000, CRC(1e48bd46) SHA1(1a903d889f48604bd8d2d9a0bda4ee20e7ad968b) )
- ROM_REGION( 0x10000 + 0x10000, "dsp32", 0 ) /* dummy region for ADSP 2105 */
+ ROM_REGION( 0x10000 + 0x10000, "mainpcb:dsp32", 0 ) /* dummy region for ADSP 2105 */
ROM_LOAD( "sboota.bin", 0x10000 + 0x00000, 0x10000, CRC(3ef819cd) SHA1(c547b869a3a37a82fb46584fe0ef0cfe21a4f882) )
- ROM_REGION( 0x10000 + 0x10000, "asic65:asic65cpu", 0 ) /* dummy region for ADSP 2105 */
+ ROM_REGION( 0x10000 + 0x10000, "mainpcb:asic65:asic65cpu", 0 ) /* dummy region for ADSP 2105 */
ROM_LOAD( "xboota.bin", 0x10000 + 0x00000, 0x10000, CRC(d9c49901) SHA1(9f90ae3a47eb1ef00c3ec3661f60402c2eae2108) )
- ROM_REGION( 0xc0000, "user1", 0 ) /* 768k for object ROM */
+ ROM_REGION( 0xc0000, "mainpcb:user1", 0 ) /* 768k for object ROM */
ROM_LOAD16_BYTE( "objects.0l", 0x00000, 0x20000, CRC(3c9e9078) SHA1(f1daf32117236401f3cb97f332708632003e55f8) )
ROM_LOAD16_BYTE( "objects.0h", 0x00001, 0x20000, CRC(4480dbae) SHA1(6a455173c38e80093f58bdc322cffcf25e70b6ae) )
ROM_LOAD16_BYTE( "objects.1l", 0x40000, 0x20000, CRC(700bd978) SHA1(5cd63d4eee00d90fe29fb9697b6a0ea6b86704ae) )
@@ -4059,23 +4683,23 @@ ROM_START( hdrivairp )
ROM_LOAD16_BYTE( "objects.2l", 0x80000, 0x20000, CRC(e3b512f0) SHA1(080c5a21cb76edcb55d1c2488e9d91cf29cb0665) )
ROM_LOAD16_BYTE( "objects.2h", 0x80001, 0x20000, CRC(3f83742b) SHA1(4b6e0134a806bcc9bd56432737047f86d0a16424) )
- ROM_REGION16_BE( 0x140000, "user3", 0 )/* 1MB for DSK ROMs + 256k for RAM */
+ ROM_REGION16_BE( 0x140000, "mainpcb:user3", 0 )/* 1MB for DSK ROMs + 256k for RAM */
ROM_LOAD16_BYTE( "dskpics.hi", 0x00000, 0x80000, CRC(eaa88101) SHA1(ed0ebf8a9a9514d810242b9b552126f6717f9e25) )
ROM_LOAD16_BYTE( "dskpics.lo", 0x00001, 0x80000, CRC(8c6f0750) SHA1(4cb23cedc500c1509dc875c3291a5771c8473f73) )
- ROM_REGION32_LE( 0x200000, "user4", 0 )/* 2MB for ASIC61 ROMs */
+ ROM_REGION32_LE( 0x200000, "mainpcb:user4", 0 )/* 2MB for ASIC61 ROMs */
ROM_LOAD16_BYTE( "roads.0", 0x000000, 0x80000, CRC(cab2e335) SHA1(914996c5b7905f1c20fcda6972af88debbee59cd) )
ROM_LOAD16_BYTE( "roads.1", 0x000001, 0x80000, CRC(62c244ba) SHA1(f041a269f35a9d187c90241c5b64173663ad5268) )
ROM_LOAD16_BYTE( "roads.2", 0x000002, 0x80000, CRC(ba57f415) SHA1(1daf5a014e9bef15466b282bcca2395fec2b0628) )
ROM_LOAD16_BYTE( "roads.3", 0x000003, 0x80000, CRC(1e6a4ca0) SHA1(2cf06d6c73be11cf10515246fca2baa05ce5091b) )
- ROM_REGION( 0x10000, "ds3sdsp", 0 ) /* DS IV sound ADSP-2105 */
+ ROM_REGION( 0x10000, "mainpcb:ds3sdsp", 0 ) /* DS IV sound ADSP-2105 */
ROM_LOAD( "sboota.bin", 0x00000, 0x10000, CRC(3ef819cd) SHA1(c547b869a3a37a82fb46584fe0ef0cfe21a4f882) )
- ROM_REGION( 0x10000, "ds3xdsp", 0 ) /* DS IV auxillary ADSP-2105 */
+ ROM_REGION( 0x10000, "mainpcb:ds3xdsp", 0 ) /* DS IV auxillary ADSP-2105 */
ROM_LOAD( "xboota.bin", 0x00000, 0x10000, CRC(d9c49901) SHA1(9f90ae3a47eb1ef00c3ec3661f60402c2eae2108) )
- ROM_REGION16_BE( 0x400000, "ds3sdsp_data", 0 )
+ ROM_REGION16_BE( 0x400000, "mainpcb:ds3sdsp_data", 0 )
ROM_LOAD16_BYTE( "ds3rom.5", 0x000000, 0x80000, CRC(6ef9ed90) SHA1(8bd927a56fe99f7db96d203c1daeb8c8c83f2c17) )
ROM_LOAD16_BYTE( "ds3rom.1", 0x000001, 0x80000, CRC(03673d8d) SHA1(13596f7acb58fba78d6e4f2ac7bb21d9d2589668) )
ROM_LOAD16_BYTE( "ds3rom.6", 0x100000, 0x80000, CRC(cd4cd6bc) SHA1(95689ab7cb18af54ff09aebf223f6346f13dfd7b) )
@@ -4085,10 +4709,10 @@ ROM_START( hdrivairp )
ROM_LOAD16_BYTE( "ds3rom.0", 0x300000, 0x80000, CRC(90b8dbb6) SHA1(fff693cb81e88bc00e048bb71406295fe7be5122) )
ROM_LOAD16_BYTE( "ds3rom.4", 0x300001, 0x80000, CRC(6281efee) SHA1(47d0f3ff973166d818877996c45dccf1d3a85fe1) )
- ROM_REGION( 0x800, "200e", 0 )
+ ROM_REGION( 0x800, "mainpcb:200e", 0 )
ROM_LOAD( "hdrivair.200e", 0x000000, 0x000800, CRC(6270b696) SHA1(e302880dbca53ee725108ca4f7e45a176e85e96d) )
- ROM_REGION( 0x800, "210e", 0 )
+ ROM_REGION( 0x800, "mainpcb:210e", 0 )
ROM_LOAD( "hdrivair.210e", 0x000000, 0x000800, CRC(a1c39919) SHA1(92799a7a73f545dad6684eacf7009a6c4d52d8f7) )
ROM_END
@@ -4331,7 +4955,7 @@ void harddriv_state::init_driver_sound()
*
*************************************/
-DRIVER_INIT_MEMBER(harddriv_state,harddriv)
+void harddriv_state::init_harddriv(void)
{
/* initialize the boards */
init_driver();
@@ -4354,7 +4978,7 @@ DRIVER_INIT_MEMBER(harddriv_state,harddriv)
}
-DRIVER_INIT_MEMBER(harddriv_state,harddrivc)
+void harddriv_state::init_harddrivc(void)
{
/* initialize the boards */
init_multisync(1);
@@ -4377,7 +5001,7 @@ DRIVER_INIT_MEMBER(harddriv_state,harddrivc)
}
-DRIVER_INIT_MEMBER(harddriv_state,stunrun)
+void harddriv_state::init_stunrun(void)
{
/* initialize the boards */
init_multisync(0);
@@ -4394,7 +5018,7 @@ DRIVER_INIT_MEMBER(harddriv_state,stunrun)
}
-DRIVER_INIT_MEMBER(harddriv_state,racedriv)
+void harddriv_state::init_racedriv(void)
{
/* initialize the boards */
init_driver();
@@ -4403,7 +5027,7 @@ DRIVER_INIT_MEMBER(harddriv_state,racedriv)
init_driver_sound();
/* set up the slapstic */
- slapstic_init(machine(), 117);
+ m_slapstic_device->slapstic_init(machine(), 117);
m_m68k_slapstic_base = m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(FUNC(harddriv_state::rd68k_slapstic_r), this), write16_delegate(FUNC(harddriv_state::rd68k_slapstic_w), this));
/* synchronization */
@@ -4424,7 +5048,7 @@ void harddriv_state::racedrivc_init_common(offs_t gsp_protection)
init_driver_sound();
/* set up the slapstic */
- slapstic_init(machine(), 117);
+ m_slapstic_device->slapstic_init(machine(), 117);
m_m68k_slapstic_base = m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(FUNC(harddriv_state::rd68k_slapstic_r), this), write16_delegate(FUNC(harddriv_state::rd68k_slapstic_w), this));
/* synchronization */
@@ -4443,10 +5067,39 @@ void harddriv_state::racedrivc_init_common(offs_t gsp_protection)
m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(FUNC(harddriv_state::hdadsp_speedup_r), this));
}
-DRIVER_INIT_MEMBER(harddriv_state,racedrivc) { racedrivc_init_common(0xfff95cd0); }
-DRIVER_INIT_MEMBER(harddriv_state,racedrivc1) { racedrivc_init_common(0xfff7ecd0); }
+void harddriv_state::init_racedrivc(void) { racedrivc_init_common(0xfff95cd0); }
+void harddriv_state::init_racedrivc1(void) { racedrivc_init_common(0xfff7ecd0); }
-DRIVER_INIT_MEMBER(harddriv_state,racedrivb1)
+void harddriv_state::init_racedrivc_panorama_side()
+{
+ int gsp_protection = 0xfff960a0; // correct? same as strtdriv
+ /* initialize the boards */
+ init_multisync(1);
+ init_adsp();
+// init_dsk();
+// init_driver_sound();
+
+ /* set up the slapstic */
+ m_slapstic_device->slapstic_init(machine(), 117);
+ m_m68k_slapstic_base = m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(FUNC(harddriv_state::rd68k_slapstic_r), this), write16_delegate(FUNC(harddriv_state::rd68k_slapstic_w), this));
+
+ /* synchronization */
+// m_rddsp32_sync[0] = m_dsp32->space(AS_PROGRAM).install_write_handler(0x613c00, 0x613c03, write32_delegate(FUNC(harddriv_state::rddsp32_sync0_w), this));
+// m_rddsp32_sync[1] = m_dsp32->space(AS_PROGRAM).install_write_handler(0x613e00, 0x613e03, write32_delegate(FUNC(harddriv_state::rddsp32_sync1_w), this));
+
+ /* set up protection hacks */
+ m_gsp_protection = m_gsp->space(AS_PROGRAM).install_write_handler(gsp_protection, gsp_protection + 0x0f, write16_delegate(FUNC(harddriv_state::hdgsp_protection_w), this));
+
+ /* set up gsp speedup handler */
+// m_gsp_speedup_addr[0] = m_gsp->space(AS_PROGRAM).install_write_handler(0xfff76f60, 0xfff76f6f, write16_delegate(FUNC(harddriv_state::rdgsp_speedup1_w), this));
+// m_gsp->space(AS_PROGRAM).install_read_handler(0xfff76f60, 0xfff76f6f, read16_delegate(FUNC(harddriv_state::rdgsp_speedup1_r), this));
+// m_gsp_speedup_pc = 0xfff43a00;
+
+ /* set up adsp speedup handlers */
+ m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(FUNC(harddriv_state::hdadsp_speedup_r), this));
+}
+
+void harddriv_state::init_racedrivb1(void)
{
/* this unpleasantness prevents racedriv1/racedrivb1/racedrivg1 from crashing MAME during boot */
/* they clear the DSP32C's RAM and then release it from reset, causing it to run through */
@@ -4499,23 +5152,23 @@ void harddriv_state::steeltal_init_common(offs_t ds3_transfer_pc, int proto_sloo
}
-DRIVER_INIT_MEMBER(harddriv_state,steeltal)
+void harddriv_state::init_steeltal(void)
{
steeltal_init_common(0x4fc18, 0);
}
-DRIVER_INIT_MEMBER(harddriv_state,steeltal1)
+void harddriv_state::init_steeltal1(void)
{
steeltal_init_common(0x4f9c6, 0);
}
-DRIVER_INIT_MEMBER(harddriv_state,steeltalp)
+void harddriv_state::init_steeltalp(void)
{
steeltal_init_common(0x52290, 1);
}
-DRIVER_INIT_MEMBER(harddriv_state,strtdriv)
+void harddriv_state::init_strtdriv(void)
{
/* initialize the boards */
init_multisync(1);
@@ -4523,7 +5176,7 @@ DRIVER_INIT_MEMBER(harddriv_state,strtdriv)
init_dsk();
/* set up the slapstic */
- slapstic_init(machine(), 117);
+ m_slapstic_device->slapstic_init(machine(), 117);
m_m68k_slapstic_base = m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(FUNC(harddriv_state::rd68k_slapstic_r), this), write16_delegate(FUNC(harddriv_state::rd68k_slapstic_w), this));
m_maincpu->space(AS_PROGRAM).install_read_handler(0xa80000, 0xafffff, read16_delegate(FUNC(harddriv_state::hda68k_port1_r), this));
@@ -4544,7 +5197,7 @@ DRIVER_INIT_MEMBER(harddriv_state,strtdriv)
}
-DRIVER_INIT_MEMBER(harddriv_state,hdrivair)
+void harddriv_state::init_hdrivair(void)
{
/* initialize the boards */
init_multisync(1);
@@ -4569,7 +5222,7 @@ DRIVER_INIT_MEMBER(harddriv_state,hdrivair)
}
-DRIVER_INIT_MEMBER(harddriv_state,hdrivairp)
+void harddriv_state::init_hdrivairp(void)
{
/* initialize the boards */
init_multisync(1);
@@ -4594,71 +5247,72 @@ DRIVER_INIT_MEMBER(harddriv_state,hdrivairp)
}
-
/*************************************
*
* Game driver(s)
*
*************************************/
-GAME( 1988, harddriv, 0, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 7)", 0 )
-GAME( 1988, harddrivb, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 7)", 0 )
-GAME( 1988, harddrivg, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, German, rev 7)", 0 )
-GAME( 1988, harddrivj, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, Japan, rev 7)", 0 )
-GAME( 1988, harddrivb6, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 6)", 0 )
-GAME( 1988, harddrivj6, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, Japan, rev 6)", 0 )
-GAME( 1988, harddrivb5, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 5)", 0 )
-GAME( 1988, harddrivg4, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, German, rev 4)", 0 )
-GAME( 1988, harddriv3, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 3)", 0 )
-GAME( 1988, harddriv2, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 2)", 0 )
-GAME( 1988, harddriv1, harddriv, harddriv, harddriv, harddriv_state, harddriv, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 1)", 0 )
+GAME( 1999, harddriv, 0, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 7)", 0 )
+GAME( 1988, harddrivb, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 7)", 0 )
+GAME( 1988, harddrivg, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, German, rev 7)", 0 )
+GAME( 1988, harddrivj, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, Japan, rev 7)", 0 )
+GAME( 1988, harddrivb6, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 6)", 0 )
+GAME( 1988, harddrivj6, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, Japan, rev 6)", 0 )
+GAME( 1988, harddrivb5, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, British, rev 5)", 0 )
+GAME( 1988, harddrivg4, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, German, rev 4)", 0 )
+GAME( 1988, harddriv3, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 3)", 0 )
+GAME( 1988, harddriv2, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 2)", 0 )
+GAME( 1988, harddriv1, harddriv, harddriv_machine, harddriv, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (cockpit, rev 1)", 0 )
-GAME( 1990, harddrivc, harddriv, harddrivc, racedrivc, harddriv_state, harddrivc, ROT0, "Atari Games", "Hard Drivin' (compact, rev 2)", 0 )
-GAME( 1990, harddrivcg, harddriv, harddrivc, racedrivc, harddriv_state, harddrivc, ROT0, "Atari Games", "Hard Drivin' (compact, German, rev 2)", 0 )
-GAME( 1990, harddrivcb, harddriv, harddrivc, racedrivc, harddriv_state, harddrivc, ROT0, "Atari Games", "Hard Drivin' (compact, British, rev 2)", 0 )
-GAME( 1990, harddrivc1, harddriv, harddrivc, racedrivc, harddriv_state, harddrivc, ROT0, "Atari Games", "Hard Drivin' (compact, rev 1)", 0 )
+GAME( 1990, harddrivc, harddriv, harddrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (compact, rev 2)", 0 )
+GAME( 1990, harddrivcg, harddriv, harddrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (compact, German, rev 2)", 0 )
+GAME( 1990, harddrivcb, harddriv, harddrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (compact, British, rev 2)", 0 )
+GAME( 1990, harddrivc1, harddriv, harddrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Hard Drivin' (compact, rev 1)", 0 )
-GAME( 1989, stunrun, 0, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 6)", 0 )
-GAME( 1989, stunrunj, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 7, Japan)", 0 )
-GAME( 1989, stunrun5, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 5)", 0 )
-GAME( 1989, stunrune, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 5, Europe)", 0 )
-GAME( 1989, stunrun4, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 4)", 0 )
-GAME( 1989, stunrun3, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 3)", 0 )
-GAME( 1989, stunrun3e, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 3, Europe)", 0 )
-GAME( 1989, stunrun2, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 2)", 0 )
-GAME( 1989, stunrun2e, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 2, Europe)", 0 )
-GAME( 1989, stunrun0, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (rev 0)", 0 )
-GAME( 1989, stunrunp, stunrun, stunrun, stunrun, harddriv_state, stunrun, ROT0, "Atari Games", "S.T.U.N. Runner (upright prototype)", 0 )
+GAME( 1989, stunrun, 0, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 6)", 0 )
+GAME( 1989, stunrunj, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 7, Japan)", 0 )
+GAME( 1989, stunrun5, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 5)", 0 )
+GAME( 1989, stunrune, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 5, Europe)", 0 )
+GAME( 1989, stunrun4, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 4)", 0 )
+GAME( 1989, stunrun3, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 3)", 0 )
+GAME( 1989, stunrun3e, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 3, Europe)", 0 )
+GAME( 1989, stunrun2, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 2)", 0 )
+GAME( 1989, stunrun2e, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 2, Europe)", 0 )
+GAME( 1989, stunrun0, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (rev 0)", 0 )
+GAME( 1989, stunrunp, stunrun, stunrun_machine, stunrun, driver_device, 0, ROT0, "Atari Games", "S.T.U.N. Runner (upright prototype)", 0 )
-GAME( 1990, racedriv, 0, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 5)", 0 )
-GAME( 1990, racedrivb, racedriv, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 5)", 0 )
-GAME( 1990, racedrivg, racedriv, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 5)", 0 )
-GAME( 1990, racedriv4, racedriv, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 4)", 0 )
-GAME( 1990, racedrivb4, racedriv, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 4)", 0 )
-GAME( 1990, racedrivg4, racedriv, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 4)", 0 )
-GAME( 1990, racedriv3, racedriv, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 3)", 0 )
-GAME( 1990, racedriv2, racedriv, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 2)", 0 )
-GAME( 1990, racedriv1, racedriv, racedriv, racedriv, harddriv_state, racedrivb1, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 1)", 0 )
-GAME( 1990, racedrivb1, racedriv, racedriv, racedriv, harddriv_state, racedrivb1, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 1)", 0 )
-GAME( 1990, racedrivg1, racedriv, racedriv, racedriv, harddriv_state, racedrivb1, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 2)", 0 )
+GAME( 1990, racedriv, 0, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 5)", 0 )
+GAME( 1990, racedrivb, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 5)", 0 )
+GAME( 1990, racedrivg, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 5)", 0 )
+GAME( 1990, racedriv4, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 4)", 0 )
+GAME( 1990, racedrivb4, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 4)", 0 )
+GAME( 1990, racedrivg4, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 4)", 0 )
+GAME( 1990, racedriv3, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 3)", 0 )
+GAME( 1990, racedriv2, racedriv, racedriv_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 2)", 0 )
+GAME( 1990, racedriv1, racedriv, racedrivb1_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, rev 1)", 0 )
+GAME( 1990, racedrivb1, racedriv, racedrivb1_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, British, rev 1)", 0 )
+GAME( 1990, racedrivg1, racedriv, racedrivb1_machine, racedriv, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (cockpit, German, rev 2)", 0 )
-GAME( 1990, racedrivc, racedriv, racedrivc, racedrivc, harddriv_state, racedrivc, ROT0, "Atari Games", "Race Drivin' (compact, rev 5)", 0 )
-GAME( 1990, racedrivcb, racedriv, racedrivc, racedrivc, harddriv_state, racedrivc, ROT0, "Atari Games", "Race Drivin' (compact, British, rev 5)", 0 )
-GAME( 1990, racedrivcg, racedriv, racedrivc, racedrivc, harddriv_state, racedrivc, ROT0, "Atari Games", "Race Drivin' (compact, German, rev 5)", 0 )
-GAME( 1990, racedrivc4, racedriv, racedrivc, racedrivc, harddriv_state, racedrivc, ROT0, "Atari Games", "Race Drivin' (compact, rev 4)", 0 )
-GAME( 1990, racedrivcb4, racedriv, racedrivc, racedrivc, harddriv_state, racedrivc, ROT0, "Atari Games", "Race Drivin' (compact, British, rev 4)", 0 )
-GAME( 1990, racedrivcg4, racedriv, racedrivc, racedrivc, harddriv_state, racedrivc, ROT0, "Atari Games", "Race Drivin' (compact, German, rev 4)", 0 )
-GAME( 1990, racedrivc2, racedriv, racedrivc, racedrivc, harddriv_state, racedrivc1,ROT0, "Atari Games", "Race Drivin' (compact, rev 2)", 0 )
-GAME( 1990, racedrivc1, racedriv, racedrivc, racedrivc, harddriv_state, racedrivc1,ROT0, "Atari Games", "Race Drivin' (compact, rev 1)", 0 )
+GAME( 1990, racedrivc, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, rev 5)", 0 )
+GAME( 1990, racedrivcb, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, British, rev 5)", 0 )
+GAME( 1990, racedrivcg, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, German, rev 5)", 0 )
+GAME( 1990, racedrivc4, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, rev 4)", 0 )
+GAME( 1990, racedrivcb4, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, British, rev 4)", 0 )
+GAME( 1990, racedrivcg4, racedriv, racedrivc_machine, racedrivc, driver_device, 0, ROT0, "Atari Games", "Race Drivin' (compact, German, rev 4)", 0 )
+GAME( 1990, racedrivc2, racedriv, racedrivc1_machine, racedrivc, driver_device, 0,ROT0, "Atari Games", "Race Drivin' (compact, rev 2)", 0 )
+GAME( 1990, racedrivc1, racedriv, racedrivc1_machine, racedrivc, driver_device, 0,ROT0, "Atari Games", "Race Drivin' (compact, rev 1)", 0 )
-GAME( 1990, racedrivpan, racedriv, racedriv, racedriv, harddriv_state, racedriv, ROT0, "Atari Games", "Race Drivin' Panorama (prototype, rev 2.1)", GAME_NOT_WORKING )
+GAMEL( 1990, racedrivpan, racedriv, racedriv_panorama_machine, racedriv_pan, driver_device, 0, ROT0, "Atari Games", "Race Drivin' Panorama (prototype, rev 2.1)", GAME_NOT_WORKING, layout_racedrivpan )
-GAME( 1991, steeltal, 0, steeltal, steeltal, harddriv_state, steeltal, ROT0, "Atari Games", "Steel Talons (rev 2)", 0 )
-GAME( 1991, steeltalg, steeltal, steeltal, steeltal, harddriv_state, steeltal, ROT0, "Atari Games", "Steel Talons (German, rev 2)", 0 )
-GAME( 1991, steeltal1, steeltal, steeltal, steeltal, harddriv_state, steeltal1,ROT0, "Atari Games", "Steel Talons (rev 1)", 0 )
-GAME( 1991, steeltalp, steeltal, steeltal, steeltal, harddriv_state, steeltalp,ROT0, "Atari Games", "Steel Talons (prototype)", GAME_NOT_WORKING )
+GAME( 1991, steeltal, 0, steeltal_machine, steeltal, driver_device, 0, ROT0, "Atari Games", "Steel Talons (rev 2)", 0 )
+GAME( 1991, steeltalg, steeltal, steeltal_machine, steeltal, driver_device, 0, ROT0, "Atari Games", "Steel Talons (German, rev 2)", 0 )
+GAME( 1991, steeltal1, steeltal, steeltal1_machine, steeltal, driver_device, 0,ROT0, "Atari Games", "Steel Talons (rev 1)", 0 )
+GAME( 1991, steeltalp, steeltal, steeltalp_machine, steeltal, driver_device, 0,ROT0, "Atari Games", "Steel Talons (prototype)", GAME_NOT_WORKING )
+
+GAME( 1993, strtdriv, 0, strtdriv_machine, strtdriv, driver_device, 0, ROT0, "Atari Games", "Street Drivin' (prototype)", 0 )
+
+GAME( 1993, hdrivair, 0, hdrivair_machine, hdrivair, driver_device, 0, ROT0, "Atari Games", "Hard Drivin's Airborne (prototype)", GAME_IMPERFECT_SOUND )
+GAME( 1993, hdrivairp, hdrivair, hdrivairp_machine, hdrivair, driver_device, 0,ROT0, "Atari Games", "Hard Drivin's Airborne (prototype, early rev)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
-GAME( 1993, strtdriv, 0, strtdriv, strtdriv, harddriv_state, strtdriv, ROT0, "Atari Games", "Street Drivin' (prototype)", 0 )
-GAME( 1993, hdrivair, 0, hdrivair, hdrivair, harddriv_state, hdrivair, ROT0, "Atari Games", "Hard Drivin's Airborne (prototype)", GAME_IMPERFECT_SOUND )
-GAME( 1993, hdrivairp, hdrivair, hdrivair, hdrivair, harddriv_state, hdrivairp,ROT0, "Atari Games", "Hard Drivin's Airborne (prototype, early rev)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
diff --git a/src/mame/drivers/kyugo.c b/src/mame/drivers/kyugo.c
index 7e2afd7fc16..75380c0970a 100644
--- a/src/mame/drivers/kyugo.c
+++ b/src/mame/drivers/kyugo.c
@@ -1379,7 +1379,7 @@ GAME( 1986, fx, srdmissn, srdmissn, srdmissn, kyugo_state, srdmissn, R
GAME( 1986, legend, 0, legend, legend, kyugo_state, srdmissn, ROT0, "Kyugo / Sega", "Legend", GAME_SUPPORTS_SAVE ) // no copyright (maybe also a bootleg?)
GAME( 1986, legendb, legend, legend, legend, kyugo_state, srdmissn, ROT0, "bootleg", "Legion (bootleg of Legend)", GAME_SUPPORTS_SAVE ) // no copyright
GAME( 1987, airwolf, 0, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "Kyugo", "Airwolf", GAME_SUPPORTS_SAVE )
-GAME( 1987, airwolfa, airwolf, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "Kyugo (UA Theatre license)", "Airwolf (US)", GAME_SUPPORTS_SAVE )
+GAME( 1987, airwolfa, airwolf, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "Kyugo (United Amusements license)", "Airwolf (US)", GAME_SUPPORTS_SAVE )
GAME( 1987, skywolf, airwolf, srdmissn, skywolf, kyugo_state, srdmissn, ROT0, "bootleg", "Sky Wolf (set 1)", GAME_SUPPORTS_SAVE )
GAME( 1987, skywolf2, airwolf, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "bootleg", "Sky Wolf (set 2)", GAME_SUPPORTS_SAVE )
GAME( 1987, skywolf3, airwolf, srdmissn, airwolf, kyugo_state, srdmissn, ROT0, "bootleg", "Sky Wolf (set 3)", GAME_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/lindbergh.c b/src/mame/drivers/lindbergh.c
index a29a7fe00d4..8e575b4c3fc 100644
--- a/src/mame/drivers/lindbergh.c
+++ b/src/mame/drivers/lindbergh.c
@@ -221,12 +221,20 @@ Sega 2005
#include "emu.h"
#include "cpu/i386/i386.h"
-#include "machine/pcshare.h"
-#include "machine/pckeybrd.h"
-#include "video/pc_vga.h"
#include "machine/pci.h"
+#include "machine/i82875p.h"
+#include "machine/i6300esb.h"
+#include "machine/pci-usb.h"
+#include "machine/pci-apic.h"
+#include "machine/pci-sata.h"
+#include "machine/pci-smbus.h"
+#include "machine/i82541.h"
+#include "machine/segabb.h"
+#include "sound/pci-ac97.h"
+#include "sound/sb0400.h"
+#include "video/gf6800gt.h"
-class lindbergh_state : public pcat_base_state
+class lindbergh_state : public driver_device
{
public:
lindbergh_state(const machine_config &mconfig, device_type type, const char *tag);
@@ -235,24 +243,26 @@ public:
virtual void machine_reset();
};
+#if 0
static ADDRESS_MAP_START(lindbergh_map, AS_PROGRAM, 32, lindbergh_state)
AM_RANGE(0x00000000, 0x0009ffff) AM_RAM
- AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff)
- AM_RANGE(0x000c0000, 0x000cffff) AM_ROM AM_REGION("vid_bios", 0)
+ // AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff)
+ // AM_RANGE(0x000c0000, 0x000cffff) AM_ROM AM_REGION("vid_bios", 0)
// 0xd0000 - 0xdffff tested, wants 0x414d ("AM") in there
AM_RANGE(0x000f0000, 0x000fffff) AM_ROM AM_REGION("mb_bios", 0xf0000)
- AM_RANGE(0xfd000000, 0xfd3fffff) AM_ROM AM_REGION("jvs_bios", 0) /* Hack to see the data */
+// AM_RANGE(0xfd000000, 0xfd3fffff) AM_ROM AM_REGION("jvs_bios", 0) /* Hack to see the data */
AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("mb_bios", 0) /* System BIOS */
ADDRESS_MAP_END
static ADDRESS_MAP_START(lindbergh_io, AS_IO, 32, lindbergh_state)
- AM_IMPORT_FROM(pcat32_io_common)
+// AM_IMPORT_FROM(pcat32_io_common)
- AM_RANGE(0x00e8, 0x00ef) AM_NOP
- AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
+// AM_RANGE(0x00e8, 0x00ef) AM_NOP
+// AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
ADDRESS_MAP_END
+#endif
-lindbergh_state::lindbergh_state(const machine_config &mconfig, device_type type, const char *tag) : pcat_base_state(mconfig, type, tag)
+lindbergh_state::lindbergh_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag)
{
}
@@ -267,18 +277,37 @@ void lindbergh_state::machine_reset()
static MACHINE_CONFIG_START(lindbergh, lindbergh_state)
// MCFG_CPU_ADD("maincpu", PENTIUM, 2800000000U) /* Actually Celeron D at 2,8 GHz */
MCFG_CPU_ADD("maincpu", PENTIUM4, 28000000U*5) /* Actually Celeron D at 2,8 GHz */
- MCFG_CPU_PROGRAM_MAP(lindbergh_map)
- MCFG_CPU_IO_MAP(lindbergh_io)
- MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
+// MCFG_CPU_PROGRAM_MAP(lindbergh_map)
+// MCFG_CPU_IO_MAP(lindbergh_io)
+// MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb)
- MCFG_FRAGMENT_ADD( pcat_common )
- MCFG_FRAGMENT_ADD( pcvideo_vga )
+// MCFG_FRAGMENT_ADD( pcat_common )
+// MCFG_FRAGMENT_ADD( pcvideo_vga )
- MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
+// MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
+
+ MCFG_PCI_ROOT_ADD( ":pci")
+ MCFG_I82875P_HOST_ADD( ":pci:00.0", 0x103382c0, ":maincpu", 512*1024*1024)
+ MCFG_I82875P_AGP_ADD( ":pci:01.0")
+ MCFG_GEFORCE_6800GT_ADD( ":pci:01.0:00.0", 0x10de0204)
+ MCFG_PCI_BRIDGE_ADD( ":pci:1c.0", 0x808625ae, 0x02)
+ MCFG_I82541PI_ADD( ":pci:1c.0:00.0", 0x103382c0)
+ MCFG_USB_UHCI_ADD( ":pci:1d.0", 0x808625a9, 0x02, 0x103382c0)
+ MCFG_USB_UHCI_ADD( ":pci:1d.1", 0x808625aa, 0x02, 0x103382c0)
+ MCFG_I6300ESB_WATCHDOG_ADD( ":pci:1d.4", 0x103382c0)
+ MCFG_APIC_ADD( ":pci:1d.5", 0x808625ac, 0x02, 0x103382c0)
+ MCFG_USB_EHCI_ADD( ":pci:1d.7", 0x808625ad, 0x02, 0x103382c0)
+ MCFG_PCI_BRIDGE_ADD( ":pci:1e.0", 0x8086244e, 0x0a)
+ MCFG_SB0400_ADD( ":pci:1e.0:02.0", 0x11021101)
+ MCFG_SEGA_LINDBERGH_BASEBOARD_ADD(":pci:1e.0:03.0")
+ MCFG_I6300ESB_LPC_ADD( ":pci:1f.0")
+ MCFG_SATA_ADD( ":pci:1f.2", 0x808625a3, 0x02, 0x103382c0)
+ MCFG_SMBUS_ADD( ":pci:1f.3", 0x808625a4, 0x02, 0x103382c0)
+ MCFG_AC97_ADD( ":pci:1f.5", 0x808625a6, 0x02, 0x103382c0)
MACHINE_CONFIG_END
ROM_START(lindbios)
- ROM_REGION32_LE(0x100000, "mb_bios", 0) // location 3j7
+ ROM_REGION32_LE(0x100000, ":pci:1f.0", 0) // PC bios, location 3j7
ROM_SYSTEM_BIOS(0, "bios0", "6.0.0010 alternate version")
ROMX_LOAD("6.0.0010a.bin", 0x00000, 0x100000, CRC(10dd9b76) SHA1(1fdf1f921bc395846a7c3180fbdbc4ca287a9670), ROM_BIOS(1) )
ROM_SYSTEM_BIOS(1, "bios1", "6.0.0009")
@@ -287,11 +316,11 @@ ROM_START(lindbios)
ROMX_LOAD("6.0.0010.bin", 0x00000, 0x100000, CRC(ea2bf888) SHA1(c9c5b6f0d4f4f36620939b15dd2f128a74347e37), ROM_BIOS(3) )
- ROM_REGION(0x400000, "jvs_bios", 0)
+ ROM_REGION(0x400000, ":pci:1e.0:03.0", 0) // Baseboard MPC firmware
ROM_LOAD("fpr-24370b.ic6", 0x000000, 0x400000, CRC(c3b021a4) SHA1(1b6938a50fe0e4ae813864649eb103838c399ac0))
- ROM_REGION(0x10000, "vid_bios", 0)
+ ROM_REGION32_LE(0x10000, ":pci:01.0:00.0", 0) // Geforce bios extension (custom or standard?)
ROM_LOAD("vid_bios.u504", 0x00000, 0x10000, CRC(f78d14d7) SHA1(f129787e487984edd23bf344f2e9500c85052275))
ROM_END
-GAME(1999, lindbios, 0, lindbergh, at_keyboard, driver_device, 0, ROT0, "Sega Lindbergh", "Sega Lindbergh Bios", GAME_IS_SKELETON)
+GAME(1999, lindbios, 0, lindbergh, 0, driver_device, 0, ROT0, "Sega Lindbergh", "Sega Lindbergh Bios", GAME_IS_SKELETON)
diff --git a/src/mame/drivers/magictg.c b/src/mame/drivers/magictg.c
index 035e8555f80..3214736ad09 100644
--- a/src/mame/drivers/magictg.c
+++ b/src/mame/drivers/magictg.c
@@ -118,7 +118,7 @@ Medium size chip with heat sink on it
#include "cpu/adsp2100/adsp2100.h"
#include "sound/dmadac.h"
#include "video/voodoo.h"
-#include "machine/pci.h"
+#include "machine/lpci.h"
/* TODO: Two 3Dfx Voodoo chipsets are used in SLI configuration */
diff --git a/src/mame/drivers/maygay1b.c b/src/mame/drivers/maygay1b.c
index 1636ee987d7..e2c3ff64ee5 100644
--- a/src/mame/drivers/maygay1b.c
+++ b/src/mame/drivers/maygay1b.c
@@ -96,6 +96,7 @@ void maygay1b_state::machine_reset()
{
m_vfd->reset(); // reset display1
m1_stepper_reset();
+ m_Vmm=false;
}
///////////////////////////////////////////////////////////////////////////
@@ -111,7 +112,6 @@ void maygay1b_state::cpu0_firq(int data)
WRITE_LINE_MEMBER(maygay1b_state::duart_irq_handler)
{
m_maincpu->set_input_line(M6809_IRQ_LINE, state?ASSERT_LINE:CLEAR_LINE);
- LOG(("6809 irq%d \n",state));
}
// FIRQ, related to the sample playback?
@@ -122,34 +122,34 @@ READ8_MEMBER( maygay1b_state::m1_firq_trg_r )
{
cpu0_firq(1);
}
- return nar;
+ return 0xff;
}
READ8_MEMBER( maygay1b_state::m1_firq_clr_r )
{
cpu0_firq(0);
- return 0;
+ return 0xff;
}
// NMI is periodic? or triggered by a write?
TIMER_DEVICE_CALLBACK_MEMBER( maygay1b_state::maygay1b_nmitimer_callback )
{
-//disabling for now
- if (m_NMIENABLE)
- {
- LOG(("6809 nmi\n"));
- m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
- m_NMIENABLE=0;
- }
-
+ m_Vmm = !m_Vmm;
+ cpu0_nmi();
}
-/*
-void maygay1b_state::cpu0_nmi(int data)
+void maygay1b_state::cpu0_nmi()
{
- m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
+ if (m_Vmm && m_NMIENABLE)
+ {
+ m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
+ }
+ else
+ {
+ m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
+ }
}
-*/
+
/***************************************************************************
6821 PIA
***************************************************************************/
@@ -286,7 +286,7 @@ INPUT_PORTS_START( maygay_m1 )
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("68")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("69")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("70")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("72")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("RESET")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("73")
INPUT_PORTS_END
@@ -376,10 +376,13 @@ WRITE8_MEMBER(maygay1b_state::m1_latch_w)
m_ALARMEN = (data & 1);
break;
case 2: // Enable
- if ( m_NMIENABLE == 0 && ( data & 1 ) )
{
- m_NMIENABLE = (data & 1);
- //cpu0_nmi(1);
+ if ( m_NMIENABLE == 0 && ( data & 1 ))
+ {
+ m_NMIENABLE = (data & 1);
+ cpu0_nmi();
+ }
+ m_NMIENABLE = (data & 1);
}
break;
case 3: // RTS
@@ -395,7 +398,7 @@ WRITE8_MEMBER(maygay1b_state::m1_latch_w)
case 6: // Srsel
// this is the ROM banking?
printf("rom bank %02x\n",data);
- m_SRSEL = (data & 1);
+ m_bank1->set_entry(data & 1);
break;
}
}
@@ -410,13 +413,13 @@ WRITE8_MEMBER(maygay1b_state::latch_ch2_w)
READ8_MEMBER(maygay1b_state::latch_st_hi)
{
m_msm6376->st_w(1);
- return 0;
+ return 0xff;
}
READ8_MEMBER(maygay1b_state::latch_st_lo)
{
m_msm6376->st_w(0);
- return 0;
+ return 0xff;
}
READ8_MEMBER(maygay1b_state::m1_meter_r)
@@ -469,7 +472,92 @@ static ADDRESS_MAP_START( m1_memmap, AS_PROGRAM, 8, maygay1b_state )
AM_RANGE(0x2420, 0x2421) AM_WRITE(latch_ch2_w ) // oki
- AM_RANGE(0x2800, 0xffff) AM_ROM
+ AM_RANGE(0x2800, 0xdfff) AM_ROM
+ AM_RANGE(0xe000, 0xffff) AM_ROMBANK("bank1") /* 64k paged ROM (4 pages) */
+
+ADDRESS_MAP_END
+
+/*************************************************
+ *
+ * NEC uPD7759 handling (used as OKI replacement)
+ *
+ *************************************************/
+READ8_MEMBER(maygay1b_state::m1_firq_nec_r)
+{
+ int busy = m_upd7759->busy_r();
+ if (!busy)
+ {
+ cpu0_firq(1);
+ }
+ return 0xff;
+}
+
+READ8_MEMBER(maygay1b_state::nec_reset_r)
+{
+ m_upd7759->reset_w(0);
+ m_upd7759->reset_w(1);
+ return 0xff;
+}
+
+WRITE8_MEMBER(maygay1b_state::nec_bank0_w)
+{
+ m_upd7759->set_bank_base(0x00000);
+ m_upd7759->port_w(space, 0, data);
+ m_upd7759->start_w(0);
+ m_upd7759->start_w(1);
+}
+
+WRITE8_MEMBER(maygay1b_state::nec_bank1_w)
+{
+ m_upd7759->set_bank_base(0x20000);
+ m_upd7759->port_w(space, 0, data);
+ m_upd7759->start_w(0);
+ m_upd7759->start_w(1);
+}
+
+static ADDRESS_MAP_START( m1_nec_memmap, AS_PROGRAM, 8, maygay1b_state )
+ AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram")
+
+ AM_RANGE(0x2000, 0x2000) AM_WRITE(reel12_w)
+ AM_RANGE(0x2010, 0x2010) AM_WRITE(reel34_w)
+ AM_RANGE(0x2020, 0x2020) AM_WRITE(reel56_w)
+
+ // there is actually an 8279 and an 8051 (which I guess is the MCU?).
+ AM_RANGE(0x2030, 0x2030) AM_DEVREADWRITE("i8279", i8279_device, data_r, data_w )
+ AM_RANGE(0x2031, 0x2031) AM_DEVREADWRITE("i8279", i8279_device, status_r, cmd_w)
+
+ //8051
+ AM_RANGE(0x2040, 0x2040) AM_DEVREADWRITE("i8279_2", i8279_device, data_r, data_w )
+ AM_RANGE(0x2041, 0x2041) AM_DEVREADWRITE("i8279_2", i8279_device, status_r, cmd_w)
+// AM_RANGE(0x2050, 0x2050)// SCAN on M1B
+
+ AM_RANGE(0x2070, 0x207f) AM_DEVREADWRITE("duart68681", mc68681_device, read, write )
+
+ AM_RANGE(0x2090, 0x2091) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
+ AM_RANGE(0x20B0, 0x20B0) AM_READ(m1_meter_r)
+
+ AM_RANGE(0x20A0, 0x20A3) AM_DEVWRITE("pia", pia6821_device, write)
+ AM_RANGE(0x20A0, 0x20A3) AM_DEVREAD("pia", pia6821_device, read)
+
+ AM_RANGE(0x20C0, 0x20C7) AM_WRITE(m1_latch_w)
+
+ AM_RANGE(0x2400, 0x2401) AM_DEVWRITE("ymsnd", ym2413_device, write)
+ AM_RANGE(0x2404, 0x2405) AM_WRITE(nec_bank0_w)
+ AM_RANGE(0x2406, 0x2407) AM_WRITE(nec_bank1_w)
+
+ AM_RANGE(0x2408, 0x2409) AM_READ(nec_reset_r)
+
+ AM_RANGE(0x240c, 0x240d) AM_READ(m1_firq_clr_r)
+
+ AM_RANGE(0x240e, 0x240f) AM_READ(m1_firq_nec_r)
+
+ AM_RANGE(0x2412, 0x2412) AM_READ(m1_firq_trg_r) // firq, sample playback?
+
+ AM_RANGE(0x2420, 0x2421) AM_WRITE(latch_ch2_w ) // oki
+
+ AM_RANGE(0x2800, 0xdfff) AM_ROM
+ AM_RANGE(0xe000, 0xffff) AM_ROMBANK("bank1") /* 64k paged ROM (4 pages) */
+
ADDRESS_MAP_END
@@ -530,8 +618,6 @@ WRITE8_MEMBER( maygay1b_state::lamp_data_2_w )
// machine driver for maygay m1 board /////////////////////////////////
-
-
MACHINE_CONFIG_START( maygay_m1, maygay1b_state )
MCFG_CPU_ADD("maincpu", M6809, M1_MASTER_CLOCK/2)
@@ -546,16 +632,20 @@ MACHINE_CONFIG_START( maygay_m1, maygay1b_state )
MCFG_PIA_WRITEPB_HANDLER(WRITE8(maygay1b_state, m1_pia_portb_w))
MCFG_S16LF01_ADD("vfd",0)
- MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("aysnd", YM2149, M1_MASTER_CLOCK)
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(maygay1b_state, m1_meter_w))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(maygay1b_state, m1_lockout_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
MCFG_SOUND_ADD("ymsnd", YM2413, M1_MASTER_CLOCK/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
- MCFG_SOUND_ADD("msm6376", OKIM6376, M1_MASTER_CLOCK/4) //?
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MCFG_SOUND_ADD("msm6376", OKIM6376, 102400) //? Seems to work well with samples, but unconfirmed
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
MCFG_TIMER_DRIVER_ADD_PERIODIC("nmitimer", maygay1b_state, maygay1b_nmitimer_callback, attotime::from_hz(75)) // freq?
MCFG_DEVICE_ADD("i8279", I8279, M1_MASTER_CLOCK/4) // unknown clock
@@ -571,27 +661,29 @@ MACHINE_CONFIG_START( maygay_m1, maygay1b_state )
MACHINE_CONFIG_END
+MACHINE_CONFIG_DERIVED( maygay_m1_nec, maygay_m1 )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(m1_nec_memmap)
-
-
-
-
+ MCFG_DEVICE_REMOVE("msm6376")
+
+ MCFG_SOUND_ADD("upd", UPD7759, UPD7759_STANDARD_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+MACHINE_CONFIG_END
WRITE8_MEMBER(maygay1b_state::m1ab_no_oki_w)
{
popmessage("write to OKI, but no OKI rom");
}
-DRIVER_INIT_MEMBER(maygay1b_state,m1)
+DRIVER_INIT_MEMBER(maygay1b_state,m1common)
{
- //AM_RANGE(0x2420, 0x2421) AM_WRITE(latch_ch2_w ) // oki
- // if there is no OKI region disable writes here, the rom might be missing, so alert user
+ //Initialise paging for non-extended ROM space
+ UINT8 *rom = memregion("maincpu")->base();
+ membank("bank1")->configure_entries(0, 1, &rom[0x0e000], 0x10000);
+ membank("bank1")->set_entry(0);
- UINT8 *okirom = memregion( "msm6376" )->base();
-
- if (!okirom) {
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x2420, 0x2421, write8_delegate(FUNC(maygay1b_state::m1ab_no_oki_w), this));
- }
// print out the rom id / header info to give us some hints
// note this isn't always correct, alley cat has 'Calpsyo' still in the ident string?
{
@@ -618,3 +710,23 @@ DRIVER_INIT_MEMBER(maygay1b_state,m1)
}
}
}
+
+
+DRIVER_INIT_MEMBER(maygay1b_state,m1nec)
+{
+ DRIVER_INIT_CALL(m1common);
+}
+
+DRIVER_INIT_MEMBER(maygay1b_state,m1)
+{
+ DRIVER_INIT_CALL(m1common);
+
+ //AM_RANGE(0x2420, 0x2421) AM_WRITE(latch_ch2_w ) // oki
+ // if there is no OKI region disable writes here, the rom might be missing, so alert user
+
+ UINT8 *okirom = memregion( "msm6376" )->base();
+
+ if (!okirom) {
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x2420, 0x2421, write8_delegate(FUNC(maygay1b_state::m1ab_no_oki_w), this));
+ }
+}
diff --git a/src/mame/drivers/maygay1bsw.c b/src/mame/drivers/maygay1bsw.c
index 1069ef38903..3c3e6b3ca81 100644
--- a/src/mame/drivers/maygay1bsw.c
+++ b/src/mame/drivers/maygay1bsw.c
@@ -49,17 +49,17 @@ GAME( 199?, m1blkhol ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT
// uPD7759 rom?
#define m1_bargn_sound \
- ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \
+ ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00 ) \
ROM_LOAD( "bgsnd", 0x0000, 0x020000, CRC(abe7c01d) SHA1(21caadcd149772dfd79a9d30ebc1d8da91ff36f4) )
ROM_START( m1bargn ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "sa4-077.bin", 0x0000, 0x010000, CRC(7ae8ea12) SHA1(537f828bdaba3c63abb83b5417a4ec115834a48a) ) m1_bargn_sound ROM_END_M1A_MCU
ROM_START( m1bargnp ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "sa4-078.bin", 0x0000, 0x010000, CRC(dcc0b83e) SHA1(a85e3f60decb7dbc2de77b93dd8a79ff137d85b7) ) m1_bargn_sound ROM_END_M1A_MCU
ROM_START( m1bargnc ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "sa2-141", 0x0000, 0x010000, CRC(9dcaaaa9) SHA1(6cd015990036c2e20e4f4a2e19a363e6c565b473) ) m1_bargn_sound ROM_END_M1A_MCU
ROM_START( m1bargncp ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "sa2-142", 0x0000, 0x010000, CRC(2972747a) SHA1(6854a3cd9c6a834a24a0d8c763fa2a18c1d26a10) ) m1_bargn_sound ROM_END_M1A_MCU
-GAME( 1990, m1bargn ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Bar-gain (Maygay) v7.1 (M1A/B)",GAME_FLAGS )
-GAME( 1990, m1bargnp ,m1bargn ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Bar-gain (Maygay) v7.1 (Protocol) (M1A/B)",GAME_FLAGS )
-GAME( 1990, m1bargnc ,m1bargn ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Casino Bar-gain (Maygay) v5.1 (M1A/B)",GAME_FLAGS )
-GAME( 1990, m1bargncp ,m1bargn ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Casino Bar-gain (Maygay) v5.1 (Protocol)(M1A/B)",GAME_FLAGS )
+GAME( 1990, m1bargn ,0 ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Bar-gain (Maygay) v7.1 (M1A/B)",GAME_FLAGS )
+GAME( 1990, m1bargnp ,m1bargn ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Bar-gain (Maygay) v7.1 (Protocol) (M1A/B)",GAME_FLAGS )
+GAME( 1990, m1bargnc ,m1bargn ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Casino Bar-gain (Maygay) v5.1 (M1A/B)",GAME_FLAGS )
+GAME( 1990, m1bargncp ,m1bargn ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Casino Bar-gain (Maygay) v5.1 (Protocol)(M1A/B)",GAME_FLAGS )
/*******************************************************************************************************************************************************************************************************
Bounty Hunter Club
@@ -67,13 +67,13 @@ GAME( 1990, m1bargncp ,m1bargn ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT
// uPD7759 rom?
#define m1_bounty_sound \
- ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \
+ ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00 ) \
ROM_LOAD( "bgsnd", 0x0000, 0x020000, CRC(abe7c01d) SHA1(21caadcd149772dfd79a9d30ebc1d8da91ff36f4) )
ROM_START( m1bountc ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "sc4-107.bin", 0x0000, 0x010000, CRC(0bdf41b3) SHA1(ce3564433a708ba50ca4099a26b1f75cf3cec947) ) m1_bounty_sound ROM_END_M1A_MCU //1.3
ROM_START( m1bountcp ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "sc4-108.bin", 0x0000, 0x010000, CRC(adf7139f) SHA1(5b2bd367df31e3c76d9fac2a71a90800d95c4719) ) m1_bounty_sound ROM_END_M1A_MCU //1.3P
-GAME( 199?, m1bountc ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Bounty Hunter Club (Maygay) v1.3 (M1A/B)",GAME_FLAGS )
-GAME( 199?, m1bountcp ,m1bountc ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Bounty Hunter Club (Maygay) v1.3 (Protocol) (M1A/B)",GAME_FLAGS )
+GAME( 199?, m1bountc ,0 ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Bounty Hunter Club (Maygay) v1.3 (M1A/B)",GAME_FLAGS )
+GAME( 199?, m1bountcp ,m1bountc ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Bounty Hunter Club (Maygay) v1.3 (Protocol) (M1A/B)",GAME_FLAGS )
/*******************************************************************************************************************************************************************************************************
Criss Cross Club (Dutch)
@@ -81,11 +81,11 @@ GAME( 199?, m1bountcp ,m1bountc ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT
// uPD7759 rom?
#define m1_criss_sound \
- ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \
+ ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00 ) \
ROM_LOAD( "ccsound.bin", 0x0000, 0x040000, CRC(8742981e) SHA1(1ba33c59ec5f878ebab111a77551213aad4b0993) )
ROM_START( m1criss ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "sdt-050", 0x0000, 0x010000, CRC(422c5c6d) SHA1(b3a86f7482f0376b93899d28d4e6c610200fcd3a) ) m1_criss_sound ROM_END_M1A_MCU
-GAME( 199?, m1criss ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Criss Cross Club (Maygay) (Dutch) (M1A/B)",GAME_FLAGS )
+GAME( 199?, m1criss ,0 ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Criss Cross Club (Maygay) (Dutch) (M1A/B)",GAME_FLAGS )
/*******************************************************************************************************************************************************************************************************
Diamond Hearts
@@ -343,7 +343,7 @@ GAME( 1997, m1cik11np ,m1cik ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT
// uPD7759 rom?
#define m1_dxmono_sound\
- ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 )\
+ ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00 )\
ROM_LOAD( "delmonopolysound.bin", 0x0000, 0x040000, CRC(8742981e) SHA1(1ba33c59ec5f878ebab111a77551213aad4b0993) )
ROM_START( m1dxmono ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "sa6-018", 0x0000, 0x010000, CRC(134e772a) SHA1(e85a90ed475cd3b38e9174146b15c66c958116e5) ) m1_dxmono_sound ROM_END_M1A_MCU //M5.1 (code 48)
ROM_START( m1dxmonop ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "sa6-019", 0x0000, 0x010000, CRC(fba6eacc) SHA1(80576722f5862c1f27eb6e6d43d9a0a665e611c6) ) m1_dxmono_sound ROM_END_M1A_MCU //M5.1 Protocol (code 48)
@@ -366,26 +366,26 @@ ROM_START( m1dxmono11o ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
ROM_START( m1dxmono11m ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "sa3-007", 0x0000, 0x010000, CRC(303bea68) SHA1(987f015818a1d97299af824c0ab58c9c6f8a2acb) ) m1_dxmono_sound ROM_END_M1A_MCU //sa3007 M 1.1 92
ROM_START( m1dxmono11mb ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "sa2-356", 0x0000, 0x010000, CRC(3d4394e9) SHA1(43da2007f1408d45764f0eba8594c800ad7ffc60) ) m1_dxmono_sound ROM_END_M1A_MCU //m1.1 sa2356
-GAME( 1992, m1dxmono ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (M1A/B)",GAME_FLAGS )
-GAME( 1992, m1dxmonop ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Protocol) (M1A/B)",GAME_FLAGS )
-GAME( 1992, m1dxmono12n ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (Newer) (M1A/B)",GAME_FLAGS )
-GAME( 1992, m1dxmono31b ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (BwB set) (M1A/B)",GAME_FLAGS )
-GAME( 1992, m1dxmono31p ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (Protocol) (M1A/B)",GAME_FLAGS )
-GAME( 1992, m1dxmono31h ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (Hack) (M1A/B)",GAME_FLAGS )
-GAME( 1992, m1dxmono31h2,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (Alternate Hack) (M1A/B)",GAME_FLAGS )
-GAME( 1992, m1dxmono51 ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Older) (M1A/B)",GAME_FLAGS )
-GAME( 1992, m1dxmono12 ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (M1A/B)",GAME_FLAGS )
-GAME( 1992, m1dxmono12p ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (Protocol) (M1A/B)",GAME_FLAGS )
-GAME( 1992, m1dxmono12a ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (Alternate) (M1A/B)",GAME_FLAGS )
-GAME( 1992, m1dxmono21p ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v2.1 (Protocol) (M1A/B)",GAME_FLAGS )
-GAME( 1992, m1dxmono11p ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Protocol) (M1A/B)",GAME_FLAGS )
-GAME( 1992, m1dxmono11 ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (M1A/B)",GAME_FLAGS )
-GAME( 1992, m1dxmono51o ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Older) (M1A/B) (alt?)",GAME_FLAGS )
-GAME( 1992, m1dxmono51p ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Older) (Protocol) (M1A/B)",GAME_FLAGS )
-GAME( 1992, m1dxmono30h ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.0 (Hack) (M1A/B)",GAME_FLAGS )
-GAME( 1992, m1dxmono11o ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Older) (M1A/B)",GAME_FLAGS )
-GAME( 1992, m1dxmono11m ,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Code M) (M1A/B)",GAME_FLAGS )
-GAME( 1992, m1dxmono11mb,m1dxmono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Code M, Alternate) (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmono ,0 ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmonop ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Protocol) (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmono12n ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (Newer) (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmono31b ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (BwB set) (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmono31p ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (Protocol) (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmono31h ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (Hack) (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmono31h2,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.1 (Alternate Hack) (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmono51 ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Older) (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmono12 ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmono12p ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (Protocol) (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmono12a ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.2 (Alternate) (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmono21p ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v2.1 (Protocol) (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmono11p ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Protocol) (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmono11 ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmono51o ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Older) (M1A/B) (alt?)",GAME_FLAGS )
+GAME( 1992, m1dxmono51p ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v5.1 (Older) (Protocol) (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmono30h ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v3.0 (Hack) (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmono11o ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Older) (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmono11m ,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Code M) (M1A/B)",GAME_FLAGS )
+GAME( 1992, m1dxmono11mb,m1dxmono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Deluxe Monopoly (Maygay) v1.1 (Code M, Alternate) (M1A/B)",GAME_FLAGS )
/*******************************************************************************************************************************************************************************************************
Cluedo
@@ -415,10 +415,8 @@ ROM_START( m1cluedob2 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
ROM_START( m1cluedob2p ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "sa5-303", 0x0000, 0x010000, CRC(e0eb84c2) SHA1(3c2db9d41b9c561a483293f2258b654547d937d4) ) m1_cluedo_sound ROM_END_M1A_MCU //pbu 2.1 BwB 1995
ROM_START( m1cluedob1 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "sa5-326", 0x0000, 0x010000, CRC(0ace83db) SHA1(3387ac8583bc4ba7933abe001bc64a2b06a5451f) ) m1_cluedo_sound ROM_END_M1A_MCU //nbu 1.1 BwB 1995 (newer) cl_x6___.2o1
ROM_START( m1cluedob1p ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "sa5-327", 0x0000, 0x010000, CRC(e2261e3d) SHA1(50be56d1c28a31fcdb12a83c230a983bd6c60f62) ) m1_cluedo_sound ROM_END_M1A_MCU //pbu 1.1 BwB 1995 (newer)cl_x6_d_.2o1
-#ifdef MISSING_GAME // these being disabled is likely a mistake
ROM_START( m1cluedobi2 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "sa5-328", 0x0000, 0x010000, CRC(7aa2e6bd) SHA1(82752cd0e89d487016ccb50e55d2d7e11e5bb0ad) ) m1_cluedo_sound ROM_END_M1A_MCU //nbu 2.1 BwB 1995 (IoM) clix6___.2o1
ROM_START( m1cluedobi2p ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "sa5-329", 0x0000, 0x010000, CRC(924a7b5b) SHA1(102fba24040c9f968f80747b830fda05444c69aa) ) m1_cluedo_sound ROM_END_M1A_MCU //pbu 2.1 BwB 1995 (IoM) clix6_d_.2o1
-#endif
ROM_START( m1cluedob2h ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "clu5p8", 0x0000, 0x010000, CRC(fb6c6527) SHA1(e42683512c537d653593c67a8d238069ac2f2d0e) ) m1_cluedo_sound ROM_END_M1A_MCU //nbu 2.0 - nop'd copyright string
ROM_START( m1cluedob1h ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "clu55", 0x0000, 0x010000, CRC(c852a989) SHA1(ff79e65f80d4230a0e0f9e87a9dcc544a5197a1a) ) m1_cluedo_sound ROM_END_M1A_MCU //nbu 1.0 - nop'd copyright string
@@ -433,6 +431,8 @@ GAME( 1995, m1cluedonp ,m1cluedo ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT
GAME( 1995, m1cluedob2 ,m1cluedo ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v2.1 (M1A/B)",GAME_FLAGS )
GAME( 1995, m1cluedob2p ,m1cluedo ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v2.1 (Protocol) (M1A/B)",GAME_FLAGS )
GAME( 1995, m1cluedob2h ,m1cluedo ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v2.1 (Hack?) (M1A/B)",GAME_FLAGS )
+GAME( 1995, m1cluedobi2 ,m1cluedo ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v2.1 (Isle of Man) (M1A/B)",GAME_FLAGS )
+GAME( 1995, m1cluedobi2p,m1cluedo ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v2.1 (Isle of Man) (Protocol) (M1A/B)",GAME_FLAGS )
GAME( 1995, m1cluedob1 ,m1cluedo ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v1.1 (M1A/B)",GAME_FLAGS )
GAME( 1995, m1cluedob1p ,m1cluedo ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v1.1 (Protocol) (M1A/B)",GAME_FLAGS )
GAME( 1995, m1cluedob1h ,m1cluedo ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay/BwB", "Cluedo (Maygay/BwB) v1.1 (Hack?) (M1A/B)",GAME_FLAGS )
@@ -1146,80 +1146,80 @@ GAME( 199?, m1itsko8 ,m1itsko ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT
// uPD7759 rom?
#define m1_mono_sound \
- ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \
+ ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00 ) \
ROM_LOAD( "monopolysnd.bin", 0x0000, 0x020000, CRC(f93ef281) SHA1(b2c2bf361c44499a13731d494af66d2aa45ccebd) )
ROM_START( m1mono ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("maygaymonopoly delx 5p-10p 6.bin", 0x0000, 0x010000, CRC(ed3c5997) SHA1(5a1e82894bd71073e08136a9071528833b529f5e) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1mono ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
+GAME( 199?, m1mono ,0 ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
ROM_START( m1monoa ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mon deluxe old 6 5_10.bin", 0x0000, 0x010000, CRC(f6ff2c55) SHA1(dec0be9c5584285b47943dd7d8751acd5e244daf) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monoa ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
+GAME( 199?, m1monoa ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
ROM_START( m1monoc ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mon5p5cbin", 0x0000, 0x010000, CRC(5589d97d) SHA1(d8776200d5c85fc1946ab4a4d0f7b7fb721a08f0) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monoc ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
+GAME( 199?, m1monoc ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
ROM_START( m1monod ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mono10", 0x0000, 0x010000, CRC(25b617b9) SHA1(adffbae086c83c1d9342e0fdded0ec8651f4efdd) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monod ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
+GAME( 199?, m1monod ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
ROM_START( m1monoe ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mono10p", 0x0000, 0x010000, CRC(e7eead08) SHA1(94a512ff43487c4294afa3f280759ae86489ccbf) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monoe ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 6)",GAME_FLAGS )
+GAME( 199?, m1monoe ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 6)",GAME_FLAGS )
ROM_START( m1monof ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mono8", 0x0000, 0x010000, CRC(e19cf85b) SHA1(24bfa0086bda37f9ca9b5cf4cdc7d7873c305e76) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monof ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 7)",GAME_FLAGS )
+GAME( 199?, m1monof ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 7)",GAME_FLAGS )
ROM_START( m1monog ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("monopoly 5p.bin", 0x0000, 0x010000, CRC(75125a1d) SHA1(20a16835b39d3eaa38c88ed885aef04bdb08bb65) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monog ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 8)",GAME_FLAGS )
+GAME( 199?, m1monog ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 8)",GAME_FLAGS )
ROM_START( m1monoh ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("monopoly6jp.bin", 0x0000, 0x010000, CRC(4a5bc1a5) SHA1(09d576ef92ac03a1e5e5d852851414830ee7ebe9) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monoh ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 9)",GAME_FLAGS )
+GAME( 199?, m1monoh ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 9)",GAME_FLAGS )
ROM_START( m1monoi ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("monopoly_5p10p_ndp_6pound-sa5-015.bin", 0x0000, 0x010000, CRC(03e359b7) SHA1(e469adaf5d0ed6e44c17a5881bbb42b391d680ee) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monoi ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 10)",GAME_FLAGS )
+GAME( 199?, m1monoi ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 10)",GAME_FLAGS )
ROM_START( m1monok ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa3-005", 0x0000, 0x010000, CRC(6aeecc7e) SHA1(2d2d077c26e01f35a7b76533a4d27a7266e1a1cb) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monok ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 12)",GAME_FLAGS )
+GAME( 199?, m1monok ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 12)",GAME_FLAGS )
ROM_START( m1monol ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-314", 0x0000, 0x010000, CRC(708a92ea) SHA1(0f5b9123e4356447215a6d76764c6a124a5206e2) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monol ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 13)",GAME_FLAGS )
+GAME( 199?, m1monol ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 13)",GAME_FLAGS )
ROM_START( m1monom ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-315", 0x0000, 0x010000, CRC(98620f0c) SHA1(a92f3ccf36dde20dc5ba8e655212f8a7d8888ce4) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monom ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 14)",GAME_FLAGS )
+GAME( 199?, m1monom ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 14)",GAME_FLAGS )
ROM_START( m1monon ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-316", 0x0000, 0x010000, CRC(b0c9b2d2) SHA1(4d6efe7453a398cd8f8a7290a4ea13ee1027425c) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monon ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 15)",GAME_FLAGS )
+GAME( 199?, m1monon ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 15)",GAME_FLAGS )
ROM_START( m1monoo ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-317", 0x0000, 0x010000, CRC(58212f34) SHA1(04ee3037861ca97d874fa24954ce3c76fca7e815) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monoo ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 16)",GAME_FLAGS )
+GAME( 199?, m1monoo ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 16)",GAME_FLAGS )
ROM_START( m1monop ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa5-035", 0x0000, 0x010000, CRC(a4e07340) SHA1(c566e5ddb780755a8e16454eec8aecfa8d4130a6) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monop ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 17)",GAME_FLAGS )
+GAME( 199?, m1monop ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 17)",GAME_FLAGS )
ROM_START( m1monoq ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa5-036", 0x0000, 0x010000, CRC(1058ad93) SHA1(2a53a5af56e148526ddc47deb49bf3d5aa3063b5) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monoq ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 18)",GAME_FLAGS )
+GAME( 199?, m1monoq ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 18)",GAME_FLAGS )
ROM_START( m1monor ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa6-005", 0x0000, 0x010000, CRC(6b3655bb) SHA1(cd600a6a1730765bf271cc195343712fb2ba3ad7) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monor ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 19)",GAME_FLAGS )
+GAME( 199?, m1monor ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 19)",GAME_FLAGS )
ROM_START( m1monos ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa6-007", 0x0000, 0x010000, CRC(ac7c3a2f) SHA1(50d734a2b58d78bfe3fce6455caca0524c464d7e) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monos ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 20)",GAME_FLAGS )
+GAME( 199?, m1monos ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 20)",GAME_FLAGS )
ROM_START( m1monot ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa6-008", 0x0000, 0x010000, CRC(0a546803) SHA1(6122bf392f37c420cf194ff3b21d5b1e615c437f) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monot ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 21)",GAME_FLAGS )
+GAME( 199?, m1monot ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 21)",GAME_FLAGS )
ROM_START( m1monou ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa6-009", 0x0000, 0x010000, CRC(07f82db9) SHA1(a46a4a62d7d4ca9fcf9674301f9960e04b879b20) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monou ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 22)",GAME_FLAGS )
+GAME( 199?, m1monou ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 22)",GAME_FLAGS )
ROM_START( m1monov ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa6-010", 0x0000, 0x010000, CRC(876ed0d1) SHA1(6af96a7e0ff2757836741054f19cfe3469bc0bb5) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monov ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 23)",GAME_FLAGS )
+GAME( 199?, m1monov ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 23)",GAME_FLAGS )
ROM_START( m1monow ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mono5p", 0x0000, 0x010000, CRC(805d33e8) SHA1(4d946ee37f8d25f0f7bb3497a538974e1bae14b1) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monow ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 24)",GAME_FLAGS )
+GAME( 199?, m1monow ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 24)",GAME_FLAGS )
ROM_START( m1monox ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mox3&1", 0x0000, 0x010000, CRC(8a790928) SHA1(91594136eb133b6112beb036a973756d0b54b648) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monox ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 25)",GAME_FLAGS )
+GAME( 199?, m1monox ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 25)",GAME_FLAGS )
ROM_START( m1monoy ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-205.bin", 0x0000, 0x010000, CRC(7461f169) SHA1(5d54d259d252fddd0c222790cdcd098267a8f9a7) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monoy ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 26)",GAME_FLAGS )
+GAME( 199?, m1monoy ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 26)",GAME_FLAGS )
ROM_START( m1monoz ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-206.bin", 0x0000, 0x010000, CRC(c0d92fba) SHA1(c6ef33c26bbdd522107622235f4d429d4043fe9e) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monoz ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 27)",GAME_FLAGS )
+GAME( 199?, m1monoz ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 27)",GAME_FLAGS )
ROM_START( m1mono0 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-207.bin", 0x0000, 0x010000, CRC(de05924e) SHA1(fa5ff4383161989481765c8cbf73322d180104ed) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1mono0 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 28)",GAME_FLAGS )
+GAME( 199?, m1mono0 ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 28)",GAME_FLAGS )
ROM_START( m1mono1 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-208.bin", 0x0000, 0x010000, CRC(782dc062) SHA1(bd43e37b02db247f0c5c41c273dc67a8b80ca7d9) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1mono1 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 29)",GAME_FLAGS )
+GAME( 199?, m1mono1 ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 29)",GAME_FLAGS )
ROM_START( m1mono2 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-211.bin", 0x0000, 0x010000, CRC(faac3556) SHA1(13b7dd369994669eb971807620c0434ce425f918) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1mono2 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 30)",GAME_FLAGS )
+GAME( 199?, m1mono2 ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 30)",GAME_FLAGS )
ROM_START( m1mono3 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-212.bin", 0x0000, 0x010000, CRC(4e14eb85) SHA1(eb26b5593e250d0b508b346821ee7591d800dacf) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1mono3 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 31)",GAME_FLAGS )
+GAME( 199?, m1mono3 ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 31)",GAME_FLAGS )
ROM_START( m1mono4 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-601", 0x0000, 0x010000, CRC(1b5ad34d) SHA1(4f32fa4c8a667b19b09e5b4e4a1dee2e2f8b4bf0) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1mono4 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 32)",GAME_FLAGS )
+GAME( 199?, m1mono4 ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 32)",GAME_FLAGS )
ROM_START( m1mono5 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-602", 0x0000, 0x010000, CRC(afe20d9e) SHA1(5f1648443c46138d1256f8da92179b2c58ddfd4b) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1mono5 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 33)",GAME_FLAGS )
+GAME( 199?, m1mono5 ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 33)",GAME_FLAGS )
ROM_START( m1mono6 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-603", 0x0000, 0x010000, CRC(98fe65f2) SHA1(4944291118d5ed7a642d15441bf7e67ab489ffda) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1mono6 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 34)",GAME_FLAGS )
+GAME( 199?, m1mono6 ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 34)",GAME_FLAGS )
ROM_START( m1mono7 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-604", 0x0000, 0x010000, CRC(94e63d4b) SHA1(81c549ebc8b28c005fdfc430d49e548403d72ce0) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1mono7 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 35)",GAME_FLAGS )
+GAME( 199?, m1mono7 ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 35)",GAME_FLAGS )
ROM_START( m1mono8 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa5-016", 0x0000, 0x010000, CRC(b75b8764) SHA1(91513702719d6a3049f264c5e547b8a69058b82c) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1mono8 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 36)",GAME_FLAGS )
+GAME( 199?, m1mono8 ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 36)",GAME_FLAGS )
ROM_START( m1mono9 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa5-184", 0x0000, 0x010000, CRC(51a8fde3) SHA1(c73441f79b877aaed57791629de9f9b02ff544da) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1mono9 ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 37)",GAME_FLAGS )
+GAME( 199?, m1mono9 ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 37)",GAME_FLAGS )
ROM_START( m1monoaa ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa5-185", 0x0000, 0x010000, CRC(b9406005) SHA1(f1b025140ba7579b1eeb497a64c348df5a341d5d) ) m1_mono_sound ROM_END_M1A_MCU
-GAME( 199?, m1monoaa ,m1mono ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 38)",GAME_FLAGS )
+GAME( 199?, m1monoaa ,m1mono ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Maygay) (M1A/B) (set 38)",GAME_FLAGS )
/*******************************************************************************************************************************************************************************************************
Gladiators
@@ -1518,46 +1518,46 @@ GAME( 199?, m1jbondq ,m1jbond ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "M
// uPD7759 rom?
#define m1_pinkp_sound \
- ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \
+ ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00 ) \
ROM_LOAD("digi16.bin", 0x0000, 0x040000, CRC(ee8bc3ea) SHA1(b58fad236055db30a75bb12946e8ad76638865a0) )
ROM_START( m1pinkp ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pink2010", 0x0000, 0x010000, CRC(a098952f) SHA1(d62351d16aa6f34b20774dd6f38ffdada09b49be) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkp ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
+GAME( 199?, m1pinkp ,0 ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
ROM_START( m1pinkpa ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pink58c", 0x0000, 0x010000, CRC(fb0ee333) SHA1(3af5362486de70971f606dd914f8e658015dcf82) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkpa ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
+GAME( 199?, m1pinkpa ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
ROM_START( m1pinkpb ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pink5p5bin", 0x0000, 0x010000, CRC(97f6cda4) SHA1(338362a2dc0538feea08c98c27af2aec1ec46c08) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkpb ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
+GAME( 199?, m1pinkpb ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
ROM_START( m1pinkpc ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pinkp.bin", 0x0000, 0x010000, CRC(659d8067) SHA1(86cdeab73dd610dc9a0c69b95e74cf2d9bb36830) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkpc ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
+GAME( 199?, m1pinkpc ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
ROM_START( m1pinkpd ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pinkp206", 0x0000, 0x010000, CRC(baf9dbe2) SHA1(5293294abd0713aff969012d818dd6e8b637b74a) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkpd ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
+GAME( 199?, m1pinkpd ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
ROM_START( m1pinkpe ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pinkp8s", 0x0000, 0x010000, CRC(aaf4c565) SHA1(e2d04852e3700b3d19e5245aec2ce57725c728cb) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkpe ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 6)",GAME_FLAGS )
+GAME( 199?, m1pinkpe ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 6)",GAME_FLAGS )
ROM_START( m1pinkpf ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pinkpanther8key20p.bin", 0x0000, 0x010000, CRC(6888e768) SHA1(8b1f076ad6905367956097f7ac2ca3d49a3ed97f) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkpf ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 7)",GAME_FLAGS )
+GAME( 199?, m1pinkpf ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 7)",GAME_FLAGS )
ROM_START( m1pinkpg ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("ppanthersa3-026 nd.bin", 0x0000, 0x010000, CRC(189bc301) SHA1(2b9a190e3b5e008b291d0f4b14fa5874c6f867c4) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkpg ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 8)",GAME_FLAGS )
+GAME( 199?, m1pinkpg ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 8)",GAME_FLAGS )
ROM_START( m1pinkph ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa3-122.bin", 0x0000, 0x010000, CRC(3bc43552) SHA1(a8c6f314de3148b1b75fb89816e26ac07ee2ef93) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkph ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 9)",GAME_FLAGS )
+GAME( 199?, m1pinkph ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 9)",GAME_FLAGS )
ROM_START( m1pinkpi ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa3-123.bin", 0x0000, 0x010000, CRC(d32ca8b4) SHA1(ebf64436e10f9eb40b938f55845b82e70753fef4) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkpi ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 10)",GAME_FLAGS )
+GAME( 199?, m1pinkpi ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 10)",GAME_FLAGS )
ROM_START( m1pinkpj ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-060.bin", 0x0000, 0x010000, CRC(bae6af78) SHA1(2ac64db6cbbf41314787db0c6a14666d0a16aa63) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkpj ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 11)",GAME_FLAGS )
+GAME( 199?, m1pinkpj ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 11)",GAME_FLAGS )
ROM_START( m1pinkpk ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-137.bin", 0x0000, 0x010000, CRC(64a22d91) SHA1(e1d08950da85bf5e1146633d53ab8149d639c3e1) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkpk ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 12)",GAME_FLAGS )
+GAME( 199?, m1pinkpk ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 12)",GAME_FLAGS )
ROM_START( m1pinkpl ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-139", 0x0000, 0x010000, CRC(e7a170dc) SHA1(120b136b54401755a8ef169ec9f2a510a9b01899) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkpl ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 13)",GAME_FLAGS )
+GAME( 199?, m1pinkpl ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 13)",GAME_FLAGS )
ROM_START( m1pinkpm ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-140", 0x0000, 0x010000, CRC(8701fb2d) SHA1(003f24baa72d56eae9027af557592ccf8c150fa2) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkpm ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 14)",GAME_FLAGS )
+GAME( 199?, m1pinkpm ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 14)",GAME_FLAGS )
ROM_START( m1pinkpn ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-612", 0x0000, 0x010000, CRC(d7d4e529) SHA1(f41bf31b68421010d6ab507da250e8eefdda2376) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkpn ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 15)",GAME_FLAGS )
+GAME( 199?, m1pinkpn ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 15)",GAME_FLAGS )
ROM_START( m1pinkpo ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-613", 0x0000, 0x010000, CRC(3f3c78cf) SHA1(bf2c84bf81c0bd9d32a2c3ca3eef132efed6baea) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkpo ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 16)",GAME_FLAGS )
+GAME( 199?, m1pinkpo ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 16)",GAME_FLAGS )
ROM_START( m1pinkpp ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-614", 0x0000, 0x010000, CRC(632e1f05) SHA1(1fbae16a0addc8baf10f6332860bb98a56b0e94a) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkpp ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 17)",GAME_FLAGS )
+GAME( 199?, m1pinkpp ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 17)",GAME_FLAGS )
ROM_START( m1pinkpq ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-615", 0x0000, 0x010000, CRC(8bc682e3) SHA1(39f2eb7e4e9c36f64b0efe2b347f93638d9b6e09) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkpq ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 18)",GAME_FLAGS )
+GAME( 199?, m1pinkpq ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 18)",GAME_FLAGS )
ROM_START( m1pinkpr ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("ppix6___.281", 0x0000, 0x010000, CRC(386c7d02) SHA1(67a52332a76d82909455174cce5067469654ccd0) ) m1_pinkp_sound ROM_END_M1A_MCU
-GAME( 199?, m1pinkpr ,m1pinkp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 19)",GAME_FLAGS )
+GAME( 199?, m1pinkpr ,m1pinkp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (Maygay) (M1A/B) (set 19)",GAME_FLAGS )
/*******************************************************************************************************************************************************************************************************
Nudge Banker
@@ -2353,10 +2353,10 @@ GAME( 199?, m1manhat ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0,
// uPD7759 rom?
#define m1_monodt_sound \
- ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \
+ ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00 ) \
ROM_LOAD( "monopolysnddutch.bin", 0x0000, 0x040000, CRC(8742981e) SHA1(1ba33c59ec5f878ebab111a77551213aad4b0993) )
ROM_START( m1monodt ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "monopoly.bin", 0x0000, 0x010000, CRC(b7a2911b) SHA1(74507dd3a947d1b4d7bd0b58adb53d4f6e7ce200) ) m1_monodt_sound ROM_END_M1A_MCU
-GAME( 199?, m1monodt ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly (Dutch) (Maygay) (M1A/B)",GAME_FLAGS )
+GAME( 199?, m1monodt ,0 ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly (Dutch) (Maygay) (M1A/B)",GAME_FLAGS )
/*******************************************************************************************************************************************************************************************************
Pink Panther (Dutch)
@@ -2364,10 +2364,10 @@ GAME( 199?, m1monodt ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0,
// uPD7759 rom?
#define m1_ppdt_sound \
- ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \
+ ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00 ) \
ROM_LOAD( "ppsound.bin", 0x0000, 0x040000, CRC(8742981e) SHA1(1ba33c59ec5f878ebab111a77551213aad4b0993) )
ROM_START( m1ppdt ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "pinkpanther.bin", 0x0000, 0x010000, CRC(09040f9d) SHA1(25c545e599711bf5ff2361c51e6629b69673da33) ) m1_ppdt_sound ROM_END_M1A_MCU
-GAME( 199?, m1ppdt ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Pink Panther (German) (Maygay) (M1A/B)",GAME_FLAGS )
+GAME( 199?, m1ppdt ,0 ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Pink Panther (German) (Maygay) (M1A/B)",GAME_FLAGS )
/*******************************************************************************************************************************************************************************************************
Supernova
@@ -2375,10 +2375,10 @@ GAME( 199?, m1ppdt ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0
// uPD7759 rom?
#define m1_sprnov_sound \
- ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \
+ ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00 ) \
ROM_LOAD( "supernovasnd.bin", 0x0000, 0x020000, CRC(f91e2c05) SHA1(e189c14214f4637d6a803893d79a41ad0fc8ebba) )
ROM_START( m1sprnov ) ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "supernovaprg.bin", 0x0000, 0x010000, CRC(6d533247) SHA1(475ecdcc10c9da558eb4d7c5e288d4724f65a5ce) ) m1_sprnov_sound ROM_END_M1A_MCU
-GAME( 199?, m1sprnov ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Super Nova (Dutch) (Maygay) (M1A/B)",GAME_FLAGS )
+GAME( 199?, m1sprnov ,0 ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Super Nova (Dutch) (Maygay) (M1A/B)",GAME_FLAGS )
/*******************************************************************************************************************************************************************************************************
Take Note
@@ -2560,14 +2560,14 @@ GAME( 199?, m1winencc ,m1winenc ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "
// uPD7759 rom?
#define m1_mongam_sound \
- ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \
+ ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00 ) \
ROM_LOAD( "mgamesnd", 0x0000, 0x040000, CRC(80ea7b3d) SHA1(a26dbc55ba205fc94c9b224c549516ba149627d7) )
ROM_START( m1mongam ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("mgame200", 0x0000, 0x010000, CRC(4cfe0ef2) SHA1(8dae7d1fdb6481902bcc38f3f993b55c7acc919b) ) m1_mongam_sound ROM_END_M1A_MCU
-GAME( 199?, m1mongam ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
+GAME( 199?, m1mongam ,0 ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
ROM_START( m1mongama ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sc5-114", 0x0000, 0x010000, CRC(63dbb45e) SHA1(3ccb45ae290b5e2d2249a36268a9e690846bf3d9) ) m1_mongam_sound ROM_END_M1A_MCU
-GAME( 199?, m1mongama ,m1mongam ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
+GAME( 199?, m1mongama ,m1mongam ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
ROM_START( m1mongamb ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sc5-115", 0x0000, 0x010000, CRC(8b3329b8) SHA1(2c89ac10ad82d8425104a74a7bc24aa9c28cbe01) ) m1_mongam_sound ROM_END_M1A_MCU
-GAME( 199?, m1mongamb ,m1mongam ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
+GAME( 199?, m1mongamb ,m1mongam ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Money Game Club (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
/*******************************************************************************************************************************************************************************************************
Monopoly Classic
@@ -2575,18 +2575,18 @@ GAME( 199?, m1mongamb ,m1mongam ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "
// uPD7759 rom?
#define m1_moncls_sound \
- ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \
+ ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00 ) \
ROM_LOAD( "classicmonopoly(maygay)soundromdig1-027.bin", 0x0000, 0x040000, CRC(d5243b51) SHA1(c7e3a61071c566e8ea9c8842839b70242ca67308) )
ROM_START( m1moncls ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa3-316", 0x0000, 0x010000, CRC(98f9d6b0) SHA1(f30fa1fb88bfd4098b189cf03a7e0b9dcc5bfdef) ) m1_moncls_sound ROM_END_M1A_MCU
-GAME( 199?, m1moncls ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
+GAME( 199?, m1moncls ,0 ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
ROM_START( m1monclsa ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa3-318", 0x0000, 0x010000, CRC(01e8224c) SHA1(dfad509c00d6311eb1e8bbbfe1ca5fd6aeb9da43) ) m1_moncls_sound ROM_END_M1A_MCU
-GAME( 199?, m1monclsa ,m1moncls ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
+GAME( 199?, m1monclsa ,m1moncls ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
ROM_START( m1monclsb ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa3-319", 0x0000, 0x010000, CRC(e900bfaa) SHA1(ce6f1021234979d0c27d5668b470fd31594ca222) ) m1_moncls_sound ROM_END_M1A_MCU
-GAME( 199?, m1monclsb ,m1moncls ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
+GAME( 199?, m1monclsb ,m1moncls ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
ROM_START( m1monclsc ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-120", 0x0000, 0x010000, CRC(c594d56d) SHA1(4a48f3d80c575025de7624528647891c179c1b0d) ) m1_moncls_sound ROM_END_M1A_MCU
-GAME( 199?, m1monclsc ,m1moncls ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
+GAME( 199?, m1monclsc ,m1moncls ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
ROM_START( m1monclsd ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-121", 0x0000, 0x010000, CRC(2d7c488b) SHA1(ee63973447cb21fa2872ed74612f431add2b7a46) ) m1_moncls_sound ROM_END_M1A_MCU
-GAME( 199?, m1monclsd ,m1moncls ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
+GAME( 199?, m1monclsd ,m1moncls ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Monopoly Classic (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
/*******************************************************************************************************************************************************************************************************
Return Of The Pink Panther
@@ -2594,19 +2594,19 @@ GAME( 199?, m1monclsd ,m1moncls ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "
// uPD7759 rom?
#define m1_retpp_sound \
- ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \
+ ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00 ) \
/* ROM_LOAD( "rotppsnd.bin", 0x0000, 0x002000, CRC(a8c8ff9a) SHA1(8069cf08f3a8481ebc589ad0c25887ea316facd5) ) */ /* bad dump of rom below */ \
ROM_LOAD( "roppsnd.bin", 0x0000, 0x040000, CRC(9f3484b3) SHA1(9d454644c967b22cf6583335807a0ed8495492cb) )
ROM_START( m1retpp ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("pinkpstd.bin", 0x0000, 0x010000, CRC(92bb56d8) SHA1(e033578c693f0faf1e91b76392106f0e6850d0dc) ) m1_retpp_sound ROM_END_M1A_MCU
-GAME( 199?, m1retpp ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
+GAME( 199?, m1retpp ,0 ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
ROM_START( m1retppa ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa3-519.bin", 0x0000, 0x010000, CRC(b8e04479) SHA1(3be940b433174623d177ffd892d8bc59170422b8) ) m1_retpp_sound ROM_END_M1A_MCU
-GAME( 199?, m1retppa ,m1retpp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
+GAME( 199?, m1retppa ,m1retpp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
ROM_START( m1retppb ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa3-520.bin", 0x0000, 0x010000, CRC(679b6b66) SHA1(a21e82221da54ba48a43c68d5c2c2f07ee9c2f34) ) m1_retpp_sound ROM_END_M1A_MCU
-GAME( 199?, m1retppb ,m1retpp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
+GAME( 199?, m1retppb ,m1retpp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
ROM_START( m1retppc ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-044.bin", 0x0000, 0x010000, CRC(9ea30e61) SHA1(1812582ac4f6069354e0f1b5a8f5bd1981cd6e8f) ) m1_retpp_sound ROM_END_M1A_MCU
-GAME( 199?, m1retppc ,m1retpp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
+GAME( 199?, m1retppc ,m1retpp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
ROM_START( m1retppd ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-230", 0x0000, 0x010000, CRC(42cd661a) SHA1(b5f5e3e9898155e8696eb97a7cf5e1855e190be1) ) m1_retpp_sound ROM_END_M1A_MCU
-GAME( 199?, m1retppd ,m1retpp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
+GAME( 199?, m1retppd ,m1retpp ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "Return Of The Pink Panther (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
/*******************************************************************************************************************************************************************************************************
That's Life
@@ -2614,18 +2614,18 @@ GAME( 199?, m1retppd ,m1retpp ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "M
// uPD7759 rom?
#define m1_thatlf_sound \
- ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \
+ ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00 ) \
ROM_LOAD( "thatslifesound", 0x0000, 0x040000, CRC(5ac3a1f6) SHA1(5be73deb23d58fdc27dd41d210702b627e7ed324) )
ROM_START( m1thatlf ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa3-327.bin", 0x0000, 0x010000, CRC(634fc46e) SHA1(84e166a182384b3b6f29653a0542af74c268d766) ) m1_thatlf_sound ROM_END_M1A_MCU
-GAME( 199?, m1thatlf ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
+GAME( 199?, m1thatlf ,0 ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 1)",GAME_FLAGS )
ROM_START( m1thatlfa ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-075.bin", 0x0000, 0x010000, CRC(b5922c08) SHA1(c71cd3629436576c381b4f1b45011c34a49c66b7) ) m1_thatlf_sound ROM_END_M1A_MCU
-GAME( 199?, m1thatlfa ,m1thatlf ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
+GAME( 199?, m1thatlfa ,m1thatlf ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 2)",GAME_FLAGS )
ROM_START( m1thatlfb ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("sa4-076.bin", 0x0000, 0x010000, CRC(012af2db) SHA1(d6f1a24fe6674a423d190e9e04390cb01768bf4a) ) m1_thatlf_sound ROM_END_M1A_MCU
-GAME( 199?, m1thatlfb ,m1thatlf ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
+GAME( 199?, m1thatlfb ,m1thatlf ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 3)",GAME_FLAGS )
ROM_START( m1thatlfc ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("thatslifegame", 0x0000, 0x010000, CRC(8dafbe30) SHA1(9a7e8a66b73ddf6564a34363342a8b7290e0dc4f) ) m1_thatlf_sound ROM_END_M1A_MCU
-GAME( 199?, m1thatlfc ,m1thatlf ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
+GAME( 199?, m1thatlfc ,m1thatlf ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 4)",GAME_FLAGS )
ROM_START( m1thatlfd ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("thtslf5p", 0x0000, 0x010000, CRC(31507a65) SHA1(607b16cf3fde90f97e22247158f09d859a43c1ae) ) m1_thatlf_sound ROM_END_M1A_MCU
-GAME( 199?, m1thatlfd ,m1thatlf ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
+GAME( 199?, m1thatlfd ,m1thatlf ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Maygay", "That's Life (Maygay) (M1A/B) (set 5)",GAME_FLAGS )
/*******************************************************************************************************************************************************************************************************
Big Ghoulies
@@ -2811,44 +2811,44 @@ GAME( 199?, m1thrillc ,m1thrill ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "
// uPD7759 rom?
#define m1_startr_sound \
- ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \
+ ROM_REGION( 0x100000, "upd", ROMREGION_ERASE00 ) \
ROM_LOAD( "mdmstartrekkingsound.rom", 0x0000, 0x040000, CRC(4b673184) SHA1(dd90719ebc8644b4aa50091dc9ddd79f5d0f3395) )
ROM_START( m1startr ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk20d3_1.bin", 0x0000, 0x010000, CRC(a911ebc7) SHA1(7e74df1ca0fd5e0d04ece5ca307f4b1ab817c044) ) m1_startr_sound ROM_END_M1A_MCU
-GAME( 199?, m1startr ,0 ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 1)",GAME_FLAGS )
+GAME( 199?, m1startr ,0 ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 1)",GAME_FLAGS )
ROM_START( m1startra ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("st58dt", 0x0000, 0x010000, CRC(29b73d2d) SHA1(f4bfcce7b8f158e8ec964936c365a2c6f27f7945) ) m1_startr_sound ROM_END_M1A_MCU
-GAME( 199?, m1startra ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 2)",GAME_FLAGS )
+GAME( 199?, m1startra ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 2)",GAME_FLAGS )
ROM_START( m1startrb ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("st58st", 0x0000, 0x010000, CRC(b4b4c3f3) SHA1(7179d970c0e903ae3b4ba925fba29b9777bf969d) ) m1_startr_sound ROM_END_M1A_MCU
-GAME( 199?, m1startrb ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 3)",GAME_FLAGS )
+GAME( 199?, m1startrb ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 3)",GAME_FLAGS )
ROM_START( m1startrc ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("startrekking-20p_8_5.bin", 0x0000, 0x010000, CRC(6455ae3b) SHA1(9521b69cdd4a0d6ed306ad713fd9a3924eae1e8d) ) m1_startr_sound ROM_END_M1A_MCU
-GAME( 199?, m1startrc ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 4)",GAME_FLAGS )
+GAME( 199?, m1startrc ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 4)",GAME_FLAGS )
ROM_START( m1startrd ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk05d3_1.bin", 0x0000, 0x010000, CRC(b53552ca) SHA1(7b3fd9c5e858a0e1462c755ebfbc089879001c7c) ) m1_startr_sound ROM_END_M1A_MCU
-GAME( 199?, m1startrd ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 5)",GAME_FLAGS )
+GAME( 199?, m1startrd ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 5)",GAME_FLAGS )
ROM_START( m1startre ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk05d5_0.bin", 0x0000, 0x010000, CRC(629a4c8c) SHA1(766933e4c6d352273c72e40ac0f2af73896d513d) ) m1_startr_sound ROM_END_M1A_MCU
-GAME( 199?, m1startre ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 6)",GAME_FLAGS )
+GAME( 199?, m1startre ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 6)",GAME_FLAGS )
ROM_START( m1startrf ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk05s3_1.bin", 0x0000, 0x010000, CRC(871db7ce) SHA1(4aac90a6ecab6d2c6b5d8b7af69059ef260c9c0c) ) m1_startr_sound ROM_END_M1A_MCU
-GAME( 199?, m1startrf ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 7)",GAME_FLAGS )
+GAME( 199?, m1startrf ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 7)",GAME_FLAGS )
ROM_START( m1startrg ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk05s5_0.bin", 0x0000, 0x010000, CRC(6a600631) SHA1(1c85cd63db5225ca55ef0f26fc65008cb4af340b) ) m1_startr_sound ROM_END_M1A_MCU
-GAME( 199?, m1startrg ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 8)",GAME_FLAGS )
+GAME( 199?, m1startrg ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 8)",GAME_FLAGS )
ROM_START( m1startrh ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk10d3_2.bin", 0x0000, 0x010000, CRC(5cebc22d) SHA1(6e6dd4c98ceb0c3cf541c6f8d00e3928f43dc763) ) m1_startr_sound ROM_END_M1A_MCU
-GAME( 199?, m1startrh ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 9)",GAME_FLAGS )
+GAME( 199?, m1startrh ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 9)",GAME_FLAGS )
ROM_START( m1startri ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk10d5_0.bin", 0x0000, 0x010000, CRC(349855d0) SHA1(e83d764169e85b1f24b3cb7a0d9b1ce3228148c3) ) m1_startr_sound ROM_END_M1A_MCU
-GAME( 199?, m1startri ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 10)",GAME_FLAGS )
+GAME( 199?, m1startri ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 10)",GAME_FLAGS )
ROM_START( m1startrj ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk10s3_2.bin", 0x0000, 0x010000, CRC(7955d544) SHA1(1151e2b5dd3bd60846d28fa0fb49fe6bee06b765) ) m1_startr_sound ROM_END_M1A_MCU
-GAME( 199?, m1startrj ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 11)",GAME_FLAGS )
+GAME( 199?, m1startrj ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 11)",GAME_FLAGS )
ROM_START( m1startrk ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk10s5_0.bin", 0x0000, 0x010000, CRC(6e871dcb) SHA1(cb74b94537f7cdbba6e254042f2b59409eb3b00c) ) m1_startr_sound ROM_END_M1A_MCU
-GAME( 199?, m1startrk ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 12)",GAME_FLAGS )
+GAME( 199?, m1startrk ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 12)",GAME_FLAGS )
ROM_START( m1startrm ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk20d5_0.bin", 0x0000, 0x010000, CRC(ca3d3faa) SHA1(f19465212d3bc094a61d04c6c1c20e524a36dcf8) ) m1_startr_sound ROM_END_M1A_MCU
-GAME( 199?, m1startrm ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 14)",GAME_FLAGS )
+GAME( 199?, m1startrm ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 14)",GAME_FLAGS )
ROM_START( m1startrn ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk20s3_1.bin", 0x0000, 0x010000, CRC(0193af35) SHA1(40094dd44da8d1d0d38ac95d4e951e6c88516eee) ) m1_startr_sound ROM_END_M1A_MCU
-GAME( 199?, m1startrn ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 15)",GAME_FLAGS )
+GAME( 199?, m1startrn ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 15)",GAME_FLAGS )
ROM_START( m1startro ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk20s5_0.bin", 0x0000, 0x010000, CRC(b0532d71) SHA1(d3e111a4bc5638788bb67faebdd046224895cbb1) ) m1_startr_sound ROM_END_M1A_MCU
-GAME( 199?, m1startro ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 16)",GAME_FLAGS )
+GAME( 199?, m1startro ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 16)",GAME_FLAGS )
ROM_START( m1startrp ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk3.1c", 0x0000, 0x010000, CRC(affb3ea4) SHA1(64a670b074cd2f151e820428e0f7f485ec710efd) ) m1_startr_sound ROM_END_M1A_MCU
-GAME( 199?, m1startrp ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 17)",GAME_FLAGS )
+GAME( 199?, m1startrp ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 17)",GAME_FLAGS )
ROM_START( m1startrq ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk5-5_0x.bin", 0x0000, 0x010000, CRC(1d32480d) SHA1(670c9d371755c500c29a31a350b3447bd2788c62) ) m1_startr_sound ROM_END_M1A_MCU
-GAME( 199?, m1startrq ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 18)",GAME_FLAGS )
+GAME( 199?, m1startrq ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 18)",GAME_FLAGS )
ROM_START( m1startrr ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD("tk5_0x.bin", 0x0000, 0x010000, CRC(20a796f2) SHA1(1d46dbf3693294733595cd601e5be6f16ff685d3) ) m1_startr_sound ROM_END_M1A_MCU
-GAME( 199?, m1startrr ,m1startr ,maygay_m1,maygay_m1, maygay1b_state,m1, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 19)",GAME_FLAGS )
+GAME( 199?, m1startrr ,m1startr ,maygay_m1_nec,maygay_m1, maygay1b_state,m1nec, ROT0, "Mdm", "Star Trekking (Mdm) (M1A/B) (set 19)",GAME_FLAGS )
/*******************************************************************************************************************************************************************************************************
Tick Tock Cash
diff --git a/src/mame/drivers/mediagx.c b/src/mame/drivers/mediagx.c
index dff598dcf18..c900f16dc0a 100644
--- a/src/mame/drivers/mediagx.c
+++ b/src/mame/drivers/mediagx.c
@@ -66,7 +66,7 @@
#include "emu.h"
#include "cpu/i386/i386.h"
-#include "machine/pci.h"
+#include "machine/lpci.h"
#include "machine/pcshare.h"
#include "machine/pckeybrd.h"
#include "machine/idectrl.h"
diff --git a/src/mame/drivers/midqslvr.c b/src/mame/drivers/midqslvr.c
index af631ee7206..d4995155e92 100644
--- a/src/mame/drivers/midqslvr.c
+++ b/src/mame/drivers/midqslvr.c
@@ -24,7 +24,7 @@
#include "emu.h"
#include "cpu/i386/i386.h"
-#include "machine/pci.h"
+#include "machine/lpci.h"
#include "machine/pcshare.h"
#include "machine/pckeybrd.h"
#include "machine/idectrl.h"
diff --git a/src/mame/drivers/mpu4.c b/src/mame/drivers/mpu4.c
index 364da84d81b..572b2ad9236 100644
--- a/src/mame/drivers/mpu4.c
+++ b/src/mame/drivers/mpu4.c
@@ -2501,9 +2501,9 @@ GAME(199?, m4wildtm ,0 ,mod4oki ,mpu4 , mpu4_state,m4a
GAME(199?, m4frtgm ,0 ,mod4oki ,mpu4 , mpu4_state,m4altreels ,ROT0, "Barcrest","Fruit Game (Barcrest) (MPU4)",GAME_FLAGS ) // SAMPLE EEPROM ALARM (and has a weird sample rom..)
GAME(199?, m4reeltm ,0 ,mod4oki ,mpu4 , mpu4_state,m4altreels ,ROT0, "Barcrest","Reel Timer (Barcrest) (MPU4) (DWT)",GAME_FLAGS ) // SAMPLE EEPROM ALARM
-GAME(199?, m4fortcb ,0 ,mod4oki ,mpu4 , mpu4_state,m4altreels ,ROT0, "Barcrest","Fortune Club (Barcrest) (MPU4) (set 1)",GAME_FLAGS ) // INVALID ALARM
-GAME(199?, m4fortcba ,m4fortcb ,mod4oki ,mpu4 , mpu4_state,m4altreels ,ROT0, "Barcrest","Fortune Club (Barcrest) (MPU4) (set 2)",GAME_FLAGS ) // INVALID ALARM
-GAME(199?, m4fortcbb ,m4fortcb ,mod4oki ,mpu4 , mpu4_state,m4altreels ,ROT0, "Barcrest","Fortune Club (Barcrest) (MPU4) (set 3)",GAME_FLAGS ) // INVALID ALARM
+GAME(199?, m4fortcb ,0 ,mod4oki ,mpu4 , mpu4_state,m4altreels ,ROT0, "Barcrest","Fortune Club (Barcrest) (MPU4) (set 1)",GAME_FLAGS ) // INVALID ALARM
+GAME(199?, m4fortcba,m4fortcb ,mod4oki ,mpu4 , mpu4_state,m4altreels ,ROT0, "Barcrest","Fortune Club (Barcrest) (MPU4) (set 2)",GAME_FLAGS ) // INVALID ALARM
+GAME(199?, m4fortcbb,m4fortcb ,mod4oki ,mpu4 , mpu4_state,m4altreels ,ROT0, "Barcrest","Fortune Club (Barcrest) (MPU4) (set 3)",GAME_FLAGS ) // INVALID ALARM
diff --git a/src/mame/drivers/naomi.c b/src/mame/drivers/naomi.c
index 1e439fd66be..87dea74c617 100644
--- a/src/mame/drivers/naomi.c
+++ b/src/mame/drivers/naomi.c
@@ -207,7 +207,7 @@ NAOMI ROM cart usage
There are 6 known types of carts manufactured by Sega: 171-7885A, 171-7919A, 171-7930B, 171-7978B, 171-8132B, 171-8346C
There are also 2 types of carts manufactured by Namco: MASK-B, MASK-C
-837-14124 171-7885A (C) Sega 1998
+837-13591 171-7885A (C) Sega 1998
|------------------------------------------------------------|
| ----CN2---- -|
| JJ |
@@ -254,11 +254,15 @@ Games known to use this PCB include....
Sticker EPROM MASKROMs X76F100 EPM7064S FPGA
Game on cart IC22# # of SOP56 IC37# IC41# IC42# Notes
-------------------------------------------------------------------------------------------------------------------------
-Crackin' DJ part 2 840-0068C 23674 20 (64Mb) present present 317-0311-COM
+Club Kart European Session (2003, prototype) * 21 (64Mb) present present not present *instead of EPROM have tiny PCB with 2 flashroms on it
+Crackin' DJ part 2 840-0068C 23674 20 (64Mb) present present 317-0311-COM PCB have label 840-0068B-01 837-14124
+House of the Dead 2 (prototype) A1E2 21 (64Mb) present present present, no label
Inu No Osanpo / Dog Walking (Rev A) 840-0073C 22294A 16 (64Mb) present present 317-0316-JPN
+Samba de Amigo (prototype) * 21 (64Mb) present present 317-0270-COM *instead of EPROM have tiny PCB with 2 flashroms on it
Soul Surfer (Rev A) 840-0095C 23838C 21 (64Mb) present present not present todo: verify if it's Rev A or Rev C
Star Horse (server) 840-0055C 23626 17 (64Mb) present present not present
The King of Route 66 (Rev A) 840-0087C 23819A 20 (64Mb) present present not present
+Virtua NBA (prototype) * 21 (64Mb) present present 317-0271-COM *instead of EPROM have tiny PCB with 2 flashroms on it
@@ -291,55 +295,55 @@ Notes:
CN1/2/3 - connectors joining to main board
Games known to use this PCB include....
- Sticker EPROM MASKROMs X76F100 XC9536 315-5881
-Game on cart IC22# # of SOP44 IC37# IC41# IC42# Notes
+ Sticker EPROM MASKROMs X76F100 XC9536 315-5881
+Game on cart IC22# # of SOP44 IC37# IC41# IC42# Notes
-------------------------------------------------------------------------------------------------------------------------
-18 Wheeler (Deluxe) (Rev A) 840-0023C 22185A 20 (64Mb) present 315-6213 317-0273-COM
-18 Wheeler (Standard) 840-0036C 23298 20 (64Mb) present 315-6213 317-0273-COM
-18 Wheeler (Upright) 840-0037C 23299 20 (64Mb) present 315-6213 317-0273-COM
-Airline Pilots (Rev A) 840-0005C 21739A 11 (64Mb) present 315-6213 317-0251-COM
-Airline Pilots Deluxe (Rev B) ? 21787B 11 (64Mb) present 315-6213 317-0251-COM 2 know BIOS 21801 (USA), 21802 (EXP)
-Cosmic Smash 840-0044C 23428 8 (64Mb) ? 315-6213 317-0289-COM joystick + 2 buttons
-Cosmic Smash (Rev A) 840-0044C 23428A 8 (64Mb) ? 315-6213 317-0289-COM joystick + 2 buttons
-Crazy Taxi 840-0002C 21684 13 (64Mb)* ? 315-6213 317-0248-COM * ic8 and ic9 are not present
-Dead Or Alive 2 841-0003C 22121 21 (64Mb) present 315-6213 317-5048-COM joystick + 3 buttons
-Dead Or Alive 2 Millennium 841-0003C DOA2 M 21 (64Mb) present 315-6213 317-5048-COM joystick + 3 buttons
-Death Crimson OX 841-0016C 23524 10 (64Mb) present 315-6213 317-5066-COM
-Dengen Tenshi Taisen Janshi Shangri-La 841-0004C 22060 12 (64Mb) ? 315-6213 317-5050-JPN
-Derby Owners Club (Rev B) 840-0016C 22099B 14 (64Mb) ? 315-6213 317-0262-JPN touch panel + 2 buttons + card reader
-Derby Owners Club 2000 Ver.2 (Rev A) 840-0052C 22284A 16 (64Mb) present 315-6213 not present
-Dynamite Baseball '99 / World Series'99 (Rev B) 840-0019C 22141B 19 (64Mb) ? 315-6213 317-0269-JPN requires special panel (joystick + 2 buttons + bat controller for each player)
-Dynamite Baseball Naomi 840-0001C 21575 21 (64Mb) ? 315-6213 317-0246-JPN requires special panel (joystick + 2 buttons + bat controller for each player)
-Ferrari F355 Challenge 834-13842 21902 21 (64Mb) present 315-6213 317-0254-COM
-Ferrari F355 Challenge 2 Twin 840-0042C 23399 21 (64Mb) ? 315-6213 317-0287-COM 2 know BIOS 22850 (USA), 22851 (EXP)
-Ferrari F355 Challenge Twin 834-13950 22848 21 (64Mb) present 315-6213 317-0267-COM 2 know BIOS 22850 (USA), 22851 (EXP)
-Giant Gram: All Japan Pro Wrestling 2 840-0007C 21820 9 (64Mb) ? 315-6213 317-0253-JPN joystick + 3 buttons
-Guilty Gear X 841-0013C 23356 14 (64Mb) ? 315-6213 317-5063-COM
-Gun Spike / Cannon Spike 841-0012C 23210 12 (64Mb) present 315-6213 317-5060-COM
-Heavy Metal Geomatrix (Rev A) HMG016007 23716A 11 (64Mb) present 315-6213 317-5071-COM joystick + 2 buttons
-Idol Janshi Suchie-Pai 3 841-0002C 21979 14 (64Mb) ? 315-6213 317-5047-JPN requires special I/O board and mahjong panel
-Jambo! Safari (Rev A) 840-0013C 22826A 8 (64Mb) ? 315-6213 317-0264-COM
-Mars TV 840-0025C 22993 15 (64Mb) present 315-6213 317-0074-JPN
-OutTrigger 840-0017C 22163 19 (64Mb) ? 315-6213 317-0266-COM requires analog controllers/special panel
-Power Stone 841-0001C 21597 8 (64Mb) present 315-6213 317-5046-COM joystick + 3 buttons
-Power Stone 2 841-0008C 23127 9 (64Mb) present 315-6213 317-5054-COM joystick + 3 buttons
-Puyo Puyo Da! 841-0006C 22206 20 (64Mb) ? ? ?
-Ring Out 4x4 840-0004C 21779 10 (64Mb) ? ? ?
-Samba de Amigo (prototype) 840-0020C proto 16 (64Mb) ? 315-6213 317-0270-COM will boot but requires special controller to play it
-Samba de Amigo (Rev B) 840-0020C 22966B 16 (64Mb) ? 315-6213 317-0270-COM will boot but requires special controller to play it
-Sega Marine Fishing 840-0027C 22221 10 (64Mb) ? 315-6213 not present ROM 3&4 not present. Requires special I/O board and fishing controller
-Sega Strike Fighter (Rev A) 840-0035C 23323A 20 (64Mb) present 315-6213 317-0281-COM
-Sega Tetris 840-0018C 22909 6 (64Mb) present 315-6213 317-0268-COM
-Slashout 840-0041C 23341 17 (64Mb) ? 315-6213 317-0286-COM joystick + 4 buttons
-Spawn In the Demon's Hand (Rev B) 841-0005C 22977B 10 (64Mb) ? 315-6213 317-5051-COM joystick + 4 buttons
-The Typing of the Dead (Rev A) 840-0026C 23021A 20 (64Mb) present 315-6213 not present
-Touch de UNO! / Unou Nouryoku Check Machine 840-0008C 22073 4 (64Mb) present 315-6213 317-0255-JPN
-Toy Fighter / Waffupu 840-0011C 22035 10 (64Mb) present 315-6212 317-0257-COM joystick + 3 buttons
-Virtua NBA 840-0021C 23073 21 (64Mb) present 315-6213 not present
-Virtua NBA (original) 840-0021C 23073 21 (64Mb) ? 315-6213 not present
-Virtua Striker 2 Ver. 2000 (Rev C) 840-0010C 21929C 14 (64Mb)* present 315-6213 317-0258-COM joystick + 3 buttons *(+1x 32Mb)
-Virtua Tennis / Power Smash 840-0015C 22927 11 (64Mb) present 315-6213 317-0263-COM
-Zombie Revenge 840-0003C 21707 19 (64Mb) ? 315-6213 317-0249-COM joystick + 3 buttons
+18 Wheeler (Deluxe) (Rev A) 840-0023C 22185A 20 (64Mb) present 315-6213 317-0273-COM
+18 Wheeler (Standard) 840-0036C 23298 20 (64Mb) present 315-6213 317-0273-COM
+18 Wheeler (Upright) 840-0037C 23299 20 (64Mb) present 315-6213 317-0273-COM
+Airline Pilots (Rev A) 840-0005C 21739A 11 (64Mb) present 315-6213 317-0251-COM
+Airline Pilots Deluxe (Rev B) ? 21787B 11 (64Mb) present 315-6213 317-0251-COM 2 know BIOS 21801 (USA), 21802 (EXP)
+Cosmic Smash 840-0044C 23428 8 (64Mb) ? 315-6213 317-0289-COM joystick + 2 buttons
+Cosmic Smash (Rev A) 840-0044C 23428A 8 (64Mb) ? 315-6213 317-0289-COM joystick + 2 buttons
+Crazy Taxi 840-0002C 21684 13 (64Mb)* none 315-6213 317-0248-COM * ic8 and ic9 are not present
+Dead Or Alive 2 841-0003C 22121 21 (64Mb) present 315-6213 317-5048-COM joystick + 3 buttons
+Dead Or Alive 2 Millennium 841-0003C DOA2 M 21 (64Mb) present 315-6213 317-5048-COM joystick + 3 buttons
+Death Crimson OX 841-0016C 23524 10 (64Mb) present 315-6213 317-5066-COM
+Dengen Tenshi Taisen Janshi Shangri-La 841-0004C 22060 12 (64Mb) ? 315-6213 317-5050-JPN
+Derby Owners Club (Rev B) 840-0016C 22099B 14 (64Mb) ? 315-6213 317-0262-JPN touch panel + 2 buttons + card reader
+Derby Owners Club 2000 Ver.2 (Rev A) 840-0052C 22284A 16 (64Mb) present 315-6213 not present
+Dynamite Baseball '99 / World Series'99 (Rev B) 840-0019C 22141B 19 (64Mb) ? 315-6213 317-0269-JPN requires special panel (joystick + 2 buttons + bat controller for each player)
+Dynamite Baseball Naomi 840-0001C 21575 21 (64Mb) ? 315-6213 317-0246-JPN requires special panel (joystick + 2 buttons + bat controller for each player)
+Ferrari F355 Challenge 834-13842 21902 21 (64Mb) present 315-6213 317-0254-COM
+Ferrari F355 Challenge 2 Twin 840-0042C 23399 21 (64Mb) present 315-6213 317-0287-COM 2 know BIOS 22850 (USA), 22851 (EXP)
+Ferrari F355 Challenge Twin 834-13950 22848 21 (64Mb) present 315-6213 317-0267-COM 2 know BIOS 22850 (USA), 22851 (EXP)
+Giant Gram: All Japan Pro Wrestling 2 840-0007C 21820 9 (64Mb) ? 315-6213 317-0253-JPN joystick + 3 buttons
+Guilty Gear X 841-0013C 23356 14 (64Mb) ? 315-6213 317-5063-COM
+Gun Spike / Cannon Spike 841-0012C 23210 12 (64Mb) present 315-6213 317-5060-COM
+Heavy Metal Geomatrix (Rev A) HMG016007 23716A 11 (64Mb) present 315-6213 317-5071-COM joystick + 2 buttons
+House of the Dead 2 834-13636 21385 20 (64Mb) none 315-6213 not present
+Idol Janshi Suchie-Pai 3 841-0002C 21979 14 (64Mb) ? 315-6213 317-5047-JPN requires special I/O board and mahjong panel
+Jambo! Safari (Rev A) 840-0013C 22826A 8 (64Mb) ? 315-6213 317-0264-COM
+Mars TV 840-0025C 22993 15 (64Mb) present 315-6213 317-0074-JPN
+OutTrigger 840-0017C 22163 19 (64Mb) ? 315-6213 317-0266-COM requires analog controllers/special panel
+Power Stone 841-0001C 21597 8 (64Mb) present 315-6213 317-5046-COM joystick + 3 buttons
+Power Stone 2 841-0008C 23127 9 (64Mb) present 315-6213 317-5054-COM joystick + 3 buttons
+Puyo Puyo Da! 841-0006C 22206 20 (64Mb) ? ? ?
+Ring Out 4x4 840-0004C 21779 10 (64Mb) present 315-6213 317-0250-COM
+Samba de Amigo (Rev B) 840-0020C 22966B 16 (64Mb) present 315-6213 317-0270-COM will boot but requires special controller to play it
+Sega Marine Fishing 840-0027C 22221 10 (64Mb) ? 315-6213 not present ROM 3&4 not present. Requires special I/O board and fishing controller
+Sega Strike Fighter (Rev A) 840-0035C 23323A 20 (64Mb) present 315-6213 317-0281-COM
+Sega Tetris 840-0018C 22909 6 (64Mb) present 315-6213 317-0268-COM
+Slashout 840-0041C 23341 17 (64Mb) ? 315-6213 317-0286-COM joystick + 4 buttons
+Spawn In the Demon's Hand (Rev B) 841-0005C 22977B 10 (64Mb) ? 315-6213 317-5051-COM joystick + 4 buttons
+The Typing of the Dead (Rev A) 840-0026C 23021A 20 (64Mb) present 315-6213 not present
+Touch de UNO! / Unou Nouryoku Check Machine 840-0008C 22073 4 (64Mb) present 315-6213 317-0255-JPN
+Toy Fighter / Waffupu 840-0011C 22035 10 (64Mb) present 315-6212 317-0257-COM joystick + 3 buttons
+Virtua NBA 840-0021C-01 23073 21 (64Mb) present 315-6213 not present
+Virtua NBA (original) 840-0021C 22949 21 (64Mb) present 315-6213 317-0271-COM
+Virtua Striker 2 Ver. 2000 (Rev C) 840-0010C 21929C 14 (64Mb)* present 315-6213 317-0258-COM joystick + 3 buttons *(+1x 32Mb)
+Virtua Tennis / Power Smash 840-0015C 22927 11 (64Mb) present 315-6213 317-0263-COM
+Zombie Revenge 840-0003C 21707 19 (64Mb) ? 315-6213 317-0249-COM joystick + 3 buttons
@@ -494,8 +498,9 @@ Capcom Vs. SNK Millennium Fight 2000 841-0011C 23511 7 (128Mb) 3
Capcom Vs. SNK Millennium Fight 2000 (Rev A) 841-0011C 23511A 7 (128Mb) 315-6219 present 317-5059-COM (000804)
Capcom Vs. SNK Millennium Fight 2000 (Rev C) 841-0011C 23511C 7 (128Mb) 315-6319 present 317-5059-COM (000904)
Club Kart: European Session 840-0062C 23704 11 (128Mb) 315-6319A present 317-0313-COM
-Club Kart: European Session (Rev D) 840-0062C 21473D 11 (128Mb) 315-6319A present 317-0313-COM
-Crackin' DJ 840-0043C 23450D 10 (128Mb) 315-6319 present ?
+Club Kart: European Session (Rev D) 840-0062C 23704D 11 (128Mb) 315-6319A present 317-0313-COM
+Club Kart: European Session (Rev C) 840-0062C 11 (128Mb) 315-6319A present 317-0313-COM EPR have handwritten Japanese label possible readable as 'teteto 74 lcl'
+Crackin' DJ 840-0043C 23450 10 (128Mb) 315-6319 present 317-0288-COM
Derby Owners Club II (Rev B) 840-0083C 22306B 11 (128Mb) 315-6319A present not present
Derby Owners Club World Edition (Rev C) 840-0088C 22336C 7 (128Mb) 315-6319A present not present
Derby Owners Club World Edition (Rev D) 840-0088C 22336D 7 (128Mb) 315-6319A present not present 2 MaskROM are different from Rev C
@@ -504,10 +509,11 @@ Mobile Suit Gundam: Federation Vs. Zeon 841-0017C 23638 10 (128Mb) 3
Moero Justice Gakuen / Project Justice (Rev A) 841-0015C 23548A 11 (128Mb) 315-6319A present 317-5065-COM
Mushiking 2K5 1ST (Ver 1.000) 840-0158C 24286 7 (128Mb) 315-6319A present not present
Oinori-daimyoujin Matsuri 840-0126B 24053 5 (128Mb) 315-6319A present not present
-Samba de Amigo Ver. 2000 840-0047C 23600 21 (64Mb) 315-6319A present 317-0295-COM
+Samba de Amigo Ver. 2000 840-0047C 23600 11 (128Mb) 315-6319A present 317-0295-COM
Star Horse (big screens) 840-0054C 23625 4 (128Mb) 315-6319 present not present
Star Horse (client) 840-0056C 23627 6 (128Mb)* 315-6319 present not present * +1 (64Mb)
Star Horse Progress (Rev A) 840-0123C 24122A 7 (128Mb) 315-6319A present not present requires an additional middle board n? 837-13785
+The King of Route 66 (Rev A) 840-0087C 23819A 10 (128Mb) 315-6319A present not present
Virtua Striker 3 (Rev B) 840-0061C 23663B 11 (128Mb) 315-6319A present 317-0310-COM
Virtua Striker 3 (Rev C) 840-0061C 23663C 11 (128Mb) 315-6319A present 317-0310-COM
Wave Runner GP 840-0064C 24059 6 (128Mb) 315-6319A present not present
@@ -4181,30 +4187,19 @@ ROM_START( samba2k )
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-23600.ic22", 0x0000000, 0x400000, CRC(8b6fed00) SHA1(72842f266ad272e4c02be42a6529c2462fd8b63f) )
- ROM_LOAD( "mpr-23579.ic1", 0x0800000, 0x800000, CRC(ded76d71) SHA1(9187434587173f2fcc50af817222121703c253b7) )
- ROM_LOAD( "mpr-23580.ic2", 0x1000000, 0x800000, CRC(a9b29be1) SHA1(4f71b37b21623d87d805cb8d7b9da73bca1d22f3) )
- ROM_LOAD( "mpr-23581.ic3", 0x1800000, 0x800000, CRC(7c44d4c9) SHA1(a2c6e7392a2b52c1b5c0b133bb95fbe53736ca3e) )
- ROM_LOAD( "mpr-23582.ic4", 0x2000000, 0x800000, CRC(99b1af20) SHA1(598abe358d6c97a0ad6d68f5273cea1b96f73237) )
- ROM_LOAD( "mpr-23583.ic5", 0x2800000, 0x800000, CRC(7a81bbd1) SHA1(e36895d8964d1cdd3f316f0ec27356faa3d3f6e0) )
- ROM_LOAD( "mpr-23584.ic6", 0x3000000, 0x800000, CRC(e478b1df) SHA1(5b316feb618a0a61974c3fb5b4c5527873055a5b) )
- ROM_LOAD( "mpr-23585.ic7", 0x3800000, 0x800000, CRC(2f378c38) SHA1(881c6001c173c1ef8ddbb3ae15667e45fac11f96) )
- ROM_LOAD( "mpr-23586.ic8", 0x4000000, 0x800000, CRC(23bec2a7) SHA1(960a6613966bedf20c19454bbc5ec52d14c3f308) )
- ROM_LOAD( "mpr-23587.ic9", 0x4800000, 0x800000, CRC(f52a356b) SHA1(4e3783f5e8d02d09f474cc5ece457af5c4296508) )
- ROM_LOAD( "mpr-23588.ic10", 0x5000000, 0x800000, CRC(4bae020b) SHA1(e3750f87309c7ac9ab6fc504a9377971451ccb5a) )
- ROM_LOAD( "mpr-23589.ic11", 0x5800000, 0x800000, CRC(f6a09854) SHA1(d4ae9d7ddc349e353196cb145f732798a692e560) )
- ROM_LOAD( "mpr-23590.ic12s", 0x6000000, 0x800000, CRC(88e29d52) SHA1(42b66f13302772729920b9af546123c771ecec6b) )
- ROM_LOAD( "mpr-23591.ic13s", 0x6800000, 0x800000, CRC(8736d9b1) SHA1(d829d499dc147f0d14413554ff33187c7df9134f) )
- ROM_LOAD( "mpr-23592.ic14s", 0x7000000, 0x800000, CRC(c7dbeefd) SHA1(7b84d2f5532668936f60314fb3e112b1350bcc51) )
- ROM_LOAD( "mpr-23593.ic15s", 0x7800000, 0x800000, CRC(c8d63355) SHA1(64b06027ebbcfb72ead1d2041423ffd2fe4dcd97) )
- ROM_LOAD( "mpr-23594.ic16s", 0x8000000, 0x800000, CRC(30a04934) SHA1(5b3e5226b1eef9f2d9a64b89307380e2b347547e) )
- ROM_LOAD( "mpr-23595.ic17s", 0x8800000, 0x800000, CRC(1fea68ad) SHA1(d4615f6ea0b9ce6483cb688810ef7ae287aef082) )
- ROM_LOAD( "mpr-23596.ic18s", 0x9000000, 0x800000, CRC(2e57f934) SHA1(9231d3b881e210fa83dda8f03a1702166eb48750) )
- ROM_LOAD( "mpr-23597.ic19s", 0x9800000, 0x800000, CRC(fb50cfdb) SHA1(2e95407b1c8660ae8e85b2d06c13bdc474b93d6e) )
- ROM_LOAD( "mpr-23598.ic20s", 0xa000000, 0x800000, CRC(897c2304) SHA1(e21b68fd935092b5bd019e3087647e9612be1169) )
- ROM_LOAD( "mpr-23599.ic21s", 0xa800000, 0x800000, CRC(f2d1f73f) SHA1(40ac3ef9b1c3797e986fc4a0c593dd4e49df8892) )
- // maskrom labels and number/size needs verification
+ ROM_REGION( 0xb800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-23600.ic22", 0x00000000, 0x0400000, CRC(8b6fed00) SHA1(72842f266ad272e4c02be42a6529c2462fd8b63f) )
+ ROM_LOAD( "mpr-23589.ic1", 0x00800000, 0x1000000, CRC(11c442ed) SHA1(07a463148744a4e254bd88e51eda34f27f92f1cd) )
+ ROM_LOAD( "mpr-23590.ic2", 0x01800000, 0x1000000, CRC(8e5959e6) SHA1(bafd00399cf3ffa50f2b55942e8424a8ae3b351d) )
+ ROM_LOAD( "mpr-23591.ic3", 0x02800000, 0x1000000, CRC(bc9ad236) SHA1(d6f89fce7e5da0d71a536beed99aacb856455b80) )
+ ROM_LOAD( "mpr-23592.ic4", 0x03800000, 0x1000000, CRC(eed8c7a8) SHA1(1a25b9e080ec68c42a4866bc3fd28aeae3567e86) )
+ ROM_LOAD( "mpr-23593.ic5", 0x04800000, 0x1000000, CRC(8f704190) SHA1(6d13456fdddba70ad3e2449a002fb776b2315744) )
+ ROM_LOAD( "mpr-23594.ic6", 0x05800000, 0x1000000, CRC(4986f81d) SHA1(8e56aa8e513a2fae087e6f6d7d0b1e3bff5f53de) )
+ ROM_LOAD( "mpr-23595.ic7", 0x06800000, 0x1000000, CRC(f44e62a6) SHA1(51ccfa875e3f6e78ea13edcc016f9e643077d697) )
+ ROM_LOAD( "mpr-23596.ic8", 0x07800000, 0x1000000, CRC(47b89407) SHA1(d40b71b7861b296944624ca8c0a3a306094c9db5) )
+ ROM_LOAD( "mpr-23597.ic9", 0x08800000, 0x1000000, CRC(ef5bd4e8) SHA1(b4371e5dfbf3b011f2668b1522b0bc7def47b8ae) )
+ ROM_LOAD( "mpr-23598.ic10", 0x09800000, 0x1000000, CRC(e06ee3dd) SHA1(21985e45e1ab5e3a79dd52492a582324a1a36d56) )
+ ROM_LOAD( "mpr-23599.ic11", 0x0a800000, 0x1000000, CRC(1fd2e792) SHA1(6f299e527be529f85d0e8b4ce0e7a06ac0d25fe9) )
ROM_REGION( 4, "rom_key", 0 )
ROM_LOAD( "samba2k-key.bin", 0, 4, CRC(01c0d74a) SHA1(4461cfd761919ba4bc6f1d1839a880f11eaf8d0f) )
@@ -6348,17 +6343,16 @@ ROM_START( ringout )
ROM_REGION( 0x5800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD( "epr-21779a.ic22",0x0000000, 0x400000, CRC(1d419767) SHA1(33065006ef437845abcf32a59e78f4bc202c4460) )
- ROM_LOAD( "mpr-21769.ic1", 0x0800000, 0x800000, CRC(493199fc) SHA1(189cd9a20c9207f0238e6d2e867f1479a476dfaa) )
- ROM_LOAD( "mpr-21770.ic2", 0x1000000, 0x800000, CRC(68173ace) SHA1(0869072915543dd5dfa6d3cdb95205521b4a3bf4) )
- ROM_LOAD( "mpr-21771.ic3", 0x1800000, 0x800000, CRC(41badfc3) SHA1(d4062bdbb994b8c18dac20948db9a9550f030865) )
- ROM_LOAD( "mpr-21772.ic4", 0x2000000, 0x800000, CRC(a8dfb537) SHA1(9f6c98ee23842b22fa3b701dad0a384a24a9bc6a) )
- ROM_LOAD( "mpr-21773.ic5", 0x2800000, 0x800000, CRC(3f1f5ed4) SHA1(a7d6e65fba9732efbd99e10a609f41dd03fd3bb8) )
- ROM_LOAD( "mpr-21774.ic6", 0x3000000, 0x800000, CRC(5a1114f0) SHA1(a45fc82bccb40e582f107b86403409651476180e) )
- ROM_LOAD( "mpr-21775.ic7", 0x3800000, 0x800000, CRC(5645a95c) SHA1(f0e97ff5b744972a1fa4e03e6d16a19ba20fb930) )
- ROM_LOAD( "mpr-21776.ic8", 0x4000000, 0x800000, CRC(22fc33dc) SHA1(922c41f7fb22b26037446bdfb4f9788a8e0c3e46) )
- ROM_LOAD( "mpr-21777.ic9", 0x4800000, 0x800000, CRC(6d22d29d) SHA1(382dcd62065437b34fe101144b1c047eb261f047) )
- ROM_LOAD( "mpr-21778.ic10", 0x5000000, 0x800000, CRC(c5308e61) SHA1(e51f8026351d5ffbda2a5bed39aeef543366febf) )
- // maskrom labels needs verification
+ ROM_LOAD( "mpr-21761.ic1", 0x0800000, 0x800000, CRC(493199fc) SHA1(189cd9a20c9207f0238e6d2e867f1479a476dfaa) )
+ ROM_LOAD( "mpr-21762.ic2", 0x1000000, 0x800000, CRC(68173ace) SHA1(0869072915543dd5dfa6d3cdb95205521b4a3bf4) )
+ ROM_LOAD( "mpr-21763.ic3", 0x1800000, 0x800000, CRC(41badfc3) SHA1(d4062bdbb994b8c18dac20948db9a9550f030865) )
+ ROM_LOAD( "mpr-21764.ic4", 0x2000000, 0x800000, CRC(a8dfb537) SHA1(9f6c98ee23842b22fa3b701dad0a384a24a9bc6a) )
+ ROM_LOAD( "mpr-21765.ic5", 0x2800000, 0x800000, CRC(3f1f5ed4) SHA1(a7d6e65fba9732efbd99e10a609f41dd03fd3bb8) )
+ ROM_LOAD( "mpr-21766.ic6", 0x3000000, 0x800000, CRC(5a1114f0) SHA1(a45fc82bccb40e582f107b86403409651476180e) )
+ ROM_LOAD( "mpr-21767.ic7", 0x3800000, 0x800000, CRC(5645a95c) SHA1(f0e97ff5b744972a1fa4e03e6d16a19ba20fb930) )
+ ROM_LOAD( "mpr-21768.ic8", 0x4000000, 0x800000, CRC(22fc33dc) SHA1(922c41f7fb22b26037446bdfb4f9788a8e0c3e46) )
+ ROM_LOAD( "mpr-21769.ic9", 0x4800000, 0x800000, CRC(6d22d29d) SHA1(382dcd62065437b34fe101144b1c047eb261f047) )
+ ROM_LOAD( "mpr-21770.ic10", 0x5000000, 0x800000, CRC(c5308e61) SHA1(e51f8026351d5ffbda2a5bed39aeef543366febf) )
ROM_REGION( 4, "rom_key", 0 )
ROM_LOAD( "ringout-key.bin", 0, 4, CRC(8f8c4eb2) SHA1(9bc59c69d04d9ce876415af048f39095ed680a5e) )
@@ -6370,20 +6364,19 @@ ROM_START( vonot )
ROM_REGION( 0x7000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD( "epr-23198.ic22", 0x0000000, 0x400000, CRC(9852eda2) SHA1(71ded8cbdf567afeff30bd593071ce3b7d84a260) )
- ROM_LOAD( "mpr-23185.ic1", 0x0800000, 0x800000, CRC(c4fc1d45) SHA1(cfeff71ac1cccf274f00731fe1ffc182fb85f7a6) )
- ROM_LOAD( "mpr-23186.ic2", 0x1000000, 0x800000, CRC(b17f9924) SHA1(a9aa9f10b76964042b337b25430acff072aaa7c7) )
- ROM_LOAD( "mpr-23187.ic3", 0x1800000, 0x800000, CRC(575f73e8) SHA1(fe6ffeab120ad788bd692b33eca1cf22db881ac3) )
- ROM_LOAD( "mpr-23188.ic4", 0x2000000, 0x800000, CRC(0004ef34) SHA1(926de996549421a5835f3c8c0895a07978519215) )
- ROM_LOAD( "mpr-23189.ic5", 0x2800000, 0x800000, CRC(554eea29) SHA1(c82c24270dee0dd7309b117e1632827ca314615d) )
- ROM_LOAD( "mpr-23190.ic6", 0x3000000, 0x800000, CRC(b74ae1c5) SHA1(003fadbaa03cf43757b686f316d1104d26ae9ce8) )
- ROM_LOAD( "mpr-23191.ic7", 0x3800000, 0x800000, CRC(9f2a88af) SHA1(b1caf9cbf026ee6d0f12ab66cddf120e7ba9884c) )
- ROM_LOAD( "mpr-23192.ic8", 0x4000000, 0x800000, CRC(83014196) SHA1(cc4801534e0f0e649fc3f368af4bd3ac01288732) )
- ROM_LOAD( "mpr-23193.ic9", 0x4800000, 0x800000, CRC(2fde8ecf) SHA1(6da95fb04f141f2c45564460c49834bb945fb1af) )
- ROM_LOAD( "mpr-23194.ic10", 0x5000000, 0x800000, CRC(92f045e5) SHA1(70f741e55a47682725c7d6dcdd0e60982187fc87) )
- ROM_LOAD( "mpr-23195.ic11", 0x5800000, 0x800000, CRC(9e708834) SHA1(2f454688ea5b8b041bbfffaa12047afad01d020f) )
- ROM_LOAD( "mpr-23196.ic12s", 0x6000000, 0x800000, CRC(c86a5b9b) SHA1(4b8dda85003289e1464e12c3abf449bb8df20e3a) )
- ROM_LOAD( "mpr-23197.ic13s", 0x6800000, 0x800000, CRC(5adea0bd) SHA1(f8614ba83d5f61556c3db1a1796a02ed2c51ce2a) )
- // maskrom labels needs verification
+ ROM_LOAD( "mpr-23182.ic1", 0x0800000, 0x800000, CRC(c4fc1d45) SHA1(cfeff71ac1cccf274f00731fe1ffc182fb85f7a6) )
+ ROM_LOAD( "mpr-23183.ic2", 0x1000000, 0x800000, CRC(b17f9924) SHA1(a9aa9f10b76964042b337b25430acff072aaa7c7) )
+ ROM_LOAD( "mpr-23184.ic3", 0x1800000, 0x800000, CRC(575f73e8) SHA1(fe6ffeab120ad788bd692b33eca1cf22db881ac3) )
+ ROM_LOAD( "mpr-23185.ic4", 0x2000000, 0x800000, CRC(0004ef34) SHA1(926de996549421a5835f3c8c0895a07978519215) )
+ ROM_LOAD( "mpr-23186.ic5", 0x2800000, 0x800000, CRC(554eea29) SHA1(c82c24270dee0dd7309b117e1632827ca314615d) )
+ ROM_LOAD( "mpr-23187.ic6", 0x3000000, 0x800000, CRC(b74ae1c5) SHA1(003fadbaa03cf43757b686f316d1104d26ae9ce8) )
+ ROM_LOAD( "mpr-23188.ic7", 0x3800000, 0x800000, CRC(9f2a88af) SHA1(b1caf9cbf026ee6d0f12ab66cddf120e7ba9884c) )
+ ROM_LOAD( "mpr-23189.ic8", 0x4000000, 0x800000, CRC(83014196) SHA1(cc4801534e0f0e649fc3f368af4bd3ac01288732) )
+ ROM_LOAD( "mpr-23190.ic9", 0x4800000, 0x800000, CRC(2fde8ecf) SHA1(6da95fb04f141f2c45564460c49834bb945fb1af) )
+ ROM_LOAD( "mpr-23191.ic10", 0x5000000, 0x800000, CRC(92f045e5) SHA1(70f741e55a47682725c7d6dcdd0e60982187fc87) )
+ ROM_LOAD( "mpr-23192.ic11", 0x5800000, 0x800000, CRC(9e708834) SHA1(2f454688ea5b8b041bbfffaa12047afad01d020f) )
+ ROM_LOAD( "mpr-23193.ic12s", 0x6000000, 0x800000, CRC(c86a5b9b) SHA1(4b8dda85003289e1464e12c3abf449bb8df20e3a) )
+ ROM_LOAD( "mpr-23194.ic13s", 0x6800000, 0x800000, CRC(5adea0bd) SHA1(f8614ba83d5f61556c3db1a1796a02ed2c51ce2a) )
ROM_REGION( 4, "rom_key", 0 )
ROM_LOAD( "vonot-key.bin", 0, 4, CRC(021ac707) SHA1(af57844331226d3b1722aedca1a7aef024468b39) )
@@ -7785,27 +7778,17 @@ ROM_START( kingrt66 )
NAOMI_DEFAULT_EEPROM
ROM_REGION( 0xa800000, "rom_board", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-23819a.ic22", 0x0000000, 0x400000, CRC(92f11b29) SHA1(b33f7eefb849754cfe194be1d48d770ed77ff69a) )
- ROM_LOAD( "ic1s.bin", 0x0800000, 0x800000, CRC(03da8f81) SHA1(01f9b33ffc485d8ccb2630c8cc1fcc0d90da171d) )
- ROM_LOAD( "ic2s.bin", 0x1000000, 0x800000, CRC(1bbbf549) SHA1(0c5269f3e8a88298408bb612dc8da4d545ce329e) )
- ROM_LOAD( "ic3s.bin", 0x1800000, 0x800000, CRC(6c81d0a9) SHA1(2301350098062e16afd6d4c13eeb1e46040d398f) )
- ROM_LOAD( "ic4s.bin", 0x2000000, 0x800000, CRC(fe245803) SHA1(3b5c4d20c447ca02306a74914c027c9193d2bb48) )
- ROM_LOAD( "ic5s.bin", 0x2800000, 0x800000, CRC(d8376c76) SHA1(62a64d0ff4b63a2de3b8668c0ca1d69d4cdac00e) )
- ROM_LOAD( "ic6s.bin", 0x3000000, 0x800000, CRC(d184a4b3) SHA1(db00cf005da52b8add695ec89f8a81cf21fc9bad) )
- ROM_LOAD( "ic7s.bin", 0x3800000, 0x800000, CRC(6e92fb39) SHA1(d992272e474424221c87bb71e269e10cbba1cac9) )
- ROM_LOAD( "ic8s.bin", 0x4000000, 0x800000, CRC(fd4c128f) SHA1(7778920f59b8bc1e9718d685bfd556f73e5c3895) )
- ROM_LOAD( "ic9s.bin", 0x4800000, 0x800000, CRC(5bcb3759) SHA1(57baa595eaee826ffadc17c885cb73174558feb1) )
- ROM_LOAD( "ic10s.bin", 0x5000000, 0x800000, CRC(7d66c409) SHA1(fa8d08587ebcd70ec39237366c5de6948efce881) )
- ROM_LOAD( "ic11s.bin", 0x5800000, 0x800000, CRC(322abecc) SHA1(476a751dc9849a5167e7e7e17e27987b96b1cb00) )
- ROM_LOAD( "ic12s.bin", 0x6000000, 0x800000, CRC(a47fff36) SHA1(5c0088e140654b89749c5dd5d729c4799afc224e) )
- ROM_LOAD( "ic13s.bin", 0x6800000, 0x800000, CRC(f502b666) SHA1(fa483f327cab15d10861efcbf6bdf4a2c5d0a763) )
- ROM_LOAD( "ic14s.bin", 0x7000000, 0x800000, CRC(ed664a57) SHA1(54421ce642208fd1f14fbbe2e326d9c8da7c9944) )
- ROM_LOAD( "ic15s.bin", 0x7800000, 0x800000, CRC(3f905393) SHA1(d63bbe8099b323ad4fd95401e0097b4c7151b44c) )
- ROM_LOAD( "ic16s.bin", 0x8000000, 0x800000, CRC(80756e62) SHA1(9b2f14ed10775ee56f245c75ee23534c99db23d4) )
- ROM_LOAD( "ic17s.bin", 0x8800000, 0x800000, CRC(7404e74e) SHA1(a427bf9f5e8338d34d1091de69460e374ddc6ee6) )
- ROM_LOAD( "ic18s.bin", 0x9000000, 0x800000, CRC(58a7fbac) SHA1(7132e018e73e68a355f92fe26121da7c3c0c927a) )
- ROM_LOAD( "ic19s.bin", 0x9800000, 0x800000, CRC(fd6fb2cf) SHA1(b2bf8a11d42141237db0254506ee73d9cef8b9d1) )
- ROM_LOAD( "ic20s.bin", 0xa000000, 0x800000, CRC(be902c2b) SHA1(1f1aa6933da528bdcef45942a0caa33cb24e7ddd) )
+ ROM_LOAD( "epr-23819a.ic22", 0x0000000, 0x00400000, CRC(92f11b29) SHA1(b33f7eefb849754cfe194be1d48d770ed77ff69a) )
+ ROM_LOAD("mpr-23808.ic1", 0x00800000, 0x01000000, CRC(e911bc86) SHA1(0dc658851e20425b2e697e538bb4297a221f6ae8) )
+ ROM_LOAD("mpr-23809.ic2", 0x01800000, 0x01000000, CRC(2716aba0) SHA1(4c245874da244926bf9ac6636af4fa67e07a21e8) )
+ ROM_LOAD("mpr-23810.ic3", 0x02800000, 0x01000000, CRC(2226accb) SHA1(c4dc71e87c2ccd866f4180129181b7ced8caf22c) )
+ ROM_LOAD("mpr-23811.ic4", 0x03800000, 0x01000000, CRC(bbad4a93) SHA1(724c3376102b2dc79b852af1e90748b2e0023b82) )
+ ROM_LOAD("mpr-23812.ic5", 0x04800000, 0x01000000, CRC(7beabe22) SHA1(d3cd926fc768d480ff45f1e30024bb0e31bd7d2c) )
+ ROM_LOAD("mpr-23813.ic6", 0x05800000, 0x01000000, CRC(fe0b94ea) SHA1(0e46dff932036bec49c78a612bcfd27e07b516e8) )
+ ROM_LOAD("mpr-23814.ic7", 0x06800000, 0x01000000, CRC(0cdf7325) SHA1(41668f873b7842dac1bc85aa2b6bd6512edc9b64) )
+ ROM_LOAD("mpr-23815.ic8", 0x07800000, 0x01000000, CRC(ef327ab8) SHA1(9dfc564084a75b9c3935374347f1709d2e86e469) )
+ ROM_LOAD("mpr-23816.ic9", 0x08800000, 0x01000000, CRC(bbaf0765) SHA1(3b79a4eff504b2156bea8b86c6cdd8e41e7bf268) )
+ ROM_LOAD("mpr-23817.ic10", 0x09800000, 0x01000000, CRC(e179cfb6) SHA1(1120036238439f8ac1041150396e4b60e4a243bc) )
ROM_REGION( 4, "rom_key", ROMREGION_ERASE00 )
ROM_END
@@ -7917,7 +7900,29 @@ ROM_START( clubkrtd )
NAOMI_DEFAULT_EEPROM
ROM_REGION( 0xb800000, "rom_board", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-21473d.ic22",0x0000000, 0x0400000, CRC(60ac770c) SHA1(2f1688f2046e794d1c1e06912b46c1573d934608) )
+ ROM_LOAD( "epr-23704d.ic22",0x0000000, 0x0400000, CRC(60ac770c) SHA1(2f1688f2046e794d1c1e06912b46c1573d934608) )
+ ROM_LOAD( "mpr-23693.ic1", 0x0800000, 0x1000000, CRC(28995764) SHA1(a1457f9935dde2e5aaa5ef245c736c0f2f8c74b7) )
+ ROM_LOAD( "mpr-23694.ic2", 0x1800000, 0x1000000, CRC(37d30111) SHA1(4c07df8cd548cac79d48709e61f692d762471f8f) )
+ ROM_LOAD( "mpr-23695.ic3", 0x2800000, 0x1000000, CRC(41ac1510) SHA1(01b889b627fdfc1f12a0c84fcc36debdfb1cf377) )
+ ROM_LOAD( "mpr-23696.ic4", 0x3800000, 0x1000000, CRC(6f2da455) SHA1(b655757bc513398820bfeae07dca8a4f3ea9752c) )
+ ROM_LOAD( "mpr-23697.ic5", 0x4800000, 0x1000000, CRC(1383c742) SHA1(6efd17632a277a4bb0e47cc912fbc9865a8b14c3) )
+ ROM_LOAD( "mpr-23698.ic6", 0x5800000, 0x1000000, CRC(da79cd06) SHA1(fdfe068caca1eb764dec28ab327e56b39144f3ae) )
+ ROM_LOAD( "mpr-23699.ic7", 0x6800000, 0x1000000, CRC(ea77f000) SHA1(35aa8ee804d9429e72f516137a3b06c585a57b6d) )
+ ROM_LOAD( "mpr-23700.ic8", 0x7800000, 0x1000000, CRC(db9e5c1d) SHA1(db918c0fa1860f4345806e574d44354aba5fcd54) )
+ ROM_LOAD( "mpr-23701.ic9", 0x8800000, 0x1000000, CRC(0fa92fd7) SHA1(67a1cf085101884a17a4783d0d509ab198aa6425) )
+ ROM_LOAD( "mpr-23702.ic10", 0x9800000, 0x1000000, CRC(e302b582) SHA1(787192ed9f9a08541eecc3128855485cad802a42) )
+ ROM_LOAD( "mpr-23703.ic11", 0xa800000, 0x1000000, CRC(702b8b4a) SHA1(3a8dfde458f341e7db20664382b9fce2b6e5d462) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "clubkrte-key.bin", 0, 4, CRC(db426a5d) SHA1(6a6a0b80ec0416605541159efea379dc19fe796d) )
+ROM_END
+
+ROM_START( clubkrtc )
+ NAOMI2_BIOS
+ NAOMI_DEFAULT_EEPROM
+
+ ROM_REGION( 0xb800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-23704c.ic22",0x0000000, 0x0400000, CRC(45ea13c3) SHA1(48cddba0506010dc705f04457f784a1d455ef3a6) )
ROM_LOAD( "mpr-23693.ic1", 0x0800000, 0x1000000, CRC(28995764) SHA1(a1457f9935dde2e5aaa5ef245c736c0f2f8c74b7) )
ROM_LOAD( "mpr-23694.ic2", 0x1800000, 0x1000000, CRC(37d30111) SHA1(4c07df8cd548cac79d48709e61f692d762471f8f) )
ROM_LOAD( "mpr-23695.ic3", 0x2800000, 0x1000000, CRC(41ac1510) SHA1(01b889b627fdfc1f12a0c84fcc36debdfb1cf377) )
@@ -8032,9 +8037,8 @@ ROM_START( clubk2k3 )
ROM_LOAD( "clubk2k3-key.bin", 0x000000, 0x000004, CRC(96c3b4f6) SHA1(9b85a418153c70f56aaeeb1ed0bbbbd31a1bbad7) )
ROM_END
-// source was some kind of (developer/proto?) flash cart, needs verification
-// uses the same mask roms as clubk2k3, but EPR doesn't have checksumms for them, so rom test shows all roms as BAD
-ROM_START( clubk2kf )
+// uses the same mask roms data as clubk2k3, but most likely not in 32bit dissected form, EPR doesn't have checksumms for them, so rom test shows all roms as BAD
+ROM_START( clubk2kp )
NAOMI2_BIOS
NAOMI_DEFAULT_EEPROM
@@ -8931,6 +8935,7 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
/* 0061 */ GAME( 2001, vstrik3cb,vstrik3c,naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart, Rev B)", GAME_FLAGS )
/* 0062 */ GAME( 2001, clubkrte, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session", GAME_FLAGS )
/* 0062 */ GAME( 2001, clubkrtd, clubkrte,naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (Rev D)", GAME_FLAGS )
+/* 0062 */ GAME( 2001, clubkrtc, clubkrte,naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (Rev C)", GAME_FLAGS )
/* 0080 */ GAME( 2002, vf4cart, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 (Cartridge)", GAME_FLAGS )
/* 0087 */ GAME( 2002, kingrt66, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "King of Route 66 (Rev A)", GAME_FLAGS )
/* 0095 */ GAME( 2002, soulsurf, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Soul Surfer (Rev A)", GAME_FLAGS )
@@ -8940,8 +8945,7 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
/* 0137 */ GAME( 2004, clubkpzb, naomi2, naomi2m1, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart Prize Ver. B", GAME_FLAGS )
// needs verification is this dump really from 840-0139C cart
/* 0139 */ GAME( 2003, clubk2k3, naomi2, naomi2m1, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (2003)", GAME_FLAGS )
-// source is some kind of (developer/proto?) flash cart, needs verification
-/* ??? */ GAME( 2003, clubk2kf, clubk2k3,naomi2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (2003, not protected)", GAME_FLAGS )
+/* ??? */ GAME( 2003, clubk2kp, clubk2k3,naomi2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (2003, prototype)", GAME_FLAGS )
/* 841-xxxxx ("Licensed by Sega" Naomi cart games)*/
/* 0001 */ GAME( 1999, pstone, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Capcom", "Power Stone (JPN, USA, EUR, ASI, AUS)", GAME_FLAGS )
@@ -9068,7 +9072,6 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
// 00?? Dragon Treasure
// 00?? Dragon Treasure 2
// 00?? Get Bass 2
-// 00?? Kodai Ouja Kyouryuu King
/* GDL-xxxx ("licensed by Sega" GD-ROM games) */
/* 0001 */ GAME( 2001, gundmgd, naomigd, naomigd, naomi, naomi_state, naomigd, ROT0,"Capcom / Banpresto","Mobile Suit Gundam: Federation Vs. Zeon (GDL-0001)", GAME_FLAGS )
@@ -9134,13 +9137,6 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
// 10015 CD - World Club Champion Football European Clubs 2004-2005 Ver.1.1 (Sega, 2005)
// 10015P CD - World Club Champion Football European Clubs 2004-2005 Ver.3.22 (Sega, 2005)
// 10027 CD - World Club Champion Football European Clubs 2005-2006 (Sega, 2006)
-// 10030 DVD - Mobile Suit Gundam 0083 Card Builder (Banpresto, 2007)
-// ????? ??? - Mobile Suit Gundam 0079 Card Builder (Banpresto, 2005)
-// ????? ??? - Mobile Suit Gundam 0079 Card Builder (Ver.1.007) (Banpresto, 2006)
-// ????? ??? - Mobile Suit Gundam 0079 Card Builder (Ver.2.00) (Banpresto, 2006)
-// ????? ??? - Mobile Suit Gundam 0079 Card Builder (Ver.2.01) (Banpresto, 2006)
-// ????? ??? - Mobile Suit Gundam 0079 Card Builder (Ver.2.02) (Banpresto, 2006)
-// ????? ??? - Mobile Suit Gundam 0083 Card Builder Ryouyuu Gekitotsu (Banpresto, 2007)
// ????? ??? - World Club Champion Football Serie A 2001-2002 (Sega, 2002)
// ????? ??? - World Club Champion Football Serie A 2001-2002 Ver.1.2 (Sega, 2002)
// ????? ??? - World Club Champion Football Serie A 2001-2002 Ver.2 (Sega, 2003)
@@ -9149,6 +9145,11 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
// ????? ??? - World Club Champion Football European Clubs 2004-2005 Ver.1.2 (Sega, 2005)
// ????? ??? - World Club Champion Football European Clubs 2005-2006 bugfix (Sega, 2006)
+/* MDA-Gxxxx (Compact Flash replacement of Naomi 2 GD-ROM releases) */
+// 0001 - Club Kart Cycraft Edition (GDS-0029)
+// 0003 - Initial D Arcade Stage Ver. 1 (Export) (GDS-0025A)
+// 0005 - Initial D Arcade Stage Ver. 2 (Export) (GDS-0027)
+// 0007 - Initial D Arcade Stage Ver. 3 (Export) (GDS-0033)
/* Atomiswave */
diff --git a/src/mame/drivers/ninjakd2.c b/src/mame/drivers/ninjakd2.c
index 33f69cd6390..4515dcb116d 100644
--- a/src/mame/drivers/ninjakd2.c
+++ b/src/mame/drivers/ninjakd2.c
@@ -1133,6 +1133,47 @@ ROM_START( rdaction )
ROM_LOAD( "nk2_09.rom", 0x0000, 0x10000, CRC(c1d2d170) SHA1(0f325815086fde90fd85360d3660042b0b68ba96) ) // 9.6c unsigned 8-bit pcm samples
ROM_END
+// Is this official? works with any program rom set, but nowhere in any program roms is the title JT-104 mentioned.
+// It was found on a board with RAD ACTION program roms.
+//
+// In addition to the title screen text change the new graphic ROM has 'UNITED AMUSEMENTS' license text replacing
+// the regular UPL copyright (used on the interludes) however because it is using the RAD ACTION program roms the
+// title screen still shows the 'World Games' license text.
+//
+// Did this board have incorrect program roms, or is this just how it was?
+
+
+ROM_START( jt104 ) // identical to radaction set with different gfx rom and decrypted sound rom
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "1.3u", 0x00000, 0x8000, CRC(5c475611) SHA1(2da88a95b5d68b259c8ae48af1438a82a1d601c1) )
+ ROM_LOAD( "2.3s", 0x10000, 0x8000, CRC(a1e23bd2) SHA1(c3b6574dc9fa66b4f41c37754a0d20a865f8bc28) ) // banked at 8000-bfff
+ ROM_LOAD( "nk2_03.rom", 0x18000, 0x8000, CRC(ad275654) SHA1(7d29a17132adb19aeee9b98be5b76bd6e91f308e) ) // 3.3r
+ ROM_LOAD( "nk2_04.rom", 0x20000, 0x8000, CRC(e7692a77) SHA1(84beb8b02c564bffa9cc00313214e8f109bd40f9) ) // 4.3p
+ ROM_LOAD( "nk2_05.bin", 0x28000, 0x8000, CRC(960725fb) SHA1(160c8bfaf089cbeeef2023f12379793079bff93b) ) // 5.3m
+
+ ROM_REGION( 2*0x10000, "soundcpu", 0 )
+ ROM_LOAD( "nk2_06.bin", 0x10000, 0x8000, CRC(7bfe6c9e) SHA1(aef8cbeb0024939bf65f77113a5cf777f6613722) ) // decrypted opcodes
+ ROM_CONTINUE( 0x00000, 0x8000 ) // decrypted data
+
+ ROM_REGION( 0x2000, "user1", 0 ) /* MC8123 key */
+ ROM_LOAD( "ninjakd2.key", 0x0000, 0x2000, CRC(ec25318f) SHA1(619da3f69f9919e1457f79ee1d38e7ec80c4ebb0) )
+
+ ROM_REGION( 0x08000, "gfx1", 0 ) // fg tiles (need lineswapping)
+ ROM_LOAD( "jt_104_12.bin", 0x00000, 0x08000, CRC(c038fadb) SHA1(59e9b125ead3e9bdc9d66de75dffd58956eb922e) ) // this rom contains the new title / license
+
+ ROM_REGION( 0x20000, "gfx2", 0 ) // sprites (need lineswapping)
+ ROM_LOAD( "nk2_08.rom", 0x00000, 0x10000, CRC(1b79c50a) SHA1(8954bc51cb9fbbe16b09381f35c84ccc56a803f3) )
+ ROM_LOAD( "nk2_07.rom", 0x10000, 0x10000, CRC(0be5cd13) SHA1(8f94a8fef6668aaf13329715fee81302dbd6c685) )
+
+ ROM_REGION( 0x20000, "gfx3", 0 ) // bg tiles (need lineswapping)
+ ROM_LOAD( "nk2_11.rom", 0x00000, 0x10000, CRC(41a714b3) SHA1(b05f48d71a9837914c12c13e0b479c8a6dc8c25e) )
+ ROM_LOAD( "nk2_10.rom", 0x10000, 0x10000, CRC(c913c4ab) SHA1(f822c5621b3e32c1a284f6367bdcace81c1c74b3) )
+
+ ROM_REGION( 0x10000, "pcm", 0 )
+ ROM_LOAD( "nk2_09.rom", 0x0000, 0x10000, CRC(c1d2d170) SHA1(0f325815086fde90fd85360d3660042b0b68ba96) ) // unsigned 8-bit pcm samples
+ROM_END
+
+
ROM_START( mnight )
ROM_REGION( 0x30000, "maincpu", 0 )
ROM_LOAD( "mn6-j19.bin", 0x00000, 0x8000, CRC(56678d14) SHA1(acf3a97ca29db8ab9cad69599c5567464af3ae44) )
@@ -1490,7 +1531,8 @@ DRIVER_INIT_MEMBER(ninjakd2_state,robokidj)
GAME( 1987, ninjakd2, 0, ninjakd2, ninjakd2, ninjakd2_state, ninjakd2, ROT0, "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 1)", GAME_SUPPORTS_SAVE )
GAME( 1987, ninjakd2a, ninjakd2, ninjakd2, ninjakd2, ninjakd2_state, bootleg, ROT0, "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 2, bootleg?)", GAME_SUPPORTS_SAVE )
GAME( 1987, ninjakd2b, ninjakd2, ninjakd2, rdaction, ninjakd2_state, bootleg, ROT0, "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 3, bootleg?)", GAME_SUPPORTS_SAVE )
-GAME( 1987, rdaction, ninjakd2, ninjakd2, rdaction, ninjakd2_state, ninjakd2, ROT0, "UPL (World Games license)", "Rad Action / NinjaKun Ashura no Shou", GAME_SUPPORTS_SAVE )
+GAME( 1987, rdaction, ninjakd2, ninjakd2, rdaction, ninjakd2_state, ninjakd2, ROT0, "UPL (World Games license)", "Rad Action / NinjaKun Ashura no Shou", GAME_SUPPORTS_SAVE )
+GAME( 1987, jt104, ninjakd2, ninjakd2, rdaction, ninjakd2_state, bootleg, ROT0, "UPL (United Amusements license)", "JT-104 (title screen modification of Rad Action)", GAME_SUPPORTS_SAVE )
GAME( 1987, mnight, 0, mnight, mnight, ninjakd2_state, mnight, ROT0, "UPL (Kawakus license)", "Mutant Night", GAME_SUPPORTS_SAVE )
GAME( 1988, arkarea, 0, arkarea, arkarea, ninjakd2_state, mnight, ROT0, "UPL", "Ark Area", GAME_SUPPORTS_SAVE )
GAME( 1988, robokid, 0, robokid, robokid, ninjakd2_state, robokid, ROT0, "UPL", "Atomic Robo-kid", GAME_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/pcxt.c b/src/mame/drivers/pcxt.c
index 2b1f984da8a..b8971ada485 100644
--- a/src/mame/drivers/pcxt.c
+++ b/src/mame/drivers/pcxt.c
@@ -685,7 +685,7 @@ void pcxt_state::machine_reset()
m_lastvalue = -1;
m_pc_spkrdata = 0;
- m_pit_out2 = 0;
+ m_pit_out2 = 1;
m_wss2_data = 0;
m_speaker->level_w(0);
}
diff --git a/src/mame/drivers/peplus.c b/src/mame/drivers/peplus.c
index f85142c8335..38fa2795d86 100644
--- a/src/mame/drivers/peplus.c
+++ b/src/mame/drivers/peplus.c
@@ -10,10 +10,6 @@
--- Technical Notes ---
- Name: Player's Edge Plus (PP0516) Double Bonus Draw Poker.
- Company: IGT - International Game Technology
- Year: 1987
-
Hardware:
CPU = INTEL 80C32 ; I8052 compatible
@@ -45,7 +41,7 @@ Additional notes
1) What are "set chips" ?
- They are meant to be used after you have already sucessfully put a new game in your machine.
+ They are meant to be used after you have already successfully put a new game in your machine.
Lets say you have 'pepp0516' installed and you go through the setup. In a real machine,
you may want to add a bill validator. The only way to do that is to un-socket the 'pepp0516'
chip and put in the 'peset038' chip and then reboot the machine. Then this chip's program
@@ -102,12 +98,9 @@ Additional notes
3a) About the "autohold" feature
- Depending on laws which vary from cities/country, this feature can available or not in the
- "operator mode". By default, it isn't available. To have this feature available in the
- "operator mode", a new chip has to be burnt with a bit set and a new checksum (game ID
- doesn't change though). Each program rom requires a specific address to be set to 0x01
- to enable this option. It is beyond the scope of this driver to provide that information
- for each set that is supported. Only PP0197 & PP0419 have support for Autohold enabled.
+ Depending on local laws which vary from one jurisdiction to another, this feature may be
+ available in the "operator mode". This requires a specific build for said jurisdiction.
+ Currently the only dumped sets with the Auto Hold feature enabled are PP0197 & PP0419.
Stephh's log (2007.11.28) :
@@ -149,9 +142,11 @@ Super PE+
XnnnnnnP Poker Data. Contains poker game + paytable percentages
Data roms will not work with every Program rom. Incompatible combos report: Incompatible Data EPROM
X000055P is a good example, it works with 19 XP000xxx Program roms. Others may be as few as 2.
- XMPnnnnn Multi-Poker Programs. Different options for each set, but all use the same XMnnnnnP data roms
- XMP00002 through XMP00006 & XMP00024 Use the XM000xxP Poker Data
+ XMPnnnnn Multi-Poker Programs. Different options for each set, but all use the same XMnnnnnP data
+ XMP00002 through XMP00006 & XMP00024 Use the XM000xxP Multi-Poker Data
XMP00014, XMP00017 & XMP00030 Use the WING Board add-on and use the XnnnnnnP Poker Data (Not all are compatible!)
+ XMP00013, XMP00022 & XMP00026 Use the WING Board add-on & CG2346 + CAPX2346 for Spanish paytables
+ XMP00025 Uses the Wing Board add-on and is for the International markets. Auto Hold always enabled.
XMnnnnnP Multi-Poker Data. Contains poker games + paytable percentages: Requires specific CG graphics + CAP color prom
XKnnnnnn Spot Keno Programs. Different options for each set, but all use the same XnnnnnnK data roms
XnnnnnnK Spot Keno Data. Uses CG2120 with CAP1267
@@ -308,11 +303,6 @@ protected:
static const UINT8 id_022[8] = { 0x00, 0x01, 0x04, 0x09, 0x13, 0x16, 0x18, 0x00 };
static const UINT16 id_023[8] = { 0x4a6c, 0x4a7b, 0x4a4b, 0x4a5a, 0x4a2b, 0x4a0a, 0x4a19, 0x4a3a };
-#define MASTER_CLOCK XTAL_20MHz
-#define CPU_CLOCK ((MASTER_CLOCK)/2) /* divided by 2 - 7474 */
-#define MC6845_CLOCK ((MASTER_CLOCK)/8/3)
-#define SOUND_CLOCK ((MASTER_CLOCK)/12)
-
/**************
* Memory Copy *
@@ -1297,7 +1287,7 @@ void peplus_state::machine_reset()
static MACHINE_CONFIG_START( peplus, peplus_state )
// basic machine hardware
- MCFG_CPU_ADD("maincpu", I80C32, CPU_CLOCK)
+ MCFG_CPU_ADD("maincpu", I80C32, XTAL_20MHz/2) /* 10MHz */
MCFG_CPU_PROGRAM_MAP(peplus_map)
MCFG_CPU_IO_MAP(peplus_iomap)
@@ -1315,7 +1305,7 @@ static MACHINE_CONFIG_START( peplus, peplus_state )
MCFG_PALETTE_ADD("palette", 16*16*2)
MCFG_PALETTE_INIT_OWNER(peplus_state, peplus)
- MCFG_MC6845_ADD("crtc", R6545_1, "screen", MC6845_CLOCK)
+ MCFG_MC6845_ADD("crtc", R6545_1, "screen", XTAL_20MHz/8/3)
MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(8)
MCFG_MC6845_ADDR_CHANGED_CB(peplus_state, crtc_addr)
@@ -1326,7 +1316,7 @@ static MACHINE_CONFIG_START( peplus, peplus_state )
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("aysnd", AY8912, SOUND_CLOCK)
+ MCFG_SOUND_ADD("aysnd", AY8912, XTAL_20MHz/12)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
MACHINE_CONFIG_END
@@ -1379,7 +1369,7 @@ DRIVER_INIT_MEMBER(peplus_state,peplussbw)
* Rom Load *
*************************/
-ROM_START( peset001 ) /* Normal board : Set Chip (Set001) - Use for PP0542 */
+ROM_START( peset001 ) /* Normal board : Set Chip (Set001) - PE+ Set Denomination */
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "set001.u68", 0x00000, 0x10000, CRC(03397ced) SHA1(89d8ba7e6706e6d34ae9aae09a8a631fff06a36f) )
@@ -1393,7 +1383,23 @@ ROM_START( peset001 ) /* Normal board : Set Chip (Set001) - Use for PP0542 */
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( peset038 ) /* Normal board : Set Chip (Set038) */
+ROM_START( peset004 ) /* Normal board : Set Chip (Set004) - PE+ Set Denomination / Enable Validator */
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "set004.u68", 0x00000, 0x10000, CRC(b5729571) SHA1(fa3bb1fec81692a898213f9521ac0b2a4d1a8968) )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
+ ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
+ ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
+ ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ROM_END
+
+/* Known to exsist SET033 - PE+ Set Denomination / Enable Validator / SAS 4.0 */
+
+ROM_START( peset038 ) /* Normal board : Set Chip (Set038) - PE+ Set Denomination / Enable Validator */
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "set038.u68", 0x00000, 0x10000, CRC(9c4b1d1a) SHA1(8a65cd1d8e2d74c7b66f4dfc73e7afca8458e979) )
@@ -1407,6 +1413,21 @@ ROM_START( peset038 ) /* Normal board : Set Chip (Set038) */
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
+ROM_START( peivc006 ) /* Normal board : Clear Chip (IVC006) - PE+ Clear CMOS / E-Square */
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ivc006.u68", 0x00000, 0x8000, CRC(9a408727) SHA1(cc2d9ba66c461ae81f9fae1e068981d8de093416) ) /* 27C256 EPROM */
+ ROM_RELOAD( 0x08000, 0x8000)
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
+ ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
+ ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
+ ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ROM_END
+
ROM_START( pepk1024 ) /* Normal (non-plus) board : Aces and Faces 4 of a Kind Bonus Poker (PK1024) */
/*
2-10 J-A
@@ -4597,6 +4618,20 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap656.u50", 0x0000, 0x0100, CRC(038cabc6) SHA1(c6514b4f9dbed6ab2631f563f7e00648661ebdbb) )
ROM_END
+ROM_START( pemg0252 ) /* Normal board : Player's Choice Multi-Game MG0252 - Requires a Printer (not yet supported) */
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "mg0252.u68", 0x00000, 0x10000, CRC(1d0ba4f1) SHA1(f906a11d171318a06fb0bb09783bd8e3b99f1ca9) ) /* Stalls with "PRINTER ERROR" */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2076.u72", 0x00000, 0x8000, CRC(84634f0e) SHA1(8f1b9aaa92e861f00569053c1112c2fb7eb577e8) )
+ ROM_LOAD( "mgo-cg2076.u73", 0x08000, 0x8000, CRC(cd5dad56) SHA1(60c61f107860151c31be61504eb42fa93d0d41d9) )
+ ROM_LOAD( "mbo-cg2076.u74", 0x10000, 0x8000, CRC(cda4ac28) SHA1(84a722f782563f713978403cd6b21492252721cf) )
+ ROM_LOAD( "mxo-cg2076.u75", 0x18000, 0x8000, CRC(8e087d93) SHA1(25172001f5e0221aeda52fd51f4605eed24df806) )
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap1426.u50", 0x0000, 0x0100, CRC(6c7c3462) SHA1(b5481b548f4db460d27a4bfebb08188f36ca0c11) )
+ROM_END
+
ROM_START( pebe0014 ) /* Normal board : Blackjack (BE0014) */
/*
Paytable ID: BJ7
@@ -4643,6 +4678,21 @@ Known to exist:
ROM_LOAD( "cap707.u50", 0x0000, 0x0100, CRC(9851ba36) SHA1(5a0a43c1e212ae8c173102ede9c57a3d95752f99) )
ROM_END
+ROM_START( peke0017 ) /* Normal board : Keno 1-10 Spot (KE0017) */
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ke0017_560-a07.u68", 0x00000, 0x08000, CRC(a0f70116) SHA1(15808cd3245e2e5934f3365f95590da0be552e8b) ) /* Game Version: 560, Library Version: A07 */
+ ROM_RELOAD( 0x08000, 0x8000) /* 32K version built using earlier gaming libraries */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg1016.u72", 0x00000, 0x8000, CRC(92072064) SHA1(ccd12303afb559a57f135f5feff1eada4394c45b) )
+ ROM_LOAD( "mgo-cg1016.u73", 0x08000, 0x8000, CRC(fd54f031) SHA1(0990338d00574d798bed2c13ed2cf65118698a65) )
+ ROM_LOAD( "mbo-cg1016.u74", 0x10000, 0x8000, CRC(6325ff0b) SHA1(cca693b42d458024d11badf02923f0aedc5252ba) )
+ ROM_LOAD( "mxo-cg1016.u75", 0x18000, 0x8000, CRC(54345a8c) SHA1(928f1633343a1d81ef193ebd09de0d36c52057ca) )
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap1016.u50", 0x0000, 0x0100, CRC(12e1be25) SHA1(501487bc729eb80fcf9e61705d3546de5e0d7cde) )
+ROM_END
+
ROM_START( peke1012 ) /* Normal board : Keno 1-10 Spot (KE1012) - Payout 90.27%, Paytable 90-P */
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "ke1012_576-a3u.u68", 0x00000, 0x10000, CRC(470e8c10) SHA1(f8a65a3a73477e9e9d2f582eeefa93b470497dfa) ) /* Game Version: 576, Library Version: A3U */
@@ -8716,8 +8766,10 @@ ROM_END
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
/* Set chips */
-GAMEL(1987, peset001, 0, peplus, peplus_schip, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (Set001) Set Chip", 0, layout_pe_schip )
-GAMEL(1987, peset038, 0, peplus, peplus_schip, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (Set038) Set Chip", 0, layout_pe_schip )
+GAMEL(1987, peset001, 0, peplus, peplus_schip, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (SET001) Set Chip", 0, layout_pe_schip )
+GAMEL(1987, peset004, 0, peplus, peplus_schip, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (SET004) Set Chip", 0, layout_pe_schip )
+GAMEL(1987, peset038, 0, peplus, peplus_schip, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (SET038) Set Chip", 0, layout_pe_schip )
+GAMEL(1987, peivc006, 0, peplus, peplus_schip, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (IVC006) Clear EEPROM Chip", 0, layout_pe_schip )
/* Normal (non-plus) board : Poker */
GAMEL(1987, pepk1024, 0, peplus, nonplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge (PK1024) Aces and Faces Bonus Poker", 0, layout_pe_poker )
@@ -8734,10 +8786,10 @@ GAMEL(1987, pepp0023, pepp0002, peplus, peplus_poker, peplus_state, nonplus,
GAMEL(1987, pepp0040, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0040) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0041, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0041) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0043, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0043) 10's or Better", 0, layout_pe_poker )
-GAMEL(1987, pepp0043a, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0043) 10's or Better (International)", 0, layout_pe_poker )
+GAMEL(1987, pepp0043a, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0043) 10's or Better (International)",0, layout_pe_poker )
GAMEL(1987, pepp0045, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0045) 10's or Better", 0, layout_pe_poker )
GAMEL(1987, pepp0046, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0046) 10's or Better (set 1)", 0, layout_pe_poker )
-GAMEL(1987, pepp0046a, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0046) 10's or Better (International)", 0, layout_pe_poker )
+GAMEL(1987, pepp0046a, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0046) 10's or Better (International)",0, layout_pe_poker )
GAMEL(1987, pepp0046b, pepp0002, peplus, peplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0046) 10's or Better (set 2)", 0, layout_pe_poker )
GAMEL(1987, pepp0051, pepp0053, peplus, peplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0051) Joker Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0053, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0053) Joker Poker (Aces or Better)", 0, layout_pe_poker )
@@ -8762,10 +8814,10 @@ GAMEL(1987, pepp0125, pepp0055, peplus, peplus_poker, peplus_state, nonplus,
GAMEL(1987, pepp0126, pepp0055, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0126) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0127, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0127) Deuces Joker Wild Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0127a, pepp0127, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0127) Deuces Joker Wild Poker (International)", 0, layout_pe_poker )
-GAMEL(1987, pepp0158, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 1)", 0, layout_pe_poker )
-GAMEL(1987, pepp0158a, pepp0158, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 2)", 0, layout_pe_poker )
-GAMEL(1987, pepp0158b, pepp0158, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 3)", 0, layout_pe_poker )
-GAMEL(1987, pepp0158c, pepp0158, peplus, peplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 4)", 0, layout_pe_poker )
+GAMEL(1987, pepp0158, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 1)", 0, layout_pe_poker )
+GAMEL(1987, pepp0158a, pepp0158, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 2)", 0, layout_pe_poker )
+GAMEL(1987, pepp0158b, pepp0158, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 3)", 0, layout_pe_poker )
+GAMEL(1987, pepp0158c, pepp0158, peplus, peplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 4)", 0, layout_pe_poker )
GAMEL(1987, pepp0159, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0159) Standard Draw Poker (International)", 0, layout_pe_poker )
GAMEL(1987, pepp0171, pepp0053, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0171) Joker Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0171a, pepp0053, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0171) Joker Poker (International)", 0, layout_pe_poker )
@@ -8790,8 +8842,8 @@ GAMEL(1987, pepp0230, pepp0002, peplus, peplus_poker, peplus_state, peplus,
GAMEL(1987, pepp0242, pepp0055, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0242) Deuces Wild Poker (International English/Spanish)", 0, layout_pe_poker )
GAMEL(1987, pepp0249, pepp0055, peplus, peplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0249) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0250, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0250) Double Down Stud Poker", 0, layout_pe_poker )
-GAMEL(1987, pepp0265, pepp0158, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0265) 4 of a Kind Bonus Poker (set 1)", 0, layout_pe_poker )
-GAMEL(1987, pepp0265a, pepp0158, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0265) 4 of a Kind Bonus Poker (set 2)", 0, layout_pe_poker )
+GAMEL(1987, pepp0265, pepp0158, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0265) 4 of a Kind Bonus Poker (set 1)", 0, layout_pe_poker )
+GAMEL(1987, pepp0265a, pepp0158, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0265) 4 of a Kind Bonus Poker (set 2)", 0, layout_pe_poker )
GAMEL(1987, pepp0265b, pepp0158, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0265) 4 of a Kind Bonus Poker (International)", 0, layout_pe_poker )
GAMEL(1987, pepp0274, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0274) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0288, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0288) Standard Draw Poker (Spanish)", 0, layout_pe_poker )
@@ -8818,7 +8870,7 @@ GAMEL(1987, pepp0454, pepp0434, peplus, peplus_poker, peplus_state, peplus,
GAMEL(1987, pepp0455, pepp0053, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0455) Joker Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0458, pepp0053, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0458) Joker Poker (Aces or Better)", 0, layout_pe_poker )
GAMEL(1985, pepp0488, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0488) Standard Draw Poker (Arizona Charlie's)", 0, layout_pe_poker )
-GAMEL(1987, pepp0508, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0508) Loose Deuce Deuces Wild! Poker", 0, layout_pe_poker )
+GAMEL(1987, pepp0508, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0508) Loose Deuce Deuces Wild! Poker",0, layout_pe_poker )
GAMEL(1987, pepp0509, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0509) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0510, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0510) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0514, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0514) Double Bonus Poker (set 1)", 0, layout_pe_poker )
@@ -8850,7 +8902,7 @@ GAMEL(1987, pepp0816, 0, peplus, peplus_poker, peplus_state, peplus,
GAMEL(1987, peip0028, 0, peplus, peplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (IP0028) Joker Poker - French", 0, layout_pe_poker )
GAMEL(1987, peip0029, peip0028, peplus, peplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (IP0029) Joker Poker - French", 0, layout_pe_poker )
GAMEL(1987, peip0031, 0, peplus, peplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (IP0031) Standard Draw Poker - French", 0, layout_pe_poker )
-GAMEL(1987, peip0041, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (IP0041) Double Deuces Wild Poker - French", 0, layout_pe_poker )
+GAMEL(1987, peip0041, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (IP0041) Double Deuces Wild Poker - French", 0, layout_pe_poker )
GAMEL(1987, peip0051, peip0028, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (IP0051) Joker Poker - French", 0, layout_pe_poker )
GAMEL(1987, peip0058, peip0031, peplus, peplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (IP0058) Standard Draw Poker - French", 0, layout_pe_poker )
GAMEL(1987, peip0062, peip0028, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (IP0062) Joker Poker - French", 0, layout_pe_poker )
@@ -8868,114 +8920,118 @@ GAMEL(1987, peip0116, peip0031, peplus, peplus_poker, peplus_state, nonplus,
GAMEL(1987, peip0118, peip0031, peplus, peplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (IP0118) Standard Draw Poker - French", 0, layout_pe_poker )
GAMEL(1987, peip0120, peip0031, peplus, peplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (IP0120) Standard Draw Poker - French", 0, layout_pe_poker )
+/* Normal board : Multi-Game - Player's Choice - Some sets require a printer (not yet supported) */
+GAMEL(1994, pemg0252, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Choice (MG0252) Multi-Game", GAME_NOT_WORKING, layout_pe_poker) /* Needs printer support */
+
/* Normal board : Blackjack */
-GAMEL(1994, pebe0014, 0, peplus, peplus_bjack, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (BE0014) Blackjack", 0, layout_pe_bjack )
+GAMEL(1994, pebe0014, 0, peplus, peplus_bjack, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (BE0014) Blackjack", 0, layout_pe_bjack )
/* Normal board : Keno */
-GAMEL(1994, peke1012, 0, peplus, peplus_keno, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE1012) Keno", 0, layout_pe_keno )
-GAMEL(1994, peke1013, peke1012, peplus, peplus_keno, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE1013) Keno", 0, layout_pe_keno )
+GAMEL(1994, peke0017, 0, peplus, peplus_keno, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE0017) Keno", GAME_NOT_WORKING, layout_pe_keno )
+GAMEL(1994, peke1012, 0, peplus, peplus_keno, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE1012) Keno", 0, layout_pe_keno )
+GAMEL(1994, peke1013, peke1012, peplus, peplus_keno, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE1013) Keno", 0, layout_pe_keno )
/* Normal board : Slots machine */
-GAMEL(1996, peps0014, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0014) Super Joker Slots", 0, layout_pe_slots )
-GAMEL(1996, peps0021, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0021) Red White & Blue Slots", 0, layout_pe_slots )
-GAMEL(1996, peps0022, peps0021, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0022) Red White & Blue Slots", 0, layout_pe_slots )
-GAMEL(1996, peps0042, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0042) Double Diamond Slots", 0, layout_pe_slots )
-GAMEL(1996, peps0043, peps0042, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0043) Double Diamond Slots", 0, layout_pe_slots )
-GAMEL(1996, peps0045, peps0021, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0045) Red White & Blue Slots", 0, layout_pe_slots )
-GAMEL(1996, peps0047, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0047) Wild Cherry Slots", GAME_NOT_WORKING, layout_pe_slots ) /* Needs MxO-CG1004.Uxx graphics roms redumped */
-GAMEL(1996, peps0092, peps0047, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0092) Wild Cherry Slots", GAME_NOT_WORKING, layout_pe_slots ) /* Needs MxO-CG1004.Uxx graphics roms redumped */
-GAMEL(1996, peps0206, peps0021, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0206) Red White & Blue Slots", 0, layout_pe_slots )
-GAMEL(1996, peps0207, peps0021, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0207) Red White & Blue Slots", 0, layout_pe_slots )
-GAMEL(1996, peps0296, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0296) Haywire Slots", 0, layout_pe_slots )
-GAMEL(1996, peps0298, peps0042, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0298) Double Diamond Slots", 0, layout_pe_slots )
-GAMEL(1996, peps0308, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0308) Double Jackpot Slots", 0, layout_pe_slots )
-GAMEL(1996, peps0364, peps0021, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0364) Red White & Blue Slots", 0, layout_pe_slots )
-GAMEL(1996, peps0426, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0426) Sizzling Sevens Slots", 0, layout_pe_slots )
-GAMEL(1996, peps0581, peps0021, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0581) Red White & Blue Slots", 0, layout_pe_slots )
-GAMEL(1996, peps0615, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0615) Chaos Slots", 0, layout_pe_slots )
-GAMEL(1996, peps0631, peps0021, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0631) Red White & Blue Slots", 0, layout_pe_slots )
-GAMEL(1996, peps0716, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0716) River Gambler Slots", 0, layout_pe_slots )
+GAMEL(1996, peps0014, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0014) Super Joker Slots", 0, layout_pe_slots )
+GAMEL(1996, peps0021, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0021) Red White & Blue Slots", 0, layout_pe_slots )
+GAMEL(1996, peps0022, peps0021, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0022) Red White & Blue Slots", 0, layout_pe_slots )
+GAMEL(1996, peps0042, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0042) Double Diamond Slots", 0, layout_pe_slots )
+GAMEL(1996, peps0043, peps0042, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0043) Double Diamond Slots", 0, layout_pe_slots )
+GAMEL(1996, peps0045, peps0021, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0045) Red White & Blue Slots", 0, layout_pe_slots )
+GAMEL(1996, peps0047, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0047) Wild Cherry Slots", GAME_NOT_WORKING, layout_pe_slots ) /* Needs MxO-CG1004.Uxx graphics roms redumped */
+GAMEL(1996, peps0092, peps0047, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0092) Wild Cherry Slots", GAME_NOT_WORKING, layout_pe_slots ) /* Needs MxO-CG1004.Uxx graphics roms redumped */
+GAMEL(1996, peps0206, peps0021, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0206) Red White & Blue Slots", 0, layout_pe_slots )
+GAMEL(1996, peps0207, peps0021, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0207) Red White & Blue Slots", 0, layout_pe_slots )
+GAMEL(1996, peps0296, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0296) Haywire Slots", 0, layout_pe_slots )
+GAMEL(1996, peps0298, peps0042, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0298) Double Diamond Slots", 0, layout_pe_slots )
+GAMEL(1996, peps0308, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0308) Double Jackpot Slots", 0, layout_pe_slots )
+GAMEL(1996, peps0364, peps0021, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0364) Red White & Blue Slots", 0, layout_pe_slots )
+GAMEL(1996, peps0426, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0426) Sizzling Sevens Slots", 0, layout_pe_slots )
+GAMEL(1996, peps0581, peps0021, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0581) Red White & Blue Slots", 0, layout_pe_slots )
+GAMEL(1996, peps0615, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0615) Chaos Slots", 0, layout_pe_slots )
+GAMEL(1996, peps0631, peps0021, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0631) Red White & Blue Slots", 0, layout_pe_slots )
+GAMEL(1996, peps0716, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0716) River Gambler Slots", 0, layout_pe_slots )
/* Superboard : Poker */
GAMEL(1995, pex0002p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000002P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1995, pex0002pa, pex0002p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000002P+XP000109) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1995, pex0040p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000040P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0045p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000045P+XP000038) 10's or Better", 0, layout_pe_poker )
-GAMEL(1995, pex0046p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000046P+XP000038) 10's or Better", 0, layout_pe_poker )
+GAMEL(1995, pex0045p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000045P+XP000038) 10's or Better", 0, layout_pe_poker )
+GAMEL(1995, pex0046p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000046P+XP000038) 10's or Better", 0, layout_pe_poker )
GAMEL(1995, pex0053p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000053P+XP000038) Joker Poker (Aces or Better)", 0, layout_pe_poker )
-GAMEL(1995, pex0054p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000054P+XP000038) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000019) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0054p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000054P+XP000038) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000019) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0055pa, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000022) Deuces Wild Poker (The Orleans)", 0, layout_pe_poker )
GAMEL(1995, pex0055pb, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000023) Deuces Wild Poker (The Fun Ships)", 0, layout_pe_poker )
-GAMEL(1995, pex0055pc, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000028) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055pd, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000035) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055pe, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000038) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055pf, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000040) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055pg, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055ph, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000055) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055pi, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000063) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055pj, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000075) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055pk, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000079) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055pl, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000094) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055pm, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000095) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055pn, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000098) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055po, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000102) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055pp, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000104) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055pq, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000112) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055pr, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000126) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pc, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000028) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pd, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000035) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pe, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000038) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pf, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000040) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pg, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055ph, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000055) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pi, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000063) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pj, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000075) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pk, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000079) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pl, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000094) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pm, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000095) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pn, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000098) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055po, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000102) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pp, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000104) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pq, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000112) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pr, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000126) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0060p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000060P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0124p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000124P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0124p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000124P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0150p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000150P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1995, pex0158p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000158P+XP000038) 4 of a Kind Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0171p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000171P+XP000038) Joker Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0171p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000171P+XP000038) Joker Poker", 0, layout_pe_poker )
GAMEL(1995, pex0188p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000188P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0190p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000190P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0190p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000190P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0197p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000197P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1995, pex0203p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000203P+XP000038) 4 of a Kind Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0224p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000224P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0224p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000224P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0225p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000225P+XP000079) Dueces Joker Wild Poker", 0,layout_pe_poker )
-GAMEL(1995, pex0242p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000242P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0242p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000242P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0265p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000265P+XP000038) 4 of a Kind Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0291p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000291P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0417p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000417P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0291p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000291P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0417p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000417P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0430p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000430P+XP000079) Dueces Joker Wild Poker", 0,layout_pe_poker )
-GAMEL(1995, pex0434p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000434P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
+GAMEL(1995, pex0434p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000434P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
GAMEL(1995, pex0447p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000447P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1995, pex0449p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000449P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0451p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000451P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
+GAMEL(1995, pex0451p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000451P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
GAMEL(1995, pex0452p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000452P+XP000038) Double Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0454p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000454P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
+GAMEL(1995, pex0454p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000454P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
GAMEL(1995, pex0458p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000458P+XP000038) Joker Poker (Aces or Better)", 0, layout_pe_poker )
-GAMEL(1995, pex0459p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000459P+XP000038) Joker Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0459pa, pex0459p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000459P+XP000155) Joker Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0459p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000459P+XP000038) Joker Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0459pa, pex0459p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000459P+XP000155) Joker Poker", 0, layout_pe_poker )
GAMEL(1995, pex0508p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000508P+XP000038) Loose Deuce Deuces Wild! Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0514p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000514P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0515p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000515P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0516p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000516P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0536p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000536P+XP000038) Joker Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0514p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000514P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0515p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000515P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0516p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000516P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0536p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000536P+XP000038) Joker Poker", 0, layout_pe_poker )
GAMEL(1995, pex0537p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000537P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1995, pex0550p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000550P+XP000055) Joker Poker (Two Pair or Better)", 0, layout_pe_poker )
-GAMEL(1995, pex0568p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000568P+XP000038) Joker Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0568p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000568P+XP000038) Joker Poker", 0, layout_pe_poker )
GAMEL(1995, pex0581p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000581P+XP000038) 4 of a Kind Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0588p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000588P+XP000038) Joker Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0725p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000725P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0726p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000726P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0727p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000727P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0588p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000588P+XP000038) Joker Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0725p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000725P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0726p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000726P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0727p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000727P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex0763p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000763P+XP000038) 4 of a Kind Bonus Poker", 0,layout_pe_poker )
GAMEL(1995, pex2018p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002018P+XP000038) Full House Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2025p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002025P+XP000019) Deuces Wild Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2026p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002026P+XP000019) Deuces Wild Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2027p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002027P+XP000019) Deuces Wild Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2029p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002029P+XP000019) Deuces Wild Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2031p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002031P+XP000112) Lucky Deal Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2031p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002031P+XP000112) Lucky Deal Poker", 0, layout_pe_poker )
GAMEL(1995, pex2035p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002035P+XP000112) White Hot Aces Poker", 0, layout_pe_poker )
GAMEL(1995, pex2036p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002036P+XP000112) White Hot Aces Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2038p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002038P+XP000038) Nevada Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2040p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002040P+XP000038) Nevada Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2042p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002042P+XP000038) Triple Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2043p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002043P+XP000038) Triple Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2044p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002044P+XP000038) Triple Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2045p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002045P+XP000038) Triple Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2038p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002038P+XP000038) Nevada Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2040p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002040P+XP000038) Nevada Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2042p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002042P+XP000038) Triple Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2043p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002043P+XP000038) Triple Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2044p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002044P+XP000038) Triple Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2045p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002045P+XP000038) Triple Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2066p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002066P+XP000038) Double Double Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2067p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002067P+XP000038) Double Double Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2068p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002068P+XP000038) Double Double Bonus Poker", 0, layout_pe_poker )
@@ -8984,21 +9040,21 @@ GAMEL(1995, pex2070p, 0, peplus, peplus_poker, peplus_state, peplussb,
GAMEL(1995, pex2121p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002121P+XP000038) Standard Draw Poker", 0,layout_pe_poker )
GAMEL(1995, pex2121pa, pex2121p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002121P+XP000037) Standard Draw Poker", 0,layout_pe_poker )
GAMEL(1995, pex2150p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002150P+XP000038) 4 of a Kind Bonus Poker", 0,layout_pe_poker )
-GAMEL(1995, pex2172p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002172P+XP000112) Ace$ Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2173p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002173P+XP000038) Ace$ Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2180p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002180P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2172p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002172P+XP000112) Ace$ Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2173p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002173P+XP000038) Ace$ Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2180p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002180P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2241p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002241P+XP000079) 4 of a Kind Bonus Poker", 0,layout_pe_poker )
-GAMEL(1995, pex2244p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002244P+XP000079) Double Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2244p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002244P+XP000079) Double Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2245p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002245P+XP000055) Standard Draw Poker", 0,layout_pe_poker )
GAMEL(1995, pex2245pa, pex2245p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002245P+XP000079) Standard Draw Poker", 0,layout_pe_poker )
-GAMEL(1995, pex2250p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002250P+XP000050) Shockwave Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2251p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002251P+XP000050) Shockwave Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2250p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002250P+XP000050) Shockwave Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2251p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002251P+XP000050) Shockwave Poker", 0, layout_pe_poker )
GAMEL(1995, pex2272p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002272P+XP000055) Black Jack Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2275p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002275P+XP000055) Black Jack Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2276p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002276P+XP000055) Black Jack Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2283p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002283P+XP000057) Dealt Deuces Wild Bonus Poker", 0, layout_pe_poker ) /* Undumped color CAP but should have correct colors anyways */
GAMEL(1995, pex2284p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002284P+XP000057) Barbaric Decues Wild Bonus Poker", 0, layout_pe_poker ) /* Undumped color CAP but should have correct colors anyways */
-GAMEL(1995, pex2302p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002302P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
+GAMEL(1995, pex2302p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002302P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
GAMEL(1995, pex2303p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002303P+XP000112) White Hot Aces Poker", 0, layout_pe_poker )
GAMEL(1995, pex2306p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002306P+XP000112) Triple Double Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2307p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002307P+XP000112) Triple Double Bonus Poker", 0, layout_pe_poker )
@@ -9010,7 +9066,7 @@ GAMEL(1995, pex2377p, 0, peplus, peplus_poker, peplus_state, peplussb,
GAMEL(1995, pex2419p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002419P+XP000064) Deuces Wild Bonus Poker - French", 0, layout_pe_poker )
GAMEL(1995, pex2420p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002420P+XP000064) Deuces Wild Bonus Poker - French", 0, layout_pe_poker )
GAMEL(1995, pex2421p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002421P+XP000064) Deuces Wild Bonus Poker - French", 0, layout_pe_poker )
-GAMEL(1995, pex2440p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002440P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2440p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002440P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex2461p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002461P+XP000055) Joker Poker (Two Pair or Better)", 0, layout_pe_poker )
/* Superboard : Poker (Key On Credit) */
@@ -9046,7 +9102,7 @@ GAMEL(1995, pexmp026, 0, peplus, peplus_poker, peplus_state, peplussbw,
GAMEL(1995, pexmp030, 0, peplus, peplus_poker, peplus_state, peplussbw,ROT0, "IGT - International Game Technology", "Player's Edge Plus (XMP00030) 5-in-1 Wingboard (CG2426)", 0, layout_pe_poker )
/* Superboard : Slots machine */
-GAMEL(1997, pex0838s, 0, peplus, peplus_slots, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000838S+XS000002) Five Times Pay Slots", 0, layout_pe_slots )
-GAMEL(1997, pex0841s, pex0838s, peplus, peplus_slots, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000841S+XS000002) Five Times Pay Slots", 0, layout_pe_slots )
+GAMEL(1997, pex0838s, 0, peplus, peplus_slots, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000838S+XS000002) Five Times Pay Slots", 0, layout_pe_slots )
+GAMEL(1997, pex0841s, pex0838s, peplus, peplus_slots, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000841S+XS000002) Five Times Pay Slots", 0, layout_pe_slots )
GAMEL(1997, pex0998s, 0, peplus, peplus_slots, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000998S+XS000006) Triple Triple Diamond Slots", 0, layout_pe_slots )
GAMEL(1997, pex1087s, 0, peplus, peplus_slots, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X001087S+XS000006) Double Double Diamond Slots", GAME_IMPERFECT_GRAPHICS, layout_pe_slots ) /* CAPX2415 not dumped */
diff --git a/src/mame/drivers/pgm.c b/src/mame/drivers/pgm.c
index 6cb8a8bc532..a437b9aff13 100644
--- a/src/mame/drivers/pgm.c
+++ b/src/mame/drivers/pgm.c
@@ -980,6 +980,24 @@ ROM_START( drgw2j )
PGM_AUDIO_BIOS
ROM_END
+ROM_START( drgw2hk ) // the IGS025 has a "DRAGON-II 0004-1" sticker, the IGS012 has no per-game marking
+ ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */
+ PGM_68K_BIOS
+ ROM_LOAD16_WORD_SWAP( "dragon_ii_v-100-h.u2", 0x100000, 0x080000, CRC(c6e2e6ec) SHA1(84145dfb26857ea20efb233363f175bc9bb25b0c) )
+
+ ROM_REGION( 0x800000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
+ PGM_VIDEO_BIOS
+ ROM_LOAD( "pgmt0200.u7", 0x180000, 0x400000, CRC(b0f6534d) SHA1(174cacd81169a0e0d14790ac06d03caed737e05d) )
+
+ ROM_REGION( 0x400000, "sprcol", 0 ) /* Sprite Colour Data */
+ ROM_LOAD( "pgma0200.u5", 0x0000000, 0x400000, CRC(13b95069) SHA1(4888b06002afb18eab81c010e9362629045767af) )
+
+ ROM_REGION( 0x400000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
+ ROM_LOAD( "pgmb0200.u9", 0x0000000, 0x400000, CRC(932d0f13) SHA1(4b8e008f9c617cb2b95effeb81abc065b30e5c86) )
+
+ ROM_REGION( 0x400000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
+ PGM_AUDIO_BIOS
+ROM_END
/*
@@ -4145,6 +4163,7 @@ GAME( 1997, drgw2, pgm, pgm_012_025_drgw2, pgm, pgm_012_025_sta
GAME( 1997, dw2v100x, drgw2, pgm_012_025_drgw2, pgm, pgm_012_025_state, dw2v100x, ROT0, "IGS", "Dragon World II (ver. 100X, Export)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
GAME( 1997, drgw2j, drgw2, pgm_012_025_drgw2, pgm, pgm_012_025_state, drgw2j, ROT0, "IGS", "Chuugokuryuu II (ver. 100J, Japan)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
GAME( 1997, drgw2c, drgw2, pgm_012_025_drgw2, pgm, pgm_012_025_state, drgw2c, ROT0, "IGS", "Zhong Guo Long II (ver. 100C, China)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1997, drgw2hk, drgw2, pgm_012_025_drgw2, pgm, pgm_012_025_state, drgw2hk, ROT0, "IGS", "Dragon World II (ver. 100H, Hong Kong [Hokg Kong])", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE | GAME_NOT_WORKING ) // correct title? (region is shown as Hokg Kong, Dragon World 3 is the same)
GAME( 1998, killbld, pgm, pgm_022_025_killbld, killbld, pgm_022_025_state, killbld, ROT0, "IGS", "The Killing Blade (ver. 109, Chinese Board)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
GAME( 1998, killbld104, killbld, pgm_022_025_killbld, killbld, pgm_022_025_state, killbld, ROT0, "IGS", "The Killing Blade (ver. 104)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */
diff --git a/src/mame/drivers/pgm2.c b/src/mame/drivers/pgm2.c
index 4f224fe046e..8ae370f4cce 100644
--- a/src/mame/drivers/pgm2.c
+++ b/src/mame/drivers/pgm2.c
@@ -278,6 +278,32 @@ ROM_START( orleg2o )
ROM_LOAD16_WORD_SWAP( "ig-a_sp.u2", 0x00000000, 0x1000000, CRC(8250688c) SHA1(d2488477afc528aeee96826065deba2bce4f0a7d) )
ROM_END
+ROM_START( orleg2oa )
+ ROM_REGION( 0x04000, "maincpu", 0 )
+ ROM_LOAD( "xyj2_igs036.rom", 0x00000000, 0x0004000, NO_DUMP )
+
+ ROM_REGION( 0x800000, "user1", 0 )
+ ROM_LOAD( "orleg2_xyj2_v101cn.u7", 0x000000, 0x800000, CRC(45805b53) SHA1(f2a8399c821b75fadc53e914f6f318707e70787c) )
+
+ ROM_REGION( 0x200000, "tiles", ROMREGION_ERASEFF )
+ ROM_LOAD( "ig-a_text.u4", 0x00000000, 0x0200000, CRC(fa444c32) SHA1(31e5e3efa92d52bf9ab97a0ece51e3b77f52ce8a) )
+
+ ROM_REGION( 0x1000000, "bgtile", 0 )
+ ROM_LOAD32_WORD( "ig-a_bgl.u35", 0x00000000, 0x0800000, CRC(083a8315) SHA1(0dba25e132fbb12faa59ced648c27b881dc73478) )
+ ROM_LOAD32_WORD( "ig-a_bgh.u36", 0x00000002, 0x0800000, CRC(e197221d) SHA1(5574b1e3da4b202db725be906dd868edc2fd4634) )
+
+ ROM_REGION( 0x2000000, "spritesa", 0 ) // 1bpp sprite mask data
+ ROM_LOAD32_WORD( "ig-a_bml.u12", 0x00000000, 0x1000000, CRC(113a331c) SHA1(ee6b31bb2b052cc8799573de0d2f0a83f0ab4f6a) )
+ ROM_LOAD32_WORD( "ig-a_bmh.u16", 0x00000002, 0x1000000, CRC(fbf411c8) SHA1(5089b5cc9bbf6496ef1367c6255e63e9ab895117) )
+
+ ROM_REGION( 0x4000000, "spritesb", 0 ) // sprite colour data
+ ROM_LOAD32_WORD( "ig-a_cgl.u18", 0x00000000, 0x2000000, CRC(43501fa6) SHA1(58ccce6d393964b771fec3f5c583e3ede57482a3) )
+ ROM_LOAD32_WORD( "ig-a_cgh.u26", 0x00000002, 0x2000000, CRC(7051d020) SHA1(3d9b24c6fda4c9699bb9f00742e0888059b623e1) )
+
+ ROM_REGION( 0x1000000, "ymz770", ROMREGION_ERASEFF ) /* ymz770 */
+ ROM_LOAD16_WORD_SWAP( "ig-a_sp.u2", 0x00000000, 0x1000000, CRC(8250688c) SHA1(d2488477afc528aeee96826065deba2bce4f0a7d) )
+ROM_END
+
ROM_START( kov2nl )
ROM_REGION( 0x04000, "maincpu", 0 )
ROM_LOAD( "gsyx_igs036.rom", 0x00000000, 0x0004000, NO_DUMP )
@@ -330,6 +356,31 @@ ROM_START( kov2nlo )
ROM_LOAD16_WORD_SWAP( "ig-a3_sp.u37", 0x00000000, 0x2000000, CRC(45cdf422) SHA1(8005d284bcee73cff37a147fcd1c3e9f039a7203) )
ROM_END
+ROM_START( kov2nloa )
+ ROM_REGION( 0x04000, "maincpu", 0 )
+ ROM_LOAD( "gsyx_igs036.rom", 0x00000000, 0x0004000, NO_DUMP )
+
+ ROM_REGION( 0x800000, "user1", 0 )
+ ROM_LOAD( "kov2nl_gsyx_v300tw.u7", 0x000000, 0x800000, CRC(08da7552) SHA1(303b97d7694405474c8133a259303ccb49db48b1) )
+
+ ROM_REGION( 0x200000, "tiles", ROMREGION_ERASEFF )
+ ROM_LOAD( "ig-a3_text.u4", 0x00000000, 0x0200000, CRC(214530ff) SHA1(4231a02054b0345392a077042b95779fd45d6c22) )
+
+ ROM_REGION( 0x1000000, "bgtile", 0 )
+ ROM_LOAD32_WORD( "ig-a3_bgl.u35", 0x00000000, 0x0800000, CRC(2d46b1f6) SHA1(ea8c805eda6292e86a642e9633d8fee7054d10b1) )
+ ROM_LOAD32_WORD( "ig-a3_bgh.u36", 0x00000002, 0x0800000, CRC(df710c36) SHA1(f826c3f496c4f17b46d18af1d8e02cac7b7027ac) )
+
+ ROM_REGION( 0x2000000, "spritesa", 0 ) // 1bpp sprite mask data
+ ROM_LOAD32_WORD( "ig-a3_bml.u12", 0x00000000, 0x1000000, CRC(0bf63836) SHA1(b8e4f1951f8074b475b795bd7840c5a375b6f5ef) )
+ ROM_LOAD32_WORD( "ig-a3_bmh.u16", 0x00000002, 0x1000000, CRC(4a378542) SHA1(5d06a8a8796285a786ebb690c34610f923ef5570) )
+
+ ROM_REGION( 0x4000000, "spritesb", 0 ) // sprite colour data
+ ROM_LOAD32_WORD( "ig-a3_cgl.u18", 0x00000000, 0x2000000, CRC(8d923e1f) SHA1(14371cf385dd8857017d3111cd4710f4291b1ae2) )
+ ROM_LOAD32_WORD( "ig-a3_cgh.u26", 0x00000002, 0x2000000, CRC(5b6fbf3f) SHA1(d1f52e230b91ee6cde939d7c2b74da7fd6527e73) )
+
+ ROM_REGION( 0x2000000, "ymz770", ROMREGION_ERASEFF ) /* ymz770 */
+ ROM_LOAD16_WORD_SWAP( "ig-a3_sp.u37", 0x00000000, 0x2000000, CRC(45cdf422) SHA1(8005d284bcee73cff37a147fcd1c3e9f039a7203) )
+ROM_END
ROM_START( ddpdojh )
ROM_REGION( 0x04000, "maincpu", 0 )
@@ -496,10 +547,12 @@ DRIVER_INIT_MEMBER(pgm2_state,kov3)
/* PGM2 */
GAME( 2007, orleg2, 0, pgm2, pgm2, pgm2_state, orleg2, ROT0, "IGS", "Oriental Legend 2 (V104, China)", GAME_IS_SKELETON )
GAME( 2007, orleg2o, orleg2, pgm2, pgm2, pgm2_state, orleg2, ROT0, "IGS", "Oriental Legend 2 (V103, China)", GAME_IS_SKELETON )
+GAME( 2007, orleg2oa, orleg2, pgm2, pgm2, pgm2_state, orleg2, ROT0, "IGS", "Oriental Legend 2 (V101, China)", GAME_IS_SKELETON )
// should be earlier verisons too.
GAME( 2008, kov2nl, 0, pgm2, pgm2, pgm2_state, kov2nl, ROT0, "IGS", "Knights of Valour 2 New Legend (V302, China)", GAME_IS_SKELETON )
GAME( 2008, kov2nlo, kov2nl, pgm2, pgm2, pgm2_state, kov2nl, ROT0, "IGS", "Knights of Valour 2 New Legend (V301, China)", GAME_IS_SKELETON )
+GAME( 2008, kov2nloa, kov2nl, pgm2, pgm2, pgm2_state, kov2nl, ROT0, "IGS", "Knights of Valour 2 New Legend (V300, Taiwan)", GAME_IS_SKELETON )
// should be earlier verisons too.
GAME( 2010, ddpdojh, 0, pgm2, pgm2, pgm2_state, ddpdojh, ROT270, "IGS", "Dodonpachi Daioujou Tamashii (V201, China)", GAME_IS_SKELETON )
diff --git a/src/mame/drivers/photoply.c b/src/mame/drivers/photoply.c
index 381abdd8c40..a1d1626eb24 100644
--- a/src/mame/drivers/photoply.c
+++ b/src/mame/drivers/photoply.c
@@ -13,7 +13,7 @@ TODO:
#include "emu.h"
#include "cpu/i386/i386.h"
-#include "machine/pci.h"
+#include "machine/lpci.h"
#include "machine/pcshare.h"
#include "machine/pckeybrd.h"
#include "machine/idectrl.h"
diff --git a/src/mame/drivers/pinball2k.c b/src/mame/drivers/pinball2k.c
index 6f0f5a5e5b3..71c16c3f2b1 100644
--- a/src/mame/drivers/pinball2k.c
+++ b/src/mame/drivers/pinball2k.c
@@ -19,7 +19,7 @@
#include "emu.h"
#include "cpu/i386/i386.h"
-#include "machine/pci.h"
+#include "machine/lpci.h"
#include "machine/pcshare.h"
#include "machine/pckeybrd.h"
#include "machine/idectrl.h"
diff --git a/src/mame/drivers/psychic5.c b/src/mame/drivers/psychic5.c
index 1184564424d..4ba9d2c8a86 100644
--- a/src/mame/drivers/psychic5.c
+++ b/src/mame/drivers/psychic5.c
@@ -407,8 +407,8 @@ WRITE8_MEMBER(psychic5_state::bombsa_flipscreen_w)
static ADDRESS_MAP_START( psychic5_main_map, AS_PROGRAM, 8, psychic5_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank1")
- AM_RANGE(0xc000, 0xdfff) AM_READWRITE(psychic5_paged_ram_r, psychic5_paged_ram_w)
+ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
+ AM_RANGE(0xc000, 0xdfff) AM_DEVICE("vrambank", address_map_bank_device, amap8)
AM_RANGE(0xe000, 0xefff) AM_RAM
AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch_byte_w)
AM_RANGE(0xf001, 0xf001) AM_READNOP AM_WRITE(psychic5_coin_counter_w)
@@ -421,6 +421,28 @@ static ADDRESS_MAP_START( psychic5_main_map, AS_PROGRAM, 8, psychic5_state )
AM_RANGE(0xf800, 0xffff) AM_RAM
ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( psychic5_vrambank_map, AS_PROGRAM, 8, psychic5_state )
+ AM_RANGE(0x0000, 0x0fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
+ AM_RANGE(0x1000, 0x1fff) AM_RAM
+
+ AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SYSTEM")
+ AM_RANGE(0x2001, 0x2001) AM_READ_PORT("P1")
+ AM_RANGE(0x2002, 0x2002) AM_READ_PORT("P2")
+ AM_RANGE(0x2003, 0x2003) AM_READ_PORT("DSW1")
+ AM_RANGE(0x2004, 0x2004) AM_READ_PORT("DSW2")
+
+ AM_RANGE(0x2308, 0x230c) AM_RAM AM_SHARE("bg_control")
+
+ AM_RANGE(0x2400, 0x25ff) AM_RAM_WRITE(sprite_col_w) AM_SHARE("palette_ram_sp")
+ AM_RANGE(0x2800, 0x29ff) AM_RAM_WRITE(bg_col_w) AM_SHARE("palette_ram_bg")
+ AM_RANGE(0x2a00, 0x2bff) AM_RAM_WRITE(tx_col_w) AM_SHARE("palette_ram_tx")
+
+ AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
+
+ADDRESS_MAP_END
+
+
static ADDRESS_MAP_START( psychic5_sound_map, AS_PROGRAM, 8, psychic5_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM
@@ -436,7 +458,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( bombsa_main_map, AS_PROGRAM, 8, psychic5_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank1")
+ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
AM_RANGE(0xc000, 0xcfff) AM_RAM
/* ports look like the other games */
@@ -450,7 +472,7 @@ static ADDRESS_MAP_START( bombsa_main_map, AS_PROGRAM, 8, psychic5_state )
AM_RANGE(0xd200, 0xd7ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xd800, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xffff) AM_READWRITE(psychic5_paged_ram_r, bombsa_paged_ram_w)
+ AM_RANGE(0xe000, 0xffff) AM_DEVICE("vrambank", address_map_bank_device, amap8)
ADDRESS_MAP_END
static ADDRESS_MAP_START( bombsa_sound_map, AS_PROGRAM, 8, psychic5_state )
@@ -466,6 +488,24 @@ static ADDRESS_MAP_START( bombsa_soundport_map, AS_IO, 8, psychic5_state )
AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( bombsa_vrambank_map, AS_PROGRAM, 8, psychic5_state )
+ AM_RANGE(0x0000, 0x1fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
+
+ AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SYSTEM")
+ AM_RANGE(0x2001, 0x2001) AM_READ_PORT("P1")
+ AM_RANGE(0x2002, 0x2002) AM_READ_PORT("P2")
+ AM_RANGE(0x2003, 0x2003) AM_READ_PORT("DSW1")
+ AM_RANGE(0x2004, 0x2004) AM_READ_PORT("DSW2")
+
+ AM_RANGE(0x2308, 0x230c) AM_RAM AM_SHARE("bg_control")
+
+ AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(sprite_col_w) AM_SHARE("palette_ram_sp")
+ AM_RANGE(0x3200, 0x33ff) AM_RAM_WRITE(bg_col_w) AM_SHARE("palette_ram_bg")
+ AM_RANGE(0x3400, 0x35ff) AM_RAM_WRITE(tx_col_w) AM_SHARE("palette_ram_tx")
+
+ AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram")
+ADDRESS_MAP_END
+
static INPUT_PORTS_START( psychic5 )
PORT_START("SYSTEM") /* system control */
@@ -655,6 +695,13 @@ static MACHINE_CONFIG_START( psychic5, psychic5_state )
MCFG_CPU_PROGRAM_MAP(psychic5_main_map)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", psychic5_state, psychic5_scanline, "screen", 0, 1)
+ MCFG_DEVICE_ADD("vrambank", ADDRESS_MAP_BANK, 0)
+ MCFG_DEVICE_PROGRAM_MAP(psychic5_vrambank_map)
+ MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
+ MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
+ MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(14)
+ MCFG_ADDRESS_MAP_BANK_STRIDE(0x2000)
+
MCFG_CPU_ADD("audiocpu", Z80, XTAL_5MHz)
MCFG_CPU_PROGRAM_MAP(psychic5_sound_map)
MCFG_CPU_IO_MAP(psychic5_soundport_map)
@@ -700,6 +747,13 @@ static MACHINE_CONFIG_START( bombsa, psychic5_state )
MCFG_CPU_PROGRAM_MAP(bombsa_main_map)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", psychic5_state, psychic5_scanline, "screen", 0, 1)
+ MCFG_DEVICE_ADD("vrambank", ADDRESS_MAP_BANK, 0)
+ MCFG_DEVICE_PROGRAM_MAP(bombsa_vrambank_map)
+ MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
+ MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
+ MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(14)
+ MCFG_ADDRESS_MAP_BANK_STRIDE(0x2000)
+
MCFG_CPU_ADD("audiocpu", Z80, XTAL_5MHz )
MCFG_CPU_PROGRAM_MAP(bombsa_sound_map)
MCFG_CPU_IO_MAP(bombsa_soundport_map)
@@ -718,7 +772,7 @@ static MACHINE_CONFIG_START( bombsa, psychic5_state )
MCFG_PALETTE_ADD("palette", 768)
MCFG_VIDEO_START_OVERRIDE(psychic5_state,bombsa)
- MCFG_VIDEO_RESET_OVERRIDE(psychic5_state,bombsa)
+ MCFG_VIDEO_RESET_OVERRIDE(psychic5_state,psychic5)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/queen.c b/src/mame/drivers/queen.c
index 7d82b8e8a64..25329d10b2a 100644
--- a/src/mame/drivers/queen.c
+++ b/src/mame/drivers/queen.c
@@ -26,7 +26,7 @@ processor speed is 533MHz <- likely to be a Celeron or a Pentium III class CPU -
#include "emu.h"
#include "cpu/i386/i386.h"
-#include "machine/pci.h"
+#include "machine/lpci.h"
#include "machine/pcshare.h"
#include "machine/pckeybrd.h"
#include "machine/idectrl.h"
diff --git a/src/mame/drivers/rampart.c b/src/mame/drivers/rampart.c
index 229aa7d9b30..39d055fe4e1 100644
--- a/src/mame/drivers/rampart.c
+++ b/src/mame/drivers/rampart.c
@@ -339,6 +339,8 @@ static MACHINE_CONFIG_START( rampart, rampart_state )
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
+ MCFG_SLAPSTIC_ADD("slapstic")
+
MCFG_MACHINE_RESET_OVERRIDE(rampart_state,rampart)
MCFG_ATARI_EEPROM_2816_ADD("eeprom")
diff --git a/src/mame/drivers/rockrage.c b/src/mame/drivers/rockrage.c
index fc528523bc9..ae9af041943 100644
--- a/src/mame/drivers/rockrage.c
+++ b/src/mame/drivers/rockrage.c
@@ -210,8 +210,8 @@ static const gfx_layout spritelayout =
};
static GFXDECODE_START( rockrage )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 64, 32 ) /* colors 00..31, but using 2 lookup tables */
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 32, 1 ) /* colors 32..63 */
+ GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 32 ) /* colors 00..31, using 2 lookup tables */
+ GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 512, 16 ) /* colors 32..47, using lookup table */
GFXDECODE_END
/***************************************************************************
@@ -227,7 +227,6 @@ void rockrage_state::machine_start()
m_rombank->configure_entries(0, 8, &ROM[0x10000], 0x2000);
save_item(NAME(m_vreg));
- save_item(NAME(m_layer_colorbase));
}
void rockrage_state::machine_reset()
@@ -268,7 +267,7 @@ static MACHINE_CONFIG_START( rockrage, rockrage_state )
MCFG_K007420_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", rockrage)
- MCFG_PALETTE_ADD("palette", 64 + 2*16*16)
+ MCFG_PALETTE_ADD("palette", 16*16*3)
MCFG_PALETTE_INDIRECT_ENTRIES(64)
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_PALETTE_ENDIANNESS(ENDIANNESS_LITTLE)
@@ -310,10 +309,10 @@ ROM_START( rockrage )
ROM_LOAD( "620l10.8g", 0x020000, 0x20000, CRC(06d108e0) SHA1(cae8c5f2fc4e84bc7adbf27f71a18a74968c4296) ) /* One "K" & one "L" code version??? */
ROM_REGION( 0x0300, "proms", 0 )
- ROM_LOAD( "620k09.11g", 0x00000, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) ) /* layer 0 lookup table */
+ ROM_LOAD( "620k07.13g", 0x00000, 0x00100, CRC(b6135ee0) SHA1(248a978987cff86c2bbad10ef332f63a6abd5bee) ) /* layer 0 lookup table */
ROM_LOAD( "620k08.12g", 0x00100, 0x00100, CRC(b499800c) SHA1(46fa4e071ebceed12027de109be1e16dde5e846e) ) /* layer 1 lookup table */
- ROM_LOAD( "620k07.13g", 0x00200, 0x00100, CRC(b6135ee0) SHA1(248a978987cff86c2bbad10ef332f63a6abd5bee) ) /* sprite lookup table, but its not used */
- /* because it's always 0 1 2 ... f */
+ ROM_LOAD( "620k09.11g", 0x00200, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) ) /* sprite lookup table */
+
ROM_REGION( 0x08000, "vlm", 0 ) /* VLM3050 data */
ROM_LOAD( "620k04.6e", 0x00000, 0x08000, CRC(8be969f3) SHA1(9856b4c13fac77b645aed67a08cb4965b4966492) )
ROM_END
@@ -339,10 +338,10 @@ ROM_START( rockragea )
ROM_LOAD( "620g10b.8f", 0x030000, 0x10000, CRC(1618854a) SHA1(0afb34a9ed97f13c1910acd7767cb8546ea7e6cd) )
ROM_REGION( 0x0300, "proms", 0 )
- ROM_LOAD( "620k09.11g", 0x00000, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) ) /* layer 0 lookup table */
+ ROM_LOAD( "620k07.13g", 0x00000, 0x00100, CRC(b6135ee0) SHA1(248a978987cff86c2bbad10ef332f63a6abd5bee) ) /* layer 0 lookup table */
ROM_LOAD( "620k08.12g", 0x00100, 0x00100, CRC(b499800c) SHA1(46fa4e071ebceed12027de109be1e16dde5e846e) ) /* layer 1 lookup table */
- ROM_LOAD( "620k07.13g", 0x00200, 0x00100, CRC(b6135ee0) SHA1(248a978987cff86c2bbad10ef332f63a6abd5bee) ) /* sprite lookup table, but its not used */
- /* because it's always 0 1 2 ... f */
+ ROM_LOAD( "620k09.11g", 0x00200, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) ) /* sprite lookup table */
+
ROM_REGION( 0x08000, "vlm", 0 ) /* VLM3050 data */
ROM_LOAD( "620k04.6e", 0x00000, 0x08000, CRC(8be969f3) SHA1(9856b4c13fac77b645aed67a08cb4965b4966492) ) /* Same rom but labeled as ver "G" */
ROM_END
@@ -364,10 +363,10 @@ ROM_START( rockragej )
ROM_LOAD( "620k10.8g", 0x020000, 0x20000, CRC(0d1a95ab) SHA1(be565424f17af31dcd07004c6be03bbb00aef514) )
ROM_REGION( 0x0300, "proms", 0 )
- ROM_LOAD( "620k09.11g", 0x00000, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) ) /* layer 0 lookup table */
+ ROM_LOAD( "620k07.13g", 0x00000, 0x00100, CRC(b6135ee0) SHA1(248a978987cff86c2bbad10ef332f63a6abd5bee) ) /* layer 0 lookup table */
ROM_LOAD( "620k08.12g", 0x00100, 0x00100, CRC(b499800c) SHA1(46fa4e071ebceed12027de109be1e16dde5e846e) ) /* layer 1 lookup table */
- ROM_LOAD( "620k07.13g", 0x00200, 0x00100, CRC(b6135ee0) SHA1(248a978987cff86c2bbad10ef332f63a6abd5bee) ) /* sprite lookup table, but its not used */
- /* because it's always 0 1 2 ... f */
+ ROM_LOAD( "620k09.11g", 0x00200, 0x00100, CRC(9f0e0608) SHA1(c95bdb370e4a91f27afbd5ff3b39b2e0ad87da73) ) /* sprite lookup table */
+
ROM_REGION( 0x08000, "vlm", 0 ) /* VLM3050 data */
ROM_LOAD( "620k04.6e", 0x00000, 0x08000, CRC(8be969f3) SHA1(9856b4c13fac77b645aed67a08cb4965b4966492) )
ROM_END
diff --git a/src/mame/drivers/savquest.c b/src/mame/drivers/savquest.c
index 18901d3b6bf..c622728014d 100644
--- a/src/mame/drivers/savquest.c
+++ b/src/mame/drivers/savquest.c
@@ -46,7 +46,7 @@
#include "emu.h"
#include "cpu/i386/i386.h"
-#include "machine/pci.h"
+#include "machine/lpci.h"
#include "machine/pcshare.h"
#include "machine/pckeybrd.h"
#include "machine/idectrl.h"
diff --git a/src/mame/drivers/segacoin.c b/src/mame/drivers/segacoin.c
new file mode 100644
index 00000000000..6a34018ef1b
--- /dev/null
+++ b/src/mame/drivers/segacoin.c
@@ -0,0 +1,142 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+/***************************************************************************
+
+ Sega Z80 Coin Pusher hardware
+
+ 1992 - Western Dream
+ * 2 x Z80 (prg, sound), 3 x YM3438 (6ch), ..
+ Hexagon shaped cab, with a toy train riding circles in the top compartment.
+ 6 players, each with a coin pusher, and a LED roulette on the back panel.
+
+ more...
+
+
+TODO:
+- everything
+
+***************************************************************************/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+//#include "sound/2612intf.h"
+
+
+class segacoin_state : public driver_device
+{
+public:
+ segacoin_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_audiocpu(*this, "audiocpu")
+ { }
+
+ required_device m_maincpu;
+ required_device m_audiocpu;
+};
+
+
+/***************************************************************************
+
+ I/O
+
+***************************************************************************/
+
+/* Memory maps */
+
+static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, segacoin_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0xe000, 0xffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( main_portmap, AS_IO, 8, segacoin_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, segacoin_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0xe000, 0xffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, segacoin_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ADDRESS_MAP_END
+
+
+
+/***************************************************************************
+
+ Inputs
+
+***************************************************************************/
+
+static INPUT_PORTS_START( westdrm )
+ // just some test stuff
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 )
+
+ PORT_START("IN1")
+ PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "SW1:1" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "SW1:2" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "SW1:3" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW1:4" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW1:5" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW1:6" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW1:7" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW1:8" )
+INPUT_PORTS_END
+
+
+
+/***************************************************************************
+
+ Machine Config
+
+***************************************************************************/
+
+static MACHINE_CONFIG_START( westdrm, segacoin_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", Z80, 8000000) // clock frequency unknown
+ MCFG_CPU_PROGRAM_MAP(main_map)
+ MCFG_CPU_IO_MAP(main_portmap)
+
+ MCFG_CPU_ADD("audiocpu", Z80, 8000000) // clock frequency unknown
+ MCFG_CPU_PROGRAM_MAP(sound_map)
+ MCFG_CPU_IO_MAP(sound_portmap)
+
+ /* no video! */
+
+ /* sound hardware */
+ //..
+MACHINE_CONFIG_END
+
+
+
+/***************************************************************************
+
+ Game drivers
+
+***************************************************************************/
+
+ROM_START( westdrm )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "epr-15151a.bin", 0x00000, 0x10000, CRC(b0911826) SHA1(77435d2b9c78275f2c21db994d2203528e69fe1f) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "epr-15152.bin", 0x00000, 0x10000, CRC(565d6559) SHA1(2c7d961b6dc5020994cbd005efbfd27ccf59569d) ) // mostly empty
+ ROM_IGNORE( 0x10000 )
+ROM_END
+
+
+GAME (1992, westdrm, 0, westdrm, westdrm, driver_device, 0, ROT0, "Sega", "Western Dream", GAME_IS_SKELETON_MECHANICAL )
diff --git a/src/mame/drivers/segas18.c b/src/mame/drivers/segas18.c
index f6f13b0b593..ba3114362ce 100644
--- a/src/mame/drivers/segas18.c
+++ b/src/mame/drivers/segas18.c
@@ -73,6 +73,7 @@ void segas18_state::memory_mapper(sega_315_5195_mapper_device &mapper, UINT8 ind
switch (m_romboard)
{
case ROM_BOARD_171_SHADOW: break; // ???
+ case ROM_BOARD_837_7525:
case ROM_BOARD_171_5874:
case ROM_BOARD_171_5987: mapper.map_as_handler(0x00000, 0x00010, 0xfffff0, read16_delegate(FUNC(segas18_state::genesis_vdp_r), this), write16_delegate(FUNC(segas18_state::genesis_vdp_w), this)); break;
default: assert(false);
@@ -89,6 +90,9 @@ void segas18_state::memory_mapper(sega_315_5195_mapper_device &mapper, UINT8 ind
else
mapper.map_as_rom(0x00000,0x100000, 0xf00000, "rom1base",0x100000, write16_delegate(FUNC(segas18_state::rom_5987_bank_w), this));
break;
+ case ROM_BOARD_837_7525: mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom1base", 0x80000, write16_delegate(FUNC(segas18_state::rom_837_7525_bank_w), this));
+ break;
+
default: assert(false);
}
break;
@@ -98,6 +102,7 @@ void segas18_state::memory_mapper(sega_315_5195_mapper_device &mapper, UINT8 ind
{
case ROM_BOARD_171_SHADOW:
case ROM_BOARD_171_5874: mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom0base", 0x00000, write16_delegate()); break;
+ case ROM_BOARD_837_7525:
case ROM_BOARD_171_5987: if (romsize <= 0x100000)
mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom0base", 0x00000, write16_delegate());
else
@@ -390,6 +395,33 @@ WRITE16_MEMBER( segas18_state::rom_5987_bank_w )
}
}
+WRITE16_MEMBER( segas18_state::rom_837_7525_bank_w )
+{
+ if (!ACCESSING_BITS_0_7)
+ return;
+
+ offset &= 0xf;
+ data &= 0xff;
+
+ // tile banking
+ if (offset < 8)
+ {
+ // int maxbanks = m_gfxdecode->gfx(0)->elements() / 1024;
+ data &= 0x9f;
+
+ if (data & 0x80) data += 0x20;
+ data &= 0x3f;
+
+ m_segaic16vid->segaic16_tilemap_set_bank(0, offset, data);
+ }
+
+ // sprite banking
+ else
+ {
+ //printf("%02x %02x\n", offset, data);
+ // not needed?
+ }
+}
/*************************************
@@ -729,10 +761,8 @@ static INPUT_PORTS_START( astorm )
PORT_DIPSETTING( 0x00, "1" )
//"SW2:7" unused
//"SW2:8" unused
-
INPUT_PORTS_END
-
static INPUT_PORTS_START( astorm2p )
PORT_INCLUDE( system18_generic )
@@ -757,7 +787,6 @@ static INPUT_PORTS_START( astorm2p )
PORT_DIPSETTING( 0x00, "1" )
//"SW2:7" unused
//"SW2:8" unused
-
INPUT_PORTS_END
@@ -876,7 +905,6 @@ static INPUT_PORTS_START( ddcrew )
PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
-
static INPUT_PORTS_START( ddcrew2p )
PORT_INCLUDE( system18_generic )
@@ -903,7 +931,6 @@ static INPUT_PORTS_START( ddcrew2p )
PORT_DIPSETTING( 0xc0, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
-
INPUT_PORTS_END
static INPUT_PORTS_START( ddcrew3p )
@@ -922,9 +949,9 @@ static INPUT_PORTS_START( ddcrew3p )
PORT_MODIFY("SERVICE")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
-
INPUT_PORTS_END
+
static INPUT_PORTS_START( desertbr )
PORT_INCLUDE( system18_generic )
@@ -973,6 +1000,31 @@ static INPUT_PORTS_START( desertbr )
INPUT_PORTS_END
+static INPUT_PORTS_START( hamaway )
+ PORT_INCLUDE( system18_generic )
+
+ PORT_MODIFY("DSW")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
+ PORT_DIPSETTING( 0x02, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
+ PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
+ PORT_DIPSETTING( 0x08, "1" )
+ PORT_DIPSETTING( 0x04, "2" )
+ PORT_DIPSETTING( 0x0c, "3" )
+ PORT_DIPSETTING( 0x00, "5" )
+ //"SW2:5" is unknown - Not listed in the service mode
+ //"SW2:6" is unknown - Not listed in the service mode
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, "2 Credits to Start" ) PORT_DIPLOCATION("SW2:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+
+
static INPUT_PORTS_START( lghost )
PORT_INCLUDE( system18_generic )
@@ -1184,7 +1236,6 @@ static INPUT_PORTS_START( wwally )
INPUT_PORTS_END
-
/*************************************
*
* Graphics definitions
@@ -1228,6 +1279,15 @@ WRITE_LINE_MEMBER(segas18_state::vdp_lv4irqline_callback_s18)
*
*************************************/
+WRITE_LINE_MEMBER(segas18_state::ym3438_irq_handler)
+{
+ if (state)
+ m_soundcpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE );
+ else
+ m_soundcpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE );
+}
+
+
static MACHINE_CONFIG_START( system18, segas18_state )
// basic machine hardware
@@ -1276,6 +1336,7 @@ static MACHINE_CONFIG_START( system18, segas18_state )
MCFG_SOUND_ADD("ym1", YM3438, 8000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
+ MCFG_YM2612_IRQ_HANDLER(WRITELINE(segas18_state, ym3438_irq_handler))
MCFG_SOUND_ADD("ym2", YM3438, 8000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
@@ -1868,6 +1929,45 @@ ROM_START( desertbrj )
ROM_END
+/**************************************************************************************************************************
+ **************************************************************************************************************************
+ **************************************************************************************************************************
+ Hammer Away, Sega System 18 (prototype / unreleased)
+ CPU: M68000
+ ROM Board: 837-7525
+
+ Japanese text on the mission screens, but no "For use in Japan..." warning. There are screen shots of a version without
+ the Japanese text on mission screens and an alternate title screen, so a "World" proto might exist.
+*/
+ROM_START( hamaway )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code
+ ROM_LOAD16_BYTE( "4.bin", 0x000000, 0x40000, CRC(cc0981e1) SHA1(63528bd36f27e62fdf40715101e6d05b73e48f16) ) // 1xxxxxxxxxxxxxxxxx = 0xFF
+ ROM_LOAD16_BYTE( "6.bin", 0x000001, 0x40000, CRC(e8599ee6) SHA1(3e32b025403aecbaecfcdd0325e4acd676e99c4e) ) // 1xxxxxxxxxxxxxxxxx = 0xFF
+ ROM_LOAD16_BYTE( "5.bin", 0x080000, 0x40000, CRC(fdb247fd) SHA1(ee9db799fb5de27f81904f8ef792203415b6d4a6) )
+ ROM_LOAD16_BYTE( "7.bin", 0x080001, 0x40000, CRC(63711470) SHA1(6c4be3a0cf0f897c34ef0b3bf549f52b185bb915) )
+
+ ROM_REGION( 0x180000, "gfx1", 0 ) // tiles
+ ROM_LOAD( "c10.bin", 0x000000, 0x40000, CRC(c55cb5cf) SHA1(396179632b29ac5f8b7f8f3c91d7cf834e548bdf) )
+ ROM_LOAD( "1.bin", 0x040000, 0x40000, CRC(33be003f) SHA1(134fa6b3347c306d9e30882dfcf24632b49f85ea) )
+ ROM_LOAD( "c11.bin", 0x080000, 0x40000, CRC(37787915) SHA1(c8d251be6c41de3aed2da6da70aa87071b70b1f6) )
+ ROM_LOAD( "2.bin", 0x0c0000, 0x40000, CRC(60ca5c9f) SHA1(6358ea00125a5e3f55acf73aeb9c36b1db6e711e) )
+ ROM_LOAD( "c12.bin", 0x100000, 0x40000, CRC(f12f1cf3) SHA1(45e883029c58e617a2a20ac1ab5c5f598c95f4bd) )
+ ROM_LOAD( "3.bin", 0x140000, 0x40000, CRC(520aa7ae) SHA1(9584206aedd8be5ce9dca0ed370f8fe77aabaf76) )
+
+ ROM_REGION16_BE( 0x200000, "sprites", ROMREGION_ERASEFF ) // sprites
+ ROM_LOAD16_BYTE( "c17.bin", 0x000001, 0x40000, CRC(aa28d7aa) SHA1(3dd5d95b05e408c023f9bd77753c37080714239d) )
+ ROM_LOAD16_BYTE( "10.bin", 0x000000, 0x40000, CRC(c4c95161) SHA1(2e313a4ca9506f53a2062b4a8e5ba7b381ba93ae) )
+ ROM_LOAD16_BYTE( "c18.bin", 0x080001, 0x40000, CRC(0f8fe8bb) SHA1(e6f68442b8d4def29b106458496a47344f70d511) )
+ ROM_LOAD16_BYTE( "11.bin", 0x080000, 0x40000, CRC(2b5eacbc) SHA1(ba3690501588b9c88a31022b44bc3c82b44ae26b) )
+ ROM_LOAD16_BYTE( "c19.bin", 0x100001, 0x40000, CRC(3c616caa) SHA1(d48a6239b7a52ac13971f7513a65a17af492bfdf) ) // 11xxxxxxxxxxxxxxxx = 0xFF
+ ROM_LOAD16_BYTE( "12.bin", 0x100000, 0x40000, CRC(c7bbd579) SHA1(ab87bfdad66ea241cb23c9bbfea05f5a1574d6c9) ) // 1ST AND 2ND HALF IDENTICAL (but ok, because pairing ROM has no data in the 2nd half anyway)
+
+ ROM_REGION( 0x210000, "soundcpu", ROMREGION_ERASEFF ) // sound CPU
+ ROM_LOAD( "c16.bin", 0x010000, 0x40000, CRC(913cc18c) SHA1(4bf4ec14937586c3ae77fcad57dcb21f6433ef81) )
+ ROM_LOAD( "c15.bin", 0x090000, 0x40000, CRC(b53694fc) SHA1(0e42be2730abce1b52ea94a9fe61cbd1c9a0ccae) )
+ROM_END
+
+
/**************************************************************************************************************************
**************************************************************************************************************************
**************************************************************************************************************************
@@ -2262,7 +2362,6 @@ ROM_START( wwallyja )
ROM_END
-
/*************************************
*
* Generic driver initialization
@@ -2284,6 +2383,10 @@ DRIVER_INIT_MEMBER(segas18_state,generic_5987)
init_generic(ROM_BOARD_171_5987);
}
+DRIVER_INIT_MEMBER(segas18_state,hamaway)
+{
+ init_generic(ROM_BOARD_837_7525);
+}
/*************************************
@@ -2314,37 +2417,37 @@ DRIVER_INIT_MEMBER(segas18_state,wwally)
}
-
/*************************************
*
* Game driver(s)
*
*************************************/
-// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS
-GAME( 1990, astorm, 0, system18_fd1094, astorm2p, segas18_state,generic_5874, ROT0, "Sega", "Alien Storm (World, 2 Players, FD1094 317-0154)", 0 )
-GAME( 1990, astorm3, astorm, system18_fd1094, astorm, segas18_state,generic_5874, ROT0, "Sega", "Alien Storm (World, 3 Players, FD1094 317-0148)", 0 )
-GAME( 1990, astormu, astorm, system18_fd1094, astorm, segas18_state,generic_5874, ROT0, "Sega", "Alien Storm (US, 3 Players, FD1094 317-0147)", 0 )
-GAME( 1990, astormj, astorm, system18_fd1094, astorm2p, segas18_state,generic_5874, ROT0, "Sega", "Alien Storm (Japan, 2 Players, FD1094 317-0146)", 0 )
-GAME( 1989, bloxeed, 0, system18_fd1094, bloxeed, segas18_state,generic_5874, ROT0, "Sega", "Bloxeed (Japan, FD1094 317-0139)", 0 )
-GAME( 1991, cltchitr, 0, system18_fd1094, cltchitr, segas18_state,generic_5987, ROT0, "Sega", "Clutch Hitter (US, FD1094 317-0176)", 0 )
-GAME( 1991, cltchitrj, cltchitr, system18_fd1094, cltchitr, segas18_state,generic_5987, ROT0, "Sega", "Clutch Hitter (Japan, FD1094 317-0175)", 0 )
-GAME( 1992, desertbr, 0, system18_fd1094, desertbr, segas18_state,generic_5987, ROT270, "Sega", "Desert Breaker (World, FD1094 317-0196)", 0 )
-GAME( 1992, desertbrj, desertbr, system18_fd1094, desertbr, segas18_state,generic_5987, ROT270, "Sega", "Desert Breaker (Japan, FD1094 317-0194)", 0 )
-GAME( 1991, ddcrew, 0, system18_fd1094, ddcrew3p, segas18_state,ddcrew, ROT0, "Sega", "D. D. Crew (World, 3 Players, FD1094 317-0190)", 0 )
-GAME( 1991, ddcrewu, ddcrew, system18_fd1094, ddcrew, segas18_state,ddcrew, ROT0, "Sega", "D. D. Crew (US, 4 Players, FD1094 317-0186)", 0 )
-GAME( 1991, ddcrew2, ddcrew, system18_fd1094, ddcrew2p, segas18_state,ddcrew, ROT0, "Sega", "D. D. Crew (World, 2 Players, FD1094 317-0184)", 0 )
-GAME( 1991, ddcrew1, ddcrew, system18_fd1094, ddcrew, segas18_state,ddcrew, ROT0, "Sega", "D. D. Crew (World, 4 Players, FD1094 317-0187)", 0 )
-GAME( 1991, ddcrewj, ddcrew, system18_fd1094, ddcrew, segas18_state,ddcrew, ROT0, "Sega", "D. D. Crew (Japan, 4 Players, FD1094 317-0185)", 0 )
-GAME( 1991, ddcrewj2, ddcrew, system18_fd1094, ddcrew2p, segas18_state,ddcrew, ROT0, "Sega", "D. D. Crew (Japan, 2 Players, FD1094 317-0182)", 0 )
-GAME( 1990, lghost, 0, system18_fd1094, lghost, segas18_state,lghost, ROT0, "Sega", "Laser Ghost (World, FD1094 317-0166)", 0 )
-GAME( 1990, lghostu, lghost, system18_fd1094, lghost, segas18_state,lghost, ROT0, "Sega", "Laser Ghost (US, FD1094 317-0165)", 0 )
-GAME( 1990, mwalk, 0, system18_fd1094_i8751,mwalk, segas18_state,generic_5874, ROT0, "Sega", "Michael Jackson's Moonwalker (World, FD1094/8751 317-0159)", 0 )
-GAME( 1990, mwalku, mwalk, system18_fd1094_i8751,mwalka, segas18_state,generic_5874, ROT0, "Sega", "Michael Jackson's Moonwalker (US, FD1094/8751 317-0158)", 0 )
-GAME( 1990, mwalkj, mwalk, system18_fd1094_i8751,mwalk, segas18_state,generic_5874, ROT0, "Sega", "Michael Jackson's Moonwalker (Japan, FD1094/8751 317-0157)", 0 )
-GAME( 1989, pontoon, 0, system18_fd1094, shdancer, segas18_state,generic_5874, ROT0, "Sega", "Pontoon (FD1094 317-0153)", GAME_NOT_WORKING ) // satellite/networked gambling game?
-GAME( 1989, shdancer, 0, system18, shdancer, segas18_state,generic_shad, ROT0, "Sega", "Shadow Dancer (World)", 0 )
-GAME( 1989, shdancerj, shdancer, system18, shdancer, segas18_state,generic_shad, ROT0, "Sega", "Shadow Dancer (Japan)", 0 )
-GAME( 1989, shdancer1, shdancer, system18, shdancer, segas18_state,generic_shad, ROT0, "Sega", "Shadow Dancer (US)", 0 )
-GAME( 1992, wwallyj, 0, system18_fd1094, wwally, segas18_state,wwally, ROT0, "Sega", "Wally wo Sagase! (rev B, Japan, FD1094 317-0197B)", 0) // the roms do contain an english logo so maybe there is a world / us set too
-GAME( 1992, wwallyja, wwallyj, system18_fd1094, wwally, segas18_state,wwally, ROT0, "Sega", "Wally wo Sagase! (rev A, Japan, FD1094 317-0197A)", 0 )
+// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR, COMPANY, FULLNAME, FLAGS
+GAME( 1990, astorm, 0, system18_fd1094, astorm2p, segas18_state, generic_5874, ROT0, "Sega", "Alien Storm (World, 2 Players, FD1094 317-0154)", 0 )
+GAME( 1990, astorm3, astorm, system18_fd1094, astorm, segas18_state, generic_5874, ROT0, "Sega", "Alien Storm (World, 3 Players, FD1094 317-0148)", 0 )
+GAME( 1990, astormu, astorm, system18_fd1094, astorm, segas18_state, generic_5874, ROT0, "Sega", "Alien Storm (US, 3 Players, FD1094 317-0147)", 0 )
+GAME( 1990, astormj, astorm, system18_fd1094, astorm2p, segas18_state, generic_5874, ROT0, "Sega", "Alien Storm (Japan, 2 Players, FD1094 317-0146)", 0 )
+GAME( 1989, bloxeed, 0, system18_fd1094, bloxeed, segas18_state, generic_5874, ROT0, "Sega", "Bloxeed (Japan, FD1094 317-0139)", 0 )
+GAME( 1991, cltchitr, 0, system18_fd1094, cltchitr, segas18_state, generic_5987, ROT0, "Sega", "Clutch Hitter (US, FD1094 317-0176)", 0 )
+GAME( 1991, cltchitrj, cltchitr, system18_fd1094, cltchitr, segas18_state, generic_5987, ROT0, "Sega", "Clutch Hitter (Japan, FD1094 317-0175)", 0 )
+GAME( 1992, desertbr, 0, system18_fd1094, desertbr, segas18_state, generic_5987, ROT270, "Sega", "Desert Breaker (World, FD1094 317-0196)", 0 )
+GAME( 1992, desertbrj, desertbr, system18_fd1094, desertbr, segas18_state, generic_5987, ROT270, "Sega", "Desert Breaker (Japan, FD1094 317-0194)", 0 )
+GAME( 1991, ddcrew, 0, system18_fd1094, ddcrew3p, segas18_state, ddcrew, ROT0, "Sega", "D. D. Crew (World, 3 Players, FD1094 317-0190)", 0 )
+GAME( 1991, ddcrewu, ddcrew, system18_fd1094, ddcrew, segas18_state, ddcrew, ROT0, "Sega", "D. D. Crew (US, 4 Players, FD1094 317-0186)", 0 )
+GAME( 1991, ddcrew2, ddcrew, system18_fd1094, ddcrew2p, segas18_state, ddcrew, ROT0, "Sega", "D. D. Crew (World, 2 Players, FD1094 317-0184)", 0 )
+GAME( 1991, ddcrew1, ddcrew, system18_fd1094, ddcrew, segas18_state, ddcrew, ROT0, "Sega", "D. D. Crew (World, 4 Players, FD1094 317-0187)", 0 )
+GAME( 1991, ddcrewj, ddcrew, system18_fd1094, ddcrew, segas18_state, ddcrew, ROT0, "Sega", "D. D. Crew (Japan, 4 Players, FD1094 317-0185)", 0 )
+GAME( 1991, ddcrewj2, ddcrew, system18_fd1094, ddcrew2p, segas18_state, ddcrew, ROT0, "Sega", "D. D. Crew (Japan, 2 Players, FD1094 317-0182)", 0 )
+GAME( 1991, hamaway, 0, system18, hamaway, segas18_state, hamaway, ROT90, "Sega / Santos", "Hammer Away (Japan, prototype)", 0 )
+GAME( 1990, lghost, 0, system18_fd1094, lghost, segas18_state, lghost, ROT0, "Sega", "Laser Ghost (World, FD1094 317-0166)", 0 )
+GAME( 1990, lghostu, lghost, system18_fd1094, lghost, segas18_state, lghost, ROT0, "Sega", "Laser Ghost (US, FD1094 317-0165)", 0 )
+GAME( 1990, mwalk, 0, system18_fd1094_i8751,mwalk, segas18_state, generic_5874, ROT0, "Sega", "Michael Jackson's Moonwalker (World, FD1094/8751 317-0159)", 0 )
+GAME( 1990, mwalku, mwalk, system18_fd1094_i8751,mwalka, segas18_state, generic_5874, ROT0, "Sega", "Michael Jackson's Moonwalker (US, FD1094/8751 317-0158)", 0 )
+GAME( 1990, mwalkj, mwalk, system18_fd1094_i8751,mwalk, segas18_state, generic_5874, ROT0, "Sega", "Michael Jackson's Moonwalker (Japan, FD1094/8751 317-0157)", 0 )
+GAME( 1989, pontoon, 0, system18_fd1094, shdancer, segas18_state, generic_5874, ROT0, "Sega", "Pontoon (FD1094 317-0153)", GAME_NOT_WORKING ) // satellite/networked gambling game?
+GAME( 1989, shdancer, 0, system18, shdancer, segas18_state, generic_shad, ROT0, "Sega", "Shadow Dancer (World)", 0 )
+GAME( 1989, shdancerj, shdancer, system18, shdancer, segas18_state, generic_shad, ROT0, "Sega", "Shadow Dancer (Japan)", 0 )
+GAME( 1989, shdancer1, shdancer, system18, shdancer, segas18_state, generic_shad, ROT0, "Sega", "Shadow Dancer (US)", 0 )
+GAME( 1992, wwallyj, 0, system18_fd1094, wwally, segas18_state, wwally, ROT0, "Sega", "Wally wo Sagase! (rev B, Japan, FD1094 317-0197B)", 0) // the roms do contain an english logo so maybe there is a world / us set too
+GAME( 1992, wwallyja, wwallyj, system18_fd1094, wwally, segas18_state, wwally, ROT0, "Sega", "Wally wo Sagase! (rev A, Japan, FD1094 317-0197A)", 0 )
diff --git a/src/mame/drivers/segaufo.c b/src/mame/drivers/segaufo.c
index 63e41ea4029..63ac036d559 100644
--- a/src/mame/drivers/segaufo.c
+++ b/src/mame/drivers/segaufo.c
@@ -23,7 +23,7 @@
- # School Kids (1993)
4th gen - EX brd
- * Z80, 2 Sega 315-5296(I/O), YM3438, NEC uPD71054C, optional NEC uPD7759C
+ * Z80, 2 Sega 315-5296(I/O), 315-5338A, YM3438, NEC uPD71054C, optional NEC uPD7759C
- # Dream Palace (1992)
- # Dream Kitchen (1994)
- # UFO Catcher Excellent (1994)
@@ -35,10 +35,9 @@
More games were released after 2000, assumed to be on more modern hardware.
-
TODO:
- - make the other games work (for now only newufo+clones work)
- - add layout
+ - add dipswitches
+ - prize sensor for ufo21/ufo800
***************************************************************************/
@@ -47,19 +46,26 @@
#include "machine/pit8253.h"
#include "machine/315_5296.h"
#include "sound/2612intf.h"
+#include "sound/upd7759.h"
+
+// the layouts are very similar to eachother
+#include "newufo.lh"
+#include "ufomini.lh"
+#include "ufo21.lh"
+#include "ufo800.lh"
/* simulation parameters */
// x/y/z cabinet dimensions per player (motor range)
#define CABINET_WIDTH 400
#define CABINET_DEPTH 400
-#define CABINET_HEIGHT 250
+#define CABINET_HEIGHT 300
// x/y/z motor speed in hertz
#define MOTOR_SPEED 100
// crane size (stepper motor range)
-// note: the game expects this to be around 350 steps per quarter rotation
+// note: UFO board/EX board expects this to be around 350 steps per quarter rotation
#define CRANE_SIZE 350
@@ -69,10 +75,16 @@ class ufo_state : public driver_device
public:
ufo_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu")
+ m_maincpu(*this, "maincpu"),
+ m_io1(*this, "io1"),
+ m_io2(*this, "io2"),
+ m_upd(*this, "upd")
{ }
required_device m_maincpu;
+ required_device m_io1;
+ required_device m_io2;
+ optional_device m_upd;
struct Player
{
@@ -99,15 +111,25 @@ public:
DECLARE_WRITE8_MEMBER(cp_digits_w);
DECLARE_WRITE8_MEMBER(crane_xyz_w);
DECLARE_WRITE8_MEMBER(ufo_lamps_w);
+
+ DECLARE_READ8_MEMBER(ex_crane_limits_r);
+ DECLARE_READ8_MEMBER(ex_crane_open_r);
+ DECLARE_WRITE8_MEMBER(ex_stepper_w);
+ DECLARE_WRITE8_MEMBER(ex_cp_lamps_w);
+ DECLARE_WRITE8_MEMBER(ex_crane_xyz_w);
+ DECLARE_WRITE8_MEMBER(ex_ufo21_lamps_w);
+ DECLARE_WRITE8_MEMBER(ex_ufo800_lamps_w);
+ DECLARE_READ8_MEMBER(ex_upd_busy_r);
+ DECLARE_WRITE8_MEMBER(ex_upd_start_w);
virtual void machine_reset();
virtual void machine_start();
TIMER_DEVICE_CALLBACK_MEMBER(simulate_xyz);
+ TIMER_DEVICE_CALLBACK_MEMBER(update_info);
};
-
void ufo_state::motor_tick(int p, int m)
{
float delta = m_player[p].motor[m].speed;
@@ -123,7 +145,6 @@ void ufo_state::motor_tick(int p, int m)
m_player[p].motor[m].position = 1;
}
-
TIMER_DEVICE_CALLBACK_MEMBER(ufo_state::simulate_xyz)
{
for (int p = 0; p < 2; p++)
@@ -131,6 +152,32 @@ TIMER_DEVICE_CALLBACK_MEMBER(ufo_state::simulate_xyz)
motor_tick(p, m);
}
+
+TIMER_DEVICE_CALLBACK_MEMBER(ufo_state::update_info)
+{
+ // output ufo motor positions
+ // 0 X: 000 = right, 100 = left (player 1)
+ // 1 Y: 000 = front, 100 = back
+ // 2 Z: 000 = up, 100 = down
+ // 3 C: 000 = closed, 100 = open
+ for (int p = 0; p < 2; p++)
+ for (int m = 0; m < 4; m++)
+ output_set_indexed_value("counter", p*4 + m, (UINT8)(m_player[p].motor[m].position * 100));
+
+#if 0
+ char msg1[0x100] = {0};
+ char msg2[0x100] = {0};
+ for (int i = 0; i < 8; i++)
+ {
+ sprintf(msg2, "%02X ", m_io2->debug_peek_output(i));
+ strcat(msg1, msg2);
+ }
+ popmessage("%s", msg1);
+#endif
+}
+
+
+
/***************************************************************************
I/O
@@ -143,17 +190,50 @@ WRITE_LINE_MEMBER(ufo_state::pit_out0)
}
WRITE_LINE_MEMBER(ufo_state::pit_out1)
-{
- // ?
-}
-
-WRITE_LINE_MEMBER(ufo_state::pit_out2)
{
// NMI?
if (state)
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
+WRITE_LINE_MEMBER(ufo_state::pit_out2)
+{
+ // ?
+}
+
+
+/* generic / UFO board handlers */
+
+/* io1 */
+
+READ8_MEMBER(ufo_state::crane_limits_r)
+{
+ int p = offset & 1;
+ UINT8 ret = 0x7f;
+
+ // d0: left limit sw (right for p2)
+ // d1: right limit sw (left for p2)
+ // d2: back limit sw
+ // d3: front limit sw
+ // d4: down limit sw
+ // d5: up limit sw
+ for (int m = 0; m < 3; m++)
+ {
+ ret ^= (m_player[p].motor[m].position >= 1) << (m*2 + 0);
+ ret ^= (m_player[p].motor[m].position <= 0) << (m*2 + 1);
+ }
+
+ // d6: crane open sensor (reflective sticker on the stepper motor rotation disc)
+ if (m_player[p].motor[3].position >= 0.97)
+ ret ^= 0x40;
+
+ // d7: prize sensor (mirror?)
+ ret |= (ioport(p ? "IN2" : "IN1")->read() & 0x80);
+
+ return ret;
+}
+
+/* io2 */
WRITE8_MEMBER(ufo_state::stepper_w)
{
@@ -227,38 +307,142 @@ WRITE8_MEMBER(ufo_state::crane_xyz_w)
WRITE8_MEMBER(ufo_state::ufo_lamps_w)
{
- ;
+ // d0-d3: ufo leds (2 bits per player)
+ // 3 sets of two red/green leds, each set is wired to the same control 2 bits
+ // 00 = off, off
+ // 11 = red, red
+ // 01 = green, red
+ // 10 = red, green
+ output_set_lamp_value(10, data & 3);
+ output_set_lamp_value(11, data >> 2 & 3);
+
+ // d4,d5: ?
+ // d6,d7: coincounters
+ coin_counter_w(machine(), 0, data & 0x40); // 100 Y
+ coin_counter_w(machine(), 1, data & 0x80); // 500 Y
}
-READ8_MEMBER(ufo_state::crane_limits_r)
+/* EX board specific handlers */
+
+/* io1 */
+
+READ8_MEMBER(ufo_state::ex_crane_limits_r)
{
int p = offset & 1;
- UINT8 ret = 0xff;
+ UINT8 ret = 0xf0;
- // d0: left limit sw (right for p2)
- // d1: right limit sw (left for p2)
- // d2: back limit sw
- // d3: front limit sw
- // d4: down limit sw
- // d5: up limit sw
- for (int i = 0; i < 3; i++)
- {
- ret ^= (m_player[p].motor[i].position >= 1) << (i*2 + 0);
- ret ^= (m_player[p].motor[i].position <= 0) << (i*2 + 1);
- }
-
- // d6: crane open sensor (reflective sticker on the stepper motor rotation disc)
- if (m_player[p].motor[3].position >= 0.97)
- ret ^= 0x40;
-
+ // d0: left limit sw (invert)
+ // d1: right limit sw (invert)
+ // d2: back limit sw (invert)
+ // d3: front limit sw (invert)
+ // d4: ?
+ // d5: down limit sw
+ // d6: up limit sw
// d7: ?
-
+ for (int m = 0; m < 3; m++)
+ {
+ int shift = (m*2) + (m == 2);
+ ret ^= (m_player[p].motor[m].position >= 1) << shift;
+ ret ^= (m_player[p].motor[m].position <= 0) << (shift+1);
+ }
+
return ret;
}
+READ8_MEMBER(ufo_state::ex_crane_open_r)
+{
+ // d0-d3: p1, d4-d7: p2
+ UINT8 ret = 0xff;
+
+ for (int p = 0; p < 2; p++)
+ {
+ // d0: crane open sensor
+ if (m_player[p].motor[3].position >= 0.97)
+ ret ^= (1 << (p*4));
+
+ // d1: coincounter is plugged in (ufo800 gives error 14 otherwise)
+ // d2,d3: ?
+ }
+
+ return ret;
+}
+
+/* io2 */
+
+WRITE8_MEMBER(ufo_state::ex_stepper_w)
+{
+ // stepper motor sequence is: 6 c 9 3 6 c 9 3..
+ // which means d0 and d3 are swapped when compared with UFO board hardware
+ stepper_w(space, offset, BITSWAP8(data,4,6,5,7,0,2,1,3));
+}
+
+WRITE8_MEMBER(ufo_state::ex_cp_lamps_w)
+{
+ // d0,d1,d4,d5: p1/p2 button lamps
+ for (int i = 0; i < 4; i++)
+ output_set_lamp_value(i, ~data >> ((i&1) + (i&2) * 2) & 1);
+
+ // d2,d3,d6,d7: p1/p2 coincounters
+ for (int i = 0; i < 4; i++)
+ coin_counter_w(machine(), i, data >> (2 + (i&1) + (i&2) * 2) & 1);
+}
+
+WRITE8_MEMBER(ufo_state::ex_crane_xyz_w)
+{
+ int p = offset & 1;
+
+ // more straightforward setup than on UFO board hardware
+ // d0: move left
+ // d1: move right
+ // d2: move back
+ // d3: move front
+ // d4: move down
+ // d5: move up
+ for (int m = 0; m < 3; m++)
+ {
+ int bits = data >> (m*2) & 3;
+ m_player[p].motor[m].running = (bits == 1 || bits == 2) ? 1 : 0;
+ m_player[p].motor[m].direction = bits & 2;
+ }
+}
+
+WRITE8_MEMBER(ufo_state::ex_ufo800_lamps_w)
+{
+ // d0-d4: 5 red leds on ufo
+ // other bits: ?
+ for (int i = 0; i < 5; i++)
+ output_set_lamp_value(10 + i, data >> i & 1);
+}
+
+/* 315-5338A */
+
+WRITE8_MEMBER(ufo_state::ex_ufo21_lamps_w)
+{
+ // d0: ? (ufo21 reads from it too, but value is discarded)
+ // d1-d6 are the 6 red leds on each ufo
+ // d7: ?
+ for (int i = 1; i < 7; i++)
+ output_set_lamp_value(10 + offset * 10 + i, data >> i & 1);
+}
+
+WRITE8_MEMBER(ufo_state::ex_upd_start_w)
+{
+ // d0: upd7759c start sample
+ // other bits: unused?
+ m_upd->start_w(~data & 1);
+}
+
+READ8_MEMBER(ufo_state::ex_upd_busy_r)
+{
+ // d0: upd7759c busy
+ // other bits: unused?
+ int d0 = m_upd->busy_r() ? 1 : 0;
+ return 0xfe | d0;
+}
+/* Memory maps */
static ADDRESS_MAP_START( ufo_map, AS_PROGRAM, 8, ufo_state )
AM_RANGE(0x0000, 0xbfff) AM_ROM
@@ -270,8 +454,24 @@ static ADDRESS_MAP_START( ufo_portmap, AS_IO, 8, ufo_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pit", pit8254_device, read, write)
AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ym", ym3438_device, read, write)
- AM_RANGE(0x80, 0x8f) AM_DEVREADWRITE("io1", sega_315_5296_device, read, write)
- AM_RANGE(0xc0, 0xcf) AM_DEVREADWRITE("io2", sega_315_5296_device, read, write)
+ AM_RANGE(0x80, 0xbf) AM_DEVREADWRITE("io1", sega_315_5296_device, read, write)
+ AM_RANGE(0xc0, 0xff) AM_DEVREADWRITE("io2", sega_315_5296_device, read, write)
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( ex_ufo21_portmap, AS_IO, 8, ufo_state )
+ AM_RANGE(0x20, 0x20) AM_DEVWRITE("upd", upd7759_device, port_w)
+ AM_RANGE(0x60, 0x60) AM_WRITE(ex_upd_start_w) AM_READNOP
+ AM_RANGE(0x61, 0x61) AM_READ(ex_upd_busy_r)
+ AM_RANGE(0x64, 0x65) AM_WRITE(ex_ufo21_lamps_w) AM_READNOP
+// AM_RANGE(0x68, 0x68) AM_WRITENOP // ?
+ AM_IMPORT_FROM( ufo_portmap )
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( ex_ufo800_portmap, AS_IO, 8, ufo_state )
+// AM_RANGE(0x60, 0x67) AM_NOP // unused?
+// AM_RANGE(0x68, 0x68) AM_WRITENOP // ?
+ AM_IMPORT_FROM( ufo_portmap )
ADDRESS_MAP_END
@@ -282,26 +482,26 @@ ADDRESS_MAP_END
***************************************************************************/
-static INPUT_PORTS_START( ufo )
- PORT_START("P1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("P1 Coin 1")
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("P1 Coin 2")
+static INPUT_PORTS_START( newufo )
+ PORT_START("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("P1 Coin 1") // 100 Y
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("P1 Coin 2") // 500 Y
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("P1 Test")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P1 Service Coin")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("P1 Credit Clear")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Prize Fell")
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Prize Sensor")
- PORT_START("P2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("P2 Coin 1")
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_NAME("P2 Coin 2")
+ PORT_START("IN2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("P2 Coin 1") // 100 Y
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_NAME("P2 Coin 2") // 500 Y
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Test") PORT_CODE(KEYCODE_F1)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("P2 Service Coin")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE4 ) PORT_NAME("P2 Credit Clear")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Prize Fell")
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Prize Sensor")
PORT_START("DSW1") // coinage
PORT_DIPNAME( 0x01, 0x01, "UNK1-01" )
@@ -342,7 +542,157 @@ static INPUT_PORTS_START( ufo )
PORT_DIPNAME( 0x08, 0x08, "UNK2-08" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, "UNK2-10 Enable Prize Sensor" )
+ PORT_DIPNAME( 0x10, 0x10, "UNK2-10 Disable Prize Sensor" )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, "UNK2-20" )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, "UNK2-40" )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, "UNK2-80" )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( ufomini )
+ PORT_INCLUDE( newufo )
+
+ PORT_MODIFY("IN2")
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( ufo21 )
+ PORT_START("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Button")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P1 Service Coin")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("P1 Coin 1")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("P2 Service Coin")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("P2 Coin 1")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_PLAYER(2)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_PLAYER(2)
+
+ PORT_START("DSW1") // coinage
+ PORT_DIPNAME( 0x01, 0x01, "UNK1-01" )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, "UNK1-02" )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, "UNK1-04" )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "UNK1-08" )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, "UNK1-10" )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, "UNK1-20" )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, "UNK1-40" )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, "UNK1-80" )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("DSW2")
+ PORT_DIPNAME( 0x01, 0x01, "UNK2-01" )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, "UNK2-02" )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, "UNK2-04" )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "UNK2-08 Demo Music On" )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, "UNK2-10" )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, "UNK2-20" )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, "UNK2-40" )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, "UNK2-80" )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( ufo800 )
+ PORT_START("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Button")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P1 Service Coin")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("P1 Coin 1")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("P1 Coin 2")
+ PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("DSW1") // coinage
+ PORT_DIPNAME( 0x01, 0x01, "UNK1-01" )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, "UNK1-02" )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, "UNK1-04" )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "UNK1-08" )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, "UNK1-10" )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, "UNK1-20" )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, "UNK1-40" )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, "UNK1-80" )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("DSW2")
+ PORT_DIPNAME( 0x01, 0x01, "UNK2-01 BGM Select" )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, "UNK2-02 BGM Select" )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, "UNK2-04" )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "UNK2-08" )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, "UNK2-10" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "UNK2-20" )
@@ -370,20 +720,31 @@ void ufo_state::machine_reset()
void ufo_state::machine_start()
{
- // init/zerofill
+ // init/zerofill/register for savestates
static const float motor_speeds[4] =
{ 1.0f/CABINET_WIDTH, 1.0f/CABINET_DEPTH, 1.0f/CABINET_HEIGHT, 1.0f/CRANE_SIZE };
- for (int p = 0; p < 2; p++)
+ for (int m = 0; m < 4; m++)
{
- for (int m = 0; m < 4; m++)
+ for (int p = 0; p < 2; p++)
{
m_player[p].motor[m].running = 0;
m_player[p].motor[m].direction = 0;
m_player[p].motor[m].position = 0.5;
m_player[p].motor[m].speed = motor_speeds[m];
}
+
+ save_item(NAME(m_player[0].motor[m].running), m);
+ save_item(NAME(m_player[0].motor[m].direction), m);
+ save_item(NAME(m_player[0].motor[m].position), m);
+
+ save_item(NAME(m_player[1].motor[m].running), m);
+ save_item(NAME(m_player[1].motor[m].direction), m);
+ save_item(NAME(m_player[1].motor[m].position), m);
}
+
+ m_stepper = 0;
+ save_item(NAME(m_stepper));
}
WRITE_LINE_MEMBER(ufo_state::ym3438_irq)
@@ -391,27 +752,26 @@ WRITE_LINE_MEMBER(ufo_state::ym3438_irq)
m_maincpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE);
}
-static MACHINE_CONFIG_START( ufo, ufo_state )
+static MACHINE_CONFIG_START( newufo, ufo_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", Z80, 8000000)
+ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2)
MCFG_CPU_PROGRAM_MAP(ufo_map)
MCFG_CPU_IO_MAP(ufo_portmap)
MCFG_TIMER_DRIVER_ADD_PERIODIC("motor_timer", ufo_state, simulate_xyz, attotime::from_hz(MOTOR_SPEED))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("update_timer", ufo_state, update_info, attotime::from_hz(60))
- MCFG_DEVICE_ADD("io1", SEGA_315_5296, 16000000)
+ MCFG_DEVICE_ADD("io1", SEGA_315_5296, XTAL_16MHz)
// all ports set to input
MCFG_315_5296_IN_PORTA_CB(READ8(ufo_state, crane_limits_r))
MCFG_315_5296_IN_PORTB_CB(READ8(ufo_state, crane_limits_r))
-// MCFG_315_5296_IN_PORTC_CB(NOOP)
-// MCFG_315_5296_IN_PORTD_CB(NOOP)
- MCFG_315_5296_IN_PORTE_CB(IOPORT("P1"))
+ MCFG_315_5296_IN_PORTE_CB(IOPORT("IN1"))
MCFG_315_5296_IN_PORTF_CB(IOPORT("DSW1"))
MCFG_315_5296_IN_PORTG_CB(IOPORT("DSW2"))
- MCFG_315_5296_IN_PORTH_CB(IOPORT("P2"))
+ MCFG_315_5296_IN_PORTH_CB(IOPORT("IN2"))
- MCFG_DEVICE_ADD("io2", SEGA_315_5296, 16000000)
+ MCFG_DEVICE_ADD("io2", SEGA_315_5296, XTAL_16MHz)
// all ports set to output
MCFG_315_5296_OUT_PORTA_CB(WRITE8(ufo_state, stepper_w))
MCFG_315_5296_OUT_PORTB_CB(WRITE8(ufo_state, cp_lamps_w))
@@ -420,14 +780,13 @@ static MACHINE_CONFIG_START( ufo, ufo_state )
MCFG_315_5296_OUT_PORTE_CB(WRITE8(ufo_state, crane_xyz_w))
MCFG_315_5296_OUT_PORTF_CB(WRITE8(ufo_state, crane_xyz_w))
MCFG_315_5296_OUT_PORTG_CB(WRITE8(ufo_state, ufo_lamps_w))
-// MCFG_315_5296_OUT_PORTH_CB(NOOP)
- MCFG_DEVICE_ADD("pit", PIT8254, 0) // uPD71054C, configuration is unknown
- MCFG_PIT8253_CLK0(8000000/256)
+ MCFG_DEVICE_ADD("pit", PIT8254, XTAL_16MHz/2) // uPD71054C, configuration is unknown
+ MCFG_PIT8253_CLK0(XTAL_16MHz/2/256)
MCFG_PIT8253_OUT0_HANDLER(WRITELINE(ufo_state, pit_out0))
- MCFG_PIT8253_CLK1(8000000/256)
+ MCFG_PIT8253_CLK1(XTAL_16MHz/2/256)
MCFG_PIT8253_OUT1_HANDLER(WRITELINE(ufo_state, pit_out1))
- MCFG_PIT8253_CLK2(8000000/256)
+ MCFG_PIT8253_CLK2(XTAL_16MHz/2/256)
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(ufo_state, pit_out2))
/* no video! */
@@ -435,12 +794,67 @@ static MACHINE_CONFIG_START( ufo, ufo_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("ym", YM3438, 8000000)
+ MCFG_SOUND_ADD("ym", YM3438, XTAL_16MHz/2)
MCFG_YM2612_IRQ_HANDLER(WRITELINE(ufo_state, ym3438_irq))
MCFG_SOUND_ROUTE(0, "mono", 0.40)
MCFG_SOUND_ROUTE(1, "mono", 0.40)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( ufomini, newufo )
+
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("io1")
+ MCFG_315_5296_IN_PORTC_CB(IOPORT("IN1"))
+ MCFG_315_5296_IN_PORTE_CB(NULL)
+ MCFG_315_5296_IN_PORTH_CB(NULL)
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( ufo21, newufo )
+
+ /* basic machine hardware */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_IO_MAP(ex_ufo21_portmap)
+
+ MCFG_DEVICE_MODIFY("io1")
+ MCFG_315_5296_IN_PORTA_CB(READ8(ufo_state, ex_crane_limits_r))
+ MCFG_315_5296_IN_PORTB_CB(READ8(ufo_state, ex_crane_limits_r))
+ MCFG_315_5296_IN_PORTC_CB(READ8(ufo_state, ex_crane_open_r))
+
+ MCFG_DEVICE_MODIFY("io2")
+ MCFG_315_5296_OUT_PORTA_CB(WRITE8(ufo_state, ex_stepper_w))
+ MCFG_315_5296_OUT_PORTB_CB(WRITE8(ufo_state, ex_cp_lamps_w))
+ MCFG_315_5296_OUT_PORTE_CB(WRITE8(ufo_state, ex_crane_xyz_w))
+ MCFG_315_5296_OUT_PORTF_CB(WRITE8(ufo_state, ex_crane_xyz_w))
+ MCFG_315_5296_OUT_PORTG_CB(NULL)
+
+ /* sound hardware */
+ MCFG_SOUND_ADD("upd", UPD7759, UPD7759_STANDARD_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( ufo800, newufo )
+
+ /* basic machine hardware */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_IO_MAP(ex_ufo800_portmap)
+
+ MCFG_DEVICE_MODIFY("io1")
+ MCFG_315_5296_IN_PORTA_CB(READ8(ufo_state, ex_crane_limits_r))
+ MCFG_315_5296_IN_PORTB_CB(IOPORT("IN2"))
+ MCFG_315_5296_IN_PORTC_CB(READ8(ufo_state, ex_crane_open_r))
+ MCFG_315_5296_IN_PORTD_CB(IOPORT("IN1"))
+ MCFG_315_5296_IN_PORTE_CB(NULL)
+ MCFG_315_5296_IN_PORTH_CB(NULL)
+
+ MCFG_DEVICE_MODIFY("io2")
+ MCFG_315_5296_OUT_PORTA_CB(WRITE8(ufo_state, ex_stepper_w))
+ MCFG_315_5296_OUT_PORTB_CB(WRITE8(ufo_state, ex_cp_lamps_w))
+ MCFG_315_5296_OUT_PORTE_CB(WRITE8(ufo_state, ex_crane_xyz_w))
+ MCFG_315_5296_OUT_PORTF_CB(WRITE8(ufo_state, ex_ufo800_lamps_w))
+ MCFG_315_5296_OUT_PORTG_CB(NULL)
+MACHINE_CONFIG_END
+
/***************************************************************************
@@ -490,10 +904,10 @@ ROM_START( ufo800 )
ROM_END
-GAME (1991, newufo, 0, ufo, ufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (standard)", GAME_MECHANICAL )
-GAME (1991, newufo_sonic, newufo, ufo, ufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Sonic The Hedgehog)", GAME_MECHANICAL )
-GAME (1991, newufo_nfl, newufo, ufo, ufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Team NFL)", GAME_MECHANICAL )
-GAME (1991, newufo_xmas, newufo, ufo, ufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Christmas season ROM kit)", GAME_MECHANICAL )
-GAME (1991, ufomini, 0, ufo, ufo, driver_device, 0, ROT0, "Sega", "UFO Catcher Mini", GAME_NOT_WORKING | GAME_MECHANICAL )
-GAME (1996, ufo21, 0, ufo, ufo, driver_device, 0, ROT0, "Sega", "UFO Catcher 21", GAME_NOT_WORKING | GAME_MECHANICAL )
-GAME (1998, ufo800, 0, ufo, ufo, driver_device, 0, ROT0, "Sega", "UFO Catcher 800", GAME_NOT_WORKING | GAME_MECHANICAL )
+GAMEL( 1991, newufo, 0, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (standard)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_newufo )
+GAMEL( 1991, newufo_sonic, newufo, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Sonic The Hedgehog)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_newufo )
+GAMEL( 1991, newufo_nfl, newufo, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Team NFL)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_newufo )
+GAMEL( 1991, newufo_xmas, newufo, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Christmas season ROM kit)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_newufo )
+GAMEL( 1991, ufomini, 0, ufomini, ufomini, driver_device, 0, ROT0, "Sega", "UFO Catcher Mini", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_ufomini )
+GAMEL( 1996, ufo21, 0, ufo21, ufo21, driver_device, 0, ROT0, "Sega", "UFO Catcher 21", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_ufo21 )
+GAMEL( 1998, ufo800, 0, ufo800, ufo800, driver_device, 0, ROT0, "Sega", "UFO Catcher 800", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_ufo800 )
diff --git a/src/mame/drivers/starwars.c b/src/mame/drivers/starwars.c
index 9784ec386cd..a4bbcc7df49 100644
--- a/src/mame/drivers/starwars.c
+++ b/src/mame/drivers/starwars.c
@@ -62,8 +62,8 @@ void starwars_state::machine_reset()
address_space &space = m_maincpu->space(AS_PROGRAM);
/* reset the slapstic */
- slapstic_reset();
- m_slapstic_current_bank = slapstic_bank();
+ m_slapstic_device->slapstic_reset();
+ m_slapstic_current_bank = m_slapstic_device->slapstic_bank();
memcpy(m_slapstic_base, &m_slapstic_source[m_slapstic_current_bank * 0x2000], 0x2000);
/* reset all the banks */
@@ -97,7 +97,7 @@ WRITE8_MEMBER(starwars_state::irq_ack_w)
void starwars_state::esb_slapstic_tweak(address_space &space, offs_t offset)
{
- int new_bank = slapstic_tweak(space, offset);
+ int new_bank = m_slapstic_device->slapstic_tweak(space, offset);
/* update for the new bank */
if (new_bank != m_slapstic_current_bank)
@@ -331,6 +331,8 @@ static MACHINE_CONFIG_START( starwars, starwars_state )
MCFG_CPU_PERIODIC_INT_DRIVER(starwars_state, irq0_line_assert, CLOCK_3KHZ / 12)
MCFG_WATCHDOG_TIME_INIT(attotime::from_hz(CLOCK_3KHZ / 128))
+ MCFG_SLAPSTIC_ADD("slapstic")
+
MCFG_CPU_ADD("audiocpu", M6809, MASTER_CLOCK / 8)
MCFG_CPU_PROGRAM_MAP(sound_map)
@@ -524,7 +526,7 @@ DRIVER_INIT_MEMBER(starwars_state,esb)
UINT8 *rom = memregion("maincpu")->base();
/* init the slapstic */
- slapstic_init(machine(), 101);
+ m_slapstic_device->slapstic_init(machine(), 101);
m_slapstic_source = &rom[0x14000];
m_slapstic_base = &rom[0x08000];
diff --git a/src/mame/drivers/stv.c b/src/mame/drivers/stv.c
index a3dcc5c7f61..4f15d799d73 100644
--- a/src/mame/drivers/stv.c
+++ b/src/mame/drivers/stv.c
@@ -1021,6 +1021,9 @@ static MACHINE_CONFIG_START( stv, stv_state )
MCFG_SOUND_ADD("cdda", CDDA, 0)
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+
+ MCFG_DEVICE_ADD("315_5881", SEGA315_5881_CRYPT, 0)
+ MCFG_SET_READ_CALLBACK(stv_state, crypt_read_callback)
MACHINE_CONFIG_END
/*
diff --git a/src/mame/drivers/taito_f3.c b/src/mame/drivers/taito_f3.c
index 0e0a55240ef..2290a0346d8 100644
--- a/src/mame/drivers/taito_f3.c
+++ b/src/mame/drivers/taito_f3.c
@@ -3178,6 +3178,40 @@ ROM_START( arkretrn )
ROM_LOAD( "palce16v8-d77-14.bin", 0x0800, 0x0117, CRC(7427e777) SHA1(e692cedb13e5bc02edc4b25e9dcea51e6715de85) )
ROM_END
+ROM_START( arkretrnu )
+ ROM_REGION(0x200000, "maincpu", 0) /* 68020 code */
+ ROM_LOAD32_BYTE("e36-11.20", 0x000000, 0x040000, CRC(b50cfb92) SHA1(dac69fc9ef03315b11bb94d19e3dfdc8867b08ed) )
+ ROM_LOAD32_BYTE("e36-10.19", 0x000001, 0x040000, CRC(c940dba1) SHA1(ec87c9e4250f8b2f15094681a4783bca8c68f576) )
+ ROM_LOAD32_BYTE("e36-09.18", 0x000002, 0x040000, CRC(f16985e0) SHA1(a74cfee8f958e7a32354d4353eeb199a7fb1ce64) )
+ ROM_LOAD32_BYTE("e36-14.17", 0x000003, 0x040000, CRC(3360cfa1) SHA1(b06afc392b3864a895aed3a406d5d9886b1d0894) )
+
+ ROM_REGION(0x180000, "audiocpu", 0) /* Sound CPU */
+ ROM_LOAD16_BYTE("e36-12.32", 0x100000, 0x40000, CRC(3bae39be) SHA1(777142ecc24799b934ed51ac4cd8700bb6da7e3c) )
+ ROM_LOAD16_BYTE("e36-13.33", 0x100001, 0x40000, CRC(94448e82) SHA1(d7766490318623be770545918391c5e6144dd619) )
+
+ ROM_REGION(0x100000, "gfx1" , 0) /* Sprites */
+ ROM_LOAD16_BYTE("e36-03.12", 0x000000, 0x040000, CRC(1ea8558b) SHA1(b8ea4d6e1fb551b3c47f336a5e60ec33f7be525f) )
+ ROM_LOAD16_BYTE("e36-02.8", 0x000001, 0x040000, CRC(694eda31) SHA1(1a6f85057395052571491f85c633d5632ab64865) )
+ ROM_LOAD ("e36-01.4", 0x0c0000, 0x040000, CRC(54b9b2cd) SHA1(55ae964ea1d2cc40a6578c5339754a270096f01f) )
+ ROM_FILL ( 0x080000, 0x040000, 0 )
+
+ ROM_REGION(0x200000, "gfx2" , 0) /* Tiles */
+ ROM_LOAD16_BYTE("e36-07.47", 0x000000, 0x080000, CRC(266bf1c1) SHA1(489549478d7016400af2e643d4b98bf605237d34) )
+ ROM_LOAD16_BYTE("e36-06.45", 0x000001, 0x080000, CRC(110ab729) SHA1(0ccc0a5abbcfd79a069daf5162cd344a5fb225d5) )
+ ROM_LOAD ("e36-05.43", 0x180000, 0x080000, CRC(db18bce2) SHA1(b6653facc7f5c624f5710a51f2b2abfe640177e2) )
+ ROM_FILL ( 0x100000, 0x080000, 0 )
+
+ ROM_REGION16_BE(0x400000, "ensoniq.0" , ROMREGION_ERASE00 ) // V2: 4 banks, only 1 populated
+ ROM_LOAD16_BYTE("e36-04.38", 0x000000, 0x200000, CRC(2250959b) SHA1(06943f1b72bdf325485356a01278d88aeae93d87) ) // C8 C9 CA CB
+
+ ROM_REGION( 0x0a00, "plds", 0 )
+ ROM_LOAD( "pal16l8a-d77-09.bin", 0x0000, 0x0104, CRC(b371532b) SHA1(7f875f380e69d14326a036a09d2fda7554b73664) )
+ ROM_LOAD( "pal16l8a-d77-10.bin", 0x0200, 0x0104, CRC(42f59227) SHA1(1f0db7489b49c00603ea51d130c9dfc237545390) )
+ ROM_LOAD( "palce16v8-d77-11.bin", 0x0400, 0x0117, CRC(eacc294e) SHA1(90679d523d90c1f8d2ecbd7b6fac2861f94cf107) )
+ ROM_LOAD( "palce16v8-d77-12.bin", 0x0600, 0x0117, CRC(e9920cfe) SHA1(58b73fe65f118d57fdce56d781593fc70c797f1b) )
+ ROM_LOAD( "palce16v8-d77-14.bin", 0x0800, 0x0117, CRC(7427e777) SHA1(e692cedb13e5bc02edc4b25e9dcea51e6715de85) )
+ROM_END
+
ROM_START( arkretrnj )
ROM_REGION(0x200000, "maincpu", 0) /* 68020 code */
ROM_LOAD32_BYTE("e36-11.20", 0x000000, 0x040000, CRC(b50cfb92) SHA1(dac69fc9ef03315b11bb94d19e3dfdc8867b08ed) )
@@ -4120,6 +4154,7 @@ GAME( 1996, pbobble3, 0, f3, f3, taito_f3_state, pbobble3, ROT0, "
GAME( 1996, pbobble3u,pbobble3, f3, f3, taito_f3_state, pbobble3, ROT0, "Taito Corporation", "Puzzle Bobble 3 (Ver 2.1A 1996/09/27)", 0 )
GAME( 1996, pbobble3j,pbobble3, f3, f3, taito_f3_state, pbobble3, ROT0, "Taito Corporation", "Puzzle Bobble 3 (Ver 2.1J 1996/09/27)", 0 )
GAME( 1997, arkretrn, 0, f3, f3, taito_f3_state, arkretrn, ROT0, "Taito Corporation", "Arkanoid Returns (Ver 2.02O 1997/02/10)", 0 )
+GAME( 1997, arkretrnu,arkretrn, f3, f3, taito_f3_state, arkretrn, ROT0, "Taito Corporation", "Arkanoid Returns (Ver 2.02A 1997/02/10)", 0 )
GAME( 1997, arkretrnj,arkretrn, f3, f3, taito_f3_state, arkretrn, ROT0, "Taito Corporation", "Arkanoid Returns (Ver 2.02J 1997/02/10)", 0 )
GAME( 1997, kirameki, 0, f3_224a, f3, taito_f3_state, kirameki, ROT0, "Taito Corporation", "Kirameki Star Road (Ver 2.10J 1997/08/29)", 0 )
GAME( 1997, puchicar, 0, f3, f3, taito_f3_state, puchicar, ROT0, "Taito Corporation", "Puchi Carat (Ver 2.02O 1997/10/29)", 0 )
diff --git a/src/mame/drivers/taitowlf.c b/src/mame/drivers/taitowlf.c
index 3cdbbde6b68..e08ece8bac7 100644
--- a/src/mame/drivers/taitowlf.c
+++ b/src/mame/drivers/taitowlf.c
@@ -27,7 +27,7 @@ clocks 50MHz (near 3DFX) and 14.31818MHz (near RAMDAC)
#include "emu.h"
#include "cpu/i386/i386.h"
-#include "machine/pci.h"
+#include "machine/lpci.h"
#include "machine/pcshare.h"
#include "machine/pckeybrd.h"
#if ENABLE_VGA
diff --git a/src/mame/drivers/tmnt.c b/src/mame/drivers/tmnt.c
index 55b83b16dad..2e4e9072412 100644
--- a/src/mame/drivers/tmnt.c
+++ b/src/mame/drivers/tmnt.c
@@ -2894,13 +2894,12 @@ ROM_START( tmhta )
ROM_LOAD( "963a25.d5", 0x00000, 0x80000, CRC(fca078c7) SHA1(3e1124d72c9db4cb11d8de6c44b7aeca967f44e1) )
ROM_END
-
ROM_START( tmhtb ) // the code is closest to tmntua near the start, and the data is closest to all the UK sets, especially tmhta, so I'm guessing it's a UK revision of the tmntua codebase
ROM_REGION( 0x60000, "maincpu", 0 ) /* 2*128k and 2*64k for 68000 code */
- ROM_LOAD16_BYTE( "unk3.i17", 0x00000, 0x20000, CRC(537eb047) SHA1(97e6dbc486c7d057355db7fcbdc0a2c2cad2c653) )
+ ROM_LOAD16_BYTE( "unk3.i17", 0x00000, 0x20000, CRC(537eb047) SHA1(97e6dbc486c7d057355db7fcbdc0a2c2cad2c653) ) /* unknown 963 xxx Konami code for this set */
ROM_LOAD16_BYTE( "unk4.k17", 0x00001, 0x20000, CRC(5afae564) SHA1(8d5fbf9530ad8d095c12b7e0f8c499c1436c4d47) )
- ROM_LOAD16_BYTE( "unk2.j15", 0x40000, 0x10000, CRC(ee34de05) SHA1(507d7fb178dbbe87dd373a81ad3f350ee2f7d923))
- ROM_LOAD16_BYTE( "unk1.k15", 0x40001, 0x10000, NO_DUMP )
+ ROM_LOAD16_BYTE( "unk2.j15", 0x40000, 0x10000, CRC(ee34de05) SHA1(507d7fb178dbbe87dd373a81ad3f350ee2f7d923) )
+ ROM_LOAD16_BYTE( "unk5.k15", 0x40001, 0x10000, CRC(5ef58d4e) SHA1(5df71c61a90c3e9d28ec3b8055d7ee97bc283e01) )
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "963e20.g13", 0x00000, 0x08000, CRC(1692a6d6) SHA1(68c3419012b2863e91a7d7e479fce5ceabb10b88) )
@@ -2929,7 +2928,6 @@ ROM_START( tmhtb ) // the code is closest to tmntua near the start, and the data
ROM_LOAD( "963a25.d5", 0x00000, 0x80000, CRC(fca078c7) SHA1(3e1124d72c9db4cb11d8de6c44b7aeca967f44e1) )
ROM_END
-
ROM_START( tmntj )
ROM_REGION( 0x60000, "maincpu", 0 ) /* 2*128k and 2*64k for 68000 code */
ROM_LOAD16_BYTE( "963_223.j17", 0x00000, 0x20000, CRC(0d34a5ff) SHA1(a387f3e7c727dc66ebb0e1f40e4ab8dc83f647e5) )
@@ -4102,7 +4100,7 @@ GAME( 1989, tmntu, tmnt, tmnt, tmnt, tmnt_state, tmnt,
GAME( 1989, tmntua, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (US 4 Players, set 2)", GAME_SUPPORTS_SAVE )
GAME( 1989, tmht, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 4 Players, set 1)", GAME_SUPPORTS_SAVE )
GAME( 1989, tmhta, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 4 Players, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1989, tmhtb, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK?, unknown revision)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // incomplete dump
+GAME( 1989, tmhtb, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 4 Players, set 3)", GAME_SUPPORTS_SAVE )
GAME( 1990, tmntj, tmnt, tmnt, tmnt, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (Japan 4 Players)", GAME_SUPPORTS_SAVE )
GAME( 1989, tmht2p, tmnt, tmnt, tmnt2p, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 2 Players, set 1)", GAME_SUPPORTS_SAVE )
GAME( 1989, tmht2pa, tmnt, tmnt, tmnt2p, tmnt_state, tmnt, ROT0, "Konami", "Teenage Mutant Hero Turtles (UK 2 Players, set 2)", GAME_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/toaplan2.c b/src/mame/drivers/toaplan2.c
index 80d038d3ef1..31ff351c572 100644
--- a/src/mame/drivers/toaplan2.c
+++ b/src/mame/drivers/toaplan2.c
@@ -5206,6 +5206,32 @@ ROM_START( bbakraid )
ROM_END
+ROM_START( bbakraidc )
+ ROM_REGION( 0x200000, "maincpu", 0 ) /* Main 68k code */
+ ROM_LOAD16_BYTE( "prg0u022_china.bin", 0x000000, 0x080000, CRC(760be084) SHA1(096c8a2336492d7370ae25f3385faebf6e9c3eca) )
+ ROM_LOAD16_BYTE( "prg1u023.new", 0x000001, 0x080000, CRC(4ae9aa64) SHA1(45fdf72141c4c9f24a38d4218c65874799b9c868) )
+ ROM_LOAD16_BYTE( "prg2u021.bin", 0x100000, 0x080000, CRC(ffba8656) SHA1(6526bb65fad3384de3f301a7d1095cbf03757433) )
+ ROM_LOAD16_BYTE( "prg3u024.bin", 0x100001, 0x080000, CRC(834b8ad6) SHA1(0dd6223bb0749819ad29811eeb04fd08d937abb0) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Sound Z80 code */
+ ROM_LOAD( "sndu0720.bin", 0x00000, 0x20000, CRC(e62ab246) SHA1(00d23689dd423ecd4024c58b5903d16e890f1dff) )
+
+ ROM_REGION( 0x1000000, "gp9001", 0 )
+ ROM_LOAD( "gfxu0510.bin", 0x000000, 0x400000, CRC(9cca3446) SHA1(1123f8b8bfbe59a2c572cdf61f1ad27ff37f0f0d) )
+ ROM_LOAD( "gfxu0512.bin", 0x400000, 0x400000, CRC(a2a281d5) SHA1(d9a6623f9433ad682223f9780c26cd1523ebc5c5) )
+ ROM_LOAD( "gfxu0511.bin", 0x800000, 0x400000, CRC(e16472c0) SHA1(6068d679a8b3b65e05acd58a7ce9ead90177049f) )
+ ROM_LOAD( "gfxu0513.bin", 0xc00000, 0x400000, CRC(8bb635a0) SHA1(9064f1a2d8bb88ddbca702fb8556d0dfe6a5cadc) )
+
+ ROM_REGION( 0x0c00000, "ymz", 0 ) /* YMZ280B Samples */
+ ROM_LOAD( "rom6.829", 0x000000, 0x400000, CRC(8848b4a0) SHA1(e0dce136c5d5a4c1a92b863e57848cd5927d06f1) )
+ ROM_LOAD( "rom7.830", 0x400000, 0x400000, CRC(d6224267) SHA1(5c9b7b13effbef9f707811f84bfe50ca85e605e3) )
+ ROM_LOAD( "rom8.831", 0x800000, 0x400000, CRC(a101dfb0) SHA1(4b729b0d562e09df35438e9e6b457b8de2690a6e) )
+
+ ROM_REGION( 0x200, "eeprom", 0 )
+ ROM_LOAD( "eeprom-bbakraid-new.bin", 0x000, 0x200, CRC(35c9275a) SHA1(1282034adf3c7a24545fd273729867058dc93027) )
+ROM_END
+
+
ROM_START( bbakraidj )
ROM_REGION( 0x200000, "maincpu", 0 ) /* Main 68k code */
ROM_LOAD16_BYTE( "prg0u022.new", 0x000000, 0x080000, CRC(fa8d38d3) SHA1(aba91d87a8a62d3fe1139b4437b16e2f844264ad) )
@@ -5344,6 +5370,7 @@ GAME( 1998, batridert, batrider, batrider, batrider, toaplan2_state, batrider,
// Battle Bakraid
// the 'unlimited' version is a newer revision of the code
GAME( 1999, bbakraid, 0, bbakraid, bbakraid, toaplan2_state, bbakraid, ROT270, "Eighting", "Battle Bakraid - Unlimited Version (USA) (Tue Jun 8 1999)", GAME_SUPPORTS_SAVE )
+GAME( 1999, bbakraidc, bbakraid, bbakraid, bbakraid, toaplan2_state, bbakraid, ROT270, "Eighting", "Battle Bakraid - Unlimited Version (China) (Tue Jun 8 1999)", GAME_SUPPORTS_SAVE )
GAME( 1999, bbakraidj, bbakraid, bbakraid, bbakraid, toaplan2_state, bbakraid, ROT270, "Eighting", "Battle Bakraid - Unlimited Version (Japan) (Tue Jun 8 1999)", GAME_SUPPORTS_SAVE )
// older revision of the code
GAME( 1999, bbakraidja, bbakraid, bbakraid, bbakraid, toaplan2_state, bbakraid, ROT270, "Eighting", "Battle Bakraid (Japan) (Wed Apr 7 1999)", GAME_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/uapce.c b/src/mame/drivers/uapce.c
index 6717e65d346..96da81b95ca 100644
--- a/src/mame/drivers/uapce.c
+++ b/src/mame/drivers/uapce.c
@@ -1,6 +1,6 @@
/*
- United Amusement PC-Engine based hardware
+ United Amusements PC-Engine based hardware
Driver by Mariusz Wojcieszek
Thanks for Charles MacDonald for hardware docs
@@ -12,7 +12,7 @@
History
- In 1989 United Amusement (a large operator of arcades in the US at that
+ In 1989 United Amusements (a large operator of arcades in the US at that
time) developed a JAMMA interface for the PC-Engine with NEC's blessing. NEC
pulled funding for the project before mass production began, and it never
took off.
diff --git a/src/mame/drivers/vigilant.c b/src/mame/drivers/vigilant.c
index 4df1ad1c28e..5f405152a6b 100644
--- a/src/mame/drivers/vigilant.c
+++ b/src/mame/drivers/vigilant.c
@@ -606,84 +606,82 @@ MACHINE_CONFIG_END
***************************************************************************/
+
ROM_START( vigilant )
ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
- ROM_LOAD( "g07_c03.bin", 0x00000, 0x08000, CRC(9dcca081) SHA1(6d086b70e6bf1fbafa746ef5c82334645f199be9) )
- ROM_LOAD( "j07_c04.bin", 0x10000, 0x10000, CRC(e0159105) SHA1(da6d74ec075863c67c0ce21b07a54029d138f688) )
+ ROM_LOAD( "vg_a-8h-e.ic55", 0x00000, 0x10000, CRC(64735989) SHA1(0d1330eacbbe54fd98b3d6f81e770462a3a2372d) ) // 1ST AND 2ND HALF IDENTICAL (correct)
+ ROM_LOAD( "vg_a-8l-a.ic57", 0x10000, 0x10000, CRC(690d812f) SHA1(60d6513f8b27411018cdca1b25f94bc281476ae7) )
/* 0x20000-0x2ffff empty */
ROM_REGION( 0x10000, "soundcpu", 0 ) /* 64k for sound */
- ROM_LOAD( "g05_c02.bin", 0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) )
+ ROM_LOAD( "vg_a-5j-.ic37", 0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) )
ROM_REGION( 0x20000, "gfx1", 0 )
- ROM_LOAD( "f05_c08.bin", 0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
- ROM_LOAD( "h05_c09.bin", 0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
+ ROM_LOAD( "vg_b-4f-.ic33", 0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
+ ROM_LOAD( "vg_b-4j-.ic34", 0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
- ROM_REGION( 0x80000, "gfx2", 0 )
- ROM_LOAD( "n07_c12.bin", 0x00000, 0x10000, CRC(10af8eb2) SHA1(664b178b248babc43a9af0fe140fe57bc7367762) )
- ROM_LOAD( "k07_c10.bin", 0x10000, 0x10000, CRC(9576f304) SHA1(0ec2a7d3d82208e2a9a4ef9ab2824e6fe26ebbe5) )
- ROM_LOAD( "o07_c13.bin", 0x20000, 0x10000, CRC(b1d9d4dc) SHA1(1aacf6b0ff8d102880d3dce3b55cd1488edb90cf) )
- ROM_LOAD( "l07_c11.bin", 0x30000, 0x10000, CRC(4598be4a) SHA1(6b68ec94bdee0e58133a8d3891054ef44a8ff0e5) )
- ROM_LOAD( "t07_c16.bin", 0x40000, 0x10000, CRC(f5425e42) SHA1(c401263b6a266d3e9cd23133f1d823fb4b095e3d) )
- ROM_LOAD( "p07_c14.bin", 0x50000, 0x10000, CRC(cb50a17c) SHA1(eb15704f715b6475ae7096f8d82f1b20f8277c71) )
- ROM_LOAD( "v07_c17.bin", 0x60000, 0x10000, CRC(959ba3c7) SHA1(dcd2a885ae7b61210cbd55a38ccbe91c73d071b0) )
- ROM_LOAD( "s07_c15.bin", 0x70000, 0x10000, CRC(7f2e91c5) SHA1(27dcc9b696834897c36c0b7a1c6202d93f41ad8d) )
+ ROM_REGION( 0x80000, "gfx2", 0 ) // confirmed original board uses 4 roms
+ ROM_LOAD( "vg_b-6l-.ic61", 0x00000, 0x10000, CRC(fbe9552d) SHA1(3c7c218f13c0a94bb624745d81d63db9423777ea) )
+ ROM_CONTINUE(0x20000,0x10000)
+ ROM_LOAD( "vg_b-6k-.ic60", 0x10000, 0x10000, CRC(ae09d5c0) SHA1(9da5b824b148c1e1478e3f4b44ba4348376ed7d5) )
+ ROM_CONTINUE(0x30000,0x10000)
+ ROM_LOAD( "vg_b-6p-.ic63", 0x40000, 0x10000, CRC(afb77461) SHA1(18707768a4768b579c94092a260e286d3214b977) )
+ ROM_CONTINUE(0x60000,0x10000)
+ ROM_LOAD( "vg_b-6n-.ic62", 0x50000, 0x10000, CRC(5065cd35) SHA1(9a03c5af024fcae6b3371bb04be3e811ecc390d7) )
+ ROM_CONTINUE(0x70000,0x10000)
ROM_REGION( 0x40000, "gfx3", 0 )
- ROM_LOAD( "d01_c05.bin", 0x00000, 0x10000, CRC(81b1ee5c) SHA1(2014165ec71f089fecb5a3e60b939cc0f565d7f1) )
- ROM_LOAD( "e01_c06.bin", 0x10000, 0x10000, CRC(d0d33673) SHA1(39761d97a71deaf7f17233d5bd5a55dbb1e6b30e) )
- ROM_LOAD( "f01_c07.bin", 0x20000, 0x10000, CRC(aae81695) SHA1(ca8e136eca3543b27f3a61b105d4a280711cd6ea) )
+ ROM_LOAD( "vg_b-1d-.ic1", 0x00000, 0x10000, CRC(81b1ee5c) SHA1(2014165ec71f089fecb5a3e60b939cc0f565d7f1) )
+ ROM_LOAD( "vg_b-1f-.ic2", 0x10000, 0x10000, CRC(d0d33673) SHA1(39761d97a71deaf7f17233d5bd5a55dbb1e6b30e) )
+ ROM_LOAD( "vg_b-1h-.ic3", 0x20000, 0x10000, CRC(aae81695) SHA1(ca8e136eca3543b27f3a61b105d4a280711cd6ea) )
ROM_REGION( 0x10000, "samples", 0 ) /* samples */
- ROM_LOAD( "d04_c01.bin", 0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) )
+ ROM_LOAD( "vg_a-4d-.ic26", 0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) )
ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected */
ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) )
ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) )
- ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
+ ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
ROM_END
-
-
ROM_START( vigilant1 )
ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
- ROM_LOAD( "vg_a-8h-c.rom", 0x00000, 0x08000, CRC(d72682e8) SHA1(2401a6397164ff66d96f6023f021c615d70108a5) ) /* Slot labeled 27256 = 256kb = 32KB confirmed */
- ROM_LOAD( "vg_a-8l-a.rom", 0x10000, 0x10000, CRC(690d812f) SHA1(60d6513f8b27411018cdca1b25f94bc281476ae7) )
+ ROM_LOAD( "vg_a-8h-c.ic55", 0x00000, 0x08000, CRC(d72682e8) SHA1(2401a6397164ff66d96f6023f021c615d70108a5) ) /* Slot labeled 27256 = 256kb = 32KB confirmed */
+ ROM_LOAD( "vg_a-8l-a.ic57", 0x10000, 0x10000, CRC(690d812f) SHA1(60d6513f8b27411018cdca1b25f94bc281476ae7) )
/* 0x20000-0x2ffff empty */
ROM_REGION( 0x10000, "soundcpu", 0 ) /* 64k for sound */
- ROM_LOAD( "g05_c02.bin", 0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) )
+ ROM_LOAD( "vg_a-5j-.ic37", 0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) )
ROM_REGION( 0x20000, "gfx1", 0 )
- ROM_LOAD( "f05_c08.bin", 0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
- ROM_LOAD( "h05_c09.bin", 0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
+ ROM_LOAD( "vg_b-4f-.ic33", 0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
+ ROM_LOAD( "vg_b-4j-.ic34", 0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
- ROM_REGION( 0x80000, "gfx2", 0 )
- ROM_LOAD( "n07_c12.bin", 0x00000, 0x10000, CRC(10af8eb2) SHA1(664b178b248babc43a9af0fe140fe57bc7367762) )
- ROM_LOAD( "k07_c10.bin", 0x10000, 0x10000, CRC(9576f304) SHA1(0ec2a7d3d82208e2a9a4ef9ab2824e6fe26ebbe5) )
- ROM_LOAD( "o07_c13.bin", 0x20000, 0x10000, CRC(b1d9d4dc) SHA1(1aacf6b0ff8d102880d3dce3b55cd1488edb90cf) )
- ROM_LOAD( "l07_c11.bin", 0x30000, 0x10000, CRC(4598be4a) SHA1(6b68ec94bdee0e58133a8d3891054ef44a8ff0e5) )
- ROM_LOAD( "t07_c16.bin", 0x40000, 0x10000, CRC(f5425e42) SHA1(c401263b6a266d3e9cd23133f1d823fb4b095e3d) )
- ROM_LOAD( "p07_c14.bin", 0x50000, 0x10000, CRC(cb50a17c) SHA1(eb15704f715b6475ae7096f8d82f1b20f8277c71) )
- ROM_LOAD( "v07_c17.bin", 0x60000, 0x10000, CRC(959ba3c7) SHA1(dcd2a885ae7b61210cbd55a38ccbe91c73d071b0) )
- ROM_LOAD( "s07_c15.bin", 0x70000, 0x10000, CRC(7f2e91c5) SHA1(27dcc9b696834897c36c0b7a1c6202d93f41ad8d) )
+ ROM_REGION( 0x80000, "gfx2", 0 ) // confirmed original board uses 4 roms
+ ROM_LOAD( "vg_b-6l-.ic61", 0x00000, 0x10000, CRC(fbe9552d) SHA1(3c7c218f13c0a94bb624745d81d63db9423777ea) )
+ ROM_CONTINUE(0x20000,0x10000)
+ ROM_LOAD( "vg_b-6k-.ic60", 0x10000, 0x10000, CRC(ae09d5c0) SHA1(9da5b824b148c1e1478e3f4b44ba4348376ed7d5) )
+ ROM_CONTINUE(0x30000,0x10000)
+ ROM_LOAD( "vg_b-6p-.ic63", 0x40000, 0x10000, CRC(afb77461) SHA1(18707768a4768b579c94092a260e286d3214b977) )
+ ROM_CONTINUE(0x60000,0x10000)
+ ROM_LOAD( "vg_b-6n-.ic62", 0x50000, 0x10000, CRC(5065cd35) SHA1(9a03c5af024fcae6b3371bb04be3e811ecc390d7) )
+ ROM_CONTINUE(0x70000,0x10000)
ROM_REGION( 0x40000, "gfx3", 0 )
- ROM_LOAD( "d01_c05.bin", 0x00000, 0x10000, CRC(81b1ee5c) SHA1(2014165ec71f089fecb5a3e60b939cc0f565d7f1) )
- ROM_LOAD( "e01_c06.bin", 0x10000, 0x10000, CRC(d0d33673) SHA1(39761d97a71deaf7f17233d5bd5a55dbb1e6b30e) )
- ROM_LOAD( "f01_c07.bin", 0x20000, 0x10000, CRC(aae81695) SHA1(ca8e136eca3543b27f3a61b105d4a280711cd6ea) )
+ ROM_LOAD( "vg_b-1d-.ic1", 0x00000, 0x10000, CRC(81b1ee5c) SHA1(2014165ec71f089fecb5a3e60b939cc0f565d7f1) )
+ ROM_LOAD( "vg_b-1f-.ic2", 0x10000, 0x10000, CRC(d0d33673) SHA1(39761d97a71deaf7f17233d5bd5a55dbb1e6b30e) )
+ ROM_LOAD( "vg_b-1h-.ic3", 0x20000, 0x10000, CRC(aae81695) SHA1(ca8e136eca3543b27f3a61b105d4a280711cd6ea) )
ROM_REGION( 0x10000, "samples", 0 ) /* samples */
- ROM_LOAD( "d04_c01.bin", 0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) )
+ ROM_LOAD( "vg_a-4d-.ic26", 0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) )
ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected */
ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) )
ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) )
- ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
+ ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
ROM_END
-
-ROM_START( vigilantu )
+ROM_START( vigilantu ) /* Need to determine the correct original roms & IC locations for this set */
ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
ROM_LOAD( "a-8h", 0x00000, 0x08000, CRC(8d15109e) SHA1(9ef57047a0b53cd0143a260193b33e3d5680ca71) )
ROM_LOAD( "a-8l", 0x10000, 0x10000, CRC(7f95799b) SHA1(a371671c3c26976314aaac4e410bff0f13a8a085) )
@@ -696,7 +694,7 @@ ROM_START( vigilantu )
ROM_LOAD( "f05_c08.bin", 0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
ROM_LOAD( "h05_c09.bin", 0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
- ROM_REGION( 0x80000, "gfx2", 0 )
+ ROM_REGION( 0x80000, "gfx2", 0 ) // 8 roms is a bootleg configuration?
ROM_LOAD( "n07_c12.bin", 0x00000, 0x10000, CRC(10af8eb2) SHA1(664b178b248babc43a9af0fe140fe57bc7367762) )
ROM_LOAD( "k07_c10.bin", 0x10000, 0x10000, CRC(9576f304) SHA1(0ec2a7d3d82208e2a9a4ef9ab2824e6fe26ebbe5) )
ROM_LOAD( "o07_c13.bin", 0x20000, 0x10000, CRC(b1d9d4dc) SHA1(1aacf6b0ff8d102880d3dce3b55cd1488edb90cf) )
@@ -717,10 +715,10 @@ ROM_START( vigilantu )
ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected */
ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) )
ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) )
- ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
+ ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
ROM_END
-ROM_START( vigilantu2 )
+ROM_START( vigilantu2 ) /* Need to determine the correct original roms & IC locations for this set */
ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
ROM_LOAD( "vg-a-8h-g.bin", 0x00000, 0x08000, CRC(9444c04e) SHA1(463d2dae48df2d237bd19d5e16cab032df0d9052) ) /* labeled Rev. G */
ROM_LOAD( "a-8l", 0x10000, 0x10000, CRC(7f95799b) SHA1(a371671c3c26976314aaac4e410bff0f13a8a085) )
@@ -733,7 +731,7 @@ ROM_START( vigilantu2 )
ROM_LOAD( "f05_c08.bin", 0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
ROM_LOAD( "h05_c09.bin", 0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
- ROM_REGION( 0x80000, "gfx2", 0 )
+ ROM_REGION( 0x80000, "gfx2", 0 ) // 8 roms is a bootleg configuration?
ROM_LOAD( "n07_c12.bin", 0x00000, 0x10000, CRC(10af8eb2) SHA1(664b178b248babc43a9af0fe140fe57bc7367762) )
ROM_LOAD( "k07_c10.bin", 0x10000, 0x10000, CRC(9576f304) SHA1(0ec2a7d3d82208e2a9a4ef9ab2824e6fe26ebbe5) )
ROM_LOAD( "o07_c13.bin", 0x20000, 0x10000, CRC(b1d9d4dc) SHA1(1aacf6b0ff8d102880d3dce3b55cd1488edb90cf) )
@@ -754,13 +752,50 @@ ROM_START( vigilantu2 )
ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected - sourced from this board */
ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) )
ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) )
- ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
+ ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
ROM_END
ROM_START( vigilantj )
ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
- ROM_LOAD( "vg_a-8h.rom", 0x00000, 0x08000, CRC(ba848713) SHA1(b357cbf404fb1874d555797ed9fb37f946cc4340) )
- ROM_LOAD( "vg_a-8l.rom", 0x10000, 0x10000, CRC(3b12b1d8) SHA1(2f9207f8d8ec41ea1b8f5bf3c69a97d1d09f6c3f) )
+ ROM_LOAD( "vg_a-8h-d.ic55", 0x00000, 0x10000, CRC(6480bd03) SHA1(f238811b9618ac6be441fcce211e769678b54a05) ) // 1ST AND 2ND HALF IDENTICAL (correct)
+ ROM_LOAD( "vg_a-8l-d.ic57", 0x10000, 0x10000, CRC(3b12b1d8) SHA1(2f9207f8d8ec41ea1b8f5bf3c69a97d1d09f6c3f) )
+ /* 0x20000-0x2ffff empty */
+
+ ROM_REGION( 0x10000, "soundcpu", 0 ) /* 64k for sound */
+ ROM_LOAD( "vg_a-5j-.ic37", 0x00000, 0x10000, CRC(10582b2d) SHA1(6e7e5f07c49b347b427572efeb180c89f49bf2c7) )
+
+ ROM_REGION( 0x20000, "gfx1", 0 )
+ ROM_LOAD( "vg_b-4f-.ic33", 0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
+ ROM_LOAD( "vg_b-4j-.ic34", 0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
+
+ ROM_REGION( 0x80000, "gfx2", 0 ) // confirmed original board uses 4 roms
+ ROM_LOAD( "vg_b-6l-.ic61", 0x00000, 0x10000, CRC(fbe9552d) SHA1(3c7c218f13c0a94bb624745d81d63db9423777ea) )
+ ROM_CONTINUE(0x20000,0x10000)
+ ROM_LOAD( "vg_b-6k-.ic60", 0x10000, 0x10000, CRC(ae09d5c0) SHA1(9da5b824b148c1e1478e3f4b44ba4348376ed7d5) )
+ ROM_CONTINUE(0x30000,0x10000)
+ ROM_LOAD( "vg_b-6p-.ic63", 0x40000, 0x10000, CRC(afb77461) SHA1(18707768a4768b579c94092a260e286d3214b977) )
+ ROM_CONTINUE(0x60000,0x10000)
+ ROM_LOAD( "vg_b-6n-.ic62", 0x50000, 0x10000, CRC(5065cd35) SHA1(9a03c5af024fcae6b3371bb04be3e811ecc390d7) )
+ ROM_CONTINUE(0x70000,0x10000)
+
+ ROM_REGION( 0x40000, "gfx3", 0 ) // this should be 2x 23C1000 on Japan sets
+ ROM_LOAD( "vg_b-1d-.ic1", 0x00000, 0x10000, CRC(81b1ee5c) SHA1(2014165ec71f089fecb5a3e60b939cc0f565d7f1) )
+ ROM_LOAD( "vg_b-1f-.ic2", 0x10000, 0x10000, CRC(d0d33673) SHA1(39761d97a71deaf7f17233d5bd5a55dbb1e6b30e) )
+ ROM_LOAD( "vg_b-1h-.ic3", 0x20000, 0x10000, CRC(aae81695) SHA1(ca8e136eca3543b27f3a61b105d4a280711cd6ea) )
+
+ ROM_REGION( 0x10000, "samples", 0 ) /* samples */
+ ROM_LOAD( "vg_a-4d-.ic26", 0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) )
+
+ ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected */
+ ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) )
+ ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) )
+ ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
+ROM_END
+
+ROM_START( vigilantb ) /* Likely a bootleg */
+ ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
+ ROM_LOAD( "g07_c03.bin", 0x00000, 0x08000, CRC(9dcca081) SHA1(6d086b70e6bf1fbafa746ef5c82334645f199be9) )
+ ROM_LOAD( "j07_c04.bin", 0x10000, 0x10000, CRC(e0159105) SHA1(da6d74ec075863c67c0ce21b07a54029d138f688) )
/* 0x20000-0x2ffff empty */
ROM_REGION( 0x10000, "soundcpu", 0 ) /* 64k for sound */
@@ -770,7 +805,7 @@ ROM_START( vigilantj )
ROM_LOAD( "f05_c08.bin", 0x00000, 0x10000, CRC(01579d20) SHA1(e58d8ca0ea0ac9d77225bf55faa499d1565924f9) )
ROM_LOAD( "h05_c09.bin", 0x10000, 0x10000, CRC(4f5872f0) SHA1(6af21ba1c94097eecce30585983b4b07528c8635) )
- ROM_REGION( 0x80000, "gfx2", 0 )
+ ROM_REGION( 0x80000, "gfx2", 0 ) // 8 roms is a bootleg configuration?
ROM_LOAD( "n07_c12.bin", 0x00000, 0x10000, CRC(10af8eb2) SHA1(664b178b248babc43a9af0fe140fe57bc7367762) )
ROM_LOAD( "k07_c10.bin", 0x10000, 0x10000, CRC(9576f304) SHA1(0ec2a7d3d82208e2a9a4ef9ab2824e6fe26ebbe5) )
ROM_LOAD( "o07_c13.bin", 0x20000, 0x10000, CRC(b1d9d4dc) SHA1(1aacf6b0ff8d102880d3dce3b55cd1488edb90cf) )
@@ -788,12 +823,13 @@ ROM_START( vigilantj )
ROM_REGION( 0x10000, "samples", 0 ) /* samples */
ROM_LOAD( "d04_c01.bin", 0x00000, 0x10000, CRC(9b85101d) SHA1(6b8a0f33b9b66bb968f7b61e49d19a6afad8db95) )
- ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 */
+ ROM_REGION( 0x0600, "plds", 0 ) /* All are pal16l8 - protected */
ROM_LOAD( "vg_b-8r.ic90", 0x0000, 0x0117, CRC(df368a7a) SHA1(597d85d1f90b7ee0188f2d849792ee02ff2ea48b) )
ROM_LOAD( "vg_b-4m.ic38", 0x0200, 0x0117, CRC(dbca4204) SHA1(d8e190f2dc4d6285f22be331d01ed402520d2017) )
- ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
+ ROM_LOAD( "vg_b-1b.ic1", 0x0400, 0x0117, CRC(922e5167) SHA1(08efdfdfeb35f3f73b6fd3d5c0c2a386dea5f617) )
ROM_END
+
ROM_START( kikcubic )
ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
ROM_LOAD( "mqj-p0", 0x00000, 0x08000, CRC(9cef394a) SHA1(be9cc78420b4c35f8f9523b529bd56315749762c) )
@@ -853,6 +889,7 @@ ROM_START( kikcubicb )
ROM_LOAD( "7s", 0x0120, 0x0020, CRC(face0cbb) SHA1(c56aea3b7aaabbd4ff1b4546fcad94f51b473cde) ) /* unknown (bad read?) */
ROM_END
+
ROM_START( buccanrs )
ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for bankswitching */
ROM_LOAD( "11.u58", 0x00000, 0x10000, CRC(bf1d7e6f) SHA1(55dcf993515b57c3eb1fab98097a2171df3e38ed) ) // both halves are identical (correct for rom type on this board tho)
@@ -926,12 +963,15 @@ ROM_START( buccanrsa )
ROM_LOAD( "prom2.u99", 0x0300, 0x0100, CRC(e0aa8869) SHA1(ac8bdfeba69420ba56ec561bf3d0f1229d02cea2) )
ROM_END
-GAME( 1988, vigilant, 0, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (World, set 1)", GAME_NO_COCKTAIL )
-GAME( 1988, vigilant1,vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (World, set 2)", GAME_NO_COCKTAIL )
-GAME( 1988, vigilantu,vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East USA license)", "Vigilante (US)", GAME_NO_COCKTAIL )
-GAME( 1988, vigilantu2,vigilant,vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East USA license)", "Vigilante (US) - Rev. G", GAME_NO_COCKTAIL )
-GAME( 1988, vigilantj,vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (Japan)", GAME_NO_COCKTAIL )
-GAME( 1988, kikcubic, 0, kikcubic, kikcubic, driver_device, 0, ROT0, "Irem", "Meikyu Jima (Japan)", GAME_NO_COCKTAIL ) /* English title is Kickle Cubicle */
-GAME( 1988, kikcubicb,kikcubic, kikcubic, kikcubic, driver_device, 0, ROT0, "bootleg", "Kickle Cubele", GAME_NO_COCKTAIL )
-GAME( 1989, buccanrs, 0, buccanrs, buccanrs, driver_device, 0, ROT0, "Duintronic", "Buccaneers (set 1)", GAME_NO_COCKTAIL )
-GAME( 1989, buccanrsa,buccanrs, buccanrs, buccanra, driver_device, 0, ROT0, "Duintronic", "Buccaneers (set 2)", GAME_NO_COCKTAIL )
+GAME( 1988, vigilant, 0, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (World, Rev E)", GAME_NO_COCKTAIL )
+GAME( 1988, vigilant1, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (World, Rev C)", GAME_NO_COCKTAIL )
+GAME( 1988, vigilantu, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East USA license)", "Vigilante (US)", GAME_NO_COCKTAIL )
+GAME( 1988, vigilantu2,vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East USA license)", "Vigilante (US, Rev G)", GAME_NO_COCKTAIL )
+GAME( 1988, vigilantj, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (Japan, Rev D)", GAME_NO_COCKTAIL )
+GAME( 1988, vigilantb, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "bootleg", "Vigilante (bootleg)", GAME_NO_COCKTAIL )
+
+GAME( 1988, kikcubic, 0, kikcubic, kikcubic, driver_device, 0, ROT0, "Irem", "Meikyu Jima (Japan)", GAME_NO_COCKTAIL ) /* English title is Kickle Cubicle */
+GAME( 1988, kikcubicb, kikcubic, kikcubic, kikcubic, driver_device, 0, ROT0, "bootleg", "Kickle Cubele", GAME_NO_COCKTAIL )
+
+GAME( 1989, buccanrs, 0, buccanrs, buccanrs, driver_device, 0, ROT0, "Duintronic", "Buccaneers (set 1)", GAME_NO_COCKTAIL )
+GAME( 1989, buccanrsa, buccanrs, buccanrs, buccanra, driver_device, 0, ROT0, "Duintronic", "Buccaneers (set 2)", GAME_NO_COCKTAIL )
diff --git a/src/mame/drivers/vindictr.c b/src/mame/drivers/vindictr.c
index ade2ce54585..b36a516eb63 100644
--- a/src/mame/drivers/vindictr.c
+++ b/src/mame/drivers/vindictr.c
@@ -184,6 +184,8 @@ static MACHINE_CONFIG_START( vindictr, vindictr_state )
MCFG_CPU_ADD("maincpu", M68010, ATARI_CLOCK_14MHz/2)
MCFG_CPU_PROGRAM_MAP(main_map)
+ MCFG_SLAPSTIC_ADD("slapstic") // where is this hooked up here?
+
MCFG_MACHINE_RESET_OVERRIDE(vindictr_state,vindictr)
MCFG_ATARI_EEPROM_2804_ADD("eeprom")
diff --git a/src/mame/drivers/viper.c b/src/mame/drivers/viper.c
index de35287dc6d..449d2c5874d 100644
--- a/src/mame/drivers/viper.c
+++ b/src/mame/drivers/viper.c
@@ -283,7 +283,7 @@ An additional control PCB is used for Mocap Golf for the golf club sensor. It co
#include "emu.h"
#include "cpu/powerpc/ppc.h"
-#include "machine/pci.h"
+#include "machine/lpci.h"
#include "machine/ataintf.h"
#include "machine/idehd.h"
#include "machine/timekpr.h"
diff --git a/src/mame/drivers/voyager.c b/src/mame/drivers/voyager.c
index 542b225f255..0cd0af108be 100644
--- a/src/mame/drivers/voyager.c
+++ b/src/mame/drivers/voyager.c
@@ -14,7 +14,7 @@ TODO: VIA KT133a chipset support, GeForce 2MX video support, lots of things ;-)
#include "emu.h"
#include "cpu/i386/i386.h"
-#include "machine/pci.h"
+#include "machine/lpci.h"
#include "machine/pcshare.h"
#include "machine/pckeybrd.h"
#include "machine/idectrl.h"
diff --git a/src/mame/drivers/xtom3d.c b/src/mame/drivers/xtom3d.c
index 5d42912f4eb..7bf0d85c94d 100644
--- a/src/mame/drivers/xtom3d.c
+++ b/src/mame/drivers/xtom3d.c
@@ -40,7 +40,7 @@ MX29F1610MC 16M FlashROM (x7)
#include "emu.h"
#include "cpu/i386/i386.h"
-#include "machine/pci.h"
+#include "machine/lpci.h"
#include "machine/pcshare.h"
#include "machine/pckeybrd.h"
#include "machine/idectrl.h"
diff --git a/src/mame/drivers/xybots.c b/src/mame/drivers/xybots.c
index 9bfc3adee36..948e7aa33ae 100644
--- a/src/mame/drivers/xybots.c
+++ b/src/mame/drivers/xybots.c
@@ -184,6 +184,8 @@ static MACHINE_CONFIG_START( xybots, xybots_state )
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
+ MCFG_SLAPSTIC_ADD("slapstic")
+
MCFG_MACHINE_RESET_OVERRIDE(xybots_state,xybots)
MCFG_ATARI_EEPROM_2804_ADD("eeprom")
diff --git a/src/mame/drivers/yunsun16.c b/src/mame/drivers/yunsun16.c
index aefa02ab5b6..f4cf6cd16e0 100644
--- a/src/mame/drivers/yunsun16.c
+++ b/src/mame/drivers/yunsun16.c
@@ -578,11 +578,11 @@ WRITE_LINE_MEMBER(yunsun16_state::soundirq)
static MACHINE_CONFIG_START( magicbub, yunsun16_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M68000, 16000000)
+ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", yunsun16_state, irq2_line_hold)
- MCFG_CPU_ADD("audiocpu", Z80, 3000000) /* ? */
+ MCFG_CPU_ADD("audiocpu", Z80, XTAL_16MHz/4)
MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_CPU_IO_MAP(sound_port_map)
@@ -601,12 +601,12 @@ static MACHINE_CONFIG_START( magicbub, yunsun16_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_SOUND_ADD("ymsnd", YM3812, 4000000)
+ MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_16MHz/4)
MCFG_YM3812_IRQ_HANDLER(WRITELINE(yunsun16_state, soundirq))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
- MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH)
+ MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
MACHINE_CONFIG_END
@@ -619,7 +619,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( shocking, yunsun16_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M68000, 16000000)
+ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", yunsun16_state, irq2_line_hold)
@@ -637,7 +637,7 @@ static MACHINE_CONFIG_START( shocking, yunsun16_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH)
+ MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
MACHINE_CONFIG_END
@@ -715,7 +715,7 @@ ROM_START( magicbub )
ROM_LOAD16_BYTE( "magbuble.u32", 0x000001, 0x040000, CRC(f6ea7004) SHA1(069541e37b60370810451616ee66bbd05dc10137) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 Code */
- ROM_LOAD( "magbuble.143", 0x00000, 0x10000, CRC(04192753) SHA1(9c56ba70e1d074906ea1dc593c2a8516c6ba2074) )
+ ROM_LOAD( "u143.bin", 0x00000, 0x10000, CRC(04192753) SHA1(9c56ba70e1d074906ea1dc593c2a8516c6ba2074) )
ROM_REGION( 0x200000*8, "gfx1", ROMREGION_ERASEFF ) /* 16x16x8 */
ROMX_LOAD( "magbuble.u67", 0x000000, 0x080000, CRC(6355e57d) SHA1(5e9234dd474ddcf0a9e1001080f3de11c7d0ee55) , ROM_GROUPWORD | ROM_SKIP(6))
@@ -724,13 +724,13 @@ ROM_START( magicbub )
ROMX_LOAD( "magbuble.u70", 0x000006, 0x080000, CRC(37794837) SHA1(11597614e1e048544326fbbe281b364278d6350d) , ROM_GROUPWORD | ROM_SKIP(6))
ROM_REGION( 0x080000, "gfx2", 0 ) /* 16x16x4 */
- ROM_LOAD( "magbuble.u20", 0x000000, 0x020000, CRC(f70e3b8c) SHA1(d925c27bbd0f915228d22589a98e3ea7181a87ca) )
- ROM_LOAD( "magbuble.u21", 0x020000, 0x020000, CRC(ad082cf3) SHA1(0bc3cf6c54d47be4f1940192fc1585cb48767e97) )
- ROM_LOAD( "magbuble.u22", 0x040000, 0x020000, CRC(7c68df7a) SHA1(88acf9dd43892a790415b418f77d88c747aa84f5) )
- ROM_LOAD( "magbuble.u23", 0x060000, 0x020000, CRC(c7763fc1) SHA1(ed68b3c3c5155073afb7b55d6d92d3057e40df6c) )
+ ROM_LOAD( "u20.bin", 0x000000, 0x020000, CRC(f70e3b8c) SHA1(d925c27bbd0f915228d22589a98e3ea7181a87ca) )
+ ROM_LOAD( "u21.bin", 0x020000, 0x020000, CRC(ad082cf3) SHA1(0bc3cf6c54d47be4f1940192fc1585cb48767e97) )
+ ROM_LOAD( "u22.bin", 0x040000, 0x020000, CRC(7c68df7a) SHA1(88acf9dd43892a790415b418f77d88c747aa84f5) )
+ ROM_LOAD( "u23.bin", 0x060000, 0x020000, CRC(c7763fc1) SHA1(ed68b3c3c5155073afb7b55d6d92d3057e40df6c) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
- ROM_LOAD( "magbuble.131", 0x000000, 0x020000, CRC(03e04e89) SHA1(7d80e6a7be2322e32e40acae72bedd8d7e90ad33) )
+ ROM_LOAD( "u131.bin", 0x000000, 0x020000, CRC(03e04e89) SHA1(7d80e6a7be2322e32e40acae72bedd8d7e90ad33) )
ROM_END
@@ -741,7 +741,7 @@ ROM_START( magicbuba )
ROM_LOAD16_BYTE( "u32.bin", 0x000001, 0x040000, CRC(58f885ad) SHA1(e66f5bb1ac0acd9abc2def439af7f932c3a09cbd) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 Code */
- ROM_LOAD( "magbuble.143", 0x00000, 0x10000, CRC(04192753) SHA1(9c56ba70e1d074906ea1dc593c2a8516c6ba2074) )
+ ROM_LOAD( "u143.bin", 0x00000, 0x10000, CRC(04192753) SHA1(9c56ba70e1d074906ea1dc593c2a8516c6ba2074) )
ROM_REGION( 0x200000*8, "gfx1", ROMREGION_ERASEFF ) /* 16x16x8 */
ROMX_LOAD( "u67.bin", 0x000000, 0x080000, CRC(89523dcd) SHA1(edea2bbec615aa253d940bbc3bbdb33f6873a8ee) , ROM_GROUPWORD | ROM_SKIP(6))
@@ -754,13 +754,43 @@ ROM_START( magicbuba )
ROMX_LOAD( "u74.bin", 0x200006, 0x080000, CRC(81ff4910) SHA1(69241fe2d20b53984aa67f17d8da32e1b74ce696) , ROM_GROUPWORD | ROM_SKIP(6))
ROM_REGION( 0x080000, "gfx2", 0 ) /* 16x16x4 */
- ROM_LOAD( "magbuble.u20", 0x000000, 0x020000, CRC(f70e3b8c) SHA1(d925c27bbd0f915228d22589a98e3ea7181a87ca) )
- ROM_LOAD( "magbuble.u21", 0x020000, 0x020000, CRC(ad082cf3) SHA1(0bc3cf6c54d47be4f1940192fc1585cb48767e97) )
- ROM_LOAD( "magbuble.u22", 0x040000, 0x020000, CRC(7c68df7a) SHA1(88acf9dd43892a790415b418f77d88c747aa84f5) )
- ROM_LOAD( "magbuble.u23", 0x060000, 0x020000, CRC(c7763fc1) SHA1(ed68b3c3c5155073afb7b55d6d92d3057e40df6c) )
+ ROM_LOAD( "u20.bin", 0x000000, 0x020000, CRC(f70e3b8c) SHA1(d925c27bbd0f915228d22589a98e3ea7181a87ca) )
+ ROM_LOAD( "u21.bin", 0x020000, 0x020000, CRC(ad082cf3) SHA1(0bc3cf6c54d47be4f1940192fc1585cb48767e97) )
+ ROM_LOAD( "u22.bin", 0x040000, 0x020000, CRC(7c68df7a) SHA1(88acf9dd43892a790415b418f77d88c747aa84f5) )
+ ROM_LOAD( "u23.bin", 0x060000, 0x020000, CRC(c7763fc1) SHA1(ed68b3c3c5155073afb7b55d6d92d3057e40df6c) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
- ROM_LOAD( "magbuble.131", 0x000000, 0x020000, CRC(03e04e89) SHA1(7d80e6a7be2322e32e40acae72bedd8d7e90ad33) )
+ ROM_LOAD( "u131.bin", 0x000000, 0x020000, CRC(03e04e89) SHA1(7d80e6a7be2322e32e40acae72bedd8d7e90ad33) )
+
+ROM_END
+
+ROM_START( magicbubb ) /* Found on a YS-0211 PCB like below */
+
+ ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 Code */
+ ROM_LOAD16_BYTE( "u33", 0x000000, 0x040000, CRC(db651555) SHA1(41dbf35147e1c646db585437b378529559d3decb) )
+ ROM_LOAD16_BYTE( "u32", 0x000001, 0x040000, CRC(c9cb4d88) SHA1(ee41b9b307b423db7a9d706dfa9718efefa3b625) )
+
+ ROM_REGION( 0x200000*8, "gfx1", ROMREGION_ERASEFF ) /* 16x16x8 */
+ ROMX_LOAD( "u67.bin", 0x000000, 0x080000, CRC(89523dcd) SHA1(edea2bbec615aa253d940bbc3bbdb33f6873a8ee) , ROM_GROUPWORD | ROM_SKIP(6))
+ ROMX_LOAD( "u68.bin", 0x000002, 0x080000, CRC(30e01a70) SHA1(3a98c2ef61307b44bf4e155663117199587ff4a4) , ROM_GROUPWORD | ROM_SKIP(6))
+ ROMX_LOAD( "u69.bin", 0x000004, 0x080000, CRC(fe357f52) SHA1(5aff9a0bf70fc8a78820c4d13838ad238852c594) , ROM_GROUPWORD | ROM_SKIP(6))
+ ROMX_LOAD( "u70.bin", 0x000006, 0x080000, CRC(1398a473) SHA1(f58bda6cbf5f553a9632d910b2ffef5d5bfedf18) , ROM_GROUPWORD | ROM_SKIP(6))
+ ROMX_LOAD( "u71.bin", 0x200000, 0x080000, CRC(0844e017) SHA1(2ae5c9da521fea7aa5811627d7b3eca82cdc0821) , ROM_GROUPWORD | ROM_SKIP(6))
+ ROMX_LOAD( "u72.bin", 0x200002, 0x080000, CRC(591db1cb) SHA1(636fbfe9e048d6418d43f947004b281f61081fd8) , ROM_GROUPWORD | ROM_SKIP(6))
+ ROMX_LOAD( "u73.bin", 0x200004, 0x080000, CRC(cb4f3c3c) SHA1(fbd804bb70f09c2471557675af4c5b4abedea3b2) , ROM_GROUPWORD | ROM_SKIP(6))
+ ROMX_LOAD( "u74.bin", 0x200006, 0x080000, CRC(81ff4910) SHA1(69241fe2d20b53984aa67f17d8da32e1b74ce696) , ROM_GROUPWORD | ROM_SKIP(6))
+
+ ROM_REGION( 0x080000, "gfx2", 0 ) /* 16x16x4 */
+ ROM_LOAD( "u20.bin", 0x000000, 0x020000, CRC(f70e3b8c) SHA1(d925c27bbd0f915228d22589a98e3ea7181a87ca) )
+ ROM_LOAD( "u21.bin", 0x020000, 0x020000, CRC(ad082cf3) SHA1(0bc3cf6c54d47be4f1940192fc1585cb48767e97) )
+ ROM_LOAD( "u22.bin", 0x040000, 0x020000, CRC(7c68df7a) SHA1(88acf9dd43892a790415b418f77d88c747aa84f5) )
+ ROM_LOAD( "u23.bin", 0x060000, 0x020000, CRC(c7763fc1) SHA1(ed68b3c3c5155073afb7b55d6d92d3057e40df6c) )
+
+ ROM_REGION( 0x080000 * 2, "oki", 0 ) /* Samples */
+ ROM_LOAD( "u131", 0x000000, 0x040000, CRC(9bdb08e4) SHA1(4d8bdeb9b503b0959a6ae3f3fb3574350b01b1a1) )
+ ROM_RELOAD( 0x040000, 0x040000 )
+ ROM_RELOAD( 0x080000, 0x040000 )
+ ROM_RELOAD( 0x0c0000, 0x040000 )
ROM_END
@@ -772,6 +802,7 @@ YunSung YS-0211 based games:
Paparazzi (c) 1996 (no PCB label but looks identical)
Shocking (c) 1997
Bomb Kick (c) 1998
+Magic Bubble (c) 199?
PCB Layout
----------
@@ -956,10 +987,11 @@ ROM_END
***************************************************************************/
-GAME( 199?, magicbub, 0, magicbub, magicbub, yunsun16_state, magicbub, ROT0, "Yun Sung", "Magic Bubble", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 199?, magicbuba, magicbub, magicbub, magicbua, yunsun16_state, magicbub, ROT0, "Yun Sung", "Magic Bubble (Adult version)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1996, paprazzi, 0, shocking, paprazzi, driver_device, 0, ROT270, "Yun Sung", "Paparazzi", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1997, shocking, 0, shocking, shocking, driver_device, 0, ROT0, "Yun Sung", "Shocking", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1997, shockingk, shocking, shocking, shocking, driver_device, 0, ROT0, "Yun Sung", "Shocking (Korea)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1998, bombkick, 0, shocking, bombkick, driver_device, 0, ROT0, "Yun Sung", "Bomb Kick (set 1)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1998, bombkicka, bombkick, shocking, bombkick, driver_device, 0, ROT0, "Yun Sung", "Bomb Kick (set 2)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 199?, magicbub, 0, magicbub, magicbub, yunsun16_state, magicbub, ROT0, "Yun Sung", "Magic Bubble", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 199?, magicbuba, magicbub, magicbub, magicbua, yunsun16_state, magicbub, ROT0, "Yun Sung", "Magic Bubble (Adult version, YS-1302 PCB)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 199?, magicbubb, magicbub, shocking, magicbua, driver_device, 0, ROT0, "Yun Sung", "Magic Bubble (Adult version, YS-0211 PCB)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1996, paprazzi, 0, shocking, paprazzi, driver_device, 0, ROT270, "Yun Sung", "Paparazzi", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1997, shocking, 0, shocking, shocking, driver_device, 0, ROT0, "Yun Sung", "Shocking", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1997, shockingk, shocking, shocking, shocking, driver_device, 0, ROT0, "Yun Sung", "Shocking (Korea)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1998, bombkick, 0, shocking, bombkick, driver_device, 0, ROT0, "Yun Sung", "Bomb Kick (set 1)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1998, bombkicka, bombkick, shocking, bombkick, driver_device, 0, ROT0, "Yun Sung", "Bomb Kick (set 2)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
diff --git a/src/mame/includes/atarigx2.h b/src/mame/includes/atarigx2.h
index 2fd3bf9fc94..c68d9fd6693 100644
--- a/src/mame/includes/atarigx2.h
+++ b/src/mame/includes/atarigx2.h
@@ -8,6 +8,8 @@
#include "machine/atarigen.h"
#include "audio/atarijsa.h"
+#include "includes/slapstic.h"
+
class atarigx2_state : public atarigen_state
{
@@ -19,7 +21,8 @@ public:
m_protection_base(*this, "protection_base"),
m_playfield_tilemap(*this, "playfield"),
m_alpha_tilemap(*this, "alpha"),
- m_rle(*this, "rle") { }
+ m_rle(*this, "rle")
+ { }
UINT16 m_playfield_base;
diff --git a/src/mame/includes/atarisy2.h b/src/mame/includes/atarisy2.h
index f350e5d9d23..05345676cbe 100644
--- a/src/mame/includes/atarisy2.h
+++ b/src/mame/includes/atarisy2.h
@@ -10,6 +10,7 @@
#include "video/atarimo.h"
#include "cpu/m6502/m6502.h"
#include "cpu/t11/t11.h"
+#include "slapstic.h"
class atarisy2_state : public atarigen_state
{
@@ -25,7 +26,9 @@ public:
m_alpha_tilemap(*this, "alpha"),
m_rombank1(*this, "rombank1"),
m_rombank2(*this, "rombank2"),
- m_generic_paletteram_16(*this, "paletteram") { }
+ m_generic_paletteram_16(*this, "paletteram"),
+ m_slapstic(*this, "slapstic")
+ { }
required_device m_maincpu;
required_device m_audiocpu;
@@ -50,6 +53,7 @@ public:
required_shared_ptr m_rombank1;
required_shared_ptr m_rombank2;
required_shared_ptr m_generic_paletteram_16;
+ required_device m_slapstic;
UINT8 m_sound_reset_state;
diff --git a/src/mame/includes/atetris.h b/src/mame/includes/atetris.h
index 612f843f85c..5d0d258aa36 100644
--- a/src/mame/includes/atetris.h
+++ b/src/mame/includes/atetris.h
@@ -4,6 +4,8 @@
*************************************************************************/
+#include "includes/slapstic.h"
+
class atetris_state : public driver_device
{
public:
@@ -13,7 +15,9 @@ public:
m_videoram(*this, "videoram"),
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"),
- m_screen(*this, "screen") { }
+ m_screen(*this, "screen"),
+ m_slapstic_device(*this, "slapstic")
+ { }
required_shared_ptr m_nvram;
required_shared_ptr m_videoram;
@@ -40,4 +44,5 @@ public:
required_device m_maincpu;
required_device m_gfxdecode;
required_device m_screen;
+ optional_device m_slapstic_device;
};
diff --git a/src/mame/includes/harddriv.h b/src/mame/includes/harddriv.h
index 7025820e41b..2ac368ec555 100644
--- a/src/mame/includes/harddriv.h
+++ b/src/mame/includes/harddriv.h
@@ -13,7 +13,6 @@
#include "cpu/dsp32/dsp32.h"
#include "audio/atarijsa.h"
#include "sound/dac.h"
-#include "machine/atarigen.h"
#include "machine/mc68681.h"
#include "machine/asic65.h"
#include "machine/timekpr.h"
@@ -21,45 +20,29 @@
#define HARDDRIV_MASTER_CLOCK XTAL_32MHz
#define HARDDRIV_GSP_CLOCK XTAL_48MHz
-class harddriv_state : public atarigen_state
+extern const device_type HARDDRIV_DEVICE;
+extern const device_type HARDDRIV_BOARD_DEVICE;
+extern const device_type HARDDRIVC_BOARD_DEVICE;
+extern const device_type RACEDRIV_BOARD_DEVICE;
+extern const device_type RACEDRIVC_BOARD_DEVICE;
+extern const device_type RACEDRIVC1_BOARD_DEVICE;
+extern const device_type RACEDRIVB1_BOARD_DEVICE;
+extern const device_type RACEDRIVC_PANORAMA_SIDE_BOARD_DEVICE;
+extern const device_type STUNRUN_BOARD_DEVICE;
+extern const device_type STEELTAL_BOARD_DEVICE;
+extern const device_type STEELTAL1_BOARD_DEVICE;
+extern const device_type STEELTALP_BOARD_DEVICE;
+extern const device_type STRTDRIV_BOARD_DEVICE;
+extern const device_type HDRIVAIR_BOARD_DEVICE;
+extern const device_type HDRIVAIRP_BOARD_DEVICE;
+
+
+class harddriv_state : public device_t
+ /* public device_video_interface */
{
public:
- harddriv_state(const machine_config &mconfig, device_type type, const char *tag)
- : atarigen_state(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_gsp(*this, "gsp"),
- m_msp(*this, "msp"),
- m_adsp(*this, "adsp"),
- m_soundcpu(*this, "soundcpu"),
- m_sounddsp(*this, "sounddsp"),
- m_jsacpu(*this, "jsacpu"),
- m_dsp32(*this, "dsp32"),
- m_ds3sdsp(*this, "ds3sdsp"),
- m_ds3xdsp(*this, "ds3xdsp"),
- m_ds3dac1(*this, "ds3dac1"),
- m_ds3dac2(*this, "ds3dac2"),
- m_jsa(*this, "jsa"),
- m_msp_ram(*this, "msp_ram"),
- m_dsk_10c(*this, "dsk_10c"),
- m_dsk_30c(*this, "dsk_30c"),
- m_200e(*this, "200e"),
- m_210e(*this, "210e"),
- m_adsp_data_memory(*this, "adsp_data"),
- m_adsp_pgm_memory(*this, "adsp_pgm_memory"),
- m_ds3sdsp_data_memory(*this, "ds3sdsp_data"),
- m_ds3sdsp_pgm_memory(*this, "ds3sdsp_pgm"),
- m_ds3xdsp_pgm_memory(*this, "ds3xdsp_pgm"),
- m_sounddsp_ram(*this, "sounddsp_ram"),
- m_gsp_vram(*this, "gsp_vram", 16),
- m_gsp_control_lo(*this, "gsp_control_lo"),
- m_gsp_control_hi(*this, "gsp_control_hi"),
- m_gsp_paletteram_lo(*this, "gsp_palram_lo"),
- m_gsp_paletteram_hi(*this, "gsp_palram_hi"),
- m_ds3sdsp_internal_timer(*this, "ds3sdsp_timer"),
- m_ds3xdsp_internal_timer(*this, "ds3xdsp_timer"),
- m_dac(*this, "dac"),
- m_duart(*this, "duartn68681"),
- m_asic65(*this, "asic65") {}
+ harddriv_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
required_device m_maincpu;
required_device m_gsp;
@@ -268,22 +251,30 @@ public:
void init_driver_sound();
void racedrivc_init_common(offs_t gsp_protection);
void steeltal_init_common(offs_t ds3_transfer_pc, int proto_sloop);
- DECLARE_DRIVER_INIT(strtdriv);
- DECLARE_DRIVER_INIT(harddrivc);
- DECLARE_DRIVER_INIT(hdrivairp);
- DECLARE_DRIVER_INIT(racedriv);
- DECLARE_DRIVER_INIT(hdrivair);
- DECLARE_DRIVER_INIT(steeltal1);
- DECLARE_DRIVER_INIT(racedrivc);
- DECLARE_DRIVER_INIT(steeltal);
- DECLARE_DRIVER_INIT(racedrivc1);
- DECLARE_DRIVER_INIT(racedrivb1);
- DECLARE_DRIVER_INIT(harddriv);
- DECLARE_DRIVER_INIT(steeltalp);
- DECLARE_DRIVER_INIT(stunrun);
- DECLARE_MACHINE_START(harddriv);
- DECLARE_MACHINE_RESET(harddriv);
- DECLARE_VIDEO_START(harddriv);
+
+ void init_strtdriv(void);
+
+ void init_harddriv(void);
+
+ void init_harddrivc(void);
+
+ void init_racedriv(void);
+ void init_racedrivb1(void);
+
+ void init_racedrivc(void);
+ void init_racedrivc1(void);
+
+ void init_hdrivair(void);
+ void init_hdrivairp(void);
+
+ void init_steeltal(void);
+ void init_steeltal1(void);
+ void init_steeltalp(void);
+
+ void init_stunrun(void);
+ void init_racedrivc_panorama_side();
+
+ void init_video();
INTERRUPT_GEN_MEMBER(hd68k_irq_gen);
TIMER_CALLBACK_MEMBER(deferred_adsp_bank_switch);
TIMER_CALLBACK_MEMBER(rddsp32_sync_cb);
@@ -310,6 +301,7 @@ public:
DECLARE_READ16_MEMBER( hd68k_msp_io_r );
DECLARE_WRITE16_MEMBER( hd68k_msp_io_w );
+ DECLARE_READ16_MEMBER( hd68k_a80000_r );
DECLARE_READ16_MEMBER( hd68k_port0_r );
DECLARE_READ16_MEMBER( hd68k_adc8_r );
DECLARE_READ16_MEMBER( hd68k_adc12_r );
@@ -469,4 +461,195 @@ public:
TMS340X0_SCANLINE_IND16_CB_MEMBER(scanline_driver);
TMS340X0_SCANLINE_IND16_CB_MEMBER(scanline_multisync);
+
+ UINT8 m_sound_int_state;
+ UINT8 m_video_int_state;
+
+ optional_device m_palette;
+ int get_hblank(screen_device &screen) const { return (screen.hpos() > (screen.width() * 9 / 10)); }
+ WRITE16_MEMBER( watchdog_reset16_w );
+ INTERRUPT_GEN_MEMBER(video_int_gen);
+ DECLARE_WRITE_LINE_MEMBER(sound_int_write_line);
+ optional_device m_slapstic_device;
+protected:
+ //virtual machine_config_constructor device_mconfig_additions() const;
+ virtual void device_start();
+ virtual void device_reset();
};
+
+/* Hard Drivin' */
+
+class harddriv_board_device_state : public harddriv_state
+{
+public:
+ harddriv_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual void device_start();
+// virtual void device_reset();
+};
+
+/* Hard Drivin' Compact */
+
+class harddrivc_board_device_state : public harddriv_state
+{
+public:
+ harddrivc_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual void device_start();
+// virtual void device_reset();
+};
+
+/* Race Drivin' */
+
+class racedriv_board_device_state : public harddriv_state
+{
+public:
+ racedriv_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ DECLARE_WRITE_LINE_MEMBER(tx_a);
+
+protected:
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual void device_start();
+// virtual void device_reset();
+};
+
+class racedrivb1_board_device_state : public racedriv_board_device_state
+{
+public:
+ racedrivb1_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ racedriv_board_device_state(mconfig, tag, owner, clock)
+ {};
+
+protected:
+ virtual void device_start();
+};
+
+/* Race Drivin' Compact */
+
+class racedrivc_board_device_state : public harddriv_state
+{
+public:
+ racedrivc_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual void device_start();
+// virtual void device_reset();
+};
+
+class racedrivc1_board_device_state : public racedrivc_board_device_state
+{
+public:
+ racedrivc1_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ racedrivc_board_device_state(mconfig, tag, owner, clock)
+ {};
+protected:
+ virtual void device_start();
+};
+
+class racedrivc_panorama_side_board_device_state : public racedrivc_board_device_state
+{
+public:
+ racedrivc_panorama_side_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ racedrivc_board_device_state(mconfig, tag, owner, clock)
+ {};
+protected:
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual void device_start();
+};
+
+
+/* Stun Runner */
+
+class stunrun_board_device_state : public harddriv_state
+{
+public:
+ stunrun_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual void device_start();
+// virtual void device_reset();
+};
+
+/* Steel Talons */
+
+class steeltal_board_device_state : public harddriv_state
+{
+public:
+ steeltal_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual void device_start();
+// virtual void device_reset();
+};
+
+class steeltal1_board_device_state : public steeltal_board_device_state
+{
+public:
+ steeltal1_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ steeltal_board_device_state(mconfig, tag, owner, clock)
+ {};
+
+protected:
+ virtual void device_start();
+};
+
+class steeltalp_board_device_state : public steeltal_board_device_state
+{
+public:
+ steeltalp_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ steeltal_board_device_state(mconfig, tag, owner, clock)
+ {};
+
+protected:
+ virtual void device_start();
+};
+
+
+
+/* Street Drivin' */
+
+class strtdriv_board_device_state : public harddriv_state
+{
+public:
+ strtdriv_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual void device_start();
+// virtual void device_reset();
+};
+
+/* Hard Drivin' Airbourne */
+
+class hdrivair_board_device_state : public harddriv_state
+{
+public:
+ hdrivair_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual void device_start();
+// virtual void device_reset();
+};
+
+class hdrivairp_board_device_state : public hdrivair_board_device_state
+{
+public:
+ hdrivairp_board_device_state(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ hdrivair_board_device_state(mconfig, tag, owner, clock)
+ {};
+
+protected:
+ virtual void device_start();
+};
+
+
+
+
diff --git a/src/mame/includes/konamigx.h b/src/mame/includes/konamigx.h
index 0a4f1a497cd..b0bc8c01441 100644
--- a/src/mame/includes/konamigx.h
+++ b/src/mame/includes/konamigx.h
@@ -199,6 +199,11 @@ public:
UINT16 m_prot_data[0x20];
+ UINT16 *m_gx_spriteram;
+
+ // mirrored K054338 settings
+ int *m_K054338_shdRGB;
+
// 1st-Tier GX/MW Variables
// frequently used registers
int m_k053247_vrcbk[4];
@@ -236,14 +241,17 @@ public:
unsupported flipping modes (probably due to the way it's hooked up to the
rest of the chips) which is causing entirely the wrong output.
- -- furthermore video/konamigx.c contains it's own implementation of
- the K053936_zoom_draw named K053936GP_zoom_draw ...
+ -- furthermore video\k053936.c contains an implementation of
+ the K053936_zoom_draw named K053936GP_zoom_draw that's only used in konamigx ...
*/
bitmap_ind16 *m_gxtype1_roz_dstbitmap;
bitmap_ind16 *m_gxtype1_roz_dstbitmap2;
rectangle m_gxtype1_roz_dstbitmapclip;
+
+ int m_konamigx_type3_psac2_actual_bank;
+ //int m_konamigx_type3_psac2_actual_last_bank = 0;
};
// Sprite Callbacks
diff --git a/src/mame/includes/maygay1b.h b/src/mame/includes/maygay1b.h
index 0fc609a833a..44c2b7048fe 100644
--- a/src/mame/includes/maygay1b.h
+++ b/src/mame/includes/maygay1b.h
@@ -1,7 +1,7 @@
-#define VERBOSE 1
+#define VERBOSE 0
#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
#define M1_MASTER_CLOCK (XTAL_8MHz)
@@ -20,6 +20,9 @@
#include "sound/2413intf.h"
#include "sound/okim6376.h"
#include "machine/nvram.h"
+#include "sound/upd7759.h"
+
+#include "sound/okim6295.h"
class maygay1b_state : public driver_device
{
@@ -30,6 +33,8 @@ public:
m_vfd(*this, "vfd"),
m_ay(*this, "aysnd"),
m_msm6376(*this, "msm6376"),
+ m_upd7759(*this, "upd"),
+ m_okim6295(*this, "oki"),
m_duart68681(*this, "duart68681"),
m_sw1_port(*this, "SW1"),
m_sw2_port(*this, "SW2"),
@@ -38,13 +43,16 @@ public:
m_s4_port(*this, "STROBE4"),
m_s5_port(*this, "STROBE5"),
m_s6_port(*this, "STROBE6"),
- m_s7_port(*this, "STROBE7")
+ m_s7_port(*this, "STROBE7"),
+ m_bank1(*this, "bank1")
{}
required_device m_maincpu;
optional_device m_vfd;
required_device m_ay;
optional_device m_msm6376;
+ optional_device m_upd7759;
+ optional_device m_okim6295;
required_device m_duart68681;
required_ioport m_sw1_port;
required_ioport m_sw2_port;
@@ -54,6 +62,7 @@ public:
required_ioport m_s5_port;
required_ioport m_s6_port;
required_ioport m_s7_port;
+ required_memory_bank m_bank1;
UINT8 m_lamppos;
int m_lamp_strobe;
@@ -63,8 +72,8 @@ public:
int m_RAMEN;
int m_ALARMEN;
int m_PSUrelay;
+ bool m_Vmm;
int m_WDOG;
- int m_SRSEL;
int m_NMIENABLE;
int m_meter;
TIMER_DEVICE_CALLBACK_MEMBER( maygay1b_nmitimer_callback );
@@ -89,12 +98,22 @@ public:
DECLARE_READ8_MEMBER(m1_meter_r);
DECLARE_READ8_MEMBER(m1_firq_clr_r);
DECLARE_READ8_MEMBER(m1_firq_trg_r);
+ DECLARE_READ8_MEMBER(m1_firq_nec_r);
+ DECLARE_READ8_MEMBER(nec_reset_r);
+ DECLARE_WRITE8_MEMBER(nec_bank0_w);
+ DECLARE_WRITE8_MEMBER(nec_bank1_w);
DECLARE_WRITE_LINE_MEMBER(duart_irq_handler);
DECLARE_READ8_MEMBER(m1_duart_r);
DECLARE_DRIVER_INIT(m1);
+ DECLARE_DRIVER_INIT(m1common);
+ DECLARE_DRIVER_INIT(m1nec);
virtual void machine_start();
virtual void machine_reset();
void cpu0_firq(int data);
- void cpu0_nmi(int data);
+ void cpu0_nmi();
void m1_stepper_reset();
};
+
+MACHINE_CONFIG_EXTERN( maygay_m1 );
+MACHINE_CONFIG_EXTERN( maygay_m1_nec );
+MACHINE_CONFIG_EXTERN( maygay_m1_empire );
diff --git a/src/mame/includes/pgm.h b/src/mame/includes/pgm.h
index eff96270e29..6c5ea3ada51 100644
--- a/src/mame/includes/pgm.h
+++ b/src/mame/includes/pgm.h
@@ -411,6 +411,7 @@ public:
DECLARE_DRIVER_INIT(dw2v100x);
DECLARE_DRIVER_INIT(drgw2c);
DECLARE_DRIVER_INIT(drgw2j);
+ DECLARE_DRIVER_INIT(drgw2hk);
DECLARE_MACHINE_RESET(drgw2);
diff --git a/src/mame/includes/psychic5.h b/src/mame/includes/psychic5.h
index ed97cb56c3b..9fd56c781ba 100644
--- a/src/mame/includes/psychic5.h
+++ b/src/mame/includes/psychic5.h
@@ -1,3 +1,5 @@
+#include "machine/bankdev.h"
+
class psychic5_state : public driver_device
{
public:
@@ -7,23 +9,25 @@ public:
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette") { }
+ m_palette(*this, "palette"),
+ m_vrambank(*this, "vrambank"),
+ m_fg_videoram(*this, "fg_videoram"),
+ m_bg_videoram(*this, "bg_videoram"),
+ m_bg_control(*this, "bg_control"),
+
+ m_ps5_palette_ram_bg(*this, "palette_ram_bg"),
+ m_ps5_palette_ram_sp(*this, "palette_ram_sp"),
+ m_ps5_palette_ram_tx(*this, "palette_ram_tx")
+
+ { }
UINT8 m_bank_latch;
UINT8 m_ps5_vram_page;
UINT8 m_bg_clip_mode;
UINT8 m_title_screen;
- UINT8 m_bg_status;
- UINT8 *m_ps5_pagedram[2];
- UINT8 *m_bg_videoram;
- UINT8 *m_ps5_dummy_bg_ram;
- UINT8 *m_ps5_io_ram;
- UINT8 *m_ps5_palette_ram;
- UINT8 *m_fg_videoram;
+
tilemap_t *m_bg_tilemap;
tilemap_t *m_fg_tilemap;
- int m_bg_palette_ram_base;
- int m_bg_palette_base;
UINT16 m_palette_intensity;
UINT8 m_bombsa_unknown;
int m_sx1;
@@ -38,9 +42,6 @@ public:
DECLARE_READ8_MEMBER(psychic5_vram_page_select_r);
DECLARE_WRITE8_MEMBER(psychic5_vram_page_select_w);
DECLARE_WRITE8_MEMBER(psychic5_title_screen_w);
- DECLARE_READ8_MEMBER(psychic5_paged_ram_r);
- DECLARE_WRITE8_MEMBER(psychic5_paged_ram_w);
- DECLARE_WRITE8_MEMBER(bombsa_paged_ram_w);
DECLARE_WRITE8_MEMBER(bombsa_unknown_w);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
@@ -48,11 +49,10 @@ public:
DECLARE_VIDEO_START(psychic5);
DECLARE_VIDEO_RESET(psychic5);
DECLARE_VIDEO_START(bombsa);
- DECLARE_VIDEO_RESET(bombsa);
UINT32 screen_update_psychic5(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
UINT32 screen_update_bombsa(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(psychic5_scanline);
- void psychic5_change_palette(int color, int offset);
+ void psychic5_change_palette(int offset, UINT8* palram, int palbase);
void psychic5_change_bg_palette(int color, int lo_offs, int hi_offs);
void set_background_palette_intensity();
void draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect);
@@ -62,4 +62,21 @@ public:
required_device m_audiocpu;
required_device m_gfxdecode;
required_device m_palette;
+ optional_device m_vrambank;
+ required_shared_ptr m_fg_videoram;
+ required_shared_ptr m_bg_videoram;
+ required_shared_ptr m_bg_control;
+
+ required_shared_ptr m_ps5_palette_ram_bg;
+ required_shared_ptr m_ps5_palette_ram_sp;
+ required_shared_ptr m_ps5_palette_ram_tx;
+
+
+
+ DECLARE_WRITE8_MEMBER(fg_videoram_w);
+ DECLARE_WRITE8_MEMBER(bg_videoram_w);
+ DECLARE_WRITE8_MEMBER(sprite_col_w);
+ DECLARE_WRITE8_MEMBER(bg_col_w);
+ DECLARE_WRITE8_MEMBER(tx_col_w);
+
};
diff --git a/src/mame/includes/segas18.h b/src/mame/includes/segas18.h
index d7b1bcffcc0..2cf27fddfbd 100644
--- a/src/mame/includes/segas18.h
+++ b/src/mame/includes/segas18.h
@@ -55,6 +55,7 @@ public:
DECLARE_DRIVER_INIT(generic_5874);
DECLARE_DRIVER_INIT(wwally);
DECLARE_DRIVER_INIT(generic_5987);
+ DECLARE_DRIVER_INIT(hamaway);
// memory mapping
void memory_mapper(sega_315_5195_mapper_device &mapper, UINT8 index);
@@ -63,6 +64,7 @@ public:
// read/write handlers
DECLARE_WRITE16_MEMBER( rom_5987_bank_w );
+ DECLARE_WRITE16_MEMBER( rom_837_7525_bank_w );
DECLARE_READ16_MEMBER( io_chip_r );
DECLARE_WRITE16_MEMBER( io_chip_w );
DECLARE_READ16_MEMBER( misc_io_r );
@@ -90,6 +92,8 @@ public:
DECLARE_WRITE16_MEMBER( sega_tileram_0_w ) { m_segaic16vid->segaic16_tileram_0_w(space,offset,data,mem_mask); };
DECLARE_WRITE16_MEMBER( sega_textram_0_w ) { m_segaic16vid->segaic16_textram_0_w(space,offset,data,mem_mask); };
+
+ DECLARE_WRITE_LINE_MEMBER(ym3438_irq_handler);
protected:
// timer IDs
@@ -104,7 +108,9 @@ protected:
ROM_BOARD_INVALID,
ROM_BOARD_171_SHADOW, // 171-???? -- used by shadow dancer
ROM_BOARD_171_5874, // 171-5874
- ROM_BOARD_171_5987 // 171-5987
+ ROM_BOARD_171_5987, // 171-5987
+ ROM_BOARD_837_7525 // Hammer Away proto
+
};
// device overrides
diff --git a/src/mame/includes/slapstic.h b/src/mame/includes/slapstic.h
index 1466b220124..700eb92685b 100644
--- a/src/mame/includes/slapstic.h
+++ b/src/mame/includes/slapstic.h
@@ -9,10 +9,173 @@
*************************************************************************/
-/*----------- defined in machine/slapstic.c -----------*/
+#pragma once
-void slapstic_init(running_machine &machine, int chip);
-void slapstic_reset(void);
+#ifndef __SLAPSTIC__
+#define __SLAPSTIC__
-int slapstic_bank(void);
-int slapstic_tweak(address_space &space, offs_t offset);
+#include "emu.h"
+#include "cpu/m6800/m6800.h"
+#include "cpu/m68000/m68000.h"
+
+
+extern const device_type SLAPSTIC;
+
+#define MCFG_SLAPSTIC_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, SLAPSTIC, 0)
+
+
+/*************************************
+ *
+ * Debugging
+ *
+ *************************************/
+
+#define LOG_SLAPSTIC (0)
+
+
+
+/*************************************
+ *
+ * Structure of slapstic params
+ *
+ *************************************/
+
+struct mask_value
+{
+ int mask, value;
+};
+
+
+struct slapstic_data
+{
+ int bankstart;
+ int bank[4];
+
+ struct mask_value alt1;
+ struct mask_value alt2;
+ struct mask_value alt3;
+ struct mask_value alt4;
+ int altshift;
+
+ struct mask_value bit1;
+ struct mask_value bit2c0;
+ struct mask_value bit2s0;
+ struct mask_value bit2c1;
+ struct mask_value bit2s1;
+ struct mask_value bit3;
+
+ struct mask_value add1;
+ struct mask_value add2;
+ struct mask_value addplus1;
+ struct mask_value addplus2;
+ struct mask_value add3;
+};
+
+
+
+/*************************************
+ *
+ * Shorthand
+ *
+ *************************************/
+
+#define UNKNOWN 0xffff
+#define NO_BITWISE \
+ { UNKNOWN,UNKNOWN }, \
+ { UNKNOWN,UNKNOWN }, \
+ { UNKNOWN,UNKNOWN }, \
+ { UNKNOWN,UNKNOWN }, \
+ { UNKNOWN,UNKNOWN }, \
+ { UNKNOWN,UNKNOWN }
+#define NO_ADDITIVE \
+ { UNKNOWN,UNKNOWN }, \
+ { UNKNOWN,UNKNOWN }, \
+ { UNKNOWN,UNKNOWN }, \
+ { UNKNOWN,UNKNOWN }, \
+ { UNKNOWN,UNKNOWN }
+
+#define MATCHES_MASK_VALUE(val, maskval) (((val) & (maskval).mask) == (maskval).value)
+
+
+
+/*************************************
+ *
+ * Constants
+ *
+ *************************************/
+
+enum
+{
+ DISABLED,
+ ENABLED,
+ ALTERNATE1,
+ ALTERNATE2,
+ ALTERNATE3,
+ BITWISE1,
+ BITWISE2,
+ BITWISE3,
+ ADDITIVE1,
+ ADDITIVE2,
+ ADDITIVE3
+};
+
+
+#define MCFG_SLAPSTIC_68K_ACCESS(_type) \
+ atari_slapstic_device::static_set_access68k(*device, _type);
+
+
+
+class atari_slapstic_device : public device_t
+{
+public:
+ // construction/destruction
+ atari_slapstic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ void slapstic_init(running_machine &machine, int chip);
+ void slapstic_reset(void);
+
+ int slapstic_bank(void);
+ int slapstic_tweak(address_space &space, offs_t offset);
+
+ int alt2_kludge(address_space &space, offs_t offset);
+
+ static void static_set_access68k(device_t &device, int type)
+ {
+ atari_slapstic_device &dev = downcast(device);
+ dev.access_68k = type;
+ }
+
+
+ UINT8 state;
+ UINT8 current_bank;
+ int access_68k;
+
+ UINT8 alt_bank;
+ UINT8 bit_bank;
+ UINT8 add_bank;
+ UINT8 bit_xor;
+
+ struct slapstic_data slapstic;
+
+
+ void slapstic_log(running_machine &machine, offs_t offset);
+ FILE *slapsticlog;
+
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+
+private:
+
+
+
+
+};
+
+
+
+
+#endif
diff --git a/src/mame/includes/starwars.h b/src/mame/includes/starwars.h
index babed5b9951..ddc9cc89be0 100644
--- a/src/mame/includes/starwars.h
+++ b/src/mame/includes/starwars.h
@@ -5,6 +5,7 @@
***************************************************************************/
#include "machine/6532riot.h"
+#include "includes/slapstic.h"
class starwars_state : public driver_device
@@ -15,7 +16,9 @@ public:
m_riot(*this, "riot"),
m_mathram(*this, "mathram"),
m_maincpu(*this, "maincpu"),
- m_audiocpu(*this, "audiocpu") { }
+ m_audiocpu(*this, "audiocpu"),
+ m_slapstic_device(*this, "slapstic")
+ { }
UINT8 m_sound_data;
UINT8 m_main_data;
@@ -78,4 +81,5 @@ public:
void esb_slapstic_tweak(address_space &space, offs_t offset);
required_device m_maincpu;
required_device m_audiocpu;
+ optional_device m_slapstic_device;
};
diff --git a/src/mame/includes/stv.h b/src/mame/includes/stv.h
index 96d6fa09ab7..4fafe420c46 100644
--- a/src/mame/includes/stv.h
+++ b/src/mame/includes/stv.h
@@ -9,6 +9,8 @@
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
+#include "machine/315-5881_crypt.h"
+
#define MAX_FILTERS (24)
#define MAX_BLOCKS (200)
#define MAX_DIR_SIZE (256*1024)
@@ -167,6 +169,8 @@ public:
required_device m_gfxdecode;
required_device m_palette;
+
+
bitmap_rgb32 m_tmpbitmap;
DECLARE_VIDEO_START(stv_vdp2);
UINT32 screen_update_saturn(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
@@ -694,7 +698,8 @@ public:
stv_state(const machine_config &mconfig, device_type type, const char *tag)
: saturn_state(mconfig, type, tag),
m_adsp(*this, "adsp"),
- m_adsp_pram(*this, "adsp_pram")
+ m_adsp_pram(*this, "adsp_pram"),
+ m_cryptdevice(*this, "315_5881")
{
}
@@ -829,6 +834,9 @@ public:
DECLARE_WRITE32_MEMBER( decathlt_prot2_w );
void write_prot_data(UINT32 data, UINT32 mem_mask, int offset, int which);
void install_decathlt_protection();
+
+ optional_device m_cryptdevice;
+ UINT16 crypt_read_callback(UINT32 addr);
};
diff --git a/src/mame/includes/tx1.h b/src/mame/includes/tx1.h
index 6e5b057b4b4..88ef4d11d84 100644
--- a/src/mame/includes/tx1.h
+++ b/src/mame/includes/tx1.h
@@ -193,8 +193,7 @@ public:
void buggyboy_draw_char(UINT8 *bitmap, bool wide);
void buggyboy_get_roadpix(int screen, int ls161, UINT8 rva0_6, UINT8 sld, UINT32 *_rorev,
- UINT8 *rc0, UINT8 *rc1, UINT8 *rc2, UINT8 *rc3,
- const UINT8 *rom, const UINT8 *prom0, const UINT8 *prom1, const UINT8 *prom2);
+ UINT8 *rc0, UINT8 *rc1, UINT8 *rc2, UINT8 *rc3);
void buggyboy_draw_road(UINT8 *bitmap);
void buggybjr_draw_road(UINT8 *bitmap);
void buggyboy_draw_objs(UINT8 *bitmap, bool wide);
diff --git a/src/mame/layout/newufo.lay b/src/mame/layout/newufo.lay
new file mode 100644
index 00000000000..2f32207e91d
--- /dev/null
+++ b/src/mame/layout/newufo.lay
@@ -0,0 +1,267 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mame/layout/racedrivpan.lay b/src/mame/layout/racedrivpan.lay
new file mode 100644
index 00000000000..3ca77bae895
--- /dev/null
+++ b/src/mame/layout/racedrivpan.lay
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mame/layout/ufo21.lay b/src/mame/layout/ufo21.lay
new file mode 100644
index 00000000000..608c3bb5d6a
--- /dev/null
+++ b/src/mame/layout/ufo21.lay
@@ -0,0 +1,247 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mame/layout/ufo800.lay b/src/mame/layout/ufo800.lay
new file mode 100644
index 00000000000..9a9533d80b0
--- /dev/null
+++ b/src/mame/layout/ufo800.lay
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mame/layout/ufomini.lay b/src/mame/layout/ufomini.lay
new file mode 100644
index 00000000000..b27c1f9acb6
--- /dev/null
+++ b/src/mame/layout/ufomini.lay
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mame/machine/315-5881_crypt.c b/src/mame/machine/315-5881_crypt.c
new file mode 100644
index 00000000000..c19b431aef7
--- /dev/null
+++ b/src/mame/machine/315-5881_crypt.c
@@ -0,0 +1,817 @@
+/*
+ re: Tecmo World Cup '98 (ST-V) (from ANY)
+
+ I got one of the card in subject open it up to check the rom version
+ and made a discovery...
+ The protection chip has the part number on it "315-5881", it's the same
+ used on naomi M2 carts as you can see here
+ http://imagizer.imageshack.us/a/img540/7634/BsqvD8.jpg
+
+ The same chip 315-5881 but with a Lattice IspLSI2032 (Sega part
+ 315-6050) was used on some Model3 games...
+
+*/
+
+#include "emu.h"
+#include "machine/315-5881_crypt.h"
+
+extern const device_type SEGA315_5881_CRYPT = &device_creator;
+
+
+sega_315_5881_crypt_device::sega_315_5881_crypt_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, SEGA315_5881_CRYPT, "Sega 'SEGA315_5881' Encryption device", tag, owner, clock, "SEGA315_5881", __FILE__)
+{
+}
+
+
+
+void sega_315_5881_crypt_device::device_start()
+{
+ buffer = auto_alloc_array(machine(), UINT8, BUFFER_SIZE);
+ line_buffer = auto_alloc_array(machine(), UINT8, LINE_SIZE);
+ line_buffer_prev = auto_alloc_array(machine(), UINT8, LINE_SIZE);
+
+ m_read.bind_relative_to(*owner());
+
+ save_pointer(NAME(buffer), BUFFER_SIZE);
+ save_pointer(NAME(line_buffer), LINE_SIZE);
+ save_pointer(NAME(line_buffer_prev), LINE_SIZE);
+ save_item(NAME(prot_cur_address));
+ save_item(NAME(subkey));
+ save_item(NAME(enc_ready));
+ save_item(NAME(dec_hist));
+ save_item(NAME(dec_header));
+ save_item(NAME(buffer_pos));
+ save_item(NAME(line_buffer_pos));
+ save_item(NAME(line_buffer_size));
+
+}
+
+void sega_315_5881_crypt_device::device_reset()
+{
+ memset(buffer, 0, BUFFER_SIZE);
+ memset(line_buffer, 0, LINE_SIZE);
+ memset(line_buffer_prev, 0, LINE_SIZE);
+
+ prot_cur_address = 0;
+ subkey = 0;
+ dec_hist = 0;
+ dec_header = 0;
+ enc_ready = false;
+
+ buffer_pos = 0;
+ line_buffer_pos = 0;
+ line_buffer_size = 0;
+ buffer_bit = 0;
+}
+
+UINT16 sega_315_5881_crypt_device::do_decrypt(UINT8 *&base)
+{
+ if(!enc_ready)
+ enc_start();
+ if(dec_header & FLAG_COMPRESSED) {
+ if(line_buffer_pos == line_buffer_size)
+ line_fill();
+ base = line_buffer + line_buffer_pos;
+ line_buffer_pos += 2;
+ } else {
+ if(buffer_pos == BUFFER_SIZE)
+ enc_fill();
+ base = buffer + buffer_pos;
+ buffer_pos += 2;
+ }
+
+ return (base[0] << 8) | base[1];
+}
+
+void sega_315_5881_crypt_device::set_addr_low(UINT16 data)
+{
+ prot_cur_address = (prot_cur_address & 0xffff0000) | data;
+ enc_ready = false;
+}
+
+void sega_315_5881_crypt_device::set_addr_high(UINT16 data)
+{
+ prot_cur_address = (prot_cur_address & 0x0000ffff) | (data << 16);
+ enc_ready = false;
+}
+
+void sega_315_5881_crypt_device::set_subkey(UINT16 data)
+{
+ subkey = data;
+ enc_ready = false;
+}
+
+void sega_315_5881_crypt_device::set_key(UINT32 data)
+{
+ key = data;
+ enc_ready = false;
+}
+
+/***************************************************************************
+ DECRYPTION EMULATION
+
+By convention, we label the three known cart protection methods this way (using Deunan Knute's wording):
+M1: DMA read of protected ROM area
+M2: special read of ROM area which supplies decryption key first
+M3: normal read followed by write to cart's decryption buffer (up to 64kB), followed by M2 but from buffer area
+
+Notes below refer to M2 & M3.
+
+The encryption is done by a stream cipher operating in counter mode, which use a 16-bits internal block cipher.
+
+There are 2 "control bits" at the start of the decrypted stream which control the mode of operation: bit #1 set to 1 means
+that the decrypted stream needs to be decompressed after being decrypted. More on this later.
+
+The next 16-bits are part of the header (they don't belong to the plaintext), but his meaning is unclear. It has been
+conjectured that it could stablish when to "reset" the process and start processing a new stream (based on some tests
+on WWFROYAL, in which the decryption's output doesn't seem to be valid for more than some dozens of words), but some
+more testing would be needed for clarifying that.
+
+After those 18 heading bits, we find the proper plaintext. It must be noted that, due to the initial 2 special bits,
+the 16-bits words of the plaintext are shifted 2 bits respect to the word-boundaries of the output stream of the
+internal block-cipher. So, at a given step, the internal block cipher will output 16-bits, 14 of which will go to a
+given plaintext word, and the remaining 2 to the next plaintext word.
+
+The underlying block cipher consists of two 4-round Feistel Networks (FN): the first one takes the counter (16 bits),
+the game-key (>=26 bits) and the sequence-key (16 bits) and output a middle result (16 bits) which will act as another key
+for the second one. The second FN will take the encrypted word (16 bits), the game-key, the sequence-key and the result
+from the first FN and will output the decrypted word (16 bits).
+
+Each round of the Feistel Networks use four substitution sboxes, each having 6 inputs and 2 outputs. The input can be the
+XOR of at most two "sources bits", being source bits the bits from the previous round and the bits from the different keys.
+
+The underlying block cipher has the same structure than the one used by the CPS-2 (Capcom Play System 2) and,
+indeed, some of the used sboxes are exactly the same and appear in the same FN/round in both systems (this is not evident,
+as you need to apply a bitswapping and some XORs to the input & output of the sboxes to get the same values due). However,
+the key scheduling used by this implementation is much weaker than the CPS-2's one. Many s-boxes inputs aren't XORed with any
+key bit.
+
+Due to the small key-length, no sophisticated attacks are needed to recover the keys; a brute-force attack knowing just
+some (encrypted word-decrypted word) pairs suffice. However, due to the weak key scheduling, it should be noted that some
+related keys can produce the same output bytes for some (short) input sequences.
+
+The only difference in the decryption process between M2 and M3 is the initialization of the counter. In M3, the counter is
+always set to 0 at the beginning of the decryption while, in M2, the bits #1-#16 of the ciphertext's address are used
+to initialize the counter.
+
+Note that this implementation considers that the counter initialization for ram decryption is 0 simply because the ram is
+mapped to multiples of 128K.
+
+Due to the nature of the cipher, there are some degrees of freedom when choosing the s-boxes and keys values; by example,
+you could apply a fixed bitswapping and XOR to the keys and the decryption would remain the same as long as you change
+accordingly the s-boxes' definitions. So the order of the bits in the keys is arbitrary, and the s-boxes values have been
+chosen so as to make the key for CAPSNK equal to 0.
+
+It can be observed that a couple of sboxes have incomplete tables (a 255 value indicate an unknown value). The recovered keys
+as of december/2010 show small randomness and big correlations, making possible that some unseen bits could make the
+decryption need those incomplete parts.
+
+****************************************************************************************/
+
+const sega_315_5881_crypt_device::sbox sega_315_5881_crypt_device::fn1_sboxes[4][4] = {
+ { // 1st round
+ {
+ {
+ 0,3,2,2,1,3,1,2,3,2,1,2,1,2,3,1,3,2,2,0,2,1,3,0,0,3,2,3,2,1,2,0,
+ 2,3,1,1,2,2,1,1,1,0,2,3,3,0,2,1,1,1,1,1,3,0,3,2,1,0,1,2,0,3,1,3,
+ },
+ {3,4,5,7,-1,-1},
+ {0,4}
+ },
+
+ {
+ {
+ 2,2,2,0,3,3,0,1,2,2,3,2,3,0,2,2,1,1,0,3,3,2,0,2,0,1,0,1,2,3,1,1,
+ 0,1,3,3,1,3,3,1,2,3,2,0,0,0,2,2,0,3,1,3,0,3,2,2,0,3,0,3,1,1,0,2,
+ },
+ {0,1,2,5,6,7},
+ {1,6}
+ },
+
+ {
+ {
+ 0,1,3,0,3,1,1,1,1,2,3,1,3,0,2,3,3,2,0,2,1,1,2,1,1,3,1,0,0,2,0,1,
+ 1,3,1,0,0,3,2,3,2,0,3,3,0,0,0,0,1,2,3,3,2,0,3,2,1,0,0,0,2,2,3,3,
+ },
+ {0,2,5,6,7,-1},
+ {2,3}
+ },
+
+ {
+ {
+ 3,2,1,2,1,2,3,2,0,3,2,2,3,1,3,3,0,2,3,0,3,3,2,1,1,1,2,0,2,2,0,1,
+ 1,3,3,0,0,3,0,3,0,2,1,3,2,1,0,0,0,1,1,2,0,1,0,0,0,1,3,3,2,0,3,3,
+ },
+ {1,2,3,4,6,7},
+ {5,7}
+ },
+ },
+ { // 2nd round
+ {
+ {
+ 3,3,1,2,0,0,2,2,2,1,2,1,3,1,1,3,3,0,0,3,0,3,3,2,1,1,3,2,3,2,1,3,
+ 2,3,0,1,3,2,0,1,2,1,3,1,2,2,3,3,3,1,2,2,0,3,1,2,2,1,3,0,3,0,1,3,
+ },
+ {0,1,3,4,5,7},
+ {0,4}
+ },
+
+ {
+ {
+ 2,0,1,0,0,3,2,0,3,3,1,2,1,3,0,2,0,2,0,0,0,2,3,1,3,1,1,2,3,0,3,0,
+ 3,0,2,0,0,2,2,1,0,2,3,3,1,3,1,0,1,3,3,0,0,1,3,1,0,2,0,3,2,1,0,1,
+ },
+ {0,1,3,4,6,-1},
+ {1,5}
+ },
+
+ {
+ {
+ 2,2,2,3,1,1,0,1,0,1,2,2,3,3,0,2,0,3,2,3,3,0,2,1,0,3,1,0,0,2,3,2,
+ 3,2,0,3,2,0,1,0,3,3,1,1,2,2,2,0,2,1,3,1,1,1,1,2,2,2,3,0,1,3,0,0,
+ },
+ {1,2,5,6,7,-1},
+ {2,7}
+ },
+
+ {
+ {
+ 0,1,3,3,3,1,3,3,1,0,2,0,2,0,0,3,1,2,1,3,1,2,3,2,2,0,1,3,0,3,3,3,
+ 0,0,0,2,1,1,2,3,2,2,3,1,1,2,0,2,0,2,1,3,1,1,3,3,1,1,3,0,2,3,0,0,
+ },
+ {2,3,4,5,6,7},
+ {3,6}
+ },
+ },
+ { // 3rd round
+ {
+ {
+ 0,0,1,0,1,0,0,3,2,0,0,3,0,1,0,2,0,3,0,0,2,0,3,2,2,1,3,2,2,1,1,2,
+ 0,0,0,3,0,1,1,0,0,2,1,0,3,1,2,2,2,0,3,1,3,0,1,2,2,1,1,1,0,2,3,1,
+ },
+ {1,2,3,4,5,7},
+ {0,5}
+ },
+
+ {
+ {
+ 1,2,1,0,3,1,1,2,0,0,2,3,2,3,1,3,2,0,3,2,2,3,1,1,1,1,0,3,2,0,0,1,
+ 1,0,0,1,3,1,2,3,0,0,2,3,3,0,1,0,0,2,3,0,1,2,0,1,3,3,3,1,2,0,2,1,
+ },
+ {0,2,4,5,6,7},
+ {1,6}
+ },
+
+ {
+ {
+ 0,3,0,2,1,2,0,0,1,1,0,0,3,1,1,0,0,3,0,0,2,3,3,2,3,1,2,0,0,2,3,0,
+ // unused?
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ },
+ {0,2,4,6,7,-1},
+ {2,3}
+ },
+
+ {
+ {
+ 0,0,1,0,0,1,0,2,3,3,0,3,3,2,3,0,2,2,2,0,3,2,0,3,1,0,0,3,3,0,0,0,
+ 2,2,1,0,2,0,3,2,0,0,3,1,3,3,0,0,2,1,1,2,1,0,1,1,0,3,1,2,0,2,0,3,
+ },
+ {0,1,2,3,6,-1},
+ {4,7}
+ },
+ },
+ { // 4th round
+ {
+ {
+ 0,3,3,3,3,3,2,0,0,1,2,0,2,2,2,2,1,1,0,2,2,1,3,2,3,2,0,1,2,3,2,1,
+ 3,2,2,3,1,0,1,0,0,2,0,1,2,1,2,3,1,2,1,1,2,2,1,0,1,3,2,3,2,0,3,1,
+ },
+ {0,1,3,4,5,6},
+ {0,5}
+ },
+
+ {
+ {
+ 0,3,0,0,2,0,3,1,1,1,2,2,2,1,3,1,2,2,1,3,2,2,3,3,0,3,1,0,3,2,0,1,
+ 3,0,2,0,1,0,2,1,3,3,1,2,2,0,2,3,3,2,3,0,1,1,3,3,0,2,1,3,0,2,2,3,
+ },
+ {0,1,2,3,5,7},
+ {1,7}
+ },
+
+ {
+ {
+ 0,1,2,3,3,3,3,1,2,0,2,3,2,1,0,1,2,2,1,2,0,3,2,0,1,1,0,1,3,1,3,1,
+ 3,1,0,0,1,0,0,0,0,1,2,2,1,1,3,3,1,2,3,3,3,2,3,0,2,2,1,3,3,0,2,0,
+ },
+ {2,3,4,5,6,7},
+ {2,3}
+ },
+
+ {
+ {
+ 0,2,1,1,3,2,0,3,1,0,1,0,3,2,1,1,2,2,0,3,1,0,1,2,2,2,3,3,0,0,0,0,
+ 1,2,1,0,2,1,2,2,2,3,2,3,0,1,3,0,0,1,3,0,0,1,1,0,1,0,0,0,0,2,0,1,
+ },
+ {0,1,2,4,6,7},
+ {4,6}
+ },
+ },
+};
+
+
+const sega_315_5881_crypt_device::sbox sega_315_5881_crypt_device::fn2_sboxes[4][4] = {
+ { // 1st round
+ {
+ {
+ 3,3,0,1,0,1,0,0,0,3,0,0,1,3,1,2,0,3,3,3,2,1,0,1,1,1,2,2,2,3,2,2,
+ 2,1,3,3,1,3,1,1,0,0,1,2,0,2,2,1,1,2,3,1,2,1,3,1,2,2,0,1,3,0,2,2,
+ },
+ {1,3,4,5,6,7},
+ {0,7}
+ },
+
+ {
+ {
+ 0,2,3,2,1,1,0,0,2,1,0,3,3,0,0,0,3,2,0,2,1,1,2,1,0,0,3,1,2,2,3,1,
+ 3,1,3,0,0,0,1,3,1,0,0,3,2,2,3,1,1,3,0,0,2,1,3,3,1,3,1,2,3,1,2,1,
+ },
+ {0,3,5,6,-1,-1},
+ {1,2}
+ },
+
+ {
+ {
+ 0,2,2,1,0,1,2,1,2,0,1,2,3,3,0,1,3,1,1,2,1,2,1,3,3,2,3,3,2,1,0,1,
+ 0,1,0,2,0,1,1,3,2,0,3,2,1,1,1,3,2,3,0,2,3,0,2,2,1,3,0,1,1,2,2,2,
+ },
+ {0,2,3,4,7,-1},
+ {3,4}
+ },
+
+ {
+ {
+ 2,3,1,3,2,0,1,2,0,0,3,3,3,3,3,1,2,0,2,1,2,3,0,2,0,1,0,3,0,2,1,0,
+ 2,3,0,1,3,0,3,2,3,1,2,0,3,1,1,2,0,3,0,0,2,0,2,1,2,2,3,2,1,2,3,1,
+ },
+ {1,2,5,6,-1,-1},
+ {5,6}
+ },
+ },
+ { // 2nd round
+ {
+ {
+ 2,3,1,3,1,0,3,3,3,2,3,3,2,0,0,3,2,3,0,3,1,1,2,3,1,1,2,2,0,1,0,0,
+ 2,1,0,1,2,0,1,2,0,3,1,1,2,3,1,2,0,2,0,1,3,0,1,0,2,2,3,0,3,2,3,0,
+ },
+ {0,1,4,5,6,7},
+ {0,7}
+ },
+
+ {
+ {
+ 0,2,2,0,2,2,0,3,2,3,2,1,3,2,3,3,1,1,0,0,3,0,2,1,1,3,3,2,3,2,0,1,
+ 1,2,3,0,1,0,3,0,3,1,0,2,1,2,0,3,2,3,1,2,2,0,3,2,3,0,0,1,2,3,3,3,
+ },
+ {0,2,3,6,7,-1},
+ {1,5}
+ },
+
+ {
+ {
+ 1,2,3,2,0,3,2,3,0,1,1,0,0,2,2,3,2,0,0,3,0,2,3,3,2,2,1,0,2,1,0,3,
+ 1,0,2,0,1,1,0,1,0,0,1,0,3,0,3,3,2,2,0,2,1,1,1,0,3,0,1,3,2,3,2,1,
+ },
+ {2,3,4,6,7,-1},
+ {2,3}
+ },
+
+ {
+ {
+ 2,3,1,3,1,1,2,3,3,1,1,0,1,0,2,3,2,1,0,0,2,2,0,1,0,2,2,2,0,2,1,0,
+ 3,1,2,3,1,3,0,2,1,0,1,0,0,1,2,2,3,2,3,1,3,2,1,1,2,0,2,1,3,3,1,0,
+ },
+ {1,2,3,4,5,6},
+ {4,6}
+ },
+ },
+ { // 3rd round
+ {
+ {
+ 0,3,0,1,0,2,3,3,1,0,1,3,2,2,1,1,3,3,3,0,2,0,2,0,0,0,2,3,1,1,0,0,
+ 3,3,0,3,3,0,0,2,1,1,1,0,2,2,2,0,3,0,3,1,2,2,0,3,0,0,3,2,0,3,2,1,
+ },
+ {1,4,5,6,7,-1},
+ {0,5}
+ },
+
+ {
+ {
+ 0,3,0,1,3,0,3,1,3,2,2,2,3,0,3,2,2,1,2,2,0,3,2,2,0,0,2,1,1,3,2,3,
+ 2,3,3,1,2,0,1,2,2,1,0,0,0,0,2,3,1,2,0,3,1,3,1,2,3,2,1,0,3,0,0,2,
+ },
+ {0,2,3,4,6,7},
+ {1,7}
+ },
+
+ {
+ {
+ 2,2,3,2,0,3,2,3,1,1,2,0,2,3,1,3,0,0,0,3,2,0,1,0,1,3,2,3,3,3,1,0,
+ // unused?
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ },
+ {1,2,4,7,-1,-1},
+ {2,4}
+ },
+
+ {
+ {
+ 0,2,3,1,3,1,1,0,0,1,3,0,2,1,3,3,2,0,2,1,1,2,3,3,0,0,0,2,0,2,3,0,
+ 3,3,3,3,2,3,3,2,3,0,1,0,2,3,3,2,0,1,3,1,0,1,2,3,3,0,2,0,3,0,3,3,
+ },
+ {0,1,2,3,5,7},
+ {3,6}
+ },
+ },
+ { // 4th round
+ {
+ {
+ 0,1,1,0,0,1,0,2,3,3,0,1,2,3,0,2,1,0,3,3,2,0,3,0,0,2,1,0,1,0,1,3,
+ 0,3,3,1,2,0,3,0,1,3,2,0,3,3,1,3,0,2,3,3,2,1,1,2,2,1,2,1,2,0,1,1,
+ },
+ {0,1,2,4,7,-1},
+ {0,5}
+ },
+
+ {
+ {
+ 2,0,0,2,3,0,2,3,3,1,1,1,2,1,1,0,0,2,1,0,0,3,1,0,0,3,3,0,1,0,1,2,
+ 0,2,0,2,0,1,2,3,2,1,1,0,3,3,3,3,3,3,1,0,3,0,0,2,0,3,2,0,2,2,0,1,
+ },
+ {0,1,3,5,6,-1},
+ {1,3}
+ },
+
+ {
+ {
+ 0,1,1,2,1,3,1,1,0,0,3,1,1,1,2,0,3,2,0,1,1,2,3,3,3,0,3,0,0,2,0,3,
+ 3,2,0,0,3,2,3,1,2,3,0,3,2,0,1,2,2,2,0,2,0,1,2,2,3,1,2,2,1,1,1,1,
+ },
+ {0,2,3,4,5,7},
+ {2,7}
+ },
+
+ {
+ {
+ 0,1,2,0,3,3,0,3,2,1,3,3,0,3,1,1,3,2,3,2,3,0,0,0,3,0,2,2,3,2,2,3,
+ 2,2,3,1,2,3,1,2,0,3,0,2,3,1,0,0,3,2,1,2,1,2,1,3,1,0,2,3,3,1,3,2,
+ },
+ {2,3,4,5,6,7},
+ {4,6}
+ },
+ },
+};
+
+const int sega_315_5881_crypt_device::fn1_game_key_scheduling[38][2] = {
+ {1,29}, {1,71}, {2,4}, {2,54}, {3,8}, {4,56}, {4,73}, {5,11},
+ {6,51}, {7,92}, {8,89}, {9,9}, {9,10}, {9,39}, {9,41}, {9,58},
+ {9,59}, {9,86}, {10,90}, {11,6}, {12,64}, {13,49}, {14,44}, {15,40},
+ {16,69}, {17,15}, {18,23}, {18,43}, {19,82}, {20,81}, {21,32}, {21,61},
+ {22,5}, {23,66}, {24,13}, {24,45}, {25,12}, {25,35}
+};
+
+const int sega_315_5881_crypt_device::fn2_game_key_scheduling[34][2] = {
+ {0,0}, {1,3}, {2,11}, {3,20}, {4,22}, {5,23}, {6,29}, {7,38},
+ {8,39}, {9,47}, {9,55}, {9,86}, {9,87}, {9,90}, {10,50}, {10,53},
+ {11,57}, {12,59}, {13,61}, {13,64}, {14,63}, {15,67}, {16,72}, {17,83},
+ {18,88}, {19,94}, {20,35}, {21,17}, {21,92}, {22,6}, {22,11}, {23,85},
+ {24,16}, {25,25}
+};
+
+const int sega_315_5881_crypt_device::fn1_sequence_key_scheduling[20][2] = {
+ {0,52}, {1,34}, {2,17}, {3,36}, {4,84}, {4,88}, {5,57}, {6,48},
+ {6,68}, {7,76}, {8,83}, {9,30}, {10,22}, {10,41}, {11,38}, {12,55},
+ {13,74}, {14,19}, {14,80}, {15,26}
+};
+
+const int sega_315_5881_crypt_device::fn2_sequence_key_scheduling[16] = {77,34,8,42,36,27,69,66,13,9,79,31,49,7,24,64};
+
+const int sega_315_5881_crypt_device::fn2_middle_result_scheduling[16] = {1,10,44,68,74,78,81,95,2,4,30,40,41,51,53,58};
+
+int sega_315_5881_crypt_device::feistel_function(int input, const struct sbox *sboxes, UINT32 subkeys)
+{
+ int k,m;
+ int aux;
+ int result=0;
+
+ for (m=0; m<4; ++m) { // 4 sboxes
+ for (k=0, aux=0; k<6; ++k)
+ if (sboxes[m].inputs[k]!=-1)
+ aux |= BIT(input, sboxes[m].inputs[k]) << k;
+
+ aux = sboxes[m].table[(aux^subkeys)&0x3f];
+
+ for (k=0; k<2; ++k)
+ result |= BIT(aux,k) << sboxes[m].outputs[k];
+
+ subkeys >>=6;
+ }
+
+ return result;
+}
+
+/**************************
+This implementation is an "educational" version. It must be noted that it can be speed-optimized in a number of ways.
+The most evident one is to factor out the parts of the key-scheduling that must only be done once (like the game-key &
+sequence-key parts) as noted in the comments inlined in the function. More sophisticated speed-ups can be gained by
+noticing that the weak key-scheduling would allow to create some pregenerated look-up tables for doing most of the work
+of the function. Even so, it would still be pretty slow, so caching techniques could be a wiser option here.
+**************************/
+
+UINT16 sega_315_5881_crypt_device::block_decrypt(UINT32 game_key, UINT16 sequence_key, UINT16 counter, UINT16 data)
+{
+ int j;
+ int aux,aux2;
+ int A,B;
+ int middle_result;
+ UINT32 fn1_subkeys[4];
+ UINT32 fn2_subkeys[4];
+
+ /* Game-key scheduling; this could be done just once per game at initialization time */
+ memset(fn1_subkeys,0,sizeof(UINT32)*4);
+ memset(fn2_subkeys,0,sizeof(UINT32)*4);
+
+ for (j=0; j<38; ++j) {
+ if (BIT(game_key, fn1_game_key_scheduling[j][0])!=0) {
+ aux = fn1_game_key_scheduling[j][1]%24;
+ aux2 = fn1_game_key_scheduling[j][1]/24;
+ fn1_subkeys[aux2] ^= (1<> 8;
+ A = (aux & 0xff) ^ feistel_function(B,fn1_sboxes[0],fn1_subkeys[0]);
+
+ // 2nd round
+ B = B ^ feistel_function(A,fn1_sboxes[1],fn1_subkeys[1]);
+
+ // 3rd round
+ A = A ^ feistel_function(B,fn1_sboxes[2],fn1_subkeys[2]);
+
+ // 4th round
+ B = B ^ feistel_function(A,fn1_sboxes[3],fn1_subkeys[3]);
+
+ middle_result = (B<<8)|A;
+
+
+ /* Middle-result-key sheduling */
+ for (j=0; j<16; ++j) {
+ if (BIT(middle_result,j)!=0) {
+ aux = fn2_middle_result_scheduling[j]%24;
+ aux2 = fn2_middle_result_scheduling[j]/24;
+ fn2_subkeys[aux2] ^= (1<> 8;
+ A = (aux & 0xff) ^ feistel_function(B,fn2_sboxes[0],fn2_subkeys[0]);
+
+ // 2nd round
+ B = B ^ feistel_function(A,fn2_sboxes[1],fn2_subkeys[1]);
+
+ // 3rd round
+ A = A ^ feistel_function(B,fn2_sboxes[2],fn2_subkeys[2]);
+
+ // 4th round
+ B = B ^ feistel_function(A,fn2_sboxes[3],fn2_subkeys[3]);
+
+ aux = (B<<8)|A;
+
+ aux = BITSWAP16(aux,15,7,6,14,13,12,5,4, 3,2,11,10,9,1,0,8);
+
+ return aux;
+}
+
+UINT16 sega_315_5881_crypt_device::get_decrypted_16()
+{
+ UINT16 enc;
+
+ enc = m_read(prot_cur_address);
+
+ UINT16 dec = block_decrypt(key, subkey, prot_cur_address, enc);
+ UINT16 res = (dec & 3) | (dec_hist & 0xfffc);
+ dec_hist = dec;
+
+ prot_cur_address ++;
+ return res;
+}
+
+void sega_315_5881_crypt_device::enc_start()
+{
+ buffer_pos = BUFFER_SIZE;
+ dec_header = get_decrypted_16() << 16;
+ dec_header |= get_decrypted_16();
+
+ if(dec_header & FLAG_COMPRESSED) {
+ line_buffer_size = dec_header & FLAG_LINE_SIZE_512 ? 512 : 256;
+ line_buffer_pos = line_buffer_size;
+ buffer_bit = 7;
+ }
+ enc_ready = true;
+}
+
+void sega_315_5881_crypt_device::enc_fill()
+{
+ assert(buffer_pos == BUFFER_SIZE);
+ for(int i = 0; i != BUFFER_SIZE; i+=2) {
+ UINT16 val = get_decrypted_16();
+ buffer[i] = val;
+ buffer[i+1] = val >> 8;
+ }
+ buffer_pos = 0;
+}
+
+/* node format
+0xxxxxxx - next node index
+1a0bbccc - end node
+ a - 0 = repeat
+ 1 = fetch
+ b - if a = 1
+ 00 - fetch 0
+ 01 - fetch 1
+ 11 - fetch -1
+ if a = 0
+ 000
+ c - repeat/fetch counter
+ count = ccc + 1
+11111111 - empty node
+*/
+const UINT8 sega_315_5881_crypt_device::trees[9][2][32] = {
+ {
+ {0x01,0x10,0x0f,0x05,0xc4,0x13,0x87,0x0a,0xcc,0x81,0xce,0x0c,0x86,0x0e,0x84,0xc2,
+ 0x11,0xc1,0xc3,0xcf,0x15,0xc8,0xcd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ {0xc7,0x02,0x03,0x04,0x80,0x06,0x07,0x08,0x09,0xc9,0x0b,0x0d,0x82,0x83,0x85,0xc0,
+ 0x12,0xc6,0xc5,0x14,0x16,0xca,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ },
+ {
+ {0x02,0x80,0x05,0x04,0x81,0x10,0x15,0x82,0x09,0x83,0x0b,0x0c,0x0d,0xdc,0x0f,0xde,
+ 0x1c,0xcf,0xc5,0xdd,0x86,0x16,0x87,0x18,0x19,0x1a,0xda,0xca,0xc9,0x1e,0xce,0xff,},
+ {0x01,0x17,0x03,0x0a,0x08,0x06,0x07,0xc2,0xd9,0xc4,0xd8,0xc8,0x0e,0x84,0xcb,0x85,
+ 0x11,0x12,0x13,0x14,0xcd,0x1b,0xdb,0xc7,0xc0,0xc1,0x1d,0xdf,0xc3,0xc6,0xcc,0xff,},
+ },
+ {
+ {0xc6,0x80,0x03,0x0b,0x05,0x07,0x82,0x08,0x15,0xdc,0xdd,0x0c,0xd9,0xc2,0x14,0x10,
+ 0x85,0x86,0x18,0x16,0xc5,0xc4,0xc8,0xc9,0xc0,0xcc,0xff,0xff,0xff,0xff,0xff,0xff,},
+ {0x01,0x02,0x12,0x04,0x81,0x06,0x83,0xc3,0x09,0x0a,0x84,0x11,0x0d,0x0e,0x0f,0x19,
+ 0xca,0xc1,0x13,0xd8,0xda,0xdb,0x17,0xde,0xcd,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,},
+ },
+ {
+ {0x01,0x80,0x0d,0x04,0x05,0x15,0x83,0x08,0xd9,0x10,0x0b,0x0c,0x84,0x0e,0xc0,0x14,
+ 0x12,0xcb,0x13,0xca,0xc8,0xc2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ {0xc5,0x02,0x03,0x07,0x81,0x06,0x82,0xcc,0x09,0x0a,0xc9,0x11,0xc4,0x0f,0x85,0xd8,
+ 0xda,0xdb,0xc3,0xdc,0xdd,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ },
+ {
+ {0x01,0x80,0x06,0x0c,0x05,0x81,0xd8,0x84,0x09,0xdc,0x0b,0x0f,0x0d,0x0e,0x10,0xdb,
+ 0x11,0xca,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ {0xc4,0x02,0x03,0x04,0xcb,0x0a,0x07,0x08,0xd9,0x82,0xc8,0x83,0xc0,0xc1,0xda,0xc2,
+ 0xc9,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ },
+ {
+ {0x01,0x02,0x06,0x0a,0x83,0x0b,0x07,0x08,0x09,0x82,0xd8,0x0c,0xd9,0xda,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ {0xc3,0x80,0x03,0x04,0x05,0x81,0xca,0xc8,0xdb,0xc9,0xc0,0xc1,0x0d,0xc2,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ },
+ {
+ {0x01,0x02,0x03,0x04,0x81,0x07,0x08,0xd8,0xda,0xd9,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ {0xc2,0x80,0x05,0xc9,0xc8,0x06,0x82,0xc0,0x09,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ },
+ {
+ {0x01,0x80,0x04,0xc8,0xc0,0xd9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ {0xc1,0x02,0x03,0x81,0x05,0xd8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ },
+ {
+ {0x01,0xd8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ {0xc0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ },
+};
+
+int sega_315_5881_crypt_device::get_compressed_bit()
+{
+ if(buffer_pos == BUFFER_SIZE)
+ enc_fill();
+ int res = (buffer[buffer_pos^1] >> buffer_bit) & 1;
+ buffer_bit--;
+ if(buffer_bit == -1) {
+ buffer_bit = 7;
+ buffer_pos++;
+ }
+ return res;
+}
+
+void sega_315_5881_crypt_device::line_fill()
+{
+ assert(line_buffer_pos == line_buffer_size);
+ UINT8 *lp = line_buffer;
+ UINT8 *lc = line_buffer_prev;
+ line_buffer = lc;
+ line_buffer_prev = lp;
+ line_buffer_pos = 0;
+
+ UINT32 line_buffer_mask = line_buffer_size-1;
+
+ for(int i=0; i != line_buffer_size;) {
+ // vlc 0: start of line
+ // vlc 1: interior of line
+ // vlc 2-9: 7-1 bytes from end of line
+
+ int slot = i ? i < line_buffer_size - 7 ? 1 : (i & 7) + 1 : 0;
+
+ UINT32 tmp = 0;
+ while (!(tmp&0x80))
+ if(get_compressed_bit())
+ tmp = trees[slot][1][tmp];
+ else
+ tmp = trees[slot][0][tmp];
+ if(tmp != 0xff) {
+ int count = (tmp & 7) + 1;
+
+ if(tmp&0x40) {
+ // Copy from previous line
+
+ static int offsets[4] = {0, 1, 0, -1};
+ int offset = offsets[(tmp & 0x18) >> 3];
+ for(int j=0; j != count; j++) {
+ lc[i^1] = lp[((i+offset) & line_buffer_mask)^1];
+ i++;
+ }
+
+ } else {
+ // Get a byte in the stream and write n times
+ UINT8 byte;
+ byte = get_compressed_bit() << 1;
+ byte = (byte | get_compressed_bit()) << 1;
+ byte = (byte | get_compressed_bit()) << 1;
+ byte = (byte | get_compressed_bit()) << 1;
+ byte = (byte | get_compressed_bit()) << 1;
+ byte = (byte | get_compressed_bit()) << 1;
+ byte = (byte | get_compressed_bit()) << 1;
+ byte = byte | get_compressed_bit();
+ for(int j=0; j != count; j++)
+ lc[(i++)^1] = byte;
+
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/mame/machine/315-5881_crypt.h b/src/mame/machine/315-5881_crypt.h
new file mode 100644
index 00000000000..6d667aef807
--- /dev/null
+++ b/src/mame/machine/315-5881_crypt.h
@@ -0,0 +1,87 @@
+
+#pragma once
+
+#ifndef __SEGA315_5881_CRYPT__
+#define __SEGA315_5881_CRYPT__
+
+typedef device_delegate sega_m2_read_delegate;
+
+extern const device_type SEGA315_5881_CRYPT;
+
+#define MCFG_SET_READ_CALLBACK( _class, _method) \
+ sega_315_5881_crypt_device::set_read_cb(*device, sega_m2_read_delegate(&_class::_method, #_class "::" #_method, NULL, (_class *)0));
+
+
+class sega_315_5881_crypt_device : public device_t
+{
+public:
+ // construction/destruction
+ sega_315_5881_crypt_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+
+ UINT16 do_decrypt(UINT8 *&base);
+ void set_addr_low(UINT16 data);
+ void set_addr_high(UINT16 data);
+ void set_subkey(UINT16 data);
+ void set_key(UINT32 data);
+
+ sega_m2_read_delegate m_read;
+
+ static void set_read_cb(device_t &device,sega_m2_read_delegate readcb)
+ {
+ sega_315_5881_crypt_device &dev = downcast(device);
+ dev.m_read = readcb;
+ }
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+
+ enum {
+ BUFFER_SIZE = 32768, LINE_SIZE = 512,
+ FLAG_COMPRESSED = 0x10000, FLAG_LINE_SIZE_512 = 0x20000
+ };
+
+ UINT32 key;
+
+ UINT8 *buffer, *line_buffer, *line_buffer_prev;
+ UINT32 prot_cur_address;
+ UINT16 subkey, dec_hist;
+ UINT32 dec_header;
+
+ bool enc_ready;
+
+ int buffer_pos, line_buffer_pos, line_buffer_size, buffer_bit;
+
+ struct sbox {
+ UINT8 table[64];
+ int inputs[6]; // positions of the inputs bits, -1 means no input except from key
+ int outputs[2]; // positions of the output bits
+ };
+
+ static const sbox fn1_sboxes[4][4];
+ static const sbox fn2_sboxes[4][4];
+
+ static const int fn1_game_key_scheduling[38][2];
+ static const int fn2_game_key_scheduling[34][2];
+ static const int fn1_sequence_key_scheduling[20][2];
+ static const int fn2_sequence_key_scheduling[16];
+ static const int fn2_middle_result_scheduling[16];
+
+ static const UINT8 trees[9][2][32];
+
+ int feistel_function(int input, const struct sbox *sboxes, UINT32 subkeys);
+ UINT16 block_decrypt(UINT32 game_key, UINT16 sequence_key, UINT16 counter, UINT16 data);
+
+ UINT16 get_decrypted_16();
+ int get_compressed_bit();
+
+ void enc_start();
+ void enc_fill();
+ void line_fill();
+
+};
+
+#endif
diff --git a/src/mame/machine/315_5296.h b/src/mame/machine/315_5296.h
index a3882475db6..d9c43a01118 100644
--- a/src/mame/machine/315_5296.h
+++ b/src/mame/machine/315_5296.h
@@ -100,6 +100,8 @@ public:
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
+
+ UINT8 debug_peek_output(offs_t offset) { return m_output_latch[offset & 7]; }
protected:
// device-level overrides
diff --git a/src/mame/machine/asic65.c b/src/mame/machine/asic65.c
index 075e29ab356..978443f497c 100644
--- a/src/mame/machine/asic65.c
+++ b/src/mame/machine/asic65.c
@@ -150,7 +150,7 @@ void asic65_device::device_reset()
void asic65_device::reset_line(int state)
{
- address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM);
+ address_space &space = subdevice("^maincpu")->memory().space(AS_PROGRAM);
/* rom-based means reset and clear states */
if (m_asic65_type == ASIC65_ROMBASED)
diff --git a/src/mame/machine/atarigen.c b/src/mame/machine/atarigen.c
index e34afcd850b..d6676f16953 100644
--- a/src/mame/machine/atarigen.c
+++ b/src/mame/machine/atarigen.c
@@ -16,7 +16,6 @@
#include "sound/okim6295.h"
#include "sound/pokey.h"
#include "video/atarimo.h"
-#include "includes/slapstic.h"
#include "atarigen.h"
@@ -975,7 +974,8 @@ atarigen_state::atarigen_state(const machine_config &mconfig, device_type type,
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
- m_generic_paletteram_16(*this, "paletteram")
+ m_generic_paletteram_16(*this, "paletteram"),
+ m_slapstic_device(*this, ":slapstic")
{
}
@@ -1022,8 +1022,11 @@ void atarigen_state::machine_reset()
// reset the slapstic
if (m_slapstic_num != 0)
{
- slapstic_reset();
- slapstic_update_bank(slapstic_bank());
+ if (!m_slapstic_device)
+ fatalerror("Slapstic device is missing?\n");
+
+ m_slapstic_device->slapstic_reset();
+ slapstic_update_bank(m_slapstic_device->slapstic_bank());
}
}
@@ -1192,7 +1195,10 @@ inline void atarigen_state::slapstic_update_bank(int bank)
void atarigen_state::device_post_load()
{
- slapstic_update_bank(slapstic_bank());
+ if (!m_slapstic_device)
+ fatalerror("Slapstic device is missing?\n");
+
+ slapstic_update_bank(m_slapstic_device->slapstic_bank());
}
@@ -1232,8 +1238,11 @@ void atarigen_state::slapstic_configure(cpu_device &device, offs_t base, offs_t
// if we have a chip, install it
if (chipnum != 0)
{
+ if (!m_slapstic_device)
+ fatalerror("Slapstic device is missing\n");
+
// initialize the slapstic
- slapstic_init(machine(), chipnum);
+ m_slapstic_device->slapstic_init(machine(), chipnum);
// install the memory handlers
address_space &program = device.space(AS_PROGRAM);
@@ -1262,7 +1271,10 @@ void atarigen_state::slapstic_configure(cpu_device &device, offs_t base, offs_t
WRITE16_MEMBER(atarigen_state::slapstic_w)
{
- slapstic_update_bank(slapstic_tweak(space, offset));
+ if (!m_slapstic_device)
+ fatalerror("Slapstic device is missing?\n");
+
+ slapstic_update_bank(m_slapstic_device->slapstic_tweak(space, offset));
}
@@ -1273,11 +1285,14 @@ WRITE16_MEMBER(atarigen_state::slapstic_w)
READ16_MEMBER(atarigen_state::slapstic_r)
{
+ if (!m_slapstic_device)
+ fatalerror("Slapstic device is missing?\n");
+
// fetch the result from the current bank first
int result = m_slapstic[offset & 0xfff];
// then determine the new one
- slapstic_update_bank(slapstic_tweak(space, offset));
+ slapstic_update_bank(m_slapstic_device->slapstic_tweak(space, offset));
return result;
}
diff --git a/src/mame/machine/atarigen.h b/src/mame/machine/atarigen.h
index f6b9bce95f1..6ce56c35a8c 100644
--- a/src/mame/machine/atarigen.h
+++ b/src/mame/machine/atarigen.h
@@ -17,6 +17,7 @@
#include "video/atarimo.h"
#include "cpu/m6502/m6502.h"
#include "sound/okim6295.h"
+#include "includes/slapstic.h"
/***************************************************************************
@@ -431,6 +432,7 @@ public:
optional_device m_screen;
optional_device m_palette;
optional_shared_ptr m_generic_paletteram_16;
+ optional_device m_slapstic_device;
};
diff --git a/src/mame/machine/harddriv.c b/src/mame/machine/harddriv.c
index a093b830e67..3d138b8f954 100644
--- a/src/mame/machine/harddriv.c
+++ b/src/mame/machine/harddriv.c
@@ -36,22 +36,25 @@
*
*************************************/
-MACHINE_START_MEMBER(harddriv_state,harddriv)
+void harddriv_state::device_start()
{
- atarigen_state::machine_start();
+ //atarigen_state::machine_start();
/* predetermine memory regions */
m_sim_memory = (UINT16 *)memregion("user1")->base();
m_sim_memory_size = memregion("user1")->bytes() / 2;
m_adsp_pgm_memory_word = (UINT16 *)(reinterpret_cast(m_adsp_pgm_memory.target()) + 1);
+
+ init_video();
+
}
-MACHINE_RESET_MEMBER(harddriv_state,harddriv)
+void harddriv_state::device_reset()
{
/* generic reset */
- atarigen_state::machine_reset();
- slapstic_reset();
+ //atarigen_state::machine_reset();
+ m_slapstic_device->slapstic_reset();
/* halt several of the DSPs to start */
if (m_adsp != NULL) m_adsp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
@@ -196,6 +199,11 @@ WRITE16_MEMBER( harddriv_state::hd68k_msp_io_w )
*
*************************************/
+READ16_MEMBER( harddriv_state::hd68k_a80000_r )
+{
+ return ioport("a80000")->read_safe(0xffff);
+}
+
READ16_MEMBER( harddriv_state::hd68k_port0_r )
{
/* port is as follows:
@@ -213,8 +221,10 @@ READ16_MEMBER( harddriv_state::hd68k_port0_r )
.....
0x8000 = SW1 #1
*/
- int temp = (ioport("SW1")->read() << 8) | ioport("IN0")->read();
- if (get_hblank(*m_screen)) temp ^= 0x0002;
+ screen_device &scr = m_gsp->screen();
+
+ int temp = (ioport("SW1")->read_safe(0xff) << 8) | ioport("IN0")->read_safe(0xff);
+ if (get_hblank(scr)) temp ^= 0x0002;
temp ^= 0x0018; /* both EOCs always high for now */
return temp;
}
@@ -222,7 +232,7 @@ READ16_MEMBER( harddriv_state::hd68k_port0_r )
READ16_MEMBER( harddriv_state::hdc68k_port1_r )
{
- UINT16 result = ioport("a80000")->read();
+ UINT16 result = ioport("a80000")->read_safe(0xffff);
UINT16 diff = result ^ m_hdc68k_last_port1;
/* if a new shifter position is selected, use it */
@@ -250,7 +260,7 @@ READ16_MEMBER( harddriv_state::hdc68k_port1_r )
READ16_MEMBER( harddriv_state::hda68k_port1_r )
{
- UINT16 result = ioport("a80000")->read();
+ UINT16 result = ioport("a80000")->read_safe(0xffff);
/* merge in the wheel edge latch bit */
if (m_hdc68k_wheel_edge)
@@ -263,7 +273,7 @@ READ16_MEMBER( harddriv_state::hda68k_port1_r )
READ16_MEMBER( harddriv_state::hdc68k_wheel_r )
{
/* grab the new wheel value and upconvert to 12 bits */
- UINT16 new_wheel = ioport("12BADC0")->read() << 4;
+ UINT16 new_wheel = ioport("12BADC0")->read_safe(0xffff) << 4;
/* hack to display the wheel position */
if (space.machine().input().code_pressed(KEYCODE_LSHIFT))
@@ -317,14 +327,14 @@ WRITE16_MEMBER( harddriv_state::hd68k_adc_control_w )
if (m_adc_control & 0x08)
{
m_adc8_select = m_adc_control & 0x07;
- m_adc8_data = ioport(adc8names[m_adc8_select])->read();
+ m_adc8_data = ioport(adc8names[m_adc8_select])->read_safe(0xffff);
}
/* handle a write to the 12-bit ADC address select */
if (m_adc_control & 0x40)
{
m_adc12_select = (m_adc_control >> 4) & 0x03;
- m_adc12_data = space.machine().root_device().ioport(adc12names[m_adc12_select])->read() << 4;
+ m_adc12_data = ioport(adc12names[m_adc12_select])->read_safe(0xffff) << 4;
}
/* bit 7 selects which byte of the 12 bit data to read */
@@ -485,9 +495,11 @@ WRITE16_MEMBER( harddriv_state::hdgsp_io_w )
}
}
+ screen_device &scr = m_gsp->screen();
+
/* detect changes to HEBLNK and HSBLNK and force an update before they change */
if ((offset == REG_HEBLNK || offset == REG_HSBLNK) && data != m_gsp->io_register_r(space, offset, 0xffff))
- m_screen->update_partial(m_screen->vpos() - 1);
+ scr.update_partial(scr.vpos() - 1);
m_gsp->io_register_w(space, offset, data, mem_mask);
}
@@ -1502,11 +1514,11 @@ WRITE16_MEMBER( harddriv_state::hd68k_dsk_control_w )
switch (offset & 7)
{
case 0: /* DSPRESTN */
- m_dsp32->set_input_line(INPUT_LINE_RESET, val ? CLEAR_LINE : ASSERT_LINE);
+ if (m_dsp32) m_dsp32->set_input_line(INPUT_LINE_RESET, val ? CLEAR_LINE : ASSERT_LINE);
break;
case 1: /* DSPZN */
- m_dsp32->set_input_line(INPUT_LINE_HALT, val ? CLEAR_LINE : ASSERT_LINE);
+ if (m_dsp32) m_dsp32->set_input_line(INPUT_LINE_HALT, val ? CLEAR_LINE : ASSERT_LINE);
break;
case 2: /* ZW1 */
@@ -1570,7 +1582,7 @@ READ16_MEMBER( harddriv_state::hd68k_dsk_rom_r )
WRITE16_MEMBER( harddriv_state::hd68k_dsk_dsp32_w )
{
m_dsk_pio_access = TRUE;
- m_dsp32->pio_w(offset, data);
+ if (m_dsp32) m_dsp32->pio_w(offset, data);
m_dsk_pio_access = FALSE;
}
@@ -1579,7 +1591,9 @@ READ16_MEMBER( harddriv_state::hd68k_dsk_dsp32_r )
{
UINT16 result;
m_dsk_pio_access = TRUE;
- result = m_dsp32->pio_r(offset);
+ if (m_dsp32) result = m_dsp32->pio_r(offset);
+ else result = 0x00;
+
m_dsk_pio_access = FALSE;
return result;
}
@@ -1671,13 +1685,13 @@ WRITE16_MEMBER( harddriv_state::hddspcom_control_w )
WRITE16_MEMBER( harddriv_state::rd68k_slapstic_w )
{
- slapstic_tweak(space, offset & 0x3fff);
+ m_slapstic_device->slapstic_tweak(space, offset & 0x3fff);
}
READ16_MEMBER( harddriv_state::rd68k_slapstic_r )
{
- int bank = slapstic_tweak(space, offset & 0x3fff) * 0x4000;
+ int bank = m_slapstic_device->slapstic_tweak(space, offset & 0x3fff) * 0x4000;
return m_m68k_slapstic_base[bank + (offset & 0x3fff)];
}
diff --git a/src/mame/machine/n64.c b/src/mame/machine/n64.c
index 78b97ac9e90..501d8d2cbe5 100644
--- a/src/mame/machine/n64.c
+++ b/src/mame/machine/n64.c
@@ -267,10 +267,6 @@ void n64_periphs::device_reset()
pif_ram[0x27] = 0x3f;
cic_type=6;
}
- else
- {
- //printf("Unknown BootCode Checksum %08X%08X\n", (UINT32)(boot_checksum>>32),(UINT32)(boot_checksum));
- }
}
// Memory Interface (MI)
@@ -312,13 +308,11 @@ READ32_MEMBER( n64_periphs::mi_reg_r )
break;
}
- //printf("mi_reg_r %08x = %08x\n", offset * 4, ret); fflush(stdout);
return ret;
}
WRITE32_MEMBER( n64_periphs::mi_reg_w )
{
- //printf("mi_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); fflush(stdout);
switch (offset)
{
case 0x00/4: // MI_INIT_MODE_REG
@@ -409,12 +403,10 @@ void n64_periphs::check_interrupts()
{
if (mi_intr_mask & mi_interrupt)
{
- //printf("Asserting IRQ, %02x : %02x\n", mi_intr_mask, mi_interrupt); fflush(stdout);
machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
}
else
{
- //printf("Deasserting IRQ, %02x : %02x\n", mi_intr_mask, mi_interrupt); fflush(stdout);
machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
}
}
@@ -466,10 +458,9 @@ WRITE32_MEMBER( n64_periphs::is64_w )
case 0x0014/4:
for(i = 0x20; i < (0x20 + data); i++)
{
- //printf( "%c", is64_buffer[i] );
if(is64_buffer[i] == 0x0a)
{
- //printf( "%c", 0x0d );
+ printf( "%c", 0x0d );
}
is64_buffer[i] = 0;
}
@@ -511,7 +502,6 @@ WRITE32_MEMBER( n64_periphs::open_w )
READ32_MEMBER( n64_periphs::rdram_reg_r )
{
- //printf("rdram_reg_r %08x = %08x\n", offset * 4, rdram_regs[offset]); fflush(stdout);
if(offset > 0x24/4)
{
logerror("rdram_reg_r: %08X, %08X at %08X\n", offset, mem_mask, maincpu->safe_pc());
@@ -522,7 +512,6 @@ READ32_MEMBER( n64_periphs::rdram_reg_r )
WRITE32_MEMBER( n64_periphs::rdram_reg_w )
{
- //printf("rdram_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); fflush(stdout);
if(offset > 0x24/4)
{
logerror("rdram_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, maincpu->safe_pc());
@@ -542,7 +531,6 @@ void n64_periphs::sp_dma(int direction)
length = (length + 7) & ~7;
}
- //printf("Length %08x Skip %08x Count %08x\n", length, sp_dma_skip, sp_dma_count); fflush(stdout);
if (sp_mem_addr & 0x3)
{
sp_mem_addr = sp_mem_addr & ~3;
@@ -554,8 +542,6 @@ void n64_periphs::sp_dma(int direction)
if ((sp_mem_addr & 0xfff) + (length) > 0x1000)
{
- //printf("sp_dma: dma out of memory area: %08X, %08X, %08X\n", sp_mem_addr, sp_dram_addr, length);
- //fatalerror("sp_dma: dma out of memory area: %08X, %08X\n", sp_mem_addr, length);
length = 0x1000 - (sp_mem_addr & 0xfff);
}
@@ -602,7 +588,6 @@ void n64_periphs::sp_dma(int direction)
WRITE32_MEMBER(n64_periphs::sp_set_status)
{
- //printf("sp_set_status: %08x\n", data);
if (data & 0x1)
{
rspcpu->execute().set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
@@ -638,8 +623,6 @@ READ32_MEMBER(n64_periphs::sp_reg_r)
break;
case 0x10/4: // SP_STATUS_REG
- //machine().scheduler().synchronize();
- //machine().scheduler().boost_interleave(attotime::from_msec(1), attotime::from_msec(m));
ret = rspcpu->state().state_int(RSP_SR);
break;
@@ -652,7 +635,6 @@ READ32_MEMBER(n64_periphs::sp_reg_r)
break;
case 0x1c/4: // SP_SEMAPHORE_REG
- //machine().scheduler().boost_interleave(attotime::from_usec(1), attotime::from_usec(1));
machine().device("maincpu")->execute().yield();
if( sp_semaphore )
{
@@ -660,7 +642,6 @@ READ32_MEMBER(n64_periphs::sp_reg_r)
}
else
{
- //printf("Semaphore is now acquired, returning 0\n");
sp_semaphore = 1;
ret = 0;
}
@@ -718,15 +699,12 @@ READ32_MEMBER(n64_periphs::sp_reg_r)
break;
}
- //printf("%08x sp_reg_r %08x = %08x\n", (UINT32)maincpu->state().state_int(MIPS3_PC), offset * 4, ret); fflush(stdout);
return ret;
}
WRITE32_MEMBER(n64_periphs::sp_reg_w )
{
- //printf("%08x sp_reg_w %08x %08x %08x\n", (UINT32)maincpu->state().state_int(MIPS3_PC), offset * 4, data, mem_mask); fflush(stdout);
-
if ((offset & 0x10000) == 0)
{
switch (offset & 0xffff)
@@ -758,43 +736,37 @@ WRITE32_MEMBER(n64_periphs::sp_reg_w )
UINT32 oldstatus = rspcpu->state().state_int(RSP_SR);
UINT32 newstatus = oldstatus;
- // printf( "RSP_STATUS_REG Write; %08x\n", data );
if (data & 0x00000001) // clear halt
{
rspcpu->execute().set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
newstatus &= ~RSP_STATUS_HALT;
- //printf("***SP HALT CLR***\n"); fflush(stdout);
+ machine().scheduler().abort_timeslice();
+ machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100));
}
if (data & 0x00000002) // set halt
{
rspcpu->execute().set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
newstatus |= RSP_STATUS_HALT;
- //printf("***SP HALT SET***\n"); fflush(stdout);
}
if (data & 0x00000004)
{
newstatus &= ~RSP_STATUS_BROKE;
- //printf("***SP BROKE CLR***\n"); fflush(stdout);
}
if (data & 0x00000008) // clear interrupt
{
- //printf("***SP INT CLR***\n"); fflush(stdout);
clear_rcp_interrupt(SP_INTERRUPT);
}
if (data & 0x00000010) // set interrupt
{
- //printf("***SP INT SET***\n"); fflush(stdout);
signal_rcp_interrupt(SP_INTERRUPT);
}
if (data & 0x00000020)
{
newstatus &= ~RSP_STATUS_SSTEP;
- //printf("***SP SSTEP CLR***\n"); fflush(stdout);
}
if (data & 0x00000040)
{
newstatus |= RSP_STATUS_SSTEP; // set single step
- //printf("***SP SSTEP SET***\n"); fflush(stdout);
if(!(oldstatus & (RSP_STATUS_BROKE | RSP_STATUS_HALT)))
{
rspcpu->state().set_state_int(RSP_STEPCNT, 1 );
@@ -804,100 +776,80 @@ WRITE32_MEMBER(n64_periphs::sp_reg_w )
if (data & 0x00000080)
{
newstatus &= ~RSP_STATUS_INTR_BREAK; // clear interrupt on break
- //printf("***SP INTRBRK CLR***\n"); fflush(stdout);
}
if (data & 0x00000100)
{
newstatus |= RSP_STATUS_INTR_BREAK; // set interrupt on break
- //printf("***SP INTRBRK SET***\n"); fflush(stdout);
}
if (data & 0x00000200)
{
newstatus &= ~RSP_STATUS_SIGNAL0; // clear signal 0
- //printf("***SP YIELD CLR***\n"); fflush(stdout);
}
if (data & 0x00000400)
{
newstatus |= RSP_STATUS_SIGNAL0; // set signal 0
- //printf("***SP YIELD SET***\n"); fflush(stdout);
}
if (data & 0x00000800)
{
newstatus &= ~RSP_STATUS_SIGNAL1; // clear signal 1
- //printf("***SP YIELDED CLR***\n"); fflush(stdout);
}
if (data & 0x00001000)
{
newstatus |= RSP_STATUS_SIGNAL1; // set signal 1
- //printf("***SP YIELDED SET***\n"); fflush(stdout);
}
if (data & 0x00002000)
{
newstatus &= ~RSP_STATUS_SIGNAL2 ; // clear signal 2
- //printf("***SP TASKDONE CLR***\n"); fflush(stdout);
}
if (data & 0x00004000)
{
newstatus |= RSP_STATUS_SIGNAL2; // set signal 2
- //printf("***SP TASKDONE SET***\n"); fflush(stdout);
}
if (data & 0x00008000)
{
newstatus &= ~RSP_STATUS_SIGNAL3; // clear signal 3
- //printf("***SP SIG3 CLR***\n"); fflush(stdout);
}
if (data & 0x00010000)
{
newstatus |= RSP_STATUS_SIGNAL3; // set signal 3
- //printf("***SP SIG3 SET***\n"); fflush(stdout);
}
if (data & 0x00020000)
{
newstatus &= ~RSP_STATUS_SIGNAL4; // clear signal 4
- //printf("***SP SIG4 CLR***\n"); fflush(stdout);
}
if (data & 0x00040000)
{
newstatus |= RSP_STATUS_SIGNAL4; // set signal 4
- //printf("***SP SIG4 SET***\n"); fflush(stdout);
}
if (data & 0x00080000)
{
newstatus &= ~RSP_STATUS_SIGNAL5; // clear signal 5
- //printf("***SP SIG5 CLR***\n"); fflush(stdout);
}
if (data & 0x00100000)
{
newstatus |= RSP_STATUS_SIGNAL5; // set signal 5
- //printf("***SP SIG5 SET***\n"); fflush(stdout);
}
if (data & 0x00200000)
{
newstatus &= ~RSP_STATUS_SIGNAL6; // clear signal 6
- //printf("***SP SIG6 CLR***\n"); fflush(stdout);
}
if (data & 0x00400000)
{
newstatus |= RSP_STATUS_SIGNAL6; // set signal 6
- //printf("***SP SIG6 SET***\n"); fflush(stdout);
}
if (data & 0x00800000)
{
newstatus &= ~RSP_STATUS_SIGNAL7; // clear signal 7
- //printf("***SP SIG7 CLR***\n"); fflush(stdout);
}
if (data & 0x01000000)
{
newstatus |= RSP_STATUS_SIGNAL7; // set signal 7
- //printf("***SP SIG7 SET***\n"); fflush(stdout);
}
rspcpu->state().set_state_int(RSP_SR, newstatus);
break;
}
case 0x1c/4: // SP_SEMAPHORE_REG
- //machine().scheduler().boost_interleave(attotime::from_usec(1), attotime::from_usec(1));
- //printf("Semaphore is being released\n");
if(data == 0)
{
sp_semaphore = 0;
@@ -976,7 +928,6 @@ READ32_MEMBER( n64_periphs::dp_reg_r )
break;
}
- //printf("%08x dp_reg_r %08x = %08x\n", (UINT32)space.machine().device("rsp")->state().state_int(RSP_PC), offset, ret); fflush(stdout);
return ret;
}
@@ -984,7 +935,6 @@ WRITE32_MEMBER( n64_periphs::dp_reg_w )
{
n64_state *state = space.machine().driver_data();
- //printf("%08x dp_reg_w %08x %08x %08x\n", (UINT32)space.machine().device("rsp")->state().state_int(RSP_PC), offset, data, mem_mask); fflush(stdout);
switch (offset)
{
case 0x00/4: // DP_START_REG
@@ -993,7 +943,6 @@ WRITE32_MEMBER( n64_periphs::dp_reg_w )
break;
case 0x04/4: // DP_END_REG
- //printf("dp_end_reg %08x\n", data);
state->m_rdp->SetEndReg(data);
g_profiler.start(PROFILER_USER1);
state->m_rdp->ProcessList();
@@ -1042,7 +991,7 @@ void n64_periphs::vi_recalculate_resolution()
int y_end = (vi_vstart & 0x000003ff) / 2;
int width = ((vi_xscale & 0x00000fff) * (x_end - x_start)) / 0x400;
int height = ((vi_yscale & 0x00000fff) * (y_end - y_start)) / 0x400;
- //printf("%04x | %02x | ", vi_xscale >> 16, vi_burst & 0x000000ff);
+
rectangle visarea = m_screen->visible_area();
attoseconds_t period = m_screen->frame_period().attoseconds;
@@ -1070,7 +1019,6 @@ void n64_periphs::vi_recalculate_resolution()
visarea.max_x = width - 1;
visarea.max_y = height - 1;
- //printf("Reconfig %d, %d (%d - %d), %08x, %08x, %08x, %08x, %08x\n", width, height, x_start, x_end, vi_width, vi_xscale, vi_hsync, vi_hstart, vi_burst);
m_screen->configure(width, 525, visarea, period);
}
@@ -1140,13 +1088,11 @@ READ32_MEMBER( n64_periphs::vi_reg_r )
break;
}
- //printf("vi_reg_r %08x = %08x\n", offset * 4, ret);
return ret;
}
WRITE32_MEMBER( n64_periphs::vi_reg_w )
{
- //printf("vi_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask);
n64_state *state = machine().driver_data();
switch (offset)
@@ -1379,13 +1325,11 @@ READ32_MEMBER( n64_periphs::ai_reg_r )
break;
}
- //printf("ai_reg_r %08x = %08x\n", offset * 4, ret);
return ret;
}
WRITE32_MEMBER( n64_periphs::ai_reg_w )
{
- //printf("ai_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask);
switch (offset)
{
case 0x00/4: // AI_DRAM_ADDR_REG
@@ -1408,7 +1352,6 @@ WRITE32_MEMBER( n64_periphs::ai_reg_w )
case 0x10/4: // AI_DACRATE_REG
ai_dacrate = data & 0x3fff;
dmadac_set_frequency(&ai_dac[0], 2, (double)DACRATE_NTSC / (double)(ai_dacrate+1));
- //printf( "frequency: %f\n", (double)DACRATE_NTSC / (double)(ai_dacrate+1) );
dmadac_enable(&ai_dac[0], 2, 1);
break;
@@ -1455,8 +1398,6 @@ void n64_periphs::pi_dma_tick()
cart_addr &= ((machine().root_device().memregion("user2")->bytes() >> 1) - 1);
}
- //printf("%08x Cart, %08x Dram\n", cart_addr << 1, dram_addr << 1); fflush(stdout);
-
if(pi_dma_dir == 1)
{
UINT32 dma_length = pi_wr_len + 1;
@@ -1558,13 +1499,11 @@ READ32_MEMBER( n64_periphs::pi_reg_r )
break;
}
- //printf("pi_reg_r %08x = %08x\n", offset * 4, ret);
return ret;
}
WRITE32_MEMBER( n64_periphs::pi_reg_w )
{
- //printf("pi_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); fflush(stdout);
switch (offset)
{
case 0x00/4: // PI_DRAM_ADDR_REG
@@ -1586,7 +1525,6 @@ WRITE32_MEMBER( n64_periphs::pi_reg_w )
pi_status |= 1;
attotime dma_period = attotime::from_hz(93750000) * (int)((float)(pi_rd_len + 1) * 5.08f); // Measured as between 2.53 cycles per byte and 2.55 cycles per byte
- //printf("want read dma in %d\n", (pi_rd_len + 1));
pi_dma_timer->adjust(dma_period);
//pi_dma_tick();
break;
@@ -1599,7 +1537,6 @@ WRITE32_MEMBER( n64_periphs::pi_reg_w )
pi_status |= 1;
attotime dma_period = attotime::from_hz(93750000) * (int)((float)(pi_wr_len + 1) * 5.08f); // Measured as between 2.53 cycles per byte and 2.55 cycles per byte
- //printf("want write dma in %d\n", (pi_wr_len + 1));
pi_dma_timer->adjust(dma_period);
//pi_dma_tick();
@@ -1658,7 +1595,6 @@ WRITE32_MEMBER( n64_periphs::pi_reg_w )
READ32_MEMBER( n64_periphs::ri_reg_r )
{
- //printf("ri_reg_r %08x = %08x\n", offset * 4, ri_regs[offset]);
if(offset > 0x1c/4)
{
logerror("ri_reg_r: %08X, %08X at %08X\n", offset, mem_mask, maincpu->safe_pc());
@@ -1669,7 +1605,6 @@ READ32_MEMBER( n64_periphs::ri_reg_r )
WRITE32_MEMBER( n64_periphs::ri_reg_w )
{
- //printf("ri_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask);
if(offset > 0x1c/4)
{
logerror("ri_reg_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, maincpu->safe_pc());
@@ -1732,20 +1667,12 @@ int n64_periphs::pif_channel_handle_command(int channel, int slength, UINT8 *sda
case 0x00: // Read status
case 0xff: // Reset
{
- if(command == 0)
- {
- //printf("Read status\n");
- }
- else
- {
- //printf("Reset\n");
- }
switch (channel)
{
case 0:
case 1:
{
- //printf("Read controller %d status\n", channel + 1);
+ // Read status
rdata[0] = 0x05;
rdata[1] = 0x00;
rdata[2] = 0x01;
@@ -1754,13 +1681,12 @@ int n64_periphs::pif_channel_handle_command(int channel, int slength, UINT8 *sda
case 2:
case 3:
{
- //printf("Read controller %d status (NC)\n", channel + 1);
- // not connected
+ // Read status (unconnected)
return 1;
}
case 4:
{
- //printf("Read EEPROM status\n");
+ // Read EEPROM status
rdata[0] = 0x00;
rdata[1] = 0x80;
rdata[2] = 0x00;
@@ -1791,10 +1717,9 @@ int n64_periphs::pif_channel_handle_command(int channel, int slength, UINT8 *sda
switch (channel)
{
- case 0: //p1 inputs
- case 1: //p2 inputs
+ case 0: // P1 Inputs
+ case 1: // P2 Inputs
{
- //printf("Read p%d inputs\n", channel + 1);
buttons = machine().root_device().ioport(portnames[(channel*3) + 0])->read();
x = machine().root_device().ioport(portnames[(channel*3) + 1])->read() - 128;
y = machine().root_device().ioport(portnames[(channel*3) + 2])->read() - 128;
@@ -1808,8 +1733,7 @@ int n64_periphs::pif_channel_handle_command(int channel, int slength, UINT8 *sda
case 2:
case 3:
{
- //printf("Controller %d not connected\n", channel + 1);
- // not connected
+ // P3/P4 Inputs (not connected)
return 1;
}
}
@@ -1824,8 +1748,6 @@ int n64_periphs::pif_channel_handle_command(int channel, int slength, UINT8 *sda
address = (sdata[1] << 8) | (sdata[2]);
address &= ~0x1f;
- ////printf("Read mempak at %04x\n", address);
-
if(address == 0x8000)
{
for(int i = 0; i < rlength-1; i++)
@@ -1854,11 +1776,7 @@ int n64_periphs::pif_channel_handle_command(int channel, int slength, UINT8 *sda
UINT32 address = (sdata[1] << 8) | (sdata[2]);
address &= ~0x1f;
- ////printf("Write mempak at %04x\n", address);
- if (address >= 0x8000)
- {
- }
- else
+ if (address < 0x8000)
{
for(int i = 3; i < slength; i++)
{
@@ -1885,8 +1803,6 @@ int n64_periphs::pif_channel_handle_command(int channel, int slength, UINT8 *sda
UINT16 block_offset = sdata[1] * 8;
- //printf("Read EEPROM at %04x\n", block_offset);
-
for(int i=0; i < 8; i++)
{
rdata[i] = m_save_data.eeprom[block_offset+i];
@@ -1909,8 +1825,6 @@ int n64_periphs::pif_channel_handle_command(int channel, int slength, UINT8 *sda
UINT16 block_offset = sdata[1] * 8;
- //printf("Write EEPROM at %04x\n", block_offset);
-
for(int i = 0; i < 8; i++)
{
m_save_data.eeprom[block_offset+i] = sdata[2+i];
@@ -1921,7 +1835,6 @@ int n64_periphs::pif_channel_handle_command(int channel, int slength, UINT8 *sda
case 0x06: // Read RTC Status
{
- //printf("Read RTC Status\n");
rdata[0] = 0x00;
rdata[1] = 0x10;
rdata[2] = 0x00;
@@ -1933,7 +1846,6 @@ int n64_periphs::pif_channel_handle_command(int channel, int slength, UINT8 *sda
switch(sdata[1])
{
case 0:
- //printf("Read RTC Block Header\n");
rdata[0] = 0x00;
rdata[1] = 0x02;
rdata[8] = 0x00;
@@ -1954,7 +1866,6 @@ int n64_periphs::pif_channel_handle_command(int channel, int slength, UINT8 *sda
rdata[6] = convert_to_bcd(systime.local_time.year % 100); // Year
rdata[7] = convert_to_bcd(systime.local_time.year / 100); // Century
rdata[8] = 0x00;
- //printf("Read RTC Time\n");
return 0;
}
return 1;
@@ -1982,16 +1893,13 @@ void n64_periphs::handle_pif()
while(cmd_ptr < 0x3f && !end)
{
INT8 bytes_to_send = (INT8)pif_cmd[cmd_ptr++];
- //printf("bytes to send: 0x%02x\n", bytes_to_send);
if (bytes_to_send == -2)
{
end = 1;
- //printf("end\n");
}
else if (bytes_to_send < 0)
{
- //printf("do nothing\n");
// do nothing
}
else
@@ -2002,7 +1910,6 @@ void n64_periphs::handle_pif()
UINT8 send_buffer[0x40];
INT8 bytes_to_recv = pif_cmd[cmd_ptr++];
- //printf("bytes to receive: 0x%02x\n", bytes_to_recv);
if (bytes_to_recv == -2)
{
@@ -2015,11 +1922,9 @@ void n64_periphs::handle_pif()
}
int res = pif_channel_handle_command(channel, bytes_to_send, send_buffer, bytes_to_recv, recv_buffer);
- //printf("result: %d\n", res);
if (res == 0)
{
- //printf("cmd_ptr (%d) + bytes_to_recv (%d) = %d\n", cmd_ptr, bytes_to_recv, cmd_ptr + bytes_to_recv);
if (cmd_ptr + bytes_to_recv > 0x3f)
{
fatalerror("cmd_ptr overflow\n");
@@ -2110,13 +2015,11 @@ READ32_MEMBER( n64_periphs::si_reg_r )
ret = si_status;
}
- //printf("si_reg_r %08x = %08x\n", offset * 4, ret); fflush(stdout);
return ret;
}
WRITE32_MEMBER( n64_periphs::si_reg_w )
{
- //printf("si_reg_w %08x %08x %08x\n", offset * 4, data, mem_mask); fflush(stdout);
switch (offset)
{
case 0x00/4: // SI_DRAM_ADDR_REG
@@ -2396,7 +2299,7 @@ void n64_state::n64_machine_stop()
return;
device_image_interface *image = dynamic_cast(periphs->m_nvram_image);
- //printf("Saving stuff\n");
+
UINT8 data[0x30800];
memcpy(data, n64_sram, 0x20000);
memcpy(data + 0x20000, periphs->m_save_data.eeprom, 0x800);
diff --git a/src/mame/machine/naomim2.c b/src/mame/machine/naomim2.c
index d21c3746a92..ff07cbdfdbf 100644
--- a/src/mame/machine/naomim2.c
+++ b/src/mame/machine/naomim2.c
@@ -105,7 +105,8 @@ note: if ROM is not mounted its area readed as 0xFF
const device_type NAOMI_M2_BOARD = &device_creator;
naomi_m2_board::naomi_m2_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : naomi_board(mconfig, NAOMI_M2_BOARD, "Sega NAOMI M2 BOARD", tag, owner, clock, "naomi_m2_board", __FILE__)
+ : naomi_board(mconfig, NAOMI_M2_BOARD, "Sega NAOMI M2 BOARD", tag, owner, clock, "naomi_m2_board", __FILE__),
+ m_cryptdevice(*this, "segam2crypt")
{
key_tag = 0;
}
@@ -120,30 +121,10 @@ void naomi_m2_board::device_start()
{
naomi_board::device_start();
-#if USE_NAOMICRYPT
- key = get_naomi_key(machine());
-#else
- const UINT8 *key_data = memregion(key_tag)->base();
- key = (key_data[0] << 24) | (key_data[1] << 16) | (key_data[2] << 8) | key_data[3];
-#endif
ram = auto_alloc_array(machine(), UINT8, RAM_SIZE);
- buffer = auto_alloc_array(machine(), UINT8, BUFFER_SIZE);
- line_buffer = auto_alloc_array(machine(), UINT8, LINE_SIZE);
- line_buffer_prev = auto_alloc_array(machine(), UINT8, LINE_SIZE);
- save_pointer(NAME(ram), RAM_SIZE);
- save_pointer(NAME(buffer), BUFFER_SIZE);
- save_pointer(NAME(line_buffer), LINE_SIZE);
- save_pointer(NAME(line_buffer_prev), LINE_SIZE);
save_item(NAME(rom_cur_address));
- save_item(NAME(prot_cur_address));
- save_item(NAME(subkey));
- save_item(NAME(enc_ready));
- save_item(NAME(dec_hist));
- save_item(NAME(dec_header));
- save_item(NAME(buffer_pos));
- save_item(NAME(line_buffer_pos));
- save_item(NAME(line_buffer_size));
+ save_pointer(NAME(ram), RAM_SIZE);
}
void naomi_m2_board::device_reset()
@@ -151,21 +132,15 @@ void naomi_m2_board::device_reset()
naomi_board::device_reset();
memset(ram, 0, RAM_SIZE);
- memset(buffer, 0, BUFFER_SIZE);
- memset(line_buffer, 0, LINE_SIZE);
- memset(line_buffer_prev, 0, LINE_SIZE);
rom_cur_address = 0;
- prot_cur_address = 0;
- subkey = 0;
- dec_hist = 0;
- dec_header = 0;
- enc_ready = false;
- buffer_pos = 0;
- line_buffer_pos = 0;
- line_buffer_size = 0;
- buffer_bit = 0;
+#if USE_NAOMICRYPT
+ m_cryptdevice->set_key(get_naomi_key(machine()));
+#else
+ const UINT8 *key_data = memregion(key_tag)->base();
+ m_cryptdevice->set_key((key_data[0] << 24) | (key_data[1] << 16) | (key_data[2] << 8) | key_data[3]);
+#endif
}
void naomi_m2_board::board_setup_address(UINT32 address, bool is_dma)
@@ -175,21 +150,10 @@ void naomi_m2_board::board_setup_address(UINT32 address, bool is_dma)
void naomi_m2_board::board_get_buffer(UINT8 *&base, UINT32 &limit)
{
+
if(rom_cur_address & 0x40000000) {
if(rom_cur_address == 0x4001fffe) {
- if(!enc_ready)
- enc_start();
- if(dec_header & FLAG_COMPRESSED) {
- if(line_buffer_pos == line_buffer_size)
- line_fill();
- base = line_buffer + line_buffer_pos;
- line_buffer_pos += 2;
- } else {
- if(buffer_pos == BUFFER_SIZE)
- enc_fill();
- base = buffer + buffer_pos;
- buffer_pos += 2;
- }
+ m_cryptdevice->do_decrypt(base);
limit = 2;
} else
@@ -214,6 +178,8 @@ void naomi_m2_board::board_advance(UINT32 size)
void naomi_m2_board::board_write(offs_t offset, UINT16 data)
{
+
+
if(offset & 0x40000000) {
if((offset & 0x0f000000) == 0x02000000) {
offset &= RAM_SIZE-1;
@@ -222,724 +188,35 @@ void naomi_m2_board::board_write(offs_t offset, UINT16 data)
return;
}
switch(offset & 0x1fffffff) {
- case 0x1fff8: prot_cur_address = (prot_cur_address & 0xffff0000) | data; enc_ready = false; return;
- case 0x1fffa: prot_cur_address = (prot_cur_address & 0x0000ffff) | (data << 16); enc_ready = false; return;
- case 0x1fffc: subkey = data; enc_ready = false; return;
+
+ case 0x1fff8: m_cryptdevice->set_addr_low(data); return;
+ case 0x1fffa: m_cryptdevice->set_addr_high(data); return;
+ case 0x1fffc: m_cryptdevice->set_subkey(data); return;
}
}
throw emu_fatalerror("NAOMIM2: unhandled board write %08x, %04x\n", offset, data);
}
-/***************************************************************************
- DECRYPTION EMULATION
-
-By convention, we label the three known cart protection methods this way (using Deunan Knute's wording):
-M1: DMA read of protected ROM area
-M2: special read of ROM area which supplies decryption key first
-M3: normal read followed by write to cart's decryption buffer (up to 64kB), followed by M2 but from buffer area
-
-Notes below refer to M2 & M3.
-
-The encryption is done by a stream cipher operating in counter mode, which use a 16-bits internal block cipher.
-
-There are 2 "control bits" at the start of the decrypted stream which control the mode of operation: bit #1 set to 1 means
-that the decrypted stream needs to be decompressed after being decrypted. More on this later.
-
-The next 16-bits are part of the header (they don't belong to the plaintext), but his meaning is unclear. It has been
-conjectured that it could stablish when to "reset" the process and start processing a new stream (based on some tests
-on WWFROYAL, in which the decryption's output doesn't seem to be valid for more than some dozens of words), but some
-more testing would be needed for clarifying that.
-
-After those 18 heading bits, we find the proper plaintext. It must be noted that, due to the initial 2 special bits,
-the 16-bits words of the plaintext are shifted 2 bits respect to the word-boundaries of the output stream of the
-internal block-cipher. So, at a given step, the internal block cipher will output 16-bits, 14 of which will go to a
-given plaintext word, and the remaining 2 to the next plaintext word.
-
-The underlying block cipher consists of two 4-round Feistel Networks (FN): the first one takes the counter (16 bits),
-the game-key (>=26 bits) and the sequence-key (16 bits) and output a middle result (16 bits) which will act as another key
-for the second one. The second FN will take the encrypted word (16 bits), the game-key, the sequence-key and the result
-from the first FN and will output the decrypted word (16 bits).
-
-Each round of the Feistel Networks use four substitution sboxes, each having 6 inputs and 2 outputs. The input can be the
-XOR of at most two "sources bits", being source bits the bits from the previous round and the bits from the different keys.
-
-The underlying block cipher has the same structure than the one used by the CPS-2 (Capcom Play System 2) and,
-indeed, some of the used sboxes are exactly the same and appear in the same FN/round in both systems (this is not evident,
-as you need to apply a bitswapping and some XORs to the input & output of the sboxes to get the same values due). However,
-the key scheduling used by this implementation is much weaker than the CPS-2's one. Many s-boxes inputs aren't XORed with any
-key bit.
-
-Due to the small key-length, no sophisticated attacks are needed to recover the keys; a brute-force attack knowing just
-some (encrypted word-decrypted word) pairs suffice. However, due to the weak key scheduling, it should be noted that some
-related keys can produce the same output bytes for some (short) input sequences.
-
-The only difference in the decryption process between M2 and M3 is the initialization of the counter. In M3, the counter is
-always set to 0 at the beginning of the decryption while, in M2, the bits #1-#16 of the ciphertext's address are used
-to initialize the counter.
-
-Note that this implementation considers that the counter initialization for ram decryption is 0 simply because the ram is
-mapped to multiples of 128K.
-
-Due to the nature of the cipher, there are some degrees of freedom when choosing the s-boxes and keys values; by example,
-you could apply a fixed bitswapping and XOR to the keys and the decryption would remain the same as long as you change
-accordingly the s-boxes' definitions. So the order of the bits in the keys is arbitrary, and the s-boxes values have been
-chosen so as to make the key for CAPSNK equal to 0.
-
-It can be observed that a couple of sboxes have incomplete tables (a 255 value indicate an unknown value). The recovered keys
-as of december/2010 show small randomness and big correlations, making possible that some unseen bits could make the
-decryption need those incomplete parts.
-
-****************************************************************************************/
-
-const naomi_m2_board::sbox naomi_m2_board::fn1_sboxes[4][4] = {
- { // 1st round
- {
- {
- 0,3,2,2,1,3,1,2,3,2,1,2,1,2,3,1,3,2,2,0,2,1,3,0,0,3,2,3,2,1,2,0,
- 2,3,1,1,2,2,1,1,1,0,2,3,3,0,2,1,1,1,1,1,3,0,3,2,1,0,1,2,0,3,1,3,
- },
- {3,4,5,7,-1,-1},
- {0,4}
- },
-
- {
- {
- 2,2,2,0,3,3,0,1,2,2,3,2,3,0,2,2,1,1,0,3,3,2,0,2,0,1,0,1,2,3,1,1,
- 0,1,3,3,1,3,3,1,2,3,2,0,0,0,2,2,0,3,1,3,0,3,2,2,0,3,0,3,1,1,0,2,
- },
- {0,1,2,5,6,7},
- {1,6}
- },
-
- {
- {
- 0,1,3,0,3,1,1,1,1,2,3,1,3,0,2,3,3,2,0,2,1,1,2,1,1,3,1,0,0,2,0,1,
- 1,3,1,0,0,3,2,3,2,0,3,3,0,0,0,0,1,2,3,3,2,0,3,2,1,0,0,0,2,2,3,3,
- },
- {0,2,5,6,7,-1},
- {2,3}
- },
-
- {
- {
- 3,2,1,2,1,2,3,2,0,3,2,2,3,1,3,3,0,2,3,0,3,3,2,1,1,1,2,0,2,2,0,1,
- 1,3,3,0,0,3,0,3,0,2,1,3,2,1,0,0,0,1,1,2,0,1,0,0,0,1,3,3,2,0,3,3,
- },
- {1,2,3,4,6,7},
- {5,7}
- },
- },
- { // 2nd round
- {
- {
- 3,3,1,2,0,0,2,2,2,1,2,1,3,1,1,3,3,0,0,3,0,3,3,2,1,1,3,2,3,2,1,3,
- 2,3,0,1,3,2,0,1,2,1,3,1,2,2,3,3,3,1,2,2,0,3,1,2,2,1,3,0,3,0,1,3,
- },
- {0,1,3,4,5,7},
- {0,4}
- },
-
- {
- {
- 2,0,1,0,0,3,2,0,3,3,1,2,1,3,0,2,0,2,0,0,0,2,3,1,3,1,1,2,3,0,3,0,
- 3,0,2,0,0,2,2,1,0,2,3,3,1,3,1,0,1,3,3,0,0,1,3,1,0,2,0,3,2,1,0,1,
- },
- {0,1,3,4,6,-1},
- {1,5}
- },
-
- {
- {
- 2,2,2,3,1,1,0,1,0,1,2,2,3,3,0,2,0,3,2,3,3,0,2,1,0,3,1,0,0,2,3,2,
- 3,2,0,3,2,0,1,0,3,3,1,1,2,2,2,0,2,1,3,1,1,1,1,2,2,2,3,0,1,3,0,0,
- },
- {1,2,5,6,7,-1},
- {2,7}
- },
-
- {
- {
- 0,1,3,3,3,1,3,3,1,0,2,0,2,0,0,3,1,2,1,3,1,2,3,2,2,0,1,3,0,3,3,3,
- 0,0,0,2,1,1,2,3,2,2,3,1,1,2,0,2,0,2,1,3,1,1,3,3,1,1,3,0,2,3,0,0,
- },
- {2,3,4,5,6,7},
- {3,6}
- },
- },
- { // 3rd round
- {
- {
- 0,0,1,0,1,0,0,3,2,0,0,3,0,1,0,2,0,3,0,0,2,0,3,2,2,1,3,2,2,1,1,2,
- 0,0,0,3,0,1,1,0,0,2,1,0,3,1,2,2,2,0,3,1,3,0,1,2,2,1,1,1,0,2,3,1,
- },
- {1,2,3,4,5,7},
- {0,5}
- },
-
- {
- {
- 1,2,1,0,3,1,1,2,0,0,2,3,2,3,1,3,2,0,3,2,2,3,1,1,1,1,0,3,2,0,0,1,
- 1,0,0,1,3,1,2,3,0,0,2,3,3,0,1,0,0,2,3,0,1,2,0,1,3,3,3,1,2,0,2,1,
- },
- {0,2,4,5,6,7},
- {1,6}
- },
-
- {
- {
- 0,3,0,2,1,2,0,0,1,1,0,0,3,1,1,0,0,3,0,0,2,3,3,2,3,1,2,0,0,2,3,0,
- // unused?
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- },
- {0,2,4,6,7,-1},
- {2,3}
- },
-
- {
- {
- 0,0,1,0,0,1,0,2,3,3,0,3,3,2,3,0,2,2,2,0,3,2,0,3,1,0,0,3,3,0,0,0,
- 2,2,1,0,2,0,3,2,0,0,3,1,3,3,0,0,2,1,1,2,1,0,1,1,0,3,1,2,0,2,0,3,
- },
- {0,1,2,3,6,-1},
- {4,7}
- },
- },
- { // 4th round
- {
- {
- 0,3,3,3,3,3,2,0,0,1,2,0,2,2,2,2,1,1,0,2,2,1,3,2,3,2,0,1,2,3,2,1,
- 3,2,2,3,1,0,1,0,0,2,0,1,2,1,2,3,1,2,1,1,2,2,1,0,1,3,2,3,2,0,3,1,
- },
- {0,1,3,4,5,6},
- {0,5}
- },
-
- {
- {
- 0,3,0,0,2,0,3,1,1,1,2,2,2,1,3,1,2,2,1,3,2,2,3,3,0,3,1,0,3,2,0,1,
- 3,0,2,0,1,0,2,1,3,3,1,2,2,0,2,3,3,2,3,0,1,1,3,3,0,2,1,3,0,2,2,3,
- },
- {0,1,2,3,5,7},
- {1,7}
- },
-
- {
- {
- 0,1,2,3,3,3,3,1,2,0,2,3,2,1,0,1,2,2,1,2,0,3,2,0,1,1,0,1,3,1,3,1,
- 3,1,0,0,1,0,0,0,0,1,2,2,1,1,3,3,1,2,3,3,3,2,3,0,2,2,1,3,3,0,2,0,
- },
- {2,3,4,5,6,7},
- {2,3}
- },
-
- {
- {
- 0,2,1,1,3,2,0,3,1,0,1,0,3,2,1,1,2,2,0,3,1,0,1,2,2,2,3,3,0,0,0,0,
- 1,2,1,0,2,1,2,2,2,3,2,3,0,1,3,0,0,1,3,0,0,1,1,0,1,0,0,0,0,2,0,1,
- },
- {0,1,2,4,6,7},
- {4,6}
- },
- },
-};
-
-
-const naomi_m2_board::sbox naomi_m2_board::fn2_sboxes[4][4] = {
- { // 1st round
- {
- {
- 3,3,0,1,0,1,0,0,0,3,0,0,1,3,1,2,0,3,3,3,2,1,0,1,1,1,2,2,2,3,2,2,
- 2,1,3,3,1,3,1,1,0,0,1,2,0,2,2,1,1,2,3,1,2,1,3,1,2,2,0,1,3,0,2,2,
- },
- {1,3,4,5,6,7},
- {0,7}
- },
-
- {
- {
- 0,2,3,2,1,1,0,0,2,1,0,3,3,0,0,0,3,2,0,2,1,1,2,1,0,0,3,1,2,2,3,1,
- 3,1,3,0,0,0,1,3,1,0,0,3,2,2,3,1,1,3,0,0,2,1,3,3,1,3,1,2,3,1,2,1,
- },
- {0,3,5,6,-1,-1},
- {1,2}
- },
-
- {
- {
- 0,2,2,1,0,1,2,1,2,0,1,2,3,3,0,1,3,1,1,2,1,2,1,3,3,2,3,3,2,1,0,1,
- 0,1,0,2,0,1,1,3,2,0,3,2,1,1,1,3,2,3,0,2,3,0,2,2,1,3,0,1,1,2,2,2,
- },
- {0,2,3,4,7,-1},
- {3,4}
- },
-
- {
- {
- 2,3,1,3,2,0,1,2,0,0,3,3,3,3,3,1,2,0,2,1,2,3,0,2,0,1,0,3,0,2,1,0,
- 2,3,0,1,3,0,3,2,3,1,2,0,3,1,1,2,0,3,0,0,2,0,2,1,2,2,3,2,1,2,3,1,
- },
- {1,2,5,6,-1,-1},
- {5,6}
- },
- },
- { // 2nd round
- {
- {
- 2,3,1,3,1,0,3,3,3,2,3,3,2,0,0,3,2,3,0,3,1,1,2,3,1,1,2,2,0,1,0,0,
- 2,1,0,1,2,0,1,2,0,3,1,1,2,3,1,2,0,2,0,1,3,0,1,0,2,2,3,0,3,2,3,0,
- },
- {0,1,4,5,6,7},
- {0,7}
- },
-
- {
- {
- 0,2,2,0,2,2,0,3,2,3,2,1,3,2,3,3,1,1,0,0,3,0,2,1,1,3,3,2,3,2,0,1,
- 1,2,3,0,1,0,3,0,3,1,0,2,1,2,0,3,2,3,1,2,2,0,3,2,3,0,0,1,2,3,3,3,
- },
- {0,2,3,6,7,-1},
- {1,5}
- },
-
- {
- {
- 1,2,3,2,0,3,2,3,0,1,1,0,0,2,2,3,2,0,0,3,0,2,3,3,2,2,1,0,2,1,0,3,
- 1,0,2,0,1,1,0,1,0,0,1,0,3,0,3,3,2,2,0,2,1,1,1,0,3,0,1,3,2,3,2,1,
- },
- {2,3,4,6,7,-1},
- {2,3}
- },
-
- {
- {
- 2,3,1,3,1,1,2,3,3,1,1,0,1,0,2,3,2,1,0,0,2,2,0,1,0,2,2,2,0,2,1,0,
- 3,1,2,3,1,3,0,2,1,0,1,0,0,1,2,2,3,2,3,1,3,2,1,1,2,0,2,1,3,3,1,0,
- },
- {1,2,3,4,5,6},
- {4,6}
- },
- },
- { // 3rd round
- {
- {
- 0,3,0,1,0,2,3,3,1,0,1,3,2,2,1,1,3,3,3,0,2,0,2,0,0,0,2,3,1,1,0,0,
- 3,3,0,3,3,0,0,2,1,1,1,0,2,2,2,0,3,0,3,1,2,2,0,3,0,0,3,2,0,3,2,1,
- },
- {1,4,5,6,7,-1},
- {0,5}
- },
-
- {
- {
- 0,3,0,1,3,0,3,1,3,2,2,2,3,0,3,2,2,1,2,2,0,3,2,2,0,0,2,1,1,3,2,3,
- 2,3,3,1,2,0,1,2,2,1,0,0,0,0,2,3,1,2,0,3,1,3,1,2,3,2,1,0,3,0,0,2,
- },
- {0,2,3,4,6,7},
- {1,7}
- },
-
- {
- {
- 2,2,3,2,0,3,2,3,1,1,2,0,2,3,1,3,0,0,0,3,2,0,1,0,1,3,2,3,3,3,1,0,
- // unused?
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- },
- {1,2,4,7,-1,-1},
- {2,4}
- },
-
- {
- {
- 0,2,3,1,3,1,1,0,0,1,3,0,2,1,3,3,2,0,2,1,1,2,3,3,0,0,0,2,0,2,3,0,
- 3,3,3,3,2,3,3,2,3,0,1,0,2,3,3,2,0,1,3,1,0,1,2,3,3,0,2,0,3,0,3,3,
- },
- {0,1,2,3,5,7},
- {3,6}
- },
- },
- { // 4th round
- {
- {
- 0,1,1,0,0,1,0,2,3,3,0,1,2,3,0,2,1,0,3,3,2,0,3,0,0,2,1,0,1,0,1,3,
- 0,3,3,1,2,0,3,0,1,3,2,0,3,3,1,3,0,2,3,3,2,1,1,2,2,1,2,1,2,0,1,1,
- },
- {0,1,2,4,7,-1},
- {0,5}
- },
-
- {
- {
- 2,0,0,2,3,0,2,3,3,1,1,1,2,1,1,0,0,2,1,0,0,3,1,0,0,3,3,0,1,0,1,2,
- 0,2,0,2,0,1,2,3,2,1,1,0,3,3,3,3,3,3,1,0,3,0,0,2,0,3,2,0,2,2,0,1,
- },
- {0,1,3,5,6,-1},
- {1,3}
- },
-
- {
- {
- 0,1,1,2,1,3,1,1,0,0,3,1,1,1,2,0,3,2,0,1,1,2,3,3,3,0,3,0,0,2,0,3,
- 3,2,0,0,3,2,3,1,2,3,0,3,2,0,1,2,2,2,0,2,0,1,2,2,3,1,2,2,1,1,1,1,
- },
- {0,2,3,4,5,7},
- {2,7}
- },
-
- {
- {
- 0,1,2,0,3,3,0,3,2,1,3,3,0,3,1,1,3,2,3,2,3,0,0,0,3,0,2,2,3,2,2,3,
- 2,2,3,1,2,3,1,2,0,3,0,2,3,1,0,0,3,2,1,2,1,2,1,3,1,0,2,3,3,1,3,2,
- },
- {2,3,4,5,6,7},
- {4,6}
- },
- },
-};
-
-const int naomi_m2_board::fn1_game_key_scheduling[38][2] = {
- {1,29}, {1,71}, {2,4}, {2,54}, {3,8}, {4,56}, {4,73}, {5,11},
- {6,51}, {7,92}, {8,89}, {9,9}, {9,10}, {9,39}, {9,41}, {9,58},
- {9,59}, {9,86}, {10,90}, {11,6}, {12,64}, {13,49}, {14,44}, {15,40},
- {16,69}, {17,15}, {18,23}, {18,43}, {19,82}, {20,81}, {21,32}, {21,61},
- {22,5}, {23,66}, {24,13}, {24,45}, {25,12}, {25,35}
-};
-
-const int naomi_m2_board::fn2_game_key_scheduling[34][2] = {
- {0,0}, {1,3}, {2,11}, {3,20}, {4,22}, {5,23}, {6,29}, {7,38},
- {8,39}, {9,47}, {9,55}, {9,86}, {9,87}, {9,90}, {10,50}, {10,53},
- {11,57}, {12,59}, {13,61}, {13,64}, {14,63}, {15,67}, {16,72}, {17,83},
- {18,88}, {19,94}, {20,35}, {21,17}, {21,92}, {22,6}, {22,11}, {23,85},
- {24,16}, {25,25}
-};
-
-const int naomi_m2_board::fn1_sequence_key_scheduling[20][2] = {
- {0,52}, {1,34}, {2,17}, {3,36}, {4,84}, {4,88}, {5,57}, {6,48},
- {6,68}, {7,76}, {8,83}, {9,30}, {10,22}, {10,41}, {11,38}, {12,55},
- {13,74}, {14,19}, {14,80}, {15,26}
-};
-
-const int naomi_m2_board::fn2_sequence_key_scheduling[16] = {77,34,8,42,36,27,69,66,13,9,79,31,49,7,24,64};
-
-const int naomi_m2_board::fn2_middle_result_scheduling[16] = {1,10,44,68,74,78,81,95,2,4,30,40,41,51,53,58};
-
-int naomi_m2_board::feistel_function(int input, const struct sbox *sboxes, UINT32 subkeys)
+UINT16 naomi_m2_board::read_callback(UINT32 addr)
{
- int k,m;
- int aux;
- int result=0;
+ if ((addr & 0xffff0000) == 0x01000000) {
+ int base = 2*(addr & 0x7fff);
+ return ram[base+1] | (ram[base] << 8);
- for (m=0; m<4; ++m) { // 4 sboxes
- for (k=0, aux=0; k<6; ++k)
- if (sboxes[m].inputs[k]!=-1)
- aux |= BIT(input, sboxes[m].inputs[k]) << k;
-
- aux = sboxes[m].table[(aux^subkeys)&0x3f];
-
- for (k=0; k<2; ++k)
- result |= BIT(aux,k) << sboxes[m].outputs[k];
-
- subkeys >>=6;
}
-
- return result;
+ else {
+ const UINT8 *base = m_region->base() + 2*addr;
+ return base[1] | (base[0] << 8);
+ }
}
-/**************************
-This implementation is an "educational" version. It must be noted that it can be speed-optimized in a number of ways.
-The most evident one is to factor out the parts of the key-scheduling that must only be done once (like the game-key &
-sequence-key parts) as noted in the comments inlined in the function. More sophisticated speed-ups can be gained by
-noticing that the weak key-scheduling would allow to create some pregenerated look-up tables for doing most of the work
-of the function. Even so, it would still be pretty slow, so caching techniques could be a wiser option here.
-**************************/
+static MACHINE_CONFIG_FRAGMENT( naomim2 )
+ MCFG_DEVICE_ADD("segam2crypt", SEGA315_5881_CRYPT, 0)
+ MCFG_SET_READ_CALLBACK(naomi_m2_board, read_callback)
+MACHINE_CONFIG_END
-UINT16 naomi_m2_board::block_decrypt(UINT32 game_key, UINT16 sequence_key, UINT16 counter, UINT16 data)
+machine_config_constructor naomi_m2_board::device_mconfig_additions() const
{
- int j;
- int aux,aux2;
- int A,B;
- int middle_result;
- UINT32 fn1_subkeys[4];
- UINT32 fn2_subkeys[4];
-
- /* Game-key scheduling; this could be done just once per game at initialization time */
- memset(fn1_subkeys,0,sizeof(UINT32)*4);
- memset(fn2_subkeys,0,sizeof(UINT32)*4);
-
- for (j=0; j<38; ++j) {
- if (BIT(game_key, fn1_game_key_scheduling[j][0])!=0) {
- aux = fn1_game_key_scheduling[j][1]%24;
- aux2 = fn1_game_key_scheduling[j][1]/24;
- fn1_subkeys[aux2] ^= (1<> 8;
- A = (aux & 0xff) ^ feistel_function(B,fn1_sboxes[0],fn1_subkeys[0]);
-
- // 2nd round
- B = B ^ feistel_function(A,fn1_sboxes[1],fn1_subkeys[1]);
-
- // 3rd round
- A = A ^ feistel_function(B,fn1_sboxes[2],fn1_subkeys[2]);
-
- // 4th round
- B = B ^ feistel_function(A,fn1_sboxes[3],fn1_subkeys[3]);
-
- middle_result = (B<<8)|A;
-
-
- /* Middle-result-key sheduling */
- for (j=0; j<16; ++j) {
- if (BIT(middle_result,j)!=0) {
- aux = fn2_middle_result_scheduling[j]%24;
- aux2 = fn2_middle_result_scheduling[j]/24;
- fn2_subkeys[aux2] ^= (1<> 8;
- A = (aux & 0xff) ^ feistel_function(B,fn2_sboxes[0],fn2_subkeys[0]);
-
- // 2nd round
- B = B ^ feistel_function(A,fn2_sboxes[1],fn2_subkeys[1]);
-
- // 3rd round
- A = A ^ feistel_function(B,fn2_sboxes[2],fn2_subkeys[2]);
-
- // 4th round
- B = B ^ feistel_function(A,fn2_sboxes[3],fn2_subkeys[3]);
-
- aux = (B<<8)|A;
-
- aux = BITSWAP16(aux,15,7,6,14,13,12,5,4, 3,2,11,10,9,1,0,8);
-
- return aux;
+ return MACHINE_CONFIG_NAME( naomim2 );
}
-UINT16 naomi_m2_board::get_decrypted_16()
-{
- UINT16 enc;
-
- if((prot_cur_address & 0xffff0000) == 0x01000000) {
- int base = 2*(prot_cur_address & 0x7fff);
- enc = ram[base+1] | (ram[base] << 8);
- } else {
- const UINT8 *base = m_region->base() + 2*prot_cur_address;
- enc = base[1] | (base[0] << 8);
- }
-
- UINT16 dec = block_decrypt(key, subkey, prot_cur_address, enc);
- UINT16 res = (dec & 3) | (dec_hist & 0xfffc);
- dec_hist = dec;
-
- prot_cur_address ++;
- return res;
-}
-
-void naomi_m2_board::enc_start()
-{
- buffer_pos = BUFFER_SIZE;
- dec_header = get_decrypted_16() << 16;
- dec_header |= get_decrypted_16();
-
- if(dec_header & FLAG_COMPRESSED) {
- line_buffer_size = dec_header & FLAG_LINE_SIZE_512 ? 512 : 256;
- line_buffer_pos = line_buffer_size;
- buffer_bit = 7;
- }
- enc_ready = true;
-}
-
-void naomi_m2_board::enc_fill()
-{
- assert(buffer_pos == BUFFER_SIZE);
- for(int i = 0; i != BUFFER_SIZE; i+=2) {
- UINT16 val = get_decrypted_16();
- buffer[i] = val;
- buffer[i+1] = val >> 8;
- }
- buffer_pos = 0;
-}
-
-/* node format
-0xxxxxxx - next node index
-1a0bbccc - end node
- a - 0 = repeat
- 1 = fetch
- b - if a = 1
- 00 - fetch 0
- 01 - fetch 1
- 11 - fetch -1
- if a = 0
- 000
- c - repeat/fetch counter
- count = ccc + 1
-11111111 - empty node
-*/
-const UINT8 naomi_m2_board::trees[9][2][32] = {
- {
- {0x01,0x10,0x0f,0x05,0xc4,0x13,0x87,0x0a,0xcc,0x81,0xce,0x0c,0x86,0x0e,0x84,0xc2,
- 0x11,0xc1,0xc3,0xcf,0x15,0xc8,0xcd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- {0xc7,0x02,0x03,0x04,0x80,0x06,0x07,0x08,0x09,0xc9,0x0b,0x0d,0x82,0x83,0x85,0xc0,
- 0x12,0xc6,0xc5,0x14,0x16,0xca,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- },
- {
- {0x02,0x80,0x05,0x04,0x81,0x10,0x15,0x82,0x09,0x83,0x0b,0x0c,0x0d,0xdc,0x0f,0xde,
- 0x1c,0xcf,0xc5,0xdd,0x86,0x16,0x87,0x18,0x19,0x1a,0xda,0xca,0xc9,0x1e,0xce,0xff,},
- {0x01,0x17,0x03,0x0a,0x08,0x06,0x07,0xc2,0xd9,0xc4,0xd8,0xc8,0x0e,0x84,0xcb,0x85,
- 0x11,0x12,0x13,0x14,0xcd,0x1b,0xdb,0xc7,0xc0,0xc1,0x1d,0xdf,0xc3,0xc6,0xcc,0xff,},
- },
- {
- {0xc6,0x80,0x03,0x0b,0x05,0x07,0x82,0x08,0x15,0xdc,0xdd,0x0c,0xd9,0xc2,0x14,0x10,
- 0x85,0x86,0x18,0x16,0xc5,0xc4,0xc8,0xc9,0xc0,0xcc,0xff,0xff,0xff,0xff,0xff,0xff,},
- {0x01,0x02,0x12,0x04,0x81,0x06,0x83,0xc3,0x09,0x0a,0x84,0x11,0x0d,0x0e,0x0f,0x19,
- 0xca,0xc1,0x13,0xd8,0xda,0xdb,0x17,0xde,0xcd,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,},
- },
- {
- {0x01,0x80,0x0d,0x04,0x05,0x15,0x83,0x08,0xd9,0x10,0x0b,0x0c,0x84,0x0e,0xc0,0x14,
- 0x12,0xcb,0x13,0xca,0xc8,0xc2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- {0xc5,0x02,0x03,0x07,0x81,0x06,0x82,0xcc,0x09,0x0a,0xc9,0x11,0xc4,0x0f,0x85,0xd8,
- 0xda,0xdb,0xc3,0xdc,0xdd,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- },
- {
- {0x01,0x80,0x06,0x0c,0x05,0x81,0xd8,0x84,0x09,0xdc,0x0b,0x0f,0x0d,0x0e,0x10,0xdb,
- 0x11,0xca,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- {0xc4,0x02,0x03,0x04,0xcb,0x0a,0x07,0x08,0xd9,0x82,0xc8,0x83,0xc0,0xc1,0xda,0xc2,
- 0xc9,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- },
- {
- {0x01,0x02,0x06,0x0a,0x83,0x0b,0x07,0x08,0x09,0x82,0xd8,0x0c,0xd9,0xda,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- {0xc3,0x80,0x03,0x04,0x05,0x81,0xca,0xc8,0xdb,0xc9,0xc0,0xc1,0x0d,0xc2,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- },
- {
- {0x01,0x02,0x03,0x04,0x81,0x07,0x08,0xd8,0xda,0xd9,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- {0xc2,0x80,0x05,0xc9,0xc8,0x06,0x82,0xc0,0x09,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- },
- {
- {0x01,0x80,0x04,0xc8,0xc0,0xd9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- {0xc1,0x02,0x03,0x81,0x05,0xd8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- },
- {
- {0x01,0xd8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- {0xc0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- },
-};
-
-int naomi_m2_board::get_compressed_bit()
-{
- if(buffer_pos == BUFFER_SIZE)
- enc_fill();
- int res = (buffer[buffer_pos^1] >> buffer_bit) & 1;
- buffer_bit--;
- if(buffer_bit == -1) {
- buffer_bit = 7;
- buffer_pos++;
- }
- return res;
-}
-
-void naomi_m2_board::line_fill()
-{
- assert(line_buffer_pos == line_buffer_size);
- UINT8 *lp = line_buffer;
- UINT8 *lc = line_buffer_prev;
- line_buffer = lc;
- line_buffer_prev = lp;
- line_buffer_pos = 0;
-
- UINT32 line_buffer_mask = line_buffer_size-1;
-
- for(int i=0; i != line_buffer_size;) {
- // vlc 0: start of line
- // vlc 1: interior of line
- // vlc 2-9: 7-1 bytes from end of line
-
- int slot = i ? i < line_buffer_size - 7 ? 1 : (i & 7) + 1 : 0;
-
- UINT32 tmp = 0;
- while (!(tmp&0x80))
- if(get_compressed_bit())
- tmp = trees[slot][1][tmp];
- else
- tmp = trees[slot][0][tmp];
- if(tmp != 0xff) {
- int count = (tmp & 7) + 1;
-
- if(tmp&0x40) {
- // Copy from previous line
-
- static int offsets[4] = {0, 1, 0, -1};
- int offset = offsets[(tmp & 0x18) >> 3];
- for(int j=0; j != count; j++) {
- lc[i^1] = lp[((i+offset) & line_buffer_mask)^1];
- i++;
- }
-
- } else {
- // Get a byte in the stream and write n times
- UINT8 byte;
- byte = get_compressed_bit() << 1;
- byte = (byte | get_compressed_bit()) << 1;
- byte = (byte | get_compressed_bit()) << 1;
- byte = (byte | get_compressed_bit()) << 1;
- byte = (byte | get_compressed_bit()) << 1;
- byte = (byte | get_compressed_bit()) << 1;
- byte = (byte | get_compressed_bit()) << 1;
- byte = byte | get_compressed_bit();
- for(int j=0; j != count; j++)
- lc[(i++)^1] = byte;
-
- }
- }
- }
-}
diff --git a/src/mame/machine/naomim2.h b/src/mame/machine/naomim2.h
index e5406763d48..4efce0fcbe8 100644
--- a/src/mame/machine/naomim2.h
+++ b/src/mame/machine/naomim2.h
@@ -2,6 +2,7 @@
#define _NAOMIM2_H_
#include "naomibd.h"
+#include "315-5881_crypt.h"
#define MCFG_NAOMI_M2_BOARD_ADD(_tag, _key_tag, _eeprom_tag, _actel_tag, _irq_cb) \
MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_M2_BOARD, _eeprom_tag, _actel_tag, _irq_cb) \
@@ -11,12 +12,17 @@ class naomi_m2_board : public naomi_board
{
public:
naomi_m2_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ UINT32 rom_cur_address;
+ static const int RAM_SIZE = 65536;
+ UINT8* ram;
static void static_set_tags(device_t &device, const char *_key_tag);
+ UINT16 read_callback(UINT32 addr);
protected:
virtual void device_start();
virtual void device_reset();
+ virtual machine_config_constructor device_mconfig_additions() const;
virtual void board_setup_address(UINT32 address, bool is_dma);
virtual void board_get_buffer(UINT8 *&base, UINT32 &limit);
@@ -24,48 +30,12 @@ protected:
virtual void board_write(offs_t offset, UINT16 data);
private:
- enum {
- RAM_SIZE = 65536, BUFFER_SIZE = 32768, LINE_SIZE = 512,
- FLAG_COMPRESSED = 0x10000, FLAG_LINE_SIZE_512 = 0x20000
- };
+
const char *key_tag;
- UINT32 key;
- UINT8 *ram, *buffer, *line_buffer, *line_buffer_prev;
- UINT32 rom_cur_address, prot_cur_address;
- UINT16 subkey, dec_hist;
- UINT32 dec_header;
- bool enc_ready;
-
- int buffer_pos, line_buffer_pos, line_buffer_size, buffer_bit;
-
- struct sbox {
- UINT8 table[64];
- int inputs[6]; // positions of the inputs bits, -1 means no input except from key
- int outputs[2]; // positions of the output bits
- };
-
- static const sbox fn1_sboxes[4][4];
- static const sbox fn2_sboxes[4][4];
-
- static const int fn1_game_key_scheduling[38][2];
- static const int fn2_game_key_scheduling[34][2];
- static const int fn1_sequence_key_scheduling[20][2];
- static const int fn2_sequence_key_scheduling[16];
- static const int fn2_middle_result_scheduling[16];
-
- static const UINT8 trees[9][2][32];
-
- int feistel_function(int input, const struct sbox *sboxes, UINT32 subkeys);
- UINT16 block_decrypt(UINT32 game_key, UINT16 sequence_key, UINT16 counter, UINT16 data);
-
- UINT16 get_decrypted_16();
- int get_compressed_bit();
-
- void enc_start();
- void enc_fill();
- void line_fill();
+
+ required_device m_cryptdevice;
};
extern const device_type NAOMI_M2_BOARD;
diff --git a/src/mame/machine/pgmprot_igs025_igs012.c b/src/mame/machine/pgmprot_igs025_igs012.c
index a1a2dc6ba01..2da122081f0 100644
--- a/src/mame/machine/pgmprot_igs025_igs012.c
+++ b/src/mame/machine/pgmprot_igs025_igs012.c
@@ -202,3 +202,18 @@ DRIVER_INIT_MEMBER(pgm_012_025_state,drgw2j)
mem16[0x130366 / 2] = 0x4e93;
mem16[0x1303f6 / 2] = 0x4e93;
}
+
+DRIVER_INIT_MEMBER(pgm_012_025_state,drgw2hk)
+{
+ drgw2_common_init();
+
+ // todo, correct protection sequence for this region?
+ int region = 0x01;
+ m_igs025->m_kb_region = region;
+ m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24);
+
+ UINT16 *mem16 = (UINT16 *)memregion("maincpu")->base();
+ mem16[0x12f520 / 2] = 0x4e93;
+ mem16[0x12f5c6 / 2] = 0x4e93;
+ mem16[0x12f656 / 2] = 0x4e93;
+}
diff --git a/src/mame/machine/segabb.c b/src/mame/machine/segabb.c
new file mode 100644
index 00000000000..8620c8857e1
--- /dev/null
+++ b/src/mame/machine/segabb.c
@@ -0,0 +1,30 @@
+#include "segabb.h"
+
+const device_type SEGA_LINDBERGH_BASEBOARD = &device_creator;
+
+DEVICE_ADDRESS_MAP_START(map1, 32, sega_lindbergh_baseboard_device)
+ADDRESS_MAP_END
+
+DEVICE_ADDRESS_MAP_START(map2, 32, sega_lindbergh_baseboard_device)
+ADDRESS_MAP_END
+
+DEVICE_ADDRESS_MAP_START(map3, 32, sega_lindbergh_baseboard_device)
+ADDRESS_MAP_END
+
+sega_lindbergh_baseboard_device::sega_lindbergh_baseboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : pci_device(mconfig, SEGA_LINDBERGH_BASEBOARD, "SEGA Lindbergh baseboard", tag, owner, clock, "sega_lindbergh_baseboard", __FILE__)
+{
+}
+
+void sega_lindbergh_baseboard_device::device_start()
+{
+ pci_device::device_start();
+ add_map( 128*1024, M_MEM, FUNC(sega_lindbergh_baseboard_device::map1));
+ add_map( 1024*1024, M_MEM, FUNC(sega_lindbergh_baseboard_device::map2));
+ add_map(2*1024*1024, M_MEM, FUNC(sega_lindbergh_baseboard_device::map3));
+}
+
+void sega_lindbergh_baseboard_device::device_reset()
+{
+ pci_device::device_reset();
+}
diff --git a/src/mame/machine/segabb.h b/src/mame/machine/segabb.h
new file mode 100644
index 00000000000..fefad6163a7
--- /dev/null
+++ b/src/mame/machine/segabb.h
@@ -0,0 +1,27 @@
+// Lindbergh Sega baseboard
+
+#ifndef SEGABB_H
+#define SEGABB_H
+
+#include "machine/pci.h"
+
+#define MCFG_SEGA_LINDBERGH_BASEBOARD_ADD(_tag) \
+ MCFG_PCI_DEVICE_ADD(_tag, SEGA_LINDBERGH_BASEBOARD, 0x105718c1, 0x10, 0x068000, 0x11db067b)
+
+class sega_lindbergh_baseboard_device : public pci_device {
+public:
+ sega_lindbergh_baseboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ DECLARE_ADDRESS_MAP(map1, 32);
+ DECLARE_ADDRESS_MAP(map2, 32);
+ DECLARE_ADDRESS_MAP(map3, 32);
+};
+
+extern const device_type SEGA_LINDBERGH_BASEBOARD;
+
+#endif
diff --git a/src/mame/machine/slapstic.c b/src/mame/machine/slapstic.c
index 25e4443c8fa..ab193966b32 100644
--- a/src/mame/machine/slapstic.c
+++ b/src/mame/machine/slapstic.c
@@ -180,108 +180,68 @@
*************************************************************************/
-#include "emu.h"
-#include "cpu/m6800/m6800.h"
+
#include "includes/slapstic.h"
-#include "cpu/m68000/m68000.h"
-/*************************************
- *
- * Debugging
- *
- *************************************/
+extern const device_type SLAPSTIC = &device_creator;
-#define LOG_SLAPSTIC (0)
-
-
-
-/*************************************
- *
- * Structure of slapstic params
- *
- *************************************/
-
-struct mask_value
+atari_slapstic_device::atari_slapstic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, SLAPSTIC, "Atari Slapstic", tag, owner, clock, "slapstic", __FILE__),
+ state(0),
+ current_bank(0),
+ access_68k(-1),
+ alt_bank(0),
+ bit_bank(0),
+ add_bank(0),
+ bit_xor(0)
{
- int mask, value;
-};
+ slapstic.bankstart = 0;
+ slapstic.bank[0] = slapstic.bank[1] = slapstic.bank[2] = slapstic.bank[3] = 0;
+ slapstic.alt1.mask = 0;
+ slapstic.alt1.value = 0;
+ slapstic.alt2.mask = 0;
+ slapstic.alt2.value = 0;
+ slapstic.alt3.mask = 0;
+ slapstic.alt3.value = 0;
+ slapstic.alt4.mask = 0;
+ slapstic.alt4.value = 0;
+ slapstic.altshift = 0;
+ slapstic.bit1.mask = 0;
+ slapstic.bit1.value = 0;
+ slapstic.bit2c0.mask = 0;
+ slapstic.bit2c0.value = 0;
+ slapstic.bit2s0.mask = 0;
+ slapstic.bit2s0.value = 0;
+ slapstic.bit2c1.mask = 0;
+ slapstic.bit2c1.value = 0;
+ slapstic.bit2s1.mask = 0;
+ slapstic.bit2s1.value = 0;
+ slapstic.bit3.mask = 0;
+ slapstic.bit3.value = 0;
+ slapstic.add1.mask = 0;
+ slapstic.add1.value = 0;
+ slapstic.add2.mask = 0;
+ slapstic.add2.value = 0;
+ slapstic.addplus1.mask = 0;
+ slapstic.addplus1.value = 0;
+ slapstic.addplus2.mask = 0;
+ slapstic.addplus2.value = 0;
+ slapstic.add3.mask = 0;
+ slapstic.add3.value = 0;
+}
-struct slapstic_data
+
+void atari_slapstic_device::device_start()
{
- int bankstart;
- int bank[4];
- struct mask_value alt1;
- struct mask_value alt2;
- struct mask_value alt3;
- struct mask_value alt4;
- int altshift;
+}
- struct mask_value bit1;
- struct mask_value bit2c0;
- struct mask_value bit2s0;
- struct mask_value bit2c1;
- struct mask_value bit2s1;
- struct mask_value bit3;
-
- struct mask_value add1;
- struct mask_value add2;
- struct mask_value addplus1;
- struct mask_value addplus2;
- struct mask_value add3;
-};
-
-
-
-/*************************************
- *
- * Shorthand
- *
- *************************************/
-
-#define UNKNOWN 0xffff
-#define NO_BITWISE \
- { UNKNOWN,UNKNOWN }, \
- { UNKNOWN,UNKNOWN }, \
- { UNKNOWN,UNKNOWN }, \
- { UNKNOWN,UNKNOWN }, \
- { UNKNOWN,UNKNOWN }, \
- { UNKNOWN,UNKNOWN }
-#define NO_ADDITIVE \
- { UNKNOWN,UNKNOWN }, \
- { UNKNOWN,UNKNOWN }, \
- { UNKNOWN,UNKNOWN }, \
- { UNKNOWN,UNKNOWN }, \
- { UNKNOWN,UNKNOWN }
-
-#define MATCHES_MASK_VALUE(val, maskval) (((val) & (maskval).mask) == (maskval).value)
-
-
-
-/*************************************
- *
- * Constants
- *
- *************************************/
-
-enum
+void atari_slapstic_device::device_reset()
{
- DISABLED,
- ENABLED,
- ALTERNATE1,
- ALTERNATE2,
- ALTERNATE3,
- BITWISE1,
- BITWISE2,
- BITWISE3,
- ADDITIVE1,
- ADDITIVE2,
- ADDITIVE3
-};
-
+}
/*************************************
*
@@ -779,27 +739,6 @@ static const struct slapstic_data *const slapstic_table[] =
-/*************************************
- *
- * Statics
- *
- *************************************/
-
-static UINT8 state;
-static UINT8 current_bank;
-static UINT8 access_68k;
-
-static UINT8 alt_bank;
-static UINT8 bit_bank;
-static UINT8 add_bank;
-static UINT8 bit_xor;
-
-static struct slapstic_data slapstic;
-
-
-static void slapstic_log(running_machine &machine, offs_t offset);
-static FILE *slapsticlog;
-
/*************************************
*
@@ -807,9 +746,15 @@ static FILE *slapsticlog;
*
*************************************/
-void slapstic_init(running_machine &machine, int chip)
+void atari_slapstic_device::slapstic_init(running_machine &machine, int chip)
{
- device_type cputype = machine.device("maincpu")->type();
+ if (access_68k == -1)
+ {
+ /* see if we're 68k or 6502/6809 based */
+ printf("oh\n");
+ device_type cputype = machine.device(":maincpu")->type();
+ access_68k = (cputype == M68000 || cputype == M68010);
+ }
/* only a small number of chips are known to exist */
if (chip < 101 || chip > 118)
@@ -823,20 +768,18 @@ void slapstic_init(running_machine &machine, int chip)
/* reset the chip */
slapstic_reset();
- /* see if we're 68k or 6502/6809 based */
- access_68k = (cputype == M68000 || cputype == M68010);
/* save state */
- state_save_register_item(machine, "slapstic", NULL, 0, state);
- state_save_register_item(machine, "slapstic", NULL, 0, current_bank);
- state_save_register_item(machine, "slapstic", NULL, 0, alt_bank);
- state_save_register_item(machine, "slapstic", NULL, 0, bit_bank);
- state_save_register_item(machine, "slapstic", NULL, 0, add_bank);
- state_save_register_item(machine, "slapstic", NULL, 0, bit_xor);
+ save_item(NAME(state));
+ save_item(NAME(current_bank));
+ save_item(NAME(alt_bank));
+ save_item(NAME(bit_bank));
+ save_item(NAME(add_bank));
+ save_item(NAME(bit_xor));
}
-void slapstic_reset(void)
+void atari_slapstic_device::slapstic_reset(void)
{
/* reset the chip */
state = DISABLED;
@@ -853,7 +796,7 @@ void slapstic_reset(void)
*
*************************************/
-int slapstic_bank(void)
+int atari_slapstic_device::slapstic_bank(void)
{
return current_bank;
}
@@ -866,7 +809,7 @@ int slapstic_bank(void)
*
*************************************/
-static int alt2_kludge(address_space &space, offs_t offset)
+int atari_slapstic_device::alt2_kludge(address_space &space, offs_t offset)
{
/* Of the 3 alternate addresses, only the middle one needs to actually hit
in the slapstic region; the first and third ones can be anywhere in the
@@ -913,7 +856,7 @@ static int alt2_kludge(address_space &space, offs_t offset)
*
*************************************/
-int slapstic_tweak(address_space &space, offs_t offset)
+int atari_slapstic_device::slapstic_tweak(address_space &space, offs_t offset)
{
/* reset is universal */
if (offset == 0x0000)
@@ -1137,7 +1080,7 @@ int slapstic_tweak(address_space &space, offs_t offset)
*
*************************************/
-static void slapstic_log(running_machine &machine, offs_t offset)
+void atari_slapstic_device::slapstic_log(running_machine &machine, offs_t offset)
{
static attotime last_time;
diff --git a/src/mame/machine/stvprot.c b/src/mame/machine/stvprot.c
index ede1c0264bc..378ecca0136 100644
--- a/src/mame/machine/stvprot.c
+++ b/src/mame/machine/stvprot.c
@@ -572,6 +572,8 @@ UINT32 ffreveng_prot_read_callback( address_space &space, int protaddr, UINT32 k
*
*************************************/
+// the naomi hookup of 315-5881 reads 16-bits at a time, here we seem to read 32?
+
READ32_MEMBER( stv_state::common_prot_r )
{
UINT32 *ROM = (UINT32 *)space.machine().root_device().memregion("abus")->base();
@@ -588,6 +590,8 @@ READ32_MEMBER( stv_state::common_prot_r )
logerror("A-Bus control protection read at %06x with data = %08x Returning = %08x Would otherwise return = %08x\n",space.device().safe_pc(),m_abus_protkey, retdata, realret);
+ //UINT16 res = m_cryptdevice->do_decrypt(base);
+
m_ctrl_index += 4;
return retdata;
@@ -602,7 +606,11 @@ READ32_MEMBER( stv_state::common_prot_r )
}
-
+UINT16 stv_state::crypt_read_callback(UINT32 addr)
+{
+ const UINT8 *base = m_cart_reg[0]->base() + 2*addr;
+ return base[1] | (base[0] << 8);
+}
WRITE32_MEMBER ( stv_state::common_prot_w )
{
@@ -616,10 +624,18 @@ WRITE32_MEMBER ( stv_state::common_prot_w )
else if(offset == 2)
{
COMBINE_DATA(&m_abus_prot_addr);
+
+ m_cryptdevice->set_addr_low(m_abus_prot_addr >> 16);
+ m_cryptdevice->set_addr_high(m_abus_prot_addr&0xffff);
+
}
else if(offset == 3)
{
COMBINE_DATA(&m_abus_protkey);
+
+ m_cryptdevice->set_subkey(m_abus_protkey>>16);
+
+
int a_bus_vector;
a_bus_vector = m_abus_prot_addr >> 16;
a_bus_vector|= (m_abus_prot_addr & 0xffff) << 16;
@@ -655,6 +671,7 @@ void stv_state::install_astrass_protection()
{
install_common_protection();
m_prot_readback = astrass_prot_read_callback;
+// m_cryptdevice->set_key(0x00000000);
}
void stv_state::install_ffreveng_protection()
diff --git a/src/mame/machine/zndip.h b/src/mame/machine/zndip.h
index 2285cbad464..c5747635bc6 100644
--- a/src/mame/machine/zndip.h
+++ b/src/mame/machine/zndip.h
@@ -42,7 +42,6 @@ private:
int m_select;
int m_clock;
- int m_datain;
UINT8 m_bit;
emu_timer *m_dip_timer;
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 585c872f9ca..3f15d5c759b 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -441,6 +441,7 @@ ckongalc // bootleg (Alca)
bigkong // bootleg
monkeyd // bootleg
dking // Crazy Kong Bootleg
+ckongdks // Spanish Crazy Kong bootleg
ckongpt2 // (c) 1981 Falcon
ckongpt2a // (c) 1981 Falcon
ckongpt2j // (c) 1981 Falcon
@@ -1475,6 +1476,7 @@ claybust // (c) 1978 Model Racing
gunchamp // (c) 1980 Model Racing
gunchamps // (c) 1980 Model Racing (sshot.c)
spaceatt // (c) 1978 Video Games GMBH
+galmonst // (c) Laguna S.A.
spaceat2 // (c) 1980 Zenitone-Microsec Ltd
spacecom // bootleg
sinvzen // Zenitone-Microsec Ltd
@@ -1796,6 +1798,7 @@ horizon // (c) 1985
youjyudn // (c) 1986 (Japan)
vigilant // (c) 1988 (World)
+vigilantb // (c) 1988 (World)
vigilant1 // (c) 1988 (World)
vigilantu // (c) 1988 (US)
vigilantu2 // (c) 1988 (US)
@@ -2520,6 +2523,7 @@ pbobble3 // 1996.?? E29 (c) 1996 Taito Corporation (World)
pbobble3u // 1996.11 E29 (c) 1996 Taito Corporation (US)
pbobble3j // 1996.11 E29 (c) 1996 Taito Corporation (Japan)
arkretrn // 1997.03 E36 (c) 1997 Taito Corporation (World)
+arkretrnu // 1997.03 E36 (c) 1997 Taito Corporation (US)
arkretrnj // 1997.03 E36 (c) 1997 Taito Corporation (Japan)
kirameki // 1997.09 E44 (c) 1997 Taito Corporation (Japan)
puchicar // 1997.?? E46 (c) 1997 Taito Corporation (World)
@@ -2743,6 +2747,7 @@ batriderk // (c) 1998 Raizing/8ing
batriderja // (c) 1998 Raizing/8ing
batridert // (c) 1998 Raizing/8ing
bbakraid // (c) 1999 8ing
+bbakraidc // (c) 1999 8ing
bbakraidj // (c) 1999 8ing
bbakraidja // (c) 1999 8ing
@@ -2842,29 +2847,30 @@ korokoro // (c) 1999 Takumi
crusherm // (c) 1999 Takumi
tjumpman // (c) 1999 Namco
-mushisam
-mushisama
-mushisamb
-espgal2
-ibara
-ibarablk
-ibarablka
-mushitam
-mushitama
-futari15
-futari15a
-futari10
-futaribl
-pinkswts
-pinkswtsa
-pinkswtsb
-pinkswtsx
-deathsml
-mmpork
-mmmbanc
-ddpdfk
-ddpdfk10
-dsmbl
+mushisam // (c) 2004 Cave (AMI license) - 2004/10/12.MASTER VER.
+mushisama // (c) 2004 Cave (AMI license) - 2004/10/12 MASTER VER.
+mushisamb // (c) 2004 Cave (AMI license) - 2004/10/12 MASTER VER
+espgal2 // (c) 2005 Cave (AMI license) - 2005/11/14 MASTER VER
+ibara // (c) 2005 Cave (AMI license) - 2005/03/22 MASTER VER..
+ibarablk // (c) 2005 Cave (AMI license) - 2006/02/06. MASTER VER.
+ibarablka // (c) 2005 Cave (AMI license) - 2006/02/06 MASTER VER.
+mushitam // (c) 2005 Cave (AMI license) - 2005/09/09.MASTER VER
+mushitama // (c) 2005 Cave (AMI license) - 2005/09/09 MASTER VER
+futari15 // (c) 2006 Cave (AMI license) - 2006/12/8.MASTER VER. 1.54.
+futari15a // (c) 2006 Cave (AMI license) - 2006/12/8 MASTER VER 1.54
+futari10 // (c) 2006 Cave (AMI license) - 2006/10/23 MASTER VER.
+futaribl // (c) 2007 Cave (AMI license) - 2009/11/27 INTERNATIONAL BL
+futariblj // (c) 2007 Cave (AMI license) - 2007/12/11 BLACK LABEL VER
+pinkswts // (c) 2006 Cave (AMI license) - 2006/04/06 MASTER VER....
+pinkswtsa // (c) 2006 Cave (AMI license) - 2006/04/06 MASTER VER...
+pinkswtsb // (c) 2006 Cave (AMI license) - 2006/04/06 MASTER VER.
+pinkswtsx // (c) 2006 Cave (AMI license) - 2006/xx/xx MASTER VER.
+deathsml // (c) 2007 Cave (AMI license) - 2007/10/09 MASTER VER
+mmpork // (c) 2007 Cave (AMI license) - 2007/ 4/17 MASTER VER.
+mmmbanc // (c) 2007 Cave (AMI license) - 2007/06/05 MASTER VER.
+ddpdfk // (c) 2008 Cave (AMI license) - 2008/06/23 MASTER VER 1.5
+ddpdfk10 // (c) 2008 Cave (AMI license) - 2008/05/16 MASTER VER
+dsmbl // (c) 2008 Cave (AMI license) - 2008/10/06 MEGABLACK LABEL VER
deathsm2
@@ -4684,6 +4690,7 @@ wwallyja // 1992.06 Wally wo Sagase! (Japan, FD1094, decrypted)
desertbr // 1993.?? Desert Breaker (World, FD1094, decrypted)
desertbrj // 1992.10 Desert Breaker (Japan)
pontoon
+hamaway
// System18 Bootlegs
astormbl // BOOTLEG
@@ -5476,6 +5483,7 @@ vstrik3c // 2001.04 Virtua Striker 3 (Rev C) (cartridge)
wldrider // 2001.05 Wild Riders
clubkrte // 2001.06 Club Kart: European Session
clubkrtd // 2001.06 Club Kart: European Session (Rev D)
+clubkrtc // 2001.?? Club Kart: European Session (Rev C)
beachspi // 2001.07 Beach Spikers
vf4cart // 2001.08.02 Virtua Fighter 4 (cartridge)
vf4 // 2001.08.02 Virtua Fighter 4 (GD-ROM)
@@ -5495,7 +5503,7 @@ initdv2jo // 2002.12 Initial D Arcade Stage Ver. 2 (Japan)
initdv2e // 2002.12 Initial D Arcade Stage Ver. 2 (export)
vf4evo // 2002.12 Virtua Fighter 4 Evolution Ver.B
clubk2k3 // 2003.?? Club Kart: European Session (2003)
-clubk2kf // 2003.?? Club Kart: European Session (2003, not protected)
+clubk2kp // 2003.?? Club Kart: European Session (2003, prototype)
initdexpo // 2002.?? Initial D Arcade Stage (Export)
// 2002.?? Sega Driving Simulator
// 2003.03 World Club Champion Football Serie A 2001-2002 Ver.2
@@ -7908,6 +7916,7 @@ ninjakd2 // UPL-????? (c) 1987
ninjakd2a // UPL-????? (c) 1987
ninjakd2b // UPL-????? (c) 1987
rdaction // UPL-87003?(c) 1987 + World Games license
+jt104 // hack?
mnight // UPL-????? (c) 1987 distributed by Kawakus
arkarea // UPL-87007 (c) 1988 (Arcade TV Game List - P.67, Right, 2 from top)
robokid // UPL-88013 (c) 1988
@@ -8299,7 +8308,8 @@ supdrapoa // (c) 1983 + Jeutel license?
supdrapob // bootleg
sbagman // (c) 1984
sbagmans // (c) 1984 + Stern license
-botanic // (c) 1985
+botanic // (c) 1983
+botanicf // (c) 1984
squaitsa // (c) 1985
tankbust // (c) 1985
@@ -9365,6 +9375,7 @@ magixb // bootleg
rocktris // (c) 1994? Yun Sung
magicbub // (c) Yun Sung
magicbuba // (c) Yun Sung
+magicbubb // (c) Yun Sung
shocking // (c) 1997 Yun Sung
shockingk // (c) 1997 Yun Sung
bombkick // (c) 1998 Yun Sung
@@ -9721,6 +9732,7 @@ drgw2 // (c) 1997 Dragon World 2
dw2v100x //
drgw2c //
drgw2j //
+drgw2hk //
drgw3 // (c) 1998 Dragon World 3
drgw3105 //
drgw3100 //
@@ -9821,8 +9833,10 @@ espgal // (c) 2003 Espgaluda
// IGS PGM2 Platform
orleg2 // (c) 2007
orleg2o //
+orleg2oa //
kov2nl // (c) 2008
kov2nlo //
+kov2nloa //
ddpdojh //
kov3 //
@@ -10968,7 +10982,9 @@ comg905d // (c) 198? Cal Omega Inc.
// IGT Player's Edge Plus
peset001 // (c) 1987 IGT - International Game Technology
+peset004 // (c) 1987 IGT - International Game Technology
peset038 // (c) 1987 IGT - International Game Technology
+peivc006 // (c) 1987 IGT - International Game Technology
pepk1024 // (c) 1987 IGT - International Game Technology
pepp0002 // (c) 1987 IGT - International Game Technology
pepp0002a // (c) 1987 IGT - International Game Technology
@@ -11112,7 +11128,9 @@ peip0115 // (c) 1987 IGT - International Game Technology
peip0116 // (c) 1987 IGT - International Game Technology
peip0118 // (c) 1987 IGT - International Game Technology
peip0120 // (c) 1987 IGT - International Game Technology
+pemg0252 // (c) 1994 IGT - International Game Technology
pebe0014 // (c) 1994 IGT - International Game Technology
+peke0017 // (c) 1994 IGT - International Game Technology
peke1012 // (c) 1994 IGT - International Game Technology
peke1013 // (c) 1994 IGT - International Game Technology
peps0014 // (c) 1996 IGT - International Game Technology
@@ -20234,6 +20252,8 @@ m1cluedob2h //
m1cluedob1 //
m1cluedob1p //
m1cluedob1h //
+m1cluedobi2 //
+m1cluedobi2p //
m1cluedo4
m1cluedo4p
m1cluedo3
@@ -31790,6 +31810,7 @@ newufo_xmas
ufomini
ufo21
ufo800
+westdrm
// VLC Nevada
nevada
diff --git a/src/mame/mame.mak b/src/mame/mame.mak
index 397751bd24b..ca723e18942 100644
--- a/src/mame/mame.mak
+++ b/src/mame/mame.mak
@@ -271,6 +271,8 @@ SOUNDS += T6721A
SOUNDS += MOS7360
#SOUNDS += ESQPUMP
#SOUNDS += VRC6
+SOUNDS += SB0400
+SOUNDS += AC97
#-------------------------------------------------
# specify available video cores
@@ -290,6 +292,7 @@ VIDEOS += DM9368
#VIDEOS += EF9340_1
#VIDEOS += EF9345
#VIDEOS += GF4500
+VIDEOS += GF6800GT
VIDEOS += EPIC12
VIDEOS += FIXFREQ
VIDEOS += H63484
@@ -436,6 +439,7 @@ MACHINES += LDV1000
MACHINES += LDVP931
#MACHINES += LH5810
MACHINES += LINFLASH
+MACHINES += LPCI
#MACHINES += LSI53C810
#MACHINES += M68307
#MACHINES += M68340
@@ -578,6 +582,7 @@ MACHINES += FDC37C665GT
#BUSES += ADAMNET
#BUSES += APF
#BUSES += ARCADIA
+#BUSES += ASTROCADE
#BUSES += BML3
#BUSES += BW2
#BUSES += C64
@@ -606,6 +611,7 @@ BUSES += GENERIC
BUSES += ISA
#BUSES += ISBX
#BUSES += KC
+#BUSES += LPCI
#BUSES += MACPDS
#BUSES += MIDI
#BUSES += MEGADRIVE
@@ -616,11 +622,11 @@ BUSES += NEOGEO
#BUSES += O2
#BUSES += ORICEXT
#BUSES += PCE
-#BUSES += PCI
#BUSES += PC_JOY
#BUSES += PC_KBD
#BUSES += PET
#BUSES += PLUS4
+#BUSES += PSX_CONTROLLER
#BUSES += QL
BUSES += RS232
#BUSES += S100
@@ -631,6 +637,7 @@ BUSES += SCSI
#BUSES += SMS_CTRL
#BUSES += SMS_EXP
#BUSES += SNES
+#BUSES += SPC1000
#BUSES += TI99PEB
#BUSES += TVC
#BUSES += VBOY
@@ -1694,7 +1701,7 @@ $(MAMEOBJ)/sega.a: \
$(DRIVERS)/hikaru.o \
$(DRIVERS)/hshavoc.o \
$(DRIVERS)/kopunch.o $(VIDEO)/kopunch.o \
- $(DRIVERS)/lindbergh.o \
+ $(DRIVERS)/lindbergh.o $(MACHINE)/segabb.o \
$(MACHINE)/megadriv.o \
$(DRIVERS)/megadrvb.o \
$(DRIVERS)/megaplay.o \
@@ -1707,6 +1714,7 @@ $(MAMEOBJ)/sega.a: \
$(DRIVERS)/naomi.o $(MACHINE)/dc.o $(VIDEO)/powervr2.o $(MACHINE)/naomi.o \
$(MACHINE)/naomig1.o $(MACHINE)/naomibd.o $(MACHINE)/naomirom.o $(MACHINE)/naomigd.o \
$(MACHINE)/naomicrypt.o $(MACHINE)/naomim1.o $(MACHINE)/naomim2.o $(MACHINE)/naomim4.o \
+ $(MACHINE)/315-5881_crypt.o \
$(MACHINE)/awboard.o \
$(MACHINE)/mie.o $(MACHINE)/maple-dc.o $(MACHINE)/mapledev.o $(MACHINE)/dc-ctrl.o $(MACHINE)/jvs13551.o \
$(DRIVERS)/triforce.o \
@@ -1714,6 +1722,7 @@ $(MAMEOBJ)/sega.a: \
$(DRIVERS)/segac2.o \
$(DRIVERS)/segae.o \
$(DRIVERS)/shtzone.o \
+ $(DRIVERS)/segacoin.o \
$(DRIVERS)/segag80r.o $(MACHINE)/segag80.o $(AUDIO)/segag80r.o $(VIDEO)/segag80r.o \
$(DRIVERS)/segag80v.o $(AUDIO)/segag80v.o $(VIDEO)/segag80v.o \
$(DRIVERS)/segahang.o $(VIDEO)/segahang.o \
@@ -2649,6 +2658,8 @@ $(DRIVERS)/goldstar.o: $(LAYOUT)/goldstar.lh \
$(DRIVERS)/grchamp.o: $(LAYOUT)/grchamp.lh
+$(DRIVERS)/harddriv.o: $(LAYOUT)/racedrivpan.lh
+
$(DRIVERS)/highvdeo.o: $(LAYOUT)/fashion.lh
$(DRIVERS)/hankin.o: $(LAYOUT)/hankin.lh
@@ -2833,6 +2844,11 @@ $(DRIVERS)/segaorun.o: $(LAYOUT)/outrun.lh
$(DRIVERS)/segas32.o: $(LAYOUT)/radr.lh
+$(DRIVERS)/segaufo.o: $(LAYOUT)/newufo.lh \
+ $(LAYOUT)/ufomini.lh \
+ $(LAYOUT)/ufo21.lh \
+ $(LAYOUT)/ufo800.lh
+
$(DRIVERS)/segaybd.o: $(LAYOUT)/pdrift.lh
$(DRIVERS)/sigmab52.o: $(LAYOUT)/sigmab52.lh
diff --git a/src/mame/video/atarisy2.c b/src/mame/video/atarisy2.c
index baca749f8b4..1e6b1238ec5 100644
--- a/src/mame/video/atarisy2.c
+++ b/src/mame/video/atarisy2.c
@@ -208,20 +208,20 @@ WRITE16_MEMBER( atarisy2_state::paletteram_w )
READ16_MEMBER( atarisy2_state::slapstic_r )
{
int result = m_slapstic_base[offset];
- slapstic_tweak(space, offset);
+ m_slapstic->slapstic_tweak(space, offset);
/* an extra tweak for the next opcode fetch */
- m_videobank = slapstic_tweak(space, 0x1234) * 0x1000;
+ m_videobank = m_slapstic->slapstic_tweak(space, 0x1234) * 0x1000;
return result;
}
WRITE16_MEMBER( atarisy2_state::slapstic_w )
{
- slapstic_tweak(space, offset);
+ m_slapstic->slapstic_tweak(space, offset);
/* an extra tweak for the next opcode fetch */
- m_videobank = slapstic_tweak(space, 0x1234) * 0x1000;
+ m_videobank = m_slapstic->slapstic_tweak(space, 0x1234) * 0x1000;
}
diff --git a/src/mame/video/harddriv.c b/src/mame/video/harddriv.c
index 99c47df0b0e..0a9a5d4cbbb 100644
--- a/src/mame/video/harddriv.c
+++ b/src/mame/video/harddriv.c
@@ -30,7 +30,7 @@
*
*************************************/
-VIDEO_START_MEMBER(harddriv_state,harddriv)
+void harddriv_state::init_video()
{
UINT32 *destmask, mask;
int i;
@@ -161,7 +161,9 @@ TMS340X0_FROM_SHIFTREG_CB_MEMBER(harddriv_state::hdgsp_read_from_shiftreg)
void harddriv_state::update_palette_bank(int newbank)
{
- m_screen->update_partial(m_screen->vpos());
+ screen_device &scr = m_gsp->screen();
+
+ scr.update_partial(scr.vpos());
m_gfx_palettebank = newbank;
}
@@ -214,6 +216,7 @@ WRITE16_MEMBER( harddriv_state::hdgsp_control_hi_w )
COMBINE_DATA(&m_gsp_control_hi[offset]);
newword = m_gsp_control_hi[offset];
+ screen_device &scr = m_gsp->screen();
switch (offset & 7)
{
@@ -223,7 +226,7 @@ WRITE16_MEMBER( harddriv_state::hdgsp_control_hi_w )
case 0x01:
data = data & (15 >> m_gsp_multisync);
- m_screen->update_partial(m_screen->vpos() - 1);
+ scr.update_partial(scr.vpos() - 1);
m_gfx_finescroll = data;
break;
@@ -407,6 +410,9 @@ static void display_speedups(void)
TMS340X0_SCANLINE_IND16_CB_MEMBER(harddriv_state::scanline_driver)
{
UINT8 *vram_base = &m_gsp_vram[(params->rowaddr << 12) & m_vram_mask];
+
+ if (!vram_base) return;
+
UINT16 *dest = &bitmap.pix16(scanline);
int coladdr = (params->yoffset << 9) + ((params->coladdr & 0xff) << 4) - 15 + (m_gfx_finescroll & 0x0f);
int x;
@@ -422,6 +428,9 @@ TMS340X0_SCANLINE_IND16_CB_MEMBER(harddriv_state::scanline_driver)
TMS340X0_SCANLINE_IND16_CB_MEMBER(harddriv_state::scanline_multisync)
{
UINT8 *vram_base = &m_gsp_vram[(params->rowaddr << 11) & m_vram_mask];
+
+ if (!vram_base) return;
+
UINT16 *dest = &bitmap.pix16(scanline);
int coladdr = (params->yoffset << 9) + ((params->coladdr & 0xff) << 3) - 7 + (m_gfx_finescroll & 0x07);
int x;
diff --git a/src/mame/video/k007121.c b/src/mame/video/k007121.c
index e1ceeb34f3e..950ff5bf0a3 100644
--- a/src/mame/video/k007121.c
+++ b/src/mame/video/k007121.c
@@ -7,10 +7,12 @@ It manages sprites and two 32x32 tilemaps. The tilemaps can be joined to form
a single 64x32 one, or one of them can be moved to the side of screen, giving
a high score display suitable for vertical games.
The chip also generates clock and interrupt signals suitable for a 6809.
-It uses 0x2000 bytes of RAM for the tilemaps and sprites, and an additional
-0x100 bytes, maybe for scroll RAM and line buffers. The maximum addressable
+It uses 0x2000 bytes of static RAM for the tilemaps and sprite lists, and two
+64kx4bit DRAMs, presumably as a double frame buffer. The maximum addressable
ROM is 0x80000 bytes (addressed 16 bits at a time). Tile and sprite data both
-come from the same ROM space.
+come from the same ROM space. Like the 005885, external circuitry can cause
+tiles and sprites to be fetched from different ROMs (used by Haunted Castle).
+
Two 256x4 lookup PROMs are also used to increase the color combinations.
All tilemap / sprite priority handling is done internally and the chip exports
7 bits of color code, composed of 2 bits of palette bank, 1 bit indicating tile
@@ -27,8 +29,9 @@ inputs:
outputs:
- address lines for tilemap RAM (AX0-AX12)
- data lines for tilemap RAM (VO0-VO7)
-- address lines for the small RAM (FA0-FA7)
-- data lines for the small RAM (FD0-FD7)
+- address lines for the DRAMs (FA0-FA7)
+- control lines for the DRAMs (NWR0, NWR1, NRAS, NCAS, NOE)
+- data lines for the DRAMs (FD0-FD7)
- address lines for the gfx ROMs (R0-R17)
- address lines for the tile lookup PROMs (VCF0-VCF3, VCB0-VCB3)
- address lines for the sprite lookup PROMs (OCB0-OCB3, OCF0-OCF3)
diff --git a/src/mame/video/konamigx.c b/src/mame/video/konamigx.c
index 6886673f1d8..fd158f55fa9 100644
--- a/src/mame/video/konamigx.c
+++ b/src/mame/video/konamigx.c
@@ -276,11 +276,6 @@ void konamigx_state::wipezbuf(int noshadow)
#define GX_MAX_OBJECTS (GX_MAX_SPRITES + GX_MAX_LAYERS)
static struct GX_OBJ { int order, offs, code, color; } *gx_objpool;
-static UINT16 *gx_spriteram;
-
-// mirrored K054338 settings
-static int *K054338_shdRGB;
-
void konamigx_state::konamigx_mixer_init(screen_device &screen, int objdma)
{
@@ -291,15 +286,15 @@ void konamigx_state::konamigx_mixer_init(screen_device &screen, int objdma)
m_gx_shdzbuf = auto_alloc_array(machine(), UINT8, GX_ZBUFSIZE);
gx_objpool = auto_alloc_array(machine(), struct GX_OBJ, GX_MAX_OBJECTS);
- m_k054338->export_config(&K054338_shdRGB);
+ m_k054338->export_config(&m_K054338_shdRGB);
if (objdma)
{
- gx_spriteram = auto_alloc_array(machine(), UINT16, 0x1000/2);
+ m_gx_spriteram = auto_alloc_array(machine(), UINT16, 0x1000/2);
m_gx_objdma = 1;
}
else
- m_k055673->k053247_get_ram(&gx_spriteram);
+ m_k055673->k053247_get_ram(&m_gx_spriteram);
m_palette->set_shadow_dRGB32(3,-80,-80,-80, 0);
m_k054338->invert_alpha(1);
@@ -315,7 +310,7 @@ void konamigx_state::konamigx_objdma(void)
UINT16* k053247_ram;
m_k055673->k053247_get_ram(&k053247_ram);
- if (m_gx_objdma && gx_spriteram && k053247_ram) memcpy(gx_spriteram, k053247_ram, 0x1000);
+ if (m_gx_objdma && m_gx_spriteram && k053247_ram) memcpy(m_gx_spriteram, k053247_ram, 0x1000);
}
void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect,
@@ -416,9 +411,9 @@ void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap,
// only enable shadows beyond a +/-7 RGB threshold
for (j=0,i=0; i<3; j+=3,i++)
{
- k = K054338_shdRGB[j ]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; }
- k = K054338_shdRGB[j+1]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; }
- k = K054338_shdRGB[j+2]; if (k < -7 || k > 7) { shadowon[i] = 1; }
+ k = m_K054338_shdRGB[j ]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; }
+ k = m_K054338_shdRGB[j+1]; if (k < -7 || k > 7) { shadowon[i] = 1; continue; }
+ k = m_K054338_shdRGB[j+2]; if (k < -7 || k > 7) { shadowon[i] = 1; }
}
// SHDON specifies layers on which shadows can be projected (see detail on p.65 7.2.8)
@@ -496,16 +491,16 @@ void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap,
{
int pri = 0;
- if (!(gx_spriteram[offs] & 0x8000)) continue;
+ if (!(m_gx_spriteram[offs] & 0x8000)) continue;
- int zcode = gx_spriteram[offs] & 0xff;
+ int zcode = m_gx_spriteram[offs] & 0xff;
// invert z-order when opset_pri is set (see p.51 OPSET PRI)
if (m_k053247_opset & 0x10) zcode = 0xff - zcode;
- int code = gx_spriteram[offs+1];
- int color = k = gx_spriteram[offs+6];
- l = gx_spriteram[offs+7];
+ int code = m_gx_spriteram[offs+1];
+ int color = k = m_gx_spriteram[offs+6];
+ l = m_gx_spriteram[offs+7];
m_k055673->m_k053247_cb(&code, &color, &pri);
@@ -869,7 +864,7 @@ void konamigx_state::konamigx_mixer_draw(screen_device &screen, bitmap_rgb32 &bi
m_k055673->k053247_draw_single_sprite_gxcore(bitmap, cliprect,
- m_gx_objzbuf, m_gx_shdzbuf, code, gx_spriteram, offs,
+ m_gx_objzbuf, m_gx_shdzbuf, code, m_gx_spriteram, offs,
color, alpha, drawmode, zcode, pri,
/* non-gx only */
0,0,NULL,NULL,0
@@ -927,21 +922,19 @@ TILE_GET_INFO_MEMBER(konamigx_state::get_gx_psac_tile_info)
SET_TILE_INFO_MEMBER(0, tileno, colour, TILE_FLIPYX(flip));
}
-static int konamigx_type3_psac2_actual_bank;
-//int konamigx_type3_psac2_actual_last_bank = 0;
WRITE32_MEMBER(konamigx_state::konamigx_type3_psac2_bank_w)
{
// other bits are used for something...
COMBINE_DATA(&m_konamigx_type3_psac2_bank[offset]);
- konamigx_type3_psac2_actual_bank = (m_konamigx_type3_psac2_bank[0] & 0x10000000) >> 28;
+ m_konamigx_type3_psac2_actual_bank = (m_konamigx_type3_psac2_bank[0] & 0x10000000) >> 28;
/* handle this by creating 2 roz tilemaps instead, otherwise performance dies completely on dual screen mode
- if (konamigx_type3_psac2_actual_bank!=konamigx_type3_psac2_actual_last_bank)
+ if (m_konamigx_type3_psac2_actual_bank!=m_konamigx_type3_psac2_actual_last_bank)
{
m_gx_psac_tilemap->mark_all_dirty();
- konamigx_type3_psac2_actual_last_bank = konamigx_type3_psac2_actual_bank;
+ m_konamigx_type3_psac2_actual_last_bank = m_konamigx_type3_psac2_actual_bank;
}
*/
}
@@ -956,7 +949,7 @@ TILE_GET_INFO_MEMBER(konamigx_state::get_gx_psac3_tile_info)
int base_index = tile_index;
-// if (konamigx_type3_psac2_actual_bank)
+// if (m_konamigx_type3_psac2_actual_bank)
// base_index+=0x20000/2;
@@ -977,7 +970,7 @@ TILE_GET_INFO_MEMBER(konamigx_state::get_gx_psac3_alt_tile_info)
int base_index = tile_index;
-// if (konamigx_type3_psac2_actual_bank)
+// if (m_konamigx_type3_psac2_actual_bank)
// base_index+=0x20000/2;
@@ -1432,7 +1425,7 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
temprect = cliprect;
temprect.max_x = cliprect.min_x+320;
- if (konamigx_type3_psac2_actual_bank == 1) K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap_alt, 0,0,0); // soccerss playfield
+ if (m_konamigx_type3_psac2_actual_bank == 1) K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap_alt, 0,0,0); // soccerss playfield
else K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap, 0,0,0); // soccerss playfield
diff --git a/src/mame/video/konamiic.txt b/src/mame/video/konamiic.txt
index aca1072e262..622e4d9352f 100644
--- a/src/mame/video/konamiic.txt
+++ b/src/mame/video/konamiic.txt
@@ -211,8 +211,8 @@ tilemaps to form a single 8bpp one.
It manages sprites and 32x32 or 64x32 tilemap (only Double Dribble uses the
64x32 one).
The chip also generates clock and interrupt signals suitable for a 6809.
-It uses 0x2000 bytes of RAM for the tilemaps and sprites, and an additional
-0x100 bytes, maybe for scroll RAM and line buffers. The maximum addressable
+It uses 0x2000 bytes of static RAM for the tilemaps and sprite lists, and two
+64kx4bit DRAMs, presumably as a double frame buffer. The maximum addressable
ROM is 0x20000 bytes (addressed 16 bits at a time). Tile and sprite data both
come from the same ROM space. Double Dribble and Jackal have external circuitry
to extend the limits and use separated addressing spaces for sprites and tiles.
@@ -234,8 +234,9 @@ inputs:
outputs:
- address lines for tilemap RAM (AX0-AX12)
- data lines for tilemap RAM (VO0-VO7)
-- address lines for the small RAM (FA0-FA7)
-- data lines for the small RAM (FD0-FD7)
+- address lines for the DRAMs (FA0-FA7)
+- control lines for the DRAMs (NWR0, NWR1, NRAS, NCAS, NFOE)
+- data lines for the DRAMs (FD0-FD7)
- address lines for the gfx ROMs (R0-R15)
- address lines for the tile lookup PROMs (VCF0-VCF3, VCB0-VCB3)
- address lines for the sprite lookup PROMs (OCB0-OCB3, OCF0-OCF3)
diff --git a/src/mame/video/psychic5.c b/src/mame/video/psychic5.c
index 98bd6e6d58c..6950623770b 100644
--- a/src/mame/video/psychic5.c
+++ b/src/mame/video/psychic5.c
@@ -10,11 +10,7 @@
#include "video/jalblend.h"
#include "includes/psychic5.h"
-#define BG_SCROLLX_LSB 0x308
-#define BG_SCROLLX_MSB 0x309
-#define BG_SCROLLY_LSB 0x30a
-#define BG_SCROLLY_MSB 0x30b
-#define BG_SCREEN_MODE 0x30c
+
#define BG_PAL_INTENSITY_RG 0x1fe
#define BG_PAL_INTENSITY_BU 0x1ff
@@ -23,12 +19,15 @@
Palette color
***************************************************************************/
-void psychic5_state::psychic5_change_palette(int color, int offset)
+void psychic5_state::psychic5_change_palette(int offset, UINT8* palram, int palbase)
{
- UINT8 lo = m_ps5_palette_ram[offset & ~1];
- UINT8 hi = m_ps5_palette_ram[offset | 1];
- jal_blend_set(color, hi & 0x0f);
- m_palette->set_pen_color(color, pal4bit(lo >> 4), pal4bit(lo), pal4bit(hi >> 4));
+ UINT8 lo = palram[(offset) & ~1];
+ UINT8 hi = palram[(offset) | 1];
+
+ int color = offset >> 1;
+
+ jal_blend_set(palbase + color, hi & 0x0f);
+ m_palette->set_pen_color(palbase + color, pal4bit(lo >> 4), pal4bit(lo), pal4bit(hi >> 4));
}
void psychic5_state::psychic5_change_bg_palette(int color, int lo_offs, int hi_offs)
@@ -44,8 +43,8 @@ void psychic5_state::psychic5_change_bg_palette(int color, int lo_offs, int hi_o
irgb = rgb_t(ir,ig,ib);
- lo = m_ps5_palette_ram[lo_offs];
- hi = m_ps5_palette_ram[hi_offs];
+ lo = m_ps5_palette_ram_bg[lo_offs];
+ hi = m_ps5_palette_ram_bg[hi_offs];
/* red,green,blue component */
r = pal4bit(lo >> 4);
@@ -53,7 +52,7 @@ void psychic5_state::psychic5_change_bg_palette(int color, int lo_offs, int hi_o
b = pal4bit(hi >> 4);
/* Grey background enable */
- if (m_bg_status & 2)
+ if (m_bg_control[4] & 2)
{
UINT8 val = (r + g + b) / 3; /* Grey */
/* Just leave plain grey */
@@ -73,12 +72,12 @@ void psychic5_state::psychic5_change_bg_palette(int color, int lo_offs, int hi_o
void psychic5_state::set_background_palette_intensity()
{
int i;
- m_palette_intensity = m_ps5_palette_ram[BG_PAL_INTENSITY_BU] |
- (m_ps5_palette_ram[BG_PAL_INTENSITY_RG]<<8);
+ m_palette_intensity = m_ps5_palette_ram_sp[BG_PAL_INTENSITY_BU] |
+ (m_ps5_palette_ram_sp[BG_PAL_INTENSITY_RG]<<8);
/* for all of the background palette */
for (i = 0; i < 0x100; i++)
- psychic5_change_bg_palette(m_bg_palette_base+i,m_bg_palette_ram_base+i*2,m_bg_palette_ram_base+i*2+1);
+ psychic5_change_bg_palette(i+0x100,i*2,i*2+1);
}
@@ -94,6 +93,7 @@ READ8_MEMBER(psychic5_state::psychic5_vram_page_select_r)
WRITE8_MEMBER(psychic5_state::psychic5_vram_page_select_w)
{
m_ps5_vram_page = data & 1;
+ m_vrambank->set_bank(data);
}
WRITE8_MEMBER(psychic5_state::psychic5_title_screen_w)
@@ -101,90 +101,41 @@ WRITE8_MEMBER(psychic5_state::psychic5_title_screen_w)
m_title_screen = data;
}
-READ8_MEMBER(psychic5_state::psychic5_paged_ram_r)
-{
- if (m_ps5_vram_page == 1)
- {
- switch (offset)
- {
- case 0x00: return ioport("SYSTEM")->read();
- case 0x01: return ioport("P1")->read();
- case 0x02: return ioport("P2")->read();
- case 0x03: return ioport("DSW1")->read();
- case 0x04: return ioport("DSW2")->read();
- }
- }
- return m_ps5_pagedram[m_ps5_vram_page][offset];
+
+WRITE8_MEMBER(psychic5_state::sprite_col_w)
+{
+ m_ps5_palette_ram_sp[offset] = data;
+ psychic5_change_palette(offset,m_ps5_palette_ram_sp, 0x000);
}
-WRITE8_MEMBER(psychic5_state::psychic5_paged_ram_w)
+WRITE8_MEMBER(psychic5_state::bg_col_w)
{
- m_ps5_pagedram[m_ps5_vram_page][offset] = data;
-
- if (m_ps5_vram_page == 0)
- {
- if (offset <= 0xfff)
- m_bg_tilemap->mark_tile_dirty(offset >> 1);
- }
- else
- {
- if (offset == BG_SCROLLX_LSB || offset == BG_SCROLLX_MSB)
- {
- UINT16 bg_scrollx = m_ps5_io_ram[BG_SCROLLX_LSB] | (m_ps5_io_ram[BG_SCROLLX_MSB] << 8);
- m_bg_tilemap->set_scrollx(0, bg_scrollx);
- }
- else if (offset == BG_SCROLLY_LSB || offset == BG_SCROLLY_MSB)
- {
- UINT16 bg_scrolly = m_ps5_io_ram[BG_SCROLLY_LSB] | (m_ps5_io_ram[BG_SCROLLY_MSB] << 8);
- m_bg_tilemap->set_scrolly(0, bg_scrolly);
- }
- else if (offset == BG_SCREEN_MODE)
- {
- m_bg_status = m_ps5_io_ram[BG_SCREEN_MODE];
- }
- else if (offset >= 0x400 && offset <= 0x5ff) /* Sprite color */
- psychic5_change_palette(((offset >> 1) & 0xff)+0x000,offset-0x400);
- else if (offset >= 0x800 && offset <= 0x9ff) /* BG color */
- psychic5_change_palette(((offset >> 1) & 0xff)+0x100,offset-0x400);
- else if (offset >= 0xa00 && offset <= 0xbff) /* Text color */
- psychic5_change_palette(((offset >> 1) & 0xff)+0x200,offset-0x400);
- else if (offset >= 0x1000)
- m_fg_tilemap->mark_tile_dirty((offset-0x1000) >> 1);
- }
+ m_ps5_palette_ram_bg[offset] = data;
+ psychic5_change_palette(offset,m_ps5_palette_ram_bg, 0x100);
}
-WRITE8_MEMBER(psychic5_state::bombsa_paged_ram_w)
+WRITE8_MEMBER(psychic5_state::tx_col_w)
{
- m_ps5_pagedram[m_ps5_vram_page][offset] = data;
-
- if (m_ps5_vram_page == 0)
- {
- m_bg_tilemap->mark_tile_dirty(offset >> 1);
- }
- else
- {
- if (offset == BG_SCROLLX_LSB || offset == BG_SCROLLX_MSB)
- {
- UINT16 bg_scrollx = m_ps5_io_ram[BG_SCROLLX_LSB] | (m_ps5_io_ram[BG_SCROLLX_MSB] << 8);
- m_bg_tilemap->set_scrollx(0, bg_scrollx);
- }
- else if (offset == BG_SCROLLY_LSB || offset == BG_SCROLLY_MSB)
- {
- UINT16 bg_scrolly = m_ps5_io_ram[BG_SCROLLY_LSB] | (m_ps5_io_ram[BG_SCROLLY_MSB] << 8);
- m_bg_tilemap->set_scrolly(0, bg_scrolly);
- }
- else if (offset == BG_SCREEN_MODE)
- {
- m_bg_status = m_ps5_io_ram[BG_SCREEN_MODE];
- }
- else if (offset >= 0x0800 && offset <= 0x0fff)
- m_fg_tilemap->mark_tile_dirty((offset & 0x7ff) >> 1);
- else if (offset >= 0x1000 && offset <= 0x15ff)
- psychic5_change_palette((offset >> 1) & 0x3ff, offset-0x1000);
- }
+ m_ps5_palette_ram_tx[offset] = data;
+ psychic5_change_palette(offset,m_ps5_palette_ram_tx, 0x200);
}
+
+WRITE8_MEMBER(psychic5_state::fg_videoram_w)
+{
+ m_fg_videoram[offset] = data;
+ m_fg_tilemap->mark_tile_dirty(offset >> 1);
+}
+
+WRITE8_MEMBER( psychic5_state::bg_videoram_w )
+{
+ m_bg_videoram[offset] = data;
+ m_bg_tilemap->mark_tile_dirty(offset >> 1);
+}
+
+
+
WRITE8_MEMBER(psychic5_state::bombsa_unknown_w)
{
m_bombsa_unknown = data;
@@ -224,69 +175,29 @@ TILE_GET_INFO_MEMBER(psychic5_state::get_fg_tile_info)
VIDEO_START_MEMBER(psychic5_state,psychic5)
{
- /* info offset w h col row */
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(psychic5_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 64, 32);
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(psychic5_state::get_fg_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32);
-
m_fg_tilemap->set_transparent_pen(15);
-
- m_ps5_pagedram[0] = auto_alloc_array(machine(), UINT8, 0x2000);
- m_ps5_pagedram[1] = auto_alloc_array(machine(), UINT8, 0x2000);
-
- m_bg_videoram = &m_ps5_pagedram[0][0x0000];
- m_ps5_dummy_bg_ram = &m_ps5_pagedram[0][0x1000];
- m_ps5_io_ram = &m_ps5_pagedram[1][0x0000];
- m_ps5_palette_ram = &m_ps5_pagedram[1][0x0400];
- m_fg_videoram = &m_ps5_pagedram[1][0x1000];
-
jal_blend_init(machine(), 1);
- m_bg_palette_ram_base = 0x400;
- m_bg_palette_base = 0x100;
}
VIDEO_START_MEMBER(psychic5_state,bombsa)
{
- /* info offset w h col row */
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(psychic5_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 32);
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(psychic5_state::get_fg_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32);
-
m_fg_tilemap->set_transparent_pen(15);
-
- m_ps5_pagedram[0] = auto_alloc_array(machine(), UINT8, 0x2000);
- m_ps5_pagedram[1] = auto_alloc_array(machine(), UINT8, 0x2000);
-
- m_bg_videoram = &m_ps5_pagedram[0][0x0000];
- m_ps5_dummy_bg_ram = &m_ps5_pagedram[0][0x1000];
- m_ps5_io_ram = &m_ps5_pagedram[1][0x0000];
- m_fg_videoram = &m_ps5_pagedram[1][0x0800];
- m_ps5_palette_ram = &m_ps5_pagedram[1][0x1000];
-
jal_blend_init(machine(), 0);
-
- m_bg_palette_ram_base = 0x000;
- m_bg_palette_base = 0x000;
}
VIDEO_RESET_MEMBER(psychic5_state,psychic5)
{
m_bg_clip_mode = 0;
m_ps5_vram_page = 0;
- m_bg_status = 0;
- memset(m_ps5_pagedram[0],0,0x2000);
- memset(m_ps5_pagedram[1],0,0x2000);
+ m_title_screen = 0;
m_palette_intensity = 0;
}
-VIDEO_RESET_MEMBER(psychic5_state,bombsa)
-{
- m_ps5_vram_page = 0;
- m_bg_status = 0;
- m_title_screen = 0;
- memset(m_ps5_pagedram[0],0,0x2000);
- memset(m_ps5_pagedram[1],0,0x2000);
- m_palette_intensity = 0;
-}
/***************************************************************************
@@ -406,8 +317,13 @@ void psychic5_state::draw_background(screen_device &screen, bitmap_rgb32 &bitmap
UINT32 psychic5_state::screen_update_psychic5(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
+ UINT16 bg_scrollx = m_bg_control[0] | (m_bg_control[1] << 8);
+ m_bg_tilemap->set_scrollx(0, bg_scrollx);
+ UINT16 bg_scrolly = m_bg_control[2] | (m_bg_control[3] << 8);
+ m_bg_tilemap->set_scrolly(0, bg_scrolly);
+
bitmap.fill(m_palette->black_pen(), cliprect);
- if (m_bg_status & 1) /* Backgound enable */
+ if (m_bg_control[4] & 1) /* Backgound enable */
draw_background(screen, bitmap, cliprect);
if (!(m_title_screen & 1))
draw_sprites(bitmap, cliprect);
@@ -417,7 +333,13 @@ UINT32 psychic5_state::screen_update_psychic5(screen_device &screen, bitmap_rgb3
UINT32 psychic5_state::screen_update_bombsa(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- if (m_bg_status & 1) /* Backgound enable */
+ UINT16 bg_scrollx = m_bg_control[0] | (m_bg_control[1] << 8);
+ m_bg_tilemap->set_scrollx(0, bg_scrollx);
+ UINT16 bg_scrolly = m_bg_control[2] | (m_bg_control[3] << 8);
+ m_bg_tilemap->set_scrolly(0, bg_scrolly);
+ bitmap.fill(m_palette->black_pen(), cliprect);
+
+ if (m_bg_control[4] & 1) /* Backgound enable */
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
else
bitmap.fill(m_palette->pen(0x0ff), cliprect);
diff --git a/src/mame/video/rdpspn16.c b/src/mame/video/rdpspn16.c
index 158f968332c..800d295de80 100644
--- a/src/mame/video/rdpspn16.c
+++ b/src/mame/video/rdpspn16.c
@@ -572,6 +572,8 @@ void n64_rdp::SpanDrawFill(INT32 scanline, const extent_t &extent, const rdp_pol
{
if (x >= clipx1 && x < clipx2)
{
+ if (object.MiscState.FBSize < 2 || object.MiscState.FBSize > 4)
+ fatalerror("unsupported FBSize %d\n", object.MiscState.FBSize);
((this)->*(_Fill[object.MiscState.FBSize - 2]))(fb_index + x, object);
}
diff --git a/src/mame/video/rdptpipe.c b/src/mame/video/rdptpipe.c
index f5a83096a95..3a258774407 100644
--- a/src/mame/video/rdptpipe.c
+++ b/src/mame/video/rdptpipe.c
@@ -595,6 +595,21 @@ void N64TexturePipeT::LOD1Cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32
userdata->m_precomp_s = nexts;
userdata->m_precomp_t = nextt;
+ INT32 lodclamp = (((*sst & 0x60000) > 0) | ((nextt & 0x60000) > 0)) || (((*sss & 0x60000) > 0) | ((nexts & 0x60000) > 0));
+
+ INT32 horstep = SIGN17(nexts & 0x1ffff) - SIGN17(*sss & 0x1ffff);
+ INT32 vertstep = SIGN17(nextt & 0x1ffff) - SIGN17(*sst & 0x1ffff);
+ if (horstep & 0x20000)
+ {
+ horstep = ~horstep & 0x1ffff;
+ }
+ if (vertstep & 0x20000)
+ {
+ vertstep = ~vertstep & 0x1ffff;
+ }
+
+ INT32 lod = (horstep >= vertstep) ? horstep : vertstep;
+
int tempanded;
if (*sss & 0x40000)
{
@@ -645,6 +660,38 @@ void N64TexturePipeT::LOD1Cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32
*sst &= 0xffff;
}
}
+
+ if ((lod & 0x4000) || lodclamp)
+ {
+ lod = 0x7fff;
+ }
+ else if (lod < object.MiscState.MinLevel)
+ {
+ lod = object.MiscState.MinLevel;
+ }
+
+ bool magnify = (lod < 32);
+ INT32 l_tile = m_rdp->GetLog2((lod >> 5) & 0xff);
+ bool distant = ((lod & 0x6000) || (l_tile >= object.MiscState.MaxLevel));
+
+ userdata->LODFraction = ((lod << 3) >> l_tile) & 0xff;
+
+ if(!object.OtherModes.sharpen_tex_en && !object.OtherModes.detail_tex_en)
+ {
+ if (distant)
+ {
+ userdata->LODFraction = 0xff;
+ }
+ else if (magnify)
+ {
+ userdata->LODFraction = 0;
+ }
+ }
+
+ if(object.OtherModes.sharpen_tex_en && magnify)
+ {
+ userdata->LODFraction |= 0x100;
+ }
}
void N64TexturePipeT::LOD2Cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32 w, INT32 dsinc, INT32 dtinc, INT32 dwinc, INT32 prim_tile, INT32* t1, INT32* t2, rdp_span_aux *userdata, const rdp_poly_state& object)
@@ -761,7 +808,7 @@ void N64TexturePipeT::LOD2Cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32
if(object.OtherModes.sharpen_tex_en && magnify)
{
- userdata->LODFraction = userdata->LODFraction | 0x100;
+ userdata->LODFraction |= 0x100;
}
if (object.OtherModes.tex_lod_en)
diff --git a/src/mame/video/rockrage.c b/src/mame/video/rockrage.c
index b2cab647e34..a547bd25148 100644
--- a/src/mame/video/rockrage.c
+++ b/src/mame/video/rockrage.c
@@ -4,22 +4,13 @@
PALETTE_INIT_MEMBER(rockrage_state, rockrage)
{
const UINT8 *color_prom = memregion("proms")->base();
- int i;
- /* sprites */
- for (i = 0x20; i < 0x40; i++)
- palette.set_pen_indirect(i, i);
-
- /* characters */
- for (i = 0x40; i < 0x140; i++)
+ for (int i = 0; i < 256*3; i++)
{
- UINT8 ctabentry;
-
- ctabentry = (color_prom[(i - 0x40) + 0x000] & 0x0f) | 0x00;
- palette.set_pen_indirect(i + 0x000, ctabentry);
-
- ctabentry = (color_prom[(i - 0x40) + 0x100] & 0x0f) | 0x10;
- palette.set_pen_indirect(i + 0x100, ctabentry);
+ // layer0 uses colors 0x00-0x0f; layer1 uses 0x10-0x1f; sprites use 0x20-0x2f
+ UINT8 colorbase = (i / 256) * 16;
+ UINT8 ctabentry = (color_prom[i] & 0x0f) | colorbase;
+ palette.set_pen_indirect(i, ctabentry);
}
}
@@ -50,7 +41,7 @@ K007420_CALLBACK_MEMBER(rockrage_state::rockrage_sprite_callback)
{
*code |= ((*color & 0x40) << 2) | ((*color & 0x80) << 1) * ((m_vreg & 0x03) << 1);
*code = (*code << 2) | ((*color & 0x30) >> 4);
- *color = 0;
+ *color = 0 + (*color & 0x0f);
}
diff --git a/src/mame/video/tia.c b/src/mame/video/tia.c
index c0698dc4568..384a3773ddc 100644
--- a/src/mame/video/tia.c
+++ b/src/mame/video/tia.c
@@ -269,14 +269,14 @@ Phase Shift 26.2
double G = Y - 0.272 * I - 0.647 * Q;
double B = Y - 1.106 * I + 1.703 * Q;
- R = pow(R, 0.9) / pow(1, 0.9);
- G = pow(G, 0.9) / pow(1, 0.9);
- B = pow(B, 0.9) / pow(1, 0.9);
-
if (R < 0) R = 0;
if (G < 0) G = 0;
if (B < 0) B = 0;
+ R = pow(R, 0.9);
+ G = pow(G, 0.9);
+ B = pow(B, 0.9);
+
if (R > 1) R = 1;
if (G > 1) G = 1;
if (B > 1) B = 1;
@@ -328,14 +328,14 @@ PALETTE_INIT_MEMBER(tia_pal_video_device, tia_pal)
double G = Y - 0.344 * U - 0.714 * V;
double B = Y + 1.770 * U;
- R = pow(R, 1.2) / pow(1, 1.2);
- G = pow(G, 1.2) / pow(1, 1.2);
- B = pow(B, 1.2) / pow(1, 1.2);
-
if (R < 0) R = 0;
if (G < 0) G = 0;
if (B < 0) B = 0;
+ R = pow(R, 1.2);
+ G = pow(G, 1.2);
+ B = pow(B, 1.2);
+
if (R > 1) R = 1;
if (G > 1) G = 1;
if (B > 1) B = 1;
diff --git a/src/mame/video/twin16.c b/src/mame/video/twin16.c
index d2ffe52e17f..d8ebb702d97 100644
--- a/src/mame/video/twin16.c
+++ b/src/mame/video/twin16.c
@@ -19,23 +19,20 @@
enum
{
- TWIN16_SCREEN_FLIPY = 0x01,
- TWIN16_SCREEN_FLIPX = 0x02, // confirmed: Hard Puncher Intro
- TWIN16_UNKNOWN1 = 0x04, // ? Hard Puncher uses this
- TWIN16_PLANE_ORDER = 0x08, // confirmed: Devil Worlds
- TWIN16_TILE_FLIPX = 0x10, // unused?
- TWIN16_TILE_FLIPY = 0x20 // confirmed? Vulcan Venture
+ TWIN16_SCREEN_FLIPY = 0x01,
+ TWIN16_SCREEN_FLIPX = 0x02, // confirmed: Hard Puncher Intro
+ TWIN16_PRI0 = 0x04, // PRI0 input into 007789 PAL
+ TWIN16_PRI1 = 0x08, // PRI1 input into 007789 PAL
+ TWIN16_PRI2_UNUSED = 0x10, // schematic shows as PRI2 input, but unused
+ TWIN16_TILE_FLIPY = 0x20 // confirmed: Vulcan Venture
};
enum
{
// user-defined priorities
- TWIN16_BG_LAYER1 = 0x01,
- TWIN16_SPRITE_PRI_L1 = 0x02,
- TWIN16_BG_LAYER2 = 0x04,
- TWIN16_SPRITE_PRI_L2 = 0x08,
- TWIN16_SPRITE_OCCUPIED = 0x10, // sprite on screen pixel
- TWIN16_SPRITE_CAST_SHADOW = 0x20
+ TWIN16_BG_OVER_SPRITES = 0x01, // BG pixel has priority over opaque sprite pixels
+ TWIN16_BG_NO_SHADOW = 0x02, // BG pixel has priority over shadow sprite pixels
+ TWIN16_SPRITE_OCCUPIED = 0x04
};
@@ -107,7 +104,7 @@ WRITE16_MEMBER(twin16_state::video_register_w)
flip |= (m_video_register&TWIN16_SCREEN_FLIPY) ? TILEMAP_FLIPY : 0;
machine().tilemap().set_flip_all(flip);
}
- if (changed & (TWIN16_TILE_FLIPX | TWIN16_TILE_FLIPY))
+ if (changed & TWIN16_TILE_FLIPY)
{
m_scroll_tmap[0]->mark_all_dirty();
m_scroll_tmap[1]->mark_all_dirty();
@@ -177,8 +174,7 @@ WRITE16_MEMBER(twin16_state::video_register_w)
* 2 | -------xxxxxxxxx | xpos
* -----+------------------+
* 3 | x--------------- | enable
- * 3 | -x-------------- | priority ?
- * 3 | -----x---------- | no shadow ?
+ * 3 | -xxxxx---------- | ?
* 3 | ------x--------- | yflip ?
* 3 | -------x-------- | xflip
* 3 | --------xx------ | height
@@ -230,34 +226,22 @@ void twin16_state::spriteram_process( )
UINT32 xpos = (0x10000*source[4])|source[5];
UINT32 ypos = (0x10000*source[6])|source[7];
- /* notes on uncertain attributes:
- shadows: pen $F only (like other Konami hw), used in devilw, fround,
- miaj? (shadows are solid in tmnt hw version),
- gradius2? (ship exhaust)
+ /* notes on sprite attributes:
- sprite-background priority: in devilw, most sprites look best at high priority,
- in gradius2, most sprites look best at low priority. exceptions:
- - devilw prologue: sprites behind crowd (maybe more, haven't completed the game)
- - gradius2 intro showing earlier games: sprites above layers
+ The only inputs from the sprite hardware into the mixer PAL are four bits of
+ pixel data, with 0000 being transparent, 1111 being shadow, and anything else
+ opaque. Sprite to background priority, and whether shadows are visible, depends
+ entirely on the priority mode bits in m_video_register and on the underlying
+ background pixel, and not on any of the sprite attribute bits.
- currently using (priority&0x200), broken:
- - devilw prologue: sprites should be behind crowd
- - gradius2 level 7: bosses should be behind portal (ok except brain boss and mouth boss)
- - gradius2 ending: sun should be behind planet
+ Shadows in the devilw lava stages look a bit strange; the shadows "punch holes"
+ in the platforms and reveal the lava underneath. As far as I can tell from the
+ schematics this has to be correct; unlike later Konami hardware there seems to
+ be no way for a sprite to cast a shadow onto another sprite.
- does TWIN16_PLANE_ORDER affect it?
-
- more?
- devilw monster dens exploding monochrome, players fading to white in prologue, and trees in
- the 1st level shrinking with a solid green color look odd, maybe alpha blended?
-
- fround, hpuncher, miaj, cuebrickj, don't use the preprocessor. all sprites are expected
- to be high priority, and shadows are enabled
+ fround, hpuncher, miaj, cuebrickj, don't use the preprocessor.
*/
- UINT16 attributes = 0x8000| // enabled
- (source[2]&0x03ff)| // scale,size,color
- (source[2]&0x4000)>>4| // no-shadow? (gradius2 level 7 boss sets this bit and appears to expect pen $F to be solid)
- (priority&0x200)<<5; // sprite-background priority?
+ UINT16 attributes = 0x8000 | (source[2]&0x03ff); // scale,size,color
dest[0] = source[3]; /* gfx data */
dest[1] = ((xpos>>8) - dx)&0xffff;
@@ -291,7 +275,6 @@ void twin16_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap )
const UINT16 *pen_data = 0;
int flipy = attributes&0x0200;
int flipx = attributes&0x0100;
- int priority = (attributes&0x4000)?TWIN16_SPRITE_PRI_L1:TWIN16_SPRITE_PRI_L2;
if( m_is_fround ) {
/* fround board */
@@ -360,26 +343,20 @@ void twin16_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap )
{
UINT16 pen = pen_data[x>>2]>>((~x&3)<<2)&0xf;
- if( pen )
+ if( pen && !(pdest[sx] & TWIN16_SPRITE_OCCUPIED))
{
- int shadow = (pen==0xf) & ((attributes&0x400)==0);
+ pdest[sx] |= TWIN16_SPRITE_OCCUPIED;
- if (pdest[sx]shadow_table()[dest[sx]];
- pdest[sx]|=TWIN16_SPRITE_CAST_SHADOW;
- }
- else {
+ }
+ else // opaque pixel
+ {
+ if (!(pdest[sx] & TWIN16_BG_OVER_SPRITES))
dest[sx] = pal_base + pen;
- }
}
- else if (!shadow && pdest[sx]&TWIN16_SPRITE_CAST_SHADOW && (pdest[sx]&0xf)shadow_table()[pal_base + pen];
- pdest[sx]^=TWIN16_SPRITE_CAST_SHADOW;
- }
-
- pdest[sx]|=TWIN16_SPRITE_OCCUPIED;
}
}
}
@@ -412,21 +389,21 @@ TILE_GET_INFO_MEMBER(twin16_state::fix_tile_info)
void twin16_state::tile_get_info(tile_data &tileinfo, UINT16 data, int color_base)
{
/* fedcba9876543210
- xxx------------- color
+ xxx------------- color; high bit is also priority over sprites
---xxxxxxxxxxxxx tile number
*/
int code = (data & 0x1fff);
int color = color_base + (data >> 13);
int flags = 0;
- if (m_video_register & TWIN16_TILE_FLIPX) flags |= TILE_FLIPX;
if (m_video_register & TWIN16_TILE_FLIPY) flags |= TILE_FLIPY;
SET_TILE_INFO_MEMBER(1, code, color, flags);
+ tileinfo.category = BIT(data, 15);
}
void fround_state::tile_get_info(tile_data &tileinfo, UINT16 data, int color_base)
{
/* fedcba9876543210
- xxx------------- color
+ xxx------------- color; high bit is also priority over sprites
---xx----------- tile bank
-----xxxxxxxxxxx tile number
*/
@@ -434,9 +411,9 @@ void fround_state::tile_get_info(tile_data &tileinfo, UINT16 data, int color_bas
int code = (m_gfx_bank[bank] << 11) | (data & 0x7ff);
int color = color_base | (data >> 13);
int flags = 0;
- if (m_video_register & TWIN16_TILE_FLIPX) flags |= TILE_FLIPX;
if (m_video_register & TWIN16_TILE_FLIPY) flags |= TILE_FLIPY;
SET_TILE_INFO_MEMBER(1, code, color, flags);
+ tileinfo.category = BIT(data, 15);
}
TILE_GET_INFO_MEMBER(twin16_state::layer0_tile_info)
@@ -485,10 +462,71 @@ void fround_state::video_start()
UINT32 twin16_state::screen_update_twin16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- int layer = m_video_register & TWIN16_PLANE_ORDER ? 0 : 1;
+/*
+ PAL equations (007789 @ 11J):
- m_scroll_tmap[layer]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, TWIN16_BG_LAYER1, 0);
- m_scroll_tmap[layer^1]->draw(screen, bitmap, cliprect, 0, TWIN16_BG_LAYER2);
+ /SHAD = /FIX * /PRI1 * OCO0 * OCO1 * OCO2 * OCO3
+ + /FIX * /PRI0 * OCO0 * OCO1 * OCO2 * OCO3 * /V1C0
+ + /FIX * PRI0 * OCO0 * OCO1 * OCO2 * OCO3 * /V2C6
+ + /FIX * PRI0 * /V2C0 * /V2C3 * OCO0 * /V2C2 * OCO1 * /V2C1 * OCO2 * OCO3
+
+ /SELB = /FIX * OCO0 * OCO1 * OCO2 * OCO3
+ + /FIX * /OCO0 * /OCO1 * /OCO2 * /OCO3
+ + /FIX * PRI0 * /PRI1 * V1C0
+ + /FIX * PRI0 * PRI1 * V2C0 * V2C6
+ + /FIX * PRI0 * PRI1 * V2C1 * V2C6
+ + /FIX * PRI0 * PRI1 * V2C2 * V2C6
+ + /FIX * PRI0 * PRI1 * V2C3 * V2C6
+
+ SELA = FIX
+ + PRI0 * /PRI1 * V1C0
+ + /PRI1 * OCO0 * OCO1 * OCO2 * OCO3 * V1C0
+ + /PRI1 * /OCO0 * /OCO1 * /OCO2 * /OCO3 * V1C0
+ + PRI1 * /V2C0 * /V2C3 * OCO0 * /V2C2 * OCO1 * /V2C1 * OCO2 * OCO3
+ + PRI1 * /V2C0 * /V2C3 * /OCO0 * /V2C2 * /OCO1 * /V2C1 * /OCO2 * /OCO3
+
+ SELB SELA Visible layer
+ 0 0 VRAM2
+ 0 1 VRAM1
+ 1 0 Object
+ 1 1 Fix
+
+ Final Round uses a PROM (not dumped) instead of the PAL
+ and some discrete logic to combine some of the inputs.
+ Inputs to the PROM are:
+
+ A0 = V1C0 | V1C1 | V1C2 | V1C3
+ A1 = V2C0 | V2C1 | V2C2 | V2C3
+ A2 = OCO0 | OCO1 | OCO2 | OCO3
+ A3 = FIX0 | FIX1 | FIX2 | FIX3
+ A4 = ~(OCD0 & OCD1 & OCD2 & OCD3)
+ A5 = V2C6
+ A6 = PRI0
+ A7 = PRI1
+*/
+ screen.priority().fill(0, cliprect);
+
+ switch ((m_video_register >> 2) & 0x3)
+ {
+ case 0: // PRI1 = 0, PRI0 = 0
+ m_scroll_tmap[1]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_ALL_CATEGORIES | TILEMAP_DRAW_OPAQUE);
+ m_scroll_tmap[0]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_ALL_CATEGORIES);
+ break;
+ case 1: // PRI1 = 0, PRI0 = 1
+ m_scroll_tmap[1]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_ALL_CATEGORIES | TILEMAP_DRAW_OPAQUE);
+ m_scroll_tmap[0]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_ALL_CATEGORIES, TWIN16_BG_OVER_SPRITES);
+ break;
+ case 2: // PRI1 = 1, PRI0 = 0
+ m_scroll_tmap[0]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_ALL_CATEGORIES | TILEMAP_DRAW_OPAQUE);
+ m_scroll_tmap[0]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_ALL_CATEGORIES, TWIN16_BG_NO_SHADOW);
+ m_scroll_tmap[1]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_ALL_CATEGORIES);
+ break;
+ case 3: // PRI1 = 1, PRI0 = 1
+ m_scroll_tmap[0]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_ALL_CATEGORIES | TILEMAP_DRAW_OPAQUE);
+ m_scroll_tmap[1]->draw(screen, bitmap, cliprect, 0);
+ m_scroll_tmap[1]->draw(screen, bitmap, cliprect, 1, TWIN16_BG_OVER_SPRITES | TWIN16_BG_NO_SHADOW);
+ break;
+ }
draw_sprites( screen, bitmap );
diff --git a/src/mame/video/tx1.c b/src/mame/video/tx1.c
index 16addf6519e..adf459ff656 100644
--- a/src/mame/video/tx1.c
+++ b/src/mame/video/tx1.c
@@ -1438,8 +1438,7 @@ void tx1_state::buggyboy_draw_char(UINT8 *bitmap, bool wide)
***************************************************************************/
void tx1_state::buggyboy_get_roadpix(int screen, int ls161, UINT8 rva0_6, UINT8 sld, UINT32 *_rorev,
- UINT8 *rc0, UINT8 *rc1, UINT8 *rc2, UINT8 *rc3,
- const UINT8 *rom, const UINT8 *prom0, const UINT8 *prom1, const UINT8 *prom2)
+ UINT8 *rc0, UINT8 *rc1, UINT8 *rc2, UINT8 *rc3)
{
/* Counter Q10-7 are added to 384 */
UINT16 ls283_159 = (ls161 & 0x780) + 128 + (256 * screen);
@@ -1449,6 +1448,12 @@ void tx1_state::buggyboy_get_roadpix(int screen, int ls161, UINT8 rva0_6, UINT8
UINT8 d0 = 0;
UINT8 d1 = 0;
+ /* ROM/PROM lookup tables */
+ const UINT8 *rom = memregion("road")->base();
+ const UINT8 *prom0 = rom + 0x4000;
+ const UINT8 *prom1 = rom + 0x4200;
+ const UINT8 *prom2 = rom + 0x4400;
+
/* Latch road reverse bit */
*_rorev = !( (rom_en && rom_flip) || (!rom_en && (ls161 & 0x4000)) );
@@ -1539,11 +1544,7 @@ void tx1_state::buggyboy_draw_road(UINT8 *bitmap)
/* ROM/PROM lookup tables */
const UINT8 *rcols = (UINT8*)(memregion("proms")->base() + 0x1500);
- const UINT8 *rom = memregion("road")->base();
- const UINT8 *prom0 = rom + 0x4000;
- const UINT8 *prom1 = rom + 0x4200;
- const UINT8 *prom2 = rom + 0x4400;
- const UINT8 *vprom = rom + 0x4600;
+ const UINT8 *vprom = memregion("road")->base() + 0x4600;
/* Extract constant values */
tcmd = ((vregs.scol & 0xc000) >> 12) | ((vregs.scol & 0x00c0) >> 6);
@@ -1667,9 +1668,9 @@ void tx1_state::buggyboy_draw_road(UINT8 *bitmap)
/* Have we crossed a road gfx strip boundary? */
if (ls161 & 7)
{
- buggyboy_get_roadpix(0, ls161, rva0_6, sld, &_rorevls, &rc0[0], &rc1[0], &rc2[0], &rc3[0], rom, prom0, prom1, prom2);
- buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0[1], &rc1[1], &rc2[1], &rc3[1], rom, prom0, prom1, prom2);
- buggyboy_get_roadpix(2, ls161, rva0_6, sld, &_rorevrs, &rc0[2], &rc1[2], &rc2[2], &rc3[2], rom, prom0, prom1, prom2);
+ buggyboy_get_roadpix(0, ls161, rva0_6, sld, &_rorevls, &rc0[0], &rc1[0], &rc2[0], &rc3[0]);
+ buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0[1], &rc1[1], &rc2[1], &rc3[1]);
+ buggyboy_get_roadpix(2, ls161, rva0_6, sld, &_rorevrs, &rc0[2], &rc1[2], &rc2[2], &rc3[2]);
}
/* We can evaluate some of the pixel logic outside of the x-loop */
@@ -1749,9 +1750,9 @@ void tx1_state::buggyboy_draw_road(UINT8 *bitmap)
/* Load in a new road gfx strip? */
if (!(ls161 & 7))
{
- buggyboy_get_roadpix(0, ls161, rva0_6, sld, &_rorevls, &rc0[0], &rc1[0], &rc2[0], &rc3[0], rom, prom0, prom1, prom2);
- buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0[1], &rc1[1], &rc2[1], &rc3[1], rom, prom0, prom1, prom2);
- buggyboy_get_roadpix(2, ls161, rva0_6, sld, &_rorevrs, &rc0[2], &rc1[2], &rc2[2], &rc3[2], rom, prom0, prom1, prom2);
+ buggyboy_get_roadpix(0, ls161, rva0_6, sld, &_rorevls, &rc0[0], &rc1[0], &rc2[0], &rc3[0]);
+ buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0[1], &rc1[1], &rc2[1], &rc3[1]);
+ buggyboy_get_roadpix(2, ls161, rva0_6, sld, &_rorevrs, &rc0[2], &rc1[2], &rc2[2], &rc3[2]);
}
/* Road camber/banking */
@@ -2170,11 +2171,7 @@ void tx1_state::buggybjr_draw_road(UINT8 *bitmap)
/* ROM/PROM lookup tables */
const UINT8 *rcols = (UINT8*)(memregion("proms")->base() + 0x1500);
- const UINT8 *rom = memregion("road")->base();
- const UINT8 *prom0 = rom + 0x4000;
- const UINT8 *prom1 = rom + 0x4200;
- const UINT8 *prom2 = rom + 0x4400;
- const UINT8 *vprom = rom + 0x4600;
+ const UINT8 *vprom = memregion("road")->base() + 0x4600;
/* Extract constant values */
tcmd = ((vregs.scol & 0xc000) >> 12) | ((vregs.scol & 0x00c0) >> 6);
@@ -2296,7 +2293,7 @@ void tx1_state::buggybjr_draw_road(UINT8 *bitmap)
/* Have we crossed a road gfx strip boundary? */
if (ls161 & 7)
- buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0, &rc1, &rc2, &rc3, rom, prom0, prom1, prom2);
+ buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0, &rc1, &rc2, &rc3);
for (x = 0; x < 256; ++x)
{
@@ -2331,7 +2328,7 @@ void tx1_state::buggybjr_draw_road(UINT8 *bitmap)
/* Load in a new road gfx strip? */
if (!(ls161 & 7))
- buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0, &rc1, &rc2, &rc3, rom, prom0, prom1, prom2);
+ buggyboy_get_roadpix(1, ls161, rva0_6, sld, &_rorevcs, &rc0, &rc1, &rc2, &rc3);
/* Road camber */
if (vregs.bank_mode == 0)
diff --git a/src/mess/drivers/ace.c b/src/mess/drivers/ace.c
index 249e243ad7e..5c0c70878aa 100644
--- a/src/mess/drivers/ace.c
+++ b/src/mess/drivers/ace.c
@@ -711,7 +711,7 @@ static MACHINE_CONFIG_START( ace, ace_state )
MCFG_Z80PIO_OUT_PA_CB(WRITE8(ace_state, pio_pa_w))
MCFG_Z80PIO_OUT_PB_CB(DEVWRITE8("cent_data_out", output_latch_device, write))
- MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
// internal ram
diff --git a/src/mess/drivers/amiga.c b/src/mess/drivers/amiga.c
index a9fa7b52b5c..df51564a2d4 100644
--- a/src/mess/drivers/amiga.c
+++ b/src/mess/drivers/amiga.c
@@ -1343,7 +1343,7 @@ static MACHINE_CONFIG_START( amiga_base, amiga_state )
MCFG_RS232_CTS_HANDLER(WRITELINE(amiga_state, rs232_cts_w))
// centronics
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(amiga_state, centronics_ack_w))
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(amiga_state, centronics_busy_w))
MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(amiga_state, centronics_perror_w))
diff --git a/src/mess/drivers/amstrad.c b/src/mess/drivers/amstrad.c
index 22dbc156fb7..ba334acdea5 100644
--- a/src/mess/drivers/amstrad.c
+++ b/src/mess/drivers/amstrad.c
@@ -804,6 +804,7 @@ SLOT_INTERFACE_START(cpc_exp_cards)
SLOT_INTERFACE("amsrs232", CPC_RS232_AMS)
SLOT_INTERFACE("sf2", CPC_SYMBIFACE2)
SLOT_INTERFACE("amdrum", CPC_AMDRUM)
+ SLOT_INTERFACE("playcity", CPC_PLAYCITY)
SLOT_INTERFACE_END
SLOT_INTERFACE_START(cpcplus_exp_cards)
@@ -815,9 +816,10 @@ SLOT_INTERFACE_START(cpcplus_exp_cards)
SLOT_INTERFACE("amsrs232", CPC_RS232_AMS)
SLOT_INTERFACE("sf2", CPC_SYMBIFACE2)
SLOT_INTERFACE("amdrum", CPC_AMDRUM)
+ SLOT_INTERFACE("playcity", CPC_PLAYCITY)
SLOT_INTERFACE_END
-SLOT_INTERFACE_START(amstrad_printers)
+SLOT_INTERFACE_START(amstrad_centronics_devices)
SLOT_INTERFACE("pl80", COMX_PL80)
SLOT_INTERFACE("ex800", EPSON_EX800)
SLOT_INTERFACE("lx800", EPSON_LX800)
@@ -862,6 +864,7 @@ static MACHINE_CONFIG_START( amstrad_nofdc, amstrad_state )
MCFG_MC6845_OUT_DE_CB(WRITELINE(amstrad_state, amstrad_de_changed))
MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(amstrad_state, amstrad_hsync_changed))
MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(amstrad_state, amstrad_vsync_changed))
+ MCFG_MC6845_OUT_CUR_CB(DEVWRITELINE("exp", cpc_expansion_slot_device, cursor_w))
MCFG_VIDEO_START_OVERRIDE(amstrad_state,amstrad)
@@ -874,7 +877,7 @@ static MACHINE_CONFIG_START( amstrad_nofdc, amstrad_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
/* printer */
- MCFG_CENTRONICS_ADD("centronics", amstrad_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", amstrad_centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(amstrad_state, write_centronics_busy))
/* snapshot */
@@ -969,7 +972,7 @@ static MACHINE_CONFIG_START( cpcplus, amstrad_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
/* printer */
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(amstrad_state, write_centronics_busy))
/* snapshot */
diff --git a/src/mess/drivers/apf.c b/src/mess/drivers/apf.c
index 1ad3d9c15eb..11cf134a2b7 100644
--- a/src/mess/drivers/apf.c
+++ b/src/mess/drivers/apf.c
@@ -258,10 +258,6 @@ void apf_state::machine_reset()
m_portb = 0;
m_ca2 = 0;
- // apfimag only
- if (m_cass)
- m_cass->change_state(CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
-
// apfimag only
if (m_ram)
{
@@ -554,7 +550,7 @@ static MACHINE_CONFIG_START( apfm1000, apf_state )
MCFG_APF_CARTRIDGE_ADD("cartslot", apf_cart, NULL)
/* software lists */
- MCFG_SOFTWARE_LIST_ADD("cart_list","apfm1000")
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "apfm1000")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( apfimag, apfm1000 )
@@ -574,13 +570,15 @@ static MACHINE_CONFIG_DERIVED( apfimag, apfm1000 )
MCFG_PIA_READPB_HANDLER(READ8(apf_state, pia1_portb_r))
MCFG_PIA_WRITEPB_HANDLER(WRITE8(apf_state, pia1_portb_w))
- MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_ADD("cassette")
MCFG_CASSETTE_FORMATS(apf_cassette_formats)
- MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED)
MCFG_FD1771x_ADD("fdc", 1000000) // guess
MCFG_FLOPPY_DRIVE_ADD("fdc:0", apf_floppies, "525dd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD("fdc:1", apf_floppies, "525dd", floppy_image_device::default_floppy_formats)
+
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "apfimag_cass")
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/applix.c b/src/mess/drivers/applix.c
index c6a130a046f..cffa6cc09a2 100644
--- a/src/mess/drivers/applix.c
+++ b/src/mess/drivers/applix.c
@@ -877,7 +877,7 @@ static MACHINE_CONFIG_START( applix, applix_state )
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(applix_state, applix_pb_w))
MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m68000_device, write_irq2))
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522", via6522_device, write_ca1))
MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("via6522", via6522_device, write_pa0))
diff --git a/src/mess/drivers/apricot.c b/src/mess/drivers/apricot.c
index 4d3521d11db..0164e89d099 100644
--- a/src/mess/drivers/apricot.c
+++ b/src/mess/drivers/apricot.c
@@ -384,7 +384,7 @@ static MACHINE_CONFIG_START( apricot, apricot_state )
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("ic15", z80dart_device, ctsa_w))
// centronics printer
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in")
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("ic15", z80dart_device, ctsb_w))
MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("ic15", z80dart_device, dcdb_w))
diff --git a/src/mess/drivers/apricotf.c b/src/mess/drivers/apricotf.c
index adbaf8d1cd4..5d12f81b086 100644
--- a/src/mess/drivers/apricotf.c
+++ b/src/mess/drivers/apricotf.c
@@ -294,7 +294,7 @@ static MACHINE_CONFIG_START( act_f1, f1_state )
MCFG_Z80CTC_ZC1_CB(WRITELINE(f1_state, ctc_z1_w))
MCFG_Z80CTC_ZC2_CB(WRITELINE(f1_state, ctc_z2_w))
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(Z80SIO2_TAG, z80dart_device, ctsa_w))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
diff --git a/src/mess/drivers/apricotp.c b/src/mess/drivers/apricotp.c
index f9f5a78f4b2..7069c7340e3 100644
--- a/src/mess/drivers/apricotp.c
+++ b/src/mess/drivers/apricotp.c
@@ -534,7 +534,7 @@ static MACHINE_CONFIG_START( fp, fp_state )
MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":0", fp_floppies, "35dd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG":1", fp_floppies, NULL, floppy_image_device::default_floppy_formats)
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fp_state, write_centronics_busy))
MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(fp_state, write_centronics_select))
MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(fp_state, write_centronics_fault))
diff --git a/src/mess/drivers/astrocde.c b/src/mess/drivers/astrocde.c
index 9912514a583..5058efc65c1 100644
--- a/src/mess/drivers/astrocde.c
+++ b/src/mess/drivers/astrocde.c
@@ -14,23 +14,24 @@
#include "sound/astrocde.h"
#include "bus/astrocde/slot.h"
#include "bus/astrocde/rom.h"
+#include "bus/astrocde/exp.h"
+#include "bus/astrocde/ram.h"
class astrocde_mess_state : public astrocde_state
{
public:
astrocde_mess_state(const machine_config &mconfig, device_type type, const char *tag)
: astrocde_state(mconfig, type, tag),
- m_cart(*this, "cartslot")
+ m_cart(*this, "cartslot"),
+ m_exp(*this, "exp")
{ }
required_device m_cart;
- void get_ram_expansion_settings(int &ram_expansion_installed, int &write_protect_on, int &expansion_ram_start, int &expansion_ram_end, int &shadow_ram_end);
+ required_device m_exp;
DECLARE_MACHINE_START(astrocde);
- DECLARE_MACHINE_RESET(astrocde);
- DECLARE_INPUT_CHANGED_MEMBER(set_write_protect);
};
-/*************************************
+/*********************************************************************************
*
* Memory maps
*
@@ -42,58 +43,13 @@ public:
* by an extended BASIC program. Bally and Astrocade BASIC can access from
* $5000 to $7FFF if available.
*
- * RAM Expansions
- *
- * Several third party RAM expansions have been made for the Astrocade. These
- * allow access to various ranges of the expansion memory ($5000 to $FFFF).
- * A RAM expansion is required to use extended BASIC programs like Blue RAM BASIC
- * and VIPERSoft BASIC. All of the expansions also have a RAM protect switch, which
- * can be flipped at any time to make the RAM act like ROM. Extended BASIC
- * programs need access to the RAM and won't work with RAM protect enabled, but
- * this can be useful with Bally and Astrocade BASIC. They also have a range switch
- * (not implemented). The default position is 6K, but it can be switched to
- * 2K. This means that the expanded memory starting at $6000 will instead be
- * mapped to the cartridge memory starting at $2000. So it would be possible to
- * load a cartridge program from tape into the expansion memory, then flip the range
- * switch and run it as a cartridge. This is useful for cartridge development.
- *
- * NOTE: If you have any trouble running cartridges with a RAM expansion installed, hit reset.
- *
- * Blue RAM -- available in 4K, 16K, and 32K. These also use an INS8154 chip,
- * (not yet implemented) which has an additional $80 bytes of RAM mapped
- * immediately after the end of the expansion address space. This memory
- * can't be write protected. The INS8154 has I/O features needed for loading
- * tape programs into Blue RAM BASIC, as well as running the Blue RAM Utility cart.
- * 4K: $6000 to $6FFF (can't run VIPERSoft BASIC, because this program needs memory
- * past this range)
- * 16K: $6000 to $9FFF
- * 32K: $6000 to $DFFF
- *
- * VIPER System 1 -- This is available in 16K only. It also includes a keyboard (not implemented).
- * 16K: $6000 to $9FFF
- *
- * Lil' WHITE RAM -- This is available in 32K only. Attempts to read and write
- * to memory outside of its address range ($D000 to $FFFF) are mapped to the expansion
- * memory $5000 to $7FFF. The current implementation won't allow the shadow RAM area
- * to be accessed when RAM protect is on, but there is no known software that will
- * access the upper range of the expansion RAM when RAM protect is enabled.
- * 32K: $5000 to $CFFF
- *
- * R&L 64K RAM Board -- This is a highly configurable kit. RAM can be installed in
- * 2K increments. So, the entire 44K expansion memory can be filled. It is also
- * possible to override the rest of the memory map with RAM (not implemented).
- * There are 32 switches allowing users to activate and deactivate each 2K block (not implemented).
- * RAM write protection can be implemented in three ranges through jumpers or by
- * installing switches. The ranges are $0000 to $0FFF (first 4K), $0000 to $3FFF (first 16K),
- * and $0000 to $FFFF (all 64K). The current implementation is for 44K expansion memory mapped from
- * $5000 to $FFFF, with only a single write protect covering this entire range.
- *
- *************************************/
+ *********************************************************************************/
static ADDRESS_MAP_START( astrocade_mem, AS_PROGRAM, 8, astrocde_mess_state )
AM_RANGE(0x0000, 0x0fff) AM_ROM AM_WRITE(astrocade_funcgen_w)
AM_RANGE(0x1000, 0x3fff) AM_ROM /* Star Fortress writes in here?? */
AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("videoram") /* ASG */
+ //AM_RANGE(0x5000, 0xffff) AM_DEVREADWRITE("exp", astrocade_exp_device, read, write)
ADDRESS_MAP_END
@@ -101,29 +57,6 @@ static ADDRESS_MAP_START( astrocade_io, AS_IO, 8, astrocde_mess_state )
AM_RANGE(0x00, 0x1f) AM_MIRROR(0xff00) AM_MASK(0xffff) AM_READWRITE(astrocade_data_chip_register_r, astrocade_data_chip_register_w)
ADDRESS_MAP_END
-INPUT_CHANGED_MEMBER(astrocde_mess_state::set_write_protect) // run when RAM expansion write protect switch is changed
-{
- int ram_expansion_installed = 0, write_protect_on = 0, expansion_ram_start = 0, expansion_ram_end = 0, shadow_ram_end = 0;
- address_space &space = m_maincpu->space(AS_PROGRAM);
- UINT8 *expram = machine().device("ram_tag")->pointer();
-
- get_ram_expansion_settings(ram_expansion_installed, write_protect_on, expansion_ram_start, expansion_ram_end, shadow_ram_end); // passing by reference
-
- if (ram_expansion_installed == 1)
- {
- if (write_protect_on == 0) // write protect off, so install memory normally
- {
- space.install_ram(expansion_ram_start, expansion_ram_end, expram);
- if (shadow_ram_end > expansion_ram_end)
- space.install_ram(expansion_ram_end + 1, shadow_ram_end, expram);
- }
- else // write protect on, so make memory read only
- {
- space.nop_write(expansion_ram_start, expansion_ram_end);
- }
- }
-}
-
/*************************************
*
* Input ports
@@ -227,21 +160,6 @@ static INPUT_PORTS_START( astrocde )
PORT_START("P4_KNOB")
PORT_BIT(0xff, 0x00, IPT_PADDLE) PORT_INVERT PORT_SENSITIVITY(85) PORT_KEYDELTA(10) PORT_CENTERDELTA(0) PORT_MINMAX(0,255) PORT_CODE_DEC(KEYCODE_Y) PORT_CODE_INC(KEYCODE_U) PORT_PLAYER(4)
-
- PORT_START("CFG") /* machine config */
- PORT_DIPNAME( 0x3f, 0x00, "RAM Expansion")
- PORT_DIPSETTING( 0x00, "No RAM Expansion")
- PORT_DIPSETTING( 0x01, "16KB Viper System 1 RAM Expansion")
- PORT_DIPSETTING( 0x02, "32KB Lil' WHITE RAM Expansion")
- PORT_DIPSETTING( 0x04, "R&L 64K RAM Board (44K installed)")
- PORT_DIPSETTING( 0x08, "4KB Blue RAM Expansion")
- PORT_DIPSETTING( 0x10, "16KB Blue RAM Expansion")
- PORT_DIPSETTING( 0x20, "32KB Blue RAM Expansion")
-
- PORT_START("PROTECT") /* Write protect RAM */
- PORT_DIPNAME( 0x01, 0x00, "Write Protect RAM") PORT_CHANGED_MEMBER(DEVICE_SELF, astrocde_mess_state, set_write_protect, 0)
- PORT_DIPSETTING( 0x00, "Write Protect Off")
- PORT_DIPSETTING( 0x01, "Write Protect On")
INPUT_PORTS_END
@@ -257,6 +175,15 @@ static SLOT_INTERFACE_START(astrocade_cart)
SLOT_INTERFACE_INTERNAL("rom_512k", ASTROCADE_ROM_512K)
SLOT_INTERFACE_END
+static SLOT_INTERFACE_START(astrocade_exp)
+ SLOT_INTERFACE("blue_ram_4k", ASTROCADE_BLUERAM_4K)
+ SLOT_INTERFACE("blue_ram_16k", ASTROCADE_BLUERAM_16K)
+ SLOT_INTERFACE("blue_ram_32k", ASTROCADE_BLUERAM_32K)
+ SLOT_INTERFACE("viper_sys1", ASTROCADE_VIPER_SYS1)
+ SLOT_INTERFACE("lil_white_ram", ASTROCADE_WHITERAM)
+ SLOT_INTERFACE("rl64_ram", ASTROCADE_RL64RAM)
+SLOT_INTERFACE_END
+
static MACHINE_CONFIG_START( astrocde, astrocde_mess_state )
/* basic machine hardware */
@@ -265,7 +192,6 @@ static MACHINE_CONFIG_START( astrocde, astrocde_mess_state )
MCFG_CPU_IO_MAP(astrocade_io)
MCFG_MACHINE_START_OVERRIDE(astrocde_mess_state, astrocde)
- MCFG_MACHINE_RESET_OVERRIDE(astrocde_mess_state, astrocde)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -281,9 +207,8 @@ static MACHINE_CONFIG_START( astrocde, astrocde_mess_state )
MCFG_SOUND_ADD("astrocade1", ASTROCADE, ASTROCADE_CLOCK/4)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
- /* optional expansion ram (installed in machine_reset)*/
- MCFG_RAM_ADD("ram_tag")
- MCFG_RAM_DEFAULT_SIZE("32k")
+ /* expansion port */
+ MCFG_ASTROCADE_EXPANSION_SLOT_ADD("exp", astrocade_exp, NULL)
/* cartridge */
MCFG_ASTROCADE_CARTRIDGE_ADD("cartslot", astrocade_cart, NULL)
@@ -329,82 +254,13 @@ MACHINE_START_MEMBER(astrocde_mess_state, astrocde)
{
if (m_cart->exists())
m_maincpu->space(AS_PROGRAM).install_read_handler(0x2000, 0x3fff, read8_delegate(FUNC(astrocade_cart_slot_device::read_rom),(astrocade_cart_slot_device*)m_cart));
+
+ // if no RAM is mounted and the handlers are installed, the system starts with garbage on screen and a RESET is necessary
+ // thus, install RAM only if an expansion is mounted
+ if (m_exp->get_card_mounted())
+ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x5000, 0xffff, read8_delegate(FUNC(astrocade_exp_device::read),(astrocade_exp_device*)m_exp), write8_delegate(FUNC(astrocade_exp_device::write),(astrocade_exp_device*)m_exp));
}
-MACHINE_RESET_MEMBER(astrocde_mess_state, astrocde)
-{
- int ram_expansion_installed = 0, write_protect_on = 0, expansion_ram_start = 0, expansion_ram_end = 0, shadow_ram_end = 0;
- address_space &space = m_maincpu->space(AS_PROGRAM);
- UINT8 *expram = machine().device("ram_tag")->pointer();
- space.unmap_readwrite(0x5000, 0xffff); // unmap any previously installed expansion RAM
-
- get_ram_expansion_settings(ram_expansion_installed, write_protect_on, expansion_ram_start, expansion_ram_end, shadow_ram_end); // passing by reference
-
- if (ram_expansion_installed == 1)
- {
- if (write_protect_on == 0) // write protect off, so install memory normally
- {
- space.install_ram(expansion_ram_start, expansion_ram_end, expram);
- if (shadow_ram_end > expansion_ram_end)
- space.install_ram(expansion_ram_end + 1, shadow_ram_end, expram);
- }
- else // write protect on, so make memory read only
- {
- space.nop_write(expansion_ram_start, expansion_ram_end);
- }
- }
-}
-
-void astrocde_mess_state::get_ram_expansion_settings(int &ram_expansion_installed, int &write_protect_on, int &expansion_ram_start, int &expansion_ram_end, int &shadow_ram_end)
-{
- if (ioport("PROTECT")->read() == 0x01)
- write_protect_on = 1;
- else
- write_protect_on = 0;
-
- ram_expansion_installed = 1;
-
- switch(ioport("CFG")->read()) // check RAM expansion configuration and set address ranges
- {
- case 0x00: // No RAM Expansion
- ram_expansion_installed = 0;
- break;
- case 0x01: // 16KB Viper System 1 RAM Expansion
- expansion_ram_start = 0x6000;
- expansion_ram_end = 0x9fff;
- shadow_ram_end = 0;
- break;
- case 0x02: // "32KB Lil' WHITE RAM Expansion
- expansion_ram_start = 0x5000;
- expansion_ram_end = 0xcfff;
- shadow_ram_end = 0xffff;
- break;
- case 0x04: // R&L 64K RAM Board (44KB installed)
- expansion_ram_start = 0x5000;
- expansion_ram_end = 0xffff;
- shadow_ram_end = 0;
- break;
- case 0x08: // 4KB Blue RAM Expansion
- expansion_ram_start = 0x6000;
- expansion_ram_end = 0x6fff;
- shadow_ram_end = 0;
- break;
- case 0x10: // 16KB Blue RAM Expansion
- expansion_ram_start = 0x6000;
- expansion_ram_end = 0x9fff;
- shadow_ram_end = 0;
- break;
- case 0x20: // 32KB Blue RAM Expansion
- expansion_ram_start = 0x6000;
- expansion_ram_end = 0xdfff;
- shadow_ram_end = 0;
- break;
- default:
- break;
- }
-}
-
-
/*************************************
*
* Driver definitions
diff --git a/src/mess/drivers/atarist.c b/src/mess/drivers/atarist.c
index 86ac1af97da..e09345ef7c9 100644
--- a/src/mess/drivers/atarist.c
+++ b/src/mess/drivers/atarist.c
@@ -2106,7 +2106,7 @@ static MACHINE_CONFIG_START( st, st_state )
MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", st_state::floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, 0, st_state::floppy_formats)
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i0_w))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
@@ -2197,7 +2197,7 @@ static MACHINE_CONFIG_START( megast, megast_state )
MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", st_state::floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, 0, st_state::floppy_formats)
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i0_w))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
@@ -2295,7 +2295,7 @@ static MACHINE_CONFIG_START( ste, ste_state )
MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", st_state::floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, 0, st_state::floppy_formats)
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i0_w))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
@@ -2408,7 +2408,7 @@ static MACHINE_CONFIG_START( stbook, stbook_state )
MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":0", atari_floppies, "35dd", 0, st_state::floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG ":1", atari_floppies, 0, 0, st_state::floppy_formats)
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, i0_w))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
diff --git a/src/mess/drivers/atom.c b/src/mess/drivers/atom.c
index c3d6e1cc723..e09142a305b 100644
--- a/src/mess/drivers/atom.c
+++ b/src/mess/drivers/atom.c
@@ -725,7 +725,7 @@ static MACHINE_CONFIG_START( atom, atom_state )
MCFG_I8271_FLOPPIES(FLOPPY_0, FLOPPY_1)
MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(atom_floppy_interface)
- MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(R6522_TAG, via6522_device, write_ca1))
MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(R6522_TAG, via6522_device, write_pa7))
@@ -822,7 +822,7 @@ static MACHINE_CONFIG_START( atombb, atom_state )
MCFG_I8255_IN_PORTC_CB(READ8(atom_state, ppi_pc_r))
MCFG_I8255_OUT_PORTC_CB(WRITE8(atom_state, ppi_pc_w))
- MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(R6522_TAG, via6522_device, write_ca1))
MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE(R6522_TAG, via6522_device, write_pa7))
diff --git a/src/mess/drivers/bbc.c b/src/mess/drivers/bbc.c
index 81218455d69..e77fb48c2f3 100644
--- a/src/mess/drivers/bbc.c
+++ b/src/mess/drivers/bbc.c
@@ -748,7 +748,7 @@ static MACHINE_CONFIG_DERIVED( bbcb, bbca )
MCFG_UPD7002_EOC_CB(bbc_state, BBC_uPD7002_EOC)
/* printer */
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
@@ -810,7 +810,7 @@ static MACHINE_CONFIG_DERIVED( bbcb_us, bbca )
MCFG_UPD7002_EOC_CB(bbc_state, BBC_uPD7002_EOC)
/* printer */
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
@@ -919,7 +919,7 @@ static MACHINE_CONFIG_START( bbcm, bbc_state )
MCFG_MC146818_ADD( "rtc", XTAL_32_768kHz )
/* printer */
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
diff --git a/src/mess/drivers/bebox.c b/src/mess/drivers/bebox.c
index d118016a664..a7567a8cfc4 100644
--- a/src/mess/drivers/bebox.c
+++ b/src/mess/drivers/bebox.c
@@ -12,17 +12,17 @@
/* Components */
#include "video/pc_vga.h"
-#include "bus/pci/cirrus.h"
+#include "bus/lpci/cirrus.h"
#include "cpu/powerpc/ppc.h"
#include "sound/3812intf.h"
#include "machine/ins8250.h"
#include "machine/pic8259.h"
#include "machine/mc146818.h"
-#include "bus/pci/pci.h"
+#include "bus/lpci/pci.h"
#include "machine/am9517a.h"
#include "machine/pckeybrd.h"
#include "machine/idectrl.h"
-#include "bus/pci/mpc105.h"
+#include "bus/lpci/mpc105.h"
#include "machine/intelfsh.h"
#include "bus/scsi/scsi.h"
#include "machine/53c810.h"
diff --git a/src/mess/drivers/bullet.c b/src/mess/drivers/bullet.c
index a940eaaa8d4..714b071b135 100644
--- a/src/mess/drivers/bullet.c
+++ b/src/mess/drivers/bullet.c
@@ -1149,7 +1149,7 @@ static MACHINE_CONFIG_START( bullet, bullet_state )
MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":6", bullet_8_floppies, NULL, floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":7", bullet_8_floppies, NULL, floppy_image_device::default_floppy_formats)
- MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(bullet_state, write_centronics_busy))
MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(bullet_state, write_centronics_perror))
MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(bullet_state, write_centronics_select))
@@ -1233,7 +1233,7 @@ static MACHINE_CONFIG_START( bulletf, bulletf_state )
MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":8", bullet_35_floppies, NULL, floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":9", bullet_35_floppies, NULL, floppy_image_device::default_floppy_formats)
- MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(bullet_state, write_centronics_busy))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
diff --git a/src/mess/drivers/bw12.c b/src/mess/drivers/bw12.c
index cb722ce969f..dc3de2ac214 100644
--- a/src/mess/drivers/bw12.c
+++ b/src/mess/drivers/bw12.c
@@ -613,7 +613,7 @@ static MACHINE_CONFIG_START( common, bw12_state )
MCFG_RS232_CTS_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, ctsb_w))
/* printer */
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(PIA6821_TAG, pia6821_device, ca1_w))
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(bw12_state, write_centronics_busy))
MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(bw12_state, write_centronics_fault))
diff --git a/src/mess/drivers/bw2.c b/src/mess/drivers/bw2.c
index 3ba2a7b951c..21565d88333 100644
--- a/src/mess/drivers/bw2.c
+++ b/src/mess/drivers/bw2.c
@@ -618,7 +618,7 @@ static MACHINE_CONFIG_START( bw2, bw2_state )
MCFG_DEVICE_ADDRESS_MAP(AS_0, lcdc_map)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
- MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(bw2_state, write_centronics_busy))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
diff --git a/src/mess/drivers/cat.c b/src/mess/drivers/cat.c
index 160225af1d0..63486ac2788 100644
--- a/src/mess/drivers/cat.c
+++ b/src/mess/drivers/cat.c
@@ -1244,7 +1244,7 @@ static MACHINE_CONFIG_START( cat, cat_state )
MCFG_MC68681_B_TX_CALLBACK(WRITELINE(cat_state, cat_duart_txb))
MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(cat_state, cat_duart_output))
- MCFG_CENTRONICS_ADD("ctx", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("ctx", centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(cat_state, prn_ack_ff))
MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("duartn68681", mc68681_device, ip4_w)) MCFG_DEVCB_XOR(1)
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("ctx_data_out", "ctx")
diff --git a/src/mess/drivers/clcd.c b/src/mess/drivers/clcd.c
index a75f9e571db..e25c705685b 100644
--- a/src/mess/drivers/clcd.c
+++ b/src/mess/drivers/clcd.c
@@ -767,7 +767,7 @@ static MACHINE_CONFIG_START(clcd, clcd_state)
MCFG_RS232_DSR_HANDLER(DEVWRITELINE("acia", mos6551_device, write_dsr))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("via1", via6522_device, write_pb4))
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, NULL)
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, NULL)
MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("via1", via6522_device, write_pb6)) MCFG_DEVCB_XOR(1)
MCFG_DEVICE_ADD("bank1", ADDRESS_MAP_BANK, 0)
diff --git a/src/mess/drivers/compis.c b/src/mess/drivers/compis.c
index a69b7398f80..2b9d9d747ac 100644
--- a/src/mess/drivers/compis.c
+++ b/src/mess/drivers/compis.c
@@ -706,7 +706,7 @@ static MACHINE_CONFIG_START( compis, compis_state )
MCFG_RS232_DCD_HANDLER(DEVWRITELINE(I8274_TAG, z80dart_device, dcdb_w))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE(I8274_TAG, z80dart_device, ctsb_w))
- MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(compis_state, write_centronics_busy))
MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(compis_state, write_centronics_select))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
diff --git a/src/mess/drivers/crvision.c b/src/mess/drivers/crvision.c
index c984a021d63..f1d62f0ed2f 100644
--- a/src/mess/drivers/crvision.c
+++ b/src/mess/drivers/crvision.c
@@ -771,7 +771,7 @@ static MACHINE_CONFIG_START( creativision, crvision_state )
MCFG_CASSETTE_ADD("cassette")
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
- MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit7))
MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0)
@@ -850,7 +850,7 @@ static MACHINE_CONFIG_START( lasr2001, laser2001_state )
MCFG_CASSETTE_ADD("cassette")
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(laser2001_state, write_centronics_busy))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
diff --git a/src/mess/drivers/dmv.c b/src/mess/drivers/dmv.c
index 935c0bf3002..a2da0033da1 100644
--- a/src/mess/drivers/dmv.c
+++ b/src/mess/drivers/dmv.c
@@ -25,6 +25,7 @@
#include "bus/dmv/k220.h"
#include "bus/dmv/k230.h"
#include "bus/dmv/k233.h"
+#include "bus/dmv/k803.h"
#include "bus/dmv/k806.h"
#include "bus/dmv/ram.h"
@@ -114,7 +115,17 @@ public:
DECLARE_READ8_MEMBER(exp_program_r);
DECLARE_WRITE8_MEMBER(exp_program_w);
DECLARE_WRITE_LINE_MEMBER(thold7_w);
- DECLARE_WRITE_LINE_MEMBER(busint_w);
+
+ void update_busint(int slot, int state);
+ DECLARE_WRITE_LINE_MEMBER(busint2_w) { update_busint(0, state); }
+ DECLARE_WRITE_LINE_MEMBER(busint2a_w) { update_busint(1, state); }
+ DECLARE_WRITE_LINE_MEMBER(busint3_w) { update_busint(2, state); }
+ DECLARE_WRITE_LINE_MEMBER(busint4_w) { update_busint(3, state); }
+ DECLARE_WRITE_LINE_MEMBER(busint5_w) { update_busint(4, state); }
+ DECLARE_WRITE_LINE_MEMBER(busint6_w) { update_busint(5, state); }
+ DECLARE_WRITE_LINE_MEMBER(busint7_w) { update_busint(6, state); }
+ DECLARE_WRITE_LINE_MEMBER(busint7a_w) { update_busint(7, state); }
+
DECLARE_FLOPPY_FORMATS( floppy_formats );
UINT8 program_read(address_space &space, int cas, offs_t offset);
@@ -146,6 +157,7 @@ public:
int m_dack3_line;
int m_sd_poll_state;
int m_floppy_motor;
+ int m_busint[8];
};
WRITE8_MEMBER(dmv_state::tc_set_w)
@@ -329,6 +341,7 @@ UPD7220_DRAW_TEXT_LINE_MEMBER( dmv_state::hgdc_draw_text )
static SLOT_INTERFACE_START( dmv_floppies )
SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
+ SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
SLOT_INTERFACE_END
@@ -375,10 +388,21 @@ WRITE_LINE_MEMBER( dmv_state::thold7_w )
}
}
-WRITE_LINE_MEMBER( dmv_state::busint_w )
+void dmv_state::update_busint(int slot, int state)
{
- m_slot7a->irq2_w(state);
- m_slot7->irq2_w(state);
+ m_busint[slot] = state;
+
+ int new_state = CLEAR_LINE;
+ for (int i=0; i<8; i++)
+ if (m_busint[i] != CLEAR_LINE)
+ {
+ new_state = ASSERT_LINE;
+ break;
+ }
+
+ m_slot7a->irq2_w(new_state);
+ m_slot7->irq2_w(new_state);
+ m_maincpu->set_input_line(0, new_state);
}
void dmv_state::program_write(address_space &space, int cas, offs_t offset, UINT8 data)
@@ -505,6 +529,7 @@ void dmv_state::machine_reset()
m_switch16 = 0;
m_thold7 = 0;
m_dma_hrq = 0;
+ memset(m_busint, 0, sizeof(m_busint));
update_halt_line();
}
@@ -606,6 +631,7 @@ SLOT_INTERFACE_END
static SLOT_INTERFACE_START(dmv_slot2_6)
SLOT_INTERFACE("k233", DMV_K233) // K233 16K Shared RAM
+ SLOT_INTERFACE("k803", DMV_K803) // K803 RTC module
SLOT_INTERFACE("k806", DMV_K806) // K806 Mouse module
SLOT_INTERFACE_END
@@ -692,27 +718,33 @@ static MACHINE_CONFIG_START( dmv, dmv_state )
MCFG_DEVICE_SLOT_INTERFACE(dmv_slot1, NULL, false)
MCFG_DEVICE_ADD("slot2", DMVCART_SLOT, 0)
MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false)
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint2_w))
MCFG_DEVICE_ADD("slot2a", DMVCART_SLOT, 0)
MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2a, NULL, false)
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint2a_w))
MCFG_DEVICE_ADD("slot3", DMVCART_SLOT, 0)
MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false)
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint3_w))
MCFG_DEVICE_ADD("slot4", DMVCART_SLOT, 0)
MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false)
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint4_w))
MCFG_DEVICE_ADD("slot5", DMVCART_SLOT, 0)
MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false)
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint5_w))
MCFG_DEVICE_ADD("slot6", DMVCART_SLOT, 0)
MCFG_DEVICE_SLOT_INTERFACE(dmv_slot2_6, NULL, false)
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint6_w))
MCFG_DEVICE_ADD("slot7", DMVCART_SLOT, 0)
MCFG_DEVICE_SLOT_INTERFACE(dmv_slot7, NULL, false)
MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(READ8(dmv_state, exp_program_r), WRITE8(dmv_state, exp_program_w))
MCFG_DMVCART_SLOT_OUT_THOLD_CB(WRITELINE(dmv_state, thold7_w))
- MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(dmv_state, busint_w))
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint7_w))
MCFG_DEVICE_ADD("slot7a", DMVCART_SLOT, 0)
MCFG_DEVICE_SLOT_INTERFACE(dmv_slot7a, "k230", false)
MCFG_DMVCART_SLOT_PROGRAM_READWRITE_CB(READ8(dmv_state, exp_program_r), WRITE8(dmv_state, exp_program_w))
MCFG_DMVCART_SLOT_OUT_THOLD_CB(WRITELINE(dmv_state, thold7_w))
- MCFG_DMVCART_SLOT_OUT_IRQ_CB(WRITELINE(dmv_state, busint_w))
+ MCFG_DMVCART_SLOT_OUT_INT_CB(WRITELINE(dmv_state, busint7a_w))
MCFG_SOFTWARE_LIST_ADD("flop_list", "dmv")
diff --git a/src/mess/drivers/dvk_ksm.c b/src/mess/drivers/dvk_ksm.c
new file mode 100644
index 00000000000..778cc6b6ba1
--- /dev/null
+++ b/src/mess/drivers/dvk_ksm.c
@@ -0,0 +1,416 @@
+/***************************************************************************
+
+ KSM (Kontroller Simvolnogo Monitora = Character Display Controller),
+ a single-board replacement for standalone 15IE-00-013 terminal (ie15.c)
+ in later-model DVK desktops.
+
+ MPI (Q-Bus clone) board, consumes only power from the bus.
+ Interfaces with MS7004 (DEC LK201 workalike) keyboard and monochrome CRT.
+
+ Hardware revisions (XXX verify everything):
+ - 7.102.076 -- has DIP switches, SRAM at 0x2000, model name "KSM"
+ - 7.102.228 -- no DIP switches, SRAM at 0x2100, model name "KSM-01"
+
+ Emulates a VT52 without copier (ESC Z response is ESC / M), with
+ Hold Screen mode and Graphics character set (but it is unique and
+ mapped to a different range -- 100..137).
+
+ F4 + 0..9 on numeric keypad = setup mode. 0 changes serial port speed,
+ 1..9 toggle one of mode bits:
+
+ 1 XON/XOFF 0: Off 1: On
+ 2 Character set 0: N0/N1 2: N2
+ 3 Auto LF 0: Off 1: On
+ 4 Auto repeat 0: On 1: Off
+ 5 Auto wraparound 0: On 1: Off
+ 6 Interpret controls 0: Interpret 1: Display
+ 7 Parity check 0: Off 1: On
+ 8 Parity bits 0: None 1: Even
+ 9 Stop bits
+
+ N0/N1 charset has regular ASCII in C0 page and Cyrillic in C1 page,
+ switching between them via SI/SO. N2 charset has uppercase Cyrillic
+ chars in place of lowercase Latin ones.
+
+ F1 toggles Hold Screen mode.
+ F9 resets terminal (clears memory).
+ F20 toggles on/off-line mode.
+
+ Terminfo description would be something like
+
+ksm|DVK KSM,
+ am, bw, dch1=\EP, ich1=\EQ,
+ acsc=hRiTjXkClJmFnNqUtEuPv\174wKxW.M\054Q\055S\053\136~_{@}Z0\177,
+ use=vt52,
+
+ To do:
+ - make Caps Lock work
+ - verify if pixel stretching is done by hw
+ - verify details of hw revisions
+ - baud rate selection (missing feature in bitbanger)
+
+****************************************************************************/
+
+#include "emu.h"
+
+#include "bus/rs232/rs232.h"
+#include "cpu/i8085/i8085.h"
+#include "machine/clock.h"
+#include "machine/i8251.h"
+#include "machine/i8255.h"
+#include "machine/ms7004.h"
+#include "machine/pic8259.h"
+
+#define SCREEN_PAGE (80*48)
+
+#define KSM_TOTAL_HORZ 1000
+#define KSM_DISP_HORZ 800
+#define KSM_HORZ_START 200
+
+#define KSM_TOTAL_VERT 28*11
+#define KSM_DISP_VERT 25*11
+#define KSM_VERT_START 2*11
+
+#define KSM_STATUSLINE_TOTAL 11
+#define KSM_STATUSLINE_VRAM 0xF8B0
+
+#define VERBOSE_DBG 0 /* general debug messages */
+
+#define DBG_LOG(N,M,A) \
+ do { \
+ if(VERBOSE_DBG>=N) \
+ { \
+ if( M ) \
+ logerror("%11.6f at %s: %-24s",machine().time().as_double(),machine().describe_context(),(char*)M ); \
+ logerror A; \
+ } \
+ } while (0)
+
+
+class ksm_state : public driver_device
+{
+public:
+ ksm_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_p_videoram(*this, "videoram"),
+ m_maincpu(*this, "maincpu"),
+ m_pic8259(*this, "pic8259"),
+ m_i8251line(*this, "i8251line"),
+ m_rs232(*this, "rs232"),
+ m_i8251kbd(*this, "i8251kbd"),
+ m_ms7004(*this, "ms7004"),
+ m_screen(*this, "screen")
+ { }
+
+ virtual void machine_reset();
+ virtual void video_start();
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ TIMER_DEVICE_CALLBACK_MEMBER( scanline_callback );
+
+ DECLARE_WRITE_LINE_MEMBER(write_keyboard_clock);
+ DECLARE_WRITE_LINE_MEMBER(write_line_clock);
+
+ DECLARE_WRITE8_MEMBER(ksm_ppi_porta_w);
+ DECLARE_WRITE8_MEMBER(ksm_ppi_portc_w);
+
+private:
+ UINT32 draw_scanline(UINT16 *p, UINT16 offset, UINT8 scanline);
+ rectangle m_tmpclip;
+ bitmap_ind16 m_tmpbmp;
+
+ const UINT8 *m_p_chargen;
+ struct {
+ UINT8 line;
+ UINT16 ptr;
+ } m_video;
+
+protected:
+ required_shared_ptr m_p_videoram;
+ required_device m_maincpu;
+ required_device m_pic8259;
+ required_device m_i8251line;
+ required_device m_rs232;
+ required_device m_i8251kbd;
+ required_device m_ms7004;
+ required_device m_screen;
+};
+
+static ADDRESS_MAP_START( ksm_mem, AS_PROGRAM, 8, ksm_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE (0x0000, 0x0fff) AM_ROM
+ AM_RANGE (0x2000, 0x21ff) AM_RAM
+ AM_RANGE (0xc000, 0xffff) AM_RAM AM_SHARE("videoram")
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( ksm_io, AS_IO, 8, ksm_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE (0x5e, 0x5f) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
+ AM_RANGE (0x6e, 0x6e) AM_DEVREADWRITE("i8251kbd", i8251_device, data_r, data_w)
+ AM_RANGE (0x6f, 0x6f) AM_DEVREADWRITE("i8251kbd", i8251_device, status_r, control_w)
+ AM_RANGE (0x76, 0x76) AM_DEVREADWRITE("i8251line", i8251_device, data_r, data_w)
+ AM_RANGE (0x77, 0x77) AM_DEVREADWRITE("i8251line", i8251_device, status_r, control_w)
+ AM_RANGE (0x78, 0x7b) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
+ADDRESS_MAP_END
+
+/* Input ports */
+static INPUT_PORTS_START( ksm )
+ PORT_START("SA1")
+ PORT_DIPNAME(0x01, 0x01, "Stop bits")
+ PORT_DIPSETTING(0x00, "2 bits")
+ PORT_DIPSETTING(0x01, "1 bit")
+ PORT_DIPNAME(0x02, 0x00, "Parity bits")
+ PORT_DIPSETTING(0x00, "0 bits")
+ PORT_DIPSETTING(0x02, "1 bit")
+ PORT_DIPNAME(0x04, 0x00, "Parity check")
+ PORT_DIPSETTING(0x00, "Off")
+ PORT_DIPSETTING(0x04, "On")
+ PORT_DIPNAME(0x08, 0x00, "Interpret controls")
+ PORT_DIPSETTING(0x00, "Interpret")
+ PORT_DIPSETTING(0x08, "Display")
+ PORT_DIPNAME(0x10, 0x00, "Auto wraparound")
+ PORT_DIPSETTING(0x00, "On")
+ PORT_DIPSETTING(0x10, "Off")
+ PORT_DIPNAME(0x20, 0x00, "Auto repeat")
+ PORT_DIPSETTING(0x00, "On")
+ PORT_DIPSETTING(0x20, "Off")
+ PORT_DIPNAME(0x40, 0x00, "Auto CR/LF")
+ PORT_DIPSETTING(0x00, "Off")
+ PORT_DIPSETTING(0x40, "On")
+ PORT_DIPNAME(0x80, 0x00, "Character set")
+ PORT_DIPSETTING(0x00, "KOI-8 N0/N1")
+ PORT_DIPSETTING(0x80, "KOI-8 N2")
+ PORT_START("SA2")
+ PORT_DIPNAME(0x01, 0x00, "XON/XOFF")
+ PORT_DIPSETTING(0x00, "Off")
+ PORT_DIPSETTING(0x01, "On")
+ PORT_DIPNAME(0x0E, 0x00, "Baud rate")
+ PORT_DIPSETTING(0x00, "9600")
+ PORT_DIPSETTING(0x02, "4800")
+ PORT_DIPSETTING(0x04, "2400")
+ PORT_DIPSETTING(0x06, "1200")
+ PORT_DIPSETTING(0x08, "600")
+ PORT_DIPSETTING(0x0A, "300")
+ PORT_DIPSETTING(0x0C, "150")
+ PORT_DIPSETTING(0x0E, "75")
+INPUT_PORTS_END
+
+void ksm_state::machine_reset()
+{
+ memset(&m_video, 0, sizeof(m_video));
+}
+
+void ksm_state::video_start()
+{
+ m_p_chargen = memregion("chargen")->base();
+
+ m_tmpclip = rectangle(0, KSM_DISP_HORZ-1, 0, KSM_DISP_VERT-1);
+ m_tmpbmp.allocate(KSM_DISP_HORZ, KSM_DISP_VERT);
+}
+
+WRITE8_MEMBER(ksm_state::ksm_ppi_porta_w)
+{
+ DBG_LOG(1,"PPI port A", ("line %d\n", data));
+ m_video.line = data;
+}
+
+WRITE8_MEMBER(ksm_state::ksm_ppi_portc_w)
+{
+ DBG_LOG(1,"PPI port C", ("blink %d speed %d\n", BIT(data, 7), ((data >> 4) & 7) ));
+}
+
+WRITE_LINE_MEMBER(ksm_state::write_keyboard_clock)
+{
+// KSM never sends data to keyboard
+// m_i8251kbd->write_txc(state);
+ m_i8251kbd->write_rxc(state);
+}
+
+WRITE_LINE_MEMBER(ksm_state::write_line_clock)
+{
+ m_i8251line->write_txc(state);
+ m_i8251line->write_rxc(state);
+}
+
+/*
+ Raster size is 28x11 scan lines.
+ XXX VBlank is active for 2 topmost on-screen rows and 1 at the bottom.
+
+ Usable raster is 800 x 275 pixels (80 x 25 characters). 24 lines are
+ available to the user and 25th (topmost) line is the status line.
+ Status line displays current serial port speed and 9 setup bits.
+
+ No character attributes are available, but in 'display controls' mode
+ control characters stored in memory are shown as blinking chars.
+
+ Character cell is 10 x 11; character generator provides 7 x 8 of that.
+ 3 extra horizontal pixels are always XXX blank. Blinking XXX cursor may be
+ displayed on 3 extra scan lines.
+*/
+
+UINT32 ksm_state::draw_scanline(UINT16 *p, UINT16 offset, UINT8 scanline)
+{
+ UINT8 gfx, fg, bg, ra, blink;
+ UINT16 x, chr;
+
+ bg = 0; fg = 1; ra = scanline % 8;
+ blink = (m_screen->frame_number() % 10) > 4;
+ if (scanline > 7) {
+ offset -= 0x2000;
+ }
+
+ for (x = offset; x < offset + 80; x++)
+ {
+ chr = m_p_videoram[x] << 3;
+ gfx = m_p_chargen[chr | ra];
+
+ if ((scanline > 7 && blink) || ((chr < (0x20<<3)) && !blink))
+ gfx = 0;
+
+ *p++ = BIT(gfx, 6) ? fg : bg;
+ *p++ = BIT(gfx, 5) ? fg : bg;
+ *p++ = BIT(gfx, 4) ? fg : bg;
+ *p++ = BIT(gfx, 3) ? fg : bg;
+ *p++ = BIT(gfx, 2) ? fg : bg;
+ *p++ = BIT(gfx, 1) ? fg : bg;
+ *p++ = BIT(gfx, 0) ? fg : bg;
+ *p++ = bg;
+ *p++ = bg;
+ *p++ = bg;
+ }
+ return 0;
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(ksm_state::scanline_callback)
+{
+ UINT16 y = m_screen->vpos();
+ UINT16 offset;
+
+ DBG_LOG(2,"scanline_cb",
+ ("addr %02x frame %" I64FMT "d x %.4d y %.3d row %.2d\n",
+ m_video.line, m_screen->frame_number(), m_screen->hpos(), y, y%11));
+
+ if (y < KSM_VERT_START) return;
+ y -= KSM_VERT_START;
+ if (y >= KSM_DISP_VERT) return;
+
+ if (y < KSM_STATUSLINE_TOTAL) {
+ offset = KSM_STATUSLINE_VRAM - 0xC000;
+ } else {
+ offset = 0x2000 + 0x30 + (((m_video.line + y/11 - 1) % 48) << 7);
+ }
+
+ draw_scanline(&m_tmpbmp.pix16(y), offset, y%11);
+}
+
+UINT32 ksm_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ copybitmap(bitmap, m_tmpbmp, 0, 0, KSM_HORZ_START, KSM_VERT_START, cliprect);
+ return 0;
+}
+
+
+/* F4 Character Displayer */
+static const gfx_layout ksm_charlayout =
+{
+ 7, 8, /* 7x8 pixels in 10x11 cell */
+ 256, /* 256 characters */
+ 1, /* 1 bits per pixel */
+ { 0 }, /* no bitplanes */
+ /* x offsets */
+ { 1, 2, 3, 4, 5, 6, 7 },
+ /* y offsets */
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
+ 8*8 /* every char takes 8 bytes */
+};
+
+static GFXDECODE_START( ksm )
+ GFXDECODE_ENTRY("chargen", 0x0000, ksm_charlayout, 0, 1)
+GFXDECODE_END
+
+static MACHINE_CONFIG_START( ksm, ksm_state )
+ MCFG_CPU_ADD("maincpu", I8080, XTAL_15_4MHz/10)
+ MCFG_CPU_PROGRAM_MAP(ksm_mem)
+ MCFG_CPU_IO_MAP(ksm_io)
+ MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("scantimer", ksm_state, scanline_callback, attotime::from_hz(50*28*11))
+ MCFG_TIMER_START_DELAY(attotime::from_hz(XTAL_15_4MHz/KSM_HORZ_START))
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(ksm_state, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(XTAL_15_4MHz, KSM_TOTAL_HORZ, KSM_HORZ_START,
+ KSM_HORZ_START+KSM_DISP_HORZ, KSM_TOTAL_VERT, KSM_VERT_START,
+ KSM_VERT_START+KSM_DISP_VERT);
+
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", ksm)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
+
+ MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL )
+
+ MCFG_DEVICE_ADD("ppi8255", I8255, 0)
+ MCFG_I8255_OUT_PORTA_CB(WRITE8(ksm_state, ksm_ppi_porta_w))
+ MCFG_I8255_IN_PORTB_CB(IOPORT("SA1"))
+ MCFG_I8255_IN_PORTC_CB(IOPORT("SA2"))
+ MCFG_I8255_OUT_PORTC_CB(WRITE8(ksm_state, ksm_ppi_portc_w))
+
+ // serial connection to host
+ MCFG_DEVICE_ADD( "i8251line", I8251, 0)
+ MCFG_I8251_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd))
+ MCFG_I8251_DTR_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_dtr))
+ MCFG_I8251_RTS_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_rts))
+ MCFG_I8251_RXRDY_HANDLER(DEVWRITELINE("pic8259", pic8259_device, ir3_w))
+
+ MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "null_modem")
+ MCFG_RS232_RXD_HANDLER(DEVWRITELINE("i8251line", i8251_device, write_rxd))
+ MCFG_RS232_CTS_HANDLER(DEVWRITELINE("i8251line", i8251_device, write_cts))
+ MCFG_RS232_DSR_HANDLER(DEVWRITELINE("i8251line", i8251_device, write_dsr))
+
+ MCFG_DEVICE_ADD("line_clock", CLOCK, 9600*16) // 8251 is set to /16 on the clock input
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(ksm_state, write_line_clock))
+
+ // serial connection to MS7004 keyboard
+ MCFG_DEVICE_ADD( "i8251kbd", I8251, 0)
+ MCFG_I8251_RXRDY_HANDLER(DEVWRITELINE("pic8259", pic8259_device, ir1_w))
+
+ MCFG_DEVICE_ADD("ms7004", MS7004, 0)
+ MCFG_MS7004_TX_HANDLER(DEVWRITELINE("i8251kbd", i8251_device, write_rxd))
+
+ // baud rate is supposed to be 4800 but keyboard is slightly faster
+ MCFG_DEVICE_ADD("keyboard_clock", CLOCK, 4960*16)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(ksm_state, write_keyboard_clock))
+MACHINE_CONFIG_END
+
+
+/*
+ Assumes that SRAM is at 0x2000, which is where technical manual puts it.
+ Chargen has 1 missing pixel in 'G' character.
+*/
+ROM_START( dvk_ksm )
+ ROM_REGION(0x1000, "maincpu", ROMREGION_ERASE00)
+ ROM_LOAD( "ksm_04_rom0_d32.bin", 0x0000, 0x0800, CRC(6ad62715) SHA1(20f8f95119bc7fc6e0f16c67864e339a86edb44d))
+ ROM_LOAD( "ksm_05_rom1_d33.bin", 0x0800, 0x0800, CRC(5b29bcd2) SHA1(1f4f82c2f88f1e8615ec02076559dc606497e654))
+
+ ROM_REGION(0x0800, "chargen", ROMREGION_ERASE00)
+ ROM_LOAD("ksm_03_cg_d31.bin", 0x0000, 0x0800, CRC(98853aa7) SHA1(09b8e1b5b10a00c0b0ae7e36ad1328113d31230a))
+ROM_END
+
+/*
+ Assumes that SRAM is at 0x2100, otherwise identical.
+ Chargen has no missing pixels in 'G' character.
+*/
+ROM_START( dvk_ksm01 )
+ ROM_REGION(0x1000, "maincpu", ROMREGION_ERASE00)
+ ROM_LOAD( "ksm_04_rom0_d32.bin", 0x0000, 0x0800, CRC(5276dc9a) SHA1(dd41dfb4cb3f1cf22d96d95f1ff6a27fe4eb9a38))
+ ROM_LOAD( "ksm_05_rom1_d33.bin", 0x0800, 0x0800, CRC(5b29bcd2) SHA1(1f4f82c2f88f1e8615ec02076559dc606497e654))
+
+ ROM_REGION(0x0800, "chargen", ROMREGION_ERASE00)
+ ROM_LOAD("ksm_03_cg_d31.bin", 0x0000, 0x0800, CRC(98853aa7) SHA1(c7871a96f135db05c3c8d718fbdf1728e22e72b7))
+ROM_END
+
+/* Driver */
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
+COMP( 1986, dvk_ksm, 0, 0, ksm, ksm, driver_device, 0, "USSR", "DVK KSM", 0)
+COMP( 198?, dvk_ksm01,0 , 0, ksm, ksm, driver_device, 0, "USSR", "DVK KSM-01", 0)
diff --git a/src/mess/drivers/einstein.c b/src/mess/drivers/einstein.c
index b02be808ab0..08f894bbd09 100644
--- a/src/mess/drivers/einstein.c
+++ b/src/mess/drivers/einstein.c
@@ -730,7 +730,7 @@ static MACHINE_CONFIG_START( einstein, einstein_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
/* printer */
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(IC_I063, z80pio_device, strobe_a))
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(einstein_state, write_centronics_busy))
MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(einstein_state, write_centronics_perror))
diff --git a/src/mess/drivers/elwro800.c b/src/mess/drivers/elwro800.c
index 92fdcd351d4..a381b867992 100644
--- a/src/mess/drivers/elwro800.c
+++ b/src/mess/drivers/elwro800.c
@@ -573,7 +573,7 @@ static MACHINE_CONFIG_START( elwro800, elwro800_state )
MCFG_I8255_OUT_PORTC_CB(WRITE8(elwro800_state, i8255_port_c_w))
/* printer */
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in")
MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(elwro800_state, write_centronics_ack))
diff --git a/src/mess/drivers/ep64.c b/src/mess/drivers/ep64.c
index 4ef1f30fb7c..708c5924860 100644
--- a/src/mess/drivers/ep64.c
+++ b/src/mess/drivers/ep64.c
@@ -521,7 +521,7 @@ static MACHINE_CONFIG_START( ep64, ep64_state )
MCFG_EP64_EXPANSION_BUS_SLOT_NMI_CALLBACK(INPUTLINE(Z80_TAG, INPUT_LINE_NMI))
MCFG_EP64_EXPANSION_BUS_SLOT_WAIT_CALLBACK(INPUTLINE(Z80_TAG, Z80_INPUT_LINE_WAIT))
- MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(ep64_state, write_centronics_busy))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
diff --git a/src/mess/drivers/fc100.c b/src/mess/drivers/fc100.c
index b3c600750c0..d2dd95dd52d 100644
--- a/src/mess/drivers/fc100.c
+++ b/src/mess/drivers/fc100.c
@@ -552,7 +552,7 @@ static MACHINE_CONFIG_START( fc100, fc100_state )
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "fc100_cart")
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit4))
MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit5))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
diff --git a/src/mess/drivers/fm7.c b/src/mess/drivers/fm7.c
index 4d0aa7f1ab3..544aa21c2d9 100644
--- a/src/mess/drivers/fm7.c
+++ b/src/mess/drivers/fm7.c
@@ -2088,7 +2088,7 @@ static MACHINE_CONFIG_START( fm7, fm7_state )
MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_intrq_w))
MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_drq_w))
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_SLOT_OPTION_ADD( "dsjoy", DEMPA_SHINBUNSHA_JOYSTICK )
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fm7_state, write_centronics_busy))
MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(fm7_state, write_centronics_fault))
@@ -2145,7 +2145,7 @@ static MACHINE_CONFIG_START( fm8, fm7_state )
MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_intrq_w))
MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_drq_w))
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fm7_state, write_centronics_busy))
MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(fm7_state, write_centronics_fault))
MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(fm7_state, write_centronics_ack))
@@ -2221,7 +2221,7 @@ static MACHINE_CONFIG_START( fm77av, fm7_state )
MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_intrq_w))
MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_drq_w))
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fm7_state, write_centronics_busy))
MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(fm7_state, write_centronics_fault))
MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(fm7_state, write_centronics_ack))
@@ -2299,7 +2299,7 @@ static MACHINE_CONFIG_START( fm11, fm7_state )
MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_intrq_w))
MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_drq_w))
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fm7_state, write_centronics_busy))
MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(fm7_state, write_centronics_fault))
MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(fm7_state, write_centronics_ack))
@@ -2353,7 +2353,7 @@ static MACHINE_CONFIG_START( fm16beta, fm7_state )
MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_intrq_w))
MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(fm7_state, fm7_fdc_drq_w))
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fm7_state, write_centronics_busy))
MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(fm7_state, write_centronics_fault))
MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(fm7_state, write_centronics_ack))
diff --git a/src/mess/drivers/fp1100.c b/src/mess/drivers/fp1100.c
index a75fc49eec4..f1c813312ee 100644
--- a/src/mess/drivers/fp1100.c
+++ b/src/mess/drivers/fp1100.c
@@ -674,7 +674,7 @@ static MACHINE_CONFIG_START( fp1100, fp1100_state )
MCFG_MC6845_UPDATE_ROW_CB(fp1100_state, fp1100_update_row)
/* Printer */
- MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer")
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(fp1100_state, centronics_busy_w))
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
diff --git a/src/mess/drivers/gamate.c b/src/mess/drivers/gamate.c
new file mode 100644
index 00000000000..730fb32a05b
--- /dev/null
+++ b/src/mess/drivers/gamate.c
@@ -0,0 +1,383 @@
+/******************************************************************************
+ PeT mess@utanet.at 2007, 2014
+******************************************************************************/
+
+#include "emu.h"
+#include "cpu/m6502/m6502.h"
+#include "bus/generic/slot.h"
+#include "bus/generic/carts.h"
+#include "rendlay.h"
+
+class gamate_state : public driver_device
+{
+public:
+ gamate_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_cart(*this, "cartslot")
+// , m_gfxdecode(*this, "gfxdecode")
+ , m_io_joy(*this, "JOY")
+ , m_palette(*this, "palette")
+ { }
+
+ DECLARE_PALETTE_INIT(gamate);
+ DECLARE_READ8_MEMBER(video_r);
+ DECLARE_READ8_MEMBER(pad_r);
+ DECLARE_WRITE8_MEMBER(video_w);
+ DECLARE_WRITE8_MEMBER(audio_w);
+ DECLARE_WRITE8_MEMBER(bios_w);
+ DECLARE_DRIVER_INIT(gamate);
+ UINT32 screen_update_gamate(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ INTERRUPT_GEN_MEMBER(gamate_interrupt);
+
+private:
+ virtual void machine_start();
+
+ struct
+ {
+ UINT8 reg[8];
+ struct {
+ bool write; // else tilemap
+ bool page2; // else page1
+ UINT8 data[2][0x100][0x20];
+ } bitmap;
+ struct {
+ UINT8 data[32][32];
+ } tilemap;
+ UINT8 x, y;
+ } video;
+
+// UINT8 m_ports[5];
+// UINT8 m_ram[0x4000];
+ required_device